diff --git a/CMake/3rd.cmake b/CMake/3rd.cmake deleted file mode 100644 index 781146111d48739671b35c98bb96ebff358809b4..0000000000000000000000000000000000000000 --- a/CMake/3rd.cmake +++ /dev/null @@ -1,2 +0,0 @@ -include(${VF_CMAKE_DIR}/3rd/boost.cmake) -include(${VF_CMAKE_DIR}/3rd/gmock.cmake) diff --git a/CMake/3rd/gmock.cmake b/CMake/3rd/gmock.cmake deleted file mode 100644 index 712b99ca2271f1d3891114ff613a569a00fe03c4..0000000000000000000000000000000000000000 --- a/CMake/3rd/gmock.cmake +++ /dev/null @@ -1,17 +0,0 @@ -################################################################################# -# Links gmock to the current target. -# Note: gmock has to be build by the project itself (Located in 3rd). -################################################################################# - -function (linkGMOCK) - vf_get_library_test_name(library_name) - target_link_libraries(${library_name} PRIVATE GTest::gmock_main) - - if(BUILD_SHARED_LIBS) - # add compile option according to - # https://github.com/google/googletest/blob/master/googletest/README.md#as-a-shared-library-dll - set_target_properties(${library_name} - PROPERTIES - COMPILE_DEFINITIONS "GTEST_LINKED_AS_SHARED_LIBRARY=1") - endif() -endfunction() \ No newline at end of file diff --git a/CMake/VirtualFluidsMacros.cmake b/CMake/VirtualFluidsMacros.cmake index 2bf2a979e6bbed32fc229e99739c79b601b007f2..cb9d2d8d7839a301aba09291cbcc78ede1c2adf4 100644 --- a/CMake/VirtualFluidsMacros.cmake +++ b/CMake/VirtualFluidsMacros.cmake @@ -20,7 +20,7 @@ endfunction() ################################################################################# include(${VF_CMAKE_DIR}/CMakeSetCompilerFlags.cmake) include(${VF_CMAKE_DIR}/FileUtilities.cmake) -include(${VF_CMAKE_DIR}/3rd.cmake) +include(${VF_CMAKE_DIR}/3rd/boost.cmake) include(${VF_CMAKE_DIR}/Sanitizers.cmake) ############################################################################################################### @@ -274,8 +274,19 @@ function(vf_add_tests) return() endif() - # get the test library name - vf_get_library_test_name(library_test_name) + set( options ) + set( oneValueArgs NAME) + set( multiValueArgs) + cmake_parse_arguments( ARG "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN} ) + + if(DEFINED ARG_NAME) + set(library_test_name "${ARG_NAME}Tests") + set(library_name "${ARG_NAME}") + else() + vf_get_library_test_name(library_test_name) + vf_get_library_name (library_name) + endif() + vf_get_library_name (folder_name) status("Configuring test executable: ${library_test_name}") @@ -297,7 +308,7 @@ function(vf_add_tests) PDB_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin") # link tested library - target_link_libraries(${library_test_name} PRIVATE ${folder_name}) + target_link_libraries(${library_test_name} PRIVATE ${library_name}) # link tested library target_include_directories(${library_test_name} PRIVATE ${CMAKE_BINARY_DIR}) @@ -308,7 +319,15 @@ function(vf_add_tests) addAdditionalFlags(${library_test_name}) # link googlemock - linkGMOCK() + target_link_libraries(${library_test_name} PRIVATE GTest::gmock_main) + + if(BUILD_SHARED_LIBS) + # add compile option according to + # https://github.com/google/googletest/blob/master/googletest/README.md#as-a-shared-library-dll + set_target_properties(${library_test_name} + PROPERTIES + COMPILE_DEFINITIONS "GTEST_LINKED_AS_SHARED_LIBRARY=1") + endif() # add the target to ctest gtest_add_tests(TARGET ${library_test_name}) diff --git a/apps/cpu/ConcreteExtrusion/CMakeLists.txt b/apps/cpu/ConcreteExtrusion/CMakeLists.txt index c56d8430b841bda1c538244243c866bdb4b299c1..9d9cc157c8bdd2ed6412979cd7fb32d37fc3e3e2 100644 --- a/apps/cpu/ConcreteExtrusion/CMakeLists.txt +++ b/apps/cpu/ConcreteExtrusion/CMakeLists.txt @@ -3,4 +3,4 @@ ######################################################## PROJECT(ConcreteExtrusion) -vf_add_library(BUILDTYPE binary PRIVATE_LINK VirtualFluidsCore basics ${MPI_CXX_LIBRARIES} MultiphaseFlow NonNewtonianFluids FILES ConcreteExtrusion.cpp ) \ No newline at end of file +vf_add_library(BUILDTYPE binary PRIVATE_LINK cpu_core basics ${MPI_CXX_LIBRARIES} MultiphaseFlow NonNewtonianFluids FILES ConcreteExtrusion.cpp ) \ No newline at end of file diff --git a/apps/cpu/ConcreteExtrusion/ConcreteExtrusion.cpp b/apps/cpu/ConcreteExtrusion/ConcreteExtrusion.cpp index e73ff544b59991bf95874e058e3df3b7113370a0..04edd1b5143140075a8051017a0679a83f393a79 100644 --- a/apps/cpu/ConcreteExtrusion/ConcreteExtrusion.cpp +++ b/apps/cpu/ConcreteExtrusion/ConcreteExtrusion.cpp @@ -251,7 +251,7 @@ void run(string configname) grid->setPeriodicX3(true); grid->setGhostLayerWidth(2); - SPtr<Grid3DVisitor> metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, DIR_MMM, MetisPartitioner::RECURSIVE)); + SPtr<Grid3DVisitor> metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, dMMM, MetisPartitioner::RECURSIVE)); ////////////////////////////////////////////////////////////////////////// // restart diff --git a/apps/cpu/ConvectionOfVortex/CMakeLists.txt b/apps/cpu/ConvectionOfVortex/CMakeLists.txt index 33d60676c7e0dfdde411c3c5b92a2534ea54fbfe..451ec8592414ed53083861ab216e24f8d9887ab7 100644 --- a/apps/cpu/ConvectionOfVortex/CMakeLists.txt +++ b/apps/cpu/ConvectionOfVortex/CMakeLists.txt @@ -3,6 +3,6 @@ ######################################################## PROJECT(ConvectionOfVortex) -vf_add_library(BUILDTYPE binary PRIVATE_LINK VirtualFluidsCore basics ${MPI_CXX_LIBRARIES} FILES cov.cpp ) +vf_add_library(BUILDTYPE binary PRIVATE_LINK cpu_core basics ${MPI_CXX_LIBRARIES} FILES cov.cpp ) diff --git a/apps/cpu/ConvectionOfVortex/cov.cpp b/apps/cpu/ConvectionOfVortex/cov.cpp index 102a1ad7d16fa7cd343449fd27fab73aae70c92f..bedb3da40e9d339faa9dcbc4fbd520e0edd25222 100644 --- a/apps/cpu/ConvectionOfVortex/cov.cpp +++ b/apps/cpu/ConvectionOfVortex/cov.cpp @@ -152,7 +152,7 @@ void run() if (myid==0) GbSystem3D::writeGeoObject(geoOutflow4.get(), pathname+"/geo/geoOutflow4", WbWriterVtkXmlASCII::getInstance()); SPtr<D3Q27Interactor> outflowIntr4 = SPtr<D3Q27Interactor>(new D3Q27Interactor(geoOutflow4, grid, outflowBC, Interactor3D::SOLID)); - SPtr<Grid3DVisitor> metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, DIR_00M)); + SPtr<Grid3DVisitor> metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, d00M)); InteractorsHelper intHelper(grid, metisVisitor); //intHelper.addInteractor(outflowIntr1); //intHelper.addInteractor(outflowIntr2); diff --git a/apps/cpu/CouetteFlow/CMakeLists.txt b/apps/cpu/CouetteFlow/CMakeLists.txt index 9f28e30c5aeb0722fb9d0b9b13a135ecae0f9799..3a2b634002b82edeeaa785a371ee9a2f153f0ea5 100644 --- a/apps/cpu/CouetteFlow/CMakeLists.txt +++ b/apps/cpu/CouetteFlow/CMakeLists.txt @@ -3,4 +3,4 @@ ######################################################## PROJECT(CouetteFlow) -vf_add_library(BUILDTYPE binary PRIVATE_LINK VirtualFluidsCore basics ${MPI_CXX_LIBRARIES} NonNewtonianFluids FILES cflow.cpp ) \ No newline at end of file +vf_add_library(BUILDTYPE binary PRIVATE_LINK cpu_core basics ${MPI_CXX_LIBRARIES} NonNewtonianFluids FILES cflow.cpp ) \ No newline at end of file diff --git a/apps/cpu/CouetteFlow/cflow.cpp b/apps/cpu/CouetteFlow/cflow.cpp index 6c7e28f5abba629a7ad9c59204b70fb3d7e03574..f0a0b26fad1c99e8f7ad195503a10d31f0146845 100644 --- a/apps/cpu/CouetteFlow/cflow.cpp +++ b/apps/cpu/CouetteFlow/cflow.cpp @@ -187,7 +187,7 @@ void bflow(string configname) //////////////////////////////////////////// //METIS - SPtr<Grid3DVisitor> metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, DIR_MMM, MetisPartitioner::KWAY)); + SPtr<Grid3DVisitor> metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, dMMM, MetisPartitioner::KWAY)); //////////////////////////////////////////// /////delete solid blocks if (myid == 0) UBLOG(logINFO, "deleteSolidBlocks - start"); diff --git a/apps/cpu/DLR-F16-Porous/f16.cpp b/apps/cpu/DLR-F16-Porous/f16.cpp index 08bafaf3df6cdb3c32a3592ea950bd3bc2c42474..1263e7752ce9d6d6f5dacbfd12a09a5b258506ed 100644 --- a/apps/cpu/DLR-F16-Porous/f16.cpp +++ b/apps/cpu/DLR-F16-Porous/f16.cpp @@ -33,8 +33,8 @@ void initPteBlock(SPtr<Grid3D> grid, SPtr<Block3D> block) for (int ix1=0; ix1<bcArray->getNX1(); ix1++) { D3Q27System::calcCompFeq(f, 0, 0, 0, 0); - distributions->setDistribution(f, ix1, ix2, ix3); - distributions->setDistributionInv(f, ix1, ix2, ix3); + distributions->setPostCollisionDistribution(f, ix1, ix2, ix3); + distributions->setPreCollisionDistribution(f, ix1, ix2, ix3); } block->setActive(true); } diff --git a/apps/cpu/FallingSphere/CMakeLists.txt b/apps/cpu/FallingSphere/CMakeLists.txt index 94eab3ae0601daaaf1dbe9053ec163058b88186b..6166198643b30304eb1a943d9454cad1a0b8a12d 100644 --- a/apps/cpu/FallingSphere/CMakeLists.txt +++ b/apps/cpu/FallingSphere/CMakeLists.txt @@ -1,3 +1,3 @@ PROJECT(FallingSphere) -vf_add_library(BUILDTYPE binary PRIVATE_LINK VirtualFluidsCore basics ${MPI_CXX_LIBRARIES} LiggghtsCoupling FILES FallingSphere.cpp ) +vf_add_library(BUILDTYPE binary PRIVATE_LINK cpu_core basics ${MPI_CXX_LIBRARIES} LiggghtsCoupling FILES FallingSphere.cpp ) diff --git a/apps/cpu/FallingSphere/FallingSphere.cpp b/apps/cpu/FallingSphere/FallingSphere.cpp index f41524a5f6f5b163c6eaefeb386b9a76b892d196..7dfaedc9d93bffe1c159683152705b30f6f7c39a 100644 --- a/apps/cpu/FallingSphere/FallingSphere.cpp +++ b/apps/cpu/FallingSphere/FallingSphere.cpp @@ -59,7 +59,7 @@ int main(int argc, char *argv[]) UbSystem::makeDirectory(outputPath); UbSystem::makeDirectory(outputPath + "/liggghts"); - SPtr<Grid3DVisitor> metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, vf::lbm::dir::DIR_MMM, MetisPartitioner::RECURSIVE)); + SPtr<Grid3DVisitor> metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, vf::lbm::dir::dMMM, MetisPartitioner::RECURSIVE)); SPtr<GbObject3D> gridCube = make_shared <GbCuboid3D>(g_minX1, g_minX2, g_minX3, g_maxX1, g_maxX2, g_maxX3); if (myid == 0) diff --git a/apps/cpu/FlowAroundCylinder/CMakeLists.txt b/apps/cpu/FlowAroundCylinder/CMakeLists.txt index 7bd09c7189fdf892e76816f8fba4ba95bf3f0867..0fcac4f761ea1ec3d57ee367853a91ba199f03f2 100644 --- a/apps/cpu/FlowAroundCylinder/CMakeLists.txt +++ b/apps/cpu/FlowAroundCylinder/CMakeLists.txt @@ -3,4 +3,4 @@ ######################################################## PROJECT(cylinder) -vf_add_library(BUILDTYPE binary PRIVATE_LINK VirtualFluidsCore basics ${MPI_CXX_LIBRARIES} FILES cylinder.cpp ) +vf_add_library(BUILDTYPE binary PRIVATE_LINK cpu_core basics ${MPI_CXX_LIBRARIES} FILES cylinder.cpp ) diff --git a/apps/cpu/FlowAroundCylinder/cylinder.cpp b/apps/cpu/FlowAroundCylinder/cylinder.cpp index 0599060816ff806e087680d892be5232b1558930..5de3c69d02d6778c842144a37938362ca44f3826 100644 --- a/apps/cpu/FlowAroundCylinder/cylinder.cpp +++ b/apps/cpu/FlowAroundCylinder/cylinder.cpp @@ -206,7 +206,7 @@ void run(string configname) SPtr<D3Q27Interactor> outflowInt = SPtr<D3Q27Interactor>(new D3Q27Interactor(geoOutflow, grid, denBC, Interactor3D::SOLID)); - SPtr<Grid3DVisitor> metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, DIR_00M)); + SPtr<Grid3DVisitor> metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, d00M)); InteractorsHelper intHelper(grid, metisVisitor); intHelper.addInteractor(cylinderInt); intHelper.addInteractor(addWallYminInt); diff --git a/apps/cpu/HerschelBulkleyModel/CMakeLists.txt b/apps/cpu/HerschelBulkleyModel/CMakeLists.txt index 537402905309fe65441d9b5fbe2d48523c55947f..d2499fb70e451de1c40c841135607aa1a6799e93 100644 --- a/apps/cpu/HerschelBulkleyModel/CMakeLists.txt +++ b/apps/cpu/HerschelBulkleyModel/CMakeLists.txt @@ -3,4 +3,4 @@ ######################################################## PROJECT(HerschelBulkleyModel) -vf_add_library(BUILDTYPE binary PRIVATE_LINK VirtualFluidsCore basics ${MPI_CXX_LIBRARIES} NonNewtonianFluids FILES hbflow.cpp ) \ No newline at end of file +vf_add_library(BUILDTYPE binary PRIVATE_LINK cpu_core basics ${MPI_CXX_LIBRARIES} NonNewtonianFluids FILES hbflow.cpp ) \ No newline at end of file diff --git a/apps/cpu/HerschelBulkleyModel/hbflow.cpp b/apps/cpu/HerschelBulkleyModel/hbflow.cpp index 67ed5404eebc1eeffe1e385ff42dc806c1588301..5e4e193c1b038d6d8ceec670f45381c0e2a8f32b 100644 --- a/apps/cpu/HerschelBulkleyModel/hbflow.cpp +++ b/apps/cpu/HerschelBulkleyModel/hbflow.cpp @@ -233,7 +233,7 @@ void bflow(string configname) //////////////////////////////////////////// //METIS - SPtr<Grid3DVisitor> metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, DIR_MMM, MetisPartitioner::RECURSIVE)); + SPtr<Grid3DVisitor> metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, dMMM, MetisPartitioner::RECURSIVE)); //////////////////////////////////////////// /////delete solid blocks if (myid == 0) UBLOG(logINFO, "deleteSolidBlocks - start"); diff --git a/apps/cpu/HerschelBulkleySphere/CMakeLists.txt b/apps/cpu/HerschelBulkleySphere/CMakeLists.txt index 69fe09a4f0eb5b11ecf15f3bd609c9afbf79cae6..87ecc61f0ce915be47d16b15133d155411067877 100644 --- a/apps/cpu/HerschelBulkleySphere/CMakeLists.txt +++ b/apps/cpu/HerschelBulkleySphere/CMakeLists.txt @@ -3,4 +3,4 @@ ######################################################## PROJECT(HerschelBulkleySphere) -vf_add_library(BUILDTYPE binary PRIVATE_LINK VirtualFluidsCore basics ${MPI_CXX_LIBRARIES} NonNewtonianFluids FILES hbsphere.cpp ) \ No newline at end of file +vf_add_library(BUILDTYPE binary PRIVATE_LINK cpu_core basics ${MPI_CXX_LIBRARIES} NonNewtonianFluids FILES hbsphere.cpp ) \ No newline at end of file diff --git a/apps/cpu/HerschelBulkleySphere/hbsphere.cpp b/apps/cpu/HerschelBulkleySphere/hbsphere.cpp index 90ae44b62f18e412c4f3e0bd8ba88de56b01650a..79ff327a61c37542c3af2d1367b0df5c58d3a853 100644 --- a/apps/cpu/HerschelBulkleySphere/hbsphere.cpp +++ b/apps/cpu/HerschelBulkleySphere/hbsphere.cpp @@ -164,7 +164,7 @@ void bflow(string configname) //////////////////////////////////////////// //METIS - SPtr<Grid3DVisitor> metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, DIR_MMM, MetisPartitioner::KWAY)); + SPtr<Grid3DVisitor> metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, dMMM, MetisPartitioner::KWAY)); //////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////// //restart @@ -246,7 +246,7 @@ void bflow(string configname) //////////////////////////////////////////// //METIS - SPtr<Grid3DVisitor> metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, DIR_MMM, MetisPartitioner::KWAY)); + SPtr<Grid3DVisitor> metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, dMMM, MetisPartitioner::KWAY)); //////////////////////////////////////////// /////delete solid blocks if (myid == 0) UBLOG(logINFO, "deleteSolidBlocks - start"); diff --git a/apps/cpu/JetBreakup/CMakeLists.txt b/apps/cpu/JetBreakup/CMakeLists.txt index 162e9c959fc27171e3f0d7e1df5e62eb6ff7ef87..9a21c8044d53cedaec4a27a37b420b687bd21132 100644 --- a/apps/cpu/JetBreakup/CMakeLists.txt +++ b/apps/cpu/JetBreakup/CMakeLists.txt @@ -3,4 +3,4 @@ ######################################################## PROJECT(JetBreakup) -vf_add_library(BUILDTYPE binary PRIVATE_LINK VirtualFluidsCore basics ${MPI_CXX_LIBRARIES} MultiphaseFlow NonNewtonianFluids FILES JetBreakup.cpp ) \ No newline at end of file +vf_add_library(BUILDTYPE binary PRIVATE_LINK cpu_core basics ${MPI_CXX_LIBRARIES} MultiphaseFlow NonNewtonianFluids FILES JetBreakup.cpp ) \ No newline at end of file diff --git a/apps/cpu/JetBreakup/JetBreakup.cpp b/apps/cpu/JetBreakup/JetBreakup.cpp index de2f5b95035f8a2b786848941a897ad65cb9cf61..e966ddcd5b24762d57fb8c88b52ec887bea9d8dc 100644 --- a/apps/cpu/JetBreakup/JetBreakup.cpp +++ b/apps/cpu/JetBreakup/JetBreakup.cpp @@ -272,7 +272,7 @@ void run(string configname) // grid->setPeriodicX3(true); grid->setGhostLayerWidth(2); - SPtr<Grid3DVisitor> metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, DIR_MMM, MetisPartitioner::RECURSIVE)); + SPtr<Grid3DVisitor> metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, dMMM, MetisPartitioner::RECURSIVE)); ////////////////////////////////////////////////////////////////////////// // restart diff --git a/apps/cpu/LaminarTubeFlow/CMakeLists.txt b/apps/cpu/LaminarTubeFlow/CMakeLists.txt index 32e8d2fd9231e40002e972f370a19ebec27d995b..508e3cc0399f6e332f542fe52454f0e81e21c0d1 100644 --- a/apps/cpu/LaminarTubeFlow/CMakeLists.txt +++ b/apps/cpu/LaminarTubeFlow/CMakeLists.txt @@ -1,7 +1,7 @@ PROJECT(ltf) -vf_add_library(BUILDTYPE binary PRIVATE_LINK VirtualFluidsCore muparser basics ${MPI_CXX_LIBRARIES} FILES ltf.cpp ) +vf_add_library(BUILDTYPE binary PRIVATE_LINK cpu_core muparser basics ${MPI_CXX_LIBRARIES} FILES ltf.cpp ) vf_get_library_name (library_name) target_include_directories(${library_name} PRIVATE ${APPS_ROOT_CPU}) \ No newline at end of file diff --git a/apps/cpu/LaminarTubeFlow/ltf.cpp b/apps/cpu/LaminarTubeFlow/ltf.cpp index 53927b7378db9bfca0693c1808610e0d6b532d66..086e743df39a2a0ba4598a9ce5438bc7b2ca0393 100644 --- a/apps/cpu/LaminarTubeFlow/ltf.cpp +++ b/apps/cpu/LaminarTubeFlow/ltf.cpp @@ -110,7 +110,7 @@ void run(string configname) kernel->setBCSet(bcProc); ////////////////////////////////////////////////////////////////////////// - SPtr<Grid3DVisitor> metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, DIR_00M)); + SPtr<Grid3DVisitor> metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, d00M)); //restart SPtr<UbScheduler> mSch(new UbScheduler(cpStep, cpStart)); //SPtr<MPIIOMigrationSimulationObserver> migSimulationObserver(new MPIIOMigrationSimulationObserver(grid, mSch, metisVisitor, pathname + "/mig", comm)); diff --git a/apps/cpu/LidDrivenCavity/CMakeLists.txt b/apps/cpu/LidDrivenCavity/CMakeLists.txt index 2afa5ee83ada573e3e31a89a33386d593a5bc261..f878aa04d6b5d14dca518d1c638467f6495d7d64 100644 --- a/apps/cpu/LidDrivenCavity/CMakeLists.txt +++ b/apps/cpu/LidDrivenCavity/CMakeLists.txt @@ -1,4 +1,4 @@ PROJECT(LidDrivenCavity) -vf_add_library(NAME LidDrivenCavityCPU BUILDTYPE binary PRIVATE_LINK VirtualFluidsCore FILES LidDrivenCavity.cpp) +vf_add_library(NAME LidDrivenCavityCPU BUILDTYPE binary PRIVATE_LINK cpu_core FILES LidDrivenCavity.cpp) diff --git a/apps/cpu/LiggghtsApp/CMakeLists.txt b/apps/cpu/LiggghtsApp/CMakeLists.txt index f3a2d925f1d082c8f2e9e52e31d8179fe82c9235..f7b099fc25f800781aff631d098d4dd4dfe48359 100644 --- a/apps/cpu/LiggghtsApp/CMakeLists.txt +++ b/apps/cpu/LiggghtsApp/CMakeLists.txt @@ -1,3 +1,3 @@ PROJECT(LiggghtsApp) -vf_add_library(BUILDTYPE binary PRIVATE_LINK VirtualFluidsCore basics ${MPI_CXX_LIBRARIES} LiggghtsCoupling FILES LiggghtsApp.cpp ) +vf_add_library(BUILDTYPE binary PRIVATE_LINK cpu_core basics ${MPI_CXX_LIBRARIES} LiggghtsCoupling FILES LiggghtsApp.cpp ) diff --git a/apps/cpu/LiggghtsApp/LiggghtsApp.cpp b/apps/cpu/LiggghtsApp/LiggghtsApp.cpp index 5b3f27d2ef7f64fc692750d8480dafea4a69a030..825d63ea14f8bded7331990e9ffa428ae4c0b258 100644 --- a/apps/cpu/LiggghtsApp/LiggghtsApp.cpp +++ b/apps/cpu/LiggghtsApp/LiggghtsApp.cpp @@ -75,7 +75,7 @@ int main(int argc, char *argv[]) UbSystem::makeDirectory(outputPath); UbSystem::makeDirectory(outputPath + "/liggghts"); - SPtr<Grid3DVisitor> metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, vf::lbm::dir::DIR_MMM, MetisPartitioner::RECURSIVE)); + SPtr<Grid3DVisitor> metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, vf::lbm::dir::dMMM, MetisPartitioner::RECURSIVE)); SPtr<GbObject3D> gridCube = make_shared <GbCuboid3D>(g_minX1, g_minX2, g_minX3, g_maxX1, g_maxX2, g_maxX3); if (myid == 0) diff --git a/apps/cpu/Multiphase/CMakeLists.txt b/apps/cpu/Multiphase/CMakeLists.txt index 0c7e43dcaf2185360c49ee78b86f34840b06b4df..2ce781c801fd0cac3770783919682b85ec511ad5 100644 --- a/apps/cpu/Multiphase/CMakeLists.txt +++ b/apps/cpu/Multiphase/CMakeLists.txt @@ -1,3 +1,3 @@ PROJECT(Multiphase) -vf_add_library(BUILDTYPE binary PRIVATE_LINK VirtualFluidsCore basics ${MPI_CXX_LIBRARIES} MultiphaseFlow FILES Multiphase.cpp ) +vf_add_library(BUILDTYPE binary PRIVATE_LINK cpu_core basics ${MPI_CXX_LIBRARIES} MultiphaseFlow FILES Multiphase.cpp ) diff --git a/apps/cpu/Multiphase/Multiphase.cpp b/apps/cpu/Multiphase/Multiphase.cpp index 07b5a661f2c6ead2c57d09b2c05869f86058d1ad..08f4ea8cdc9fa2fb2466617782790c2ffb40f645 100644 --- a/apps/cpu/Multiphase/Multiphase.cpp +++ b/apps/cpu/Multiphase/Multiphase.cpp @@ -125,7 +125,7 @@ void run(string configname) grid->setGhostLayerWidth(2); - SPtr<Grid3DVisitor> metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, DIR_MMM, MetisPartitioner::RECURSIVE)); + SPtr<Grid3DVisitor> metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, dMMM, MetisPartitioner::RECURSIVE)); ////////////////////////////////////////////////////////////////////////// // restart diff --git a/apps/cpu/MultiphaseDropletTest/CMakeLists.txt b/apps/cpu/MultiphaseDropletTest/CMakeLists.txt index c48e517aaad9ff75f6245101ae0a433a2bd49886..e4f881190873e27a688b624803bc25ccc8fb4b9b 100644 --- a/apps/cpu/MultiphaseDropletTest/CMakeLists.txt +++ b/apps/cpu/MultiphaseDropletTest/CMakeLists.txt @@ -1,3 +1,3 @@ PROJECT(MultiphaseDropletTest) -vf_add_library(BUILDTYPE binary PRIVATE_LINK VirtualFluidsCore basics ${MPI_CXX_LIBRARIES} MultiphaseFlow NonNewtonianFluids FILES droplet.cpp ) +vf_add_library(BUILDTYPE binary PRIVATE_LINK cpu_core basics ${MPI_CXX_LIBRARIES} MultiphaseFlow NonNewtonianFluids FILES droplet.cpp ) diff --git a/apps/cpu/MultiphaseDropletTest/droplet.cpp b/apps/cpu/MultiphaseDropletTest/droplet.cpp index 1ae1d18996dfd0e3ae7854e349631ed141cbbc58..9474a1fe575d498c0930b554b4c77d064a418126 100644 --- a/apps/cpu/MultiphaseDropletTest/droplet.cpp +++ b/apps/cpu/MultiphaseDropletTest/droplet.cpp @@ -203,7 +203,7 @@ void run(string configname) grid->setPeriodicX3(true); grid->setGhostLayerWidth(2); - SPtr<Grid3DVisitor> metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, DIR_MMM, MetisPartitioner::RECURSIVE)); + SPtr<Grid3DVisitor> metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, dMMM, MetisPartitioner::RECURSIVE)); ////////////////////////////////////////////////////////////////////////// // restart diff --git a/apps/cpu/Nozzle/CMakeLists.txt b/apps/cpu/Nozzle/CMakeLists.txt index 9764934d46b39abca2ceda133e3434a78980f294..f72fcd0af885fc6577872fc92ce6d3b263ac2ab3 100644 --- a/apps/cpu/Nozzle/CMakeLists.txt +++ b/apps/cpu/Nozzle/CMakeLists.txt @@ -1,3 +1,3 @@ PROJECT(Nozzle) -vf_add_library(BUILDTYPE binary PRIVATE_LINK VirtualFluidsCore basics ${MPI_CXX_LIBRARIES} LiggghtsCoupling MultiphaseFlow NonNewtonianFluids FILES nozzleSinglePhase.cpp ) +vf_add_library(BUILDTYPE binary PRIVATE_LINK cpu_core basics ${MPI_CXX_LIBRARIES} LiggghtsCoupling MultiphaseFlow NonNewtonianFluids FILES nozzleSinglePhase.cpp ) diff --git a/apps/cpu/Nozzle/nozzle.cpp.1 b/apps/cpu/Nozzle/nozzle.cpp.1 index 57bac14e13ce30981e2572d5570e869eab1f253f..ff3374e6ec0e2b53dd2d888b8998619d34f3eae8 100644 --- a/apps/cpu/Nozzle/nozzle.cpp.1 +++ b/apps/cpu/Nozzle/nozzle.cpp.1 @@ -532,7 +532,7 @@ int main(int argc, char *argv[]) ///////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////// - SPtr<Grid3DVisitor> metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, vf::lbm::dir::DIR_MMM, MetisPartitioner::RECURSIVE)); + SPtr<Grid3DVisitor> metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, vf::lbm::dir::dMMM, MetisPartitioner::RECURSIVE)); SPtr<GbObject3D> gridCube = make_shared<GbCuboid3D>(g_minX1, g_minX2, g_minX3, g_maxX1, g_maxX2, g_maxX3); if (myid == 0) GbSystem3D::writeGeoObject(gridCube.get(), outputPath + "/geo/gridCube", WbWriterVtkXmlBinary::getInstance()); diff --git a/apps/cpu/Nozzle/nozzleSinglePhase.cpp b/apps/cpu/Nozzle/nozzleSinglePhase.cpp index fe70ce94516a60ed17b559b3b8470b77341f7aaa..90a84c35dbbfee39fa186ce68c98452a6f4a6cf5 100644 --- a/apps/cpu/Nozzle/nozzleSinglePhase.cpp +++ b/apps/cpu/Nozzle/nozzleSinglePhase.cpp @@ -547,7 +547,7 @@ int main(int argc, char *argv[]) ///////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////// - SPtr<Grid3DVisitor> metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, vf::lbm::dir::DIR_MMM, MetisPartitioner::RECURSIVE)); + SPtr<Grid3DVisitor> metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, vf::lbm::dir::dMMM, MetisPartitioner::RECURSIVE)); SPtr<GbObject3D> gridCube = make_shared<GbCuboid3D>(g_minX1, g_minX2, g_minX3, g_maxX1, g_maxX2, g_maxX3); if (myid == 0) GbSystem3D::writeGeoObject(gridCube.get(), outputPath + "/geo/gridCube", WbWriterVtkXmlBinary::getInstance()); diff --git a/apps/cpu/NozzleMultiphase/CMakeLists.txt b/apps/cpu/NozzleMultiphase/CMakeLists.txt index f92a4267e94c3899565812181fa0fd6af45fc1ca..e5ecf02f2be1a3c12a904e42ae55ddb54c991f92 100644 --- a/apps/cpu/NozzleMultiphase/CMakeLists.txt +++ b/apps/cpu/NozzleMultiphase/CMakeLists.txt @@ -1,3 +1,3 @@ PROJECT(NozzleMultiphase) -vf_add_library(BUILDTYPE binary PRIVATE_LINK VirtualFluidsCore basics ${MPI_CXX_LIBRARIES} LiggghtsCoupling MultiphaseFlow NonNewtonianFluids FILES nozzleMultiPhase.cpp ) +vf_add_library(BUILDTYPE binary PRIVATE_LINK cpu_core basics ${MPI_CXX_LIBRARIES} LiggghtsCoupling MultiphaseFlow NonNewtonianFluids FILES nozzleMultiPhase.cpp ) diff --git a/apps/cpu/NozzleMultiphase/nozzleMultiPhase.cpp b/apps/cpu/NozzleMultiphase/nozzleMultiPhase.cpp index ced2724ee6e8dddd3102428696a8647fee322326..1f0d3d0354dbfbe89c63167abe897073a9c9e5cd 100644 --- a/apps/cpu/NozzleMultiphase/nozzleMultiPhase.cpp +++ b/apps/cpu/NozzleMultiphase/nozzleMultiPhase.cpp @@ -550,7 +550,7 @@ int main(int argc, char *argv[]) ///////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////// - SPtr<Grid3DVisitor> metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, vf::lbm::dir::DIR_MMM, MetisPartitioner::RECURSIVE)); + SPtr<Grid3DVisitor> metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, vf::lbm::dir::dMMM, MetisPartitioner::RECURSIVE)); SPtr<GbObject3D> gridCube = make_shared<GbCuboid3D>(g_minX1, g_minX2, g_minX3, g_maxX1, g_maxX2, g_maxX3); if (myid == 0) GbSystem3D::writeGeoObject(gridCube.get(), outputPath + "/geo/gridCube", WbWriterVtkXmlBinary::getInstance()); diff --git a/apps/cpu/PoiseuilleFlow/CMakeLists.txt b/apps/cpu/PoiseuilleFlow/CMakeLists.txt index 1959719d81013762d37f655b342f755135c9ef85..f4fa1ace87a734e7e1826551f2097ec7d9858a5e 100644 --- a/apps/cpu/PoiseuilleFlow/CMakeLists.txt +++ b/apps/cpu/PoiseuilleFlow/CMakeLists.txt @@ -1,6 +1,6 @@ PROJECT(pf) -vf_add_library(BUILDTYPE binary PRIVATE_LINK VirtualFluidsCore muparser basics ${MPI_CXX_LIBRARIES} FILES pf.cpp pf1.cpp ) +vf_add_library(BUILDTYPE binary PRIVATE_LINK cpu_core muparser basics ${MPI_CXX_LIBRARIES} FILES pf.cpp pf1.cpp ) vf_get_library_name (library_name) target_include_directories(${library_name} PRIVATE ${APPS_ROOT_CPU}) \ No newline at end of file diff --git a/apps/cpu/PoiseuilleFlow/pf1.cpp b/apps/cpu/PoiseuilleFlow/pf1.cpp index dffd5fde6c71dfd0ab647cee2c3e6ee1a81455d0..853a3b084df597b5994cab8fbd4912098eaed853 100644 --- a/apps/cpu/PoiseuilleFlow/pf1.cpp +++ b/apps/cpu/PoiseuilleFlow/pf1.cpp @@ -78,7 +78,7 @@ void pf1() //set boundary conditions for blocks and create process decomposition for MPI SPtr<D3Q27Interactor> cylinderInt(new D3Q27Interactor(cylinder, grid, noSlipBC, Interactor3D::INVERSESOLID)); - SPtr<Grid3DVisitor> metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, DIR_00M)); + SPtr<Grid3DVisitor> metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, d00M)); InteractorsHelper intHelper(grid, metisVisitor); intHelper.addInteractor(cylinderInt); intHelper.selectBlocks(); diff --git a/apps/cpu/RisingBubble2D/CMakeLists.txt b/apps/cpu/RisingBubble2D/CMakeLists.txt index 3f8f3e56cd7ab41979f72121a405b93c862dcce2..eb41f408e66218645e32a36daf910160d26954e1 100644 --- a/apps/cpu/RisingBubble2D/CMakeLists.txt +++ b/apps/cpu/RisingBubble2D/CMakeLists.txt @@ -1,3 +1,3 @@ PROJECT(RisingBubble2D) -vf_add_library(BUILDTYPE binary PRIVATE_LINK VirtualFluidsCore basics ${MPI_CXX_LIBRARIES} MultiphaseFlow NonNewtonianFluids FILES RisingBubble2D.cpp ) +vf_add_library(BUILDTYPE binary PRIVATE_LINK cpu_core basics ${MPI_CXX_LIBRARIES} MultiphaseFlow NonNewtonianFluids FILES RisingBubble2D.cpp ) diff --git a/apps/cpu/RisingBubble2D/RisingBubble2D.cpp b/apps/cpu/RisingBubble2D/RisingBubble2D.cpp index 90c912152f7e3cfbc8cf27a8d7170ca74ae71919..15da79550ae7f4e954f91d06a393d988b1c1db9d 100644 --- a/apps/cpu/RisingBubble2D/RisingBubble2D.cpp +++ b/apps/cpu/RisingBubble2D/RisingBubble2D.cpp @@ -193,7 +193,7 @@ void run(string configname) grid->setPeriodicX3(true); grid->setGhostLayerWidth(2); - SPtr<Grid3DVisitor> metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, DIR_MMM, MetisPartitioner::RECURSIVE)); + SPtr<Grid3DVisitor> metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, dMMM, MetisPartitioner::RECURSIVE)); ////////////////////////////////////////////////////////////////////////// // restart diff --git a/apps/cpu/ShotcreteJet/CMakeLists.txt b/apps/cpu/ShotcreteJet/CMakeLists.txt index 6c82d37e10ac965dff939740f28b2200b0aec239..cd2efcfc9e15fa4f1744ba92bafd4dbfd2520847 100644 --- a/apps/cpu/ShotcreteJet/CMakeLists.txt +++ b/apps/cpu/ShotcreteJet/CMakeLists.txt @@ -1,3 +1,3 @@ PROJECT(ShotcreteJet) -vf_add_library(BUILDTYPE binary PRIVATE_LINK VirtualFluidsCore basics ${MPI_CXX_LIBRARIES} MultiphaseFlow NonNewtonianFluids FILES jet.cpp ) +vf_add_library(BUILDTYPE binary PRIVATE_LINK cpu_core basics ${MPI_CXX_LIBRARIES} MultiphaseFlow NonNewtonianFluids FILES jet.cpp ) diff --git a/apps/cpu/ShotcreteJet/jet.cpp b/apps/cpu/ShotcreteJet/jet.cpp index baaa572353ecfa91a14c12ab0f7c5ae1bcfd97c1..fbb6b07e76d4b7844c17af4186ae9e2ac682fab5 100644 --- a/apps/cpu/ShotcreteJet/jet.cpp +++ b/apps/cpu/ShotcreteJet/jet.cpp @@ -604,7 +604,7 @@ int main(int argc, char *argv[]) // ///////////////////////////////////////////////////////////////////// // ///////////////////////////////////////////////////////////////////// - SPtr<Grid3DVisitor> metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, vf::lbm::dir::DIR_MMM, MetisPartitioner::KWAY)); + SPtr<Grid3DVisitor> metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, vf::lbm::dir::dMMM, MetisPartitioner::KWAY)); ////////////////////////////////////////////////////////////////////////// // restart diff --git a/apps/cpu/TPMSRow/CMakeLists.txt b/apps/cpu/TPMSRow/CMakeLists.txt index 6ea54915ed2eb339e0e6e71c9d40c638120e58fa..f8c696c38152e73deb74a057360f9640ffc58983 100644 --- a/apps/cpu/TPMSRow/CMakeLists.txt +++ b/apps/cpu/TPMSRow/CMakeLists.txt @@ -1,6 +1,6 @@ PROJECT(TPMSRow) -vf_add_library(BUILDTYPE binary PRIVATE_LINK VirtualFluidsCore muparser basics ${MPI_CXX_LIBRARIES} FILES TPMSRow.cpp ) +vf_add_library(BUILDTYPE binary PRIVATE_LINK cpu_core muparser basics ${MPI_CXX_LIBRARIES} FILES TPMSRow.cpp ) vf_get_library_name (library_name) #target_include_dires(${library_name} PRIVATE ${APPS_ROOT_CPU}) diff --git a/apps/cpu/TPMSRow/TPMSRow.cpp b/apps/cpu/TPMSRow/TPMSRow.cpp index 09be56c68ed6cc0db2d911b19a21feae2c890d80..c4d41489740ca9717cfeb11d9eff591123d27aa4 100644 --- a/apps/cpu/TPMSRow/TPMSRow.cpp +++ b/apps/cpu/TPMSRow/TPMSRow.cpp @@ -405,7 +405,7 @@ void run(string configname) intHelper.setBC(); - SpongeLayerBlockVisitor spongeLayerVisitor(spongecube, kernel, nu, DIR_P00); + SpongeLayerBlockVisitor spongeLayerVisitor(spongecube, kernel, nu, dP00); grid->accept(spongeLayerVisitor); grid->accept(bcVisitor); diff --git a/apps/cpu/ViskomatXL/CMakeLists.txt b/apps/cpu/ViskomatXL/CMakeLists.txt index 6dcfeabc73259c72138c2c4ac84c017c6e96463a..17b147d92b5f09e5379bb9f8594b217388bebab0 100644 --- a/apps/cpu/ViskomatXL/CMakeLists.txt +++ b/apps/cpu/ViskomatXL/CMakeLists.txt @@ -3,4 +3,4 @@ ######################################################## PROJECT(viskomat) -vf_add_library(BUILDTYPE binary PRIVATE_LINK VirtualFluidsCore basics ${MPI_CXX_LIBRARIES} NonNewtonianFluids FILES viskomat.cpp ) \ No newline at end of file +vf_add_library(BUILDTYPE binary PRIVATE_LINK cpu_core basics ${MPI_CXX_LIBRARIES} NonNewtonianFluids FILES viskomat.cpp ) \ No newline at end of file diff --git a/apps/cpu/ViskomatXL/viskomat.cpp b/apps/cpu/ViskomatXL/viskomat.cpp index 7db98670e2325825a76b60559d09d818838f9430..72417c70ebd5315716f5362aac4acb938d93a103 100644 --- a/apps/cpu/ViskomatXL/viskomat.cpp +++ b/apps/cpu/ViskomatXL/viskomat.cpp @@ -194,7 +194,7 @@ void bflow(string configname) //////////////////////////////////////////// //METIS - SPtr<Grid3DVisitor> metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, DIR_MMM, MetisPartitioner::RECURSIVE)); + SPtr<Grid3DVisitor> metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, dMMM, MetisPartitioner::RECURSIVE)); //////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////// //restart diff --git a/apps/cpu/pChannel/CMakeLists.txt b/apps/cpu/pChannel/CMakeLists.txt index 336ac6c018044246d9c6c2f26f6009cc1e19e485..8af2de6d0580e0ca5cc9a10591474ec378e2145a 100644 --- a/apps/cpu/pChannel/CMakeLists.txt +++ b/apps/cpu/pChannel/CMakeLists.txt @@ -2,4 +2,4 @@ PROJECT(PChannel) INCLUDE(${APPS_ROOT}/IncludsList.cmake) -vf_add_library(BUILDTYPE binary PRIVATE_LINK VirtualFluidsCore VirtualFluidsBasic FILES pChannel.cpp) +vf_add_library(BUILDTYPE binary PRIVATE_LINK cpu_core VirtualFluidsBasic FILES pChannel.cpp) diff --git a/apps/cpu/poiseuille_example/CMakeLists.txt b/apps/cpu/poiseuille_example/CMakeLists.txt index 14782a6459a0b8689f7f81dd69055a2a43f9ecb7..9500d497a50866553a4bd2cdb3e74a19a00ef8fd 100644 --- a/apps/cpu/poiseuille_example/CMakeLists.txt +++ b/apps/cpu/poiseuille_example/CMakeLists.txt @@ -1,7 +1,7 @@ PROJECT(poiseuille_example) -vf_add_library(BUILDTYPE binary PRIVATE_LINK VirtualFluidsCore muparser basics ${MPI_CXX_LIBRARIES} FILES poiseuille.cpp ) +vf_add_library(BUILDTYPE binary PRIVATE_LINK cpu_core muparser basics ${MPI_CXX_LIBRARIES} FILES poiseuille.cpp ) vf_get_library_name (library_name) target_include_directories(${library_name} PRIVATE ${APPS_ROOT_CPU}) \ No newline at end of file diff --git a/apps/cpu/rheometer/CMakeLists.txt b/apps/cpu/rheometer/CMakeLists.txt index 58177bdd14a1c55985818bd70e336072c62f6dc5..b095887e02ca0ca6a4a63189b431147da78ba3c5 100644 --- a/apps/cpu/rheometer/CMakeLists.txt +++ b/apps/cpu/rheometer/CMakeLists.txt @@ -3,4 +3,4 @@ ######################################################## PROJECT(rheometer) -vf_add_library(BUILDTYPE binary PRIVATE_LINK VirtualFluidsCore basics ${MPI_CXX_LIBRARIES} NonNewtonianFluids FILES rheometer.cpp ) \ No newline at end of file +vf_add_library(BUILDTYPE binary PRIVATE_LINK cpu_core basics ${MPI_CXX_LIBRARIES} NonNewtonianFluids FILES rheometer.cpp ) \ No newline at end of file diff --git a/apps/cpu/rheometer/rheometer.cpp b/apps/cpu/rheometer/rheometer.cpp index 68db541bc922d3c269d3f626e19ddd6a1001d071..6c3c545f87d17f5a4b4e90492dfd879612028644 100644 --- a/apps/cpu/rheometer/rheometer.cpp +++ b/apps/cpu/rheometer/rheometer.cpp @@ -226,7 +226,7 @@ void bflow(string configname) //////////////////////////////////////////// //METIS - SPtr<Grid3DVisitor> metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, DIR_MMM, MetisPartitioner::KWAY)); + SPtr<Grid3DVisitor> metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, dMMM, MetisPartitioner::KWAY)); //////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////// //restart @@ -316,7 +316,7 @@ void bflow(string configname) //////////////////////////////////////////// //METIS - SPtr<Grid3DVisitor> metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, DIR_MMM, MetisPartitioner::KWAY)); + SPtr<Grid3DVisitor> metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, dMMM, MetisPartitioner::KWAY)); //////////////////////////////////////////// /////delete solid blocks if (myid == 0) UBLOG(logINFO, "deleteSolidBlocks - start"); diff --git a/apps/cpu/sphere/CMakeLists.txt b/apps/cpu/sphere/CMakeLists.txt index 8346e80d26800582c37090b208e846737e087d5d..be839b6cd6e1f0a67637beb10e6a67b690f7db40 100644 --- a/apps/cpu/sphere/CMakeLists.txt +++ b/apps/cpu/sphere/CMakeLists.txt @@ -3,4 +3,4 @@ ######################################################## PROJECT(sphere LANGUAGES CXX) -vf_add_library(BUILDTYPE binary PRIVATE_LINK VirtualFluidsCore basics ${MPI_CXX_LIBRARIES} FILES sphere.cpp ) \ No newline at end of file +vf_add_library(BUILDTYPE binary PRIVATE_LINK cpu_core basics ${MPI_CXX_LIBRARIES} FILES sphere.cpp ) \ No newline at end of file diff --git a/apps/cpu/sphere/sphere.cpp b/apps/cpu/sphere/sphere.cpp index 5411449c79fcbf0bece01517eb81c4b7f1d4d52f..6809d2a9fd501da2cc3205bf697dc68c1b788ed8 100644 --- a/apps/cpu/sphere/sphere.cpp +++ b/apps/cpu/sphere/sphere.cpp @@ -182,7 +182,7 @@ void run(string configname) //outflow SPtr<D3Q27Interactor> outflowInt = SPtr<D3Q27Interactor>(new D3Q27Interactor(geoOutflow, grid, denBC, Interactor3D::SOLID)); - SPtr<Grid3DVisitor> metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, DIR_00M)); + SPtr<Grid3DVisitor> metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, d00M)); InteractorsHelper intHelper(grid, metisVisitor); intHelper.addInteractor(sphereInt); intHelper.addInteractor(addWallYminInt); diff --git a/apps/gpu/ActuatorLine/ActuatorLine.cpp b/apps/gpu/ActuatorLine/ActuatorLine.cpp index 5e43a552205b139ce14b2b8e1e25022a38f4de7a..8262a33892a53df438db90ae0b6447beff1f1775 100644 --- a/apps/gpu/ActuatorLine/ActuatorLine.cpp +++ b/apps/gpu/ActuatorLine/ActuatorLine.cpp @@ -65,21 +65,21 @@ ////////////////////////////////////////////////////////////////////////// -#include "VirtualFluids_GPU/LBM/Simulation.h" -#include "VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/GridGenerator.h" -#include "VirtualFluids_GPU/DataStructureInitializer/GridProvider.h" -#include "VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/GridReader.h" -#include "VirtualFluids_GPU/Parameter/Parameter.h" -#include "VirtualFluids_GPU/Output/FileWriter.h" -#include "VirtualFluids_GPU/PreCollisionInteractor/ActuatorFarm.h" -#include "VirtualFluids_GPU/PreCollisionInteractor/Probes/PointProbe.h" -#include "VirtualFluids_GPU/PreCollisionInteractor/Probes/PlaneProbe.h" -#include "VirtualFluids_GPU/Factories/BoundaryConditionFactory.h" -#include "VirtualFluids_GPU/TurbulenceModels/TurbulenceModelFactory.h" -#include "VirtualFluids_GPU/Factories/GridScalingFactory.h" -#include "VirtualFluids_GPU/Kernel/Utilities/KernelTypes.h" - -#include "VirtualFluids_GPU/GPU/CudaMemoryManager.h" +#include "gpu/core/LBM/Simulation.h" +#include "gpu/core/DataStructureInitializer/GridReaderGenerator/GridGenerator.h" +#include "gpu/core/DataStructureInitializer/GridProvider.h" +#include "gpu/core/DataStructureInitializer/GridReaderFiles/GridReader.h" +#include "gpu/core/Parameter/Parameter.h" +#include "gpu/core/Output/FileWriter.h" +#include "gpu/core/PreCollisionInteractor/ActuatorFarm.h" +#include "gpu/core/PreCollisionInteractor/Probes/PointProbe.h" +#include "gpu/core/PreCollisionInteractor/Probes/PlaneProbe.h" +#include "gpu/core/Factories/BoundaryConditionFactory.h" +#include "gpu/core/TurbulenceModels/TurbulenceModelFactory.h" +#include "gpu/core/Factories/GridScalingFactory.h" +#include "gpu/core/Kernel/KernelTypes.h" + +#include "gpu/core/GPU/CudaMemoryManager.h" //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/apps/gpu/ActuatorLine/CMakeLists.txt b/apps/gpu/ActuatorLine/CMakeLists.txt index c437ac81a0e23fadd925ca81af596f81ff59f820..52f225ae4f592131e5e6e3684464b175bf3b3b12 100644 --- a/apps/gpu/ActuatorLine/CMakeLists.txt +++ b/apps/gpu/ActuatorLine/CMakeLists.txt @@ -1,6 +1,6 @@ PROJECT(ActuatorLine LANGUAGES CUDA CXX) -vf_add_library(BUILDTYPE binary PRIVATE_LINK basics VirtualFluids_GPU GridGenerator FILES ActuatorLine.cpp) +vf_add_library(BUILDTYPE binary PRIVATE_LINK basics gpu_core GridGenerator FILES ActuatorLine.cpp) set_source_files_properties(ActuatorLine.cpp PROPERTIES LANGUAGE CUDA) diff --git a/apps/gpu/ActuatorLineRegression/ActuatorLineRegression.cpp b/apps/gpu/ActuatorLineRegression/ActuatorLineRegression.cpp index 5ff3151d1313fd5a67b83930e963035203ff532e..bff963de58e048982ec2878235d87b12894f8c20 100644 --- a/apps/gpu/ActuatorLineRegression/ActuatorLineRegression.cpp +++ b/apps/gpu/ActuatorLineRegression/ActuatorLineRegression.cpp @@ -65,22 +65,22 @@ ////////////////////////////////////////////////////////////////////////// -#include "VirtualFluids_GPU/LBM/Simulation.h" -#include "VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/GridGenerator.h" -#include "VirtualFluids_GPU/DataStructureInitializer/GridProvider.h" -#include "VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/GridReader.h" -#include "VirtualFluids_GPU/Parameter/Parameter.h" -#include "VirtualFluids_GPU/Output/FileWriter.h" -#include "VirtualFluids_GPU/PreCollisionInteractor/ActuatorFarm.h" -#include "VirtualFluids_GPU/PreCollisionInteractor/Probes/PointProbe.h" -#include "VirtualFluids_GPU/PreCollisionInteractor/Probes/PlaneProbe.h" -#include "VirtualFluids_GPU/PreCollisionInteractor/Probes/Probe.h" -#include "VirtualFluids_GPU/Factories/BoundaryConditionFactory.h" -#include "VirtualFluids_GPU/TurbulenceModels/TurbulenceModelFactory.h" -#include "VirtualFluids_GPU/Factories/GridScalingFactory.h" -#include "VirtualFluids_GPU/Kernel/Utilities/KernelTypes.h" - -#include "VirtualFluids_GPU/GPU/CudaMemoryManager.h" +#include "gpu/core/LBM/Simulation.h" +#include "gpu/core/DataStructureInitializer/GridReaderGenerator/GridGenerator.h" +#include "gpu/core/DataStructureInitializer/GridProvider.h" +#include "gpu/core/DataStructureInitializer/GridReaderFiles/GridReader.h" +#include "gpu/core/Parameter/Parameter.h" +#include "gpu/core/Output/FileWriter.h" +#include "gpu/core/PreCollisionInteractor/ActuatorFarm.h" +#include "gpu/core/PreCollisionInteractor/Probes/PointProbe.h" +#include "gpu/core/PreCollisionInteractor/Probes/PlaneProbe.h" +#include "gpu/core/PreCollisionInteractor/Probes/Probe.h" +#include "gpu/core/Factories/BoundaryConditionFactory.h" +#include "gpu/core/TurbulenceModels/TurbulenceModelFactory.h" +#include "gpu/core/Factories/GridScalingFactory.h" +#include "gpu/core/Kernel/KernelTypes.h" + +#include "gpu/core/GPU/CudaMemoryManager.h" //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/apps/gpu/ActuatorLineRegression/CMakeLists.txt b/apps/gpu/ActuatorLineRegression/CMakeLists.txt index f7eb952945e726a43895356937d03dff29e6478f..d22ef9c7263899a83ccecaffdbc7c59ffea20d4a 100644 --- a/apps/gpu/ActuatorLineRegression/CMakeLists.txt +++ b/apps/gpu/ActuatorLineRegression/CMakeLists.txt @@ -1,6 +1,6 @@ PROJECT(ActuatorLineRegression LANGUAGES CUDA CXX) -vf_add_library(BUILDTYPE binary PRIVATE_LINK basics VirtualFluids_GPU GridGenerator FILES ActuatorLineRegression.cpp) +vf_add_library(BUILDTYPE binary PRIVATE_LINK basics gpu_core GridGenerator FILES ActuatorLineRegression.cpp) set_source_files_properties(ActuatorLineRegression.cpp PROPERTIES LANGUAGE CUDA) diff --git a/apps/gpu/Basel/CMakeLists.txt b/apps/gpu/Basel/CMakeLists.txt index 6ef6241b52aa9b5dc73a19b82f2b9fd5248c77c5..2d05f78bd85244eee12b8b65c9df157ff175b1e5 100644 --- a/apps/gpu/Basel/CMakeLists.txt +++ b/apps/gpu/Basel/CMakeLists.txt @@ -1,8 +1,8 @@ setTargetNameToFolderName(${CMAKE_CURRENT_LIST_DIR}) set(linkDirectories "") -set(libsToLink VirtualFluids_GPU GridGenerator) -set(includeDirectories "${CMAKE_SOURCE_DIR}/src" "${CMAKE_SOURCE_DIR}/src/VirtualFluids_GPU" "${CMAKE_SOURCE_DIR}/src/GridGenerator" "${CMAKE_SOURCE_DIR}/src/VirtualFluidsBasics") +set(libsToLink gpu_core GridGenerator) +set(includeDirectories "${CMAKE_SOURCE_DIR}/src" "${CMAKE_SOURCE_DIR}/src/gpu_core" "${CMAKE_SOURCE_DIR}/src/GridGenerator" "${CMAKE_SOURCE_DIR}/src/VirtualFluidsBasics") #glob files and save in MY_SRCS include(CMakePackage.cmake) diff --git a/apps/gpu/Basel/main.cpp b/apps/gpu/Basel/main.cpp index 16161dc6a83846f2730c5920dfd64363b6e77b30..59708add1acd865b55bb3ca8d1f1e2e2e3032dac 100644 --- a/apps/gpu/Basel/main.cpp +++ b/apps/gpu/Basel/main.cpp @@ -18,15 +18,15 @@ #include "StringUtilities/StringUtil.h" #include "Input/ConfigFileReader/ConfigFileReader.h" -#include "VirtualFluids_GPU/LBM/Simulation.h" -#include "VirtualFluids_GPU/Communication/MpiCommunicator.h" -#include "VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/GridGenerator.h" -#include "VirtualFluids_GPU/DataStructureInitializer/GridProvider.h" -#include "VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/GridReader.h" -#include "VirtualFluids_GPU/Parameter/Parameter.h" -#include "VirtualFluids_GPU/Output/FileWriter.h" -#include "VirtualFluids_GPU/GPU/CudaMemoryManager.h" -#include "VirtualFluids_GPU/Factories/BoundaryConditionFactory.h" +#include "gpu/core/LBM/Simulation.h" +#include "gpu/core/Communication/MpiCommunicator.h" +#include "gpu/core/DataStructureInitializer/GridReaderGenerator/GridGenerator.h" +#include "gpu/core/DataStructureInitializer/GridProvider.h" +#include "gpu/core/DataStructureInitializer/GridReaderFiles/GridReader.h" +#include "gpu/core/Parameter/Parameter.h" +#include "gpu/core/Output/FileWriter.h" +#include "gpu/core/GPU/CudaMemoryManager.h" +#include "gpu/core/Factories/BoundaryConditionFactory.h" #include "global.h" diff --git a/apps/gpu/BaselMultiGPU/CMakeLists.txt b/apps/gpu/BaselMultiGPU/CMakeLists.txt index 6ef6241b52aa9b5dc73a19b82f2b9fd5248c77c5..2d05f78bd85244eee12b8b65c9df157ff175b1e5 100644 --- a/apps/gpu/BaselMultiGPU/CMakeLists.txt +++ b/apps/gpu/BaselMultiGPU/CMakeLists.txt @@ -1,8 +1,8 @@ setTargetNameToFolderName(${CMAKE_CURRENT_LIST_DIR}) set(linkDirectories "") -set(libsToLink VirtualFluids_GPU GridGenerator) -set(includeDirectories "${CMAKE_SOURCE_DIR}/src" "${CMAKE_SOURCE_DIR}/src/VirtualFluids_GPU" "${CMAKE_SOURCE_DIR}/src/GridGenerator" "${CMAKE_SOURCE_DIR}/src/VirtualFluidsBasics") +set(libsToLink gpu_core GridGenerator) +set(includeDirectories "${CMAKE_SOURCE_DIR}/src" "${CMAKE_SOURCE_DIR}/src/gpu_core" "${CMAKE_SOURCE_DIR}/src/GridGenerator" "${CMAKE_SOURCE_DIR}/src/VirtualFluidsBasics") #glob files and save in MY_SRCS include(CMakePackage.cmake) diff --git a/apps/gpu/BaselMultiGPU/main.cpp b/apps/gpu/BaselMultiGPU/main.cpp index 346ab7ca36ccd147d1f8427974ce2510b5d637fb..794d9c1ee5ef502997a1bc82709cdca277e8b61b 100644 --- a/apps/gpu/BaselMultiGPU/main.cpp +++ b/apps/gpu/BaselMultiGPU/main.cpp @@ -18,15 +18,15 @@ #include "StringUtilities/StringUtil.h" #include "Input/ConfigFileReader/ConfigFileReader.h" -#include "VirtualFluids_GPU/LBM/Simulation.h" -#include "VirtualFluids_GPU/Communication/MpiCommunicator.h" -#include "VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/GridGenerator.h" -#include "VirtualFluids_GPU/DataStructureInitializer/GridProvider.h" -#include "VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/GridReader.h" -#include "VirtualFluids_GPU/Parameter/Parameter.h" -#include "VirtualFluids_GPU/Output/FileWriter.h" -#include "VirtualFluids_GPU/GPU/CudaMemoryManager.h" -#include "VirtualFluids_GPU/Factories/BoundaryConditionFactory.h" +#include "gpu/core/LBM/Simulation.h" +#include "gpu/core/Communication/MpiCommunicator.h" +#include "gpu/core/DataStructureInitializer/GridReaderGenerator/GridGenerator.h" +#include "gpu/core/DataStructureInitializer/GridProvider.h" +#include "gpu/core/DataStructureInitializer/GridReaderFiles/GridReader.h" +#include "gpu/core/Parameter/Parameter.h" +#include "gpu/core/Output/FileWriter.h" +#include "gpu/core/GPU/CudaMemoryManager.h" +#include "gpu/core/Factories/BoundaryConditionFactory.h" #include "global.h" diff --git a/apps/gpu/BaselNU/CMakeLists.txt b/apps/gpu/BaselNU/CMakeLists.txt index 6ef6241b52aa9b5dc73a19b82f2b9fd5248c77c5..2d05f78bd85244eee12b8b65c9df157ff175b1e5 100644 --- a/apps/gpu/BaselNU/CMakeLists.txt +++ b/apps/gpu/BaselNU/CMakeLists.txt @@ -1,8 +1,8 @@ setTargetNameToFolderName(${CMAKE_CURRENT_LIST_DIR}) set(linkDirectories "") -set(libsToLink VirtualFluids_GPU GridGenerator) -set(includeDirectories "${CMAKE_SOURCE_DIR}/src" "${CMAKE_SOURCE_DIR}/src/VirtualFluids_GPU" "${CMAKE_SOURCE_DIR}/src/GridGenerator" "${CMAKE_SOURCE_DIR}/src/VirtualFluidsBasics") +set(libsToLink gpu_core GridGenerator) +set(includeDirectories "${CMAKE_SOURCE_DIR}/src" "${CMAKE_SOURCE_DIR}/src/gpu_core" "${CMAKE_SOURCE_DIR}/src/GridGenerator" "${CMAKE_SOURCE_DIR}/src/VirtualFluidsBasics") #glob files and save in MY_SRCS include(CMakePackage.cmake) diff --git a/apps/gpu/BaselNU/main.cpp b/apps/gpu/BaselNU/main.cpp index 97c4c48afb5caffb89bad89e3f3fe99670c889bc..991f5b3fa639f90562b5d220b27aedc21a71bf5a 100644 --- a/apps/gpu/BaselNU/main.cpp +++ b/apps/gpu/BaselNU/main.cpp @@ -18,15 +18,15 @@ #include "StringUtilities/StringUtil.h" #include "Input/ConfigFileReader/ConfigFileReader.h" -#include "VirtualFluids_GPU/LBM/Simulation.h" -#include "VirtualFluids_GPU/Communication/MpiCommunicator.h" -#include "VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/GridGenerator.h" -#include "VirtualFluids_GPU/DataStructureInitializer/GridProvider.h" -#include "VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/GridReader.h" -#include "VirtualFluids_GPU/Parameter/Parameter.h" -#include "VirtualFluids_GPU/Output/FileWriter.h" -#include "VirtualFluids_GPU/GPU/CudaMemoryManager.h" -#include "VirtualFluids_GPU/Factories/BoundaryConditionFactory.h" +#include "gpu/core/LBM/Simulation.h" +#include "gpu/core/Communication/MpiCommunicator.h" +#include "gpu/core/DataStructureInitializer/GridReaderGenerator/GridGenerator.h" +#include "gpu/core/DataStructureInitializer/GridProvider.h" +#include "gpu/core/DataStructureInitializer/GridReaderFiles/GridReader.h" +#include "gpu/core/Parameter/Parameter.h" +#include "gpu/core/Output/FileWriter.h" +#include "gpu/core/GPU/CudaMemoryManager.h" +#include "gpu/core/Factories/BoundaryConditionFactory.h" #include "global.h" diff --git a/apps/gpu/BoundaryLayer/BoundaryLayer.cpp b/apps/gpu/BoundaryLayer/BoundaryLayer.cpp index 436ced919ee86ca5f9abab1285360633d9f4f423..ac2dbf785764b529653d122b9edcad31ca08be6c 100644 --- a/apps/gpu/BoundaryLayer/BoundaryLayer.cpp +++ b/apps/gpu/BoundaryLayer/BoundaryLayer.cpp @@ -69,23 +69,23 @@ ////////////////////////////////////////////////////////////////////////// -#include "VirtualFluids_GPU/LBM/Simulation.h" -#include "VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/GridGenerator.h" -#include "VirtualFluids_GPU/DataStructureInitializer/GridProvider.h" -#include "VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/GridReader.h" -#include "VirtualFluids_GPU/Parameter/Parameter.h" -#include "VirtualFluids_GPU/Output/FileWriter.h" -#include "VirtualFluids_GPU/PreCollisionInteractor/Probes/PointProbe.h" -#include "VirtualFluids_GPU/PreCollisionInteractor/Probes/PlaneProbe.h" -#include "VirtualFluids_GPU/PreCollisionInteractor/Probes/PlanarAverageProbe.h" -#include "VirtualFluids_GPU/PreCollisionInteractor/Probes/WallModelProbe.h" -#include "VirtualFluids_GPU/PreCollisionInteractor/PrecursorWriter.h" -#include "VirtualFluids_GPU/Factories/BoundaryConditionFactory.h" -#include "VirtualFluids_GPU/Factories/GridScalingFactory.h" -#include "VirtualFluids_GPU/TurbulenceModels/TurbulenceModelFactory.h" -#include "VirtualFluids_GPU/Kernel/Utilities/KernelTypes.h" - -#include "VirtualFluids_GPU/GPU/CudaMemoryManager.h" +#include "gpu/core/LBM/Simulation.h" +#include "gpu/core/DataStructureInitializer/GridReaderGenerator/GridGenerator.h" +#include "gpu/core/DataStructureInitializer/GridProvider.h" +#include "gpu/core/DataStructureInitializer/GridReaderFiles/GridReader.h" +#include "gpu/core/Parameter/Parameter.h" +#include "gpu/core/Output/FileWriter.h" +#include "gpu/core/PreCollisionInteractor/Probes/PointProbe.h" +#include "gpu/core/PreCollisionInteractor/Probes/PlaneProbe.h" +#include "gpu/core/PreCollisionInteractor/Probes/PlanarAverageProbe.h" +#include "gpu/core/PreCollisionInteractor/Probes/WallModelProbe.h" +#include "gpu/core/PreCollisionInteractor/PrecursorWriter.h" +#include "gpu/core/Factories/BoundaryConditionFactory.h" +#include "gpu/core/Factories/GridScalingFactory.h" +#include "gpu/core/TurbulenceModels/TurbulenceModelFactory.h" +#include "gpu/core/Kernel/KernelTypes.h" + +#include "gpu/core/GPU/CudaMemoryManager.h" #include "utilities/communication.h" diff --git a/apps/gpu/BoundaryLayer/CMakeLists.txt b/apps/gpu/BoundaryLayer/CMakeLists.txt index 248c7a1616610715d38bcbff129b226da2cfd1f2..30efeb6bf4fe9b24f9857f348e21bcaaa1e7f555 100644 --- a/apps/gpu/BoundaryLayer/CMakeLists.txt +++ b/apps/gpu/BoundaryLayer/CMakeLists.txt @@ -1,6 +1,6 @@ PROJECT(BoundaryLayer LANGUAGES CUDA CXX) -vf_add_library(BUILDTYPE binary PRIVATE_LINK basics VirtualFluids_GPU GridGenerator FILES BoundaryLayer.cpp) +vf_add_library(BUILDTYPE binary PRIVATE_LINK basics gpu_core GridGenerator FILES BoundaryLayer.cpp) set_source_files_properties(BoundaryLayer.cpp PROPERTIES LANGUAGE CUDA) diff --git a/apps/gpu/ChannelFlow/CMakeLists.txt b/apps/gpu/ChannelFlow/CMakeLists.txt index 3884074e05097b392d96a47287d5e5cad4c0d6f3..3aab31339616f98f4f5c14138686fe04ac4e28ae 100644 --- a/apps/gpu/ChannelFlow/CMakeLists.txt +++ b/apps/gpu/ChannelFlow/CMakeLists.txt @@ -1,6 +1,6 @@ PROJECT(ChannelFlow LANGUAGES CUDA CXX) -vf_add_library(BUILDTYPE binary PRIVATE_LINK basics VirtualFluids_GPU GridGenerator FILES ChannelFlow.cpp) +vf_add_library(BUILDTYPE binary PRIVATE_LINK basics gpu_core GridGenerator FILES ChannelFlow.cpp) set_source_files_properties(ChannelFlow.cpp PROPERTIES LANGUAGE CUDA) diff --git a/apps/gpu/ChannelFlow/ChannelFlow.cpp b/apps/gpu/ChannelFlow/ChannelFlow.cpp index c51e8705c895bf511227a383be3c64de392975e5..5596cee8178f6e302224fa62b3fc78e66add4530 100644 --- a/apps/gpu/ChannelFlow/ChannelFlow.cpp +++ b/apps/gpu/ChannelFlow/ChannelFlow.cpp @@ -60,14 +60,14 @@ ////////////////////////////////////////////////////////////////////////// -#include "VirtualFluids_GPU/Factories/BoundaryConditionFactory.h" -#include "VirtualFluids_GPU/DataStructureInitializer/GridProvider.h" -#include "VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/GridGenerator.h" -#include "VirtualFluids_GPU/GPU/CudaMemoryManager.h" -#include "VirtualFluids_GPU/LBM/Simulation.h" -#include "VirtualFluids_GPU/Output/FileWriter.h" -#include "VirtualFluids_GPU/Parameter/Parameter.h" -#include "VirtualFluids_GPU/Kernel/Utilities/KernelTypes.h" +#include "gpu/core/BoundaryConditions/BoundaryConditionFactory.h" +#include "gpu/core/DataStructureInitializer/GridProvider.h" +#include "gpu/core/DataStructureInitializer/GridReaderGenerator/GridGenerator.h" +#include "gpu/core/GPU/CudaMemoryManager.h" +#include "gpu/core/LBM/Simulation.h" +#include "gpu/core/Output/FileWriter.h" +#include "gpu/core/Parameter/Parameter.h" +#include "gpu/core/Kernel/Utilities/KernelTypes.h" ////////////////////////////////////////////////////////////////////////// diff --git a/apps/gpu/DrivenCavity/CMakeLists.txt b/apps/gpu/DrivenCavity/CMakeLists.txt index 8646f29c13d689eaabee4274418620636643c592..c040b1810768cf6930f564d0fb89632931326380 100644 --- a/apps/gpu/DrivenCavity/CMakeLists.txt +++ b/apps/gpu/DrivenCavity/CMakeLists.txt @@ -2,4 +2,4 @@ PROJECT(DrivenCavity LANGUAGES CXX) #LIST(APPEND CS_COMPILER_FLAGS_CXX "-DOMPI_SKIP_MPICXX" ) -vf_add_library(BUILDTYPE binary PRIVATE_LINK basics VirtualFluids_GPU GridGenerator FILES DrivenCavity.cpp) +vf_add_library(BUILDTYPE binary PRIVATE_LINK basics gpu_core GridGenerator FILES DrivenCavity.cpp) diff --git a/apps/gpu/DrivenCavity/DrivenCavity.cpp b/apps/gpu/DrivenCavity/DrivenCavity.cpp index 6fa193fcd7852f8393172f7251a8e72a1b41e417..d7b897cd53a724d0cfa747124451423006853fba 100644 --- a/apps/gpu/DrivenCavity/DrivenCavity.cpp +++ b/apps/gpu/DrivenCavity/DrivenCavity.cpp @@ -57,15 +57,15 @@ ////////////////////////////////////////////////////////////////////////// -#include "VirtualFluids_GPU/Factories/BoundaryConditionFactory.h" -#include "VirtualFluids_GPU/Factories/GridScalingFactory.h" -#include "VirtualFluids_GPU/DataStructureInitializer/GridProvider.h" -#include "VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/GridGenerator.h" -#include "VirtualFluids_GPU/GPU/CudaMemoryManager.h" -#include "VirtualFluids_GPU/LBM/Simulation.h" -#include "VirtualFluids_GPU/Output/FileWriter.h" -#include "VirtualFluids_GPU/Parameter/Parameter.h" -#include "VirtualFluids_GPU/Kernel/Utilities/KernelTypes.h" +#include "gpu/core/Factories/BoundaryConditionFactory.h" +#include "gpu/core/Factories/GridScalingFactory.h" +#include "gpu/core/DataStructureInitializer/GridProvider.h" +#include "gpu/core/DataStructureInitializer/GridReaderGenerator/GridGenerator.h" +#include "gpu/core/GPU/CudaMemoryManager.h" +#include "gpu/core/LBM/Simulation.h" +#include "gpu/core/Output/FileWriter.h" +#include "gpu/core/Parameter/Parameter.h" +#include "gpu/core/Kernel/KernelTypes.h" ////////////////////////////////////////////////////////////////////////// diff --git a/apps/gpu/DrivenCavityMultiGPU/CMakeLists.txt b/apps/gpu/DrivenCavityMultiGPU/CMakeLists.txt index 6460abb1cb56b770cf91f57239eeb8262f34595a..abecc9fd9618051ef05cbb7b4ba5ba9f53af624a 100644 --- a/apps/gpu/DrivenCavityMultiGPU/CMakeLists.txt +++ b/apps/gpu/DrivenCavityMultiGPU/CMakeLists.txt @@ -1,3 +1,3 @@ PROJECT(DrivenCavityMultiGPU LANGUAGES CXX) -vf_add_library(BUILDTYPE binary PRIVATE_LINK basics VirtualFluids_GPU GridGenerator FILES DrivenCavityMultiGPU.cpp) +vf_add_library(BUILDTYPE binary PRIVATE_LINK basics gpu_core GridGenerator FILES DrivenCavityMultiGPU.cpp) diff --git a/apps/gpu/DrivenCavityMultiGPU/DrivenCavityMultiGPU.cpp b/apps/gpu/DrivenCavityMultiGPU/DrivenCavityMultiGPU.cpp index 29d0a8beff5f1b93a3d6a4edbc2f7a39323239f4..f35bfe5c151e3821af5952e6c9d921691dfe08dd 100755 --- a/apps/gpu/DrivenCavityMultiGPU/DrivenCavityMultiGPU.cpp +++ b/apps/gpu/DrivenCavityMultiGPU/DrivenCavityMultiGPU.cpp @@ -33,20 +33,20 @@ ////////////////////////////////////////////////////////////////////////// -#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/Kernel/Utilities/KernelFactory/KernelFactoryImp.h" -#include "VirtualFluids_GPU/PreProcessor/PreProcessorFactory/PreProcessorFactoryImp.h" -#include "VirtualFluids_GPU/Factories/BoundaryConditionFactory.h" -#include "VirtualFluids_GPU/Factories/GridScalingFactory.h" -#include "VirtualFluids_GPU/Kernel/Utilities/KernelTypes.h" - -#include "VirtualFluids_GPU/GPU/CudaMemoryManager.h" +#include "gpu/core/DataStructureInitializer/GridProvider.h" +#include "gpu/core/DataStructureInitializer/GridReaderFiles/GridReader.h" +#include "gpu/core/DataStructureInitializer/GridReaderGenerator/GridGenerator.h" +#include "gpu/core/LBM/Simulation.h" +#include "gpu/core/Output/FileWriter.h" +#include "gpu/core/Parameter/Parameter.h" + +#include "gpu/core/Kernel/KernelFactory/KernelFactoryImp.h" +#include "gpu/core/PreProcessor/PreProcessorFactory/PreProcessorFactoryImp.h" +#include "gpu/core/Factories/BoundaryConditionFactory.h" +#include "gpu/core/Factories/GridScalingFactory.h" +#include "gpu/core/Kernel/KernelTypes.h" + +#include "gpu/core/GPU/CudaMemoryManager.h" ////////////////////////////////////////////////////////////////////////// #include <parallel/MPICommunicator.h> diff --git a/apps/gpu/DrivenCavityUniform/CMakeLists.txt b/apps/gpu/DrivenCavityUniform/CMakeLists.txt index 78d6d693a54b251b8c3361ac908f6099f4d7ccf0..b223717b7f6f1f506847d7bd2436ff295c2bd73e 100644 --- a/apps/gpu/DrivenCavityUniform/CMakeLists.txt +++ b/apps/gpu/DrivenCavityUniform/CMakeLists.txt @@ -2,4 +2,4 @@ PROJECT(DrivenCavityUniform LANGUAGES CXX) #LIST(APPEND CS_COMPILER_FLAGS_CXX "-DOMPI_SKIP_MPICXX" ) -vf_add_library(BUILDTYPE binary PRIVATE_LINK basics VirtualFluids_GPU GridGenerator FILES DrivenCavity.cpp) +vf_add_library(BUILDTYPE binary PRIVATE_LINK basics gpu_core GridGenerator FILES DrivenCavity.cpp) diff --git a/apps/gpu/DrivenCavityUniform/DrivenCavity.cpp b/apps/gpu/DrivenCavityUniform/DrivenCavity.cpp index 38c9ac08d15dac64099ea1584129bc9d896dd659..0ffe9bd39e2fc461dd8e08e8f3ed411b2550a42f 100644 --- a/apps/gpu/DrivenCavityUniform/DrivenCavity.cpp +++ b/apps/gpu/DrivenCavityUniform/DrivenCavity.cpp @@ -57,15 +57,15 @@ ////////////////////////////////////////////////////////////////////////// -#include "VirtualFluids_GPU/Factories/BoundaryConditionFactory.h" -#include "VirtualFluids_GPU/Factories/GridScalingFactory.h" -#include "VirtualFluids_GPU/DataStructureInitializer/GridProvider.h" -#include "VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/GridGenerator.h" -#include "VirtualFluids_GPU/GPU/CudaMemoryManager.h" -#include "VirtualFluids_GPU/LBM/Simulation.h" -#include "VirtualFluids_GPU/Output/FileWriter.h" -#include "VirtualFluids_GPU/Parameter/Parameter.h" -#include "VirtualFluids_GPU/Kernel/Utilities/KernelTypes.h" +#include "gpu/core/Factories/BoundaryConditionFactory.h" +#include "gpu/core/Factories/GridScalingFactory.h" +#include "gpu/core/DataStructureInitializer/GridProvider.h" +#include "gpu/core/DataStructureInitializer/GridReaderGenerator/GridGenerator.h" +#include "gpu/core/GPU/CudaMemoryManager.h" +#include "gpu/core/LBM/Simulation.h" +#include "gpu/core/Output/FileWriter.h" +#include "gpu/core/Parameter/Parameter.h" +#include "gpu/core/Kernel/KernelTypes.h" ////////////////////////////////////////////////////////////////////////// diff --git a/apps/gpu/MusselOyster/CMakeLists.txt b/apps/gpu/MusselOyster/CMakeLists.txt index 966c802b233fd333c7e7b44a57c7f4177b419ca3..2661a46547eb651c23ce48550e571998d414bc34 100644 --- a/apps/gpu/MusselOyster/CMakeLists.txt +++ b/apps/gpu/MusselOyster/CMakeLists.txt @@ -1,3 +1,3 @@ PROJECT(MusselOyster LANGUAGES CXX) -vf_add_library(BUILDTYPE binary PRIVATE_LINK basics VirtualFluids_GPU GridGenerator FILES MusselOyster.cpp) +vf_add_library(BUILDTYPE binary PRIVATE_LINK basics gpu_core GridGenerator FILES MusselOyster.cpp) diff --git a/apps/gpu/MusselOyster/MusselOyster.cpp b/apps/gpu/MusselOyster/MusselOyster.cpp index 1c3a9dd642b2af43bb04d7d96f182cb77a4ab280..1bcfb60c8ca1a91acda8426b1e52de75fa1a07c3 100644 --- a/apps/gpu/MusselOyster/MusselOyster.cpp +++ b/apps/gpu/MusselOyster/MusselOyster.cpp @@ -36,15 +36,15 @@ ////////////////////////////////////////////////////////////////////////// -#include "VirtualFluids_GPU/DataStructureInitializer/GridProvider.h" -#include "VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/GridReader.h" -#include "VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/GridGenerator.h" -#include "VirtualFluids_GPU/GPU/CudaMemoryManager.h" -#include "VirtualFluids_GPU/LBM/Simulation.h" -#include "VirtualFluids_GPU/Output/FileWriter.h" -#include "VirtualFluids_GPU/Parameter/Parameter.h" -#include "VirtualFluids_GPU/Factories/BoundaryConditionFactory.h" -#include "VirtualFluids_GPU/Kernel/Utilities/KernelTypes.h" +#include "gpu/core/DataStructureInitializer/GridProvider.h" +#include "gpu/core/DataStructureInitializer/GridReaderFiles/GridReader.h" +#include "gpu/core/DataStructureInitializer/GridReaderGenerator/GridGenerator.h" +#include "gpu/core/GPU/CudaMemoryManager.h" +#include "gpu/core/LBM/Simulation.h" +#include "gpu/core/Output/FileWriter.h" +#include "gpu/core/Parameter/Parameter.h" +#include "gpu/core/Factories/BoundaryConditionFactory.h" +#include "gpu/core/Kernel/KernelTypes.h" ////////////////////////////////////////////////////////////////////////// diff --git a/apps/gpu/SphereGPU/CMakeLists.txt b/apps/gpu/SphereGPU/CMakeLists.txt index 1a162d6d200e4c0e533764b8f9927314b1f28ee9..df9f6b57197f594461805375238bab534ee6cdb5 100644 --- a/apps/gpu/SphereGPU/CMakeLists.txt +++ b/apps/gpu/SphereGPU/CMakeLists.txt @@ -1,3 +1,3 @@ PROJECT(SphereGPU LANGUAGES CXX) -vf_add_library(BUILDTYPE binary PRIVATE_LINK basics VirtualFluids_GPU GridGenerator FILES Sphere.cpp) +vf_add_library(BUILDTYPE binary PRIVATE_LINK basics gpu_core GridGenerator FILES Sphere.cpp) diff --git a/apps/gpu/SphereGPU/Sphere.cpp b/apps/gpu/SphereGPU/Sphere.cpp index 9cf84f8c433d8eb843e0d7ad40866762328acfae..66d381809d3f37bc85238a459b86fd54e9477b4a 100644 --- a/apps/gpu/SphereGPU/Sphere.cpp +++ b/apps/gpu/SphereGPU/Sphere.cpp @@ -60,17 +60,17 @@ ////////////////////////////////////////////////////////////////////////// -#include "VirtualFluids_GPU/DataStructureInitializer/GridProvider.h" -#include "VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/GridGenerator.h" -#include "VirtualFluids_GPU/GPU/CudaMemoryManager.h" -#include "VirtualFluids_GPU/LBM/Simulation.h" -#include "VirtualFluids_GPU/Output/FileWriter.h" -#include "VirtualFluids_GPU/Parameter/Parameter.h" -#include "VirtualFluids_GPU/Factories/BoundaryConditionFactory.h" -#include "VirtualFluids_GPU/Factories/GridScalingFactory.h" -#include "VirtualFluids_GPU/PreCollisionInteractor/Probes/PointProbe.h" -#include "VirtualFluids_GPU/PreCollisionInteractor/Probes/PlaneProbe.h" -#include "VirtualFluids_GPU/Kernel/Utilities/KernelTypes.h" +#include "gpu/core/DataStructureInitializer/GridProvider.h" +#include "gpu/core/DataStructureInitializer/GridReaderGenerator/GridGenerator.h" +#include "gpu/core/GPU/CudaMemoryManager.h" +#include "gpu/core/LBM/Simulation.h" +#include "gpu/core/Output/FileWriter.h" +#include "gpu/core/Parameter/Parameter.h" +#include "gpu/core/Factories/BoundaryConditionFactory.h" +#include "gpu/core/Factories/GridScalingFactory.h" +#include "gpu/core/PreCollisionInteractor/Probes/PointProbe.h" +#include "gpu/core/PreCollisionInteractor/Probes/PlaneProbe.h" +#include "gpu/core/Kernel/KernelTypes.h" int main(int argc, char *argv[]) { diff --git a/apps/gpu/SphereRefined/CMakeLists.txt b/apps/gpu/SphereRefined/CMakeLists.txt index 87432021ba02e7b56b5dabade18e98d7978bce46..f7bb5716f44d424f834b38e2ce5ff27423ff3265 100644 --- a/apps/gpu/SphereRefined/CMakeLists.txt +++ b/apps/gpu/SphereRefined/CMakeLists.txt @@ -2,7 +2,7 @@ PROJECT(SphereRefined LANGUAGES CUDA CXX) #LIST(APPEND CS_COMPILER_FLAGS_CXX "-DOMPI_SKIP_MPICXX" ) -vf_add_library(BUILDTYPE binary PRIVATE_LINK basics VirtualFluids_GPU GridGenerator FILES SphereRefined.cpp) +vf_add_library(BUILDTYPE binary PRIVATE_LINK basics gpu_core GridGenerator FILES SphereRefined.cpp) set_source_files_properties(SphereRefined.cpp PROPERTIES LANGUAGE CUDA) diff --git a/apps/gpu/SphereRefined/SphereRefined.cpp b/apps/gpu/SphereRefined/SphereRefined.cpp index 12605db750d405198b732cb4524900c92a27475a..8d03154b34f0bb04b72033783195cd857b9ff4a7 100644 --- a/apps/gpu/SphereRefined/SphereRefined.cpp +++ b/apps/gpu/SphereRefined/SphereRefined.cpp @@ -58,16 +58,16 @@ ////////////////////////////////////////////////////////////////////////// -#include "VirtualFluids_GPU/Factories/BoundaryConditionFactory.h" -#include "VirtualFluids_GPU/Factories/GridScalingFactory.h" -#include "VirtualFluids_GPU/DataStructureInitializer/GridProvider.h" -#include "VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/GridGenerator.h" -#include "VirtualFluids_GPU/GPU/CudaMemoryManager.h" -#include "VirtualFluids_GPU/LBM/Simulation.h" -#include "VirtualFluids_GPU/Output/FileWriter.h" -#include "VirtualFluids_GPU/Parameter/Parameter.h" -#include "VirtualFluids_GPU/Factories/GridScalingFactory.h" -#include "VirtualFluids_GPU/Kernel/Utilities/KernelTypes.h" +#include "gpu/core/Factories/BoundaryConditionFactory.h" +#include "gpu/core/Factories/GridScalingFactory.h" +#include "gpu/core/DataStructureInitializer/GridProvider.h" +#include "gpu/core/DataStructureInitializer/GridReaderGenerator/GridGenerator.h" +#include "gpu/core/GPU/CudaMemoryManager.h" +#include "gpu/core/LBM/Simulation.h" +#include "gpu/core/Output/FileWriter.h" +#include "gpu/core/Parameter/Parameter.h" +#include "gpu/core/Factories/GridScalingFactory.h" +#include "gpu/core/Kernel/KernelTypes.h" #include <parallel/MPICommunicator.h> diff --git a/apps/gpu/SphereScaling/CMakeLists.txt b/apps/gpu/SphereScaling/CMakeLists.txt index 7d2d7722190e02876dc05e581cd9ce67a3362ebd..04b4e6defd8b3e5db96a83f165f4bc5999a4b1cd 100644 --- a/apps/gpu/SphereScaling/CMakeLists.txt +++ b/apps/gpu/SphereScaling/CMakeLists.txt @@ -1,6 +1,6 @@ PROJECT(SphereScaling LANGUAGES CUDA CXX) -vf_add_library(BUILDTYPE binary PRIVATE_LINK basics VirtualFluids_GPU GridGenerator FILES SphereScaling.cpp) +vf_add_library(BUILDTYPE binary PRIVATE_LINK basics gpu_core GridGenerator FILES SphereScaling.cpp) set_source_files_properties(SphereScaling.cpp PROPERTIES LANGUAGE CUDA) diff --git a/apps/gpu/SphereScaling/SphereScaling.cpp b/apps/gpu/SphereScaling/SphereScaling.cpp index 6be82fef197ad94d5857fde0692162d137d24c2b..cb557bedc7545ee2ddc1dd4b53efcf34a6dceeb7 100755 --- a/apps/gpu/SphereScaling/SphereScaling.cpp +++ b/apps/gpu/SphereScaling/SphereScaling.cpp @@ -36,20 +36,20 @@ ////////////////////////////////////////////////////////////////////////// -#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/Kernel/Utilities/KernelFactory/KernelFactoryImp.h" -#include "VirtualFluids_GPU/PreProcessor/PreProcessorFactory/PreProcessorFactoryImp.h" -#include "VirtualFluids_GPU/Factories/BoundaryConditionFactory.h" -#include "VirtualFluids_GPU/Factories/GridScalingFactory.h" -#include "VirtualFluids_GPU/Kernel/Utilities/KernelTypes.h" - -#include "VirtualFluids_GPU/GPU/CudaMemoryManager.h" +#include "gpu/core/DataStructureInitializer/GridProvider.h" +#include "gpu/core/DataStructureInitializer/GridReaderFiles/GridReader.h" +#include "gpu/core/DataStructureInitializer/GridReaderGenerator/GridGenerator.h" +#include "gpu/core/LBM/Simulation.h" +#include "gpu/core/Output/FileWriter.h" +#include "gpu/core/Parameter/Parameter.h" + +#include "gpu/core/Kernel/KernelFactory/KernelFactoryImp.h" +#include "gpu/core/PreProcessor/PreProcessorFactory/PreProcessorFactoryImp.h" +#include "gpu/core/Factories/BoundaryConditionFactory.h" +#include "gpu/core/Factories/GridScalingFactory.h" +#include "gpu/core/Kernel/KernelTypes.h" + +#include "gpu/core/GPU/CudaMemoryManager.h" ////////////////////////////////////////////////////////////////////////// diff --git a/apps/gpu/TGV_3D/CMakeLists.txt b/apps/gpu/TGV_3D/CMakeLists.txt index 6a06a92891ac8b7c9714f0a6c98dd918dc08f682..6ff88f79de8b6ea5228bff197096d9178e3f5989 100644 --- a/apps/gpu/TGV_3D/CMakeLists.txt +++ b/apps/gpu/TGV_3D/CMakeLists.txt @@ -1,6 +1,6 @@ PROJECT(TGV_3D LANGUAGES CUDA CXX) -vf_add_library(BUILDTYPE binary PRIVATE_LINK basics VirtualFluids_GPU GridGenerator FILES TGV_3D.cpp) +vf_add_library(BUILDTYPE binary PRIVATE_LINK basics gpu_core GridGenerator FILES TGV_3D.cpp) set_source_files_properties(TGV_3D.cpp PROPERTIES LANGUAGE CUDA) diff --git a/apps/gpu/TGV_3D/TGV_3D.cpp b/apps/gpu/TGV_3D/TGV_3D.cpp index 6bb6d2b9201a4f21e5b70d31b8e9c60ad5a8a34c..0f467142ed3442cb1322f8d04524a5cff8ab3dfe 100644 --- a/apps/gpu/TGV_3D/TGV_3D.cpp +++ b/apps/gpu/TGV_3D/TGV_3D.cpp @@ -64,14 +64,14 @@ ////////////////////////////////////////////////////////////////////////// -#include "VirtualFluids_GPU/DataStructureInitializer/GridProvider.h" -#include "VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/GridReader.h" -#include "VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/GridGenerator.h" -#include "VirtualFluids_GPU/Factories/BoundaryConditionFactory.h" -#include "VirtualFluids_GPU/GPU/CudaMemoryManager.h" -#include "VirtualFluids_GPU/LBM/Simulation.h" -#include "VirtualFluids_GPU/Output/FileWriter.h" -#include "VirtualFluids_GPU/Parameter/Parameter.h" +#include "gpu/core/DataStructureInitializer/GridProvider.h" +#include "gpu/core/DataStructureInitializer/GridReaderFiles/GridReader.h" +#include "gpu/core/DataStructureInitializer/GridReaderGenerator/GridGenerator.h" +#include "gpu/core/Factories/BoundaryConditionFactory.h" +#include "gpu/core/GPU/CudaMemoryManager.h" +#include "gpu/core/LBM/Simulation.h" +#include "gpu/core/Output/FileWriter.h" +#include "gpu/core/Parameter/Parameter.h" #include <parallel/MPICommunicator.h> //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/apps/gpu/TGV_3D_GridRef/CMakeLists.txt b/apps/gpu/TGV_3D_GridRef/CMakeLists.txt index efb4310669f9c0de7aa5cf3f1e4dffa00bd66cbf..92e125b2d4a1b9239a91a6086bc0b6ec005e0f54 100644 --- a/apps/gpu/TGV_3D_GridRef/CMakeLists.txt +++ b/apps/gpu/TGV_3D_GridRef/CMakeLists.txt @@ -1,6 +1,6 @@ PROJECT(TGV_3D_GridRef LANGUAGES CUDA CXX) -vf_add_library(BUILDTYPE binary PRIVATE_LINK basics VirtualFluids_GPU GridGenerator FILES TGV_3D_GridRef.cpp) +vf_add_library(BUILDTYPE binary PRIVATE_LINK basics gpu_core GridGenerator FILES TGV_3D_GridRef.cpp) set_source_files_properties(TGV_3D_GridRef.cpp PROPERTIES LANGUAGE CUDA) diff --git a/apps/gpu/TGV_3D_GridRef/TGV_3D_GridRef.cpp b/apps/gpu/TGV_3D_GridRef/TGV_3D_GridRef.cpp index 5f30cba2bd8a8d5a2e2b19b2e1b96faa74da80e4..876d4e32e6e5702db857876f060f619fddb37fb6 100644 --- a/apps/gpu/TGV_3D_GridRef/TGV_3D_GridRef.cpp +++ b/apps/gpu/TGV_3D_GridRef/TGV_3D_GridRef.cpp @@ -68,16 +68,16 @@ ////////////////////////////////////////////////////////////////////////// #include "parallel/MpiCommunicator.h" -#include "VirtualFluids_GPU/DataStructureInitializer/GridProvider.h" -#include "VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/GridReader.h" -#include "VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/GridGenerator.h" -#include "VirtualFluids_GPU/Factories/BoundaryConditionFactory.h" -#include "VirtualFluids_GPU/Factories/GridScalingFactory.h" -#include "VirtualFluids_GPU/GPU/CudaMemoryManager.h" -#include "VirtualFluids_GPU/LBM/Simulation.h" -#include "VirtualFluids_GPU/Output/FileWriter.h" -#include "VirtualFluids_GPU/Parameter/Parameter.h" -#include "VirtualFluids_GPU/Kernel/Utilities/KernelTypes.h" +#include "gpu/core/DataStructureInitializer/GridProvider.h" +#include "gpu/core/DataStructureInitializer/GridReaderFiles/GridReader.h" +#include "gpu/core/DataStructureInitializer/GridReaderGenerator/GridGenerator.h" +#include "gpu/core/Factories/BoundaryConditionFactory.h" +#include "gpu/core/Factories/GridScalingFactory.h" +#include "gpu/core/GPU/CudaMemoryManager.h" +#include "gpu/core/LBM/Simulation.h" +#include "gpu/core/Output/FileWriter.h" +#include "gpu/core/Parameter/Parameter.h" +#include "gpu/core/Kernel/KernelTypes.h" //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/apps/gpu/TGV_3D_MultiGPU/CMakeLists.txt b/apps/gpu/TGV_3D_MultiGPU/CMakeLists.txt index cc25432a3151ce0805242f720d58794e8bc7feed..cfa39677e41f8b399eccf441f8752a77cf9327fe 100644 --- a/apps/gpu/TGV_3D_MultiGPU/CMakeLists.txt +++ b/apps/gpu/TGV_3D_MultiGPU/CMakeLists.txt @@ -1,6 +1,6 @@ PROJECT(TGV_3D_MultiGPU LANGUAGES CUDA CXX) -vf_add_library(BUILDTYPE binary PRIVATE_LINK basics VirtualFluids_GPU GridGenerator FILES TGV_3D_MultiGPU.cpp) +vf_add_library(BUILDTYPE binary PRIVATE_LINK basics gpu_core GridGenerator FILES TGV_3D_MultiGPU.cpp) set_source_files_properties(TGV_3D_MultiGPU.cpp PROPERTIES LANGUAGE CUDA) diff --git a/apps/gpu/TGV_3D_MultiGPU/TGV_3D_MultiGPU.cpp b/apps/gpu/TGV_3D_MultiGPU/TGV_3D_MultiGPU.cpp index f409b417378b0a2eab05b65181fac4d86e981c50..503768d882848f941ab8dd0deeca77ef36499eb8 100644 --- a/apps/gpu/TGV_3D_MultiGPU/TGV_3D_MultiGPU.cpp +++ b/apps/gpu/TGV_3D_MultiGPU/TGV_3D_MultiGPU.cpp @@ -53,19 +53,19 @@ #include "StringUtilities/StringUtil.h" #include "basics/config/ConfigurationFile.h" -#include "VirtualFluids_GPU/LBM/Simulation.h" -#include "VirtualFluids_GPU/Communication/MpiCommunicator.h" -#include "VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/GridGenerator.h" -#include "VirtualFluids_GPU/DataStructureInitializer/GridProvider.h" -#include "VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/GridReader.h" -#include "VirtualFluids_GPU/Parameter/Parameter.h" -#include "VirtualFluids_GPU/Output/FileWriter.h" - -#include "VirtualFluids_GPU/Kernel/Utilities/KernelFactory/KernelFactoryImp.h" -#include "VirtualFluids_GPU/PreProcessor/PreProcessorFactory/PreProcessorFactoryImp.h" -#include "VirtualFluids_GPU/Factories/BoundaryConditionFactory.h" - -#include "VirtualFluids_GPU/GPU/CudaMemoryManager.h" +#include "gpu/core/LBM/Simulation.h" +#include "gpu/core/Communication/MpiCommunicator.h" +#include "gpu/core/DataStructureInitializer/GridReaderGenerator/GridGenerator.h" +#include "gpu/core/DataStructureInitializer/GridProvider.h" +#include "gpu/core/DataStructureInitializer/GridReaderFiles/GridReader.h" +#include "gpu/core/Parameter/Parameter.h" +#include "gpu/core/Output/FileWriter.h" + +#include "gpu/core/Kernel/KernelFactory/KernelFactoryImp.h" +#include "gpu/core/PreProcessor/PreProcessorFactory/PreProcessorFactoryImp.h" +#include "gpu/core/Factories/BoundaryConditionFactory.h" + +#include "gpu/core/GPU/CudaMemoryManager.h" #include "global.h" diff --git a/apps/gpu/WTG_RUB/CMakeLists.txt b/apps/gpu/WTG_RUB/CMakeLists.txt index d67ec1c079fa418bcfc7374aa7aa7673756329a8..98cd844fa13fe6220a9bb01eb3e6ecf6f32e01da 100644 --- a/apps/gpu/WTG_RUB/CMakeLists.txt +++ b/apps/gpu/WTG_RUB/CMakeLists.txt @@ -1,6 +1,6 @@ PROJECT(WTG_RUB LANGUAGES CUDA CXX) -vf_add_library(BUILDTYPE binary PRIVATE_LINK basics VirtualFluids_GPU GridGenerator FILES WTG_RUB.cpp) +vf_add_library(BUILDTYPE binary PRIVATE_LINK basics gpu_core GridGenerator FILES WTG_RUB.cpp) set_source_files_properties(WTG_RUB.cpp PROPERTIES LANGUAGE CUDA) diff --git a/apps/gpu/WTG_RUB/WTG_RUB.cpp b/apps/gpu/WTG_RUB/WTG_RUB.cpp index 0f6ae8617afad6919209bfb6a1dd8108336c9715..1a40c4f127ddabb52faa29fb581106026e92f452 100644 --- a/apps/gpu/WTG_RUB/WTG_RUB.cpp +++ b/apps/gpu/WTG_RUB/WTG_RUB.cpp @@ -65,15 +65,15 @@ ////////////////////////////////////////////////////////////////////////// -#include "VirtualFluids_GPU/LBM/Simulation.h" -#include "VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/GridGenerator.h" -#include "VirtualFluids_GPU/DataStructureInitializer/GridProvider.h" -#include "VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/GridReader.h" -#include "VirtualFluids_GPU/Parameter/Parameter.h" -#include "VirtualFluids_GPU/Output/FileWriter.h" -#include "VirtualFluids_GPU/GPU/CudaMemoryManager.h" -#include "VirtualFluids_GPU/Factories/BoundaryConditionFactory.h" -#include "VirtualFluids_GPU/Kernel/Utilities/KernelTypes.h" +#include "gpu/core/LBM/Simulation.h" +#include "gpu/core/DataStructureInitializer/GridReaderGenerator/GridGenerator.h" +#include "gpu/core/DataStructureInitializer/GridProvider.h" +#include "gpu/core/DataStructureInitializer/GridReaderFiles/GridReader.h" +#include "gpu/core/Parameter/Parameter.h" +#include "gpu/core/Output/FileWriter.h" +#include "gpu/core/GPU/CudaMemoryManager.h" +#include "gpu/core/Factories/BoundaryConditionFactory.h" +#include "gpu/core/Kernel/KernelTypes.h" #include <parallel/MPICommunicator.h> diff --git a/apps/gpu/gridGeneratorTest/CMakeLists.txt b/apps/gpu/gridGeneratorTest/CMakeLists.txt index b946a710edffbdcb98894e0d49763c6ead3dabf9..7edf505365cc8b05abbf30ef89c0a127e28d75c3 100644 --- a/apps/gpu/gridGeneratorTest/CMakeLists.txt +++ b/apps/gpu/gridGeneratorTest/CMakeLists.txt @@ -1,3 +1,3 @@ PROJECT(GridGeneratorTest LANGUAGES CXX) -vf_add_library(BUILDTYPE binary PRIVATE_LINK basics VirtualFluids_GPU GridGenerator MPI::MPI_CXX FILES gridGenerator.cpp) +vf_add_library(BUILDTYPE binary PRIVATE_LINK basics gpu_core GridGenerator MPI::MPI_CXX FILES gridGenerator.cpp) diff --git a/apps/gpu/gridGeneratorTest/gridGenerator.cpp b/apps/gpu/gridGeneratorTest/gridGenerator.cpp index e9ef5ae4790105471c227800d494f68deeb73c8d..0648c45827ab748779e399a79bbe0c3ecc78a23c 100644 --- a/apps/gpu/gridGeneratorTest/gridGenerator.cpp +++ b/apps/gpu/gridGeneratorTest/gridGenerator.cpp @@ -8,18 +8,18 @@ #include "StringUtilities/StringUtil.h" #include "basics/config/ConfigurationFile.h" -#include "VirtualFluids_GPU/LBM/Simulation.h" -#include "VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/GridGenerator.h" -#include "VirtualFluids_GPU/DataStructureInitializer/GridProvider.h" -#include "VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/GridReader.h" -#include "VirtualFluids_GPU/Parameter/Parameter.h" -#include "VirtualFluids_GPU/Output/FileWriter.h" - -#include "VirtualFluids_GPU/Kernel/Utilities/KernelFactory/KernelFactoryImp.h" -#include "VirtualFluids_GPU/PreProcessor/PreProcessorFactory/PreProcessorFactoryImp.h" -#include "VirtualFluids_GPU/Factories/BoundaryConditionFactory.h" - -#include "VirtualFluids_GPU/GPU/CudaMemoryManager.h" +#include "gpu/core/LBM/Simulation.h" +#include "gpu/core/DataStructureInitializer/GridReaderGenerator/GridGenerator.h" +#include "gpu/core/DataStructureInitializer/GridProvider.h" +#include "gpu/core/DataStructureInitializer/GridReaderFiles/GridReader.h" +#include "gpu/core/Parameter/Parameter.h" +#include "gpu/core/Output/FileWriter.h" + +#include "gpu/core/Kernel/KernelFactory/KernelFactoryImp.h" +#include "gpu/core/PreProcessor/PreProcessorFactory/PreProcessorFactoryImp.h" +#include "gpu/core/Factories/BoundaryConditionFactory.h" + +#include "gpu/core/GPU/CudaMemoryManager.h" #include "global.h" diff --git a/apps/gpu/tests/NumericalTestPostProcessing/CMakeLists.txt b/apps/gpu/tests/NumericalTestPostProcessing/CMakeLists.txt index 4114004886660af9c9f95a0a7d5ed4fc90a7bd00..b58271c34025802fce64c8d381da0022f9e4f6a7 100644 --- a/apps/gpu/tests/NumericalTestPostProcessing/CMakeLists.txt +++ b/apps/gpu/tests/NumericalTestPostProcessing/CMakeLists.txt @@ -1,6 +1,6 @@ project(NumericalTestPostProcessing) -vf_add_library(BUILDTYPE binary PRIVATE_LINK VirtualFluids_GPU basics cudart_static) +vf_add_library(BUILDTYPE binary PRIVATE_LINK gpu_core basics cudart_static) vf_get_library_name(library_name) groupTarget(${library_name} ${testFolder}) diff --git a/apps/gpu/tests/NumericalTests/CMakeLists.txt b/apps/gpu/tests/NumericalTests/CMakeLists.txt index 80c6318756ce115f18a4fa4b6324dd0d087935e4..a188420492ff477ff4ddf86f0d4f34373438737e 100644 --- a/apps/gpu/tests/NumericalTests/CMakeLists.txt +++ b/apps/gpu/tests/NumericalTests/CMakeLists.txt @@ -1,6 +1,6 @@ project(NumericalTestsGPU) set(collectTestFiles ON) -vf_add_library(BUILDTYPE binary PRIVATE_LINK VirtualFluids_GPU GridGenerator basics logger fftw3 gtest gmock gmock_main cudart_static) +vf_add_library(BUILDTYPE binary PRIVATE_LINK gpu_core GridGenerator basics logger fftw3 gtest gmock gmock_main cudart_static) vf_get_library_name(library_name) groupTarget(${library_name} ${testFolder}) diff --git a/apps/gpu/tests/NumericalTests/Utilities/DataWriter/ToVectorWriter.cpp b/apps/gpu/tests/NumericalTests/Utilities/DataWriter/ToVectorWriter.cpp index 5a779e0c958f74876f6f206193cf32a9c2e68935..078bc7297679c6761ce387739735ace9805cc368 100644 --- a/apps/gpu/tests/NumericalTests/Utilities/DataWriter/ToVectorWriter.cpp +++ b/apps/gpu/tests/NumericalTests/Utilities/DataWriter/ToVectorWriter.cpp @@ -1,9 +1,9 @@ #include "ToVectorWriter.h" -#include "VirtualFluids_GPU/Output/FileWriter.h" -#include "VirtualFluids_GPU/Parameter/Parameter.h" -#include "VirtualFluids_GPU/GPU/CudaMemoryManager.h" -#include "VirtualFluids_GPU/Output/FileWriter.h" +#include "gpu/core/Output/FileWriter.h" +#include "gpu/core/Parameter/Parameter.h" +#include "gpu/core/GPU/CudaMemoryManager.h" +#include "gpu/core/Output/FileWriter.h" #include "Utilities/Structs/VectorWriterInformationStruct.h" diff --git a/apps/gpu/tests/NumericalTests/Utilities/DataWriter/ToVectorWriter.h b/apps/gpu/tests/NumericalTests/Utilities/DataWriter/ToVectorWriter.h index 43f0ae86e0bd1231414a5d1ec11347849eac03d8..1123a36a35e0de5971ce892058c0a62659edfb24 100644 --- a/apps/gpu/tests/NumericalTests/Utilities/DataWriter/ToVectorWriter.h +++ b/apps/gpu/tests/NumericalTests/Utilities/DataWriter/ToVectorWriter.h @@ -1,7 +1,7 @@ #ifndef WRITE_TO_VECTOR_H #define WRITE_TO_VECTOR_H -#include "VirtualFluids_GPU/Output/DataWriter.h" +#include "gpu/core/Output/DataWriter.h" class Parameter; class FileWriter; diff --git a/apps/gpu/tests/NumericalTests/Utilities/DataWriter/Y2dSliceToResults/Y2dSliceToResults.cpp b/apps/gpu/tests/NumericalTests/Utilities/DataWriter/Y2dSliceToResults/Y2dSliceToResults.cpp index c13f6f748463287fc4e7401d56d7c7ab40cc1a77..d19491ed5e08d182a966d1b87140ecf667e7dbd5 100644 --- a/apps/gpu/tests/NumericalTests/Utilities/DataWriter/Y2dSliceToResults/Y2dSliceToResults.cpp +++ b/apps/gpu/tests/NumericalTests/Utilities/DataWriter/Y2dSliceToResults/Y2dSliceToResults.cpp @@ -1,7 +1,7 @@ #include "Y2dSliceToResults.h" #include "Utilities/Results/SimulationResults/SimulationResults.h" -#include "VirtualFluids_GPU/Parameter/Parameter.h" +#include "gpu/core/Parameter/Parameter.h" #include <cmath> #include <sstream> diff --git a/apps/gpu/tests/NumericalTests/Utilities/InitialCondition/InitialCondition.h b/apps/gpu/tests/NumericalTests/Utilities/InitialCondition/InitialCondition.h index 1c9b322a29c80c28173d5791adc75e3756f22bbc..62cead9311e1ab581091e7eceb660dbd6200c1cc 100644 --- a/apps/gpu/tests/NumericalTests/Utilities/InitialCondition/InitialCondition.h +++ b/apps/gpu/tests/NumericalTests/Utilities/InitialCondition/InitialCondition.h @@ -1,7 +1,7 @@ #ifndef INITIAL_CONDITION_H #define INITIAL_CONDITION_H -#include "VirtualFluids_GPU/LBM/LB.h" +#include "gpu/core/LBM/LB.h" #include <vector> #include <memory> diff --git a/apps/gpu/tests/NumericalTests/Utilities/InitialCondition/InitialConditionImp.cpp b/apps/gpu/tests/NumericalTests/Utilities/InitialCondition/InitialConditionImp.cpp index 72045afbe7a68ba9c8595ee5c736dd5b2da89ec7..60b37a5be4fb0afc01509467c22b50e220f106f8 100644 --- a/apps/gpu/tests/NumericalTests/Utilities/InitialCondition/InitialConditionImp.cpp +++ b/apps/gpu/tests/NumericalTests/Utilities/InitialCondition/InitialConditionImp.cpp @@ -1,6 +1,6 @@ #include "InitialConditionImp.h" -#include "VirtualFluids_GPU/Parameter/Parameter.h" +#include "gpu/core/Parameter/Parameter.h" void InitialConditionImp::setParameter(std::shared_ptr<Parameter> para) { diff --git a/apps/gpu/tests/NumericalTests/Utilities/NumericalTestGridReader/NumericalTestGridReader.cpp b/apps/gpu/tests/NumericalTests/Utilities/NumericalTestGridReader/NumericalTestGridReader.cpp index b0368e4e4215aca06cda79faf47403d7a2650f8d..494eb79657ae9057496b50fa83d510159386b041 100644 --- a/apps/gpu/tests/NumericalTests/Utilities/NumericalTestGridReader/NumericalTestGridReader.cpp +++ b/apps/gpu/tests/NumericalTests/Utilities/NumericalTestGridReader/NumericalTestGridReader.cpp @@ -1,6 +1,6 @@ #include "NumericalTestGridReader.h" -#include "VirtualFluids_GPU/Parameter/Parameter.h" +#include "gpu/core/Parameter/Parameter.h" #include "Utilities/InitialCondition/InitialCondition.h" diff --git a/apps/gpu/tests/NumericalTests/Utilities/NumericalTestGridReader/NumericalTestGridReader.h b/apps/gpu/tests/NumericalTests/Utilities/NumericalTestGridReader/NumericalTestGridReader.h index 99363655817874672eaf5b898fb087cb20effb02..bde0a2bcb0c4740ed393e301b58339a9afcd180a 100644 --- a/apps/gpu/tests/NumericalTests/Utilities/NumericalTestGridReader/NumericalTestGridReader.h +++ b/apps/gpu/tests/NumericalTests/Utilities/NumericalTestGridReader/NumericalTestGridReader.h @@ -1,7 +1,7 @@ #ifndef NUMERICAL_TESTS_GRID_READER_H #define NUMERICAL_TESTS_GRID_READER_H -#include "VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/GridReader.h" +#include "gpu/core/DataStructureInitializer/GridReaderFiles/GridReader.h" #include <memory> diff --git a/apps/gpu/tests/NumericalTests/Utilities/Results/AnalyticalResults/AnalyticalResultImp.h b/apps/gpu/tests/NumericalTests/Utilities/Results/AnalyticalResults/AnalyticalResultImp.h index 8320d9e1076fad3ed0a6bf5461a58826dbe36418..7c1e09b9de89f972d3256e91507695c2960bee6e 100644 --- a/apps/gpu/tests/NumericalTests/Utilities/Results/AnalyticalResults/AnalyticalResultImp.h +++ b/apps/gpu/tests/NumericalTests/Utilities/Results/AnalyticalResults/AnalyticalResultImp.h @@ -3,7 +3,7 @@ #include "AnalyticalResult.h" -#include "VirtualFluids_GPU/LBM/LB.h" +#include "gpu/core/LBM/LB.h" class AnalyticalResultsImp : public AnalyticalResults { diff --git a/apps/gpu/tests/NumericalTests/Utilities/VirtualFluidSimulationFactory/VirtualFluidSimulationFactory.cpp b/apps/gpu/tests/NumericalTests/Utilities/VirtualFluidSimulationFactory/VirtualFluidSimulationFactory.cpp index 8646cc1991802b10d284c41acade4f5002df906b..9399652f4e1681eb53bc4960a7df9bbc9f22849d 100644 --- a/apps/gpu/tests/NumericalTests/Utilities/VirtualFluidSimulationFactory/VirtualFluidSimulationFactory.cpp +++ b/apps/gpu/tests/NumericalTests/Utilities/VirtualFluidSimulationFactory/VirtualFluidSimulationFactory.cpp @@ -5,11 +5,11 @@ #include "Utilities/NumericalTestGridReader/NumericalTestGridReader.h" #include "Utilities/SimulationParameter/SimulationParameter.h" -#include "VirtualFluids_GPU/GPU/CudaMemoryManager.h" -#include "VirtualFluids_GPU/Parameter/Parameter.h" +#include "gpu/core/GPU/CudaMemoryManager.h" +#include "gpu/core/Parameter/Parameter.h" -#include "VirtualFluids_GPU/Factories/BoundaryConditionFactory.h" -#include "VirtualFluids_GPU/LBM/Simulation.h" +#include "gpu/core/Factories/BoundaryConditionFactory.h" +#include "gpu/core/LBM/Simulation.h" #include <parallel/MPICommunicator.h> diff --git a/cpu.cmake b/cpu.cmake index 78034bc927f8c01ce25d882e7d04f9f5e278ba01..226791b1bef78cf7c76c916424889982c7ce6073 100644 --- a/cpu.cmake +++ b/cpu.cmake @@ -88,7 +88,7 @@ endif() add_subdirectory(${VF_THIRD_DIR}/MuParser) -add_subdirectory(src/cpu/VirtualFluidsCore) +add_subdirectory(src/cpu/core) if(BUILD_VF_PYTHON_BINDINGS) add_subdirectory(src/cpu/simulationconfig) diff --git a/gpu.cmake b/gpu.cmake index 8f3fde523efa4cbf2f0884723728832f82a53231..9dd181b89c848c40c2dc9c2da2628d2c9bf9188d 100644 --- a/gpu.cmake +++ b/gpu.cmake @@ -3,7 +3,7 @@ ############################################################# add_subdirectory(src/gpu/GridGenerator) -add_subdirectory(src/gpu/VirtualFluids_GPU) +add_subdirectory(src/gpu/core) ############################################################# ### Apps ### diff --git a/pythonbindings/CMakeLists.txt b/pythonbindings/CMakeLists.txt index 8dbf9047ac964b2886a180c6be5d1b753e4fcb24..53700cc8d2769581bcbfbe6e984fb3c90bbd2996 100644 --- a/pythonbindings/CMakeLists.txt +++ b/pythonbindings/CMakeLists.txt @@ -61,7 +61,7 @@ IF(BUILD_VF_GPU) target_include_directories(gpu_bindings PRIVATE ${VF_THIRD_DIR}/cuda_samples/) - target_link_libraries(gpu_bindings PRIVATE basics GridGenerator VirtualFluids_GPU parallel) + target_link_libraries(gpu_bindings PRIVATE basics GridGenerator gpu_core parallel) target_include_directories(gpu_bindings PRIVATE ${CMAKE_SOURCE_DIR}/src/) target_include_directories(gpu_bindings PRIVATE ${CMAKE_BINARY_DIR}) @@ -74,7 +74,7 @@ IF(BUILD_VF_CPU) set_target_properties( cpu_bindings PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${PYFLUIDS_DIR} OUTPUT_NAME "cpu") - target_link_libraries(cpu_bindings PRIVATE simulationconfig VirtualFluidsCore muparser) + target_link_libraries(cpu_bindings PRIVATE simulationconfig cpu_core muparser) target_include_directories(cpu_bindings PRIVATE ${CMAKE_SOURCE_DIR}/src/) target_include_directories(cpu_bindings PRIVATE ${CMAKE_BINARY_DIR}) diff --git a/pythonbindings/src/gpu/submodules/actuator_farm.cpp b/pythonbindings/src/gpu/submodules/actuator_farm.cpp index 86e3f5a42152e60d6b62e32fb894406efc8384ea..ee5275483f85559a15aefa769ba30a87af993355 100644 --- a/pythonbindings/src/gpu/submodules/actuator_farm.cpp +++ b/pythonbindings/src/gpu/submodules/actuator_farm.cpp @@ -33,8 +33,8 @@ #include <pybind11/pybind11.h> #include <pybind11/numpy.h> -#include <gpu/VirtualFluids_GPU/PreCollisionInteractor/ActuatorFarm.h> -#include <gpu/VirtualFluids_GPU/PreCollisionInteractor/PreCollisionInteractor.h> +#include <gpu/core/PreCollisionInteractor/ActuatorFarm.h> +#include <gpu/core/PreCollisionInteractor/PreCollisionInteractor.h> class PyActuatorFarm : public ActuatorFarm diff --git a/pythonbindings/src/gpu/submodules/boundary_conditions.cpp b/pythonbindings/src/gpu/submodules/boundary_conditions.cpp index 865817bb16f7b164c40bdc066645fb2e1f1c842e..26fdd3e712714074928f452c179b977e3769eec3 100644 --- a/pythonbindings/src/gpu/submodules/boundary_conditions.cpp +++ b/pythonbindings/src/gpu/submodules/boundary_conditions.cpp @@ -32,7 +32,7 @@ //======================================================================================= #include <pybind11/pybind11.h> #include <gpu/GridGenerator/grid/BoundaryConditions/Side.h> -#include "gpu/VirtualFluids_GPU/Factories/BoundaryConditionFactory.h" +#include "gpu/core/Factories/BoundaryConditionFactory.h" namespace boundary_conditions { diff --git a/pythonbindings/src/gpu/submodules/cuda_memory_manager.cpp b/pythonbindings/src/gpu/submodules/cuda_memory_manager.cpp index bbff4832cb73f47e3d1a5a6abd78e21da2473deb..d974609d22412121fb4886fa7e4a233a90fc9b9b 100644 --- a/pythonbindings/src/gpu/submodules/cuda_memory_manager.cpp +++ b/pythonbindings/src/gpu/submodules/cuda_memory_manager.cpp @@ -31,8 +31,8 @@ //! \author Henry Korb //======================================================================================= #include <pybind11/pybind11.h> -#include <gpu/VirtualFluids_GPU/GPU/CudaMemoryManager.h> -#include <gpu/VirtualFluids_GPU/Parameter/Parameter.h> +#include <gpu/core/GPU/CudaMemoryManager.h> +#include <gpu/core/Parameter/Parameter.h> namespace cuda_memory_manager diff --git a/pythonbindings/src/gpu/submodules/grid_provider.cpp b/pythonbindings/src/gpu/submodules/grid_provider.cpp index 717e9d5cd82100636a5398c09662a0895ce8fb56..c9ad3138f54bea78e1575087f3b719267f9ef67b 100644 --- a/pythonbindings/src/gpu/submodules/grid_provider.cpp +++ b/pythonbindings/src/gpu/submodules/grid_provider.cpp @@ -30,7 +30,7 @@ //! \author Henry Korb //======================================================================================= #include <pybind11/pybind11.h> -#include "gpu/VirtualFluids_GPU/DataStructureInitializer/GridProvider.h" +#include "gpu/core/DataStructureInitializer/GridProvider.h" namespace grid_provider { diff --git a/pythonbindings/src/gpu/submodules/grid_scaling_factory.cpp b/pythonbindings/src/gpu/submodules/grid_scaling_factory.cpp index a3a572875a4695871c482a4308acab4214dbb481..dddeef34d528206f4c9a573772109f39797658f9 100644 --- a/pythonbindings/src/gpu/submodules/grid_scaling_factory.cpp +++ b/pythonbindings/src/gpu/submodules/grid_scaling_factory.cpp @@ -31,7 +31,7 @@ //! \author Henry Korb //======================================================================================= #include <pybind11/pybind11.h> -#include <gpu/VirtualFluids_GPU/Factories/GridScalingFactory.h> +#include <gpu/core/Factories/GridScalingFactory.h> namespace grid_scaling_factory { diff --git a/pythonbindings/src/gpu/submodules/parameter.cpp b/pythonbindings/src/gpu/submodules/parameter.cpp index 53c270f16327aee73b55e746d1d0bb94993203a2..6b9d57a715eb309295f6537daaccf56ff5397384 100644 --- a/pythonbindings/src/gpu/submodules/parameter.cpp +++ b/pythonbindings/src/gpu/submodules/parameter.cpp @@ -33,10 +33,10 @@ #include <pybind11/pybind11.h> #include <pybind11/functional.h> #include <pybind11/stl.h> -#include <gpu/VirtualFluids_GPU/Parameter/Parameter.h> +#include <gpu/core/Parameter/Parameter.h> #include "basics/constants/NumericConstants.h" #include <basics/config/ConfigurationFile.h> -#include <gpu/VirtualFluids_GPU/PreCollisionInteractor/PreCollisionInteractor.h> +#include <gpu/core/PreCollisionInteractor/PreCollisionInteractor.h> using namespace vf::basics::constant; diff --git a/pythonbindings/src/gpu/submodules/pre_collision_interactor.cpp b/pythonbindings/src/gpu/submodules/pre_collision_interactor.cpp index 308f6c37aada14c8c25c69245f603274ae2f18d8..b75aa2f00f4da154b5ef53c9e1d1aa1562e7476c 100644 --- a/pythonbindings/src/gpu/submodules/pre_collision_interactor.cpp +++ b/pythonbindings/src/gpu/submodules/pre_collision_interactor.cpp @@ -32,7 +32,7 @@ //! \author Henry Korb //======================================================================================= #include <pybind11/pybind11.h> -#include <gpu/VirtualFluids_GPU/PreCollisionInteractor/PreCollisionInteractor.h> +#include <gpu/core/PreCollisionInteractor/PreCollisionInteractor.h> namespace pre_collision_interactor { diff --git a/pythonbindings/src/gpu/submodules/precursor_writer.cpp b/pythonbindings/src/gpu/submodules/precursor_writer.cpp index 64164ef9993d7b4f22bff2390b418718f7c3208f..94499aff963a55f04d23c179393ff207bc13e9db 100644 --- a/pythonbindings/src/gpu/submodules/precursor_writer.cpp +++ b/pythonbindings/src/gpu/submodules/precursor_writer.cpp @@ -33,8 +33,8 @@ #include <pybind11/pybind11.h> #include <pybind11/stl.h> #include <pybind11/numpy.h> -#include <gpu/VirtualFluids_GPU/PreCollisionInteractor/PreCollisionInteractor.h> -#include <gpu/VirtualFluids_GPU/PreCollisionInteractor/PrecursorWriter.h> +#include <gpu/core/PreCollisionInteractor/PreCollisionInteractor.h> +#include <gpu/core/PreCollisionInteractor/PrecursorWriter.h> namespace precursor_writer { diff --git a/pythonbindings/src/gpu/submodules/probes.cpp b/pythonbindings/src/gpu/submodules/probes.cpp index 9c3fc8ab15234013a093dbe00f6654ea3257d4b0..5a679bb4d32b3b24fb4fe8ccd327d185e2b3a6df 100644 --- a/pythonbindings/src/gpu/submodules/probes.cpp +++ b/pythonbindings/src/gpu/submodules/probes.cpp @@ -32,12 +32,12 @@ //======================================================================================= #include <pybind11/pybind11.h> #include <pybind11/stl.h> -#include <gpu/VirtualFluids_GPU/PreCollisionInteractor/Probes/Probe.h> -#include <gpu/VirtualFluids_GPU/PreCollisionInteractor/Probes/PointProbe.h> -#include <gpu/VirtualFluids_GPU/PreCollisionInteractor/Probes/PlaneProbe.h> -#include <gpu/VirtualFluids_GPU/PreCollisionInteractor/Probes/WallModelProbe.h> -#include <gpu/VirtualFluids_GPU/PreCollisionInteractor/Probes/PlanarAverageProbe.h> -#include <gpu/VirtualFluids_GPU/PreCollisionInteractor/PreCollisionInteractor.h> +#include <gpu/core/PreCollisionInteractor/Probes/Probe.h> +#include <gpu/core/PreCollisionInteractor/Probes/PointProbe.h> +#include <gpu/core/PreCollisionInteractor/Probes/PlaneProbe.h> +#include <gpu/core/PreCollisionInteractor/Probes/WallModelProbe.h> +#include <gpu/core/PreCollisionInteractor/Probes/PlanarAverageProbe.h> +#include <gpu/core/PreCollisionInteractor/PreCollisionInteractor.h> namespace probes { diff --git a/pythonbindings/src/gpu/submodules/simulation.cpp b/pythonbindings/src/gpu/submodules/simulation.cpp index 545fe082fe59cacabde07052ccf1b041d0af7e25..2e45e58915461f3137011a9086eaacf9c6ec87d7 100644 --- a/pythonbindings/src/gpu/submodules/simulation.cpp +++ b/pythonbindings/src/gpu/submodules/simulation.cpp @@ -31,17 +31,17 @@ //! \author Henry Korb //======================================================================================= #include <pybind11/pybind11.h> -#include <gpu/VirtualFluids_GPU/LBM/Simulation.h> -#include <gpu/VirtualFluids_GPU/Kernel/Utilities/KernelFactory/KernelFactory.h> -#include <gpu/VirtualFluids_GPU/PreProcessor/PreProcessorFactory/PreProcessorFactory.h> -#include <gpu/VirtualFluids_GPU/DataStructureInitializer/GridProvider.h> -#include <gpu/VirtualFluids_GPU/Parameter/Parameter.h> -#include <gpu/VirtualFluids_GPU/GPU/CudaMemoryManager.h> -#include <gpu/VirtualFluids_GPU/DataStructureInitializer/GridProvider.h> -#include <gpu/VirtualFluids_GPU/Output/DataWriter.h> -#include "gpu/VirtualFluids_GPU/Factories/BoundaryConditionFactory.h" -#include "gpu/VirtualFluids_GPU/TurbulenceModels/TurbulenceModelFactory.h" -#include "gpu/VirtualFluids_GPU/Factories/GridScalingFactory.h" +#include <gpu/core/LBM/Simulation.h> +#include <gpu/core/Kernel/KernelFactory/KernelFactory.h> +#include <gpu/core/PreProcessor/PreProcessorFactory/PreProcessorFactory.h> +#include <gpu/core/DataStructureInitializer/GridProvider.h> +#include <gpu/core/Parameter/Parameter.h> +#include <gpu/core/GPU/CudaMemoryManager.h> +#include <gpu/core/DataStructureInitializer/GridProvider.h> +#include <gpu/core/Output/DataWriter.h> +#include "gpu/core/Factories/BoundaryConditionFactory.h" +#include "gpu/core/TurbulenceModels/TurbulenceModelFactory.h" +#include "gpu/core/Factories/GridScalingFactory.h" #include "parallel/Communicator.h" namespace simulation diff --git a/pythonbindings/src/gpu/submodules/turbulence_models.cpp b/pythonbindings/src/gpu/submodules/turbulence_models.cpp index 79b8ac00d66e2c32abf2e2b708404f7c265de013..025d544b66ae085fa1cbcbdc5e0ffad9fb3a168b 100644 --- a/pythonbindings/src/gpu/submodules/turbulence_models.cpp +++ b/pythonbindings/src/gpu/submodules/turbulence_models.cpp @@ -31,8 +31,8 @@ //! \author Henry Korb //======================================================================================= #include "pybind11/pybind11.h" -#include "gpu/VirtualFluids_GPU/TurbulenceModels/TurbulenceModelFactory.h" -#include "gpu/VirtualFluids_GPU/LBM/LB.h" +#include "gpu/core/TurbulenceModels/TurbulenceModelFactory.h" +#include "gpu/core/LBM/LB.h" namespace turbulence_model { diff --git a/src/basics/CMakeLists.txt b/src/basics/CMakeLists.txt index 7e4cccf26f0c54a47d720f8d33fad435800838b7..8ef4841bf640f156f8f2573f286e7613ea3c0941 100644 --- a/src/basics/CMakeLists.txt +++ b/src/basics/CMakeLists.txt @@ -13,6 +13,7 @@ target_include_directories(${library_name} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/pa target_include_directories(${library_name} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/transmitter) target_include_directories(${library_name} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/utilities) target_include_directories(${library_name} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/writer) +target_include_directories(${library_name} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) diff --git a/src/basics/constants/NumericConstants.h b/src/basics/constants/NumericConstants.h index 305805de4f1532de51bae15b92cfda80a5b2f4ab..5e1a32c8fb696ee0c9fcebc0a4ba84a1b39fd971 100644 --- a/src/basics/constants/NumericConstants.h +++ b/src/basics/constants/NumericConstants.h @@ -114,10 +114,10 @@ static constexpr double c264o1 = 264.; static constexpr double c290o1 = 290.; static constexpr double c367o1 = 367.; -static constexpr double Op0000002 = 0.0000002; +static constexpr double c0p0000002 = 0.0000002; static constexpr double c10eM30 = 1e-30; static constexpr double c10eM10 = 1e-10; -static constexpr double smallSingle = 0.0000000002; +static constexpr double cSmallSingle = 0.0000000002; #ifndef __CUDACC__ static const double cPi = 4.0 * std::atan(1.0); // 3.1415926535 @@ -131,10 +131,10 @@ static constexpr double cPio180 = 1.74532925199e-2; static constexpr double c180oPi = 57.2957795131; #endif -static const double one_over_sqrt2 = 1.0 / sqrt(2.0); // 0.707106781 -static const double one_over_sqrt3 = 1.0 / sqrt(3.0); // 0.577350269 -static const double sqrt2 = sqrt(2.0); // 1.4142135 -static const double sqrt3 = sqrt(3.0); // 1.7320508 +static const double c1oSqrt2 = 1.0 / sqrt(2.0); // 0.707106781 +static const double c1oSqrt3 = 1.0 / sqrt(3.0); // 0.577350269 +static const double cSqrt2 = sqrt(2.0); // 1.4142135 +static const double cSqrt3 = sqrt(3.0); // 1.7320508 #else static constexpr float c1o2 = 1.0f / 2.0f; @@ -242,10 +242,10 @@ static constexpr float c264o1 = 264.0f; static constexpr float c290o1 = 290.0f; static constexpr float c367o1 = 367.0f; -static constexpr float Op0000002 = 0.0000002f; +static constexpr float c0p0000002 = 0.0000002f; static constexpr float c10eM30 = 1e-30f; static constexpr float c10eM10 = 1e-10f; -static constexpr float smallSingle = 0.0000000002f; +static constexpr float cSmallSingle = 0.0000000002f; #ifndef __CUDACC__ static const float cPi = 4.0f * std::atan(1.0f); // 3.1415926535 @@ -259,10 +259,10 @@ static constexpr float cPio180 = 1.74532925199e-2f; static constexpr float c180oPi = 57.2957795131f; #endif -static const float one_over_sqrt2 = 1.0 / sqrtf(2.0); // 0.707106781 -static const float one_over_sqrt3 = 1.0 / sqrtf(3.0); // 0.577350269 -static const float sqrt2 = sqrtf(2.0); // 1.4142135 -static const float sqrt3 = sqrtf(3.0); // 1.7320508 +static const float c1oSqrt2 = 1.0 / sqrtf(2.0); // 0.707106781 +static const float c1oSqrt3 = 1.0 / sqrtf(3.0); // 0.577350269 +static const float cSqrt2 = sqrtf(2.0); // 1.4142135 +static const float cSqrt3 = sqrtf(3.0); // 1.7320508 #endif diff --git a/src/basics/geometry3d/GbTriFaceMesh3D.h b/src/basics/geometry3d/GbTriFaceMesh3D.h index 33ddbe2fdd82fb1cfd8fe96fd8b98843a6e82879..dadbd86276b87a4eac61067a832dd9da25e4fa07 100644 --- a/src/basics/geometry3d/GbTriFaceMesh3D.h +++ b/src/basics/geometry3d/GbTriFaceMesh3D.h @@ -46,6 +46,8 @@ #include <PointerDefinitions.h> +#include "basics/constants/NumericConstants.h" + #include <basics_export.h> namespace Kd @@ -201,15 +203,15 @@ public: float getX1Centroid(std::vector<Vertex> &nodes) { - return (float)UbMath::c1o3 * (getV1x(nodes) + getV2x(nodes) + getV3x(nodes)); + return (float)vf::basics::constant::c1o3 * (getV1x(nodes) + getV2x(nodes) + getV3x(nodes)); } float getX2Centroid(std::vector<Vertex> &nodes) { - return (float)UbMath::c1o3 * (getV1y(nodes) + getV2y(nodes) + getV3y(nodes)); + return (float)vf::basics::constant::c1o3 * (getV1y(nodes) + getV2y(nodes) + getV3y(nodes)); } float getX3Centroid(std::vector<Vertex> &nodes) { - return (float)UbMath::c1o3 * (getV1z(nodes) + getV2z(nodes) + getV3z(nodes)); + return (float)vf::basics::constant::c1o3 * (getV1z(nodes) + getV2z(nodes) + getV3z(nodes)); } double calculateDistanceToPoint3D(const double &x1, const double &x2, const double &x3, diff --git a/src/basics/geometry3d/GbVoxelMatrix3D.cpp b/src/basics/geometry3d/GbVoxelMatrix3D.cpp index 5040b54c8dacbd17317a35c451d82f1ad20b0edf..130eaf655c3fb42544d71508a16b6b9212039df7 100644 --- a/src/basics/geometry3d/GbVoxelMatrix3D.cpp +++ b/src/basics/geometry3d/GbVoxelMatrix3D.cpp @@ -174,11 +174,11 @@ double GbVoxelMatrix3D::getIntersectionRaytraceFactor(const double &x1, const do const double &rx1, const double &rx2, const double &rx3) { if (!((UbMath::equal(rx1, 0.0) || UbMath::equal(fabs(rx1), 1.0) || - UbMath::equal(fabs(rx1), vf::basics::constant::one_over_sqrt2) || UbMath::equal(fabs(rx1), vf::basics::constant::one_over_sqrt3)) && + UbMath::equal(fabs(rx1), vf::basics::constant::c1oSqrt2) || UbMath::equal(fabs(rx1), vf::basics::constant::c1oSqrt3)) && (UbMath::equal(rx2, 0.0) || UbMath::equal(fabs(rx2), 1.0) || - UbMath::equal(fabs(rx2), vf::basics::constant::one_over_sqrt2) || UbMath::equal(fabs(rx2), vf::basics::constant::one_over_sqrt3)) && + UbMath::equal(fabs(rx2), vf::basics::constant::c1oSqrt2) || UbMath::equal(fabs(rx2), vf::basics::constant::c1oSqrt3)) && (UbMath::equal(rx3, 0.0) || UbMath::equal(fabs(rx3), 1.0) || - UbMath::equal(fabs(rx3), vf::basics::constant::one_over_sqrt2) || UbMath::equal(fabs(rx3), vf::basics::constant::one_over_sqrt3)))) { + UbMath::equal(fabs(rx3), vf::basics::constant::c1oSqrt2) || UbMath::equal(fabs(rx3), vf::basics::constant::c1oSqrt3)))) { throw UbException(UB_EXARGS, "nur fuer diskrete Boltzmannrichungen implementiert!!!"); } diff --git a/src/basics/utilities/UbMath.h b/src/basics/utilities/UbMath.h index 5ba42eb6b0c00941c72ea8370ab3fe0cef71ba98..d9deaeab61412835829fe66d98d20cc9d42fca35 100644 --- a/src/basics/utilities/UbMath.h +++ b/src/basics/utilities/UbMath.h @@ -408,99 +408,6 @@ inline const T &min(const T &a1, const T &a2, const T &a3, const T &a4) // return tmp; } -////////////////////////////////////////////////////////////////////////// -// -// constants -// -////////////////////////////////////////////////////////////////////////// -//static const double c8o27 = 8. / 27.; -//static const double c2o27 = 2. / 27.; -//static const double c1o54 = 1. / 54.; -//static const double c1o216 = 1. / 216.; -//static const double c9o2 = 9. / 2.; // 4.5 -//static const double c9o4 = 9. / 4.; // 2.25 -//static const double c3o9 = 3. / 9.; -//static const double c3o54 = 3. / 54.; -//static const double c3o216 = 3. / 216.; -// -//static const double c1o27 = 1. / 27.; -// -//static const double c1o72 = 1. / 72.; // 0.01388888 -//static const double c1o36 = 1. / 36.; // 0.02777777 -//static const double c1o48 = 1. / 48.; // 0.02083333 -//static const double c1o32 = 1. / 32.; // 0.03125 -//static const double c1o24 = 1. / 24.; // 0.04166666 -//static const double c1o20 = 1. / 20.; // 0.05 -//static const double c1o18 = 1. / 18.; // 0.05555555 -//static const double c1o16 = 1. / 16.; // 0.0625 -//static const double c1o12 = 1. / 12.; // 0.08333333 -//static const double c1o9 = 1. / 9.; // 0.11111111 -//static const double c1o8 = 1. / 8.; // 0.125 -//static const double c1o6 = 1. / 6.; // 0.16666666 -//static const double c1o5 = 1. / 5.; // 0.2 -//static const double c1o4 = 1. / 4.; // 0.25 -//static const double c1o100 = 1. / 100.; -//static const double c5o16 = 5. / 16.; // 0.3125 -static const double c1o3 = 1. / 3.; // 0.33333333 -//static const double c3o8 = 3. / 8.; // 0.375 -//static const double c4o9 = 4. / 9.; // 0.44444444 -//static const double c1o2 = 1. / 2.; // 0.5 -//static const double c9o16 = 9. / 16.; // 0.5625 -//static const double c2o3 = 2. / 3.; // 0.66666666 -//static const double c3o4 = 3. / 4.; // 0.75 -//static const double c3o2 = 3. / 2.; // 1.5 -//static const double c4o3 = 4. / 3.; // 1.33333333 -//static const double c5o3 = 5. / 3.; // 1.66666666 -//static const double c9o5 = 9. / 5.; // 1.8 -//static const double c2o9 = 2. / 9.; // 0.22222222 -//static const double one_over_sqrt2 = 1.0 / sqrt(2.0); // 0.707106781 -//static const double one_over_sqrt3 = 1.0 / sqrt(3.0); // 0.577350269 -//static const double sqrt2 = sqrt(2.0); // 1.4142135 -//static const double sqrt3 = sqrt(3.0); // 1.7320508 -//static const double zeroReal = 0.0; -//static const double c1 = 1.0; -//static const double c2 = 2.0; -//static const double c3 = 3.0; -//static const double c4 = 4.0; -//static const double c5 = 5.0; -//static const double c6 = 6.0; -//static const double c7 = 7.0; -//static const double c8 = 8.0; -//static const double c9 = 9.0; -//static const double c14 = 14.0; -//static const double c15 = 15.0; -//static const double c16 = 16.0; -//static const double c18 = 18.0; -//static const double c21 = 21.0; -//static const double c24 = 24.0; -//static const double c28 = 28.0; -//static const double c29 = 29.0; -//static const double c36 = 36.0; -//static const double c48 = 48.0; -//static const double c50 = 50.0; -//static const double c56 = 56.0; -//static const double c152 = 152.0; -//static const double c130 = 130.0; -//static const double one = 1.0; -//static const double two = 2.0; -//static const double three = 3.0; -//static const double four = 4.0; -//static const double five = 5.0; -//static const double six = 6.0; -//static const double seven = 7.0; -//static const double eight = 8.0; -//static const double nine = 9.0; -//static const double fourteen = 14.0; -//static const double fiveteen = 15.0; -//static const double sixteen = 16.0; -//static const double twentyone = 21.0; -//static const double twentyfour = 24.0; -//static const double twentyeight = 28.0; -//static const double twentynine = 29.0; -//static const double fourtyeight = 48.0; -//static const double fifty = 50.0; -//static const double fiftysix = 56.0; - } // namespace UbMath #endif diff --git a/src/cpu/LiggghtsCoupling/CMakeLists.txt b/src/cpu/LiggghtsCoupling/CMakeLists.txt index ed9d1f0e2bd8d0302f1d37aa3bde8a120ceb2312..3aa679efdd83810ec0e55f651589e7b531d3971b 100644 --- a/src/cpu/LiggghtsCoupling/CMakeLists.txt +++ b/src/cpu/LiggghtsCoupling/CMakeLists.txt @@ -1,7 +1,7 @@ set(LIGGGHTS_LIBRARIES optimized ${LIGGGHTS_RELEASE_LIBRARY} debug ${LIGGGHTS_DEBUG_LIBRARY}) -vf_add_library(BUILDTYPE static PUBLIC_LINK basics muparser MPI::MPI_CXX VirtualFluidsCore ${LIGGGHTS_LIBRARIES}) +vf_add_library(BUILDTYPE static PUBLIC_LINK basics muparser MPI::MPI_CXX cpu_core ${LIGGGHTS_LIBRARIES}) vf_get_library_name(library_name) diff --git a/src/cpu/LiggghtsCoupling/LBM/IBcumulantK17LBMKernel.cpp b/src/cpu/LiggghtsCoupling/LBM/IBcumulantK17LBMKernel.cpp index efe93f4c951684e41e6dd1c4d2b81c57c711727f..7c85c77b87f6d0079e5cd82520b932e76433d012 100644 --- a/src/cpu/LiggghtsCoupling/LBM/IBcumulantK17LBMKernel.cpp +++ b/src/cpu/LiggghtsCoupling/LBM/IBcumulantK17LBMKernel.cpp @@ -226,66 +226,66 @@ void IBcumulantK17LBMKernel::calculate(int step) LBMReal fEqSolid[D3Q27System::ENDF + 1]; LBMReal fPre[D3Q27System::ENDF + 1]; - f[vf::lbm::dir::DIR_000] = mfbbb; - - f[vf::lbm::dir::DIR_P00] = mfcbb; - f[vf::lbm::dir::DIR_0P0] = mfbcb; - f[vf::lbm::dir::DIR_00P] = mfbbc; - f[vf::lbm::dir::DIR_PP0] = mfccb; - f[vf::lbm::dir::DIR_MP0] = mfacb; - f[vf::lbm::dir::DIR_P0P] = mfcbc; - f[vf::lbm::dir::DIR_M0P] = mfabc; - f[vf::lbm::dir::DIR_0PP] = mfbcc; - f[vf::lbm::dir::DIR_0MP] = mfbac; - f[vf::lbm::dir::DIR_PPP] = mfccc; - f[vf::lbm::dir::DIR_MPP] = mfacc; - f[vf::lbm::dir::DIR_PMP] = mfcac; - f[vf::lbm::dir::DIR_MMP] = mfaac; - - f[vf::lbm::dir::DIR_M00] = mfabb; - f[vf::lbm::dir::DIR_0M0] = mfbab; - f[vf::lbm::dir::DIR_00M] = mfbba; - f[vf::lbm::dir::DIR_MM0] = mfaab; - f[vf::lbm::dir::DIR_PM0] = mfcab; - f[vf::lbm::dir::DIR_M0M] = mfaba; - f[vf::lbm::dir::DIR_P0M] = mfcba; - f[vf::lbm::dir::DIR_0MM] = mfbaa; - f[vf::lbm::dir::DIR_0PM] = mfbca; - f[vf::lbm::dir::DIR_MMM] = mfaaa; - f[vf::lbm::dir::DIR_PMM] = mfcaa; - f[vf::lbm::dir::DIR_MPM] = mfaca; - f[vf::lbm::dir::DIR_PPM] = mfcca; + f[vf::lbm::dir::d000] = mfbbb; + + f[vf::lbm::dir::dP00] = mfcbb; + f[vf::lbm::dir::d0P0] = mfbcb; + f[vf::lbm::dir::d00P] = mfbbc; + f[vf::lbm::dir::dPP0] = mfccb; + f[vf::lbm::dir::dMP0] = mfacb; + f[vf::lbm::dir::dP0P] = mfcbc; + f[vf::lbm::dir::dM0P] = mfabc; + f[vf::lbm::dir::d0PP] = mfbcc; + f[vf::lbm::dir::d0MP] = mfbac; + f[vf::lbm::dir::dPPP] = mfccc; + f[vf::lbm::dir::dMPP] = mfacc; + f[vf::lbm::dir::dPMP] = mfcac; + f[vf::lbm::dir::dMMP] = mfaac; + + f[vf::lbm::dir::dM00] = mfabb; + f[vf::lbm::dir::d0M0] = mfbab; + f[vf::lbm::dir::d00M] = mfbba; + f[vf::lbm::dir::dMM0] = mfaab; + f[vf::lbm::dir::dPM0] = mfcab; + f[vf::lbm::dir::dM0M] = mfaba; + f[vf::lbm::dir::dP0M] = mfcba; + f[vf::lbm::dir::d0MM] = mfbaa; + f[vf::lbm::dir::d0PM] = mfbca; + f[vf::lbm::dir::dMMM] = mfaaa; + f[vf::lbm::dir::dPMM] = mfcaa; + f[vf::lbm::dir::dMPM] = mfaca; + f[vf::lbm::dir::dPPM] = mfcca; if ((*particleData)(x1, x2, x3)->solidFraction > SOLFRAC_MIN) { - fPre[vf::lbm::dir::DIR_000] = mfbbb; - - fPre[vf::lbm::dir::DIR_P00] = mfcbb; - fPre[vf::lbm::dir::DIR_0P0] = mfbcb; - fPre[vf::lbm::dir::DIR_00P] = mfbbc; - fPre[vf::lbm::dir::DIR_PP0] = mfccb; - fPre[vf::lbm::dir::DIR_MP0] = mfacb; - fPre[vf::lbm::dir::DIR_P0P] = mfcbc; - fPre[vf::lbm::dir::DIR_M0P] = mfabc; - fPre[vf::lbm::dir::DIR_0PP] = mfbcc; - fPre[vf::lbm::dir::DIR_0MP] = mfbac; - fPre[vf::lbm::dir::DIR_PPP] = mfccc; - fPre[vf::lbm::dir::DIR_MPP] = mfacc; - fPre[vf::lbm::dir::DIR_PMP] = mfcac; - fPre[vf::lbm::dir::DIR_MMP] = mfaac; + fPre[vf::lbm::dir::d000] = mfbbb; + + fPre[vf::lbm::dir::dP00] = mfcbb; + fPre[vf::lbm::dir::d0P0] = mfbcb; + fPre[vf::lbm::dir::d00P] = mfbbc; + fPre[vf::lbm::dir::dPP0] = mfccb; + fPre[vf::lbm::dir::dMP0] = mfacb; + fPre[vf::lbm::dir::dP0P] = mfcbc; + fPre[vf::lbm::dir::dM0P] = mfabc; + fPre[vf::lbm::dir::d0PP] = mfbcc; + fPre[vf::lbm::dir::d0MP] = mfbac; + fPre[vf::lbm::dir::dPPP] = mfccc; + fPre[vf::lbm::dir::dMPP] = mfacc; + fPre[vf::lbm::dir::dPMP] = mfcac; + fPre[vf::lbm::dir::dMMP] = mfaac; - fPre[vf::lbm::dir::DIR_M00] = mfabb; - fPre[vf::lbm::dir::DIR_0M0] = mfbab; - fPre[vf::lbm::dir::DIR_00M] = mfbba; - fPre[vf::lbm::dir::DIR_MM0] = mfaab; - fPre[vf::lbm::dir::DIR_PM0] = mfcab; - fPre[vf::lbm::dir::DIR_M0M] = mfaba; - fPre[vf::lbm::dir::DIR_P0M] = mfcba; - fPre[vf::lbm::dir::DIR_0MM] = mfbaa; - fPre[vf::lbm::dir::DIR_0PM] = mfbca; - fPre[vf::lbm::dir::DIR_MMM] = mfaaa; - fPre[vf::lbm::dir::DIR_PMM] = mfcaa; - fPre[vf::lbm::dir::DIR_MPM] = mfaca; - fPre[vf::lbm::dir::DIR_PPM] = mfcca; + fPre[vf::lbm::dir::dM00] = mfabb; + fPre[vf::lbm::dir::d0M0] = mfbab; + fPre[vf::lbm::dir::d00M] = mfbba; + fPre[vf::lbm::dir::dMM0] = mfaab; + fPre[vf::lbm::dir::dPM0] = mfcab; + fPre[vf::lbm::dir::dM0M] = mfaba; + fPre[vf::lbm::dir::dP0M] = mfcba; + fPre[vf::lbm::dir::d0MM] = mfbaa; + fPre[vf::lbm::dir::d0PM] = mfbca; + fPre[vf::lbm::dir::dMMM] = mfaaa; + fPre[vf::lbm::dir::dPMM] = mfcaa; + fPre[vf::lbm::dir::dMPM] = mfaca; + fPre[vf::lbm::dir::dPPM] = mfcca; } (*particleData)(x1, x2, x3)->hydrodynamicForce.fill(0.0); @@ -783,35 +783,35 @@ void IBcumulantK17LBMKernel::calculate(int step) (*this->restDistributionsF)(x1, x2, x3) = mfbbb; ////////////////////////////////////////////////////////////////////////// - f[vf::lbm::dir::DIR_000] = mfbbb; + f[vf::lbm::dir::d000] = mfbbb; - f[vf::lbm::dir::DIR_P00] = mfcbb; - f[vf::lbm::dir::DIR_0P0] = mfbcb; - f[vf::lbm::dir::DIR_00P] = mfbbc; - f[vf::lbm::dir::DIR_PP0] = mfccb; - f[vf::lbm::dir::DIR_MP0] = mfacb; - f[vf::lbm::dir::DIR_P0P] = mfcbc; - f[vf::lbm::dir::DIR_M0P] = mfabc; - f[vf::lbm::dir::DIR_0PP] = mfbcc; - f[vf::lbm::dir::DIR_0MP] = mfbac; - f[vf::lbm::dir::DIR_PPP] = mfccc; - f[vf::lbm::dir::DIR_MPP] = mfacc; - f[vf::lbm::dir::DIR_PMP] = mfcac; - f[vf::lbm::dir::DIR_MMP] = mfaac; + f[vf::lbm::dir::dP00] = mfcbb; + f[vf::lbm::dir::d0P0] = mfbcb; + f[vf::lbm::dir::d00P] = mfbbc; + f[vf::lbm::dir::dPP0] = mfccb; + f[vf::lbm::dir::dMP0] = mfacb; + f[vf::lbm::dir::dP0P] = mfcbc; + f[vf::lbm::dir::dM0P] = mfabc; + f[vf::lbm::dir::d0PP] = mfbcc; + f[vf::lbm::dir::d0MP] = mfbac; + f[vf::lbm::dir::dPPP] = mfccc; + f[vf::lbm::dir::dMPP] = mfacc; + f[vf::lbm::dir::dPMP] = mfcac; + f[vf::lbm::dir::dMMP] = mfaac; - f[vf::lbm::dir::DIR_M00] = mfabb; - f[vf::lbm::dir::DIR_0M0] = mfbab; - f[vf::lbm::dir::DIR_00M] = mfbba; - f[vf::lbm::dir::DIR_MM0] = mfaab; - f[vf::lbm::dir::DIR_PM0] = mfcab; - f[vf::lbm::dir::DIR_M0M] = mfaba; - f[vf::lbm::dir::DIR_P0M] = mfcba; - f[vf::lbm::dir::DIR_0MM] = mfbaa; - f[vf::lbm::dir::DIR_0PM] = mfbca; - f[vf::lbm::dir::DIR_MMM] = mfaaa; - f[vf::lbm::dir::DIR_PMM] = mfcaa; - f[vf::lbm::dir::DIR_MPM] = mfaca; - f[vf::lbm::dir::DIR_PPM] = mfcca; + f[vf::lbm::dir::dM00] = mfabb; + f[vf::lbm::dir::d0M0] = mfbab; + f[vf::lbm::dir::d00M] = mfbba; + f[vf::lbm::dir::dMM0] = mfaab; + f[vf::lbm::dir::dPM0] = mfcab; + f[vf::lbm::dir::dM0M] = mfaba; + f[vf::lbm::dir::dP0M] = mfcba; + f[vf::lbm::dir::d0MM] = mfbaa; + f[vf::lbm::dir::d0PM] = mfbca; + f[vf::lbm::dir::dMMM] = mfaaa; + f[vf::lbm::dir::dPMM] = mfcaa; + f[vf::lbm::dir::dMPM] = mfaca; + f[vf::lbm::dir::dPPM] = mfcca; } if ((*particleData)(x1, x2, x3)->solidFraction >= SOLFRAC_MIN) { // if ((*particleData)(x1, x2, x3)->solidFraction < SOLFRAC_MIN) @@ -829,8 +829,8 @@ void IBcumulantK17LBMKernel::calculate(int step) D3Q27System::calcCompFeq(fEqSolid, drho, uPart[0], uPart[1], uPart[2]); if ((*particleData)(x1, x2, x3)->solidFraction > SOLFRAC_MAX) { - double const bb0 = fEq[vf::lbm::dir::DIR_000] - fEqSolid[vf::lbm::dir::DIR_000]; - f[vf::lbm::dir::DIR_000] = fPre[vf::lbm::dir::DIR_000] + bb0; + double const bb0 = fEq[vf::lbm::dir::d000] - fEqSolid[vf::lbm::dir::d000]; + f[vf::lbm::dir::d000] = fPre[vf::lbm::dir::d000] + bb0; for (int iPop = D3Q27System::FSTARTDIR; iPop <= D3Q27System::FENDDIR; iPop++) { const int iOpp = D3Q27System::INVDIR[iPop]; double const bb = ((fPre[iOpp] - fEq[iOpp]) - (fPre[iPop] - fEqSolid[iPop])); @@ -853,8 +853,8 @@ void IBcumulantK17LBMKernel::calculate(int step) //#endif double const oneMinB = 1. - B; - double const bb0 = fEq[vf::lbm::dir::DIR_000] - fEqSolid[vf::lbm::dir::DIR_000]; - f[vf::lbm::dir::DIR_000] = fPre[vf::lbm::dir::DIR_000] + oneMinB * (f[vf::lbm::dir::DIR_000] - fPre[vf::lbm::dir::DIR_000]) + B * bb0; + double const bb0 = fEq[vf::lbm::dir::d000] - fEqSolid[vf::lbm::dir::d000]; + f[vf::lbm::dir::d000] = fPre[vf::lbm::dir::d000] + oneMinB * (f[vf::lbm::dir::d000] - fPre[vf::lbm::dir::d000]) + B * bb0; for (int iPop = D3Q27System::FSTARTDIR; iPop <= D3Q27System::FENDDIR; iPop++) { int const iOpp = D3Q27System::INVDIR[iPop]; @@ -870,35 +870,35 @@ void IBcumulantK17LBMKernel::calculate(int step) } } /* if solidFraction > SOLFRAC_MAX */ - (*this->restDistributionsF)(x1, x2, x3) = f[vf::lbm::dir::DIR_000]; - - (*this->localDistributionsF)(D3Q27System::ET_E, x1, x2, x3) = f[vf::lbm::dir::DIR_M00]; - (*this->localDistributionsF)(D3Q27System::ET_N, x1, x2, x3) = f[vf::lbm::dir::DIR_0M0]; - (*this->localDistributionsF)(D3Q27System::ET_T, x1, x2, x3) = f[vf::lbm::dir::DIR_00M]; - (*this->localDistributionsF)(D3Q27System::ET_NE, x1, x2, x3) = f[vf::lbm::dir::DIR_MM0]; - (*this->localDistributionsF)(D3Q27System::ET_NW, x1p, x2, x3) = f[vf::lbm::dir::DIR_PM0]; - (*this->localDistributionsF)(D3Q27System::ET_TE, x1, x2, x3) = f[vf::lbm::dir::DIR_M0M]; - (*this->localDistributionsF)(D3Q27System::ET_TW, x1p, x2, x3) = f[vf::lbm::dir::DIR_P0M]; - (*this->localDistributionsF)(D3Q27System::ET_TN, x1, x2, x3) = f[vf::lbm::dir::DIR_0MM]; - (*this->localDistributionsF)(D3Q27System::ET_TS, x1, x2p, x3) = f[vf::lbm::dir::DIR_0PM]; - (*this->localDistributionsF)(D3Q27System::ET_TNE, x1, x2, x3) = f[vf::lbm::dir::DIR_MMM]; - (*this->localDistributionsF)(D3Q27System::ET_TNW, x1p, x2, x3) = f[vf::lbm::dir::DIR_PMM]; - (*this->localDistributionsF)(D3Q27System::ET_TSE, x1, x2p, x3) = f[vf::lbm::dir::DIR_MPM]; - (*this->localDistributionsF)(D3Q27System::ET_TSW, x1p, x2p, x3) = f[vf::lbm::dir::DIR_PPM]; - - (*this->nonLocalDistributionsF)(D3Q27System::ET_W, x1p, x2, x3) = f[vf::lbm::dir::DIR_P00]; - (*this->nonLocalDistributionsF)(D3Q27System::ET_S, x1, x2p, x3) = f[vf::lbm::dir::DIR_0P0]; - (*this->nonLocalDistributionsF)(D3Q27System::ET_B, x1, x2, x3p) = f[vf::lbm::dir::DIR_00P]; - (*this->nonLocalDistributionsF)(D3Q27System::ET_SW, x1p, x2p, x3) = f[vf::lbm::dir::DIR_PP0]; - (*this->nonLocalDistributionsF)(D3Q27System::ET_SE, x1, x2p, x3) = f[vf::lbm::dir::DIR_MP0]; - (*this->nonLocalDistributionsF)(D3Q27System::ET_BW, x1p, x2, x3p) = f[vf::lbm::dir::DIR_P0P]; - (*this->nonLocalDistributionsF)(D3Q27System::ET_BE, x1, x2, x3p) = f[vf::lbm::dir::DIR_M0P]; - (*this->nonLocalDistributionsF)(D3Q27System::ET_BS, x1, x2p, x3p) = f[vf::lbm::dir::DIR_0PP]; - (*this->nonLocalDistributionsF)(D3Q27System::ET_BN, x1, x2, x3p) = f[vf::lbm::dir::DIR_0MP]; - (*this->nonLocalDistributionsF)(D3Q27System::ET_BSW, x1p, x2p, x3p) = f[vf::lbm::dir::DIR_PPP]; - (*this->nonLocalDistributionsF)(D3Q27System::ET_BSE, x1, x2p, x3p) = f[vf::lbm::dir::DIR_MPP]; - (*this->nonLocalDistributionsF)(D3Q27System::ET_BNW, x1p, x2, x3p) = f[vf::lbm::dir::DIR_PMP]; - (*this->nonLocalDistributionsF)(D3Q27System::ET_BNE, x1, x2, x3p) = f[vf::lbm::dir::DIR_MMP]; + (*this->restDistributionsF)(x1, x2, x3) = f[vf::lbm::dir::d000]; + + (*this->localDistributionsF)(D3Q27System::ET_E, x1, x2, x3) = f[vf::lbm::dir::dM00]; + (*this->localDistributionsF)(D3Q27System::ET_N, x1, x2, x3) = f[vf::lbm::dir::d0M0]; + (*this->localDistributionsF)(D3Q27System::ET_T, x1, x2, x3) = f[vf::lbm::dir::d00M]; + (*this->localDistributionsF)(D3Q27System::ET_NE, x1, x2, x3) = f[vf::lbm::dir::dMM0]; + (*this->localDistributionsF)(D3Q27System::ET_NW, x1p, x2, x3) = f[vf::lbm::dir::dPM0]; + (*this->localDistributionsF)(D3Q27System::ET_TE, x1, x2, x3) = f[vf::lbm::dir::dM0M]; + (*this->localDistributionsF)(D3Q27System::ET_TW, x1p, x2, x3) = f[vf::lbm::dir::dP0M]; + (*this->localDistributionsF)(D3Q27System::ET_TN, x1, x2, x3) = f[vf::lbm::dir::d0MM]; + (*this->localDistributionsF)(D3Q27System::ET_TS, x1, x2p, x3) = f[vf::lbm::dir::d0PM]; + (*this->localDistributionsF)(D3Q27System::ET_TNE, x1, x2, x3) = f[vf::lbm::dir::dMMM]; + (*this->localDistributionsF)(D3Q27System::ET_TNW, x1p, x2, x3) = f[vf::lbm::dir::dPMM]; + (*this->localDistributionsF)(D3Q27System::ET_TSE, x1, x2p, x3) = f[vf::lbm::dir::dMPM]; + (*this->localDistributionsF)(D3Q27System::ET_TSW, x1p, x2p, x3) = f[vf::lbm::dir::dPPM]; + + (*this->nonLocalDistributionsF)(D3Q27System::ET_W, x1p, x2, x3) = f[vf::lbm::dir::dP00]; + (*this->nonLocalDistributionsF)(D3Q27System::ET_S, x1, x2p, x3) = f[vf::lbm::dir::d0P0]; + (*this->nonLocalDistributionsF)(D3Q27System::ET_B, x1, x2, x3p) = f[vf::lbm::dir::d00P]; + (*this->nonLocalDistributionsF)(D3Q27System::ET_SW, x1p, x2p, x3) = f[vf::lbm::dir::dPP0]; + (*this->nonLocalDistributionsF)(D3Q27System::ET_SE, x1, x2p, x3) = f[vf::lbm::dir::dMP0]; + (*this->nonLocalDistributionsF)(D3Q27System::ET_BW, x1p, x2, x3p) = f[vf::lbm::dir::dP0P]; + (*this->nonLocalDistributionsF)(D3Q27System::ET_BE, x1, x2, x3p) = f[vf::lbm::dir::dM0P]; + (*this->nonLocalDistributionsF)(D3Q27System::ET_BS, x1, x2p, x3p) = f[vf::lbm::dir::d0PP]; + (*this->nonLocalDistributionsF)(D3Q27System::ET_BN, x1, x2, x3p) = f[vf::lbm::dir::d0MP]; + (*this->nonLocalDistributionsF)(D3Q27System::ET_BSW, x1p, x2p, x3p) = f[vf::lbm::dir::dPPP]; + (*this->nonLocalDistributionsF)(D3Q27System::ET_BSE, x1, x2p, x3p) = f[vf::lbm::dir::dMPP]; + (*this->nonLocalDistributionsF)(D3Q27System::ET_BNW, x1p, x2, x3p) = f[vf::lbm::dir::dPMP]; + (*this->nonLocalDistributionsF)(D3Q27System::ET_BNE, x1, x2, x3p) = f[vf::lbm::dir::dMMP]; } } } diff --git a/src/cpu/LiggghtsCoupling/LBM/IBsharpInterfaceLBMKernel.cpp b/src/cpu/LiggghtsCoupling/LBM/IBsharpInterfaceLBMKernel.cpp index c502c4b48150e558aa785fa1bdc8c16bbecc1986..c935693c7157b77df9fe2566363e0a424f0737b3 100644 --- a/src/cpu/LiggghtsCoupling/LBM/IBsharpInterfaceLBMKernel.cpp +++ b/src/cpu/LiggghtsCoupling/LBM/IBsharpInterfaceLBMKernel.cpp @@ -305,24 +305,24 @@ void IBsharpInterfaceLBMKernel::calculate(int step) ////////////////////////////////Momentum conservation experiment 06.03.2023 // surfacetension - if ((((*phaseField)(x1, x2, x3) <= c1o2) || phi[DIR_000] <= c1o2) && - ((phi[DIR_P00] > c1o2) || (phi[DIR_M00] > c1o2) || (phi[DIR_00P] > c1o2) || (phi[DIR_00M] > c1o2) || (phi[DIR_0M0] > c1o2) || (phi[DIR_0P0] > c1o2) || (phi[DIR_PP0] > c1o2) || (phi[DIR_PM0] > c1o2) || (phi[DIR_P0P] > c1o2) || (phi[DIR_P0M] > c1o2) || (phi[DIR_MP0] > c1o2) || - (phi[DIR_MM0] > c1o2) || (phi[DIR_M0P] > c1o2) || (phi[DIR_M0M] > c1o2) || (phi[DIR_0PM] > c1o2) || (phi[DIR_0MM] > c1o2) || (phi[DIR_0PP] > c1o2) || (phi[DIR_0MP] > c1o2) || (phi[DIR_PPP] > c1o2) || (phi[DIR_PMP] > c1o2) || (phi[DIR_MPP] > c1o2) || (phi[DIR_MMP] > c1o2) || - (phi[DIR_PPM] > c1o2) || (phi[DIR_PMM] > c1o2) || (phi[DIR_MPM] > c1o2) || (phi[DIR_MMM] > c1o2))) { + if ((((*phaseField)(x1, x2, x3) <= c1o2) || phi[d000] <= c1o2) && + ((phi[dP00] > c1o2) || (phi[dM00] > c1o2) || (phi[d00P] > c1o2) || (phi[d00M] > c1o2) || (phi[d0M0] > c1o2) || (phi[d0P0] > c1o2) || (phi[dPP0] > c1o2) || (phi[dPM0] > c1o2) || (phi[dP0P] > c1o2) || (phi[dP0M] > c1o2) || (phi[dMP0] > c1o2) || + (phi[dMM0] > c1o2) || (phi[dM0P] > c1o2) || (phi[dM0M] > c1o2) || (phi[d0PM] > c1o2) || (phi[d0MM] > c1o2) || (phi[d0PP] > c1o2) || (phi[d0MP] > c1o2) || (phi[dPPP] > c1o2) || (phi[dPMP] > c1o2) || (phi[dMPP] > c1o2) || (phi[dMMP] > c1o2) || + (phi[dPPM] > c1o2) || (phi[dPMM] > c1o2) || (phi[dMPM] > c1o2) || (phi[dMMM] > c1o2))) { real vx = (*vxNode)(x1, x2, x3); real vy = (*vyNode)(x1, x2, x3); real vz = (*vzNode)(x1, x2, x3); findNeighbors(phaseField, x1, x2, x3); real laplacePressure = c12o1 * sigma * computeCurvature_phi(); // if (step > 5000) - // UBLOG(logINFO, x1 << ","<< x2 << ","<< x3 << " "<< "3*dP=" << laplacePressure << " dP=" << laplacePressure / 3.0<< " phi=" << phi[DIR_000]<< "\n"); + // UBLOG(logINFO, x1 << ","<< x2 << ","<< x3 << " "<< "3*dP=" << laplacePressure << " dP=" << laplacePressure / 3.0<< " phi=" << phi[d000]<< "\n"); findNeighbors(phaseFieldOld, x1, x2, x3); // 16.03.23 c: BB gas side with updated boundary velocity distribution->getDistributionInv(ff, x1, x2, x3); real rhoG; - if (phi[DIR_000] > c1o2) { // initialization necessary + if (phi[d000] > c1o2) { // initialization necessary real sumRho = 0; real sumWeight = 1.e-100; for (int fdir = D3Q27System::FSTARTDIR; fdir <= D3Q27System::FENDDIR; fdir++) { @@ -356,22 +356,22 @@ void IBsharpInterfaceLBMKernel::calculate(int step) // real fGEQNew = D3Q27System::getIncompFeqForDirection(fdir, rhoG, vx, vy, vz); real fBC = (fL - feqOLD) * (c1o1 / collFactorG - c1o1) / (c1o1 / collFactorL - c1o1) + feqNew; // fL -feqOLD + feqNew; // real fBC = fGG - c6o1 * WEIGTH[fdir] * (vBC); - distribution->setDistributionForDirection(fBC, x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir], D3Q27System::INVDIR[fdir]); + distribution->setPostCollisionDistributionForDirection(fBC, x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir], D3Q27System::INVDIR[fdir]); ///// other possibility is tor replace the node itself instead of the neighbor (only c1o1 of them is allowed!) // real fG = distribution->getDistributionInvForDirection(x1, x2, x3, fdir); // real feqOLD = D3Q27System::getIncompFeqForDirection(fdir, (*rhoNode)(x1 , x2 , x3 ), (*vxNode)(x1 , x2 , x3 ), (*vyNode)(x1 , x2 , x3 ), (*vzNode)(x1 , x2 , x3 )); // real feqNew = D3Q27System::getIncompFeqForDirection(fdir, rhoG, (*vxNode)(x1 , x2 , x3 ), (*vyNode)(x1 , x2 , x3 ), (*vzNode)(x1, x2, x3 )); // real fBC = fG - feqOLD + feqNew; - // distribution->setDistributionForDirection(fBC, x1, x2, x3, fdir); + // distribution->setPostCollisionDistributionForDirection(fBC, x1, x2, x3, fdir); } } } - // distribution->setDistributionForDirection(D3Q27System::getIncompFeqForDirection(DIR_000, rhoG, vx, vy, vz), x1, x2, x3, DIR_000); + // distribution->setPostCollisionDistributionForDirection(D3Q27System::getIncompFeqForDirection(d000, rhoG, vx, vy, vz), x1, x2, x3, d000); { - real fL = distribution->getDistributionInvForDirection(x1, x2, x3, DIR_000); - real feqOLD = D3Q27System::getIncompFeqForDirection(DIR_000, (*rhoNode)(x1, x2, x3), vx, vy, vz); - real feqNew = D3Q27System::getIncompFeqForDirection(DIR_000, rhoG, vx, vy, vz); - distribution->setDistributionForDirection(fL - feqOLD + feqNew, x1, x2, x3, DIR_000); + real fL = distribution->getDistributionInvForDirection(x1, x2, x3, d000); + real feqOLD = D3Q27System::getIncompFeqForDirection(d000, (*rhoNode)(x1, x2, x3), vx, vy, vz); + real feqNew = D3Q27System::getIncompFeqForDirection(d000, rhoG, vx, vy, vz); + distribution->setPostCollisionDistributionForDirection(fL - feqOLD + feqNew, x1, x2, x3, d000); } } else { // no refill of gas required @@ -400,7 +400,7 @@ void IBsharpInterfaceLBMKernel::calculate(int step) // (c1o1 / collFactorL - c1o1) + feqNew; // if ((*phaseField)(x1, x2, x3) <= c1o2) - distribution->setDistributionForDirection(fBC, x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir], D3Q27System::INVDIR[fdir]); + distribution->setPostCollisionDistributionForDirection(fBC, x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir], D3Q27System::INVDIR[fdir]); if (((*phaseField)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir])) > c1o2) { // real vxBC = c1o2 * (vx + (*vxNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir])); // real vyBC = c1o2 * (vy + (*vyNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir])); @@ -414,10 +414,10 @@ void IBsharpInterfaceLBMKernel::calculate(int step) // D3Q27System::DX3[fdir]) * (D3Q27System::DX3[fdir]) * (D3Q27System::DX3[fdir])); real feqG = D3Q27System::getIncompFeqForDirection(fdir, 0, vx * (D3Q27System::DX1[fdir]) * (D3Q27System::DX1[fdir]), vy * (D3Q27System::DX2[fdir]) * // (D3Q27System::DX2[fdir]), vz * (D3Q27System::DX3[fdir]) * (D3Q27System::DX3[fdir])); - // distribution->setDistributionForDirection((fBC + fG) / densityRatio*0 - fL - (feqG - feqL) * (c1o1 / densityRatio*0 - c1o1) * vBC, x1, x2, x3, fdir);// (vxBC * D3Q27System::DX1[fdir] + vyBC * D3Q27System::DX2[fdir] + vzBC * D3Q27System::DX3[fdir]), x1, - // x2, x3, fdir); distribution->setDistributionForDirection((fBC + fG) / densityRatio * 0 - fL - (feqG - feqL-2*fL+2*feqL) * (c1o1 / densityRatio - c1o1) * vBC, x1, x2, x3, fdir);// (vxBC * D3Q27System::DX1[fdir] + vyBC * D3Q27System::DX2[fdir] + vzBC * + // distribution->setPostCollisionDistributionForDirection((fBC + fG) / densityRatio*0 - fL - (feqG - feqL) * (c1o1 / densityRatio*0 - c1o1) * vBC, x1, x2, x3, fdir);// (vxBC * D3Q27System::DX1[fdir] + vyBC * D3Q27System::DX2[fdir] + vzBC * D3Q27System::DX3[fdir]), x1, + // x2, x3, fdir); distribution->setPostCollisionDistributionForDirection((fBC + fG) / densityRatio * 0 - fL - (feqG - feqL-2*fL+2*feqL) * (c1o1 / densityRatio - c1o1) * vBC, x1, x2, x3, fdir);// (vxBC * D3Q27System::DX1[fdir] + vyBC * D3Q27System::DX2[fdir] + vzBC * // D3Q27System::DX3[fdir]), x1, x2, x3, fdir); real flW = (fBC + fG) / densityRatio * 0 - fL - (feqG - feqL) * (c1o1 / densityRatio*0 - c1o1) * vBC; real flWW = (fBC + fG) / densityRatio * 0 - fL - (feqG - feqL - 2 * fL + 2 * feqL) * (c1o1 / densityRatio*0 - // - c1o1) * vBC; real fLi = distribution->getDistributionInvForDirection(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir], fdir); real number = 666; distribution->setDistributionForDirection((fBC + fG) / densityRatio * + // - c1o1) * vBC; real fLi = distribution->getDistributionInvForDirection(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir], fdir); real number = 666; distribution->setPostCollisionDistributionForDirection((fBC + fG) / densityRatio * // 0 - fL - (feqG - feqL) * (c1o1 / densityRatio * 0 - c1o1) * vBC, x1, x2, x3, fdir); //// real eqBC= D3Q27System::getIncompFeqForDirection(D3Q27System::INVDIR[fdir], 0, vx, vy, vz); //// real eqG = D3Q27System::getIncompFeqForDirection(fdir, 0, vx, vy, vz); @@ -426,7 +426,7 @@ void IBsharpInterfaceLBMKernel::calculate(int step) //D3Q27System::DX3[fdir]), (*vyNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir]), (*vzNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir])); ////real flNew = (fBC + fG-eqBC-eqG) / densityRatio +eqBC+eqG - fL - (feqG - feqL - 2 * fL + 2 * feqL) * (c1o1 / densityRatio - c1o1) * vBC; - // distribution->setDistributionForDirection(c2o1*laplacePressure * WEIGTH[fdir] +(fBC + fG - eqBC - eqG) / densityRatio + (eqBC + eqG) - fL, x1, x2, x3, fdir);// -0* (feqG - feqL - 2 * fL + 2 * feqL) * (c1o1 / densityRatio - c1o1) * vBC, x1, x2, x3, + // distribution->setPostCollisionDistributionForDirection(c2o1*laplacePressure * WEIGTH[fdir] +(fBC + fG - eqBC - eqG) / densityRatio + (eqBC + eqG) - fL, x1, x2, x3, fdir);// -0* (feqG - feqL - 2 * fL + 2 * feqL) * (c1o1 / densityRatio - c1o1) * vBC, x1, x2, x3, //fdir);// (vxBC * D3Q27System::DX1[fdir] + vyBC * D3Q27System::DX2[fdir] + vzBC * D3Q27System::DX3[fdir]), x1, x2, x3, fdir); // //if (vxBC != 0) { // // int set = 0; @@ -458,7 +458,7 @@ void IBsharpInterfaceLBMKernel::calculate(int step) (c2o1 * (*phaseField)(x1, x2, x3) - c2o1 * (*phaseField)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir])) + laplacePressureBC * (-c1o1 + c2o1 * (*phaseField)(x1, x2, x3)) / (c2o1 * (*phaseField)(x1, x2, x3) - c2o1 * (*phaseField)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir])); // laplacePressureBC *= sigma; - distribution->setDistributionForDirection(laplacePressureBC * WEIGTH[fdir] + (fBC + fG - eqBC - eqG) / densityRatio + (eqBCN + eqGN) * (c1o1 - c1o1 / densityRatio * 0) - fL - 0 * (feqG - feqL - 2 * fL + 2 * feqL) * (c1o1 / densityRatio - c1o1) * vBC, x1, + distribution->setPostCollisionDistributionForDirection(laplacePressureBC * WEIGTH[fdir] + (fBC + fG - eqBC - eqG) / densityRatio + (eqBCN + eqGN) * (c1o1 - c1o1 / densityRatio * 0) - fL - 0 * (feqG - feqL - 2 * fL + 2 * feqL) * (c1o1 / densityRatio - c1o1) * vBC, x1, x2, x3, fdir); } } @@ -499,15 +499,15 @@ void IBsharpInterfaceLBMKernel::calculate(int step) // D3Q27System::DX3[fdir]) * (D3Q27System::DX3[fdir]) * (D3Q27System::DX3[fdir])); real feqG = D3Q27System::getIncompFeqForDirection(fdir, 0, vx * (D3Q27System::DX1[fdir]) * (D3Q27System::DX1[fdir]), vy * (D3Q27System::DX2[fdir]) * // (D3Q27System::DX2[fdir]), vz * (D3Q27System::DX3[fdir]) * (D3Q27System::DX3[fdir])); - // distribution->setDistributionForDirection((fBC + fG) / densityRatio*0 - fL- (feqG - feqL) * (c1o1 / densityRatio - c1o1) * (vBC), x1, x2, x3, fdir); - // distribution->setDistributionForDirection((fBC + fG) / densityRatio * 0 - fL - (feqG - feqL - 2 * fL + 2 * feqL) * (c1o1 / densityRatio*0 - c1o1) * vBC, x1, x2, x3, fdir);// (vxBC * D3Q27System::DX1[fdir] + vyBC * D3Q27System::DX2[fdir] + vzBC * - // D3Q27System::DX3[fdir]), x1, x2, x3, fdir); distribution->setDistributionForDirection(0, x1, x2, x3, fdir); real flW = (fBC + fG) / densityRatio * 0 - fL - (feqG - feqL) * (c1o1 / densityRatio * 0 - c1o1) * vBC; real flWW = (fBC + fG) / densityRatio * 0 + // distribution->setPostCollisionDistributionForDirection((fBC + fG) / densityRatio*0 - fL- (feqG - feqL) * (c1o1 / densityRatio - c1o1) * (vBC), x1, x2, x3, fdir); + // distribution->setPostCollisionDistributionForDirection((fBC + fG) / densityRatio * 0 - fL - (feqG - feqL - 2 * fL + 2 * feqL) * (c1o1 / densityRatio*0 - c1o1) * vBC, x1, x2, x3, fdir);// (vxBC * D3Q27System::DX1[fdir] + vyBC * D3Q27System::DX2[fdir] + vzBC * + // D3Q27System::DX3[fdir]), x1, x2, x3, fdir); distribution->setPostCollisionDistributionForDirection(0, x1, x2, x3, fdir); real flW = (fBC + fG) / densityRatio * 0 - fL - (feqG - feqL) * (c1o1 / densityRatio * 0 - c1o1) * vBC; real flWW = (fBC + fG) / densityRatio * 0 // - fL - (feqG - feqL - 2 * fL + 2 * feqL) * (c1o1 / densityRatio * 0 - c1o1) * vBC; real fLi = distribution->getDistributionInvForDirection(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir], fdir); // real eqBC = D3Q27System::getIncompFeqForDirection(D3Q27System::INVDIR[fdir], 0, (*vxNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir]), (*vyNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + //D3Q27System::DX3[fdir]), (*vzNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir])); real eqG = D3Q27System::getIncompFeqForDirection(fdir, 0, (*vxNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + //D3Q27System::DX3[fdir]), (*vyNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir]), (*vzNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir])); // //real flNew = (fBC + fG - eqBC - eqG) / densityRatio + eqBC + eqG - fL - (feqG - feqL - 2 * fL + 2 * feqL) * (c1o1 / densityRatio - c1o1) * vBC; - // distribution->setDistributionForDirection(c2o1*laplacePressure* WEIGTH[fdir] + (fBC + fG - eqBC - eqG) / densityRatio + (eqBC + eqG) - fL, x1, x2, x3, fdir);// - 0*(feqG - feqL - 2 * fL + 2 * feqL) * (c1o1 / densityRatio - c1o1) * vBC, x1, x2, x3, + // distribution->setPostCollisionDistributionForDirection(c2o1*laplacePressure* WEIGTH[fdir] + (fBC + fG - eqBC - eqG) / densityRatio + (eqBC + eqG) - fL, x1, x2, x3, fdir);// - 0*(feqG - feqL - 2 * fL + 2 * feqL) * (c1o1 / densityRatio - c1o1) * vBC, x1, x2, x3, //fdir);// (vxBC * D3Q27System::DX1[fdir] + vyBC * D3Q27System::DX2[fdir] + vzBC * D3Q27System::DX3[fdir]), x1, x2, x3, fdir); //// real number = 666; @@ -538,7 +538,7 @@ void IBsharpInterfaceLBMKernel::calculate(int step) (c2o1 * (*phaseField)(x1, x2, x3) - c2o1 * (*phaseField)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir])) + laplacePressureBC * (-c1o1 + c2o1 * (*phaseField)(x1, x2, x3)) / (c2o1 * (*phaseField)(x1, x2, x3) - c2o1 * (*phaseField)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir])); // laplacePressureBC *= sigma; - distribution->setDistributionForDirection(laplacePressureBC * WEIGTH[fdir] + (fBC + fG - eqBC - eqG) / densityRatio + (eqBCN + eqGN) * (c1o1 - c1o1 / densityRatio * 0) - fL - 0 * (feqG - feqL - 2 * fL + 2 * feqL) * (c1o1 / densityRatio - c1o1) * vBC, x1, + distribution->setPostCollisionDistributionForDirection(laplacePressureBC * WEIGTH[fdir] + (fBC + fG - eqBC - eqG) / densityRatio + (eqBCN + eqGN) * (c1o1 - c1o1 / densityRatio * 0) - fL - 0 * (feqG - feqL - 2 * fL + 2 * feqL) * (c1o1 / densityRatio - c1o1) * vBC, x1, x2, x3, fdir); } @@ -581,7 +581,7 @@ void IBsharpInterfaceLBMKernel::calculate(int step) real feqOLD = D3Q27System::getIncompFeqForDirection(D3Q27System::INVDIR[fdir], rhoG, vx, vy, vz); real feqNew = D3Q27System::getIncompFeqForDirection(D3Q27System::INVDIR[fdir], rhoL, vx, vy, vz); ff[D3Q27System::INVDIR[fdir]] = (ff[D3Q27System::INVDIR[fdir]] - feqOLD) * (c1o1 / collFactorL - c1o1) / (c1o1 / collFactorG - c1o1) + feqNew; - distribution->setDistributionForDirection(ff[D3Q27System::INVDIR[fdir]], x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir], D3Q27System::INVDIR[fdir]); + distribution->setPostCollisionDistributionForDirection(ff[D3Q27System::INVDIR[fdir]], x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir], D3Q27System::INVDIR[fdir]); } } @@ -595,7 +595,7 @@ void IBsharpInterfaceLBMKernel::calculate(int step) // //vBC = (vBC + vDir) / (c2o1 -( vBC - vDir)); // //real fL = distribution->getDistributionInvForDirection(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir], D3Q27System::INVDIR[fdir]) - c6o1 * WEIGTH[fdir] * vDir; // //real fL = distribution->getDistributionInvForDirection(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir], D3Q27System::INVDIR[fdir]) + c6o1 * WEIGTH[fdir] * (vx * D3Q27System::DX1[fdir] + vy * D3Q27System::DX2[fdir] + vz * - //D3Q27System::DX3[fdir]); real fL= D3Q27System::getIncompFeqForDirection(fdir, rhoL, vx, vy, vz); distribution->setDistributionForDirection(fL, x1 - D3Q27System::DX1[fdir], x2 - D3Q27System::DX2[fdir], x3 - D3Q27System::DX3[fdir], fdir); ff[fdir] = fL; + //D3Q27System::DX3[fdir]); real fL= D3Q27System::getIncompFeqForDirection(fdir, rhoL, vx, vy, vz); distribution->setPostCollisionDistributionForDirection(fL, x1 - D3Q27System::DX1[fdir], x2 - D3Q27System::DX2[fdir], x3 - D3Q27System::DX3[fdir], fdir); ff[fdir] = fL; // } // if (!(phi[fdir] > c1o2)) { // //std::cout << "Eq at dir=" << fdir << "\n"; @@ -603,7 +603,7 @@ void IBsharpInterfaceLBMKernel::calculate(int step) // real vyBC = ((*vyNode)(x1 - D3Q27System::DX1[fdir], x2 - D3Q27System::DX2[fdir], x3 - D3Q27System::DX3[fdir])); // real vzBC = ((*vzNode)(x1 - D3Q27System::DX1[fdir], x2 - D3Q27System::DX2[fdir], x3 - D3Q27System::DX3[fdir])); // real feqL = D3Q27System::getIncompFeqForDirection(fdir, rhoL, vx, vy, vz); - // distribution->setDistributionForDirection(feqL, x1 - D3Q27System::DX1[fdir], x2 - D3Q27System::DX2[fdir], x3 - D3Q27System::DX3[fdir], fdir); + // distribution->setPostCollisionDistributionForDirection(feqL, x1 - D3Q27System::DX1[fdir], x2 - D3Q27System::DX2[fdir], x3 - D3Q27System::DX3[fdir], fdir); // ff[fdir] = feqL; // } // } @@ -611,26 +611,26 @@ void IBsharpInterfaceLBMKernel::calculate(int step) // for (int fdir = D3Q27System::FSTARTDIR; fdir <= D3Q27System::FENDDIR; fdir++) { // sumRho2 += ff[fdir];// -D3Q27System::getIncompFeqForDirection(fdir, 0, sumVx, sumVy, sumVz); // } - // ff[DIR_000] = rhoL - sumRho2; + // ff[d000] = rhoL - sumRho2; // rhoL = 27.0 / 18.0 * sumRho2; // std::cout << "rhoL=" << rhoL <<" sumRho="<< 27.0 / 18.0 * sumRho2 << " vx=" << vx << " vy=" << vy << "\n"; D3Q27System::calcIncompMacroscopicValues(ff, rhoL, vx, vy, vz); - // std::cout << "RecalCrhoL=" << rhoL << " sumRho=" << 27.0 / 18.0 * sumRho2 << " vx=" << vx << " vy=" << vy << "ffRest="<<ff[DIR_000]<<"\n"; - // distribution->setDistributionForDirection(ff[DIR_000], x1, x2, x3, DIR_000); + // std::cout << "RecalCrhoL=" << rhoL << " sumRho=" << 27.0 / 18.0 * sumRho2 << " vx=" << vx << " vy=" << vy << "ffRest="<<ff[d000]<<"\n"; + // distribution->setPostCollisionDistributionForDirection(ff[d000], x1, x2, x3, d000); { - real fG = distribution->getDistributionInvForDirection(x1, x2, x3, DIR_000); - real feqOLD = D3Q27System::getIncompFeqForDirection(DIR_000, (*rhoNode)(x1, x2, x3), vx, vy, vz); - real feqNew = D3Q27System::getIncompFeqForDirection(DIR_000, rhoL, vx, vy, vz); - distribution->setDistributionForDirection(fG - feqOLD + feqNew, x1, x2, x3, DIR_000); + real fG = distribution->getDistributionInvForDirection(x1, x2, x3, d000); + real feqOLD = D3Q27System::getIncompFeqForDirection(d000, (*rhoNode)(x1, x2, x3), vx, vy, vz); + real feqNew = D3Q27System::getIncompFeqForDirection(d000, rhoL, vx, vy, vz); + distribution->setPostCollisionDistributionForDirection(fG - feqOLD + feqNew, x1, x2, x3, d000); } // for (int fdir = D3Q27System::FSTARTDIR; fdir <= D3Q27System::FENDDIR; fdir++) { // ff[D3Q27System::INVDIR[fdir]]=distribution->getDistributionInvForDirection(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir], D3Q27System::INVDIR[fdir]); // } // D3Q27System::calcIncompMacroscopicValues(ff, rhoL, vx, vy, vz); - // std::cout << "AfterRead rhoL=" << rhoL << " rhoGToL=" << rhoG/densityRatio << " vx=" << vx << " vy=" << vy << "ffRest=" << ff[DIR_000] <<" x="<<x1<<" y="<<x2<<" z="<<x3<< "\n"; + // std::cout << "AfterRead rhoL=" << rhoL << " rhoGToL=" << rhoG/densityRatio << " vx=" << vx << " vy=" << vy << "ffRest=" << ff[d000] <<" x="<<x1<<" y="<<x2<<" z="<<x3<< "\n"; - // real feqL = D3Q27System::getIncompFeqForDirection(DIR_000, rhoL, vx, vy, vz); - // distribution->setDistributionForDirection(feqL, x1, x2, x3, DIR_000); + // real feqL = D3Q27System::getIncompFeqForDirection(d000, rhoL, vx, vy, vz); + // distribution->setPostCollisionDistributionForDirection(feqL, x1, x2, x3, d000); } } @@ -687,66 +687,66 @@ void IBsharpInterfaceLBMKernel::calculate(int step) real fEqSolid[D3Q27System::ENDF + 1]; real fPre[D3Q27System::ENDF + 1]; - f[vf::lbm::dir::DIR_000] = mfbbb; - - f[vf::lbm::dir::DIR_P00] = mfcbb; - f[vf::lbm::dir::DIR_0P0] = mfbcb; - f[vf::lbm::dir::DIR_00P] = mfbbc; - f[vf::lbm::dir::DIR_PP0] = mfccb; - f[vf::lbm::dir::DIR_MP0] = mfacb; - f[vf::lbm::dir::DIR_P0P] = mfcbc; - f[vf::lbm::dir::DIR_M0P] = mfabc; - f[vf::lbm::dir::DIR_0PP] = mfbcc; - f[vf::lbm::dir::DIR_0MP] = mfbac; - f[vf::lbm::dir::DIR_PPP] = mfccc; - f[vf::lbm::dir::DIR_MPP] = mfacc; - f[vf::lbm::dir::DIR_PMP] = mfcac; - f[vf::lbm::dir::DIR_MMP] = mfaac; - - f[vf::lbm::dir::DIR_M00] = mfabb; - f[vf::lbm::dir::DIR_0M0] = mfbab; - f[vf::lbm::dir::DIR_00M] = mfbba; - f[vf::lbm::dir::DIR_MM0] = mfaab; - f[vf::lbm::dir::DIR_PM0] = mfcab; - f[vf::lbm::dir::DIR_M0M] = mfaba; - f[vf::lbm::dir::DIR_P0M] = mfcba; - f[vf::lbm::dir::DIR_0MM] = mfbaa; - f[vf::lbm::dir::DIR_0PM] = mfbca; - f[vf::lbm::dir::DIR_MMM] = mfaaa; - f[vf::lbm::dir::DIR_PMM] = mfcaa; - f[vf::lbm::dir::DIR_MPM] = mfaca; - f[vf::lbm::dir::DIR_PPM] = mfcca; + f[vf::lbm::dir::d000] = mfbbb; + + f[vf::lbm::dir::dP00] = mfcbb; + f[vf::lbm::dir::d0P0] = mfbcb; + f[vf::lbm::dir::d00P] = mfbbc; + f[vf::lbm::dir::dPP0] = mfccb; + f[vf::lbm::dir::dMP0] = mfacb; + f[vf::lbm::dir::dP0P] = mfcbc; + f[vf::lbm::dir::dM0P] = mfabc; + f[vf::lbm::dir::d0PP] = mfbcc; + f[vf::lbm::dir::d0MP] = mfbac; + f[vf::lbm::dir::dPPP] = mfccc; + f[vf::lbm::dir::dMPP] = mfacc; + f[vf::lbm::dir::dPMP] = mfcac; + f[vf::lbm::dir::dMMP] = mfaac; + + f[vf::lbm::dir::dM00] = mfabb; + f[vf::lbm::dir::d0M0] = mfbab; + f[vf::lbm::dir::d00M] = mfbba; + f[vf::lbm::dir::dMM0] = mfaab; + f[vf::lbm::dir::dPM0] = mfcab; + f[vf::lbm::dir::dM0M] = mfaba; + f[vf::lbm::dir::dP0M] = mfcba; + f[vf::lbm::dir::d0MM] = mfbaa; + f[vf::lbm::dir::d0PM] = mfbca; + f[vf::lbm::dir::dMMM] = mfaaa; + f[vf::lbm::dir::dPMM] = mfcaa; + f[vf::lbm::dir::dMPM] = mfaca; + f[vf::lbm::dir::dPPM] = mfcca; if ((*particleData)(x1, x2, x3)->solidFraction > SOLFRAC_MIN) { - fPre[vf::lbm::dir::DIR_000] = mfbbb; - - fPre[vf::lbm::dir::DIR_P00] = mfcbb; - fPre[vf::lbm::dir::DIR_0P0] = mfbcb; - fPre[vf::lbm::dir::DIR_00P] = mfbbc; - fPre[vf::lbm::dir::DIR_PP0] = mfccb; - fPre[vf::lbm::dir::DIR_MP0] = mfacb; - fPre[vf::lbm::dir::DIR_P0P] = mfcbc; - fPre[vf::lbm::dir::DIR_M0P] = mfabc; - fPre[vf::lbm::dir::DIR_0PP] = mfbcc; - fPre[vf::lbm::dir::DIR_0MP] = mfbac; - fPre[vf::lbm::dir::DIR_PPP] = mfccc; - fPre[vf::lbm::dir::DIR_MPP] = mfacc; - fPre[vf::lbm::dir::DIR_PMP] = mfcac; - fPre[vf::lbm::dir::DIR_MMP] = mfaac; - - fPre[vf::lbm::dir::DIR_M00] = mfabb; - fPre[vf::lbm::dir::DIR_0M0] = mfbab; - fPre[vf::lbm::dir::DIR_00M] = mfbba; - fPre[vf::lbm::dir::DIR_MM0] = mfaab; - fPre[vf::lbm::dir::DIR_PM0] = mfcab; - fPre[vf::lbm::dir::DIR_M0M] = mfaba; - fPre[vf::lbm::dir::DIR_P0M] = mfcba; - fPre[vf::lbm::dir::DIR_0MM] = mfbaa; - fPre[vf::lbm::dir::DIR_0PM] = mfbca; - fPre[vf::lbm::dir::DIR_MMM] = mfaaa; - fPre[vf::lbm::dir::DIR_PMM] = mfcaa; - fPre[vf::lbm::dir::DIR_MPM] = mfaca; - fPre[vf::lbm::dir::DIR_PPM] = mfcca; + fPre[vf::lbm::dir::d000] = mfbbb; + + fPre[vf::lbm::dir::dP00] = mfcbb; + fPre[vf::lbm::dir::d0P0] = mfbcb; + fPre[vf::lbm::dir::d00P] = mfbbc; + fPre[vf::lbm::dir::dPP0] = mfccb; + fPre[vf::lbm::dir::dMP0] = mfacb; + fPre[vf::lbm::dir::dP0P] = mfcbc; + fPre[vf::lbm::dir::dM0P] = mfabc; + fPre[vf::lbm::dir::d0PP] = mfbcc; + fPre[vf::lbm::dir::d0MP] = mfbac; + fPre[vf::lbm::dir::dPPP] = mfccc; + fPre[vf::lbm::dir::dMPP] = mfacc; + fPre[vf::lbm::dir::dPMP] = mfcac; + fPre[vf::lbm::dir::dMMP] = mfaac; + + fPre[vf::lbm::dir::dM00] = mfabb; + fPre[vf::lbm::dir::d0M0] = mfbab; + fPre[vf::lbm::dir::d00M] = mfbba; + fPre[vf::lbm::dir::dMM0] = mfaab; + fPre[vf::lbm::dir::dPM0] = mfcab; + fPre[vf::lbm::dir::dM0M] = mfaba; + fPre[vf::lbm::dir::dP0M] = mfcba; + fPre[vf::lbm::dir::d0MM] = mfbaa; + fPre[vf::lbm::dir::d0PM] = mfbca; + fPre[vf::lbm::dir::dMMM] = mfaaa; + fPre[vf::lbm::dir::dPMM] = mfcaa; + fPre[vf::lbm::dir::dMPM] = mfaca; + fPre[vf::lbm::dir::dPPM] = mfcca; } (*particleData)(x1, x2, x3)->hydrodynamicForce.fill(0.0); @@ -768,13 +768,13 @@ void IBsharpInterfaceLBMKernel::calculate(int step) real normX2 = dX2_phi / denom; real normX3 = dX3_phi / denom; - collFactorM = phi[DIR_000] > c1o2 ? collFactorL : collFactorG; - // real collFactorMInv = phi[DIR_000] > c1o2 ? collFactorG : collFactorL; + collFactorM = phi[d000] > c1o2 ? collFactorL : collFactorG; + // real collFactorMInv = phi[d000] > c1o2 ? collFactorG : collFactorL; - // real mu = 2 * beta * phi[DIR_000] * (phi[DIR_000] - 1) * (2 * phi[DIR_000] - 1) - kappa * nabla2_phi(); + // real mu = 2 * beta * phi[d000] * (phi[d000] - 1) * (2 * phi[d000] - 1) - kappa * nabla2_phi(); //----------- Calculating Macroscopic Values ------------- - real rho = phi[DIR_000] > c1o2 ? rhoH : rhoL; + real rho = phi[d000] > c1o2 ? rhoH : rhoL; real m0, m1, m2; real rhoRef = c1o1; @@ -790,7 +790,7 @@ void IBsharpInterfaceLBMKernel::calculate(int step) if (withForcing) { muRho = rho; - muPhi = phi[DIR_000]; + muPhi = phi[d000]; forcingX1 += muForcingX1.Eval(); forcingX2 += muForcingX2.Eval(); forcingX3 += muForcingX3.Eval(); @@ -838,8 +838,8 @@ void IBsharpInterfaceLBMKernel::calculate(int step) //////////////////////////////////////////////////////////////////////////////////// real wadjust; - // real qudricLimit = 0.01 / (c1o1 + 1.0e4 * phi[DIR_000] * (c1o1 - phi[DIR_000])); - // real qudricLimit = 0.01 / (c1o1 + (((*phaseField)(x1, x2, x3) > c1o2) ? 1.0e6 * phi[DIR_000] * (c1o1 - phi[DIR_000]):c0o1)); + // real qudricLimit = 0.01 / (c1o1 + 1.0e4 * phi[d000] * (c1o1 - phi[d000])); + // real qudricLimit = 0.01 / (c1o1 + (((*phaseField)(x1, x2, x3) > c1o2) ? 1.0e6 * phi[d000] * (c1o1 - phi[d000]):c0o1)); real qudricLimit = 0.01; //////////////////////////////////////////////////////////////////////////////////// @@ -955,7 +955,7 @@ void IBsharpInterfaceLBMKernel::calculate(int step) real Dxz = -c3o1 * collFactorM * mfbab; real Dyz = -c3o1 * collFactorM * mfabb; - if (phi[DIR_000] > c1o2) { + if (phi[d000] > c1o2) { /// QR eddyviscosity: real eddyR = -(Dxy * Dxy + Dxz * Dxz + c1o3 * dxux * dxux) * (dxux) - (Dxy * Dxy + Dyz * Dyz + c1o3 * dyuy * dyuy) * dyuy - (Dxz * Dxz + Dyz * Dyz + c1o3 * dzuz * dzuz) * dzuz - c2o1 * Dxy * Dxz * Dyz; real eddyQ = Dxy * Dxz + Dxy * Dyz + Dxz * Dyz + c1o2 * (dxux * dxux + dyuy * dyuy + dzuz * dzuz); @@ -975,7 +975,7 @@ void IBsharpInterfaceLBMKernel::calculate(int step) //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // non Newtonian fluid collision factor - if (phi[DIR_000] > c1o2) { + if (phi[d000] > c1o2) { real shearRate = sqrt(c2o1 * (dxux * dxux + dyuy * dyuy + dzuz * dzuz) + Dxy * Dxy + Dxz * Dxz + Dyz * Dyz); collFactorM = Rheology::getBinghamCollFactor(collFactorM, shearRate, c1o1); collFactorM = (collFactorM < c1o1) ? c1o1 : collFactorM; @@ -1141,7 +1141,7 @@ void IBsharpInterfaceLBMKernel::calculate(int step) ////////////////////////////////////////////////////////////////////////// // write distribution ////////////////////////////////////////////////////////////////////////// - // if (phi[DIR_000] < c1o2) { + // if (phi[d000] < c1o2) { (*this->localDistributionsF)(D3Q27System::ET_E, x1, x2, x3) = mfabb; //* rho * c1o3; (*this->localDistributionsF)(D3Q27System::ET_N, x1, x2, x3) = mfbab; //* rho * c1o3; (*this->localDistributionsF)(D3Q27System::ET_T, x1, x2, x3) = mfbba; //* rho * c1o3; @@ -1171,35 +1171,35 @@ void IBsharpInterfaceLBMKernel::calculate(int step) (*this->restDistributionsF)(x1, x2, x3) = mfbbb; // *rho* c1o3; - f[vf::lbm::dir::DIR_000] = mfbbb; - - f[vf::lbm::dir::DIR_P00] = mfcbb; - f[vf::lbm::dir::DIR_0P0] = mfbcb; - f[vf::lbm::dir::DIR_00P] = mfbbc; - f[vf::lbm::dir::DIR_PP0] = mfccb; - f[vf::lbm::dir::DIR_MP0] = mfacb; - f[vf::lbm::dir::DIR_P0P] = mfcbc; - f[vf::lbm::dir::DIR_M0P] = mfabc; - f[vf::lbm::dir::DIR_0PP] = mfbcc; - f[vf::lbm::dir::DIR_0MP] = mfbac; - f[vf::lbm::dir::DIR_PPP] = mfccc; - f[vf::lbm::dir::DIR_MPP] = mfacc; - f[vf::lbm::dir::DIR_PMP] = mfcac; - f[vf::lbm::dir::DIR_MMP] = mfaac; - - f[vf::lbm::dir::DIR_M00] = mfabb; - f[vf::lbm::dir::DIR_0M0] = mfbab; - f[vf::lbm::dir::DIR_00M] = mfbba; - f[vf::lbm::dir::DIR_MM0] = mfaab; - f[vf::lbm::dir::DIR_PM0] = mfcab; - f[vf::lbm::dir::DIR_M0M] = mfaba; - f[vf::lbm::dir::DIR_P0M] = mfcba; - f[vf::lbm::dir::DIR_0MM] = mfbaa; - f[vf::lbm::dir::DIR_0PM] = mfbca; - f[vf::lbm::dir::DIR_MMM] = mfaaa; - f[vf::lbm::dir::DIR_PMM] = mfcaa; - f[vf::lbm::dir::DIR_MPM] = mfaca; - f[vf::lbm::dir::DIR_PPM] = mfcca; + f[vf::lbm::dir::d000] = mfbbb; + + f[vf::lbm::dir::dP00] = mfcbb; + f[vf::lbm::dir::d0P0] = mfbcb; + f[vf::lbm::dir::d00P] = mfbbc; + f[vf::lbm::dir::dPP0] = mfccb; + f[vf::lbm::dir::dMP0] = mfacb; + f[vf::lbm::dir::dP0P] = mfcbc; + f[vf::lbm::dir::dM0P] = mfabc; + f[vf::lbm::dir::d0PP] = mfbcc; + f[vf::lbm::dir::d0MP] = mfbac; + f[vf::lbm::dir::dPPP] = mfccc; + f[vf::lbm::dir::dMPP] = mfacc; + f[vf::lbm::dir::dPMP] = mfcac; + f[vf::lbm::dir::dMMP] = mfaac; + + f[vf::lbm::dir::dM00] = mfabb; + f[vf::lbm::dir::d0M0] = mfbab; + f[vf::lbm::dir::d00M] = mfbba; + f[vf::lbm::dir::dMM0] = mfaab; + f[vf::lbm::dir::dPM0] = mfcab; + f[vf::lbm::dir::dM0M] = mfaba; + f[vf::lbm::dir::dP0M] = mfcba; + f[vf::lbm::dir::d0MM] = mfbaa; + f[vf::lbm::dir::d0PM] = mfbca; + f[vf::lbm::dir::dMMM] = mfaaa; + f[vf::lbm::dir::dPMM] = mfcaa; + f[vf::lbm::dir::dMPM] = mfaca; + f[vf::lbm::dir::dPPM] = mfcca; } if ((*particleData)(x1, x2, x3)->solidFraction >= SOLFRAC_MIN) { real vx1, vx2, vx3, drho; @@ -1212,10 +1212,10 @@ void IBsharpInterfaceLBMKernel::calculate(int step) uPart[2] = (*particleData)(x1, x2, x3)->uPart[2]; D3Q27System::calcIncompFeq(fEqSolid, drho, uPart[0], uPart[1], uPart[2]); - real rhoPhaseField = (phi[DIR_000] > c1o2) ? c1o1 : c1o1 / densityRatio; + real rhoPhaseField = (phi[d000] > c1o2) ? c1o1 : c1o1 / densityRatio; if ((*particleData)(x1, x2, x3)->solidFraction > SOLFRAC_MAX) { - double const bb0 = fEq[vf::lbm::dir::DIR_000] - fEqSolid[vf::lbm::dir::DIR_000]; - f[vf::lbm::dir::DIR_000] = fPre[vf::lbm::dir::DIR_000] + bb0; + double const bb0 = fEq[vf::lbm::dir::d000] - fEqSolid[vf::lbm::dir::d000]; + f[vf::lbm::dir::d000] = fPre[vf::lbm::dir::d000] + bb0; for (int iPop = D3Q27System::FSTARTDIR; iPop <= D3Q27System::FENDDIR; iPop++) { const int iOpp = D3Q27System::INVDIR[iPop]; double const bb = ((fPre[iOpp] - fEq[iOpp]) - (fPre[iPop] - fEqSolid[iPop])); @@ -1237,8 +1237,8 @@ void IBsharpInterfaceLBMKernel::calculate(int step) // #endif double const oneMinB = 1. - B; - double const bb0 = fEq[vf::lbm::dir::DIR_000] - fEqSolid[vf::lbm::dir::DIR_000]; - f[vf::lbm::dir::DIR_000] = fPre[vf::lbm::dir::DIR_000] + oneMinB * (f[vf::lbm::dir::DIR_000] - fPre[vf::lbm::dir::DIR_000]) + B * bb0; + double const bb0 = fEq[vf::lbm::dir::d000] - fEqSolid[vf::lbm::dir::d000]; + f[vf::lbm::dir::d000] = fPre[vf::lbm::dir::d000] + oneMinB * (f[vf::lbm::dir::d000] - fPre[vf::lbm::dir::d000]) + B * bb0; for (int iPop = D3Q27System::FSTARTDIR; iPop <= D3Q27System::FENDDIR; iPop++) { int const iOpp = D3Q27System::INVDIR[iPop]; @@ -1254,35 +1254,35 @@ void IBsharpInterfaceLBMKernel::calculate(int step) } } /* if solidFraction > SOLFRAC_MAX */ - (*this->restDistributionsF)(x1, x2, x3) = f[vf::lbm::dir::DIR_000]; - - (*this->localDistributionsF)(D3Q27System::ET_E, x1, x2, x3) = f[vf::lbm::dir::DIR_M00]; - (*this->localDistributionsF)(D3Q27System::ET_N, x1, x2, x3) = f[vf::lbm::dir::DIR_0M0]; - (*this->localDistributionsF)(D3Q27System::ET_T, x1, x2, x3) = f[vf::lbm::dir::DIR_00M]; - (*this->localDistributionsF)(D3Q27System::ET_NE, x1, x2, x3) = f[vf::lbm::dir::DIR_MM0]; - (*this->localDistributionsF)(D3Q27System::ET_NW, x1p, x2, x3) = f[vf::lbm::dir::DIR_PM0]; - (*this->localDistributionsF)(D3Q27System::ET_TE, x1, x2, x3) = f[vf::lbm::dir::DIR_M0M]; - (*this->localDistributionsF)(D3Q27System::ET_TW, x1p, x2, x3) = f[vf::lbm::dir::DIR_P0M]; - (*this->localDistributionsF)(D3Q27System::ET_TN, x1, x2, x3) = f[vf::lbm::dir::DIR_0MM]; - (*this->localDistributionsF)(D3Q27System::ET_TS, x1, x2p, x3) = f[vf::lbm::dir::DIR_0PM]; - (*this->localDistributionsF)(D3Q27System::ET_TNE, x1, x2, x3) = f[vf::lbm::dir::DIR_MMM]; - (*this->localDistributionsF)(D3Q27System::ET_TNW, x1p, x2, x3) = f[vf::lbm::dir::DIR_PMM]; - (*this->localDistributionsF)(D3Q27System::ET_TSE, x1, x2p, x3) = f[vf::lbm::dir::DIR_MPM]; - (*this->localDistributionsF)(D3Q27System::ET_TSW, x1p, x2p, x3) = f[vf::lbm::dir::DIR_PPM]; - - (*this->nonLocalDistributionsF)(D3Q27System::ET_W, x1p, x2, x3) = f[vf::lbm::dir::DIR_P00]; - (*this->nonLocalDistributionsF)(D3Q27System::ET_S, x1, x2p, x3) = f[vf::lbm::dir::DIR_0P0]; - (*this->nonLocalDistributionsF)(D3Q27System::ET_B, x1, x2, x3p) = f[vf::lbm::dir::DIR_00P]; - (*this->nonLocalDistributionsF)(D3Q27System::ET_SW, x1p, x2p, x3) = f[vf::lbm::dir::DIR_PP0]; - (*this->nonLocalDistributionsF)(D3Q27System::ET_SE, x1, x2p, x3) = f[vf::lbm::dir::DIR_MP0]; - (*this->nonLocalDistributionsF)(D3Q27System::ET_BW, x1p, x2, x3p) = f[vf::lbm::dir::DIR_P0P]; - (*this->nonLocalDistributionsF)(D3Q27System::ET_BE, x1, x2, x3p) = f[vf::lbm::dir::DIR_M0P]; - (*this->nonLocalDistributionsF)(D3Q27System::ET_BS, x1, x2p, x3p) = f[vf::lbm::dir::DIR_0PP]; - (*this->nonLocalDistributionsF)(D3Q27System::ET_BN, x1, x2, x3p) = f[vf::lbm::dir::DIR_0MP]; - (*this->nonLocalDistributionsF)(D3Q27System::ET_BSW, x1p, x2p, x3p) = f[vf::lbm::dir::DIR_PPP]; - (*this->nonLocalDistributionsF)(D3Q27System::ET_BSE, x1, x2p, x3p) = f[vf::lbm::dir::DIR_MPP]; - (*this->nonLocalDistributionsF)(D3Q27System::ET_BNW, x1p, x2, x3p) = f[vf::lbm::dir::DIR_PMP]; - (*this->nonLocalDistributionsF)(D3Q27System::ET_BNE, x1, x2, x3p) = f[vf::lbm::dir::DIR_MMP]; + (*this->restDistributionsF)(x1, x2, x3) = f[vf::lbm::dir::d000]; + + (*this->localDistributionsF)(D3Q27System::ET_E, x1, x2, x3) = f[vf::lbm::dir::dM00]; + (*this->localDistributionsF)(D3Q27System::ET_N, x1, x2, x3) = f[vf::lbm::dir::d0M0]; + (*this->localDistributionsF)(D3Q27System::ET_T, x1, x2, x3) = f[vf::lbm::dir::d00M]; + (*this->localDistributionsF)(D3Q27System::ET_NE, x1, x2, x3) = f[vf::lbm::dir::dMM0]; + (*this->localDistributionsF)(D3Q27System::ET_NW, x1p, x2, x3) = f[vf::lbm::dir::dPM0]; + (*this->localDistributionsF)(D3Q27System::ET_TE, x1, x2, x3) = f[vf::lbm::dir::dM0M]; + (*this->localDistributionsF)(D3Q27System::ET_TW, x1p, x2, x3) = f[vf::lbm::dir::dP0M]; + (*this->localDistributionsF)(D3Q27System::ET_TN, x1, x2, x3) = f[vf::lbm::dir::d0MM]; + (*this->localDistributionsF)(D3Q27System::ET_TS, x1, x2p, x3) = f[vf::lbm::dir::d0PM]; + (*this->localDistributionsF)(D3Q27System::ET_TNE, x1, x2, x3) = f[vf::lbm::dir::dMMM]; + (*this->localDistributionsF)(D3Q27System::ET_TNW, x1p, x2, x3) = f[vf::lbm::dir::dPMM]; + (*this->localDistributionsF)(D3Q27System::ET_TSE, x1, x2p, x3) = f[vf::lbm::dir::dMPM]; + (*this->localDistributionsF)(D3Q27System::ET_TSW, x1p, x2p, x3) = f[vf::lbm::dir::dPPM]; + + (*this->nonLocalDistributionsF)(D3Q27System::ET_W, x1p, x2, x3) = f[vf::lbm::dir::dP00]; + (*this->nonLocalDistributionsF)(D3Q27System::ET_S, x1, x2p, x3) = f[vf::lbm::dir::d0P0]; + (*this->nonLocalDistributionsF)(D3Q27System::ET_B, x1, x2, x3p) = f[vf::lbm::dir::d00P]; + (*this->nonLocalDistributionsF)(D3Q27System::ET_SW, x1p, x2p, x3) = f[vf::lbm::dir::dPP0]; + (*this->nonLocalDistributionsF)(D3Q27System::ET_SE, x1, x2p, x3) = f[vf::lbm::dir::dMP0]; + (*this->nonLocalDistributionsF)(D3Q27System::ET_BW, x1p, x2, x3p) = f[vf::lbm::dir::dP0P]; + (*this->nonLocalDistributionsF)(D3Q27System::ET_BE, x1, x2, x3p) = f[vf::lbm::dir::dM0P]; + (*this->nonLocalDistributionsF)(D3Q27System::ET_BS, x1, x2p, x3p) = f[vf::lbm::dir::d0PP]; + (*this->nonLocalDistributionsF)(D3Q27System::ET_BN, x1, x2, x3p) = f[vf::lbm::dir::d0MP]; + (*this->nonLocalDistributionsF)(D3Q27System::ET_BSW, x1p, x2p, x3p) = f[vf::lbm::dir::dPPP]; + (*this->nonLocalDistributionsF)(D3Q27System::ET_BSE, x1, x2p, x3p) = f[vf::lbm::dir::dMPP]; + (*this->nonLocalDistributionsF)(D3Q27System::ET_BNW, x1p, x2, x3p) = f[vf::lbm::dir::dPMP]; + (*this->nonLocalDistributionsF)(D3Q27System::ET_BNE, x1, x2, x3p) = f[vf::lbm::dir::dMMP]; } @@ -1542,89 +1542,89 @@ void IBsharpInterfaceLBMKernel::calculate(int step) real IBsharpInterfaceLBMKernel::gradX1_phi() { using namespace D3Q27System; - return 3.0 * ((WEIGTH[DIR_PPP] * (((phi[DIR_PPP] - phi[DIR_MMM]) + (phi[DIR_PMM] - phi[DIR_MPP])) + ((phi[DIR_PMP] - phi[DIR_MPM]) + (phi[DIR_PPM] - phi[DIR_MMP]))) + - WEIGTH[DIR_PP0] * (((phi[DIR_P0P] - phi[DIR_M0M]) + (phi[DIR_P0M] - phi[DIR_M0P])) + ((phi[DIR_PM0] - phi[DIR_MP0]) + (phi[DIR_PP0] - phi[DIR_MM0])))) + - +WEIGTH[DIR_0P0] * (phi[DIR_P00] - phi[DIR_M00])); + return 3.0 * ((WEIGTH[dPPP] * (((phi[dPPP] - phi[dMMM]) + (phi[dPMM] - phi[dMPP])) + ((phi[dPMP] - phi[dMPM]) + (phi[dPPM] - phi[dMMP]))) + + WEIGTH[dPP0] * (((phi[dP0P] - phi[dM0M]) + (phi[dP0M] - phi[dM0P])) + ((phi[dPM0] - phi[dMP0]) + (phi[dPP0] - phi[dMM0])))) + + +WEIGTH[d0P0] * (phi[dP00] - phi[dM00])); } real IBsharpInterfaceLBMKernel::gradX2_phi() { using namespace D3Q27System; - return 3.0 * ((WEIGTH[DIR_PPP] * (((phi[DIR_PPP] - phi[DIR_MMM]) - (phi[DIR_PMM] - phi[DIR_MPP])) + ((phi[DIR_PPM] - phi[DIR_MMP]) - (phi[DIR_PMP] - phi[DIR_MPM]))) + - WEIGTH[DIR_PP0] * (((phi[DIR_0PP] - phi[DIR_0MM]) + (phi[DIR_0PM] - phi[DIR_0MP])) + ((phi[DIR_PP0] - phi[DIR_MM0]) - (phi[DIR_PM0] - phi[DIR_MP0])))) + - +WEIGTH[DIR_0P0] * (phi[DIR_0P0] - phi[DIR_0M0])); + return 3.0 * ((WEIGTH[dPPP] * (((phi[dPPP] - phi[dMMM]) - (phi[dPMM] - phi[dMPP])) + ((phi[dPPM] - phi[dMMP]) - (phi[dPMP] - phi[dMPM]))) + + WEIGTH[dPP0] * (((phi[d0PP] - phi[d0MM]) + (phi[d0PM] - phi[d0MP])) + ((phi[dPP0] - phi[dMM0]) - (phi[dPM0] - phi[dMP0])))) + + +WEIGTH[d0P0] * (phi[d0P0] - phi[d0M0])); } real IBsharpInterfaceLBMKernel::gradX3_phi() { using namespace D3Q27System; - return 3.0 * ((WEIGTH[DIR_PPP] * (((phi[DIR_PPP] - phi[DIR_MMM]) - (phi[DIR_PMM] - phi[DIR_MPP])) + ((phi[DIR_PMP] - phi[DIR_MPM]) - (phi[DIR_PPM] - phi[DIR_MMP]))) + - WEIGTH[DIR_PP0] * (((phi[DIR_P0P] - phi[DIR_M0M]) - (phi[DIR_P0M] - phi[DIR_M0P])) + ((phi[DIR_0MP] - phi[DIR_0PM]) + (phi[DIR_0PP] - phi[DIR_0MM])))) + - +WEIGTH[DIR_0P0] * (phi[DIR_00P] - phi[DIR_00M])); + return 3.0 * ((WEIGTH[dPPP] * (((phi[dPPP] - phi[dMMM]) - (phi[dPMM] - phi[dMPP])) + ((phi[dPMP] - phi[dMPM]) - (phi[dPPM] - phi[dMMP]))) + + WEIGTH[dPP0] * (((phi[dP0P] - phi[dM0M]) - (phi[dP0M] - phi[dM0P])) + ((phi[d0MP] - phi[d0PM]) + (phi[d0PP] - phi[d0MM])))) + + +WEIGTH[d0P0] * (phi[d00P] - phi[d00M])); } real IBsharpInterfaceLBMKernel::gradX1_rhoInv(real rhoL, real rhoDIV) { using namespace D3Q27System; - return 3.0 * ((WEIGTH[DIR_PPP] * (((1.0 / (rhoL + rhoDIV * phi[DIR_PPP]) - 1.0 / (rhoL + rhoDIV * phi[DIR_MMM])) + (1.0 / (rhoL + rhoDIV * phi[DIR_PMM]) - 1.0 / (rhoL + rhoDIV * phi[DIR_MPP]))) + - ((1.0 / (rhoL + rhoDIV * phi[DIR_PMP]) - 1.0 / (rhoL + rhoDIV * phi[DIR_MPM])) + (1.0 / (rhoL + rhoDIV * phi[DIR_PPM]) - 1.0 / (rhoL + rhoDIV * phi[DIR_MMP])))) + - WEIGTH[DIR_PP0] * (((1.0 / (rhoL + rhoDIV * phi[DIR_P0P]) - 1.0 / (rhoL + rhoDIV * phi[DIR_M0M])) + (1.0 / (rhoL + rhoDIV * phi[DIR_P0M]) - 1.0 / (rhoL + rhoDIV * phi[DIR_M0P]))) + - ((1.0 / (rhoL + rhoDIV * phi[DIR_PM0]) - 1.0 / (rhoL + rhoDIV * phi[DIR_MP0])) + (1.0 / (rhoL + rhoDIV * phi[DIR_PP0]) - 1.0 / (rhoL + rhoDIV * phi[DIR_MM0]))))) + - +WEIGTH[DIR_0P0] * (1.0 / (rhoL + rhoDIV * phi[DIR_P00]) - 1.0 / (rhoL + rhoDIV * phi[DIR_M00]))); + return 3.0 * ((WEIGTH[dPPP] * (((1.0 / (rhoL + rhoDIV * phi[dPPP]) - 1.0 / (rhoL + rhoDIV * phi[dMMM])) + (1.0 / (rhoL + rhoDIV * phi[dPMM]) - 1.0 / (rhoL + rhoDIV * phi[dMPP]))) + + ((1.0 / (rhoL + rhoDIV * phi[dPMP]) - 1.0 / (rhoL + rhoDIV * phi[dMPM])) + (1.0 / (rhoL + rhoDIV * phi[dPPM]) - 1.0 / (rhoL + rhoDIV * phi[dMMP])))) + + WEIGTH[dPP0] * (((1.0 / (rhoL + rhoDIV * phi[dP0P]) - 1.0 / (rhoL + rhoDIV * phi[dM0M])) + (1.0 / (rhoL + rhoDIV * phi[dP0M]) - 1.0 / (rhoL + rhoDIV * phi[dM0P]))) + + ((1.0 / (rhoL + rhoDIV * phi[dPM0]) - 1.0 / (rhoL + rhoDIV * phi[dMP0])) + (1.0 / (rhoL + rhoDIV * phi[dPP0]) - 1.0 / (rhoL + rhoDIV * phi[dMM0]))))) + + +WEIGTH[d0P0] * (1.0 / (rhoL + rhoDIV * phi[dP00]) - 1.0 / (rhoL + rhoDIV * phi[dM00]))); } real IBsharpInterfaceLBMKernel::gradX2_rhoInv(real rhoL, real rhoDIV) { using namespace D3Q27System; - return 3.0 * ((WEIGTH[DIR_PPP] * (((1.0 / (rhoL + rhoDIV * phi[DIR_PPP]) - 1.0 / (rhoL + rhoDIV * phi[DIR_MMM])) - (1.0 / (rhoL + rhoDIV * phi[DIR_PMM]) - 1.0 / (rhoL + rhoDIV * phi[DIR_MPP]))) + - ((1.0 / (rhoL + rhoDIV * phi[DIR_PPM]) - 1.0 / (rhoL + rhoDIV * phi[DIR_MMP])) - (1.0 / (rhoL + rhoDIV * phi[DIR_PMP]) - 1.0 / (rhoL + rhoDIV * phi[DIR_MPM])))) + - WEIGTH[DIR_PP0] * (((1.0 / (rhoL + rhoDIV * phi[DIR_0PP]) - 1.0 / (rhoL + rhoDIV * phi[DIR_0MM])) + (1.0 / (rhoL + rhoDIV * phi[DIR_0PM]) - 1.0 / (rhoL + rhoDIV * phi[DIR_0MP]))) + - ((1.0 / (rhoL + rhoDIV * phi[DIR_PP0]) - 1.0 / (rhoL + rhoDIV * phi[DIR_MM0])) - (1.0 / (rhoL + rhoDIV * phi[DIR_PM0]) - 1.0 / (rhoL + rhoDIV * phi[DIR_MP0]))))) + - +WEIGTH[DIR_0P0] * (1.0 / (rhoL + rhoDIV * phi[DIR_0P0]) - 1.0 / (rhoL + rhoDIV * phi[DIR_0M0]))); + return 3.0 * ((WEIGTH[dPPP] * (((1.0 / (rhoL + rhoDIV * phi[dPPP]) - 1.0 / (rhoL + rhoDIV * phi[dMMM])) - (1.0 / (rhoL + rhoDIV * phi[dPMM]) - 1.0 / (rhoL + rhoDIV * phi[dMPP]))) + + ((1.0 / (rhoL + rhoDIV * phi[dPPM]) - 1.0 / (rhoL + rhoDIV * phi[dMMP])) - (1.0 / (rhoL + rhoDIV * phi[dPMP]) - 1.0 / (rhoL + rhoDIV * phi[dMPM])))) + + WEIGTH[dPP0] * (((1.0 / (rhoL + rhoDIV * phi[d0PP]) - 1.0 / (rhoL + rhoDIV * phi[d0MM])) + (1.0 / (rhoL + rhoDIV * phi[d0PM]) - 1.0 / (rhoL + rhoDIV * phi[d0MP]))) + + ((1.0 / (rhoL + rhoDIV * phi[dPP0]) - 1.0 / (rhoL + rhoDIV * phi[dMM0])) - (1.0 / (rhoL + rhoDIV * phi[dPM0]) - 1.0 / (rhoL + rhoDIV * phi[dMP0]))))) + + +WEIGTH[d0P0] * (1.0 / (rhoL + rhoDIV * phi[d0P0]) - 1.0 / (rhoL + rhoDIV * phi[d0M0]))); } real IBsharpInterfaceLBMKernel::gradX3_rhoInv(real rhoL, real rhoDIV) { using namespace D3Q27System; - return 3.0 * ((WEIGTH[DIR_PPP] * (((1.0 / (rhoL + rhoDIV * phi[DIR_PPP]) - 1.0 / (rhoL + rhoDIV * phi[DIR_MMM])) - (1.0 / (rhoL + rhoDIV * phi[DIR_PMM]) - 1.0 / (rhoL + rhoDIV * phi[DIR_MPP]))) + - ((1.0 / (rhoL + rhoDIV * phi[DIR_PMP]) - 1.0 / (rhoL + rhoDIV * phi[DIR_MPM])) - (1.0 / (rhoL + rhoDIV * phi[DIR_PPM]) - 1.0 / (rhoL + rhoDIV * phi[DIR_MMP])))) + - WEIGTH[DIR_PP0] * (((1.0 / (rhoL + rhoDIV * phi[DIR_P0P]) - 1.0 / (rhoL + rhoDIV * phi[DIR_M0M])) - (1.0 / (rhoL + rhoDIV * phi[DIR_P0M]) - 1.0 / (rhoL + rhoDIV * phi[DIR_M0P]))) + - ((1.0 / (rhoL + rhoDIV * phi[DIR_0MP]) - 1.0 / (rhoL + rhoDIV * phi[DIR_0PM])) + (1.0 / (rhoL + rhoDIV * phi[DIR_0PP]) - 1.0 / (rhoL + rhoDIV * phi[DIR_0MM]))))) + - +WEIGTH[DIR_0P0] * (1.0 / (rhoL + rhoDIV * phi[DIR_00P]) - 1.0 / (rhoL + rhoDIV * phi[DIR_00M]))); + return 3.0 * ((WEIGTH[dPPP] * (((1.0 / (rhoL + rhoDIV * phi[dPPP]) - 1.0 / (rhoL + rhoDIV * phi[dMMM])) - (1.0 / (rhoL + rhoDIV * phi[dPMM]) - 1.0 / (rhoL + rhoDIV * phi[dMPP]))) + + ((1.0 / (rhoL + rhoDIV * phi[dPMP]) - 1.0 / (rhoL + rhoDIV * phi[dMPM])) - (1.0 / (rhoL + rhoDIV * phi[dPPM]) - 1.0 / (rhoL + rhoDIV * phi[dMMP])))) + + WEIGTH[dPP0] * (((1.0 / (rhoL + rhoDIV * phi[dP0P]) - 1.0 / (rhoL + rhoDIV * phi[dM0M])) - (1.0 / (rhoL + rhoDIV * phi[dP0M]) - 1.0 / (rhoL + rhoDIV * phi[dM0P]))) + + ((1.0 / (rhoL + rhoDIV * phi[d0MP]) - 1.0 / (rhoL + rhoDIV * phi[d0PM])) + (1.0 / (rhoL + rhoDIV * phi[d0PP]) - 1.0 / (rhoL + rhoDIV * phi[d0MM]))))) + + +WEIGTH[d0P0] * (1.0 / (rhoL + rhoDIV * phi[d00P]) - 1.0 / (rhoL + rhoDIV * phi[d00M]))); } real IBsharpInterfaceLBMKernel::gradX1_phi2() { using namespace D3Q27System; - return 3.0 * ((WEIGTH[DIR_PPP] * (((phi2[DIR_PPP] - phi2[DIR_MMM]) + (phi2[DIR_PMM] - phi2[DIR_MPP])) + ((phi2[DIR_PMP] - phi2[DIR_MPM]) + (phi2[DIR_PPM] - phi2[DIR_MMP]))) + - WEIGTH[DIR_PP0] * (((phi2[DIR_P0P] - phi2[DIR_M0M]) + (phi2[DIR_P0M] - phi2[DIR_M0P])) + ((phi2[DIR_PM0] - phi2[DIR_MP0]) + (phi2[DIR_PP0] - phi2[DIR_MM0])))) + - +WEIGTH[DIR_0P0] * (phi2[DIR_P00] - phi2[DIR_M00])); + return 3.0 * ((WEIGTH[dPPP] * (((phi2[dPPP] - phi2[dMMM]) + (phi2[dPMM] - phi2[dMPP])) + ((phi2[dPMP] - phi2[dMPM]) + (phi2[dPPM] - phi2[dMMP]))) + + WEIGTH[dPP0] * (((phi2[dP0P] - phi2[dM0M]) + (phi2[dP0M] - phi2[dM0P])) + ((phi2[dPM0] - phi2[dMP0]) + (phi2[dPP0] - phi2[dMM0])))) + + +WEIGTH[d0P0] * (phi2[dP00] - phi2[dM00])); } real IBsharpInterfaceLBMKernel::gradX2_phi2() { using namespace D3Q27System; - return 3.0 * ((WEIGTH[DIR_PPP] * (((phi2[DIR_PPP] - phi2[DIR_MMM]) - (phi2[DIR_PMM] - phi2[DIR_MPP])) + ((phi2[DIR_PPM] - phi2[DIR_MMP]) - (phi2[DIR_PMP] - phi2[DIR_MPM]))) + - WEIGTH[DIR_PP0] * (((phi2[DIR_0PP] - phi2[DIR_0MM]) + (phi2[DIR_0PM] - phi2[DIR_0MP])) + ((phi2[DIR_PP0] - phi2[DIR_MM0]) - (phi2[DIR_PM0] - phi2[DIR_MP0])))) + - +WEIGTH[DIR_0P0] * (phi2[DIR_0P0] - phi2[DIR_0M0])); + return 3.0 * ((WEIGTH[dPPP] * (((phi2[dPPP] - phi2[dMMM]) - (phi2[dPMM] - phi2[dMPP])) + ((phi2[dPPM] - phi2[dMMP]) - (phi2[dPMP] - phi2[dMPM]))) + + WEIGTH[dPP0] * (((phi2[d0PP] - phi2[d0MM]) + (phi2[d0PM] - phi2[d0MP])) + ((phi2[dPP0] - phi2[dMM0]) - (phi2[dPM0] - phi2[dMP0])))) + + +WEIGTH[d0P0] * (phi2[d0P0] - phi2[d0M0])); } real IBsharpInterfaceLBMKernel::gradX3_phi2() { using namespace D3Q27System; - return 3.0 * ((WEIGTH[DIR_PPP] * (((phi2[DIR_PPP] - phi2[DIR_MMM]) - (phi2[DIR_PMM] - phi2[DIR_MPP])) + ((phi2[DIR_PMP] - phi2[DIR_MPM]) - (phi2[DIR_PPM] - phi2[DIR_MMP]))) + - WEIGTH[DIR_PP0] * (((phi2[DIR_P0P] - phi2[DIR_M0M]) - (phi2[DIR_P0M] - phi2[DIR_M0P])) + ((phi2[DIR_0MP] - phi2[DIR_0PM]) + (phi2[DIR_0PP] - phi2[DIR_0MM])))) + - +WEIGTH[DIR_0P0] * (phi2[DIR_00P] - phi2[DIR_00M])); + return 3.0 * ((WEIGTH[dPPP] * (((phi2[dPPP] - phi2[dMMM]) - (phi2[dPMM] - phi2[dMPP])) + ((phi2[dPMP] - phi2[dMPM]) - (phi2[dPPM] - phi2[dMMP]))) + + WEIGTH[dPP0] * (((phi2[dP0P] - phi2[dM0M]) - (phi2[dP0M] - phi2[dM0P])) + ((phi2[d0MP] - phi2[d0PM]) + (phi2[d0PP] - phi2[d0MM])))) + + +WEIGTH[d0P0] * (phi2[d00P] - phi2[d00M])); } real IBsharpInterfaceLBMKernel::nabla2_phi() { using namespace D3Q27System; real sum = 0.0; - sum += WEIGTH[DIR_PPP] * ((((phi[DIR_PPP] - phi[DIR_000]) + (phi[DIR_MMM] - phi[DIR_000])) + ((phi[DIR_MMP] - phi[DIR_000]) + (phi[DIR_PPM] - phi[DIR_000]))) + (((phi[DIR_MPP] - phi[DIR_000]) + (phi[DIR_PMM] - phi[DIR_000])) + ((phi[DIR_PMP] - phi[DIR_000]) + (phi[DIR_MPM] - phi[DIR_000])))); - sum += WEIGTH[DIR_0PP] * ((((phi[DIR_0PP] - phi[DIR_000]) + (phi[DIR_0MM] - phi[DIR_000])) + ((phi[DIR_0MP] - phi[DIR_000]) + (phi[DIR_0PM] - phi[DIR_000]))) + (((phi[DIR_P0P] - phi[DIR_000]) + (phi[DIR_M0M] - phi[DIR_000])) + ((phi[DIR_M0P] - phi[DIR_000]) + (phi[DIR_P0M] - phi[DIR_000]))) + - (((phi[DIR_PP0] - phi[DIR_000]) + (phi[DIR_MM0] - phi[DIR_000])) + ((phi[DIR_MP0] - phi[DIR_000]) + (phi[DIR_PM0] - phi[DIR_000])))); - sum += WEIGTH[DIR_00P] * (((phi[DIR_00P] - phi[DIR_000]) + (phi[DIR_00M] - phi[DIR_000])) + ((phi[DIR_0P0] - phi[DIR_000]) + (phi[DIR_0M0] - phi[DIR_000])) + ((phi[DIR_P00] - phi[DIR_000]) + (phi[DIR_M00] - phi[DIR_000]))); + sum += WEIGTH[dPPP] * ((((phi[dPPP] - phi[d000]) + (phi[dMMM] - phi[d000])) + ((phi[dMMP] - phi[d000]) + (phi[dPPM] - phi[d000]))) + (((phi[dMPP] - phi[d000]) + (phi[dPMM] - phi[d000])) + ((phi[dPMP] - phi[d000]) + (phi[dMPM] - phi[d000])))); + sum += WEIGTH[d0PP] * ((((phi[d0PP] - phi[d000]) + (phi[d0MM] - phi[d000])) + ((phi[d0MP] - phi[d000]) + (phi[d0PM] - phi[d000]))) + (((phi[dP0P] - phi[d000]) + (phi[dM0M] - phi[d000])) + ((phi[dM0P] - phi[d000]) + (phi[dP0M] - phi[d000]))) + + (((phi[dPP0] - phi[d000]) + (phi[dMM0] - phi[d000])) + ((phi[dMP0] - phi[d000]) + (phi[dPM0] - phi[d000])))); + sum += WEIGTH[d00P] * (((phi[d00P] - phi[d000]) + (phi[d00M] - phi[d000])) + ((phi[d0P0] - phi[d000]) + (phi[d0M0] - phi[d000])) + ((phi[dP00] - phi[d000]) + (phi[dM00] - phi[d000]))); return 6.0 * sum; } @@ -1638,29 +1638,29 @@ real IBsharpInterfaceLBMKernel::computeCurvature_phi() real phiY = gradX2_phi(); real phiZ = gradX3_phi(); real phiXX = - c4o9 * (phi[DIR_P00] - c2o1 * phi[DIR_000] + phi[DIR_M00]) + (c1o9 * (((phi[DIR_PP0] - c2o1 * phi[DIR_0P0] + phi[DIR_MP0]) + (phi[DIR_PM0] - c2o1 * phi[DIR_0M0] + phi[DIR_MM0])) + ((phi[DIR_P0P] - c2o1 * phi[DIR_00P] + phi[DIR_M0P]) + (phi[DIR_P0M] - c2o1 * phi[DIR_00M] + phi[DIR_M0M]))) + - c1o36 * (((phi[DIR_PPP] - c2o1 * phi[DIR_0PP] + phi[DIR_MPP]) + (phi[DIR_PMP] - c2o1 * phi[DIR_0MP] + phi[DIR_MMP])) + ((phi[DIR_PPM] - c2o1 * phi[DIR_0PM] + phi[DIR_MPM]) + (phi[DIR_PMM] - c2o1 * phi[DIR_0MM] + phi[DIR_MMM])))); + c4o9 * (phi[dP00] - c2o1 * phi[d000] + phi[dM00]) + (c1o9 * (((phi[dPP0] - c2o1 * phi[d0P0] + phi[dMP0]) + (phi[dPM0] - c2o1 * phi[d0M0] + phi[dMM0])) + ((phi[dP0P] - c2o1 * phi[d00P] + phi[dM0P]) + (phi[dP0M] - c2o1 * phi[d00M] + phi[dM0M]))) + + c1o36 * (((phi[dPPP] - c2o1 * phi[d0PP] + phi[dMPP]) + (phi[dPMP] - c2o1 * phi[d0MP] + phi[dMMP])) + ((phi[dPPM] - c2o1 * phi[d0PM] + phi[dMPM]) + (phi[dPMM] - c2o1 * phi[d0MM] + phi[dMMM])))); real phiYY = - c4o9 * (phi[DIR_0P0] - c2o1 * phi[DIR_000] + phi[DIR_0M0]) + (c1o9 * (((phi[DIR_PP0] - c2o1 * phi[DIR_P00] + phi[DIR_PM0]) + (phi[DIR_MP0] - c2o1 * phi[DIR_M00] + phi[DIR_MM0])) + ((phi[DIR_0PP] - c2o1 * phi[DIR_00P] + phi[DIR_0MP]) + (phi[DIR_0PM] - c2o1 * phi[DIR_00M] + phi[DIR_0MM]))) + - c1o36 * (((phi[DIR_PPP] - c2o1 * phi[DIR_P0P] + phi[DIR_PMP]) + (phi[DIR_MPM] - c2o1 * phi[DIR_M0M] + phi[DIR_MMM])) + ((phi[DIR_MPP] - c2o1 * phi[DIR_M0P] + phi[DIR_MMP]) + (phi[DIR_PPM] - c2o1 * phi[DIR_P0M] + phi[DIR_PMM])))); + c4o9 * (phi[d0P0] - c2o1 * phi[d000] + phi[d0M0]) + (c1o9 * (((phi[dPP0] - c2o1 * phi[dP00] + phi[dPM0]) + (phi[dMP0] - c2o1 * phi[dM00] + phi[dMM0])) + ((phi[d0PP] - c2o1 * phi[d00P] + phi[d0MP]) + (phi[d0PM] - c2o1 * phi[d00M] + phi[d0MM]))) + + c1o36 * (((phi[dPPP] - c2o1 * phi[dP0P] + phi[dPMP]) + (phi[dMPM] - c2o1 * phi[dM0M] + phi[dMMM])) + ((phi[dMPP] - c2o1 * phi[dM0P] + phi[dMMP]) + (phi[dPPM] - c2o1 * phi[dP0M] + phi[dPMM])))); real phiZZ = - c4o9 * (phi[DIR_00P] - c2o1 * phi[DIR_000] + phi[DIR_00M]) + (c1o9 * (((phi[DIR_M0P] - c2o1 * phi[DIR_M00] + phi[DIR_M0M]) + (phi[DIR_P0P] - c2o1 * phi[DIR_P00] + phi[DIR_P0M])) + ((phi[DIR_0MP] - c2o1 * phi[DIR_0M0] + phi[DIR_0MM]) + (phi[DIR_0PP] - c2o1 * phi[DIR_0P0] + phi[DIR_0PM]))) + - c1o36 * (((phi[DIR_MPP] - c2o1 * phi[DIR_MP0] + phi[DIR_MPM]) + (phi[DIR_PMP] - c2o1 * phi[DIR_PM0] + phi[DIR_PMM])) + ((phi[DIR_MMP] - c2o1 * phi[DIR_MM0] + phi[DIR_MMM]) + (phi[DIR_PPP] - c2o1 * phi[DIR_PP0] + phi[DIR_PPM])))); - real phiXY = c1o4 * (c2o3 * (phi[DIR_MM0] - phi[DIR_PM0] + phi[DIR_PP0] - phi[DIR_MP0]) + c1o6 * ((phi[DIR_MMP] - phi[DIR_PMP] + phi[DIR_PPP] - phi[DIR_MPP]) + (phi[DIR_MMM] - phi[DIR_PMM] + phi[DIR_PPM] - phi[DIR_MPM]))); - real phiXZ = c1o4 * (c2o3 * (phi[DIR_M0M] - phi[DIR_P0M] + phi[DIR_P0P] - phi[DIR_M0P]) + c1o6 * ((phi[DIR_MPM] - phi[DIR_PPM] + phi[DIR_PPP] - phi[DIR_MPP]) + (phi[DIR_MMM] - phi[DIR_PMM] + phi[DIR_PMP] - phi[DIR_MMP]))); - real phiYZ = c1o4 * (c2o3 * (phi[DIR_0MM] - phi[DIR_0MP] + phi[DIR_0PP] - phi[DIR_0PM]) + c1o6 * ((phi[DIR_MMM] - phi[DIR_MMP] + phi[DIR_MPP] - phi[DIR_MPM]) + (phi[DIR_PMM] - phi[DIR_PMP] + phi[DIR_PPP] - phi[DIR_PPM]))); + c4o9 * (phi[d00P] - c2o1 * phi[d000] + phi[d00M]) + (c1o9 * (((phi[dM0P] - c2o1 * phi[dM00] + phi[dM0M]) + (phi[dP0P] - c2o1 * phi[dP00] + phi[dP0M])) + ((phi[d0MP] - c2o1 * phi[d0M0] + phi[d0MM]) + (phi[d0PP] - c2o1 * phi[d0P0] + phi[d0PM]))) + + c1o36 * (((phi[dMPP] - c2o1 * phi[dMP0] + phi[dMPM]) + (phi[dPMP] - c2o1 * phi[dPM0] + phi[dPMM])) + ((phi[dMMP] - c2o1 * phi[dMM0] + phi[dMMM]) + (phi[dPPP] - c2o1 * phi[dPP0] + phi[dPPM])))); + real phiXY = c1o4 * (c2o3 * (phi[dMM0] - phi[dPM0] + phi[dPP0] - phi[dMP0]) + c1o6 * ((phi[dMMP] - phi[dPMP] + phi[dPPP] - phi[dMPP]) + (phi[dMMM] - phi[dPMM] + phi[dPPM] - phi[dMPM]))); + real phiXZ = c1o4 * (c2o3 * (phi[dM0M] - phi[dP0M] + phi[dP0P] - phi[dM0P]) + c1o6 * ((phi[dMPM] - phi[dPPM] + phi[dPPP] - phi[dMPP]) + (phi[dMMM] - phi[dPMM] + phi[dPMP] - phi[dMMP]))); + real phiYZ = c1o4 * (c2o3 * (phi[d0MM] - phi[d0MP] + phi[d0PP] - phi[d0PM]) + c1o6 * ((phi[dMMM] - phi[dMMP] + phi[dMPP] - phi[dMPM]) + (phi[dPMM] - phi[dPMP] + phi[dPPP] - phi[dPPM]))); // non isotropic FD (to be improved): - // real phiX = (phi[DIR_P00] - phi[DIR_M00]) * c1o2; //gradX1_phi(); - // real phiY = (phi[DIR_0P0] - phi[DIR_0M0]) * c1o2; //gradX2_phi(); - // real phiZ = (phi[DIR_00P] - phi[DIR_00M]) * c1o2; //gradX3_phi(); - - // real phiXX = phi[DIR_P00] - c2o1 * phi[DIR_000] + phi[DIR_M00]; - // real phiYY = phi[DIR_0P0] - c2o1 * phi[DIR_000] + phi[DIR_0M0]; - // real phiZZ =( phi[DIR_00P] - c2o1 * phi[DIR_000] + phi[DIR_00M]); - // real phiXY = c1o4 * (phi[DIR_MM0] - phi[DIR_PM0] + phi[DIR_PP0] - phi[DIR_MP0]); - // real phiXZ = c1o4 * (phi[DIR_M0M] - phi[DIR_P0M] + phi[DIR_P0P] - phi[DIR_M0P]); - // real phiYZ = c1o4 * (phi[DIR_0MM] - phi[DIR_0MP] + phi[DIR_0PP] - phi[DIR_0PM]); + // real phiX = (phi[dP00] - phi[dM00]) * c1o2; //gradX1_phi(); + // real phiY = (phi[d0P0] - phi[d0M0]) * c1o2; //gradX2_phi(); + // real phiZ = (phi[d00P] - phi[d00M]) * c1o2; //gradX3_phi(); + + // real phiXX = phi[dP00] - c2o1 * phi[d000] + phi[dM00]; + // real phiYY = phi[d0P0] - c2o1 * phi[d000] + phi[d0M0]; + // real phiZZ =( phi[d00P] - c2o1 * phi[d000] + phi[d00M]); + // real phiXY = c1o4 * (phi[dMM0] - phi[dPM0] + phi[dPP0] - phi[dMP0]); + // real phiXZ = c1o4 * (phi[dM0M] - phi[dP0M] + phi[dP0P] - phi[dM0P]); + // real phiYZ = c1o4 * (phi[d0MM] - phi[d0MP] + phi[d0PP] - phi[d0PM]); // real back= (c2o1 * (phiX * phiY * phiXY + phiX * phiZ * phiXZ + phiY * phiZ * phiYZ) - phiXX * (phiY * phiY + phiZ * phiZ) - phiYY * (phiX * phiX + phiZ * phiZ) - phiZZ * (phiX * phiX + phiY * phiY)) / (c2o1 * pow(phiX * phiX + phiY * phiY + phiZ * phiZ, c3o2)); return (c2o1 * (phiX * phiY * phiXY + phiX * phiZ * phiXZ + phiY * phiZ * phiYZ) - phiXX * (phiY * phiY + phiZ * phiZ) - phiYY * (phiX * phiX + phiZ * phiZ) - phiZZ * (phiX * phiX + phiY * phiY)) / (c2o1 * pow(phiX * phiX + phiY * phiY + phiZ * phiZ, c3o2)); } @@ -1687,35 +1687,35 @@ void IBsharpInterfaceLBMKernel::computePhasefield() int x2p = x2 + 1; int x3p = x3 + 1; - h[DIR_P00] = (*this->localDistributionsH1)(D3Q27System::ET_E, x1, x2, x3); - h[DIR_0P0] = (*this->localDistributionsH1)(D3Q27System::ET_N, x1, x2, x3); - h[DIR_00P] = (*this->localDistributionsH1)(D3Q27System::ET_T, x1, x2, x3); - h[DIR_PP0] = (*this->localDistributionsH1)(D3Q27System::ET_NE, x1, x2, x3); - h[DIR_MP0] = (*this->localDistributionsH1)(D3Q27System::ET_NW, x1p, x2, x3); - h[DIR_P0P] = (*this->localDistributionsH1)(D3Q27System::ET_TE, x1, x2, x3); - h[DIR_M0P] = (*this->localDistributionsH1)(D3Q27System::ET_TW, x1p, x2, x3); - h[DIR_0PP] = (*this->localDistributionsH1)(D3Q27System::ET_TN, x1, x2, x3); - h[DIR_0MP] = (*this->localDistributionsH1)(D3Q27System::ET_TS, x1, x2p, x3); - h[DIR_PPP] = (*this->localDistributionsH1)(D3Q27System::ET_TNE, x1, x2, x3); - h[DIR_MPP] = (*this->localDistributionsH1)(D3Q27System::ET_TNW, x1p, x2, x3); - h[DIR_PMP] = (*this->localDistributionsH1)(D3Q27System::ET_TSE, x1, x2p, x3); - h[DIR_MMP] = (*this->localDistributionsH1)(D3Q27System::ET_TSW, x1p, x2p, x3); - - h[DIR_M00] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_W, x1p, x2, x3); - h[DIR_0M0] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_S, x1, x2p, x3); - h[DIR_00M] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_B, x1, x2, x3p); - h[DIR_MM0] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_SW, x1p, x2p, x3); - h[DIR_PM0] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_SE, x1, x2p, x3); - h[DIR_M0M] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BW, x1p, x2, x3p); - h[DIR_P0M] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BE, x1, x2, x3p); - h[DIR_0MM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BS, x1, x2p, x3p); - h[DIR_0PM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BN, x1, x2, x3p); - h[DIR_MMM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BSW, x1p, x2p, x3p); - h[DIR_PMM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BSE, x1, x2p, x3p); - h[DIR_MPM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BNW, x1p, x2, x3p); - h[DIR_PPM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BNE, x1, x2, x3p); - - h[DIR_000] = (*this->restDistributionsH1)(x1, x2, x3); + h[dP00] = (*this->localDistributionsH1)(D3Q27System::ET_E, x1, x2, x3); + h[d0P0] = (*this->localDistributionsH1)(D3Q27System::ET_N, x1, x2, x3); + h[d00P] = (*this->localDistributionsH1)(D3Q27System::ET_T, x1, x2, x3); + h[dPP0] = (*this->localDistributionsH1)(D3Q27System::ET_NE, x1, x2, x3); + h[dMP0] = (*this->localDistributionsH1)(D3Q27System::ET_NW, x1p, x2, x3); + h[dP0P] = (*this->localDistributionsH1)(D3Q27System::ET_TE, x1, x2, x3); + h[dM0P] = (*this->localDistributionsH1)(D3Q27System::ET_TW, x1p, x2, x3); + h[d0PP] = (*this->localDistributionsH1)(D3Q27System::ET_TN, x1, x2, x3); + h[d0MP] = (*this->localDistributionsH1)(D3Q27System::ET_TS, x1, x2p, x3); + h[dPPP] = (*this->localDistributionsH1)(D3Q27System::ET_TNE, x1, x2, x3); + h[dMPP] = (*this->localDistributionsH1)(D3Q27System::ET_TNW, x1p, x2, x3); + h[dPMP] = (*this->localDistributionsH1)(D3Q27System::ET_TSE, x1, x2p, x3); + h[dMMP] = (*this->localDistributionsH1)(D3Q27System::ET_TSW, x1p, x2p, x3); + + h[dM00] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_W, x1p, x2, x3); + h[d0M0] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_S, x1, x2p, x3); + h[d00M] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_B, x1, x2, x3p); + h[dMM0] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_SW, x1p, x2p, x3); + h[dPM0] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_SE, x1, x2p, x3); + h[dM0M] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BW, x1p, x2, x3p); + h[dP0M] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BE, x1, x2, x3p); + h[d0MM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BS, x1, x2p, x3p); + h[d0PM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BN, x1, x2, x3p); + h[dMMM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BSW, x1p, x2p, x3p); + h[dPMM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BSE, x1, x2p, x3p); + h[dMPM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BNW, x1p, x2, x3p); + h[dPPM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BNE, x1, x2, x3p); + + h[d000] = (*this->restDistributionsH1)(x1, x2, x3); } } } @@ -1728,7 +1728,7 @@ void IBsharpInterfaceLBMKernel::findNeighbors(CbArray3D<real, IndexerX3X2X1>::Cb SPtr<BCArray3D> bcArray = this->getBCSet()->getBCArray(); - phi[DIR_000] = (*ph)(x1, x2, x3); + phi[d000] = (*ph)(x1, x2, x3); for (int k = FSTARTDIR; k <= FENDDIR; k++) { @@ -1747,7 +1747,7 @@ void IBsharpInterfaceLBMKernel::findNeighbors2(CbArray3D<real, IndexerX3X2X1>::C SPtr<BCArray3D> bcArray = this->getBCSet()->getBCArray(); - phi2[DIR_000] = (*ph)(x1, x2, x3); + phi2[d000] = (*ph)(x1, x2, x3); for (int k = FSTARTDIR; k <= FENDDIR; k++) { diff --git a/src/cpu/LiggghtsCoupling/LBM/LiggghtsCouplingLBMKernel.cpp b/src/cpu/LiggghtsCoupling/LBM/LiggghtsCouplingLBMKernel.cpp index ff7a3bf1b19d5efd626f638d47dc05727fc2bc89..44109a14c34745af6a7fbc13ca71fc7cdbb405fb 100644 --- a/src/cpu/LiggghtsCoupling/LBM/LiggghtsCouplingLBMKernel.cpp +++ b/src/cpu/LiggghtsCoupling/LBM/LiggghtsCouplingLBMKernel.cpp @@ -17,10 +17,10 @@ // uPart[2] = (*particleData)(x1, x2, x3)->uPart[2]; // // D3Q27System::calcIncompFeq(fEqSolid, drho, uPart[0], uPart[1], uPart[2]); -// real rhoPhaseField = (phi[DIR_000] > c1o2) ? c1o1 : c1o1 / densityRatio; +// real rhoPhaseField = (phi[d000] > c1o2) ? c1o1 : c1o1 / densityRatio; // if ((*particleData)(x1, x2, x3)->solidFraction > SOLFRAC_MAX) { -// double const bb0 = fEq[vf::lbm::dir::DIR_000] - fEqSolid[vf::lbm::dir::DIR_000]; -// f[vf::lbm::dir::DIR_000] = fPre[vf::lbm::dir::DIR_000] + bb0; +// double const bb0 = fEq[vf::lbm::dir::d000] - fEqSolid[vf::lbm::dir::d000]; +// f[vf::lbm::dir::d000] = fPre[vf::lbm::dir::d000] + bb0; // for (int iPop = D3Q27System::FSTARTDIR; iPop <= D3Q27System::FENDDIR; iPop++) { // const int iOpp = D3Q27System::INVDIR[iPop]; // double const bb = ((fPre[iOpp] - fEq[iOpp]) - (fPre[iPop] - fEqSolid[iPop])); @@ -42,8 +42,8 @@ // // #endif // double const oneMinB = 1. - B; // -// double const bb0 = fEq[vf::lbm::dir::DIR_000] - fEqSolid[vf::lbm::dir::DIR_000]; -// f[vf::lbm::dir::DIR_000] = fPre[vf::lbm::dir::DIR_000] + oneMinB * (f[vf::lbm::dir::DIR_000] - fPre[vf::lbm::dir::DIR_000]) + B * bb0; +// double const bb0 = fEq[vf::lbm::dir::d000] - fEqSolid[vf::lbm::dir::d000]; +// f[vf::lbm::dir::d000] = fPre[vf::lbm::dir::d000] + oneMinB * (f[vf::lbm::dir::d000] - fPre[vf::lbm::dir::d000]) + B * bb0; // // for (int iPop = D3Q27System::FSTARTDIR; iPop <= D3Q27System::FENDDIR; iPop++) { // int const iOpp = D3Q27System::INVDIR[iPop]; @@ -59,34 +59,34 @@ // } // } /* if solidFraction > SOLFRAC_MAX */ // -// // (*this->restDistributionsF)(x1, x2, x3) = f[vf::lbm::dir::DIR_000]; +// // (*this->restDistributionsF)(x1, x2, x3) = f[vf::lbm::dir::d000]; // -// // (*this->localDistributionsF)(D3Q27System::ET_E, x1, x2, x3) = f[vf::lbm::dir::DIR_M00]; -// // (*this->localDistributionsF)(D3Q27System::ET_N, x1, x2, x3) = f[vf::lbm::dir::DIR_0M0]; -// // (*this->localDistributionsF)(D3Q27System::ET_T, x1, x2, x3) = f[vf::lbm::dir::DIR_00M]; -// // (*this->localDistributionsF)(D3Q27System::ET_NE, x1, x2, x3) = f[vf::lbm::dir::DIR_MM0]; -// // (*this->localDistributionsF)(D3Q27System::ET_NW, x1p, x2, x3) = f[vf::lbm::dir::DIR_PM0]; -// // (*this->localDistributionsF)(D3Q27System::ET_TE, x1, x2, x3) = f[vf::lbm::dir::DIR_M0M]; -// // (*this->localDistributionsF)(D3Q27System::ET_TW, x1p, x2, x3) = f[vf::lbm::dir::DIR_P0M]; -// // (*this->localDistributionsF)(D3Q27System::ET_TN, x1, x2, x3) = f[vf::lbm::dir::DIR_0MM]; -// // (*this->localDistributionsF)(D3Q27System::ET_TS, x1, x2p, x3) = f[vf::lbm::dir::DIR_0PM]; -// // (*this->localDistributionsF)(D3Q27System::ET_TNE, x1, x2, x3) = f[vf::lbm::dir::DIR_MMM]; -// // (*this->localDistributionsF)(D3Q27System::ET_TNW, x1p, x2, x3) = f[vf::lbm::dir::DIR_PMM]; -// // (*this->localDistributionsF)(D3Q27System::ET_TSE, x1, x2p, x3) = f[vf::lbm::dir::DIR_MPM]; -// // (*this->localDistributionsF)(D3Q27System::ET_TSW, x1p, x2p, x3) = f[vf::lbm::dir::DIR_PPM]; +// // (*this->localDistributionsF)(D3Q27System::ET_E, x1, x2, x3) = f[vf::lbm::dir::dM00]; +// // (*this->localDistributionsF)(D3Q27System::ET_N, x1, x2, x3) = f[vf::lbm::dir::d0M0]; +// // (*this->localDistributionsF)(D3Q27System::ET_T, x1, x2, x3) = f[vf::lbm::dir::d00M]; +// // (*this->localDistributionsF)(D3Q27System::ET_NE, x1, x2, x3) = f[vf::lbm::dir::dMM0]; +// // (*this->localDistributionsF)(D3Q27System::ET_NW, x1p, x2, x3) = f[vf::lbm::dir::dPM0]; +// // (*this->localDistributionsF)(D3Q27System::ET_TE, x1, x2, x3) = f[vf::lbm::dir::dM0M]; +// // (*this->localDistributionsF)(D3Q27System::ET_TW, x1p, x2, x3) = f[vf::lbm::dir::dP0M]; +// // (*this->localDistributionsF)(D3Q27System::ET_TN, x1, x2, x3) = f[vf::lbm::dir::d0MM]; +// // (*this->localDistributionsF)(D3Q27System::ET_TS, x1, x2p, x3) = f[vf::lbm::dir::d0PM]; +// // (*this->localDistributionsF)(D3Q27System::ET_TNE, x1, x2, x3) = f[vf::lbm::dir::dMMM]; +// // (*this->localDistributionsF)(D3Q27System::ET_TNW, x1p, x2, x3) = f[vf::lbm::dir::dPMM]; +// // (*this->localDistributionsF)(D3Q27System::ET_TSE, x1, x2p, x3) = f[vf::lbm::dir::dMPM]; +// // (*this->localDistributionsF)(D3Q27System::ET_TSW, x1p, x2p, x3) = f[vf::lbm::dir::dPPM]; // -// // (*this->nonLocalDistributionsF)(D3Q27System::ET_W, x1p, x2, x3) = f[vf::lbm::dir::DIR_P00]; -// // (*this->nonLocalDistributionsF)(D3Q27System::ET_S, x1, x2p, x3) = f[vf::lbm::dir::DIR_0P0]; -// // (*this->nonLocalDistributionsF)(D3Q27System::ET_B, x1, x2, x3p) = f[vf::lbm::dir::DIR_00P]; -// // (*this->nonLocalDistributionsF)(D3Q27System::ET_SW, x1p, x2p, x3) = f[vf::lbm::dir::DIR_PP0]; -// // (*this->nonLocalDistributionsF)(D3Q27System::ET_SE, x1, x2p, x3) = f[vf::lbm::dir::DIR_MP0]; -// // (*this->nonLocalDistributionsF)(D3Q27System::ET_BW, x1p, x2, x3p) = f[vf::lbm::dir::DIR_P0P]; -// // (*this->nonLocalDistributionsF)(D3Q27System::ET_BE, x1, x2, x3p) = f[vf::lbm::dir::DIR_M0P]; -// // (*this->nonLocalDistributionsF)(D3Q27System::ET_BS, x1, x2p, x3p) = f[vf::lbm::dir::DIR_0PP]; -// // (*this->nonLocalDistributionsF)(D3Q27System::ET_BN, x1, x2, x3p) = f[vf::lbm::dir::DIR_0MP]; -// // (*this->nonLocalDistributionsF)(D3Q27System::ET_BSW, x1p, x2p, x3p) = f[vf::lbm::dir::DIR_PPP]; -// // (*this->nonLocalDistributionsF)(D3Q27System::ET_BSE, x1, x2p, x3p) = f[vf::lbm::dir::DIR_MPP]; -// // (*this->nonLocalDistributionsF)(D3Q27System::ET_BNW, x1p, x2, x3p) = f[vf::lbm::dir::DIR_PMP]; -// // (*this->nonLocalDistributionsF)(D3Q27System::ET_BNE, x1, x2, x3p) = f[vf::lbm::dir::DIR_MMP]; +// // (*this->nonLocalDistributionsF)(D3Q27System::ET_W, x1p, x2, x3) = f[vf::lbm::dir::dP00]; +// // (*this->nonLocalDistributionsF)(D3Q27System::ET_S, x1, x2p, x3) = f[vf::lbm::dir::d0P0]; +// // (*this->nonLocalDistributionsF)(D3Q27System::ET_B, x1, x2, x3p) = f[vf::lbm::dir::d00P]; +// // (*this->nonLocalDistributionsF)(D3Q27System::ET_SW, x1p, x2p, x3) = f[vf::lbm::dir::dPP0]; +// // (*this->nonLocalDistributionsF)(D3Q27System::ET_SE, x1, x2p, x3) = f[vf::lbm::dir::dMP0]; +// // (*this->nonLocalDistributionsF)(D3Q27System::ET_BW, x1p, x2, x3p) = f[vf::lbm::dir::dP0P]; +// // (*this->nonLocalDistributionsF)(D3Q27System::ET_BE, x1, x2, x3p) = f[vf::lbm::dir::dM0P]; +// // (*this->nonLocalDistributionsF)(D3Q27System::ET_BS, x1, x2p, x3p) = f[vf::lbm::dir::d0PP]; +// // (*this->nonLocalDistributionsF)(D3Q27System::ET_BN, x1, x2, x3p) = f[vf::lbm::dir::d0MP]; +// // (*this->nonLocalDistributionsF)(D3Q27System::ET_BSW, x1p, x2p, x3p) = f[vf::lbm::dir::dPPP]; +// // (*this->nonLocalDistributionsF)(D3Q27System::ET_BSE, x1, x2p, x3p) = f[vf::lbm::dir::dMPP]; +// // (*this->nonLocalDistributionsF)(D3Q27System::ET_BNW, x1p, x2, x3p) = f[vf::lbm::dir::dPMP]; +// // (*this->nonLocalDistributionsF)(D3Q27System::ET_BNE, x1, x2, x3p) = f[vf::lbm::dir::dMMP]; // //} //} \ No newline at end of file diff --git a/src/cpu/LiggghtsCoupling/Parallel/LiggghtsPartitioningGridVisitor.cpp b/src/cpu/LiggghtsCoupling/Parallel/LiggghtsPartitioningGridVisitor.cpp index 487077f080205cb33ca11748d1f611ca1f1a423d..ad192bf91868a321577f4e79f0729b2947bb0411 100644 --- a/src/cpu/LiggghtsCoupling/Parallel/LiggghtsPartitioningGridVisitor.cpp +++ b/src/cpu/LiggghtsCoupling/Parallel/LiggghtsPartitioningGridVisitor.cpp @@ -34,8 +34,8 @@ #include <comm.h> #include "LiggghtsPartitioningGridVisitor.h" -#include "VirtualFluidsCore/Simulation/Grid3D.h" -#include "VirtualFluidsCore/Simulation/Block3D.h" +#include "cpu/core/Simulation/Grid3D.h" +#include "cpu/core/Simulation/Block3D.h" LiggghtsPartitioningGridVisitor::LiggghtsPartitioningGridVisitor(int nx, int ny, int nz, LAMMPS_NS::LAMMPS *lmp) : nx(nx), ny(ny), nz(nz), lmp(*lmp) { diff --git a/src/cpu/LiggghtsCoupling/Parallel/LiggghtsPartitioningGridVisitor.h b/src/cpu/LiggghtsCoupling/Parallel/LiggghtsPartitioningGridVisitor.h index 6fb5560ad7a93ca13005a24fcf976d4019576dd1..02a44807604cb7b122ec0a00a54dd90bc56b9ae6 100644 --- a/src/cpu/LiggghtsCoupling/Parallel/LiggghtsPartitioningGridVisitor.h +++ b/src/cpu/LiggghtsCoupling/Parallel/LiggghtsPartitioningGridVisitor.h @@ -36,7 +36,7 @@ #include <lammps.h> #include <vector> #include "basics/PointerDefinitions.h" -#include "VirtualFluidsCore/Visitors/Grid3DVisitor.h" +#include "cpu/core/Visitors/Grid3DVisitor.h" class LiggghtsCouplingWrapper; class Grid3D; diff --git a/src/cpu/MultiphaseFlow/BoundaryConditions/MultiphaseNoSlipBCStrategy.cpp b/src/cpu/MultiphaseFlow/BoundaryConditions/MultiphaseNoSlipBCStrategy.cpp index d438f80f53fcefd553813b0c9517e0fe545af96f..b9651628513343198190e3632c07a3f14e74d867 100644 --- a/src/cpu/MultiphaseFlow/BoundaryConditions/MultiphaseNoSlipBCStrategy.cpp +++ b/src/cpu/MultiphaseFlow/BoundaryConditions/MultiphaseNoSlipBCStrategy.cpp @@ -69,10 +69,10 @@ void MultiphaseNoSlipBCStrategy::applyBC() real h2[D3Q27System::ENDF + 1]; //LBMReal feq[D3Q27System::ENDF+1]; //LBMReal heq[D3Q27System::ENDF+1]; - distributions ->getDistributionInv(f, x1, x2, x3); + distributions ->getPostCollisionDistribution(f, x1, x2, x3); if (distributionsH2) - distributionsH2->getDistributionInv(h2, x1, x2, x3); - distributionsH->getDistributionInv(h, x1, x2, x3); + distributionsH2->getPostCollisionDistribution(h2, x1, x2, x3); + distributionsH->getPostCollisionDistribution(h, x1, x2, x3); // LBMReal phi, vx1, vx2, vx3, p1; // D3Q27System::calcDensity(h, phi); @@ -88,16 +88,16 @@ void MultiphaseNoSlipBCStrategy::applyBC() //quadratic bounce back const int invDir = D3Q27System::INVDIR[fdir]; real fReturn = f[invDir]; - //distributions->setDistributionForDirection(fReturn, x1+D3Q27System::DX1[invDir], x2+D3Q27System::DX2[invDir], x3+D3Q27System::DX3[invDir], fdir); - distributions->setDistributionForDirection(fReturn, x1, x2, x3, invDir);//delay BB + //distributions->setPostCollisionDistributionForDirection(fReturn, x1+D3Q27System::DX1[invDir], x2+D3Q27System::DX2[invDir], x3+D3Q27System::DX3[invDir], fdir); + distributions->setPostCollisionDistributionForDirection(fReturn, x1, x2, x3, invDir);//delay BB real hReturn = h[invDir]; - // distributionsH->setDistributionForDirection(hReturn, x1+D3Q27System::DX1[invDir], x2+D3Q27System::DX2[invDir], x3+D3Q27System::DX3[invDir], fdir); - distributionsH->setDistributionForDirection(hReturn, x1, x2, x3, invDir);//delay BB + // distributionsH->setPostCollisionDistributionForDirection(hReturn, x1+D3Q27System::DX1[invDir], x2+D3Q27System::DX2[invDir], x3+D3Q27System::DX3[invDir], fdir); + distributionsH->setPostCollisionDistributionForDirection(hReturn, x1, x2, x3, invDir);//delay BB if (distributionsH2) { real h2Return = h2[invDir]; - distributionsH2->setDistributionForDirection(h2Return, x1, x2, x3, invDir);//delay BB - // distributionsH2->setDistributionForDirection(h2Return, x1 + D3Q27System::DX1[invDir], x2 + D3Q27System::DX2[invDir], x3 + D3Q27System::DX3[invDir], fdir); + distributionsH2->setPostCollisionDistributionForDirection(h2Return, x1, x2, x3, invDir);//delay BB + // distributionsH2->setPostCollisionDistributionForDirection(h2Return, x1 + D3Q27System::DX1[invDir], x2 + D3Q27System::DX2[invDir], x3 + D3Q27System::DX3[invDir], fdir); } } diff --git a/src/cpu/MultiphaseFlow/BoundaryConditions/MultiphaseNonReflectingOutflowBCStrategy.cpp b/src/cpu/MultiphaseFlow/BoundaryConditions/MultiphaseNonReflectingOutflowBCStrategy.cpp index aae7dec82bde0bd3477558fd937f4058a26eddd0..6f858e837e1d8eeea6c10927338c9a7a64890d32 100644 --- a/src/cpu/MultiphaseFlow/BoundaryConditions/MultiphaseNonReflectingOutflowBCStrategy.cpp +++ b/src/cpu/MultiphaseFlow/BoundaryConditions/MultiphaseNonReflectingOutflowBCStrategy.cpp @@ -87,33 +87,33 @@ void MultiphaseNonReflectingOutflowBCStrategy::applyBC() int direction = -1; // flag points in direction of fluid - if (bcPtr->hasDensityBoundaryFlag(DIR_P00)) { + if (bcPtr->hasDensityBoundaryFlag(dP00)) { nx1 += 1; - direction = DIR_P00; - } else if (bcPtr->hasDensityBoundaryFlag(DIR_M00)) { + direction = dP00; + } else if (bcPtr->hasDensityBoundaryFlag(dM00)) { nx1 -= 1; - direction = DIR_M00; - } else if (bcPtr->hasDensityBoundaryFlag(DIR_0P0)) { + direction = dM00; + } else if (bcPtr->hasDensityBoundaryFlag(d0P0)) { nx2 += 1; - direction = DIR_0P0; - } else if (bcPtr->hasDensityBoundaryFlag(DIR_0M0)) { + direction = d0P0; + } else if (bcPtr->hasDensityBoundaryFlag(d0M0)) { nx2 -= 1; - direction = DIR_0M0; - } else if (bcPtr->hasDensityBoundaryFlag(DIR_00P)) { + direction = d0M0; + } else if (bcPtr->hasDensityBoundaryFlag(d00P)) { nx3 += 1; - direction = DIR_00P; - } else if (bcPtr->hasDensityBoundaryFlag(DIR_00M)) { + direction = d00P; + } else if (bcPtr->hasDensityBoundaryFlag(d00M)) { nx3 -= 1; - direction = DIR_00M; + direction = d00M; } else UB_THROW(UbException(UB_EXARGS, "Danger...no orthogonal BC-Flag on density boundary...")); - distributions->getDistribution(f, x1, x2, x3); - distributions->getDistribution(ftemp, nx1, nx2, nx3); - distributionsH->getDistribution(h, x1, x2, x3); - distributionsH->getDistribution(htemp, nx1, nx2, nx3); - distributionsH2->getDistribution(h2, x1, x2, x3); - distributionsH2->getDistribution(h2temp, nx1, nx2, nx3); + distributions->getPreCollisionDistribution(f, x1, x2, x3); + distributions->getPreCollisionDistribution(ftemp, nx1, nx2, nx3); + distributionsH->getPreCollisionDistribution(h, x1, x2, x3); + distributionsH->getPreCollisionDistribution(htemp, nx1, nx2, nx3); + distributionsH2->getPreCollisionDistribution(h2, x1, x2, x3); + distributionsH2->getPreCollisionDistribution(h2temp, nx1, nx2, nx3); real /* phi,*/ p1, vx1, vx2, vx3; @@ -122,375 +122,375 @@ void MultiphaseNonReflectingOutflowBCStrategy::applyBC() calcMacrosFct(f, p1, vx1, vx2, vx3); switch (direction) { - case DIR_P00: - f[DIR_P00] = ftemp[DIR_P00] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * f[DIR_P00]; - f[DIR_PP0] = ftemp[DIR_PP0] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * f[DIR_PP0]; - f[DIR_PM0] = ftemp[DIR_PM0] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * f[DIR_PM0]; - f[DIR_P0P] = ftemp[DIR_P0P] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * f[DIR_P0P]; - f[DIR_P0M] = ftemp[DIR_P0M] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * f[DIR_P0M]; - f[DIR_PPP] = ftemp[DIR_PPP] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * f[DIR_PPP]; - f[DIR_PMP] = ftemp[DIR_PMP] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * f[DIR_PMP]; - f[DIR_PPM] = ftemp[DIR_PPM] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * f[DIR_PPM]; - f[DIR_PMM] = ftemp[DIR_PMM] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * f[DIR_PMM]; - - distributions->setDistributionInvForDirection(f[DIR_P00], x1 + DX1[DIR_M00], x2 + DX2[DIR_M00], x3 + DX3[DIR_M00], DIR_M00); - distributions->setDistributionInvForDirection(f[DIR_PP0], x1 + DX1[DIR_MM0], x2 + DX2[DIR_MM0], x3 + DX3[DIR_MM0], DIR_MM0); - distributions->setDistributionInvForDirection(f[DIR_PM0], x1 + DX1[DIR_MP0], x2 + DX2[DIR_MP0], x3 + DX3[DIR_MP0], DIR_MP0); - distributions->setDistributionInvForDirection(f[DIR_P0P], x1 + DX1[DIR_M0M], x2 + DX2[DIR_M0M], x3 + DX3[DIR_M0M], DIR_M0M); - distributions->setDistributionInvForDirection(f[DIR_P0M], x1 + DX1[DIR_M0P], x2 + DX2[DIR_M0P], x3 + DX3[DIR_M0P], DIR_M0P); - distributions->setDistributionInvForDirection(f[DIR_PPP], x1 + DX1[DIR_MMM], x2 + DX2[DIR_MMM], x3 + DX3[DIR_MMM], DIR_MMM); - distributions->setDistributionInvForDirection(f[DIR_PMP], x1 + DX1[DIR_MPM], x2 + DX2[DIR_MPM], x3 + DX3[DIR_MPM], DIR_MPM); - distributions->setDistributionInvForDirection(f[DIR_PPM], x1 + DX1[DIR_MMP], x2 + DX2[DIR_MMP], x3 + DX3[DIR_MMP], DIR_MMP); - distributions->setDistributionInvForDirection(f[DIR_PMM], x1 + DX1[DIR_MPP], x2 + DX2[DIR_MPP], x3 + DX3[DIR_MPP], DIR_MPP); - - h[DIR_P00] = htemp[DIR_P00] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * h[DIR_P00]; - h[DIR_PP0] = htemp[DIR_PP0] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * h[DIR_PP0]; - h[DIR_PM0] = htemp[DIR_PM0] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * h[DIR_PM0]; - h[DIR_P0P] = htemp[DIR_P0P] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * h[DIR_P0P]; - h[DIR_P0M] = htemp[DIR_P0M] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * h[DIR_P0M]; - h[DIR_PPP] = htemp[DIR_PPP] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * h[DIR_PPP]; - h[DIR_PMP] = htemp[DIR_PMP] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * h[DIR_PMP]; - h[DIR_PPM] = htemp[DIR_PPM] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * h[DIR_PPM]; - h[DIR_PMM] = htemp[DIR_PMM] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * h[DIR_PMM]; - - distributionsH->setDistributionInvForDirection(h[DIR_P00], x1 + DX1[DIR_M00], x2 + DX2[DIR_M00], x3 + DX3[DIR_M00], DIR_M00); - distributionsH->setDistributionInvForDirection(h[DIR_PP0], x1 + DX1[DIR_MM0], x2 + DX2[DIR_MM0], x3 + DX3[DIR_MM0], DIR_MM0); - distributionsH->setDistributionInvForDirection(h[DIR_PM0], x1 + DX1[DIR_MP0], x2 + DX2[DIR_MP0], x3 + DX3[DIR_MP0], DIR_MP0); - distributionsH->setDistributionInvForDirection(h[DIR_P0P], x1 + DX1[DIR_M0M], x2 + DX2[DIR_M0M], x3 + DX3[DIR_M0M], DIR_M0M); - distributionsH->setDistributionInvForDirection(h[DIR_P0M], x1 + DX1[DIR_M0P], x2 + DX2[DIR_M0P], x3 + DX3[DIR_M0P], DIR_M0P); - distributionsH->setDistributionInvForDirection(h[DIR_PPP], x1 + DX1[DIR_MMM], x2 + DX2[DIR_MMM], x3 + DX3[DIR_MMM], DIR_MMM); - distributionsH->setDistributionInvForDirection(h[DIR_PMP], x1 + DX1[DIR_MPM], x2 + DX2[DIR_MPM], x3 + DX3[DIR_MPM], DIR_MPM); - distributionsH->setDistributionInvForDirection(h[DIR_PPM], x1 + DX1[DIR_MMP], x2 + DX2[DIR_MMP], x3 + DX3[DIR_MMP], DIR_MMP); - distributionsH->setDistributionInvForDirection(h[DIR_PMM], x1 + DX1[DIR_MPP], x2 + DX2[DIR_MPP], x3 + DX3[DIR_MPP], DIR_MPP); - - h2[DIR_P00] = c1o2 * (h2temp[DIR_P00] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * h2[DIR_P00]); - h2[DIR_PP0] = c1o2 * (h2temp[DIR_PP0] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * h2[DIR_PP0]); - h2[DIR_PM0] = c1o2 * (h2temp[DIR_PM0] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * h2[DIR_PM0]); - h2[DIR_P0P] = c1o2 * (h2temp[DIR_P0P] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * h2[DIR_P0P]); - h2[DIR_P0M] = c1o2 * (h2temp[DIR_P0M] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * h2[DIR_P0M]); - h2[DIR_PPP] = c1o2 * (h2temp[DIR_PPP] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * h2[DIR_PPP]); - h2[DIR_PMP] = c1o2 * (h2temp[DIR_PMP] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * h2[DIR_PMP]); - h2[DIR_PPM] = c1o2 * (h2temp[DIR_PPM] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * h2[DIR_PPM]); - h2[DIR_PMM] = c1o2 * (h2temp[DIR_PMM] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * h2[DIR_PMM]); - - distributionsH2->setDistributionInvForDirection(h2[DIR_P00], x1 + DX1[DIR_M00], x2 + DX2[DIR_M00], x3 + DX3[DIR_M00], DIR_M00); - distributionsH2->setDistributionInvForDirection(h2[DIR_PP0], x1 + DX1[DIR_MM0], x2 + DX2[DIR_MM0], x3 + DX3[DIR_MM0], DIR_MM0); - distributionsH2->setDistributionInvForDirection(h2[DIR_PM0], x1 + DX1[DIR_MP0], x2 + DX2[DIR_MP0], x3 + DX3[DIR_MP0], DIR_MP0); - distributionsH2->setDistributionInvForDirection(h2[DIR_P0P], x1 + DX1[DIR_M0M], x2 + DX2[DIR_M0M], x3 + DX3[DIR_M0M], DIR_M0M); - distributionsH2->setDistributionInvForDirection(h2[DIR_P0M], x1 + DX1[DIR_M0P], x2 + DX2[DIR_M0P], x3 + DX3[DIR_M0P], DIR_M0P); - distributionsH2->setDistributionInvForDirection(h2[DIR_PPP], x1 + DX1[DIR_MMM], x2 + DX2[DIR_MMM], x3 + DX3[DIR_MMM], DIR_MMM); - distributionsH2->setDistributionInvForDirection(h2[DIR_PMP], x1 + DX1[DIR_MPM], x2 + DX2[DIR_MPM], x3 + DX3[DIR_MPM], DIR_MPM); - distributionsH2->setDistributionInvForDirection(h2[DIR_PPM], x1 + DX1[DIR_MMP], x2 + DX2[DIR_MMP], x3 + DX3[DIR_MMP], DIR_MMP); - distributionsH2->setDistributionInvForDirection(h2[DIR_PMM], x1 + DX1[DIR_MPP], x2 + DX2[DIR_MPP], x3 + DX3[DIR_MPP], DIR_MPP); + case dP00: + f[dP00] = ftemp[dP00] * (c1oSqrt3 + vx1) + (c1o1 - c1oSqrt3 - vx1) * f[dP00]; + f[dPP0] = ftemp[dPP0] * (c1oSqrt3 + vx1) + (c1o1 - c1oSqrt3 - vx1) * f[dPP0]; + f[dPM0] = ftemp[dPM0] * (c1oSqrt3 + vx1) + (c1o1 - c1oSqrt3 - vx1) * f[dPM0]; + f[dP0P] = ftemp[dP0P] * (c1oSqrt3 + vx1) + (c1o1 - c1oSqrt3 - vx1) * f[dP0P]; + f[dP0M] = ftemp[dP0M] * (c1oSqrt3 + vx1) + (c1o1 - c1oSqrt3 - vx1) * f[dP0M]; + f[dPPP] = ftemp[dPPP] * (c1oSqrt3 + vx1) + (c1o1 - c1oSqrt3 - vx1) * f[dPPP]; + f[dPMP] = ftemp[dPMP] * (c1oSqrt3 + vx1) + (c1o1 - c1oSqrt3 - vx1) * f[dPMP]; + f[dPPM] = ftemp[dPPM] * (c1oSqrt3 + vx1) + (c1o1 - c1oSqrt3 - vx1) * f[dPPM]; + f[dPMM] = ftemp[dPMM] * (c1oSqrt3 + vx1) + (c1o1 - c1oSqrt3 - vx1) * f[dPMM]; + + distributions->setPreCollisionDistributionForDirection(f[dP00], x1 + DX1[dM00], x2 + DX2[dM00], x3 + DX3[dM00], dM00); + distributions->setPreCollisionDistributionForDirection(f[dPP0], x1 + DX1[dMM0], x2 + DX2[dMM0], x3 + DX3[dMM0], dMM0); + distributions->setPreCollisionDistributionForDirection(f[dPM0], x1 + DX1[dMP0], x2 + DX2[dMP0], x3 + DX3[dMP0], dMP0); + distributions->setPreCollisionDistributionForDirection(f[dP0P], x1 + DX1[dM0M], x2 + DX2[dM0M], x3 + DX3[dM0M], dM0M); + distributions->setPreCollisionDistributionForDirection(f[dP0M], x1 + DX1[dM0P], x2 + DX2[dM0P], x3 + DX3[dM0P], dM0P); + distributions->setPreCollisionDistributionForDirection(f[dPPP], x1 + DX1[dMMM], x2 + DX2[dMMM], x3 + DX3[dMMM], dMMM); + distributions->setPreCollisionDistributionForDirection(f[dPMP], x1 + DX1[dMPM], x2 + DX2[dMPM], x3 + DX3[dMPM], dMPM); + distributions->setPreCollisionDistributionForDirection(f[dPPM], x1 + DX1[dMMP], x2 + DX2[dMMP], x3 + DX3[dMMP], dMMP); + distributions->setPreCollisionDistributionForDirection(f[dPMM], x1 + DX1[dMPP], x2 + DX2[dMPP], x3 + DX3[dMPP], dMPP); + + h[dP00] = htemp[dP00] * (c1oSqrt3 + vx1) + (c1o1 - c1oSqrt3 - vx1) * h[dP00]; + h[dPP0] = htemp[dPP0] * (c1oSqrt3 + vx1) + (c1o1 - c1oSqrt3 - vx1) * h[dPP0]; + h[dPM0] = htemp[dPM0] * (c1oSqrt3 + vx1) + (c1o1 - c1oSqrt3 - vx1) * h[dPM0]; + h[dP0P] = htemp[dP0P] * (c1oSqrt3 + vx1) + (c1o1 - c1oSqrt3 - vx1) * h[dP0P]; + h[dP0M] = htemp[dP0M] * (c1oSqrt3 + vx1) + (c1o1 - c1oSqrt3 - vx1) * h[dP0M]; + h[dPPP] = htemp[dPPP] * (c1oSqrt3 + vx1) + (c1o1 - c1oSqrt3 - vx1) * h[dPPP]; + h[dPMP] = htemp[dPMP] * (c1oSqrt3 + vx1) + (c1o1 - c1oSqrt3 - vx1) * h[dPMP]; + h[dPPM] = htemp[dPPM] * (c1oSqrt3 + vx1) + (c1o1 - c1oSqrt3 - vx1) * h[dPPM]; + h[dPMM] = htemp[dPMM] * (c1oSqrt3 + vx1) + (c1o1 - c1oSqrt3 - vx1) * h[dPMM]; + + distributionsH->setPreCollisionDistributionForDirection(h[dP00], x1 + DX1[dM00], x2 + DX2[dM00], x3 + DX3[dM00], dM00); + distributionsH->setPreCollisionDistributionForDirection(h[dPP0], x1 + DX1[dMM0], x2 + DX2[dMM0], x3 + DX3[dMM0], dMM0); + distributionsH->setPreCollisionDistributionForDirection(h[dPM0], x1 + DX1[dMP0], x2 + DX2[dMP0], x3 + DX3[dMP0], dMP0); + distributionsH->setPreCollisionDistributionForDirection(h[dP0P], x1 + DX1[dM0M], x2 + DX2[dM0M], x3 + DX3[dM0M], dM0M); + distributionsH->setPreCollisionDistributionForDirection(h[dP0M], x1 + DX1[dM0P], x2 + DX2[dM0P], x3 + DX3[dM0P], dM0P); + distributionsH->setPreCollisionDistributionForDirection(h[dPPP], x1 + DX1[dMMM], x2 + DX2[dMMM], x3 + DX3[dMMM], dMMM); + distributionsH->setPreCollisionDistributionForDirection(h[dPMP], x1 + DX1[dMPM], x2 + DX2[dMPM], x3 + DX3[dMPM], dMPM); + distributionsH->setPreCollisionDistributionForDirection(h[dPPM], x1 + DX1[dMMP], x2 + DX2[dMMP], x3 + DX3[dMMP], dMMP); + distributionsH->setPreCollisionDistributionForDirection(h[dPMM], x1 + DX1[dMPP], x2 + DX2[dMPP], x3 + DX3[dMPP], dMPP); + + h2[dP00] = c1o2 * (h2temp[dP00] * (c1oSqrt3 + vx1) + (c1o1 - c1oSqrt3 - vx1) * h2[dP00]); + h2[dPP0] = c1o2 * (h2temp[dPP0] * (c1oSqrt3 + vx1) + (c1o1 - c1oSqrt3 - vx1) * h2[dPP0]); + h2[dPM0] = c1o2 * (h2temp[dPM0] * (c1oSqrt3 + vx1) + (c1o1 - c1oSqrt3 - vx1) * h2[dPM0]); + h2[dP0P] = c1o2 * (h2temp[dP0P] * (c1oSqrt3 + vx1) + (c1o1 - c1oSqrt3 - vx1) * h2[dP0P]); + h2[dP0M] = c1o2 * (h2temp[dP0M] * (c1oSqrt3 + vx1) + (c1o1 - c1oSqrt3 - vx1) * h2[dP0M]); + h2[dPPP] = c1o2 * (h2temp[dPPP] * (c1oSqrt3 + vx1) + (c1o1 - c1oSqrt3 - vx1) * h2[dPPP]); + h2[dPMP] = c1o2 * (h2temp[dPMP] * (c1oSqrt3 + vx1) + (c1o1 - c1oSqrt3 - vx1) * h2[dPMP]); + h2[dPPM] = c1o2 * (h2temp[dPPM] * (c1oSqrt3 + vx1) + (c1o1 - c1oSqrt3 - vx1) * h2[dPPM]); + h2[dPMM] = c1o2 * (h2temp[dPMM] * (c1oSqrt3 + vx1) + (c1o1 - c1oSqrt3 - vx1) * h2[dPMM]); + + distributionsH2->setPreCollisionDistributionForDirection(h2[dP00], x1 + DX1[dM00], x2 + DX2[dM00], x3 + DX3[dM00], dM00); + distributionsH2->setPreCollisionDistributionForDirection(h2[dPP0], x1 + DX1[dMM0], x2 + DX2[dMM0], x3 + DX3[dMM0], dMM0); + distributionsH2->setPreCollisionDistributionForDirection(h2[dPM0], x1 + DX1[dMP0], x2 + DX2[dMP0], x3 + DX3[dMP0], dMP0); + distributionsH2->setPreCollisionDistributionForDirection(h2[dP0P], x1 + DX1[dM0M], x2 + DX2[dM0M], x3 + DX3[dM0M], dM0M); + distributionsH2->setPreCollisionDistributionForDirection(h2[dP0M], x1 + DX1[dM0P], x2 + DX2[dM0P], x3 + DX3[dM0P], dM0P); + distributionsH2->setPreCollisionDistributionForDirection(h2[dPPP], x1 + DX1[dMMM], x2 + DX2[dMMM], x3 + DX3[dMMM], dMMM); + distributionsH2->setPreCollisionDistributionForDirection(h2[dPMP], x1 + DX1[dMPM], x2 + DX2[dMPM], x3 + DX3[dMPM], dMPM); + distributionsH2->setPreCollisionDistributionForDirection(h2[dPPM], x1 + DX1[dMMP], x2 + DX2[dMMP], x3 + DX3[dMMP], dMMP); + distributionsH2->setPreCollisionDistributionForDirection(h2[dPMM], x1 + DX1[dMPP], x2 + DX2[dMPP], x3 + DX3[dMPP], dMPP); break; - case DIR_M00: - f[DIR_M00] = ftemp[DIR_M00] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * f[DIR_M00]; - f[DIR_MP0] = ftemp[DIR_MP0] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * f[DIR_MP0]; - f[DIR_MM0] = ftemp[DIR_MM0] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * f[DIR_MM0]; - f[DIR_M0P] = ftemp[DIR_M0P] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * f[DIR_M0P]; - f[DIR_M0M] = ftemp[DIR_M0M] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * f[DIR_M0M]; - f[DIR_MPP] = ftemp[DIR_MPP] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * f[DIR_MPP]; - f[DIR_MMP] = ftemp[DIR_MMP] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * f[DIR_MMP]; - f[DIR_MPM] = ftemp[DIR_MPM] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * f[DIR_MPM]; - f[DIR_MMM] = ftemp[DIR_MMM] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * f[DIR_MMM]; - - distributions->setDistributionInvForDirection(f[DIR_M00], x1 + DX1[DIR_P00], x2 + DX2[DIR_P00], x3 + DX3[DIR_P00], DIR_P00); - distributions->setDistributionInvForDirection(f[DIR_MP0], x1 + DX1[DIR_PM0], x2 + DX2[DIR_PM0], x3 + DX3[DIR_PM0], DIR_PM0); - distributions->setDistributionInvForDirection(f[DIR_MM0], x1 + DX1[DIR_PP0], x2 + DX2[DIR_PP0], x3 + DX3[DIR_PP0], DIR_PP0); - distributions->setDistributionInvForDirection(f[DIR_M0P], x1 + DX1[DIR_P0M], x2 + DX2[DIR_P0M], x3 + DX3[DIR_P0M], DIR_P0M); - distributions->setDistributionInvForDirection(f[DIR_M0M], x1 + DX1[DIR_P0P], x2 + DX2[DIR_P0P], x3 + DX3[DIR_P0P], DIR_P0P); - distributions->setDistributionInvForDirection(f[DIR_MPP], x1 + DX1[DIR_PMM], x2 + DX2[DIR_PMM], x3 + DX3[DIR_PMM], DIR_PMM); - distributions->setDistributionInvForDirection(f[DIR_MMP], x1 + DX1[DIR_PPM], x2 + DX2[DIR_PPM], x3 + DX3[DIR_PPM], DIR_PPM); - distributions->setDistributionInvForDirection(f[DIR_MPM], x1 + DX1[DIR_PMP], x2 + DX2[DIR_PMP], x3 + DX3[DIR_PMP], DIR_PMP); - distributions->setDistributionInvForDirection(f[DIR_MMM], x1 + DX1[DIR_PPP], x2 + DX2[DIR_PPP], x3 + DX3[DIR_PPP], DIR_PPP); - - h[DIR_M00] = htemp[DIR_M00] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * h[DIR_M00]; - h[DIR_MP0] = htemp[DIR_MP0] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * h[DIR_MP0]; - h[DIR_MM0] = htemp[DIR_MM0] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * h[DIR_MM0]; - h[DIR_M0P] = htemp[DIR_M0P] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * h[DIR_M0P]; - h[DIR_M0M] = htemp[DIR_M0M] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * h[DIR_M0M]; - h[DIR_MPP] = htemp[DIR_MPP] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * h[DIR_MPP]; - h[DIR_MMP] = htemp[DIR_MMP] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * h[DIR_MMP]; - h[DIR_MPM] = htemp[DIR_MPM] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * h[DIR_MPM]; - h[DIR_MMM] = htemp[DIR_MMM] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * h[DIR_MMM]; - - distributionsH->setDistributionInvForDirection(h[DIR_M00], x1 + DX1[DIR_P00], x2 + DX2[DIR_P00], x3 + DX3[DIR_P00], DIR_P00); - distributionsH->setDistributionInvForDirection(h[DIR_MP0], x1 + DX1[DIR_PM0], x2 + DX2[DIR_PM0], x3 + DX3[DIR_PM0], DIR_PM0); - distributionsH->setDistributionInvForDirection(h[DIR_MM0], x1 + DX1[DIR_PP0], x2 + DX2[DIR_PP0], x3 + DX3[DIR_PP0], DIR_PP0); - distributionsH->setDistributionInvForDirection(h[DIR_M0P], x1 + DX1[DIR_P0M], x2 + DX2[DIR_P0M], x3 + DX3[DIR_P0M], DIR_P0M); - distributionsH->setDistributionInvForDirection(h[DIR_M0M], x1 + DX1[DIR_P0P], x2 + DX2[DIR_P0P], x3 + DX3[DIR_P0P], DIR_P0P); - distributionsH->setDistributionInvForDirection(h[DIR_MPP], x1 + DX1[DIR_PMM], x2 + DX2[DIR_PMM], x3 + DX3[DIR_PMM], DIR_PMM); - distributionsH->setDistributionInvForDirection(h[DIR_MMP], x1 + DX1[DIR_PPM], x2 + DX2[DIR_PPM], x3 + DX3[DIR_PPM], DIR_PPM); - distributionsH->setDistributionInvForDirection(h[DIR_MPM], x1 + DX1[DIR_PMP], x2 + DX2[DIR_PMP], x3 + DX3[DIR_PMP], DIR_PMP); - distributionsH->setDistributionInvForDirection(h[DIR_MMM], x1 + DX1[DIR_PPP], x2 + DX2[DIR_PPP], x3 + DX3[DIR_PPP], DIR_PPP); - - h2[DIR_M00] = c1o2 * (htemp[DIR_M00] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * h2[DIR_M00]); - h2[DIR_MP0] = c1o2 * (htemp[DIR_MP0] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * h2[DIR_MP0]); - h2[DIR_MM0] = c1o2 * (htemp[DIR_MM0] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * h2[DIR_MM0]); - h2[DIR_M0P] = c1o2 * (htemp[DIR_M0P] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * h2[DIR_M0P]); - h2[DIR_M0M] = c1o2 * (htemp[DIR_M0M] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * h2[DIR_M0M]); - h2[DIR_MPP] = c1o2 * (htemp[DIR_MPP] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * h2[DIR_MPP]); - h2[DIR_MMP] = c1o2 * (htemp[DIR_MMP] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * h2[DIR_MMP]); - h2[DIR_MPM] = c1o2 * (htemp[DIR_MPM] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * h2[DIR_MPM]); - h2[DIR_MMM] = c1o2 * (htemp[DIR_MMM] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * h2[DIR_MMM]); - - distributionsH2->setDistributionInvForDirection(h2[DIR_M00], x1 + DX1[DIR_P00], x2 + DX2[DIR_P00], x3 + DX3[DIR_P00], DIR_P00); - distributionsH2->setDistributionInvForDirection(h2[DIR_MP0], x1 + DX1[DIR_PM0], x2 + DX2[DIR_PM0], x3 + DX3[DIR_PM0], DIR_PM0); - distributionsH2->setDistributionInvForDirection(h2[DIR_MM0], x1 + DX1[DIR_PP0], x2 + DX2[DIR_PP0], x3 + DX3[DIR_PP0], DIR_PP0); - distributionsH2->setDistributionInvForDirection(h2[DIR_M0P], x1 + DX1[DIR_P0M], x2 + DX2[DIR_P0M], x3 + DX3[DIR_P0M], DIR_P0M); - distributionsH2->setDistributionInvForDirection(h2[DIR_M0M], x1 + DX1[DIR_P0P], x2 + DX2[DIR_P0P], x3 + DX3[DIR_P0P], DIR_P0P); - distributionsH2->setDistributionInvForDirection(h2[DIR_MPP], x1 + DX1[DIR_PMM], x2 + DX2[DIR_PMM], x3 + DX3[DIR_PMM], DIR_PMM); - distributionsH2->setDistributionInvForDirection(h2[DIR_MMP], x1 + DX1[DIR_PPM], x2 + DX2[DIR_PPM], x3 + DX3[DIR_PPM], DIR_PPM); - distributionsH2->setDistributionInvForDirection(h2[DIR_MPM], x1 + DX1[DIR_PMP], x2 + DX2[DIR_PMP], x3 + DX3[DIR_PMP], DIR_PMP); - distributionsH2->setDistributionInvForDirection(h2[DIR_MMM], x1 + DX1[DIR_PPP], x2 + DX2[DIR_PPP], x3 + DX3[DIR_PPP], DIR_PPP); + case dM00: + f[dM00] = ftemp[dM00] * (c1oSqrt3 - vx1) + (c1o1 - c1oSqrt3 + vx1) * f[dM00]; + f[dMP0] = ftemp[dMP0] * (c1oSqrt3 - vx1) + (c1o1 - c1oSqrt3 + vx1) * f[dMP0]; + f[dMM0] = ftemp[dMM0] * (c1oSqrt3 - vx1) + (c1o1 - c1oSqrt3 + vx1) * f[dMM0]; + f[dM0P] = ftemp[dM0P] * (c1oSqrt3 - vx1) + (c1o1 - c1oSqrt3 + vx1) * f[dM0P]; + f[dM0M] = ftemp[dM0M] * (c1oSqrt3 - vx1) + (c1o1 - c1oSqrt3 + vx1) * f[dM0M]; + f[dMPP] = ftemp[dMPP] * (c1oSqrt3 - vx1) + (c1o1 - c1oSqrt3 + vx1) * f[dMPP]; + f[dMMP] = ftemp[dMMP] * (c1oSqrt3 - vx1) + (c1o1 - c1oSqrt3 + vx1) * f[dMMP]; + f[dMPM] = ftemp[dMPM] * (c1oSqrt3 - vx1) + (c1o1 - c1oSqrt3 + vx1) * f[dMPM]; + f[dMMM] = ftemp[dMMM] * (c1oSqrt3 - vx1) + (c1o1 - c1oSqrt3 + vx1) * f[dMMM]; + + distributions->setPreCollisionDistributionForDirection(f[dM00], x1 + DX1[dP00], x2 + DX2[dP00], x3 + DX3[dP00], dP00); + distributions->setPreCollisionDistributionForDirection(f[dMP0], x1 + DX1[dPM0], x2 + DX2[dPM0], x3 + DX3[dPM0], dPM0); + distributions->setPreCollisionDistributionForDirection(f[dMM0], x1 + DX1[dPP0], x2 + DX2[dPP0], x3 + DX3[dPP0], dPP0); + distributions->setPreCollisionDistributionForDirection(f[dM0P], x1 + DX1[dP0M], x2 + DX2[dP0M], x3 + DX3[dP0M], dP0M); + distributions->setPreCollisionDistributionForDirection(f[dM0M], x1 + DX1[dP0P], x2 + DX2[dP0P], x3 + DX3[dP0P], dP0P); + distributions->setPreCollisionDistributionForDirection(f[dMPP], x1 + DX1[dPMM], x2 + DX2[dPMM], x3 + DX3[dPMM], dPMM); + distributions->setPreCollisionDistributionForDirection(f[dMMP], x1 + DX1[dPPM], x2 + DX2[dPPM], x3 + DX3[dPPM], dPPM); + distributions->setPreCollisionDistributionForDirection(f[dMPM], x1 + DX1[dPMP], x2 + DX2[dPMP], x3 + DX3[dPMP], dPMP); + distributions->setPreCollisionDistributionForDirection(f[dMMM], x1 + DX1[dPPP], x2 + DX2[dPPP], x3 + DX3[dPPP], dPPP); + + h[dM00] = htemp[dM00] * (c1oSqrt3 - vx1) + (c1o1 - c1oSqrt3 + vx1) * h[dM00]; + h[dMP0] = htemp[dMP0] * (c1oSqrt3 - vx1) + (c1o1 - c1oSqrt3 + vx1) * h[dMP0]; + h[dMM0] = htemp[dMM0] * (c1oSqrt3 - vx1) + (c1o1 - c1oSqrt3 + vx1) * h[dMM0]; + h[dM0P] = htemp[dM0P] * (c1oSqrt3 - vx1) + (c1o1 - c1oSqrt3 + vx1) * h[dM0P]; + h[dM0M] = htemp[dM0M] * (c1oSqrt3 - vx1) + (c1o1 - c1oSqrt3 + vx1) * h[dM0M]; + h[dMPP] = htemp[dMPP] * (c1oSqrt3 - vx1) + (c1o1 - c1oSqrt3 + vx1) * h[dMPP]; + h[dMMP] = htemp[dMMP] * (c1oSqrt3 - vx1) + (c1o1 - c1oSqrt3 + vx1) * h[dMMP]; + h[dMPM] = htemp[dMPM] * (c1oSqrt3 - vx1) + (c1o1 - c1oSqrt3 + vx1) * h[dMPM]; + h[dMMM] = htemp[dMMM] * (c1oSqrt3 - vx1) + (c1o1 - c1oSqrt3 + vx1) * h[dMMM]; + + distributionsH->setPreCollisionDistributionForDirection(h[dM00], x1 + DX1[dP00], x2 + DX2[dP00], x3 + DX3[dP00], dP00); + distributionsH->setPreCollisionDistributionForDirection(h[dMP0], x1 + DX1[dPM0], x2 + DX2[dPM0], x3 + DX3[dPM0], dPM0); + distributionsH->setPreCollisionDistributionForDirection(h[dMM0], x1 + DX1[dPP0], x2 + DX2[dPP0], x3 + DX3[dPP0], dPP0); + distributionsH->setPreCollisionDistributionForDirection(h[dM0P], x1 + DX1[dP0M], x2 + DX2[dP0M], x3 + DX3[dP0M], dP0M); + distributionsH->setPreCollisionDistributionForDirection(h[dM0M], x1 + DX1[dP0P], x2 + DX2[dP0P], x3 + DX3[dP0P], dP0P); + distributionsH->setPreCollisionDistributionForDirection(h[dMPP], x1 + DX1[dPMM], x2 + DX2[dPMM], x3 + DX3[dPMM], dPMM); + distributionsH->setPreCollisionDistributionForDirection(h[dMMP], x1 + DX1[dPPM], x2 + DX2[dPPM], x3 + DX3[dPPM], dPPM); + distributionsH->setPreCollisionDistributionForDirection(h[dMPM], x1 + DX1[dPMP], x2 + DX2[dPMP], x3 + DX3[dPMP], dPMP); + distributionsH->setPreCollisionDistributionForDirection(h[dMMM], x1 + DX1[dPPP], x2 + DX2[dPPP], x3 + DX3[dPPP], dPPP); + + h2[dM00] = c1o2 * (htemp[dM00] * (c1oSqrt3 - vx1) + (c1o1 - c1oSqrt3 + vx1) * h2[dM00]); + h2[dMP0] = c1o2 * (htemp[dMP0] * (c1oSqrt3 - vx1) + (c1o1 - c1oSqrt3 + vx1) * h2[dMP0]); + h2[dMM0] = c1o2 * (htemp[dMM0] * (c1oSqrt3 - vx1) + (c1o1 - c1oSqrt3 + vx1) * h2[dMM0]); + h2[dM0P] = c1o2 * (htemp[dM0P] * (c1oSqrt3 - vx1) + (c1o1 - c1oSqrt3 + vx1) * h2[dM0P]); + h2[dM0M] = c1o2 * (htemp[dM0M] * (c1oSqrt3 - vx1) + (c1o1 - c1oSqrt3 + vx1) * h2[dM0M]); + h2[dMPP] = c1o2 * (htemp[dMPP] * (c1oSqrt3 - vx1) + (c1o1 - c1oSqrt3 + vx1) * h2[dMPP]); + h2[dMMP] = c1o2 * (htemp[dMMP] * (c1oSqrt3 - vx1) + (c1o1 - c1oSqrt3 + vx1) * h2[dMMP]); + h2[dMPM] = c1o2 * (htemp[dMPM] * (c1oSqrt3 - vx1) + (c1o1 - c1oSqrt3 + vx1) * h2[dMPM]); + h2[dMMM] = c1o2 * (htemp[dMMM] * (c1oSqrt3 - vx1) + (c1o1 - c1oSqrt3 + vx1) * h2[dMMM]); + + distributionsH2->setPreCollisionDistributionForDirection(h2[dM00], x1 + DX1[dP00], x2 + DX2[dP00], x3 + DX3[dP00], dP00); + distributionsH2->setPreCollisionDistributionForDirection(h2[dMP0], x1 + DX1[dPM0], x2 + DX2[dPM0], x3 + DX3[dPM0], dPM0); + distributionsH2->setPreCollisionDistributionForDirection(h2[dMM0], x1 + DX1[dPP0], x2 + DX2[dPP0], x3 + DX3[dPP0], dPP0); + distributionsH2->setPreCollisionDistributionForDirection(h2[dM0P], x1 + DX1[dP0M], x2 + DX2[dP0M], x3 + DX3[dP0M], dP0M); + distributionsH2->setPreCollisionDistributionForDirection(h2[dM0M], x1 + DX1[dP0P], x2 + DX2[dP0P], x3 + DX3[dP0P], dP0P); + distributionsH2->setPreCollisionDistributionForDirection(h2[dMPP], x1 + DX1[dPMM], x2 + DX2[dPMM], x3 + DX3[dPMM], dPMM); + distributionsH2->setPreCollisionDistributionForDirection(h2[dMMP], x1 + DX1[dPPM], x2 + DX2[dPPM], x3 + DX3[dPPM], dPPM); + distributionsH2->setPreCollisionDistributionForDirection(h2[dMPM], x1 + DX1[dPMP], x2 + DX2[dPMP], x3 + DX3[dPMP], dPMP); + distributionsH2->setPreCollisionDistributionForDirection(h2[dMMM], x1 + DX1[dPPP], x2 + DX2[dPPP], x3 + DX3[dPPP], dPPP); break; - case DIR_0P0: - f[DIR_0P0] = ftemp[DIR_0P0] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * f[DIR_0P0]; - f[DIR_PP0] = ftemp[DIR_PP0] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * f[DIR_PP0]; - f[DIR_MP0] = ftemp[DIR_MP0] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * f[DIR_MP0]; - f[DIR_0PP] = ftemp[DIR_0PP] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * f[DIR_0PP]; - f[DIR_0PM] = ftemp[DIR_0PM] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * f[DIR_0PM]; - f[DIR_PPP] = ftemp[DIR_PPP] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * f[DIR_PPP]; - f[DIR_MPP] = ftemp[DIR_MPP] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * f[DIR_MPP]; - f[DIR_PPM] = ftemp[DIR_PPM] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * f[DIR_PPM]; - f[DIR_MPM] = ftemp[DIR_MPM] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * f[DIR_MPM]; - - distributions->setDistributionInvForDirection(f[DIR_0P0], x1 + DX1[DIR_0M0], x2 + DX2[DIR_0M0], x3 + DX3[DIR_0M0], DIR_0M0); - distributions->setDistributionInvForDirection(f[DIR_PP0], x1 + DX1[DIR_MM0], x2 + DX2[DIR_MM0], x3 + DX3[DIR_MM0], DIR_MM0); - distributions->setDistributionInvForDirection(f[DIR_MP0], x1 + DX1[DIR_PM0], x2 + DX2[DIR_PM0], x3 + DX3[DIR_PM0], DIR_PM0); - distributions->setDistributionInvForDirection(f[DIR_0PP], x1 + DX1[DIR_0MM], x2 + DX2[DIR_0MM], x3 + DX3[DIR_0MM], DIR_0MM); - distributions->setDistributionInvForDirection(f[DIR_0PM], x1 + DX1[DIR_0MP], x2 + DX2[DIR_0MP], x3 + DX3[DIR_0MP], DIR_0MP); - distributions->setDistributionInvForDirection(f[DIR_PPP], x1 + DX1[DIR_MMM], x2 + DX2[DIR_MMM], x3 + DX3[DIR_MMM], DIR_MMM); - distributions->setDistributionInvForDirection(f[DIR_MPP], x1 + DX1[DIR_PMM], x2 + DX2[DIR_PMM], x3 + DX3[DIR_PMM], DIR_PMM); - distributions->setDistributionInvForDirection(f[DIR_PPM], x1 + DX1[DIR_MMP], x2 + DX2[DIR_MMP], x3 + DX3[DIR_MMP], DIR_MMP); - distributions->setDistributionInvForDirection(f[DIR_MPM], x1 + DX1[DIR_PMP], x2 + DX2[DIR_PMP], x3 + DX3[DIR_PMP], DIR_PMP); - - h[DIR_0P0] = htemp[DIR_0P0] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * h[DIR_0P0]; - h[DIR_PP0] = htemp[DIR_PP0] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * h[DIR_PP0]; - h[DIR_MP0] = htemp[DIR_MP0] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * h[DIR_MP0]; - h[DIR_0PP] = htemp[DIR_0PP] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * h[DIR_0PP]; - h[DIR_0PM] = htemp[DIR_0PM] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * h[DIR_0PM]; - h[DIR_PPP] = htemp[DIR_PPP] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * h[DIR_PPP]; - h[DIR_MPP] = htemp[DIR_MPP] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * h[DIR_MPP]; - h[DIR_PPM] = htemp[DIR_PPM] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * h[DIR_PPM]; - h[DIR_MPM] = htemp[DIR_MPM] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * h[DIR_MPM]; - - distributionsH->setDistributionInvForDirection(h[DIR_0P0], x1 + DX1[DIR_0M0], x2 + DX2[DIR_0M0], x3 + DX3[DIR_0M0], DIR_0M0); - distributionsH->setDistributionInvForDirection(h[DIR_PP0], x1 + DX1[DIR_MM0], x2 + DX2[DIR_MM0], x3 + DX3[DIR_MM0], DIR_MM0); - distributionsH->setDistributionInvForDirection(h[DIR_MP0], x1 + DX1[DIR_PM0], x2 + DX2[DIR_PM0], x3 + DX3[DIR_PM0], DIR_PM0); - distributionsH->setDistributionInvForDirection(h[DIR_0PP], x1 + DX1[DIR_0MM], x2 + DX2[DIR_0MM], x3 + DX3[DIR_0MM], DIR_0MM); - distributionsH->setDistributionInvForDirection(h[DIR_0PM], x1 + DX1[DIR_0MP], x2 + DX2[DIR_0MP], x3 + DX3[DIR_0MP], DIR_0MP); - distributionsH->setDistributionInvForDirection(h[DIR_PPP], x1 + DX1[DIR_MMM], x2 + DX2[DIR_MMM], x3 + DX3[DIR_MMM], DIR_MMM); - distributionsH->setDistributionInvForDirection(h[DIR_MPP], x1 + DX1[DIR_PMM], x2 + DX2[DIR_PMM], x3 + DX3[DIR_PMM], DIR_PMM); - distributionsH->setDistributionInvForDirection(h[DIR_PPM], x1 + DX1[DIR_MMP], x2 + DX2[DIR_MMP], x3 + DX3[DIR_MMP], DIR_MMP); - distributionsH->setDistributionInvForDirection(h[DIR_MPM], x1 + DX1[DIR_PMP], x2 + DX2[DIR_PMP], x3 + DX3[DIR_PMP], DIR_PMP); - - h2[DIR_0P0] = c1o2 * (htemp[DIR_0P0] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * h2[DIR_0P0]); - h2[DIR_PP0] = c1o2 * (htemp[DIR_PP0] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * h2[DIR_PP0]); - h2[DIR_MP0] = c1o2 * (htemp[DIR_MP0] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * h2[DIR_MP0]); - h2[DIR_0PP] = c1o2 * (htemp[DIR_0PP] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * h2[DIR_0PP]); - h2[DIR_0PM] = c1o2 * (htemp[DIR_0PM] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * h2[DIR_0PM]); - h2[DIR_PPP] = c1o2 * (htemp[DIR_PPP] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * h2[DIR_PPP]); - h2[DIR_MPP] = c1o2 * (htemp[DIR_MPP] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * h2[DIR_MPP]); - h2[DIR_PPM] = c1o2 * (htemp[DIR_PPM] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * h2[DIR_PPM]); - h2[DIR_MPM] = c1o2 * (htemp[DIR_MPM] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * h2[DIR_MPM]); - - distributionsH2->setDistributionInvForDirection(h2[DIR_0P0], x1 + DX1[DIR_0M0], x2 + DX2[DIR_0M0], x3 + DX3[DIR_0M0], DIR_0M0); - distributionsH2->setDistributionInvForDirection(h2[DIR_PP0], x1 + DX1[DIR_MM0], x2 + DX2[DIR_MM0], x3 + DX3[DIR_MM0], DIR_MM0); - distributionsH2->setDistributionInvForDirection(h2[DIR_MP0], x1 + DX1[DIR_PM0], x2 + DX2[DIR_PM0], x3 + DX3[DIR_PM0], DIR_PM0); - distributionsH2->setDistributionInvForDirection(h2[DIR_0PP], x1 + DX1[DIR_0MM], x2 + DX2[DIR_0MM], x3 + DX3[DIR_0MM], DIR_0MM); - distributionsH2->setDistributionInvForDirection(h2[DIR_0PM], x1 + DX1[DIR_0MP], x2 + DX2[DIR_0MP], x3 + DX3[DIR_0MP], DIR_0MP); - distributionsH2->setDistributionInvForDirection(h2[DIR_PPP], x1 + DX1[DIR_MMM], x2 + DX2[DIR_MMM], x3 + DX3[DIR_MMM], DIR_MMM); - distributionsH2->setDistributionInvForDirection(h2[DIR_MPP], x1 + DX1[DIR_PMM], x2 + DX2[DIR_PMM], x3 + DX3[DIR_PMM], DIR_PMM); - distributionsH2->setDistributionInvForDirection(h2[DIR_PPM], x1 + DX1[DIR_MMP], x2 + DX2[DIR_MMP], x3 + DX3[DIR_MMP], DIR_MMP); - distributionsH2->setDistributionInvForDirection(h2[DIR_MPM], x1 + DX1[DIR_PMP], x2 + DX2[DIR_PMP], x3 + DX3[DIR_PMP], DIR_PMP); + case d0P0: + f[d0P0] = ftemp[d0P0] * (c1oSqrt3 + vx2) + (c1o1 - c1oSqrt3 - vx2) * f[d0P0]; + f[dPP0] = ftemp[dPP0] * (c1oSqrt3 + vx2) + (c1o1 - c1oSqrt3 - vx2) * f[dPP0]; + f[dMP0] = ftemp[dMP0] * (c1oSqrt3 + vx2) + (c1o1 - c1oSqrt3 - vx2) * f[dMP0]; + f[d0PP] = ftemp[d0PP] * (c1oSqrt3 + vx2) + (c1o1 - c1oSqrt3 - vx2) * f[d0PP]; + f[d0PM] = ftemp[d0PM] * (c1oSqrt3 + vx2) + (c1o1 - c1oSqrt3 - vx2) * f[d0PM]; + f[dPPP] = ftemp[dPPP] * (c1oSqrt3 + vx2) + (c1o1 - c1oSqrt3 - vx2) * f[dPPP]; + f[dMPP] = ftemp[dMPP] * (c1oSqrt3 + vx2) + (c1o1 - c1oSqrt3 - vx2) * f[dMPP]; + f[dPPM] = ftemp[dPPM] * (c1oSqrt3 + vx2) + (c1o1 - c1oSqrt3 - vx2) * f[dPPM]; + f[dMPM] = ftemp[dMPM] * (c1oSqrt3 + vx2) + (c1o1 - c1oSqrt3 - vx2) * f[dMPM]; + + distributions->setPreCollisionDistributionForDirection(f[d0P0], x1 + DX1[d0M0], x2 + DX2[d0M0], x3 + DX3[d0M0], d0M0); + distributions->setPreCollisionDistributionForDirection(f[dPP0], x1 + DX1[dMM0], x2 + DX2[dMM0], x3 + DX3[dMM0], dMM0); + distributions->setPreCollisionDistributionForDirection(f[dMP0], x1 + DX1[dPM0], x2 + DX2[dPM0], x3 + DX3[dPM0], dPM0); + distributions->setPreCollisionDistributionForDirection(f[d0PP], x1 + DX1[d0MM], x2 + DX2[d0MM], x3 + DX3[d0MM], d0MM); + distributions->setPreCollisionDistributionForDirection(f[d0PM], x1 + DX1[d0MP], x2 + DX2[d0MP], x3 + DX3[d0MP], d0MP); + distributions->setPreCollisionDistributionForDirection(f[dPPP], x1 + DX1[dMMM], x2 + DX2[dMMM], x3 + DX3[dMMM], dMMM); + distributions->setPreCollisionDistributionForDirection(f[dMPP], x1 + DX1[dPMM], x2 + DX2[dPMM], x3 + DX3[dPMM], dPMM); + distributions->setPreCollisionDistributionForDirection(f[dPPM], x1 + DX1[dMMP], x2 + DX2[dMMP], x3 + DX3[dMMP], dMMP); + distributions->setPreCollisionDistributionForDirection(f[dMPM], x1 + DX1[dPMP], x2 + DX2[dPMP], x3 + DX3[dPMP], dPMP); + + h[d0P0] = htemp[d0P0] * (c1oSqrt3 + vx2) + (c1o1 - c1oSqrt3 - vx2) * h[d0P0]; + h[dPP0] = htemp[dPP0] * (c1oSqrt3 + vx2) + (c1o1 - c1oSqrt3 - vx2) * h[dPP0]; + h[dMP0] = htemp[dMP0] * (c1oSqrt3 + vx2) + (c1o1 - c1oSqrt3 - vx2) * h[dMP0]; + h[d0PP] = htemp[d0PP] * (c1oSqrt3 + vx2) + (c1o1 - c1oSqrt3 - vx2) * h[d0PP]; + h[d0PM] = htemp[d0PM] * (c1oSqrt3 + vx2) + (c1o1 - c1oSqrt3 - vx2) * h[d0PM]; + h[dPPP] = htemp[dPPP] * (c1oSqrt3 + vx2) + (c1o1 - c1oSqrt3 - vx2) * h[dPPP]; + h[dMPP] = htemp[dMPP] * (c1oSqrt3 + vx2) + (c1o1 - c1oSqrt3 - vx2) * h[dMPP]; + h[dPPM] = htemp[dPPM] * (c1oSqrt3 + vx2) + (c1o1 - c1oSqrt3 - vx2) * h[dPPM]; + h[dMPM] = htemp[dMPM] * (c1oSqrt3 + vx2) + (c1o1 - c1oSqrt3 - vx2) * h[dMPM]; + + distributionsH->setPreCollisionDistributionForDirection(h[d0P0], x1 + DX1[d0M0], x2 + DX2[d0M0], x3 + DX3[d0M0], d0M0); + distributionsH->setPreCollisionDistributionForDirection(h[dPP0], x1 + DX1[dMM0], x2 + DX2[dMM0], x3 + DX3[dMM0], dMM0); + distributionsH->setPreCollisionDistributionForDirection(h[dMP0], x1 + DX1[dPM0], x2 + DX2[dPM0], x3 + DX3[dPM0], dPM0); + distributionsH->setPreCollisionDistributionForDirection(h[d0PP], x1 + DX1[d0MM], x2 + DX2[d0MM], x3 + DX3[d0MM], d0MM); + distributionsH->setPreCollisionDistributionForDirection(h[d0PM], x1 + DX1[d0MP], x2 + DX2[d0MP], x3 + DX3[d0MP], d0MP); + distributionsH->setPreCollisionDistributionForDirection(h[dPPP], x1 + DX1[dMMM], x2 + DX2[dMMM], x3 + DX3[dMMM], dMMM); + distributionsH->setPreCollisionDistributionForDirection(h[dMPP], x1 + DX1[dPMM], x2 + DX2[dPMM], x3 + DX3[dPMM], dPMM); + distributionsH->setPreCollisionDistributionForDirection(h[dPPM], x1 + DX1[dMMP], x2 + DX2[dMMP], x3 + DX3[dMMP], dMMP); + distributionsH->setPreCollisionDistributionForDirection(h[dMPM], x1 + DX1[dPMP], x2 + DX2[dPMP], x3 + DX3[dPMP], dPMP); + + h2[d0P0] = c1o2 * (htemp[d0P0] * (c1oSqrt3 + vx2) + (c1o1 - c1oSqrt3 - vx2) * h2[d0P0]); + h2[dPP0] = c1o2 * (htemp[dPP0] * (c1oSqrt3 + vx2) + (c1o1 - c1oSqrt3 - vx2) * h2[dPP0]); + h2[dMP0] = c1o2 * (htemp[dMP0] * (c1oSqrt3 + vx2) + (c1o1 - c1oSqrt3 - vx2) * h2[dMP0]); + h2[d0PP] = c1o2 * (htemp[d0PP] * (c1oSqrt3 + vx2) + (c1o1 - c1oSqrt3 - vx2) * h2[d0PP]); + h2[d0PM] = c1o2 * (htemp[d0PM] * (c1oSqrt3 + vx2) + (c1o1 - c1oSqrt3 - vx2) * h2[d0PM]); + h2[dPPP] = c1o2 * (htemp[dPPP] * (c1oSqrt3 + vx2) + (c1o1 - c1oSqrt3 - vx2) * h2[dPPP]); + h2[dMPP] = c1o2 * (htemp[dMPP] * (c1oSqrt3 + vx2) + (c1o1 - c1oSqrt3 - vx2) * h2[dMPP]); + h2[dPPM] = c1o2 * (htemp[dPPM] * (c1oSqrt3 + vx2) + (c1o1 - c1oSqrt3 - vx2) * h2[dPPM]); + h2[dMPM] = c1o2 * (htemp[dMPM] * (c1oSqrt3 + vx2) + (c1o1 - c1oSqrt3 - vx2) * h2[dMPM]); + + distributionsH2->setPreCollisionDistributionForDirection(h2[d0P0], x1 + DX1[d0M0], x2 + DX2[d0M0], x3 + DX3[d0M0], d0M0); + distributionsH2->setPreCollisionDistributionForDirection(h2[dPP0], x1 + DX1[dMM0], x2 + DX2[dMM0], x3 + DX3[dMM0], dMM0); + distributionsH2->setPreCollisionDistributionForDirection(h2[dMP0], x1 + DX1[dPM0], x2 + DX2[dPM0], x3 + DX3[dPM0], dPM0); + distributionsH2->setPreCollisionDistributionForDirection(h2[d0PP], x1 + DX1[d0MM], x2 + DX2[d0MM], x3 + DX3[d0MM], d0MM); + distributionsH2->setPreCollisionDistributionForDirection(h2[d0PM], x1 + DX1[d0MP], x2 + DX2[d0MP], x3 + DX3[d0MP], d0MP); + distributionsH2->setPreCollisionDistributionForDirection(h2[dPPP], x1 + DX1[dMMM], x2 + DX2[dMMM], x3 + DX3[dMMM], dMMM); + distributionsH2->setPreCollisionDistributionForDirection(h2[dMPP], x1 + DX1[dPMM], x2 + DX2[dPMM], x3 + DX3[dPMM], dPMM); + distributionsH2->setPreCollisionDistributionForDirection(h2[dPPM], x1 + DX1[dMMP], x2 + DX2[dMMP], x3 + DX3[dMMP], dMMP); + distributionsH2->setPreCollisionDistributionForDirection(h2[dMPM], x1 + DX1[dPMP], x2 + DX2[dPMP], x3 + DX3[dPMP], dPMP); break; - case DIR_0M0: - f[DIR_0M0] = ftemp[DIR_0M0] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * f[DIR_0M0]; - f[DIR_PM0] = ftemp[DIR_PM0] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * f[DIR_PM0]; - f[DIR_MM0] = ftemp[DIR_MM0] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * f[DIR_MM0]; - f[DIR_0MP] = ftemp[DIR_0MP] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * f[DIR_0MP]; - f[DIR_0MM] = ftemp[DIR_0MM] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * f[DIR_0MM]; - f[DIR_PMP] = ftemp[DIR_PMP] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * f[DIR_PMP]; - f[DIR_MMP] = ftemp[DIR_MMP] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * f[DIR_MMP]; - f[DIR_PMM] = ftemp[DIR_PMM] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * f[DIR_PMM]; - f[DIR_MMM] = ftemp[DIR_MMM] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * f[DIR_MMM]; - - distributions->setDistributionInvForDirection(f[DIR_0M0], x1 + DX1[DIR_0P0], x2 + DX2[DIR_0P0], x3 + DX3[DIR_0P0], DIR_0P0); - distributions->setDistributionInvForDirection(f[DIR_PM0], x1 + DX1[DIR_MP0], x2 + DX2[DIR_MP0], x3 + DX3[DIR_MP0], DIR_MP0); - distributions->setDistributionInvForDirection(f[DIR_MM0], x1 + DX1[DIR_PP0], x2 + DX2[DIR_PP0], x3 + DX3[DIR_PP0], DIR_PP0); - distributions->setDistributionInvForDirection(f[DIR_0MP], x1 + DX1[DIR_0PM], x2 + DX2[DIR_0PM], x3 + DX3[DIR_0PM], DIR_0PM); - distributions->setDistributionInvForDirection(f[DIR_0MM], x1 + DX1[DIR_0PP], x2 + DX2[DIR_0PP], x3 + DX3[DIR_0PP], DIR_0PP); - distributions->setDistributionInvForDirection(f[DIR_PMP], x1 + DX1[DIR_MPM], x2 + DX2[DIR_MPM], x3 + DX3[DIR_MPM], DIR_MPM); - distributions->setDistributionInvForDirection(f[DIR_MMP], x1 + DX1[DIR_PPM], x2 + DX2[DIR_PPM], x3 + DX3[DIR_PPM], DIR_PPM); - distributions->setDistributionInvForDirection(f[DIR_PMM], x1 + DX1[DIR_MPP], x2 + DX2[DIR_MPP], x3 + DX3[DIR_MPP], DIR_MPP); - distributions->setDistributionInvForDirection(f[DIR_MMM], x1 + DX1[DIR_PPP], x2 + DX2[DIR_PPP], x3 + DX3[DIR_PPP], DIR_PPP); - - h[DIR_0M0] = htemp[DIR_0M0] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * h[DIR_0M0]; - h[DIR_PM0] = htemp[DIR_PM0] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * h[DIR_PM0]; - h[DIR_MM0] = htemp[DIR_MM0] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * h[DIR_MM0]; - h[DIR_0MP] = htemp[DIR_0MP] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * h[DIR_0MP]; - h[DIR_0MM] = htemp[DIR_0MM] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * h[DIR_0MM]; - h[DIR_PMP] = htemp[DIR_PMP] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * h[DIR_PMP]; - h[DIR_MMP] = htemp[DIR_MMP] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * h[DIR_MMP]; - h[DIR_PMM] = htemp[DIR_PMM] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * h[DIR_PMM]; - h[DIR_MMM] = htemp[DIR_MMM] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * h[DIR_MMM]; - - distributionsH->setDistributionInvForDirection(h[DIR_0M0], x1 + DX1[DIR_0P0], x2 + DX2[DIR_0P0], x3 + DX3[DIR_0P0], DIR_0P0); - distributionsH->setDistributionInvForDirection(h[DIR_PM0], x1 + DX1[DIR_MP0], x2 + DX2[DIR_MP0], x3 + DX3[DIR_MP0], DIR_MP0); - distributionsH->setDistributionInvForDirection(h[DIR_MM0], x1 + DX1[DIR_PP0], x2 + DX2[DIR_PP0], x3 + DX3[DIR_PP0], DIR_PP0); - distributionsH->setDistributionInvForDirection(h[DIR_0MP], x1 + DX1[DIR_0PM], x2 + DX2[DIR_0PM], x3 + DX3[DIR_0PM], DIR_0PM); - distributionsH->setDistributionInvForDirection(h[DIR_0MM], x1 + DX1[DIR_0PP], x2 + DX2[DIR_0PP], x3 + DX3[DIR_0PP], DIR_0PP); - distributionsH->setDistributionInvForDirection(h[DIR_PMP], x1 + DX1[DIR_MPM], x2 + DX2[DIR_MPM], x3 + DX3[DIR_MPM], DIR_MPM); - distributionsH->setDistributionInvForDirection(h[DIR_MMP], x1 + DX1[DIR_PPM], x2 + DX2[DIR_PPM], x3 + DX3[DIR_PPM], DIR_PPM); - distributionsH->setDistributionInvForDirection(h[DIR_PMM], x1 + DX1[DIR_MPP], x2 + DX2[DIR_MPP], x3 + DX3[DIR_MPP], DIR_MPP); - distributionsH->setDistributionInvForDirection(h[DIR_MMM], x1 + DX1[DIR_PPP], x2 + DX2[DIR_PPP], x3 + DX3[DIR_PPP], DIR_PPP); - - h2[DIR_0M0] = c1o2 * (htemp[DIR_0M0] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * h2[DIR_0M0]); - h2[DIR_PM0] = c1o2 * (htemp[DIR_PM0] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * h2[DIR_PM0]); - h2[DIR_MM0] = c1o2 * (htemp[DIR_MM0] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * h2[DIR_MM0]); - h2[DIR_0MP] = c1o2 * (htemp[DIR_0MP] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * h2[DIR_0MP]); - h2[DIR_0MM] = c1o2 * (htemp[DIR_0MM] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * h2[DIR_0MM]); - h2[DIR_PMP] = c1o2 * (htemp[DIR_PMP] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * h2[DIR_PMP]); - h2[DIR_MMP] = c1o2 * (htemp[DIR_MMP] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * h2[DIR_MMP]); - h2[DIR_PMM] = c1o2 * (htemp[DIR_PMM] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * h2[DIR_PMM]); - h2[DIR_MMM] = c1o2 * (htemp[DIR_MMM] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * h2[DIR_MMM]); - - distributionsH2->setDistributionInvForDirection(h2[DIR_0M0], x1 + DX1[DIR_0P0], x2 + DX2[DIR_0P0], x3 + DX3[DIR_0P0], DIR_0P0); - distributionsH2->setDistributionInvForDirection(h2[DIR_PM0], x1 + DX1[DIR_MP0], x2 + DX2[DIR_MP0], x3 + DX3[DIR_MP0], DIR_MP0); - distributionsH2->setDistributionInvForDirection(h2[DIR_MM0], x1 + DX1[DIR_PP0], x2 + DX2[DIR_PP0], x3 + DX3[DIR_PP0], DIR_PP0); - distributionsH2->setDistributionInvForDirection(h2[DIR_0MP], x1 + DX1[DIR_0PM], x2 + DX2[DIR_0PM], x3 + DX3[DIR_0PM], DIR_0PM); - distributionsH2->setDistributionInvForDirection(h2[DIR_0MM], x1 + DX1[DIR_0PP], x2 + DX2[DIR_0PP], x3 + DX3[DIR_0PP], DIR_0PP); - distributionsH2->setDistributionInvForDirection(h2[DIR_PMP], x1 + DX1[DIR_MPM], x2 + DX2[DIR_MPM], x3 + DX3[DIR_MPM], DIR_MPM); - distributionsH2->setDistributionInvForDirection(h2[DIR_MMP], x1 + DX1[DIR_PPM], x2 + DX2[DIR_PPM], x3 + DX3[DIR_PPM], DIR_PPM); - distributionsH2->setDistributionInvForDirection(h2[DIR_PMM], x1 + DX1[DIR_MPP], x2 + DX2[DIR_MPP], x3 + DX3[DIR_MPP], DIR_MPP); - distributionsH2->setDistributionInvForDirection(h2[DIR_MMM], x1 + DX1[DIR_PPP], x2 + DX2[DIR_PPP], x3 + DX3[DIR_PPP], DIR_PPP); + case d0M0: + f[d0M0] = ftemp[d0M0] * (c1oSqrt3 - vx2) + (c1o1 - c1oSqrt3 + vx2) * f[d0M0]; + f[dPM0] = ftemp[dPM0] * (c1oSqrt3 - vx2) + (c1o1 - c1oSqrt3 + vx2) * f[dPM0]; + f[dMM0] = ftemp[dMM0] * (c1oSqrt3 - vx2) + (c1o1 - c1oSqrt3 + vx2) * f[dMM0]; + f[d0MP] = ftemp[d0MP] * (c1oSqrt3 - vx2) + (c1o1 - c1oSqrt3 + vx2) * f[d0MP]; + f[d0MM] = ftemp[d0MM] * (c1oSqrt3 - vx2) + (c1o1 - c1oSqrt3 + vx2) * f[d0MM]; + f[dPMP] = ftemp[dPMP] * (c1oSqrt3 - vx2) + (c1o1 - c1oSqrt3 + vx2) * f[dPMP]; + f[dMMP] = ftemp[dMMP] * (c1oSqrt3 - vx2) + (c1o1 - c1oSqrt3 + vx2) * f[dMMP]; + f[dPMM] = ftemp[dPMM] * (c1oSqrt3 - vx2) + (c1o1 - c1oSqrt3 + vx2) * f[dPMM]; + f[dMMM] = ftemp[dMMM] * (c1oSqrt3 - vx2) + (c1o1 - c1oSqrt3 + vx2) * f[dMMM]; + + distributions->setPreCollisionDistributionForDirection(f[d0M0], x1 + DX1[d0P0], x2 + DX2[d0P0], x3 + DX3[d0P0], d0P0); + distributions->setPreCollisionDistributionForDirection(f[dPM0], x1 + DX1[dMP0], x2 + DX2[dMP0], x3 + DX3[dMP0], dMP0); + distributions->setPreCollisionDistributionForDirection(f[dMM0], x1 + DX1[dPP0], x2 + DX2[dPP0], x3 + DX3[dPP0], dPP0); + distributions->setPreCollisionDistributionForDirection(f[d0MP], x1 + DX1[d0PM], x2 + DX2[d0PM], x3 + DX3[d0PM], d0PM); + distributions->setPreCollisionDistributionForDirection(f[d0MM], x1 + DX1[d0PP], x2 + DX2[d0PP], x3 + DX3[d0PP], d0PP); + distributions->setPreCollisionDistributionForDirection(f[dPMP], x1 + DX1[dMPM], x2 + DX2[dMPM], x3 + DX3[dMPM], dMPM); + distributions->setPreCollisionDistributionForDirection(f[dMMP], x1 + DX1[dPPM], x2 + DX2[dPPM], x3 + DX3[dPPM], dPPM); + distributions->setPreCollisionDistributionForDirection(f[dPMM], x1 + DX1[dMPP], x2 + DX2[dMPP], x3 + DX3[dMPP], dMPP); + distributions->setPreCollisionDistributionForDirection(f[dMMM], x1 + DX1[dPPP], x2 + DX2[dPPP], x3 + DX3[dPPP], dPPP); + + h[d0M0] = htemp[d0M0] * (c1oSqrt3 - vx2) + (c1o1 - c1oSqrt3 + vx2) * h[d0M0]; + h[dPM0] = htemp[dPM0] * (c1oSqrt3 - vx2) + (c1o1 - c1oSqrt3 + vx2) * h[dPM0]; + h[dMM0] = htemp[dMM0] * (c1oSqrt3 - vx2) + (c1o1 - c1oSqrt3 + vx2) * h[dMM0]; + h[d0MP] = htemp[d0MP] * (c1oSqrt3 - vx2) + (c1o1 - c1oSqrt3 + vx2) * h[d0MP]; + h[d0MM] = htemp[d0MM] * (c1oSqrt3 - vx2) + (c1o1 - c1oSqrt3 + vx2) * h[d0MM]; + h[dPMP] = htemp[dPMP] * (c1oSqrt3 - vx2) + (c1o1 - c1oSqrt3 + vx2) * h[dPMP]; + h[dMMP] = htemp[dMMP] * (c1oSqrt3 - vx2) + (c1o1 - c1oSqrt3 + vx2) * h[dMMP]; + h[dPMM] = htemp[dPMM] * (c1oSqrt3 - vx2) + (c1o1 - c1oSqrt3 + vx2) * h[dPMM]; + h[dMMM] = htemp[dMMM] * (c1oSqrt3 - vx2) + (c1o1 - c1oSqrt3 + vx2) * h[dMMM]; + + distributionsH->setPreCollisionDistributionForDirection(h[d0M0], x1 + DX1[d0P0], x2 + DX2[d0P0], x3 + DX3[d0P0], d0P0); + distributionsH->setPreCollisionDistributionForDirection(h[dPM0], x1 + DX1[dMP0], x2 + DX2[dMP0], x3 + DX3[dMP0], dMP0); + distributionsH->setPreCollisionDistributionForDirection(h[dMM0], x1 + DX1[dPP0], x2 + DX2[dPP0], x3 + DX3[dPP0], dPP0); + distributionsH->setPreCollisionDistributionForDirection(h[d0MP], x1 + DX1[d0PM], x2 + DX2[d0PM], x3 + DX3[d0PM], d0PM); + distributionsH->setPreCollisionDistributionForDirection(h[d0MM], x1 + DX1[d0PP], x2 + DX2[d0PP], x3 + DX3[d0PP], d0PP); + distributionsH->setPreCollisionDistributionForDirection(h[dPMP], x1 + DX1[dMPM], x2 + DX2[dMPM], x3 + DX3[dMPM], dMPM); + distributionsH->setPreCollisionDistributionForDirection(h[dMMP], x1 + DX1[dPPM], x2 + DX2[dPPM], x3 + DX3[dPPM], dPPM); + distributionsH->setPreCollisionDistributionForDirection(h[dPMM], x1 + DX1[dMPP], x2 + DX2[dMPP], x3 + DX3[dMPP], dMPP); + distributionsH->setPreCollisionDistributionForDirection(h[dMMM], x1 + DX1[dPPP], x2 + DX2[dPPP], x3 + DX3[dPPP], dPPP); + + h2[d0M0] = c1o2 * (htemp[d0M0] * (c1oSqrt3 - vx2) + (c1o1 - c1oSqrt3 + vx2) * h2[d0M0]); + h2[dPM0] = c1o2 * (htemp[dPM0] * (c1oSqrt3 - vx2) + (c1o1 - c1oSqrt3 + vx2) * h2[dPM0]); + h2[dMM0] = c1o2 * (htemp[dMM0] * (c1oSqrt3 - vx2) + (c1o1 - c1oSqrt3 + vx2) * h2[dMM0]); + h2[d0MP] = c1o2 * (htemp[d0MP] * (c1oSqrt3 - vx2) + (c1o1 - c1oSqrt3 + vx2) * h2[d0MP]); + h2[d0MM] = c1o2 * (htemp[d0MM] * (c1oSqrt3 - vx2) + (c1o1 - c1oSqrt3 + vx2) * h2[d0MM]); + h2[dPMP] = c1o2 * (htemp[dPMP] * (c1oSqrt3 - vx2) + (c1o1 - c1oSqrt3 + vx2) * h2[dPMP]); + h2[dMMP] = c1o2 * (htemp[dMMP] * (c1oSqrt3 - vx2) + (c1o1 - c1oSqrt3 + vx2) * h2[dMMP]); + h2[dPMM] = c1o2 * (htemp[dPMM] * (c1oSqrt3 - vx2) + (c1o1 - c1oSqrt3 + vx2) * h2[dPMM]); + h2[dMMM] = c1o2 * (htemp[dMMM] * (c1oSqrt3 - vx2) + (c1o1 - c1oSqrt3 + vx2) * h2[dMMM]); + + distributionsH2->setPreCollisionDistributionForDirection(h2[d0M0], x1 + DX1[d0P0], x2 + DX2[d0P0], x3 + DX3[d0P0], d0P0); + distributionsH2->setPreCollisionDistributionForDirection(h2[dPM0], x1 + DX1[dMP0], x2 + DX2[dMP0], x3 + DX3[dMP0], dMP0); + distributionsH2->setPreCollisionDistributionForDirection(h2[dMM0], x1 + DX1[dPP0], x2 + DX2[dPP0], x3 + DX3[dPP0], dPP0); + distributionsH2->setPreCollisionDistributionForDirection(h2[d0MP], x1 + DX1[d0PM], x2 + DX2[d0PM], x3 + DX3[d0PM], d0PM); + distributionsH2->setPreCollisionDistributionForDirection(h2[d0MM], x1 + DX1[d0PP], x2 + DX2[d0PP], x3 + DX3[d0PP], d0PP); + distributionsH2->setPreCollisionDistributionForDirection(h2[dPMP], x1 + DX1[dMPM], x2 + DX2[dMPM], x3 + DX3[dMPM], dMPM); + distributionsH2->setPreCollisionDistributionForDirection(h2[dMMP], x1 + DX1[dPPM], x2 + DX2[dPPM], x3 + DX3[dPPM], dPPM); + distributionsH2->setPreCollisionDistributionForDirection(h2[dPMM], x1 + DX1[dMPP], x2 + DX2[dMPP], x3 + DX3[dMPP], dMPP); + distributionsH2->setPreCollisionDistributionForDirection(h2[dMMM], x1 + DX1[dPPP], x2 + DX2[dPPP], x3 + DX3[dPPP], dPPP); break; - case DIR_00P: - f[DIR_00P] = ftemp[DIR_00P] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * f[DIR_00P]; - f[DIR_P0P] = ftemp[DIR_P0P] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * f[DIR_P0P]; - f[DIR_M0P] = ftemp[DIR_M0P] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * f[DIR_M0P]; - f[DIR_0PP] = ftemp[DIR_0PP] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * f[DIR_0PP]; - f[DIR_0MP] = ftemp[DIR_0MP] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * f[DIR_0MP]; - f[DIR_PPP] = ftemp[DIR_PPP] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * f[DIR_PPP]; - f[DIR_MPP] = ftemp[DIR_MPP] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * f[DIR_MPP]; - f[DIR_PMP] = ftemp[DIR_PMP] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * f[DIR_PMP]; - f[DIR_MMP] = ftemp[DIR_MMP] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * f[DIR_MMP]; - - distributions->setDistributionInvForDirection(f[DIR_00P], x1 + DX1[DIR_00M], x2 + DX2[DIR_00M], x3 + DX3[DIR_00M], DIR_00M); - distributions->setDistributionInvForDirection(f[DIR_P0P], x1 + DX1[DIR_M0M], x2 + DX2[DIR_M0M], x3 + DX3[DIR_M0M], DIR_M0M); - distributions->setDistributionInvForDirection(f[DIR_M0P], x1 + DX1[DIR_P0M], x2 + DX2[DIR_P0M], x3 + DX3[DIR_P0M], DIR_P0M); - distributions->setDistributionInvForDirection(f[DIR_0PP], x1 + DX1[DIR_0MM], x2 + DX2[DIR_0MM], x3 + DX3[DIR_0MM], DIR_0MM); - distributions->setDistributionInvForDirection(f[DIR_0MP], x1 + DX1[DIR_0PM], x2 + DX2[DIR_0PM], x3 + DX3[DIR_0PM], DIR_0PM); - distributions->setDistributionInvForDirection(f[DIR_PPP], x1 + DX1[DIR_MMM], x2 + DX2[DIR_MMM], x3 + DX3[DIR_MMM], DIR_MMM); - distributions->setDistributionInvForDirection(f[DIR_MPP], x1 + DX1[DIR_PMM], x2 + DX2[DIR_PMM], x3 + DX3[DIR_PMM], DIR_PMM); - distributions->setDistributionInvForDirection(f[DIR_PMP], x1 + DX1[DIR_MPM], x2 + DX2[DIR_MPM], x3 + DX3[DIR_MPM], DIR_MPM); - distributions->setDistributionInvForDirection(f[DIR_MMP], x1 + DX1[DIR_PPM], x2 + DX2[DIR_PPM], x3 + DX3[DIR_PPM], DIR_PPM); - - h[DIR_00P] = htemp[DIR_00P] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * h[DIR_00P]; - h[DIR_P0P] = htemp[DIR_P0P] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * h[DIR_P0P]; - h[DIR_M0P] = htemp[DIR_M0P] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * h[DIR_M0P]; - h[DIR_0PP] = htemp[DIR_0PP] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * h[DIR_0PP]; - h[DIR_0MP] = htemp[DIR_0MP] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * h[DIR_0MP]; - h[DIR_PPP] = htemp[DIR_PPP] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * h[DIR_PPP]; - h[DIR_MPP] = htemp[DIR_MPP] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * h[DIR_MPP]; - h[DIR_PMP] = htemp[DIR_PMP] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * h[DIR_PMP]; - h[DIR_MMP] = htemp[DIR_MMP] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * h[DIR_MMP]; - - distributionsH->setDistributionInvForDirection(h[DIR_00P], x1 + DX1[DIR_00M], x2 + DX2[DIR_00M], x3 + DX3[DIR_00M], DIR_00M); - distributionsH->setDistributionInvForDirection(h[DIR_P0P], x1 + DX1[DIR_M0M], x2 + DX2[DIR_M0M], x3 + DX3[DIR_M0M], DIR_M0M); - distributionsH->setDistributionInvForDirection(h[DIR_M0P], x1 + DX1[DIR_P0M], x2 + DX2[DIR_P0M], x3 + DX3[DIR_P0M], DIR_P0M); - distributionsH->setDistributionInvForDirection(h[DIR_0PP], x1 + DX1[DIR_0MM], x2 + DX2[DIR_0MM], x3 + DX3[DIR_0MM], DIR_0MM); - distributionsH->setDistributionInvForDirection(h[DIR_0MP], x1 + DX1[DIR_0PM], x2 + DX2[DIR_0PM], x3 + DX3[DIR_0PM], DIR_0PM); - distributionsH->setDistributionInvForDirection(h[DIR_PPP], x1 + DX1[DIR_MMM], x2 + DX2[DIR_MMM], x3 + DX3[DIR_MMM], DIR_MMM); - distributionsH->setDistributionInvForDirection(h[DIR_MPP], x1 + DX1[DIR_PMM], x2 + DX2[DIR_PMM], x3 + DX3[DIR_PMM], DIR_PMM); - distributionsH->setDistributionInvForDirection(h[DIR_PMP], x1 + DX1[DIR_MPM], x2 + DX2[DIR_MPM], x3 + DX3[DIR_MPM], DIR_MPM); - distributionsH->setDistributionInvForDirection(h[DIR_MMP], x1 + DX1[DIR_PPM], x2 + DX2[DIR_PPM], x3 + DX3[DIR_PPM], DIR_PPM); - - h2[DIR_00P] = c1o2 * (htemp[DIR_00P] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * h2[DIR_00P]); - h2[DIR_P0P] = c1o2 * (htemp[DIR_P0P] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * h2[DIR_P0P]); - h2[DIR_M0P] = c1o2 * (htemp[DIR_M0P] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * h2[DIR_M0P]); - h2[DIR_0PP] = c1o2 * (htemp[DIR_0PP] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * h2[DIR_0PP]); - h2[DIR_0MP] = c1o2 * (htemp[DIR_0MP] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * h2[DIR_0MP]); - h2[DIR_PPP] = c1o2 * (htemp[DIR_PPP] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * h2[DIR_PPP]); - h2[DIR_MPP] = c1o2 * (htemp[DIR_MPP] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * h2[DIR_MPP]); - h2[DIR_PMP] = c1o2 * (htemp[DIR_PMP] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * h2[DIR_PMP]); - h2[DIR_MMP] = c1o2 * (htemp[DIR_MMP] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * h2[DIR_MMP]); - - distributionsH2->setDistributionInvForDirection(h2[DIR_00P], x1 + DX1[DIR_00M], x2 + DX2[DIR_00M], x3 + DX3[DIR_00M], DIR_00M); - distributionsH2->setDistributionInvForDirection(h2[DIR_P0P], x1 + DX1[DIR_M0M], x2 + DX2[DIR_M0M], x3 + DX3[DIR_M0M], DIR_M0M); - distributionsH2->setDistributionInvForDirection(h2[DIR_M0P], x1 + DX1[DIR_P0M], x2 + DX2[DIR_P0M], x3 + DX3[DIR_P0M], DIR_P0M); - distributionsH2->setDistributionInvForDirection(h2[DIR_0PP], x1 + DX1[DIR_0MM], x2 + DX2[DIR_0MM], x3 + DX3[DIR_0MM], DIR_0MM); - distributionsH2->setDistributionInvForDirection(h2[DIR_0MP], x1 + DX1[DIR_0PM], x2 + DX2[DIR_0PM], x3 + DX3[DIR_0PM], DIR_0PM); - distributionsH2->setDistributionInvForDirection(h2[DIR_PPP], x1 + DX1[DIR_MMM], x2 + DX2[DIR_MMM], x3 + DX3[DIR_MMM], DIR_MMM); - distributionsH2->setDistributionInvForDirection(h2[DIR_MPP], x1 + DX1[DIR_PMM], x2 + DX2[DIR_PMM], x3 + DX3[DIR_PMM], DIR_PMM); - distributionsH2->setDistributionInvForDirection(h2[DIR_PMP], x1 + DX1[DIR_MPM], x2 + DX2[DIR_MPM], x3 + DX3[DIR_MPM], DIR_MPM); - distributionsH2->setDistributionInvForDirection(h2[DIR_MMP], x1 + DX1[DIR_PPM], x2 + DX2[DIR_PPM], x3 + DX3[DIR_PPM], DIR_PPM); + case d00P: + f[d00P] = ftemp[d00P] * (c1oSqrt3 + vx3) + (c1o1 - c1oSqrt3 - vx3) * f[d00P]; + f[dP0P] = ftemp[dP0P] * (c1oSqrt3 + vx3) + (c1o1 - c1oSqrt3 - vx3) * f[dP0P]; + f[dM0P] = ftemp[dM0P] * (c1oSqrt3 + vx3) + (c1o1 - c1oSqrt3 - vx3) * f[dM0P]; + f[d0PP] = ftemp[d0PP] * (c1oSqrt3 + vx3) + (c1o1 - c1oSqrt3 - vx3) * f[d0PP]; + f[d0MP] = ftemp[d0MP] * (c1oSqrt3 + vx3) + (c1o1 - c1oSqrt3 - vx3) * f[d0MP]; + f[dPPP] = ftemp[dPPP] * (c1oSqrt3 + vx3) + (c1o1 - c1oSqrt3 - vx3) * f[dPPP]; + f[dMPP] = ftemp[dMPP] * (c1oSqrt3 + vx3) + (c1o1 - c1oSqrt3 - vx3) * f[dMPP]; + f[dPMP] = ftemp[dPMP] * (c1oSqrt3 + vx3) + (c1o1 - c1oSqrt3 - vx3) * f[dPMP]; + f[dMMP] = ftemp[dMMP] * (c1oSqrt3 + vx3) + (c1o1 - c1oSqrt3 - vx3) * f[dMMP]; + + distributions->setPreCollisionDistributionForDirection(f[d00P], x1 + DX1[d00M], x2 + DX2[d00M], x3 + DX3[d00M], d00M); + distributions->setPreCollisionDistributionForDirection(f[dP0P], x1 + DX1[dM0M], x2 + DX2[dM0M], x3 + DX3[dM0M], dM0M); + distributions->setPreCollisionDistributionForDirection(f[dM0P], x1 + DX1[dP0M], x2 + DX2[dP0M], x3 + DX3[dP0M], dP0M); + distributions->setPreCollisionDistributionForDirection(f[d0PP], x1 + DX1[d0MM], x2 + DX2[d0MM], x3 + DX3[d0MM], d0MM); + distributions->setPreCollisionDistributionForDirection(f[d0MP], x1 + DX1[d0PM], x2 + DX2[d0PM], x3 + DX3[d0PM], d0PM); + distributions->setPreCollisionDistributionForDirection(f[dPPP], x1 + DX1[dMMM], x2 + DX2[dMMM], x3 + DX3[dMMM], dMMM); + distributions->setPreCollisionDistributionForDirection(f[dMPP], x1 + DX1[dPMM], x2 + DX2[dPMM], x3 + DX3[dPMM], dPMM); + distributions->setPreCollisionDistributionForDirection(f[dPMP], x1 + DX1[dMPM], x2 + DX2[dMPM], x3 + DX3[dMPM], dMPM); + distributions->setPreCollisionDistributionForDirection(f[dMMP], x1 + DX1[dPPM], x2 + DX2[dPPM], x3 + DX3[dPPM], dPPM); + + h[d00P] = htemp[d00P] * (c1oSqrt3 + vx3) + (c1o1 - c1oSqrt3 - vx3) * h[d00P]; + h[dP0P] = htemp[dP0P] * (c1oSqrt3 + vx3) + (c1o1 - c1oSqrt3 - vx3) * h[dP0P]; + h[dM0P] = htemp[dM0P] * (c1oSqrt3 + vx3) + (c1o1 - c1oSqrt3 - vx3) * h[dM0P]; + h[d0PP] = htemp[d0PP] * (c1oSqrt3 + vx3) + (c1o1 - c1oSqrt3 - vx3) * h[d0PP]; + h[d0MP] = htemp[d0MP] * (c1oSqrt3 + vx3) + (c1o1 - c1oSqrt3 - vx3) * h[d0MP]; + h[dPPP] = htemp[dPPP] * (c1oSqrt3 + vx3) + (c1o1 - c1oSqrt3 - vx3) * h[dPPP]; + h[dMPP] = htemp[dMPP] * (c1oSqrt3 + vx3) + (c1o1 - c1oSqrt3 - vx3) * h[dMPP]; + h[dPMP] = htemp[dPMP] * (c1oSqrt3 + vx3) + (c1o1 - c1oSqrt3 - vx3) * h[dPMP]; + h[dMMP] = htemp[dMMP] * (c1oSqrt3 + vx3) + (c1o1 - c1oSqrt3 - vx3) * h[dMMP]; + + distributionsH->setPreCollisionDistributionForDirection(h[d00P], x1 + DX1[d00M], x2 + DX2[d00M], x3 + DX3[d00M], d00M); + distributionsH->setPreCollisionDistributionForDirection(h[dP0P], x1 + DX1[dM0M], x2 + DX2[dM0M], x3 + DX3[dM0M], dM0M); + distributionsH->setPreCollisionDistributionForDirection(h[dM0P], x1 + DX1[dP0M], x2 + DX2[dP0M], x3 + DX3[dP0M], dP0M); + distributionsH->setPreCollisionDistributionForDirection(h[d0PP], x1 + DX1[d0MM], x2 + DX2[d0MM], x3 + DX3[d0MM], d0MM); + distributionsH->setPreCollisionDistributionForDirection(h[d0MP], x1 + DX1[d0PM], x2 + DX2[d0PM], x3 + DX3[d0PM], d0PM); + distributionsH->setPreCollisionDistributionForDirection(h[dPPP], x1 + DX1[dMMM], x2 + DX2[dMMM], x3 + DX3[dMMM], dMMM); + distributionsH->setPreCollisionDistributionForDirection(h[dMPP], x1 + DX1[dPMM], x2 + DX2[dPMM], x3 + DX3[dPMM], dPMM); + distributionsH->setPreCollisionDistributionForDirection(h[dPMP], x1 + DX1[dMPM], x2 + DX2[dMPM], x3 + DX3[dMPM], dMPM); + distributionsH->setPreCollisionDistributionForDirection(h[dMMP], x1 + DX1[dPPM], x2 + DX2[dPPM], x3 + DX3[dPPM], dPPM); + + h2[d00P] = c1o2 * (htemp[d00P] * (c1oSqrt3 + vx3) + (c1o1 - c1oSqrt3 - vx3) * h2[d00P]); + h2[dP0P] = c1o2 * (htemp[dP0P] * (c1oSqrt3 + vx3) + (c1o1 - c1oSqrt3 - vx3) * h2[dP0P]); + h2[dM0P] = c1o2 * (htemp[dM0P] * (c1oSqrt3 + vx3) + (c1o1 - c1oSqrt3 - vx3) * h2[dM0P]); + h2[d0PP] = c1o2 * (htemp[d0PP] * (c1oSqrt3 + vx3) + (c1o1 - c1oSqrt3 - vx3) * h2[d0PP]); + h2[d0MP] = c1o2 * (htemp[d0MP] * (c1oSqrt3 + vx3) + (c1o1 - c1oSqrt3 - vx3) * h2[d0MP]); + h2[dPPP] = c1o2 * (htemp[dPPP] * (c1oSqrt3 + vx3) + (c1o1 - c1oSqrt3 - vx3) * h2[dPPP]); + h2[dMPP] = c1o2 * (htemp[dMPP] * (c1oSqrt3 + vx3) + (c1o1 - c1oSqrt3 - vx3) * h2[dMPP]); + h2[dPMP] = c1o2 * (htemp[dPMP] * (c1oSqrt3 + vx3) + (c1o1 - c1oSqrt3 - vx3) * h2[dPMP]); + h2[dMMP] = c1o2 * (htemp[dMMP] * (c1oSqrt3 + vx3) + (c1o1 - c1oSqrt3 - vx3) * h2[dMMP]); + + distributionsH2->setPreCollisionDistributionForDirection(h2[d00P], x1 + DX1[d00M], x2 + DX2[d00M], x3 + DX3[d00M], d00M); + distributionsH2->setPreCollisionDistributionForDirection(h2[dP0P], x1 + DX1[dM0M], x2 + DX2[dM0M], x3 + DX3[dM0M], dM0M); + distributionsH2->setPreCollisionDistributionForDirection(h2[dM0P], x1 + DX1[dP0M], x2 + DX2[dP0M], x3 + DX3[dP0M], dP0M); + distributionsH2->setPreCollisionDistributionForDirection(h2[d0PP], x1 + DX1[d0MM], x2 + DX2[d0MM], x3 + DX3[d0MM], d0MM); + distributionsH2->setPreCollisionDistributionForDirection(h2[d0MP], x1 + DX1[d0PM], x2 + DX2[d0PM], x3 + DX3[d0PM], d0PM); + distributionsH2->setPreCollisionDistributionForDirection(h2[dPPP], x1 + DX1[dMMM], x2 + DX2[dMMM], x3 + DX3[dMMM], dMMM); + distributionsH2->setPreCollisionDistributionForDirection(h2[dMPP], x1 + DX1[dPMM], x2 + DX2[dPMM], x3 + DX3[dPMM], dPMM); + distributionsH2->setPreCollisionDistributionForDirection(h2[dPMP], x1 + DX1[dMPM], x2 + DX2[dMPM], x3 + DX3[dMPM], dMPM); + distributionsH2->setPreCollisionDistributionForDirection(h2[dMMP], x1 + DX1[dPPM], x2 + DX2[dPPM], x3 + DX3[dPPM], dPPM); break; - case DIR_00M: - f[DIR_00M] = ftemp[DIR_00M] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * f[DIR_00M]; - f[DIR_P0M] = ftemp[DIR_P0M] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * f[DIR_P0M]; - f[DIR_M0M] = ftemp[DIR_M0M] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * f[DIR_M0M]; - f[DIR_0PM] = ftemp[DIR_0PM] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * f[DIR_0PM]; - f[DIR_0MM] = ftemp[DIR_0MM] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * f[DIR_0MM]; - f[DIR_PPM] = ftemp[DIR_PPM] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * f[DIR_PPM]; - f[DIR_MPM] = ftemp[DIR_MPM] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * f[DIR_MPM]; - f[DIR_PMM] = ftemp[DIR_PMM] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * f[DIR_PMM]; - f[DIR_MMM] = ftemp[DIR_MMM] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * f[DIR_MMM]; - - distributions->setDistributionInvForDirection(f[DIR_00M], x1 + DX1[DIR_00P], x2 + DX2[DIR_00P], x3 + DX3[DIR_00P], DIR_00P); - distributions->setDistributionInvForDirection(f[DIR_P0M], x1 + DX1[DIR_M0P], x2 + DX2[DIR_M0P], x3 + DX3[DIR_M0P], DIR_M0P); - distributions->setDistributionInvForDirection(f[DIR_M0M], x1 + DX1[DIR_P0P], x2 + DX2[DIR_P0P], x3 + DX3[DIR_P0P], DIR_P0P); - distributions->setDistributionInvForDirection(f[DIR_0PM], x1 + DX1[DIR_0MP], x2 + DX2[DIR_0MP], x3 + DX3[DIR_0MP], DIR_0MP); - distributions->setDistributionInvForDirection(f[DIR_0MM], x1 + DX1[DIR_0PP], x2 + DX2[DIR_0PP], x3 + DX3[DIR_0PP], DIR_0PP); - distributions->setDistributionInvForDirection(f[DIR_PPM], x1 + DX1[DIR_MMP], x2 + DX2[DIR_MMP], x3 + DX3[DIR_MMP], DIR_MMP); - distributions->setDistributionInvForDirection(f[DIR_MPM], x1 + DX1[DIR_PMP], x2 + DX2[DIR_PMP], x3 + DX3[DIR_PMP], DIR_PMP); - distributions->setDistributionInvForDirection(f[DIR_PMM], x1 + DX1[DIR_MPP], x2 + DX2[DIR_MPP], x3 + DX3[DIR_MPP], DIR_MPP); - distributions->setDistributionInvForDirection(f[DIR_MMM], x1 + DX1[DIR_PPP], x2 + DX2[DIR_PPP], x3 + DX3[DIR_PPP], DIR_PPP); - - h[DIR_00M] = htemp[DIR_00M] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * h[DIR_00M]; - h[DIR_P0M] = htemp[DIR_P0M] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * h[DIR_P0M]; - h[DIR_M0M] = htemp[DIR_M0M] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * h[DIR_M0M]; - h[DIR_0PM] = htemp[DIR_0PM] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * h[DIR_0PM]; - h[DIR_0MM] = htemp[DIR_0MM] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * h[DIR_0MM]; - h[DIR_PPM] = htemp[DIR_PPM] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * h[DIR_PPM]; - h[DIR_MPM] = htemp[DIR_MPM] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * h[DIR_MPM]; - h[DIR_PMM] = htemp[DIR_PMM] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * h[DIR_PMM]; - h[DIR_MMM] = htemp[DIR_MMM] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * h[DIR_MMM]; - - distributionsH->setDistributionInvForDirection(h[DIR_00M], x1 + DX1[DIR_00P], x2 + DX2[DIR_00P], x3 + DX3[DIR_00P], DIR_00P); - distributionsH->setDistributionInvForDirection(h[DIR_P0M], x1 + DX1[DIR_M0P], x2 + DX2[DIR_M0P], x3 + DX3[DIR_M0P], DIR_M0P); - distributionsH->setDistributionInvForDirection(h[DIR_M0M], x1 + DX1[DIR_P0P], x2 + DX2[DIR_P0P], x3 + DX3[DIR_P0P], DIR_P0P); - distributionsH->setDistributionInvForDirection(h[DIR_0PM], x1 + DX1[DIR_0MP], x2 + DX2[DIR_0MP], x3 + DX3[DIR_0MP], DIR_0MP); - distributionsH->setDistributionInvForDirection(h[DIR_0MM], x1 + DX1[DIR_0PP], x2 + DX2[DIR_0PP], x3 + DX3[DIR_0PP], DIR_0PP); - distributionsH->setDistributionInvForDirection(h[DIR_PPM], x1 + DX1[DIR_MMP], x2 + DX2[DIR_MMP], x3 + DX3[DIR_MMP], DIR_MMP); - distributionsH->setDistributionInvForDirection(h[DIR_MPM], x1 + DX1[DIR_PMP], x2 + DX2[DIR_PMP], x3 + DX3[DIR_PMP], DIR_PMP); - distributionsH->setDistributionInvForDirection(h[DIR_PMM], x1 + DX1[DIR_MPP], x2 + DX2[DIR_MPP], x3 + DX3[DIR_MPP], DIR_MPP); - distributionsH->setDistributionInvForDirection(h[DIR_MMM], x1 + DX1[DIR_PPP], x2 + DX2[DIR_PPP], x3 + DX3[DIR_PPP], DIR_PPP); - - h2[DIR_00M] = c1o2 * (htemp[DIR_00M] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * h2[DIR_00M]); - h2[DIR_P0M] = c1o2 * (htemp[DIR_P0M] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * h2[DIR_P0M]); - h2[DIR_M0M] = c1o2 * (htemp[DIR_M0M] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * h2[DIR_M0M]); - h2[DIR_0PM] = c1o2 * (htemp[DIR_0PM] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * h2[DIR_0PM]); - h2[DIR_0MM] = c1o2 * (htemp[DIR_0MM] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * h2[DIR_0MM]); - h2[DIR_PPM] = c1o2 * (htemp[DIR_PPM] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * h2[DIR_PPM]); - h2[DIR_MPM] = c1o2 * (htemp[DIR_MPM] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * h2[DIR_MPM]); - h2[DIR_PMM] = c1o2 * (htemp[DIR_PMM] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * h2[DIR_PMM]); - h2[DIR_MMM] = c1o2 * (htemp[DIR_MMM] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * h2[DIR_MMM]); - - distributionsH2->setDistributionInvForDirection(h2[DIR_00M], x1 + DX1[DIR_00P], x2 + DX2[DIR_00P], x3 + DX3[DIR_00P], DIR_00P); - distributionsH2->setDistributionInvForDirection(h2[DIR_P0M], x1 + DX1[DIR_M0P], x2 + DX2[DIR_M0P], x3 + DX3[DIR_M0P], DIR_M0P); - distributionsH2->setDistributionInvForDirection(h2[DIR_M0M], x1 + DX1[DIR_P0P], x2 + DX2[DIR_P0P], x3 + DX3[DIR_P0P], DIR_P0P); - distributionsH2->setDistributionInvForDirection(h2[DIR_0PM], x1 + DX1[DIR_0MP], x2 + DX2[DIR_0MP], x3 + DX3[DIR_0MP], DIR_0MP); - distributionsH2->setDistributionInvForDirection(h2[DIR_0MM], x1 + DX1[DIR_0PP], x2 + DX2[DIR_0PP], x3 + DX3[DIR_0PP], DIR_0PP); - distributionsH2->setDistributionInvForDirection(h2[DIR_PPM], x1 + DX1[DIR_MMP], x2 + DX2[DIR_MMP], x3 + DX3[DIR_MMP], DIR_MMP); - distributionsH2->setDistributionInvForDirection(h2[DIR_MPM], x1 + DX1[DIR_PMP], x2 + DX2[DIR_PMP], x3 + DX3[DIR_PMP], DIR_PMP); - distributionsH2->setDistributionInvForDirection(h2[DIR_PMM], x1 + DX1[DIR_MPP], x2 + DX2[DIR_MPP], x3 + DX3[DIR_MPP], DIR_MPP); - distributionsH2->setDistributionInvForDirection(h2[DIR_MMM], x1 + DX1[DIR_PPP], x2 + DX2[DIR_PPP], x3 + DX3[DIR_PPP], DIR_PPP); + case d00M: + f[d00M] = ftemp[d00M] * (c1oSqrt3 - vx3) + (c1o1 - c1oSqrt3 + vx3) * f[d00M]; + f[dP0M] = ftemp[dP0M] * (c1oSqrt3 - vx3) + (c1o1 - c1oSqrt3 + vx3) * f[dP0M]; + f[dM0M] = ftemp[dM0M] * (c1oSqrt3 - vx3) + (c1o1 - c1oSqrt3 + vx3) * f[dM0M]; + f[d0PM] = ftemp[d0PM] * (c1oSqrt3 - vx3) + (c1o1 - c1oSqrt3 + vx3) * f[d0PM]; + f[d0MM] = ftemp[d0MM] * (c1oSqrt3 - vx3) + (c1o1 - c1oSqrt3 + vx3) * f[d0MM]; + f[dPPM] = ftemp[dPPM] * (c1oSqrt3 - vx3) + (c1o1 - c1oSqrt3 + vx3) * f[dPPM]; + f[dMPM] = ftemp[dMPM] * (c1oSqrt3 - vx3) + (c1o1 - c1oSqrt3 + vx3) * f[dMPM]; + f[dPMM] = ftemp[dPMM] * (c1oSqrt3 - vx3) + (c1o1 - c1oSqrt3 + vx3) * f[dPMM]; + f[dMMM] = ftemp[dMMM] * (c1oSqrt3 - vx3) + (c1o1 - c1oSqrt3 + vx3) * f[dMMM]; + + distributions->setPreCollisionDistributionForDirection(f[d00M], x1 + DX1[d00P], x2 + DX2[d00P], x3 + DX3[d00P], d00P); + distributions->setPreCollisionDistributionForDirection(f[dP0M], x1 + DX1[dM0P], x2 + DX2[dM0P], x3 + DX3[dM0P], dM0P); + distributions->setPreCollisionDistributionForDirection(f[dM0M], x1 + DX1[dP0P], x2 + DX2[dP0P], x3 + DX3[dP0P], dP0P); + distributions->setPreCollisionDistributionForDirection(f[d0PM], x1 + DX1[d0MP], x2 + DX2[d0MP], x3 + DX3[d0MP], d0MP); + distributions->setPreCollisionDistributionForDirection(f[d0MM], x1 + DX1[d0PP], x2 + DX2[d0PP], x3 + DX3[d0PP], d0PP); + distributions->setPreCollisionDistributionForDirection(f[dPPM], x1 + DX1[dMMP], x2 + DX2[dMMP], x3 + DX3[dMMP], dMMP); + distributions->setPreCollisionDistributionForDirection(f[dMPM], x1 + DX1[dPMP], x2 + DX2[dPMP], x3 + DX3[dPMP], dPMP); + distributions->setPreCollisionDistributionForDirection(f[dPMM], x1 + DX1[dMPP], x2 + DX2[dMPP], x3 + DX3[dMPP], dMPP); + distributions->setPreCollisionDistributionForDirection(f[dMMM], x1 + DX1[dPPP], x2 + DX2[dPPP], x3 + DX3[dPPP], dPPP); + + h[d00M] = htemp[d00M] * (c1oSqrt3 - vx3) + (c1o1 - c1oSqrt3 + vx3) * h[d00M]; + h[dP0M] = htemp[dP0M] * (c1oSqrt3 - vx3) + (c1o1 - c1oSqrt3 + vx3) * h[dP0M]; + h[dM0M] = htemp[dM0M] * (c1oSqrt3 - vx3) + (c1o1 - c1oSqrt3 + vx3) * h[dM0M]; + h[d0PM] = htemp[d0PM] * (c1oSqrt3 - vx3) + (c1o1 - c1oSqrt3 + vx3) * h[d0PM]; + h[d0MM] = htemp[d0MM] * (c1oSqrt3 - vx3) + (c1o1 - c1oSqrt3 + vx3) * h[d0MM]; + h[dPPM] = htemp[dPPM] * (c1oSqrt3 - vx3) + (c1o1 - c1oSqrt3 + vx3) * h[dPPM]; + h[dMPM] = htemp[dMPM] * (c1oSqrt3 - vx3) + (c1o1 - c1oSqrt3 + vx3) * h[dMPM]; + h[dPMM] = htemp[dPMM] * (c1oSqrt3 - vx3) + (c1o1 - c1oSqrt3 + vx3) * h[dPMM]; + h[dMMM] = htemp[dMMM] * (c1oSqrt3 - vx3) + (c1o1 - c1oSqrt3 + vx3) * h[dMMM]; + + distributionsH->setPreCollisionDistributionForDirection(h[d00M], x1 + DX1[d00P], x2 + DX2[d00P], x3 + DX3[d00P], d00P); + distributionsH->setPreCollisionDistributionForDirection(h[dP0M], x1 + DX1[dM0P], x2 + DX2[dM0P], x3 + DX3[dM0P], dM0P); + distributionsH->setPreCollisionDistributionForDirection(h[dM0M], x1 + DX1[dP0P], x2 + DX2[dP0P], x3 + DX3[dP0P], dP0P); + distributionsH->setPreCollisionDistributionForDirection(h[d0PM], x1 + DX1[d0MP], x2 + DX2[d0MP], x3 + DX3[d0MP], d0MP); + distributionsH->setPreCollisionDistributionForDirection(h[d0MM], x1 + DX1[d0PP], x2 + DX2[d0PP], x3 + DX3[d0PP], d0PP); + distributionsH->setPreCollisionDistributionForDirection(h[dPPM], x1 + DX1[dMMP], x2 + DX2[dMMP], x3 + DX3[dMMP], dMMP); + distributionsH->setPreCollisionDistributionForDirection(h[dMPM], x1 + DX1[dPMP], x2 + DX2[dPMP], x3 + DX3[dPMP], dPMP); + distributionsH->setPreCollisionDistributionForDirection(h[dPMM], x1 + DX1[dMPP], x2 + DX2[dMPP], x3 + DX3[dMPP], dMPP); + distributionsH->setPreCollisionDistributionForDirection(h[dMMM], x1 + DX1[dPPP], x2 + DX2[dPPP], x3 + DX3[dPPP], dPPP); + + h2[d00M] = c1o2 * (htemp[d00M] * (c1oSqrt3 - vx3) + (c1o1 - c1oSqrt3 + vx3) * h2[d00M]); + h2[dP0M] = c1o2 * (htemp[dP0M] * (c1oSqrt3 - vx3) + (c1o1 - c1oSqrt3 + vx3) * h2[dP0M]); + h2[dM0M] = c1o2 * (htemp[dM0M] * (c1oSqrt3 - vx3) + (c1o1 - c1oSqrt3 + vx3) * h2[dM0M]); + h2[d0PM] = c1o2 * (htemp[d0PM] * (c1oSqrt3 - vx3) + (c1o1 - c1oSqrt3 + vx3) * h2[d0PM]); + h2[d0MM] = c1o2 * (htemp[d0MM] * (c1oSqrt3 - vx3) + (c1o1 - c1oSqrt3 + vx3) * h2[d0MM]); + h2[dPPM] = c1o2 * (htemp[dPPM] * (c1oSqrt3 - vx3) + (c1o1 - c1oSqrt3 + vx3) * h2[dPPM]); + h2[dMPM] = c1o2 * (htemp[dMPM] * (c1oSqrt3 - vx3) + (c1o1 - c1oSqrt3 + vx3) * h2[dMPM]); + h2[dPMM] = c1o2 * (htemp[dPMM] * (c1oSqrt3 - vx3) + (c1o1 - c1oSqrt3 + vx3) * h2[dPMM]); + h2[dMMM] = c1o2 * (htemp[dMMM] * (c1oSqrt3 - vx3) + (c1o1 - c1oSqrt3 + vx3) * h2[dMMM]); + + distributionsH2->setPreCollisionDistributionForDirection(h2[d00M], x1 + DX1[d00P], x2 + DX2[d00P], x3 + DX3[d00P], d00P); + distributionsH2->setPreCollisionDistributionForDirection(h2[dP0M], x1 + DX1[dM0P], x2 + DX2[dM0P], x3 + DX3[dM0P], dM0P); + distributionsH2->setPreCollisionDistributionForDirection(h2[dM0M], x1 + DX1[dP0P], x2 + DX2[dP0P], x3 + DX3[dP0P], dP0P); + distributionsH2->setPreCollisionDistributionForDirection(h2[d0PM], x1 + DX1[d0MP], x2 + DX2[d0MP], x3 + DX3[d0MP], d0MP); + distributionsH2->setPreCollisionDistributionForDirection(h2[d0MM], x1 + DX1[d0PP], x2 + DX2[d0PP], x3 + DX3[d0PP], d0PP); + distributionsH2->setPreCollisionDistributionForDirection(h2[dPPM], x1 + DX1[dMMP], x2 + DX2[dMMP], x3 + DX3[dMMP], dMMP); + distributionsH2->setPreCollisionDistributionForDirection(h2[dMPM], x1 + DX1[dPMP], x2 + DX2[dPMP], x3 + DX3[dPMP], dPMP); + distributionsH2->setPreCollisionDistributionForDirection(h2[dPMM], x1 + DX1[dMPP], x2 + DX2[dMPP], x3 + DX3[dMPP], dMPP); + distributionsH2->setPreCollisionDistributionForDirection(h2[dMMM], x1 + DX1[dPPP], x2 + DX2[dPPP], x3 + DX3[dPPP], dPPP); break; default: diff --git a/src/cpu/MultiphaseFlow/BoundaryConditions/MultiphasePressureBCStrategy.cpp b/src/cpu/MultiphaseFlow/BoundaryConditions/MultiphasePressureBCStrategy.cpp index f85d3c6503fbe645ecef115351c6e8fd11c287d1..adf21a72e9c3f4b58487af125e661ea787694a16 100644 --- a/src/cpu/MultiphaseFlow/BoundaryConditions/MultiphasePressureBCStrategy.cpp +++ b/src/cpu/MultiphaseFlow/BoundaryConditions/MultiphasePressureBCStrategy.cpp @@ -77,10 +77,10 @@ void MultiphasePressureBCStrategy::applyBC() //LBMReal heq[D3Q27System::ENDF+1]; LBMReal htemp[D3Q27System::ENDF+1]; - distributions->getDistributionInv(f, x1, x2, x3); - distributionsH->getDistributionInv(h, x1, x2, x3); + distributions->getPostCollisionDistribution(f, x1, x2, x3); + distributionsH->getPostCollisionDistribution(h, x1, x2, x3); if (distributionsH2) - distributionsH2->getDistributionInv(h2, x1, x2, x3); + distributionsH2->getPostCollisionDistribution(h2, x1, x2, x3); LBMReal phi, vx1, vx2, vx3, p1, phiBC; D3Q27System::calcDensity(h, phi); @@ -97,10 +97,10 @@ void MultiphasePressureBCStrategy::applyBC() for (int fdir = D3Q27System::STARTF; fdir <= D3Q27System::ENDF; fdir++) { if (bcPtr->hasDensityBoundaryFlag(fdir)) { LBMReal ftemp = -f[D3Q27System::INVDIR[fdir]] + feq[fdir] + feq[D3Q27System::INVDIR[fdir]]; - distributions->setDistributionForDirection(ftemp, x1, x2, x3, D3Q27System::INVDIR[fdir]); + distributions->setPostCollisionDistributionForDirection(ftemp, x1, x2, x3, D3Q27System::INVDIR[fdir]); LBMReal hReturn = -h[D3Q27System::INVDIR[fdir]] + htemp[fdir] + htemp[D3Q27System::INVDIR[fdir]]; - distributionsH->setDistributionForDirection(hReturn, x1, x2, x3, D3Q27System::INVDIR[fdir]); + distributionsH->setPostCollisionDistributionForDirection(hReturn, x1, x2, x3, D3Q27System::INVDIR[fdir]); } } } diff --git a/src/cpu/MultiphaseFlow/BoundaryConditions/MultiphaseSlipBCStrategy.cpp b/src/cpu/MultiphaseFlow/BoundaryConditions/MultiphaseSlipBCStrategy.cpp index b394d2d5d249004225b533c63fdbd596224e4b33..a7d9d1c10a0495b7c33c3ded481e4c27c10262bd 100644 --- a/src/cpu/MultiphaseFlow/BoundaryConditions/MultiphaseSlipBCStrategy.cpp +++ b/src/cpu/MultiphaseFlow/BoundaryConditions/MultiphaseSlipBCStrategy.cpp @@ -70,8 +70,8 @@ void MultiphaseSlipBCStrategy::applyBC() real h[D3Q27System::ENDF+1]; real feq[D3Q27System::ENDF+1]; real heq[D3Q27System::ENDF+1]; - distributions->getDistributionInv(f, x1, x2, x3); - distributionsH->getDistributionInv(h, x1, x2, x3); + distributions->getPostCollisionDistribution(f, x1, x2, x3); + distributionsH->getPostCollisionDistribution(h, x1, x2, x3); real p1, vx1, vx2, vx3, phi, rho; @@ -104,40 +104,40 @@ void MultiphaseSlipBCStrategy::applyBC() real velocity = vf::basics::constant::c0o1; switch (invDir) { - case DIR_P00: velocity = (vf::basics::constant::c4o9*(+vx1)); break; //(2/cs^2)(=6)*rho_0(=1 bei imkompr)*wi*u*ei mit cs=1/sqrt(3) - case DIR_M00: velocity = (vf::basics::constant::c4o9*(-vx1)); break; //z.B. aus paper manfred MRT LB models in three dimensions (2002) - case DIR_0P0: velocity = (vf::basics::constant::c4o9*(+vx2)); break; - case DIR_0M0: velocity = (vf::basics::constant::c4o9*(-vx2)); break; - case DIR_00P: velocity = (vf::basics::constant::c4o9*(+vx3)); break; - case DIR_00M: velocity = (vf::basics::constant::c4o9*(-vx3)); break; - case DIR_PP0: velocity = (vf::basics::constant::c1o9*(+vx1+vx2)); break; - case DIR_MM0: velocity = (vf::basics::constant::c1o9*(-vx1-vx2)); break; - case DIR_PM0: velocity = (vf::basics::constant::c1o9*(+vx1-vx2)); break; - case DIR_MP0: velocity = (vf::basics::constant::c1o9*(-vx1+vx2)); break; - case DIR_P0P: velocity = (vf::basics::constant::c1o9*(+vx1+vx3)); break; - case DIR_M0M: velocity = (vf::basics::constant::c1o9*(-vx1-vx3)); break; - case DIR_P0M: velocity = (vf::basics::constant::c1o9*(+vx1-vx3)); break; - case DIR_M0P: velocity = (vf::basics::constant::c1o9*(-vx1+vx3)); break; - case DIR_0PP: velocity = (vf::basics::constant::c1o9*(+vx2+vx3)); break; - case DIR_0MM: velocity = (vf::basics::constant::c1o9*(-vx2-vx3)); break; - case DIR_0PM: velocity = (vf::basics::constant::c1o9*(+vx2-vx3)); break; - case DIR_0MP: velocity = (vf::basics::constant::c1o9*(-vx2+vx3)); break; - case DIR_PPP: velocity = (vf::basics::constant::c1o36*(+vx1+vx2+vx3)); break; - case DIR_MMM: velocity = (vf::basics::constant::c1o36*(-vx1-vx2-vx3)); break; - case DIR_PPM: velocity = (vf::basics::constant::c1o36*(+vx1+vx2-vx3)); break; - case DIR_MMP: velocity = (vf::basics::constant::c1o36*(-vx1-vx2+vx3)); break; - case DIR_PMP: velocity = (vf::basics::constant::c1o36*(+vx1-vx2+vx3)); break; - case DIR_MPM: velocity = (vf::basics::constant::c1o36*(-vx1+vx2-vx3)); break; - case DIR_PMM: velocity = (vf::basics::constant::c1o36*(+vx1-vx2-vx3)); break; - case DIR_MPP: velocity = (vf::basics::constant::c1o36*(-vx1+vx2+vx3)); break; + case dP00: velocity = (vf::basics::constant::c4o9*(+vx1)); break; //(2/cs^2)(=6)*rho_0(=1 bei imkompr)*wi*u*ei mit cs=1/sqrt(3) + case dM00: velocity = (vf::basics::constant::c4o9*(-vx1)); break; //z.B. aus paper manfred MRT LB models in three dimensions (2002) + case d0P0: velocity = (vf::basics::constant::c4o9*(+vx2)); break; + case d0M0: velocity = (vf::basics::constant::c4o9*(-vx2)); break; + case d00P: velocity = (vf::basics::constant::c4o9*(+vx3)); break; + case d00M: velocity = (vf::basics::constant::c4o9*(-vx3)); break; + case dPP0: velocity = (vf::basics::constant::c1o9*(+vx1+vx2)); break; + case dMM0: velocity = (vf::basics::constant::c1o9*(-vx1-vx2)); break; + case dPM0: velocity = (vf::basics::constant::c1o9*(+vx1-vx2)); break; + case dMP0: velocity = (vf::basics::constant::c1o9*(-vx1+vx2)); break; + case dP0P: velocity = (vf::basics::constant::c1o9*(+vx1+vx3)); break; + case dM0M: velocity = (vf::basics::constant::c1o9*(-vx1-vx3)); break; + case dP0M: velocity = (vf::basics::constant::c1o9*(+vx1-vx3)); break; + case dM0P: velocity = (vf::basics::constant::c1o9*(-vx1+vx3)); break; + case d0PP: velocity = (vf::basics::constant::c1o9*(+vx2+vx3)); break; + case d0MM: velocity = (vf::basics::constant::c1o9*(-vx2-vx3)); break; + case d0PM: velocity = (vf::basics::constant::c1o9*(+vx2-vx3)); break; + case d0MP: velocity = (vf::basics::constant::c1o9*(-vx2+vx3)); break; + case dPPP: velocity = (vf::basics::constant::c1o36*(+vx1+vx2+vx3)); break; + case dMMM: velocity = (vf::basics::constant::c1o36*(-vx1-vx2-vx3)); break; + case dPPM: velocity = (vf::basics::constant::c1o36*(+vx1+vx2-vx3)); break; + case dMMP: velocity = (vf::basics::constant::c1o36*(-vx1-vx2+vx3)); break; + case dPMP: velocity = (vf::basics::constant::c1o36*(+vx1-vx2+vx3)); break; + case dMPM: velocity = (vf::basics::constant::c1o36*(-vx1+vx2-vx3)); break; + case dPMM: velocity = (vf::basics::constant::c1o36*(+vx1-vx2-vx3)); break; + case dMPP: velocity = (vf::basics::constant::c1o36*(-vx1+vx2+vx3)); break; default: throw UbException(UB_EXARGS, "unknown error"); } real fReturn = ((vf::basics::constant::c1o1-q)/(vf::basics::constant::c1o1+q))*((f[invDir]-feq[invDir])/(vf::basics::constant::c1o1-collFactor)+feq[invDir])+((q*(f[invDir]+f[fdir])-velocity*rho)/(vf::basics::constant::c1o1+q)); - distributions->setDistributionForDirection(fReturn, x1+D3Q27System::DX1[invDir], x2+D3Q27System::DX2[invDir], x3+D3Q27System::DX3[invDir], fdir); + distributions->setPostCollisionDistributionForDirection(fReturn, x1+D3Q27System::DX1[invDir], x2+D3Q27System::DX2[invDir], x3+D3Q27System::DX3[invDir], fdir); //real hReturn = ((1.0-q)/(1.0+q))*((h[invDir]-heq[invDir])/(1.0-collFactorPh)+heq[invDir])+((q/(1.0+q))*(h[invDir]+h[fdir])); real hReturn = h[invDir]; - distributionsH->setDistributionForDirection(hReturn, x1+D3Q27System::DX1[invDir], x2+D3Q27System::DX2[invDir], x3+D3Q27System::DX3[invDir], fdir); + distributionsH->setPostCollisionDistributionForDirection(hReturn, x1+D3Q27System::DX1[invDir], x2+D3Q27System::DX2[invDir], x3+D3Q27System::DX3[invDir], fdir); } } } \ No newline at end of file diff --git a/src/cpu/MultiphaseFlow/BoundaryConditions/MultiphaseVelocityBCStrategy.cpp b/src/cpu/MultiphaseFlow/BoundaryConditions/MultiphaseVelocityBCStrategy.cpp index a0b334d8ee7a88471ca3e5c640e04a914f4171bd..d1037fa27a950dca373b13762849a2e040ccc03c 100644 --- a/src/cpu/MultiphaseFlow/BoundaryConditions/MultiphaseVelocityBCStrategy.cpp +++ b/src/cpu/MultiphaseFlow/BoundaryConditions/MultiphaseVelocityBCStrategy.cpp @@ -77,10 +77,10 @@ void MultiphaseVelocityBCStrategy::applyBC() real heq[D3Q27System::ENDF+1]; real htemp[D3Q27System::ENDF+1]; - distributions->getDistributionInv(f, x1, x2, x3); - distributionsH->getDistributionInv(h, x1, x2, x3); + distributions->getPostCollisionDistribution(f, x1, x2, x3); + distributionsH->getPostCollisionDistribution(h, x1, x2, x3); if (distributionsH2) - distributionsH2->getDistributionInv(h2, x1, x2, x3); + distributionsH2->getPostCollisionDistribution(h2, x1, x2, x3); real phi, vx1, vx2, vx3, p1, phiBC; D3Q27System::calcDensity(h, phi); @@ -106,9 +106,9 @@ void MultiphaseVelocityBCStrategy::applyBC() // LBMReal hReturn = htemp[fdir]+h[fdir]-heq[fdir]; // //17.03.2021 Let us just set the plain eq // //LBMReal hReturn = htemp[fdir]; - // distributionsH->setDistributionForDirection(hReturn, nx1, nx2, nx3, fdir); + // distributionsH->setPostCollisionDistributionForDirection(hReturn, nx1, nx2, nx3, fdir); // // if (distributionsH2) - // // distributionsH2->setDistributionForDirection(0, nx1, nx2, nx3, fdir); + // // distributionsH2->setPostCollisionDistributionForDirection(0, nx1, nx2, nx3, fdir); // } //} @@ -122,15 +122,15 @@ void MultiphaseVelocityBCStrategy::applyBC() //16.03.2021 quick fix for velocity BC real fReturn = f[invDir] - velocity; //LBMReal fReturn = ((1.0-q)/(1.0+q))*((f[invDir]-feq[invDir])/(1.0-collFactor)+feq[invDir])+((q*(f[invDir]+f[fdir])-velocity)/(1.0+q)); - // distributions->setDistributionForDirection(fReturn, x1+D3Q27System::DX1[invDir], x2+D3Q27System::DX2[invDir], x3+D3Q27System::DX3[invDir], fdir);//no delay BB - distributions->setDistributionForDirection(fReturn, x1, x2, x3, invDir);//delay BB + // distributions->setPostCollisionDistributionForDirection(fReturn, x1+D3Q27System::DX1[invDir], x2+D3Q27System::DX2[invDir], x3+D3Q27System::DX3[invDir], fdir);//no delay BB + distributions->setPostCollisionDistributionForDirection(fReturn, x1, x2, x3, invDir);//delay BB real hReturn = htemp[invDir] + h[invDir] - heq[invDir] - velocity*phi; - distributionsH->setDistributionForDirection(hReturn, x1, x2, x3, invDir);//delay BB + distributionsH->setPostCollisionDistributionForDirection(hReturn, x1, x2, x3, invDir);//delay BB if (distributionsH2) { fReturn = h2[invDir] ; - // distributionsH2->setDistributionForDirection(fReturn, x1 + D3Q27System::DX1[invDir], x2 + D3Q27System::DX2[invDir], x3 + D3Q27System::DX3[invDir], fdir); - distributionsH2->setDistributionForDirection(fReturn, x1, x2, x3, invDir);//delay BB + // distributionsH2->setPostCollisionDistributionForDirection(fReturn, x1 + D3Q27System::DX1[invDir], x2 + D3Q27System::DX2[invDir], x3 + D3Q27System::DX3[invDir], fdir); + distributionsH2->setPostCollisionDistributionForDirection(fReturn, x1, x2, x3, invDir);//delay BB } } diff --git a/src/cpu/MultiphaseFlow/CMakeLists.txt b/src/cpu/MultiphaseFlow/CMakeLists.txt index 35765164bce5ce208f1c43fcc7345cbd77f4e999..261919282ce830bfcf1e364443c439338b642d88 100644 --- a/src/cpu/MultiphaseFlow/CMakeLists.txt +++ b/src/cpu/MultiphaseFlow/CMakeLists.txt @@ -1 +1 @@ -vf_add_library(PUBLIC_LINK VirtualFluidsCore) \ No newline at end of file +vf_add_library(PUBLIC_LINK cpu_core) \ No newline at end of file diff --git a/src/cpu/MultiphaseFlow/LBM/MultiphaseCumulantLBMKernel.cpp b/src/cpu/MultiphaseFlow/LBM/MultiphaseCumulantLBMKernel.cpp index 2655e916025b1d2b085348c06cb95c425813d83d..f98663a3a2b7cb32e4b62c98abb354dc55b82564 100644 --- a/src/cpu/MultiphaseFlow/LBM/MultiphaseCumulantLBMKernel.cpp +++ b/src/cpu/MultiphaseFlow/LBM/MultiphaseCumulantLBMKernel.cpp @@ -237,13 +237,13 @@ void MultiphaseCumulantLBMKernel::calculate(int step) real dX3_phi = gradX3_phi(); real denom = sqrt(dX1_phi * dX1_phi + dX2_phi * dX2_phi + dX3_phi * dX3_phi) + 1e-9; - collFactorM = collFactorL + (collFactorL - collFactorG) * (phi[DIR_000] - phiH) / (phiH - phiL); + collFactorM = collFactorL + (collFactorL - collFactorG) * (phi[d000] - phiH) / (phiH - phiL); - real mu = 2 * beta * phi[DIR_000] * (phi[DIR_000] - 1) * (2 * phi[DIR_000] - 1) - kappa * nabla2_phi(); + real mu = 2 * beta * phi[d000] * (phi[d000] - 1) * (2 * phi[d000] - 1) - kappa * nabla2_phi(); //----------- Calculating Macroscopic Values ------------- - real rho = rhoH + rhoToPhi * (phi[DIR_000] - phiH); + real rho = rhoH + rhoToPhi * (phi[d000] - phiH); if (withForcing) { // muX1 = static_cast<double>(x1-1+ix1*maxX1); @@ -310,41 +310,41 @@ void MultiphaseCumulantLBMKernel::calculate(int step) (DX3[dir]) * (fac1 * dX3_phi + gamma * (mu * dX3_phi + forcingX3)); } - real gamma = WEIGTH[DIR_000] * (1.0 - 1.5 * (ux2 + uy2 + uz2)); - real fac1 = (gamma - WEIGTH[DIR_000]) * c1o3 * rhoToPhi; - forcingTerm[DIR_000] = (-ux) * (fac1 * dX1_phi + gamma * (mu * dX1_phi + forcingX1)) + + real gamma = WEIGTH[d000] * (1.0 - 1.5 * (ux2 + uy2 + uz2)); + real fac1 = (gamma - WEIGTH[d000]) * c1o3 * rhoToPhi; + forcingTerm[d000] = (-ux) * (fac1 * dX1_phi + gamma * (mu * dX1_phi + forcingX1)) + (-uy) * (fac1 * dX2_phi + gamma * (mu * dX2_phi + forcingX2)) + (-uz) * (fac1 * dX3_phi + gamma * (mu * dX3_phi + forcingX3)); //-------------------------------------------------------- - mfcbb = 3.0 * (mfcbb + 0.5 * forcingTerm[DIR_P00]) / rho; //-(3.0*p1 - rho)*WEIGTH[E ]; - mfbcb = 3.0 * (mfbcb + 0.5 * forcingTerm[DIR_0P0]) / rho; //-(3.0*p1 - rho)*WEIGTH[N ]; - mfbbc = 3.0 * (mfbbc + 0.5 * forcingTerm[DIR_00P]) / rho; //-(3.0*p1 - rho)*WEIGTH[T ]; - mfccb = 3.0 * (mfccb + 0.5 * forcingTerm[DIR_PP0]) / rho; //-(3.0*p1 - rho)*WEIGTH[NE ]; - mfacb = 3.0 * (mfacb + 0.5 * forcingTerm[DIR_MP0]) / rho; //-(3.0*p1 - rho)*WEIGTH[NW ]; - mfcbc = 3.0 * (mfcbc + 0.5 * forcingTerm[DIR_P0P]) / rho; //-(3.0*p1 - rho)*WEIGTH[TE ]; - mfabc = 3.0 * (mfabc + 0.5 * forcingTerm[DIR_M0P]) / rho; //-(3.0*p1 - rho)*WEIGTH[TW ]; - mfbcc = 3.0 * (mfbcc + 0.5 * forcingTerm[DIR_0PP]) / rho; //-(3.0*p1 - rho)*WEIGTH[TN ]; - mfbac = 3.0 * (mfbac + 0.5 * forcingTerm[DIR_0MP]) / rho; //-(3.0*p1 - rho)*WEIGTH[TS ]; - mfccc = 3.0 * (mfccc + 0.5 * forcingTerm[DIR_PPP]) / rho; //-(3.0*p1 - rho)*WEIGTH[TNE]; - mfacc = 3.0 * (mfacc + 0.5 * forcingTerm[DIR_MPP]) / rho; //-(3.0*p1 - rho)*WEIGTH[TNW]; - mfcac = 3.0 * (mfcac + 0.5 * forcingTerm[DIR_PMP]) / rho; //-(3.0*p1 - rho)*WEIGTH[TSE]; - mfaac = 3.0 * (mfaac + 0.5 * forcingTerm[DIR_MMP]) / rho; //-(3.0*p1 - rho)*WEIGTH[TSW]; - mfabb = 3.0 * (mfabb + 0.5 * forcingTerm[DIR_M00]) / rho; //-(3.0*p1 - rho)*WEIGTH[W ]; - mfbab = 3.0 * (mfbab + 0.5 * forcingTerm[DIR_0M0]) / rho; //-(3.0*p1 - rho)*WEIGTH[S ]; - mfbba = 3.0 * (mfbba + 0.5 * forcingTerm[DIR_00M]) / rho; //-(3.0*p1 - rho)*WEIGTH[B ]; - mfaab = 3.0 * (mfaab + 0.5 * forcingTerm[DIR_MM0]) / rho; //-(3.0*p1 - rho)*WEIGTH[SW ]; - mfcab = 3.0 * (mfcab + 0.5 * forcingTerm[DIR_PM0]) / rho; //-(3.0*p1 - rho)*WEIGTH[SE ]; - mfaba = 3.0 * (mfaba + 0.5 * forcingTerm[DIR_M0M]) / rho; //-(3.0*p1 - rho)*WEIGTH[BW ]; - mfcba = 3.0 * (mfcba + 0.5 * forcingTerm[DIR_P0M]) / rho; //-(3.0*p1 - rho)*WEIGTH[BE ]; - mfbaa = 3.0 * (mfbaa + 0.5 * forcingTerm[DIR_0MM]) / rho; //-(3.0*p1 - rho)*WEIGTH[BS ]; - mfbca = 3.0 * (mfbca + 0.5 * forcingTerm[DIR_0PM]) / rho; //-(3.0*p1 - rho)*WEIGTH[BN ]; - mfaaa = 3.0 * (mfaaa + 0.5 * forcingTerm[DIR_MMM]) / rho; //-(3.0*p1 - rho)*WEIGTH[BSW]; - mfcaa = 3.0 * (mfcaa + 0.5 * forcingTerm[DIR_PMM]) / rho; //-(3.0*p1 - rho)*WEIGTH[BSE]; - mfaca = 3.0 * (mfaca + 0.5 * forcingTerm[DIR_MPM]) / rho; //-(3.0*p1 - rho)*WEIGTH[BNW]; - mfcca = 3.0 * (mfcca + 0.5 * forcingTerm[DIR_PPM]) / rho; //-(3.0*p1 - rho)*WEIGTH[BNE]; - mfbbb = 3.0 * (mfbbb + 0.5 * forcingTerm[DIR_000]) / rho; //- (3.0*p1 - rho)*WEIGTH[REST]; + mfcbb = 3.0 * (mfcbb + 0.5 * forcingTerm[dP00]) / rho; //-(3.0*p1 - rho)*WEIGTH[E ]; + mfbcb = 3.0 * (mfbcb + 0.5 * forcingTerm[d0P0]) / rho; //-(3.0*p1 - rho)*WEIGTH[N ]; + mfbbc = 3.0 * (mfbbc + 0.5 * forcingTerm[d00P]) / rho; //-(3.0*p1 - rho)*WEIGTH[T ]; + mfccb = 3.0 * (mfccb + 0.5 * forcingTerm[dPP0]) / rho; //-(3.0*p1 - rho)*WEIGTH[NE ]; + mfacb = 3.0 * (mfacb + 0.5 * forcingTerm[dMP0]) / rho; //-(3.0*p1 - rho)*WEIGTH[NW ]; + mfcbc = 3.0 * (mfcbc + 0.5 * forcingTerm[dP0P]) / rho; //-(3.0*p1 - rho)*WEIGTH[TE ]; + mfabc = 3.0 * (mfabc + 0.5 * forcingTerm[dM0P]) / rho; //-(3.0*p1 - rho)*WEIGTH[TW ]; + mfbcc = 3.0 * (mfbcc + 0.5 * forcingTerm[d0PP]) / rho; //-(3.0*p1 - rho)*WEIGTH[TN ]; + mfbac = 3.0 * (mfbac + 0.5 * forcingTerm[d0MP]) / rho; //-(3.0*p1 - rho)*WEIGTH[TS ]; + mfccc = 3.0 * (mfccc + 0.5 * forcingTerm[dPPP]) / rho; //-(3.0*p1 - rho)*WEIGTH[TNE]; + mfacc = 3.0 * (mfacc + 0.5 * forcingTerm[dMPP]) / rho; //-(3.0*p1 - rho)*WEIGTH[TNW]; + mfcac = 3.0 * (mfcac + 0.5 * forcingTerm[dPMP]) / rho; //-(3.0*p1 - rho)*WEIGTH[TSE]; + mfaac = 3.0 * (mfaac + 0.5 * forcingTerm[dMMP]) / rho; //-(3.0*p1 - rho)*WEIGTH[TSW]; + mfabb = 3.0 * (mfabb + 0.5 * forcingTerm[dM00]) / rho; //-(3.0*p1 - rho)*WEIGTH[W ]; + mfbab = 3.0 * (mfbab + 0.5 * forcingTerm[d0M0]) / rho; //-(3.0*p1 - rho)*WEIGTH[S ]; + mfbba = 3.0 * (mfbba + 0.5 * forcingTerm[d00M]) / rho; //-(3.0*p1 - rho)*WEIGTH[B ]; + mfaab = 3.0 * (mfaab + 0.5 * forcingTerm[dMM0]) / rho; //-(3.0*p1 - rho)*WEIGTH[SW ]; + mfcab = 3.0 * (mfcab + 0.5 * forcingTerm[dPM0]) / rho; //-(3.0*p1 - rho)*WEIGTH[SE ]; + mfaba = 3.0 * (mfaba + 0.5 * forcingTerm[dM0M]) / rho; //-(3.0*p1 - rho)*WEIGTH[BW ]; + mfcba = 3.0 * (mfcba + 0.5 * forcingTerm[dP0M]) / rho; //-(3.0*p1 - rho)*WEIGTH[BE ]; + mfbaa = 3.0 * (mfbaa + 0.5 * forcingTerm[d0MM]) / rho; //-(3.0*p1 - rho)*WEIGTH[BS ]; + mfbca = 3.0 * (mfbca + 0.5 * forcingTerm[d0PM]) / rho; //-(3.0*p1 - rho)*WEIGTH[BN ]; + mfaaa = 3.0 * (mfaaa + 0.5 * forcingTerm[dMMM]) / rho; //-(3.0*p1 - rho)*WEIGTH[BSW]; + mfcaa = 3.0 * (mfcaa + 0.5 * forcingTerm[dPMM]) / rho; //-(3.0*p1 - rho)*WEIGTH[BSE]; + mfaca = 3.0 * (mfaca + 0.5 * forcingTerm[dMPM]) / rho; //-(3.0*p1 - rho)*WEIGTH[BNW]; + mfcca = 3.0 * (mfcca + 0.5 * forcingTerm[dPPM]) / rho; //-(3.0*p1 - rho)*WEIGTH[BNE]; + mfbbb = 3.0 * (mfbbb + 0.5 * forcingTerm[d000]) / rho; //- (3.0*p1 - rho)*WEIGTH[REST]; real rho1 = (mfaaa + mfaac + mfaca + mfcaa + mfacc + mfcac + mfccc + mfcca) + (mfaab + mfacb + mfcab + mfccb) + (mfaba + mfabc + mfcba + mfcbc) + @@ -1026,33 +1026,33 @@ void MultiphaseCumulantLBMKernel::calculate(int step) } #endif - mfcbb = rho * c1o3 * (mfcbb) + 0.5 * forcingTerm[DIR_P00]; - mfbcb = rho * c1o3 * (mfbcb) + 0.5 * forcingTerm[DIR_0P0]; - mfbbc = rho * c1o3 * (mfbbc) + 0.5 * forcingTerm[DIR_00P]; - mfccb = rho * c1o3 * (mfccb) + 0.5 * forcingTerm[DIR_PP0]; - mfacb = rho * c1o3 * (mfacb) + 0.5 * forcingTerm[DIR_MP0]; - mfcbc = rho * c1o3 * (mfcbc) + 0.5 * forcingTerm[DIR_P0P]; - mfabc = rho * c1o3 * (mfabc) + 0.5 * forcingTerm[DIR_M0P]; - mfbcc = rho * c1o3 * (mfbcc) + 0.5 * forcingTerm[DIR_0PP]; - mfbac = rho * c1o3 * (mfbac) + 0.5 * forcingTerm[DIR_0MP]; - mfccc = rho * c1o3 * (mfccc) + 0.5 * forcingTerm[DIR_PPP]; - mfacc = rho * c1o3 * (mfacc) + 0.5 * forcingTerm[DIR_MPP]; - mfcac = rho * c1o3 * (mfcac) + 0.5 * forcingTerm[DIR_PMP]; - mfaac = rho * c1o3 * (mfaac) + 0.5 * forcingTerm[DIR_MMP]; - mfabb = rho * c1o3 * (mfabb) + 0.5 * forcingTerm[DIR_M00]; - mfbab = rho * c1o3 * (mfbab) + 0.5 * forcingTerm[DIR_0M0]; - mfbba = rho * c1o3 * (mfbba) + 0.5 * forcingTerm[DIR_00M]; - mfaab = rho * c1o3 * (mfaab) + 0.5 * forcingTerm[DIR_MM0]; - mfcab = rho * c1o3 * (mfcab) + 0.5 * forcingTerm[DIR_PM0]; - mfaba = rho * c1o3 * (mfaba) + 0.5 * forcingTerm[DIR_M0M]; - mfcba = rho * c1o3 * (mfcba) + 0.5 * forcingTerm[DIR_P0M]; - mfbaa = rho * c1o3 * (mfbaa) + 0.5 * forcingTerm[DIR_0MM]; - mfbca = rho * c1o3 * (mfbca) + 0.5 * forcingTerm[DIR_0PM]; - mfaaa = rho * c1o3 * (mfaaa) + 0.5 * forcingTerm[DIR_MMM]; - mfcaa = rho * c1o3 * (mfcaa) + 0.5 * forcingTerm[DIR_PMM]; - mfaca = rho * c1o3 * (mfaca) + 0.5 * forcingTerm[DIR_MPM]; - mfcca = rho * c1o3 * (mfcca) + 0.5 * forcingTerm[DIR_PPM]; - mfbbb = rho * c1o3 * (mfbbb) + 0.5 * forcingTerm[DIR_000]; + mfcbb = rho * c1o3 * (mfcbb) + 0.5 * forcingTerm[dP00]; + mfbcb = rho * c1o3 * (mfbcb) + 0.5 * forcingTerm[d0P0]; + mfbbc = rho * c1o3 * (mfbbc) + 0.5 * forcingTerm[d00P]; + mfccb = rho * c1o3 * (mfccb) + 0.5 * forcingTerm[dPP0]; + mfacb = rho * c1o3 * (mfacb) + 0.5 * forcingTerm[dMP0]; + mfcbc = rho * c1o3 * (mfcbc) + 0.5 * forcingTerm[dP0P]; + mfabc = rho * c1o3 * (mfabc) + 0.5 * forcingTerm[dM0P]; + mfbcc = rho * c1o3 * (mfbcc) + 0.5 * forcingTerm[d0PP]; + mfbac = rho * c1o3 * (mfbac) + 0.5 * forcingTerm[d0MP]; + mfccc = rho * c1o3 * (mfccc) + 0.5 * forcingTerm[dPPP]; + mfacc = rho * c1o3 * (mfacc) + 0.5 * forcingTerm[dMPP]; + mfcac = rho * c1o3 * (mfcac) + 0.5 * forcingTerm[dPMP]; + mfaac = rho * c1o3 * (mfaac) + 0.5 * forcingTerm[dMMP]; + mfabb = rho * c1o3 * (mfabb) + 0.5 * forcingTerm[dM00]; + mfbab = rho * c1o3 * (mfbab) + 0.5 * forcingTerm[d0M0]; + mfbba = rho * c1o3 * (mfbba) + 0.5 * forcingTerm[d00M]; + mfaab = rho * c1o3 * (mfaab) + 0.5 * forcingTerm[dMM0]; + mfcab = rho * c1o3 * (mfcab) + 0.5 * forcingTerm[dPM0]; + mfaba = rho * c1o3 * (mfaba) + 0.5 * forcingTerm[dM0M]; + mfcba = rho * c1o3 * (mfcba) + 0.5 * forcingTerm[dP0M]; + mfbaa = rho * c1o3 * (mfbaa) + 0.5 * forcingTerm[d0MM]; + mfbca = rho * c1o3 * (mfbca) + 0.5 * forcingTerm[d0PM]; + mfaaa = rho * c1o3 * (mfaaa) + 0.5 * forcingTerm[dMMM]; + mfcaa = rho * c1o3 * (mfcaa) + 0.5 * forcingTerm[dPMM]; + mfaca = rho * c1o3 * (mfaca) + 0.5 * forcingTerm[dMPM]; + mfcca = rho * c1o3 * (mfcca) + 0.5 * forcingTerm[dPPM]; + mfbbb = rho * c1o3 * (mfbbb) + 0.5 * forcingTerm[d000]; ////////////////////////////////////////////////////////////////////////// // write distribution for F @@ -1093,84 +1093,84 @@ void MultiphaseCumulantLBMKernel::calculate(int step) ///////////////////// PHASE-FIELD BGK SOLVER /////////////////////////////// - h[DIR_P00] = (*this->localDistributionsH)(D3Q27System::ET_E, x1, x2, x3); - h[DIR_0P0] = (*this->localDistributionsH)(D3Q27System::ET_N, x1, x2, x3); - h[DIR_00P] = (*this->localDistributionsH)(D3Q27System::ET_T, x1, x2, x3); - h[DIR_PP0] = (*this->localDistributionsH)(D3Q27System::ET_NE, x1, x2, x3); - h[DIR_MP0] = (*this->localDistributionsH)(D3Q27System::ET_NW, x1p, x2, x3); - h[DIR_P0P] = (*this->localDistributionsH)(D3Q27System::ET_TE, x1, x2, x3); - h[DIR_M0P] = (*this->localDistributionsH)(D3Q27System::ET_TW, x1p, x2, x3); - h[DIR_0PP] = (*this->localDistributionsH)(D3Q27System::ET_TN, x1, x2, x3); - h[DIR_0MP] = (*this->localDistributionsH)(D3Q27System::ET_TS, x1, x2p, x3); - h[DIR_PPP] = (*this->localDistributionsH)(D3Q27System::ET_TNE, x1, x2, x3); - h[DIR_MPP] = (*this->localDistributionsH)(D3Q27System::ET_TNW, x1p, x2, x3); - h[DIR_PMP] = (*this->localDistributionsH)(D3Q27System::ET_TSE, x1, x2p, x3); - h[DIR_MMP] = (*this->localDistributionsH)(D3Q27System::ET_TSW, x1p, x2p, x3); - - h[DIR_M00] = (*this->nonLocalDistributionsH)(D3Q27System::ET_W, x1p, x2, x3); - h[DIR_0M0] = (*this->nonLocalDistributionsH)(D3Q27System::ET_S, x1, x2p, x3); - h[DIR_00M] = (*this->nonLocalDistributionsH)(D3Q27System::ET_B, x1, x2, x3p); - h[DIR_MM0] = (*this->nonLocalDistributionsH)(D3Q27System::ET_SW, x1p, x2p, x3); - h[DIR_PM0] = (*this->nonLocalDistributionsH)(D3Q27System::ET_SE, x1, x2p, x3); - h[DIR_M0M] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BW, x1p, x2, x3p); - h[DIR_P0M] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BE, x1, x2, x3p); - h[DIR_0MM] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BS, x1, x2p, x3p); - h[DIR_0PM] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BN, x1, x2, x3p); - h[DIR_MMM] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BSW, x1p, x2p, x3p); - h[DIR_PMM] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BSE, x1, x2p, x3p); - h[DIR_MPM] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BNW, x1p, x2, x3p); - h[DIR_PPM] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BNE, x1, x2, x3p); - - h[DIR_000] = (*this->zeroDistributionsH)(x1, x2, x3); + h[dP00] = (*this->localDistributionsH)(D3Q27System::ET_E, x1, x2, x3); + h[d0P0] = (*this->localDistributionsH)(D3Q27System::ET_N, x1, x2, x3); + h[d00P] = (*this->localDistributionsH)(D3Q27System::ET_T, x1, x2, x3); + h[dPP0] = (*this->localDistributionsH)(D3Q27System::ET_NE, x1, x2, x3); + h[dMP0] = (*this->localDistributionsH)(D3Q27System::ET_NW, x1p, x2, x3); + h[dP0P] = (*this->localDistributionsH)(D3Q27System::ET_TE, x1, x2, x3); + h[dM0P] = (*this->localDistributionsH)(D3Q27System::ET_TW, x1p, x2, x3); + h[d0PP] = (*this->localDistributionsH)(D3Q27System::ET_TN, x1, x2, x3); + h[d0MP] = (*this->localDistributionsH)(D3Q27System::ET_TS, x1, x2p, x3); + h[dPPP] = (*this->localDistributionsH)(D3Q27System::ET_TNE, x1, x2, x3); + h[dMPP] = (*this->localDistributionsH)(D3Q27System::ET_TNW, x1p, x2, x3); + h[dPMP] = (*this->localDistributionsH)(D3Q27System::ET_TSE, x1, x2p, x3); + h[dMMP] = (*this->localDistributionsH)(D3Q27System::ET_TSW, x1p, x2p, x3); + + h[dM00] = (*this->nonLocalDistributionsH)(D3Q27System::ET_W, x1p, x2, x3); + h[d0M0] = (*this->nonLocalDistributionsH)(D3Q27System::ET_S, x1, x2p, x3); + h[d00M] = (*this->nonLocalDistributionsH)(D3Q27System::ET_B, x1, x2, x3p); + h[dMM0] = (*this->nonLocalDistributionsH)(D3Q27System::ET_SW, x1p, x2p, x3); + h[dPM0] = (*this->nonLocalDistributionsH)(D3Q27System::ET_SE, x1, x2p, x3); + h[dM0M] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BW, x1p, x2, x3p); + h[dP0M] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BE, x1, x2, x3p); + h[d0MM] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BS, x1, x2p, x3p); + h[d0PM] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BN, x1, x2, x3p); + h[dMMM] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BSW, x1p, x2p, x3p); + h[dPMM] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BSE, x1, x2p, x3p); + h[dMPM] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BNW, x1p, x2, x3p); + h[dPPM] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BNE, x1, x2, x3p); + + h[d000] = (*this->zeroDistributionsH)(x1, x2, x3); for (int dir = STARTF; dir < (ENDF + 1); dir++) { real velProd = DX1[dir] * ux + DX2[dir] * uy + DX3[dir] * uz; real velSq1 = velProd * velProd; real hEq; //, gEq; - if (dir != DIR_000) { + if (dir != d000) { real dirGrad_phi = (phi[dir] - phi[INVDIR[dir]]) / 2.0; - real hSource = (tauH - 0.5) * (1.0 - phi[DIR_000]) * (phi[DIR_000]) * (dirGrad_phi) / denom; - hEq = phi[DIR_000] * WEIGTH[dir] * (1.0 + 3.0 * velProd + 4.5 * velSq1 - 1.5 * (ux2 + uy2 + uz2)) + hSource * WEIGTH[dir]; + real hSource = (tauH - 0.5) * (1.0 - phi[d000]) * (phi[d000]) * (dirGrad_phi) / denom; + hEq = phi[d000] * WEIGTH[dir] * (1.0 + 3.0 * velProd + 4.5 * velSq1 - 1.5 * (ux2 + uy2 + uz2)) + hSource * WEIGTH[dir]; // This corresponds with the collision factor of 1.0 which equals (tauH + 0.5). h[dir] = h[dir] - (h[dir] - hEq) / (tauH); } else { - hEq = phi[DIR_000] * WEIGTH[DIR_000] * (1.0 - 1.5 * (ux2 + uy2 + uz2)); - h[DIR_000] = h[DIR_000] - (h[DIR_000] - hEq) / (tauH); + hEq = phi[d000] * WEIGTH[d000] * (1.0 - 1.5 * (ux2 + uy2 + uz2)); + h[d000] = h[d000] - (h[d000] - hEq) / (tauH); } } - (*this->localDistributionsH)(D3Q27System::ET_E, x1, x2, x3) = h[INV_P00]; - (*this->localDistributionsH)(D3Q27System::ET_N, x1, x2, x3) = h[INV_0P0]; - (*this->localDistributionsH)(D3Q27System::ET_T, x1, x2, x3) = h[INV_00P]; - (*this->localDistributionsH)(D3Q27System::ET_NE, x1, x2, x3) = h[INV_PP0]; - (*this->localDistributionsH)(D3Q27System::ET_NW, x1p, x2, x3) = h[INV_MP0]; - (*this->localDistributionsH)(D3Q27System::ET_TE, x1, x2, x3) = h[INV_P0P]; - (*this->localDistributionsH)(D3Q27System::ET_TW, x1p, x2, x3) = h[INV_M0P]; - (*this->localDistributionsH)(D3Q27System::ET_TN, x1, x2, x3) = h[INV_0PP]; - (*this->localDistributionsH)(D3Q27System::ET_TS, x1, x2p, x3) = h[INV_0MP]; - (*this->localDistributionsH)(D3Q27System::ET_TNE, x1, x2, x3) = h[INV_PPP]; - (*this->localDistributionsH)(D3Q27System::ET_TNW, x1p, x2, x3) = h[INV_MPP]; - (*this->localDistributionsH)(D3Q27System::ET_TSE, x1, x2p, x3) = h[INV_PMP]; - (*this->localDistributionsH)(D3Q27System::ET_TSW, x1p, x2p, x3) = h[INV_MMP]; - - (*this->nonLocalDistributionsH)(D3Q27System::ET_W, x1p, x2, x3) = h[INV_M00]; - (*this->nonLocalDistributionsH)(D3Q27System::ET_S, x1, x2p, x3) = h[INV_0M0]; - (*this->nonLocalDistributionsH)(D3Q27System::ET_B, x1, x2, x3p) = h[INV_00M]; - (*this->nonLocalDistributionsH)(D3Q27System::ET_SW, x1p, x2p, x3) = h[INV_MM0]; - (*this->nonLocalDistributionsH)(D3Q27System::ET_SE, x1, x2p, x3) = h[INV_PM0]; - (*this->nonLocalDistributionsH)(D3Q27System::ET_BW, x1p, x2, x3p) = h[INV_M0M]; - (*this->nonLocalDistributionsH)(D3Q27System::ET_BE, x1, x2, x3p) = h[INV_P0M]; - (*this->nonLocalDistributionsH)(D3Q27System::ET_BS, x1, x2p, x3p) = h[INV_0MM]; - (*this->nonLocalDistributionsH)(D3Q27System::ET_BN, x1, x2, x3p) = h[INV_0PM]; - (*this->nonLocalDistributionsH)(D3Q27System::ET_BSW, x1p, x2p, x3p) = h[INV_MMM]; - (*this->nonLocalDistributionsH)(D3Q27System::ET_BSE, x1, x2p, x3p) = h[INV_PMM]; - (*this->nonLocalDistributionsH)(D3Q27System::ET_BNW, x1p, x2, x3p) = h[INV_MPM]; - (*this->nonLocalDistributionsH)(D3Q27System::ET_BNE, x1, x2, x3p) = h[INV_PPM]; - - (*this->zeroDistributionsH)(x1, x2, x3) = h[DIR_000]; + (*this->localDistributionsH)(D3Q27System::ET_E, x1, x2, x3) = h[iP00]; + (*this->localDistributionsH)(D3Q27System::ET_N, x1, x2, x3) = h[i0P0]; + (*this->localDistributionsH)(D3Q27System::ET_T, x1, x2, x3) = h[i00P]; + (*this->localDistributionsH)(D3Q27System::ET_NE, x1, x2, x3) = h[iPP0]; + (*this->localDistributionsH)(D3Q27System::ET_NW, x1p, x2, x3) = h[iMP0]; + (*this->localDistributionsH)(D3Q27System::ET_TE, x1, x2, x3) = h[iP0P]; + (*this->localDistributionsH)(D3Q27System::ET_TW, x1p, x2, x3) = h[iM0P]; + (*this->localDistributionsH)(D3Q27System::ET_TN, x1, x2, x3) = h[i0PP]; + (*this->localDistributionsH)(D3Q27System::ET_TS, x1, x2p, x3) = h[i0MP]; + (*this->localDistributionsH)(D3Q27System::ET_TNE, x1, x2, x3) = h[iPPP]; + (*this->localDistributionsH)(D3Q27System::ET_TNW, x1p, x2, x3) = h[iMPP]; + (*this->localDistributionsH)(D3Q27System::ET_TSE, x1, x2p, x3) = h[iPMP]; + (*this->localDistributionsH)(D3Q27System::ET_TSW, x1p, x2p, x3) = h[iMMP]; + + (*this->nonLocalDistributionsH)(D3Q27System::ET_W, x1p, x2, x3) = h[iM00]; + (*this->nonLocalDistributionsH)(D3Q27System::ET_S, x1, x2p, x3) = h[i0M0]; + (*this->nonLocalDistributionsH)(D3Q27System::ET_B, x1, x2, x3p) = h[i00M]; + (*this->nonLocalDistributionsH)(D3Q27System::ET_SW, x1p, x2p, x3) = h[iMM0]; + (*this->nonLocalDistributionsH)(D3Q27System::ET_SE, x1, x2p, x3) = h[iPM0]; + (*this->nonLocalDistributionsH)(D3Q27System::ET_BW, x1p, x2, x3p) = h[iM0M]; + (*this->nonLocalDistributionsH)(D3Q27System::ET_BE, x1, x2, x3p) = h[iP0M]; + (*this->nonLocalDistributionsH)(D3Q27System::ET_BS, x1, x2p, x3p) = h[i0MM]; + (*this->nonLocalDistributionsH)(D3Q27System::ET_BN, x1, x2, x3p) = h[i0PM]; + (*this->nonLocalDistributionsH)(D3Q27System::ET_BSW, x1p, x2p, x3p) = h[iMMM]; + (*this->nonLocalDistributionsH)(D3Q27System::ET_BSE, x1, x2p, x3p) = h[iPMM]; + (*this->nonLocalDistributionsH)(D3Q27System::ET_BNW, x1p, x2, x3p) = h[iMPM]; + (*this->nonLocalDistributionsH)(D3Q27System::ET_BNE, x1, x2, x3p) = h[iPPM]; + + (*this->zeroDistributionsH)(x1, x2, x3) = h[d000]; ///////////////////// END OF OLD BGK SOLVER /////////////////////////////// } @@ -1219,7 +1219,7 @@ real MultiphaseCumulantLBMKernel::nabla2_phi() real sum = 0.0; for (int k = FSTARTDIR; k <= FENDDIR; k++) { - sum += WEIGTH[k] * (phi[k] - phi[DIR_000]); + sum += WEIGTH[k] * (phi[k] - phi[d000]); } return 6.0 * sum; } @@ -1248,35 +1248,35 @@ void MultiphaseCumulantLBMKernel::computePhasefield() int x2p = x2 + 1; int x3p = x3 + 1; - h[DIR_P00] = (*this->localDistributionsH)(D3Q27System::ET_E, x1, x2, x3); - h[DIR_0P0] = (*this->localDistributionsH)(D3Q27System::ET_N, x1, x2, x3); - h[DIR_00P] = (*this->localDistributionsH)(D3Q27System::ET_T, x1, x2, x3); - h[DIR_PP0] = (*this->localDistributionsH)(D3Q27System::ET_NE, x1, x2, x3); - h[DIR_MP0] = (*this->localDistributionsH)(D3Q27System::ET_NW, x1p, x2, x3); - h[DIR_P0P] = (*this->localDistributionsH)(D3Q27System::ET_TE, x1, x2, x3); - h[DIR_M0P] = (*this->localDistributionsH)(D3Q27System::ET_TW, x1p, x2, x3); - h[DIR_0PP] = (*this->localDistributionsH)(D3Q27System::ET_TN, x1, x2, x3); - h[DIR_0MP] = (*this->localDistributionsH)(D3Q27System::ET_TS, x1, x2p, x3); - h[DIR_PPP] = (*this->localDistributionsH)(D3Q27System::ET_TNE, x1, x2, x3); - h[DIR_MPP] = (*this->localDistributionsH)(D3Q27System::ET_TNW, x1p, x2, x3); - h[DIR_PMP] = (*this->localDistributionsH)(D3Q27System::ET_TSE, x1, x2p, x3); - h[DIR_MMP] = (*this->localDistributionsH)(D3Q27System::ET_TSW, x1p, x2p, x3); - - h[DIR_M00] = (*this->nonLocalDistributionsH)(D3Q27System::ET_W, x1p, x2, x3); - h[DIR_0M0] = (*this->nonLocalDistributionsH)(D3Q27System::ET_S, x1, x2p, x3); - h[DIR_00M] = (*this->nonLocalDistributionsH)(D3Q27System::ET_B, x1, x2, x3p); - h[DIR_MM0] = (*this->nonLocalDistributionsH)(D3Q27System::ET_SW, x1p, x2p, x3); - h[DIR_PM0] = (*this->nonLocalDistributionsH)(D3Q27System::ET_SE, x1, x2p, x3); - h[DIR_M0M] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BW, x1p, x2, x3p); - h[DIR_P0M] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BE, x1, x2, x3p); - h[DIR_0MM] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BS, x1, x2p, x3p); - h[DIR_0PM] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BN, x1, x2, x3p); - h[DIR_MMM] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BSW, x1p, x2p, x3p); - h[DIR_PMM] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BSE, x1, x2p, x3p); - h[DIR_MPM] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BNW, x1p, x2, x3p); - h[DIR_PPM] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BNE, x1, x2, x3p); - - h[DIR_000] = (*this->zeroDistributionsH)(x1, x2, x3); + h[dP00] = (*this->localDistributionsH)(D3Q27System::ET_E, x1, x2, x3); + h[d0P0] = (*this->localDistributionsH)(D3Q27System::ET_N, x1, x2, x3); + h[d00P] = (*this->localDistributionsH)(D3Q27System::ET_T, x1, x2, x3); + h[dPP0] = (*this->localDistributionsH)(D3Q27System::ET_NE, x1, x2, x3); + h[dMP0] = (*this->localDistributionsH)(D3Q27System::ET_NW, x1p, x2, x3); + h[dP0P] = (*this->localDistributionsH)(D3Q27System::ET_TE, x1, x2, x3); + h[dM0P] = (*this->localDistributionsH)(D3Q27System::ET_TW, x1p, x2, x3); + h[d0PP] = (*this->localDistributionsH)(D3Q27System::ET_TN, x1, x2, x3); + h[d0MP] = (*this->localDistributionsH)(D3Q27System::ET_TS, x1, x2p, x3); + h[dPPP] = (*this->localDistributionsH)(D3Q27System::ET_TNE, x1, x2, x3); + h[dMPP] = (*this->localDistributionsH)(D3Q27System::ET_TNW, x1p, x2, x3); + h[dPMP] = (*this->localDistributionsH)(D3Q27System::ET_TSE, x1, x2p, x3); + h[dMMP] = (*this->localDistributionsH)(D3Q27System::ET_TSW, x1p, x2p, x3); + + h[dM00] = (*this->nonLocalDistributionsH)(D3Q27System::ET_W, x1p, x2, x3); + h[d0M0] = (*this->nonLocalDistributionsH)(D3Q27System::ET_S, x1, x2p, x3); + h[d00M] = (*this->nonLocalDistributionsH)(D3Q27System::ET_B, x1, x2, x3p); + h[dMM0] = (*this->nonLocalDistributionsH)(D3Q27System::ET_SW, x1p, x2p, x3); + h[dPM0] = (*this->nonLocalDistributionsH)(D3Q27System::ET_SE, x1, x2p, x3); + h[dM0M] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BW, x1p, x2, x3p); + h[dP0M] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BE, x1, x2, x3p); + h[d0MM] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BS, x1, x2p, x3p); + h[d0PM] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BN, x1, x2, x3p); + h[dMMM] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BSW, x1p, x2p, x3p); + h[dPMM] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BSE, x1, x2p, x3p); + h[dMPM] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BNW, x1p, x2, x3p); + h[dPPM] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BNE, x1, x2, x3p); + + h[d000] = (*this->zeroDistributionsH)(x1, x2, x3); } } } @@ -1292,7 +1292,7 @@ void MultiphaseCumulantLBMKernel::findNeighbors(CbArray3D<real, IndexerX3X2X1>:: SPtr<BCArray3D> bcArray = this->getBCSet()->getBCArray(); - phi[DIR_000] = (*ph)(x1, x2, x3); + phi[d000] = (*ph)(x1, x2, x3); for (int k = FSTARTDIR; k <= FENDDIR; k++) { diff --git a/src/cpu/MultiphaseFlow/LBM/MultiphasePressureFilterCompressibleAirLBMKernel.cpp b/src/cpu/MultiphaseFlow/LBM/MultiphasePressureFilterCompressibleAirLBMKernel.cpp index 6dc3b454e1874382bb539d716147867f03514c38..e8776121b19b3d2a8e3b8f315a18433092c8559a 100644 --- a/src/cpu/MultiphaseFlow/LBM/MultiphasePressureFilterCompressibleAirLBMKernel.cpp +++ b/src/cpu/MultiphaseFlow/LBM/MultiphasePressureFilterCompressibleAirLBMKernel.cpp @@ -394,13 +394,13 @@ void MultiphasePressureFilterCompressibleAirLBMKernel::calculate(int step) - collFactorM = collFactorL + (collFactorL - collFactorG) * (phi[DIR_000] - phiH) / (phiH - phiL); + collFactorM = collFactorL + (collFactorL - collFactorG) * (phi[d000] - phiH) / (phiH - phiL); - real mu = 2 * beta * phi[DIR_000] * (phi[DIR_000] - 1) * (2 * phi[DIR_000] - 1) - kappa * nabla2_phi(); + real mu = 2 * beta * phi[d000] * (phi[d000] - 1) * (2 * phi[d000] - 1) - kappa * nabla2_phi(); //----------- Calculating Macroscopic Values ------------- - real rho = rhoH + rhoToPhi * (phi[DIR_000] - phiH); //Incompressible + real rho = rhoH + rhoToPhi * (phi[d000] - phiH); //Incompressible //LBMReal rho = rhoL + (rhoH - rhoL) * phi[REST] + (one - phi[REST]) * (*pressure)(x1, x2, x3) * three; //compressible real m0, m1, m2; @@ -468,7 +468,7 @@ void MultiphasePressureFilterCompressibleAirLBMKernel::calculate(int step) } //Viscosity increase by pressure gradient - real errPhi = (((1.0 - phi[DIR_000]) * (phi[DIR_000]) * oneOverInterfaceScale)- denom); + real errPhi = (((1.0 - phi[d000]) * (phi[d000]) * oneOverInterfaceScale)- denom); //LBMReal limVis = 0.0000001*10;//0.01; // collFactorM =collFactorM/(c1+limVis*(errPhi*errPhi)*collFactorM); // collFactorM = (collFactorM < 1.8) ? 1.8 : collFactorM; @@ -778,7 +778,7 @@ void MultiphasePressureFilterCompressibleAirLBMKernel::calculate(int step) real OxyyMxzz = 8.0 * (collFactorM - 2.0) * (collFactorM + OxxPyyPzz * (3.0 * collFactorM - 7.0)) / (OxxPyyPzz * (56.0 - 42.0 * collFactorM + 9.0 * collFactorM * collFactorM) - 8.0 * collFactorM); // LBMReal Oxyz = 24.0 * (collFactorM - 2.0) * (4.0 * collFactorM * collFactorM + collFactorM * OxxPyyPzz * (18.0 - 13.0 * collFactorM) + OxxPyyPzz * OxxPyyPzz * (2.0 + collFactorM * (6.0 * collFactorM - 11.0))) / (16.0 * collFactorM * collFactorM * (collFactorM - 6.0) - 2.0 * collFactorM * OxxPyyPzz * (216.0 + 5.0 * collFactorM * (9.0 * collFactorM - 46.0)) + OxxPyyPzz * OxxPyyPzz * (collFactorM * (3.0 * collFactorM - 10.0) * (15.0 * collFactorM - 28.0) - 48.0)); real A = (4.0 * collFactorM * collFactorM + 2.0 * collFactorM * OxxPyyPzz * (collFactorM - 6.0) + OxxPyyPzz * OxxPyyPzz * (collFactorM * (10.0 - 3.0 * collFactorM) - 4.0)) / ((collFactorM - OxxPyyPzz) * (OxxPyyPzz * (2.0 + 3.0 * collFactorM) - 8.0 * collFactorM)); - //FIXME: warning C4459: declaration of 'B' hides global declaration (message : see declaration of 'D3Q27System::DIR_00M' ) + //FIXME: warning C4459: declaration of 'B' hides global declaration (message : see declaration of 'D3Q27System::d00M' ) real BB = (4.0 * collFactorM * OxxPyyPzz * (9.0 * collFactorM - 16.0) - 4.0 * collFactorM * collFactorM - 2.0 * OxxPyyPzz * OxxPyyPzz * (2.0 + 9.0 * collFactorM * (collFactorM - 2.0))) / (3.0 * (collFactorM - OxxPyyPzz) * (OxxPyyPzz * (2.0 + 3.0 * collFactorM) - 8.0 * collFactorM)); @@ -1344,11 +1344,11 @@ void MultiphasePressureFilterCompressibleAirLBMKernel::calculate(int step) // collision of 1st order moments cx = cx * (c1o1 - omegaD) + omegaD * vvx * concentration + - normX1 * (c1o1 - 0.5 * omegaD) * (1.0 - phi[DIR_000]) * (phi[DIR_000]) * c1o3 * oneOverInterfaceScale; + normX1 * (c1o1 - 0.5 * omegaD) * (1.0 - phi[d000]) * (phi[d000]) * c1o3 * oneOverInterfaceScale; cy = cy * (c1o1 - omegaD) + omegaD * vvy * concentration + - normX2 * (c1o1 - 0.5 * omegaD) * (1.0 - phi[DIR_000]) * (phi[DIR_000]) * c1o3 * oneOverInterfaceScale; + normX2 * (c1o1 - 0.5 * omegaD) * (1.0 - phi[d000]) * (phi[d000]) * c1o3 * oneOverInterfaceScale; cz = cz * (c1o1 - omegaD) + omegaD * vvz * concentration + - normX3 * (c1o1 - 0.5 * omegaD) * (1.0 - phi[DIR_000]) * (phi[DIR_000]) * c1o3 * oneOverInterfaceScale; + normX3 * (c1o1 - 0.5 * omegaD) * (1.0 - phi[d000]) * (phi[d000]) * c1o3 * oneOverInterfaceScale; cx2 = cx * cx; cy2 = cy * cy; @@ -1488,9 +1488,9 @@ real MultiphasePressureFilterCompressibleAirLBMKernel::gradX1_phi() using namespace D3Q27System; using namespace vf::lbm::dir; - return 3.0* ((WEIGTH[DIR_PPP] * (((phi[DIR_PPP] - phi[DIR_MMM]) + (phi[DIR_PMM] - phi[DIR_MPP])) + ((phi[DIR_PMP] - phi[DIR_MPM]) + (phi[DIR_PPM] - phi[DIR_MMP]))) - + WEIGTH[DIR_PP0] * (((phi[DIR_P0P] - phi[DIR_M0M]) + (phi[DIR_P0M] - phi[DIR_M0P])) + ((phi[DIR_PM0] - phi[DIR_MP0]) + (phi[DIR_PP0] - phi[DIR_MM0])))) + - +WEIGTH[DIR_0P0] * (phi[DIR_P00] - phi[DIR_M00])); + return 3.0* ((WEIGTH[dPPP] * (((phi[dPPP] - phi[dMMM]) + (phi[dPMM] - phi[dMPP])) + ((phi[dPMP] - phi[dMPM]) + (phi[dPPM] - phi[dMMP]))) + + WEIGTH[dPP0] * (((phi[dP0P] - phi[dM0M]) + (phi[dP0M] - phi[dM0P])) + ((phi[dPM0] - phi[dMP0]) + (phi[dPP0] - phi[dMM0])))) + + +WEIGTH[d0P0] * (phi[dP00] - phi[dM00])); } real MultiphasePressureFilterCompressibleAirLBMKernel::gradX2_phi() @@ -1498,9 +1498,9 @@ real MultiphasePressureFilterCompressibleAirLBMKernel::gradX2_phi() using namespace D3Q27System; using namespace vf::lbm::dir; - return 3.0 * ((WEIGTH[DIR_PPP] * (((phi[DIR_PPP] - phi[DIR_MMM]) - (phi[DIR_PMM] - phi[DIR_MPP])) + ((phi[DIR_PPM] - phi[DIR_MMP])- (phi[DIR_PMP] - phi[DIR_MPM]))) - + WEIGTH[DIR_PP0] * (((phi[DIR_0PP] - phi[DIR_0MM]) + (phi[DIR_0PM] - phi[DIR_0MP])) + ((phi[DIR_PP0] - phi[DIR_MM0])- (phi[DIR_PM0] - phi[DIR_MP0])))) + - +WEIGTH[DIR_0P0] * (phi[DIR_0P0] - phi[DIR_0M0])); + return 3.0 * ((WEIGTH[dPPP] * (((phi[dPPP] - phi[dMMM]) - (phi[dPMM] - phi[dMPP])) + ((phi[dPPM] - phi[dMMP])- (phi[dPMP] - phi[dMPM]))) + + WEIGTH[dPP0] * (((phi[d0PP] - phi[d0MM]) + (phi[d0PM] - phi[d0MP])) + ((phi[dPP0] - phi[dMM0])- (phi[dPM0] - phi[dMP0])))) + + +WEIGTH[d0P0] * (phi[d0P0] - phi[d0M0])); } real MultiphasePressureFilterCompressibleAirLBMKernel::gradX3_phi() @@ -1508,9 +1508,9 @@ real MultiphasePressureFilterCompressibleAirLBMKernel::gradX3_phi() using namespace D3Q27System; using namespace vf::lbm::dir; - return 3.0 * ((WEIGTH[DIR_PPP] * (((phi[DIR_PPP] - phi[DIR_MMM]) - (phi[DIR_PMM] - phi[DIR_MPP])) + ((phi[DIR_PMP] - phi[DIR_MPM]) - (phi[DIR_PPM] - phi[DIR_MMP]))) - + WEIGTH[DIR_PP0] * (((phi[DIR_P0P] - phi[DIR_M0M]) - (phi[DIR_P0M] - phi[DIR_M0P])) + ((phi[DIR_0MP] - phi[DIR_0PM]) + (phi[DIR_0PP] - phi[DIR_0MM])))) + - +WEIGTH[DIR_0P0] * (phi[DIR_00P] - phi[DIR_00M])); + return 3.0 * ((WEIGTH[dPPP] * (((phi[dPPP] - phi[dMMM]) - (phi[dPMM] - phi[dMPP])) + ((phi[dPMP] - phi[dMPM]) - (phi[dPPM] - phi[dMMP]))) + + WEIGTH[dPP0] * (((phi[dP0P] - phi[dM0M]) - (phi[dP0M] - phi[dM0P])) + ((phi[d0MP] - phi[d0PM]) + (phi[d0PP] - phi[d0MM])))) + + +WEIGTH[d0P0] * (phi[d00P] - phi[d00M])); } real MultiphasePressureFilterCompressibleAirLBMKernel::gradX1_phi2() @@ -1518,9 +1518,9 @@ real MultiphasePressureFilterCompressibleAirLBMKernel::gradX1_phi2() using namespace D3Q27System; using namespace vf::lbm::dir; - return 3.0 * ((WEIGTH[DIR_PPP] * (((phi2[DIR_PPP] - phi2[DIR_MMM]) + (phi2[DIR_PMM] - phi2[DIR_MPP])) + ((phi2[DIR_PMP] - phi2[DIR_MPM]) + (phi2[DIR_PPM] - phi2[DIR_MMP]))) - + WEIGTH[DIR_PP0] * (((phi2[DIR_P0P] - phi2[DIR_M0M]) + (phi2[DIR_P0M] - phi2[DIR_M0P])) + ((phi2[DIR_PM0] - phi2[DIR_MP0]) + (phi2[DIR_PP0] - phi2[DIR_MM0])))) + - +WEIGTH[DIR_0P0] * (phi2[DIR_P00] - phi2[DIR_M00])); + return 3.0 * ((WEIGTH[dPPP] * (((phi2[dPPP] - phi2[dMMM]) + (phi2[dPMM] - phi2[dMPP])) + ((phi2[dPMP] - phi2[dMPM]) + (phi2[dPPM] - phi2[dMMP]))) + + WEIGTH[dPP0] * (((phi2[dP0P] - phi2[dM0M]) + (phi2[dP0M] - phi2[dM0P])) + ((phi2[dPM0] - phi2[dMP0]) + (phi2[dPP0] - phi2[dMM0])))) + + +WEIGTH[d0P0] * (phi2[dP00] - phi2[dM00])); } real MultiphasePressureFilterCompressibleAirLBMKernel::gradX2_phi2() @@ -1528,9 +1528,9 @@ real MultiphasePressureFilterCompressibleAirLBMKernel::gradX2_phi2() using namespace D3Q27System; using namespace vf::lbm::dir; - return 3.0 * ((WEIGTH[DIR_PPP] * (((phi2[DIR_PPP] - phi2[DIR_MMM]) - (phi2[DIR_PMM] - phi2[DIR_MPP])) + ((phi2[DIR_PPM] - phi2[DIR_MMP]) - (phi2[DIR_PMP] - phi2[DIR_MPM]))) - + WEIGTH[DIR_PP0] * (((phi2[DIR_0PP] - phi2[DIR_0MM]) + (phi2[DIR_0PM] - phi2[DIR_0MP])) + ((phi2[DIR_PP0] - phi2[DIR_MM0]) - (phi2[DIR_PM0] - phi2[DIR_MP0])))) + - +WEIGTH[DIR_0P0] * (phi2[DIR_0P0] - phi2[DIR_0M0])); + return 3.0 * ((WEIGTH[dPPP] * (((phi2[dPPP] - phi2[dMMM]) - (phi2[dPMM] - phi2[dMPP])) + ((phi2[dPPM] - phi2[dMMP]) - (phi2[dPMP] - phi2[dMPM]))) + + WEIGTH[dPP0] * (((phi2[d0PP] - phi2[d0MM]) + (phi2[d0PM] - phi2[d0MP])) + ((phi2[dPP0] - phi2[dMM0]) - (phi2[dPM0] - phi2[dMP0])))) + + +WEIGTH[d0P0] * (phi2[d0P0] - phi2[d0M0])); } real MultiphasePressureFilterCompressibleAirLBMKernel::gradX3_phi2() @@ -1538,9 +1538,9 @@ real MultiphasePressureFilterCompressibleAirLBMKernel::gradX3_phi2() using namespace D3Q27System; using namespace vf::lbm::dir; - return 3.0 * ((WEIGTH[DIR_PPP] * (((phi2[DIR_PPP] - phi2[DIR_MMM]) - (phi2[DIR_PMM] - phi2[DIR_MPP])) + ((phi2[DIR_PMP] - phi2[DIR_MPM]) - (phi2[DIR_PPM] - phi2[DIR_MMP]))) - + WEIGTH[DIR_PP0] * (((phi2[DIR_P0P] - phi2[DIR_M0M]) - (phi2[DIR_P0M] - phi2[DIR_M0P])) + ((phi2[DIR_0MP] - phi2[DIR_0PM]) + (phi2[DIR_0PP] - phi2[DIR_0MM])))) + - +WEIGTH[DIR_0P0] * (phi2[DIR_00P] - phi2[DIR_00M])); + return 3.0 * ((WEIGTH[dPPP] * (((phi2[dPPP] - phi2[dMMM]) - (phi2[dPMM] - phi2[dMPP])) + ((phi2[dPMP] - phi2[dMPM]) - (phi2[dPPM] - phi2[dMMP]))) + + WEIGTH[dPP0] * (((phi2[dP0P] - phi2[dM0M]) - (phi2[dP0M] - phi2[dM0P])) + ((phi2[d0MP] - phi2[d0PM]) + (phi2[d0PP] - phi2[d0MM])))) + + +WEIGTH[d0P0] * (phi2[d00P] - phi2[d00M])); } real MultiphasePressureFilterCompressibleAirLBMKernel::nabla2_phi() @@ -1549,17 +1549,17 @@ real MultiphasePressureFilterCompressibleAirLBMKernel::nabla2_phi() using namespace vf::lbm::dir; real sum = 0.0; - sum += WEIGTH[DIR_PPP] * ((((phi[DIR_PPP] - phi[DIR_000]) + (phi[DIR_MMM] - phi[DIR_000])) + ((phi[DIR_MMP] - phi[DIR_000]) + (phi[DIR_PPM] - phi[DIR_000]))) - + (((phi[DIR_MPP] - phi[DIR_000]) + (phi[DIR_PMM] - phi[DIR_000])) + ((phi[DIR_PMP] - phi[DIR_000]) + (phi[DIR_MPM] - phi[DIR_000])))); - sum += WEIGTH[DIR_0PP] * ( - (((phi[DIR_0PP] - phi[DIR_000]) + (phi[DIR_0MM] - phi[DIR_000])) + ((phi[DIR_0MP] - phi[DIR_000]) + (phi[DIR_0PM] - phi[DIR_000]))) - + (((phi[DIR_P0P] - phi[DIR_000]) + (phi[DIR_M0M] - phi[DIR_000])) + ((phi[DIR_M0P] - phi[DIR_000]) + (phi[DIR_P0M] - phi[DIR_000]))) - + (((phi[DIR_PP0] - phi[DIR_000]) + (phi[DIR_MM0] - phi[DIR_000])) + ((phi[DIR_MP0] - phi[DIR_000]) + (phi[DIR_PM0] - phi[DIR_000]))) + sum += WEIGTH[dPPP] * ((((phi[dPPP] - phi[d000]) + (phi[dMMM] - phi[d000])) + ((phi[dMMP] - phi[d000]) + (phi[dPPM] - phi[d000]))) + + (((phi[dMPP] - phi[d000]) + (phi[dPMM] - phi[d000])) + ((phi[dPMP] - phi[d000]) + (phi[dMPM] - phi[d000])))); + sum += WEIGTH[d0PP] * ( + (((phi[d0PP] - phi[d000]) + (phi[d0MM] - phi[d000])) + ((phi[d0MP] - phi[d000]) + (phi[d0PM] - phi[d000]))) + + (((phi[dP0P] - phi[d000]) + (phi[dM0M] - phi[d000])) + ((phi[dM0P] - phi[d000]) + (phi[dP0M] - phi[d000]))) + + (((phi[dPP0] - phi[d000]) + (phi[dMM0] - phi[d000])) + ((phi[dMP0] - phi[d000]) + (phi[dPM0] - phi[d000]))) ); - sum += WEIGTH[DIR_00P] * ( - ((phi[DIR_00P] - phi[DIR_000]) + (phi[DIR_00M] - phi[DIR_000])) - + ((phi[DIR_0P0] - phi[DIR_000]) + (phi[DIR_0M0] - phi[DIR_000])) - + ((phi[DIR_P00] - phi[DIR_000]) + (phi[DIR_M00] - phi[DIR_000])) + sum += WEIGTH[d00P] * ( + ((phi[d00P] - phi[d000]) + (phi[d00M] - phi[d000])) + + ((phi[d0P0] - phi[d000]) + (phi[d0M0] - phi[d000])) + + ((phi[dP00] - phi[d000]) + (phi[dM00] - phi[d000])) ); return 6.0 * sum; @@ -1589,35 +1589,35 @@ void MultiphasePressureFilterCompressibleAirLBMKernel::computePhasefield() int x2p = x2 + 1; int x3p = x3 + 1; - h[DIR_P00] = (*this->localDistributionsH1)(D3Q27System::ET_E, x1, x2, x3); - h[DIR_0P0] = (*this->localDistributionsH1)(D3Q27System::ET_N, x1, x2, x3); - h[DIR_00P] = (*this->localDistributionsH1)(D3Q27System::ET_T, x1, x2, x3); - h[DIR_PP0] = (*this->localDistributionsH1)(D3Q27System::ET_NE, x1, x2, x3); - h[DIR_MP0] = (*this->localDistributionsH1)(D3Q27System::ET_NW, x1p, x2, x3); - h[DIR_P0P] = (*this->localDistributionsH1)(D3Q27System::ET_TE, x1, x2, x3); - h[DIR_M0P] = (*this->localDistributionsH1)(D3Q27System::ET_TW, x1p, x2, x3); - h[DIR_0PP] = (*this->localDistributionsH1)(D3Q27System::ET_TN, x1, x2, x3); - h[DIR_0MP] = (*this->localDistributionsH1)(D3Q27System::ET_TS, x1, x2p, x3); - h[DIR_PPP] = (*this->localDistributionsH1)(D3Q27System::ET_TNE, x1, x2, x3); - h[DIR_MPP] = (*this->localDistributionsH1)(D3Q27System::ET_TNW, x1p, x2, x3); - h[DIR_PMP] = (*this->localDistributionsH1)(D3Q27System::ET_TSE, x1, x2p, x3); - h[DIR_MMP] = (*this->localDistributionsH1)(D3Q27System::ET_TSW, x1p, x2p, x3); - - h[DIR_M00] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_W, x1p, x2, x3); - h[DIR_0M0] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_S, x1, x2p, x3); - h[DIR_00M] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_B, x1, x2, x3p); - h[DIR_MM0] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_SW, x1p, x2p, x3); - h[DIR_PM0] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_SE, x1, x2p, x3); - h[DIR_M0M] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BW, x1p, x2, x3p); - h[DIR_P0M] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BE, x1, x2, x3p); - h[DIR_0MM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BS, x1, x2p, x3p); - h[DIR_0PM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BN, x1, x2, x3p); - h[DIR_MMM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BSW, x1p, x2p, x3p); - h[DIR_PMM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BSE, x1, x2p, x3p); - h[DIR_MPM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BNW, x1p, x2, x3p); - h[DIR_PPM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BNE, x1, x2, x3p); - - h[DIR_000] = (*this->zeroDistributionsH1)(x1, x2, x3); + h[dP00] = (*this->localDistributionsH1)(D3Q27System::ET_E, x1, x2, x3); + h[d0P0] = (*this->localDistributionsH1)(D3Q27System::ET_N, x1, x2, x3); + h[d00P] = (*this->localDistributionsH1)(D3Q27System::ET_T, x1, x2, x3); + h[dPP0] = (*this->localDistributionsH1)(D3Q27System::ET_NE, x1, x2, x3); + h[dMP0] = (*this->localDistributionsH1)(D3Q27System::ET_NW, x1p, x2, x3); + h[dP0P] = (*this->localDistributionsH1)(D3Q27System::ET_TE, x1, x2, x3); + h[dM0P] = (*this->localDistributionsH1)(D3Q27System::ET_TW, x1p, x2, x3); + h[d0PP] = (*this->localDistributionsH1)(D3Q27System::ET_TN, x1, x2, x3); + h[d0MP] = (*this->localDistributionsH1)(D3Q27System::ET_TS, x1, x2p, x3); + h[dPPP] = (*this->localDistributionsH1)(D3Q27System::ET_TNE, x1, x2, x3); + h[dMPP] = (*this->localDistributionsH1)(D3Q27System::ET_TNW, x1p, x2, x3); + h[dPMP] = (*this->localDistributionsH1)(D3Q27System::ET_TSE, x1, x2p, x3); + h[dMMP] = (*this->localDistributionsH1)(D3Q27System::ET_TSW, x1p, x2p, x3); + + h[dM00] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_W, x1p, x2, x3); + h[d0M0] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_S, x1, x2p, x3); + h[d00M] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_B, x1, x2, x3p); + h[dMM0] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_SW, x1p, x2p, x3); + h[dPM0] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_SE, x1, x2p, x3); + h[dM0M] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BW, x1p, x2, x3p); + h[dP0M] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BE, x1, x2, x3p); + h[d0MM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BS, x1, x2p, x3p); + h[d0PM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BN, x1, x2, x3p); + h[dMMM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BSW, x1p, x2p, x3p); + h[dPMM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BSE, x1, x2p, x3p); + h[dMPM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BNW, x1p, x2, x3p); + h[dPPM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BNE, x1, x2, x3p); + + h[d000] = (*this->zeroDistributionsH1)(x1, x2, x3); } } } @@ -1632,7 +1632,7 @@ void MultiphasePressureFilterCompressibleAirLBMKernel::findNeighbors(CbArray3D<r SPtr<BCArray3D> bcArray = this->getBCSet()->getBCArray(); - phi[DIR_000] = (*ph)(x1, x2, x3); + phi[d000] = (*ph)(x1, x2, x3); for (int k = FSTARTDIR; k <= FENDDIR; k++) { @@ -1653,7 +1653,7 @@ void MultiphasePressureFilterCompressibleAirLBMKernel::findNeighbors2(CbArray3D< SPtr<BCArray3D> bcArray = this->getBCSet()->getBCArray(); - phi2[DIR_000] = (*ph)(x1, x2, x3); + phi2[d000] = (*ph)(x1, x2, x3); for (int k = FSTARTDIR; k <= FENDDIR; k++) { diff --git a/src/cpu/MultiphaseFlow/LBM/MultiphasePressureFilterLBMKernel.cpp b/src/cpu/MultiphaseFlow/LBM/MultiphasePressureFilterLBMKernel.cpp index 1d0d66a1803968f98cdff629d0578ecb197ddc31..48c2039cc710ac92ce5d2f4d0aa704f1a46bdb8a 100644 --- a/src/cpu/MultiphaseFlow/LBM/MultiphasePressureFilterLBMKernel.cpp +++ b/src/cpu/MultiphaseFlow/LBM/MultiphasePressureFilterLBMKernel.cpp @@ -385,17 +385,17 @@ void MultiphasePressureFilterLBMKernel::calculate(int step) real normX2 = dX2_phi / denom; real normX3 = dX3_phi / denom; - dX1_phi = normX1 * (1.0 - phi[DIR_000]) * (phi[DIR_000]) * oneOverInterfaceScale; - dX2_phi = normX2 * (1.0 - phi[DIR_000]) * (phi[DIR_000]) * oneOverInterfaceScale; - dX3_phi = normX3 * (1.0 - phi[DIR_000]) * (phi[DIR_000]) * oneOverInterfaceScale; + dX1_phi = normX1 * (1.0 - phi[d000]) * (phi[d000]) * oneOverInterfaceScale; + dX2_phi = normX2 * (1.0 - phi[d000]) * (phi[d000]) * oneOverInterfaceScale; + dX3_phi = normX3 * (1.0 - phi[d000]) * (phi[d000]) * oneOverInterfaceScale; - collFactorM = collFactorL + (collFactorL - collFactorG) * (phi[DIR_000] - phiH) / (phiH - phiL); + collFactorM = collFactorL + (collFactorL - collFactorG) * (phi[d000] - phiH) / (phiH - phiL); - real mu = 2 * beta * phi[DIR_000] * (phi[DIR_000] - 1) * (2 * phi[DIR_000] - 1) - kappa * nabla2_phi(); + real mu = 2 * beta * phi[d000] * (phi[d000] - 1) * (2 * phi[d000] - 1) - kappa * nabla2_phi(); //----------- Calculating Macroscopic Values ------------- - real rho = rhoH + rhoToPhi * (phi[DIR_000] - phiH); + real rho = rhoH + rhoToPhi * (phi[d000] - phiH); real m0, m1, m2; real rhoRef=c1o1; @@ -462,7 +462,7 @@ void MultiphasePressureFilterLBMKernel::calculate(int step) } //Viscosity increase by pressure gradient - real errPhi = (((1.0 - phi[DIR_000]) * (phi[DIR_000]) * oneOverInterfaceScale)- denom); + real errPhi = (((1.0 - phi[d000]) * (phi[d000]) * oneOverInterfaceScale)- denom); //LBMReal limVis = 0.0000001*10;//0.01; // collFactorM =collFactorM/(c1+limVis*(errPhi*errPhi)*collFactorM); // collFactorM = (collFactorM < 1.8) ? 1.8 : collFactorM; @@ -894,7 +894,7 @@ void MultiphasePressureFilterLBMKernel::calculate(int step) real OxyyMxzz = 8.0 * (collFactorM - 2.0) * (collFactorM + OxxPyyPzz * (3.0 * collFactorM - 7.0)) / (OxxPyyPzz * (56.0 - 42.0 * collFactorM + 9.0 * collFactorM * collFactorM) - 8.0 * collFactorM); real Oxyz = 24.0 * (collFactorM - 2.0) * (4.0 * collFactorM * collFactorM + collFactorM * OxxPyyPzz * (18.0 - 13.0 * collFactorM) + OxxPyyPzz * OxxPyyPzz * (2.0 + collFactorM * (6.0 * collFactorM - 11.0))) / (16.0 * collFactorM * collFactorM * (collFactorM - 6.0) - 2.0 * collFactorM * OxxPyyPzz * (216.0 + 5.0 * collFactorM * (9.0 * collFactorM - 46.0)) + OxxPyyPzz * OxxPyyPzz * (collFactorM * (3.0 * collFactorM - 10.0) * (15.0 * collFactorM - 28.0) - 48.0)); real A = (4.0 * collFactorM * collFactorM + 2.0 * collFactorM * OxxPyyPzz * (collFactorM - 6.0) + OxxPyyPzz * OxxPyyPzz * (collFactorM * (10.0 - 3.0 * collFactorM) - 4.0)) / ((collFactorM - OxxPyyPzz) * (OxxPyyPzz * (2.0 + 3.0 * collFactorM) - 8.0 * collFactorM)); - //FIXME: warning C4459: declaration of 'B' hides global declaration (message : see declaration of 'D3Q27System::DIR_00M' ) + //FIXME: warning C4459: declaration of 'B' hides global declaration (message : see declaration of 'D3Q27System::d00M' ) real BB = (4.0 * collFactorM * OxxPyyPzz * (9.0 * collFactorM - 16.0) - 4.0 * collFactorM * collFactorM - 2.0 * OxxPyyPzz * OxxPyyPzz * (2.0 + 9.0 * collFactorM * (collFactorM - 2.0))) / (3.0 * (collFactorM - OxxPyyPzz) * (OxxPyyPzz * (2.0 + 3.0 * collFactorM) - 8.0 * collFactorM)); @@ -1492,11 +1492,11 @@ void MultiphasePressureFilterLBMKernel::calculate(int step) // collision of 1st order moments cx = cx * (c1o1 - omegaD) + omegaD * vvx * concentration + - normX1 * (c1o1 - 0.5 * omegaD) * (1.0 - phi[DIR_000]) * (phi[DIR_000]) * c1o3 * oneOverInterfaceScale; + normX1 * (c1o1 - 0.5 * omegaD) * (1.0 - phi[d000]) * (phi[d000]) * c1o3 * oneOverInterfaceScale; cy = cy * (c1o1 - omegaD) + omegaD * vvy * concentration + - normX2 * (c1o1 - 0.5 * omegaD) * (1.0 - phi[DIR_000]) * (phi[DIR_000]) * c1o3 * oneOverInterfaceScale; + normX2 * (c1o1 - 0.5 * omegaD) * (1.0 - phi[d000]) * (phi[d000]) * c1o3 * oneOverInterfaceScale; cz = cz * (c1o1 - omegaD) + omegaD * vvz * concentration + - normX3 * (c1o1 - 0.5 * omegaD) * (1.0 - phi[DIR_000]) * (phi[DIR_000]) * c1o3 * oneOverInterfaceScale; + normX3 * (c1o1 - 0.5 * omegaD) * (1.0 - phi[d000]) * (phi[d000]) * c1o3 * oneOverInterfaceScale; cx2 = cx * cx; cy2 = cy * cy; @@ -1636,9 +1636,9 @@ real MultiphasePressureFilterLBMKernel::gradX1_phi() using namespace D3Q27System; using namespace vf::lbm::dir; - return 3.0* ((WEIGTH[DIR_PPP] * (((phi[DIR_PPP] - phi[DIR_MMM]) + (phi[DIR_PMM] - phi[DIR_MPP])) + ((phi[DIR_PMP] - phi[DIR_MPM]) + (phi[DIR_PPM] - phi[DIR_MMP]))) - + WEIGTH[DIR_PP0] * (((phi[DIR_P0P] - phi[DIR_M0M]) + (phi[DIR_P0M] - phi[DIR_M0P])) + ((phi[DIR_PM0] - phi[DIR_MP0]) + (phi[DIR_PP0] - phi[DIR_MM0])))) + - +WEIGTH[DIR_0P0] * (phi[DIR_P00] - phi[DIR_M00])); + return 3.0* ((WEIGTH[dPPP] * (((phi[dPPP] - phi[dMMM]) + (phi[dPMM] - phi[dMPP])) + ((phi[dPMP] - phi[dMPM]) + (phi[dPPM] - phi[dMMP]))) + + WEIGTH[dPP0] * (((phi[dP0P] - phi[dM0M]) + (phi[dP0M] - phi[dM0P])) + ((phi[dPM0] - phi[dMP0]) + (phi[dPP0] - phi[dMM0])))) + + +WEIGTH[d0P0] * (phi[dP00] - phi[dM00])); } real MultiphasePressureFilterLBMKernel::gradX2_phi() @@ -1646,9 +1646,9 @@ real MultiphasePressureFilterLBMKernel::gradX2_phi() using namespace D3Q27System; using namespace vf::lbm::dir; - return 3.0 * ((WEIGTH[DIR_PPP] * (((phi[DIR_PPP] - phi[DIR_MMM]) - (phi[DIR_PMM] - phi[DIR_MPP])) + ((phi[DIR_PPM] - phi[DIR_MMP])- (phi[DIR_PMP] - phi[DIR_MPM]))) - + WEIGTH[DIR_PP0] * (((phi[DIR_0PP] - phi[DIR_0MM]) + (phi[DIR_0PM] - phi[DIR_0MP])) + ((phi[DIR_PP0] - phi[DIR_MM0])- (phi[DIR_PM0] - phi[DIR_MP0])))) + - +WEIGTH[DIR_0P0] * (phi[DIR_0P0] - phi[DIR_0M0])); + return 3.0 * ((WEIGTH[dPPP] * (((phi[dPPP] - phi[dMMM]) - (phi[dPMM] - phi[dMPP])) + ((phi[dPPM] - phi[dMMP])- (phi[dPMP] - phi[dMPM]))) + + WEIGTH[dPP0] * (((phi[d0PP] - phi[d0MM]) + (phi[d0PM] - phi[d0MP])) + ((phi[dPP0] - phi[dMM0])- (phi[dPM0] - phi[dMP0])))) + + +WEIGTH[d0P0] * (phi[d0P0] - phi[d0M0])); } real MultiphasePressureFilterLBMKernel::gradX3_phi() @@ -1656,9 +1656,9 @@ real MultiphasePressureFilterLBMKernel::gradX3_phi() using namespace D3Q27System; using namespace vf::lbm::dir; - return 3.0 * ((WEIGTH[DIR_PPP] * (((phi[DIR_PPP] - phi[DIR_MMM]) - (phi[DIR_PMM] - phi[DIR_MPP])) + ((phi[DIR_PMP] - phi[DIR_MPM]) - (phi[DIR_PPM] - phi[DIR_MMP]))) - + WEIGTH[DIR_PP0] * (((phi[DIR_P0P] - phi[DIR_M0M]) - (phi[DIR_P0M] - phi[DIR_M0P])) + ((phi[DIR_0MP] - phi[DIR_0PM]) + (phi[DIR_0PP] - phi[DIR_0MM])))) + - +WEIGTH[DIR_0P0] * (phi[DIR_00P] - phi[DIR_00M])); + return 3.0 * ((WEIGTH[dPPP] * (((phi[dPPP] - phi[dMMM]) - (phi[dPMM] - phi[dMPP])) + ((phi[dPMP] - phi[dMPM]) - (phi[dPPM] - phi[dMMP]))) + + WEIGTH[dPP0] * (((phi[dP0P] - phi[dM0M]) - (phi[dP0M] - phi[dM0P])) + ((phi[d0MP] - phi[d0PM]) + (phi[d0PP] - phi[d0MM])))) + + +WEIGTH[d0P0] * (phi[d00P] - phi[d00M])); } real MultiphasePressureFilterLBMKernel::nabla2_phi() @@ -1667,17 +1667,17 @@ real MultiphasePressureFilterLBMKernel::nabla2_phi() using namespace vf::lbm::dir; real sum = 0.0; - sum += WEIGTH[DIR_PPP] * ((((phi[DIR_PPP] - phi[DIR_000]) + (phi[DIR_MMM] - phi[DIR_000])) + ((phi[DIR_MMP] - phi[DIR_000]) + (phi[DIR_PPM] - phi[DIR_000]))) - + (((phi[DIR_MPP] - phi[DIR_000]) + (phi[DIR_PMM] - phi[DIR_000])) + ((phi[DIR_PMP] - phi[DIR_000]) + (phi[DIR_MPM] - phi[DIR_000])))); - sum += WEIGTH[DIR_0PP] * ( - (((phi[DIR_0PP] - phi[DIR_000]) + (phi[DIR_0MM] - phi[DIR_000])) + ((phi[DIR_0MP] - phi[DIR_000]) + (phi[DIR_0PM] - phi[DIR_000]))) - + (((phi[DIR_P0P] - phi[DIR_000]) + (phi[DIR_M0M] - phi[DIR_000])) + ((phi[DIR_M0P] - phi[DIR_000]) + (phi[DIR_P0M] - phi[DIR_000]))) - + (((phi[DIR_PP0] - phi[DIR_000]) + (phi[DIR_MM0] - phi[DIR_000])) + ((phi[DIR_MP0] - phi[DIR_000]) + (phi[DIR_PM0] - phi[DIR_000]))) + sum += WEIGTH[dPPP] * ((((phi[dPPP] - phi[d000]) + (phi[dMMM] - phi[d000])) + ((phi[dMMP] - phi[d000]) + (phi[dPPM] - phi[d000]))) + + (((phi[dMPP] - phi[d000]) + (phi[dPMM] - phi[d000])) + ((phi[dPMP] - phi[d000]) + (phi[dMPM] - phi[d000])))); + sum += WEIGTH[d0PP] * ( + (((phi[d0PP] - phi[d000]) + (phi[d0MM] - phi[d000])) + ((phi[d0MP] - phi[d000]) + (phi[d0PM] - phi[d000]))) + + (((phi[dP0P] - phi[d000]) + (phi[dM0M] - phi[d000])) + ((phi[dM0P] - phi[d000]) + (phi[dP0M] - phi[d000]))) + + (((phi[dPP0] - phi[d000]) + (phi[dMM0] - phi[d000])) + ((phi[dMP0] - phi[d000]) + (phi[dPM0] - phi[d000]))) ); - sum += WEIGTH[DIR_00P] * ( - ((phi[DIR_00P] - phi[DIR_000]) + (phi[DIR_00M] - phi[DIR_000])) - + ((phi[DIR_0P0] - phi[DIR_000]) + (phi[DIR_0M0] - phi[DIR_000])) - + ((phi[DIR_P00] - phi[DIR_000]) + (phi[DIR_M00] - phi[DIR_000])) + sum += WEIGTH[d00P] * ( + ((phi[d00P] - phi[d000]) + (phi[d00M] - phi[d000])) + + ((phi[d0P0] - phi[d000]) + (phi[d0M0] - phi[d000])) + + ((phi[dP00] - phi[d000]) + (phi[dM00] - phi[d000])) ); return 6.0 * sum; @@ -1707,35 +1707,35 @@ void MultiphasePressureFilterLBMKernel::computePhasefield() int x2p = x2 + 1; int x3p = x3 + 1; - h[DIR_P00] = (*this->localDistributionsH1)(D3Q27System::ET_E, x1, x2, x3); - h[DIR_0P0] = (*this->localDistributionsH1)(D3Q27System::ET_N, x1, x2, x3); - h[DIR_00P] = (*this->localDistributionsH1)(D3Q27System::ET_T, x1, x2, x3); - h[DIR_PP0] = (*this->localDistributionsH1)(D3Q27System::ET_NE, x1, x2, x3); - h[DIR_MP0] = (*this->localDistributionsH1)(D3Q27System::ET_NW, x1p, x2, x3); - h[DIR_P0P] = (*this->localDistributionsH1)(D3Q27System::ET_TE, x1, x2, x3); - h[DIR_M0P] = (*this->localDistributionsH1)(D3Q27System::ET_TW, x1p, x2, x3); - h[DIR_0PP] = (*this->localDistributionsH1)(D3Q27System::ET_TN, x1, x2, x3); - h[DIR_0MP] = (*this->localDistributionsH1)(D3Q27System::ET_TS, x1, x2p, x3); - h[DIR_PPP] = (*this->localDistributionsH1)(D3Q27System::ET_TNE, x1, x2, x3); - h[DIR_MPP] = (*this->localDistributionsH1)(D3Q27System::ET_TNW, x1p, x2, x3); - h[DIR_PMP] = (*this->localDistributionsH1)(D3Q27System::ET_TSE, x1, x2p, x3); - h[DIR_MMP] = (*this->localDistributionsH1)(D3Q27System::ET_TSW, x1p, x2p, x3); - - h[DIR_M00] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_W, x1p, x2, x3); - h[DIR_0M0] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_S, x1, x2p, x3); - h[DIR_00M] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_B, x1, x2, x3p); - h[DIR_MM0] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_SW, x1p, x2p, x3); - h[DIR_PM0] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_SE, x1, x2p, x3); - h[DIR_M0M] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BW, x1p, x2, x3p); - h[DIR_P0M] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BE, x1, x2, x3p); - h[DIR_0MM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BS, x1, x2p, x3p); - h[DIR_0PM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BN, x1, x2, x3p); - h[DIR_MMM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BSW, x1p, x2p, x3p); - h[DIR_PMM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BSE, x1, x2p, x3p); - h[DIR_MPM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BNW, x1p, x2, x3p); - h[DIR_PPM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BNE, x1, x2, x3p); - - h[DIR_000] = (*this->zeroDistributionsH1)(x1, x2, x3); + h[dP00] = (*this->localDistributionsH1)(D3Q27System::ET_E, x1, x2, x3); + h[d0P0] = (*this->localDistributionsH1)(D3Q27System::ET_N, x1, x2, x3); + h[d00P] = (*this->localDistributionsH1)(D3Q27System::ET_T, x1, x2, x3); + h[dPP0] = (*this->localDistributionsH1)(D3Q27System::ET_NE, x1, x2, x3); + h[dMP0] = (*this->localDistributionsH1)(D3Q27System::ET_NW, x1p, x2, x3); + h[dP0P] = (*this->localDistributionsH1)(D3Q27System::ET_TE, x1, x2, x3); + h[dM0P] = (*this->localDistributionsH1)(D3Q27System::ET_TW, x1p, x2, x3); + h[d0PP] = (*this->localDistributionsH1)(D3Q27System::ET_TN, x1, x2, x3); + h[d0MP] = (*this->localDistributionsH1)(D3Q27System::ET_TS, x1, x2p, x3); + h[dPPP] = (*this->localDistributionsH1)(D3Q27System::ET_TNE, x1, x2, x3); + h[dMPP] = (*this->localDistributionsH1)(D3Q27System::ET_TNW, x1p, x2, x3); + h[dPMP] = (*this->localDistributionsH1)(D3Q27System::ET_TSE, x1, x2p, x3); + h[dMMP] = (*this->localDistributionsH1)(D3Q27System::ET_TSW, x1p, x2p, x3); + + h[dM00] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_W, x1p, x2, x3); + h[d0M0] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_S, x1, x2p, x3); + h[d00M] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_B, x1, x2, x3p); + h[dMM0] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_SW, x1p, x2p, x3); + h[dPM0] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_SE, x1, x2p, x3); + h[dM0M] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BW, x1p, x2, x3p); + h[dP0M] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BE, x1, x2, x3p); + h[d0MM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BS, x1, x2p, x3p); + h[d0PM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BN, x1, x2, x3p); + h[dMMM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BSW, x1p, x2p, x3p); + h[dPMM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BSE, x1, x2p, x3p); + h[dMPM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BNW, x1p, x2, x3p); + h[dPPM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BNE, x1, x2, x3p); + + h[d000] = (*this->zeroDistributionsH1)(x1, x2, x3); } } } @@ -1750,7 +1750,7 @@ void MultiphasePressureFilterLBMKernel::findNeighbors(CbArray3D<real, IndexerX3X SPtr<BCArray3D> bcArray = this->getBCSet()->getBCArray(); - phi[DIR_000] = (*ph)(x1, x2, x3); + phi[d000] = (*ph)(x1, x2, x3); for (int k = FSTARTDIR; k <= FENDDIR; k++) { diff --git a/src/cpu/MultiphaseFlow/LBM/MultiphaseScaleDistributionLBMKernel.cpp b/src/cpu/MultiphaseFlow/LBM/MultiphaseScaleDistributionLBMKernel.cpp index 64a08aa86f29104ad725169adf6bce5887ceb105..092a8d9b8cd53efe6ae1d54187024402910df75b 100644 --- a/src/cpu/MultiphaseFlow/LBM/MultiphaseScaleDistributionLBMKernel.cpp +++ b/src/cpu/MultiphaseFlow/LBM/MultiphaseScaleDistributionLBMKernel.cpp @@ -291,7 +291,7 @@ void MultiphaseScaleDistributionLBMKernel::calculate(int step) SPtr<DistributionArray3D> distributionH = this->getDataSet()->getHdistributions(); real hh[27]; - distributionH->getDistributionInv(hh, x1, x2, x3); + distributionH->getPostCollisionDistribution(hh, x1, x2, x3); real phiD, vxP, vyP, vzP; D3Q27System::calcIncompMacroscopicValues(hh, phiD, vxP, vyP, vzP); @@ -412,7 +412,7 @@ void MultiphaseScaleDistributionLBMKernel::calculate(int step) SPtr<DistributionArray3D> distribution = this->getDataSet()->getFdistributions(); real ff[27]; - distribution->getDistributionInv(ff, x1, x2, x3); + distribution->getPostCollisionDistribution(ff, x1, x2, x3); real rhoG,vx,vy,vz; //real rhoGG = (((((mfaaa + mfccc) + (mfaac + mfcca)) + ((mfcac + mfaca) + (mfcaa + mfacc))) // + (((mfaab + mfccb) + (mfacb + mfcab)) + ((mfaba + mfcbc) + (mfabc + mfcba)) + ((mfbaa + mfbcc) + (mfbac + mfbca)))) @@ -504,9 +504,9 @@ void MultiphaseScaleDistributionLBMKernel::calculate(int step) //16.03.23 c: BB gas side with updated boundary velocity - distribution->getDistributionInv(ff, x1, x2, x3); + distribution->getPostCollisionDistribution(ff, x1, x2, x3); real rhoG; - if (phi[DIR_000] > phiLim) { // initialization necessary + if (phi[d000] > phiLim) { // initialization necessary real sumRho = 0; real sumWeight = 1.e-100; for (int fdir = D3Q27System::FSTARTDIR; fdir <= D3Q27System::FENDDIR; fdir++) { @@ -592,36 +592,36 @@ void MultiphaseScaleDistributionLBMKernel::calculate(int step) //real fBC = (fGEQ - c6o1 * WEIGTH[fdir] * dvDir * (collFactorG )/(c3o1-collFactorG)) - c6o1 * WEIGTH[fdir] * (vBC); //real fBC = (fL - feqOLD) * (c1o1 / collFactorG - c1o1) / (c1o1 / collFactorL - c1o1) + feqNew;// fL -feqOLD + feqNew; //real fBC = fGG - c6o1 * WEIGTH[fdir] * (vBC); - distribution->setDistributionForDirection(fBC, x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir], D3Q27System::INVDIR[fdir]); + distribution->setPostCollisionDistributionForDirection(fBC, x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir], D3Q27System::INVDIR[fdir]); ff[D3Q27System::INVDIR[fdir]] = fBC; ///// other possibility is tor replace the node itself instead of the neighbor (only c1o1 of them is allowed!) //real fG = distribution->getDistributionInvForDirection(x1, x2, x3, fdir); //real feqOLD = D3Q27System::getIncompFeqForDirection(fdir, (*rhoNode)(x1 , x2 , x3 ), (*vxNode)(x1 , x2 , x3 ), (*vyNode)(x1 , x2 , x3 ), (*vzNode)(x1 , x2 , x3 )); //real feqNew = D3Q27System::getIncompFeqForDirection(fdir, rhoG, (*vxNode)(x1 , x2 , x3 ), (*vyNode)(x1 , x2 , x3 ), (*vzNode)(x1, x2, x3 )); //real fBC = fG - feqOLD + feqNew; - //distribution->setDistributionForDirection(fBC, x1, x2, x3, fdir); + //distribution->setPostCollisionDistributionForDirection(fBC, x1, x2, x3, fdir); } } } - //distribution->setDistributionForDirection(D3Q27System::getIncompFeqForDirection(DIR_000, rhoG, vx, vy, vz), x1, x2, x3, DIR_000); + //distribution->setPostCollisionDistributionForDirection(D3Q27System::getIncompFeqForDirection(d000, rhoG, vx, vy, vz), x1, x2, x3, d000); { - real fL = distribution->getDistributionInvForDirection(x1, x2, x3, DIR_000); - real feqOLD = D3Q27System::getIncompFeqForDirection(DIR_000, (*rhoNode)(x1, x2, x3), vx,vy,vz); - real feqNew = D3Q27System::getIncompFeqForDirection(DIR_000, rhoG,vx,vy,vz); - distribution->setDistributionForDirection(fL-feqOLD+feqNew, x1, x2, x3, DIR_000); + real fL = distribution->getDistributionInvForDirection(x1, x2, x3, d000); + real feqOLD = D3Q27System::getIncompFeqForDirection(d000, (*rhoNode)(x1, x2, x3), vx,vy,vz); + real feqNew = D3Q27System::getIncompFeqForDirection(d000, rhoG,vx,vy,vz); + distribution->setPostCollisionDistributionForDirection(fL-feqOLD+feqNew, x1, x2, x3, d000); } D3Q27System::calcIncompMacroscopicValues(ff, rhoG, vx, vy, vz); - ff[DIR_000] = vx * vx + vy * vy + vz * vz + - (((ff[DIR_MM0] + ff[DIR_PP0]) + (ff[DIR_MP0] + ff[DIR_PM0])) + ((ff[DIR_0MM] + ff[DIR_0PP]) + (ff[DIR_0MP] + ff[DIR_0PM])) + ((ff[DIR_M0M] + ff[DIR_P0P]) + (ff[DIR_M0P] + ff[DIR_P0M])) + - c2o1 * ((((ff[DIR_MMM] + ff[DIR_PPP]) + (ff[DIR_MMP] + ff[DIR_PPM]))) + (((ff[DIR_MPM] + ff[DIR_PMP]) + (ff[DIR_MPP] + ff[DIR_PMM]))))); - distribution->setDistributionForDirection(ff[DIR_000], x1, x2, x3, DIR_000); + ff[d000] = vx * vx + vy * vy + vz * vz + + (((ff[dMM0] + ff[dPP0]) + (ff[dMP0] + ff[dPM0])) + ((ff[d0MM] + ff[d0PP]) + (ff[d0MP] + ff[d0PM])) + ((ff[dM0M] + ff[dP0P]) + (ff[dM0P] + ff[dP0M])) + + c2o1 * ((((ff[dMMM] + ff[dPPP]) + (ff[dMMP] + ff[dPPM]))) + (((ff[dMPM] + ff[dPMP]) + (ff[dMPP] + ff[dPMM]))))); + distribution->setPostCollisionDistributionForDirection(ff[d000], x1, x2, x3, d000); } else {//no refill of gas required rhoG = (*rhoNode)(x1, x2, x3); - if (phi2[DIR_000] <= phiLim) { // no refill liquid + if (phi2[d000] <= phiLim) { // no refill liquid for (int fdir = D3Q27System::FSTARTDIR; fdir <= D3Q27System::FENDDIR; fdir++) { if ((phi[fdir] > phiLim)) { // real vxBC = ((*vxNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir])); @@ -710,7 +710,7 @@ void MultiphaseScaleDistributionLBMKernel::calculate(int step) //real fBC = (fL - feqOLD) * (c1o1 / collFactorG - c1o1) / (c1o1 / collFactorL - c1o1) + feqNew; //if ((*phaseField)(x1, x2, x3) <= c1o2) - distribution->setDistributionForDirection(fBC, x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir], D3Q27System::INVDIR[fdir]); + distribution->setPostCollisionDistributionForDirection(fBC, x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir], D3Q27System::INVDIR[fdir]); //if (((*phaseField)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir])) > phiLim) if (phi2[fdir] > phiLim) { @@ -723,13 +723,13 @@ void MultiphaseScaleDistributionLBMKernel::calculate(int step) //real feqG = D3Q27System::getIncompFeqForDirection(fdir, 0, (*vxNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir]) * (D3Q27System::DX1[fdir]) * (D3Q27System::DX1[fdir]), (*vyNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir]) * (D3Q27System::DX2[fdir]) * (D3Q27System::DX2[fdir]), (*vzNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir]) * (D3Q27System::DX3[fdir]) * (D3Q27System::DX3[fdir])); //real feqG = D3Q27System::getIncompFeqForDirection(fdir, 0, vx * (D3Q27System::DX1[fdir]) * (D3Q27System::DX1[fdir]), vy * (D3Q27System::DX2[fdir]) * (D3Q27System::DX2[fdir]), vz * (D3Q27System::DX3[fdir]) * (D3Q27System::DX3[fdir])); - //distribution->setDistributionForDirection((fBC + fG) / densityRatio*0 - fL - (feqG - feqL) * (c1o1 / densityRatio*0 - c1o1) * vBC, x1, x2, x3, fdir);// (vxBC * D3Q27System::DX1[fdir] + vyBC * D3Q27System::DX2[fdir] + vzBC * D3Q27System::DX3[fdir]), x1, x2, x3, fdir); - //distribution->setDistributionForDirection((fBC + fG) / densityRatio * 0 - fL - (feqG - feqL-2*fL+2*feqL) * (c1o1 / densityRatio - c1o1) * vBC, x1, x2, x3, fdir);// (vxBC * D3Q27System::DX1[fdir] + vyBC * D3Q27System::DX2[fdir] + vzBC * D3Q27System::DX3[fdir]), x1, x2, x3, fdir); + //distribution->setPostCollisionDistributionForDirection((fBC + fG) / densityRatio*0 - fL - (feqG - feqL) * (c1o1 / densityRatio*0 - c1o1) * vBC, x1, x2, x3, fdir);// (vxBC * D3Q27System::DX1[fdir] + vyBC * D3Q27System::DX2[fdir] + vzBC * D3Q27System::DX3[fdir]), x1, x2, x3, fdir); + //distribution->setPostCollisionDistributionForDirection((fBC + fG) / densityRatio * 0 - fL - (feqG - feqL-2*fL+2*feqL) * (c1o1 / densityRatio - c1o1) * vBC, x1, x2, x3, fdir);// (vxBC * D3Q27System::DX1[fdir] + vyBC * D3Q27System::DX2[fdir] + vzBC * D3Q27System::DX3[fdir]), x1, x2, x3, fdir); //real flW = (fBC + fG) / densityRatio * 0 - fL - (feqG - feqL) * (c1o1 / densityRatio*0 - c1o1) * vBC; //real flWW = (fBC + fG) / densityRatio * 0 - fL - (feqG - feqL - 2 * fL + 2 * feqL) * (c1o1 / densityRatio*0 - c1o1) * vBC; //real fLi = distribution->getDistributionInvForDirection(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir], fdir); //real number = 666; - //distribution->setDistributionForDirection((fBC + fG) / densityRatio * 0 - fL - (feqG - feqL) * (c1o1 / densityRatio * 0 - c1o1) * vBC, x1, x2, x3, fdir); + //distribution->setPostCollisionDistributionForDirection((fBC + fG) / densityRatio * 0 - fL - (feqG - feqL) * (c1o1 / densityRatio * 0 - c1o1) * vBC, x1, x2, x3, fdir); //real eqBC= D3Q27System::getIncompFeqForDirection(D3Q27System::INVDIR[fdir], 0, vx, vy, vz); //real eqG = D3Q27System::getIncompFeqForDirection(fdir, 0, vx, vy, vz); real eqBCN = D3Q27System::getIncompFeqForDirection(D3Q27System::INVDIR[fdir], 0, (*vxNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir]), (*vyNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir]), (*vzNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir])); @@ -743,7 +743,7 @@ void MultiphaseScaleDistributionLBMKernel::calculate(int step) // real flNew = (fBC + fG-eqBC-eqG) / densityRatio +eqBC+eqG - fL - (feqG - feqL - 2 * fL + 2 * feqL) * (c1o1 / densityRatio - c1o1) * vBC; real laplacePressureBC; if ((x1 + D3Q27System::DX1[fdir] > 0) && (x1 + D3Q27System::DX1[fdir] < maxX1 + 1) && (x2 + D3Q27System::DX2[fdir] > 0) && (x2 + D3Q27System::DX2[fdir] < maxX2 + 1) && (x3 + D3Q27System::DX3[fdir] > 0) && (x3 + D3Q27System::DX3[fdir] < maxX3 + 1) && - phi2[DIR_000] != phi2[fdir]) { + phi2[d000] != phi2[fdir]) { findNeighbors(phaseField, x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir]); laplacePressureBC = c6o1 * c2o1 * computeCurvature_phi() * sigma; findNeighbors(phaseFieldOld, x1, x2, x3); @@ -753,7 +753,7 @@ void MultiphaseScaleDistributionLBMKernel::calculate(int step) // laplacePressureBC = laplacePressure; // } // curv; // reset to the above - if (phi2[DIR_000] != phi2[fdir]) + if (phi2[d000] != phi2[fdir]) { laplacePressureBC = laplacePressure * (c1o1 - c2o1 * (*phaseField)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir])) / @@ -764,9 +764,9 @@ void MultiphaseScaleDistributionLBMKernel::calculate(int step) laplacePressureBC = laplacePressure; // laplacePressureBC *= sigma; // eqBCN = eqBC; - // distribution->setDistributionForDirection(LaplacePressure* WEIGTH[fdir] + (fBC + fG - eqBC - eqG) / densityRatio + (eqBCN + eqGN) * (c1o1 - c1o1 / densityRatio*0) - fL - 0*(feqG - feqL - 2 * fL + 2 * feqL) * (c1o1 / densityRatio - c1o1) * vBC, x1, x2, + // distribution->setPostCollisionDistributionForDirection(LaplacePressure* WEIGTH[fdir] + (fBC + fG - eqBC - eqG) / densityRatio + (eqBCN + eqGN) * (c1o1 - c1o1 / densityRatio*0) - fL - 0*(feqG - feqL - 2 * fL + 2 * feqL) * (c1o1 / densityRatio - c1o1) * vBC, x1, x2, // x3, fdir);// (vxBC * D3Q27System::DX1[fdir] + vyBC * D3Q27System::DX2[fdir] + vzBC * D3Q27System::DX3[fdir]), x1, x2, x3, fdir); - distribution->setDistributionForDirection(laplacePressureBC * WEIGTH[fdir] + (fBC + fG) / densityRatio + (eqBCN + eqGN) * (c1o1 - c1o1 / densityRatio) - fL, x1, x2, x3, fdir); + distribution->setPostCollisionDistributionForDirection(laplacePressureBC * WEIGTH[fdir] + (fBC + fG) / densityRatio + (eqBCN + eqGN) * (c1o1 - c1o1 / densityRatio) - fL, x1, x2, x3, fdir); @@ -799,8 +799,8 @@ void MultiphaseScaleDistributionLBMKernel::calculate(int step) // ////fL = fL*0.99 +0.01*(eqLL - c3o1 * WEIGTH[fdir] * dvDir * (c1o1 / collFactorL - c1o1)); // //LaplacePressure *= sigma; // //eqBCN = eqBC; - // //distribution->setDistributionForDirection(LaplacePressure * WEIGTH[fdir] +(fBC + fG - eqBC - eqG) / densityRatio + (eqBCN + eqGN) * (c1o1-c1o1 / densityRatio*0 ) - fL -0* (feqG - feqL - 2 * fL + 2 * feqL) * (c1o1 / densityRatio - c1o1) * vBC, x1, x2, x3, fdir);// (vxBC * D3Q27System::DX1[fdir] + vyBC * D3Q27System::DX2[fdir] + vzBC * D3Q27System::DX3[fdir]), x1, x2, x3, fdir); - // distribution->setDistributionForDirection(laplacePressureBC* WEIGTH[fdir] + (fBC + fG) / densityRatio + (eqBCN + eqGN) * (c1o1 - c1o1 / densityRatio ) - fL, x1, x2, x3, fdir); + // //distribution->setPostCollisionDistributionForDirection(LaplacePressure * WEIGTH[fdir] +(fBC + fG - eqBC - eqG) / densityRatio + (eqBCN + eqGN) * (c1o1-c1o1 / densityRatio*0 ) - fL -0* (feqG - feqL - 2 * fL + 2 * feqL) * (c1o1 / densityRatio - c1o1) * vBC, x1, x2, x3, fdir);// (vxBC * D3Q27System::DX1[fdir] + vyBC * D3Q27System::DX2[fdir] + vzBC * D3Q27System::DX3[fdir]), x1, x2, x3, fdir); + // distribution->setPostCollisionDistributionForDirection(laplacePressureBC* WEIGTH[fdir] + (fBC + fG) / densityRatio + (eqBCN + eqGN) * (c1o1 - c1o1 / densityRatio ) - fL, x1, x2, x3, fdir); //if (vxBC != 0) { // int set = 0; //} @@ -901,9 +901,9 @@ void MultiphaseScaleDistributionLBMKernel::calculate(int step) //real feqG = D3Q27System::getIncompFeqForDirection(fdir, 0, (*vxNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir]) * (D3Q27System::DX1[fdir]) * (D3Q27System::DX1[fdir]), (*vyNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir]) * (D3Q27System::DX2[fdir]) * (D3Q27System::DX2[fdir]), (*vzNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir]) * (D3Q27System::DX3[fdir]) * (D3Q27System::DX3[fdir])); //real feqG = D3Q27System::getIncompFeqForDirection(fdir, 0, vx * (D3Q27System::DX1[fdir]) * (D3Q27System::DX1[fdir]), vy * (D3Q27System::DX2[fdir]) * (D3Q27System::DX2[fdir]), vz * (D3Q27System::DX3[fdir]) * (D3Q27System::DX3[fdir])); - //distribution->setDistributionForDirection((fBC + fG) / densityRatio*0 - fL- (feqG - feqL) * (c1o1 / densityRatio - c1o1) * (vBC), x1, x2, x3, fdir); - //distribution->setDistributionForDirection((fBC + fG) / densityRatio * 0 - fL - (feqG - feqL - 2 * fL + 2 * feqL) * (c1o1 / densityRatio*0 - c1o1) * vBC, x1, x2, x3, fdir);// (vxBC * D3Q27System::DX1[fdir] + vyBC * D3Q27System::DX2[fdir] + vzBC * D3Q27System::DX3[fdir]), x1, x2, x3, fdir); - //distribution->setDistributionForDirection(0, x1, x2, x3, fdir); + //distribution->setPostCollisionDistributionForDirection((fBC + fG) / densityRatio*0 - fL- (feqG - feqL) * (c1o1 / densityRatio - c1o1) * (vBC), x1, x2, x3, fdir); + //distribution->setPostCollisionDistributionForDirection((fBC + fG) / densityRatio * 0 - fL - (feqG - feqL - 2 * fL + 2 * feqL) * (c1o1 / densityRatio*0 - c1o1) * vBC, x1, x2, x3, fdir);// (vxBC * D3Q27System::DX1[fdir] + vyBC * D3Q27System::DX2[fdir] + vzBC * D3Q27System::DX3[fdir]), x1, x2, x3, fdir); + //distribution->setPostCollisionDistributionForDirection(0, x1, x2, x3, fdir); //real flW = (fBC + fG) / densityRatio * 0 - fL - (feqG - feqL) * (c1o1 / densityRatio * 0 - c1o1) * vBC; //real flWW = (fBC + fG) / densityRatio * 0 - fL - (feqG - feqL - 2 * fL + 2 * feqL) * (c1o1 / densityRatio * 0 - c1o1) * vBC; //real fLi = distribution->getDistributionInvForDirection(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir], fdir); @@ -937,7 +937,7 @@ void MultiphaseScaleDistributionLBMKernel::calculate(int step) //if (UbMath::isNaN(laplacePressureBC) || UbMath::isInfinity(laplacePressureBC)) { // laplacePressureBC = laplacePressure; // } - if (phi2[DIR_000] != phi2[fdir]) + if (phi2[d000] != phi2[fdir]) { laplacePressureBC = laplacePressure * (c1o1 - c2o1 * (*phaseField)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir])) / @@ -950,7 +950,7 @@ void MultiphaseScaleDistributionLBMKernel::calculate(int step) //real pp2 = (*phaseField)(x1, x2, x3); //eqBCN = eqBC; - //distribution->setDistributionForDirection(LaplacePressure* WEIGTH[fdir] + (fBC + fG - eqBC - eqG) / densityRatio + (eqBCN + eqGN) * (c1o1 - c1o1 / densityRatio*0) - fL - 0*(feqG - feqL - 2 * fL + 2 * feqL) * (c1o1 / densityRatio - c1o1) * vBC, x1, x2, x3, fdir);// (vxBC * D3Q27System::DX1[fdir] + vyBC * D3Q27System::DX2[fdir] + vzBC * D3Q27System::DX3[fdir]), x1, x2, x3, fdir); + //distribution->setPostCollisionDistributionForDirection(LaplacePressure* WEIGTH[fdir] + (fBC + fG - eqBC - eqG) / densityRatio + (eqBCN + eqGN) * (c1o1 - c1o1 / densityRatio*0) - fL - 0*(feqG - feqL - 2 * fL + 2 * feqL) * (c1o1 / densityRatio - c1o1) * vBC, x1, x2, x3, fdir);// (vxBC * D3Q27System::DX1[fdir] + vyBC * D3Q27System::DX2[fdir] + vzBC * D3Q27System::DX3[fdir]), x1, x2, x3, fdir); // fBC = (fG) / (densityRatio - c1o1) + // ((densityRatio) / (densityRatio - c1o1)) * ((eqBCN + eqGN) * (c1o1 - c1o1 / densityRatio) - c2o1 * fL + (fGEQ - WEIGTH[fdir] * dvDir * (c1o1 / collFactorG - c1o1)) + laplacePressureBC * WEIGTH[fdir]); // 13.07.2023 @@ -963,7 +963,7 @@ void MultiphaseScaleDistributionLBMKernel::calculate(int step) real fBC = feqNew + (fL - feqOLD) * (c1o1 / collFactorG - c1o1) / (c1o1 / collFactorL - c1o1); - distribution->setDistributionForDirection(laplacePressureBC* WEIGTH[fdir] + (fBC + fG) / densityRatio + (eqBCN + eqGN) * (c1o1 - c1o1 / densityRatio) - fL , x1, x2, x3, fdir); + distribution->setPostCollisionDistributionForDirection(laplacePressureBC* WEIGTH[fdir] + (fBC + fG) / densityRatio + (eqBCN + eqGN) * (c1o1 - c1o1 / densityRatio) - fL , x1, x2, x3, fdir); // real number = 666; @@ -1102,13 +1102,13 @@ void MultiphaseScaleDistributionLBMKernel::calculate(int step) //real fBC = (distribution->getDistributionInvForDirection(x1, x2, x3, D3Q27System::INVDIR[fdir]) - c6o1 * WEIGTH[fdir] * dvDir * (c1o1 / collFactorL - c1o1)) ; //ff[D3Q27System::INVDIR[fdir]] = (feqNew - c6o1 * WEIGTH[fdir] * dvDir * (collFactorL)/(c3o1-collFactorL)); //ff[D3Q27System::INVDIR[fdir]] = (ff[D3Q27System::INVDIR[fdir]] - feqOLD) * (c1o1 / collFactorL - c1o1) / (c1o1 / collFactorG - c1o1) + feqNew; - distribution->setDistributionForDirection(ff[D3Q27System::INVDIR[fdir]], x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir], D3Q27System::INVDIR[fdir]); + distribution->setPostCollisionDistributionForDirection(ff[D3Q27System::INVDIR[fdir]], x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir], D3Q27System::INVDIR[fdir]); } } - real eqRest = D3Q27System::getIncompFeqForDirection(DIR_000, 0, (*vxNode)(x1, x2 , x3 ), + real eqRest = D3Q27System::getIncompFeqForDirection(d000, 0, (*vxNode)(x1, x2 , x3 ), (*vyNode)(x1, x2 , x3 ), (*vzNode)(x1 , x2 , x3 )); - real fRest = distribution->getDistributionInvForDirection(x1 , x2 , x3 , DIR_000); - distribution->setDistributionForDirection((laplacePressure * WEIGTH[DIR_000] + c2o1*(fRest) / densityRatio + (eqRest) * (c1o1 - c1o1 / densityRatio)) , x1, x2, x3, DIR_000); + real fRest = distribution->getDistributionInvForDirection(x1 , x2 , x3 , d000); + distribution->setPostCollisionDistributionForDirection((laplacePressure * WEIGTH[d000] + c2o1*(fRest) / densityRatio + (eqRest) * (c1o1 - c1o1 / densityRatio)) , x1, x2, x3, d000); //03.04.2023 alternative initialization of liquid nodes based on FD //for (int fdir = D3Q27System::FSTARTDIR; fdir <= D3Q27System::FENDDIR; fdir++) { @@ -1124,7 +1124,7 @@ void MultiphaseScaleDistributionLBMKernel::calculate(int step) // //real feqOLD = D3Q27System::getIncompFeqForDirection(D3Q27System::INVDIR[fdir], rhoG, vx, vy, vz); // real feqNew = D3Q27System::getIncompFeqForDirection(D3Q27System::INVDIR[fdir], rhoL, vx, vy, vz); // ff[D3Q27System::INVDIR[fdir]] = feqNew - c3o1 * WEIGTH[fdir] * dvDir * (c1o1 / collFactorL - c1o1); - // distribution->setDistributionForDirection(ff[D3Q27System::INVDIR[fdir]], x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir], D3Q27System::INVDIR[fdir]); + // distribution->setPostCollisionDistributionForDirection(ff[D3Q27System::INVDIR[fdir]], x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir], D3Q27System::INVDIR[fdir]); // } //} @@ -1139,7 +1139,7 @@ void MultiphaseScaleDistributionLBMKernel::calculate(int step) // //real fL = distribution->getDistributionInvForDirection(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir], D3Q27System::INVDIR[fdir]) - c6o1 * WEIGTH[fdir] * vDir; // //real fL = distribution->getDistributionInvForDirection(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir], D3Q27System::INVDIR[fdir]) + c6o1 * WEIGTH[fdir] * (vx * D3Q27System::DX1[fdir] + vy * D3Q27System::DX2[fdir] + vz * D3Q27System::DX3[fdir]); // real fL= D3Q27System::getIncompFeqForDirection(fdir, rhoL, vx, vy, vz); - // distribution->setDistributionForDirection(fL, x1 - D3Q27System::DX1[fdir], x2 - D3Q27System::DX2[fdir], x3 - D3Q27System::DX3[fdir], fdir); + // distribution->setPostCollisionDistributionForDirection(fL, x1 - D3Q27System::DX1[fdir], x2 - D3Q27System::DX2[fdir], x3 - D3Q27System::DX3[fdir], fdir); // ff[fdir] = fL; // } // if (!(phi[fdir] > c1o2)) { @@ -1148,7 +1148,7 @@ void MultiphaseScaleDistributionLBMKernel::calculate(int step) // real vyBC = ((*vyNode)(x1 - D3Q27System::DX1[fdir], x2 - D3Q27System::DX2[fdir], x3 - D3Q27System::DX3[fdir])); // real vzBC = ((*vzNode)(x1 - D3Q27System::DX1[fdir], x2 - D3Q27System::DX2[fdir], x3 - D3Q27System::DX3[fdir])); // real feqL = D3Q27System::getIncompFeqForDirection(fdir, rhoL, vx, vy, vz); - // distribution->setDistributionForDirection(feqL, x1 - D3Q27System::DX1[fdir], x2 - D3Q27System::DX2[fdir], x3 - D3Q27System::DX3[fdir], fdir); + // distribution->setPostCollisionDistributionForDirection(feqL, x1 - D3Q27System::DX1[fdir], x2 - D3Q27System::DX2[fdir], x3 - D3Q27System::DX3[fdir], fdir); // ff[fdir] = feqL; // } //} @@ -1156,31 +1156,31 @@ void MultiphaseScaleDistributionLBMKernel::calculate(int step) //for (int fdir = D3Q27System::FSTARTDIR; fdir <= D3Q27System::FENDDIR; fdir++) { // sumRho2 += ff[fdir];// -D3Q27System::getIncompFeqForDirection(fdir, 0, sumVx, sumVy, sumVz); //} - //ff[DIR_000] = rhoL - sumRho2; + //ff[d000] = rhoL - sumRho2; //rhoL = 27.0 / 18.0 * sumRho2; //std::cout << "rhoL=" << rhoL <<" sumRho="<< 27.0 / 18.0 * sumRho2 << " vx=" << vx << " vy=" << vy << "\n"; //D3Q27System::calcIncompMacroscopicValues(ff, rhoL, vx, vy, vz); - //std::cout << "RecalCrhoL=" << rhoL << " sumRho=" << 27.0 / 18.0 * sumRho2 << " vx=" << vx << " vy=" << vy << "ffRest="<<ff[DIR_000]<<"\n"; -// distribution->setDistributionForDirection(ff[DIR_000], x1, x2, x3, DIR_000); + //std::cout << "RecalCrhoL=" << rhoL << " sumRho=" << 27.0 / 18.0 * sumRho2 << " vx=" << vx << " vy=" << vy << "ffRest="<<ff[d000]<<"\n"; +// distribution->setPostCollisionDistributionForDirection(ff[d000], x1, x2, x3, d000); //{ - // real fG = distribution->getDistributionInvForDirection(x1, x2, x3, DIR_000); - // real feqOLD = D3Q27System::getIncompFeqForDirection(DIR_000, (*rhoNode)(x1, x2, x3), vx, vy, vz); - // real feqNew = D3Q27System::getIncompFeqForDirection(DIR_000, rhoL, vx, vy, vz); - // distribution->setDistributionForDirection(fG - feqOLD + feqNew, x1, x2, x3, DIR_000); + // real fG = distribution->getDistributionInvForDirection(x1, x2, x3, d000); + // real feqOLD = D3Q27System::getIncompFeqForDirection(d000, (*rhoNode)(x1, x2, x3), vx, vy, vz); + // real feqNew = D3Q27System::getIncompFeqForDirection(d000, rhoL, vx, vy, vz); + // distribution->setPostCollisionDistributionForDirection(fG - feqOLD + feqNew, x1, x2, x3, d000); //} - //ff[DIR_000] = vx * vx + vy * vy + vz * vz + - // (((ff[DIR_MM0] + ff[DIR_PP0]) + (ff[DIR_MP0] + ff[DIR_PM0])) + ((ff[DIR_0MM] + ff[DIR_0PP]) + (ff[DIR_0MP] + ff[DIR_0PM])) + ((ff[DIR_M0M] + ff[DIR_P0P]) + (ff[DIR_M0P] + ff[DIR_P0M])) + - // c2o1 * ((((ff[DIR_MMM] + ff[DIR_PPP]) + (ff[DIR_MMP] + ff[DIR_PPM]))) + (((ff[DIR_MPM] + ff[DIR_PMP]) + (ff[DIR_MPP] + ff[DIR_PMM]))))); - //distribution->setDistributionForDirection(ff[DIR_000], x1, x2, x3, DIR_000); + //ff[d000] = vx * vx + vy * vy + vz * vz + + // (((ff[dMM0] + ff[dPP0]) + (ff[dMP0] + ff[dPM0])) + ((ff[d0MM] + ff[d0PP]) + (ff[d0MP] + ff[d0PM])) + ((ff[dM0M] + ff[dP0P]) + (ff[dM0P] + ff[dP0M])) + + // c2o1 * ((((ff[dMMM] + ff[dPPP]) + (ff[dMMP] + ff[dPPM]))) + (((ff[dMPM] + ff[dPMP]) + (ff[dMPP] + ff[dPMM]))))); + //distribution->setPostCollisionDistributionForDirection(ff[d000], x1, x2, x3, d000); //for (int fdir = D3Q27System::FSTARTDIR; fdir <= D3Q27System::FENDDIR; fdir++) { // ff[D3Q27System::INVDIR[fdir]]=distribution->getDistributionInvForDirection(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir], D3Q27System::INVDIR[fdir]); //} //D3Q27System::calcIncompMacroscopicValues(ff, rhoL, vx, vy, vz); - //std::cout << "AfterRead rhoL=" << rhoL << " rhoGToL=" << rhoG/densityRatio << " vx=" << vx << " vy=" << vy << "ffRest=" << ff[DIR_000] <<" x="<<x1<<" y="<<x2<<" z="<<x3<< "\n"; + //std::cout << "AfterRead rhoL=" << rhoL << " rhoGToL=" << rhoG/densityRatio << " vx=" << vx << " vy=" << vy << "ffRest=" << ff[d000] <<" x="<<x1<<" y="<<x2<<" z="<<x3<< "\n"; - //real feqL = D3Q27System::getIncompFeqForDirection(DIR_000, rhoL, vx, vy, vz); - //distribution->setDistributionForDirection(feqL, x1, x2, x3, DIR_000); + //real feqL = D3Q27System::getIncompFeqForDirection(d000, rhoL, vx, vy, vz); + //distribution->setPostCollisionDistributionForDirection(feqL, x1, x2, x3, d000); @@ -1196,13 +1196,13 @@ void MultiphaseScaleDistributionLBMKernel::calculate(int step) // // real feqNew = D3Q27System::getIncompFeqForDirection(D3Q27System::INVDIR[fdir], 0, 0, 0.0001, 0); // ff[D3Q27System::INVDIR[fdir]] = feqNew; - // distribution->setDistributionForDirection(ff[D3Q27System::INVDIR[fdir]], x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir], D3Q27System::INVDIR[fdir]); + // distribution->setPostCollisionDistributionForDirection(ff[D3Q27System::INVDIR[fdir]], x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir], D3Q27System::INVDIR[fdir]); // } //} //16.03.23 B: Bounce Back gas side //distribution->getDistributionInv(ff, x1, x2, x3); //real rhoG; - //if (phi[DIR_000] > c1o2) { //initialization necessary + //if (phi[d000] > c1o2) { //initialization necessary // real sumRho = 0; // real sumWeight = 0; // for (int fdir = D3Q27System::FSTARTDIR; fdir <= D3Q27System::FENDDIR; fdir++) { @@ -1222,11 +1222,11 @@ void MultiphaseScaleDistributionLBMKernel::calculate(int step) // real fG = distribution->getDistributionInvForDirection(x1, x2, x3, fdir); // real fBC = fG - c6o1 * WEIGTH[fdir] * (D3Q27System::DX1[fdir] * vxBC + D3Q27System::DX2[fdir] * vyBC + D3Q27System::DX2[fdir] * vzBC); - // distribution->setDistributionForDirection(fBC, x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir], D3Q27System::INVDIR[fdir]); + // distribution->setPostCollisionDistributionForDirection(fBC, x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir], D3Q27System::INVDIR[fdir]); // } // } - // distribution->setDistributionForDirection(D3Q27System::getIncompFeqForDirection(DIR_000, rhoG, vx, vy, vz), x1, x2, x3, DIR_000); + // distribution->setPostCollisionDistributionForDirection(D3Q27System::getIncompFeqForDirection(d000, rhoG, vx, vy, vz), x1, x2, x3, d000); @@ -1244,7 +1244,7 @@ void MultiphaseScaleDistributionLBMKernel::calculate(int step) // real fBC = fG - c6o1 * WEIGTH[fdir] * (D3Q27System::DX1[fdir] * vxBC + D3Q27System::DX2[fdir] * vyBC + D3Q27System::DX2[fdir] * vzBC); // //if ((*phaseField)(x1, x2, x3) <= c1o2) - // distribution->setDistributionForDirection(fBC, x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir], D3Q27System::INVDIR[fdir]); + // distribution->setPostCollisionDistributionForDirection(fBC, x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir], D3Q27System::INVDIR[fdir]); // if (((*phaseField)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir])) > c1o2) { // //real vxBC = c1o2 * (vx + (*vxNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir])); // //real vyBC = c1o2 * (vy + (*vyNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir])); @@ -1255,7 +1255,7 @@ void MultiphaseScaleDistributionLBMKernel::calculate(int step) // real feqG = D3Q27System::getIncompFeqForDirection(fdir, 0, (*vxNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir]) * (D3Q27System::DX1[fdir]) * (D3Q27System::DX1[fdir]), (*vyNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir]) * (D3Q27System::DX2[fdir]) * (D3Q27System::DX2[fdir]), (*vzNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir]) * (D3Q27System::DX3[fdir]) * (D3Q27System::DX3[fdir])); // //real feqG = D3Q27System::getIncompFeqForDirection(fdir, 0, vx * (D3Q27System::DX1[fdir]) * (D3Q27System::DX1[fdir]), vy * (D3Q27System::DX2[fdir]) * (D3Q27System::DX2[fdir]), vz * (D3Q27System::DX3[fdir]) * (D3Q27System::DX3[fdir])); - // distribution->setDistributionForDirection((fBC + fG) / densityRatio - fL - (feqG - feqL) * (c1o1 / densityRatio - c1o1) * (vxBC * D3Q27System::DX1[fdir] + vyBC * D3Q27System::DX2[fdir] + vzBC * D3Q27System::DX3[fdir]), x1, x2, x3, fdir); + // distribution->setPostCollisionDistributionForDirection((fBC + fG) / densityRatio - fL - (feqG - feqL) * (c1o1 / densityRatio - c1o1) * (vxBC * D3Q27System::DX1[fdir] + vyBC * D3Q27System::DX2[fdir] + vzBC * D3Q27System::DX3[fdir]), x1, x2, x3, fdir); // } // } @@ -1282,7 +1282,7 @@ void MultiphaseScaleDistributionLBMKernel::calculate(int step) // real feqG = D3Q27System::getIncompFeqForDirection(fdir, 0, (*vxNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir]) * (D3Q27System::DX1[fdir]) * (D3Q27System::DX1[fdir]), (*vyNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir]) * (D3Q27System::DX2[fdir]) * (D3Q27System::DX2[fdir]), (*vzNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir]) * (D3Q27System::DX3[fdir]) * (D3Q27System::DX3[fdir])); // //real feqG = D3Q27System::getIncompFeqForDirection(fdir, 0, vx * (D3Q27System::DX1[fdir]) * (D3Q27System::DX1[fdir]), vy * (D3Q27System::DX2[fdir]) * (D3Q27System::DX2[fdir]), vz * (D3Q27System::DX3[fdir]) * (D3Q27System::DX3[fdir])); - // distribution->setDistributionForDirection((fBC + fG) / densityRatio - fL - (feqG - feqL) * (c1o1 / densityRatio - c1o1) * (vxBC * D3Q27System::DX1[fdir] + vyBC * D3Q27System::DX2[fdir] + vzBC * D3Q27System::DX3[fdir]), x1, x2, x3, fdir); + // distribution->setPostCollisionDistributionForDirection((fBC + fG) / densityRatio - fL - (feqG - feqL) * (c1o1 / densityRatio - c1o1) * (vxBC * D3Q27System::DX1[fdir] + vyBC * D3Q27System::DX2[fdir] + vzBC * D3Q27System::DX3[fdir]), x1, x2, x3, fdir); // } // } @@ -1310,16 +1310,16 @@ void MultiphaseScaleDistributionLBMKernel::calculate(int step) // for (int fdir = D3Q27System::FSTARTDIR; fdir <= D3Q27System::FENDDIR; fdir++) { // if ((phi[D3Q27System::INVDIR[fdir]] <= c1o2) && (phi[fdir] > c1o2)) { // real fL = distribution->getDistributionInvForDirection(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir], D3Q27System::INVDIR[fdir]) + c6o1 * WEIGTH[fdir] * (vx * D3Q27System::DX1[fdir] + vy * D3Q27System::DX2[fdir] + vz * D3Q27System::DX3[fdir]);; - // distribution->setDistributionForDirection(fL, x1 - D3Q27System::DX1[fdir], x2 - D3Q27System::DX2[fdir], x3 - D3Q27System::DX3[fdir], fdir); + // distribution->setPostCollisionDistributionForDirection(fL, x1 - D3Q27System::DX1[fdir], x2 - D3Q27System::DX2[fdir], x3 - D3Q27System::DX3[fdir], fdir); // } // if ((phi[D3Q27System::INVDIR[fdir]] <= c1o2) && (phi[fdir] <= c1o2)) { // real feqL = D3Q27System::getIncompFeqForDirection(fdir, rhoL, vx, vy, vz); - // distribution->setDistributionForDirection(feqL, x1 - D3Q27System::DX1[fdir], x2 - D3Q27System::DX2[fdir], x3 - D3Q27System::DX3[fdir], fdir); + // distribution->setPostCollisionDistributionForDirection(feqL, x1 - D3Q27System::DX1[fdir], x2 - D3Q27System::DX2[fdir], x3 - D3Q27System::DX3[fdir], fdir); // } // } - // real feqL = D3Q27System::getIncompFeqForDirection(DIR_000, rhoL, vx, vy, vz); - // distribution->setDistributionForDirection(feqL, x1, x2, x3, DIR_000); + // real feqL = D3Q27System::getIncompFeqForDirection(d000, rhoL, vx, vy, vz); + // distribution->setPostCollisionDistributionForDirection(feqL, x1, x2, x3, d000); @@ -1335,7 +1335,7 @@ void MultiphaseScaleDistributionLBMKernel::calculate(int step) //16.03.23 A: scaled pressure //distribution->getDistributionInv(ff, x1, x2, x3); //real rhoG; - //if (phi[DIR_000] > c1o2) { //initialization necessary + //if (phi[d000] > c1o2) { //initialization necessary // real sumRho = 0; // real sumWeight = 0; // for (int fdir = D3Q27System::FSTARTDIR; fdir <= D3Q27System::FENDDIR; fdir++) { @@ -1353,11 +1353,11 @@ void MultiphaseScaleDistributionLBMKernel::calculate(int step) // real feqNew = D3Q27System::getIncompFeqForDirection(D3Q27System::INVDIR[fdir], rhoG, (*vxNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir]), (*vyNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir]), (*vzNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir])); // real fBC = (fL - feqOLD) * (c1o1 / collFactorG - c1o1) / (c1o1 / collFactorL - c1o1) + feqNew; - // distribution->setDistributionForDirection(fBC, x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir], D3Q27System::INVDIR[fdir]); + // distribution->setPostCollisionDistributionForDirection(fBC, x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir], D3Q27System::INVDIR[fdir]); // } // } - // distribution->setDistributionForDirection(D3Q27System::getIncompFeqForDirection(DIR_000, rhoG, vx, vy, vz), x1, x2, x3, DIR_000); + // distribution->setPostCollisionDistributionForDirection(D3Q27System::getIncompFeqForDirection(d000, rhoG, vx, vy, vz), x1, x2, x3, d000); @@ -1374,7 +1374,7 @@ void MultiphaseScaleDistributionLBMKernel::calculate(int step) // real fBC = (fL - feqOLD) * (c1o1 / collFactorG - c1o1) / (c1o1 / collFactorL - c1o1) + feqNew; // //if ((*phaseField)(x1, x2, x3) <= c1o2) - // distribution->setDistributionForDirection(fBC, x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir], D3Q27System::INVDIR[fdir]); + // distribution->setPostCollisionDistributionForDirection(fBC, x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir], D3Q27System::INVDIR[fdir]); // if (((*phaseField)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir])) > c1o2) { // real vxBC = c1o2 * (vx + (*vxNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir])); // real vyBC = c1o2 * (vy + (*vyNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir])); @@ -1385,7 +1385,7 @@ void MultiphaseScaleDistributionLBMKernel::calculate(int step) // real feqG = D3Q27System::getIncompFeqForDirection(fdir, 0, (*vxNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir]) * (D3Q27System::DX1[fdir]) * (D3Q27System::DX1[fdir]), (*vyNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir]) * (D3Q27System::DX2[fdir]) * (D3Q27System::DX2[fdir]), (*vzNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir]) * (D3Q27System::DX3[fdir]) * (D3Q27System::DX3[fdir])); // //real feqG = D3Q27System::getIncompFeqForDirection(fdir, 0, vx * (D3Q27System::DX1[fdir]) * (D3Q27System::DX1[fdir]), vy * (D3Q27System::DX2[fdir]) * (D3Q27System::DX2[fdir]), vz * (D3Q27System::DX3[fdir]) * (D3Q27System::DX3[fdir])); - // distribution->setDistributionForDirection((fBC + fG) / densityRatio - fL - (feqG - feqL) * (c1o1 / densityRatio - c1o1) * (vxBC * D3Q27System::DX1[fdir] + vyBC * D3Q27System::DX2[fdir] + vzBC * D3Q27System::DX3[fdir]), x1, x2, x3, fdir); + // distribution->setPostCollisionDistributionForDirection((fBC + fG) / densityRatio - fL - (feqG - feqL) * (c1o1 / densityRatio - c1o1) * (vxBC * D3Q27System::DX1[fdir] + vyBC * D3Q27System::DX2[fdir] + vzBC * D3Q27System::DX3[fdir]), x1, x2, x3, fdir); // } // } @@ -1414,7 +1414,7 @@ void MultiphaseScaleDistributionLBMKernel::calculate(int step) // real feqG = D3Q27System::getIncompFeqForDirection(fdir, 0, (*vxNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir]) * (D3Q27System::DX1[fdir]) * (D3Q27System::DX1[fdir]), (*vyNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir]) * (D3Q27System::DX2[fdir]) * (D3Q27System::DX2[fdir]), (*vzNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir]) * (D3Q27System::DX3[fdir]) * (D3Q27System::DX3[fdir])); // //real feqG = D3Q27System::getIncompFeqForDirection(fdir, 0, vx * (D3Q27System::DX1[fdir]) * (D3Q27System::DX1[fdir]), vy * (D3Q27System::DX2[fdir]) * (D3Q27System::DX2[fdir]), vz * (D3Q27System::DX3[fdir]) * (D3Q27System::DX3[fdir])); - // distribution->setDistributionForDirection((fBC + fG) / densityRatio - fL - (feqG - feqL) * (c1o1 / densityRatio - c1o1) * (vxBC * D3Q27System::DX1[fdir] + vyBC * D3Q27System::DX2[fdir] + vzBC * D3Q27System::DX3[fdir]), x1, x2, x3, fdir); + // distribution->setPostCollisionDistributionForDirection((fBC + fG) / densityRatio - fL - (feqG - feqL) * (c1o1 / densityRatio - c1o1) * (vxBC * D3Q27System::DX1[fdir] + vyBC * D3Q27System::DX2[fdir] + vzBC * D3Q27System::DX3[fdir]), x1, x2, x3, fdir); // } // } @@ -1442,16 +1442,16 @@ void MultiphaseScaleDistributionLBMKernel::calculate(int step) // for (int fdir = D3Q27System::FSTARTDIR; fdir <= D3Q27System::FENDDIR; fdir++) { // if ((phi[D3Q27System::INVDIR[fdir]] <= c1o2) && (phi[fdir] > c1o2)) { // real fL = distribution->getDistributionInvForDirection(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir], D3Q27System::INVDIR[fdir]) + c6o1 * WEIGTH[fdir] * (vx * D3Q27System::DX1[fdir] + vy * D3Q27System::DX2[fdir] + vz * D3Q27System::DX3[fdir]);; - // distribution->setDistributionForDirection(fL, x1 - D3Q27System::DX1[fdir], x2 - D3Q27System::DX2[fdir], x3 - D3Q27System::DX3[fdir], fdir); + // distribution->setPostCollisionDistributionForDirection(fL, x1 - D3Q27System::DX1[fdir], x2 - D3Q27System::DX2[fdir], x3 - D3Q27System::DX3[fdir], fdir); // } // if ((phi[D3Q27System::INVDIR[fdir]] <= c1o2) && (phi[fdir] <= c1o2)) { // real feqL = D3Q27System::getIncompFeqForDirection(fdir, rhoL, vx, vy, vz); - // distribution->setDistributionForDirection(feqL, x1 - D3Q27System::DX1[fdir], x2 - D3Q27System::DX2[fdir], x3 - D3Q27System::DX3[fdir], fdir); + // distribution->setPostCollisionDistributionForDirection(feqL, x1 - D3Q27System::DX1[fdir], x2 - D3Q27System::DX2[fdir], x3 - D3Q27System::DX3[fdir], fdir); // } // } - // real feqL = D3Q27System::getIncompFeqForDirection(DIR_000, rhoL, vx, vy, vz); - // distribution->setDistributionForDirection(feqL, x1 , x2, x3 , DIR_000); + // real feqL = D3Q27System::getIncompFeqForDirection(d000, rhoL, vx, vy, vz); + // distribution->setPostCollisionDistributionForDirection(feqL, x1 , x2, x3 , d000); @@ -1491,32 +1491,32 @@ void MultiphaseScaleDistributionLBMKernel::calculate(int step) // //real scalRefill = 0.0; // real slowerFactor = 1.0e6; // if (((*phaseField)(x1, x2, x3) <= c1o2) && ( - // (phi[DIR_P00] > c1o2) || - // (phi[DIR_M00] > c1o2) || - // (phi[DIR_00P] > c1o2) || - // (phi[DIR_00M] > c1o2) || - // (phi[DIR_0M0] > c1o2) || - // (phi[DIR_0P0] > c1o2) || - // (phi[DIR_PP0] > c1o2) || - // (phi[DIR_PM0] > c1o2) || - // (phi[DIR_P0P] > c1o2) || - // (phi[DIR_P0M] > c1o2) || - // (phi[DIR_MP0] > c1o2) || - // (phi[DIR_MM0] > c1o2) || - // (phi[DIR_M0P] > c1o2) || - // (phi[DIR_M0M] > c1o2) || - // (phi[DIR_0PM] > c1o2) || - // (phi[DIR_0MM] > c1o2) || - // (phi[DIR_0PP] > c1o2) || - // (phi[DIR_0MP] > c1o2) || - // (phi[DIR_PPP] > c1o2) || - // (phi[DIR_PMP] > c1o2) || - // (phi[DIR_MPP] > c1o2) || - // (phi[DIR_MMP] > c1o2) || - // (phi[DIR_PPM] > c1o2) || - // (phi[DIR_PMM] > c1o2) || - // (phi[DIR_MPM] > c1o2) || - // (phi[DIR_MMM] > c1o2) + // (phi[dP00] > c1o2) || + // (phi[dM00] > c1o2) || + // (phi[d00P] > c1o2) || + // (phi[d00M] > c1o2) || + // (phi[d0M0] > c1o2) || + // (phi[d0P0] > c1o2) || + // (phi[dPP0] > c1o2) || + // (phi[dPM0] > c1o2) || + // (phi[dP0P] > c1o2) || + // (phi[dP0M] > c1o2) || + // (phi[dMP0] > c1o2) || + // (phi[dMM0] > c1o2) || + // (phi[dM0P] > c1o2) || + // (phi[dM0M] > c1o2) || + // (phi[d0PM] > c1o2) || + // (phi[d0MM] > c1o2) || + // (phi[d0PP] > c1o2) || + // (phi[d0MP] > c1o2) || + // (phi[dPPP] > c1o2) || + // (phi[dPMP] > c1o2) || + // (phi[dMPP] > c1o2) || + // (phi[dMMP] > c1o2) || + // (phi[dPPM] > c1o2) || + // (phi[dPMM] > c1o2) || + // (phi[dMPM] > c1o2) || + // (phi[dMMM] > c1o2) // )) { // real vx = (*vxNode)(x1, x2, x3); // real vy = (*vyNode)(x1, x2, x3); @@ -1525,7 +1525,7 @@ void MultiphaseScaleDistributionLBMKernel::calculate(int step) // distribution->getDistributionInv(ff, x1, x2, x3); // real rhoG; - // if (phi[DIR_000] > c1o2) { //initialization necessary + // if (phi[d000] > c1o2) { //initialization necessary // real sumRho = 0; // real sumWeight = 0; // for (int fdir = D3Q27System::FSTARTDIR; fdir <= D3Q27System::FENDDIR; fdir++) { @@ -1543,11 +1543,11 @@ void MultiphaseScaleDistributionLBMKernel::calculate(int step) // real feqNew = D3Q27System::getIncompFeqForDirection(D3Q27System::INVDIR[fdir], rhoG, (*vxNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir]), (*vyNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir]), (*vzNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir])); // real fBC = (fL - feqOLD) * (c1o1 / collFactorG - c1o1) / (c1o1 / collFactorL - c1o1) + feqNew; - // distribution->setDistributionForDirection(fBC, x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir], D3Q27System::INVDIR[fdir]); + // distribution->setPostCollisionDistributionForDirection(fBC, x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir], D3Q27System::INVDIR[fdir]); // } // } - // distribution->setDistributionForDirection(D3Q27System::getIncompFeqForDirection(DIR_000, rhoG, vx, vy, vz), x1, x2, x3, DIR_000); + // distribution->setPostCollisionDistributionForDirection(D3Q27System::getIncompFeqForDirection(d000, rhoG, vx, vy, vz), x1, x2, x3, d000); @@ -1563,7 +1563,7 @@ void MultiphaseScaleDistributionLBMKernel::calculate(int step) // real fG = distribution->getDistributionInvForDirection(x1, x2, x3, fdir); // real fBC = (fL - feqOLD) * (c1o1 / collFactorG - c1o1) / (c1o1 / collFactorL - c1o1) + feqNew; - // distribution->setDistributionForDirection(fBC, x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir], D3Q27System::INVDIR[fdir]); + // distribution->setPostCollisionDistributionForDirection(fBC, x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir], D3Q27System::INVDIR[fdir]); // if (((*phaseField)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir])) > c1o2) { // real vxBC =c1o2*(vx+ (*vxNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir])); // real vyBC =c1o2*(vy+ (*vyNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir])); @@ -1574,7 +1574,7 @@ void MultiphaseScaleDistributionLBMKernel::calculate(int step) // real feqG = D3Q27System::getIncompFeqForDirection(fdir, 0, (*vxNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir]) * (D3Q27System::DX1[fdir]) * (D3Q27System::DX1[fdir]), (*vyNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir]) * (D3Q27System::DX2[fdir]) * (D3Q27System::DX2[fdir]), (*vzNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir]) * (D3Q27System::DX3[fdir]) * (D3Q27System::DX3[fdir])); // //real feqG = D3Q27System::getIncompFeqForDirection(fdir, 0, vx * (D3Q27System::DX1[fdir]) * (D3Q27System::DX1[fdir]), vy * (D3Q27System::DX2[fdir]) * (D3Q27System::DX2[fdir]), vz * (D3Q27System::DX3[fdir]) * (D3Q27System::DX3[fdir])); - // distribution->setDistributionForDirection((fBC+fG) / densityRatio-fL+kapkap* WEIGTH[fdir]* computeCurvature_phi() -(feqG-feqL)*(c1o1/densityRatio-c1o1)*(vxBC* D3Q27System::DX1[fdir]+vyBC* D3Q27System::DX2[fdir]+vzBC* D3Q27System::DX3[fdir]), x1 , x2 , x3 , fdir); + // distribution->setPostCollisionDistributionForDirection((fBC+fG) / densityRatio-fL+kapkap* WEIGTH[fdir]* computeCurvature_phi() -(feqG-feqL)*(c1o1/densityRatio-c1o1)*(vxBC* D3Q27System::DX1[fdir]+vyBC* D3Q27System::DX2[fdir]+vzBC* D3Q27System::DX3[fdir]), x1 , x2 , x3 , fdir); // } // } @@ -1587,7 +1587,7 @@ void MultiphaseScaleDistributionLBMKernel::calculate(int step) // real feqNew = D3Q27System::getIncompFeqForDirection(fdir, rhoG / densityRatio, slower * vx, slower * vy, slower * vz); // real fBC = (fG - feqOLD) * (c1o1 / collFactorL - c1o1) / (c1o1 / collFactorG - c1o1) + feqNew; - // distribution->setDistributionForDirection(fBC, x1, x2 , x3 , fdir); + // distribution->setPostCollisionDistributionForDirection(fBC, x1, x2 , x3 , fdir); // ////inverse refill from here // //int xn1 = x1 + D3Q27System::DX1[fdir]; @@ -1623,8 +1623,8 @@ void MultiphaseScaleDistributionLBMKernel::calculate(int step) // //real feqL = D3Q27System::getIncompFeqForDirection(D3Q27System::INVDIR[fdir], 0, (*vxNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir]) * (D3Q27System::DX1[fdir]) * (D3Q27System::DX1[fdir]), (*vyNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir]) * (D3Q27System::DX2[fdir]) * (D3Q27System::DX2[fdir]), (*vzNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir]) * (D3Q27System::DX3[fdir]) * (D3Q27System::DX3[fdir])); // //real feqG = D3Q27System::getIncompFeqForDirection(fdir, 0, (*vxNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir]) * (D3Q27System::DX1[fdir]) * (D3Q27System::DX1[fdir]), (*vyNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir]) * (D3Q27System::DX2[fdir]) * (D3Q27System::DX2[fdir]), (*vzNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir]) * (D3Q27System::DX3[fdir]) * (D3Q27System::DX3[fdir])); // ////real feqG = D3Q27System::getIncompFeqForDirection(fdir, 0, vx * (D3Q27System::DX1[fdir]) * (D3Q27System::DX1[fdir]), vy * (D3Q27System::DX2[fdir]) * (D3Q27System::DX2[fdir]), vz * (D3Q27System::DX3[fdir]) * (D3Q27System::DX3[fdir])); - // //distribution->setDistributionForDirection((fBC + fG) / densityRatio - fL + kapkap * WEIGTH[fdir] * computeCurvature_phi() - (feqG - feqL) * (c1o1 / densityRatio - c1o1) * (vxBC * D3Q27System::DX1[fdir] + vyBC * D3Q27System::DX2[fdir] + vzBC * D3Q27System::DX3[fdir]), x1, x2, x3, fdir); - // ////distribution->setDistributionForDirection(( fG) / densityRatio - (feqG - feqL) * (c1o1 / densityRatio - c1o1) * (vxBC * D3Q27System::DX1[fdir] + vyBC * D3Q27System::DX2[fdir] + vzBC * D3Q27System::DX3[fdir]), x1, x2, x3, fdir); + // //distribution->setPostCollisionDistributionForDirection((fBC + fG) / densityRatio - fL + kapkap * WEIGTH[fdir] * computeCurvature_phi() - (feqG - feqL) * (c1o1 / densityRatio - c1o1) * (vxBC * D3Q27System::DX1[fdir] + vyBC * D3Q27System::DX2[fdir] + vzBC * D3Q27System::DX3[fdir]), x1, x2, x3, fdir); + // ////distribution->setPostCollisionDistributionForDirection(( fG) / densityRatio - (feqG - feqL) * (c1o1 / densityRatio - c1o1) * (vxBC * D3Q27System::DX1[fdir] + vyBC * D3Q27System::DX2[fdir] + vzBC * D3Q27System::DX3[fdir]), x1, x2, x3, fdir); // // // } @@ -1667,7 +1667,7 @@ void MultiphaseScaleDistributionLBMKernel::calculate(int step) // real feqNew = D3Q27System::getIncompFeqForDirection(fdir, rhoG / densityRatio, slower*vx, slower*vy, slower*vz); // real fBC = (fG - feqOLD) * (c1o1 / collFactorL - c1o1) / (c1o1 / collFactorG - c1o1) + feqNew; - // distribution->setDistributionForDirection(fBC, x1, x2, x3, fdir); + // distribution->setPostCollisionDistributionForDirection(fBC, x1, x2, x3, fdir); // /////reverse liquid // //int xn1 = x1 + D3Q27System::DX1[fdir]; @@ -1703,11 +1703,11 @@ void MultiphaseScaleDistributionLBMKernel::calculate(int step) // //real feqG = D3Q27System::getIncompFeqForDirection(fdir, 0, (*vxNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir]) * (D3Q27System::DX1[fdir]) * (D3Q27System::DX1[fdir]), (*vyNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir]) * (D3Q27System::DX2[fdir]) * (D3Q27System::DX2[fdir]), (*vzNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir]) * (D3Q27System::DX3[fdir]) * (D3Q27System::DX3[fdir])); // ////real feqG = D3Q27System::getIncompFeqForDirection(fdir, 0, vx * (D3Q27System::DX1[fdir]) * (D3Q27System::DX1[fdir]), vy * (D3Q27System::DX2[fdir]) * (D3Q27System::DX2[fdir]), vz * (D3Q27System::DX3[fdir]) * (D3Q27System::DX3[fdir])); - // //distribution->setDistributionForDirection((fBC + fG) / densityRatio - fL + kapkap * WEIGTH[fdir] * computeCurvature_phi() - (feqG - feqL) * (c1o1 / densityRatio - c1o1) * (vxBC * D3Q27System::DX1[fdir] + vyBC * D3Q27System::DX2[fdir] + vzBC * D3Q27System::DX3[fdir]), x1, x2, x3, fdir); + // //distribution->setPostCollisionDistributionForDirection((fBC + fG) / densityRatio - fL + kapkap * WEIGTH[fdir] * computeCurvature_phi() - (feqG - feqL) * (c1o1 / densityRatio - c1o1) * (vxBC * D3Q27System::DX1[fdir] + vyBC * D3Q27System::DX2[fdir] + vzBC * D3Q27System::DX3[fdir]), x1, x2, x3, fdir); // /////!reverse liquid // // - // ////distribution->setDistributionForDirection((fG) / densityRatio - (feqG - feqL) * (c1o1 / densityRatio - c1o1) * (vxBC * D3Q27System::DX1[fdir] + vyBC * D3Q27System::DX2[fdir] + vzBC * D3Q27System::DX3[fdir]), x1, x2, x3, fdir); + // ////distribution->setPostCollisionDistributionForDirection((fG) / densityRatio - (feqG - feqL) * (c1o1 / densityRatio - c1o1) * (vxBC * D3Q27System::DX1[fdir] + vyBC * D3Q27System::DX2[fdir] + vzBC * D3Q27System::DX3[fdir]), x1, x2, x3, fdir); // } // else { // real fL = distribution->getDistributionInvForDirection(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir], D3Q27System::INVDIR[fdir]); @@ -1715,7 +1715,7 @@ void MultiphaseScaleDistributionLBMKernel::calculate(int step) // real feqNew = D3Q27System::getIncompFeqForDirection(D3Q27System::INVDIR[fdir], (*rhoNode)(x1, x2, x3), (*vxNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir]), (*vyNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir]), (*vzNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir])); // real fG = distribution->getDistributionInvForDirection(x1, x2, x3, fdir); // real fBC = (fL - feqOLD) * (c1o1 / collFactorG - c1o1) / (c1o1 / collFactorL - c1o1) + feqNew; - // distribution->setDistributionForDirection((fBC + fG) / densityRatio - fL + kapkap * WEIGTH[fdir] * computeCurvature_phi() - (feqG - feqL) * (c1o1 / densityRatio - c1o1) * (vxBC * D3Q27System::DX1[fdir] + vyBC * D3Q27System::DX2[fdir] + vzBC * D3Q27System::DX3[fdir]), x1, x2, x3, fdir); + // distribution->setPostCollisionDistributionForDirection((fBC + fG) / densityRatio - fL + kapkap * WEIGTH[fdir] * computeCurvature_phi() - (feqG - feqL) * (c1o1 / densityRatio - c1o1) * (vxBC * D3Q27System::DX1[fdir] + vyBC * D3Q27System::DX2[fdir] + vzBC * D3Q27System::DX3[fdir]), x1, x2, x3, fdir); // } // } // @@ -1731,33 +1731,33 @@ void MultiphaseScaleDistributionLBMKernel::calculate(int step) ////////////////////////////////////// -// //if ((phi[DIR_000] > c1o2) && ( -// // (phi[DIR_P00] <= c1o2) || -// // (phi[DIR_M00] <= c1o2) || -// // (phi[DIR_00P] <= c1o2) || -// // (phi[DIR_00M] <= c1o2) || -// // (phi[DIR_0M0] <= c1o2) || -// // (phi[DIR_0P0] <= c1o2) || -// // (phi[DIR_PP0] <= c1o2) || -// // (phi[DIR_PM0] <= c1o2) || -// // (phi[DIR_P0P] <= c1o2) || -// // (phi[DIR_P0M] <= c1o2) || -// // (phi[DIR_MP0] <= c1o2) || -// // (phi[DIR_MM0] <= c1o2) || -// // (phi[DIR_M0P] <= c1o2) || -// // (phi[DIR_M0M] <= c1o2) || -// // (phi[DIR_0PM] <= c1o2) || -// // (phi[DIR_0MM] <= c1o2) || -// // (phi[DIR_0PP] <= c1o2) || -// // (phi[DIR_0MP] <= c1o2) || -// // (phi[DIR_PPP] <= c1o2) || -// // (phi[DIR_PMP] <= c1o2) || -// // (phi[DIR_MPP] <= c1o2) || -// // (phi[DIR_MMP] <= c1o2) || -// // (phi[DIR_PPM] <= c1o2) || -// // (phi[DIR_PMM] <= c1o2) || -// // (phi[DIR_MPM] <= c1o2) || -// // (phi[DIR_MMM] <= c1o2) +// //if ((phi[d000] > c1o2) && ( +// // (phi[dP00] <= c1o2) || +// // (phi[dM00] <= c1o2) || +// // (phi[d00P] <= c1o2) || +// // (phi[d00M] <= c1o2) || +// // (phi[d0M0] <= c1o2) || +// // (phi[d0P0] <= c1o2) || +// // (phi[dPP0] <= c1o2) || +// // (phi[dPM0] <= c1o2) || +// // (phi[dP0P] <= c1o2) || +// // (phi[dP0M] <= c1o2) || +// // (phi[dMP0] <= c1o2) || +// // (phi[dMM0] <= c1o2) || +// // (phi[dM0P] <= c1o2) || +// // (phi[dM0M] <= c1o2) || +// // (phi[d0PM] <= c1o2) || +// // (phi[d0MM] <= c1o2) || +// // (phi[d0PP] <= c1o2) || +// // (phi[d0MP] <= c1o2) || +// // (phi[dPPP] <= c1o2) || +// // (phi[dPMP] <= c1o2) || +// // (phi[dMPP] <= c1o2) || +// // (phi[dMMP] <= c1o2) || +// // (phi[dPPM] <= c1o2) || +// // (phi[dPMM] <= c1o2) || +// // (phi[dMPM] <= c1o2) || +// // (phi[dMMM] <= c1o2) // // )) { // // // real vx = (*vxNode)(x1, x2, x3); @@ -1778,8 +1778,8 @@ void MultiphaseScaleDistributionLBMKernel::calculate(int step) // // // // // //real fBB; // // //fBB = distribution->getDistributionInvForDirection(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir], D3Q27System::INVDIR[fdir]); -// // //distribution->setDistributionForDirection((ftemp - ff[fdir]), x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir], D3Q27System::INVDIR[fdir]); -// // //distribution->setDistributionForDirection(fBB - c6o1 * D3Q27System::WEIGTH[fdir] * (-vx * D3Q27System::DX1[fdir] - vy * D3Q27System::DX2[fdir] - vz * D3Q27System::DX3[fdir]), x1, x2, x3, fdir); +// // //distribution->setPostCollisionDistributionForDirection((ftemp - ff[fdir]), x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir], D3Q27System::INVDIR[fdir]); +// // //distribution->setPostCollisionDistributionForDirection(fBB - c6o1 * D3Q27System::WEIGTH[fdir] * (-vx * D3Q27System::DX1[fdir] - vy * D3Q27System::DX2[fdir] - vz * D3Q27System::DX3[fdir]), x1, x2, x3, fdir); // // //scaled Version // // // real fG; @@ -1803,11 +1803,11 @@ void MultiphaseScaleDistributionLBMKernel::calculate(int step) // // real feqOLD = (D3Q27System::getIncompFeqForDirection(fdir, rhoLL/densityRatio, vx, vy, vz)); // // real feqNew = (D3Q27System::getIncompFeqForDirection(fdir, rhoLL*(c1o1-ssrho)+ssrho*rhoGG, vx, vy, vz)); // // //real feqNew = (D3Q27System::getIncompFeqForDirection(fdir, rhoFilter, vx, vy, vz)); -// // distribution->setDistributionForDirection( (ff[fdir] - feqOLD)*(c1o1/collFactorG-c1o1)/(c1o1/collFactorL-c1o1) + feqNew, x1, x2, x3, fdir); +// // distribution->setPostCollisionDistributionForDirection( (ff[fdir] - feqOLD)*(c1o1/collFactorG-c1o1)/(c1o1/collFactorL-c1o1) + feqNew, x1, x2, x3, fdir); // // // feqOLD = D3Q27System::getIncompFeqForDirection(D3Q27System::INVDIR[fdir], (*rhoNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir]), (*vxNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir]), (*vyNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir]), (*vzNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir])); // // feqNew = D3Q27System::getIncompFeqForDirection(D3Q27System::INVDIR[fdir], (*rhoNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir]) / densityRatio, (*vxNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir]), (*vyNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir]), (*vzNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir])); -// // distribution->setDistributionForDirection((fG - feqOLD)* (c1o1 / collFactorL - c1o1) / (c1o1 / collFactorG - c1o1) + feqNew, x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir], D3Q27System::INVDIR[fdir]); +// // distribution->setPostCollisionDistributionForDirection((fG - feqOLD)* (c1o1 / collFactorL - c1o1) / (c1o1 / collFactorG - c1o1) + feqNew, x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir], D3Q27System::INVDIR[fdir]); // // sumRhoG += (*rhoNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir]); // // countRhoG++; // @@ -1816,33 +1816,33 @@ void MultiphaseScaleDistributionLBMKernel::calculate(int step) // // } // // (*rhoNode)(x1, x2, x3) = sumRhoG / countRhoG; // -// if ((phi[DIR_000] > c1o2) && ( -// (phi[DIR_P00] <= c1o2) || -// (phi[DIR_M00] <= c1o2) || -// (phi[DIR_00P] <= c1o2) || -// (phi[DIR_00M] <= c1o2) || -// (phi[DIR_0M0] <= c1o2) || -// (phi[DIR_0P0] <= c1o2) || -// (phi[DIR_PP0] <= c1o2) || -// (phi[DIR_PM0] <= c1o2) || -// (phi[DIR_P0P] <= c1o2) || -// (phi[DIR_P0M] <= c1o2) || -// (phi[DIR_MP0] <= c1o2) || -// (phi[DIR_MM0] <= c1o2) || -// (phi[DIR_M0P] <= c1o2) || -// (phi[DIR_M0M] <= c1o2) || -// (phi[DIR_0PM] <= c1o2) || -// (phi[DIR_0MM] <= c1o2) || -// (phi[DIR_0PP] <= c1o2) || -// (phi[DIR_0MP] <= c1o2) || -// (phi[DIR_PPP] <= c1o2) || -// (phi[DIR_PMP] <= c1o2) || -// (phi[DIR_MPP] <= c1o2) || -// (phi[DIR_MMP] <= c1o2) || -// (phi[DIR_PPM] <= c1o2) || -// (phi[DIR_PMM] <= c1o2) || -// (phi[DIR_MPM] <= c1o2) || -// (phi[DIR_MMM] <= c1o2) +// if ((phi[d000] > c1o2) && ( +// (phi[dP00] <= c1o2) || +// (phi[dM00] <= c1o2) || +// (phi[d00P] <= c1o2) || +// (phi[d00M] <= c1o2) || +// (phi[d0M0] <= c1o2) || +// (phi[d0P0] <= c1o2) || +// (phi[dPP0] <= c1o2) || +// (phi[dPM0] <= c1o2) || +// (phi[dP0P] <= c1o2) || +// (phi[dP0M] <= c1o2) || +// (phi[dMP0] <= c1o2) || +// (phi[dMM0] <= c1o2) || +// (phi[dM0P] <= c1o2) || +// (phi[dM0M] <= c1o2) || +// (phi[d0PM] <= c1o2) || +// (phi[d0MM] <= c1o2) || +// (phi[d0PP] <= c1o2) || +// (phi[d0MP] <= c1o2) || +// (phi[dPPP] <= c1o2) || +// (phi[dPMP] <= c1o2) || +// (phi[dMPP] <= c1o2) || +// (phi[dMMP] <= c1o2) || +// (phi[dPPM] <= c1o2) || +// (phi[dPMM] <= c1o2) || +// (phi[dMPM] <= c1o2) || +// (phi[dMMM] <= c1o2) // )) { // real vx = (*vxNode)(x1, x2, x3); // real vy = (*vyNode)(x1, x2, x3); @@ -1853,12 +1853,12 @@ void MultiphaseScaleDistributionLBMKernel::calculate(int step) // // if ((*phaseField)(x1, x2, x3) > c1o2) { // -// for (int fdir = D3Q27System::FSTARTDIR; fdir <= D3Q27System::FENDDIR; fdir++) {// populations without DIR_000 +// for (int fdir = D3Q27System::FSTARTDIR; fdir <= D3Q27System::FENDDIR; fdir++) {// populations without d000 // if ((phi[fdir] <= c1o2)) { // real fG = distribution->getDistributionInvForDirection(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir], D3Q27System::INVDIR[fdir]); // real feqOLD = D3Q27System::getIncompFeqForDirection(D3Q27System::INVDIR[fdir], (*rhoNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir]), (*vxNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir]), (*vyNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir]), (*vzNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir])); // real feqNew = D3Q27System::getIncompFeqForDirection(D3Q27System::INVDIR[fdir], (*rhoNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir]) / densityRatio, (*vxNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir]), (*vyNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir]), (*vzNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir])); -// distribution->setDistributionForDirection((fG - feqOLD)* (c1o1 / collFactorL - c1o1) / (c1o1 / collFactorG - c1o1) + feqNew, x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir], D3Q27System::INVDIR[fdir]); +// distribution->setPostCollisionDistributionForDirection((fG - feqOLD)* (c1o1 / collFactorL - c1o1) / (c1o1 / collFactorG - c1o1) + feqNew, x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir], D3Q27System::INVDIR[fdir]); // // } // } @@ -1895,10 +1895,10 @@ void MultiphaseScaleDistributionLBMKernel::calculate(int step) // sumRho = ff[fdir] - D3Q27System::getIncompFeqForDirection(fdir, 0, vx, vy, vz); // } // rhoG = 27.0 / 19.0 * sumRho; -// distribution->setDistributionForDirection(D3Q27System::getIncompFeqForDirection(DIR_000, rhoG, vx, vy, vz), x1 , x2 , x3 , DIR_000); +// distribution->setPostCollisionDistributionForDirection(D3Q27System::getIncompFeqForDirection(d000, rhoG, vx, vy, vz), x1 , x2 , x3 , d000); // for (int fdir = D3Q27System::FSTARTDIR; fdir <= D3Q27System::FENDDIR; fdir++) { // //if ((phi[fdir] > c1o2)) { -// distribution->setDistributionForDirection(ff[D3Q27System::INVDIR[fdir]], x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir], D3Q27System::INVDIR[fdir]); +// distribution->setPostCollisionDistributionForDirection(ff[D3Q27System::INVDIR[fdir]], x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir], D3Q27System::INVDIR[fdir]); // //} // } // @@ -1907,33 +1907,33 @@ void MultiphaseScaleDistributionLBMKernel::calculate(int step) // // // } -// else if ((phi[DIR_000] <= c1o2) && ( -// (phi[DIR_P00] > c1o2) || -// (phi[DIR_M00] > c1o2) || -// (phi[DIR_00P] > c1o2) || -// (phi[DIR_00M] > c1o2) || -// (phi[DIR_0M0] > c1o2) || -// (phi[DIR_0P0] > c1o2) || -// (phi[DIR_PP0] > c1o2) || -// (phi[DIR_PM0] > c1o2) || -// (phi[DIR_P0P] > c1o2) || -// (phi[DIR_P0M] > c1o2) || -// (phi[DIR_MP0] > c1o2) || -// (phi[DIR_MM0] > c1o2) || -// (phi[DIR_M0P] > c1o2) || -// (phi[DIR_M0M] > c1o2) || -// (phi[DIR_0PM] > c1o2) || -// (phi[DIR_0MM] > c1o2) || -// (phi[DIR_0PP] > c1o2) || -// (phi[DIR_0MP] > c1o2) || -// (phi[DIR_PPP] > c1o2) || -// (phi[DIR_PMP] > c1o2) || -// (phi[DIR_MPP] > c1o2) || -// (phi[DIR_MMP] > c1o2) || -// (phi[DIR_PPM] > c1o2) || -// (phi[DIR_PMM] > c1o2) || -// (phi[DIR_MPM] > c1o2) || -// (phi[DIR_MMM] > c1o2) +// else if ((phi[d000] <= c1o2) && ( +// (phi[dP00] > c1o2) || +// (phi[dM00] > c1o2) || +// (phi[d00P] > c1o2) || +// (phi[d00M] > c1o2) || +// (phi[d0M0] > c1o2) || +// (phi[d0P0] > c1o2) || +// (phi[dPP0] > c1o2) || +// (phi[dPM0] > c1o2) || +// (phi[dP0P] > c1o2) || +// (phi[dP0M] > c1o2) || +// (phi[dMP0] > c1o2) || +// (phi[dMM0] > c1o2) || +// (phi[dM0P] > c1o2) || +// (phi[dM0M] > c1o2) || +// (phi[d0PM] > c1o2) || +// (phi[d0MM] > c1o2) || +// (phi[d0PP] > c1o2) || +// (phi[d0MP] > c1o2) || +// (phi[dPPP] > c1o2) || +// (phi[dPMP] > c1o2) || +// (phi[dMPP] > c1o2) || +// (phi[dMMP] > c1o2) || +// (phi[dPPM] > c1o2) || +// (phi[dPMM] > c1o2) || +// (phi[dMPM] > c1o2) || +// (phi[dMMM] > c1o2) // )) { // real vx = (*vxNode)(x1, x2, x3); // real vy = (*vyNode)(x1, x2, x3); @@ -1957,7 +1957,7 @@ void MultiphaseScaleDistributionLBMKernel::calculate(int step) // // real fL = distribution->getDistributionInvForDirection(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir], D3Q27System::INVDIR[fdir]); // // real feqOLD = D3Q27System::getIncompFeqForDirection(D3Q27System::INVDIR[fdir], (*rhoNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir]), (*vxNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir]), (*vyNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir]), (*vzNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir])); // // real feqNew = D3Q27System::getIncompFeqForDirection(D3Q27System::INVDIR[fdir], (*rhoNode)(x1 , x2 , x3 ), (*vxNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir]), (*vyNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir]), (*vzNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir])); -// // distribution->setDistributionForDirection((fL - feqOLD) * (c1o1 / collFactorG - c1o1) / (c1o1 / collFactorL - c1o1) + feqNew, x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir], D3Q27System::INVDIR[fdir]); +// // distribution->setPostCollisionDistributionForDirection((fL - feqOLD) * (c1o1 / collFactorG - c1o1) / (c1o1 / collFactorL - c1o1) + feqNew, x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir], D3Q27System::INVDIR[fdir]); // // } // // } ///////iterative way: @@ -1981,7 +1981,7 @@ void MultiphaseScaleDistributionLBMKernel::calculate(int step) // } // else { ff[D3Q27System::INVDIR[fdir]] = distribution->getDistributionInvForDirection(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir], D3Q27System::INVDIR[fdir]); } // } -// ff[DIR_000]= distribution->getDistributionInvForDirection(x1, x2, x3, DIR_000); +// ff[d000]= distribution->getDistributionInvForDirection(x1, x2, x3, d000); // D3Q27System::calcIncompMacroscopicValues(ff, rhoG, vx, vy, vz); // //real sumRho = 0; // //for (int fdir = D3Q27System::FSTARTDIR; fdir <= D3Q27System::FENDDIR; fdir++) { @@ -1991,10 +1991,10 @@ void MultiphaseScaleDistributionLBMKernel::calculate(int step) // } // for (int fdir = D3Q27System::FSTARTDIR; fdir <= D3Q27System::FENDDIR; fdir++) { // -// distribution->setDistributionForDirection(ff[D3Q27System::INVDIR[fdir]], x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir], D3Q27System::INVDIR[fdir]); +// distribution->setPostCollisionDistributionForDirection(ff[D3Q27System::INVDIR[fdir]], x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir], D3Q27System::INVDIR[fdir]); // // } -// //distribution->setDistributionForDirection(ff[DIR_000], x1, x2, x3, DIR_000); +// //distribution->setPostCollisionDistributionForDirection(ff[d000], x1, x2, x3, d000); // // // @@ -2007,7 +2007,7 @@ void MultiphaseScaleDistributionLBMKernel::calculate(int step) // real feqOLD = D3Q27System::getIncompFeqForDirection(D3Q27System::INVDIR[fdir], (*rhoNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir]), (*vxNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir]), (*vyNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir]), (*vzNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir])); // real feqNew = D3Q27System::getIncompFeqForDirection(D3Q27System::INVDIR[fdir], (*rhoNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir]) / densityRatio, (*vxNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir]), (*vyNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir]), (*vzNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir])); // ff[D3Q27System::INVDIR[fdir]] = (fG - feqOLD) * (c1o1 / collFactorL - c1o1) / (c1o1 / collFactorG - c1o1) + feqNew; -// distribution->setDistributionForDirection(ff[D3Q27System::INVDIR[fdir]], x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir], D3Q27System::INVDIR[fdir]); +// distribution->setPostCollisionDistributionForDirection(ff[D3Q27System::INVDIR[fdir]], x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir], D3Q27System::INVDIR[fdir]); // } // else { ff[D3Q27System::INVDIR[fdir]] = distribution->getDistributionInvForDirection(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir], D3Q27System::INVDIR[fdir]);} // } @@ -2018,7 +2018,7 @@ void MultiphaseScaleDistributionLBMKernel::calculate(int step) // sumRho = ff[fdir] - D3Q27System::getIncompFeqForDirection(fdir, 0, vx, vy, vz); // } // rhoG = 27.0 / 19.0 * sumRho; -// distribution->setDistributionForDirection(D3Q27System::getIncompFeqForDirection(DIR_000, rhoG, vx, vy, vz), x1, x2, x3, DIR_000); +// distribution->setPostCollisionDistributionForDirection(D3Q27System::getIncompFeqForDirection(d000, rhoG, vx, vy, vz), x1, x2, x3, d000); // // // @@ -2057,7 +2057,7 @@ void MultiphaseScaleDistributionLBMKernel::calculate(int step) // D3Q27System::calcIncompMacroscopicValues(ff, rhoL, vx, vy, vz); // //if (vz != 0) { -// // std::cout << "precol: rhoL=" << rhoL << " vx=" << vx << " vy=" << vy << " vz=" << vz << "ffRest=" << ff[DIR_000] << " x=" << x1 << " y=" << x2 << " z=" << x3 << "\n"; +// // std::cout << "precol: rhoL=" << rhoL << " vx=" << vx << " vy=" << vy << " vz=" << vz << "ffRest=" << ff[d000] << " x=" << x1 << " y=" << x2 << " z=" << x3 << "\n"; // //} // } @@ -2085,7 +2085,7 @@ void MultiphaseScaleDistributionLBMKernel::calculate(int step) // distribution->getDistribution(ff, x1, x2, x3); // real rhoL; // D3Q27System::calcIncompMacroscopicValues(ff, rhoL, vx, vy, vz); - // std::cout << "precol: rhoL=" << rhoL << " vx=" << vx << " vy=" << vy << "ffRest=" << ff[DIR_000] << " x=" << x1 << " y=" << x2 << " z=" << x3 << "\n"; + // std::cout << "precol: rhoL=" << rhoL << " vx=" << vx << " vy=" << vy << "ffRest=" << ff[d000] << " x=" << x1 << " y=" << x2 << " z=" << x3 << "\n"; // } // } // } @@ -2098,7 +2098,7 @@ void MultiphaseScaleDistributionLBMKernel::calculate(int step) // sumRho = ff[fdir] - D3Q27System::getIncompFeqForDirection(fdir, 0, vx, vy, vz); // } // rhoL = 27.0 / 19.0 * sumRho; - // distribution->setDistributionInvForDirection(D3Q27System::getIncompFeqForDirection(DIR_000, rhoL, vx, vy, vz), x1, x2, x3, DIR_000); + // distribution->setPreCollisionDistributionForDirection(D3Q27System::getIncompFeqForDirection(d000, rhoL, vx, vy, vz), x1, x2, x3, d000); // } @@ -2132,12 +2132,12 @@ void MultiphaseScaleDistributionLBMKernel::calculate(int step) // //vz = (*vzNode)(x1, x2, x3); // // -// //for (int fdir = D3Q27System::STARTF; fdir <= D3Q27System::ENDF; fdir++) {// loop includes DIR_000 position, different from all the others +// //for (int fdir = D3Q27System::STARTF; fdir <= D3Q27System::ENDF; fdir++) {// loop includes d000 position, different from all the others // // real feqOLD = D3Q27System::getIncompFeqForDirection(fdir, rhoG,vx,vy,vz); // // real feqNew = D3Q27System::getIncompFeqForDirection(fdir, rhoG/densityRatio,vx,vy,vz); // // real fBC = (ff[fdir] - feqOLD) * (c1o1 / collFactorL - c1o1) / (c1o1 / collFactorG - c1o1) + feqNew; // -// // distribution->setDistributionInvForDirection(fBC, x1 , x2 , x3 ,fdir); +// // distribution->setPreCollisionDistributionForDirection(fBC, x1 , x2 , x3 ,fdir); // // // @@ -2169,7 +2169,7 @@ void MultiphaseScaleDistributionLBMKernel::calculate(int step) // sumVx /= sum; // sumVy /= sum; // sumVz /= sum; -// distribution->setDistributionInvForDirection(D3Q27System::getIncompFeqForDirection(DIR_000, sumRho, sumVx, sumVy, sumVz), x1, x2, x3, DIR_000); +// distribution->setPreCollisionDistributionForDirection(D3Q27System::getIncompFeqForDirection(d000, sumRho, sumVx, sumVy, sumVz), x1, x2, x3, d000); // // std::cout << "x=" << x1 << " " << "y=" << x2 << " " << "z=" << x3 <<" sumVx="<<sumVx<< " sumVy=" << sumVy << " sumVz=" << sumVz << " sumRho=" << sumRho << "\n"; // @@ -2187,12 +2187,12 @@ void MultiphaseScaleDistributionLBMKernel::calculate(int step) // //ff[fdir] = ff[D3Q27System::INVDIR[fdir]] + c6o1 * WEIGTH[fdir] * (vx * D3Q27System::DX1[fdir] + vy * D3Q27System::DX2[fdir] + vz * D3Q27System::DX3[fdir]); // ff[fdir] = ff[D3Q27System::INVDIR[fdir]] + c6o1 * WEIGTH[fdir] * (sumVx * D3Q27System::DX1[fdir] + sumVy * D3Q27System::DX2[fdir] + sumVz * D3Q27System::DX3[fdir]); // //ff[fdir] = D3Q27System::getIncompFeqForDirection(fdir, sumRho, sumVx, sumVy, sumVz); -// distribution->setDistributionInvForDirection(ff[fdir], x1, x2, x3, fdir); +// distribution->setPreCollisionDistributionForDirection(ff[fdir], x1, x2, x3, fdir); // } // if (phi[fdir] <= c1o2 && phi[D3Q27System::INVDIR[fdir]] <= c1o2) { // //ff[fdir] = D3Q27System::getIncompFeqForDirection(fdir, rhoG / densityRatio, vx, vy, vz); // ff[fdir]= D3Q27System::getIncompFeqForDirection(fdir, sumRho, sumVx, sumVy, sumVz); -// distribution->setDistributionInvForDirection(ff[fdir], x1, x2, x3, fdir); +// distribution->setPreCollisionDistributionForDirection(ff[fdir], x1, x2, x3, fdir); // } // } // real rhoL; @@ -2205,10 +2205,10 @@ void MultiphaseScaleDistributionLBMKernel::calculate(int step) // sumRho2 += ff[fdir];// -D3Q27System::getIncompFeqForDirection(fdir, 0, sumVx, sumVy, sumVz); // } // rhoL = 27.0 / 19.0 * sumRho; -// //distribution->setDistributionInvForDirection(D3Q27System::getIncompFeqForDirection(DIR_000, rhoL, vx, vy, vz), x1, x2, x3, DIR_000); -// //distribution->setDistributionInvForDirection(D3Q27System::getIncompFeqForDirection(DIR_000, rhoL, sumVx, sumVy, sumVz), x1, x2, x3, DIR_000); -// ff[DIR_000] = sumRho - sumRho2; -// distribution->setDistributionInvForDirection(ff[DIR_000], x1, x2, x3, DIR_000); +// //distribution->setPreCollisionDistributionForDirection(D3Q27System::getIncompFeqForDirection(d000, rhoL, vx, vy, vz), x1, x2, x3, d000); +// //distribution->setPreCollisionDistributionForDirection(D3Q27System::getIncompFeqForDirection(d000, rhoL, sumVx, sumVy, sumVz), x1, x2, x3, d000); +// ff[d000] = sumRho - sumRho2; +// distribution->setPreCollisionDistributionForDirection(ff[d000], x1, x2, x3, d000); // D3Q27System::calcIncompMacroscopicValues(ff, rhoG, vx, vy, vz); // std::cout << " calcVx=" << vx << " calcVy=" << vy << " calcVz=" << vz << " rhoG=" << rhoG << "\n"; // @@ -2349,7 +2349,7 @@ void MultiphaseScaleDistributionLBMKernel::calculate(int step) // for (int fdir = D3Q27System::STARTF; fdir <= D3Q27System::ENDF; fdir++) { // real feqOLD = (D3Q27System::getIncompFeqForDirection(fdir, drho, vvx, vvy, vvz)); // real feqNew = (D3Q27System::getIncompFeqForDirection(fdir, drhoScaled, vvx, vvy, vvz)); - // distribution->setDistributionInvForDirection((ff[fdir]-feqOLD)* scaleStress +feqNew,x1,x2,x3,fdir); + // distribution->setPreCollisionDistributionForDirection((ff[fdir]-feqOLD)* scaleStress +feqNew,x1,x2,x3,fdir); // } @@ -3221,7 +3221,7 @@ void MultiphaseScaleDistributionLBMKernel::calculate(int step) //real mfhbbb ;//= (*this->zeroDistributionsH2)(x1, x2, x3); - //if (phi[DIR_000] < c1o2) + //if (phi[d000] < c1o2) //{ mfcbb= (*this->localDistributionsF)(D3Q27System::ET_E, x1, x2, x3); mfbcb= (*this->localDistributionsF)(D3Q27System::ET_N, x1, x2, x3); @@ -3362,24 +3362,24 @@ void MultiphaseScaleDistributionLBMKernel::calculate(int step) //real pushInterface = 2.0; - //collFactorM = collFactorL + (collFactorL - collFactorG) * (phi[DIR_000] - phiH) / (phiH - phiL); - //collFactorM = collFactorL + (collFactorL - collFactorG) * (tanh(pushInterface * (c2o1 * phi[DIR_000] - c1o1)) / tanh(pushInterface) * c1o2 + c1o2 - phiH) / (phiH - phiL); - collFactorM = phi[DIR_000] > phiLim ? collFactorL : collFactorG; + //collFactorM = collFactorL + (collFactorL - collFactorG) * (phi[d000] - phiH) / (phiH - phiL); + //collFactorM = collFactorL + (collFactorL - collFactorG) * (tanh(pushInterface * (c2o1 * phi[d000] - c1o1)) / tanh(pushInterface) * c1o2 + c1o2 - phiH) / (phiH - phiL); + collFactorM = phi[d000] > phiLim ? collFactorL : collFactorG; //collFactorM=(((*phaseField)(x1, x2, x3) > c1o2) && ((*phaseFieldOld)(x1, x2, x3) <= c1o2)) ? 1.8 : collFactorM; - real collFactorMInv = phi[DIR_000] > phiLim ? collFactorG : collFactorL; + real collFactorMInv = phi[d000] > phiLim ? collFactorG : collFactorL; - //real mu = 2 * beta * phi[DIR_000] * (phi[DIR_000] - 1) * (2 * phi[DIR_000] - 1) - kappa * nabla2_phi(); + //real mu = 2 * beta * phi[d000] * (phi[d000] - 1) * (2 * phi[d000] - 1) - kappa * nabla2_phi(); //----------- Calculating Macroscopic Values ------------- - real rho = phi[DIR_000] > phiLim ? rhoH : rhoL;//rhoH + rhoToPhi * (phi[DIR_000] - phiH); //Incompressible + real rho = phi[d000] > phiLim ? rhoH : rhoL;//rhoH + rhoToPhi * (phi[d000] - phiH); //Incompressible - //real rho = rhoH + rhoToPhi * (tanh(pushInterface*(c2o1*phi[DIR_000]-c1o1))/tanh(pushInterface)*c1o2 +c1o2 - phiH); //Incompressible + //real rho = rhoH + rhoToPhi * (tanh(pushInterface*(c2o1*phi[d000]-c1o1))/tanh(pushInterface)*c1o2 +c1o2 - phiH); //Incompressible ///scaled phase field //real rho = rhoH + rhoToPhi * ((*phaseField)(x1, x2, x3) * (*phaseField)(x1, x2, x3) / ((*phaseField)(x1, x2, x3) * (*phaseField)(x1, x2, x3) + (c1o1 - (*phaseField)(x1, x2, x3)) * (c1o1 - (*phaseField)(x1, x2, x3))) - phiH); ///!scaled phase field - //real rho = rhoH + rhoToPhi * (phi[DIR_000] - phiH)+(c1o1-phi[DIR_000])* (*pressure)(x1, x2, x3)*c3o1; //compressible - //real rho = rhoL + (rhoH - rhoL) * phi[DIR_000] + (c1o1 - phi[DIR_000]) * (*pressure)(x1, x2, x3) * c3o1; //compressible + //real rho = rhoH + rhoToPhi * (phi[d000] - phiH)+(c1o1-phi[d000])* (*pressure)(x1, x2, x3)*c3o1; //compressible + //real rho = rhoL + (rhoH - rhoL) * phi[d000] + (c1o1 - phi[d000]) * (*pressure)(x1, x2, x3) * c3o1; //compressible real m0, m1, m2; real rhoRef=c1o1; @@ -3401,14 +3401,14 @@ void MultiphaseScaleDistributionLBMKernel::calculate(int step) // {{pressureHere,pressureHere,pressureHere},{pressureHere,pressureHere,pressureHere},{pressureHere,pressureHere,pressureHere}}, // { {pressureHere,pressureHere,pressureHere},{pressureHere,pressureHere,pressureHere},{pressureHere,pressureHere,pressureHere}} }; //real LaplaceP = 0.0; - //LaplaceP += WEIGTH[DIR_PPP] * (((((*pressureOld)(x1+1,x2+1,x3+1) - pressureHere) + ((*pressureOld)(x1 - 1, x2 - 1, x3 - 1) - pressureHere)) + (((*pressureOld)(x1 + 1, x2 + 1, x3 - 1) - pressureHere) + ((*pressureOld)(x1 - 1, x2 - 1, x3 + 1) - pressureHere))) + //LaplaceP += WEIGTH[dPPP] * (((((*pressureOld)(x1+1,x2+1,x3+1) - pressureHere) + ((*pressureOld)(x1 - 1, x2 - 1, x3 - 1) - pressureHere)) + (((*pressureOld)(x1 + 1, x2 + 1, x3 - 1) - pressureHere) + ((*pressureOld)(x1 - 1, x2 - 1, x3 + 1) - pressureHere))) // + ((((*pressureOld)(x1 + 1, x2 - 1, x3 + 1) - pressureHere) + ((*pressureOld)(x1 - 1, x2 + 1, x3 - 1) - pressureHere)) + (((*pressureOld)(x1 + 1, x2 - 1, x3 - 1) - pressureHere) + ((*pressureOld)(x1 - 1, x2 + 1, x3 + 1) - pressureHere)))); - //LaplaceP += WEIGTH[DIR_0PP] * ( + //LaplaceP += WEIGTH[d0PP] * ( // ((((*pressureOld)(x1 + 1, x2 + 1, x3) - pressureHere) + ((*pressureOld)(x1 - 1, x2 - 1, x3) - pressureHere)) + (((*pressureOld)(x1 + 1, x2 - 1, x3) - pressureHere) + ((*pressureOld)(x1 - 1, x2 + 1, x3) - pressureHere))) // + ((((*pressureOld)(x1 + 1, x2, x3 + 1) - pressureHere) + ((*pressureOld)(x1 - 1, x2, x3 -1) - pressureHere)) + (((*pressureOld)(x1 + 1, x2, x3 - 1) - pressureHere) + ((*pressureOld)(x1 - 1, x2, x3 + 1) - pressureHere))) // + ((((*pressureOld)(x1, x2 + 1, x3 + 1) - pressureHere) + ((*pressureOld)(x1, x2 - 1, x3 - 1) - pressureHere)) + (((*pressureOld)(x1, x2 + 1, x3 - 1) - pressureHere) + ((*pressureOld)(x1, x2 - 1, x3 + 1) - pressureHere))) // ); - //LaplaceP += WEIGTH[DIR_00P] * ( + //LaplaceP += WEIGTH[d00P] * ( // (((*pressureOld)(x1 + 1, x2, x3) - pressureHere) + ((*pressureOld)(x1, x2-1, x3) - pressureHere)) // + (((*pressureOld)(x1, x2 + 1, x3) - pressureHere) + ((*pressureOld)(x1, x2 - 1, x3) - pressureHere)) // + (((*pressureOld)(x1, x2, x3 + 1) - pressureHere) + ((*pressureOld)(x1, x2, x3 - 1) - pressureHere)) @@ -3523,16 +3523,16 @@ void MultiphaseScaleDistributionLBMKernel::calculate(int step) //} //Viscosity increase by phase field residuum - //real errPhi = (((1.0 - phi[DIR_000]) * (phi[DIR_000]) * oneOverInterfaceScale)- denom); + //real errPhi = (((1.0 - phi[d000]) * (phi[d000]) * oneOverInterfaceScale)- denom); //real limVis = 0.01;// 0.0000001 * 10;//0.01; // collFactorM =collFactorM/(c1o1+limVis*(errPhi*errPhi)*collFactorM); // collFactorM = (collFactorM < 1.8) ? 1.8 : collFactorM; //errPhi = errPhi * errPhi* errPhi * errPhi * errPhi * errPhi; //collFactorM = collFactorM + (1.8 - collFactorM) * errPhi / (errPhi + limVis); - //3.0 * ((WEIGTH[DIR_PPP] * (((phi2[DIR_PPP] - phi2[DIR_MMM]) - (phi2[DIR_PMM] - phi2[DIR_MPP])) + ((phi2[DIR_PMP] - phi2[DIR_MPM]) - (phi2[DIR_PPM] - phi2[DIR_MMP]))) - //+WEIGTH[DIR_PP0] * (((phi2[DIR_P0P] - phi2[DIR_M0M]) - (phi2[DIR_P0M] - phi2[DIR_M0P])) + ((phi2[DIR_0MP] - phi2[DIR_0PM]) + (phi2[DIR_0PP] - phi2[DIR_0MM])))) + - //+WEIGTH[DIR_0P0] * (phi2[DIR_00P] - phi2[DIR_00M])); + //3.0 * ((WEIGTH[dPPP] * (((phi2[dPPP] - phi2[dMMM]) - (phi2[dPMM] - phi2[dMPP])) + ((phi2[dPMP] - phi2[dMPM]) - (phi2[dPPM] - phi2[dMMP]))) + //+WEIGTH[dPP0] * (((phi2[dP0P] - phi2[dM0M]) - (phi2[dP0M] - phi2[dM0P])) + ((phi2[d0MP] - phi2[d0PM]) + (phi2[d0PP] - phi2[d0MM])))) + + //+WEIGTH[d0P0] * (phi2[d00P] - phi2[d00M])); @@ -3546,34 +3546,34 @@ void MultiphaseScaleDistributionLBMKernel::calculate(int step) //real pBefore = ((((((mfaaa + mfccc) + (mfaac + mfcca)) + ((mfcac + mfaca) + (mfcaa + mfacc))) // + (((mfaab + mfccb) + (mfacb + mfcab)) + ((mfaba + mfcbc) + (mfabc + mfcba)) + ((mfbaa + mfbcc) + (mfbac + mfbca)))) // + ((mfabb + mfcbb) + (mfbab + mfbcb) + (mfbba + mfbbc))) + mfbbb) * c1o3; - //pBefore = -c1o3 * (-1.0e-10)/((rhoL + phi[DIR_000] * (rhoH - rhoL) / (phiH - phiL)) ); + //pBefore = -c1o3 * (-1.0e-10)/((rhoL + phi[d000] * (rhoH - rhoL) / (phiH - phiL)) ); ////if (vvx * vvx + vvy * vvy + vvz * vvz > 1.0e-100) { - // mfabb -= pBefore * c2o9 * ((rhoL + phi[DIR_000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[DIR_P00] * (rhoH - rhoL) / (phiH - phiL))); - // mfbab -= pBefore * c2o9 * ((rhoL + phi[DIR_000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[DIR_0P0] * (rhoH - rhoL) / (phiH - phiL))); - // mfbba -= pBefore * c2o9 * ((rhoL + phi[DIR_000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[DIR_00P] * (rhoH - rhoL) / (phiH - phiL))); - // mfaab -= pBefore * c1o18 * ((rhoL + phi[DIR_000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[DIR_PP0] * (rhoH - rhoL) / (phiH - phiL))); - // mfcab -= pBefore * c1o18 * ((rhoL + phi[DIR_000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[DIR_MP0] * (rhoH - rhoL) / (phiH - phiL))); - // mfaba -= pBefore * c1o18 * ((rhoL + phi[DIR_000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[DIR_P0P] * (rhoH - rhoL) / (phiH - phiL))); - // mfcba -= pBefore * c1o18 * ((rhoL + phi[DIR_000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[DIR_M0P] * (rhoH - rhoL) / (phiH - phiL))); - // mfbaa -= pBefore * c1o18 * ((rhoL + phi[DIR_000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[DIR_0PP] * (rhoH - rhoL) / (phiH - phiL))); - // mfbca -= pBefore * c1o18 * ((rhoL + phi[DIR_000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[DIR_0MP] * (rhoH - rhoL) / (phiH - phiL))); - // mfaaa -= pBefore * c1o72 * ((rhoL + phi[DIR_000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[DIR_PPP] * (rhoH - rhoL) / (phiH - phiL))); - // mfcaa -= pBefore * c1o72 * ((rhoL + phi[DIR_000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[DIR_MPP] * (rhoH - rhoL) / (phiH - phiL))); - // mfaca -= pBefore * c1o72 * ((rhoL + phi[DIR_000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[DIR_PMP] * (rhoH - rhoL) / (phiH - phiL))); - // mfcca -= pBefore * c1o72 * ((rhoL + phi[DIR_000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[DIR_MMP] * (rhoH - rhoL) / (phiH - phiL))); - // mfcbb -= pBefore * c2o9 * ((rhoL + phi[DIR_000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[DIR_M00] * (rhoH - rhoL) / (phiH - phiL))); - // mfbcb -= pBefore * c2o9 * ((rhoL + phi[DIR_000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[DIR_0M0] * (rhoH - rhoL) / (phiH - phiL))); - // mfbbc -= pBefore * c2o9 * ((rhoL + phi[DIR_000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[DIR_00M] * (rhoH - rhoL) / (phiH - phiL))); - // mfccb -= pBefore * c1o18 * ((rhoL + phi[DIR_000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[DIR_MM0] * (rhoH - rhoL) / (phiH - phiL))); - // mfacb -= pBefore * c1o18 * ((rhoL + phi[DIR_000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[DIR_PM0] * (rhoH - rhoL) / (phiH - phiL))); - // mfcbc -= pBefore * c1o18 * ((rhoL + phi[DIR_000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[DIR_M0M] * (rhoH - rhoL) / (phiH - phiL))); - // mfabc -= pBefore * c1o18 * ((rhoL + phi[DIR_000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[DIR_P0M] * (rhoH - rhoL) / (phiH - phiL))); - // mfbcc -= pBefore * c1o18 * ((rhoL + phi[DIR_000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[DIR_0MM] * (rhoH - rhoL) / (phiH - phiL))); - // mfbac -= pBefore * c1o18 * ((rhoL + phi[DIR_000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[DIR_0PM] * (rhoH - rhoL) / (phiH - phiL))); - // mfccc -= pBefore * c1o72 * ((rhoL + phi[DIR_000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[DIR_MMM] * (rhoH - rhoL) / (phiH - phiL))); - // mfacc -= pBefore * c1o72 * ((rhoL + phi[DIR_000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[DIR_PMM] * (rhoH - rhoL) / (phiH - phiL))); - // mfcac -= pBefore * c1o72 * ((rhoL + phi[DIR_000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[DIR_MPM] * (rhoH - rhoL) / (phiH - phiL))); - // mfaac -= pBefore * c1o72 * ((rhoL + phi[DIR_000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[DIR_PPM] * (rhoH - rhoL) / (phiH - phiL))); + // mfabb -= pBefore * c2o9 * ((rhoL + phi[d000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[dP00] * (rhoH - rhoL) / (phiH - phiL))); + // mfbab -= pBefore * c2o9 * ((rhoL + phi[d000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[d0P0] * (rhoH - rhoL) / (phiH - phiL))); + // mfbba -= pBefore * c2o9 * ((rhoL + phi[d000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[d00P] * (rhoH - rhoL) / (phiH - phiL))); + // mfaab -= pBefore * c1o18 * ((rhoL + phi[d000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[dPP0] * (rhoH - rhoL) / (phiH - phiL))); + // mfcab -= pBefore * c1o18 * ((rhoL + phi[d000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[dMP0] * (rhoH - rhoL) / (phiH - phiL))); + // mfaba -= pBefore * c1o18 * ((rhoL + phi[d000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[dP0P] * (rhoH - rhoL) / (phiH - phiL))); + // mfcba -= pBefore * c1o18 * ((rhoL + phi[d000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[dM0P] * (rhoH - rhoL) / (phiH - phiL))); + // mfbaa -= pBefore * c1o18 * ((rhoL + phi[d000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[d0PP] * (rhoH - rhoL) / (phiH - phiL))); + // mfbca -= pBefore * c1o18 * ((rhoL + phi[d000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[d0MP] * (rhoH - rhoL) / (phiH - phiL))); + // mfaaa -= pBefore * c1o72 * ((rhoL + phi[d000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[dPPP] * (rhoH - rhoL) / (phiH - phiL))); + // mfcaa -= pBefore * c1o72 * ((rhoL + phi[d000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[dMPP] * (rhoH - rhoL) / (phiH - phiL))); + // mfaca -= pBefore * c1o72 * ((rhoL + phi[d000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[dPMP] * (rhoH - rhoL) / (phiH - phiL))); + // mfcca -= pBefore * c1o72 * ((rhoL + phi[d000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[dMMP] * (rhoH - rhoL) / (phiH - phiL))); + // mfcbb -= pBefore * c2o9 * ((rhoL + phi[d000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[dM00] * (rhoH - rhoL) / (phiH - phiL))); + // mfbcb -= pBefore * c2o9 * ((rhoL + phi[d000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[d0M0] * (rhoH - rhoL) / (phiH - phiL))); + // mfbbc -= pBefore * c2o9 * ((rhoL + phi[d000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[d00M] * (rhoH - rhoL) / (phiH - phiL))); + // mfccb -= pBefore * c1o18 * ((rhoL + phi[d000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[dMM0] * (rhoH - rhoL) / (phiH - phiL))); + // mfacb -= pBefore * c1o18 * ((rhoL + phi[d000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[dPM0] * (rhoH - rhoL) / (phiH - phiL))); + // mfcbc -= pBefore * c1o18 * ((rhoL + phi[d000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[dM0M] * (rhoH - rhoL) / (phiH - phiL))); + // mfabc -= pBefore * c1o18 * ((rhoL + phi[d000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[dP0M] * (rhoH - rhoL) / (phiH - phiL))); + // mfbcc -= pBefore * c1o18 * ((rhoL + phi[d000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[d0MM] * (rhoH - rhoL) / (phiH - phiL))); + // mfbac -= pBefore * c1o18 * ((rhoL + phi[d000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[d0PM] * (rhoH - rhoL) / (phiH - phiL))); + // mfccc -= pBefore * c1o72 * ((rhoL + phi[d000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[dMMM] * (rhoH - rhoL) / (phiH - phiL))); + // mfacc -= pBefore * c1o72 * ((rhoL + phi[d000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[dPMM] * (rhoH - rhoL) / (phiH - phiL))); + // mfcac -= pBefore * c1o72 * ((rhoL + phi[d000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[dMPM] * (rhoH - rhoL) / (phiH - phiL))); + // mfaac -= pBefore * c1o72 * ((rhoL + phi[d000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[dPPM] * (rhoH - rhoL) / (phiH - phiL))); // mfbbb -= pBefore * 8.0 / 9.0; //} @@ -3583,7 +3583,7 @@ void MultiphaseScaleDistributionLBMKernel::calculate(int step) // + (((mfaab + mfccb) + (mfacb + mfcab)) + ((mfaba + mfcbc) + (mfabc + mfcba)) + ((mfbaa + mfbcc) + (mfbac + mfbca)))) // + ((mfabb + mfcbb) + (mfbab + mfbcb) + (mfbba + mfbbc))) + mfbbb) * c1o3; - //rho = rhoH + rhoToPhi * ((phi[DIR_000] - phiH)+fabs(pStarStart)*0); //Incompressible + //rho = rhoH + rhoToPhi * ((phi[d000] - phiH)+fabs(pStarStart)*0); //Incompressible muRho = rho; @@ -3626,9 +3626,9 @@ void MultiphaseScaleDistributionLBMKernel::calculate(int step) //forcingX1 = (-pStar * dX1_phi * rhoToPhi / rho + pStar * dX1_rhoInv * rho) *c1o2; //forcingX2 = (-pStar * dX2_phi * rhoToPhi / rho + pStar * dX2_rhoInv * rho) *c1o2; //forcingX3 = (-pStar * dX3_phi * rhoToPhi / rho + pStar * dX3_rhoInv * rho) *c1o2; - //real FdX1_phi = normX1 * (1.0 - phi[DIR_000]) * (phi[DIR_000]) * oneOverInterfaceScale; - //real FdX2_phi = normX2 * (1.0 - phi[DIR_000]) * (phi[DIR_000]) * oneOverInterfaceScale; - //real FdX3_phi = normX3 * (1.0 - phi[DIR_000]) * (phi[DIR_000]) * oneOverInterfaceScale; + //real FdX1_phi = normX1 * (1.0 - phi[d000]) * (phi[d000]) * oneOverInterfaceScale; + //real FdX2_phi = normX2 * (1.0 - phi[d000]) * (phi[d000]) * oneOverInterfaceScale; + //real FdX3_phi = normX3 * (1.0 - phi[d000]) * (phi[d000]) * oneOverInterfaceScale; //forcingX1 = (-pStar * dX1_phi * rhoToPhi / rho ) ; @@ -3638,7 +3638,7 @@ void MultiphaseScaleDistributionLBMKernel::calculate(int step) //forcingX1 = (pStar * dRhoInvX* rho *c3o1) ; //forcingX2 = (pStar * dRhoInvY* rho *c3o1) ; //forcingX3 = (pStar * dRhoInvZ* rho *c3o1) ; - //if (phi[DIR_000] > 0.1 && phi[DIR_000] < 0.9) std::cout << phi[DIR_000] << " " << dX1_phi * rhoToPhi / rho << " " << dRhoInvX * rho *3<< std::endl; + //if (phi[d000] > 0.1 && phi[d000] < 0.9) std::cout << phi[d000] << " " << dX1_phi * rhoToPhi / rho << " " << dRhoInvX * rho *3<< std::endl; //real forcingX1ALTERNAT = ( pStar * dX1_rhoInv * rho) ; //real forcingX2ALTERNAT = ( pStar * dX2_rhoInv * rho) ; //real forcingX3ALTERNAT = ( pStar * dX3_rhoInv * rho) ; @@ -3647,22 +3647,22 @@ void MultiphaseScaleDistributionLBMKernel::calculate(int step) //forcingX2 = (fabs(vvy + c1o2 * forcingX2) < fabs(vvy + c1o2 * forcingX2ALTERNAT)) ? forcingX2 : forcingX2ALTERNAT; //forcingX3 = (fabs(vvz + c1o2 * forcingX3) < fabs(vvz + c1o2 * forcingX3ALTERNAT)) ? forcingX3 : forcingX3ALTERNAT; - // forcingX1 = -pStar * rhoToPhi / rho * normX1 * (1.0 - phi[DIR_000]) * (phi[DIR_000]) * oneOverInterfaceScale; - // forcingX2 = -pStar * rhoToPhi / rho * normX2 * (1.0 - phi[DIR_000]) * (phi[DIR_000]) * oneOverInterfaceScale; - // forcingX3 = -pStar * rhoToPhi / rho * normX3 * (1.0 - phi[DIR_000]) * (phi[DIR_000]) * oneOverInterfaceScale; + // forcingX1 = -pStar * rhoToPhi / rho * normX1 * (1.0 - phi[d000]) * (phi[d000]) * oneOverInterfaceScale; + // forcingX2 = -pStar * rhoToPhi / rho * normX2 * (1.0 - phi[d000]) * (phi[d000]) * oneOverInterfaceScale; + // forcingX3 = -pStar * rhoToPhi / rho * normX3 * (1.0 - phi[d000]) * (phi[d000]) * oneOverInterfaceScale; - //forcingX1 = (-pStar * dX1_phi * rhoToPhi / rho *(c1o1- phi[DIR_000]) + pStar * dX1_rhoInv * rho*(phi[DIR_000])); - //forcingX2 = (-pStar * dX2_phi * rhoToPhi / rho *(c1o1- phi[DIR_000]) + pStar * dX2_rhoInv * rho*(phi[DIR_000])); - //forcingX3 = (-pStar * dX3_phi * rhoToPhi / rho *(c1o1- phi[DIR_000]) + pStar * dX3_rhoInv * rho*(phi[DIR_000])); - //if (phi[DIR_000] > 0.3 && phi[DIR_000] < 0.7) + //forcingX1 = (-pStar * dX1_phi * rhoToPhi / rho *(c1o1- phi[d000]) + pStar * dX1_rhoInv * rho*(phi[d000])); + //forcingX2 = (-pStar * dX2_phi * rhoToPhi / rho *(c1o1- phi[d000]) + pStar * dX2_rhoInv * rho*(phi[d000])); + //forcingX3 = (-pStar * dX3_phi * rhoToPhi / rho *(c1o1- phi[d000]) + pStar * dX3_rhoInv * rho*(phi[d000])); + //if (phi[d000] > 0.3 && phi[d000] < 0.7) //{ // int test = 1; - // std::cout << phi[DIR_000] <<" "<< dX1_phi <<" "<< normX1 * (1.0 - phi[DIR_000]) * (phi[DIR_000]) * oneOverInterfaceScale<<" "<< normX1 * (1.0 - phi[DIR_000]) * (phi[DIR_000]) * oneOverInterfaceScale/ dX1_phi<< std::endl; + // std::cout << phi[d000] <<" "<< dX1_phi <<" "<< normX1 * (1.0 - phi[d000]) * (phi[d000]) * oneOverInterfaceScale<<" "<< normX1 * (1.0 - phi[d000]) * (phi[d000]) * oneOverInterfaceScale/ dX1_phi<< std::endl; //} - //real scaleGrad = c2o1 * phi[DIR_000] * (1.0 - phi[DIR_000]) / ((phi[DIR_000] * phi[DIR_000] + (1.0 - phi[DIR_000]) * (1.0 - phi[DIR_000])) * (phi[DIR_000] * phi[DIR_000] + (1.0 - phi[DIR_000]) * (1.0 - phi[DIR_000]))); + //real scaleGrad = c2o1 * phi[d000] * (1.0 - phi[d000]) / ((phi[d000] * phi[d000] + (1.0 - phi[d000]) * (1.0 - phi[d000])) * (phi[d000] * phi[d000] + (1.0 - phi[d000]) * (1.0 - phi[d000]))); //dX1_phi *= scaleGrad; //dX2_phi *= scaleGrad; //dX3_phi *= scaleGrad; @@ -3679,9 +3679,9 @@ void MultiphaseScaleDistributionLBMKernel::calculate(int step) //forcingX3 += mu * dX3_phi/rho; //real forcingBIAS = 0.5; - // forcingX1 += muForcingX1.Eval() / rho;//*phi[DIR_000]; - // forcingX2 += -5.0e-7;// *phi[DIR_000]; // muForcingX2.Eval() / rho - 5.0e-7 * phi[DIR_000] * 0;// * phi[DIR_000]; - // forcingX3 += muForcingX3.Eval() / rho;// * phi[DIR_000]; + // forcingX1 += muForcingX1.Eval() / rho;//*phi[d000]; + // forcingX2 += -5.0e-7;// *phi[d000]; // muForcingX2.Eval() / rho - 5.0e-7 * phi[d000] * 0;// * phi[d000]; + // forcingX3 += muForcingX3.Eval() / rho;// * phi[d000]; // //19.08.2022 //vvx += vvxh / rho * c1o2; @@ -3757,15 +3757,15 @@ void MultiphaseScaleDistributionLBMKernel::calculate(int step) //////////////////////////////////////////////////////////////////////////////////// real wadjust; - //real qudricLimit = 0.01 / (c1o1 + 1.0e5 * phi[DIR_000] * (c1o1 - phi[DIR_000])); //real qudricLimit = 0.01; - //real qudricLimit = (((*phaseField)(x1, x2, x3) > c1o2) && (normX1 * vvx + normX2 * vvy + normX3 * vvz < 0)) ? 0.01 / (c1o1 + 1.0e5 * phi[DIR_000] * (c1o1 - phi[DIR_000])) : 0.01; - //real qudricLimit = (((*phaseField)(x1, x2, x3) > c1o2)&& (normX1*vvx+normX2*vvy+normX3*vvz<0) ) ? 0.01 / (c1o1 + 1.0e5 * phi[DIR_000] * (c1o1 - phi[DIR_000])) : 0.01 ; + //real qudricLimit = 0.01 / (c1o1 + 1.0e5 * phi[d000] * (c1o1 - phi[d000])); //real qudricLimit = 0.01; + //real qudricLimit = (((*phaseField)(x1, x2, x3) > c1o2) && (normX1 * vvx + normX2 * vvy + normX3 * vvz < 0)) ? 0.01 / (c1o1 + 1.0e5 * phi[d000] * (c1o1 - phi[d000])) : 0.01; + //real qudricLimit = (((*phaseField)(x1, x2, x3) > c1o2)&& (normX1*vvx+normX2*vvy+normX3*vvz<0) ) ? 0.01 / (c1o1 + 1.0e5 * phi[d000] * (c1o1 - phi[d000])) : 0.01 ; real qudricLimit = 0.0001; /// (c1o1 + 1.0e3 * (dX1_phi * dX1_phi + dX2_phi * dX2_phi + dX3_phi * dX3_phi)); - //real qudricLimit = 0.01 / (c1o1 + 1.0e5 * phi[DIR_000] * (c1o1 - phi[DIR_000])) ; - //real qudricLimit = (((*phaseField)(x1, x2, x3) > c1o2) ) ? 0.01 / (c1o1 + 1.0e5 * phi[DIR_000] * (c1o1 - phi[DIR_000])) : 0.01 ; - //qudricLimit = (((*phaseField)(x1, x2, x3)-c1o2 ) * (normX1 * vvx + normX2 * vvy + normX3 * vvz) < 0) ? 0.01 / (c1o1 + 1.0e8 * phi[DIR_000] * (c1o1 - phi[DIR_000])) : 0.01; - // if (phi[DIR_000] > c1o2 && (*phaseFieldOld)(x1, x2, x3) <= c1o2) collFactorM = 1.8; + //real qudricLimit = 0.01 / (c1o1 + 1.0e5 * phi[d000] * (c1o1 - phi[d000])) ; + //real qudricLimit = (((*phaseField)(x1, x2, x3) > c1o2) ) ? 0.01 / (c1o1 + 1.0e5 * phi[d000] * (c1o1 - phi[d000])) : 0.01 ; + //qudricLimit = (((*phaseField)(x1, x2, x3)-c1o2 ) * (normX1 * vvx + normX2 * vvy + normX3 * vvz) < 0) ? 0.01 / (c1o1 + 1.0e8 * phi[d000] * (c1o1 - phi[d000])) : 0.01; + // if (phi[d000] > c1o2 && (*phaseFieldOld)(x1, x2, x3) <= c1o2) collFactorM = 1.8; //////////////////////////////////////////////////////////////////////////////////// //! - Chimera transform from well conditioned distributions to central moments as defined in Appendix J in \ref @@ -3907,8 +3907,8 @@ void MultiphaseScaleDistributionLBMKernel::calculate(int step) mxxPyyPzz -= mfaaa ;//12.03.21 shifted by mfaaa //mxxPyyPzz-=(mfaaa+mfaaaS)*c1o2;//12.03.21 shifted by mfaaa //dirty (04.04.2023) - //if (phi[DIR_000] > c1o2 &&(dX1_phi*vvx+dX2_phi*vvy+dX3_phi*vvz)<0) { - // //collFactorM = c1o1 / (c1o1 / collFactorM +1e10* fabsf(mxxPyyPzz)*(c1o1-fabsf(phi[DIR_000]))); + //if (phi[d000] > c1o2 &&(dX1_phi*vvx+dX2_phi*vvy+dX3_phi*vvz)<0) { + // //collFactorM = c1o1 / (c1o1 / collFactorM +1e10* fabsf(mxxPyyPzz)*(c1o1-fabsf(phi[d000]))); // collFactorM = c1o1 / (c1o1 / collFactorM - 1e15*(dX1_phi * vvx + dX2_phi * vvy + dX3_phi * vvz)* fabsf(mxxPyyPzz) ); // collFactorM = (collFactorM < 1.8) ? 1.8 : collFactorM; // OxyyPxzz = 8.0 * (collFactorM - 2.0) * (OxxPyyPzz * (3.0 * collFactorM - 1.0) - 5.0 * collFactorM) / (8.0 * (5.0 - 2.0 * collFactorM) * collFactorM + OxxPyyPzz * (8.0 + collFactorM * (9.0 * collFactorM - 26.0))); @@ -3937,11 +3937,11 @@ void MultiphaseScaleDistributionLBMKernel::calculate(int step) real Dxy = -c3o1 * collFactorM * mfbba; real Dxz = -c3o1 * collFactorM * mfbab; real Dyz = -c3o1 * collFactorM * mfabb; - // if (phi[DIR_000] > phiLim) - if ((phi[DIR_000] > phiLim) && ((phi[DIR_P00] <= phiLim) || (phi[DIR_M00] <= phiLim) || (phi[DIR_00P] <= phiLim) || (phi[DIR_00M] <= phiLim) || (phi[DIR_0M0] <= phiLim) || (phi[DIR_0P0] <= phiLim) || (phi[DIR_PP0] <= phiLim) || (phi[DIR_PM0] <= phiLim) || (phi[DIR_P0P] <= phiLim) || - (phi[DIR_P0M] <= phiLim) || (phi[DIR_MP0] <= phiLim) || (phi[DIR_MM0] <= phiLim) || (phi[DIR_M0P] <= phiLim) || (phi[DIR_M0M] <= phiLim) || (phi[DIR_0PM] <= phiLim) || (phi[DIR_0MM] <= phiLim) || (phi[DIR_0PP] <= phiLim) || (phi[DIR_0MP] <= phiLim) || - (phi[DIR_PPP] <= phiLim) || (phi[DIR_PMP] <= phiLim) || (phi[DIR_MPP] <= phiLim) || (phi[DIR_MMP] <= phiLim) || - (phi[DIR_PPM] <= phiLim) || (phi[DIR_PMM] <= phiLim) || (phi[DIR_MPM] <= phiLim) || (phi[DIR_MMM] <= phiLim))) { + // if (phi[d000] > phiLim) + if ((phi[d000] > phiLim) && ((phi[dP00] <= phiLim) || (phi[dM00] <= phiLim) || (phi[d00P] <= phiLim) || (phi[d00M] <= phiLim) || (phi[d0M0] <= phiLim) || (phi[d0P0] <= phiLim) || (phi[dPP0] <= phiLim) || (phi[dPM0] <= phiLim) || (phi[dP0P] <= phiLim) || + (phi[dP0M] <= phiLim) || (phi[dMP0] <= phiLim) || (phi[dMM0] <= phiLim) || (phi[dM0P] <= phiLim) || (phi[dM0M] <= phiLim) || (phi[d0PM] <= phiLim) || (phi[d0MM] <= phiLim) || (phi[d0PP] <= phiLim) || (phi[d0MP] <= phiLim) || + (phi[dPPP] <= phiLim) || (phi[dPMP] <= phiLim) || (phi[dMPP] <= phiLim) || (phi[dMMP] <= phiLim) || + (phi[dPPM] <= phiLim) || (phi[dPMM] <= phiLim) || (phi[dMPM] <= phiLim) || (phi[dMMM] <= phiLim))) { // { /// QR eddyviscosity: @@ -3961,8 +3961,8 @@ void MultiphaseScaleDistributionLBMKernel::calculate(int step) - 2.0 * OxxPyyPzz * OxxPyyPzz * (2.0 + 9.0 * collFactorM * (collFactorM - 2.0))) / (3.0 * (collFactorM - OxxPyyPzz) * (OxxPyyPzz * (2.0 + 3.0 * collFactorM) - 8.0 * collFactorM)); } - //if ((phi[DIR_000] > c1o2)&& (normX1 * vvx + normX2 * vvy + normX3 * vvz < 0)){//&& ((*phaseFieldOld)(x1, x2, x3) <= c1o2)) { - // if ((phi[DIR_000] > 0.01) && (phi[DIR_000]<0.99)){ + //if ((phi[d000] > c1o2)&& (normX1 * vvx + normX2 * vvy + normX3 * vvz < 0)){//&& ((*phaseFieldOld)(x1, x2, x3) <= c1o2)) { + // if ((phi[d000] > 0.01) && (phi[d000]<0.99)){ // //std::cout << "new node\n"; // ///QR eddyviscosity: // real eddyR = -(Dxy * Dxy + Dxz * Dxz + c1o3 * dxux * dxux) * (dxux)-(Dxy * Dxy + Dyz * Dyz + c1o3 * dyuy * dyuy) * dyuy - (Dxz * Dxz + Dyz * Dyz + c1o3 * dzuz * dzuz) * dzuz - c2o1 * Dxy * Dxz * Dyz; @@ -3986,14 +3986,14 @@ void MultiphaseScaleDistributionLBMKernel::calculate(int step) /////// // non Newtonian fluid collision factor - //if (phi[DIR_000] > phiLim) { + //if (phi[d000] > phiLim) { // real shearRate = sqrt(c2o1 * (dxux * dxux + dyuy * dyuy + dzuz * dzuz) + Dxy * Dxy + Dxz * Dxz + Dyz * Dyz); // collFactorM = Rheology::getBinghamCollFactor(collFactorM, shearRate, c1o1); // collFactorM = (collFactorM < c1o1) ? c1o1 : collFactorM; //} //low viscouse non Newtonian fluid - if (phi[DIR_000] > phiLim) { + if (phi[d000] > phiLim) { real shearRate = sqrt(c2o1 * (dxux * dxux + dyuy * dyuy + dzuz * dzuz) + Dxy * Dxy + Dxz * Dxz + Dyz * Dyz); collFactorM = Rheology::getBinghamCollFactor(collFactorM, shearRate, c1o1); collFactorM = (collFactorM < c1o12) ? c1o12 : collFactorM; @@ -4039,7 +4039,7 @@ void MultiphaseScaleDistributionLBMKernel::calculate(int step) mfbab += collFactorM * (-mfbab); mfbba += collFactorM * (-mfbba); -// mfhaaa = (phi[DIR_000] < c1o2) ? mfaaa * rhoL / rhoH : mfaaa * rhoL / rhoH; +// mfhaaa = (phi[d000] < c1o2) ? mfaaa * rhoL / rhoH : mfaaa * rhoL / rhoH; mxxMyyh += collFactorMInv * (-mxxMyyh) - 3. * (1. - c1o2 * collFactorMInv) * (vx2 * dxux - vy2 * dyuy); mxxMzzh += collFactorMInv * (-mxxMzzh) - 3. * (1. - c1o2 * collFactorMInv) * (vx2 * dxux - vz2 * dzuz); @@ -4319,12 +4319,12 @@ void MultiphaseScaleDistributionLBMKernel::calculate(int step) //#endif if (UbMath::isNaN(rho_post) || UbMath::isInfinity(rho_post)) - UB_THROW(UbException(UB_EXARGS, "rho_post is not a number (nan or -1.#IND) or infinity number -1.#INF, node=" + UbSystem::toString(x1) + "," + UbSystem::toString(x2) + "," + UbSystem::toString(x3) + ",phi=" + UbSystem::toString(phi[DIR_000]))); + UB_THROW(UbException(UB_EXARGS, "rho_post is not a number (nan or -1.#IND) or infinity number -1.#INF, node=" + UbSystem::toString(x1) + "," + UbSystem::toString(x2) + "," + UbSystem::toString(x3) + ",phi=" + UbSystem::toString(phi[d000]))); ////////////////////////////////////////////////////////////////////////// //write distribution ////////////////////////////////////////////////////////////////////////// - // if (phi[DIR_000] < c1o2) { + // if (phi[d000] < c1o2) { (*this->localDistributionsF)(D3Q27System::ET_E, x1, x2, x3) = mfabb;//* rho * c1o3; (*this->localDistributionsF)(D3Q27System::ET_N, x1, x2, x3) = mfbab;//* rho * c1o3; (*this->localDistributionsF)(D3Q27System::ET_T, x1, x2, x3) = mfbba;//* rho * c1o3; @@ -4749,33 +4749,33 @@ void MultiphaseScaleDistributionLBMKernel::calculate(int step) // int x2p = x2 + 1; // int x3p = x3 + 1; // findNeighbors(phaseField, x1, x2, x3); - // if ((phi[DIR_000] > c1o2) && ( - // (phi[DIR_P00] <= c1o2) || - // (phi[DIR_M00] <= c1o2) || - // (phi[DIR_00P] <= c1o2) || - // (phi[DIR_00M] <= c1o2) || - // (phi[DIR_0M0] <= c1o2) || - // (phi[DIR_0P0] <= c1o2) || - // (phi[DIR_PP0] <= c1o2) || - // (phi[DIR_PM0] <= c1o2) || - // (phi[DIR_P0P] <= c1o2) || - // (phi[DIR_P0M] <= c1o2) || - // (phi[DIR_MP0] <= c1o2) || - // (phi[DIR_MM0] <= c1o2) || - // (phi[DIR_M0P] <= c1o2) || - // (phi[DIR_M0M] <= c1o2) || - // (phi[DIR_0PM] <= c1o2) || - // (phi[DIR_0MM] <= c1o2) || - // (phi[DIR_0PP] <= c1o2) || - // (phi[DIR_0MP] <= c1o2) || - // (phi[DIR_PPP] <= c1o2) || - // (phi[DIR_PMP] <= c1o2) || - // (phi[DIR_MPP] <= c1o2) || - // (phi[DIR_MMP] <= c1o2) || - // (phi[DIR_PPM] <= c1o2) || - // (phi[DIR_PMM] <= c1o2) || - // (phi[DIR_MPM] <= c1o2) || - // (phi[DIR_MMM] <= c1o2) + // if ((phi[d000] > c1o2) && ( + // (phi[dP00] <= c1o2) || + // (phi[dM00] <= c1o2) || + // (phi[d00P] <= c1o2) || + // (phi[d00M] <= c1o2) || + // (phi[d0M0] <= c1o2) || + // (phi[d0P0] <= c1o2) || + // (phi[dPP0] <= c1o2) || + // (phi[dPM0] <= c1o2) || + // (phi[dP0P] <= c1o2) || + // (phi[dP0M] <= c1o2) || + // (phi[dMP0] <= c1o2) || + // (phi[dMM0] <= c1o2) || + // (phi[dM0P] <= c1o2) || + // (phi[dM0M] <= c1o2) || + // (phi[d0PM] <= c1o2) || + // (phi[d0MM] <= c1o2) || + // (phi[d0PP] <= c1o2) || + // (phi[d0MP] <= c1o2) || + // (phi[dPPP] <= c1o2) || + // (phi[dPMP] <= c1o2) || + // (phi[dMPP] <= c1o2) || + // (phi[dMMP] <= c1o2) || + // (phi[dPPM] <= c1o2) || + // (phi[dPMM] <= c1o2) || + // (phi[dMPM] <= c1o2) || + // (phi[dMMM] <= c1o2) // )) { // //real mfabb = (*this->localDistributionsF)(D3Q27System::ET_E, x1, x2, x3);//* rho * c1o3; // //real mfbab = (*this->localDistributionsF)(D3Q27System::ET_N, x1, x2, x3);//* rho * c1o3; @@ -4818,47 +4818,47 @@ void MultiphaseScaleDistributionLBMKernel::calculate(int step) // real ftemp= D3Q27System::getCompFeqForDirection(D3Q27System::INVDIR[fdir], rhoG, vx, vy, vz) + D3Q27System::getCompFeqForDirection(fdir, rhoG, vx, vy, vz); // real fBB; // fBB=distribution->getDistributionInvForDirection( x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir],fdir); - // distribution->setDistributionInvForDirection(ftemp - ff[fdir], x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir], fdir); - // distribution->setDistributionForDirection(fBB-c6o1*D3Q27System::WEIGTH[fdir] * (-vx * D3Q27System::DX1[fdir] - vy * D3Q27System::DX2[fdir] - vz * D3Q27System::DX3[fdir]), x1, x2, x3, fdir); + // distribution->setPreCollisionDistributionForDirection(ftemp - ff[fdir], x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir], fdir); + // distribution->setPostCollisionDistributionForDirection(fBB-c6o1*D3Q27System::WEIGTH[fdir] * (-vx * D3Q27System::DX1[fdir] - vy * D3Q27System::DX2[fdir] - vz * D3Q27System::DX3[fdir]), x1, x2, x3, fdir); // } // } - // //if ((phi[DIR_P00] <= c1o2)) { + // //if ((phi[dP00] <= c1o2)) { // // real rhoG = (*rhoNode)(x1 + 1, x2, x3); // // real ftemp = D3Q27System::getCompFeqForDirection(W, rhoG, vx,vy,vz )+ D3Q27System::getCompFeqForDirection(E, rhoG, vx, vy, vz); // // real fBB = (*this->localDistributionsF)(D3Q27System::ET_E, x1 + 1, x2, x3); // // (*this->localDistributionsF)(D3Q27System::ET_E, x1+1, x2, x3)=ftemp-mfcbb; // // (*this->nonLocalDistributionsF)(D3Q27System::ET_W, x1p, x2, x3)=fBB-c6o1*c2o27*(-vx); // //} - // //if ((phi[DIR_M00] <= c1o2)) { + // //if ((phi[dM00] <= c1o2)) { // // real rhoG = (*rhoNode)(x1 - 1, x2, x3); // // real ftemp = D3Q27System::getCompFeqForDirection(E, rhoG, vx, vy, vz)+ D3Q27System::getCompFeqForDirection(W, rhoG, vx, vy, vz); // // real fBB = (*this->nonLocalDistributionsF)(D3Q27System::ET_W, x1p-1, x2, x3); // // (*this->nonLocalDistributionsF)(D3Q27System::ET_W, x1p - 1, x2, x3) = ftemp - mfabb; // // (*this->localDistributionsF)(D3Q27System::ET_E, x1, x2, x3) = fBB - c6o1 * c2o27 * ( vx); // //} - // //if ((phi[DIR_0P0] <= c1o2)) { + // //if ((phi[d0P0] <= c1o2)) { // // real rhoG = (*rhoNode)(x1, x2+1, x3); // // real ftemp = D3Q27System::getCompFeqForDirection(S, rhoG, vx, vy, vz)+ D3Q27System::getCompFeqForDirection(N, rhoG, vx, vy, vz); // // real fBB = (*this->localDistributionsF)(D3Q27System::ET_N, x1, x2+1, x3); // // (*this->localDistributionsF)(D3Q27System::ET_N, x1, x2+1, x3) = ftemp - mfbcb; // // (*this->nonLocalDistributionsF)(D3Q27System::ET_S, x1, x2p, x3) = fBB - c6o1 * c2o27 * (-vy); // //} - // //if ((phi[DIR_0M0] <= c1o2)) { + // //if ((phi[d0M0] <= c1o2)) { // // real rhoG = (*rhoNode)(x1, x2 - 1, x3); // // real ftemp = D3Q27System::getCompFeqForDirection(N, rhoG, vx, vy, vz)+ D3Q27System::getCompFeqForDirection(S, rhoG, vx, vy, vz); // // real fBB = (*this->nonLocalDistributionsF)(D3Q27System::ET_S, x1, x2p-1, x3); // // (*this->nonLocalDistributionsF)(D3Q27System::ET_S, x1, x2p - 1, x3) = ftemp - mfbab; // // (*this->localDistributionsF)(D3Q27System::ET_N, x1, x2, x3) = fBB - c6o1 * c2o27 * ( vy); // //} - // //if ((phi[DIR_00P] <= c1o2)) { + // //if ((phi[d00P] <= c1o2)) { // // real rhoG = (*rhoNode)(x1, x2 , x3+1); // // real ftemp = D3Q27System::getCompFeqForDirection(B, rhoG, vx, vy, vz)+ D3Q27System::getCompFeqForDirection(T, rhoG, vx, vy, vz); // // real fBB = (*this->localDistributionsF)(D3Q27System::ET_T, x1, x2, x3+1); // // (*this->localDistributionsF)(D3Q27System::ET_T, x1, x2, x3+1) = ftemp - mfbbc; // // (*this->nonLocalDistributionsF)(D3Q27System::ET_B, x1, x2, x3p) = fBB - c6o1 * c2o27 * (-vz); // //} - // //if ((phi[DIR_00M] <= c1o2)) { + // //if ((phi[d00M] <= c1o2)) { // // real rhoG = (*rhoNode)(x1, x2, x3 - 1); // // real ftemp = D3Q27System::getCompFeqForDirection(T, rhoG, vx, vy, vz)+ D3Q27System::getCompFeqForDirection(B, rhoG, vx, vy, vz); // // real fBB = (*this->nonLocalDistributionsF)(D3Q27System::ET_B, x1, x2, x3p-1); @@ -4866,84 +4866,84 @@ void MultiphaseScaleDistributionLBMKernel::calculate(int step) // // (*this->localDistributionsF)(D3Q27System::ET_T, x1, x2, x3) = fBB - c6o1 * c2o27 * ( vz); // //} // // - // //if ((phi[DIR_PP0] <= c1o2)) { + // //if ((phi[dPP0] <= c1o2)) { // // real rhoG = (*rhoNode)(x1 + 1, x2+1, x3); // // real ftemp = D3Q27System::getCompFeqForDirection(SW, rhoG, vx, vy, vz)+ D3Q27System::getCompFeqForDirection(NE, rhoG, vx, vy, vz); // // real fBB = (*this->localDistributionsF)(D3Q27System::ET_NE, x1+1, x2+1, x3); // // (*this->localDistributionsF)(D3Q27System::ET_NE, x1 + 1, x2 + 1, x3) = ftemp - mfccb; // // (*this->nonLocalDistributionsF)(D3Q27System::ET_SW, x1p, x2p, x3) = fBB - c6o1 * c1o54 * (-vx-vy); // //} - // //if ((phi[DIR_MM0] <= c1o2)) { + // //if ((phi[dMM0] <= c1o2)) { // // real rhoG = (*rhoNode)(x1 - 1, x2 - 1, x3); // // real ftemp = D3Q27System::getCompFeqForDirection(NE, rhoG, vx, vy, vz)+ D3Q27System::getCompFeqForDirection(SW, rhoG, vx, vy, vz); // // real fBB = (*this->nonLocalDistributionsF)(D3Q27System::ET_SW, x1p-1, x2p-1, x3); // // (*this->nonLocalDistributionsF)(D3Q27System::ET_SW, x1p - 1, x2p - 1, x3) = ftemp - mfaab; // // (*this->localDistributionsF)(D3Q27System::ET_NE, x1, x2, x3) = fBB - c6o1 * c1o54 * ( vx + vy); // //} - // //if ((phi[DIR_MP0] <= c1o2)) { + // //if ((phi[dMP0] <= c1o2)) { // // real rhoG = (*rhoNode)(x1 - 1, x2 + 1, x3); // // real ftemp = D3Q27System::getCompFeqForDirection(SE, rhoG, vx, vy, vz)+ D3Q27System::getCompFeqForDirection(NW, rhoG, vx, vy, vz); // // real fBB = (*this->localDistributionsF)(D3Q27System::ET_NW, x1p-1, x2+1, x3); // // (*this->localDistributionsF)(D3Q27System::ET_NW, x1p - 1, x2 + 1, x3) = ftemp - mfacb; // // (*this->nonLocalDistributionsF)(D3Q27System::ET_SE, x1, x2p, x3) = fBB - c6o1 * c1o54 * ( vx - vy); // //} - // //if ((phi[DIR_PM0] <= c1o2)) { + // //if ((phi[dPM0] <= c1o2)) { // // real rhoG = (*rhoNode)(x1 + 1, x2 - 1, x3); // // real ftemp = D3Q27System::getCompFeqForDirection(NW, rhoG, vx, vy, vz)+ D3Q27System::getCompFeqForDirection(SE, rhoG, vx, vy, vz); // // real fBB = (*this->nonLocalDistributionsF)(D3Q27System::ET_SE, x1+1, x2p-1, x3); // // (*this->nonLocalDistributionsF)(D3Q27System::ET_SE, x1 + 1, x2p - 1, x3) = ftemp - mfcab; // // (*this->localDistributionsF)(D3Q27System::ET_NW, x1p, x2, x3) = fBB - c6o1 * c1o54 * (-vx + vy); // //} - // //if ((phi[DIR_P0P] <= c1o2)) { + // //if ((phi[dP0P] <= c1o2)) { // // real rhoG = (*rhoNode)(x1 + 1, x2 , x3+1); // // real ftemp = D3Q27System::getCompFeqForDirection(BW, rhoG, vx, vy, vz)+ D3Q27System::getCompFeqForDirection(TE, rhoG, vx, vy, vz); // // real fBB = (*this->localDistributionsF)(D3Q27System::ET_TE, x1+1, x2, x3+1); // // (*this->localDistributionsF)(D3Q27System::ET_TE, x1 + 1, x2, x3 + 1) = ftemp - mfcbc; // // (*this->nonLocalDistributionsF)(D3Q27System::ET_BW, x1p, x2, x3p) = fBB - c6o1 * c1o54 * (-vx - vz); // //} - // //if ((phi[DIR_M0P] <= c1o2)) { + // //if ((phi[dM0P] <= c1o2)) { // // real rhoG = (*rhoNode)(x1 - 1, x2, x3 + 1); // // real ftemp = D3Q27System::getCompFeqForDirection(BE, rhoG, vx, vy, vz)+ D3Q27System::getCompFeqForDirection(TW, rhoG, vx, vy, vz); // // real fBB = (*this->localDistributionsF)(D3Q27System::ET_TW, x1p-1, x2, x3+1); // // (*this->localDistributionsF)(D3Q27System::ET_TW, x1p - 1, x2, x3 + 1) = ftemp - mfabc; // // (*this->nonLocalDistributionsF)(D3Q27System::ET_BE, x1, x2, x3p) = fBB - c6o1 * c1o54 * ( vx - vz); // //} - // //if ((phi[DIR_P0M] <= c1o2)) { + // //if ((phi[dP0M] <= c1o2)) { // // real rhoG = (*rhoNode)(x1 + 1, x2, x3 - 1); // // real ftemp = D3Q27System::getCompFeqForDirection(TW, rhoG, vx, vy, vz)+ D3Q27System::getCompFeqForDirection(BE, rhoG, vx, vy, vz); // // real fBB = (*this->nonLocalDistributionsF)(D3Q27System::ET_BE, x1+1, x2, x3p-1); // // (*this->nonLocalDistributionsF)(D3Q27System::ET_BE, x1 + 1, x2, x3p - 1) = ftemp - mfcba; // // (*this->localDistributionsF)(D3Q27System::ET_TW, x1p, x2, x3) = fBB - c6o1 * c1o54 * (-vx + vz); // //} - // //if ((phi[DIR_M0M] <= c1o2)) { + // //if ((phi[dM0M] <= c1o2)) { // // real rhoG = (*rhoNode)(x1 - 1, x2, x3 - 1); // // real ftemp = D3Q27System::getCompFeqForDirection(TE, rhoG, vx, vy, vz)+ D3Q27System::getCompFeqForDirection(BW, rhoG, vx, vy, vz); // // real fBB = (*this->nonLocalDistributionsF)(D3Q27System::ET_BW, x1p-1, x2, x3p-1); // // (*this->nonLocalDistributionsF)(D3Q27System::ET_BW, x1p - 1, x2, x3p - 1) = ftemp - mfaba; // // (*this->localDistributionsF)(D3Q27System::ET_TE, x1, x2, x3) = fBB - c6o1 * c1o54 * ( vx + vz); // //} - // //if ((phi[DIR_0PP] <= c1o2)) { + // //if ((phi[d0PP] <= c1o2)) { // // real rhoG = (*rhoNode)(x1, x2+1, x3 + 1); // // real ftemp = D3Q27System::getCompFeqForDirection(BS, rhoG, vx, vy, vz)+ D3Q27System::getCompFeqForDirection(TN, rhoG, vx, vy, vz); // // real fBB = (*this->localDistributionsF)(D3Q27System::ET_TN, x1, x2+1, x3+1); // // (*this->localDistributionsF)(D3Q27System::ET_TN, x1, x2 + 1, x3 + 1) = ftemp - mfbcc; // // (*this->nonLocalDistributionsF)(D3Q27System::ET_BS, x1, x2p, x3p) = fBB - c6o1 * c1o54 * (-vy - vz); // //} - // //if ((phi[DIR_0MP] <= c1o2)) { + // //if ((phi[d0MP] <= c1o2)) { // // real rhoG = (*rhoNode)(x1, x2 - 1, x3 + 1); // // real ftemp = D3Q27System::getCompFeqForDirection(BN, rhoG, vx, vy, vz)+ D3Q27System::getCompFeqForDirection(TS, rhoG, vx, vy, vz); // // real fBB = (*this->localDistributionsF)(D3Q27System::ET_TS, x1, x2p-1, x3+1); // // (*this->localDistributionsF)(D3Q27System::ET_TS, x1, x2p - 1, x3 + 1) = ftemp - mfbac; // // (*this->nonLocalDistributionsF)(D3Q27System::ET_BN, x1, x2, x3p) = fBB - c6o1 * c1o54 * ( vy - vz); // //} - // //if ((phi[DIR_0PM] <= c1o2)) { + // //if ((phi[d0PM] <= c1o2)) { // // real rhoG = (*rhoNode)(x1, x2 + 1, x3 - 1); // // real ftemp = D3Q27System::getCompFeqForDirection(TS, rhoG, vx, vy, vz)+ D3Q27System::getCompFeqForDirection(BN, rhoG, vx, vy, vz); // // real fBB = (*this->nonLocalDistributionsF)(D3Q27System::ET_BN, x1, x2+1, x3p-1); // // (*this->nonLocalDistributionsF)(D3Q27System::ET_BN, x1, x2 + 1, x3p - 1) = ftemp - mfbca; // // (*this->localDistributionsF)(D3Q27System::ET_TS, x1, x2p, x3) = fBB - c6o1 * c1o54 * (-vy + vz); // //} - // //if ((phi[DIR_0MM] <= c1o2)) { + // //if ((phi[d0MM] <= c1o2)) { // // real rhoG = (*rhoNode)(x1, x2 - 1, x3 - 1); // // real ftemp = D3Q27System::getCompFeqForDirection(TN, rhoG, vx, vy, vz)+ D3Q27System::getCompFeqForDirection(BS, rhoG, vx, vy, vz); // // real fBB = (*this->nonLocalDistributionsF)(D3Q27System::ET_BS, x1, x2p-1, x3p-1); @@ -4951,56 +4951,56 @@ void MultiphaseScaleDistributionLBMKernel::calculate(int step) // // (*this->localDistributionsF)(D3Q27System::ET_TN, x1, x2, x3) = fBB - c6o1 * c1o54 * (-vy - vz); // //} - // //if ((phi[DIR_PPP] <= c1o2)) { + // //if ((phi[dPPP] <= c1o2)) { // // real rhoG = (*rhoNode)(x1+1, x2 + 1, x3 + 1); // // real ftemp = D3Q27System::getCompFeqForDirection(BSW, rhoG, vx, vy, vz)+ D3Q27System::getCompFeqForDirection(TNE, rhoG, vx, vy, vz); // // real fBB = (*this->localDistributionsF)(D3Q27System::ET_TNE, x1+1, x2+1, x3+1); // // (*this->localDistributionsF)(D3Q27System::ET_TNE, x1 + 1, x2 + 1, x3 + 1) = ftemp - mfccc; // // (*this->nonLocalDistributionsF)(D3Q27System::ET_BSW, x1p, x2p, x3p) = fBB - c6o1 * c1o216 * (-vx -vy - vz); // //} - // //if ((phi[DIR_MPP] <= c1o2)) { + // //if ((phi[dMPP] <= c1o2)) { // // real rhoG = (*rhoNode)(x1 - 1, x2 + 1, x3 + 1); // // real ftemp = D3Q27System::getCompFeqForDirection(BSE, rhoG, vx, vy, vz)+ D3Q27System::getCompFeqForDirection(TNW, rhoG, vx, vy, vz); // // real fBB = (*this->localDistributionsF)(D3Q27System::ET_TNW, x1p-1, x2+1, x3+1); // // (*this->localDistributionsF)(D3Q27System::ET_TNW, x1p - 1, x2 + 1, x3 + 1) = ftemp - mfacc; // // (*this->nonLocalDistributionsF)(D3Q27System::ET_BSE, x1, x2p, x3p) = fBB - c6o1 * c1o216 * ( vx - vy - vz); // //} - // //if ((phi[DIR_MMP] <= c1o2)) { + // //if ((phi[dMMP] <= c1o2)) { // // real rhoG = (*rhoNode)(x1 - 1, x2 - 1, x3 + 1); // // real ftemp = D3Q27System::getCompFeqForDirection(BNE, rhoG, vx, vy, vz)+ D3Q27System::getCompFeqForDirection(TSW, rhoG, vx, vy, vz); // // real fBB = (*this->localDistributionsF)(D3Q27System::ET_TSW, x1p-1, x2p-1, x3+1); // // (*this->localDistributionsF)(D3Q27System::ET_TSW, x1p - 1, x2p - 1, x3 + 1) = ftemp - mfaac; // // (*this->nonLocalDistributionsF)(D3Q27System::ET_BNE, x1, x2, x3p) = fBB - c6o1 * c1o216 * (vx + vy - vz); // //} - // //if ((phi[DIR_PMP] <= c1o2)) { + // //if ((phi[dPMP] <= c1o2)) { // // real rhoG = (*rhoNode)(x1 + 1, x2 - 1, x3 + 1); // // real ftemp = D3Q27System::getCompFeqForDirection(BNW, rhoG, vx, vy, vz)+ D3Q27System::getCompFeqForDirection(TSE, rhoG, vx, vy, vz); // // real fBB = (*this->localDistributionsF)(D3Q27System::ET_TSE, x1+1, x2p-1, x3+1); // // (*this->localDistributionsF)(D3Q27System::ET_TSE, x1 + 1, x2p - 1, x3 + 1) = ftemp - mfcac; // // (*this->nonLocalDistributionsF)(D3Q27System::ET_BNW, x1p, x2, x3p) = fBB - c6o1 * c1o216 * (-vx + vy - vz); // //} - // //if ((phi[DIR_PMM] <= c1o2)) { + // //if ((phi[dPMM] <= c1o2)) { // // real rhoG = (*rhoNode)(x1 + 1, x2 - 1, x3 - 1); // // real ftemp = D3Q27System::getCompFeqForDirection(TNW, rhoG, vx, vy, vz)+ D3Q27System::getCompFeqForDirection(BSE, rhoG, vx, vy, vz); // // real fBB = (*this->nonLocalDistributionsF)(D3Q27System::ET_BSE, x1+1, x2p-1, x3p-1); // // (*this->nonLocalDistributionsF)(D3Q27System::ET_BSE, x1+1, x2p-1, x3p-1) = ftemp - mfcaa; // // (*this->localDistributionsF)(D3Q27System::ET_TNW, x1p, x2, x3) = fBB - c6o1 * c1o216 * (-vx + vy + vz); // //} - // //if ((phi[DIR_MMM] <= c1o2)) { + // //if ((phi[dMMM] <= c1o2)) { // // real rhoG = (*rhoNode)(x1 - 1, x2 - 1, x3 - 1); // // real ftemp = D3Q27System::getCompFeqForDirection(TNE, rhoG, vx, vy, vz)+ D3Q27System::getCompFeqForDirection(BSW, rhoG, vx, vy, vz); // // real fBB = (*this->nonLocalDistributionsF)(D3Q27System::ET_BSW, x1p-1, x2p-1, x3p-1); // // (*this->nonLocalDistributionsF)(D3Q27System::ET_BSW, x1p - 1, x2p - 1, x3p - 1) = ftemp - mfaaa; // // (*this->localDistributionsF)(D3Q27System::ET_TNE, x1, x2, x3) = fBB - c6o1 * c1o216 * ( vx + vy + vz); // //} - // //if ((phi[DIR_MPM] <= c1o2)) { + // //if ((phi[dMPM] <= c1o2)) { // // real rhoG = (*rhoNode)(x1 - 1, x2 + 1, x3 - 1); // // real ftemp = D3Q27System::getCompFeqForDirection(TSE, rhoG, vx, vy, vz)+ D3Q27System::getCompFeqForDirection(BNW, rhoG, vx, vy, vz); // // real fBB = (*this->nonLocalDistributionsF)(D3Q27System::ET_BNW, x1p-1, x2+1, x3p-1); // // (*this->nonLocalDistributionsF)(D3Q27System::ET_BNW, x1p - 1, x2 + 1, x3p - 1) = ftemp - mfaca; // // (*this->localDistributionsF)(D3Q27System::ET_TSE, x1, x2p, x3) = fBB - c6o1 * c1o216 * (vx - vy + vz); // //} - // //if ((phi[DIR_PPM] <= c1o2)) { + // //if ((phi[dPPM] <= c1o2)) { // // real rhoG = (*rhoNode)(x1 + 1, x2 + 1, x3 - 1); // // real ftemp = D3Q27System::getCompFeqForDirection(TSW, rhoG, vx, vy, vz)+ D3Q27System::getCompFeqForDirection(BNE, rhoG, vx, vy, vz); // // real fBB = (*this->nonLocalDistributionsF)(D3Q27System::ET_BNE, x1+1, x2+1, x3p-1); @@ -5029,90 +5029,90 @@ void MultiphaseScaleDistributionLBMKernel::calculate(int step) real MultiphaseScaleDistributionLBMKernel::gradX1_phi() { using namespace D3Q27System; - return 3.0* ((WEIGTH[DIR_PPP] * (((phi[DIR_PPP] - phi[DIR_MMM]) + (phi[DIR_PMM] - phi[DIR_MPP])) + ((phi[DIR_PMP] - phi[DIR_MPM]) + (phi[DIR_PPM] - phi[DIR_MMP]))) - + WEIGTH[DIR_PP0] * (((phi[DIR_P0P] - phi[DIR_M0M]) + (phi[DIR_P0M] - phi[DIR_M0P])) + ((phi[DIR_PM0] - phi[DIR_MP0]) + (phi[DIR_PP0] - phi[DIR_MM0])))) + - +WEIGTH[DIR_0P0] * (phi[DIR_P00] - phi[DIR_M00])); + return 3.0* ((WEIGTH[dPPP] * (((phi[dPPP] - phi[dMMM]) + (phi[dPMM] - phi[dMPP])) + ((phi[dPMP] - phi[dMPM]) + (phi[dPPM] - phi[dMMP]))) + + WEIGTH[dPP0] * (((phi[dP0P] - phi[dM0M]) + (phi[dP0M] - phi[dM0P])) + ((phi[dPM0] - phi[dMP0]) + (phi[dPP0] - phi[dMM0])))) + + +WEIGTH[d0P0] * (phi[dP00] - phi[dM00])); } real MultiphaseScaleDistributionLBMKernel::gradX2_phi() { using namespace D3Q27System; - return 3.0 * ((WEIGTH[DIR_PPP] * (((phi[DIR_PPP] - phi[DIR_MMM]) - (phi[DIR_PMM] - phi[DIR_MPP])) + ((phi[DIR_PPM] - phi[DIR_MMP])- (phi[DIR_PMP] - phi[DIR_MPM]))) - + WEIGTH[DIR_PP0] * (((phi[DIR_0PP] - phi[DIR_0MM]) + (phi[DIR_0PM] - phi[DIR_0MP])) + ((phi[DIR_PP0] - phi[DIR_MM0])- (phi[DIR_PM0] - phi[DIR_MP0])))) + - +WEIGTH[DIR_0P0] * (phi[DIR_0P0] - phi[DIR_0M0])); + return 3.0 * ((WEIGTH[dPPP] * (((phi[dPPP] - phi[dMMM]) - (phi[dPMM] - phi[dMPP])) + ((phi[dPPM] - phi[dMMP])- (phi[dPMP] - phi[dMPM]))) + + WEIGTH[dPP0] * (((phi[d0PP] - phi[d0MM]) + (phi[d0PM] - phi[d0MP])) + ((phi[dPP0] - phi[dMM0])- (phi[dPM0] - phi[dMP0])))) + + +WEIGTH[d0P0] * (phi[d0P0] - phi[d0M0])); } real MultiphaseScaleDistributionLBMKernel::gradX3_phi() { using namespace D3Q27System; - return 3.0 * ((WEIGTH[DIR_PPP] * (((phi[DIR_PPP] - phi[DIR_MMM]) - (phi[DIR_PMM] - phi[DIR_MPP])) + ((phi[DIR_PMP] - phi[DIR_MPM]) - (phi[DIR_PPM] - phi[DIR_MMP]))) - + WEIGTH[DIR_PP0] * (((phi[DIR_P0P] - phi[DIR_M0M]) - (phi[DIR_P0M] - phi[DIR_M0P])) + ((phi[DIR_0MP] - phi[DIR_0PM]) + (phi[DIR_0PP] - phi[DIR_0MM])))) + - +WEIGTH[DIR_0P0] * (phi[DIR_00P] - phi[DIR_00M])); + return 3.0 * ((WEIGTH[dPPP] * (((phi[dPPP] - phi[dMMM]) - (phi[dPMM] - phi[dMPP])) + ((phi[dPMP] - phi[dMPM]) - (phi[dPPM] - phi[dMMP]))) + + WEIGTH[dPP0] * (((phi[dP0P] - phi[dM0M]) - (phi[dP0M] - phi[dM0P])) + ((phi[d0MP] - phi[d0PM]) + (phi[d0PP] - phi[d0MM])))) + + +WEIGTH[d0P0] * (phi[d00P] - phi[d00M])); } real MultiphaseScaleDistributionLBMKernel::gradX1_rhoInv(real rhoL,real rhoDIV) { using namespace D3Q27System; - return 3.0 * ((WEIGTH[DIR_PPP] * (((1.0/(rhoL+rhoDIV*phi[DIR_PPP]) - 1.0 / (rhoL + rhoDIV * phi[DIR_MMM])) + (1.0 / (rhoL + rhoDIV * phi[DIR_PMM]) - 1.0 / (rhoL + rhoDIV * phi[DIR_MPP]))) + ((1.0 / (rhoL + rhoDIV * phi[DIR_PMP]) - 1.0 / (rhoL + rhoDIV * phi[DIR_MPM])) + (1.0 / (rhoL + rhoDIV * phi[DIR_PPM]) - 1.0 / (rhoL + rhoDIV * phi[DIR_MMP])))) - + WEIGTH[DIR_PP0] * (((1.0 / (rhoL + rhoDIV * phi[DIR_P0P]) - 1.0 / (rhoL + rhoDIV * phi[DIR_M0M])) + (1.0 / (rhoL + rhoDIV * phi[DIR_P0M]) - 1.0 / (rhoL + rhoDIV * phi[DIR_M0P]))) + ((1.0 / (rhoL + rhoDIV * phi[DIR_PM0]) - 1.0 / (rhoL + rhoDIV * phi[DIR_MP0])) + (1.0 / (rhoL + rhoDIV * phi[DIR_PP0]) - 1.0 / (rhoL + rhoDIV * phi[DIR_MM0]))))) + - +WEIGTH[DIR_0P0] * (1.0 / (rhoL + rhoDIV * phi[DIR_P00]) - 1.0 / (rhoL + rhoDIV * phi[DIR_M00]))); + return 3.0 * ((WEIGTH[dPPP] * (((1.0/(rhoL+rhoDIV*phi[dPPP]) - 1.0 / (rhoL + rhoDIV * phi[dMMM])) + (1.0 / (rhoL + rhoDIV * phi[dPMM]) - 1.0 / (rhoL + rhoDIV * phi[dMPP]))) + ((1.0 / (rhoL + rhoDIV * phi[dPMP]) - 1.0 / (rhoL + rhoDIV * phi[dMPM])) + (1.0 / (rhoL + rhoDIV * phi[dPPM]) - 1.0 / (rhoL + rhoDIV * phi[dMMP])))) + + WEIGTH[dPP0] * (((1.0 / (rhoL + rhoDIV * phi[dP0P]) - 1.0 / (rhoL + rhoDIV * phi[dM0M])) + (1.0 / (rhoL + rhoDIV * phi[dP0M]) - 1.0 / (rhoL + rhoDIV * phi[dM0P]))) + ((1.0 / (rhoL + rhoDIV * phi[dPM0]) - 1.0 / (rhoL + rhoDIV * phi[dMP0])) + (1.0 / (rhoL + rhoDIV * phi[dPP0]) - 1.0 / (rhoL + rhoDIV * phi[dMM0]))))) + + +WEIGTH[d0P0] * (1.0 / (rhoL + rhoDIV * phi[dP00]) - 1.0 / (rhoL + rhoDIV * phi[dM00]))); } real MultiphaseScaleDistributionLBMKernel::gradX2_rhoInv(real rhoL,real rhoDIV) { using namespace D3Q27System; - return 3.0 * ((WEIGTH[DIR_PPP] * (((1.0 / (rhoL + rhoDIV * phi[DIR_PPP]) - 1.0 / (rhoL + rhoDIV * phi[DIR_MMM])) - (1.0 / (rhoL + rhoDIV * phi[DIR_PMM]) - 1.0 / (rhoL + rhoDIV * phi[DIR_MPP]))) + ((1.0 / (rhoL + rhoDIV * phi[DIR_PPM]) - 1.0 / (rhoL + rhoDIV * phi[DIR_MMP])) - (1.0 / (rhoL + rhoDIV * phi[DIR_PMP]) - 1.0 / (rhoL + rhoDIV * phi[DIR_MPM])))) - + WEIGTH[DIR_PP0] * (((1.0 / (rhoL + rhoDIV * phi[DIR_0PP]) - 1.0 / (rhoL + rhoDIV * phi[DIR_0MM])) + (1.0 / (rhoL + rhoDIV * phi[DIR_0PM]) - 1.0 / (rhoL + rhoDIV * phi[DIR_0MP]))) + ((1.0 / (rhoL + rhoDIV * phi[DIR_PP0]) - 1.0 / (rhoL + rhoDIV * phi[DIR_MM0])) - (1.0 / (rhoL + rhoDIV * phi[DIR_PM0]) - 1.0 / (rhoL + rhoDIV * phi[DIR_MP0]))))) + - +WEIGTH[DIR_0P0] * (1.0 / (rhoL + rhoDIV * phi[DIR_0P0]) - 1.0 / (rhoL + rhoDIV * phi[DIR_0M0]))); + return 3.0 * ((WEIGTH[dPPP] * (((1.0 / (rhoL + rhoDIV * phi[dPPP]) - 1.0 / (rhoL + rhoDIV * phi[dMMM])) - (1.0 / (rhoL + rhoDIV * phi[dPMM]) - 1.0 / (rhoL + rhoDIV * phi[dMPP]))) + ((1.0 / (rhoL + rhoDIV * phi[dPPM]) - 1.0 / (rhoL + rhoDIV * phi[dMMP])) - (1.0 / (rhoL + rhoDIV * phi[dPMP]) - 1.0 / (rhoL + rhoDIV * phi[dMPM])))) + + WEIGTH[dPP0] * (((1.0 / (rhoL + rhoDIV * phi[d0PP]) - 1.0 / (rhoL + rhoDIV * phi[d0MM])) + (1.0 / (rhoL + rhoDIV * phi[d0PM]) - 1.0 / (rhoL + rhoDIV * phi[d0MP]))) + ((1.0 / (rhoL + rhoDIV * phi[dPP0]) - 1.0 / (rhoL + rhoDIV * phi[dMM0])) - (1.0 / (rhoL + rhoDIV * phi[dPM0]) - 1.0 / (rhoL + rhoDIV * phi[dMP0]))))) + + +WEIGTH[d0P0] * (1.0 / (rhoL + rhoDIV * phi[d0P0]) - 1.0 / (rhoL + rhoDIV * phi[d0M0]))); } real MultiphaseScaleDistributionLBMKernel::gradX3_rhoInv(real rhoL, real rhoDIV) { using namespace D3Q27System; - return 3.0 * ((WEIGTH[DIR_PPP] * (((1.0 / (rhoL + rhoDIV * phi[DIR_PPP]) - 1.0 / (rhoL + rhoDIV * phi[DIR_MMM])) - (1.0 / (rhoL + rhoDIV * phi[DIR_PMM]) - 1.0 / (rhoL + rhoDIV * phi[DIR_MPP]))) + ((1.0 / (rhoL + rhoDIV * phi[DIR_PMP]) - 1.0 / (rhoL + rhoDIV * phi[DIR_MPM])) - (1.0 / (rhoL + rhoDIV * phi[DIR_PPM]) - 1.0 / (rhoL + rhoDIV * phi[DIR_MMP])))) - + WEIGTH[DIR_PP0] * (((1.0 / (rhoL + rhoDIV * phi[DIR_P0P]) - 1.0 / (rhoL + rhoDIV * phi[DIR_M0M])) - (1.0 / (rhoL + rhoDIV * phi[DIR_P0M]) - 1.0 / (rhoL + rhoDIV * phi[DIR_M0P]))) + ((1.0 / (rhoL + rhoDIV * phi[DIR_0MP]) - 1.0 / (rhoL + rhoDIV * phi[DIR_0PM])) + (1.0 / (rhoL + rhoDIV * phi[DIR_0PP]) - 1.0 / (rhoL + rhoDIV * phi[DIR_0MM]))))) + - +WEIGTH[DIR_0P0] * (1.0 / (rhoL + rhoDIV * phi[DIR_00P]) - 1.0 / (rhoL + rhoDIV * phi[DIR_00M]))); + return 3.0 * ((WEIGTH[dPPP] * (((1.0 / (rhoL + rhoDIV * phi[dPPP]) - 1.0 / (rhoL + rhoDIV * phi[dMMM])) - (1.0 / (rhoL + rhoDIV * phi[dPMM]) - 1.0 / (rhoL + rhoDIV * phi[dMPP]))) + ((1.0 / (rhoL + rhoDIV * phi[dPMP]) - 1.0 / (rhoL + rhoDIV * phi[dMPM])) - (1.0 / (rhoL + rhoDIV * phi[dPPM]) - 1.0 / (rhoL + rhoDIV * phi[dMMP])))) + + WEIGTH[dPP0] * (((1.0 / (rhoL + rhoDIV * phi[dP0P]) - 1.0 / (rhoL + rhoDIV * phi[dM0M])) - (1.0 / (rhoL + rhoDIV * phi[dP0M]) - 1.0 / (rhoL + rhoDIV * phi[dM0P]))) + ((1.0 / (rhoL + rhoDIV * phi[d0MP]) - 1.0 / (rhoL + rhoDIV * phi[d0PM])) + (1.0 / (rhoL + rhoDIV * phi[d0PP]) - 1.0 / (rhoL + rhoDIV * phi[d0MM]))))) + + +WEIGTH[d0P0] * (1.0 / (rhoL + rhoDIV * phi[d00P]) - 1.0 / (rhoL + rhoDIV * phi[d00M]))); } real MultiphaseScaleDistributionLBMKernel::gradX1_phi2() { using namespace D3Q27System; - return 3.0 * ((WEIGTH[DIR_PPP] * (((phi2[DIR_PPP] - phi2[DIR_MMM]) + (phi2[DIR_PMM] - phi2[DIR_MPP])) + ((phi2[DIR_PMP] - phi2[DIR_MPM]) + (phi2[DIR_PPM] - phi2[DIR_MMP]))) - + WEIGTH[DIR_PP0] * (((phi2[DIR_P0P] - phi2[DIR_M0M]) + (phi2[DIR_P0M] - phi2[DIR_M0P])) + ((phi2[DIR_PM0] - phi2[DIR_MP0]) + (phi2[DIR_PP0] - phi2[DIR_MM0])))) + - +WEIGTH[DIR_0P0] * (phi2[DIR_P00] - phi2[DIR_M00])); + return 3.0 * ((WEIGTH[dPPP] * (((phi2[dPPP] - phi2[dMMM]) + (phi2[dPMM] - phi2[dMPP])) + ((phi2[dPMP] - phi2[dMPM]) + (phi2[dPPM] - phi2[dMMP]))) + + WEIGTH[dPP0] * (((phi2[dP0P] - phi2[dM0M]) + (phi2[dP0M] - phi2[dM0P])) + ((phi2[dPM0] - phi2[dMP0]) + (phi2[dPP0] - phi2[dMM0])))) + + +WEIGTH[d0P0] * (phi2[dP00] - phi2[dM00])); } real MultiphaseScaleDistributionLBMKernel::gradX2_phi2() { using namespace D3Q27System; - return 3.0 * ((WEIGTH[DIR_PPP] * (((phi2[DIR_PPP] - phi2[DIR_MMM]) - (phi2[DIR_PMM] - phi2[DIR_MPP])) + ((phi2[DIR_PPM] - phi2[DIR_MMP]) - (phi2[DIR_PMP] - phi2[DIR_MPM]))) - + WEIGTH[DIR_PP0] * (((phi2[DIR_0PP] - phi2[DIR_0MM]) + (phi2[DIR_0PM] - phi2[DIR_0MP])) + ((phi2[DIR_PP0] - phi2[DIR_MM0]) - (phi2[DIR_PM0] - phi2[DIR_MP0])))) + - +WEIGTH[DIR_0P0] * (phi2[DIR_0P0] - phi2[DIR_0M0])); + return 3.0 * ((WEIGTH[dPPP] * (((phi2[dPPP] - phi2[dMMM]) - (phi2[dPMM] - phi2[dMPP])) + ((phi2[dPPM] - phi2[dMMP]) - (phi2[dPMP] - phi2[dMPM]))) + + WEIGTH[dPP0] * (((phi2[d0PP] - phi2[d0MM]) + (phi2[d0PM] - phi2[d0MP])) + ((phi2[dPP0] - phi2[dMM0]) - (phi2[dPM0] - phi2[dMP0])))) + + +WEIGTH[d0P0] * (phi2[d0P0] - phi2[d0M0])); } real MultiphaseScaleDistributionLBMKernel::gradX3_phi2() { using namespace D3Q27System; - return 3.0 * ((WEIGTH[DIR_PPP] * (((phi2[DIR_PPP] - phi2[DIR_MMM]) - (phi2[DIR_PMM] - phi2[DIR_MPP])) + ((phi2[DIR_PMP] - phi2[DIR_MPM]) - (phi2[DIR_PPM] - phi2[DIR_MMP]))) - + WEIGTH[DIR_PP0] * (((phi2[DIR_P0P] - phi2[DIR_M0M]) - (phi2[DIR_P0M] - phi2[DIR_M0P])) + ((phi2[DIR_0MP] - phi2[DIR_0PM]) + (phi2[DIR_0PP] - phi2[DIR_0MM])))) + - +WEIGTH[DIR_0P0] * (phi2[DIR_00P] - phi2[DIR_00M])); + return 3.0 * ((WEIGTH[dPPP] * (((phi2[dPPP] - phi2[dMMM]) - (phi2[dPMM] - phi2[dMPP])) + ((phi2[dPMP] - phi2[dMPM]) - (phi2[dPPM] - phi2[dMMP]))) + + WEIGTH[dPP0] * (((phi2[dP0P] - phi2[dM0M]) - (phi2[dP0M] - phi2[dM0P])) + ((phi2[d0MP] - phi2[d0PM]) + (phi2[d0PP] - phi2[d0MM])))) + + +WEIGTH[d0P0] * (phi2[d00P] - phi2[d00M])); } real MultiphaseScaleDistributionLBMKernel::nabla2_phi() { using namespace D3Q27System; real sum = 0.0; - sum += WEIGTH[DIR_PPP] * ((((phi[DIR_PPP] - phi[DIR_000]) + (phi[DIR_MMM] - phi[DIR_000])) + ((phi[DIR_MMP] - phi[DIR_000]) + (phi[DIR_PPM] - phi[DIR_000]))) - + (((phi[DIR_MPP] - phi[DIR_000]) + (phi[DIR_PMM] - phi[DIR_000])) + ((phi[DIR_PMP] - phi[DIR_000]) + (phi[DIR_MPM] - phi[DIR_000])))); - sum += WEIGTH[DIR_0PP] * ( - (((phi[DIR_0PP] - phi[DIR_000]) + (phi[DIR_0MM] - phi[DIR_000])) + ((phi[DIR_0MP] - phi[DIR_000]) + (phi[DIR_0PM] - phi[DIR_000]))) - + (((phi[DIR_P0P] - phi[DIR_000]) + (phi[DIR_M0M] - phi[DIR_000])) + ((phi[DIR_M0P] - phi[DIR_000]) + (phi[DIR_P0M] - phi[DIR_000]))) - + (((phi[DIR_PP0] - phi[DIR_000]) + (phi[DIR_MM0] - phi[DIR_000])) + ((phi[DIR_MP0] - phi[DIR_000]) + (phi[DIR_PM0] - phi[DIR_000]))) + sum += WEIGTH[dPPP] * ((((phi[dPPP] - phi[d000]) + (phi[dMMM] - phi[d000])) + ((phi[dMMP] - phi[d000]) + (phi[dPPM] - phi[d000]))) + + (((phi[dMPP] - phi[d000]) + (phi[dPMM] - phi[d000])) + ((phi[dPMP] - phi[d000]) + (phi[dMPM] - phi[d000])))); + sum += WEIGTH[d0PP] * ( + (((phi[d0PP] - phi[d000]) + (phi[d0MM] - phi[d000])) + ((phi[d0MP] - phi[d000]) + (phi[d0PM] - phi[d000]))) + + (((phi[dP0P] - phi[d000]) + (phi[dM0M] - phi[d000])) + ((phi[dM0P] - phi[d000]) + (phi[dP0M] - phi[d000]))) + + (((phi[dPP0] - phi[d000]) + (phi[dMM0] - phi[d000])) + ((phi[dMP0] - phi[d000]) + (phi[dPM0] - phi[d000]))) ); - sum += WEIGTH[DIR_00P] * ( - ((phi[DIR_00P] - phi[DIR_000]) + (phi[DIR_00M] - phi[DIR_000])) - + ((phi[DIR_0P0] - phi[DIR_000]) + (phi[DIR_0M0] - phi[DIR_000])) - + ((phi[DIR_P00] - phi[DIR_000]) + (phi[DIR_M00] - phi[DIR_000])) + sum += WEIGTH[d00P] * ( + ((phi[d00P] - phi[d000]) + (phi[d00M] - phi[d000])) + + ((phi[d0P0] - phi[d000]) + (phi[d0M0] - phi[d000])) + + ((phi[dP00] - phi[d000]) + (phi[dM00] - phi[d000])) ); return 6.0 * sum; @@ -5127,29 +5127,29 @@ real MultiphaseScaleDistributionLBMKernel::computeCurvature_phi() real phiY = gradX2_phi(); real phiZ = gradX3_phi(); real phiXX = - c4o9 * (phi[DIR_P00] - c2o1 * phi[DIR_000] + phi[DIR_M00]) + (c1o9 * (((phi[DIR_PP0] - c2o1 * phi[DIR_0P0] + phi[DIR_MP0]) + (phi[DIR_PM0] - c2o1 * phi[DIR_0M0] + phi[DIR_MM0])) + ((phi[DIR_P0P] - c2o1 * phi[DIR_00P] + phi[DIR_M0P]) + (phi[DIR_P0M] - c2o1 * phi[DIR_00M] + phi[DIR_M0M]))) + - c1o36 * (((phi[DIR_PPP] - c2o1 * phi[DIR_0PP] + phi[DIR_MPP]) + (phi[DIR_PMP] - c2o1 * phi[DIR_0MP] + phi[DIR_MMP])) + ((phi[DIR_PPM] - c2o1 * phi[DIR_0PM] + phi[DIR_MPM]) + (phi[DIR_PMM] - c2o1 * phi[DIR_0MM] + phi[DIR_MMM])))); + c4o9 * (phi[dP00] - c2o1 * phi[d000] + phi[dM00]) + (c1o9 * (((phi[dPP0] - c2o1 * phi[d0P0] + phi[dMP0]) + (phi[dPM0] - c2o1 * phi[d0M0] + phi[dMM0])) + ((phi[dP0P] - c2o1 * phi[d00P] + phi[dM0P]) + (phi[dP0M] - c2o1 * phi[d00M] + phi[dM0M]))) + + c1o36 * (((phi[dPPP] - c2o1 * phi[d0PP] + phi[dMPP]) + (phi[dPMP] - c2o1 * phi[d0MP] + phi[dMMP])) + ((phi[dPPM] - c2o1 * phi[d0PM] + phi[dMPM]) + (phi[dPMM] - c2o1 * phi[d0MM] + phi[dMMM])))); real phiYY = - c4o9 * (phi[DIR_0P0] - c2o1 * phi[DIR_000] + phi[DIR_0M0]) + (c1o9 * (((phi[DIR_PP0] - c2o1 * phi[DIR_P00] + phi[DIR_PM0]) + (phi[DIR_MP0] - c2o1 * phi[DIR_M00] + phi[DIR_MM0])) + ((phi[DIR_0PP] - c2o1 * phi[DIR_00P] + phi[DIR_0MP]) + (phi[DIR_0PM] - c2o1 * phi[DIR_00M] + phi[DIR_0MM]))) + - c1o36 * (((phi[DIR_PPP] - c2o1 * phi[DIR_P0P] + phi[DIR_PMP]) + (phi[DIR_MPM] - c2o1 * phi[DIR_M0M] + phi[DIR_MMM])) + ((phi[DIR_MPP] - c2o1 * phi[DIR_M0P] + phi[DIR_MMP]) + (phi[DIR_PPM] - c2o1 * phi[DIR_P0M] + phi[DIR_PMM])))); + c4o9 * (phi[d0P0] - c2o1 * phi[d000] + phi[d0M0]) + (c1o9 * (((phi[dPP0] - c2o1 * phi[dP00] + phi[dPM0]) + (phi[dMP0] - c2o1 * phi[dM00] + phi[dMM0])) + ((phi[d0PP] - c2o1 * phi[d00P] + phi[d0MP]) + (phi[d0PM] - c2o1 * phi[d00M] + phi[d0MM]))) + + c1o36 * (((phi[dPPP] - c2o1 * phi[dP0P] + phi[dPMP]) + (phi[dMPM] - c2o1 * phi[dM0M] + phi[dMMM])) + ((phi[dMPP] - c2o1 * phi[dM0P] + phi[dMMP]) + (phi[dPPM] - c2o1 * phi[dP0M] + phi[dPMM])))); real phiZZ = - c4o9 * (phi[DIR_00P] - c2o1 * phi[DIR_000] + phi[DIR_00M]) + (c1o9 * (((phi[DIR_M0P] - c2o1 * phi[DIR_M00] + phi[DIR_M0M]) + (phi[DIR_P0P] - c2o1 * phi[DIR_P00] + phi[DIR_P0M])) + ((phi[DIR_0MP] - c2o1 * phi[DIR_0M0] + phi[DIR_0MM]) + (phi[DIR_0PP] - c2o1 * phi[DIR_0P0] + phi[DIR_0PM]))) + - c1o36 * (((phi[DIR_MPP] - c2o1 * phi[DIR_MP0] + phi[DIR_MPM]) + (phi[DIR_PMP] - c2o1 * phi[DIR_PM0] + phi[DIR_PMM])) + ((phi[DIR_MMP] - c2o1 * phi[DIR_MM0] + phi[DIR_MMM]) + (phi[DIR_PPP] - c2o1 * phi[DIR_PP0] + phi[DIR_PPM])))); - real phiXY = c1o4 * (c2o3 * (phi[DIR_MM0] - phi[DIR_PM0] + phi[DIR_PP0] - phi[DIR_MP0]) + c1o6 * ((phi[DIR_MMP] - phi[DIR_PMP] + phi[DIR_PPP] - phi[DIR_MPP]) + (phi[DIR_MMM] - phi[DIR_PMM] + phi[DIR_PPM] - phi[DIR_MPM]))); - real phiXZ = c1o4 * (c2o3 * (phi[DIR_M0M] - phi[DIR_P0M] + phi[DIR_P0P] - phi[DIR_M0P]) + c1o6 * ((phi[DIR_MPM] - phi[DIR_PPM] + phi[DIR_PPP] - phi[DIR_MPP]) + (phi[DIR_MMM] - phi[DIR_PMM] + phi[DIR_PMP] - phi[DIR_MMP]))); - real phiYZ = c1o4 * (c2o3 * (phi[DIR_0MM] - phi[DIR_0MP] + phi[DIR_0PP] - phi[DIR_0PM]) + c1o6 * ((phi[DIR_MMM] - phi[DIR_MMP] + phi[DIR_MPP] - phi[DIR_MPM]) + (phi[DIR_PMM] - phi[DIR_PMP] + phi[DIR_PPP] - phi[DIR_PPM]))); + c4o9 * (phi[d00P] - c2o1 * phi[d000] + phi[d00M]) + (c1o9 * (((phi[dM0P] - c2o1 * phi[dM00] + phi[dM0M]) + (phi[dP0P] - c2o1 * phi[dP00] + phi[dP0M])) + ((phi[d0MP] - c2o1 * phi[d0M0] + phi[d0MM]) + (phi[d0PP] - c2o1 * phi[d0P0] + phi[d0PM]))) + + c1o36 * (((phi[dMPP] - c2o1 * phi[dMP0] + phi[dMPM]) + (phi[dPMP] - c2o1 * phi[dPM0] + phi[dPMM])) + ((phi[dMMP] - c2o1 * phi[dMM0] + phi[dMMM]) + (phi[dPPP] - c2o1 * phi[dPP0] + phi[dPPM])))); + real phiXY = c1o4 * (c2o3 * (phi[dMM0] - phi[dPM0] + phi[dPP0] - phi[dMP0]) + c1o6 * ((phi[dMMP] - phi[dPMP] + phi[dPPP] - phi[dMPP]) + (phi[dMMM] - phi[dPMM] + phi[dPPM] - phi[dMPM]))); + real phiXZ = c1o4 * (c2o3 * (phi[dM0M] - phi[dP0M] + phi[dP0P] - phi[dM0P]) + c1o6 * ((phi[dMPM] - phi[dPPM] + phi[dPPP] - phi[dMPP]) + (phi[dMMM] - phi[dPMM] + phi[dPMP] - phi[dMMP]))); + real phiYZ = c1o4 * (c2o3 * (phi[d0MM] - phi[d0MP] + phi[d0PP] - phi[d0PM]) + c1o6 * ((phi[dMMM] - phi[dMMP] + phi[dMPP] - phi[dMPM]) + (phi[dPMM] - phi[dPMP] + phi[dPPP] - phi[dPPM]))); // non isotropic FD (to be improved): - // real phiX = (phi[DIR_P00] - phi[DIR_M00]) * c1o2; //gradX1_phi(); - // real phiY = (phi[DIR_0P0] - phi[DIR_0M0]) * c1o2; //gradX2_phi(); - // real phiZ = (phi[DIR_00P] - phi[DIR_00M]) * c1o2; //gradX3_phi(); - - // real phiXX = phi[DIR_P00] - c2o1 * phi[DIR_000] + phi[DIR_M00]; - // real phiYY = phi[DIR_0P0] - c2o1 * phi[DIR_000] + phi[DIR_0M0]; - // real phiZZ =( phi[DIR_00P] - c2o1 * phi[DIR_000] + phi[DIR_00M]); - // real phiXY = c1o4 * (phi[DIR_MM0] - phi[DIR_PM0] + phi[DIR_PP0] - phi[DIR_MP0]); - // real phiXZ = c1o4 * (phi[DIR_M0M] - phi[DIR_P0M] + phi[DIR_P0P] - phi[DIR_M0P]); - // real phiYZ = c1o4 * (phi[DIR_0MM] - phi[DIR_0MP] + phi[DIR_0PP] - phi[DIR_0PM]); + // real phiX = (phi[dP00] - phi[dM00]) * c1o2; //gradX1_phi(); + // real phiY = (phi[d0P0] - phi[d0M0]) * c1o2; //gradX2_phi(); + // real phiZ = (phi[d00P] - phi[d00M]) * c1o2; //gradX3_phi(); + + // real phiXX = phi[dP00] - c2o1 * phi[d000] + phi[dM00]; + // real phiYY = phi[d0P0] - c2o1 * phi[d000] + phi[d0M0]; + // real phiZZ =( phi[d00P] - c2o1 * phi[d000] + phi[d00M]); + // real phiXY = c1o4 * (phi[dMM0] - phi[dPM0] + phi[dPP0] - phi[dMP0]); + // real phiXZ = c1o4 * (phi[dM0M] - phi[dP0M] + phi[dP0P] - phi[dM0P]); + // real phiYZ = c1o4 * (phi[d0MM] - phi[d0MP] + phi[d0PP] - phi[d0PM]); // real back= (c2o1 * (phiX * phiY * phiXY + phiX * phiZ * phiXZ + phiY * phiZ * phiYZ) - phiXX * (phiY * phiY + phiZ * phiZ) - phiYY * (phiX * phiX + phiZ * phiZ) - phiZZ * (phiX * phiX + phiY * phiY)) / (c2o1 * pow(phiX * phiX + phiY * phiY + phiZ * phiZ, c3o2)); return (c2o1 * (phiX * phiY * phiXY + phiX * phiZ * phiXZ + phiY * phiZ * phiYZ) - phiXX * (phiY * phiY + phiZ * phiZ) - phiYY * (phiX * phiX + phiZ * phiZ) - phiZZ * (phiX * phiX + phiY * phiY)) / (c2o1 * pow(phiX * phiX + phiY * phiY + phiZ * phiZ, c3o2)+1e-200); @@ -5176,35 +5176,35 @@ void MultiphaseScaleDistributionLBMKernel::computePhasefield() int x2p = x2 + 1; int x3p = x3 + 1; - h[DIR_P00] = (*this->localDistributionsH1)(D3Q27System::ET_E, x1, x2, x3); - h[DIR_0P0] = (*this->localDistributionsH1)(D3Q27System::ET_N, x1, x2, x3); - h[DIR_00P] = (*this->localDistributionsH1)(D3Q27System::ET_T, x1, x2, x3); - h[DIR_PP0] = (*this->localDistributionsH1)(D3Q27System::ET_NE, x1, x2, x3); - h[DIR_MP0] = (*this->localDistributionsH1)(D3Q27System::ET_NW, x1p, x2, x3); - h[DIR_P0P] = (*this->localDistributionsH1)(D3Q27System::ET_TE, x1, x2, x3); - h[DIR_M0P] = (*this->localDistributionsH1)(D3Q27System::ET_TW, x1p, x2, x3); - h[DIR_0PP] = (*this->localDistributionsH1)(D3Q27System::ET_TN, x1, x2, x3); - h[DIR_0MP] = (*this->localDistributionsH1)(D3Q27System::ET_TS, x1, x2p, x3); - h[DIR_PPP] = (*this->localDistributionsH1)(D3Q27System::ET_TNE, x1, x2, x3); - h[DIR_MPP] = (*this->localDistributionsH1)(D3Q27System::ET_TNW, x1p, x2, x3); - h[DIR_PMP] = (*this->localDistributionsH1)(D3Q27System::ET_TSE, x1, x2p, x3); - h[DIR_MMP] = (*this->localDistributionsH1)(D3Q27System::ET_TSW, x1p, x2p, x3); - - h[DIR_M00] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_W, x1p, x2, x3); - h[DIR_0M0] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_S, x1, x2p, x3); - h[DIR_00M] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_B, x1, x2, x3p); - h[DIR_MM0] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_SW, x1p, x2p, x3); - h[DIR_PM0] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_SE, x1, x2p, x3); - h[DIR_M0M] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BW, x1p, x2, x3p); - h[DIR_P0M] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BE, x1, x2, x3p); - h[DIR_0MM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BS, x1, x2p, x3p); - h[DIR_0PM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BN, x1, x2, x3p); - h[DIR_MMM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BSW, x1p, x2p, x3p); - h[DIR_PMM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BSE, x1, x2p, x3p); - h[DIR_MPM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BNW, x1p, x2, x3p); - h[DIR_PPM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BNE, x1, x2, x3p); - - h[DIR_000] = (*this->zeroDistributionsH1)(x1, x2, x3); + h[dP00] = (*this->localDistributionsH1)(D3Q27System::ET_E, x1, x2, x3); + h[d0P0] = (*this->localDistributionsH1)(D3Q27System::ET_N, x1, x2, x3); + h[d00P] = (*this->localDistributionsH1)(D3Q27System::ET_T, x1, x2, x3); + h[dPP0] = (*this->localDistributionsH1)(D3Q27System::ET_NE, x1, x2, x3); + h[dMP0] = (*this->localDistributionsH1)(D3Q27System::ET_NW, x1p, x2, x3); + h[dP0P] = (*this->localDistributionsH1)(D3Q27System::ET_TE, x1, x2, x3); + h[dM0P] = (*this->localDistributionsH1)(D3Q27System::ET_TW, x1p, x2, x3); + h[d0PP] = (*this->localDistributionsH1)(D3Q27System::ET_TN, x1, x2, x3); + h[d0MP] = (*this->localDistributionsH1)(D3Q27System::ET_TS, x1, x2p, x3); + h[dPPP] = (*this->localDistributionsH1)(D3Q27System::ET_TNE, x1, x2, x3); + h[dMPP] = (*this->localDistributionsH1)(D3Q27System::ET_TNW, x1p, x2, x3); + h[dPMP] = (*this->localDistributionsH1)(D3Q27System::ET_TSE, x1, x2p, x3); + h[dMMP] = (*this->localDistributionsH1)(D3Q27System::ET_TSW, x1p, x2p, x3); + + h[dM00] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_W, x1p, x2, x3); + h[d0M0] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_S, x1, x2p, x3); + h[d00M] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_B, x1, x2, x3p); + h[dMM0] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_SW, x1p, x2p, x3); + h[dPM0] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_SE, x1, x2p, x3); + h[dM0M] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BW, x1p, x2, x3p); + h[dP0M] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BE, x1, x2, x3p); + h[d0MM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BS, x1, x2p, x3p); + h[d0PM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BN, x1, x2, x3p); + h[dMMM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BSW, x1p, x2p, x3p); + h[dPMM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BSE, x1, x2p, x3p); + h[dMPM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BNW, x1p, x2, x3p); + h[dPPM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BNE, x1, x2, x3p); + + h[d000] = (*this->zeroDistributionsH1)(x1, x2, x3); } } } @@ -5218,7 +5218,7 @@ void MultiphaseScaleDistributionLBMKernel::findNeighbors(CbArray3D<real, Indexer SPtr<BCArray3D> bcArray = this->getBCSet()->getBCArray(); - phi[DIR_000] = (*ph)(x1, x2, x3); + phi[d000] = (*ph)(x1, x2, x3); for (int k = FSTARTDIR; k <= FENDDIR; k++) { @@ -5242,7 +5242,7 @@ void MultiphaseScaleDistributionLBMKernel::findNeighbors2(CbArray3D<real, Indexe SPtr<BCArray3D> bcArray = this->getBCSet()->getBCArray(); - phi2[DIR_000] = (*ph)(x1, x2, x3); + phi2[d000] = (*ph)(x1, x2, x3); for (int k = FSTARTDIR; k <= FENDDIR; k++) { diff --git a/src/cpu/MultiphaseFlow/LBM/MultiphaseScaleDistributionLBMKernel.h b/src/cpu/MultiphaseFlow/LBM/MultiphaseScaleDistributionLBMKernel.h index 85ada0fc290658fae8d3d92c1b2d8ae8dd0df471..b5cdb07c446f9efbb0eefdd7994a418747fdef03 100644 --- a/src/cpu/MultiphaseFlow/LBM/MultiphaseScaleDistributionLBMKernel.h +++ b/src/cpu/MultiphaseFlow/LBM/MultiphaseScaleDistributionLBMKernel.h @@ -138,34 +138,34 @@ protected: inline bool MultiphaseScaleDistributionLBMKernel::isGas(real phiLim, real* phi, real* phi2) { using namespace vf::lbm::dir; - return (phi2[DIR_000] <= phiLim) || ((phi[DIR_000] <= phiLim) && + return (phi2[d000] <= phiLim) || ((phi[d000] <= phiLim) && ( - (phi[DIR_P00] > phiLim) || - (phi[DIR_M00] > phiLim) || - (phi[DIR_00P] > phiLim) || - (phi[DIR_00M] > phiLim) || - (phi[DIR_0M0] > phiLim) || - (phi[DIR_0P0] > phiLim) || - (phi[DIR_PP0] > phiLim) || - (phi[DIR_PM0] > phiLim) || - (phi[DIR_P0P] > phiLim) || - (phi[DIR_P0M] > phiLim) || - (phi[DIR_MP0] > phiLim) || - (phi[DIR_MM0] > phiLim) || - (phi[DIR_M0P] > phiLim) || - (phi[DIR_M0M] > phiLim) || - (phi[DIR_0PM] > phiLim) || - (phi[DIR_0MM] > phiLim) || - (phi[DIR_0PP] > phiLim) || - (phi[DIR_0MP] > phiLim) || - (phi[DIR_PPP] > phiLim) || - (phi[DIR_PMP] > phiLim) || - (phi[DIR_MPP] > phiLim) || - (phi[DIR_MMP] > phiLim) || - (phi[DIR_PPM] > phiLim) || - (phi[DIR_PMM] > phiLim) || - (phi[DIR_MPM] > phiLim) || - (phi[DIR_MMM] > phiLim) + (phi[dP00] > phiLim) || + (phi[dM00] > phiLim) || + (phi[d00P] > phiLim) || + (phi[d00M] > phiLim) || + (phi[d0M0] > phiLim) || + (phi[d0P0] > phiLim) || + (phi[dPP0] > phiLim) || + (phi[dPM0] > phiLim) || + (phi[dP0P] > phiLim) || + (phi[dP0M] > phiLim) || + (phi[dMP0] > phiLim) || + (phi[dMM0] > phiLim) || + (phi[dM0P] > phiLim) || + (phi[dM0M] > phiLim) || + (phi[d0PM] > phiLim) || + (phi[d0MM] > phiLim) || + (phi[d0PP] > phiLim) || + (phi[d0MP] > phiLim) || + (phi[dPPP] > phiLim) || + (phi[dPMP] > phiLim) || + (phi[dMPP] > phiLim) || + (phi[dMMP] > phiLim) || + (phi[dPPM] > phiLim) || + (phi[dPMM] > phiLim) || + (phi[dMPM] > phiLim) || + (phi[dMMM] > phiLim) )); } diff --git a/src/cpu/MultiphaseFlow/LBM/MultiphaseScratchCumulantLBMKernel.cpp b/src/cpu/MultiphaseFlow/LBM/MultiphaseScratchCumulantLBMKernel.cpp index 85d6dcadcd3f8ebf661d7f32f18dcbc54c4eb5c4..1f1bb536a19251ac1cabb2696035e6645cede09c 100644 --- a/src/cpu/MultiphaseFlow/LBM/MultiphaseScratchCumulantLBMKernel.cpp +++ b/src/cpu/MultiphaseFlow/LBM/MultiphaseScratchCumulantLBMKernel.cpp @@ -441,13 +441,13 @@ void MultiphaseScratchCumulantLBMKernel::calculate(int step) ///!test - collFactorM = collFactorL + (collFactorL - collFactorG) * (phi[DIR_000] - phiH) / (phiH - phiL); + collFactorM = collFactorL + (collFactorL - collFactorG) * (phi[d000] - phiH) / (phiH - phiL); //collFactorM = phi[REST] - phiL < (phiH - phiL) * 0.05 ? collFactorG : collFactorL; - real mu = 2 * beta * phi[DIR_000] * (phi[DIR_000] - 1) * (2 * phi[DIR_000] - 1) - kappa * nabla2_phi(); + real mu = 2 * beta * phi[d000] * (phi[d000] - 1) * (2 * phi[d000] - 1) - kappa * nabla2_phi(); //----------- Calculating Macroscopic Values ------------- - real rho = rhoH + rhoToPhi * (phi[DIR_000] - phiH); + real rho = rhoH + rhoToPhi * (phi[d000] - phiH); if (withForcing) { // muX1 = static_cast<double>(x1-1+ix1*maxX1); @@ -598,9 +598,9 @@ void MultiphaseScratchCumulantLBMKernel::calculate(int step) // vvxF = vvxF; //} real weightGrad = 1.0-denom*denom/(denom*denom+0.0001*0.001); - real dX1_phiF = dX1_phi * weightGrad + (1.0 - weightGrad) * (1.0 - phi[DIR_000]) * (phi[DIR_000]) * normX1; - real dX2_phiF = dX2_phi * weightGrad + (1.0 - weightGrad) * (1.0 - phi[DIR_000]) * (phi[DIR_000]) * normX2; - real dX3_phiF = dX3_phi * weightGrad + (1.0 - weightGrad) * (1.0 - phi[DIR_000]) * (phi[DIR_000]) * normX3; + real dX1_phiF = dX1_phi * weightGrad + (1.0 - weightGrad) * (1.0 - phi[d000]) * (phi[d000]) * normX1; + real dX2_phiF = dX2_phi * weightGrad + (1.0 - weightGrad) * (1.0 - phi[d000]) * (phi[d000]) * normX2; + real dX3_phiF = dX3_phi * weightGrad + (1.0 - weightGrad) * (1.0 - phi[d000]) * (phi[d000]) * normX3; //dX1_phiF *= 1.2; //dX2_phiF *= 1.2; @@ -656,15 +656,15 @@ void MultiphaseScratchCumulantLBMKernel::calculate(int step) } - real gamma = WEIGTH[DIR_000] * (1.0 - 1.5 * (ux2 + uy2 + uz2)); - real fac1 = (gamma - WEIGTH[DIR_000]) * c1o3 * rhoToPhi; - forcingTerm[DIR_000] = (-vvxF) * (fac1 * dX1_phiF ) + + real gamma = WEIGTH[d000] * (1.0 - 1.5 * (ux2 + uy2 + uz2)); + real fac1 = (gamma - WEIGTH[d000]) * c1o3 * rhoToPhi; + forcingTerm[d000] = (-vvxF) * (fac1 * dX1_phiF ) + (-vvyF) * (fac1 * dX2_phiF ) + (-vvzF) * (fac1 * dX3_phiF ); //////// // LBMReal divAfterSource= - //( mfcbb + 3.0 * (0.5 * forcingTerm[DIR_P00]) / rho ) *((vvxF-1)*(vvxF-1)+(vvyF) *(vvyF) +(vvzF) *(vvzF)-1)+ + //( mfcbb + 3.0 * (0.5 * forcingTerm[dP00]) / rho ) *((vvxF-1)*(vvxF-1)+(vvyF) *(vvyF) +(vvzF) *(vvzF)-1)+ //( mfbcb + 3.0 * (0.5 * forcingTerm[N]) / rho ) *((vvxF) *(vvxF) +(vvyF-1)*(vvyF-1)+(vvzF) *(vvzF)-1)+ //( mfbbc + 3.0 * (0.5 * forcingTerm[T]) / rho ) *((vvxF) *(vvxF) +(vvyF) *(vvyF) +(vvzF-1)*(vvzF-1)-1)+ //( mfccb + 3.0 * (0.5 * forcingTerm[NE]) / rho ) *((vvxF-1)*(vvxF-1)+(vvyF-1)*(vvyF-1)+(vvzF) *(vvzF)-1)+ @@ -727,7 +727,7 @@ void MultiphaseScratchCumulantLBMKernel::calculate(int step) //if (fabs(divAfterSource - divBeforeSource)/(fabs(divAfterSource) + fabs(divBeforeSource)+1e-10) > 1e-5) { // LBMReal scaleDiv =0.95+(1-0.95)* (divBeforeSource) / (divBeforeSource - divAfterSource); - // forcingTerm[DIR_P00] *=scaleDiv; + // forcingTerm[dP00] *=scaleDiv; // forcingTerm[N] *=scaleDiv; // forcingTerm[T] *=scaleDiv; // forcingTerm[NE] *=scaleDiv; @@ -758,33 +758,33 @@ void MultiphaseScratchCumulantLBMKernel::calculate(int step) //////// - mfcbb +=3.0 * ( 0.5 * forcingTerm[DIR_P00]) / rho; //-(3.0*p1 - rho)*WEIGTH[E ]; - mfbcb +=3.0 * ( 0.5 * forcingTerm[DIR_0P0]) / rho; //-(3.0*p1 - rho)*WEIGTH[N ]; - mfbbc +=3.0 * ( 0.5 * forcingTerm[DIR_00P]) / rho; //-(3.0*p1 - rho)*WEIGTH[T ]; - mfccb +=3.0 * ( 0.5 * forcingTerm[DIR_PP0]) / rho; //-(3.0*p1 - rho)*WEIGTH[NE ]; - mfacb +=3.0 * ( 0.5 * forcingTerm[DIR_MP0]) / rho; //-(3.0*p1 - rho)*WEIGTH[NW ]; - mfcbc +=3.0 * ( 0.5 * forcingTerm[DIR_P0P]) / rho; //-(3.0*p1 - rho)*WEIGTH[TE ]; - mfabc +=3.0 * ( 0.5 * forcingTerm[DIR_M0P]) / rho; //-(3.0*p1 - rho)*WEIGTH[TW ]; - mfbcc +=3.0 * ( 0.5 * forcingTerm[DIR_0PP]) / rho; //-(3.0*p1 - rho)*WEIGTH[TN ]; - mfbac +=3.0 * ( 0.5 * forcingTerm[DIR_0MP]) / rho; //-(3.0*p1 - rho)*WEIGTH[TS ]; - mfccc +=3.0 * ( 0.5 * forcingTerm[DIR_PPP]) / rho; //-(3.0*p1 - rho)*WEIGTH[TNE]; - mfacc +=3.0 * ( 0.5 * forcingTerm[DIR_MPP]) / rho; //-(3.0*p1 - rho)*WEIGTH[TNW]; - mfcac +=3.0 * ( 0.5 * forcingTerm[DIR_PMP]) / rho; //-(3.0*p1 - rho)*WEIGTH[TSE]; - mfaac +=3.0 * ( 0.5 * forcingTerm[DIR_MMP]) / rho; //-(3.0*p1 - rho)*WEIGTH[TSW]; - mfabb +=3.0 * ( 0.5 * forcingTerm[DIR_M00]) / rho; //-(3.0*p1 - rho)*WEIGTH[W ]; - mfbab +=3.0 * ( 0.5 * forcingTerm[DIR_0M0]) / rho; //-(3.0*p1 - rho)*WEIGTH[S ]; - mfbba +=3.0 * ( 0.5 * forcingTerm[DIR_00M]) / rho; //-(3.0*p1 - rho)*WEIGTH[B ]; - mfaab +=3.0 * ( 0.5 * forcingTerm[DIR_MM0]) / rho; //-(3.0*p1 - rho)*WEIGTH[SW ]; - mfcab +=3.0 * ( 0.5 * forcingTerm[DIR_PM0]) / rho; //-(3.0*p1 - rho)*WEIGTH[SE ]; - mfaba +=3.0 * ( 0.5 * forcingTerm[DIR_M0M]) / rho; //-(3.0*p1 - rho)*WEIGTH[BW ]; - mfcba +=3.0 * ( 0.5 * forcingTerm[DIR_P0M]) / rho; //-(3.0*p1 - rho)*WEIGTH[BE ]; - mfbaa +=3.0 * ( 0.5 * forcingTerm[DIR_0MM]) / rho; //-(3.0*p1 - rho)*WEIGTH[BS ]; - mfbca +=3.0 * ( 0.5 * forcingTerm[DIR_0PM]) / rho; //-(3.0*p1 - rho)*WEIGTH[BN ]; - mfaaa +=3.0 * ( 0.5 * forcingTerm[DIR_MMM]) / rho; //-(3.0*p1 - rho)*WEIGTH[BSW]; - mfcaa +=3.0 * ( 0.5 * forcingTerm[DIR_PMM]) / rho; //-(3.0*p1 - rho)*WEIGTH[BSE]; - mfaca +=3.0 * ( 0.5 * forcingTerm[DIR_MPM]) / rho; //-(3.0*p1 - rho)*WEIGTH[BNW]; - mfcca +=3.0 * ( 0.5 * forcingTerm[DIR_PPM]) / rho; //-(3.0*p1 - rho)*WEIGTH[BNE]; - mfbbb +=3.0 * ( 0.5 * forcingTerm[DIR_000]) / rho; //- (3.0*p1 - rho)*WEIGTH[REST] + mfcbb +=3.0 * ( 0.5 * forcingTerm[dP00]) / rho; //-(3.0*p1 - rho)*WEIGTH[E ]; + mfbcb +=3.0 * ( 0.5 * forcingTerm[d0P0]) / rho; //-(3.0*p1 - rho)*WEIGTH[N ]; + mfbbc +=3.0 * ( 0.5 * forcingTerm[d00P]) / rho; //-(3.0*p1 - rho)*WEIGTH[T ]; + mfccb +=3.0 * ( 0.5 * forcingTerm[dPP0]) / rho; //-(3.0*p1 - rho)*WEIGTH[NE ]; + mfacb +=3.0 * ( 0.5 * forcingTerm[dMP0]) / rho; //-(3.0*p1 - rho)*WEIGTH[NW ]; + mfcbc +=3.0 * ( 0.5 * forcingTerm[dP0P]) / rho; //-(3.0*p1 - rho)*WEIGTH[TE ]; + mfabc +=3.0 * ( 0.5 * forcingTerm[dM0P]) / rho; //-(3.0*p1 - rho)*WEIGTH[TW ]; + mfbcc +=3.0 * ( 0.5 * forcingTerm[d0PP]) / rho; //-(3.0*p1 - rho)*WEIGTH[TN ]; + mfbac +=3.0 * ( 0.5 * forcingTerm[d0MP]) / rho; //-(3.0*p1 - rho)*WEIGTH[TS ]; + mfccc +=3.0 * ( 0.5 * forcingTerm[dPPP]) / rho; //-(3.0*p1 - rho)*WEIGTH[TNE]; + mfacc +=3.0 * ( 0.5 * forcingTerm[dMPP]) / rho; //-(3.0*p1 - rho)*WEIGTH[TNW]; + mfcac +=3.0 * ( 0.5 * forcingTerm[dPMP]) / rho; //-(3.0*p1 - rho)*WEIGTH[TSE]; + mfaac +=3.0 * ( 0.5 * forcingTerm[dMMP]) / rho; //-(3.0*p1 - rho)*WEIGTH[TSW]; + mfabb +=3.0 * ( 0.5 * forcingTerm[dM00]) / rho; //-(3.0*p1 - rho)*WEIGTH[W ]; + mfbab +=3.0 * ( 0.5 * forcingTerm[d0M0]) / rho; //-(3.0*p1 - rho)*WEIGTH[S ]; + mfbba +=3.0 * ( 0.5 * forcingTerm[d00M]) / rho; //-(3.0*p1 - rho)*WEIGTH[B ]; + mfaab +=3.0 * ( 0.5 * forcingTerm[dMM0]) / rho; //-(3.0*p1 - rho)*WEIGTH[SW ]; + mfcab +=3.0 * ( 0.5 * forcingTerm[dPM0]) / rho; //-(3.0*p1 - rho)*WEIGTH[SE ]; + mfaba +=3.0 * ( 0.5 * forcingTerm[dM0M]) / rho; //-(3.0*p1 - rho)*WEIGTH[BW ]; + mfcba +=3.0 * ( 0.5 * forcingTerm[dP0M]) / rho; //-(3.0*p1 - rho)*WEIGTH[BE ]; + mfbaa +=3.0 * ( 0.5 * forcingTerm[d0MM]) / rho; //-(3.0*p1 - rho)*WEIGTH[BS ]; + mfbca +=3.0 * ( 0.5 * forcingTerm[d0PM]) / rho; //-(3.0*p1 - rho)*WEIGTH[BN ]; + mfaaa +=3.0 * ( 0.5 * forcingTerm[dMMM]) / rho; //-(3.0*p1 - rho)*WEIGTH[BSW]; + mfcaa +=3.0 * ( 0.5 * forcingTerm[dPMM]) / rho; //-(3.0*p1 - rho)*WEIGTH[BSE]; + mfaca +=3.0 * ( 0.5 * forcingTerm[dMPM]) / rho; //-(3.0*p1 - rho)*WEIGTH[BNW]; + mfcca +=3.0 * ( 0.5 * forcingTerm[dPPM]) / rho; //-(3.0*p1 - rho)*WEIGTH[BNE]; + mfbbb +=3.0 * ( 0.5 * forcingTerm[d000]) / rho; //- (3.0*p1 - rho)*WEIGTH[REST] //-------------------------------------------------------- @@ -1096,7 +1096,7 @@ void MultiphaseScratchCumulantLBMKernel::calculate(int step) real OxyyMxzz = 8.0 * (collFactorM - 2.0) * (collFactorM + OxxPyyPzz * (3.0 * collFactorM - 7.0)) / (OxxPyyPzz * (56.0 - 42.0 * collFactorM + 9.0 * collFactorM * collFactorM) - 8.0 * collFactorM); real Oxyz = 24.0 * (collFactorM - 2.0) * (4.0 * collFactorM * collFactorM + collFactorM * OxxPyyPzz * (18.0 - 13.0 * collFactorM) + OxxPyyPzz * OxxPyyPzz * (2.0 + collFactorM * (6.0 * collFactorM - 11.0))) / (16.0 * collFactorM * collFactorM * (collFactorM - 6.0) - 2.0 * collFactorM * OxxPyyPzz * (216.0 + 5.0 * collFactorM * (9.0 * collFactorM - 46.0)) + OxxPyyPzz * OxxPyyPzz * (collFactorM * (3.0 * collFactorM - 10.0) * (15.0 * collFactorM - 28.0) - 48.0)); real A = (4.0 * collFactorM * collFactorM + 2.0 * collFactorM * OxxPyyPzz * (collFactorM - 6.0) + OxxPyyPzz * OxxPyyPzz * (collFactorM * (10.0 - 3.0 * collFactorM) - 4.0)) / ((collFactorM - OxxPyyPzz) * (OxxPyyPzz * (2.0 + 3.0 * collFactorM) - 8.0 * collFactorM)); - //FIXME: warning C4459: declaration of 'B' hides global declaration (message : see declaration of 'D3Q27System::DIR_00M' ) + //FIXME: warning C4459: declaration of 'B' hides global declaration (message : see declaration of 'D3Q27System::d00M' ) real BB = (4.0 * collFactorM * OxxPyyPzz * (9.0 * collFactorM - 16.0) - 4.0 * collFactorM * collFactorM - 2.0 * OxxPyyPzz * OxxPyyPzz * (2.0 + 9.0 * collFactorM * (collFactorM - 2.0))) / (3.0 * (collFactorM - OxxPyyPzz) * (OxxPyyPzz * (2.0 + 3.0 * collFactorM) - 8.0 * collFactorM)); @@ -1172,7 +1172,7 @@ void MultiphaseScratchCumulantLBMKernel::calculate(int step) ////relax unfiltered //! divergenceFilter 10.05.2021 - real divMag= (1.0 - phi[DIR_000]) * (phi[DIR_000])*10*5*sqrt(fabs((OxxPyyPzz * (/*mfaaa*/ -mxxPyyPzz) - 3. * (1. - c1o2 * OxxPyyPzz) * (vx2 * dxux + vy2 * dyuy + vz2 * dzuz)))); + real divMag= (1.0 - phi[d000]) * (phi[d000])*10*5*sqrt(fabs((OxxPyyPzz * (/*mfaaa*/ -mxxPyyPzz) - 3. * (1. - c1o2 * OxxPyyPzz) * (vx2 * dxux + vy2 * dyuy + vz2 * dzuz)))); // LBMReal divMag = 500 *500* 50*(fabs((OxxPyyPzz * (/*mfaaa*/ -mxxPyyPzz) - 3. * (1. - c1o2 * OxxPyyPzz) * (vx2 * dxux + vy2 * dyuy + vz2 * dzuz))))* (fabs((OxxPyyPzz * (/*mfaaa*/ -mxxPyyPzz) - 3. * (1. - c1o2 * OxxPyyPzz) * (vx2 * dxux + vy2 * dyuy + vz2 * dzuz)))); //LBMReal divMag = (dX1_phi * dxux) > 0 ? (dX1_phi * dxux) : 0; //divMag += (dX2_phi * dyuy) > 0 ? (dX2_phi * dyuy) : 0; @@ -1629,33 +1629,33 @@ void MultiphaseScratchCumulantLBMKernel::calculate(int step) /////classical source term 8.4.2021 - mfcbb += 3.0 * (0.5 * forcingTerm[DIR_P00]) / rho; //-(3.0*p1 - rho)*WEIGTH[E ]; - mfbcb += 3.0 * (0.5 * forcingTerm[DIR_0P0]) / rho; //-(3.0*p1 - rho)*WEIGTH[N ]; - mfbbc += 3.0 * (0.5 * forcingTerm[DIR_00P]) / rho; //-(3.0*p1 - rho)*WEIGTH[T ]; - mfccb += 3.0 * (0.5 * forcingTerm[DIR_PP0]) / rho; //-(3.0*p1 - rho)*WEIGTH[NE ]; - mfacb += 3.0 * (0.5 * forcingTerm[DIR_MP0]) / rho; //-(3.0*p1 - rho)*WEIGTH[NW ]; - mfcbc += 3.0 * (0.5 * forcingTerm[DIR_P0P]) / rho; //-(3.0*p1 - rho)*WEIGTH[TE ]; - mfabc += 3.0 * (0.5 * forcingTerm[DIR_M0P]) / rho; //-(3.0*p1 - rho)*WEIGTH[TW ]; - mfbcc += 3.0 * (0.5 * forcingTerm[DIR_0PP]) / rho; //-(3.0*p1 - rho)*WEIGTH[TN ]; - mfbac += 3.0 * (0.5 * forcingTerm[DIR_0MP]) / rho; //-(3.0*p1 - rho)*WEIGTH[TS ]; - mfccc += 3.0 * (0.5 * forcingTerm[DIR_PPP]) / rho; //-(3.0*p1 - rho)*WEIGTH[TNE]; - mfacc += 3.0 * (0.5 * forcingTerm[DIR_MPP]) / rho; //-(3.0*p1 - rho)*WEIGTH[TNW]; - mfcac += 3.0 * (0.5 * forcingTerm[DIR_PMP]) / rho; //-(3.0*p1 - rho)*WEIGTH[TSE]; - mfaac += 3.0 * (0.5 * forcingTerm[DIR_MMP]) / rho; //-(3.0*p1 - rho)*WEIGTH[TSW]; - mfabb += 3.0 * (0.5 * forcingTerm[DIR_M00]) / rho; //-(3.0*p1 - rho)*WEIGTH[W ]; - mfbab += 3.0 * (0.5 * forcingTerm[DIR_0M0]) / rho; //-(3.0*p1 - rho)*WEIGTH[S ]; - mfbba += 3.0 * (0.5 * forcingTerm[DIR_00M]) / rho; //-(3.0*p1 - rho)*WEIGTH[B ]; - mfaab += 3.0 * (0.5 * forcingTerm[DIR_MM0]) / rho; //-(3.0*p1 - rho)*WEIGTH[SW ]; - mfcab += 3.0 * (0.5 * forcingTerm[DIR_PM0]) / rho; //-(3.0*p1 - rho)*WEIGTH[SE ]; - mfaba += 3.0 * (0.5 * forcingTerm[DIR_M0M]) / rho; //-(3.0*p1 - rho)*WEIGTH[BW ]; - mfcba += 3.0 * (0.5 * forcingTerm[DIR_P0M]) / rho; //-(3.0*p1 - rho)*WEIGTH[BE ]; - mfbaa += 3.0 * (0.5 * forcingTerm[DIR_0MM]) / rho; //-(3.0*p1 - rho)*WEIGTH[BS ]; - mfbca += 3.0 * (0.5 * forcingTerm[DIR_0PM]) / rho; //-(3.0*p1 - rho)*WEIGTH[BN ]; - mfaaa += 3.0 * (0.5 * forcingTerm[DIR_MMM]) / rho; //-(3.0*p1 - rho)*WEIGTH[BSW]; - mfcaa += 3.0 * (0.5 * forcingTerm[DIR_PMM]) / rho; //-(3.0*p1 - rho)*WEIGTH[BSE]; - mfaca += 3.0 * (0.5 * forcingTerm[DIR_MPM]) / rho; //-(3.0*p1 - rho)*WEIGTH[BNW]; - mfcca += 3.0 * (0.5 * forcingTerm[DIR_PPM]) / rho; //-(3.0*p1 - rho)*WEIGTH[BNE]; - mfbbb += 3.0 * (0.5 * forcingTerm[DIR_000]) / rho; //- (3.0*p1 - rho)*WEIGTH[REST] + mfcbb += 3.0 * (0.5 * forcingTerm[dP00]) / rho; //-(3.0*p1 - rho)*WEIGTH[E ]; + mfbcb += 3.0 * (0.5 * forcingTerm[d0P0]) / rho; //-(3.0*p1 - rho)*WEIGTH[N ]; + mfbbc += 3.0 * (0.5 * forcingTerm[d00P]) / rho; //-(3.0*p1 - rho)*WEIGTH[T ]; + mfccb += 3.0 * (0.5 * forcingTerm[dPP0]) / rho; //-(3.0*p1 - rho)*WEIGTH[NE ]; + mfacb += 3.0 * (0.5 * forcingTerm[dMP0]) / rho; //-(3.0*p1 - rho)*WEIGTH[NW ]; + mfcbc += 3.0 * (0.5 * forcingTerm[dP0P]) / rho; //-(3.0*p1 - rho)*WEIGTH[TE ]; + mfabc += 3.0 * (0.5 * forcingTerm[dM0P]) / rho; //-(3.0*p1 - rho)*WEIGTH[TW ]; + mfbcc += 3.0 * (0.5 * forcingTerm[d0PP]) / rho; //-(3.0*p1 - rho)*WEIGTH[TN ]; + mfbac += 3.0 * (0.5 * forcingTerm[d0MP]) / rho; //-(3.0*p1 - rho)*WEIGTH[TS ]; + mfccc += 3.0 * (0.5 * forcingTerm[dPPP]) / rho; //-(3.0*p1 - rho)*WEIGTH[TNE]; + mfacc += 3.0 * (0.5 * forcingTerm[dMPP]) / rho; //-(3.0*p1 - rho)*WEIGTH[TNW]; + mfcac += 3.0 * (0.5 * forcingTerm[dPMP]) / rho; //-(3.0*p1 - rho)*WEIGTH[TSE]; + mfaac += 3.0 * (0.5 * forcingTerm[dMMP]) / rho; //-(3.0*p1 - rho)*WEIGTH[TSW]; + mfabb += 3.0 * (0.5 * forcingTerm[dM00]) / rho; //-(3.0*p1 - rho)*WEIGTH[W ]; + mfbab += 3.0 * (0.5 * forcingTerm[d0M0]) / rho; //-(3.0*p1 - rho)*WEIGTH[S ]; + mfbba += 3.0 * (0.5 * forcingTerm[d00M]) / rho; //-(3.0*p1 - rho)*WEIGTH[B ]; + mfaab += 3.0 * (0.5 * forcingTerm[dMM0]) / rho; //-(3.0*p1 - rho)*WEIGTH[SW ]; + mfcab += 3.0 * (0.5 * forcingTerm[dPM0]) / rho; //-(3.0*p1 - rho)*WEIGTH[SE ]; + mfaba += 3.0 * (0.5 * forcingTerm[dM0M]) / rho; //-(3.0*p1 - rho)*WEIGTH[BW ]; + mfcba += 3.0 * (0.5 * forcingTerm[dP0M]) / rho; //-(3.0*p1 - rho)*WEIGTH[BE ]; + mfbaa += 3.0 * (0.5 * forcingTerm[d0MM]) / rho; //-(3.0*p1 - rho)*WEIGTH[BS ]; + mfbca += 3.0 * (0.5 * forcingTerm[d0PM]) / rho; //-(3.0*p1 - rho)*WEIGTH[BN ]; + mfaaa += 3.0 * (0.5 * forcingTerm[dMMM]) / rho; //-(3.0*p1 - rho)*WEIGTH[BSW]; + mfcaa += 3.0 * (0.5 * forcingTerm[dPMM]) / rho; //-(3.0*p1 - rho)*WEIGTH[BSE]; + mfaca += 3.0 * (0.5 * forcingTerm[dMPM]) / rho; //-(3.0*p1 - rho)*WEIGTH[BNW]; + mfcca += 3.0 * (0.5 * forcingTerm[dPPM]) / rho; //-(3.0*p1 - rho)*WEIGTH[BNE]; + mfbbb += 3.0 * (0.5 * forcingTerm[d000]) / rho; //- (3.0*p1 - rho)*WEIGTH[REST] @@ -1750,7 +1750,7 @@ void MultiphaseScratchCumulantLBMKernel::calculate(int step) // // //-------------------------------------------------------- // -// mfcbb = 3.0 * (mfcbb + 0.5 * forcingTerm[DIR_P00]) / rho; //-(3.0*p1 - rho)*WEIGTH[E ]; +// mfcbb = 3.0 * (mfcbb + 0.5 * forcingTerm[dP00]) / rho; //-(3.0*p1 - rho)*WEIGTH[E ]; // mfbcb = 3.0 * (mfbcb + 0.5 * forcingTerm[N]) / rho; //-(3.0*p1 - rho)*WEIGTH[N ]; // mfbbc = 3.0 * (mfbbc + 0.5 * forcingTerm[T]) / rho; //-(3.0*p1 - rho)*WEIGTH[T ]; // mfccb = 3.0 * (mfccb + 0.5 * forcingTerm[NE]) / rho; //-(3.0*p1 - rho)*WEIGTH[NE ]; @@ -2458,7 +2458,7 @@ void MultiphaseScratchCumulantLBMKernel::calculate(int step) // } //#endif // -// mfcbb = rho * c1o3 * (mfcbb) + 0.5 * forcingTerm[DIR_P00]; +// mfcbb = rho * c1o3 * (mfcbb) + 0.5 * forcingTerm[dP00]; // mfbcb = rho * c1o3 * (mfbcb) + 0.5 * forcingTerm[N]; // mfbbc = rho * c1o3 * (mfbbc) + 0.5 * forcingTerm[T]; // mfccb = rho * c1o3 * (mfccb) + 0.5 * forcingTerm[NE]; @@ -2681,9 +2681,9 @@ void MultiphaseScratchCumulantLBMKernel::calculate(int step) real Mccb = mfccb - mfaab * c1o9; // collision of 1st order moments - cx = cx * (c1o1 - omegaD) + omegaD * vvx * concentration + normX1 * (c1o1 - 0.5 * omegaD) * (1.0 - phi[DIR_000]) * (phi[DIR_000]) * c1o3 * oneOverInterfaceScale; - cy = cy * (c1o1 - omegaD) + omegaD * vvy * concentration + normX2 * (c1o1 - 0.5 * omegaD) * (1.0 - phi[DIR_000]) * (phi[DIR_000]) * c1o3 * oneOverInterfaceScale; - cz = cz * (c1o1 - omegaD) + omegaD * vvz * concentration + normX3 * (c1o1 - 0.5 * omegaD) * (1.0 - phi[DIR_000]) * (phi[DIR_000]) * c1o3 * oneOverInterfaceScale; + cx = cx * (c1o1 - omegaD) + omegaD * vvx * concentration + normX1 * (c1o1 - 0.5 * omegaD) * (1.0 - phi[d000]) * (phi[d000]) * c1o3 * oneOverInterfaceScale; + cy = cy * (c1o1 - omegaD) + omegaD * vvy * concentration + normX2 * (c1o1 - 0.5 * omegaD) * (1.0 - phi[d000]) * (phi[d000]) * c1o3 * oneOverInterfaceScale; + cz = cz * (c1o1 - omegaD) + omegaD * vvz * concentration + normX3 * (c1o1 - 0.5 * omegaD) * (1.0 - phi[d000]) * (phi[d000]) * c1o3 * oneOverInterfaceScale; //mhx = (ux * phi[REST] + normX1 * (tauH - 0.5) * (1.0 - phi[REST]) * (phi[REST])) / tauH + (1.0 - 1.0 / tauH) * mhx; //mhy = (uy * phi[REST] + normX2 * (tauH - 0.5) * (1.0 - phi[REST]) * (phi[REST])) / tauH + (1.0 - 1.0 / tauH) * mhy; @@ -2833,7 +2833,7 @@ void MultiphaseScratchCumulantLBMKernel::calculate(int step) /////////////////// PHASE-FIELD BGK SOLVER /////////////////////////////// //using namespace D3Q27System; - // h[DIR_P00] = (*this->localDistributionsH)(D3Q27System::ET_E, x1, x2, x3); + // h[dP00] = (*this->localDistributionsH)(D3Q27System::ET_E, x1, x2, x3); // h[N] = (*this->localDistributionsH)(D3Q27System::ET_N, x1, x2, x3); // h[T] = (*this->localDistributionsH)(D3Q27System::ET_T, x1, x2, x3); // h[NE] = (*this->localDistributionsH)(D3Q27System::ET_NE, x1, x2, x3); @@ -2933,9 +2933,9 @@ real MultiphaseScratchCumulantLBMKernel::gradX1_phi() using namespace vf::lbm::dir; using namespace D3Q27System; - return 3.0* ((WEIGTH[DIR_PPP] * (((phi[DIR_PPP] - phi[DIR_MMM]) + (phi[DIR_PMM] - phi[DIR_MPP])) + ((phi[DIR_PMP] - phi[DIR_MPM]) + (phi[DIR_PPM] - phi[DIR_MMP]))) - + WEIGTH[DIR_PP0] * (((phi[DIR_P0P] - phi[DIR_M0M]) + (phi[DIR_P0M] - phi[DIR_M0P])) + ((phi[DIR_PM0] - phi[DIR_MP0]) + (phi[DIR_PP0] - phi[DIR_MM0])))) + - +WEIGTH[DIR_0P0] * (phi[DIR_P00] - phi[DIR_M00])); + return 3.0* ((WEIGTH[dPPP] * (((phi[dPPP] - phi[dMMM]) + (phi[dPMM] - phi[dMPP])) + ((phi[dPMP] - phi[dMPM]) + (phi[dPPM] - phi[dMMP]))) + + WEIGTH[dPP0] * (((phi[dP0P] - phi[dM0M]) + (phi[dP0M] - phi[dM0P])) + ((phi[dPM0] - phi[dMP0]) + (phi[dPP0] - phi[dMM0])))) + + +WEIGTH[d0P0] * (phi[dP00] - phi[dM00])); //LBMReal sum = 0.0; //for (int k = FSTARTDIR; k <= FENDDIR; k++) { // sum += WEIGTH[k] * DX1[k] * phi[k]; @@ -2948,9 +2948,9 @@ real MultiphaseScratchCumulantLBMKernel::gradX2_phi() using namespace vf::lbm::dir; using namespace D3Q27System; - return 3.0 * ((WEIGTH[DIR_PPP] * (((phi[DIR_PPP] - phi[DIR_MMM]) - (phi[DIR_PMM] - phi[DIR_MPP])) + ((phi[DIR_PPM] - phi[DIR_MMP])- (phi[DIR_PMP] - phi[DIR_MPM]))) - + WEIGTH[DIR_PP0] * (((phi[DIR_0PP] - phi[DIR_0MM]) + (phi[DIR_0PM] - phi[DIR_0MP])) + ((phi[DIR_PP0] - phi[DIR_MM0])- (phi[DIR_PM0] - phi[DIR_MP0])))) + - +WEIGTH[DIR_0P0] * (phi[DIR_0P0] - phi[DIR_0M0])); + return 3.0 * ((WEIGTH[dPPP] * (((phi[dPPP] - phi[dMMM]) - (phi[dPMM] - phi[dMPP])) + ((phi[dPPM] - phi[dMMP])- (phi[dPMP] - phi[dMPM]))) + + WEIGTH[dPP0] * (((phi[d0PP] - phi[d0MM]) + (phi[d0PM] - phi[d0MP])) + ((phi[dPP0] - phi[dMM0])- (phi[dPM0] - phi[dMP0])))) + + +WEIGTH[d0P0] * (phi[d0P0] - phi[d0M0])); //LBMReal sum = 0.0; //for (int k = FSTARTDIR; k <= FENDDIR; k++) { // sum += WEIGTH[k] * DX2[k] * phi[k]; @@ -2963,9 +2963,9 @@ real MultiphaseScratchCumulantLBMKernel::gradX3_phi() using namespace vf::lbm::dir; using namespace D3Q27System; - return 3.0 * ((WEIGTH[DIR_PPP] * (((phi[DIR_PPP] - phi[DIR_MMM]) - (phi[DIR_PMM] - phi[DIR_MPP])) + ((phi[DIR_PMP] - phi[DIR_MPM]) - (phi[DIR_PPM] - phi[DIR_MMP]))) - + WEIGTH[DIR_PP0] * (((phi[DIR_P0P] - phi[DIR_M0M]) - (phi[DIR_P0M] - phi[DIR_M0P])) + ((phi[DIR_0MP] - phi[DIR_0PM]) + (phi[DIR_0PP] - phi[DIR_0MM])))) + - +WEIGTH[DIR_0P0] * (phi[DIR_00P] - phi[DIR_00M])); + return 3.0 * ((WEIGTH[dPPP] * (((phi[dPPP] - phi[dMMM]) - (phi[dPMM] - phi[dMPP])) + ((phi[dPMP] - phi[dMPM]) - (phi[dPPM] - phi[dMMP]))) + + WEIGTH[dPP0] * (((phi[dP0P] - phi[dM0M]) - (phi[dP0M] - phi[dM0P])) + ((phi[d0MP] - phi[d0PM]) + (phi[d0PP] - phi[d0MM])))) + + +WEIGTH[d0P0] * (phi[d00P] - phi[d00M])); //LBMReal sum = 0.0; //for (int k = FSTARTDIR; k <= FENDDIR; k++) { // sum += WEIGTH[k] * DX3[k] * phi[k]; @@ -2979,17 +2979,17 @@ real MultiphaseScratchCumulantLBMKernel::nabla2_phi() using namespace vf::lbm::dir; real sum = 0.0; - sum += WEIGTH[DIR_PPP] * ((((phi[DIR_PPP] - phi[DIR_000]) + (phi[DIR_MMM] - phi[DIR_000])) + ((phi[DIR_MMP] - phi[DIR_000]) + (phi[DIR_PPM] - phi[DIR_000]))) - + (((phi[DIR_MPP] - phi[DIR_000]) + (phi[DIR_PMM] - phi[DIR_000])) + ((phi[DIR_PMP] - phi[DIR_000]) + (phi[DIR_MPM] - phi[DIR_000])))); - sum += WEIGTH[DIR_0PP] * ( - (((phi[DIR_0PP] - phi[DIR_000]) + (phi[DIR_0MM] - phi[DIR_000])) + ((phi[DIR_0MP] - phi[DIR_000]) + (phi[DIR_0PM] - phi[DIR_000]))) - + (((phi[DIR_P0P] - phi[DIR_000]) + (phi[DIR_M0M] - phi[DIR_000])) + ((phi[DIR_M0P] - phi[DIR_000]) + (phi[DIR_P0M] - phi[DIR_000]))) - + (((phi[DIR_PP0] - phi[DIR_000]) + (phi[DIR_MM0] - phi[DIR_000])) + ((phi[DIR_MP0] - phi[DIR_000]) + (phi[DIR_PM0] - phi[DIR_000]))) + sum += WEIGTH[dPPP] * ((((phi[dPPP] - phi[d000]) + (phi[dMMM] - phi[d000])) + ((phi[dMMP] - phi[d000]) + (phi[dPPM] - phi[d000]))) + + (((phi[dMPP] - phi[d000]) + (phi[dPMM] - phi[d000])) + ((phi[dPMP] - phi[d000]) + (phi[dMPM] - phi[d000])))); + sum += WEIGTH[d0PP] * ( + (((phi[d0PP] - phi[d000]) + (phi[d0MM] - phi[d000])) + ((phi[d0MP] - phi[d000]) + (phi[d0PM] - phi[d000]))) + + (((phi[dP0P] - phi[d000]) + (phi[dM0M] - phi[d000])) + ((phi[dM0P] - phi[d000]) + (phi[dP0M] - phi[d000]))) + + (((phi[dPP0] - phi[d000]) + (phi[dMM0] - phi[d000])) + ((phi[dMP0] - phi[d000]) + (phi[dPM0] - phi[d000]))) ); - sum += WEIGTH[DIR_00P] * ( - ((phi[DIR_00P] - phi[DIR_000]) + (phi[DIR_00M] - phi[DIR_000])) - + ((phi[DIR_0P0] - phi[DIR_000]) + (phi[DIR_0M0] - phi[DIR_000])) - + ((phi[DIR_P00] - phi[DIR_000]) + (phi[DIR_M00] - phi[DIR_000])) + sum += WEIGTH[d00P] * ( + ((phi[d00P] - phi[d000]) + (phi[d00M] - phi[d000])) + + ((phi[d0P0] - phi[d000]) + (phi[d0M0] - phi[d000])) + + ((phi[dP00] - phi[d000]) + (phi[dM00] - phi[d000])) ); //for (int k = FSTARTDIR; k <= FENDDIR; k++) { // sum += WEIGTH[k] * (phi[k] - phi[REST]); @@ -3021,35 +3021,35 @@ void MultiphaseScratchCumulantLBMKernel::computePhasefield() int x2p = x2 + 1; int x3p = x3 + 1; - h[DIR_P00] = (*this->localDistributionsH)(D3Q27System::ET_E, x1, x2, x3); - h[DIR_0P0] = (*this->localDistributionsH)(D3Q27System::ET_N, x1, x2, x3); - h[DIR_00P] = (*this->localDistributionsH)(D3Q27System::ET_T, x1, x2, x3); - h[DIR_PP0] = (*this->localDistributionsH)(D3Q27System::ET_NE, x1, x2, x3); - h[DIR_MP0] = (*this->localDistributionsH)(D3Q27System::ET_NW, x1p, x2, x3); - h[DIR_P0P] = (*this->localDistributionsH)(D3Q27System::ET_TE, x1, x2, x3); - h[DIR_M0P] = (*this->localDistributionsH)(D3Q27System::ET_TW, x1p, x2, x3); - h[DIR_0PP] = (*this->localDistributionsH)(D3Q27System::ET_TN, x1, x2, x3); - h[DIR_0MP] = (*this->localDistributionsH)(D3Q27System::ET_TS, x1, x2p, x3); - h[DIR_PPP] = (*this->localDistributionsH)(D3Q27System::ET_TNE, x1, x2, x3); - h[DIR_MPP] = (*this->localDistributionsH)(D3Q27System::ET_TNW, x1p, x2, x3); - h[DIR_PMP] = (*this->localDistributionsH)(D3Q27System::ET_TSE, x1, x2p, x3); - h[DIR_MMP] = (*this->localDistributionsH)(D3Q27System::ET_TSW, x1p, x2p, x3); - - h[DIR_M00] = (*this->nonLocalDistributionsH)(D3Q27System::ET_W, x1p, x2, x3); - h[DIR_0M0] = (*this->nonLocalDistributionsH)(D3Q27System::ET_S, x1, x2p, x3); - h[DIR_00M] = (*this->nonLocalDistributionsH)(D3Q27System::ET_B, x1, x2, x3p); - h[DIR_MM0] = (*this->nonLocalDistributionsH)(D3Q27System::ET_SW, x1p, x2p, x3); - h[DIR_PM0] = (*this->nonLocalDistributionsH)(D3Q27System::ET_SE, x1, x2p, x3); - h[DIR_M0M] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BW, x1p, x2, x3p); - h[DIR_P0M] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BE, x1, x2, x3p); - h[DIR_0MM] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BS, x1, x2p, x3p); - h[DIR_0PM] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BN, x1, x2, x3p); - h[DIR_MMM] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BSW, x1p, x2p, x3p); - h[DIR_PMM] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BSE, x1, x2p, x3p); - h[DIR_MPM] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BNW, x1p, x2, x3p); - h[DIR_PPM] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BNE, x1, x2, x3p); - - h[DIR_000] = (*this->zeroDistributionsH)(x1, x2, x3); + h[dP00] = (*this->localDistributionsH)(D3Q27System::ET_E, x1, x2, x3); + h[d0P0] = (*this->localDistributionsH)(D3Q27System::ET_N, x1, x2, x3); + h[d00P] = (*this->localDistributionsH)(D3Q27System::ET_T, x1, x2, x3); + h[dPP0] = (*this->localDistributionsH)(D3Q27System::ET_NE, x1, x2, x3); + h[dMP0] = (*this->localDistributionsH)(D3Q27System::ET_NW, x1p, x2, x3); + h[dP0P] = (*this->localDistributionsH)(D3Q27System::ET_TE, x1, x2, x3); + h[dM0P] = (*this->localDistributionsH)(D3Q27System::ET_TW, x1p, x2, x3); + h[d0PP] = (*this->localDistributionsH)(D3Q27System::ET_TN, x1, x2, x3); + h[d0MP] = (*this->localDistributionsH)(D3Q27System::ET_TS, x1, x2p, x3); + h[dPPP] = (*this->localDistributionsH)(D3Q27System::ET_TNE, x1, x2, x3); + h[dMPP] = (*this->localDistributionsH)(D3Q27System::ET_TNW, x1p, x2, x3); + h[dPMP] = (*this->localDistributionsH)(D3Q27System::ET_TSE, x1, x2p, x3); + h[dMMP] = (*this->localDistributionsH)(D3Q27System::ET_TSW, x1p, x2p, x3); + + h[dM00] = (*this->nonLocalDistributionsH)(D3Q27System::ET_W, x1p, x2, x3); + h[d0M0] = (*this->nonLocalDistributionsH)(D3Q27System::ET_S, x1, x2p, x3); + h[d00M] = (*this->nonLocalDistributionsH)(D3Q27System::ET_B, x1, x2, x3p); + h[dMM0] = (*this->nonLocalDistributionsH)(D3Q27System::ET_SW, x1p, x2p, x3); + h[dPM0] = (*this->nonLocalDistributionsH)(D3Q27System::ET_SE, x1, x2p, x3); + h[dM0M] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BW, x1p, x2, x3p); + h[dP0M] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BE, x1, x2, x3p); + h[d0MM] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BS, x1, x2p, x3p); + h[d0PM] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BN, x1, x2, x3p); + h[dMMM] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BSW, x1p, x2p, x3p); + h[dPMM] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BSE, x1, x2p, x3p); + h[dMPM] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BNW, x1p, x2, x3p); + h[dPPM] = (*this->nonLocalDistributionsH)(D3Q27System::ET_BNE, x1, x2, x3p); + + h[d000] = (*this->zeroDistributionsH)(x1, x2, x3); } } } @@ -3064,7 +3064,7 @@ void MultiphaseScratchCumulantLBMKernel::findNeighbors(CbArray3D<real, IndexerX3 SPtr<BCArray3D> bcArray = this->getBCSet()->getBCArray(); - phi[DIR_000] = (*ph)(x1, x2, x3); + phi[d000] = (*ph)(x1, x2, x3); for (int k = FSTARTDIR; k <= FENDDIR; k++) { diff --git a/src/cpu/MultiphaseFlow/LBM/MultiphaseSharpInterfaceLBMKernel.cpp b/src/cpu/MultiphaseFlow/LBM/MultiphaseSharpInterfaceLBMKernel.cpp index 5d32955a948f9c997832cfd9757a1887d0c58466..d3f3ed1000fd4bc48ab11623294e2b7e7f27b62d 100644 --- a/src/cpu/MultiphaseFlow/LBM/MultiphaseSharpInterfaceLBMKernel.cpp +++ b/src/cpu/MultiphaseFlow/LBM/MultiphaseSharpInterfaceLBMKernel.cpp @@ -258,7 +258,7 @@ void MultiphaseSharpInterfaceLBMKernel::calculate(int step) SPtr<DistributionArray3D> distributionH = this->getDataSet()->getHdistributions(); real hh[27]; - distributionH->getDistributionInv(hh, x1, x2, x3); + distributionH->getPostCollisionDistribution(hh, x1, x2, x3); real phiD, vxP, vyP, vzP; D3Q27System::calcIncompMacroscopicValues(hh, phiD, vxP, vyP, vzP); @@ -267,7 +267,7 @@ void MultiphaseSharpInterfaceLBMKernel::calculate(int step) SPtr<DistributionArray3D> distribution = this->getDataSet()->getFdistributions(); real ff[27]; - distribution->getDistributionInv(ff, x1, x2, x3); + distribution->getPostCollisionDistribution(ff, x1, x2, x3); real rhoG,vx,vy,vz; D3Q27System::calcIncompMacroscopicValues(ff, rhoG, vx, vy, vz); @@ -296,33 +296,33 @@ void MultiphaseSharpInterfaceLBMKernel::calculate(int step) ////////////////////////////////Momentum conservation experiment 06.03.2023 //surfacetension - if ((((*phaseField)(x1, x2, x3) <= c1o2) || phi[DIR_000]<=c1o2)&& ( - (phi[DIR_P00] > c1o2) || - (phi[DIR_M00] > c1o2) || - (phi[DIR_00P] > c1o2) || - (phi[DIR_00M] > c1o2) || - (phi[DIR_0M0] > c1o2) || - (phi[DIR_0P0] > c1o2) || - (phi[DIR_PP0] > c1o2) || - (phi[DIR_PM0] > c1o2) || - (phi[DIR_P0P] > c1o2) || - (phi[DIR_P0M] > c1o2) || - (phi[DIR_MP0] > c1o2) || - (phi[DIR_MM0] > c1o2) || - (phi[DIR_M0P] > c1o2) || - (phi[DIR_M0M] > c1o2) || - (phi[DIR_0PM] > c1o2) || - (phi[DIR_0MM] > c1o2) || - (phi[DIR_0PP] > c1o2) || - (phi[DIR_0MP] > c1o2) || - (phi[DIR_PPP] > c1o2) || - (phi[DIR_PMP] > c1o2) || - (phi[DIR_MPP] > c1o2) || - (phi[DIR_MMP] > c1o2) || - (phi[DIR_PPM] > c1o2) || - (phi[DIR_PMM] > c1o2) || - (phi[DIR_MPM] > c1o2) || - (phi[DIR_MMM] > c1o2) + if ((((*phaseField)(x1, x2, x3) <= c1o2) || phi[d000]<=c1o2)&& ( + (phi[dP00] > c1o2) || + (phi[dM00] > c1o2) || + (phi[d00P] > c1o2) || + (phi[d00M] > c1o2) || + (phi[d0M0] > c1o2) || + (phi[d0P0] > c1o2) || + (phi[dPP0] > c1o2) || + (phi[dPM0] > c1o2) || + (phi[dP0P] > c1o2) || + (phi[dP0M] > c1o2) || + (phi[dMP0] > c1o2) || + (phi[dMM0] > c1o2) || + (phi[dM0P] > c1o2) || + (phi[dM0M] > c1o2) || + (phi[d0PM] > c1o2) || + (phi[d0MM] > c1o2) || + (phi[d0PP] > c1o2) || + (phi[d0MP] > c1o2) || + (phi[dPPP] > c1o2) || + (phi[dPMP] > c1o2) || + (phi[dMPP] > c1o2) || + (phi[dMMP] > c1o2) || + (phi[dPPM] > c1o2) || + (phi[dPMM] > c1o2) || + (phi[dMPM] > c1o2) || + (phi[dMMM] > c1o2) )) { real vx = (*vxNode)(x1, x2, x3); real vy = (*vyNode)(x1, x2, x3); @@ -330,14 +330,14 @@ void MultiphaseSharpInterfaceLBMKernel::calculate(int step) findNeighbors(phaseField, x1, x2, x3); real laplacePressure = c12o1 * sigma * computeCurvature_phi(); // if (step > 5000) - // UBLOG(logINFO, x1 << ","<< x2 << ","<< x3 << " "<< "3*dP=" << laplacePressure << " dP=" << laplacePressure / 3.0<< " phi=" << phi[DIR_000]<< "\n"); + // UBLOG(logINFO, x1 << ","<< x2 << ","<< x3 << " "<< "3*dP=" << laplacePressure << " dP=" << laplacePressure / 3.0<< " phi=" << phi[d000]<< "\n"); findNeighbors(phaseFieldOld, x1, x2, x3); //16.03.23 c: BB gas side with updated boundary velocity - distribution->getDistributionInv(ff, x1, x2, x3); + distribution->getPostCollisionDistribution(ff, x1, x2, x3); real rhoG; - if (phi[DIR_000] > c1o2) { //initialization necessary + if (phi[d000] > c1o2) { //initialization necessary real sumRho = 0; real sumWeight = 1.e-100; for (int fdir = D3Q27System::FSTARTDIR; fdir <= D3Q27System::FENDDIR; fdir++) { @@ -377,24 +377,24 @@ void MultiphaseSharpInterfaceLBMKernel::calculate(int step) //real fGEQNew = D3Q27System::getIncompFeqForDirection(fdir, rhoG, vx, vy, vz); //real fBC = (fL - feqOLD) * (c1o1 / collFactorG - c1o1) / (c1o1 / collFactorL - c1o1) + feqNew;// fL -feqOLD + feqNew; //real fBC = fGG - c6o1 * WEIGTH[fdir] * (vBC); - distribution->setDistributionForDirection(fBC, x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir], D3Q27System::INVDIR[fdir]); + distribution->setPostCollisionDistributionForDirection(fBC, x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir], D3Q27System::INVDIR[fdir]); ///// other possibility is tor replace the node itself instead of the neighbor (only c1o1 of them is allowed!) //real fG = distribution->getDistributionInvForDirection(x1, x2, x3, fdir); //real feqOLD = D3Q27System::getIncompFeqForDirection(fdir, (*rhoNode)(x1 , x2 , x3 ), (*vxNode)(x1 , x2 , x3 ), (*vyNode)(x1 , x2 , x3 ), (*vzNode)(x1 , x2 , x3 )); //real feqNew = D3Q27System::getIncompFeqForDirection(fdir, rhoG, (*vxNode)(x1 , x2 , x3 ), (*vyNode)(x1 , x2 , x3 ), (*vzNode)(x1, x2, x3 )); //real fBC = fG - feqOLD + feqNew; - //distribution->setDistributionForDirection(fBC, x1, x2, x3, fdir); + //distribution->setPostCollisionDistributionForDirection(fBC, x1, x2, x3, fdir); } } } - //distribution->setDistributionForDirection(D3Q27System::getIncompFeqForDirection(DIR_000, rhoG, vx, vy, vz), x1, x2, x3, DIR_000); + //distribution->setPostCollisionDistributionForDirection(D3Q27System::getIncompFeqForDirection(d000, rhoG, vx, vy, vz), x1, x2, x3, d000); { - real fL = distribution->getDistributionInvForDirection(x1, x2, x3, DIR_000); - real feqOLD = D3Q27System::getIncompFeqForDirection(DIR_000, (*rhoNode)(x1, x2, x3), vx,vy,vz); - real feqNew = D3Q27System::getIncompFeqForDirection(DIR_000, rhoG,vx,vy,vz); - distribution->setDistributionForDirection(fL-feqOLD+feqNew, x1, x2, x3, DIR_000); + real fL = distribution->getDistributionInvForDirection(x1, x2, x3, d000); + real feqOLD = D3Q27System::getIncompFeqForDirection(d000, (*rhoNode)(x1, x2, x3), vx,vy,vz); + real feqNew = D3Q27System::getIncompFeqForDirection(d000, rhoG,vx,vy,vz); + distribution->setPostCollisionDistributionForDirection(fL-feqOLD+feqNew, x1, x2, x3, d000); } } @@ -431,7 +431,7 @@ void MultiphaseSharpInterfaceLBMKernel::calculate(int step) //real fBC = (fL - feqOLD) * (c1o1 / collFactorG - c1o1) / (c1o1 / collFactorL - c1o1) + feqNew; //if ((*phaseField)(x1, x2, x3) <= c1o2) - distribution->setDistributionForDirection(fBC, x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir], D3Q27System::INVDIR[fdir]); + distribution->setPostCollisionDistributionForDirection(fBC, x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir], D3Q27System::INVDIR[fdir]); if (((*phaseField)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir])) > c1o2) { //real vxBC = c1o2 * (vx + (*vxNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir])); //real vyBC = c1o2 * (vy + (*vyNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir])); @@ -442,20 +442,20 @@ void MultiphaseSharpInterfaceLBMKernel::calculate(int step) //real feqG = D3Q27System::getIncompFeqForDirection(fdir, 0, (*vxNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir]) * (D3Q27System::DX1[fdir]) * (D3Q27System::DX1[fdir]), (*vyNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir]) * (D3Q27System::DX2[fdir]) * (D3Q27System::DX2[fdir]), (*vzNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir]) * (D3Q27System::DX3[fdir]) * (D3Q27System::DX3[fdir])); //real feqG = D3Q27System::getIncompFeqForDirection(fdir, 0, vx * (D3Q27System::DX1[fdir]) * (D3Q27System::DX1[fdir]), vy * (D3Q27System::DX2[fdir]) * (D3Q27System::DX2[fdir]), vz * (D3Q27System::DX3[fdir]) * (D3Q27System::DX3[fdir])); - //distribution->setDistributionForDirection((fBC + fG) / densityRatio*0 - fL - (feqG - feqL) * (c1o1 / densityRatio*0 - c1o1) * vBC, x1, x2, x3, fdir);// (vxBC * D3Q27System::DX1[fdir] + vyBC * D3Q27System::DX2[fdir] + vzBC * D3Q27System::DX3[fdir]), x1, x2, x3, fdir); - //distribution->setDistributionForDirection((fBC + fG) / densityRatio * 0 - fL - (feqG - feqL-2*fL+2*feqL) * (c1o1 / densityRatio - c1o1) * vBC, x1, x2, x3, fdir);// (vxBC * D3Q27System::DX1[fdir] + vyBC * D3Q27System::DX2[fdir] + vzBC * D3Q27System::DX3[fdir]), x1, x2, x3, fdir); + //distribution->setPostCollisionDistributionForDirection((fBC + fG) / densityRatio*0 - fL - (feqG - feqL) * (c1o1 / densityRatio*0 - c1o1) * vBC, x1, x2, x3, fdir);// (vxBC * D3Q27System::DX1[fdir] + vyBC * D3Q27System::DX2[fdir] + vzBC * D3Q27System::DX3[fdir]), x1, x2, x3, fdir); + //distribution->setPostCollisionDistributionForDirection((fBC + fG) / densityRatio * 0 - fL - (feqG - feqL-2*fL+2*feqL) * (c1o1 / densityRatio - c1o1) * vBC, x1, x2, x3, fdir);// (vxBC * D3Q27System::DX1[fdir] + vyBC * D3Q27System::DX2[fdir] + vzBC * D3Q27System::DX3[fdir]), x1, x2, x3, fdir); //real flW = (fBC + fG) / densityRatio * 0 - fL - (feqG - feqL) * (c1o1 / densityRatio*0 - c1o1) * vBC; //real flWW = (fBC + fG) / densityRatio * 0 - fL - (feqG - feqL - 2 * fL + 2 * feqL) * (c1o1 / densityRatio*0 - c1o1) * vBC; //real fLi = distribution->getDistributionInvForDirection(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir], fdir); //real number = 666; - //distribution->setDistributionForDirection((fBC + fG) / densityRatio * 0 - fL - (feqG - feqL) * (c1o1 / densityRatio * 0 - c1o1) * vBC, x1, x2, x3, fdir); + //distribution->setPostCollisionDistributionForDirection((fBC + fG) / densityRatio * 0 - fL - (feqG - feqL) * (c1o1 / densityRatio * 0 - c1o1) * vBC, x1, x2, x3, fdir); //// real eqBC= D3Q27System::getIncompFeqForDirection(D3Q27System::INVDIR[fdir], 0, vx, vy, vz); //// real eqG = D3Q27System::getIncompFeqForDirection(fdir, 0, vx, vy, vz); // real eqBC = D3Q27System::getIncompFeqForDirection(D3Q27System::INVDIR[fdir], 0, (*vxNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir]), (*vyNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir]), (*vzNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir])); // real eqG = D3Q27System::getIncompFeqForDirection(fdir, 0, (*vxNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir]), (*vyNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir]), (*vzNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir])); ////real flNew = (fBC + fG-eqBC-eqG) / densityRatio +eqBC+eqG - fL - (feqG - feqL - 2 * fL + 2 * feqL) * (c1o1 / densityRatio - c1o1) * vBC; - // distribution->setDistributionForDirection(c2o1*laplacePressure * WEIGTH[fdir] +(fBC + fG - eqBC - eqG) / densityRatio + (eqBC + eqG) - fL, x1, x2, x3, fdir);// -0* (feqG - feqL - 2 * fL + 2 * feqL) * (c1o1 / densityRatio - c1o1) * vBC, x1, x2, x3, fdir);// (vxBC * D3Q27System::DX1[fdir] + vyBC * D3Q27System::DX2[fdir] + vzBC * D3Q27System::DX3[fdir]), x1, x2, x3, fdir); + // distribution->setPostCollisionDistributionForDirection(c2o1*laplacePressure * WEIGTH[fdir] +(fBC + fG - eqBC - eqG) / densityRatio + (eqBC + eqG) - fL, x1, x2, x3, fdir);// -0* (feqG - feqL - 2 * fL + 2 * feqL) * (c1o1 / densityRatio - c1o1) * vBC, x1, x2, x3, fdir);// (vxBC * D3Q27System::DX1[fdir] + vyBC * D3Q27System::DX2[fdir] + vzBC * D3Q27System::DX3[fdir]), x1, x2, x3, fdir); // //if (vxBC != 0) { // // int set = 0; // //} @@ -479,7 +479,7 @@ void MultiphaseSharpInterfaceLBMKernel::calculate(int step) laplacePressureBC = laplacePressure; // curv; // reset to the above laplacePressureBC = laplacePressure * (c1o1 - c2o1 * (*phaseField)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir])) / (c2o1 * (*phaseField)(x1, x2, x3) - c2o1 * (*phaseField)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir])) + laplacePressureBC * (-c1o1 + c2o1 * (*phaseField)(x1, x2, x3)) / (c2o1 * (*phaseField)(x1, x2, x3) - c2o1 * (*phaseField)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir])); //laplacePressureBC *= sigma; - distribution->setDistributionForDirection(laplacePressureBC * WEIGTH[fdir] + (fBC + fG - eqBC - eqG) / densityRatio + (eqBCN + eqGN) * (c1o1 - c1o1 / densityRatio * 0) - fL - 0 * (feqG - feqL - 2 * fL + 2 * feqL) * (c1o1 / densityRatio - c1o1) * vBC, x1, x2, x3, fdir); + distribution->setPostCollisionDistributionForDirection(laplacePressureBC * WEIGTH[fdir] + (fBC + fG - eqBC - eqG) / densityRatio + (eqBCN + eqGN) * (c1o1 - c1o1 / densityRatio * 0) - fL - 0 * (feqG - feqL - 2 * fL + 2 * feqL) * (c1o1 / densityRatio - c1o1) * vBC, x1, x2, x3, fdir); } @@ -528,16 +528,16 @@ void MultiphaseSharpInterfaceLBMKernel::calculate(int step) //real feqG = D3Q27System::getIncompFeqForDirection(fdir, 0, (*vxNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir]) * (D3Q27System::DX1[fdir]) * (D3Q27System::DX1[fdir]), (*vyNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir]) * (D3Q27System::DX2[fdir]) * (D3Q27System::DX2[fdir]), (*vzNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir]) * (D3Q27System::DX3[fdir]) * (D3Q27System::DX3[fdir])); //real feqG = D3Q27System::getIncompFeqForDirection(fdir, 0, vx * (D3Q27System::DX1[fdir]) * (D3Q27System::DX1[fdir]), vy * (D3Q27System::DX2[fdir]) * (D3Q27System::DX2[fdir]), vz * (D3Q27System::DX3[fdir]) * (D3Q27System::DX3[fdir])); - //distribution->setDistributionForDirection((fBC + fG) / densityRatio*0 - fL- (feqG - feqL) * (c1o1 / densityRatio - c1o1) * (vBC), x1, x2, x3, fdir); - //distribution->setDistributionForDirection((fBC + fG) / densityRatio * 0 - fL - (feqG - feqL - 2 * fL + 2 * feqL) * (c1o1 / densityRatio*0 - c1o1) * vBC, x1, x2, x3, fdir);// (vxBC * D3Q27System::DX1[fdir] + vyBC * D3Q27System::DX2[fdir] + vzBC * D3Q27System::DX3[fdir]), x1, x2, x3, fdir); - //distribution->setDistributionForDirection(0, x1, x2, x3, fdir); + //distribution->setPostCollisionDistributionForDirection((fBC + fG) / densityRatio*0 - fL- (feqG - feqL) * (c1o1 / densityRatio - c1o1) * (vBC), x1, x2, x3, fdir); + //distribution->setPostCollisionDistributionForDirection((fBC + fG) / densityRatio * 0 - fL - (feqG - feqL - 2 * fL + 2 * feqL) * (c1o1 / densityRatio*0 - c1o1) * vBC, x1, x2, x3, fdir);// (vxBC * D3Q27System::DX1[fdir] + vyBC * D3Q27System::DX2[fdir] + vzBC * D3Q27System::DX3[fdir]), x1, x2, x3, fdir); + //distribution->setPostCollisionDistributionForDirection(0, x1, x2, x3, fdir); //real flW = (fBC + fG) / densityRatio * 0 - fL - (feqG - feqL) * (c1o1 / densityRatio * 0 - c1o1) * vBC; //real flWW = (fBC + fG) / densityRatio * 0 - fL - (feqG - feqL - 2 * fL + 2 * feqL) * (c1o1 / densityRatio * 0 - c1o1) * vBC; //real fLi = distribution->getDistributionInvForDirection(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir], fdir); // real eqBC = D3Q27System::getIncompFeqForDirection(D3Q27System::INVDIR[fdir], 0, (*vxNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir]), (*vyNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir]), (*vzNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir])); // real eqG = D3Q27System::getIncompFeqForDirection(fdir, 0, (*vxNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir]), (*vyNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir]), (*vzNode)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir])); // //real flNew = (fBC + fG - eqBC - eqG) / densityRatio + eqBC + eqG - fL - (feqG - feqL - 2 * fL + 2 * feqL) * (c1o1 / densityRatio - c1o1) * vBC; - // distribution->setDistributionForDirection(c2o1*laplacePressure* WEIGTH[fdir] + (fBC + fG - eqBC - eqG) / densityRatio + (eqBC + eqG) - fL, x1, x2, x3, fdir);// - 0*(feqG - feqL - 2 * fL + 2 * feqL) * (c1o1 / densityRatio - c1o1) * vBC, x1, x2, x3, fdir);// (vxBC * D3Q27System::DX1[fdir] + vyBC * D3Q27System::DX2[fdir] + vzBC * D3Q27System::DX3[fdir]), x1, x2, x3, fdir); + // distribution->setPostCollisionDistributionForDirection(c2o1*laplacePressure* WEIGTH[fdir] + (fBC + fG - eqBC - eqG) / densityRatio + (eqBC + eqG) - fL, x1, x2, x3, fdir);// - 0*(feqG - feqL - 2 * fL + 2 * feqL) * (c1o1 / densityRatio - c1o1) * vBC, x1, x2, x3, fdir);// (vxBC * D3Q27System::DX1[fdir] + vyBC * D3Q27System::DX2[fdir] + vzBC * D3Q27System::DX3[fdir]), x1, x2, x3, fdir); //// real number = 666; @@ -559,7 +559,7 @@ void MultiphaseSharpInterfaceLBMKernel::calculate(int step) laplacePressureBC = laplacePressure; // curv; // reset to the above laplacePressureBC = laplacePressure * (c1o1 - c2o1 * (*phaseField)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir])) / (c2o1 * (*phaseField)(x1, x2, x3) - c2o1 * (*phaseField)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir])) + laplacePressureBC * (-c1o1 + c2o1 * (*phaseField)(x1, x2, x3)) / (c2o1 * (*phaseField)(x1, x2, x3) - c2o1 * (*phaseField)(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir])); // laplacePressureBC *= sigma; - distribution->setDistributionForDirection(laplacePressureBC * WEIGTH[fdir] + (fBC + fG - eqBC - eqG) / densityRatio + (eqBCN + eqGN) * (c1o1 - c1o1 / densityRatio * 0) - fL - 0 * (feqG - feqL - 2 * fL + 2 * feqL) * (c1o1 / densityRatio - c1o1) * vBC, x1, x2, x3, fdir); + distribution->setPostCollisionDistributionForDirection(laplacePressureBC * WEIGTH[fdir] + (fBC + fG - eqBC - eqG) / densityRatio + (eqBCN + eqGN) * (c1o1 - c1o1 / densityRatio * 0) - fL - 0 * (feqG - feqL - 2 * fL + 2 * feqL) * (c1o1 / densityRatio - c1o1) * vBC, x1, x2, x3, fdir); } @@ -622,7 +622,7 @@ void MultiphaseSharpInterfaceLBMKernel::calculate(int step) // real feqOLD = D3Q27System::getIncompFeqForDirection(D3Q27System::INVDIR[fdir], rhoG, vx, vy, vz); // real feqNew = D3Q27System::getIncompFeqForDirection(D3Q27System::INVDIR[fdir], rhoL, vx, vy, vz); // ff[D3Q27System::INVDIR[fdir]] = (ff[D3Q27System::INVDIR[fdir]] - feqOLD) * (c1o1 / collFactorL - c1o1) / (c1o1 / collFactorG - c1o1) + feqNew; - distribution->setDistributionForDirection(ff[D3Q27System::INVDIR[fdir]], x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir], D3Q27System::INVDIR[fdir]); + distribution->setPostCollisionDistributionForDirection(ff[D3Q27System::INVDIR[fdir]], x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir], D3Q27System::INVDIR[fdir]); } } @@ -638,7 +638,7 @@ void MultiphaseSharpInterfaceLBMKernel::calculate(int step) // //real fL = distribution->getDistributionInvForDirection(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir], D3Q27System::INVDIR[fdir]) - c6o1 * WEIGTH[fdir] * vDir; // //real fL = distribution->getDistributionInvForDirection(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir], D3Q27System::INVDIR[fdir]) + c6o1 * WEIGTH[fdir] * (vx * D3Q27System::DX1[fdir] + vy * D3Q27System::DX2[fdir] + vz * D3Q27System::DX3[fdir]); // real fL= D3Q27System::getIncompFeqForDirection(fdir, rhoL, vx, vy, vz); - // distribution->setDistributionForDirection(fL, x1 - D3Q27System::DX1[fdir], x2 - D3Q27System::DX2[fdir], x3 - D3Q27System::DX3[fdir], fdir); + // distribution->setPostCollisionDistributionForDirection(fL, x1 - D3Q27System::DX1[fdir], x2 - D3Q27System::DX2[fdir], x3 - D3Q27System::DX3[fdir], fdir); // ff[fdir] = fL; // } // if (!(phi[fdir] > c1o2)) { @@ -647,7 +647,7 @@ void MultiphaseSharpInterfaceLBMKernel::calculate(int step) // real vyBC = ((*vyNode)(x1 - D3Q27System::DX1[fdir], x2 - D3Q27System::DX2[fdir], x3 - D3Q27System::DX3[fdir])); // real vzBC = ((*vzNode)(x1 - D3Q27System::DX1[fdir], x2 - D3Q27System::DX2[fdir], x3 - D3Q27System::DX3[fdir])); // real feqL = D3Q27System::getIncompFeqForDirection(fdir, rhoL, vx, vy, vz); - // distribution->setDistributionForDirection(feqL, x1 - D3Q27System::DX1[fdir], x2 - D3Q27System::DX2[fdir], x3 - D3Q27System::DX3[fdir], fdir); + // distribution->setPostCollisionDistributionForDirection(feqL, x1 - D3Q27System::DX1[fdir], x2 - D3Q27System::DX2[fdir], x3 - D3Q27System::DX3[fdir], fdir); // ff[fdir] = feqL; // } //} @@ -655,26 +655,26 @@ void MultiphaseSharpInterfaceLBMKernel::calculate(int step) //for (int fdir = D3Q27System::FSTARTDIR; fdir <= D3Q27System::FENDDIR; fdir++) { // sumRho2 += ff[fdir];// -D3Q27System::getIncompFeqForDirection(fdir, 0, sumVx, sumVy, sumVz); //} - //ff[DIR_000] = rhoL - sumRho2; + //ff[d000] = rhoL - sumRho2; //rhoL = 27.0 / 18.0 * sumRho2; //std::cout << "rhoL=" << rhoL <<" sumRho="<< 27.0 / 18.0 * sumRho2 << " vx=" << vx << " vy=" << vy << "\n"; D3Q27System::calcIncompMacroscopicValues(ff, rhoL, vx, vy, vz); - //std::cout << "RecalCrhoL=" << rhoL << " sumRho=" << 27.0 / 18.0 * sumRho2 << " vx=" << vx << " vy=" << vy << "ffRest="<<ff[DIR_000]<<"\n"; - //distribution->setDistributionForDirection(ff[DIR_000], x1, x2, x3, DIR_000); + //std::cout << "RecalCrhoL=" << rhoL << " sumRho=" << 27.0 / 18.0 * sumRho2 << " vx=" << vx << " vy=" << vy << "ffRest="<<ff[d000]<<"\n"; + //distribution->setPostCollisionDistributionForDirection(ff[d000], x1, x2, x3, d000); { - real fG = distribution->getDistributionInvForDirection(x1, x2, x3, DIR_000); - real feqOLD = D3Q27System::getIncompFeqForDirection(DIR_000, (*rhoNode)(x1, x2, x3), vx, vy, vz); - real feqNew = D3Q27System::getIncompFeqForDirection(DIR_000, rhoL, vx, vy, vz); - distribution->setDistributionForDirection(fG - feqOLD + feqNew, x1, x2, x3, DIR_000); + real fG = distribution->getDistributionInvForDirection(x1, x2, x3, d000); + real feqOLD = D3Q27System::getIncompFeqForDirection(d000, (*rhoNode)(x1, x2, x3), vx, vy, vz); + real feqNew = D3Q27System::getIncompFeqForDirection(d000, rhoL, vx, vy, vz); + distribution->setPostCollisionDistributionForDirection(fG - feqOLD + feqNew, x1, x2, x3, d000); } //for (int fdir = D3Q27System::FSTARTDIR; fdir <= D3Q27System::FENDDIR; fdir++) { // ff[D3Q27System::INVDIR[fdir]]=distribution->getDistributionInvForDirection(x1 + D3Q27System::DX1[fdir], x2 + D3Q27System::DX2[fdir], x3 + D3Q27System::DX3[fdir], D3Q27System::INVDIR[fdir]); //} //D3Q27System::calcIncompMacroscopicValues(ff, rhoL, vx, vy, vz); - //std::cout << "AfterRead rhoL=" << rhoL << " rhoGToL=" << rhoG/densityRatio << " vx=" << vx << " vy=" << vy << "ffRest=" << ff[DIR_000] <<" x="<<x1<<" y="<<x2<<" z="<<x3<< "\n"; + //std::cout << "AfterRead rhoL=" << rhoL << " rhoGToL=" << rhoG/densityRatio << " vx=" << vx << " vy=" << vy << "ffRest=" << ff[d000] <<" x="<<x1<<" y="<<x2<<" z="<<x3<< "\n"; - //real feqL = D3Q27System::getIncompFeqForDirection(DIR_000, rhoL, vx, vy, vz); - //distribution->setDistributionForDirection(feqL, x1, x2, x3, DIR_000); + //real feqL = D3Q27System::getIncompFeqForDirection(d000, rhoL, vx, vy, vz); + //distribution->setPostCollisionDistributionForDirection(feqL, x1, x2, x3, d000); @@ -761,13 +761,13 @@ void MultiphaseSharpInterfaceLBMKernel::calculate(int step) - collFactorM = phi[DIR_000] > c1o2 ? collFactorL : collFactorG; - //real collFactorMInv = phi[DIR_000] > c1o2 ? collFactorG : collFactorL; + collFactorM = phi[d000] > c1o2 ? collFactorL : collFactorG; + //real collFactorMInv = phi[d000] > c1o2 ? collFactorG : collFactorL; - //real mu = 2 * beta * phi[DIR_000] * (phi[DIR_000] - 1) * (2 * phi[DIR_000] - 1) - kappa * nabla2_phi(); + //real mu = 2 * beta * phi[d000] * (phi[d000] - 1) * (2 * phi[d000] - 1) - kappa * nabla2_phi(); //----------- Calculating Macroscopic Values ------------- - real rho = phi[DIR_000] > c1o2 ? rhoH : rhoL; + real rho = phi[d000] > c1o2 ? rhoH : rhoL; @@ -791,7 +791,7 @@ void MultiphaseSharpInterfaceLBMKernel::calculate(int step) if (withForcing) { muRho = rho; - muPhi = phi[DIR_000]; + muPhi = phi[d000]; forcingX1 += muForcingX1.Eval(); forcingX2 += muForcingX2.Eval(); forcingX3 += muForcingX3.Eval(); @@ -838,8 +838,8 @@ void MultiphaseSharpInterfaceLBMKernel::calculate(int step) //////////////////////////////////////////////////////////////////////////////////// real wadjust; -// real qudricLimit = 0.01 / (c1o1 + 1.0e4 * phi[DIR_000] * (c1o1 - phi[DIR_000])); - //real qudricLimit = 0.01 / (c1o1 + (((*phaseField)(x1, x2, x3) > c1o2) ? 1.0e6 * phi[DIR_000] * (c1o1 - phi[DIR_000]):c0o1)); +// real qudricLimit = 0.01 / (c1o1 + 1.0e4 * phi[d000] * (c1o1 - phi[d000])); + //real qudricLimit = 0.01 / (c1o1 + (((*phaseField)(x1, x2, x3) > c1o2) ? 1.0e6 * phi[d000] * (c1o1 - phi[d000]):c0o1)); real qudricLimit = 0.01; //////////////////////////////////////////////////////////////////////////////////// @@ -960,7 +960,7 @@ void MultiphaseSharpInterfaceLBMKernel::calculate(int step) real Dxz = -c3o1 * collFactorM * mfbab; real Dyz = -c3o1 * collFactorM * mfabb; - // if (phi[DIR_000] > c1o2) { + // if (phi[d000] > c1o2) { // /// QR eddyviscosity: // real eddyR = -(Dxy * Dxy + Dxz * Dxz + c1o3 * dxux * dxux) * (dxux) - (Dxy * Dxy + Dyz * Dyz + c1o3 * dyuy * dyuy) * dyuy - (Dxz * Dxz + Dyz * Dyz + c1o3 * dzuz * dzuz) * dzuz - c2o1 * Dxy * Dxz * Dyz; // real eddyQ = Dxy * Dxz + Dxy * Dyz + Dxz * Dyz + c1o2 * (dxux * dxux + dyuy * dyuy + dzuz * dzuz); @@ -978,7 +978,7 @@ void MultiphaseSharpInterfaceLBMKernel::calculate(int step) //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // non Newtonian fluid collision factor - if (phi[DIR_000] > c1o2) + if (phi[d000] > c1o2) { real shearRate = sqrt(c2o1 * (dxux * dxux + dyuy * dyuy + dzuz * dzuz) + Dxy * Dxy + Dxz * Dxz + Dyz * Dyz); collFactorM = Rheology::getBinghamCollFactor(collFactorM, shearRate, c1o1); @@ -1157,7 +1157,7 @@ void MultiphaseSharpInterfaceLBMKernel::calculate(int step) ////////////////////////////////////////////////////////////////////////// //write distribution ////////////////////////////////////////////////////////////////////////// - // if (phi[DIR_000] < c1o2) { + // if (phi[d000] < c1o2) { (*this->localDistributionsF)(D3Q27System::ET_E, x1, x2, x3) = mfabb;//* rho * c1o3; (*this->localDistributionsF)(D3Q27System::ET_N, x1, x2, x3) = mfbab;//* rho * c1o3; (*this->localDistributionsF)(D3Q27System::ET_T, x1, x2, x3) = mfbba;//* rho * c1o3; @@ -1460,90 +1460,90 @@ void MultiphaseSharpInterfaceLBMKernel::calculate(int step) real MultiphaseSharpInterfaceLBMKernel::gradX1_phi() { using namespace D3Q27System; - return 3.0* ((WEIGTH[DIR_PPP] * (((phi[DIR_PPP] - phi[DIR_MMM]) + (phi[DIR_PMM] - phi[DIR_MPP])) + ((phi[DIR_PMP] - phi[DIR_MPM]) + (phi[DIR_PPM] - phi[DIR_MMP]))) - + WEIGTH[DIR_PP0] * (((phi[DIR_P0P] - phi[DIR_M0M]) + (phi[DIR_P0M] - phi[DIR_M0P])) + ((phi[DIR_PM0] - phi[DIR_MP0]) + (phi[DIR_PP0] - phi[DIR_MM0])))) + - +WEIGTH[DIR_0P0] * (phi[DIR_P00] - phi[DIR_M00])); + return 3.0* ((WEIGTH[dPPP] * (((phi[dPPP] - phi[dMMM]) + (phi[dPMM] - phi[dMPP])) + ((phi[dPMP] - phi[dMPM]) + (phi[dPPM] - phi[dMMP]))) + + WEIGTH[dPP0] * (((phi[dP0P] - phi[dM0M]) + (phi[dP0M] - phi[dM0P])) + ((phi[dPM0] - phi[dMP0]) + (phi[dPP0] - phi[dMM0])))) + + +WEIGTH[d0P0] * (phi[dP00] - phi[dM00])); } real MultiphaseSharpInterfaceLBMKernel::gradX2_phi() { using namespace D3Q27System; - return 3.0 * ((WEIGTH[DIR_PPP] * (((phi[DIR_PPP] - phi[DIR_MMM]) - (phi[DIR_PMM] - phi[DIR_MPP])) + ((phi[DIR_PPM] - phi[DIR_MMP])- (phi[DIR_PMP] - phi[DIR_MPM]))) - + WEIGTH[DIR_PP0] * (((phi[DIR_0PP] - phi[DIR_0MM]) + (phi[DIR_0PM] - phi[DIR_0MP])) + ((phi[DIR_PP0] - phi[DIR_MM0])- (phi[DIR_PM0] - phi[DIR_MP0])))) + - +WEIGTH[DIR_0P0] * (phi[DIR_0P0] - phi[DIR_0M0])); + return 3.0 * ((WEIGTH[dPPP] * (((phi[dPPP] - phi[dMMM]) - (phi[dPMM] - phi[dMPP])) + ((phi[dPPM] - phi[dMMP])- (phi[dPMP] - phi[dMPM]))) + + WEIGTH[dPP0] * (((phi[d0PP] - phi[d0MM]) + (phi[d0PM] - phi[d0MP])) + ((phi[dPP0] - phi[dMM0])- (phi[dPM0] - phi[dMP0])))) + + +WEIGTH[d0P0] * (phi[d0P0] - phi[d0M0])); } real MultiphaseSharpInterfaceLBMKernel::gradX3_phi() { using namespace D3Q27System; - return 3.0 * ((WEIGTH[DIR_PPP] * (((phi[DIR_PPP] - phi[DIR_MMM]) - (phi[DIR_PMM] - phi[DIR_MPP])) + ((phi[DIR_PMP] - phi[DIR_MPM]) - (phi[DIR_PPM] - phi[DIR_MMP]))) - + WEIGTH[DIR_PP0] * (((phi[DIR_P0P] - phi[DIR_M0M]) - (phi[DIR_P0M] - phi[DIR_M0P])) + ((phi[DIR_0MP] - phi[DIR_0PM]) + (phi[DIR_0PP] - phi[DIR_0MM])))) + - +WEIGTH[DIR_0P0] * (phi[DIR_00P] - phi[DIR_00M])); + return 3.0 * ((WEIGTH[dPPP] * (((phi[dPPP] - phi[dMMM]) - (phi[dPMM] - phi[dMPP])) + ((phi[dPMP] - phi[dMPM]) - (phi[dPPM] - phi[dMMP]))) + + WEIGTH[dPP0] * (((phi[dP0P] - phi[dM0M]) - (phi[dP0M] - phi[dM0P])) + ((phi[d0MP] - phi[d0PM]) + (phi[d0PP] - phi[d0MM])))) + + +WEIGTH[d0P0] * (phi[d00P] - phi[d00M])); } real MultiphaseSharpInterfaceLBMKernel::gradX1_rhoInv(real rhoL,real rhoDIV) { using namespace D3Q27System; - return 3.0 * ((WEIGTH[DIR_PPP] * (((1.0/(rhoL+rhoDIV*phi[DIR_PPP]) - 1.0 / (rhoL + rhoDIV * phi[DIR_MMM])) + (1.0 / (rhoL + rhoDIV * phi[DIR_PMM]) - 1.0 / (rhoL + rhoDIV * phi[DIR_MPP]))) + ((1.0 / (rhoL + rhoDIV * phi[DIR_PMP]) - 1.0 / (rhoL + rhoDIV * phi[DIR_MPM])) + (1.0 / (rhoL + rhoDIV * phi[DIR_PPM]) - 1.0 / (rhoL + rhoDIV * phi[DIR_MMP])))) - + WEIGTH[DIR_PP0] * (((1.0 / (rhoL + rhoDIV * phi[DIR_P0P]) - 1.0 / (rhoL + rhoDIV * phi[DIR_M0M])) + (1.0 / (rhoL + rhoDIV * phi[DIR_P0M]) - 1.0 / (rhoL + rhoDIV * phi[DIR_M0P]))) + ((1.0 / (rhoL + rhoDIV * phi[DIR_PM0]) - 1.0 / (rhoL + rhoDIV * phi[DIR_MP0])) + (1.0 / (rhoL + rhoDIV * phi[DIR_PP0]) - 1.0 / (rhoL + rhoDIV * phi[DIR_MM0]))))) + - +WEIGTH[DIR_0P0] * (1.0 / (rhoL + rhoDIV * phi[DIR_P00]) - 1.0 / (rhoL + rhoDIV * phi[DIR_M00]))); + return 3.0 * ((WEIGTH[dPPP] * (((1.0/(rhoL+rhoDIV*phi[dPPP]) - 1.0 / (rhoL + rhoDIV * phi[dMMM])) + (1.0 / (rhoL + rhoDIV * phi[dPMM]) - 1.0 / (rhoL + rhoDIV * phi[dMPP]))) + ((1.0 / (rhoL + rhoDIV * phi[dPMP]) - 1.0 / (rhoL + rhoDIV * phi[dMPM])) + (1.0 / (rhoL + rhoDIV * phi[dPPM]) - 1.0 / (rhoL + rhoDIV * phi[dMMP])))) + + WEIGTH[dPP0] * (((1.0 / (rhoL + rhoDIV * phi[dP0P]) - 1.0 / (rhoL + rhoDIV * phi[dM0M])) + (1.0 / (rhoL + rhoDIV * phi[dP0M]) - 1.0 / (rhoL + rhoDIV * phi[dM0P]))) + ((1.0 / (rhoL + rhoDIV * phi[dPM0]) - 1.0 / (rhoL + rhoDIV * phi[dMP0])) + (1.0 / (rhoL + rhoDIV * phi[dPP0]) - 1.0 / (rhoL + rhoDIV * phi[dMM0]))))) + + +WEIGTH[d0P0] * (1.0 / (rhoL + rhoDIV * phi[dP00]) - 1.0 / (rhoL + rhoDIV * phi[dM00]))); } real MultiphaseSharpInterfaceLBMKernel::gradX2_rhoInv(real rhoL,real rhoDIV) { using namespace D3Q27System; - return 3.0 * ((WEIGTH[DIR_PPP] * (((1.0 / (rhoL + rhoDIV * phi[DIR_PPP]) - 1.0 / (rhoL + rhoDIV * phi[DIR_MMM])) - (1.0 / (rhoL + rhoDIV * phi[DIR_PMM]) - 1.0 / (rhoL + rhoDIV * phi[DIR_MPP]))) + ((1.0 / (rhoL + rhoDIV * phi[DIR_PPM]) - 1.0 / (rhoL + rhoDIV * phi[DIR_MMP])) - (1.0 / (rhoL + rhoDIV * phi[DIR_PMP]) - 1.0 / (rhoL + rhoDIV * phi[DIR_MPM])))) - + WEIGTH[DIR_PP0] * (((1.0 / (rhoL + rhoDIV * phi[DIR_0PP]) - 1.0 / (rhoL + rhoDIV * phi[DIR_0MM])) + (1.0 / (rhoL + rhoDIV * phi[DIR_0PM]) - 1.0 / (rhoL + rhoDIV * phi[DIR_0MP]))) + ((1.0 / (rhoL + rhoDIV * phi[DIR_PP0]) - 1.0 / (rhoL + rhoDIV * phi[DIR_MM0])) - (1.0 / (rhoL + rhoDIV * phi[DIR_PM0]) - 1.0 / (rhoL + rhoDIV * phi[DIR_MP0]))))) + - +WEIGTH[DIR_0P0] * (1.0 / (rhoL + rhoDIV * phi[DIR_0P0]) - 1.0 / (rhoL + rhoDIV * phi[DIR_0M0]))); + return 3.0 * ((WEIGTH[dPPP] * (((1.0 / (rhoL + rhoDIV * phi[dPPP]) - 1.0 / (rhoL + rhoDIV * phi[dMMM])) - (1.0 / (rhoL + rhoDIV * phi[dPMM]) - 1.0 / (rhoL + rhoDIV * phi[dMPP]))) + ((1.0 / (rhoL + rhoDIV * phi[dPPM]) - 1.0 / (rhoL + rhoDIV * phi[dMMP])) - (1.0 / (rhoL + rhoDIV * phi[dPMP]) - 1.0 / (rhoL + rhoDIV * phi[dMPM])))) + + WEIGTH[dPP0] * (((1.0 / (rhoL + rhoDIV * phi[d0PP]) - 1.0 / (rhoL + rhoDIV * phi[d0MM])) + (1.0 / (rhoL + rhoDIV * phi[d0PM]) - 1.0 / (rhoL + rhoDIV * phi[d0MP]))) + ((1.0 / (rhoL + rhoDIV * phi[dPP0]) - 1.0 / (rhoL + rhoDIV * phi[dMM0])) - (1.0 / (rhoL + rhoDIV * phi[dPM0]) - 1.0 / (rhoL + rhoDIV * phi[dMP0]))))) + + +WEIGTH[d0P0] * (1.0 / (rhoL + rhoDIV * phi[d0P0]) - 1.0 / (rhoL + rhoDIV * phi[d0M0]))); } real MultiphaseSharpInterfaceLBMKernel::gradX3_rhoInv(real rhoL, real rhoDIV) { using namespace D3Q27System; - return 3.0 * ((WEIGTH[DIR_PPP] * (((1.0 / (rhoL + rhoDIV * phi[DIR_PPP]) - 1.0 / (rhoL + rhoDIV * phi[DIR_MMM])) - (1.0 / (rhoL + rhoDIV * phi[DIR_PMM]) - 1.0 / (rhoL + rhoDIV * phi[DIR_MPP]))) + ((1.0 / (rhoL + rhoDIV * phi[DIR_PMP]) - 1.0 / (rhoL + rhoDIV * phi[DIR_MPM])) - (1.0 / (rhoL + rhoDIV * phi[DIR_PPM]) - 1.0 / (rhoL + rhoDIV * phi[DIR_MMP])))) - + WEIGTH[DIR_PP0] * (((1.0 / (rhoL + rhoDIV * phi[DIR_P0P]) - 1.0 / (rhoL + rhoDIV * phi[DIR_M0M])) - (1.0 / (rhoL + rhoDIV * phi[DIR_P0M]) - 1.0 / (rhoL + rhoDIV * phi[DIR_M0P]))) + ((1.0 / (rhoL + rhoDIV * phi[DIR_0MP]) - 1.0 / (rhoL + rhoDIV * phi[DIR_0PM])) + (1.0 / (rhoL + rhoDIV * phi[DIR_0PP]) - 1.0 / (rhoL + rhoDIV * phi[DIR_0MM]))))) + - +WEIGTH[DIR_0P0] * (1.0 / (rhoL + rhoDIV * phi[DIR_00P]) - 1.0 / (rhoL + rhoDIV * phi[DIR_00M]))); + return 3.0 * ((WEIGTH[dPPP] * (((1.0 / (rhoL + rhoDIV * phi[dPPP]) - 1.0 / (rhoL + rhoDIV * phi[dMMM])) - (1.0 / (rhoL + rhoDIV * phi[dPMM]) - 1.0 / (rhoL + rhoDIV * phi[dMPP]))) + ((1.0 / (rhoL + rhoDIV * phi[dPMP]) - 1.0 / (rhoL + rhoDIV * phi[dMPM])) - (1.0 / (rhoL + rhoDIV * phi[dPPM]) - 1.0 / (rhoL + rhoDIV * phi[dMMP])))) + + WEIGTH[dPP0] * (((1.0 / (rhoL + rhoDIV * phi[dP0P]) - 1.0 / (rhoL + rhoDIV * phi[dM0M])) - (1.0 / (rhoL + rhoDIV * phi[dP0M]) - 1.0 / (rhoL + rhoDIV * phi[dM0P]))) + ((1.0 / (rhoL + rhoDIV * phi[d0MP]) - 1.0 / (rhoL + rhoDIV * phi[d0PM])) + (1.0 / (rhoL + rhoDIV * phi[d0PP]) - 1.0 / (rhoL + rhoDIV * phi[d0MM]))))) + + +WEIGTH[d0P0] * (1.0 / (rhoL + rhoDIV * phi[d00P]) - 1.0 / (rhoL + rhoDIV * phi[d00M]))); } real MultiphaseSharpInterfaceLBMKernel::gradX1_phi2() { using namespace D3Q27System; - return 3.0 * ((WEIGTH[DIR_PPP] * (((phi2[DIR_PPP] - phi2[DIR_MMM]) + (phi2[DIR_PMM] - phi2[DIR_MPP])) + ((phi2[DIR_PMP] - phi2[DIR_MPM]) + (phi2[DIR_PPM] - phi2[DIR_MMP]))) - + WEIGTH[DIR_PP0] * (((phi2[DIR_P0P] - phi2[DIR_M0M]) + (phi2[DIR_P0M] - phi2[DIR_M0P])) + ((phi2[DIR_PM0] - phi2[DIR_MP0]) + (phi2[DIR_PP0] - phi2[DIR_MM0])))) + - +WEIGTH[DIR_0P0] * (phi2[DIR_P00] - phi2[DIR_M00])); + return 3.0 * ((WEIGTH[dPPP] * (((phi2[dPPP] - phi2[dMMM]) + (phi2[dPMM] - phi2[dMPP])) + ((phi2[dPMP] - phi2[dMPM]) + (phi2[dPPM] - phi2[dMMP]))) + + WEIGTH[dPP0] * (((phi2[dP0P] - phi2[dM0M]) + (phi2[dP0M] - phi2[dM0P])) + ((phi2[dPM0] - phi2[dMP0]) + (phi2[dPP0] - phi2[dMM0])))) + + +WEIGTH[d0P0] * (phi2[dP00] - phi2[dM00])); } real MultiphaseSharpInterfaceLBMKernel::gradX2_phi2() { using namespace D3Q27System; - return 3.0 * ((WEIGTH[DIR_PPP] * (((phi2[DIR_PPP] - phi2[DIR_MMM]) - (phi2[DIR_PMM] - phi2[DIR_MPP])) + ((phi2[DIR_PPM] - phi2[DIR_MMP]) - (phi2[DIR_PMP] - phi2[DIR_MPM]))) - + WEIGTH[DIR_PP0] * (((phi2[DIR_0PP] - phi2[DIR_0MM]) + (phi2[DIR_0PM] - phi2[DIR_0MP])) + ((phi2[DIR_PP0] - phi2[DIR_MM0]) - (phi2[DIR_PM0] - phi2[DIR_MP0])))) + - +WEIGTH[DIR_0P0] * (phi2[DIR_0P0] - phi2[DIR_0M0])); + return 3.0 * ((WEIGTH[dPPP] * (((phi2[dPPP] - phi2[dMMM]) - (phi2[dPMM] - phi2[dMPP])) + ((phi2[dPPM] - phi2[dMMP]) - (phi2[dPMP] - phi2[dMPM]))) + + WEIGTH[dPP0] * (((phi2[d0PP] - phi2[d0MM]) + (phi2[d0PM] - phi2[d0MP])) + ((phi2[dPP0] - phi2[dMM0]) - (phi2[dPM0] - phi2[dMP0])))) + + +WEIGTH[d0P0] * (phi2[d0P0] - phi2[d0M0])); } real MultiphaseSharpInterfaceLBMKernel::gradX3_phi2() { using namespace D3Q27System; - return 3.0 * ((WEIGTH[DIR_PPP] * (((phi2[DIR_PPP] - phi2[DIR_MMM]) - (phi2[DIR_PMM] - phi2[DIR_MPP])) + ((phi2[DIR_PMP] - phi2[DIR_MPM]) - (phi2[DIR_PPM] - phi2[DIR_MMP]))) - + WEIGTH[DIR_PP0] * (((phi2[DIR_P0P] - phi2[DIR_M0M]) - (phi2[DIR_P0M] - phi2[DIR_M0P])) + ((phi2[DIR_0MP] - phi2[DIR_0PM]) + (phi2[DIR_0PP] - phi2[DIR_0MM])))) + - +WEIGTH[DIR_0P0] * (phi2[DIR_00P] - phi2[DIR_00M])); + return 3.0 * ((WEIGTH[dPPP] * (((phi2[dPPP] - phi2[dMMM]) - (phi2[dPMM] - phi2[dMPP])) + ((phi2[dPMP] - phi2[dMPM]) - (phi2[dPPM] - phi2[dMMP]))) + + WEIGTH[dPP0] * (((phi2[dP0P] - phi2[dM0M]) - (phi2[dP0M] - phi2[dM0P])) + ((phi2[d0MP] - phi2[d0PM]) + (phi2[d0PP] - phi2[d0MM])))) + + +WEIGTH[d0P0] * (phi2[d00P] - phi2[d00M])); } real MultiphaseSharpInterfaceLBMKernel::nabla2_phi() { using namespace D3Q27System; real sum = 0.0; - sum += WEIGTH[DIR_PPP] * ((((phi[DIR_PPP] - phi[DIR_000]) + (phi[DIR_MMM] - phi[DIR_000])) + ((phi[DIR_MMP] - phi[DIR_000]) + (phi[DIR_PPM] - phi[DIR_000]))) - + (((phi[DIR_MPP] - phi[DIR_000]) + (phi[DIR_PMM] - phi[DIR_000])) + ((phi[DIR_PMP] - phi[DIR_000]) + (phi[DIR_MPM] - phi[DIR_000])))); - sum += WEIGTH[DIR_0PP] * ( - (((phi[DIR_0PP] - phi[DIR_000]) + (phi[DIR_0MM] - phi[DIR_000])) + ((phi[DIR_0MP] - phi[DIR_000]) + (phi[DIR_0PM] - phi[DIR_000]))) - + (((phi[DIR_P0P] - phi[DIR_000]) + (phi[DIR_M0M] - phi[DIR_000])) + ((phi[DIR_M0P] - phi[DIR_000]) + (phi[DIR_P0M] - phi[DIR_000]))) - + (((phi[DIR_PP0] - phi[DIR_000]) + (phi[DIR_MM0] - phi[DIR_000])) + ((phi[DIR_MP0] - phi[DIR_000]) + (phi[DIR_PM0] - phi[DIR_000]))) + sum += WEIGTH[dPPP] * ((((phi[dPPP] - phi[d000]) + (phi[dMMM] - phi[d000])) + ((phi[dMMP] - phi[d000]) + (phi[dPPM] - phi[d000]))) + + (((phi[dMPP] - phi[d000]) + (phi[dPMM] - phi[d000])) + ((phi[dPMP] - phi[d000]) + (phi[dMPM] - phi[d000])))); + sum += WEIGTH[d0PP] * ( + (((phi[d0PP] - phi[d000]) + (phi[d0MM] - phi[d000])) + ((phi[d0MP] - phi[d000]) + (phi[d0PM] - phi[d000]))) + + (((phi[dP0P] - phi[d000]) + (phi[dM0M] - phi[d000])) + ((phi[dM0P] - phi[d000]) + (phi[dP0M] - phi[d000]))) + + (((phi[dPP0] - phi[d000]) + (phi[dMM0] - phi[d000])) + ((phi[dMP0] - phi[d000]) + (phi[dPM0] - phi[d000]))) ); - sum += WEIGTH[DIR_00P] * ( - ((phi[DIR_00P] - phi[DIR_000]) + (phi[DIR_00M] - phi[DIR_000])) - + ((phi[DIR_0P0] - phi[DIR_000]) + (phi[DIR_0M0] - phi[DIR_000])) - + ((phi[DIR_P00] - phi[DIR_000]) + (phi[DIR_M00] - phi[DIR_000])) + sum += WEIGTH[d00P] * ( + ((phi[d00P] - phi[d000]) + (phi[d00M] - phi[d000])) + + ((phi[d0P0] - phi[d000]) + (phi[d0M0] - phi[d000])) + + ((phi[dP00] - phi[d000]) + (phi[dM00] - phi[d000])) ); return 6.0 * sum; @@ -1557,30 +1557,30 @@ real MultiphaseSharpInterfaceLBMKernel::computeCurvature_phi() real phiX = gradX1_phi(); real phiY = gradX2_phi(); real phiZ = gradX3_phi(); - real phiXX = c4o9*(phi[DIR_P00] - c2o1 * phi[DIR_000] + phi[DIR_M00]) - +(c1o9*(((phi[DIR_PP0] - c2o1 * phi[DIR_0P0] + phi[DIR_MP0])+ (phi[DIR_PM0] - c2o1 * phi[DIR_0M0] + phi[DIR_MM0]))+ ((phi[DIR_P0P] - c2o1 * phi[DIR_00P] + phi[DIR_M0P]) + (phi[DIR_P0M] - c2o1 * phi[DIR_00M] + phi[DIR_M0M]))) - +c1o36* (((phi[DIR_PPP] - c2o1 * phi[DIR_0PP] + phi[DIR_MPP]) + (phi[DIR_PMP] - c2o1 * phi[DIR_0MP] + phi[DIR_MMP])) + ((phi[DIR_PPM] - c2o1 * phi[DIR_0PM] + phi[DIR_MPM]) + (phi[DIR_PMM] - c2o1 * phi[DIR_0MM] + phi[DIR_MMM])))); - real phiYY = c4o9*(phi[DIR_0P0] - c2o1 * phi[DIR_000] + phi[DIR_0M0]) - +(c1o9*(((phi[DIR_PP0] - c2o1 * phi[DIR_P00] + phi[DIR_PM0])+ (phi[DIR_MP0] - c2o1 * phi[DIR_M00] + phi[DIR_MM0]))+ ((phi[DIR_0PP] - c2o1 * phi[DIR_00P] + phi[DIR_0MP]) + (phi[DIR_0PM] - c2o1 * phi[DIR_00M] + phi[DIR_0MM]))) - +c1o36* (((phi[DIR_PPP] - c2o1 * phi[DIR_P0P] + phi[DIR_PMP]) + (phi[DIR_MPM] - c2o1 * phi[DIR_M0M] + phi[DIR_MMM])) + ((phi[DIR_MPP] - c2o1 * phi[DIR_M0P] + phi[DIR_MMP]) + (phi[DIR_PPM] - c2o1 * phi[DIR_P0M] + phi[DIR_PMM])))); - real phiZZ = c4o9*(phi[DIR_00P] - c2o1 * phi[DIR_000] + phi[DIR_00M]) - +(c1o9*(((phi[DIR_M0P] - c2o1 * phi[DIR_M00] + phi[DIR_M0M])+ (phi[DIR_P0P] - c2o1 * phi[DIR_P00] + phi[DIR_P0M]))+ ((phi[DIR_0MP] - c2o1 * phi[DIR_0M0] + phi[DIR_0MM]) + (phi[DIR_0PP] - c2o1 * phi[DIR_0P0] + phi[DIR_0PM]))) - +c1o36* (((phi[DIR_MPP] - c2o1 * phi[DIR_MP0] + phi[DIR_MPM]) + (phi[DIR_PMP] - c2o1 * phi[DIR_PM0] + phi[DIR_PMM])) + ((phi[DIR_MMP] - c2o1 * phi[DIR_MM0] + phi[DIR_MMM]) + (phi[DIR_PPP] - c2o1 * phi[DIR_PP0] + phi[DIR_PPM])))); - real phiXY = c1o4 *(c2o3* (phi[DIR_MM0] - phi[DIR_PM0] + phi[DIR_PP0] - phi[DIR_MP0])+c1o6*((phi[DIR_MMP] - phi[DIR_PMP] + phi[DIR_PPP] - phi[DIR_MPP])+ (phi[DIR_MMM] - phi[DIR_PMM] + phi[DIR_PPM] - phi[DIR_MPM]))); - real phiXZ = c1o4 *(c2o3* (phi[DIR_M0M] - phi[DIR_P0M] + phi[DIR_P0P] - phi[DIR_M0P])+c1o6*((phi[DIR_MPM] - phi[DIR_PPM] + phi[DIR_PPP] - phi[DIR_MPP])+ (phi[DIR_MMM] - phi[DIR_PMM] + phi[DIR_PMP] - phi[DIR_MMP]))); - real phiYZ = c1o4 *(c2o3* (phi[DIR_0MM] - phi[DIR_0MP] + phi[DIR_0PP] - phi[DIR_0PM])+c1o6*((phi[DIR_MMM] - phi[DIR_MMP] + phi[DIR_MPP] - phi[DIR_MPM])+ (phi[DIR_PMM] - phi[DIR_PMP] + phi[DIR_PPP] - phi[DIR_PPM]))); + real phiXX = c4o9*(phi[dP00] - c2o1 * phi[d000] + phi[dM00]) + +(c1o9*(((phi[dPP0] - c2o1 * phi[d0P0] + phi[dMP0])+ (phi[dPM0] - c2o1 * phi[d0M0] + phi[dMM0]))+ ((phi[dP0P] - c2o1 * phi[d00P] + phi[dM0P]) + (phi[dP0M] - c2o1 * phi[d00M] + phi[dM0M]))) + +c1o36* (((phi[dPPP] - c2o1 * phi[d0PP] + phi[dMPP]) + (phi[dPMP] - c2o1 * phi[d0MP] + phi[dMMP])) + ((phi[dPPM] - c2o1 * phi[d0PM] + phi[dMPM]) + (phi[dPMM] - c2o1 * phi[d0MM] + phi[dMMM])))); + real phiYY = c4o9*(phi[d0P0] - c2o1 * phi[d000] + phi[d0M0]) + +(c1o9*(((phi[dPP0] - c2o1 * phi[dP00] + phi[dPM0])+ (phi[dMP0] - c2o1 * phi[dM00] + phi[dMM0]))+ ((phi[d0PP] - c2o1 * phi[d00P] + phi[d0MP]) + (phi[d0PM] - c2o1 * phi[d00M] + phi[d0MM]))) + +c1o36* (((phi[dPPP] - c2o1 * phi[dP0P] + phi[dPMP]) + (phi[dMPM] - c2o1 * phi[dM0M] + phi[dMMM])) + ((phi[dMPP] - c2o1 * phi[dM0P] + phi[dMMP]) + (phi[dPPM] - c2o1 * phi[dP0M] + phi[dPMM])))); + real phiZZ = c4o9*(phi[d00P] - c2o1 * phi[d000] + phi[d00M]) + +(c1o9*(((phi[dM0P] - c2o1 * phi[dM00] + phi[dM0M])+ (phi[dP0P] - c2o1 * phi[dP00] + phi[dP0M]))+ ((phi[d0MP] - c2o1 * phi[d0M0] + phi[d0MM]) + (phi[d0PP] - c2o1 * phi[d0P0] + phi[d0PM]))) + +c1o36* (((phi[dMPP] - c2o1 * phi[dMP0] + phi[dMPM]) + (phi[dPMP] - c2o1 * phi[dPM0] + phi[dPMM])) + ((phi[dMMP] - c2o1 * phi[dMM0] + phi[dMMM]) + (phi[dPPP] - c2o1 * phi[dPP0] + phi[dPPM])))); + real phiXY = c1o4 *(c2o3* (phi[dMM0] - phi[dPM0] + phi[dPP0] - phi[dMP0])+c1o6*((phi[dMMP] - phi[dPMP] + phi[dPPP] - phi[dMPP])+ (phi[dMMM] - phi[dPMM] + phi[dPPM] - phi[dMPM]))); + real phiXZ = c1o4 *(c2o3* (phi[dM0M] - phi[dP0M] + phi[dP0P] - phi[dM0P])+c1o6*((phi[dMPM] - phi[dPPM] + phi[dPPP] - phi[dMPP])+ (phi[dMMM] - phi[dPMM] + phi[dPMP] - phi[dMMP]))); + real phiYZ = c1o4 *(c2o3* (phi[d0MM] - phi[d0MP] + phi[d0PP] - phi[d0PM])+c1o6*((phi[dMMM] - phi[dMMP] + phi[dMPP] - phi[dMPM])+ (phi[dPMM] - phi[dPMP] + phi[dPPP] - phi[dPPM]))); //non isotropic FD (to be improved): - //real phiX = (phi[DIR_P00] - phi[DIR_M00]) * c1o2; //gradX1_phi(); - //real phiY = (phi[DIR_0P0] - phi[DIR_0M0]) * c1o2; //gradX2_phi(); - //real phiZ = (phi[DIR_00P] - phi[DIR_00M]) * c1o2; //gradX3_phi(); - - //real phiXX = phi[DIR_P00] - c2o1 * phi[DIR_000] + phi[DIR_M00]; - //real phiYY = phi[DIR_0P0] - c2o1 * phi[DIR_000] + phi[DIR_0M0]; - //real phiZZ =( phi[DIR_00P] - c2o1 * phi[DIR_000] + phi[DIR_00M]); - //real phiXY = c1o4 * (phi[DIR_MM0] - phi[DIR_PM0] + phi[DIR_PP0] - phi[DIR_MP0]); - //real phiXZ = c1o4 * (phi[DIR_M0M] - phi[DIR_P0M] + phi[DIR_P0P] - phi[DIR_M0P]); - //real phiYZ = c1o4 * (phi[DIR_0MM] - phi[DIR_0MP] + phi[DIR_0PP] - phi[DIR_0PM]); + //real phiX = (phi[dP00] - phi[dM00]) * c1o2; //gradX1_phi(); + //real phiY = (phi[d0P0] - phi[d0M0]) * c1o2; //gradX2_phi(); + //real phiZ = (phi[d00P] - phi[d00M]) * c1o2; //gradX3_phi(); + + //real phiXX = phi[dP00] - c2o1 * phi[d000] + phi[dM00]; + //real phiYY = phi[d0P0] - c2o1 * phi[d000] + phi[d0M0]; + //real phiZZ =( phi[d00P] - c2o1 * phi[d000] + phi[d00M]); + //real phiXY = c1o4 * (phi[dMM0] - phi[dPM0] + phi[dPP0] - phi[dMP0]); + //real phiXZ = c1o4 * (phi[dM0M] - phi[dP0M] + phi[dP0P] - phi[dM0P]); + //real phiYZ = c1o4 * (phi[d0MM] - phi[d0MP] + phi[d0PP] - phi[d0PM]); //real back= (c2o1 * (phiX * phiY * phiXY + phiX * phiZ * phiXZ + phiY * phiZ * phiYZ) - phiXX * (phiY * phiY + phiZ * phiZ) - phiYY * (phiX * phiX + phiZ * phiZ) - phiZZ * (phiX * phiX + phiY * phiY)) / (c2o1 * pow(phiX * phiX + phiY * phiY + phiZ * phiZ, c3o2)); return (c2o1 * (phiX * phiY * phiXY + phiX * phiZ * phiXZ + phiY * phiZ * phiYZ) - phiXX * (phiY * phiY + phiZ * phiZ) - phiYY * (phiX * phiX + phiZ * phiZ) - phiZZ * (phiX * phiX + phiY * phiY)) / (c2o1*pow(phiX*phiX+phiY*phiY+phiZ*phiZ,c3o2)); @@ -1608,35 +1608,35 @@ void MultiphaseSharpInterfaceLBMKernel::computePhasefield() int x2p = x2 + 1; int x3p = x3 + 1; - h[DIR_P00] = (*this->localDistributionsH1)(D3Q27System::ET_E, x1, x2, x3); - h[DIR_0P0] = (*this->localDistributionsH1)(D3Q27System::ET_N, x1, x2, x3); - h[DIR_00P] = (*this->localDistributionsH1)(D3Q27System::ET_T, x1, x2, x3); - h[DIR_PP0] = (*this->localDistributionsH1)(D3Q27System::ET_NE, x1, x2, x3); - h[DIR_MP0] = (*this->localDistributionsH1)(D3Q27System::ET_NW, x1p, x2, x3); - h[DIR_P0P] = (*this->localDistributionsH1)(D3Q27System::ET_TE, x1, x2, x3); - h[DIR_M0P] = (*this->localDistributionsH1)(D3Q27System::ET_TW, x1p, x2, x3); - h[DIR_0PP] = (*this->localDistributionsH1)(D3Q27System::ET_TN, x1, x2, x3); - h[DIR_0MP] = (*this->localDistributionsH1)(D3Q27System::ET_TS, x1, x2p, x3); - h[DIR_PPP] = (*this->localDistributionsH1)(D3Q27System::ET_TNE, x1, x2, x3); - h[DIR_MPP] = (*this->localDistributionsH1)(D3Q27System::ET_TNW, x1p, x2, x3); - h[DIR_PMP] = (*this->localDistributionsH1)(D3Q27System::ET_TSE, x1, x2p, x3); - h[DIR_MMP] = (*this->localDistributionsH1)(D3Q27System::ET_TSW, x1p, x2p, x3); - - h[DIR_M00] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_W, x1p, x2, x3); - h[DIR_0M0] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_S, x1, x2p, x3); - h[DIR_00M] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_B, x1, x2, x3p); - h[DIR_MM0] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_SW, x1p, x2p, x3); - h[DIR_PM0] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_SE, x1, x2p, x3); - h[DIR_M0M] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BW, x1p, x2, x3p); - h[DIR_P0M] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BE, x1, x2, x3p); - h[DIR_0MM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BS, x1, x2p, x3p); - h[DIR_0PM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BN, x1, x2, x3p); - h[DIR_MMM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BSW, x1p, x2p, x3p); - h[DIR_PMM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BSE, x1, x2p, x3p); - h[DIR_MPM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BNW, x1p, x2, x3p); - h[DIR_PPM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BNE, x1, x2, x3p); - - h[DIR_000] = (*this->zeroDistributionsH1)(x1, x2, x3); + h[dP00] = (*this->localDistributionsH1)(D3Q27System::ET_E, x1, x2, x3); + h[d0P0] = (*this->localDistributionsH1)(D3Q27System::ET_N, x1, x2, x3); + h[d00P] = (*this->localDistributionsH1)(D3Q27System::ET_T, x1, x2, x3); + h[dPP0] = (*this->localDistributionsH1)(D3Q27System::ET_NE, x1, x2, x3); + h[dMP0] = (*this->localDistributionsH1)(D3Q27System::ET_NW, x1p, x2, x3); + h[dP0P] = (*this->localDistributionsH1)(D3Q27System::ET_TE, x1, x2, x3); + h[dM0P] = (*this->localDistributionsH1)(D3Q27System::ET_TW, x1p, x2, x3); + h[d0PP] = (*this->localDistributionsH1)(D3Q27System::ET_TN, x1, x2, x3); + h[d0MP] = (*this->localDistributionsH1)(D3Q27System::ET_TS, x1, x2p, x3); + h[dPPP] = (*this->localDistributionsH1)(D3Q27System::ET_TNE, x1, x2, x3); + h[dMPP] = (*this->localDistributionsH1)(D3Q27System::ET_TNW, x1p, x2, x3); + h[dPMP] = (*this->localDistributionsH1)(D3Q27System::ET_TSE, x1, x2p, x3); + h[dMMP] = (*this->localDistributionsH1)(D3Q27System::ET_TSW, x1p, x2p, x3); + + h[dM00] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_W, x1p, x2, x3); + h[d0M0] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_S, x1, x2p, x3); + h[d00M] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_B, x1, x2, x3p); + h[dMM0] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_SW, x1p, x2p, x3); + h[dPM0] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_SE, x1, x2p, x3); + h[dM0M] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BW, x1p, x2, x3p); + h[dP0M] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BE, x1, x2, x3p); + h[d0MM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BS, x1, x2p, x3p); + h[d0PM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BN, x1, x2, x3p); + h[dMMM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BSW, x1p, x2p, x3p); + h[dPMM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BSE, x1, x2p, x3p); + h[dMPM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BNW, x1p, x2, x3p); + h[dPPM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BNE, x1, x2, x3p); + + h[d000] = (*this->zeroDistributionsH1)(x1, x2, x3); } } } @@ -1650,7 +1650,7 @@ void MultiphaseSharpInterfaceLBMKernel::findNeighbors(CbArray3D<real, IndexerX3X SPtr<BCArray3D> bcArray = this->getBCSet()->getBCArray(); - phi[DIR_000] = (*ph)(x1, x2, x3); + phi[d000] = (*ph)(x1, x2, x3); for (int k = FSTARTDIR; k <= FENDDIR; k++) { @@ -1671,7 +1671,7 @@ void MultiphaseSharpInterfaceLBMKernel::findNeighbors2(CbArray3D<real, IndexerX3 SPtr<BCArray3D> bcArray = this->getBCSet()->getBCArray(); - phi2[DIR_000] = (*ph)(x1, x2, x3); + phi2[d000] = (*ph)(x1, x2, x3); for (int k = FSTARTDIR; k <= FENDDIR; k++) { diff --git a/src/cpu/MultiphaseFlow/LBM/MultiphaseSimpleVelocityBaseExternalPressureLBMKernel.cpp b/src/cpu/MultiphaseFlow/LBM/MultiphaseSimpleVelocityBaseExternalPressureLBMKernel.cpp index 047da3666e9f77cd5624f5a3479b3cb79a43990b..a01c86ff8a63c89cde6405d32b590dd3fefb9825 100644 --- a/src/cpu/MultiphaseFlow/LBM/MultiphaseSimpleVelocityBaseExternalPressureLBMKernel.cpp +++ b/src/cpu/MultiphaseFlow/LBM/MultiphaseSimpleVelocityBaseExternalPressureLBMKernel.cpp @@ -476,20 +476,20 @@ void MultiphaseSimpleVelocityBaseExternalPressureLBMKernel::calculate(int step) - collFactorM = collFactorL + (collFactorL - collFactorG) * (phi[DIR_000] - phiH) / (phiH - phiL); + collFactorM = collFactorL + (collFactorL - collFactorG) * (phi[d000] - phiH) / (phiH - phiL); - real mu = 2 * beta * phi[DIR_000] * (phi[DIR_000] - 1) * (2 * phi[DIR_000] - 1) - kappa * nabla2_phi(); + real mu = 2 * beta * phi[d000] * (phi[d000] - 1) * (2 * phi[d000] - 1) - kappa * nabla2_phi(); //----------- Calculating Macroscopic Values ------------- - real rho = rhoH + rhoToPhi * (phi[DIR_000] - phiH); //Incompressible + real rho = rhoH + rhoToPhi * (phi[d000] - phiH); //Incompressible ///scaled phase field //LBMReal rho = rhoH + rhoToPhi * ((*phaseField)(x1, x2, x3) * (*phaseField)(x1, x2, x3) / ((*phaseField)(x1, x2, x3) * (*phaseField)(x1, x2, x3) + (c1 - (*phaseField)(x1, x2, x3)) * (c1 - (*phaseField)(x1, x2, x3))) - phiH); ///!scaled phase field - //LBMReal rho = rhoH + rhoToPhi * (phi[DIR_000] - phiH)+(one-phi[DIR_000])* (*pressure)(x1, x2, x3)*three; //compressible - //LBMReal rho = rhoL + (rhoH - rhoL) * phi[DIR_000] + (one - phi[DIR_000]) * (*pressure)(x1, x2, x3) * three; //compressible + //LBMReal rho = rhoH + rhoToPhi * (phi[d000] - phiH)+(one-phi[d000])* (*pressure)(x1, x2, x3)*three; //compressible + //LBMReal rho = rhoL + (rhoH - rhoL) * phi[d000] + (one - phi[d000]) * (*pressure)(x1, x2, x3) * three; //compressible real m0, m1, m2; real rhoRef= c1o1; @@ -511,14 +511,14 @@ void MultiphaseSimpleVelocityBaseExternalPressureLBMKernel::calculate(int step) {{pressureHere,pressureHere,pressureHere},{pressureHere,pressureHere,pressureHere},{pressureHere,pressureHere,pressureHere}}, { {pressureHere,pressureHere,pressureHere},{pressureHere,pressureHere,pressureHere},{pressureHere,pressureHere,pressureHere}} }; //LBMReal LaplaceP = 0.0; - //LaplaceP += WEIGTH[DIR_PPP] * (((((*pressureOld)(x1+1,x2+1,x3+1) - pressureHere) + ((*pressureOld)(x1 - 1, x2 - 1, x3 - 1) - pressureHere)) + (((*pressureOld)(x1 + 1, x2 + 1, x3 - 1) - pressureHere) + ((*pressureOld)(x1 - 1, x2 - 1, x3 + 1) - pressureHere))) + //LaplaceP += WEIGTH[dPPP] * (((((*pressureOld)(x1+1,x2+1,x3+1) - pressureHere) + ((*pressureOld)(x1 - 1, x2 - 1, x3 - 1) - pressureHere)) + (((*pressureOld)(x1 + 1, x2 + 1, x3 - 1) - pressureHere) + ((*pressureOld)(x1 - 1, x2 - 1, x3 + 1) - pressureHere))) // + ((((*pressureOld)(x1 + 1, x2 - 1, x3 + 1) - pressureHere) + ((*pressureOld)(x1 - 1, x2 + 1, x3 - 1) - pressureHere)) + (((*pressureOld)(x1 + 1, x2 - 1, x3 - 1) - pressureHere) + ((*pressureOld)(x1 - 1, x2 + 1, x3 + 1) - pressureHere)))); - //LaplaceP += WEIGTH[DIR_0PP] * ( + //LaplaceP += WEIGTH[d0PP] * ( // ((((*pressureOld)(x1 + 1, x2 + 1, x3) - pressureHere) + ((*pressureOld)(x1 - 1, x2 - 1, x3) - pressureHere)) + (((*pressureOld)(x1 + 1, x2 - 1, x3) - pressureHere) + ((*pressureOld)(x1 - 1, x2 + 1, x3) - pressureHere))) // + ((((*pressureOld)(x1 + 1, x2, x3 + 1) - pressureHere) + ((*pressureOld)(x1 - 1, x2, x3 -1) - pressureHere)) + (((*pressureOld)(x1 + 1, x2, x3 - 1) - pressureHere) + ((*pressureOld)(x1 - 1, x2, x3 + 1) - pressureHere))) // + ((((*pressureOld)(x1, x2 + 1, x3 + 1) - pressureHere) + ((*pressureOld)(x1, x2 - 1, x3 - 1) - pressureHere)) + (((*pressureOld)(x1, x2 + 1, x3 - 1) - pressureHere) + ((*pressureOld)(x1, x2 - 1, x3 + 1) - pressureHere))) // ); - //LaplaceP += WEIGTH[DIR_00P] * ( + //LaplaceP += WEIGTH[d00P] * ( // (((*pressureOld)(x1 + 1, x2, x3) - pressureHere) + ((*pressureOld)(x1, x2-1, x3) - pressureHere)) // + (((*pressureOld)(x1, x2 + 1, x3) - pressureHere) + ((*pressureOld)(x1, x2 - 1, x3) - pressureHere)) // + (((*pressureOld)(x1, x2, x3 + 1) - pressureHere) + ((*pressureOld)(x1, x2, x3 - 1) - pressureHere)) @@ -633,16 +633,16 @@ void MultiphaseSimpleVelocityBaseExternalPressureLBMKernel::calculate(int step) //} //Viscosity increase by phase field residuum - //LBMReal errPhi = (((1.0 - phi[DIR_000]) * (phi[DIR_000]) * oneOverInterfaceScale)- denom); + //LBMReal errPhi = (((1.0 - phi[d000]) * (phi[d000]) * oneOverInterfaceScale)- denom); //LBMReal limVis = 0.01;// 0.0000001 * 10;//0.01; // collFactorM =collFactorM/(c1+limVis*(errPhi*errPhi)*collFactorM); // collFactorM = (collFactorM < 1.8) ? 1.8 : collFactorM; //errPhi = errPhi * errPhi* errPhi * errPhi * errPhi * errPhi; //collFactorM = collFactorM + (1.8 - collFactorM) * errPhi / (errPhi + limVis); - //3.0 * ((WEIGTH[DIR_PPP] * (((phi2[DIR_PPP] - phi2[DIR_MMM]) - (phi2[DIR_PMM] - phi2[DIR_MPP])) + ((phi2[DIR_PMP] - phi2[DIR_MPM]) - (phi2[DIR_PPM] - phi2[DIR_MMP]))) - //+WEIGTH[DIR_PP0] * (((phi2[DIR_P0P] - phi2[DIR_M0M]) - (phi2[DIR_P0M] - phi2[DIR_M0P])) + ((phi2[DIR_0MP] - phi2[DIR_0PM]) + (phi2[DIR_0PP] - phi2[DIR_0MM])))) + - //+WEIGTH[DIR_0P0] * (phi2[DIR_00P] - phi2[DIR_00M])); + //3.0 * ((WEIGTH[dPPP] * (((phi2[dPPP] - phi2[dMMM]) - (phi2[dPMM] - phi2[dMPP])) + ((phi2[dPMP] - phi2[dMPM]) - (phi2[dPPM] - phi2[dMMP]))) + //+WEIGTH[dPP0] * (((phi2[dP0P] - phi2[dM0M]) - (phi2[dP0M] - phi2[dM0P])) + ((phi2[d0MP] - phi2[d0PM]) + (phi2[d0PP] - phi2[d0MM])))) + + //+WEIGTH[d0P0] * (phi2[d00P] - phi2[d00M])); muRho = rho; @@ -656,34 +656,34 @@ void MultiphaseSimpleVelocityBaseExternalPressureLBMKernel::calculate(int step) //LBMReal pBefore = ((((((mfaaa + mfccc) + (mfaac + mfcca)) + ((mfcac + mfaca) + (mfcaa + mfacc))) // + (((mfaab + mfccb) + (mfacb + mfcab)) + ((mfaba + mfcbc) + (mfabc + mfcba)) + ((mfbaa + mfbcc) + (mfbac + mfbca)))) // + ((mfabb + mfcbb) + (mfbab + mfbcb) + (mfbba + mfbbc))) + mfbbb) * c1o3; - //pBefore = -c1o3 * (-1.0e-10)/((rhoL + phi[DIR_000] * (rhoH - rhoL) / (phiH - phiL)) ); + //pBefore = -c1o3 * (-1.0e-10)/((rhoL + phi[d000] * (rhoH - rhoL) / (phiH - phiL)) ); ////if (vvx * vvx + vvy * vvy + vvz * vvz > 1.0e-100) { - // mfabb -= pBefore * c2o9 * ((rhoL + phi[DIR_000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[DIR_P00] * (rhoH - rhoL) / (phiH - phiL))); - // mfbab -= pBefore * c2o9 * ((rhoL + phi[DIR_000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[DIR_0P0] * (rhoH - rhoL) / (phiH - phiL))); - // mfbba -= pBefore * c2o9 * ((rhoL + phi[DIR_000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[DIR_00P] * (rhoH - rhoL) / (phiH - phiL))); - // mfaab -= pBefore * c1o18 * ((rhoL + phi[DIR_000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[DIR_PP0] * (rhoH - rhoL) / (phiH - phiL))); - // mfcab -= pBefore * c1o18 * ((rhoL + phi[DIR_000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[DIR_MP0] * (rhoH - rhoL) / (phiH - phiL))); - // mfaba -= pBefore * c1o18 * ((rhoL + phi[DIR_000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[DIR_P0P] * (rhoH - rhoL) / (phiH - phiL))); - // mfcba -= pBefore * c1o18 * ((rhoL + phi[DIR_000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[DIR_M0P] * (rhoH - rhoL) / (phiH - phiL))); - // mfbaa -= pBefore * c1o18 * ((rhoL + phi[DIR_000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[DIR_0PP] * (rhoH - rhoL) / (phiH - phiL))); - // mfbca -= pBefore * c1o18 * ((rhoL + phi[DIR_000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[DIR_0MP] * (rhoH - rhoL) / (phiH - phiL))); - // mfaaa -= pBefore * c1o72 * ((rhoL + phi[DIR_000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[DIR_PPP] * (rhoH - rhoL) / (phiH - phiL))); - // mfcaa -= pBefore * c1o72 * ((rhoL + phi[DIR_000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[DIR_MPP] * (rhoH - rhoL) / (phiH - phiL))); - // mfaca -= pBefore * c1o72 * ((rhoL + phi[DIR_000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[DIR_PMP] * (rhoH - rhoL) / (phiH - phiL))); - // mfcca -= pBefore * c1o72 * ((rhoL + phi[DIR_000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[DIR_MMP] * (rhoH - rhoL) / (phiH - phiL))); - // mfcbb -= pBefore * c2o9 * ((rhoL + phi[DIR_000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[DIR_M00] * (rhoH - rhoL) / (phiH - phiL))); - // mfbcb -= pBefore * c2o9 * ((rhoL + phi[DIR_000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[DIR_0M0] * (rhoH - rhoL) / (phiH - phiL))); - // mfbbc -= pBefore * c2o9 * ((rhoL + phi[DIR_000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[DIR_00M] * (rhoH - rhoL) / (phiH - phiL))); - // mfccb -= pBefore * c1o18 * ((rhoL + phi[DIR_000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[DIR_MM0] * (rhoH - rhoL) / (phiH - phiL))); - // mfacb -= pBefore * c1o18 * ((rhoL + phi[DIR_000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[DIR_PM0] * (rhoH - rhoL) / (phiH - phiL))); - // mfcbc -= pBefore * c1o18 * ((rhoL + phi[DIR_000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[DIR_M0M] * (rhoH - rhoL) / (phiH - phiL))); - // mfabc -= pBefore * c1o18 * ((rhoL + phi[DIR_000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[DIR_P0M] * (rhoH - rhoL) / (phiH - phiL))); - // mfbcc -= pBefore * c1o18 * ((rhoL + phi[DIR_000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[DIR_0MM] * (rhoH - rhoL) / (phiH - phiL))); - // mfbac -= pBefore * c1o18 * ((rhoL + phi[DIR_000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[DIR_0PM] * (rhoH - rhoL) / (phiH - phiL))); - // mfccc -= pBefore * c1o72 * ((rhoL + phi[DIR_000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[DIR_MMM] * (rhoH - rhoL) / (phiH - phiL))); - // mfacc -= pBefore * c1o72 * ((rhoL + phi[DIR_000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[DIR_PMM] * (rhoH - rhoL) / (phiH - phiL))); - // mfcac -= pBefore * c1o72 * ((rhoL + phi[DIR_000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[DIR_MPM] * (rhoH - rhoL) / (phiH - phiL))); - // mfaac -= pBefore * c1o72 * ((rhoL + phi[DIR_000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[DIR_PPM] * (rhoH - rhoL) / (phiH - phiL))); + // mfabb -= pBefore * c2o9 * ((rhoL + phi[d000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[dP00] * (rhoH - rhoL) / (phiH - phiL))); + // mfbab -= pBefore * c2o9 * ((rhoL + phi[d000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[d0P0] * (rhoH - rhoL) / (phiH - phiL))); + // mfbba -= pBefore * c2o9 * ((rhoL + phi[d000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[d00P] * (rhoH - rhoL) / (phiH - phiL))); + // mfaab -= pBefore * c1o18 * ((rhoL + phi[d000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[dPP0] * (rhoH - rhoL) / (phiH - phiL))); + // mfcab -= pBefore * c1o18 * ((rhoL + phi[d000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[dMP0] * (rhoH - rhoL) / (phiH - phiL))); + // mfaba -= pBefore * c1o18 * ((rhoL + phi[d000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[dP0P] * (rhoH - rhoL) / (phiH - phiL))); + // mfcba -= pBefore * c1o18 * ((rhoL + phi[d000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[dM0P] * (rhoH - rhoL) / (phiH - phiL))); + // mfbaa -= pBefore * c1o18 * ((rhoL + phi[d000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[d0PP] * (rhoH - rhoL) / (phiH - phiL))); + // mfbca -= pBefore * c1o18 * ((rhoL + phi[d000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[d0MP] * (rhoH - rhoL) / (phiH - phiL))); + // mfaaa -= pBefore * c1o72 * ((rhoL + phi[d000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[dPPP] * (rhoH - rhoL) / (phiH - phiL))); + // mfcaa -= pBefore * c1o72 * ((rhoL + phi[d000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[dMPP] * (rhoH - rhoL) / (phiH - phiL))); + // mfaca -= pBefore * c1o72 * ((rhoL + phi[d000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[dPMP] * (rhoH - rhoL) / (phiH - phiL))); + // mfcca -= pBefore * c1o72 * ((rhoL + phi[d000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[dMMP] * (rhoH - rhoL) / (phiH - phiL))); + // mfcbb -= pBefore * c2o9 * ((rhoL + phi[d000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[dM00] * (rhoH - rhoL) / (phiH - phiL))); + // mfbcb -= pBefore * c2o9 * ((rhoL + phi[d000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[d0M0] * (rhoH - rhoL) / (phiH - phiL))); + // mfbbc -= pBefore * c2o9 * ((rhoL + phi[d000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[d00M] * (rhoH - rhoL) / (phiH - phiL))); + // mfccb -= pBefore * c1o18 * ((rhoL + phi[d000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[dMM0] * (rhoH - rhoL) / (phiH - phiL))); + // mfacb -= pBefore * c1o18 * ((rhoL + phi[d000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[dPM0] * (rhoH - rhoL) / (phiH - phiL))); + // mfcbc -= pBefore * c1o18 * ((rhoL + phi[d000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[dM0M] * (rhoH - rhoL) / (phiH - phiL))); + // mfabc -= pBefore * c1o18 * ((rhoL + phi[d000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[dP0M] * (rhoH - rhoL) / (phiH - phiL))); + // mfbcc -= pBefore * c1o18 * ((rhoL + phi[d000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[d0MM] * (rhoH - rhoL) / (phiH - phiL))); + // mfbac -= pBefore * c1o18 * ((rhoL + phi[d000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[d0PM] * (rhoH - rhoL) / (phiH - phiL))); + // mfccc -= pBefore * c1o72 * ((rhoL + phi[d000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[dMMM] * (rhoH - rhoL) / (phiH - phiL))); + // mfacc -= pBefore * c1o72 * ((rhoL + phi[d000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[dPMM] * (rhoH - rhoL) / (phiH - phiL))); + // mfcac -= pBefore * c1o72 * ((rhoL + phi[d000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[dMPM] * (rhoH - rhoL) / (phiH - phiL))); + // mfaac -= pBefore * c1o72 * ((rhoL + phi[d000] * (rhoH - rhoL) / (phiH - phiL)) / (rhoL + phi[dPPM] * (rhoH - rhoL) / (phiH - phiL))); // mfbbb -= pBefore * 8.0 / 9.0; //} @@ -808,12 +808,12 @@ void MultiphaseSimpleVelocityBaseExternalPressureLBMKernel::calculate(int step) // + (((mfaab + mfccb) + (mfacb + mfcab)) + ((mfaba + mfcbc) + (mfabc + mfcba)) + ((mfbaa + mfbcc) + (mfbac + mfbca)))) * c2 // + ((mfabb + mfcbb) + (mfbab + mfbcb) + (mfbba + mfbbc)))) * c1o3 ; - //(*phaseFieldOld)(x1, x2, x3) = ((*phaseFieldOld)(x1, x2, x3) > 99.0) ? phi[DIR_000] : (*phaseFieldOld)(x1, x2, x3); - //LBMReal dtPhi = phi[DIR_000] - (*phaseFieldOld)(x1, x2, x3); + //(*phaseFieldOld)(x1, x2, x3) = ((*phaseFieldOld)(x1, x2, x3) > 99.0) ? phi[d000] : (*phaseFieldOld)(x1, x2, x3); + //LBMReal dtPhi = phi[d000] - (*phaseFieldOld)(x1, x2, x3); //LBMReal deltaP = -pStar * (c1 - rho / (rho + c1o2 * rhoToPhi * dtPhi));// -pStar * pStar * pStar * 1.0e-4 * rho * rho * rho; //LBMReal deltaP = pStar * (c1 - mfhbbb*rho) * c1o2;//Explicit //LBMReal deltaP = pStar * (c1 - mfhbbb * rho) / (c1 + mfhbbb * rho);//Semi-Implicit - //(*phaseFieldOld)(x1, x2, x3) = phi[DIR_000]; + //(*phaseFieldOld)(x1, x2, x3) = phi[d000]; //mfabb += c2o9 *deltaP; //mfbab += c2o9 *deltaP; @@ -849,32 +849,32 @@ void MultiphaseSimpleVelocityBaseExternalPressureLBMKernel::calculate(int step) - //mfabb -= c1o2 * c2o9 *pStar*(phi[DIR_000]-phi[DIR_P00])*rhoToPhi/rho; - //mfbab -= c1o2 * c2o9 *pStar*(phi[DIR_000]-phi[DIR_0P0])*rhoToPhi/rho; - //mfbba -= c1o2 * c2o9 *pStar*(phi[DIR_000]-phi[DIR_00P])*rhoToPhi/rho; - //mfaab -= c1o2 * c1o18*pStar*(phi[DIR_000]-phi[DIR_PP0])*rhoToPhi/rho; - //mfcab -= c1o2 * c1o18*pStar*(phi[DIR_000]-phi[DIR_MP0])*rhoToPhi/rho; - //mfaba -= c1o2 * c1o18*pStar*(phi[DIR_000]-phi[DIR_P0P])*rhoToPhi/rho; - //mfcba -= c1o2 * c1o18*pStar*(phi[DIR_000]-phi[DIR_M0P])*rhoToPhi/rho; - //mfbaa -= c1o2 * c1o18*pStar*(phi[DIR_000]-phi[DIR_0PP])*rhoToPhi/rho; - //mfbca -= c1o2 * c1o18*pStar*(phi[DIR_000]-phi[DIR_0MP])*rhoToPhi/rho; - //mfaaa -= c1o2 * c1o72*pStar*(phi[DIR_000]-phi[DIR_PPP])*rhoToPhi/rho; - //mfcaa -= c1o2 * c1o72*pStar*(phi[DIR_000]-phi[DIR_MPP])*rhoToPhi/rho; - //mfaca -= c1o2 * c1o72*pStar*(phi[DIR_000]-phi[DIR_PMP])*rhoToPhi/rho; - //mfcca -= c1o2 * c1o72*pStar*(phi[DIR_000]-phi[DIR_MMP])*rhoToPhi/rho; - //mfcbb -= c1o2 * c2o9 *pStar*(phi[DIR_000]-phi[DIR_M00])*rhoToPhi/rho; - //mfbcb -= c1o2 * c2o9 *pStar*(phi[DIR_000]-phi[DIR_0M0])*rhoToPhi/rho; - //mfbbc -= c1o2 * c2o9 *pStar*(phi[DIR_000]-phi[DIR_00M])*rhoToPhi/rho; - //mfccb -= c1o2 * c1o18*pStar*(phi[DIR_000]-phi[DIR_MM0])*rhoToPhi/rho; - //mfacb -= c1o2 * c1o18*pStar*(phi[DIR_000]-phi[DIR_PM0])*rhoToPhi/rho; - //mfcbc -= c1o2 * c1o18*pStar*(phi[DIR_000]-phi[DIR_M0M])*rhoToPhi/rho; - //mfabc -= c1o2 * c1o18*pStar*(phi[DIR_000]-phi[DIR_P0M])*rhoToPhi/rho; - //mfbcc -= c1o2 * c1o18*pStar*(phi[DIR_000]-phi[DIR_0MM])*rhoToPhi/rho; - //mfbac -= c1o2 * c1o18*pStar*(phi[DIR_000]-phi[DIR_0PM])*rhoToPhi/rho; - //mfccc -= c1o2 * c1o72*pStar*(phi[DIR_000]-phi[DIR_MMM])*rhoToPhi/rho; - //mfacc -= c1o2 * c1o72*pStar*(phi[DIR_000]-phi[DIR_PMM])*rhoToPhi/rho; - //mfcac -= c1o2 * c1o72*pStar*(phi[DIR_000]-phi[DIR_MPM])*rhoToPhi/rho; - //mfaac -= c1o2 * c1o72*pStar*(phi[DIR_000]-phi[DIR_PPM])*rhoToPhi/rho; + //mfabb -= c1o2 * c2o9 *pStar*(phi[d000]-phi[dP00])*rhoToPhi/rho; + //mfbab -= c1o2 * c2o9 *pStar*(phi[d000]-phi[d0P0])*rhoToPhi/rho; + //mfbba -= c1o2 * c2o9 *pStar*(phi[d000]-phi[d00P])*rhoToPhi/rho; + //mfaab -= c1o2 * c1o18*pStar*(phi[d000]-phi[dPP0])*rhoToPhi/rho; + //mfcab -= c1o2 * c1o18*pStar*(phi[d000]-phi[dMP0])*rhoToPhi/rho; + //mfaba -= c1o2 * c1o18*pStar*(phi[d000]-phi[dP0P])*rhoToPhi/rho; + //mfcba -= c1o2 * c1o18*pStar*(phi[d000]-phi[dM0P])*rhoToPhi/rho; + //mfbaa -= c1o2 * c1o18*pStar*(phi[d000]-phi[d0PP])*rhoToPhi/rho; + //mfbca -= c1o2 * c1o18*pStar*(phi[d000]-phi[d0MP])*rhoToPhi/rho; + //mfaaa -= c1o2 * c1o72*pStar*(phi[d000]-phi[dPPP])*rhoToPhi/rho; + //mfcaa -= c1o2 * c1o72*pStar*(phi[d000]-phi[dMPP])*rhoToPhi/rho; + //mfaca -= c1o2 * c1o72*pStar*(phi[d000]-phi[dPMP])*rhoToPhi/rho; + //mfcca -= c1o2 * c1o72*pStar*(phi[d000]-phi[dMMP])*rhoToPhi/rho; + //mfcbb -= c1o2 * c2o9 *pStar*(phi[d000]-phi[dM00])*rhoToPhi/rho; + //mfbcb -= c1o2 * c2o9 *pStar*(phi[d000]-phi[d0M0])*rhoToPhi/rho; + //mfbbc -= c1o2 * c2o9 *pStar*(phi[d000]-phi[d00M])*rhoToPhi/rho; + //mfccb -= c1o2 * c1o18*pStar*(phi[d000]-phi[dMM0])*rhoToPhi/rho; + //mfacb -= c1o2 * c1o18*pStar*(phi[d000]-phi[dPM0])*rhoToPhi/rho; + //mfcbc -= c1o2 * c1o18*pStar*(phi[d000]-phi[dM0M])*rhoToPhi/rho; + //mfabc -= c1o2 * c1o18*pStar*(phi[d000]-phi[dP0M])*rhoToPhi/rho; + //mfbcc -= c1o2 * c1o18*pStar*(phi[d000]-phi[d0MM])*rhoToPhi/rho; + //mfbac -= c1o2 * c1o18*pStar*(phi[d000]-phi[d0PM])*rhoToPhi/rho; + //mfccc -= c1o2 * c1o72*pStar*(phi[d000]-phi[dMMM])*rhoToPhi/rho; + //mfacc -= c1o2 * c1o72*pStar*(phi[d000]-phi[dPMM])*rhoToPhi/rho; + //mfcac -= c1o2 * c1o72*pStar*(phi[d000]-phi[dMPM])*rhoToPhi/rho; + //mfaac -= c1o2 * c1o72*pStar*(phi[d000]-phi[dPPM])*rhoToPhi/rho; //forcingX1 =/* muForcingX1.Eval() / rho*/ - pStar * dX1_phi * rhoToPhi / rho; @@ -949,9 +949,9 @@ void MultiphaseSimpleVelocityBaseExternalPressureLBMKernel::calculate(int step) //forcingX1 = (-pStar * dX1_phi * rhoToPhi / rho + pStar * dX1_rhoInv * rho) *c1o2; //forcingX2 = (-pStar * dX2_phi * rhoToPhi / rho + pStar * dX2_rhoInv * rho) *c1o2; //forcingX3 = (-pStar * dX3_phi * rhoToPhi / rho + pStar * dX3_rhoInv * rho) *c1o2; - //LBMReal FdX1_phi = normX1 * (1.0 - phi[DIR_000]) * (phi[DIR_000]) * oneOverInterfaceScale; - //LBMReal FdX2_phi = normX2 * (1.0 - phi[DIR_000]) * (phi[DIR_000]) * oneOverInterfaceScale; - //LBMReal FdX3_phi = normX3 * (1.0 - phi[DIR_000]) * (phi[DIR_000]) * oneOverInterfaceScale; + //LBMReal FdX1_phi = normX1 * (1.0 - phi[d000]) * (phi[d000]) * oneOverInterfaceScale; + //LBMReal FdX2_phi = normX2 * (1.0 - phi[d000]) * (phi[d000]) * oneOverInterfaceScale; + //LBMReal FdX3_phi = normX3 * (1.0 - phi[d000]) * (phi[d000]) * oneOverInterfaceScale; //forcingX1 = (-pStar * dX1_phi * rhoToPhi / rho ) ; @@ -961,7 +961,7 @@ void MultiphaseSimpleVelocityBaseExternalPressureLBMKernel::calculate(int step) //forcingX1 = (pStar * dRhoInvX* rho *c3) ; //forcingX2 = (pStar * dRhoInvY* rho *c3) ; //forcingX3 = (pStar * dRhoInvZ* rho *c3) ; - //if (phi[DIR_000] > 0.1 && phi[DIR_000] < 0.9) std::cout << phi[DIR_000] << " " << dX1_phi * rhoToPhi / rho << " " << dRhoInvX * rho *3<< std::endl; + //if (phi[d000] > 0.1 && phi[d000] < 0.9) std::cout << phi[d000] << " " << dX1_phi * rhoToPhi / rho << " " << dRhoInvX * rho *3<< std::endl; //LBMReal forcingX1ALTERNAT = ( pStar * dX1_rhoInv * rho) ; //LBMReal forcingX2ALTERNAT = ( pStar * dX2_rhoInv * rho) ; //LBMReal forcingX3ALTERNAT = ( pStar * dX3_rhoInv * rho) ; @@ -970,22 +970,22 @@ void MultiphaseSimpleVelocityBaseExternalPressureLBMKernel::calculate(int step) //forcingX2 = (fabs(vvy + c1o2 * forcingX2) < fabs(vvy + c1o2 * forcingX2ALTERNAT)) ? forcingX2 : forcingX2ALTERNAT; //forcingX3 = (fabs(vvz + c1o2 * forcingX3) < fabs(vvz + c1o2 * forcingX3ALTERNAT)) ? forcingX3 : forcingX3ALTERNAT; - // forcingX1 = -pStar * rhoToPhi / rho * normX1 * (1.0 - phi[DIR_000]) * (phi[DIR_000]) * oneOverInterfaceScale; - // forcingX2 = -pStar * rhoToPhi / rho * normX2 * (1.0 - phi[DIR_000]) * (phi[DIR_000]) * oneOverInterfaceScale; - // forcingX3 = -pStar * rhoToPhi / rho * normX3 * (1.0 - phi[DIR_000]) * (phi[DIR_000]) * oneOverInterfaceScale; + // forcingX1 = -pStar * rhoToPhi / rho * normX1 * (1.0 - phi[d000]) * (phi[d000]) * oneOverInterfaceScale; + // forcingX2 = -pStar * rhoToPhi / rho * normX2 * (1.0 - phi[d000]) * (phi[d000]) * oneOverInterfaceScale; + // forcingX3 = -pStar * rhoToPhi / rho * normX3 * (1.0 - phi[d000]) * (phi[d000]) * oneOverInterfaceScale; - //forcingX1 = (-pStar * dX1_phi * rhoToPhi / rho *(c1- phi[DIR_000]) + pStar * dX1_rhoInv * rho*(phi[DIR_000])); - //forcingX2 = (-pStar * dX2_phi * rhoToPhi / rho *(c1- phi[DIR_000]) + pStar * dX2_rhoInv * rho*(phi[DIR_000])); - //forcingX3 = (-pStar * dX3_phi * rhoToPhi / rho *(c1- phi[DIR_000]) + pStar * dX3_rhoInv * rho*(phi[DIR_000])); - //if (phi[DIR_000] > 0.3 && phi[DIR_000] < 0.7) + //forcingX1 = (-pStar * dX1_phi * rhoToPhi / rho *(c1- phi[d000]) + pStar * dX1_rhoInv * rho*(phi[d000])); + //forcingX2 = (-pStar * dX2_phi * rhoToPhi / rho *(c1- phi[d000]) + pStar * dX2_rhoInv * rho*(phi[d000])); + //forcingX3 = (-pStar * dX3_phi * rhoToPhi / rho *(c1- phi[d000]) + pStar * dX3_rhoInv * rho*(phi[d000])); + //if (phi[d000] > 0.3 && phi[d000] < 0.7) //{ // int test = 1; - // std::cout << phi[DIR_000] <<" "<< dX1_phi <<" "<< normX1 * (1.0 - phi[DIR_000]) * (phi[DIR_000]) * oneOverInterfaceScale<<" "<< normX1 * (1.0 - phi[DIR_000]) * (phi[DIR_000]) * oneOverInterfaceScale/ dX1_phi<< std::endl; + // std::cout << phi[d000] <<" "<< dX1_phi <<" "<< normX1 * (1.0 - phi[d000]) * (phi[d000]) * oneOverInterfaceScale<<" "<< normX1 * (1.0 - phi[d000]) * (phi[d000]) * oneOverInterfaceScale/ dX1_phi<< std::endl; //} - //LBMReal scaleGrad = c2 * phi[DIR_000] * (1.0 - phi[DIR_000]) / ((phi[DIR_000] * phi[DIR_000] + (1.0 - phi[DIR_000]) * (1.0 - phi[DIR_000])) * (phi[DIR_000] * phi[DIR_000] + (1.0 - phi[DIR_000]) * (1.0 - phi[DIR_000]))); + //LBMReal scaleGrad = c2 * phi[d000] * (1.0 - phi[d000]) / ((phi[d000] * phi[d000] + (1.0 - phi[d000]) * (1.0 - phi[d000])) * (phi[d000] * phi[d000] + (1.0 - phi[d000]) * (1.0 - phi[d000]))); //dX1_phi *= scaleGrad; //dX2_phi *= scaleGrad; //dX3_phi *= scaleGrad; @@ -1002,9 +1002,9 @@ void MultiphaseSimpleVelocityBaseExternalPressureLBMKernel::calculate(int step) forcingX3 += mu * dX3_phi/rho; //LBMReal forcingBIAS = 0.5; - forcingX1 += muForcingX1.Eval() / rho;//*phi[DIR_000]; - forcingX2 += muForcingX2.Eval() / rho;// * phi[DIR_000]; - forcingX3 += muForcingX3.Eval() / rho;// * phi[DIR_000]; + forcingX1 += muForcingX1.Eval() / rho;//*phi[d000]; + forcingX2 += muForcingX2.Eval() / rho;// * phi[d000]; + forcingX3 += muForcingX3.Eval() / rho;// * phi[d000]; // //19.08.2022 //vvx += vvxh / rho * c1o2; @@ -1235,7 +1235,7 @@ void MultiphaseSimpleVelocityBaseExternalPressureLBMKernel::calculate(int step) //////////////////////////////////////////////////////////////////////////////////// real wadjust; - real qudricLimit = 0.01 / (c1o1 + 1.0e4 * phi[DIR_000] * (c1o1 - phi[DIR_000])); //real qudricLimit = 0.01; + real qudricLimit = 0.01 / (c1o1 + 1.0e4 * phi[d000] * (c1o1 - phi[d000])); //real qudricLimit = 0.01; //////////////////////////////////////////////////////////////////////////////////// //Hin //////////////////////////////////////////////////////////////////////////////////// @@ -1726,9 +1726,9 @@ void MultiphaseSimpleVelocityBaseExternalPressureLBMKernel::calculate(int step) ////////////////////////////////////////////////////////////////////////////////////// //grad Rho - //LBMReal dX1_rho = (rhoToPhi - three * (*pressure)(x1, x2, x3)) * dX1_phi - phi[DIR_000] * three * gradPx; - //LBMReal dX2_rho = (rhoToPhi - three * (*pressure)(x1, x2, x3)) * dX2_phi - phi[DIR_000] * three * gradPy; - //LBMReal dX3_rho = (rhoToPhi - three * (*pressure)(x1, x2, x3)) * dX3_phi - phi[DIR_000] * three * gradPz; + //LBMReal dX1_rho = (rhoToPhi - three * (*pressure)(x1, x2, x3)) * dX1_phi - phi[d000] * three * gradPx; + //LBMReal dX2_rho = (rhoToPhi - three * (*pressure)(x1, x2, x3)) * dX2_phi - phi[d000] * three * gradPy; + //LBMReal dX3_rho = (rhoToPhi - three * (*pressure)(x1, x2, x3)) * dX3_phi - phi[d000] * three * gradPz; //LBMReal dX2_rho = (rhoToPhi ) * dX2_phi ; //LBMReal dX1_rho = (rhoToPhi ) * dX1_phi ; @@ -2356,32 +2356,32 @@ void MultiphaseSimpleVelocityBaseExternalPressureLBMKernel::calculate(int step) - //mfabb += c1o2 * c2o9 * pStar * (phi[DIR_000] - phi[DIR_M00]) * rhoToPhi / rho; - //mfbab += c1o2 * c2o9 * pStar * (phi[DIR_000] - phi[DIR_0M0]) * rhoToPhi / rho; - //mfbba += c1o2 * c2o9 * pStar * (phi[DIR_000] - phi[DIR_00M]) * rhoToPhi / rho; - //mfaab += c1o2 * c1o18 * pStar * (phi[DIR_000] - phi[DIR_MM0]) * rhoToPhi / rho; - //mfcab += c1o2 * c1o18 * pStar * (phi[DIR_000] - phi[DIR_PM0]) * rhoToPhi / rho; - //mfaba += c1o2 * c1o18 * pStar * (phi[DIR_000] - phi[DIR_M0M]) * rhoToPhi / rho; - //mfcba += c1o2 * c1o18 * pStar * (phi[DIR_000] - phi[DIR_P0M]) * rhoToPhi / rho; - //mfbaa += c1o2 * c1o18 * pStar * (phi[DIR_000] - phi[DIR_0MM]) * rhoToPhi / rho; - //mfbca += c1o2 * c1o18 * pStar * (phi[DIR_000] - phi[DIR_0PM]) * rhoToPhi / rho; - //mfaaa += c1o2 * c1o72 * pStar * (phi[DIR_000] - phi[DIR_MMM]) * rhoToPhi / rho; - //mfcaa += c1o2 * c1o72 * pStar * (phi[DIR_000] - phi[DIR_PMM]) * rhoToPhi / rho; - //mfaca += c1o2 * c1o72 * pStar * (phi[DIR_000] - phi[DIR_MPM]) * rhoToPhi / rho; - //mfcca += c1o2 * c1o72 * pStar * (phi[DIR_000] - phi[DIR_PPM]) * rhoToPhi / rho; - //mfcbb += c1o2 * c2o9 * pStar * (phi[DIR_000] - phi[DIR_P00]) * rhoToPhi / rho; - //mfbcb += c1o2 * c2o9 * pStar * (phi[DIR_000] - phi[DIR_0P0]) * rhoToPhi / rho; - //mfbbc += c1o2 * c2o9 * pStar * (phi[DIR_000] - phi[DIR_00P]) * rhoToPhi / rho; - //mfccb += c1o2 * c1o18 * pStar * (phi[DIR_000] - phi[DIR_PP0]) * rhoToPhi / rho; - //mfacb += c1o2 * c1o18 * pStar * (phi[DIR_000] - phi[DIR_MP0]) * rhoToPhi / rho; - //mfcbc += c1o2 * c1o18 * pStar * (phi[DIR_000] - phi[DIR_P0P]) * rhoToPhi / rho; - //mfabc += c1o2 * c1o18 * pStar * (phi[DIR_000] - phi[DIR_M0P]) * rhoToPhi / rho; - //mfbcc += c1o2 * c1o18 * pStar * (phi[DIR_000] - phi[DIR_0PP]) * rhoToPhi / rho; - //mfbac += c1o2 * c1o18 * pStar * (phi[DIR_000] - phi[DIR_0MP]) * rhoToPhi / rho; - //mfccc += c1o2 * c1o72 * pStar * (phi[DIR_000] - phi[DIR_PPP]) * rhoToPhi / rho; - //mfacc += c1o2 * c1o72 * pStar * (phi[DIR_000] - phi[DIR_MPP]) * rhoToPhi / rho; - //mfcac += c1o2 * c1o72 * pStar * (phi[DIR_000] - phi[DIR_PMP]) * rhoToPhi / rho; - //mfaac += c1o2 * c1o72 * pStar * (phi[DIR_000] - phi[DIR_MMP]) * rhoToPhi / rho; + //mfabb += c1o2 * c2o9 * pStar * (phi[d000] - phi[dM00]) * rhoToPhi / rho; + //mfbab += c1o2 * c2o9 * pStar * (phi[d000] - phi[d0M0]) * rhoToPhi / rho; + //mfbba += c1o2 * c2o9 * pStar * (phi[d000] - phi[d00M]) * rhoToPhi / rho; + //mfaab += c1o2 * c1o18 * pStar * (phi[d000] - phi[dMM0]) * rhoToPhi / rho; + //mfcab += c1o2 * c1o18 * pStar * (phi[d000] - phi[dPM0]) * rhoToPhi / rho; + //mfaba += c1o2 * c1o18 * pStar * (phi[d000] - phi[dM0M]) * rhoToPhi / rho; + //mfcba += c1o2 * c1o18 * pStar * (phi[d000] - phi[dP0M]) * rhoToPhi / rho; + //mfbaa += c1o2 * c1o18 * pStar * (phi[d000] - phi[d0MM]) * rhoToPhi / rho; + //mfbca += c1o2 * c1o18 * pStar * (phi[d000] - phi[d0PM]) * rhoToPhi / rho; + //mfaaa += c1o2 * c1o72 * pStar * (phi[d000] - phi[dMMM]) * rhoToPhi / rho; + //mfcaa += c1o2 * c1o72 * pStar * (phi[d000] - phi[dPMM]) * rhoToPhi / rho; + //mfaca += c1o2 * c1o72 * pStar * (phi[d000] - phi[dMPM]) * rhoToPhi / rho; + //mfcca += c1o2 * c1o72 * pStar * (phi[d000] - phi[dPPM]) * rhoToPhi / rho; + //mfcbb += c1o2 * c2o9 * pStar * (phi[d000] - phi[dP00]) * rhoToPhi / rho; + //mfbcb += c1o2 * c2o9 * pStar * (phi[d000] - phi[d0P0]) * rhoToPhi / rho; + //mfbbc += c1o2 * c2o9 * pStar * (phi[d000] - phi[d00P]) * rhoToPhi / rho; + //mfccb += c1o2 * c1o18 * pStar * (phi[d000] - phi[dPP0]) * rhoToPhi / rho; + //mfacb += c1o2 * c1o18 * pStar * (phi[d000] - phi[dMP0]) * rhoToPhi / rho; + //mfcbc += c1o2 * c1o18 * pStar * (phi[d000] - phi[dP0P]) * rhoToPhi / rho; + //mfabc += c1o2 * c1o18 * pStar * (phi[d000] - phi[dM0P]) * rhoToPhi / rho; + //mfbcc += c1o2 * c1o18 * pStar * (phi[d000] - phi[d0PP]) * rhoToPhi / rho; + //mfbac += c1o2 * c1o18 * pStar * (phi[d000] - phi[d0MP]) * rhoToPhi / rho; + //mfccc += c1o2 * c1o72 * pStar * (phi[d000] - phi[dPPP]) * rhoToPhi / rho; + //mfacc += c1o2 * c1o72 * pStar * (phi[d000] - phi[dMPP]) * rhoToPhi / rho; + //mfcac += c1o2 * c1o72 * pStar * (phi[d000] - phi[dPMP]) * rhoToPhi / rho; + //mfaac += c1o2 * c1o72 * pStar * (phi[d000] - phi[dMMP]) * rhoToPhi / rho; /////////////// //mfabb += (pBefore-pStar) * c2o9 ; @@ -2808,9 +2808,9 @@ real MultiphaseSimpleVelocityBaseExternalPressureLBMKernel::gradX1_phi() using namespace vf::lbm::dir; using namespace D3Q27System; - return 3.0* ((WEIGTH[DIR_PPP] * (((phi[DIR_PPP] - phi[DIR_MMM]) + (phi[DIR_PMM] - phi[DIR_MPP])) + ((phi[DIR_PMP] - phi[DIR_MPM]) + (phi[DIR_PPM] - phi[DIR_MMP]))) - + WEIGTH[DIR_PP0] * (((phi[DIR_P0P] - phi[DIR_M0M]) + (phi[DIR_P0M] - phi[DIR_M0P])) + ((phi[DIR_PM0] - phi[DIR_MP0]) + (phi[DIR_PP0] - phi[DIR_MM0])))) + - +WEIGTH[DIR_0P0] * (phi[DIR_P00] - phi[DIR_M00])); + return 3.0* ((WEIGTH[dPPP] * (((phi[dPPP] - phi[dMMM]) + (phi[dPMM] - phi[dMPP])) + ((phi[dPMP] - phi[dMPM]) + (phi[dPPM] - phi[dMMP]))) + + WEIGTH[dPP0] * (((phi[dP0P] - phi[dM0M]) + (phi[dP0M] - phi[dM0P])) + ((phi[dPM0] - phi[dMP0]) + (phi[dPP0] - phi[dMM0])))) + + +WEIGTH[d0P0] * (phi[dP00] - phi[dM00])); } real MultiphaseSimpleVelocityBaseExternalPressureLBMKernel::gradX2_phi() @@ -2818,9 +2818,9 @@ real MultiphaseSimpleVelocityBaseExternalPressureLBMKernel::gradX2_phi() using namespace D3Q27System; using namespace vf::lbm::dir; - return 3.0 * ((WEIGTH[DIR_PPP] * (((phi[DIR_PPP] - phi[DIR_MMM]) - (phi[DIR_PMM] - phi[DIR_MPP])) + ((phi[DIR_PPM] - phi[DIR_MMP])- (phi[DIR_PMP] - phi[DIR_MPM]))) - + WEIGTH[DIR_PP0] * (((phi[DIR_0PP] - phi[DIR_0MM]) + (phi[DIR_0PM] - phi[DIR_0MP])) + ((phi[DIR_PP0] - phi[DIR_MM0])- (phi[DIR_PM0] - phi[DIR_MP0])))) + - +WEIGTH[DIR_0P0] * (phi[DIR_0P0] - phi[DIR_0M0])); + return 3.0 * ((WEIGTH[dPPP] * (((phi[dPPP] - phi[dMMM]) - (phi[dPMM] - phi[dMPP])) + ((phi[dPPM] - phi[dMMP])- (phi[dPMP] - phi[dMPM]))) + + WEIGTH[dPP0] * (((phi[d0PP] - phi[d0MM]) + (phi[d0PM] - phi[d0MP])) + ((phi[dPP0] - phi[dMM0])- (phi[dPM0] - phi[dMP0])))) + + +WEIGTH[d0P0] * (phi[d0P0] - phi[d0M0])); } real MultiphaseSimpleVelocityBaseExternalPressureLBMKernel::gradX3_phi() @@ -2828,9 +2828,9 @@ real MultiphaseSimpleVelocityBaseExternalPressureLBMKernel::gradX3_phi() using namespace D3Q27System; using namespace vf::lbm::dir; - return 3.0 * ((WEIGTH[DIR_PPP] * (((phi[DIR_PPP] - phi[DIR_MMM]) - (phi[DIR_PMM] - phi[DIR_MPP])) + ((phi[DIR_PMP] - phi[DIR_MPM]) - (phi[DIR_PPM] - phi[DIR_MMP]))) - + WEIGTH[DIR_PP0] * (((phi[DIR_P0P] - phi[DIR_M0M]) - (phi[DIR_P0M] - phi[DIR_M0P])) + ((phi[DIR_0MP] - phi[DIR_0PM]) + (phi[DIR_0PP] - phi[DIR_0MM])))) + - +WEIGTH[DIR_0P0] * (phi[DIR_00P] - phi[DIR_00M])); + return 3.0 * ((WEIGTH[dPPP] * (((phi[dPPP] - phi[dMMM]) - (phi[dPMM] - phi[dMPP])) + ((phi[dPMP] - phi[dMPM]) - (phi[dPPM] - phi[dMMP]))) + + WEIGTH[dPP0] * (((phi[dP0P] - phi[dM0M]) - (phi[dP0M] - phi[dM0P])) + ((phi[d0MP] - phi[d0PM]) + (phi[d0PP] - phi[d0MM])))) + + +WEIGTH[d0P0] * (phi[d00P] - phi[d00M])); } real MultiphaseSimpleVelocityBaseExternalPressureLBMKernel::gradX1_rhoInv(real rhoL,real rhoDIV) @@ -2838,9 +2838,9 @@ real MultiphaseSimpleVelocityBaseExternalPressureLBMKernel::gradX1_rhoInv(real r using namespace D3Q27System; using namespace vf::lbm::dir; - return 3.0 * ((WEIGTH[DIR_PPP] * (((1.0/(rhoL+rhoDIV*phi[DIR_PPP]) - 1.0 / (rhoL + rhoDIV * phi[DIR_MMM])) + (1.0 / (rhoL + rhoDIV * phi[DIR_PMM]) - 1.0 / (rhoL + rhoDIV * phi[DIR_MPP]))) + ((1.0 / (rhoL + rhoDIV * phi[DIR_PMP]) - 1.0 / (rhoL + rhoDIV * phi[DIR_MPM])) + (1.0 / (rhoL + rhoDIV * phi[DIR_PPM]) - 1.0 / (rhoL + rhoDIV * phi[DIR_MMP])))) - + WEIGTH[DIR_PP0] * (((1.0 / (rhoL + rhoDIV * phi[DIR_P0P]) - 1.0 / (rhoL + rhoDIV * phi[DIR_M0M])) + (1.0 / (rhoL + rhoDIV * phi[DIR_P0M]) - 1.0 / (rhoL + rhoDIV * phi[DIR_M0P]))) + ((1.0 / (rhoL + rhoDIV * phi[DIR_PM0]) - 1.0 / (rhoL + rhoDIV * phi[DIR_MP0])) + (1.0 / (rhoL + rhoDIV * phi[DIR_PP0]) - 1.0 / (rhoL + rhoDIV * phi[DIR_MM0]))))) + - +WEIGTH[DIR_0P0] * (1.0 / (rhoL + rhoDIV * phi[DIR_P00]) - 1.0 / (rhoL + rhoDIV * phi[DIR_M00]))); + return 3.0 * ((WEIGTH[dPPP] * (((1.0/(rhoL+rhoDIV*phi[dPPP]) - 1.0 / (rhoL + rhoDIV * phi[dMMM])) + (1.0 / (rhoL + rhoDIV * phi[dPMM]) - 1.0 / (rhoL + rhoDIV * phi[dMPP]))) + ((1.0 / (rhoL + rhoDIV * phi[dPMP]) - 1.0 / (rhoL + rhoDIV * phi[dMPM])) + (1.0 / (rhoL + rhoDIV * phi[dPPM]) - 1.0 / (rhoL + rhoDIV * phi[dMMP])))) + + WEIGTH[dPP0] * (((1.0 / (rhoL + rhoDIV * phi[dP0P]) - 1.0 / (rhoL + rhoDIV * phi[dM0M])) + (1.0 / (rhoL + rhoDIV * phi[dP0M]) - 1.0 / (rhoL + rhoDIV * phi[dM0P]))) + ((1.0 / (rhoL + rhoDIV * phi[dPM0]) - 1.0 / (rhoL + rhoDIV * phi[dMP0])) + (1.0 / (rhoL + rhoDIV * phi[dPP0]) - 1.0 / (rhoL + rhoDIV * phi[dMM0]))))) + + +WEIGTH[d0P0] * (1.0 / (rhoL + rhoDIV * phi[dP00]) - 1.0 / (rhoL + rhoDIV * phi[dM00]))); } real MultiphaseSimpleVelocityBaseExternalPressureLBMKernel::gradX2_rhoInv(real rhoL,real rhoDIV) @@ -2848,9 +2848,9 @@ real MultiphaseSimpleVelocityBaseExternalPressureLBMKernel::gradX2_rhoInv(real r using namespace D3Q27System; using namespace vf::lbm::dir; - return 3.0 * ((WEIGTH[DIR_PPP] * (((1.0 / (rhoL + rhoDIV * phi[DIR_PPP]) - 1.0 / (rhoL + rhoDIV * phi[DIR_MMM])) - (1.0 / (rhoL + rhoDIV * phi[DIR_PMM]) - 1.0 / (rhoL + rhoDIV * phi[DIR_MPP]))) + ((1.0 / (rhoL + rhoDIV * phi[DIR_PPM]) - 1.0 / (rhoL + rhoDIV * phi[DIR_MMP])) - (1.0 / (rhoL + rhoDIV * phi[DIR_PMP]) - 1.0 / (rhoL + rhoDIV * phi[DIR_MPM])))) - + WEIGTH[DIR_PP0] * (((1.0 / (rhoL + rhoDIV * phi[DIR_0PP]) - 1.0 / (rhoL + rhoDIV * phi[DIR_0MM])) + (1.0 / (rhoL + rhoDIV * phi[DIR_0PM]) - 1.0 / (rhoL + rhoDIV * phi[DIR_0MP]))) + ((1.0 / (rhoL + rhoDIV * phi[DIR_PP0]) - 1.0 / (rhoL + rhoDIV * phi[DIR_MM0])) - (1.0 / (rhoL + rhoDIV * phi[DIR_PM0]) - 1.0 / (rhoL + rhoDIV * phi[DIR_MP0]))))) + - +WEIGTH[DIR_0P0] * (1.0 / (rhoL + rhoDIV * phi[DIR_0P0]) - 1.0 / (rhoL + rhoDIV * phi[DIR_0M0]))); + return 3.0 * ((WEIGTH[dPPP] * (((1.0 / (rhoL + rhoDIV * phi[dPPP]) - 1.0 / (rhoL + rhoDIV * phi[dMMM])) - (1.0 / (rhoL + rhoDIV * phi[dPMM]) - 1.0 / (rhoL + rhoDIV * phi[dMPP]))) + ((1.0 / (rhoL + rhoDIV * phi[dPPM]) - 1.0 / (rhoL + rhoDIV * phi[dMMP])) - (1.0 / (rhoL + rhoDIV * phi[dPMP]) - 1.0 / (rhoL + rhoDIV * phi[dMPM])))) + + WEIGTH[dPP0] * (((1.0 / (rhoL + rhoDIV * phi[d0PP]) - 1.0 / (rhoL + rhoDIV * phi[d0MM])) + (1.0 / (rhoL + rhoDIV * phi[d0PM]) - 1.0 / (rhoL + rhoDIV * phi[d0MP]))) + ((1.0 / (rhoL + rhoDIV * phi[dPP0]) - 1.0 / (rhoL + rhoDIV * phi[dMM0])) - (1.0 / (rhoL + rhoDIV * phi[dPM0]) - 1.0 / (rhoL + rhoDIV * phi[dMP0]))))) + + +WEIGTH[d0P0] * (1.0 / (rhoL + rhoDIV * phi[d0P0]) - 1.0 / (rhoL + rhoDIV * phi[d0M0]))); } real MultiphaseSimpleVelocityBaseExternalPressureLBMKernel::gradX3_rhoInv(real rhoL, real rhoDIV) @@ -2858,9 +2858,9 @@ real MultiphaseSimpleVelocityBaseExternalPressureLBMKernel::gradX3_rhoInv(real r using namespace D3Q27System; using namespace vf::lbm::dir; - return 3.0 * ((WEIGTH[DIR_PPP] * (((1.0 / (rhoL + rhoDIV * phi[DIR_PPP]) - 1.0 / (rhoL + rhoDIV * phi[DIR_MMM])) - (1.0 / (rhoL + rhoDIV * phi[DIR_PMM]) - 1.0 / (rhoL + rhoDIV * phi[DIR_MPP]))) + ((1.0 / (rhoL + rhoDIV * phi[DIR_PMP]) - 1.0 / (rhoL + rhoDIV * phi[DIR_MPM])) - (1.0 / (rhoL + rhoDIV * phi[DIR_PPM]) - 1.0 / (rhoL + rhoDIV * phi[DIR_MMP])))) - + WEIGTH[DIR_PP0] * (((1.0 / (rhoL + rhoDIV * phi[DIR_P0P]) - 1.0 / (rhoL + rhoDIV * phi[DIR_M0M])) - (1.0 / (rhoL + rhoDIV * phi[DIR_P0M]) - 1.0 / (rhoL + rhoDIV * phi[DIR_M0P]))) + ((1.0 / (rhoL + rhoDIV * phi[DIR_0MP]) - 1.0 / (rhoL + rhoDIV * phi[DIR_0PM])) + (1.0 / (rhoL + rhoDIV * phi[DIR_0PP]) - 1.0 / (rhoL + rhoDIV * phi[DIR_0MM]))))) + - +WEIGTH[DIR_0P0] * (1.0 / (rhoL + rhoDIV * phi[DIR_00P]) - 1.0 / (rhoL + rhoDIV * phi[DIR_00M]))); + return 3.0 * ((WEIGTH[dPPP] * (((1.0 / (rhoL + rhoDIV * phi[dPPP]) - 1.0 / (rhoL + rhoDIV * phi[dMMM])) - (1.0 / (rhoL + rhoDIV * phi[dPMM]) - 1.0 / (rhoL + rhoDIV * phi[dMPP]))) + ((1.0 / (rhoL + rhoDIV * phi[dPMP]) - 1.0 / (rhoL + rhoDIV * phi[dMPM])) - (1.0 / (rhoL + rhoDIV * phi[dPPM]) - 1.0 / (rhoL + rhoDIV * phi[dMMP])))) + + WEIGTH[dPP0] * (((1.0 / (rhoL + rhoDIV * phi[dP0P]) - 1.0 / (rhoL + rhoDIV * phi[dM0M])) - (1.0 / (rhoL + rhoDIV * phi[dP0M]) - 1.0 / (rhoL + rhoDIV * phi[dM0P]))) + ((1.0 / (rhoL + rhoDIV * phi[d0MP]) - 1.0 / (rhoL + rhoDIV * phi[d0PM])) + (1.0 / (rhoL + rhoDIV * phi[d0PP]) - 1.0 / (rhoL + rhoDIV * phi[d0MM]))))) + + +WEIGTH[d0P0] * (1.0 / (rhoL + rhoDIV * phi[d00P]) - 1.0 / (rhoL + rhoDIV * phi[d00M]))); } real MultiphaseSimpleVelocityBaseExternalPressureLBMKernel::gradX1_phi2() @@ -2868,9 +2868,9 @@ real MultiphaseSimpleVelocityBaseExternalPressureLBMKernel::gradX1_phi2() using namespace D3Q27System; using namespace vf::lbm::dir; - return 3.0 * ((WEIGTH[DIR_PPP] * (((phi2[DIR_PPP] - phi2[DIR_MMM]) + (phi2[DIR_PMM] - phi2[DIR_MPP])) + ((phi2[DIR_PMP] - phi2[DIR_MPM]) + (phi2[DIR_PPM] - phi2[DIR_MMP]))) - + WEIGTH[DIR_PP0] * (((phi2[DIR_P0P] - phi2[DIR_M0M]) + (phi2[DIR_P0M] - phi2[DIR_M0P])) + ((phi2[DIR_PM0] - phi2[DIR_MP0]) + (phi2[DIR_PP0] - phi2[DIR_MM0])))) + - +WEIGTH[DIR_0P0] * (phi2[DIR_P00] - phi2[DIR_M00])); + return 3.0 * ((WEIGTH[dPPP] * (((phi2[dPPP] - phi2[dMMM]) + (phi2[dPMM] - phi2[dMPP])) + ((phi2[dPMP] - phi2[dMPM]) + (phi2[dPPM] - phi2[dMMP]))) + + WEIGTH[dPP0] * (((phi2[dP0P] - phi2[dM0M]) + (phi2[dP0M] - phi2[dM0P])) + ((phi2[dPM0] - phi2[dMP0]) + (phi2[dPP0] - phi2[dMM0])))) + + +WEIGTH[d0P0] * (phi2[dP00] - phi2[dM00])); } real MultiphaseSimpleVelocityBaseExternalPressureLBMKernel::gradX2_phi2() @@ -2878,9 +2878,9 @@ real MultiphaseSimpleVelocityBaseExternalPressureLBMKernel::gradX2_phi2() using namespace D3Q27System; using namespace vf::lbm::dir; - return 3.0 * ((WEIGTH[DIR_PPP] * (((phi2[DIR_PPP] - phi2[DIR_MMM]) - (phi2[DIR_PMM] - phi2[DIR_MPP])) + ((phi2[DIR_PPM] - phi2[DIR_MMP]) - (phi2[DIR_PMP] - phi2[DIR_MPM]))) - + WEIGTH[DIR_PP0] * (((phi2[DIR_0PP] - phi2[DIR_0MM]) + (phi2[DIR_0PM] - phi2[DIR_0MP])) + ((phi2[DIR_PP0] - phi2[DIR_MM0]) - (phi2[DIR_PM0] - phi2[DIR_MP0])))) + - +WEIGTH[DIR_0P0] * (phi2[DIR_0P0] - phi2[DIR_0M0])); + return 3.0 * ((WEIGTH[dPPP] * (((phi2[dPPP] - phi2[dMMM]) - (phi2[dPMM] - phi2[dMPP])) + ((phi2[dPPM] - phi2[dMMP]) - (phi2[dPMP] - phi2[dMPM]))) + + WEIGTH[dPP0] * (((phi2[d0PP] - phi2[d0MM]) + (phi2[d0PM] - phi2[d0MP])) + ((phi2[dPP0] - phi2[dMM0]) - (phi2[dPM0] - phi2[dMP0])))) + + +WEIGTH[d0P0] * (phi2[d0P0] - phi2[d0M0])); } real MultiphaseSimpleVelocityBaseExternalPressureLBMKernel::gradX3_phi2() @@ -2888,9 +2888,9 @@ real MultiphaseSimpleVelocityBaseExternalPressureLBMKernel::gradX3_phi2() using namespace D3Q27System; using namespace vf::lbm::dir; - return 3.0 * ((WEIGTH[DIR_PPP] * (((phi2[DIR_PPP] - phi2[DIR_MMM]) - (phi2[DIR_PMM] - phi2[DIR_MPP])) + ((phi2[DIR_PMP] - phi2[DIR_MPM]) - (phi2[DIR_PPM] - phi2[DIR_MMP]))) - + WEIGTH[DIR_PP0] * (((phi2[DIR_P0P] - phi2[DIR_M0M]) - (phi2[DIR_P0M] - phi2[DIR_M0P])) + ((phi2[DIR_0MP] - phi2[DIR_0PM]) + (phi2[DIR_0PP] - phi2[DIR_0MM])))) + - +WEIGTH[DIR_0P0] * (phi2[DIR_00P] - phi2[DIR_00M])); + return 3.0 * ((WEIGTH[dPPP] * (((phi2[dPPP] - phi2[dMMM]) - (phi2[dPMM] - phi2[dMPP])) + ((phi2[dPMP] - phi2[dMPM]) - (phi2[dPPM] - phi2[dMMP]))) + + WEIGTH[dPP0] * (((phi2[dP0P] - phi2[dM0M]) - (phi2[dP0M] - phi2[dM0P])) + ((phi2[d0MP] - phi2[d0PM]) + (phi2[d0PP] - phi2[d0MM])))) + + +WEIGTH[d0P0] * (phi2[d00P] - phi2[d00M])); } real MultiphaseSimpleVelocityBaseExternalPressureLBMKernel::nabla2_phi() @@ -2899,17 +2899,17 @@ real MultiphaseSimpleVelocityBaseExternalPressureLBMKernel::nabla2_phi() using namespace vf::lbm::dir; real sum = 0.0; - sum += WEIGTH[DIR_PPP] * ((((phi[DIR_PPP] - phi[DIR_000]) + (phi[DIR_MMM] - phi[DIR_000])) + ((phi[DIR_MMP] - phi[DIR_000]) + (phi[DIR_PPM] - phi[DIR_000]))) - + (((phi[DIR_MPP] - phi[DIR_000]) + (phi[DIR_PMM] - phi[DIR_000])) + ((phi[DIR_PMP] - phi[DIR_000]) + (phi[DIR_MPM] - phi[DIR_000])))); - sum += WEIGTH[DIR_0PP] * ( - (((phi[DIR_0PP] - phi[DIR_000]) + (phi[DIR_0MM] - phi[DIR_000])) + ((phi[DIR_0MP] - phi[DIR_000]) + (phi[DIR_0PM] - phi[DIR_000]))) - + (((phi[DIR_P0P] - phi[DIR_000]) + (phi[DIR_M0M] - phi[DIR_000])) + ((phi[DIR_M0P] - phi[DIR_000]) + (phi[DIR_P0M] - phi[DIR_000]))) - + (((phi[DIR_PP0] - phi[DIR_000]) + (phi[DIR_MM0] - phi[DIR_000])) + ((phi[DIR_MP0] - phi[DIR_000]) + (phi[DIR_PM0] - phi[DIR_000]))) + sum += WEIGTH[dPPP] * ((((phi[dPPP] - phi[d000]) + (phi[dMMM] - phi[d000])) + ((phi[dMMP] - phi[d000]) + (phi[dPPM] - phi[d000]))) + + (((phi[dMPP] - phi[d000]) + (phi[dPMM] - phi[d000])) + ((phi[dPMP] - phi[d000]) + (phi[dMPM] - phi[d000])))); + sum += WEIGTH[d0PP] * ( + (((phi[d0PP] - phi[d000]) + (phi[d0MM] - phi[d000])) + ((phi[d0MP] - phi[d000]) + (phi[d0PM] - phi[d000]))) + + (((phi[dP0P] - phi[d000]) + (phi[dM0M] - phi[d000])) + ((phi[dM0P] - phi[d000]) + (phi[dP0M] - phi[d000]))) + + (((phi[dPP0] - phi[d000]) + (phi[dMM0] - phi[d000])) + ((phi[dMP0] - phi[d000]) + (phi[dPM0] - phi[d000]))) ); - sum += WEIGTH[DIR_00P] * ( - ((phi[DIR_00P] - phi[DIR_000]) + (phi[DIR_00M] - phi[DIR_000])) - + ((phi[DIR_0P0] - phi[DIR_000]) + (phi[DIR_0M0] - phi[DIR_000])) - + ((phi[DIR_P00] - phi[DIR_000]) + (phi[DIR_M00] - phi[DIR_000])) + sum += WEIGTH[d00P] * ( + ((phi[d00P] - phi[d000]) + (phi[d00M] - phi[d000])) + + ((phi[d0P0] - phi[d000]) + (phi[d0M0] - phi[d000])) + + ((phi[dP00] - phi[d000]) + (phi[dM00] - phi[d000])) ); @@ -2940,35 +2940,35 @@ void MultiphaseSimpleVelocityBaseExternalPressureLBMKernel::computePhasefield() int x2p = x2 + 1; int x3p = x3 + 1; - h[DIR_P00] = (*this->localDistributionsH1)(D3Q27System::ET_E, x1, x2, x3); - h[DIR_0P0] = (*this->localDistributionsH1)(D3Q27System::ET_N, x1, x2, x3); - h[DIR_00P] = (*this->localDistributionsH1)(D3Q27System::ET_T, x1, x2, x3); - h[DIR_PP0] = (*this->localDistributionsH1)(D3Q27System::ET_NE, x1, x2, x3); - h[DIR_MP0] = (*this->localDistributionsH1)(D3Q27System::ET_NW, x1p, x2, x3); - h[DIR_P0P] = (*this->localDistributionsH1)(D3Q27System::ET_TE, x1, x2, x3); - h[DIR_M0P] = (*this->localDistributionsH1)(D3Q27System::ET_TW, x1p, x2, x3); - h[DIR_0PP] = (*this->localDistributionsH1)(D3Q27System::ET_TN, x1, x2, x3); - h[DIR_0MP] = (*this->localDistributionsH1)(D3Q27System::ET_TS, x1, x2p, x3); - h[DIR_PPP] = (*this->localDistributionsH1)(D3Q27System::ET_TNE, x1, x2, x3); - h[DIR_MPP] = (*this->localDistributionsH1)(D3Q27System::ET_TNW, x1p, x2, x3); - h[DIR_PMP] = (*this->localDistributionsH1)(D3Q27System::ET_TSE, x1, x2p, x3); - h[DIR_MMP] = (*this->localDistributionsH1)(D3Q27System::ET_TSW, x1p, x2p, x3); - - h[DIR_M00] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_W, x1p, x2, x3); - h[DIR_0M0] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_S, x1, x2p, x3); - h[DIR_00M] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_B, x1, x2, x3p); - h[DIR_MM0] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_SW, x1p, x2p, x3); - h[DIR_PM0] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_SE, x1, x2p, x3); - h[DIR_M0M] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BW, x1p, x2, x3p); - h[DIR_P0M] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BE, x1, x2, x3p); - h[DIR_0MM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BS, x1, x2p, x3p); - h[DIR_0PM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BN, x1, x2, x3p); - h[DIR_MMM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BSW, x1p, x2p, x3p); - h[DIR_PMM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BSE, x1, x2p, x3p); - h[DIR_MPM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BNW, x1p, x2, x3p); - h[DIR_PPM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BNE, x1, x2, x3p); - - h[DIR_000] = (*this->zeroDistributionsH1)(x1, x2, x3); + h[dP00] = (*this->localDistributionsH1)(D3Q27System::ET_E, x1, x2, x3); + h[d0P0] = (*this->localDistributionsH1)(D3Q27System::ET_N, x1, x2, x3); + h[d00P] = (*this->localDistributionsH1)(D3Q27System::ET_T, x1, x2, x3); + h[dPP0] = (*this->localDistributionsH1)(D3Q27System::ET_NE, x1, x2, x3); + h[dMP0] = (*this->localDistributionsH1)(D3Q27System::ET_NW, x1p, x2, x3); + h[dP0P] = (*this->localDistributionsH1)(D3Q27System::ET_TE, x1, x2, x3); + h[dM0P] = (*this->localDistributionsH1)(D3Q27System::ET_TW, x1p, x2, x3); + h[d0PP] = (*this->localDistributionsH1)(D3Q27System::ET_TN, x1, x2, x3); + h[d0MP] = (*this->localDistributionsH1)(D3Q27System::ET_TS, x1, x2p, x3); + h[dPPP] = (*this->localDistributionsH1)(D3Q27System::ET_TNE, x1, x2, x3); + h[dMPP] = (*this->localDistributionsH1)(D3Q27System::ET_TNW, x1p, x2, x3); + h[dPMP] = (*this->localDistributionsH1)(D3Q27System::ET_TSE, x1, x2p, x3); + h[dMMP] = (*this->localDistributionsH1)(D3Q27System::ET_TSW, x1p, x2p, x3); + + h[dM00] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_W, x1p, x2, x3); + h[d0M0] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_S, x1, x2p, x3); + h[d00M] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_B, x1, x2, x3p); + h[dMM0] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_SW, x1p, x2p, x3); + h[dPM0] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_SE, x1, x2p, x3); + h[dM0M] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BW, x1p, x2, x3p); + h[dP0M] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BE, x1, x2, x3p); + h[d0MM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BS, x1, x2p, x3p); + h[d0PM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BN, x1, x2, x3p); + h[dMMM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BSW, x1p, x2p, x3p); + h[dPMM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BSE, x1, x2p, x3p); + h[dMPM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BNW, x1p, x2, x3p); + h[dPPM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BNE, x1, x2, x3p); + + h[d000] = (*this->zeroDistributionsH1)(x1, x2, x3); } } } @@ -2984,9 +2984,9 @@ void MultiphaseSimpleVelocityBaseExternalPressureLBMKernel::findNeighbors(CbArra SPtr<BCArray3D> bcArray = this->getBCSet()->getBCArray(); - phi[DIR_000] = (*ph)(x1, x2, x3); - if (phi[DIR_000] < 0) { - phi[DIR_000] = c0o1; + phi[d000] = (*ph)(x1, x2, x3); + if (phi[d000] < 0) { + phi[d000] = c0o1; } @@ -3009,7 +3009,7 @@ void MultiphaseSimpleVelocityBaseExternalPressureLBMKernel::findNeighbors2(CbArr SPtr<BCArray3D> bcArray = this->getBCSet()->getBCArray(); - phi2[DIR_000] = (*ph)(x1, x2, x3); + phi2[d000] = (*ph)(x1, x2, x3); for (int k = FSTARTDIR; k <= FENDDIR; k++) { diff --git a/src/cpu/MultiphaseFlow/LBM/MultiphaseTwoPhaseFieldsCumulantLBMKernel.cpp b/src/cpu/MultiphaseFlow/LBM/MultiphaseTwoPhaseFieldsCumulantLBMKernel.cpp index 8abd71133dd7088199066b1de0975b8efb16ebc8..30e4fa4f8e634dfc629a37ac3e405f245168beff 100644 --- a/src/cpu/MultiphaseFlow/LBM/MultiphaseTwoPhaseFieldsCumulantLBMKernel.cpp +++ b/src/cpu/MultiphaseFlow/LBM/MultiphaseTwoPhaseFieldsCumulantLBMKernel.cpp @@ -356,13 +356,13 @@ void MultiphaseTwoPhaseFieldsCumulantLBMKernel::calculate(int step) - collFactorM = collFactorL + (collFactorL - collFactorG) * (phi[DIR_000] - phiH) / (phiH - phiL); + collFactorM = collFactorL + (collFactorL - collFactorG) * (phi[d000] - phiH) / (phiH - phiL); - real mu = 2 * beta * phi[DIR_000] * (phi[DIR_000] - 1) * (2 * phi[DIR_000] - 1) - kappa * nabla2_phi(); + real mu = 2 * beta * phi[d000] * (phi[d000] - 1) * (2 * phi[d000] - 1) - kappa * nabla2_phi(); //----------- Calculating Macroscopic Values ------------- - real rho = rhoH + rhoToPhi * (phi[DIR_000] - phiH); + real rho = rhoH + rhoToPhi * (phi[d000] - phiH); ////Incompressible Kernal @@ -456,9 +456,9 @@ void MultiphaseTwoPhaseFieldsCumulantLBMKernel::calculate(int step) // vvxF = vvxF; //} real weightGrad = 1.0;// -denom * denom / (denom * denom + 0.0001 * 0.001); - real dX1_phiF = dX1_phi * weightGrad + (1.0 - weightGrad) * (1.0 - phi[DIR_000]) * (phi[DIR_000]) * normX1; - real dX2_phiF = dX2_phi * weightGrad + (1.0 - weightGrad) * (1.0 - phi[DIR_000]) * (phi[DIR_000]) * normX2; - real dX3_phiF = dX3_phi * weightGrad + (1.0 - weightGrad) * (1.0 - phi[DIR_000]) * (phi[DIR_000]) * normX3; + real dX1_phiF = dX1_phi * weightGrad + (1.0 - weightGrad) * (1.0 - phi[d000]) * (phi[d000]) * normX1; + real dX2_phiF = dX2_phi * weightGrad + (1.0 - weightGrad) * (1.0 - phi[d000]) * (phi[d000]) * normX2; + real dX3_phiF = dX3_phi * weightGrad + (1.0 - weightGrad) * (1.0 - phi[d000]) * (phi[d000]) * normX3; //dX1_phiF *= 1.2; //dX2_phiF *= 1.2; @@ -508,15 +508,15 @@ void MultiphaseTwoPhaseFieldsCumulantLBMKernel::calculate(int step) } - real gamma = WEIGTH[DIR_000] * (1.0 - 1.5 * (ux2 + uy2 + uz2)); - real fac1 = (gamma - WEIGTH[DIR_000]) * c1o3 * rhoToPhi; - forcingTerm[DIR_000] = (-vvxF) * (fac1 * (dX1_phiF * rhoH + dX2_phi2 * rhoL)) + + real gamma = WEIGTH[d000] * (1.0 - 1.5 * (ux2 + uy2 + uz2)); + real fac1 = (gamma - WEIGTH[d000]) * c1o3 * rhoToPhi; + forcingTerm[d000] = (-vvxF) * (fac1 * (dX1_phiF * rhoH + dX2_phi2 * rhoL)) + (-vvyF) * (fac1 * (dX2_phiF * rhoH + dX2_phi2 * rhoL)) + (-vvzF) * (fac1 * (dX3_phiF * rhoH + dX3_phi2 * rhoL)); //////// // LBMReal divAfterSource= - //( mfcbb + 3.0 * (0.5 * forcingTerm[DIR_P00]) / rho ) *((vvxF-1)*(vvxF-1)+(vvyF) *(vvyF) +(vvzF) *(vvzF)-1)+ + //( mfcbb + 3.0 * (0.5 * forcingTerm[dP00]) / rho ) *((vvxF-1)*(vvxF-1)+(vvyF) *(vvyF) +(vvzF) *(vvzF)-1)+ //( mfbcb + 3.0 * (0.5 * forcingTerm[N]) / rho ) *((vvxF) *(vvxF) +(vvyF-1)*(vvyF-1)+(vvzF) *(vvzF)-1)+ //( mfbbc + 3.0 * (0.5 * forcingTerm[T]) / rho ) *((vvxF) *(vvxF) +(vvyF) *(vvyF) +(vvzF-1)*(vvzF-1)-1)+ //( mfccb + 3.0 * (0.5 * forcingTerm[NE]) / rho ) *((vvxF-1)*(vvxF-1)+(vvyF-1)*(vvyF-1)+(vvzF) *(vvzF)-1)+ @@ -579,7 +579,7 @@ void MultiphaseTwoPhaseFieldsCumulantLBMKernel::calculate(int step) //if (fabs(divAfterSource - divBeforeSource)/(fabs(divAfterSource) + fabs(divBeforeSource)+1e-10) > 1e-5) { // LBMReal scaleDiv =0.95+(1-0.95)* (divBeforeSource) / (divBeforeSource - divAfterSource); - // forcingTerm[DIR_P00] *=scaleDiv; + // forcingTerm[dP00] *=scaleDiv; // forcingTerm[N] *=scaleDiv; // forcingTerm[T] *=scaleDiv; // forcingTerm[NE] *=scaleDiv; @@ -610,33 +610,33 @@ void MultiphaseTwoPhaseFieldsCumulantLBMKernel::calculate(int step) //////// - mfcbb += 3.0 * (0.5 * forcingTerm[DIR_P00]) / rho; //-(3.0*p1 - rho)*WEIGTH[E ]; - mfbcb += 3.0 * (0.5 * forcingTerm[DIR_0P0]) / rho; //-(3.0*p1 - rho)*WEIGTH[N ]; - mfbbc += 3.0 * (0.5 * forcingTerm[DIR_00P]) / rho; //-(3.0*p1 - rho)*WEIGTH[T ]; - mfccb += 3.0 * (0.5 * forcingTerm[DIR_PP0]) / rho; //-(3.0*p1 - rho)*WEIGTH[NE ]; - mfacb += 3.0 * (0.5 * forcingTerm[DIR_MP0]) / rho; //-(3.0*p1 - rho)*WEIGTH[NW ]; - mfcbc += 3.0 * (0.5 * forcingTerm[DIR_P0P]) / rho; //-(3.0*p1 - rho)*WEIGTH[TE ]; - mfabc += 3.0 * (0.5 * forcingTerm[DIR_M0P]) / rho; //-(3.0*p1 - rho)*WEIGTH[TW ]; - mfbcc += 3.0 * (0.5 * forcingTerm[DIR_0PP]) / rho; //-(3.0*p1 - rho)*WEIGTH[TN ]; - mfbac += 3.0 * (0.5 * forcingTerm[DIR_0MP]) / rho; //-(3.0*p1 - rho)*WEIGTH[TS ]; - mfccc += 3.0 * (0.5 * forcingTerm[DIR_PPP]) / rho; //-(3.0*p1 - rho)*WEIGTH[TNE]; - mfacc += 3.0 * (0.5 * forcingTerm[DIR_MPP]) / rho; //-(3.0*p1 - rho)*WEIGTH[TNW]; - mfcac += 3.0 * (0.5 * forcingTerm[DIR_PMP]) / rho; //-(3.0*p1 - rho)*WEIGTH[TSE]; - mfaac += 3.0 * (0.5 * forcingTerm[DIR_MMP]) / rho; //-(3.0*p1 - rho)*WEIGTH[TSW]; - mfabb += 3.0 * (0.5 * forcingTerm[DIR_M00]) / rho; //-(3.0*p1 - rho)*WEIGTH[W ]; - mfbab += 3.0 * (0.5 * forcingTerm[DIR_0M0]) / rho; //-(3.0*p1 - rho)*WEIGTH[S ]; - mfbba += 3.0 * (0.5 * forcingTerm[DIR_00M]) / rho; //-(3.0*p1 - rho)*WEIGTH[B ]; - mfaab += 3.0 * (0.5 * forcingTerm[DIR_MM0]) / rho; //-(3.0*p1 - rho)*WEIGTH[SW ]; - mfcab += 3.0 * (0.5 * forcingTerm[DIR_PM0]) / rho; //-(3.0*p1 - rho)*WEIGTH[SE ]; - mfaba += 3.0 * (0.5 * forcingTerm[DIR_M0M]) / rho; //-(3.0*p1 - rho)*WEIGTH[BW ]; - mfcba += 3.0 * (0.5 * forcingTerm[DIR_P0M]) / rho; //-(3.0*p1 - rho)*WEIGTH[BE ]; - mfbaa += 3.0 * (0.5 * forcingTerm[DIR_0MM]) / rho; //-(3.0*p1 - rho)*WEIGTH[BS ]; - mfbca += 3.0 * (0.5 * forcingTerm[DIR_0PM]) / rho; //-(3.0*p1 - rho)*WEIGTH[BN ]; - mfaaa += 3.0 * (0.5 * forcingTerm[DIR_MMM]) / rho; //-(3.0*p1 - rho)*WEIGTH[BSW]; - mfcaa += 3.0 * (0.5 * forcingTerm[DIR_PMM]) / rho; //-(3.0*p1 - rho)*WEIGTH[BSE]; - mfaca += 3.0 * (0.5 * forcingTerm[DIR_MPM]) / rho; //-(3.0*p1 - rho)*WEIGTH[BNW]; - mfcca += 3.0 * (0.5 * forcingTerm[DIR_PPM]) / rho; //-(3.0*p1 - rho)*WEIGTH[BNE]; - mfbbb += 3.0 * (0.5 * forcingTerm[DIR_000]) / rho; //- (3.0*p1 - rho)*WEIGTH[REST] + mfcbb += 3.0 * (0.5 * forcingTerm[dP00]) / rho; //-(3.0*p1 - rho)*WEIGTH[E ]; + mfbcb += 3.0 * (0.5 * forcingTerm[d0P0]) / rho; //-(3.0*p1 - rho)*WEIGTH[N ]; + mfbbc += 3.0 * (0.5 * forcingTerm[d00P]) / rho; //-(3.0*p1 - rho)*WEIGTH[T ]; + mfccb += 3.0 * (0.5 * forcingTerm[dPP0]) / rho; //-(3.0*p1 - rho)*WEIGTH[NE ]; + mfacb += 3.0 * (0.5 * forcingTerm[dMP0]) / rho; //-(3.0*p1 - rho)*WEIGTH[NW ]; + mfcbc += 3.0 * (0.5 * forcingTerm[dP0P]) / rho; //-(3.0*p1 - rho)*WEIGTH[TE ]; + mfabc += 3.0 * (0.5 * forcingTerm[dM0P]) / rho; //-(3.0*p1 - rho)*WEIGTH[TW ]; + mfbcc += 3.0 * (0.5 * forcingTerm[d0PP]) / rho; //-(3.0*p1 - rho)*WEIGTH[TN ]; + mfbac += 3.0 * (0.5 * forcingTerm[d0MP]) / rho; //-(3.0*p1 - rho)*WEIGTH[TS ]; + mfccc += 3.0 * (0.5 * forcingTerm[dPPP]) / rho; //-(3.0*p1 - rho)*WEIGTH[TNE]; + mfacc += 3.0 * (0.5 * forcingTerm[dMPP]) / rho; //-(3.0*p1 - rho)*WEIGTH[TNW]; + mfcac += 3.0 * (0.5 * forcingTerm[dPMP]) / rho; //-(3.0*p1 - rho)*WEIGTH[TSE]; + mfaac += 3.0 * (0.5 * forcingTerm[dMMP]) / rho; //-(3.0*p1 - rho)*WEIGTH[TSW]; + mfabb += 3.0 * (0.5 * forcingTerm[dM00]) / rho; //-(3.0*p1 - rho)*WEIGTH[W ]; + mfbab += 3.0 * (0.5 * forcingTerm[d0M0]) / rho; //-(3.0*p1 - rho)*WEIGTH[S ]; + mfbba += 3.0 * (0.5 * forcingTerm[d00M]) / rho; //-(3.0*p1 - rho)*WEIGTH[B ]; + mfaab += 3.0 * (0.5 * forcingTerm[dMM0]) / rho; //-(3.0*p1 - rho)*WEIGTH[SW ]; + mfcab += 3.0 * (0.5 * forcingTerm[dPM0]) / rho; //-(3.0*p1 - rho)*WEIGTH[SE ]; + mfaba += 3.0 * (0.5 * forcingTerm[dM0M]) / rho; //-(3.0*p1 - rho)*WEIGTH[BW ]; + mfcba += 3.0 * (0.5 * forcingTerm[dP0M]) / rho; //-(3.0*p1 - rho)*WEIGTH[BE ]; + mfbaa += 3.0 * (0.5 * forcingTerm[d0MM]) / rho; //-(3.0*p1 - rho)*WEIGTH[BS ]; + mfbca += 3.0 * (0.5 * forcingTerm[d0PM]) / rho; //-(3.0*p1 - rho)*WEIGTH[BN ]; + mfaaa += 3.0 * (0.5 * forcingTerm[dMMM]) / rho; //-(3.0*p1 - rho)*WEIGTH[BSW]; + mfcaa += 3.0 * (0.5 * forcingTerm[dPMM]) / rho; //-(3.0*p1 - rho)*WEIGTH[BSE]; + mfaca += 3.0 * (0.5 * forcingTerm[dMPM]) / rho; //-(3.0*p1 - rho)*WEIGTH[BNW]; + mfcca += 3.0 * (0.5 * forcingTerm[dPPM]) / rho; //-(3.0*p1 - rho)*WEIGTH[BNE]; + mfbbb += 3.0 * (0.5 * forcingTerm[d000]) / rho; //- (3.0*p1 - rho)*WEIGTH[REST] //-------------------------------------------------------- @@ -950,7 +950,7 @@ void MultiphaseTwoPhaseFieldsCumulantLBMKernel::calculate(int step) real OxyyMxzz = 8.0 * (collFactorM - 2.0) * (collFactorM + OxxPyyPzz * (3.0 * collFactorM - 7.0)) / (OxxPyyPzz * (56.0 - 42.0 * collFactorM + 9.0 * collFactorM * collFactorM) - 8.0 * collFactorM); // LBMReal Oxyz = 24.0 * (collFactorM - 2.0) * (4.0 * collFactorM * collFactorM + collFactorM * OxxPyyPzz * (18.0 - 13.0 * collFactorM) + OxxPyyPzz * OxxPyyPzz * (2.0 + collFactorM * (6.0 * collFactorM - 11.0))) / (16.0 * collFactorM * collFactorM * (collFactorM - 6.0) - 2.0 * collFactorM * OxxPyyPzz * (216.0 + 5.0 * collFactorM * (9.0 * collFactorM - 46.0)) + OxxPyyPzz * OxxPyyPzz * (collFactorM * (3.0 * collFactorM - 10.0) * (15.0 * collFactorM - 28.0) - 48.0)); real A = (4.0 * collFactorM * collFactorM + 2.0 * collFactorM * OxxPyyPzz * (collFactorM - 6.0) + OxxPyyPzz * OxxPyyPzz * (collFactorM * (10.0 - 3.0 * collFactorM) - 4.0)) / ((collFactorM - OxxPyyPzz) * (OxxPyyPzz * (2.0 + 3.0 * collFactorM) - 8.0 * collFactorM)); - //FIXME: warning C4459: declaration of 'B' hides global declaration (message : see declaration of 'D3Q27System::DIR_00M' ) + //FIXME: warning C4459: declaration of 'B' hides global declaration (message : see declaration of 'D3Q27System::d00M' ) real BB = (4.0 * collFactorM * OxxPyyPzz * (9.0 * collFactorM - 16.0) - 4.0 * collFactorM * collFactorM - 2.0 * OxxPyyPzz * OxxPyyPzz * (2.0 + 9.0 * collFactorM * (collFactorM - 2.0))) / (3.0 * (collFactorM - OxxPyyPzz) * (OxxPyyPzz * (2.0 + 3.0 * collFactorM) - 8.0 * collFactorM)); @@ -1354,33 +1354,33 @@ void MultiphaseTwoPhaseFieldsCumulantLBMKernel::calculate(int step) /////classical source term 8.4.2021 - mfcbb += 3.0 * (0.5 * forcingTerm[DIR_P00]) / rho; //-(3.0*p1 - rho)*WEIGTH[E ]; - mfbcb += 3.0 * (0.5 * forcingTerm[DIR_0P0]) / rho; //-(3.0*p1 - rho)*WEIGTH[N ]; - mfbbc += 3.0 * (0.5 * forcingTerm[DIR_00P]) / rho; //-(3.0*p1 - rho)*WEIGTH[T ]; - mfccb += 3.0 * (0.5 * forcingTerm[DIR_PP0]) / rho; //-(3.0*p1 - rho)*WEIGTH[NE ]; - mfacb += 3.0 * (0.5 * forcingTerm[DIR_MP0]) / rho; //-(3.0*p1 - rho)*WEIGTH[NW ]; - mfcbc += 3.0 * (0.5 * forcingTerm[DIR_P0P]) / rho; //-(3.0*p1 - rho)*WEIGTH[TE ]; - mfabc += 3.0 * (0.5 * forcingTerm[DIR_M0P]) / rho; //-(3.0*p1 - rho)*WEIGTH[TW ]; - mfbcc += 3.0 * (0.5 * forcingTerm[DIR_0PP]) / rho; //-(3.0*p1 - rho)*WEIGTH[TN ]; - mfbac += 3.0 * (0.5 * forcingTerm[DIR_0MP]) / rho; //-(3.0*p1 - rho)*WEIGTH[TS ]; - mfccc += 3.0 * (0.5 * forcingTerm[DIR_PPP]) / rho; //-(3.0*p1 - rho)*WEIGTH[TNE]; - mfacc += 3.0 * (0.5 * forcingTerm[DIR_MPP]) / rho; //-(3.0*p1 - rho)*WEIGTH[TNW]; - mfcac += 3.0 * (0.5 * forcingTerm[DIR_PMP]) / rho; //-(3.0*p1 - rho)*WEIGTH[TSE]; - mfaac += 3.0 * (0.5 * forcingTerm[DIR_MMP]) / rho; //-(3.0*p1 - rho)*WEIGTH[TSW]; - mfabb += 3.0 * (0.5 * forcingTerm[DIR_M00]) / rho; //-(3.0*p1 - rho)*WEIGTH[W ]; - mfbab += 3.0 * (0.5 * forcingTerm[DIR_0M0]) / rho; //-(3.0*p1 - rho)*WEIGTH[S ]; - mfbba += 3.0 * (0.5 * forcingTerm[DIR_00M]) / rho; //-(3.0*p1 - rho)*WEIGTH[B ]; - mfaab += 3.0 * (0.5 * forcingTerm[DIR_MM0]) / rho; //-(3.0*p1 - rho)*WEIGTH[SW ]; - mfcab += 3.0 * (0.5 * forcingTerm[DIR_PM0]) / rho; //-(3.0*p1 - rho)*WEIGTH[SE ]; - mfaba += 3.0 * (0.5 * forcingTerm[DIR_M0M]) / rho; //-(3.0*p1 - rho)*WEIGTH[BW ]; - mfcba += 3.0 * (0.5 * forcingTerm[DIR_P0M]) / rho; //-(3.0*p1 - rho)*WEIGTH[BE ]; - mfbaa += 3.0 * (0.5 * forcingTerm[DIR_0MM]) / rho; //-(3.0*p1 - rho)*WEIGTH[BS ]; - mfbca += 3.0 * (0.5 * forcingTerm[DIR_0PM]) / rho; //-(3.0*p1 - rho)*WEIGTH[BN ]; - mfaaa += 3.0 * (0.5 * forcingTerm[DIR_MMM]) / rho; //-(3.0*p1 - rho)*WEIGTH[BSW]; - mfcaa += 3.0 * (0.5 * forcingTerm[DIR_PMM]) / rho; //-(3.0*p1 - rho)*WEIGTH[BSE]; - mfaca += 3.0 * (0.5 * forcingTerm[DIR_MPM]) / rho; //-(3.0*p1 - rho)*WEIGTH[BNW]; - mfcca += 3.0 * (0.5 * forcingTerm[DIR_PPM]) / rho; //-(3.0*p1 - rho)*WEIGTH[BNE]; - mfbbb += 3.0 * (0.5 * forcingTerm[DIR_000]) / rho; //- (3.0*p1 - rho)*WEIGTH[REST] + mfcbb += 3.0 * (0.5 * forcingTerm[dP00]) / rho; //-(3.0*p1 - rho)*WEIGTH[E ]; + mfbcb += 3.0 * (0.5 * forcingTerm[d0P0]) / rho; //-(3.0*p1 - rho)*WEIGTH[N ]; + mfbbc += 3.0 * (0.5 * forcingTerm[d00P]) / rho; //-(3.0*p1 - rho)*WEIGTH[T ]; + mfccb += 3.0 * (0.5 * forcingTerm[dPP0]) / rho; //-(3.0*p1 - rho)*WEIGTH[NE ]; + mfacb += 3.0 * (0.5 * forcingTerm[dMP0]) / rho; //-(3.0*p1 - rho)*WEIGTH[NW ]; + mfcbc += 3.0 * (0.5 * forcingTerm[dP0P]) / rho; //-(3.0*p1 - rho)*WEIGTH[TE ]; + mfabc += 3.0 * (0.5 * forcingTerm[dM0P]) / rho; //-(3.0*p1 - rho)*WEIGTH[TW ]; + mfbcc += 3.0 * (0.5 * forcingTerm[d0PP]) / rho; //-(3.0*p1 - rho)*WEIGTH[TN ]; + mfbac += 3.0 * (0.5 * forcingTerm[d0MP]) / rho; //-(3.0*p1 - rho)*WEIGTH[TS ]; + mfccc += 3.0 * (0.5 * forcingTerm[dPPP]) / rho; //-(3.0*p1 - rho)*WEIGTH[TNE]; + mfacc += 3.0 * (0.5 * forcingTerm[dMPP]) / rho; //-(3.0*p1 - rho)*WEIGTH[TNW]; + mfcac += 3.0 * (0.5 * forcingTerm[dPMP]) / rho; //-(3.0*p1 - rho)*WEIGTH[TSE]; + mfaac += 3.0 * (0.5 * forcingTerm[dMMP]) / rho; //-(3.0*p1 - rho)*WEIGTH[TSW]; + mfabb += 3.0 * (0.5 * forcingTerm[dM00]) / rho; //-(3.0*p1 - rho)*WEIGTH[W ]; + mfbab += 3.0 * (0.5 * forcingTerm[d0M0]) / rho; //-(3.0*p1 - rho)*WEIGTH[S ]; + mfbba += 3.0 * (0.5 * forcingTerm[d00M]) / rho; //-(3.0*p1 - rho)*WEIGTH[B ]; + mfaab += 3.0 * (0.5 * forcingTerm[dMM0]) / rho; //-(3.0*p1 - rho)*WEIGTH[SW ]; + mfcab += 3.0 * (0.5 * forcingTerm[dPM0]) / rho; //-(3.0*p1 - rho)*WEIGTH[SE ]; + mfaba += 3.0 * (0.5 * forcingTerm[dM0M]) / rho; //-(3.0*p1 - rho)*WEIGTH[BW ]; + mfcba += 3.0 * (0.5 * forcingTerm[dP0M]) / rho; //-(3.0*p1 - rho)*WEIGTH[BE ]; + mfbaa += 3.0 * (0.5 * forcingTerm[d0MM]) / rho; //-(3.0*p1 - rho)*WEIGTH[BS ]; + mfbca += 3.0 * (0.5 * forcingTerm[d0PM]) / rho; //-(3.0*p1 - rho)*WEIGTH[BN ]; + mfaaa += 3.0 * (0.5 * forcingTerm[dMMM]) / rho; //-(3.0*p1 - rho)*WEIGTH[BSW]; + mfcaa += 3.0 * (0.5 * forcingTerm[dPMM]) / rho; //-(3.0*p1 - rho)*WEIGTH[BSE]; + mfaca += 3.0 * (0.5 * forcingTerm[dMPM]) / rho; //-(3.0*p1 - rho)*WEIGTH[BNW]; + mfcca += 3.0 * (0.5 * forcingTerm[dPPM]) / rho; //-(3.0*p1 - rho)*WEIGTH[BNE]; + mfbbb += 3.0 * (0.5 * forcingTerm[d000]) / rho; //- (3.0*p1 - rho)*WEIGTH[REST] @@ -1497,7 +1497,7 @@ void MultiphaseTwoPhaseFieldsCumulantLBMKernel::calculate(int step) // // //-------------------------------------------------------- // -// mfcbb = 3.0 * (mfcbb + 0.5 * forcingTerm[DIR_P00]) / rho; //-(3.0*p1 - rho)*WEIGTH[E ]; +// mfcbb = 3.0 * (mfcbb + 0.5 * forcingTerm[dP00]) / rho; //-(3.0*p1 - rho)*WEIGTH[E ]; // mfbcb = 3.0 * (mfbcb + 0.5 * forcingTerm[N]) / rho; //-(3.0*p1 - rho)*WEIGTH[N ]; // mfbbc = 3.0 * (mfbbc + 0.5 * forcingTerm[T]) / rho; //-(3.0*p1 - rho)*WEIGTH[T ]; // mfccb = 3.0 * (mfccb + 0.5 * forcingTerm[NE]) / rho; //-(3.0*p1 - rho)*WEIGTH[NE ]; @@ -2205,7 +2205,7 @@ void MultiphaseTwoPhaseFieldsCumulantLBMKernel::calculate(int step) // } //#endif // -// mfcbb = rho * c1o3 * (mfcbb) + 0.5 * forcingTerm[DIR_P00]; +// mfcbb = rho * c1o3 * (mfcbb) + 0.5 * forcingTerm[dP00]; // mfbcb = rho * c1o3 * (mfbcb) + 0.5 * forcingTerm[N]; // mfbbc = rho * c1o3 * (mfbbc) + 0.5 * forcingTerm[T]; // mfccb = rho * c1o3 * (mfccb) + 0.5 * forcingTerm[NE]; @@ -2432,11 +2432,11 @@ void MultiphaseTwoPhaseFieldsCumulantLBMKernel::calculate(int step) cx = cx * (c1o1 - omegaD) + omegaD * vvx * concentration + - normX1 * (c1o1 - 0.5 * omegaD) * (1.0 - phi[DIR_000]) * (phi[DIR_000]) * c1o3 * oneOverInterfaceScale; + normX1 * (c1o1 - 0.5 * omegaD) * (1.0 - phi[d000]) * (phi[d000]) * c1o3 * oneOverInterfaceScale; cy = cy * (c1o1 - omegaD) + omegaD * vvy * concentration + - normX2 * (c1o1 - 0.5 * omegaD) * (1.0 - phi[DIR_000]) * (phi[DIR_000]) * c1o3 * oneOverInterfaceScale; + normX2 * (c1o1 - 0.5 * omegaD) * (1.0 - phi[d000]) * (phi[d000]) * c1o3 * oneOverInterfaceScale; cz = cz * (c1o1 - omegaD) + omegaD * vvz * concentration + - normX3 * (c1o1 - 0.5 * omegaD) * (1.0 - phi[DIR_000]) * (phi[DIR_000]) * c1o3 * oneOverInterfaceScale; + normX3 * (c1o1 - 0.5 * omegaD) * (1.0 - phi[d000]) * (phi[d000]) * c1o3 * oneOverInterfaceScale; //mhx = (ux * phi[REST] + normX1 * (tauH - 0.5) * (1.0 - phi[REST]) * (phi[REST])) / tauH + (1.0 - 1.0 / tauH) * mhx; //mhy = (uy * phi[REST] + normX2 * (tauH - 0.5) * (1.0 - phi[REST]) * (phi[REST])) / tauH + (1.0 - 1.0 / tauH) * mhy; @@ -2745,11 +2745,11 @@ void MultiphaseTwoPhaseFieldsCumulantLBMKernel::calculate(int step) // collision of 1st order moments cx = cx * (c1o1 - omegaD) + omegaD * vvx * concentration + - normX1 * (c1o1 - 0.5 * omegaD) * ( phi[DIR_000]) * (phi2[DIR_000]) * c1o3 * oneOverInterfaceScale; + normX1 * (c1o1 - 0.5 * omegaD) * ( phi[d000]) * (phi2[d000]) * c1o3 * oneOverInterfaceScale; cy = cy * (c1o1 - omegaD) + omegaD * vvy * concentration + - normX2 * (c1o1 - 0.5 * omegaD) * ( phi[DIR_000]) * (phi2[DIR_000]) * c1o3 * oneOverInterfaceScale; + normX2 * (c1o1 - 0.5 * omegaD) * ( phi[d000]) * (phi2[d000]) * c1o3 * oneOverInterfaceScale; cz = cz * (c1o1 - omegaD) + omegaD * vvz * concentration + - normX3 * (c1o1 - 0.5 * omegaD) * ( phi[DIR_000]) * (phi2[DIR_000]) * c1o3 * oneOverInterfaceScale; + normX3 * (c1o1 - 0.5 * omegaD) * ( phi[d000]) * (phi2[d000]) * c1o3 * oneOverInterfaceScale; //mhx = (ux * phi[REST] + normX1 * (tauH - 0.5) * (1.0 - phi[REST]) * (phi[REST])) / tauH + (1.0 - 1.0 / tauH) * mhx; //mhy = (uy * phi[REST] + normX2 * (tauH - 0.5) * (1.0 - phi[REST]) * (phi[REST])) / tauH + (1.0 - 1.0 / tauH) * mhy; @@ -2902,7 +2902,7 @@ void MultiphaseTwoPhaseFieldsCumulantLBMKernel::calculate(int step) ///////////////////// PHASE-FIELD BGK SOLVER /////////////////////////////// - //h[DIR_P00] = (*this->localDistributionsH)(D3Q27System::ET_E, x1, x2, x3); + //h[dP00] = (*this->localDistributionsH)(D3Q27System::ET_E, x1, x2, x3); //h[N] = (*this->localDistributionsH)(D3Q27System::ET_N, x1, x2, x3); //h[T] = (*this->localDistributionsH)(D3Q27System::ET_T, x1, x2, x3); //h[NE] = (*this->localDistributionsH)(D3Q27System::ET_NE, x1, x2, x3); @@ -2996,9 +2996,9 @@ real MultiphaseTwoPhaseFieldsCumulantLBMKernel::gradX1_phi() using namespace D3Q27System; using namespace vf::lbm::dir; - return 3.0* ((WEIGTH[DIR_PPP] * (((phi[DIR_PPP] - phi[DIR_MMM]) + (phi[DIR_PMM] - phi[DIR_MPP])) + ((phi[DIR_PMP] - phi[DIR_MPM]) + (phi[DIR_PPM] - phi[DIR_MMP]))) - + WEIGTH[DIR_PP0] * (((phi[DIR_P0P] - phi[DIR_M0M]) + (phi[DIR_P0M] - phi[DIR_M0P])) + ((phi[DIR_PM0] - phi[DIR_MP0]) + (phi[DIR_PP0] - phi[DIR_MM0])))) + - +WEIGTH[DIR_0P0] * (phi[DIR_P00] - phi[DIR_M00])); + return 3.0* ((WEIGTH[dPPP] * (((phi[dPPP] - phi[dMMM]) + (phi[dPMM] - phi[dMPP])) + ((phi[dPMP] - phi[dMPM]) + (phi[dPPM] - phi[dMMP]))) + + WEIGTH[dPP0] * (((phi[dP0P] - phi[dM0M]) + (phi[dP0M] - phi[dM0P])) + ((phi[dPM0] - phi[dMP0]) + (phi[dPP0] - phi[dMM0])))) + + +WEIGTH[d0P0] * (phi[dP00] - phi[dM00])); //LBMReal sum = 0.0; //for (int k = FSTARTDIR; k <= FENDDIR; k++) { // sum += WEIGTH[k] * DX1[k] * phi[k]; @@ -3011,9 +3011,9 @@ real MultiphaseTwoPhaseFieldsCumulantLBMKernel::gradX2_phi() using namespace D3Q27System; using namespace vf::lbm::dir; - return 3.0 * ((WEIGTH[DIR_PPP] * (((phi[DIR_PPP] - phi[DIR_MMM]) - (phi[DIR_PMM] - phi[DIR_MPP])) + ((phi[DIR_PPM] - phi[DIR_MMP])- (phi[DIR_PMP] - phi[DIR_MPM]))) - + WEIGTH[DIR_PP0] * (((phi[DIR_0PP] - phi[DIR_0MM]) + (phi[DIR_0PM] - phi[DIR_0MP])) + ((phi[DIR_PP0] - phi[DIR_MM0])- (phi[DIR_PM0] - phi[DIR_MP0])))) + - +WEIGTH[DIR_0P0] * (phi[DIR_0P0] - phi[DIR_0M0])); + return 3.0 * ((WEIGTH[dPPP] * (((phi[dPPP] - phi[dMMM]) - (phi[dPMM] - phi[dMPP])) + ((phi[dPPM] - phi[dMMP])- (phi[dPMP] - phi[dMPM]))) + + WEIGTH[dPP0] * (((phi[d0PP] - phi[d0MM]) + (phi[d0PM] - phi[d0MP])) + ((phi[dPP0] - phi[dMM0])- (phi[dPM0] - phi[dMP0])))) + + +WEIGTH[d0P0] * (phi[d0P0] - phi[d0M0])); //LBMReal sum = 0.0; //for (int k = FSTARTDIR; k <= FENDDIR; k++) { // sum += WEIGTH[k] * DX2[k] * phi[k]; @@ -3026,9 +3026,9 @@ real MultiphaseTwoPhaseFieldsCumulantLBMKernel::gradX3_phi() using namespace D3Q27System; using namespace vf::lbm::dir; - return 3.0 * ((WEIGTH[DIR_PPP] * (((phi[DIR_PPP] - phi[DIR_MMM]) - (phi[DIR_PMM] - phi[DIR_MPP])) + ((phi[DIR_PMP] - phi[DIR_MPM]) - (phi[DIR_PPM] - phi[DIR_MMP]))) - + WEIGTH[DIR_PP0] * (((phi[DIR_P0P] - phi[DIR_M0M]) - (phi[DIR_P0M] - phi[DIR_M0P])) + ((phi[DIR_0MP] - phi[DIR_0PM]) + (phi[DIR_0PP] - phi[DIR_0MM])))) + - +WEIGTH[DIR_0P0] * (phi[DIR_00P] - phi[DIR_00M])); + return 3.0 * ((WEIGTH[dPPP] * (((phi[dPPP] - phi[dMMM]) - (phi[dPMM] - phi[dMPP])) + ((phi[dPMP] - phi[dMPM]) - (phi[dPPM] - phi[dMMP]))) + + WEIGTH[dPP0] * (((phi[dP0P] - phi[dM0M]) - (phi[dP0M] - phi[dM0P])) + ((phi[d0MP] - phi[d0PM]) + (phi[d0PP] - phi[d0MM])))) + + +WEIGTH[d0P0] * (phi[d00P] - phi[d00M])); //LBMReal sum = 0.0; //for (int k = FSTARTDIR; k <= FENDDIR; k++) { // sum += WEIGTH[k] * DX3[k] * phi[k]; @@ -3041,9 +3041,9 @@ real MultiphaseTwoPhaseFieldsCumulantLBMKernel::gradX1_phi2() using namespace D3Q27System; using namespace vf::lbm::dir; - return 3.0 * ((WEIGTH[DIR_PPP] * (((phi2[DIR_PPP] - phi2[DIR_MMM]) + (phi2[DIR_PMM] - phi2[DIR_MPP])) + ((phi2[DIR_PMP] - phi2[DIR_MPM]) + (phi2[DIR_PPM] - phi2[DIR_MMP]))) - + WEIGTH[DIR_PP0] * (((phi2[DIR_P0P] - phi2[DIR_M0M]) + (phi2[DIR_P0M] - phi2[DIR_M0P])) + ((phi2[DIR_PM0] - phi2[DIR_MP0]) + (phi2[DIR_PP0] - phi2[DIR_MM0])))) + - +WEIGTH[DIR_0P0] * (phi2[DIR_P00] - phi2[DIR_M00])); + return 3.0 * ((WEIGTH[dPPP] * (((phi2[dPPP] - phi2[dMMM]) + (phi2[dPMM] - phi2[dMPP])) + ((phi2[dPMP] - phi2[dMPM]) + (phi2[dPPM] - phi2[dMMP]))) + + WEIGTH[dPP0] * (((phi2[dP0P] - phi2[dM0M]) + (phi2[dP0M] - phi2[dM0P])) + ((phi2[dPM0] - phi2[dMP0]) + (phi2[dPP0] - phi2[dMM0])))) + + +WEIGTH[d0P0] * (phi2[dP00] - phi2[dM00])); //LBMReal sum = 0.0; //for (int k = FSTARTDIR; k <= FENDDIR; k++) { // sum += WEIGTH[k] * DX1[k] * phi2[k]; @@ -3056,9 +3056,9 @@ real MultiphaseTwoPhaseFieldsCumulantLBMKernel::gradX2_phi2() using namespace D3Q27System; using namespace vf::lbm::dir; - return 3.0 * ((WEIGTH[DIR_PPP] * (((phi2[DIR_PPP] - phi2[DIR_MMM]) - (phi2[DIR_PMM] - phi2[DIR_MPP])) + ((phi2[DIR_PPM] - phi2[DIR_MMP]) - (phi2[DIR_PMP] - phi2[DIR_MPM]))) - + WEIGTH[DIR_PP0] * (((phi2[DIR_0PP] - phi2[DIR_0MM]) + (phi2[DIR_0PM] - phi2[DIR_0MP])) + ((phi2[DIR_PP0] - phi2[DIR_MM0]) - (phi2[DIR_PM0] - phi2[DIR_MP0])))) + - +WEIGTH[DIR_0P0] * (phi2[DIR_0P0] - phi2[DIR_0M0])); + return 3.0 * ((WEIGTH[dPPP] * (((phi2[dPPP] - phi2[dMMM]) - (phi2[dPMM] - phi2[dMPP])) + ((phi2[dPPM] - phi2[dMMP]) - (phi2[dPMP] - phi2[dMPM]))) + + WEIGTH[dPP0] * (((phi2[d0PP] - phi2[d0MM]) + (phi2[d0PM] - phi2[d0MP])) + ((phi2[dPP0] - phi2[dMM0]) - (phi2[dPM0] - phi2[dMP0])))) + + +WEIGTH[d0P0] * (phi2[d0P0] - phi2[d0M0])); //LBMReal sum = 0.0; //for (int k = FSTARTDIR; k <= FENDDIR; k++) { // sum += WEIGTH[k] * DX2[k] * phi2[k]; @@ -3071,9 +3071,9 @@ real MultiphaseTwoPhaseFieldsCumulantLBMKernel::gradX3_phi2() using namespace D3Q27System; using namespace vf::lbm::dir; - return 3.0 * ((WEIGTH[DIR_PPP] * (((phi2[DIR_PPP] - phi2[DIR_MMM]) - (phi2[DIR_PMM] - phi2[DIR_MPP])) + ((phi2[DIR_PMP] - phi2[DIR_MPM]) - (phi2[DIR_PPM] - phi2[DIR_MMP]))) - + WEIGTH[DIR_PP0] * (((phi2[DIR_P0P] - phi2[DIR_M0M]) - (phi2[DIR_P0M] - phi2[DIR_M0P])) + ((phi2[DIR_0MP] - phi2[DIR_0PM]) + (phi2[DIR_0PP] - phi2[DIR_0MM])))) + - +WEIGTH[DIR_0P0] * (phi2[DIR_00P] - phi2[DIR_00M])); + return 3.0 * ((WEIGTH[dPPP] * (((phi2[dPPP] - phi2[dMMM]) - (phi2[dPMM] - phi2[dMPP])) + ((phi2[dPMP] - phi2[dMPM]) - (phi2[dPPM] - phi2[dMMP]))) + + WEIGTH[dPP0] * (((phi2[dP0P] - phi2[dM0M]) - (phi2[dP0M] - phi2[dM0P])) + ((phi2[d0MP] - phi2[d0PM]) + (phi2[d0PP] - phi2[d0MM])))) + + +WEIGTH[d0P0] * (phi2[d00P] - phi2[d00M])); //LBMReal sum = 0.0; //for (int k = FSTARTDIR; k <= FENDDIR; k++) { // sum += WEIGTH[k] * DX3[k] * phi2[k]; @@ -3091,17 +3091,17 @@ real MultiphaseTwoPhaseFieldsCumulantLBMKernel::nabla2_phi() using namespace vf::lbm::dir; real sum = 0.0; - sum += WEIGTH[DIR_PPP] * ((((phi[DIR_PPP] - phi[DIR_000]) + (phi[DIR_MMM] - phi[DIR_000])) + ((phi[DIR_MMP] - phi[DIR_000]) + (phi[DIR_PPM] - phi[DIR_000]))) - + (((phi[DIR_MPP] - phi[DIR_000]) + (phi[DIR_PMM] - phi[DIR_000])) + ((phi[DIR_PMP] - phi[DIR_000]) + (phi[DIR_MPM] - phi[DIR_000])))); - sum += WEIGTH[DIR_0PP] * ( - (((phi[DIR_0PP] - phi[DIR_000]) + (phi[DIR_0MM] - phi[DIR_000])) + ((phi[DIR_0MP] - phi[DIR_000]) + (phi[DIR_0PM] - phi[DIR_000]))) - + (((phi[DIR_P0P] - phi[DIR_000]) + (phi[DIR_M0M] - phi[DIR_000])) + ((phi[DIR_M0P] - phi[DIR_000]) + (phi[DIR_P0M] - phi[DIR_000]))) - + (((phi[DIR_PP0] - phi[DIR_000]) + (phi[DIR_MM0] - phi[DIR_000])) + ((phi[DIR_MP0] - phi[DIR_000]) + (phi[DIR_PM0] - phi[DIR_000]))) + sum += WEIGTH[dPPP] * ((((phi[dPPP] - phi[d000]) + (phi[dMMM] - phi[d000])) + ((phi[dMMP] - phi[d000]) + (phi[dPPM] - phi[d000]))) + + (((phi[dMPP] - phi[d000]) + (phi[dPMM] - phi[d000])) + ((phi[dPMP] - phi[d000]) + (phi[dMPM] - phi[d000])))); + sum += WEIGTH[d0PP] * ( + (((phi[d0PP] - phi[d000]) + (phi[d0MM] - phi[d000])) + ((phi[d0MP] - phi[d000]) + (phi[d0PM] - phi[d000]))) + + (((phi[dP0P] - phi[d000]) + (phi[dM0M] - phi[d000])) + ((phi[dM0P] - phi[d000]) + (phi[dP0M] - phi[d000]))) + + (((phi[dPP0] - phi[d000]) + (phi[dMM0] - phi[d000])) + ((phi[dMP0] - phi[d000]) + (phi[dPM0] - phi[d000]))) ); - sum += WEIGTH[DIR_00P] * ( - ((phi[DIR_00P] - phi[DIR_000]) + (phi[DIR_00M] - phi[DIR_000])) - + ((phi[DIR_0P0] - phi[DIR_000]) + (phi[DIR_0M0] - phi[DIR_000])) - + ((phi[DIR_P00] - phi[DIR_000]) + (phi[DIR_M00] - phi[DIR_000])) + sum += WEIGTH[d00P] * ( + ((phi[d00P] - phi[d000]) + (phi[d00M] - phi[d000])) + + ((phi[d0P0] - phi[d000]) + (phi[d0M0] - phi[d000])) + + ((phi[dP00] - phi[d000]) + (phi[dM00] - phi[d000])) ); //for (int k = FSTARTDIR; k <= FENDDIR; k++) { // sum += WEIGTH[k] * (phi[k] - phi[REST]); @@ -3133,35 +3133,35 @@ void MultiphaseTwoPhaseFieldsCumulantLBMKernel::computePhasefield() int x2p = x2 + 1; int x3p = x3 + 1; - h[DIR_P00] = (*this->localDistributionsH1)(D3Q27System::ET_E, x1, x2, x3); - h[DIR_0P0] = (*this->localDistributionsH1)(D3Q27System::ET_N, x1, x2, x3); - h[DIR_00P] = (*this->localDistributionsH1)(D3Q27System::ET_T, x1, x2, x3); - h[DIR_PP0] = (*this->localDistributionsH1)(D3Q27System::ET_NE, x1, x2, x3); - h[DIR_MP0] = (*this->localDistributionsH1)(D3Q27System::ET_NW, x1p, x2, x3); - h[DIR_P0P] = (*this->localDistributionsH1)(D3Q27System::ET_TE, x1, x2, x3); - h[DIR_M0P] = (*this->localDistributionsH1)(D3Q27System::ET_TW, x1p, x2, x3); - h[DIR_0PP] = (*this->localDistributionsH1)(D3Q27System::ET_TN, x1, x2, x3); - h[DIR_0MP] = (*this->localDistributionsH1)(D3Q27System::ET_TS, x1, x2p, x3); - h[DIR_PPP] = (*this->localDistributionsH1)(D3Q27System::ET_TNE, x1, x2, x3); - h[DIR_MPP] = (*this->localDistributionsH1)(D3Q27System::ET_TNW, x1p, x2, x3); - h[DIR_PMP] = (*this->localDistributionsH1)(D3Q27System::ET_TSE, x1, x2p, x3); - h[DIR_MMP] = (*this->localDistributionsH1)(D3Q27System::ET_TSW, x1p, x2p, x3); - - h[DIR_M00] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_W, x1p, x2, x3); - h[DIR_0M0] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_S, x1, x2p, x3); - h[DIR_00M] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_B, x1, x2, x3p); - h[DIR_MM0] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_SW, x1p, x2p, x3); - h[DIR_PM0] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_SE, x1, x2p, x3); - h[DIR_M0M] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BW, x1p, x2, x3p); - h[DIR_P0M] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BE, x1, x2, x3p); - h[DIR_0MM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BS, x1, x2p, x3p); - h[DIR_0PM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BN, x1, x2, x3p); - h[DIR_MMM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BSW, x1p, x2p, x3p); - h[DIR_PMM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BSE, x1, x2p, x3p); - h[DIR_MPM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BNW, x1p, x2, x3p); - h[DIR_PPM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BNE, x1, x2, x3p); - - h[DIR_000] = (*this->zeroDistributionsH1)(x1, x2, x3); + h[dP00] = (*this->localDistributionsH1)(D3Q27System::ET_E, x1, x2, x3); + h[d0P0] = (*this->localDistributionsH1)(D3Q27System::ET_N, x1, x2, x3); + h[d00P] = (*this->localDistributionsH1)(D3Q27System::ET_T, x1, x2, x3); + h[dPP0] = (*this->localDistributionsH1)(D3Q27System::ET_NE, x1, x2, x3); + h[dMP0] = (*this->localDistributionsH1)(D3Q27System::ET_NW, x1p, x2, x3); + h[dP0P] = (*this->localDistributionsH1)(D3Q27System::ET_TE, x1, x2, x3); + h[dM0P] = (*this->localDistributionsH1)(D3Q27System::ET_TW, x1p, x2, x3); + h[d0PP] = (*this->localDistributionsH1)(D3Q27System::ET_TN, x1, x2, x3); + h[d0MP] = (*this->localDistributionsH1)(D3Q27System::ET_TS, x1, x2p, x3); + h[dPPP] = (*this->localDistributionsH1)(D3Q27System::ET_TNE, x1, x2, x3); + h[dMPP] = (*this->localDistributionsH1)(D3Q27System::ET_TNW, x1p, x2, x3); + h[dPMP] = (*this->localDistributionsH1)(D3Q27System::ET_TSE, x1, x2p, x3); + h[dMMP] = (*this->localDistributionsH1)(D3Q27System::ET_TSW, x1p, x2p, x3); + + h[dM00] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_W, x1p, x2, x3); + h[d0M0] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_S, x1, x2p, x3); + h[d00M] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_B, x1, x2, x3p); + h[dMM0] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_SW, x1p, x2p, x3); + h[dPM0] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_SE, x1, x2p, x3); + h[dM0M] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BW, x1p, x2, x3p); + h[dP0M] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BE, x1, x2, x3p); + h[d0MM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BS, x1, x2p, x3p); + h[d0PM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BN, x1, x2, x3p); + h[dMMM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BSW, x1p, x2p, x3p); + h[dPMM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BSE, x1, x2p, x3p); + h[dMPM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BNW, x1p, x2, x3p); + h[dPPM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BNE, x1, x2, x3p); + + h[d000] = (*this->zeroDistributionsH1)(x1, x2, x3); } } } @@ -3176,7 +3176,7 @@ void MultiphaseTwoPhaseFieldsCumulantLBMKernel::findNeighbors(CbArray3D<real, In SPtr<BCArray3D> bcArray = this->getBCSet()->getBCArray(); - phi[DIR_000] = (*ph)(x1, x2, x3); + phi[d000] = (*ph)(x1, x2, x3); for (int k = FSTARTDIR; k <= FENDDIR; k++) { @@ -3197,7 +3197,7 @@ void MultiphaseTwoPhaseFieldsCumulantLBMKernel::findNeighbors2(CbArray3D<real, I SPtr<BCArray3D> bcArray = this->getBCSet()->getBCArray(); - phi2[DIR_000] = (*ph)(x1, x2, x3); + phi2[d000] = (*ph)(x1, x2, x3); for (int k = FSTARTDIR; k <= FENDDIR; k++) { diff --git a/src/cpu/MultiphaseFlow/LBM/MultiphaseTwoPhaseFieldsPressureFilterLBMKernel.cpp b/src/cpu/MultiphaseFlow/LBM/MultiphaseTwoPhaseFieldsPressureFilterLBMKernel.cpp index 8a6c2bde6d5031a1b379bdd391aaa1051ca6217f..df28e16d1a717418aa0474ad4e74c7e85878bdf6 100644 --- a/src/cpu/MultiphaseFlow/LBM/MultiphaseTwoPhaseFieldsPressureFilterLBMKernel.cpp +++ b/src/cpu/MultiphaseFlow/LBM/MultiphaseTwoPhaseFieldsPressureFilterLBMKernel.cpp @@ -578,13 +578,13 @@ void MultiphaseTwoPhaseFieldsPressureFilterLBMKernel::calculate(int step) - collFactorM = collFactorL + (collFactorL - collFactorG) * (phi[DIR_000] - phiH) / (phiH - phiL); + collFactorM = collFactorL + (collFactorL - collFactorG) * (phi[d000] - phiH) / (phiH - phiL); - real mu = 2 * beta * phi[DIR_000] * (phi[DIR_000] - 1) * (2 * phi[DIR_000] - 1) - kappa * nabla2_phi(); + real mu = 2 * beta * phi[d000] * (phi[d000] - 1) * (2 * phi[d000] - 1) - kappa * nabla2_phi(); //----------- Calculating Macroscopic Values ------------- - real rho = rhoH + rhoToPhi * (phi[DIR_000] - phiH); + real rho = rhoH + rhoToPhi * (phi[d000] - phiH); //! variable density -> TRANSFER! //LBMReal rho = rhoH * ((*phaseField)(x1, x2, x3)) + rhoL * ((*phaseField2)(x1, x2, x3)); @@ -652,7 +652,7 @@ void MultiphaseTwoPhaseFieldsPressureFilterLBMKernel::calculate(int step) // + WEIGTH[NE] * ( // (((*pressure)(x1 + 1, x2 + 1, x3) - (*pressure)(x1 - 1, x2 - 1, x3)) + ((*pressure)(x1 + 1, x2 - 1, x3) - (*pressure)(x1 - 1, x2 + 1, x3))) // + (((*pressure)(x1 + 1, x2, x3 - 1) - (*pressure)(x1 - 1, x2, x3 + 1)) + ((*pressure)(x1 + 1, x2, x3 + 1) - (*pressure)(x1 - 1, x2, x3 - 1)))) - // + WEIGTH[DIR_P00] * ((*pressure)(x1 + 1, x2, x3) - (*pressure)(x1 - 1, x2, x3))); + // + WEIGTH[dP00] * ((*pressure)(x1 + 1, x2, x3) - (*pressure)(x1 - 1, x2, x3))); //LBMReal gradPy = 3.0 * (WEIGTH[TNE] * ( // (((*pressure)(x1 + 1, x2 + 1, x3 + 1) - (*pressure)(x1 - 1, x2 - 1, x3 - 1)) + ((*pressure)(x1 - 1, x2 + 1, x3 + 1) - (*pressure)(x1 + 1, x2 - 1, x3 - 1))) @@ -660,7 +660,7 @@ void MultiphaseTwoPhaseFieldsPressureFilterLBMKernel::calculate(int step) // + WEIGTH[NE] * ( // (((*pressure)(x1 + 1, x2 + 1, x3) - (*pressure)(x1 - 1, x2 - 1, x3)) + ((*pressure)(x1 - 1, x2 + 1, x3) - (*pressure)(x1 + 1, x2 - 1, x3))) // + (((*pressure)(x1, x2+1, x3 - 1) - (*pressure)(x1, x2-1, x3 + 1)) + ((*pressure)(x1, x2+1, x3 + 1) - (*pressure)(x1, x2-1, x3 - 1)))) - // + WEIGTH[DIR_P00] * ((*pressure)(x1, x2+1, x3) - (*pressure)(x1, x2-1, x3))); + // + WEIGTH[dP00] * ((*pressure)(x1, x2+1, x3) - (*pressure)(x1, x2-1, x3))); //LBMReal gradPz = 3.0 * (WEIGTH[TNE] * ( // (((*pressure)(x1 + 1, x2 + 1, x3 + 1) - (*pressure)(x1 - 1, x2 - 1, x3 - 1)) + ((*pressure)(x1 - 1, x2 + 1, x3 + 1) - (*pressure)(x1 + 1, x2 - 1, x3 - 1))) @@ -668,7 +668,7 @@ void MultiphaseTwoPhaseFieldsPressureFilterLBMKernel::calculate(int step) // + WEIGTH[NE] * ( // (((*pressure)(x1 + 1, x2, x3+1) - (*pressure)(x1 - 1, x2, x3-1)) + ((*pressure)(x1 - 1, x2, x3+1) - (*pressure)(x1 + 1, x2, x3-1))) // + (((*pressure)(x1, x2 - 1, x3 + 1) - (*pressure)(x1, x2 + 1, x3 - 1)) + ((*pressure)(x1, x2 + 1, x3 + 1) - (*pressure)(x1, x2 - 1, x3 - 1)))) - // + WEIGTH[DIR_P00] * ((*pressure)(x1, x2, x3+1) - (*pressure)(x1, x2, x3-1))); + // + WEIGTH[dP00] * ((*pressure)(x1, x2, x3+1) - (*pressure)(x1, x2, x3-1))); real gradPx = 0.0; @@ -723,7 +723,7 @@ void MultiphaseTwoPhaseFieldsPressureFilterLBMKernel::calculate(int step) } //Viscosity increase by pressure gradient - real errPhi = (((1.0 - phi[DIR_000]) * (phi[DIR_000]) * oneOverInterfaceScale)- denom); + real errPhi = (((1.0 - phi[d000]) * (phi[d000]) * oneOverInterfaceScale)- denom); //LBMReal limVis = 0.0000001*10;//0.01; // collFactorM =collFactorM/(c1+limVis*(errPhi*errPhi)*collFactorM); // collFactorM = (collFactorM < 1.8) ? 1.8 : collFactorM; @@ -846,7 +846,7 @@ void MultiphaseTwoPhaseFieldsPressureFilterLBMKernel::calculate(int step) //////// // LBMReal divAfterSource= - //( mfcbb + 3.0 * (0.5 * forcingTerm[DIR_P00]) / rho ) *((vvxF-1)*(vvxF-1)+(vvyF) *(vvyF) +(vvzF) *(vvzF)-1)+ + //( mfcbb + 3.0 * (0.5 * forcingTerm[dP00]) / rho ) *((vvxF-1)*(vvxF-1)+(vvyF) *(vvyF) +(vvzF) *(vvzF)-1)+ //( mfbcb + 3.0 * (0.5 * forcingTerm[N]) / rho ) *((vvxF) *(vvxF) +(vvyF-1)*(vvyF-1)+(vvzF) *(vvzF)-1)+ //( mfbbc + 3.0 * (0.5 * forcingTerm[T]) / rho ) *((vvxF) *(vvxF) +(vvyF) *(vvyF) +(vvzF-1)*(vvzF-1)-1)+ //( mfccb + 3.0 * (0.5 * forcingTerm[NE]) / rho ) *((vvxF-1)*(vvxF-1)+(vvyF-1)*(vvyF-1)+(vvzF) *(vvzF)-1)+ @@ -909,7 +909,7 @@ void MultiphaseTwoPhaseFieldsPressureFilterLBMKernel::calculate(int step) //if (fabs(divAfterSource - divBeforeSource)/(fabs(divAfterSource) + fabs(divBeforeSource)+1e-10) > 1e-5) { // LBMReal scaleDiv =0.95+(1-0.95)* (divBeforeSource) / (divBeforeSource - divAfterSource); - // forcingTerm[DIR_P00] *=scaleDiv; + // forcingTerm[dP00] *=scaleDiv; // forcingTerm[N] *=scaleDiv; // forcingTerm[T] *=scaleDiv; // forcingTerm[NE] *=scaleDiv; @@ -940,7 +940,7 @@ void MultiphaseTwoPhaseFieldsPressureFilterLBMKernel::calculate(int step) //////// - //mfcbb += 3.0 * (0.5 * forcingTerm[DIR_P00]) / rho; //-(3.0*p1 - rho)*WEIGTH[E ]; + //mfcbb += 3.0 * (0.5 * forcingTerm[dP00]) / rho; //-(3.0*p1 - rho)*WEIGTH[E ]; //mfbcb += 3.0 * (0.5 * forcingTerm[N]) / rho; //-(3.0*p1 - rho)*WEIGTH[N ]; //mfbbc += 3.0 * (0.5 * forcingTerm[T]) / rho; //-(3.0*p1 - rho)*WEIGTH[T ]; //mfccb += 3.0 * (0.5 * forcingTerm[NE]) / rho; //-(3.0*p1 - rho)*WEIGTH[NE ]; @@ -1283,7 +1283,7 @@ void MultiphaseTwoPhaseFieldsPressureFilterLBMKernel::calculate(int step) real OxyyMxzz = 8.0 * (collFactorM - 2.0) * (collFactorM + OxxPyyPzz * (3.0 * collFactorM - 7.0)) / (OxxPyyPzz * (56.0 - 42.0 * collFactorM + 9.0 * collFactorM * collFactorM) - 8.0 * collFactorM); // real Oxyz = 24.0 * (collFactorM - 2.0) * (4.0 * collFactorM * collFactorM + collFactorM * OxxPyyPzz * (18.0 - 13.0 * collFactorM) + OxxPyyPzz * OxxPyyPzz * (2.0 + collFactorM * (6.0 * collFactorM - 11.0))) / (16.0 * collFactorM * collFactorM * (collFactorM - 6.0) - 2.0 * collFactorM * OxxPyyPzz * (216.0 + 5.0 * collFactorM * (9.0 * collFactorM - 46.0)) + OxxPyyPzz * OxxPyyPzz * (collFactorM * (3.0 * collFactorM - 10.0) * (15.0 * collFactorM - 28.0) - 48.0)); real A = (4.0 * collFactorM * collFactorM + 2.0 * collFactorM * OxxPyyPzz * (collFactorM - 6.0) + OxxPyyPzz * OxxPyyPzz * (collFactorM * (10.0 - 3.0 * collFactorM) - 4.0)) / ((collFactorM - OxxPyyPzz) * (OxxPyyPzz * (2.0 + 3.0 * collFactorM) - 8.0 * collFactorM)); - //FIXME: warning C4459: declaration of 'B' hides global declaration (message : see declaration of 'D3Q27System::DIR_00M' ) + //FIXME: warning C4459: declaration of 'B' hides global declaration (message : see declaration of 'D3Q27System::d00M' ) real BB = (4.0 * collFactorM * OxxPyyPzz * (9.0 * collFactorM - 16.0) - 4.0 * collFactorM * collFactorM - 2.0 * OxxPyyPzz * OxxPyyPzz * (2.0 + 9.0 * collFactorM * (collFactorM - 2.0))) / (3.0 * (collFactorM - OxxPyyPzz) * (OxxPyyPzz * (2.0 + 3.0 * collFactorM) - 8.0 * collFactorM)); @@ -1708,7 +1708,7 @@ void MultiphaseTwoPhaseFieldsPressureFilterLBMKernel::calculate(int step) /////classical source term 8.4.2021 - //mfcbb += 3.0 * (0.5 * forcingTerm[DIR_P00]) / rho; //-(3.0*p1 - rho)*WEIGTH[E ]; + //mfcbb += 3.0 * (0.5 * forcingTerm[dP00]) / rho; //-(3.0*p1 - rho)*WEIGTH[E ]; //mfbcb += 3.0 * (0.5 * forcingTerm[N]) / rho; //-(3.0*p1 - rho)*WEIGTH[N ]; //mfbbc += 3.0 * (0.5 * forcingTerm[T]) / rho; //-(3.0*p1 - rho)*WEIGTH[T ]; //mfccb += 3.0 * (0.5 * forcingTerm[NE]) / rho; //-(3.0*p1 - rho)*WEIGTH[NE ]; @@ -1856,7 +1856,7 @@ void MultiphaseTwoPhaseFieldsPressureFilterLBMKernel::calculate(int step) // // //-------------------------------------------------------- // -// mfcbb = 3.0 * (mfcbb + 0.5 * forcingTerm[DIR_P00]) / rho; //-(3.0*p1 - rho)*WEIGTH[E ]; +// mfcbb = 3.0 * (mfcbb + 0.5 * forcingTerm[dP00]) / rho; //-(3.0*p1 - rho)*WEIGTH[E ]; // mfbcb = 3.0 * (mfbcb + 0.5 * forcingTerm[N]) / rho; //-(3.0*p1 - rho)*WEIGTH[N ]; // mfbbc = 3.0 * (mfbbc + 0.5 * forcingTerm[T]) / rho; //-(3.0*p1 - rho)*WEIGTH[T ]; // mfccb = 3.0 * (mfccb + 0.5 * forcingTerm[NE]) / rho; //-(3.0*p1 - rho)*WEIGTH[NE ]; @@ -2564,7 +2564,7 @@ void MultiphaseTwoPhaseFieldsPressureFilterLBMKernel::calculate(int step) // } //#endif // -// mfcbb = rho * c1o3 * (mfcbb) + 0.5 * forcingTerm[DIR_P00]; +// mfcbb = rho * c1o3 * (mfcbb) + 0.5 * forcingTerm[dP00]; // mfbcb = rho * c1o3 * (mfbcb) + 0.5 * forcingTerm[N]; // mfbbc = rho * c1o3 * (mfbbc) + 0.5 * forcingTerm[T]; // mfccb = rho * c1o3 * (mfccb) + 0.5 * forcingTerm[NE]; @@ -2791,11 +2791,11 @@ void MultiphaseTwoPhaseFieldsPressureFilterLBMKernel::calculate(int step) cx = cx * (c1o1 - omegaD) + omegaD * vvx * concentration + - normX1 * (c1o1 - 0.5 * omegaD) * (1.0 - phi[DIR_000]) * (phi[DIR_000]) * c1o3 * oneOverInterfaceScale; + normX1 * (c1o1 - 0.5 * omegaD) * (1.0 - phi[d000]) * (phi[d000]) * c1o3 * oneOverInterfaceScale; cy = cy * (c1o1 - omegaD) + omegaD * vvy * concentration + - normX2 * (c1o1 - 0.5 * omegaD) * (1.0 - phi[DIR_000]) * (phi[DIR_000]) * c1o3 * oneOverInterfaceScale; + normX2 * (c1o1 - 0.5 * omegaD) * (1.0 - phi[d000]) * (phi[d000]) * c1o3 * oneOverInterfaceScale; cz = cz * (c1o1 - omegaD) + omegaD * vvz * concentration + - normX3 * (c1o1 - 0.5 * omegaD) * (1.0 - phi[DIR_000]) * (phi[DIR_000]) * c1o3 * oneOverInterfaceScale; + normX3 * (c1o1 - 0.5 * omegaD) * (1.0 - phi[d000]) * (phi[d000]) * c1o3 * oneOverInterfaceScale; //cx = cx * (c1 - omegaD) + omegaD * vvx * concentration + // normX1 * (c1 - 0.5 * omegaD) * (1.0 - phi[REST]) * (phi[REST])*(phi[REST]+phi2[REST]) * c1o3 * oneOverInterfaceScale; @@ -3111,11 +3111,11 @@ void MultiphaseTwoPhaseFieldsPressureFilterLBMKernel::calculate(int step) // collision of 1st order moments cx = cx * (c1o1 - omegaD) + omegaD * vvx * concentration + - normX1 * (c1o1 - 0.5 * omegaD) * ( phi[DIR_000]) * (phi2[DIR_000]) * c1o3 * oneOverInterfaceScale; + normX1 * (c1o1 - 0.5 * omegaD) * ( phi[d000]) * (phi2[d000]) * c1o3 * oneOverInterfaceScale; cy = cy * (c1o1 - omegaD) + omegaD * vvy * concentration + - normX2 * (c1o1 - 0.5 * omegaD) * ( phi[DIR_000]) * (phi2[DIR_000]) * c1o3 * oneOverInterfaceScale; + normX2 * (c1o1 - 0.5 * omegaD) * ( phi[d000]) * (phi2[d000]) * c1o3 * oneOverInterfaceScale; cz = cz * (c1o1 - omegaD) + omegaD * vvz * concentration + - normX3 * (c1o1 - 0.5 * omegaD) * ( phi[DIR_000]) * (phi2[DIR_000]) * c1o3 * oneOverInterfaceScale; + normX3 * (c1o1 - 0.5 * omegaD) * ( phi[d000]) * (phi2[d000]) * c1o3 * oneOverInterfaceScale; //mhx = (ux * phi[REST] + normX1 * (tauH - 0.5) * (1.0 - phi[REST]) * (phi[REST])) / tauH + (1.0 - 1.0 / tauH) * mhx; //mhy = (uy * phi[REST] + normX2 * (tauH - 0.5) * (1.0 - phi[REST]) * (phi[REST])) / tauH + (1.0 - 1.0 / tauH) * mhy; @@ -3268,7 +3268,7 @@ void MultiphaseTwoPhaseFieldsPressureFilterLBMKernel::calculate(int step) ///////////////////// PHASE-FIELD BGK SOLVER /////////////////////////////// - //h[DIR_P00] = (*this->localDistributionsH)(D3Q27System::ET_E, x1, x2, x3); + //h[dP00] = (*this->localDistributionsH)(D3Q27System::ET_E, x1, x2, x3); //h[N] = (*this->localDistributionsH)(D3Q27System::ET_N, x1, x2, x3); //h[T] = (*this->localDistributionsH)(D3Q27System::ET_T, x1, x2, x3); //h[NE] = (*this->localDistributionsH)(D3Q27System::ET_NE, x1, x2, x3); @@ -3362,9 +3362,9 @@ real MultiphaseTwoPhaseFieldsPressureFilterLBMKernel::gradX1_phi() using namespace D3Q27System; using namespace vf::lbm::dir; - return 3.0* ((WEIGTH[DIR_PPP] * (((phi[DIR_PPP] - phi[DIR_MMM]) + (phi[DIR_PMM] - phi[DIR_MPP])) + ((phi[DIR_PMP] - phi[DIR_MPM]) + (phi[DIR_PPM] - phi[DIR_MMP]))) - + WEIGTH[DIR_PP0] * (((phi[DIR_P0P] - phi[DIR_M0M]) + (phi[DIR_P0M] - phi[DIR_M0P])) + ((phi[DIR_PM0] - phi[DIR_MP0]) + (phi[DIR_PP0] - phi[DIR_MM0])))) + - +WEIGTH[DIR_0P0] * (phi[DIR_P00] - phi[DIR_M00])); + return 3.0* ((WEIGTH[dPPP] * (((phi[dPPP] - phi[dMMM]) + (phi[dPMM] - phi[dMPP])) + ((phi[dPMP] - phi[dMPM]) + (phi[dPPM] - phi[dMMP]))) + + WEIGTH[dPP0] * (((phi[dP0P] - phi[dM0M]) + (phi[dP0M] - phi[dM0P])) + ((phi[dPM0] - phi[dMP0]) + (phi[dPP0] - phi[dMM0])))) + + +WEIGTH[d0P0] * (phi[dP00] - phi[dM00])); //LBMReal sum = 0.0; //for (int k = FSTARTDIR; k <= FENDDIR; k++) { // sum += WEIGTH[k] * DX1[k] * phi[k]; @@ -3377,9 +3377,9 @@ real MultiphaseTwoPhaseFieldsPressureFilterLBMKernel::gradX2_phi() using namespace D3Q27System; using namespace vf::lbm::dir; - return 3.0 * ((WEIGTH[DIR_PPP] * (((phi[DIR_PPP] - phi[DIR_MMM]) - (phi[DIR_PMM] - phi[DIR_MPP])) + ((phi[DIR_PPM] - phi[DIR_MMP])- (phi[DIR_PMP] - phi[DIR_MPM]))) - + WEIGTH[DIR_PP0] * (((phi[DIR_0PP] - phi[DIR_0MM]) + (phi[DIR_0PM] - phi[DIR_0MP])) + ((phi[DIR_PP0] - phi[DIR_MM0])- (phi[DIR_PM0] - phi[DIR_MP0])))) + - +WEIGTH[DIR_0P0] * (phi[DIR_0P0] - phi[DIR_0M0])); + return 3.0 * ((WEIGTH[dPPP] * (((phi[dPPP] - phi[dMMM]) - (phi[dPMM] - phi[dMPP])) + ((phi[dPPM] - phi[dMMP])- (phi[dPMP] - phi[dMPM]))) + + WEIGTH[dPP0] * (((phi[d0PP] - phi[d0MM]) + (phi[d0PM] - phi[d0MP])) + ((phi[dPP0] - phi[dMM0])- (phi[dPM0] - phi[dMP0])))) + + +WEIGTH[d0P0] * (phi[d0P0] - phi[d0M0])); //LBMReal sum = 0.0; //for (int k = FSTARTDIR; k <= FENDDIR; k++) { // sum += WEIGTH[k] * DX2[k] * phi[k]; @@ -3392,9 +3392,9 @@ real MultiphaseTwoPhaseFieldsPressureFilterLBMKernel::gradX3_phi() using namespace D3Q27System; using namespace vf::lbm::dir; - return 3.0 * ((WEIGTH[DIR_PPP] * (((phi[DIR_PPP] - phi[DIR_MMM]) - (phi[DIR_PMM] - phi[DIR_MPP])) + ((phi[DIR_PMP] - phi[DIR_MPM]) - (phi[DIR_PPM] - phi[DIR_MMP]))) - + WEIGTH[DIR_PP0] * (((phi[DIR_P0P] - phi[DIR_M0M]) - (phi[DIR_P0M] - phi[DIR_M0P])) + ((phi[DIR_0MP] - phi[DIR_0PM]) + (phi[DIR_0PP] - phi[DIR_0MM])))) + - +WEIGTH[DIR_0P0] * (phi[DIR_00P] - phi[DIR_00M])); + return 3.0 * ((WEIGTH[dPPP] * (((phi[dPPP] - phi[dMMM]) - (phi[dPMM] - phi[dMPP])) + ((phi[dPMP] - phi[dMPM]) - (phi[dPPM] - phi[dMMP]))) + + WEIGTH[dPP0] * (((phi[dP0P] - phi[dM0M]) - (phi[dP0M] - phi[dM0P])) + ((phi[d0MP] - phi[d0PM]) + (phi[d0PP] - phi[d0MM])))) + + +WEIGTH[d0P0] * (phi[d00P] - phi[d00M])); //LBMReal sum = 0.0; //for (int k = FSTARTDIR; k <= FENDDIR; k++) { // sum += WEIGTH[k] * DX3[k] * phi[k]; @@ -3407,9 +3407,9 @@ real MultiphaseTwoPhaseFieldsPressureFilterLBMKernel::gradX1_phi2() using namespace D3Q27System; using namespace vf::lbm::dir; - return 3.0 * ((WEIGTH[DIR_PPP] * (((phi2[DIR_PPP] - phi2[DIR_MMM]) + (phi2[DIR_PMM] - phi2[DIR_MPP])) + ((phi2[DIR_PMP] - phi2[DIR_MPM]) + (phi2[DIR_PPM] - phi2[DIR_MMP]))) - + WEIGTH[DIR_PP0] * (((phi2[DIR_P0P] - phi2[DIR_M0M]) + (phi2[DIR_P0M] - phi2[DIR_M0P])) + ((phi2[DIR_PM0] - phi2[DIR_MP0]) + (phi2[DIR_PP0] - phi2[DIR_MM0])))) + - +WEIGTH[DIR_0P0] * (phi2[DIR_P00] - phi2[DIR_M00])); + return 3.0 * ((WEIGTH[dPPP] * (((phi2[dPPP] - phi2[dMMM]) + (phi2[dPMM] - phi2[dMPP])) + ((phi2[dPMP] - phi2[dMPM]) + (phi2[dPPM] - phi2[dMMP]))) + + WEIGTH[dPP0] * (((phi2[dP0P] - phi2[dM0M]) + (phi2[dP0M] - phi2[dM0P])) + ((phi2[dPM0] - phi2[dMP0]) + (phi2[dPP0] - phi2[dMM0])))) + + +WEIGTH[d0P0] * (phi2[dP00] - phi2[dM00])); //LBMReal sum = 0.0; //for (int k = FSTARTDIR; k <= FENDDIR; k++) { // sum += WEIGTH[k] * DX1[k] * phi2[k]; @@ -3422,9 +3422,9 @@ real MultiphaseTwoPhaseFieldsPressureFilterLBMKernel::gradX2_phi2() using namespace D3Q27System; using namespace vf::lbm::dir; - return 3.0 * ((WEIGTH[DIR_PPP] * (((phi2[DIR_PPP] - phi2[DIR_MMM]) - (phi2[DIR_PMM] - phi2[DIR_MPP])) + ((phi2[DIR_PPM] - phi2[DIR_MMP]) - (phi2[DIR_PMP] - phi2[DIR_MPM]))) - + WEIGTH[DIR_PP0] * (((phi2[DIR_0PP] - phi2[DIR_0MM]) + (phi2[DIR_0PM] - phi2[DIR_0MP])) + ((phi2[DIR_PP0] - phi2[DIR_MM0]) - (phi2[DIR_PM0] - phi2[DIR_MP0])))) + - +WEIGTH[DIR_0P0] * (phi2[DIR_0P0] - phi2[DIR_0M0])); + return 3.0 * ((WEIGTH[dPPP] * (((phi2[dPPP] - phi2[dMMM]) - (phi2[dPMM] - phi2[dMPP])) + ((phi2[dPPM] - phi2[dMMP]) - (phi2[dPMP] - phi2[dMPM]))) + + WEIGTH[dPP0] * (((phi2[d0PP] - phi2[d0MM]) + (phi2[d0PM] - phi2[d0MP])) + ((phi2[dPP0] - phi2[dMM0]) - (phi2[dPM0] - phi2[dMP0])))) + + +WEIGTH[d0P0] * (phi2[d0P0] - phi2[d0M0])); //LBMReal sum = 0.0; //for (int k = FSTARTDIR; k <= FENDDIR; k++) { // sum += WEIGTH[k] * DX2[k] * phi2[k]; @@ -3437,9 +3437,9 @@ real MultiphaseTwoPhaseFieldsPressureFilterLBMKernel::gradX3_phi2() using namespace D3Q27System; using namespace vf::lbm::dir; - return 3.0 * ((WEIGTH[DIR_PPP] * (((phi2[DIR_PPP] - phi2[DIR_MMM]) - (phi2[DIR_PMM] - phi2[DIR_MPP])) + ((phi2[DIR_PMP] - phi2[DIR_MPM]) - (phi2[DIR_PPM] - phi2[DIR_MMP]))) - + WEIGTH[DIR_PP0] * (((phi2[DIR_P0P] - phi2[DIR_M0M]) - (phi2[DIR_P0M] - phi2[DIR_M0P])) + ((phi2[DIR_0MP] - phi2[DIR_0PM]) + (phi2[DIR_0PP] - phi2[DIR_0MM])))) + - +WEIGTH[DIR_0P0] * (phi2[DIR_00P] - phi2[DIR_00M])); + return 3.0 * ((WEIGTH[dPPP] * (((phi2[dPPP] - phi2[dMMM]) - (phi2[dPMM] - phi2[dMPP])) + ((phi2[dPMP] - phi2[dMPM]) - (phi2[dPPM] - phi2[dMMP]))) + + WEIGTH[dPP0] * (((phi2[dP0P] - phi2[dM0M]) - (phi2[dP0M] - phi2[dM0P])) + ((phi2[d0MP] - phi2[d0PM]) + (phi2[d0PP] - phi2[d0MM])))) + + +WEIGTH[d0P0] * (phi2[d00P] - phi2[d00M])); //LBMReal sum = 0.0; //for (int k = FSTARTDIR; k <= FENDDIR; k++) { // sum += WEIGTH[k] * DX3[k] * phi2[k]; @@ -3457,17 +3457,17 @@ real MultiphaseTwoPhaseFieldsPressureFilterLBMKernel::nabla2_phi() using namespace vf::lbm::dir; real sum = 0.0; - sum += WEIGTH[DIR_PPP] * ((((phi[DIR_PPP] - phi[DIR_000]) + (phi[DIR_MMM] - phi[DIR_000])) + ((phi[DIR_MMP] - phi[DIR_000]) + (phi[DIR_PPM] - phi[DIR_000]))) - + (((phi[DIR_MPP] - phi[DIR_000]) + (phi[DIR_PMM] - phi[DIR_000])) + ((phi[DIR_PMP] - phi[DIR_000]) + (phi[DIR_MPM] - phi[DIR_000])))); - sum += WEIGTH[DIR_0PP] * ( - (((phi[DIR_0PP] - phi[DIR_000]) + (phi[DIR_0MM] - phi[DIR_000])) + ((phi[DIR_0MP] - phi[DIR_000]) + (phi[DIR_0PM] - phi[DIR_000]))) - + (((phi[DIR_P0P] - phi[DIR_000]) + (phi[DIR_M0M] - phi[DIR_000])) + ((phi[DIR_M0P] - phi[DIR_000]) + (phi[DIR_P0M] - phi[DIR_000]))) - + (((phi[DIR_PP0] - phi[DIR_000]) + (phi[DIR_MM0] - phi[DIR_000])) + ((phi[DIR_MP0] - phi[DIR_000]) + (phi[DIR_PM0] - phi[DIR_000]))) + sum += WEIGTH[dPPP] * ((((phi[dPPP] - phi[d000]) + (phi[dMMM] - phi[d000])) + ((phi[dMMP] - phi[d000]) + (phi[dPPM] - phi[d000]))) + + (((phi[dMPP] - phi[d000]) + (phi[dPMM] - phi[d000])) + ((phi[dPMP] - phi[d000]) + (phi[dMPM] - phi[d000])))); + sum += WEIGTH[d0PP] * ( + (((phi[d0PP] - phi[d000]) + (phi[d0MM] - phi[d000])) + ((phi[d0MP] - phi[d000]) + (phi[d0PM] - phi[d000]))) + + (((phi[dP0P] - phi[d000]) + (phi[dM0M] - phi[d000])) + ((phi[dM0P] - phi[d000]) + (phi[dP0M] - phi[d000]))) + + (((phi[dPP0] - phi[d000]) + (phi[dMM0] - phi[d000])) + ((phi[dMP0] - phi[d000]) + (phi[dPM0] - phi[d000]))) ); - sum += WEIGTH[DIR_00P] * ( - ((phi[DIR_00P] - phi[DIR_000]) + (phi[DIR_00M] - phi[DIR_000])) - + ((phi[DIR_0P0] - phi[DIR_000]) + (phi[DIR_0M0] - phi[DIR_000])) - + ((phi[DIR_P00] - phi[DIR_000]) + (phi[DIR_M00] - phi[DIR_000])) + sum += WEIGTH[d00P] * ( + ((phi[d00P] - phi[d000]) + (phi[d00M] - phi[d000])) + + ((phi[d0P0] - phi[d000]) + (phi[d0M0] - phi[d000])) + + ((phi[dP00] - phi[d000]) + (phi[dM00] - phi[d000])) ); //for (int k = FSTARTDIR; k <= FENDDIR; k++) { // sum += WEIGTH[k] * (phi[k] - phi[REST]); @@ -3499,35 +3499,35 @@ void MultiphaseTwoPhaseFieldsPressureFilterLBMKernel::computePhasefield() int x2p = x2 + 1; int x3p = x3 + 1; - h[DIR_P00] = (*this->localDistributionsH1)(D3Q27System::ET_E, x1, x2, x3); - h[DIR_0P0] = (*this->localDistributionsH1)(D3Q27System::ET_N, x1, x2, x3); - h[DIR_00P] = (*this->localDistributionsH1)(D3Q27System::ET_T, x1, x2, x3); - h[DIR_PP0] = (*this->localDistributionsH1)(D3Q27System::ET_NE, x1, x2, x3); - h[DIR_MP0] = (*this->localDistributionsH1)(D3Q27System::ET_NW, x1p, x2, x3); - h[DIR_P0P] = (*this->localDistributionsH1)(D3Q27System::ET_TE, x1, x2, x3); - h[DIR_M0P] = (*this->localDistributionsH1)(D3Q27System::ET_TW, x1p, x2, x3); - h[DIR_0PP] = (*this->localDistributionsH1)(D3Q27System::ET_TN, x1, x2, x3); - h[DIR_0MP] = (*this->localDistributionsH1)(D3Q27System::ET_TS, x1, x2p, x3); - h[DIR_PPP] = (*this->localDistributionsH1)(D3Q27System::ET_TNE, x1, x2, x3); - h[DIR_MPP] = (*this->localDistributionsH1)(D3Q27System::ET_TNW, x1p, x2, x3); - h[DIR_PMP] = (*this->localDistributionsH1)(D3Q27System::ET_TSE, x1, x2p, x3); - h[DIR_MMP] = (*this->localDistributionsH1)(D3Q27System::ET_TSW, x1p, x2p, x3); - - h[DIR_M00] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_W, x1p, x2, x3); - h[DIR_0M0] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_S, x1, x2p, x3); - h[DIR_00M] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_B, x1, x2, x3p); - h[DIR_MM0] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_SW, x1p, x2p, x3); - h[DIR_PM0] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_SE, x1, x2p, x3); - h[DIR_M0M] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BW, x1p, x2, x3p); - h[DIR_P0M] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BE, x1, x2, x3p); - h[DIR_0MM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BS, x1, x2p, x3p); - h[DIR_0PM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BN, x1, x2, x3p); - h[DIR_MMM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BSW, x1p, x2p, x3p); - h[DIR_PMM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BSE, x1, x2p, x3p); - h[DIR_MPM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BNW, x1p, x2, x3p); - h[DIR_PPM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BNE, x1, x2, x3p); - - h[DIR_000] = (*this->zeroDistributionsH1)(x1, x2, x3); + h[dP00] = (*this->localDistributionsH1)(D3Q27System::ET_E, x1, x2, x3); + h[d0P0] = (*this->localDistributionsH1)(D3Q27System::ET_N, x1, x2, x3); + h[d00P] = (*this->localDistributionsH1)(D3Q27System::ET_T, x1, x2, x3); + h[dPP0] = (*this->localDistributionsH1)(D3Q27System::ET_NE, x1, x2, x3); + h[dMP0] = (*this->localDistributionsH1)(D3Q27System::ET_NW, x1p, x2, x3); + h[dP0P] = (*this->localDistributionsH1)(D3Q27System::ET_TE, x1, x2, x3); + h[dM0P] = (*this->localDistributionsH1)(D3Q27System::ET_TW, x1p, x2, x3); + h[d0PP] = (*this->localDistributionsH1)(D3Q27System::ET_TN, x1, x2, x3); + h[d0MP] = (*this->localDistributionsH1)(D3Q27System::ET_TS, x1, x2p, x3); + h[dPPP] = (*this->localDistributionsH1)(D3Q27System::ET_TNE, x1, x2, x3); + h[dMPP] = (*this->localDistributionsH1)(D3Q27System::ET_TNW, x1p, x2, x3); + h[dPMP] = (*this->localDistributionsH1)(D3Q27System::ET_TSE, x1, x2p, x3); + h[dMMP] = (*this->localDistributionsH1)(D3Q27System::ET_TSW, x1p, x2p, x3); + + h[dM00] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_W, x1p, x2, x3); + h[d0M0] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_S, x1, x2p, x3); + h[d00M] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_B, x1, x2, x3p); + h[dMM0] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_SW, x1p, x2p, x3); + h[dPM0] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_SE, x1, x2p, x3); + h[dM0M] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BW, x1p, x2, x3p); + h[dP0M] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BE, x1, x2, x3p); + h[d0MM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BS, x1, x2p, x3p); + h[d0PM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BN, x1, x2, x3p); + h[dMMM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BSW, x1p, x2p, x3p); + h[dPMM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BSE, x1, x2p, x3p); + h[dMPM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BNW, x1p, x2, x3p); + h[dPPM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BNE, x1, x2, x3p); + + h[d000] = (*this->zeroDistributionsH1)(x1, x2, x3); } } } @@ -3542,7 +3542,7 @@ void MultiphaseTwoPhaseFieldsPressureFilterLBMKernel::findNeighbors(CbArray3D<re SPtr<BCArray3D> bcArray = this->getBCSet()->getBCArray(); - phi[DIR_000] = (*ph)(x1, x2, x3); + phi[d000] = (*ph)(x1, x2, x3); for (int k = FSTARTDIR; k <= FENDDIR; k++) { @@ -3563,7 +3563,7 @@ void MultiphaseTwoPhaseFieldsPressureFilterLBMKernel::findNeighbors2(CbArray3D<r SPtr<BCArray3D> bcArray = this->getBCSet()->getBCArray(); - phi2[DIR_000] = (*ph)(x1, x2, x3); + phi2[d000] = (*ph)(x1, x2, x3); for (int k = FSTARTDIR; k <= FENDDIR; k++) { diff --git a/src/cpu/MultiphaseFlow/LBM/MultiphaseTwoPhaseFieldsVelocityCumulantLBMKernel.cpp b/src/cpu/MultiphaseFlow/LBM/MultiphaseTwoPhaseFieldsVelocityCumulantLBMKernel.cpp index ef0d033bc0c255d02e51a08fa1a0a85d1b20f0b4..d15714f6f8da63e020a7ee40ea953779e25e46c6 100644 --- a/src/cpu/MultiphaseFlow/LBM/MultiphaseTwoPhaseFieldsVelocityCumulantLBMKernel.cpp +++ b/src/cpu/MultiphaseFlow/LBM/MultiphaseTwoPhaseFieldsVelocityCumulantLBMKernel.cpp @@ -305,7 +305,7 @@ void MultiphaseTwoPhaseFieldsVelocityCumulantLBMKernel::calculate(int step) + (mfaab + mfacb + mfcab + mfccb) + (mfaba + mfabc + mfcba + mfcbc) + (mfbaa + mfbac + mfbca + mfbcc) + (mfabb + mfcbb) + (mfbab + mfbcb) + (mfbba + mfbbc) + mfbbb; - real rho = rhoH + rhoToPhi * (phi[DIR_000] - phiH); + real rho = rhoH + rhoToPhi * (phi[d000] - phiH); (*pressure)(x1, x2, x3) = (*pressure)(x1, x2, x3) + rho * c1o3 * drho; ////!!!!!! relplace by pointer swap! @@ -555,13 +555,13 @@ void MultiphaseTwoPhaseFieldsVelocityCumulantLBMKernel::calculate(int step) - collFactorM = collFactorL + (collFactorL - collFactorG) * (phi[DIR_000] - phiH) / (phiH - phiL); + collFactorM = collFactorL + (collFactorL - collFactorG) * (phi[d000] - phiH) / (phiH - phiL); - real mu = 2 * beta * phi[DIR_000] * (phi[DIR_000] - 1) * (2 * phi[DIR_000] - 1) - kappa * nabla2_phi(); + real mu = 2 * beta * phi[d000] * (phi[d000] - 1) * (2 * phi[d000] - 1) - kappa * nabla2_phi(); //----------- Calculating Macroscopic Values ------------- - real rho = rhoH + rhoToPhi * (phi[DIR_000] - phiH); + real rho = rhoH + rhoToPhi * (phi[d000] - phiH); ////Incompressible Kernal @@ -625,7 +625,7 @@ void MultiphaseTwoPhaseFieldsVelocityCumulantLBMKernel::calculate(int step) // + WEIGTH[NE] * ( // (((*pressure)(x1 + 1, x2 + 1, x3) - (*pressure)(x1 - 1, x2 - 1, x3)) + ((*pressure)(x1 + 1, x2 - 1, x3) - (*pressure)(x1 - 1, x2 + 1, x3))) // + (((*pressure)(x1 + 1, x2, x3 - 1) - (*pressure)(x1 - 1, x2, x3 + 1)) + ((*pressure)(x1 + 1, x2, x3 + 1) - (*pressure)(x1 - 1, x2, x3 - 1)))) - // + WEIGTH[DIR_P00] * ((*pressure)(x1 + 1, x2, x3) - (*pressure)(x1 - 1, x2, x3))); + // + WEIGTH[dP00] * ((*pressure)(x1 + 1, x2, x3) - (*pressure)(x1 - 1, x2, x3))); //LBMReal gradPy = 3.0 * (WEIGTH[TNE] * ( // (((*pressure)(x1 + 1, x2 + 1, x3 + 1) - (*pressure)(x1 - 1, x2 - 1, x3 - 1)) + ((*pressure)(x1 - 1, x2 + 1, x3 + 1) - (*pressure)(x1 + 1, x2 - 1, x3 - 1))) @@ -633,7 +633,7 @@ void MultiphaseTwoPhaseFieldsVelocityCumulantLBMKernel::calculate(int step) // + WEIGTH[NE] * ( // (((*pressure)(x1 + 1, x2 + 1, x3) - (*pressure)(x1 - 1, x2 - 1, x3)) + ((*pressure)(x1 - 1, x2 + 1, x3) - (*pressure)(x1 + 1, x2 - 1, x3))) // + (((*pressure)(x1, x2+1, x3 - 1) - (*pressure)(x1, x2-1, x3 + 1)) + ((*pressure)(x1, x2+1, x3 + 1) - (*pressure)(x1, x2-1, x3 - 1)))) - // + WEIGTH[DIR_P00] * ((*pressure)(x1, x2+1, x3) - (*pressure)(x1, x2-1, x3))); + // + WEIGTH[dP00] * ((*pressure)(x1, x2+1, x3) - (*pressure)(x1, x2-1, x3))); //LBMReal gradPz = 3.0 * (WEIGTH[TNE] * ( // (((*pressure)(x1 + 1, x2 + 1, x3 + 1) - (*pressure)(x1 - 1, x2 - 1, x3 - 1)) + ((*pressure)(x1 - 1, x2 + 1, x3 + 1) - (*pressure)(x1 + 1, x2 - 1, x3 - 1))) @@ -641,7 +641,7 @@ void MultiphaseTwoPhaseFieldsVelocityCumulantLBMKernel::calculate(int step) // + WEIGTH[NE] * ( // (((*pressure)(x1 + 1, x2, x3+1) - (*pressure)(x1 - 1, x2, x3-1)) + ((*pressure)(x1 - 1, x2, x3+1) - (*pressure)(x1 + 1, x2, x3-1))) // + (((*pressure)(x1, x2 - 1, x3 + 1) - (*pressure)(x1, x2 + 1, x3 - 1)) + ((*pressure)(x1, x2 + 1, x3 + 1) - (*pressure)(x1, x2 - 1, x3 - 1)))) - // + WEIGTH[DIR_P00] * ((*pressure)(x1, x2, x3+1) - (*pressure)(x1, x2, x3-1))); + // + WEIGTH[dP00] * ((*pressure)(x1, x2, x3+1) - (*pressure)(x1, x2, x3-1))); real gradPx = 0.0; @@ -803,7 +803,7 @@ void MultiphaseTwoPhaseFieldsVelocityCumulantLBMKernel::calculate(int step) //////// // LBMReal divAfterSource= - //( mfcbb + 3.0 * (0.5 * forcingTerm[DIR_P00]) / rho ) *((vvxF-1)*(vvxF-1)+(vvyF) *(vvyF) +(vvzF) *(vvzF)-1)+ + //( mfcbb + 3.0 * (0.5 * forcingTerm[dP00]) / rho ) *((vvxF-1)*(vvxF-1)+(vvyF) *(vvyF) +(vvzF) *(vvzF)-1)+ //( mfbcb + 3.0 * (0.5 * forcingTerm[N]) / rho ) *((vvxF) *(vvxF) +(vvyF-1)*(vvyF-1)+(vvzF) *(vvzF)-1)+ //( mfbbc + 3.0 * (0.5 * forcingTerm[T]) / rho ) *((vvxF) *(vvxF) +(vvyF) *(vvyF) +(vvzF-1)*(vvzF-1)-1)+ //( mfccb + 3.0 * (0.5 * forcingTerm[NE]) / rho ) *((vvxF-1)*(vvxF-1)+(vvyF-1)*(vvyF-1)+(vvzF) *(vvzF)-1)+ @@ -866,7 +866,7 @@ void MultiphaseTwoPhaseFieldsVelocityCumulantLBMKernel::calculate(int step) //if (fabs(divAfterSource - divBeforeSource)/(fabs(divAfterSource) + fabs(divBeforeSource)+1e-10) > 1e-5) { // LBMReal scaleDiv =0.95+(1-0.95)* (divBeforeSource) / (divBeforeSource - divAfterSource); - // forcingTerm[DIR_P00] *=scaleDiv; + // forcingTerm[dP00] *=scaleDiv; // forcingTerm[N] *=scaleDiv; // forcingTerm[T] *=scaleDiv; // forcingTerm[NE] *=scaleDiv; @@ -897,7 +897,7 @@ void MultiphaseTwoPhaseFieldsVelocityCumulantLBMKernel::calculate(int step) //////// - //mfcbb += 3.0 * (0.5 * forcingTerm[DIR_P00]) / rho; //-(3.0*p1 - rho)*WEIGTH[E ]; + //mfcbb += 3.0 * (0.5 * forcingTerm[dP00]) / rho; //-(3.0*p1 - rho)*WEIGTH[E ]; //mfbcb += 3.0 * (0.5 * forcingTerm[N]) / rho; //-(3.0*p1 - rho)*WEIGTH[N ]; //mfbbc += 3.0 * (0.5 * forcingTerm[T]) / rho; //-(3.0*p1 - rho)*WEIGTH[T ]; //mfccb += 3.0 * (0.5 * forcingTerm[NE]) / rho; //-(3.0*p1 - rho)*WEIGTH[NE ]; @@ -1240,7 +1240,7 @@ void MultiphaseTwoPhaseFieldsVelocityCumulantLBMKernel::calculate(int step) real OxyyMxzz = 8.0 * (collFactorM - 2.0) * (collFactorM + OxxPyyPzz * (3.0 * collFactorM - 7.0)) / (OxxPyyPzz * (56.0 - 42.0 * collFactorM + 9.0 * collFactorM * collFactorM) - 8.0 * collFactorM); // real Oxyz = 24.0 * (collFactorM - 2.0) * (4.0 * collFactorM * collFactorM + collFactorM * OxxPyyPzz * (18.0 - 13.0 * collFactorM) + OxxPyyPzz * OxxPyyPzz * (2.0 + collFactorM * (6.0 * collFactorM - 11.0))) / (16.0 * collFactorM * collFactorM * (collFactorM - 6.0) - 2.0 * collFactorM * OxxPyyPzz * (216.0 + 5.0 * collFactorM * (9.0 * collFactorM - 46.0)) + OxxPyyPzz * OxxPyyPzz * (collFactorM * (3.0 * collFactorM - 10.0) * (15.0 * collFactorM - 28.0) - 48.0)); real A = (4.0 * collFactorM * collFactorM + 2.0 * collFactorM * OxxPyyPzz * (collFactorM - 6.0) + OxxPyyPzz * OxxPyyPzz * (collFactorM * (10.0 - 3.0 * collFactorM) - 4.0)) / ((collFactorM - OxxPyyPzz) * (OxxPyyPzz * (2.0 + 3.0 * collFactorM) - 8.0 * collFactorM)); - //FIXME: warning C4459: declaration of 'B' hides global declaration (message : see declaration of 'D3Q27System::DIR_00M' ) + //FIXME: warning C4459: declaration of 'B' hides global declaration (message : see declaration of 'D3Q27System::d00M' ) real BB = (4.0 * collFactorM * OxxPyyPzz * (9.0 * collFactorM - 16.0) - 4.0 * collFactorM * collFactorM - 2.0 * OxxPyyPzz * OxxPyyPzz * (2.0 + 9.0 * collFactorM * (collFactorM - 2.0))) / (3.0 * (collFactorM - OxxPyyPzz) * (OxxPyyPzz * (2.0 + 3.0 * collFactorM) - 8.0 * collFactorM)); @@ -1652,7 +1652,7 @@ void MultiphaseTwoPhaseFieldsVelocityCumulantLBMKernel::calculate(int step) /////classical source term 8.4.2021 - //mfcbb += 3.0 * (0.5 * forcingTerm[DIR_P00]) / rho; //-(3.0*p1 - rho)*WEIGTH[E ]; + //mfcbb += 3.0 * (0.5 * forcingTerm[dP00]) / rho; //-(3.0*p1 - rho)*WEIGTH[E ]; //mfbcb += 3.0 * (0.5 * forcingTerm[N]) / rho; //-(3.0*p1 - rho)*WEIGTH[N ]; //mfbbc += 3.0 * (0.5 * forcingTerm[T]) / rho; //-(3.0*p1 - rho)*WEIGTH[T ]; //mfccb += 3.0 * (0.5 * forcingTerm[NE]) / rho; //-(3.0*p1 - rho)*WEIGTH[NE ]; @@ -1794,7 +1794,7 @@ void MultiphaseTwoPhaseFieldsVelocityCumulantLBMKernel::calculate(int step) // // //-------------------------------------------------------- // -// mfcbb = 3.0 * (mfcbb + 0.5 * forcingTerm[DIR_P00]) / rho; //-(3.0*p1 - rho)*WEIGTH[E ]; +// mfcbb = 3.0 * (mfcbb + 0.5 * forcingTerm[dP00]) / rho; //-(3.0*p1 - rho)*WEIGTH[E ]; // mfbcb = 3.0 * (mfbcb + 0.5 * forcingTerm[N]) / rho; //-(3.0*p1 - rho)*WEIGTH[N ]; // mfbbc = 3.0 * (mfbbc + 0.5 * forcingTerm[T]) / rho; //-(3.0*p1 - rho)*WEIGTH[T ]; // mfccb = 3.0 * (mfccb + 0.5 * forcingTerm[NE]) / rho; //-(3.0*p1 - rho)*WEIGTH[NE ]; @@ -2502,7 +2502,7 @@ void MultiphaseTwoPhaseFieldsVelocityCumulantLBMKernel::calculate(int step) // } //#endif // -// mfcbb = rho * c1o3 * (mfcbb) + 0.5 * forcingTerm[DIR_P00]; +// mfcbb = rho * c1o3 * (mfcbb) + 0.5 * forcingTerm[dP00]; // mfbcb = rho * c1o3 * (mfbcb) + 0.5 * forcingTerm[N]; // mfbbc = rho * c1o3 * (mfbbc) + 0.5 * forcingTerm[T]; // mfccb = rho * c1o3 * (mfccb) + 0.5 * forcingTerm[NE]; @@ -2729,11 +2729,11 @@ void MultiphaseTwoPhaseFieldsVelocityCumulantLBMKernel::calculate(int step) cx = cx * (c1o1 - omegaD) + omegaD * vvx * concentration + - normX1 * (c1o1 - 0.5 * omegaD) * (1.0 - phi[DIR_000]) * (phi[DIR_000]) * c1o3 * oneOverInterfaceScale; + normX1 * (c1o1 - 0.5 * omegaD) * (1.0 - phi[d000]) * (phi[d000]) * c1o3 * oneOverInterfaceScale; cy = cy * (c1o1 - omegaD) + omegaD * vvy * concentration + - normX2 * (c1o1 - 0.5 * omegaD) * (1.0 - phi[DIR_000]) * (phi[DIR_000]) * c1o3 * oneOverInterfaceScale; + normX2 * (c1o1 - 0.5 * omegaD) * (1.0 - phi[d000]) * (phi[d000]) * c1o3 * oneOverInterfaceScale; cz = cz * (c1o1 - omegaD) + omegaD * vvz * concentration + - normX3 * (c1o1 - 0.5 * omegaD) * (1.0 - phi[DIR_000]) * (phi[DIR_000]) * c1o3 * oneOverInterfaceScale; + normX3 * (c1o1 - 0.5 * omegaD) * (1.0 - phi[d000]) * (phi[d000]) * c1o3 * oneOverInterfaceScale; //mhx = (ux * phi[REST] + normX1 * (tauH - 0.5) * (1.0 - phi[REST]) * (phi[REST])) / tauH + (1.0 - 1.0 / tauH) * mhx; //mhy = (uy * phi[REST] + normX2 * (tauH - 0.5) * (1.0 - phi[REST]) * (phi[REST])) / tauH + (1.0 - 1.0 / tauH) * mhy; @@ -3042,11 +3042,11 @@ void MultiphaseTwoPhaseFieldsVelocityCumulantLBMKernel::calculate(int step) // collision of 1st order moments cx = cx * (c1o1 - omegaD) + omegaD * vvx * concentration + - normX1 * (c1o1 - 0.5 * omegaD) * ( phi[DIR_000]) * (phi2[DIR_000]) * c1o3 * oneOverInterfaceScale; + normX1 * (c1o1 - 0.5 * omegaD) * ( phi[d000]) * (phi2[d000]) * c1o3 * oneOverInterfaceScale; cy = cy * (c1o1 - omegaD) + omegaD * vvy * concentration + - normX2 * (c1o1 - 0.5 * omegaD) * ( phi[DIR_000]) * (phi2[DIR_000]) * c1o3 * oneOverInterfaceScale; + normX2 * (c1o1 - 0.5 * omegaD) * ( phi[d000]) * (phi2[d000]) * c1o3 * oneOverInterfaceScale; cz = cz * (c1o1 - omegaD) + omegaD * vvz * concentration + - normX3 * (c1o1 - 0.5 * omegaD) * ( phi[DIR_000]) * (phi2[DIR_000]) * c1o3 * oneOverInterfaceScale; + normX3 * (c1o1 - 0.5 * omegaD) * ( phi[d000]) * (phi2[d000]) * c1o3 * oneOverInterfaceScale; //mhx = (ux * phi[REST] + normX1 * (tauH - 0.5) * (1.0 - phi[REST]) * (phi[REST])) / tauH + (1.0 - 1.0 / tauH) * mhx; //mhy = (uy * phi[REST] + normX2 * (tauH - 0.5) * (1.0 - phi[REST]) * (phi[REST])) / tauH + (1.0 - 1.0 / tauH) * mhy; @@ -3199,7 +3199,7 @@ void MultiphaseTwoPhaseFieldsVelocityCumulantLBMKernel::calculate(int step) ///////////////////// PHASE-FIELD BGK SOLVER /////////////////////////////// - //h[DIR_P00] = (*this->localDistributionsH)(D3Q27System::ET_E, x1, x2, x3); + //h[dP00] = (*this->localDistributionsH)(D3Q27System::ET_E, x1, x2, x3); //h[N] = (*this->localDistributionsH)(D3Q27System::ET_N, x1, x2, x3); //h[T] = (*this->localDistributionsH)(D3Q27System::ET_T, x1, x2, x3); //h[NE] = (*this->localDistributionsH)(D3Q27System::ET_NE, x1, x2, x3); @@ -3293,9 +3293,9 @@ real MultiphaseTwoPhaseFieldsVelocityCumulantLBMKernel::gradX1_phi() using namespace D3Q27System; using namespace vf::lbm::dir; - return 3.0* ((WEIGTH[DIR_PPP] * (((phi[DIR_PPP] - phi[DIR_MMM]) + (phi[DIR_PMM] - phi[DIR_MPP])) + ((phi[DIR_PMP] - phi[DIR_MPM]) + (phi[DIR_PPM] - phi[DIR_MMP]))) - + WEIGTH[DIR_PP0] * (((phi[DIR_P0P] - phi[DIR_M0M]) + (phi[DIR_P0M] - phi[DIR_M0P])) + ((phi[DIR_PM0] - phi[DIR_MP0]) + (phi[DIR_PP0] - phi[DIR_MM0])))) + - +WEIGTH[DIR_0P0] * (phi[DIR_P00] - phi[DIR_M00])); + return 3.0* ((WEIGTH[dPPP] * (((phi[dPPP] - phi[dMMM]) + (phi[dPMM] - phi[dMPP])) + ((phi[dPMP] - phi[dMPM]) + (phi[dPPM] - phi[dMMP]))) + + WEIGTH[dPP0] * (((phi[dP0P] - phi[dM0M]) + (phi[dP0M] - phi[dM0P])) + ((phi[dPM0] - phi[dMP0]) + (phi[dPP0] - phi[dMM0])))) + + +WEIGTH[d0P0] * (phi[dP00] - phi[dM00])); //LBMReal sum = 0.0; //for (int k = FSTARTDIR; k <= FENDDIR; k++) { // sum += WEIGTH[k] * DX1[k] * phi[k]; @@ -3308,9 +3308,9 @@ real MultiphaseTwoPhaseFieldsVelocityCumulantLBMKernel::gradX2_phi() using namespace D3Q27System; using namespace vf::lbm::dir; - return 3.0 * ((WEIGTH[DIR_PPP] * (((phi[DIR_PPP] - phi[DIR_MMM]) - (phi[DIR_PMM] - phi[DIR_MPP])) + ((phi[DIR_PPM] - phi[DIR_MMP])- (phi[DIR_PMP] - phi[DIR_MPM]))) - + WEIGTH[DIR_PP0] * (((phi[DIR_0PP] - phi[DIR_0MM]) + (phi[DIR_0PM] - phi[DIR_0MP])) + ((phi[DIR_PP0] - phi[DIR_MM0])- (phi[DIR_PM0] - phi[DIR_MP0])))) + - +WEIGTH[DIR_0P0] * (phi[DIR_0P0] - phi[DIR_0M0])); + return 3.0 * ((WEIGTH[dPPP] * (((phi[dPPP] - phi[dMMM]) - (phi[dPMM] - phi[dMPP])) + ((phi[dPPM] - phi[dMMP])- (phi[dPMP] - phi[dMPM]))) + + WEIGTH[dPP0] * (((phi[d0PP] - phi[d0MM]) + (phi[d0PM] - phi[d0MP])) + ((phi[dPP0] - phi[dMM0])- (phi[dPM0] - phi[dMP0])))) + + +WEIGTH[d0P0] * (phi[d0P0] - phi[d0M0])); //LBMReal sum = 0.0; //for (int k = FSTARTDIR; k <= FENDDIR; k++) { // sum += WEIGTH[k] * DX2[k] * phi[k]; @@ -3323,9 +3323,9 @@ real MultiphaseTwoPhaseFieldsVelocityCumulantLBMKernel::gradX3_phi() using namespace D3Q27System; using namespace vf::lbm::dir; - return 3.0 * ((WEIGTH[DIR_PPP] * (((phi[DIR_PPP] - phi[DIR_MMM]) - (phi[DIR_PMM] - phi[DIR_MPP])) + ((phi[DIR_PMP] - phi[DIR_MPM]) - (phi[DIR_PPM] - phi[DIR_MMP]))) - + WEIGTH[DIR_PP0] * (((phi[DIR_P0P] - phi[DIR_M0M]) - (phi[DIR_P0M] - phi[DIR_M0P])) + ((phi[DIR_0MP] - phi[DIR_0PM]) + (phi[DIR_0PP] - phi[DIR_0MM])))) + - +WEIGTH[DIR_0P0] * (phi[DIR_00P] - phi[DIR_00M])); + return 3.0 * ((WEIGTH[dPPP] * (((phi[dPPP] - phi[dMMM]) - (phi[dPMM] - phi[dMPP])) + ((phi[dPMP] - phi[dMPM]) - (phi[dPPM] - phi[dMMP]))) + + WEIGTH[dPP0] * (((phi[dP0P] - phi[dM0M]) - (phi[dP0M] - phi[dM0P])) + ((phi[d0MP] - phi[d0PM]) + (phi[d0PP] - phi[d0MM])))) + + +WEIGTH[d0P0] * (phi[d00P] - phi[d00M])); //LBMReal sum = 0.0; //for (int k = FSTARTDIR; k <= FENDDIR; k++) { // sum += WEIGTH[k] * DX3[k] * phi[k]; @@ -3338,9 +3338,9 @@ real MultiphaseTwoPhaseFieldsVelocityCumulantLBMKernel::gradX1_phi2() using namespace D3Q27System; using namespace vf::lbm::dir; - return 3.0 * ((WEIGTH[DIR_PPP] * (((phi2[DIR_PPP] - phi2[DIR_MMM]) + (phi2[DIR_PMM] - phi2[DIR_MPP])) + ((phi2[DIR_PMP] - phi2[DIR_MPM]) + (phi2[DIR_PPM] - phi2[DIR_MMP]))) - + WEIGTH[DIR_PP0] * (((phi2[DIR_P0P] - phi2[DIR_M0M]) + (phi2[DIR_P0M] - phi2[DIR_M0P])) + ((phi2[DIR_PM0] - phi2[DIR_MP0]) + (phi2[DIR_PP0] - phi2[DIR_MM0])))) + - +WEIGTH[DIR_0P0] * (phi2[DIR_P00] - phi2[DIR_M00])); + return 3.0 * ((WEIGTH[dPPP] * (((phi2[dPPP] - phi2[dMMM]) + (phi2[dPMM] - phi2[dMPP])) + ((phi2[dPMP] - phi2[dMPM]) + (phi2[dPPM] - phi2[dMMP]))) + + WEIGTH[dPP0] * (((phi2[dP0P] - phi2[dM0M]) + (phi2[dP0M] - phi2[dM0P])) + ((phi2[dPM0] - phi2[dMP0]) + (phi2[dPP0] - phi2[dMM0])))) + + +WEIGTH[d0P0] * (phi2[dP00] - phi2[dM00])); //LBMReal sum = 0.0; //for (int k = FSTARTDIR; k <= FENDDIR; k++) { // sum += WEIGTH[k] * DX1[k] * phi2[k]; @@ -3353,9 +3353,9 @@ real MultiphaseTwoPhaseFieldsVelocityCumulantLBMKernel::gradX2_phi2() using namespace D3Q27System; using namespace vf::lbm::dir; - return 3.0 * ((WEIGTH[DIR_PPP] * (((phi2[DIR_PPP] - phi2[DIR_MMM]) - (phi2[DIR_PMM] - phi2[DIR_MPP])) + ((phi2[DIR_PPM] - phi2[DIR_MMP]) - (phi2[DIR_PMP] - phi2[DIR_MPM]))) - + WEIGTH[DIR_PP0] * (((phi2[DIR_0PP] - phi2[DIR_0MM]) + (phi2[DIR_0PM] - phi2[DIR_0MP])) + ((phi2[DIR_PP0] - phi2[DIR_MM0]) - (phi2[DIR_PM0] - phi2[DIR_MP0])))) + - +WEIGTH[DIR_0P0] * (phi2[DIR_0P0] - phi2[DIR_0M0])); + return 3.0 * ((WEIGTH[dPPP] * (((phi2[dPPP] - phi2[dMMM]) - (phi2[dPMM] - phi2[dMPP])) + ((phi2[dPPM] - phi2[dMMP]) - (phi2[dPMP] - phi2[dMPM]))) + + WEIGTH[dPP0] * (((phi2[d0PP] - phi2[d0MM]) + (phi2[d0PM] - phi2[d0MP])) + ((phi2[dPP0] - phi2[dMM0]) - (phi2[dPM0] - phi2[dMP0])))) + + +WEIGTH[d0P0] * (phi2[d0P0] - phi2[d0M0])); //LBMReal sum = 0.0; //for (int k = FSTARTDIR; k <= FENDDIR; k++) { // sum += WEIGTH[k] * DX2[k] * phi2[k]; @@ -3368,9 +3368,9 @@ real MultiphaseTwoPhaseFieldsVelocityCumulantLBMKernel::gradX3_phi2() using namespace D3Q27System; using namespace vf::lbm::dir; - return 3.0 * ((WEIGTH[DIR_PPP] * (((phi2[DIR_PPP] - phi2[DIR_MMM]) - (phi2[DIR_PMM] - phi2[DIR_MPP])) + ((phi2[DIR_PMP] - phi2[DIR_MPM]) - (phi2[DIR_PPM] - phi2[DIR_MMP]))) - + WEIGTH[DIR_PP0] * (((phi2[DIR_P0P] - phi2[DIR_M0M]) - (phi2[DIR_P0M] - phi2[DIR_M0P])) + ((phi2[DIR_0MP] - phi2[DIR_0PM]) + (phi2[DIR_0PP] - phi2[DIR_0MM])))) + - +WEIGTH[DIR_0P0] * (phi2[DIR_00P] - phi2[DIR_00M])); + return 3.0 * ((WEIGTH[dPPP] * (((phi2[dPPP] - phi2[dMMM]) - (phi2[dPMM] - phi2[dMPP])) + ((phi2[dPMP] - phi2[dMPM]) - (phi2[dPPM] - phi2[dMMP]))) + + WEIGTH[dPP0] * (((phi2[dP0P] - phi2[dM0M]) - (phi2[dP0M] - phi2[dM0P])) + ((phi2[d0MP] - phi2[d0PM]) + (phi2[d0PP] - phi2[d0MM])))) + + +WEIGTH[d0P0] * (phi2[d00P] - phi2[d00M])); //LBMReal sum = 0.0; //for (int k = FSTARTDIR; k <= FENDDIR; k++) { // sum += WEIGTH[k] * DX3[k] * phi2[k]; @@ -3388,17 +3388,17 @@ real MultiphaseTwoPhaseFieldsVelocityCumulantLBMKernel::nabla2_phi() using namespace vf::lbm::dir; real sum = 0.0; - sum += WEIGTH[DIR_PPP] * ((((phi[DIR_PPP] - phi[DIR_000]) + (phi[DIR_MMM] - phi[DIR_000])) + ((phi[DIR_MMP] - phi[DIR_000]) + (phi[DIR_PPM] - phi[DIR_000]))) - + (((phi[DIR_MPP] - phi[DIR_000]) + (phi[DIR_PMM] - phi[DIR_000])) + ((phi[DIR_PMP] - phi[DIR_000]) + (phi[DIR_MPM] - phi[DIR_000])))); - sum += WEIGTH[DIR_0PP] * ( - (((phi[DIR_0PP] - phi[DIR_000]) + (phi[DIR_0MM] - phi[DIR_000])) + ((phi[DIR_0MP] - phi[DIR_000]) + (phi[DIR_0PM] - phi[DIR_000]))) - + (((phi[DIR_P0P] - phi[DIR_000]) + (phi[DIR_M0M] - phi[DIR_000])) + ((phi[DIR_M0P] - phi[DIR_000]) + (phi[DIR_P0M] - phi[DIR_000]))) - + (((phi[DIR_PP0] - phi[DIR_000]) + (phi[DIR_MM0] - phi[DIR_000])) + ((phi[DIR_MP0] - phi[DIR_000]) + (phi[DIR_PM0] - phi[DIR_000]))) + sum += WEIGTH[dPPP] * ((((phi[dPPP] - phi[d000]) + (phi[dMMM] - phi[d000])) + ((phi[dMMP] - phi[d000]) + (phi[dPPM] - phi[d000]))) + + (((phi[dMPP] - phi[d000]) + (phi[dPMM] - phi[d000])) + ((phi[dPMP] - phi[d000]) + (phi[dMPM] - phi[d000])))); + sum += WEIGTH[d0PP] * ( + (((phi[d0PP] - phi[d000]) + (phi[d0MM] - phi[d000])) + ((phi[d0MP] - phi[d000]) + (phi[d0PM] - phi[d000]))) + + (((phi[dP0P] - phi[d000]) + (phi[dM0M] - phi[d000])) + ((phi[dM0P] - phi[d000]) + (phi[dP0M] - phi[d000]))) + + (((phi[dPP0] - phi[d000]) + (phi[dMM0] - phi[d000])) + ((phi[dMP0] - phi[d000]) + (phi[dPM0] - phi[d000]))) ); - sum += WEIGTH[DIR_00P] * ( - ((phi[DIR_00P] - phi[DIR_000]) + (phi[DIR_00M] - phi[DIR_000])) - + ((phi[DIR_0P0] - phi[DIR_000]) + (phi[DIR_0M0] - phi[DIR_000])) - + ((phi[DIR_P00] - phi[DIR_000]) + (phi[DIR_M00] - phi[DIR_000])) + sum += WEIGTH[d00P] * ( + ((phi[d00P] - phi[d000]) + (phi[d00M] - phi[d000])) + + ((phi[d0P0] - phi[d000]) + (phi[d0M0] - phi[d000])) + + ((phi[dP00] - phi[d000]) + (phi[dM00] - phi[d000])) ); //for (int k = FSTARTDIR; k <= FENDDIR; k++) { // sum += WEIGTH[k] * (phi[k] - phi[REST]); @@ -3430,35 +3430,35 @@ void MultiphaseTwoPhaseFieldsVelocityCumulantLBMKernel::computePhasefield() int x2p = x2 + 1; int x3p = x3 + 1; - h[DIR_P00] = (*this->localDistributionsH1)(D3Q27System::ET_E, x1, x2, x3); - h[DIR_0P0] = (*this->localDistributionsH1)(D3Q27System::ET_N, x1, x2, x3); - h[DIR_00P] = (*this->localDistributionsH1)(D3Q27System::ET_T, x1, x2, x3); - h[DIR_PP0] = (*this->localDistributionsH1)(D3Q27System::ET_NE, x1, x2, x3); - h[DIR_MP0] = (*this->localDistributionsH1)(D3Q27System::ET_NW, x1p, x2, x3); - h[DIR_P0P] = (*this->localDistributionsH1)(D3Q27System::ET_TE, x1, x2, x3); - h[DIR_M0P] = (*this->localDistributionsH1)(D3Q27System::ET_TW, x1p, x2, x3); - h[DIR_0PP] = (*this->localDistributionsH1)(D3Q27System::ET_TN, x1, x2, x3); - h[DIR_0MP] = (*this->localDistributionsH1)(D3Q27System::ET_TS, x1, x2p, x3); - h[DIR_PPP] = (*this->localDistributionsH1)(D3Q27System::ET_TNE, x1, x2, x3); - h[DIR_MPP] = (*this->localDistributionsH1)(D3Q27System::ET_TNW, x1p, x2, x3); - h[DIR_PMP] = (*this->localDistributionsH1)(D3Q27System::ET_TSE, x1, x2p, x3); - h[DIR_MMP] = (*this->localDistributionsH1)(D3Q27System::ET_TSW, x1p, x2p, x3); - - h[DIR_M00] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_W, x1p, x2, x3); - h[DIR_0M0] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_S, x1, x2p, x3); - h[DIR_00M] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_B, x1, x2, x3p); - h[DIR_MM0] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_SW, x1p, x2p, x3); - h[DIR_PM0] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_SE, x1, x2p, x3); - h[DIR_M0M] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BW, x1p, x2, x3p); - h[DIR_P0M] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BE, x1, x2, x3p); - h[DIR_0MM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BS, x1, x2p, x3p); - h[DIR_0PM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BN, x1, x2, x3p); - h[DIR_MMM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BSW, x1p, x2p, x3p); - h[DIR_PMM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BSE, x1, x2p, x3p); - h[DIR_MPM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BNW, x1p, x2, x3p); - h[DIR_PPM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BNE, x1, x2, x3p); - - h[DIR_000] = (*this->zeroDistributionsH1)(x1, x2, x3); + h[dP00] = (*this->localDistributionsH1)(D3Q27System::ET_E, x1, x2, x3); + h[d0P0] = (*this->localDistributionsH1)(D3Q27System::ET_N, x1, x2, x3); + h[d00P] = (*this->localDistributionsH1)(D3Q27System::ET_T, x1, x2, x3); + h[dPP0] = (*this->localDistributionsH1)(D3Q27System::ET_NE, x1, x2, x3); + h[dMP0] = (*this->localDistributionsH1)(D3Q27System::ET_NW, x1p, x2, x3); + h[dP0P] = (*this->localDistributionsH1)(D3Q27System::ET_TE, x1, x2, x3); + h[dM0P] = (*this->localDistributionsH1)(D3Q27System::ET_TW, x1p, x2, x3); + h[d0PP] = (*this->localDistributionsH1)(D3Q27System::ET_TN, x1, x2, x3); + h[d0MP] = (*this->localDistributionsH1)(D3Q27System::ET_TS, x1, x2p, x3); + h[dPPP] = (*this->localDistributionsH1)(D3Q27System::ET_TNE, x1, x2, x3); + h[dMPP] = (*this->localDistributionsH1)(D3Q27System::ET_TNW, x1p, x2, x3); + h[dPMP] = (*this->localDistributionsH1)(D3Q27System::ET_TSE, x1, x2p, x3); + h[dMMP] = (*this->localDistributionsH1)(D3Q27System::ET_TSW, x1p, x2p, x3); + + h[dM00] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_W, x1p, x2, x3); + h[d0M0] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_S, x1, x2p, x3); + h[d00M] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_B, x1, x2, x3p); + h[dMM0] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_SW, x1p, x2p, x3); + h[dPM0] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_SE, x1, x2p, x3); + h[dM0M] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BW, x1p, x2, x3p); + h[dP0M] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BE, x1, x2, x3p); + h[d0MM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BS, x1, x2p, x3p); + h[d0PM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BN, x1, x2, x3p); + h[dMMM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BSW, x1p, x2p, x3p); + h[dPMM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BSE, x1, x2p, x3p); + h[dMPM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BNW, x1p, x2, x3p); + h[dPPM] = (*this->nonLocalDistributionsH1)(D3Q27System::ET_BNE, x1, x2, x3p); + + h[d000] = (*this->zeroDistributionsH1)(x1, x2, x3); } } } @@ -3473,7 +3473,7 @@ void MultiphaseTwoPhaseFieldsVelocityCumulantLBMKernel::findNeighbors(CbArray3D< SPtr<BCArray3D> bcArray = this->getBCSet()->getBCArray(); - phi[DIR_000] = (*ph)(x1, x2, x3); + phi[d000] = (*ph)(x1, x2, x3); for (int k = FSTARTDIR; k <= FENDDIR; k++) { @@ -3494,7 +3494,7 @@ void MultiphaseTwoPhaseFieldsVelocityCumulantLBMKernel::findNeighbors2(CbArray3D SPtr<BCArray3D> bcArray = this->getBCSet()->getBCArray(); - phi2[DIR_000] = (*ph)(x1, x2, x3); + phi2[d000] = (*ph)(x1, x2, x3); for (int k = FSTARTDIR; k <= FENDDIR; k++) { diff --git a/src/cpu/MultiphaseFlow/SimulationObservers/WriteMultiphaseQuantitiesSimulationObserver.cpp b/src/cpu/MultiphaseFlow/SimulationObservers/WriteMultiphaseQuantitiesSimulationObserver.cpp index 820c84855c66c695423beec09d1ccfa3953dc4e9..2bf1ac28d3dc1dad3520d023e7bd96f6b6a2372b 100644 --- a/src/cpu/MultiphaseFlow/SimulationObservers/WriteMultiphaseQuantitiesSimulationObserver.cpp +++ b/src/cpu/MultiphaseFlow/SimulationObservers/WriteMultiphaseQuantitiesSimulationObserver.cpp @@ -229,19 +229,19 @@ void WriteMultiphaseQuantitiesSimulationObserver::addDataMQ(SPtr<Block3D> block) for (int ix2 = minX2; ix2 < maxX2; ix2++) { for (int ix1 = minX1; ix1 < maxX1; ix1++) { if (!bcArray->isUndefined(ix1, ix2, ix3) && !bcArray->isSolid(ix1, ix2, ix3)) { - distributionsH->getDistribution(f, ix1, ix2, ix3); + distributionsH->getPreCollisionDistribution(f, ix1, ix2, ix3); (*phaseField)(ix1, ix2, ix3) = - ((f[DIR_PPP] + f[DIR_MMM]) + (f[DIR_PMP] + f[DIR_MPM])) + ((f[DIR_PMM] + f[DIR_MPP]) + (f[DIR_MMP] + f[DIR_PPM])) + - (((f[DIR_PP0] + f[DIR_MM0]) + (f[DIR_PM0] + f[DIR_MP0])) + ((f[DIR_P0P] + f[DIR_M0M]) + (f[DIR_P0M] + f[DIR_M0P])) + - ((f[DIR_0PM] + f[DIR_0MP]) + (f[DIR_0PP] + f[DIR_0MM]))) + - ((f[DIR_P00] + f[DIR_M00]) + (f[DIR_0P0] + f[DIR_0M0]) + (f[DIR_00P] + f[DIR_00M])) + f[DIR_000]; + ((f[dPPP] + f[dMMM]) + (f[dPMP] + f[dMPM])) + ((f[dPMM] + f[dMPP]) + (f[dMMP] + f[dPPM])) + + (((f[dPP0] + f[dMM0]) + (f[dPM0] + f[dMP0])) + ((f[dP0P] + f[dM0M]) + (f[dP0M] + f[dM0P])) + + ((f[d0PM] + f[d0MP]) + (f[d0PP] + f[d0MM]))) + + ((f[dP00] + f[dM00]) + (f[d0P0] + f[d0M0]) + (f[d00P] + f[d00M])) + f[d000]; if (distributionsH2) { - distributionsH2->getDistribution(f, ix1, ix2, ix3); + distributionsH2->getPreCollisionDistribution(f, ix1, ix2, ix3); (*phaseField2)(ix1, ix2, ix3) = - ((f[DIR_PPP] + f[DIR_MMM]) + (f[DIR_PMP] + f[DIR_MPM])) + ((f[DIR_PMM] + f[DIR_MPP]) + (f[DIR_MMP] + f[DIR_PPM])) + - (((f[DIR_PP0] + f[DIR_MM0]) + (f[DIR_PM0] + f[DIR_MP0])) + ((f[DIR_P0P] + f[DIR_M0M]) + (f[DIR_P0M] + f[DIR_M0P])) + - ((f[DIR_0PM] + f[DIR_0MP]) + (f[DIR_0PP] + f[DIR_0MM]))) + - ((f[DIR_P00] + f[DIR_M00]) + (f[DIR_0P0] + f[DIR_0M0]) + (f[DIR_00P] + f[DIR_00M])) + f[DIR_000]; + ((f[dPPP] + f[dMMM]) + (f[dPMP] + f[dMPM])) + ((f[dPMM] + f[dMPP]) + (f[dMMP] + f[dPPM])) + + (((f[dPP0] + f[dMM0]) + (f[dPM0] + f[dMP0])) + ((f[dP0P] + f[dM0M]) + (f[dP0M] + f[dM0P])) + + ((f[d0PM] + f[d0MP]) + (f[d0PP] + f[d0MM]))) + + ((f[dP00] + f[dM00]) + (f[d0P0] + f[d0M0]) + (f[d00P] + f[d00M])) + f[d000]; } else { (*phaseField2)(ix1, ix2, ix3) = 999.0; } @@ -279,8 +279,8 @@ void WriteMultiphaseQuantitiesSimulationObserver::addDataMQ(SPtr<Block3D> block) nodes.push_back(UbTupleFloat3(float(worldCoordinates[0]), float(worldCoordinates[1]), float(worldCoordinates[2]))); - phi[DIR_000] = (*phaseField)(ix1, ix2, ix3); - phi2[DIR_000] = (*phaseField2)(ix1, ix2, ix3); + phi[d000] = (*phaseField)(ix1, ix2, ix3); + phi2[d000] = (*phaseField2)(ix1, ix2, ix3); if ((ix1 == 0) || (ix2 == 0) || (ix3 == 0)) { dX1_phi = 0.0; @@ -291,38 +291,38 @@ void WriteMultiphaseQuantitiesSimulationObserver::addDataMQ(SPtr<Block3D> block) // vx2 = 0.0; // vx3 = 0.0; } else { - phi[DIR_P00] = (*phaseField)(ix1 + DX1[DIR_P00], ix2 + DX2[DIR_P00], ix3 + DX3[DIR_P00]); - phi[DIR_0P0] = (*phaseField)(ix1 + DX1[DIR_0P0], ix2 + DX2[DIR_0P0], ix3 + DX3[DIR_0P0]); - phi[DIR_00P] = (*phaseField)(ix1 + DX1[DIR_00P], ix2 + DX2[DIR_00P], ix3 + DX3[DIR_00P]); - phi[DIR_M00] = (*phaseField)(ix1 + DX1[DIR_M00], ix2 + DX2[DIR_M00], ix3 + DX3[DIR_M00]); - phi[DIR_0M0] = (*phaseField)(ix1 + DX1[DIR_0M0], ix2 + DX2[DIR_0M0], ix3 + DX3[DIR_0M0]); - phi[DIR_00M] = (*phaseField)(ix1 + DX1[DIR_00M], ix2 + DX2[DIR_00M], ix3 + DX3[DIR_00M]); - phi[DIR_PP0] = (*phaseField)(ix1 + DX1[DIR_PP0], ix2 + DX2[DIR_PP0], ix3 + DX3[DIR_PP0]); - phi[DIR_MP0] = (*phaseField)(ix1 + DX1[DIR_MP0], ix2 + DX2[DIR_MP0], ix3 + DX3[DIR_MP0]); - phi[DIR_P0P] = (*phaseField)(ix1 + DX1[DIR_P0P], ix2 + DX2[DIR_P0P], ix3 + DX3[DIR_P0P]); - phi[DIR_M0P] = (*phaseField)(ix1 + DX1[DIR_M0P], ix2 + DX2[DIR_M0P], ix3 + DX3[DIR_M0P]); - phi[DIR_0PP] = (*phaseField)(ix1 + DX1[DIR_0PP], ix2 + DX2[DIR_0PP], ix3 + DX3[DIR_0PP]); - phi[DIR_0MP] = (*phaseField)(ix1 + DX1[DIR_0MP], ix2 + DX2[DIR_0MP], ix3 + DX3[DIR_0MP]); - phi[DIR_MM0] = (*phaseField)(ix1 + DX1[DIR_MM0], ix2 + DX2[DIR_MM0], ix3 + DX3[DIR_MM0]); - phi[DIR_PM0] = (*phaseField)(ix1 + DX1[DIR_PM0], ix2 + DX2[DIR_PM0], ix3 + DX3[DIR_PM0]); - phi[DIR_M0M] = (*phaseField)(ix1 + DX1[DIR_M0M], ix2 + DX2[DIR_M0M], ix3 + DX3[DIR_M0M]); - phi[DIR_P0M] = (*phaseField)(ix1 + DX1[DIR_P0M], ix2 + DX2[DIR_P0M], ix3 + DX3[DIR_P0M]); - phi[DIR_0MM] = (*phaseField)(ix1 + DX1[DIR_0MM], ix2 + DX2[DIR_0MM], ix3 + DX3[DIR_0MM]); - phi[DIR_0PM] = (*phaseField)(ix1 + DX1[DIR_0PM], ix2 + DX2[DIR_0PM], ix3 + DX3[DIR_0PM]); - phi[DIR_MMM] = (*phaseField)(ix1 + DX1[DIR_MMM], ix2 + DX2[DIR_MMM], ix3 + DX3[DIR_MMM]); - phi[DIR_PMM] = (*phaseField)(ix1 + DX1[DIR_PMM], ix2 + DX2[DIR_PMM], ix3 + DX3[DIR_PMM]); - phi[DIR_MPM] = (*phaseField)(ix1 + DX1[DIR_MPM], ix2 + DX2[DIR_MPM], ix3 + DX3[DIR_MPM]); - phi[DIR_PPM] = (*phaseField)(ix1 + DX1[DIR_PPM], ix2 + DX2[DIR_PPM], ix3 + DX3[DIR_PPM]); - phi[DIR_PPP] = (*phaseField)(ix1 + DX1[DIR_PPP], ix2 + DX2[DIR_PPP], ix3 + DX3[DIR_PPP]); - phi[DIR_MPP] = (*phaseField)(ix1 + DX1[DIR_MPP], ix2 + DX2[DIR_MPP], ix3 + DX3[DIR_MPP]); - phi[DIR_PMP] = (*phaseField)(ix1 + DX1[DIR_PMP], ix2 + DX2[DIR_PMP], ix3 + DX3[DIR_PMP]); - phi[DIR_MMP] = (*phaseField)(ix1 + DX1[DIR_MMP], ix2 + DX2[DIR_MMP], ix3 + DX3[DIR_MMP]); + phi[dP00] = (*phaseField)(ix1 + DX1[dP00], ix2 + DX2[dP00], ix3 + DX3[dP00]); + phi[d0P0] = (*phaseField)(ix1 + DX1[d0P0], ix2 + DX2[d0P0], ix3 + DX3[d0P0]); + phi[d00P] = (*phaseField)(ix1 + DX1[d00P], ix2 + DX2[d00P], ix3 + DX3[d00P]); + phi[dM00] = (*phaseField)(ix1 + DX1[dM00], ix2 + DX2[dM00], ix3 + DX3[dM00]); + phi[d0M0] = (*phaseField)(ix1 + DX1[d0M0], ix2 + DX2[d0M0], ix3 + DX3[d0M0]); + phi[d00M] = (*phaseField)(ix1 + DX1[d00M], ix2 + DX2[d00M], ix3 + DX3[d00M]); + phi[dPP0] = (*phaseField)(ix1 + DX1[dPP0], ix2 + DX2[dPP0], ix3 + DX3[dPP0]); + phi[dMP0] = (*phaseField)(ix1 + DX1[dMP0], ix2 + DX2[dMP0], ix3 + DX3[dMP0]); + phi[dP0P] = (*phaseField)(ix1 + DX1[dP0P], ix2 + DX2[dP0P], ix3 + DX3[dP0P]); + phi[dM0P] = (*phaseField)(ix1 + DX1[dM0P], ix2 + DX2[dM0P], ix3 + DX3[dM0P]); + phi[d0PP] = (*phaseField)(ix1 + DX1[d0PP], ix2 + DX2[d0PP], ix3 + DX3[d0PP]); + phi[d0MP] = (*phaseField)(ix1 + DX1[d0MP], ix2 + DX2[d0MP], ix3 + DX3[d0MP]); + phi[dMM0] = (*phaseField)(ix1 + DX1[dMM0], ix2 + DX2[dMM0], ix3 + DX3[dMM0]); + phi[dPM0] = (*phaseField)(ix1 + DX1[dPM0], ix2 + DX2[dPM0], ix3 + DX3[dPM0]); + phi[dM0M] = (*phaseField)(ix1 + DX1[dM0M], ix2 + DX2[dM0M], ix3 + DX3[dM0M]); + phi[dP0M] = (*phaseField)(ix1 + DX1[dP0M], ix2 + DX2[dP0M], ix3 + DX3[dP0M]); + phi[d0MM] = (*phaseField)(ix1 + DX1[d0MM], ix2 + DX2[d0MM], ix3 + DX3[d0MM]); + phi[d0PM] = (*phaseField)(ix1 + DX1[d0PM], ix2 + DX2[d0PM], ix3 + DX3[d0PM]); + phi[dMMM] = (*phaseField)(ix1 + DX1[dMMM], ix2 + DX2[dMMM], ix3 + DX3[dMMM]); + phi[dPMM] = (*phaseField)(ix1 + DX1[dPMM], ix2 + DX2[dPMM], ix3 + DX3[dPMM]); + phi[dMPM] = (*phaseField)(ix1 + DX1[dMPM], ix2 + DX2[dMPM], ix3 + DX3[dMPM]); + phi[dPPM] = (*phaseField)(ix1 + DX1[dPPM], ix2 + DX2[dPPM], ix3 + DX3[dPPM]); + phi[dPPP] = (*phaseField)(ix1 + DX1[dPPP], ix2 + DX2[dPPP], ix3 + DX3[dPPP]); + phi[dMPP] = (*phaseField)(ix1 + DX1[dMPP], ix2 + DX2[dMPP], ix3 + DX3[dMPP]); + phi[dPMP] = (*phaseField)(ix1 + DX1[dPMP], ix2 + DX2[dPMP], ix3 + DX3[dPMP]); + phi[dMMP] = (*phaseField)(ix1 + DX1[dMMP], ix2 + DX2[dMMP], ix3 + DX3[dMMP]); dX1_phi = 0.0 * gradX1_phi(phi); dX2_phi = 0.0 * gradX2_phi(phi); dX3_phi = 0.0 * gradX3_phi(phi); - mu = 2 * beta * phi[DIR_000] * (phi[DIR_000] - 1) * (2 * phi[DIR_000] - 1) - kappa * nabla2_phi(phi); + mu = 2 * beta * phi[d000] * (phi[d000] - 1) * (2 * phi[d000] - 1) - kappa * nabla2_phi(phi); - //phi2[DIR_P00] = (*phaseField2)(ix1 + DX1[DIR_P00], ix2 + DX2[DIR_P00], ix3 + DX3[DIR_P00]); + //phi2[dP00] = (*phaseField2)(ix1 + DX1[dP00], ix2 + DX2[dP00], ix3 + DX3[dP00]); //phi2[N] = (*phaseField2)(ix1 + DX1[N], ix2 + DX2[N], ix3 + DX3[N]); //phi2[T] = (*phaseField2)(ix1 + DX1[T], ix2 + DX2[T], ix3 + DX3[T]); //phi2[W] = (*phaseField2)(ix1 + DX1[W], ix2 + DX2[W], ix3 + DX3[W]); @@ -355,7 +355,7 @@ void WriteMultiphaseQuantitiesSimulationObserver::addDataMQ(SPtr<Block3D> block) } - distributionsF->getDistribution(f, ix1, ix2, ix3); + distributionsF->getPreCollisionDistribution(f, ix1, ix2, ix3); //real dU = (*divU)(ix1, ix2, ix3); real rhoH = 1.0; @@ -364,47 +364,47 @@ void WriteMultiphaseQuantitiesSimulationObserver::addDataMQ(SPtr<Block3D> block) real rhoToPhi = (rhoH - rhoL) / (phiH - phiL); // rho = phi[ZERO] + (1.0 - phi[ZERO])*1.0/densityRatio; - rho = rhoH + rhoToPhi * (phi[DIR_000] - phiH); + rho = rhoH + rhoToPhi * (phi[d000] - phiH); if (pressure) { vx1 = - ((((f[DIR_PPP] - f[DIR_MMM]) + (f[DIR_PMP] - f[DIR_MPM])) + ((f[DIR_PMM] - f[DIR_MPP]) + (f[DIR_PPM] - f[DIR_MMP]))) + - (((f[DIR_P0M] - f[DIR_M0P]) + (f[DIR_P0P] - f[DIR_M0M])) + ((f[DIR_PM0] - f[DIR_MP0]) + (f[DIR_PP0] - f[DIR_MM0]))) + (f[DIR_P00] - f[DIR_M00])) ; + ((((f[dPPP] - f[dMMM]) + (f[dPMP] - f[dMPM])) + ((f[dPMM] - f[dMPP]) + (f[dPPM] - f[dMMP]))) + + (((f[dP0M] - f[dM0P]) + (f[dP0P] - f[dM0M])) + ((f[dPM0] - f[dMP0]) + (f[dPP0] - f[dMM0]))) + (f[dP00] - f[dM00])) ; vx2 = - ((((f[DIR_PPP] - f[DIR_MMM]) + (f[DIR_MPM] - f[DIR_PMP])) + ((f[DIR_MPP] - f[DIR_PMM]) + (f[DIR_PPM] - f[DIR_MMP]))) + - (((f[DIR_0PM] - f[DIR_0MP]) + (f[DIR_0PP] - f[DIR_0MM])) + ((f[DIR_MP0] - f[DIR_PM0]) + (f[DIR_PP0] - f[DIR_MM0]))) + (f[DIR_0P0] - f[DIR_0M0])) ; + ((((f[dPPP] - f[dMMM]) + (f[dMPM] - f[dPMP])) + ((f[dMPP] - f[dPMM]) + (f[dPPM] - f[dMMP]))) + + (((f[d0PM] - f[d0MP]) + (f[d0PP] - f[d0MM])) + ((f[dMP0] - f[dPM0]) + (f[dPP0] - f[dMM0]))) + (f[d0P0] - f[d0M0])) ; vx3 = - ((((f[DIR_PPP] - f[DIR_MMM]) + (f[DIR_PMP] - f[DIR_MPM])) + ((f[DIR_MPP] - f[DIR_PMM]) + (f[DIR_MMP] - f[DIR_PPM]))) + - (((f[DIR_0MP] - f[DIR_0PM]) + (f[DIR_0PP] - f[DIR_0MM])) + ((f[DIR_M0P] - f[DIR_P0M]) + (f[DIR_P0P] - f[DIR_M0M]))) + (f[DIR_00P] - f[DIR_00M])); + ((((f[dPPP] - f[dMMM]) + (f[dPMP] - f[dMPM])) + ((f[dMPP] - f[dPMM]) + (f[dMMP] - f[dPPM]))) + + (((f[d0MP] - f[d0PM]) + (f[d0PP] - f[d0MM])) + ((f[dM0P] - f[dP0M]) + (f[dP0P] - f[dM0M]))) + (f[d00P] - f[d00M])); } else { vx1 = - ((((f[DIR_PPP] - f[DIR_MMM]) + (f[DIR_PMP] - f[DIR_MPM])) + ((f[DIR_PMM] - f[DIR_MPP]) + (f[DIR_PPM] - f[DIR_MMP]))) + - (((f[DIR_P0M] - f[DIR_M0P]) + (f[DIR_P0P] - f[DIR_M0M])) + ((f[DIR_PM0] - f[DIR_MP0]) + (f[DIR_PP0] - f[DIR_MM0]))) + (f[DIR_P00] - f[DIR_M00])) / + ((((f[dPPP] - f[dMMM]) + (f[dPMP] - f[dMPM])) + ((f[dPMM] - f[dMPP]) + (f[dPPM] - f[dMMP]))) + + (((f[dP0M] - f[dM0P]) + (f[dP0P] - f[dM0M])) + ((f[dPM0] - f[dMP0]) + (f[dPP0] - f[dMM0]))) + (f[dP00] - f[dM00])) / (rho * c1o3) + mu * dX1_phi / (2 * rho); vx2 = - ((((f[DIR_PPP] - f[DIR_MMM]) + (f[DIR_MPM] - f[DIR_PMP])) + ((f[DIR_MPP] - f[DIR_PMM]) + (f[DIR_PPM] - f[DIR_MMP]))) + - (((f[DIR_0PM] - f[DIR_0MP]) + (f[DIR_0PP] - f[DIR_0MM])) + ((f[DIR_MP0] - f[DIR_PM0]) + (f[DIR_PP0] - f[DIR_MM0]))) + (f[DIR_0P0] - f[DIR_0M0])) / + ((((f[dPPP] - f[dMMM]) + (f[dMPM] - f[dPMP])) + ((f[dMPP] - f[dPMM]) + (f[dPPM] - f[dMMP]))) + + (((f[d0PM] - f[d0MP]) + (f[d0PP] - f[d0MM])) + ((f[dMP0] - f[dPM0]) + (f[dPP0] - f[dMM0]))) + (f[d0P0] - f[d0M0])) / (rho * c1o3) + mu * dX2_phi / (2 * rho); vx3 = - ((((f[DIR_PPP] - f[DIR_MMM]) + (f[DIR_PMP] - f[DIR_MPM])) + ((f[DIR_MPP] - f[DIR_PMM]) + (f[DIR_MMP] - f[DIR_PPM]))) + - (((f[DIR_0MP] - f[DIR_0PM]) + (f[DIR_0PP] - f[DIR_0MM])) + ((f[DIR_M0P] - f[DIR_P0M]) + (f[DIR_P0P] - f[DIR_M0M]))) + (f[DIR_00P] - f[DIR_00M])) / + ((((f[dPPP] - f[dMMM]) + (f[dPMP] - f[dMPM])) + ((f[dMPP] - f[dPMM]) + (f[dMMP] - f[dPPM]))) + + (((f[d0MP] - f[d0PM]) + (f[d0PP] - f[d0MM])) + ((f[dM0P] - f[dP0M]) + (f[dP0P] - f[dM0M]))) + (f[d00P] - f[d00M])) / (rho * c1o3) + mu * dX3_phi / (2 * rho); } - p1 = (((f[DIR_PPP] + f[DIR_MMM]) + (f[DIR_PMP] + f[DIR_MPM])) + ((f[DIR_PMM] + f[DIR_MPP]) + (f[DIR_MMP] + f[DIR_PPM])) + - (((f[DIR_PP0] + f[DIR_MM0]) + (f[DIR_PM0] + f[DIR_MP0])) + ((f[DIR_P0P] + f[DIR_M0M]) + (f[DIR_P0M] + f[DIR_M0P])) + - ((f[DIR_0PM] + f[DIR_0MP]) + (f[DIR_0PP] + f[DIR_0MM]))) + - ((f[DIR_P00] + f[DIR_M00]) + (f[DIR_0P0] + f[DIR_0M0]) + (f[DIR_00P] + f[DIR_00M])) + f[DIR_000]) + + p1 = (((f[dPPP] + f[dMMM]) + (f[dPMP] + f[dMPM])) + ((f[dPMM] + f[dMPP]) + (f[dMMP] + f[dPPM])) + + (((f[dPP0] + f[dMM0]) + (f[dPM0] + f[dMP0])) + ((f[dP0P] + f[dM0M]) + (f[dP0M] + f[dM0P])) + + ((f[d0PM] + f[d0MP]) + (f[d0PP] + f[d0MM]))) + + ((f[dP00] + f[dM00]) + (f[d0P0] + f[d0M0]) + (f[d00P] + f[d00M])) + f[d000]) + (vx1 * rhoToPhi * dX1_phi * c1o3 + vx2 * rhoToPhi * dX2_phi * c1o3 + vx3 * rhoToPhi * dX3_phi * c1o3) / 2.0; @@ -432,7 +432,7 @@ void WriteMultiphaseQuantitiesSimulationObserver::addDataMQ(SPtr<Block3D> block) block->toString() + ", node=" + UbSystem::toString(ix1) + "," + UbSystem::toString(ix2) + "," + UbSystem::toString(ix3))); - if (UbMath::isNaN(phi[DIR_000]) || UbMath::isInfinity(phi[DIR_000])) + if (UbMath::isNaN(phi[d000]) || UbMath::isInfinity(phi[d000])) UB_THROW(UbException( UB_EXARGS, "phi is not a number (nan or -1.#IND) or infinity number -1.#INF in block=" + block->toString() + ", node=" + UbSystem::toString(ix1) + "," + @@ -442,12 +442,12 @@ void WriteMultiphaseQuantitiesSimulationObserver::addDataMQ(SPtr<Block3D> block) UB_THROW( UbException(UB_EXARGS,"p1 is not a number (nan or -1.#IND) or infinity number -1.#INF in block="+block->toString()+ ", node="+UbSystem::toString(ix1)+","+UbSystem::toString(ix2)+","+UbSystem::toString(ix3))); - data[index++].push_back(phi[DIR_000]); + data[index++].push_back(phi[d000]); data[index++].push_back(vx1); data[index++].push_back(vx2); data[index++].push_back(vx3); data[index++].push_back(p1); - data[index++].push_back(phi2[DIR_000]); + data[index++].push_back(phi2[d000]); if (pressure) data[index++].push_back((*pressure)(ix1, ix2, ix3)); } } @@ -510,7 +510,7 @@ real WriteMultiphaseQuantitiesSimulationObserver::nabla2_phi(const real *const & using namespace D3Q27System; real sum = 0.0; for (int k = FSTARTDIR; k <= FENDDIR; k++) { - sum += WEIGTH[k] * (h[k] - h[DIR_000]); + sum += WEIGTH[k] * (h[k] - h[d000]); } return 6.0 * sum; } \ No newline at end of file diff --git a/src/cpu/MultiphaseFlow/SimulationObservers/WriteSharpInterfaceQuantitiesSimulationObserver.cpp b/src/cpu/MultiphaseFlow/SimulationObservers/WriteSharpInterfaceQuantitiesSimulationObserver.cpp index 7a0ae87b6cb3674557af510089548d7352913cc6..9e2fd5433c3f30649abd46ef00ffa8a92d0b20ba 100644 --- a/src/cpu/MultiphaseFlow/SimulationObservers/WriteSharpInterfaceQuantitiesSimulationObserver.cpp +++ b/src/cpu/MultiphaseFlow/SimulationObservers/WriteSharpInterfaceQuantitiesSimulationObserver.cpp @@ -218,12 +218,12 @@ void WriteSharpInterfaceQuantitiesSimulationObserver::addDataMQ(SPtr<Block3D> bl for (int ix2 = minX2; ix2 < maxX2; ix2++) { for (int ix1 = minX1; ix1 < maxX1; ix1++) { if (!bcArray->isUndefined(ix1, ix2, ix3) && !bcArray->isSolid(ix1, ix2, ix3)) { - distributionsH->getDistributionInv(f, ix1, ix2, ix3); + distributionsH->getPostCollisionDistribution(f, ix1, ix2, ix3); (*phaseField)(ix1, ix2, ix3) = - ((f[DIR_PPP] + f[DIR_MMM]) + (f[DIR_PMP] + f[DIR_MPM])) + ((f[DIR_PMM] + f[DIR_MPP]) + (f[DIR_MMP] + f[DIR_PPM])) + - (((f[DIR_PP0] + f[DIR_MM0]) + (f[DIR_PM0] + f[DIR_MP0])) + ((f[DIR_P0P] + f[DIR_M0M]) + (f[DIR_P0M] + f[DIR_M0P])) + - ((f[DIR_0PM] + f[DIR_0MP]) + (f[DIR_0PP] + f[DIR_0MM]))) + - ((f[DIR_P00] + f[DIR_M00]) + (f[DIR_0P0] + f[DIR_0M0]) + (f[DIR_00P] + f[DIR_00M])) + f[DIR_000]; + ((f[dPPP] + f[dMMM]) + (f[dPMP] + f[dMPM])) + ((f[dPMM] + f[dMPP]) + (f[dMMP] + f[dPPM])) + + (((f[dPP0] + f[dMM0]) + (f[dPM0] + f[dMP0])) + ((f[dP0P] + f[dM0M]) + (f[dP0M] + f[dM0P])) + + ((f[d0PM] + f[d0MP]) + (f[d0PP] + f[d0MM]))) + + ((f[dP00] + f[dM00]) + (f[d0P0] + f[d0M0]) + (f[d00P] + f[d00M])) + f[d000]; } } } @@ -261,7 +261,7 @@ void WriteSharpInterfaceQuantitiesSimulationObserver::addDataMQ(SPtr<Block3D> bl phi = (*phaseField)(ix1, ix2, ix3); - distributionsF->getDistributionInv(f, ix1, ix2, ix3); + distributionsF->getPostCollisionDistribution(f, ix1, ix2, ix3); //real dU = (*divU)(ix1, ix2, ix3); real rhoH = 1.0; @@ -275,23 +275,23 @@ void WriteSharpInterfaceQuantitiesSimulationObserver::addDataMQ(SPtr<Block3D> bl rho = (phi>c1o2) ? rhoH : rhoL; // rhoH + rhoToPhi * (phi - phiH); vx1 = - ((((f[DIR_PPP] - f[DIR_MMM]) + (f[DIR_PMP] - f[DIR_MPM])) + ((f[DIR_PMM] - f[DIR_MPP]) + (f[DIR_PPM] - f[DIR_MMP]))) + - (((f[DIR_P0M] - f[DIR_M0P]) + (f[DIR_P0P] - f[DIR_M0M])) + ((f[DIR_PM0] - f[DIR_MP0]) + (f[DIR_PP0] - f[DIR_MM0]))) + (f[DIR_P00] - f[DIR_M00])) ; + ((((f[dPPP] - f[dMMM]) + (f[dPMP] - f[dMPM])) + ((f[dPMM] - f[dMPP]) + (f[dPPM] - f[dMMP]))) + + (((f[dP0M] - f[dM0P]) + (f[dP0P] - f[dM0M])) + ((f[dPM0] - f[dMP0]) + (f[dPP0] - f[dMM0]))) + (f[dP00] - f[dM00])) ; vx2 = - ((((f[DIR_PPP] - f[DIR_MMM]) + (f[DIR_MPM] - f[DIR_PMP])) + ((f[DIR_MPP] - f[DIR_PMM]) + (f[DIR_PPM] - f[DIR_MMP]))) + - (((f[DIR_0PM] - f[DIR_0MP]) + (f[DIR_0PP] - f[DIR_0MM])) + ((f[DIR_MP0] - f[DIR_PM0]) + (f[DIR_PP0] - f[DIR_MM0]))) + (f[DIR_0P0] - f[DIR_0M0])) ; + ((((f[dPPP] - f[dMMM]) + (f[dMPM] - f[dPMP])) + ((f[dMPP] - f[dPMM]) + (f[dPPM] - f[dMMP]))) + + (((f[d0PM] - f[d0MP]) + (f[d0PP] - f[d0MM])) + ((f[dMP0] - f[dPM0]) + (f[dPP0] - f[dMM0]))) + (f[d0P0] - f[d0M0])) ; vx3 = - ((((f[DIR_PPP] - f[DIR_MMM]) + (f[DIR_PMP] - f[DIR_MPM])) + ((f[DIR_MPP] - f[DIR_PMM]) + (f[DIR_MMP] - f[DIR_PPM]))) + - (((f[DIR_0MP] - f[DIR_0PM]) + (f[DIR_0PP] - f[DIR_0MM])) + ((f[DIR_M0P] - f[DIR_P0M]) + (f[DIR_P0P] - f[DIR_M0M]))) + (f[DIR_00P] - f[DIR_00M])); + ((((f[dPPP] - f[dMMM]) + (f[dPMP] - f[dMPM])) + ((f[dMPP] - f[dPMM]) + (f[dMMP] - f[dPPM]))) + + (((f[d0MP] - f[d0PM]) + (f[d0PP] - f[d0MM])) + ((f[dM0P] - f[dP0M]) + (f[dP0P] - f[dM0M]))) + (f[d00P] - f[d00M])); - pressure = (((f[DIR_PPP] + f[DIR_MMM]) + (f[DIR_PMP] + f[DIR_MPM])) + ((f[DIR_PMM] + f[DIR_MPP]) + (f[DIR_MMP] + f[DIR_PPM])) + - (((f[DIR_PP0] + f[DIR_MM0]) + (f[DIR_PM0] + f[DIR_MP0])) + ((f[DIR_P0P] + f[DIR_M0M]) + (f[DIR_P0M] + f[DIR_M0P])) + - ((f[DIR_0PM] + f[DIR_0MP]) + (f[DIR_0PP] + f[DIR_0MM]))) + - ((f[DIR_P00] + f[DIR_M00]) + (f[DIR_0P0] + f[DIR_0M0]) + (f[DIR_00P] + f[DIR_00M])) + f[DIR_000])*c1o3*rho; + pressure = (((f[dPPP] + f[dMMM]) + (f[dPMP] + f[dMPM])) + ((f[dPMM] + f[dMPP]) + (f[dMMP] + f[dPPM])) + + (((f[dPP0] + f[dMM0]) + (f[dPM0] + f[dMP0])) + ((f[dP0P] + f[dM0M]) + (f[dP0M] + f[dM0P])) + + ((f[d0PM] + f[d0MP]) + (f[d0PP] + f[d0MM]))) + + ((f[dP00] + f[dM00]) + (f[d0P0] + f[d0M0]) + (f[d00P] + f[d00M])) + f[d000])*c1o3*rho; if (UbMath::isNaN(vx1) || UbMath::isInfinity(vx1)) UB_THROW(UbException( @@ -338,7 +338,7 @@ void WriteSharpInterfaceQuantitiesSimulationObserver::addDataMQ(SPtr<Block3D> bl data[index++].push_back(vx2); data[index++].push_back(vx3); //data[index++].push_back(p1); - //data[index++].push_back(phi2[DIR_000]); + //data[index++].push_back(phi2[d000]); //data[index++].push_back(mp); //data[index++].push_back(delmp); data[index++].push_back(pressure); @@ -410,7 +410,7 @@ real WriteSharpInterfaceQuantitiesSimulationObserver::nabla2_phi(const real *con using namespace vf::basics::constant; real sum = c0o1; for (int k = FSTARTDIR; k <= FENDDIR; k++) { - sum += WEIGTH[k] * (h[k] - h[DIR_000]); + sum += WEIGTH[k] * (h[k] - h[d000]); } return 6.0 * sum; } \ No newline at end of file diff --git a/src/cpu/MultiphaseFlow/Visitors/MultiphaseInitDistributionsBlockVisitor.cpp b/src/cpu/MultiphaseFlow/Visitors/MultiphaseInitDistributionsBlockVisitor.cpp index ded01d95428ce53dc09f1371961d68ee1b005c00..54ee28571ebf76ca96d3d79cbb49417654517a8c 100644 --- a/src/cpu/MultiphaseFlow/Visitors/MultiphaseInitDistributionsBlockVisitor.cpp +++ b/src/cpu/MultiphaseFlow/Visitors/MultiphaseInitDistributionsBlockVisitor.cpp @@ -222,106 +222,106 @@ void MultiphaseInitDistributionsBlockVisitor::visit(const SPtr<Grid3D> grid, SPt feq[dir] = rho*WEIGTH[dir]*(1 + 3*velProd + 4.5*velSq1 - 1.5*(vx1Sq+vx2Sq+vx3Sq)); //geq[dir] = p1*WEIGTH[dir] + gamma; - //geq[dir] = p1*WEIGTH[dir]/(rho*UbMath::c1o3) + gamma*rho; - //geq[dir] = (p1*WEIGTH[dir]/(rho*UbMath::c1o3) + gamma*rho)*UbMath::c1o3; + //geq[dir] = p1*WEIGTH[dir]/(rho*vf::basics::constant::c1o3) + gamma*rho; + //geq[dir] = (p1*WEIGTH[dir]/(rho*vf::basics::constant::c1o3) + gamma*rho)*vf::basics::constant::c1o3; geq[dir] = (gamma*rho)* vf::basics::constant::c1o3; } - f[DIR_P00] = geq[DIR_P00] ; - f[DIR_M00] = geq[DIR_M00] ; - f[DIR_0P0] = geq[DIR_0P0] ; - f[DIR_0M0] = geq[DIR_0M0] ; - f[DIR_00P] = geq[DIR_00P] ; - f[DIR_00M] = geq[DIR_00M] ; - f[DIR_PP0] = geq[DIR_PP0] ; - f[DIR_MM0] = geq[DIR_MM0] ; - f[DIR_PM0] = geq[DIR_PM0] ; - f[DIR_MP0] = geq[DIR_MP0] ; - f[DIR_P0P] = geq[DIR_P0P] ; - f[DIR_M0M] = geq[DIR_M0M] ; - f[DIR_P0M] = geq[DIR_P0M] ; - f[DIR_M0P] = geq[DIR_M0P] ; - f[DIR_0PP] = geq[DIR_0PP] ; - f[DIR_0MM] = geq[DIR_0MM] ; - f[DIR_0PM] = geq[DIR_0PM] ; - f[DIR_0MP] = geq[DIR_0MP] ; - f[DIR_PPP] = geq[DIR_PPP] ; - f[DIR_MPP] = geq[DIR_MPP] ; - f[DIR_PMP] = geq[DIR_PMP] ; - f[DIR_MMP] = geq[DIR_MMP] ; - f[DIR_PPM] = geq[DIR_PPM] ; - f[DIR_MPM] = geq[DIR_MPM] ; - f[DIR_PMM] = geq[DIR_PMM] ; - f[DIR_MMM] = geq[DIR_MMM] ; - f[DIR_000] = geq[DIR_000] ; + f[dP00] = geq[dP00] ; + f[dM00] = geq[dM00] ; + f[d0P0] = geq[d0P0] ; + f[d0M0] = geq[d0M0] ; + f[d00P] = geq[d00P] ; + f[d00M] = geq[d00M] ; + f[dPP0] = geq[dPP0] ; + f[dMM0] = geq[dMM0] ; + f[dPM0] = geq[dPM0] ; + f[dMP0] = geq[dMP0] ; + f[dP0P] = geq[dP0P] ; + f[dM0M] = geq[dM0M] ; + f[dP0M] = geq[dP0M] ; + f[dM0P] = geq[dM0P] ; + f[d0PP] = geq[d0PP] ; + f[d0MM] = geq[d0MM] ; + f[d0PM] = geq[d0PM] ; + f[d0MP] = geq[d0MP] ; + f[dPPP] = geq[dPPP] ; + f[dMPP] = geq[dMPP] ; + f[dPMP] = geq[dPMP] ; + f[dMMP] = geq[dMMP] ; + f[dPPM] = geq[dPPM] ; + f[dMPM] = geq[dMPM] ; + f[dPMM] = geq[dPMM] ; + f[dMMM] = geq[dMMM] ; + f[d000] = geq[d000] ; - distributionsF->setDistribution(f, ix1, ix2, ix3); - distributionsF->setDistributionInv(f, ix1, ix2, ix3); + distributionsF->setPostCollisionDistribution(f, ix1, ix2, ix3); + distributionsF->setPreCollisionDistribution(f, ix1, ix2, ix3); - f[DIR_P00] = phi * feq[DIR_P00] / rho; - f[DIR_M00] = phi * feq[DIR_M00] / rho; - f[DIR_0P0] = phi * feq[DIR_0P0] / rho; - f[DIR_0M0] = phi * feq[DIR_0M0] / rho; - f[DIR_00P] = phi * feq[DIR_00P] / rho; - f[DIR_00M] = phi * feq[DIR_00M] / rho; - f[DIR_PP0] = phi * feq[DIR_PP0] / rho; - f[DIR_MM0] = phi * feq[DIR_MM0] / rho; - f[DIR_PM0] = phi * feq[DIR_PM0] / rho; - f[DIR_MP0] = phi * feq[DIR_MP0] / rho; - f[DIR_P0P] = phi * feq[DIR_P0P] / rho; - f[DIR_M0M] = phi * feq[DIR_M0M] / rho; - f[DIR_P0M] = phi * feq[DIR_P0M] / rho; - f[DIR_M0P] = phi * feq[DIR_M0P] / rho; - f[DIR_0PP] = phi * feq[DIR_0PP] / rho; - f[DIR_0MM] = phi * feq[DIR_0MM] / rho; - f[DIR_0PM] = phi * feq[DIR_0PM] / rho; - f[DIR_0MP] = phi * feq[DIR_0MP] / rho; - f[DIR_PPP] = phi * feq[DIR_PPP] / rho; - f[DIR_MPP] = phi * feq[DIR_MPP] / rho; - f[DIR_PMP] = phi * feq[DIR_PMP] / rho; - f[DIR_MMP] = phi * feq[DIR_MMP] / rho; - f[DIR_PPM] = phi * feq[DIR_PPM] / rho; - f[DIR_MPM] = phi * feq[DIR_MPM] / rho; - f[DIR_PMM] = phi * feq[DIR_PMM] / rho; - f[DIR_MMM] = phi * feq[DIR_MMM] / rho; - f[DIR_000] = phi * feq[DIR_000] / rho; + f[dP00] = phi * feq[dP00] / rho; + f[dM00] = phi * feq[dM00] / rho; + f[d0P0] = phi * feq[d0P0] / rho; + f[d0M0] = phi * feq[d0M0] / rho; + f[d00P] = phi * feq[d00P] / rho; + f[d00M] = phi * feq[d00M] / rho; + f[dPP0] = phi * feq[dPP0] / rho; + f[dMM0] = phi * feq[dMM0] / rho; + f[dPM0] = phi * feq[dPM0] / rho; + f[dMP0] = phi * feq[dMP0] / rho; + f[dP0P] = phi * feq[dP0P] / rho; + f[dM0M] = phi * feq[dM0M] / rho; + f[dP0M] = phi * feq[dP0M] / rho; + f[dM0P] = phi * feq[dM0P] / rho; + f[d0PP] = phi * feq[d0PP] / rho; + f[d0MM] = phi * feq[d0MM] / rho; + f[d0PM] = phi * feq[d0PM] / rho; + f[d0MP] = phi * feq[d0MP] / rho; + f[dPPP] = phi * feq[dPPP] / rho; + f[dMPP] = phi * feq[dMPP] / rho; + f[dPMP] = phi * feq[dPMP] / rho; + f[dMMP] = phi * feq[dMMP] / rho; + f[dPPM] = phi * feq[dPPM] / rho; + f[dMPM] = phi * feq[dMPM] / rho; + f[dPMM] = phi * feq[dPMM] / rho; + f[dMMM] = phi * feq[dMMM] / rho; + f[d000] = phi * feq[d000] / rho; - distributionsH->setDistribution(f, ix1, ix2, ix3); - distributionsH->setDistributionInv(f, ix1, ix2, ix3); + distributionsH->setPostCollisionDistribution(f, ix1, ix2, ix3); + distributionsH->setPreCollisionDistribution(f, ix1, ix2, ix3); if (distributionsH2) { - f[DIR_P00] = (1.-phi) * feq[DIR_P00] / rho; - f[DIR_M00] = (1.-phi) * feq[DIR_M00] / rho; - f[DIR_0P0] = (1.-phi) * feq[DIR_0P0] / rho; - f[DIR_0M0] = (1.-phi) * feq[DIR_0M0] / rho; - f[DIR_00P] = (1.-phi) * feq[DIR_00P] / rho; - f[DIR_00M] = (1.-phi) * feq[DIR_00M] / rho; - f[DIR_PP0] = (1.-phi) * feq[DIR_PP0] / rho; - f[DIR_MM0] = (1.-phi) * feq[DIR_MM0] / rho; - f[DIR_PM0] = (1.-phi) * feq[DIR_PM0] / rho; - f[DIR_MP0] = (1.-phi) * feq[DIR_MP0] / rho; - f[DIR_P0P] = (1.-phi) * feq[DIR_P0P] / rho; - f[DIR_M0M] = (1.-phi) * feq[DIR_M0M] / rho; - f[DIR_P0M] = (1.-phi) * feq[DIR_P0M] / rho; - f[DIR_M0P] = (1.-phi) * feq[DIR_M0P] / rho; - f[DIR_0PP] = (1.-phi) * feq[DIR_0PP] / rho; - f[DIR_0MM] = (1.-phi) * feq[DIR_0MM] / rho; - f[DIR_0PM] = (1.-phi) * feq[DIR_0PM] / rho; - f[DIR_0MP] = (1.-phi) * feq[DIR_0MP] / rho; - f[DIR_PPP] = (1.-phi) * feq[DIR_PPP] / rho; - f[DIR_MPP] = (1.-phi) * feq[DIR_MPP] / rho; - f[DIR_PMP] = (1.-phi) * feq[DIR_PMP] / rho; - f[DIR_MMP] = (1.-phi) * feq[DIR_MMP] / rho; - f[DIR_PPM] = (1.-phi) * feq[DIR_PPM] / rho; - f[DIR_MPM] = (1.-phi) * feq[DIR_MPM] / rho; - f[DIR_PMM] = (1.-phi) * feq[DIR_PMM] / rho; - f[DIR_MMM] = (1.-phi) * feq[DIR_MMM] / rho; - f[DIR_000] = (1.-phi) * feq[DIR_000] / rho; + f[dP00] = (1.-phi) * feq[dP00] / rho; + f[dM00] = (1.-phi) * feq[dM00] / rho; + f[d0P0] = (1.-phi) * feq[d0P0] / rho; + f[d0M0] = (1.-phi) * feq[d0M0] / rho; + f[d00P] = (1.-phi) * feq[d00P] / rho; + f[d00M] = (1.-phi) * feq[d00M] / rho; + f[dPP0] = (1.-phi) * feq[dPP0] / rho; + f[dMM0] = (1.-phi) * feq[dMM0] / rho; + f[dPM0] = (1.-phi) * feq[dPM0] / rho; + f[dMP0] = (1.-phi) * feq[dMP0] / rho; + f[dP0P] = (1.-phi) * feq[dP0P] / rho; + f[dM0M] = (1.-phi) * feq[dM0M] / rho; + f[dP0M] = (1.-phi) * feq[dP0M] / rho; + f[dM0P] = (1.-phi) * feq[dM0P] / rho; + f[d0PP] = (1.-phi) * feq[d0PP] / rho; + f[d0MM] = (1.-phi) * feq[d0MM] / rho; + f[d0PM] = (1.-phi) * feq[d0PM] / rho; + f[d0MP] = (1.-phi) * feq[d0MP] / rho; + f[dPPP] = (1.-phi) * feq[dPPP] / rho; + f[dMPP] = (1.-phi) * feq[dMPP] / rho; + f[dPMP] = (1.-phi) * feq[dPMP] / rho; + f[dMMP] = (1.-phi) * feq[dMMP] / rho; + f[dPPM] = (1.-phi) * feq[dPPM] / rho; + f[dMPM] = (1.-phi) * feq[dMPM] / rho; + f[dPMM] = (1.-phi) * feq[dPMM] / rho; + f[dMMM] = (1.-phi) * feq[dMMM] / rho; + f[d000] = (1.-phi) * feq[d000] / rho; - distributionsH2->setDistribution(f, ix1, ix2, ix3); - distributionsH2->setDistributionInv(f, ix1, ix2, ix3); + distributionsH2->setPostCollisionDistribution(f, ix1, ix2, ix3); + distributionsH2->setPreCollisionDistribution(f, ix1, ix2, ix3); } } } diff --git a/src/cpu/MultiphaseFlow/Visitors/MultiphaseVelocityFormInitDistributionsBlockVisitor.cpp b/src/cpu/MultiphaseFlow/Visitors/MultiphaseVelocityFormInitDistributionsBlockVisitor.cpp index 0aca152c1d9d326e73216a86540130dae3dd4ad0..a51bdc0234734282d3c9504fd2d52d7b11355414 100644 --- a/src/cpu/MultiphaseFlow/Visitors/MultiphaseVelocityFormInitDistributionsBlockVisitor.cpp +++ b/src/cpu/MultiphaseFlow/Visitors/MultiphaseVelocityFormInitDistributionsBlockVisitor.cpp @@ -234,107 +234,107 @@ void MultiphaseVelocityFormInitDistributionsBlockVisitor::visit(const SPtr<Grid3 //feq[dir] = rho*WEIGTH[dir]*(1 + 3*velProd + 4.5*velSq1 - 1.5*(vx1Sq+vx2Sq+vx3Sq)); feq[dir] = WEIGTH[dir] * (1 + 3 * velProd + 4.5 * velSq1 - 1.5 * (vx1Sq + vx2Sq + vx3Sq)); //geq[dir] = p1*WEIGTH1[dir] + gamma; - //geq[dir] = p1*WEIGTH[dir]/(rho*UbMath::c1o3) + gamma*rho; + //geq[dir] = p1*WEIGTH[dir]/(rho*vf::basics::constant::c1o3) + gamma*rho; geq[dir] = p1 * WEIGTH[dir] / (vf::basics::constant::c1o3) + gamma ; } - f[DIR_000] = geq[DIR_000]; - f[DIR_P00] = geq[DIR_P00]; - f[DIR_M00] = geq[DIR_M00]; - f[DIR_0P0] = geq[DIR_0P0]; - f[DIR_0M0] = geq[DIR_0M0]; - f[DIR_00P] = geq[DIR_00P]; - f[DIR_00M] = geq[DIR_00M]; - f[DIR_PP0] = geq[DIR_PP0]; - f[DIR_MM0] = geq[DIR_MM0]; - f[DIR_PM0] = geq[DIR_PM0]; - f[DIR_MP0] = geq[DIR_MP0]; - f[DIR_P0P] = geq[DIR_P0P]; - f[DIR_M0M] = geq[DIR_M0M]; - f[DIR_P0M] = geq[DIR_P0M]; - f[DIR_M0P] = geq[DIR_M0P]; - f[DIR_0PP] = geq[DIR_0PP]; - f[DIR_0MM] = geq[DIR_0MM]; - f[DIR_0PM] = geq[DIR_0PM]; - f[DIR_0MP] = geq[DIR_0MP]; - f[DIR_PPP] = geq[DIR_PPP]; - f[DIR_MPP] = geq[DIR_MPP]; - f[DIR_PMP] = geq[DIR_PMP]; - f[DIR_MMP] = geq[DIR_MMP]; - f[DIR_PPM] = geq[DIR_PPM]; - f[DIR_MPM] = geq[DIR_MPM]; - f[DIR_PMM] = geq[DIR_PMM]; - f[DIR_MMM] = geq[DIR_MMM]; + f[d000] = geq[d000]; + f[dP00] = geq[dP00]; + f[dM00] = geq[dM00]; + f[d0P0] = geq[d0P0]; + f[d0M0] = geq[d0M0]; + f[d00P] = geq[d00P]; + f[d00M] = geq[d00M]; + f[dPP0] = geq[dPP0]; + f[dMM0] = geq[dMM0]; + f[dPM0] = geq[dPM0]; + f[dMP0] = geq[dMP0]; + f[dP0P] = geq[dP0P]; + f[dM0M] = geq[dM0M]; + f[dP0M] = geq[dP0M]; + f[dM0P] = geq[dM0P]; + f[d0PP] = geq[d0PP]; + f[d0MM] = geq[d0MM]; + f[d0PM] = geq[d0PM]; + f[d0MP] = geq[d0MP]; + f[dPPP] = geq[dPPP]; + f[dMPP] = geq[dMPP]; + f[dPMP] = geq[dPMP]; + f[dMMP] = geq[dMMP]; + f[dPPM] = geq[dPPM]; + f[dMPM] = geq[dMPM]; + f[dPMM] = geq[dPMM]; + f[dMMM] = geq[dMMM]; - distributionsF->setDistribution(f, ix1, ix2, ix3); - distributionsF->setDistributionInv(f, ix1, ix2, ix3); + distributionsF->setPostCollisionDistribution(f, ix1, ix2, ix3); + distributionsF->setPreCollisionDistribution(f, ix1, ix2, ix3); - f[DIR_000] = phi * feq[DIR_000];// / rho; - f[DIR_P00] = phi * feq[DIR_P00];// / rho; - f[DIR_M00] = phi * feq[DIR_M00];// / rho; - f[DIR_0P0] = phi * feq[DIR_0P0];// / rho; - f[DIR_0M0] = phi * feq[DIR_0M0];// / rho; - f[DIR_00P] = phi * feq[DIR_00P];// / rho; - f[DIR_00M] = phi * feq[DIR_00M];// / rho; - f[DIR_PP0] = phi * feq[DIR_PP0];// / rho; - f[DIR_MM0] = phi * feq[DIR_MM0];// / rho; - f[DIR_PM0] = phi * feq[DIR_PM0];// / rho; - f[DIR_MP0] = phi * feq[DIR_MP0];// / rho; - f[DIR_P0P] = phi * feq[DIR_P0P];// / rho; - f[DIR_M0M] = phi * feq[DIR_M0M];// / rho; - f[DIR_P0M] = phi * feq[DIR_P0M];// / rho; - f[DIR_M0P] = phi * feq[DIR_M0P];// / rho; - f[DIR_0PP] = phi * feq[DIR_0PP];// / rho; - f[DIR_0MM] = phi * feq[DIR_0MM];// / rho; - f[DIR_0PM] = phi * feq[DIR_0PM];// / rho; - f[DIR_0MP] = phi * feq[DIR_0MP];// / rho; - f[DIR_PPP] = phi * feq[DIR_PPP];// / rho; - f[DIR_MPP] = phi * feq[DIR_MPP];// / rho; - f[DIR_PMP] = phi * feq[DIR_PMP];// / rho; - f[DIR_MMP] = phi * feq[DIR_MMP];// / rho; - f[DIR_PPM] = phi * feq[DIR_PPM];// / rho; - f[DIR_MPM] = phi * feq[DIR_MPM];// / rho; - f[DIR_PMM] = phi * feq[DIR_PMM];// / rho; - f[DIR_MMM] = phi * feq[DIR_MMM];// / rho; + f[d000] = phi * feq[d000];// / rho; + f[dP00] = phi * feq[dP00];// / rho; + f[dM00] = phi * feq[dM00];// / rho; + f[d0P0] = phi * feq[d0P0];// / rho; + f[d0M0] = phi * feq[d0M0];// / rho; + f[d00P] = phi * feq[d00P];// / rho; + f[d00M] = phi * feq[d00M];// / rho; + f[dPP0] = phi * feq[dPP0];// / rho; + f[dMM0] = phi * feq[dMM0];// / rho; + f[dPM0] = phi * feq[dPM0];// / rho; + f[dMP0] = phi * feq[dMP0];// / rho; + f[dP0P] = phi * feq[dP0P];// / rho; + f[dM0M] = phi * feq[dM0M];// / rho; + f[dP0M] = phi * feq[dP0M];// / rho; + f[dM0P] = phi * feq[dM0P];// / rho; + f[d0PP] = phi * feq[d0PP];// / rho; + f[d0MM] = phi * feq[d0MM];// / rho; + f[d0PM] = phi * feq[d0PM];// / rho; + f[d0MP] = phi * feq[d0MP];// / rho; + f[dPPP] = phi * feq[dPPP];// / rho; + f[dMPP] = phi * feq[dMPP];// / rho; + f[dPMP] = phi * feq[dPMP];// / rho; + f[dMMP] = phi * feq[dMMP];// / rho; + f[dPPM] = phi * feq[dPPM];// / rho; + f[dMPM] = phi * feq[dMPM];// / rho; + f[dPMM] = phi * feq[dPMM];// / rho; + f[dMMM] = phi * feq[dMMM];// / rho; - distributionsH->setDistribution(f, ix1, ix2, ix3); - distributionsH->setDistributionInv(f, ix1, ix2, ix3); + distributionsH->setPostCollisionDistribution(f, ix1, ix2, ix3); + distributionsH->setPreCollisionDistribution(f, ix1, ix2, ix3); if (distributionsH2) { - f[DIR_000] = 0;//(1. - phi) * feq[DIR_000]; // / rho; - f[DIR_P00] = 0;//(1.-phi) * feq[DIR_P00] ;// / rho; - f[DIR_M00] = 0;//(1.-phi) * feq[DIR_M00] ;// / rho; - f[DIR_0P0] = 0;//(1.-phi) * feq[DIR_0P0] ;// / rho; - f[DIR_0M0] = 0;//(1.-phi) * feq[DIR_0M0] ;// / rho; - f[DIR_00P] = 0;//(1.-phi) * feq[DIR_00P] ;// / rho; - f[DIR_00M] = 0;//(1.-phi) * feq[DIR_00M] ;// / rho; - f[DIR_PP0] = 0;//(1.-phi) * feq[DIR_PP0] ;// / rho; - f[DIR_MM0] = 0;//(1.-phi) * feq[DIR_MM0] ;// / rho; - f[DIR_PM0] = 0;//(1.-phi) * feq[DIR_PM0] ;// / rho; - f[DIR_MP0] = 0;//(1.-phi) * feq[DIR_MP0] ;// / rho; - f[DIR_P0P] = 0;//(1.-phi) * feq[DIR_P0P] ;// / rho; - f[DIR_M0M] = 0;//(1.-phi) * feq[DIR_M0M] ;// / rho; - f[DIR_P0M] = 0;//(1.-phi) * feq[DIR_P0M] ;// / rho; - f[DIR_M0P] = 0;//(1.-phi) * feq[DIR_M0P] ;// / rho; - f[DIR_0PP] = 0;//(1.-phi) * feq[DIR_0PP] ;// / rho; - f[DIR_0MM] = 0;//(1.-phi) * feq[DIR_0MM] ;// / rho; - f[DIR_0PM] = 0;//(1.-phi) * feq[DIR_0PM] ;// / rho; - f[DIR_0MP] = 0;//(1.-phi) * feq[DIR_0MP] ;// / rho; - f[DIR_PPP] = 0;//(1.-phi) * feq[DIR_PPP] ;// / rho; - f[DIR_MPP] = 0;//(1.-phi) * feq[DIR_MPP] ;// / rho; - f[DIR_PMP] = 0;//(1.-phi) * feq[DIR_PMP] ;// / rho; - f[DIR_MMP] = 0;//(1.-phi) * feq[DIR_MMP] ;// / rho; - f[DIR_PPM] = 0;//(1.-phi) * feq[DIR_PPM] ;// / rho; - f[DIR_MPM] = 0;//(1.-phi) * feq[DIR_MPM] ;// / rho; - f[DIR_PMM] = 0;//(1.-phi) * feq[DIR_PMM] ;// / rho; - f[DIR_MMM] = 0;//(1.-phi) * feq[DIR_MMM] ;// / rho; + f[d000] = 0;//(1. - phi) * feq[d000]; // / rho; + f[dP00] = 0;//(1.-phi) * feq[dP00] ;// / rho; + f[dM00] = 0;//(1.-phi) * feq[dM00] ;// / rho; + f[d0P0] = 0;//(1.-phi) * feq[d0P0] ;// / rho; + f[d0M0] = 0;//(1.-phi) * feq[d0M0] ;// / rho; + f[d00P] = 0;//(1.-phi) * feq[d00P] ;// / rho; + f[d00M] = 0;//(1.-phi) * feq[d00M] ;// / rho; + f[dPP0] = 0;//(1.-phi) * feq[dPP0] ;// / rho; + f[dMM0] = 0;//(1.-phi) * feq[dMM0] ;// / rho; + f[dPM0] = 0;//(1.-phi) * feq[dPM0] ;// / rho; + f[dMP0] = 0;//(1.-phi) * feq[dMP0] ;// / rho; + f[dP0P] = 0;//(1.-phi) * feq[dP0P] ;// / rho; + f[dM0M] = 0;//(1.-phi) * feq[dM0M] ;// / rho; + f[dP0M] = 0;//(1.-phi) * feq[dP0M] ;// / rho; + f[dM0P] = 0;//(1.-phi) * feq[dM0P] ;// / rho; + f[d0PP] = 0;//(1.-phi) * feq[d0PP] ;// / rho; + f[d0MM] = 0;//(1.-phi) * feq[d0MM] ;// / rho; + f[d0PM] = 0;//(1.-phi) * feq[d0PM] ;// / rho; + f[d0MP] = 0;//(1.-phi) * feq[d0MP] ;// / rho; + f[dPPP] = 0;//(1.-phi) * feq[dPPP] ;// / rho; + f[dMPP] = 0;//(1.-phi) * feq[dMPP] ;// / rho; + f[dPMP] = 0;//(1.-phi) * feq[dPMP] ;// / rho; + f[dMMP] = 0;//(1.-phi) * feq[dMMP] ;// / rho; + f[dPPM] = 0;//(1.-phi) * feq[dPPM] ;// / rho; + f[dMPM] = 0;//(1.-phi) * feq[dMPM] ;// / rho; + f[dPMM] = 0;//(1.-phi) * feq[dPMM] ;// / rho; + f[dMMM] = 0;//(1.-phi) * feq[dMMM] ;// / rho; - distributionsH2->setDistribution(f, ix1, ix2, ix3); - distributionsH2->setDistributionInv(f, ix1, ix2, ix3); + distributionsH2->setPostCollisionDistribution(f, ix1, ix2, ix3); + distributionsH2->setPreCollisionDistribution(f, ix1, ix2, ix3); } } } diff --git a/src/cpu/NonNewtonianFluids/BoundaryConditions/RheologyNoSlipBCStrategy.cpp b/src/cpu/NonNewtonianFluids/BoundaryConditions/RheologyNoSlipBCStrategy.cpp index 4227b3af8af343de69b15944a5ebb96f5bd5c9d8..f66ec5059ddd3ad0110ac263ffdff2370cc944bc 100644 --- a/src/cpu/NonNewtonianFluids/BoundaryConditions/RheologyNoSlipBCStrategy.cpp +++ b/src/cpu/NonNewtonianFluids/BoundaryConditions/RheologyNoSlipBCStrategy.cpp @@ -44,7 +44,7 @@ void RheologyNoSlipBCStrategy::applyBC() { real f[D3Q27System::ENDF + 1]; real feq[D3Q27System::ENDF + 1]; - distributions->getDistribution(f, x1, x2, x3); + distributions->getPreCollisionDistribution(f, x1, x2, x3); real rho, vx1, vx2, vx3; calcMacrosFct(f, rho, vx1, vx2, vx3); calcFeqFct(feq, rho, vx1, vx2, vx3); @@ -60,7 +60,7 @@ void RheologyNoSlipBCStrategy::applyBC() const int invDir = D3Q27System::INVDIR[fDir]; real q = bcPtr->getQ(invDir); real fReturn =(f[invDir] + q * f[fDir] + q * collFactorF * (feq[invDir] - f[invDir] + feq[fDir] - f[fDir])) / (vf::basics::constant::c1o1 + q); - distributions->setDistributionInvForDirection(fReturn, x1 + D3Q27System::DX1[invDir], x2 + D3Q27System::DX2[invDir], x3 + D3Q27System::DX3[invDir], invDir); + distributions->setPreCollisionDistributionForDirection(fReturn, x1 + D3Q27System::DX1[invDir], x2 + D3Q27System::DX2[invDir], x3 + D3Q27System::DX3[invDir], invDir); } } } \ No newline at end of file diff --git a/src/cpu/NonNewtonianFluids/BoundaryConditions/RheologyVelocityBCStrategy.cpp b/src/cpu/NonNewtonianFluids/BoundaryConditions/RheologyVelocityBCStrategy.cpp index 706edc7a2efe6ab23dde750b26d2905f16fe4220..24e1f4c14c9d7ac0339ab4214cf7a325b1319f02 100644 --- a/src/cpu/NonNewtonianFluids/BoundaryConditions/RheologyVelocityBCStrategy.cpp +++ b/src/cpu/NonNewtonianFluids/BoundaryConditions/RheologyVelocityBCStrategy.cpp @@ -55,7 +55,7 @@ void RheologyVelocityBCStrategy::applyBC() real f[D3Q27System::ENDF+1]; real feq[D3Q27System::ENDF+1]; - distributions->getDistribution(f, x1, x2, x3); + distributions->getPreCollisionDistribution(f, x1, x2, x3); real rho, vx1, vx2, vx3, drho; calcMacrosFct(f, drho, vx1, vx2, vx3); calcFeqFct(feq, drho, vx1, vx2, vx3); @@ -75,7 +75,7 @@ void RheologyVelocityBCStrategy::applyBC() real q = bcPtr->getQ(invDir); real velocity = bcPtr->getBoundaryVelocity(invDir); real fReturn = ((c1o1 - q) / (c1o1 + q)) * ((f[invDir])) + ((q * (f[invDir] + f[fdir] - collFactorF * (f[invDir] - feq[invDir] + f[fdir] - feq[fdir])) - velocity * rho) / (c1o1 + q)); - distributions->setDistributionForDirection(fReturn, x1+D3Q27System::DX1[invDir], x2+D3Q27System::DX2[invDir], x3+D3Q27System::DX3[invDir], fdir); + distributions->setPostCollisionDistributionForDirection(fReturn, x1+D3Q27System::DX1[invDir], x2+D3Q27System::DX2[invDir], x3+D3Q27System::DX3[invDir], fdir); } } diff --git a/src/cpu/NonNewtonianFluids/BoundaryConditions/ThixotropyDensityBCStrategy.cpp b/src/cpu/NonNewtonianFluids/BoundaryConditions/ThixotropyDensityBCStrategy.cpp index 70981c5d0e4178eb0b58ac807305635be5a7fdfd..9761d9d2b5a74892e82eac50f5ae6709cbbd4def 100644 --- a/src/cpu/NonNewtonianFluids/BoundaryConditions/ThixotropyDensityBCStrategy.cpp +++ b/src/cpu/NonNewtonianFluids/BoundaryConditions/ThixotropyDensityBCStrategy.cpp @@ -79,8 +79,8 @@ void ThixotropyDensityBCStrategy::applyBC() real feq[D3Q27System::ENDF + 1]; real h[D3Q27System::ENDF + 1]; real heq[D3Q27System::ENDF + 1]; - distributions->getDistributionInv(f, x1, x2, x3); - distributionsH->getDistributionInv(h, x1, x2, x3); + distributions->getPostCollisionDistribution(f, x1, x2, x3); + distributionsH->getPostCollisionDistribution(h, x1, x2, x3); real rho, vx1, vx2, vx3; @@ -96,12 +96,12 @@ void ThixotropyDensityBCStrategy::applyBC() int nx3 = x3; //flag points in direction of fluid - if (bcPtr->hasDensityBoundaryFlag(DIR_P00)) { nx1 -= 1; } - else if (bcPtr->hasDensityBoundaryFlag(DIR_M00)) { nx1 += 1; } - else if (bcPtr->hasDensityBoundaryFlag(DIR_0P0)) { nx2 -= 1; } - else if (bcPtr->hasDensityBoundaryFlag(DIR_0M0)) { nx2 += 1; } - else if (bcPtr->hasDensityBoundaryFlag(DIR_00P)) { nx3 -= 1; } - else if (bcPtr->hasDensityBoundaryFlag(DIR_00M)) { nx3 += 1; } + if (bcPtr->hasDensityBoundaryFlag(dP00)) { nx1 -= 1; } + else if (bcPtr->hasDensityBoundaryFlag(dM00)) { nx1 += 1; } + else if (bcPtr->hasDensityBoundaryFlag(d0P0)) { nx2 -= 1; } + else if (bcPtr->hasDensityBoundaryFlag(d0M0)) { nx2 += 1; } + else if (bcPtr->hasDensityBoundaryFlag(d00P)) { nx3 -= 1; } + else if (bcPtr->hasDensityBoundaryFlag(d00M)) { nx3 += 1; } else UB_THROW(UbException(UB_EXARGS, "Danger...no orthogonal BC-Flag on density boundary...")); real rhoBC = bcPtr->getBoundaryDensity(); @@ -112,11 +112,11 @@ void ThixotropyDensityBCStrategy::applyBC() { real ftemp = calcFeqsForDirFct(fdir, rho, vx1, vx2, vx3); ftemp = calcFeqsForDirFct(fdir, rhoBC, vx1, vx2, vx3) + f[fdir] - ftemp; - distributions->setDistributionForDirection(ftemp, nx1, nx2, nx3, fdir); + distributions->setPostCollisionDistributionForDirection(ftemp, nx1, nx2, nx3, fdir); real htemp = D3Q27System::getCompFeqForDirection(fdir, lambda, vx1, vx2, vx3); htemp = D3Q27System::getCompFeqForDirection(fdir,lambdaBC, vx1, vx2, vx3) + h[fdir] - htemp; - distributionsH->setDistributionForDirection(htemp, nx1, nx2, nx3, fdir); + distributionsH->setPostCollisionDistributionForDirection(htemp, nx1, nx2, nx3, fdir); } } } diff --git a/src/cpu/NonNewtonianFluids/BoundaryConditions/ThixotropyNoSlipBCStrategy.cpp b/src/cpu/NonNewtonianFluids/BoundaryConditions/ThixotropyNoSlipBCStrategy.cpp index da1f2deaa8c18fb74f9d5b60212f05dbb94173fe..e143e0574268fc2f7ee76bb660c385469302a307 100644 --- a/src/cpu/NonNewtonianFluids/BoundaryConditions/ThixotropyNoSlipBCStrategy.cpp +++ b/src/cpu/NonNewtonianFluids/BoundaryConditions/ThixotropyNoSlipBCStrategy.cpp @@ -74,8 +74,8 @@ void ThixotropyNoSlipBCStrategy::applyBC() real feq[D3Q27System::ENDF + 1]; real h[D3Q27System::ENDF + 1]; real heq[D3Q27System::ENDF + 1]; - distributions->getDistributionInv(f, x1, x2, x3); - distributionsH->getDistributionInv(h, x1, x2, x3); + distributions->getPostCollisionDistribution(f, x1, x2, x3); + distributionsH->getPostCollisionDistribution(h, x1, x2, x3); real rho, vx1, vx2, vx3;//, concentration, fl1, fl2, fl3, m100; calcMacrosFct(f, rho, vx1, vx2, vx3); calcFeqFct(feq, rho, vx1, vx2, vx3); @@ -94,8 +94,8 @@ void ThixotropyNoSlipBCStrategy::applyBC() real fReturnf = ((vf::basics::constant::c1o1 - q) / (vf::basics::constant::c1o1 + q))*((f[invDir] - feq[invDir]) / (vf::basics::constant::c1o1 - collFactor) + feq[invDir]) + ((q / (vf::basics::constant::c1o1 + q))*(f[invDir] + f[fdir])); real fReturnh = ((vf::basics::constant::c1o1 - q) / (vf::basics::constant::c1o1 + q))*((h[invDir] - heq[invDir]) / (vf::basics::constant::c1o1 - collFactor) + heq[invDir]) + ((q / (vf::basics::constant::c1o1 + q))*(h[invDir] + h[fdir])); - distributions->setDistributionForDirection(fReturnf, x1 + D3Q27System::DX1[invDir], x2 + D3Q27System::DX2[invDir], x3 + D3Q27System::DX3[invDir], fdir); - distributionsH->setDistributionForDirection(fReturnh, x1 + D3Q27System::DX1[invDir], x2 + D3Q27System::DX2[invDir], x3 + D3Q27System::DX3[invDir], fdir); + distributions->setPostCollisionDistributionForDirection(fReturnf, x1 + D3Q27System::DX1[invDir], x2 + D3Q27System::DX2[invDir], x3 + D3Q27System::DX3[invDir], fdir); + distributionsH->setPostCollisionDistributionForDirection(fReturnh, x1 + D3Q27System::DX1[invDir], x2 + D3Q27System::DX2[invDir], x3 + D3Q27System::DX3[invDir], fdir); } } diff --git a/src/cpu/NonNewtonianFluids/BoundaryConditions/ThixotropyNonReflectingOutflowBCStrategy.cpp b/src/cpu/NonNewtonianFluids/BoundaryConditions/ThixotropyNonReflectingOutflowBCStrategy.cpp index 3ee059eec142c2c0ef14d36d52cdf097a68efa18..668ee0419d2169de588b69153a8e76c2bb7b9377 100644 --- a/src/cpu/NonNewtonianFluids/BoundaryConditions/ThixotropyNonReflectingOutflowBCStrategy.cpp +++ b/src/cpu/NonNewtonianFluids/BoundaryConditions/ThixotropyNonReflectingOutflowBCStrategy.cpp @@ -82,147 +82,147 @@ void ThixotropyNonReflectingOutflowBCStrategy::applyBC() int direction = -1; //flag points in direction of fluid - if (bcPtr->hasDensityBoundaryFlag(DIR_P00)) { nx1 += 1; direction = DIR_P00; } - else if (bcPtr->hasDensityBoundaryFlag(DIR_M00)) { nx1 -= 1; direction = DIR_M00; } - else if (bcPtr->hasDensityBoundaryFlag(DIR_0P0)) { nx2 += 1; direction = DIR_0P0; } - else if (bcPtr->hasDensityBoundaryFlag(DIR_0M0)) { nx2 -= 1; direction = DIR_0M0; } - else if (bcPtr->hasDensityBoundaryFlag(DIR_00P)) { nx3 += 1; direction = DIR_00P; } - else if (bcPtr->hasDensityBoundaryFlag(DIR_00M)) { nx3 -= 1; direction = DIR_00M; } + if (bcPtr->hasDensityBoundaryFlag(dP00)) { nx1 += 1; direction = dP00; } + else if (bcPtr->hasDensityBoundaryFlag(dM00)) { nx1 -= 1; direction = dM00; } + else if (bcPtr->hasDensityBoundaryFlag(d0P0)) { nx2 += 1; direction = d0P0; } + else if (bcPtr->hasDensityBoundaryFlag(d0M0)) { nx2 -= 1; direction = d0M0; } + else if (bcPtr->hasDensityBoundaryFlag(d00P)) { nx3 += 1; direction = d00P; } + else if (bcPtr->hasDensityBoundaryFlag(d00M)) { nx3 -= 1; direction = d00M; } else UB_THROW(UbException(UB_EXARGS, "Danger...no orthogonal BC-Flag on density boundary...")); - distributions->getDistribution(f, x1, x2, x3); - distributions->getDistribution(ftemp, nx1, nx2, nx3); + distributions->getPreCollisionDistribution(f, x1, x2, x3); + distributions->getPreCollisionDistribution(ftemp, nx1, nx2, nx3); real rho, vx1, vx2, vx3; calcMacrosFct(f, rho, vx1, vx2, vx3); switch (direction) { - case DIR_P00: - f[DIR_P00] = ftemp[DIR_P00] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * f[DIR_P00]; - f[DIR_PP0] = ftemp[DIR_PP0] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * f[DIR_PP0]; - f[DIR_PM0] = ftemp[DIR_PM0] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * f[DIR_PM0]; - f[DIR_P0P] = ftemp[DIR_P0P] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * f[DIR_P0P]; - f[DIR_P0M] = ftemp[DIR_P0M] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * f[DIR_P0M]; - f[DIR_PPP] = ftemp[DIR_PPP] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * f[DIR_PPP]; - f[DIR_PMP] = ftemp[DIR_PMP] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * f[DIR_PMP]; - f[DIR_PPM] = ftemp[DIR_PPM] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * f[DIR_PPM]; - f[DIR_PMM] = ftemp[DIR_PMM] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * f[DIR_PMM]; + case dP00: + f[dP00] = ftemp[dP00] * (c1oSqrt3 + vx1) + (c1o1 - c1oSqrt3 - vx1) * f[dP00]; + f[dPP0] = ftemp[dPP0] * (c1oSqrt3 + vx1) + (c1o1 - c1oSqrt3 - vx1) * f[dPP0]; + f[dPM0] = ftemp[dPM0] * (c1oSqrt3 + vx1) + (c1o1 - c1oSqrt3 - vx1) * f[dPM0]; + f[dP0P] = ftemp[dP0P] * (c1oSqrt3 + vx1) + (c1o1 - c1oSqrt3 - vx1) * f[dP0P]; + f[dP0M] = ftemp[dP0M] * (c1oSqrt3 + vx1) + (c1o1 - c1oSqrt3 - vx1) * f[dP0M]; + f[dPPP] = ftemp[dPPP] * (c1oSqrt3 + vx1) + (c1o1 - c1oSqrt3 - vx1) * f[dPPP]; + f[dPMP] = ftemp[dPMP] * (c1oSqrt3 + vx1) + (c1o1 - c1oSqrt3 - vx1) * f[dPMP]; + f[dPPM] = ftemp[dPPM] * (c1oSqrt3 + vx1) + (c1o1 - c1oSqrt3 - vx1) * f[dPPM]; + f[dPMM] = ftemp[dPMM] * (c1oSqrt3 + vx1) + (c1o1 - c1oSqrt3 - vx1) * f[dPMM]; - distributions->setDistributionInvForDirection(f[DIR_P00], x1 + DX1[DIR_M00], x2 + DX2[DIR_M00], x3 + DX3[DIR_M00], DIR_M00); - distributions->setDistributionInvForDirection(f[DIR_PP0], x1 + DX1[DIR_MM0], x2 + DX2[DIR_MM0], x3 + DX3[DIR_MM0], DIR_MM0); - distributions->setDistributionInvForDirection(f[DIR_PM0], x1 + DX1[DIR_MP0], x2 + DX2[DIR_MP0], x3 + DX3[DIR_MP0], DIR_MP0); - distributions->setDistributionInvForDirection(f[DIR_P0P], x1 + DX1[DIR_M0M], x2 + DX2[DIR_M0M], x3 + DX3[DIR_M0M], DIR_M0M); - distributions->setDistributionInvForDirection(f[DIR_P0M], x1 + DX1[DIR_M0P], x2 + DX2[DIR_M0P], x3 + DX3[DIR_M0P], DIR_M0P); - distributions->setDistributionInvForDirection(f[DIR_PPP], x1 + DX1[DIR_MMM], x2 + DX2[DIR_MMM], x3 + DX3[DIR_MMM], DIR_MMM); - distributions->setDistributionInvForDirection(f[DIR_PMP], x1 + DX1[DIR_MPM], x2 + DX2[DIR_MPM], x3 + DX3[DIR_MPM], DIR_MPM); - distributions->setDistributionInvForDirection(f[DIR_PPM], x1 + DX1[DIR_MMP], x2 + DX2[DIR_MMP], x3 + DX3[DIR_MMP], DIR_MMP); - distributions->setDistributionInvForDirection(f[DIR_PMM], x1 + DX1[DIR_MPP], x2 + DX2[DIR_MPP], x3 + DX3[DIR_MPP], DIR_MPP); + distributions->setPreCollisionDistributionForDirection(f[dP00], x1 + DX1[dM00], x2 + DX2[dM00], x3 + DX3[dM00], dM00); + distributions->setPreCollisionDistributionForDirection(f[dPP0], x1 + DX1[dMM0], x2 + DX2[dMM0], x3 + DX3[dMM0], dMM0); + distributions->setPreCollisionDistributionForDirection(f[dPM0], x1 + DX1[dMP0], x2 + DX2[dMP0], x3 + DX3[dMP0], dMP0); + distributions->setPreCollisionDistributionForDirection(f[dP0P], x1 + DX1[dM0M], x2 + DX2[dM0M], x3 + DX3[dM0M], dM0M); + distributions->setPreCollisionDistributionForDirection(f[dP0M], x1 + DX1[dM0P], x2 + DX2[dM0P], x3 + DX3[dM0P], dM0P); + distributions->setPreCollisionDistributionForDirection(f[dPPP], x1 + DX1[dMMM], x2 + DX2[dMMM], x3 + DX3[dMMM], dMMM); + distributions->setPreCollisionDistributionForDirection(f[dPMP], x1 + DX1[dMPM], x2 + DX2[dMPM], x3 + DX3[dMPM], dMPM); + distributions->setPreCollisionDistributionForDirection(f[dPPM], x1 + DX1[dMMP], x2 + DX2[dMMP], x3 + DX3[dMMP], dMMP); + distributions->setPreCollisionDistributionForDirection(f[dPMM], x1 + DX1[dMPP], x2 + DX2[dMPP], x3 + DX3[dMPP], dMPP); break; - case DIR_M00: - f[DIR_M00] = ftemp[DIR_M00] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * f[DIR_M00]; - f[DIR_MP0] = ftemp[DIR_MP0] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * f[DIR_MP0]; - f[DIR_MM0] = ftemp[DIR_MM0] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * f[DIR_MM0]; - f[DIR_M0P] = ftemp[DIR_M0P] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * f[DIR_M0P]; - f[DIR_M0M] = ftemp[DIR_M0M] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * f[DIR_M0M]; - f[DIR_MPP] = ftemp[DIR_MPP] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * f[DIR_MPP]; - f[DIR_MMP] = ftemp[DIR_MMP] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * f[DIR_MMP]; - f[DIR_MPM] = ftemp[DIR_MPM] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * f[DIR_MPM]; - f[DIR_MMM] = ftemp[DIR_MMM] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * f[DIR_MMM]; + case dM00: + f[dM00] = ftemp[dM00] * (c1oSqrt3 - vx1) + (c1o1 - c1oSqrt3 + vx1) * f[dM00]; + f[dMP0] = ftemp[dMP0] * (c1oSqrt3 - vx1) + (c1o1 - c1oSqrt3 + vx1) * f[dMP0]; + f[dMM0] = ftemp[dMM0] * (c1oSqrt3 - vx1) + (c1o1 - c1oSqrt3 + vx1) * f[dMM0]; + f[dM0P] = ftemp[dM0P] * (c1oSqrt3 - vx1) + (c1o1 - c1oSqrt3 + vx1) * f[dM0P]; + f[dM0M] = ftemp[dM0M] * (c1oSqrt3 - vx1) + (c1o1 - c1oSqrt3 + vx1) * f[dM0M]; + f[dMPP] = ftemp[dMPP] * (c1oSqrt3 - vx1) + (c1o1 - c1oSqrt3 + vx1) * f[dMPP]; + f[dMMP] = ftemp[dMMP] * (c1oSqrt3 - vx1) + (c1o1 - c1oSqrt3 + vx1) * f[dMMP]; + f[dMPM] = ftemp[dMPM] * (c1oSqrt3 - vx1) + (c1o1 - c1oSqrt3 + vx1) * f[dMPM]; + f[dMMM] = ftemp[dMMM] * (c1oSqrt3 - vx1) + (c1o1 - c1oSqrt3 + vx1) * f[dMMM]; - distributions->setDistributionInvForDirection(f[DIR_M00], x1 + DX1[DIR_P00], x2 + DX2[DIR_P00], x3 + DX3[DIR_P00], DIR_P00); - distributions->setDistributionInvForDirection(f[DIR_MP0], x1 + DX1[DIR_PM0], x2 + DX2[DIR_PM0], x3 + DX3[DIR_PM0], DIR_PM0); - distributions->setDistributionInvForDirection(f[DIR_MM0], x1 + DX1[DIR_PP0], x2 + DX2[DIR_PP0], x3 + DX3[DIR_PP0], DIR_PP0); - distributions->setDistributionInvForDirection(f[DIR_M0P], x1 + DX1[DIR_P0M], x2 + DX2[DIR_P0M], x3 + DX3[DIR_P0M], DIR_P0M); - distributions->setDistributionInvForDirection(f[DIR_M0M], x1 + DX1[DIR_P0P], x2 + DX2[DIR_P0P], x3 + DX3[DIR_P0P], DIR_P0P); - distributions->setDistributionInvForDirection(f[DIR_MPP], x1 + DX1[DIR_PMM], x2 + DX2[DIR_PMM], x3 + DX3[DIR_PMM], DIR_PMM); - distributions->setDistributionInvForDirection(f[DIR_MMP], x1 + DX1[DIR_PPM], x2 + DX2[DIR_PPM], x3 + DX3[DIR_PPM], DIR_PPM); - distributions->setDistributionInvForDirection(f[DIR_MPM], x1 + DX1[DIR_PMP], x2 + DX2[DIR_PMP], x3 + DX3[DIR_PMP], DIR_PMP); - distributions->setDistributionInvForDirection(f[DIR_MMM], x1 + DX1[DIR_PPP], x2 + DX2[DIR_PPP], x3 + DX3[DIR_PPP], DIR_PPP); + distributions->setPreCollisionDistributionForDirection(f[dM00], x1 + DX1[dP00], x2 + DX2[dP00], x3 + DX3[dP00], dP00); + distributions->setPreCollisionDistributionForDirection(f[dMP0], x1 + DX1[dPM0], x2 + DX2[dPM0], x3 + DX3[dPM0], dPM0); + distributions->setPreCollisionDistributionForDirection(f[dMM0], x1 + DX1[dPP0], x2 + DX2[dPP0], x3 + DX3[dPP0], dPP0); + distributions->setPreCollisionDistributionForDirection(f[dM0P], x1 + DX1[dP0M], x2 + DX2[dP0M], x3 + DX3[dP0M], dP0M); + distributions->setPreCollisionDistributionForDirection(f[dM0M], x1 + DX1[dP0P], x2 + DX2[dP0P], x3 + DX3[dP0P], dP0P); + distributions->setPreCollisionDistributionForDirection(f[dMPP], x1 + DX1[dPMM], x2 + DX2[dPMM], x3 + DX3[dPMM], dPMM); + distributions->setPreCollisionDistributionForDirection(f[dMMP], x1 + DX1[dPPM], x2 + DX2[dPPM], x3 + DX3[dPPM], dPPM); + distributions->setPreCollisionDistributionForDirection(f[dMPM], x1 + DX1[dPMP], x2 + DX2[dPMP], x3 + DX3[dPMP], dPMP); + distributions->setPreCollisionDistributionForDirection(f[dMMM], x1 + DX1[dPPP], x2 + DX2[dPPP], x3 + DX3[dPPP], dPPP); break; - case DIR_0P0: - f[DIR_0P0] = ftemp[DIR_0P0] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * f[DIR_0P0]; - f[DIR_PP0] = ftemp[DIR_PP0] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * f[DIR_PP0]; - f[DIR_MP0] = ftemp[DIR_MP0] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * f[DIR_MP0]; - f[DIR_0PP] = ftemp[DIR_0PP] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * f[DIR_0PP]; - f[DIR_0PM] = ftemp[DIR_0PM] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * f[DIR_0PM]; - f[DIR_PPP] = ftemp[DIR_PPP] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * f[DIR_PPP]; - f[DIR_MPP] = ftemp[DIR_MPP] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * f[DIR_MPP]; - f[DIR_PPM] = ftemp[DIR_PPM] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * f[DIR_PPM]; - f[DIR_MPM] = ftemp[DIR_MPM] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * f[DIR_MPM]; + case d0P0: + f[d0P0] = ftemp[d0P0] * (c1oSqrt3 + vx2) + (c1o1 - c1oSqrt3 - vx2) * f[d0P0]; + f[dPP0] = ftemp[dPP0] * (c1oSqrt3 + vx2) + (c1o1 - c1oSqrt3 - vx2) * f[dPP0]; + f[dMP0] = ftemp[dMP0] * (c1oSqrt3 + vx2) + (c1o1 - c1oSqrt3 - vx2) * f[dMP0]; + f[d0PP] = ftemp[d0PP] * (c1oSqrt3 + vx2) + (c1o1 - c1oSqrt3 - vx2) * f[d0PP]; + f[d0PM] = ftemp[d0PM] * (c1oSqrt3 + vx2) + (c1o1 - c1oSqrt3 - vx2) * f[d0PM]; + f[dPPP] = ftemp[dPPP] * (c1oSqrt3 + vx2) + (c1o1 - c1oSqrt3 - vx2) * f[dPPP]; + f[dMPP] = ftemp[dMPP] * (c1oSqrt3 + vx2) + (c1o1 - c1oSqrt3 - vx2) * f[dMPP]; + f[dPPM] = ftemp[dPPM] * (c1oSqrt3 + vx2) + (c1o1 - c1oSqrt3 - vx2) * f[dPPM]; + f[dMPM] = ftemp[dMPM] * (c1oSqrt3 + vx2) + (c1o1 - c1oSqrt3 - vx2) * f[dMPM]; - distributions->setDistributionInvForDirection(f[DIR_0P0], x1 + DX1[DIR_0M0], x2 + DX2[DIR_0M0], x3 + DX3[DIR_0M0], DIR_0M0); - distributions->setDistributionInvForDirection(f[DIR_PP0], x1 + DX1[DIR_MM0], x2 + DX2[DIR_MM0], x3 + DX3[DIR_MM0], DIR_MM0); - distributions->setDistributionInvForDirection(f[DIR_MP0], x1 + DX1[DIR_PM0], x2 + DX2[DIR_PM0], x3 + DX3[DIR_PM0], DIR_PM0); - distributions->setDistributionInvForDirection(f[DIR_0PP], x1 + DX1[DIR_0MM], x2 + DX2[DIR_0MM], x3 + DX3[DIR_0MM], DIR_0MM); - distributions->setDistributionInvForDirection(f[DIR_0PM], x1 + DX1[DIR_0MP], x2 + DX2[DIR_0MP], x3 + DX3[DIR_0MP], DIR_0MP); - distributions->setDistributionInvForDirection(f[DIR_PPP], x1 + DX1[DIR_MMM], x2 + DX2[DIR_MMM], x3 + DX3[DIR_MMM], DIR_MMM); - distributions->setDistributionInvForDirection(f[DIR_MPP], x1 + DX1[DIR_PMM], x2 + DX2[DIR_PMM], x3 + DX3[DIR_PMM], DIR_PMM); - distributions->setDistributionInvForDirection(f[DIR_PPM], x1 + DX1[DIR_MMP], x2 + DX2[DIR_MMP], x3 + DX3[DIR_MMP], DIR_MMP); - distributions->setDistributionInvForDirection(f[DIR_MPM], x1 + DX1[DIR_PMP], x2 + DX2[DIR_PMP], x3 + DX3[DIR_PMP], DIR_PMP); + distributions->setPreCollisionDistributionForDirection(f[d0P0], x1 + DX1[d0M0], x2 + DX2[d0M0], x3 + DX3[d0M0], d0M0); + distributions->setPreCollisionDistributionForDirection(f[dPP0], x1 + DX1[dMM0], x2 + DX2[dMM0], x3 + DX3[dMM0], dMM0); + distributions->setPreCollisionDistributionForDirection(f[dMP0], x1 + DX1[dPM0], x2 + DX2[dPM0], x3 + DX3[dPM0], dPM0); + distributions->setPreCollisionDistributionForDirection(f[d0PP], x1 + DX1[d0MM], x2 + DX2[d0MM], x3 + DX3[d0MM], d0MM); + distributions->setPreCollisionDistributionForDirection(f[d0PM], x1 + DX1[d0MP], x2 + DX2[d0MP], x3 + DX3[d0MP], d0MP); + distributions->setPreCollisionDistributionForDirection(f[dPPP], x1 + DX1[dMMM], x2 + DX2[dMMM], x3 + DX3[dMMM], dMMM); + distributions->setPreCollisionDistributionForDirection(f[dMPP], x1 + DX1[dPMM], x2 + DX2[dPMM], x3 + DX3[dPMM], dPMM); + distributions->setPreCollisionDistributionForDirection(f[dPPM], x1 + DX1[dMMP], x2 + DX2[dMMP], x3 + DX3[dMMP], dMMP); + distributions->setPreCollisionDistributionForDirection(f[dMPM], x1 + DX1[dPMP], x2 + DX2[dPMP], x3 + DX3[dPMP], dPMP); break; - case DIR_0M0: - f[DIR_0M0] = ftemp[DIR_0M0] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * f[DIR_0M0]; - f[DIR_PM0] = ftemp[DIR_PM0] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * f[DIR_PM0]; - f[DIR_MM0] = ftemp[DIR_MM0] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * f[DIR_MM0]; - f[DIR_0MP] = ftemp[DIR_0MP] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * f[DIR_0MP]; - f[DIR_0MM] = ftemp[DIR_0MM] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * f[DIR_0MM]; - f[DIR_PMP] = ftemp[DIR_PMP] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * f[DIR_PMP]; - f[DIR_MMP] = ftemp[DIR_MMP] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * f[DIR_MMP]; - f[DIR_PMM] = ftemp[DIR_PMM] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * f[DIR_PMM]; - f[DIR_MMM] = ftemp[DIR_MMM] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * f[DIR_MMM]; + case d0M0: + f[d0M0] = ftemp[d0M0] * (c1oSqrt3 - vx2) + (c1o1 - c1oSqrt3 + vx2) * f[d0M0]; + f[dPM0] = ftemp[dPM0] * (c1oSqrt3 - vx2) + (c1o1 - c1oSqrt3 + vx2) * f[dPM0]; + f[dMM0] = ftemp[dMM0] * (c1oSqrt3 - vx2) + (c1o1 - c1oSqrt3 + vx2) * f[dMM0]; + f[d0MP] = ftemp[d0MP] * (c1oSqrt3 - vx2) + (c1o1 - c1oSqrt3 + vx2) * f[d0MP]; + f[d0MM] = ftemp[d0MM] * (c1oSqrt3 - vx2) + (c1o1 - c1oSqrt3 + vx2) * f[d0MM]; + f[dPMP] = ftemp[dPMP] * (c1oSqrt3 - vx2) + (c1o1 - c1oSqrt3 + vx2) * f[dPMP]; + f[dMMP] = ftemp[dMMP] * (c1oSqrt3 - vx2) + (c1o1 - c1oSqrt3 + vx2) * f[dMMP]; + f[dPMM] = ftemp[dPMM] * (c1oSqrt3 - vx2) + (c1o1 - c1oSqrt3 + vx2) * f[dPMM]; + f[dMMM] = ftemp[dMMM] * (c1oSqrt3 - vx2) + (c1o1 - c1oSqrt3 + vx2) * f[dMMM]; - distributions->setDistributionInvForDirection(f[DIR_0M0], x1 + DX1[DIR_0P0], x2 + DX2[DIR_0P0], x3 + DX3[DIR_0P0], DIR_0P0); - distributions->setDistributionInvForDirection(f[DIR_PM0], x1 + DX1[DIR_MP0], x2 + DX2[DIR_MP0], x3 + DX3[DIR_MP0], DIR_MP0); - distributions->setDistributionInvForDirection(f[DIR_MM0], x1 + DX1[DIR_PP0], x2 + DX2[DIR_PP0], x3 + DX3[DIR_PP0], DIR_PP0); - distributions->setDistributionInvForDirection(f[DIR_0MP], x1 + DX1[DIR_0PM], x2 + DX2[DIR_0PM], x3 + DX3[DIR_0PM], DIR_0PM); - distributions->setDistributionInvForDirection(f[DIR_0MM], x1 + DX1[DIR_0PP], x2 + DX2[DIR_0PP], x3 + DX3[DIR_0PP], DIR_0PP); - distributions->setDistributionInvForDirection(f[DIR_PMP], x1 + DX1[DIR_MPM], x2 + DX2[DIR_MPM], x3 + DX3[DIR_MPM], DIR_MPM); - distributions->setDistributionInvForDirection(f[DIR_MMP], x1 + DX1[DIR_PPM], x2 + DX2[DIR_PPM], x3 + DX3[DIR_PPM], DIR_PPM); - distributions->setDistributionInvForDirection(f[DIR_PMM], x1 + DX1[DIR_MPP], x2 + DX2[DIR_MPP], x3 + DX3[DIR_MPP], DIR_MPP); - distributions->setDistributionInvForDirection(f[DIR_MMM], x1 + DX1[DIR_PPP], x2 + DX2[DIR_PPP], x3 + DX3[DIR_PPP], DIR_PPP); + distributions->setPreCollisionDistributionForDirection(f[d0M0], x1 + DX1[d0P0], x2 + DX2[d0P0], x3 + DX3[d0P0], d0P0); + distributions->setPreCollisionDistributionForDirection(f[dPM0], x1 + DX1[dMP0], x2 + DX2[dMP0], x3 + DX3[dMP0], dMP0); + distributions->setPreCollisionDistributionForDirection(f[dMM0], x1 + DX1[dPP0], x2 + DX2[dPP0], x3 + DX3[dPP0], dPP0); + distributions->setPreCollisionDistributionForDirection(f[d0MP], x1 + DX1[d0PM], x2 + DX2[d0PM], x3 + DX3[d0PM], d0PM); + distributions->setPreCollisionDistributionForDirection(f[d0MM], x1 + DX1[d0PP], x2 + DX2[d0PP], x3 + DX3[d0PP], d0PP); + distributions->setPreCollisionDistributionForDirection(f[dPMP], x1 + DX1[dMPM], x2 + DX2[dMPM], x3 + DX3[dMPM], dMPM); + distributions->setPreCollisionDistributionForDirection(f[dMMP], x1 + DX1[dPPM], x2 + DX2[dPPM], x3 + DX3[dPPM], dPPM); + distributions->setPreCollisionDistributionForDirection(f[dPMM], x1 + DX1[dMPP], x2 + DX2[dMPP], x3 + DX3[dMPP], dMPP); + distributions->setPreCollisionDistributionForDirection(f[dMMM], x1 + DX1[dPPP], x2 + DX2[dPPP], x3 + DX3[dPPP], dPPP); break; - case DIR_00P: - f[DIR_00P] = ftemp[DIR_00P] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * f[DIR_00P]; - f[DIR_P0P] = ftemp[DIR_P0P] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * f[DIR_P0P]; - f[DIR_M0P] = ftemp[DIR_M0P] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * f[DIR_M0P]; - f[DIR_0PP] = ftemp[DIR_0PP] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * f[DIR_0PP]; - f[DIR_0MP] = ftemp[DIR_0MP] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * f[DIR_0MP]; - f[DIR_PPP] = ftemp[DIR_PPP] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * f[DIR_PPP]; - f[DIR_MPP] = ftemp[DIR_MPP] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * f[DIR_MPP]; - f[DIR_PMP] = ftemp[DIR_PMP] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * f[DIR_PMP]; - f[DIR_MMP] = ftemp[DIR_MMP] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * f[DIR_MMP]; + case d00P: + f[d00P] = ftemp[d00P] * (c1oSqrt3 + vx3) + (c1o1 - c1oSqrt3 - vx3) * f[d00P]; + f[dP0P] = ftemp[dP0P] * (c1oSqrt3 + vx3) + (c1o1 - c1oSqrt3 - vx3) * f[dP0P]; + f[dM0P] = ftemp[dM0P] * (c1oSqrt3 + vx3) + (c1o1 - c1oSqrt3 - vx3) * f[dM0P]; + f[d0PP] = ftemp[d0PP] * (c1oSqrt3 + vx3) + (c1o1 - c1oSqrt3 - vx3) * f[d0PP]; + f[d0MP] = ftemp[d0MP] * (c1oSqrt3 + vx3) + (c1o1 - c1oSqrt3 - vx3) * f[d0MP]; + f[dPPP] = ftemp[dPPP] * (c1oSqrt3 + vx3) + (c1o1 - c1oSqrt3 - vx3) * f[dPPP]; + f[dMPP] = ftemp[dMPP] * (c1oSqrt3 + vx3) + (c1o1 - c1oSqrt3 - vx3) * f[dMPP]; + f[dPMP] = ftemp[dPMP] * (c1oSqrt3 + vx3) + (c1o1 - c1oSqrt3 - vx3) * f[dPMP]; + f[dMMP] = ftemp[dMMP] * (c1oSqrt3 + vx3) + (c1o1 - c1oSqrt3 - vx3) * f[dMMP]; - distributions->setDistributionInvForDirection(f[DIR_00P], x1 + DX1[DIR_00M], x2 + DX2[DIR_00M], x3 + DX3[DIR_00M], DIR_00M); - distributions->setDistributionInvForDirection(f[DIR_P0P], x1 + DX1[DIR_M0M], x2 + DX2[DIR_M0M], x3 + DX3[DIR_M0M], DIR_M0M); - distributions->setDistributionInvForDirection(f[DIR_M0P], x1 + DX1[DIR_P0M], x2 + DX2[DIR_P0M], x3 + DX3[DIR_P0M], DIR_P0M); - distributions->setDistributionInvForDirection(f[DIR_0PP], x1 + DX1[DIR_0MM], x2 + DX2[DIR_0MM], x3 + DX3[DIR_0MM], DIR_0MM); - distributions->setDistributionInvForDirection(f[DIR_0MP], x1 + DX1[DIR_0PM], x2 + DX2[DIR_0PM], x3 + DX3[DIR_0PM], DIR_0PM); - distributions->setDistributionInvForDirection(f[DIR_PPP], x1 + DX1[DIR_MMM], x2 + DX2[DIR_MMM], x3 + DX3[DIR_MMM], DIR_MMM); - distributions->setDistributionInvForDirection(f[DIR_MPP], x1 + DX1[DIR_PMM], x2 + DX2[DIR_PMM], x3 + DX3[DIR_PMM], DIR_PMM); - distributions->setDistributionInvForDirection(f[DIR_PMP], x1 + DX1[DIR_MPM], x2 + DX2[DIR_MPM], x3 + DX3[DIR_MPM], DIR_MPM); - distributions->setDistributionInvForDirection(f[DIR_MMP], x1 + DX1[DIR_PPM], x2 + DX2[DIR_PPM], x3 + DX3[DIR_PPM], DIR_PPM); + distributions->setPreCollisionDistributionForDirection(f[d00P], x1 + DX1[d00M], x2 + DX2[d00M], x3 + DX3[d00M], d00M); + distributions->setPreCollisionDistributionForDirection(f[dP0P], x1 + DX1[dM0M], x2 + DX2[dM0M], x3 + DX3[dM0M], dM0M); + distributions->setPreCollisionDistributionForDirection(f[dM0P], x1 + DX1[dP0M], x2 + DX2[dP0M], x3 + DX3[dP0M], dP0M); + distributions->setPreCollisionDistributionForDirection(f[d0PP], x1 + DX1[d0MM], x2 + DX2[d0MM], x3 + DX3[d0MM], d0MM); + distributions->setPreCollisionDistributionForDirection(f[d0MP], x1 + DX1[d0PM], x2 + DX2[d0PM], x3 + DX3[d0PM], d0PM); + distributions->setPreCollisionDistributionForDirection(f[dPPP], x1 + DX1[dMMM], x2 + DX2[dMMM], x3 + DX3[dMMM], dMMM); + distributions->setPreCollisionDistributionForDirection(f[dMPP], x1 + DX1[dPMM], x2 + DX2[dPMM], x3 + DX3[dPMM], dPMM); + distributions->setPreCollisionDistributionForDirection(f[dPMP], x1 + DX1[dMPM], x2 + DX2[dMPM], x3 + DX3[dMPM], dMPM); + distributions->setPreCollisionDistributionForDirection(f[dMMP], x1 + DX1[dPPM], x2 + DX2[dPPM], x3 + DX3[dPPM], dPPM); break; - case DIR_00M: - f[DIR_00M] = ftemp[DIR_00M] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * f[DIR_00M]; - f[DIR_P0M] = ftemp[DIR_P0M] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * f[DIR_P0M]; - f[DIR_M0M] = ftemp[DIR_M0M] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * f[DIR_M0M]; - f[DIR_0PM] = ftemp[DIR_0PM] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * f[DIR_0PM]; - f[DIR_0MM] = ftemp[DIR_0MM] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * f[DIR_0MM]; - f[DIR_PPM] = ftemp[DIR_PPM] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * f[DIR_PPM]; - f[DIR_MPM] = ftemp[DIR_MPM] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * f[DIR_MPM]; - f[DIR_PMM] = ftemp[DIR_PMM] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * f[DIR_PMM]; - f[DIR_MMM] = ftemp[DIR_MMM] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * f[DIR_MMM]; + case d00M: + f[d00M] = ftemp[d00M] * (c1oSqrt3 - vx3) + (c1o1 - c1oSqrt3 + vx3) * f[d00M]; + f[dP0M] = ftemp[dP0M] * (c1oSqrt3 - vx3) + (c1o1 - c1oSqrt3 + vx3) * f[dP0M]; + f[dM0M] = ftemp[dM0M] * (c1oSqrt3 - vx3) + (c1o1 - c1oSqrt3 + vx3) * f[dM0M]; + f[d0PM] = ftemp[d0PM] * (c1oSqrt3 - vx3) + (c1o1 - c1oSqrt3 + vx3) * f[d0PM]; + f[d0MM] = ftemp[d0MM] * (c1oSqrt3 - vx3) + (c1o1 - c1oSqrt3 + vx3) * f[d0MM]; + f[dPPM] = ftemp[dPPM] * (c1oSqrt3 - vx3) + (c1o1 - c1oSqrt3 + vx3) * f[dPPM]; + f[dMPM] = ftemp[dMPM] * (c1oSqrt3 - vx3) + (c1o1 - c1oSqrt3 + vx3) * f[dMPM]; + f[dPMM] = ftemp[dPMM] * (c1oSqrt3 - vx3) + (c1o1 - c1oSqrt3 + vx3) * f[dPMM]; + f[dMMM] = ftemp[dMMM] * (c1oSqrt3 - vx3) + (c1o1 - c1oSqrt3 + vx3) * f[dMMM]; - distributions->setDistributionInvForDirection(f[DIR_00M], x1 + DX1[DIR_00P], x2 + DX2[DIR_00P], x3 + DX3[DIR_00P], DIR_00P); - distributions->setDistributionInvForDirection(f[DIR_P0M], x1 + DX1[DIR_M0P], x2 + DX2[DIR_M0P], x3 + DX3[DIR_M0P], DIR_M0P); - distributions->setDistributionInvForDirection(f[DIR_M0M], x1 + DX1[DIR_P0P], x2 + DX2[DIR_P0P], x3 + DX3[DIR_P0P], DIR_P0P); - distributions->setDistributionInvForDirection(f[DIR_0PM], x1 + DX1[DIR_0MP], x2 + DX2[DIR_0MP], x3 + DX3[DIR_0MP], DIR_0MP); - distributions->setDistributionInvForDirection(f[DIR_0MM], x1 + DX1[DIR_0PP], x2 + DX2[DIR_0PP], x3 + DX3[DIR_0PP], DIR_0PP); - distributions->setDistributionInvForDirection(f[DIR_PPM], x1 + DX1[DIR_MMP], x2 + DX2[DIR_MMP], x3 + DX3[DIR_MMP], DIR_MMP); - distributions->setDistributionInvForDirection(f[DIR_MPM], x1 + DX1[DIR_PMP], x2 + DX2[DIR_PMP], x3 + DX3[DIR_PMP], DIR_PMP); - distributions->setDistributionInvForDirection(f[DIR_PMM], x1 + DX1[DIR_MPP], x2 + DX2[DIR_MPP], x3 + DX3[DIR_MPP], DIR_MPP); - distributions->setDistributionInvForDirection(f[DIR_MMM], x1 + DX1[DIR_PPP], x2 + DX2[DIR_PPP], x3 + DX3[DIR_PPP], DIR_PPP); + distributions->setPreCollisionDistributionForDirection(f[d00M], x1 + DX1[d00P], x2 + DX2[d00P], x3 + DX3[d00P], d00P); + distributions->setPreCollisionDistributionForDirection(f[dP0M], x1 + DX1[dM0P], x2 + DX2[dM0P], x3 + DX3[dM0P], dM0P); + distributions->setPreCollisionDistributionForDirection(f[dM0M], x1 + DX1[dP0P], x2 + DX2[dP0P], x3 + DX3[dP0P], dP0P); + distributions->setPreCollisionDistributionForDirection(f[d0PM], x1 + DX1[d0MP], x2 + DX2[d0MP], x3 + DX3[d0MP], d0MP); + distributions->setPreCollisionDistributionForDirection(f[d0MM], x1 + DX1[d0PP], x2 + DX2[d0PP], x3 + DX3[d0PP], d0PP); + distributions->setPreCollisionDistributionForDirection(f[dPPM], x1 + DX1[dMMP], x2 + DX2[dMMP], x3 + DX3[dMMP], dMMP); + distributions->setPreCollisionDistributionForDirection(f[dMPM], x1 + DX1[dPMP], x2 + DX2[dPMP], x3 + DX3[dPMP], dPMP); + distributions->setPreCollisionDistributionForDirection(f[dPMM], x1 + DX1[dMPP], x2 + DX2[dMPP], x3 + DX3[dMPP], dMPP); + distributions->setPreCollisionDistributionForDirection(f[dMMM], x1 + DX1[dPPP], x2 + DX2[dPPP], x3 + DX3[dPPP], dPPP); break; default: UB_THROW(UbException(UB_EXARGS, "It isn't implemented non reflecting density boundary for this direction!")); @@ -230,8 +230,8 @@ void ThixotropyNonReflectingOutflowBCStrategy::applyBC() real h[D3Q27System::ENDF + 1]; real htemp[ENDF + 1]; - distributionsH->getDistribution(h, x1, x2, x3); - distributionsH->getDistribution(htemp, nx1, nx2, nx3); + distributionsH->getPreCollisionDistribution(h, x1, x2, x3); + distributionsH->getPreCollisionDistribution(htemp, nx1, nx2, nx3); vx1 = 0.0; vx2 = 0.0; @@ -242,131 +242,131 @@ void ThixotropyNonReflectingOutflowBCStrategy::applyBC() switch (direction) { - case DIR_P00: - h[DIR_P00] = htemp[DIR_P00] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * h[DIR_P00]; - h[DIR_PP0] = htemp[DIR_PP0] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * h[DIR_PP0]; - h[DIR_PM0] = htemp[DIR_PM0] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * h[DIR_PM0]; - h[DIR_P0P] = htemp[DIR_P0P] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * h[DIR_P0P]; - h[DIR_P0M] = htemp[DIR_P0M] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * h[DIR_P0M]; - h[DIR_PPP] = htemp[DIR_PPP] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * h[DIR_PPP]; - h[DIR_PMP] = htemp[DIR_PMP] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * h[DIR_PMP]; - h[DIR_PPM] = htemp[DIR_PPM] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * h[DIR_PPM]; - h[DIR_PMM] = htemp[DIR_PMM] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * h[DIR_PMM]; + case dP00: + h[dP00] = htemp[dP00] * (c1oSqrt3 + vx1) + (c1o1 - c1oSqrt3 - vx1) * h[dP00]; + h[dPP0] = htemp[dPP0] * (c1oSqrt3 + vx1) + (c1o1 - c1oSqrt3 - vx1) * h[dPP0]; + h[dPM0] = htemp[dPM0] * (c1oSqrt3 + vx1) + (c1o1 - c1oSqrt3 - vx1) * h[dPM0]; + h[dP0P] = htemp[dP0P] * (c1oSqrt3 + vx1) + (c1o1 - c1oSqrt3 - vx1) * h[dP0P]; + h[dP0M] = htemp[dP0M] * (c1oSqrt3 + vx1) + (c1o1 - c1oSqrt3 - vx1) * h[dP0M]; + h[dPPP] = htemp[dPPP] * (c1oSqrt3 + vx1) + (c1o1 - c1oSqrt3 - vx1) * h[dPPP]; + h[dPMP] = htemp[dPMP] * (c1oSqrt3 + vx1) + (c1o1 - c1oSqrt3 - vx1) * h[dPMP]; + h[dPPM] = htemp[dPPM] * (c1oSqrt3 + vx1) + (c1o1 - c1oSqrt3 - vx1) * h[dPPM]; + h[dPMM] = htemp[dPMM] * (c1oSqrt3 + vx1) + (c1o1 - c1oSqrt3 - vx1) * h[dPMM]; - distributionsH->setDistributionInvForDirection(h[DIR_P00], x1 + DX1[DIR_M00], x2 + DX2[DIR_M00], x3 + DX3[DIR_M00], DIR_M00); - distributionsH->setDistributionInvForDirection(h[DIR_PP0], x1 + DX1[DIR_MM0], x2 + DX2[DIR_MM0], x3 + DX3[DIR_MM0], DIR_MM0); - distributionsH->setDistributionInvForDirection(h[DIR_PM0], x1 + DX1[DIR_MP0], x2 + DX2[DIR_MP0], x3 + DX3[DIR_MP0], DIR_MP0); - distributionsH->setDistributionInvForDirection(h[DIR_P0P], x1 + DX1[DIR_M0M], x2 + DX2[DIR_M0M], x3 + DX3[DIR_M0M], DIR_M0M); - distributionsH->setDistributionInvForDirection(h[DIR_P0M], x1 + DX1[DIR_M0P], x2 + DX2[DIR_M0P], x3 + DX3[DIR_M0P], DIR_M0P); - distributionsH->setDistributionInvForDirection(h[DIR_PPP], x1 + DX1[DIR_MMM], x2 + DX2[DIR_MMM], x3 + DX3[DIR_MMM], DIR_MMM); - distributionsH->setDistributionInvForDirection(h[DIR_PMP], x1 + DX1[DIR_MPM], x2 + DX2[DIR_MPM], x3 + DX3[DIR_MPM], DIR_MPM); - distributionsH->setDistributionInvForDirection(h[DIR_PPM], x1 + DX1[DIR_MMP], x2 + DX2[DIR_MMP], x3 + DX3[DIR_MMP], DIR_MMP); - distributionsH->setDistributionInvForDirection(h[DIR_PMM], x1 + DX1[DIR_MPP], x2 + DX2[DIR_MPP], x3 + DX3[DIR_MPP], DIR_MPP); + distributionsH->setPreCollisionDistributionForDirection(h[dP00], x1 + DX1[dM00], x2 + DX2[dM00], x3 + DX3[dM00], dM00); + distributionsH->setPreCollisionDistributionForDirection(h[dPP0], x1 + DX1[dMM0], x2 + DX2[dMM0], x3 + DX3[dMM0], dMM0); + distributionsH->setPreCollisionDistributionForDirection(h[dPM0], x1 + DX1[dMP0], x2 + DX2[dMP0], x3 + DX3[dMP0], dMP0); + distributionsH->setPreCollisionDistributionForDirection(h[dP0P], x1 + DX1[dM0M], x2 + DX2[dM0M], x3 + DX3[dM0M], dM0M); + distributionsH->setPreCollisionDistributionForDirection(h[dP0M], x1 + DX1[dM0P], x2 + DX2[dM0P], x3 + DX3[dM0P], dM0P); + distributionsH->setPreCollisionDistributionForDirection(h[dPPP], x1 + DX1[dMMM], x2 + DX2[dMMM], x3 + DX3[dMMM], dMMM); + distributionsH->setPreCollisionDistributionForDirection(h[dPMP], x1 + DX1[dMPM], x2 + DX2[dMPM], x3 + DX3[dMPM], dMPM); + distributionsH->setPreCollisionDistributionForDirection(h[dPPM], x1 + DX1[dMMP], x2 + DX2[dMMP], x3 + DX3[dMMP], dMMP); + distributionsH->setPreCollisionDistributionForDirection(h[dPMM], x1 + DX1[dMPP], x2 + DX2[dMPP], x3 + DX3[dMPP], dMPP); break; - case DIR_M00: - h[DIR_M00] = htemp[DIR_M00] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * h[DIR_M00]; - h[DIR_MP0] = htemp[DIR_MP0] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * h[DIR_MP0]; - h[DIR_MM0] = htemp[DIR_MM0] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * h[DIR_MM0]; - h[DIR_M0P] = htemp[DIR_M0P] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * h[DIR_M0P]; - h[DIR_M0M] = htemp[DIR_M0M] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * h[DIR_M0M]; - h[DIR_MPP] = htemp[DIR_MPP] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * h[DIR_MPP]; - h[DIR_MMP] = htemp[DIR_MMP] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * h[DIR_MMP]; - h[DIR_MPM] = htemp[DIR_MPM] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * h[DIR_MPM]; - h[DIR_MMM] = htemp[DIR_MMM] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * h[DIR_MMM]; + case dM00: + h[dM00] = htemp[dM00] * (c1oSqrt3 - vx1) + (c1o1 - c1oSqrt3 + vx1) * h[dM00]; + h[dMP0] = htemp[dMP0] * (c1oSqrt3 - vx1) + (c1o1 - c1oSqrt3 + vx1) * h[dMP0]; + h[dMM0] = htemp[dMM0] * (c1oSqrt3 - vx1) + (c1o1 - c1oSqrt3 + vx1) * h[dMM0]; + h[dM0P] = htemp[dM0P] * (c1oSqrt3 - vx1) + (c1o1 - c1oSqrt3 + vx1) * h[dM0P]; + h[dM0M] = htemp[dM0M] * (c1oSqrt3 - vx1) + (c1o1 - c1oSqrt3 + vx1) * h[dM0M]; + h[dMPP] = htemp[dMPP] * (c1oSqrt3 - vx1) + (c1o1 - c1oSqrt3 + vx1) * h[dMPP]; + h[dMMP] = htemp[dMMP] * (c1oSqrt3 - vx1) + (c1o1 - c1oSqrt3 + vx1) * h[dMMP]; + h[dMPM] = htemp[dMPM] * (c1oSqrt3 - vx1) + (c1o1 - c1oSqrt3 + vx1) * h[dMPM]; + h[dMMM] = htemp[dMMM] * (c1oSqrt3 - vx1) + (c1o1 - c1oSqrt3 + vx1) * h[dMMM]; - distributionsH->setDistributionInvForDirection(h[DIR_M00], x1 + DX1[DIR_P00], x2 + DX2[DIR_P00], x3 + DX3[DIR_P00], DIR_P00); - distributionsH->setDistributionInvForDirection(h[DIR_MP0], x1 + DX1[DIR_PM0], x2 + DX2[DIR_PM0], x3 + DX3[DIR_PM0], DIR_PM0); - distributionsH->setDistributionInvForDirection(h[DIR_MM0], x1 + DX1[DIR_PP0], x2 + DX2[DIR_PP0], x3 + DX3[DIR_PP0], DIR_PP0); - distributionsH->setDistributionInvForDirection(h[DIR_M0P], x1 + DX1[DIR_P0M], x2 + DX2[DIR_P0M], x3 + DX3[DIR_P0M], DIR_P0M); - distributionsH->setDistributionInvForDirection(h[DIR_M0M], x1 + DX1[DIR_P0P], x2 + DX2[DIR_P0P], x3 + DX3[DIR_P0P], DIR_P0P); - distributionsH->setDistributionInvForDirection(h[DIR_MPP], x1 + DX1[DIR_PMM], x2 + DX2[DIR_PMM], x3 + DX3[DIR_PMM], DIR_PMM); - distributionsH->setDistributionInvForDirection(h[DIR_MMP], x1 + DX1[DIR_PPM], x2 + DX2[DIR_PPM], x3 + DX3[DIR_PPM], DIR_PPM); - distributionsH->setDistributionInvForDirection(h[DIR_MPM], x1 + DX1[DIR_PMP], x2 + DX2[DIR_PMP], x3 + DX3[DIR_PMP], DIR_PMP); - distributionsH->setDistributionInvForDirection(h[DIR_MMM], x1 + DX1[DIR_PPP], x2 + DX2[DIR_PPP], x3 + DX3[DIR_PPP], DIR_PPP); + distributionsH->setPreCollisionDistributionForDirection(h[dM00], x1 + DX1[dP00], x2 + DX2[dP00], x3 + DX3[dP00], dP00); + distributionsH->setPreCollisionDistributionForDirection(h[dMP0], x1 + DX1[dPM0], x2 + DX2[dPM0], x3 + DX3[dPM0], dPM0); + distributionsH->setPreCollisionDistributionForDirection(h[dMM0], x1 + DX1[dPP0], x2 + DX2[dPP0], x3 + DX3[dPP0], dPP0); + distributionsH->setPreCollisionDistributionForDirection(h[dM0P], x1 + DX1[dP0M], x2 + DX2[dP0M], x3 + DX3[dP0M], dP0M); + distributionsH->setPreCollisionDistributionForDirection(h[dM0M], x1 + DX1[dP0P], x2 + DX2[dP0P], x3 + DX3[dP0P], dP0P); + distributionsH->setPreCollisionDistributionForDirection(h[dMPP], x1 + DX1[dPMM], x2 + DX2[dPMM], x3 + DX3[dPMM], dPMM); + distributionsH->setPreCollisionDistributionForDirection(h[dMMP], x1 + DX1[dPPM], x2 + DX2[dPPM], x3 + DX3[dPPM], dPPM); + distributionsH->setPreCollisionDistributionForDirection(h[dMPM], x1 + DX1[dPMP], x2 + DX2[dPMP], x3 + DX3[dPMP], dPMP); + distributionsH->setPreCollisionDistributionForDirection(h[dMMM], x1 + DX1[dPPP], x2 + DX2[dPPP], x3 + DX3[dPPP], dPPP); break; - case DIR_0P0: - h[DIR_0P0] = htemp[DIR_0P0] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * h[DIR_0P0]; - h[DIR_PP0] = htemp[DIR_PP0] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * h[DIR_PP0]; - h[DIR_MP0] = htemp[DIR_MP0] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * h[DIR_MP0]; - h[DIR_0PP] = htemp[DIR_0PP] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * h[DIR_0PP]; - h[DIR_0PM] = htemp[DIR_0PM] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * h[DIR_0PM]; - h[DIR_PPP] = htemp[DIR_PPP] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * h[DIR_PPP]; - h[DIR_MPP] = htemp[DIR_MPP] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * h[DIR_MPP]; - h[DIR_PPM] = htemp[DIR_PPM] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * h[DIR_PPM]; - h[DIR_MPM] = htemp[DIR_MPM] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * h[DIR_MPM]; + case d0P0: + h[d0P0] = htemp[d0P0] * (c1oSqrt3 + vx2) + (c1o1 - c1oSqrt3 - vx2) * h[d0P0]; + h[dPP0] = htemp[dPP0] * (c1oSqrt3 + vx2) + (c1o1 - c1oSqrt3 - vx2) * h[dPP0]; + h[dMP0] = htemp[dMP0] * (c1oSqrt3 + vx2) + (c1o1 - c1oSqrt3 - vx2) * h[dMP0]; + h[d0PP] = htemp[d0PP] * (c1oSqrt3 + vx2) + (c1o1 - c1oSqrt3 - vx2) * h[d0PP]; + h[d0PM] = htemp[d0PM] * (c1oSqrt3 + vx2) + (c1o1 - c1oSqrt3 - vx2) * h[d0PM]; + h[dPPP] = htemp[dPPP] * (c1oSqrt3 + vx2) + (c1o1 - c1oSqrt3 - vx2) * h[dPPP]; + h[dMPP] = htemp[dMPP] * (c1oSqrt3 + vx2) + (c1o1 - c1oSqrt3 - vx2) * h[dMPP]; + h[dPPM] = htemp[dPPM] * (c1oSqrt3 + vx2) + (c1o1 - c1oSqrt3 - vx2) * h[dPPM]; + h[dMPM] = htemp[dMPM] * (c1oSqrt3 + vx2) + (c1o1 - c1oSqrt3 - vx2) * h[dMPM]; - distributionsH->setDistributionInvForDirection(h[DIR_0P0], x1 + DX1[DIR_0M0], x2 + DX2[DIR_0M0], x3 + DX3[DIR_0M0], DIR_0M0); - distributionsH->setDistributionInvForDirection(h[DIR_PP0], x1 + DX1[DIR_MM0], x2 + DX2[DIR_MM0], x3 + DX3[DIR_MM0], DIR_MM0); - distributionsH->setDistributionInvForDirection(h[DIR_MP0], x1 + DX1[DIR_PM0], x2 + DX2[DIR_PM0], x3 + DX3[DIR_PM0], DIR_PM0); - distributionsH->setDistributionInvForDirection(h[DIR_0PP], x1 + DX1[DIR_0MM], x2 + DX2[DIR_0MM], x3 + DX3[DIR_0MM], DIR_0MM); - distributionsH->setDistributionInvForDirection(h[DIR_0PM], x1 + DX1[DIR_0MP], x2 + DX2[DIR_0MP], x3 + DX3[DIR_0MP], DIR_0MP); - distributionsH->setDistributionInvForDirection(h[DIR_PPP], x1 + DX1[DIR_MMM], x2 + DX2[DIR_MMM], x3 + DX3[DIR_MMM], DIR_MMM); - distributionsH->setDistributionInvForDirection(h[DIR_MPP], x1 + DX1[DIR_PMM], x2 + DX2[DIR_PMM], x3 + DX3[DIR_PMM], DIR_PMM); - distributionsH->setDistributionInvForDirection(h[DIR_PPM], x1 + DX1[DIR_MMP], x2 + DX2[DIR_MMP], x3 + DX3[DIR_MMP], DIR_MMP); - distributionsH->setDistributionInvForDirection(h[DIR_MPM], x1 + DX1[DIR_PMP], x2 + DX2[DIR_PMP], x3 + DX3[DIR_PMP], DIR_PMP); + distributionsH->setPreCollisionDistributionForDirection(h[d0P0], x1 + DX1[d0M0], x2 + DX2[d0M0], x3 + DX3[d0M0], d0M0); + distributionsH->setPreCollisionDistributionForDirection(h[dPP0], x1 + DX1[dMM0], x2 + DX2[dMM0], x3 + DX3[dMM0], dMM0); + distributionsH->setPreCollisionDistributionForDirection(h[dMP0], x1 + DX1[dPM0], x2 + DX2[dPM0], x3 + DX3[dPM0], dPM0); + distributionsH->setPreCollisionDistributionForDirection(h[d0PP], x1 + DX1[d0MM], x2 + DX2[d0MM], x3 + DX3[d0MM], d0MM); + distributionsH->setPreCollisionDistributionForDirection(h[d0PM], x1 + DX1[d0MP], x2 + DX2[d0MP], x3 + DX3[d0MP], d0MP); + distributionsH->setPreCollisionDistributionForDirection(h[dPPP], x1 + DX1[dMMM], x2 + DX2[dMMM], x3 + DX3[dMMM], dMMM); + distributionsH->setPreCollisionDistributionForDirection(h[dMPP], x1 + DX1[dPMM], x2 + DX2[dPMM], x3 + DX3[dPMM], dPMM); + distributionsH->setPreCollisionDistributionForDirection(h[dPPM], x1 + DX1[dMMP], x2 + DX2[dMMP], x3 + DX3[dMMP], dMMP); + distributionsH->setPreCollisionDistributionForDirection(h[dMPM], x1 + DX1[dPMP], x2 + DX2[dPMP], x3 + DX3[dPMP], dPMP); break; - case DIR_0M0: - h[DIR_0M0] = htemp[DIR_0M0] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * h[DIR_0M0]; - h[DIR_PM0] = htemp[DIR_PM0] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * h[DIR_PM0]; - h[DIR_MM0] = htemp[DIR_MM0] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * h[DIR_MM0]; - h[DIR_0MP] = htemp[DIR_0MP] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * h[DIR_0MP]; - h[DIR_0MM] = htemp[DIR_0MM] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * h[DIR_0MM]; - h[DIR_PMP] = htemp[DIR_PMP] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * h[DIR_PMP]; - h[DIR_MMP] = htemp[DIR_MMP] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * h[DIR_MMP]; - h[DIR_PMM] = htemp[DIR_PMM] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * h[DIR_PMM]; - h[DIR_MMM] = htemp[DIR_MMM] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * h[DIR_MMM]; + case d0M0: + h[d0M0] = htemp[d0M0] * (c1oSqrt3 - vx2) + (c1o1 - c1oSqrt3 + vx2) * h[d0M0]; + h[dPM0] = htemp[dPM0] * (c1oSqrt3 - vx2) + (c1o1 - c1oSqrt3 + vx2) * h[dPM0]; + h[dMM0] = htemp[dMM0] * (c1oSqrt3 - vx2) + (c1o1 - c1oSqrt3 + vx2) * h[dMM0]; + h[d0MP] = htemp[d0MP] * (c1oSqrt3 - vx2) + (c1o1 - c1oSqrt3 + vx2) * h[d0MP]; + h[d0MM] = htemp[d0MM] * (c1oSqrt3 - vx2) + (c1o1 - c1oSqrt3 + vx2) * h[d0MM]; + h[dPMP] = htemp[dPMP] * (c1oSqrt3 - vx2) + (c1o1 - c1oSqrt3 + vx2) * h[dPMP]; + h[dMMP] = htemp[dMMP] * (c1oSqrt3 - vx2) + (c1o1 - c1oSqrt3 + vx2) * h[dMMP]; + h[dPMM] = htemp[dPMM] * (c1oSqrt3 - vx2) + (c1o1 - c1oSqrt3 + vx2) * h[dPMM]; + h[dMMM] = htemp[dMMM] * (c1oSqrt3 - vx2) + (c1o1 - c1oSqrt3 + vx2) * h[dMMM]; - distributionsH->setDistributionInvForDirection(h[DIR_0M0], x1 + DX1[DIR_0P0], x2 + DX2[DIR_0P0], x3 + DX3[DIR_0P0], DIR_0P0); - distributionsH->setDistributionInvForDirection(h[DIR_PM0], x1 + DX1[DIR_MP0], x2 + DX2[DIR_MP0], x3 + DX3[DIR_MP0], DIR_MP0); - distributionsH->setDistributionInvForDirection(h[DIR_MM0], x1 + DX1[DIR_PP0], x2 + DX2[DIR_PP0], x3 + DX3[DIR_PP0], DIR_PP0); - distributionsH->setDistributionInvForDirection(h[DIR_0MP], x1 + DX1[DIR_0PM], x2 + DX2[DIR_0PM], x3 + DX3[DIR_0PM], DIR_0PM); - distributionsH->setDistributionInvForDirection(h[DIR_0MM], x1 + DX1[DIR_0PP], x2 + DX2[DIR_0PP], x3 + DX3[DIR_0PP], DIR_0PP); - distributionsH->setDistributionInvForDirection(h[DIR_PMP], x1 + DX1[DIR_MPM], x2 + DX2[DIR_MPM], x3 + DX3[DIR_MPM], DIR_MPM); - distributionsH->setDistributionInvForDirection(h[DIR_MMP], x1 + DX1[DIR_PPM], x2 + DX2[DIR_PPM], x3 + DX3[DIR_PPM], DIR_PPM); - distributionsH->setDistributionInvForDirection(h[DIR_PMM], x1 + DX1[DIR_MPP], x2 + DX2[DIR_MPP], x3 + DX3[DIR_MPP], DIR_MPP); - distributionsH->setDistributionInvForDirection(h[DIR_MMM], x1 + DX1[DIR_PPP], x2 + DX2[DIR_PPP], x3 + DX3[DIR_PPP], DIR_PPP); + distributionsH->setPreCollisionDistributionForDirection(h[d0M0], x1 + DX1[d0P0], x2 + DX2[d0P0], x3 + DX3[d0P0], d0P0); + distributionsH->setPreCollisionDistributionForDirection(h[dPM0], x1 + DX1[dMP0], x2 + DX2[dMP0], x3 + DX3[dMP0], dMP0); + distributionsH->setPreCollisionDistributionForDirection(h[dMM0], x1 + DX1[dPP0], x2 + DX2[dPP0], x3 + DX3[dPP0], dPP0); + distributionsH->setPreCollisionDistributionForDirection(h[d0MP], x1 + DX1[d0PM], x2 + DX2[d0PM], x3 + DX3[d0PM], d0PM); + distributionsH->setPreCollisionDistributionForDirection(h[d0MM], x1 + DX1[d0PP], x2 + DX2[d0PP], x3 + DX3[d0PP], d0PP); + distributionsH->setPreCollisionDistributionForDirection(h[dPMP], x1 + DX1[dMPM], x2 + DX2[dMPM], x3 + DX3[dMPM], dMPM); + distributionsH->setPreCollisionDistributionForDirection(h[dMMP], x1 + DX1[dPPM], x2 + DX2[dPPM], x3 + DX3[dPPM], dPPM); + distributionsH->setPreCollisionDistributionForDirection(h[dPMM], x1 + DX1[dMPP], x2 + DX2[dMPP], x3 + DX3[dMPP], dMPP); + distributionsH->setPreCollisionDistributionForDirection(h[dMMM], x1 + DX1[dPPP], x2 + DX2[dPPP], x3 + DX3[dPPP], dPPP); break; - case DIR_00P: - h[DIR_00P] = htemp[DIR_00P] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * h[DIR_00P]; - h[DIR_P0P] = htemp[DIR_P0P] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * h[DIR_P0P]; - h[DIR_M0P] = htemp[DIR_M0P] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * h[DIR_M0P]; - h[DIR_0PP] = htemp[DIR_0PP] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * h[DIR_0PP]; - h[DIR_0MP] = htemp[DIR_0MP] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * h[DIR_0MP]; - h[DIR_PPP] = htemp[DIR_PPP] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * h[DIR_PPP]; - h[DIR_MPP] = htemp[DIR_MPP] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * h[DIR_MPP]; - h[DIR_PMP] = htemp[DIR_PMP] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * h[DIR_PMP]; - h[DIR_MMP] = htemp[DIR_MMP] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * h[DIR_MMP]; + case d00P: + h[d00P] = htemp[d00P] * (c1oSqrt3 + vx3) + (c1o1 - c1oSqrt3 - vx3) * h[d00P]; + h[dP0P] = htemp[dP0P] * (c1oSqrt3 + vx3) + (c1o1 - c1oSqrt3 - vx3) * h[dP0P]; + h[dM0P] = htemp[dM0P] * (c1oSqrt3 + vx3) + (c1o1 - c1oSqrt3 - vx3) * h[dM0P]; + h[d0PP] = htemp[d0PP] * (c1oSqrt3 + vx3) + (c1o1 - c1oSqrt3 - vx3) * h[d0PP]; + h[d0MP] = htemp[d0MP] * (c1oSqrt3 + vx3) + (c1o1 - c1oSqrt3 - vx3) * h[d0MP]; + h[dPPP] = htemp[dPPP] * (c1oSqrt3 + vx3) + (c1o1 - c1oSqrt3 - vx3) * h[dPPP]; + h[dMPP] = htemp[dMPP] * (c1oSqrt3 + vx3) + (c1o1 - c1oSqrt3 - vx3) * h[dMPP]; + h[dPMP] = htemp[dPMP] * (c1oSqrt3 + vx3) + (c1o1 - c1oSqrt3 - vx3) * h[dPMP]; + h[dMMP] = htemp[dMMP] * (c1oSqrt3 + vx3) + (c1o1 - c1oSqrt3 - vx3) * h[dMMP]; - distributionsH->setDistributionInvForDirection(h[DIR_00P], x1 + DX1[DIR_00M], x2 + DX2[DIR_00M], x3 + DX3[DIR_00M], DIR_00M); - distributionsH->setDistributionInvForDirection(h[DIR_P0P], x1 + DX1[DIR_M0M], x2 + DX2[DIR_M0M], x3 + DX3[DIR_M0M], DIR_M0M); - distributionsH->setDistributionInvForDirection(h[DIR_M0P], x1 + DX1[DIR_P0M], x2 + DX2[DIR_P0M], x3 + DX3[DIR_P0M], DIR_P0M); - distributionsH->setDistributionInvForDirection(h[DIR_0PP], x1 + DX1[DIR_0MM], x2 + DX2[DIR_0MM], x3 + DX3[DIR_0MM], DIR_0MM); - distributionsH->setDistributionInvForDirection(h[DIR_0MP], x1 + DX1[DIR_0PM], x2 + DX2[DIR_0PM], x3 + DX3[DIR_0PM], DIR_0PM); - distributionsH->setDistributionInvForDirection(h[DIR_PPP], x1 + DX1[DIR_MMM], x2 + DX2[DIR_MMM], x3 + DX3[DIR_MMM], DIR_MMM); - distributionsH->setDistributionInvForDirection(h[DIR_MPP], x1 + DX1[DIR_PMM], x2 + DX2[DIR_PMM], x3 + DX3[DIR_PMM], DIR_PMM); - distributionsH->setDistributionInvForDirection(h[DIR_PMP], x1 + DX1[DIR_MPM], x2 + DX2[DIR_MPM], x3 + DX3[DIR_MPM], DIR_MPM); - distributionsH->setDistributionInvForDirection(h[DIR_MMP], x1 + DX1[DIR_PPM], x2 + DX2[DIR_PPM], x3 + DX3[DIR_PPM], DIR_PPM); + distributionsH->setPreCollisionDistributionForDirection(h[d00P], x1 + DX1[d00M], x2 + DX2[d00M], x3 + DX3[d00M], d00M); + distributionsH->setPreCollisionDistributionForDirection(h[dP0P], x1 + DX1[dM0M], x2 + DX2[dM0M], x3 + DX3[dM0M], dM0M); + distributionsH->setPreCollisionDistributionForDirection(h[dM0P], x1 + DX1[dP0M], x2 + DX2[dP0M], x3 + DX3[dP0M], dP0M); + distributionsH->setPreCollisionDistributionForDirection(h[d0PP], x1 + DX1[d0MM], x2 + DX2[d0MM], x3 + DX3[d0MM], d0MM); + distributionsH->setPreCollisionDistributionForDirection(h[d0MP], x1 + DX1[d0PM], x2 + DX2[d0PM], x3 + DX3[d0PM], d0PM); + distributionsH->setPreCollisionDistributionForDirection(h[dPPP], x1 + DX1[dMMM], x2 + DX2[dMMM], x3 + DX3[dMMM], dMMM); + distributionsH->setPreCollisionDistributionForDirection(h[dMPP], x1 + DX1[dPMM], x2 + DX2[dPMM], x3 + DX3[dPMM], dPMM); + distributionsH->setPreCollisionDistributionForDirection(h[dPMP], x1 + DX1[dMPM], x2 + DX2[dMPM], x3 + DX3[dMPM], dMPM); + distributionsH->setPreCollisionDistributionForDirection(h[dMMP], x1 + DX1[dPPM], x2 + DX2[dPPM], x3 + DX3[dPPM], dPPM); break; - case DIR_00M: - h[DIR_00M] = htemp[DIR_00M] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * h[DIR_00M]; - h[DIR_P0M] = htemp[DIR_P0M] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * h[DIR_P0M]; - h[DIR_M0M] = htemp[DIR_M0M] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * h[DIR_M0M]; - h[DIR_0PM] = htemp[DIR_0PM] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * h[DIR_0PM]; - h[DIR_0MM] = htemp[DIR_0MM] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * h[DIR_0MM]; - h[DIR_PPM] = htemp[DIR_PPM] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * h[DIR_PPM]; - h[DIR_MPM] = htemp[DIR_MPM] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * h[DIR_MPM]; - h[DIR_PMM] = htemp[DIR_PMM] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * h[DIR_PMM]; - h[DIR_MMM] = htemp[DIR_MMM] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * h[DIR_MMM]; + case d00M: + h[d00M] = htemp[d00M] * (c1oSqrt3 - vx3) + (c1o1 - c1oSqrt3 + vx3) * h[d00M]; + h[dP0M] = htemp[dP0M] * (c1oSqrt3 - vx3) + (c1o1 - c1oSqrt3 + vx3) * h[dP0M]; + h[dM0M] = htemp[dM0M] * (c1oSqrt3 - vx3) + (c1o1 - c1oSqrt3 + vx3) * h[dM0M]; + h[d0PM] = htemp[d0PM] * (c1oSqrt3 - vx3) + (c1o1 - c1oSqrt3 + vx3) * h[d0PM]; + h[d0MM] = htemp[d0MM] * (c1oSqrt3 - vx3) + (c1o1 - c1oSqrt3 + vx3) * h[d0MM]; + h[dPPM] = htemp[dPPM] * (c1oSqrt3 - vx3) + (c1o1 - c1oSqrt3 + vx3) * h[dPPM]; + h[dMPM] = htemp[dMPM] * (c1oSqrt3 - vx3) + (c1o1 - c1oSqrt3 + vx3) * h[dMPM]; + h[dPMM] = htemp[dPMM] * (c1oSqrt3 - vx3) + (c1o1 - c1oSqrt3 + vx3) * h[dPMM]; + h[dMMM] = htemp[dMMM] * (c1oSqrt3 - vx3) + (c1o1 - c1oSqrt3 + vx3) * h[dMMM]; - distributionsH->setDistributionInvForDirection(h[DIR_00M], x1 + DX1[DIR_00P], x2 + DX2[DIR_00P], x3 + DX3[DIR_00P], DIR_00P); - distributionsH->setDistributionInvForDirection(h[DIR_P0M], x1 + DX1[DIR_M0P], x2 + DX2[DIR_M0P], x3 + DX3[DIR_M0P], DIR_M0P); - distributionsH->setDistributionInvForDirection(h[DIR_M0M], x1 + DX1[DIR_P0P], x2 + DX2[DIR_P0P], x3 + DX3[DIR_P0P], DIR_P0P); - distributionsH->setDistributionInvForDirection(h[DIR_0PM], x1 + DX1[DIR_0MP], x2 + DX2[DIR_0MP], x3 + DX3[DIR_0MP], DIR_0MP); - distributionsH->setDistributionInvForDirection(h[DIR_0MM], x1 + DX1[DIR_0PP], x2 + DX2[DIR_0PP], x3 + DX3[DIR_0PP], DIR_0PP); - distributionsH->setDistributionInvForDirection(h[DIR_PPM], x1 + DX1[DIR_MMP], x2 + DX2[DIR_MMP], x3 + DX3[DIR_MMP], DIR_MMP); - distributionsH->setDistributionInvForDirection(h[DIR_MPM], x1 + DX1[DIR_PMP], x2 + DX2[DIR_PMP], x3 + DX3[DIR_PMP], DIR_PMP); - distributionsH->setDistributionInvForDirection(h[DIR_PMM], x1 + DX1[DIR_MPP], x2 + DX2[DIR_MPP], x3 + DX3[DIR_MPP], DIR_MPP); - distributionsH->setDistributionInvForDirection(h[DIR_MMM], x1 + DX1[DIR_PPP], x2 + DX2[DIR_PPP], x3 + DX3[DIR_PPP], DIR_PPP); + distributionsH->setPreCollisionDistributionForDirection(h[d00M], x1 + DX1[d00P], x2 + DX2[d00P], x3 + DX3[d00P], d00P); + distributionsH->setPreCollisionDistributionForDirection(h[dP0M], x1 + DX1[dM0P], x2 + DX2[dM0P], x3 + DX3[dM0P], dM0P); + distributionsH->setPreCollisionDistributionForDirection(h[dM0M], x1 + DX1[dP0P], x2 + DX2[dP0P], x3 + DX3[dP0P], dP0P); + distributionsH->setPreCollisionDistributionForDirection(h[d0PM], x1 + DX1[d0MP], x2 + DX2[d0MP], x3 + DX3[d0MP], d0MP); + distributionsH->setPreCollisionDistributionForDirection(h[d0MM], x1 + DX1[d0PP], x2 + DX2[d0PP], x3 + DX3[d0PP], d0PP); + distributionsH->setPreCollisionDistributionForDirection(h[dPPM], x1 + DX1[dMMP], x2 + DX2[dMMP], x3 + DX3[dMMP], dMMP); + distributionsH->setPreCollisionDistributionForDirection(h[dMPM], x1 + DX1[dPMP], x2 + DX2[dPMP], x3 + DX3[dPMP], dPMP); + distributionsH->setPreCollisionDistributionForDirection(h[dPMM], x1 + DX1[dMPP], x2 + DX2[dMPP], x3 + DX3[dMPP], dMPP); + distributionsH->setPreCollisionDistributionForDirection(h[dMMM], x1 + DX1[dPPP], x2 + DX2[dPPP], x3 + DX3[dPPP], dPPP); break; default: UB_THROW(UbException(UB_EXARGS, "It isn't implemented non reflecting density boundary for this direction!")); diff --git a/src/cpu/NonNewtonianFluids/BoundaryConditions/ThixotropyVelocityBCStrategy.cpp b/src/cpu/NonNewtonianFluids/BoundaryConditions/ThixotropyVelocityBCStrategy.cpp index 2b2dd1714eb7a9decceeb92a28a5dbfae6944e9c..2a772def0572e982a60edba7d5c2d94251ab3fad 100644 --- a/src/cpu/NonNewtonianFluids/BoundaryConditions/ThixotropyVelocityBCStrategy.cpp +++ b/src/cpu/NonNewtonianFluids/BoundaryConditions/ThixotropyVelocityBCStrategy.cpp @@ -77,8 +77,8 @@ void ThixotropyVelocityBCStrategy::applyBC() real feq[D3Q27System::ENDF + 1]; real h[D3Q27System::ENDF + 1]; - distributions->getDistributionInv(f, x1, x2, x3); - distributionsH->getDistributionInv(h, x1, x2, x3); + distributions->getPostCollisionDistribution(f, x1, x2, x3); + distributionsH->getPostCollisionDistribution(h, x1, x2, x3); real rho, vx1, vx2, vx3, drho; calcMacrosFct(f, drho, vx1, vx2, vx3); @@ -94,12 +94,12 @@ void ThixotropyVelocityBCStrategy::applyBC() int nx3 = x3; //flag points in direction of fluid - if (bcPtr->hasVelocityBoundaryFlag(DIR_P00)) { nx1 -= 1; } - else if (bcPtr->hasVelocityBoundaryFlag(DIR_M00)) { nx1 += 1; } - else if (bcPtr->hasVelocityBoundaryFlag(DIR_0P0)) { nx2 -= 1; } - else if (bcPtr->hasVelocityBoundaryFlag(DIR_0M0)) { nx2 += 1; } - else if (bcPtr->hasVelocityBoundaryFlag(DIR_00P)) { nx3 -= 1; } - else if (bcPtr->hasVelocityBoundaryFlag(DIR_00M)) { nx3 += 1; } + if (bcPtr->hasVelocityBoundaryFlag(dP00)) { nx1 -= 1; } + else if (bcPtr->hasVelocityBoundaryFlag(dM00)) { nx1 += 1; } + else if (bcPtr->hasVelocityBoundaryFlag(d0P0)) { nx2 -= 1; } + else if (bcPtr->hasVelocityBoundaryFlag(d0M0)) { nx2 += 1; } + else if (bcPtr->hasVelocityBoundaryFlag(d00P)) { nx3 -= 1; } + else if (bcPtr->hasVelocityBoundaryFlag(d00M)) { nx3 += 1; } else UB_THROW(UbException(UB_EXARGS, "Danger...no orthogonal BC-Flag on velocity boundary...")); //lambdaBC = bcPtr->getBoundaryThixotropy(); @@ -112,11 +112,11 @@ void ThixotropyVelocityBCStrategy::applyBC() // { // LBMReal ftemp = calcFeqsForDirFct(fdir, rho, vx1, vx2, vx3); // ftemp = calcFeqsForDirFct(fdir, rhoBC, vx1, vx2, vx3) + f[fdir] - ftemp; - // distributions->setDistributionForDirection(ftemp, nx1, nx2, nx3, fdir); + // distributions->setPostCollisionDistributionForDirection(ftemp, nx1, nx2, nx3, fdir); // LBMReal htemp = D3Q27System::getCompFeqForDirection(fdir, lambda, vx1, vx2, vx3); // htemp = D3Q27System::getCompFeqForDirection(fdir,lambdaBC, vx1, vx2, vx3) + h[fdir] - htemp; - // distributionsH->setDistributionForDirection(htemp, nx1, nx2, nx3, fdir); + // distributionsH->setPostCollisionDistributionForDirection(htemp, nx1, nx2, nx3, fdir); // } //} @@ -128,11 +128,11 @@ void ThixotropyVelocityBCStrategy::applyBC() real q = bcPtr->getQ(invDir);// m+m q=0 stabiler real velocity = bcPtr->getBoundaryVelocity(invDir); real fReturn = ((vf::basics::constant::c1o1 - q) / (vf::basics::constant::c1o1 + q)) * ((f[invDir] - feq[invDir]) / (vf::basics::constant::c1o1 - collFactor) + feq[invDir]) + ((q * (f[invDir] + f[fdir]) - velocity * rho) / (vf::basics::constant::c1o1 + q)); - distributions->setDistributionForDirection(fReturn, x1 + D3Q27System::DX1[invDir], x2 + D3Q27System::DX2[invDir], x3 + D3Q27System::DX3[invDir], fdir); + distributions->setPostCollisionDistributionForDirection(fReturn, x1 + D3Q27System::DX1[invDir], x2 + D3Q27System::DX2[invDir], x3 + D3Q27System::DX3[invDir], fdir); real htemp = D3Q27System::getCompFeqForDirection(fdir, lambda, vx1, vx2, vx3); htemp = D3Q27System::getCompFeqForDirection(fdir, lambdaBC, vx1, vx2, vx3) + h[fdir] - htemp; - distributionsH->setDistributionForDirection(htemp, nx1, nx2, nx3, fdir); + distributionsH->setPostCollisionDistributionForDirection(htemp, nx1, nx2, nx3, fdir); } } } diff --git a/src/cpu/NonNewtonianFluids/BoundaryConditions/ThixotropyVelocityWithDensityBCStrategy.cpp b/src/cpu/NonNewtonianFluids/BoundaryConditions/ThixotropyVelocityWithDensityBCStrategy.cpp index 5d91a1e7a38ea5fc3d20e8aef5f78c9fad6a468d..529b1bb2c55f74c82690f6696d11050fbd8f687e 100644 --- a/src/cpu/NonNewtonianFluids/BoundaryConditions/ThixotropyVelocityWithDensityBCStrategy.cpp +++ b/src/cpu/NonNewtonianFluids/BoundaryConditions/ThixotropyVelocityWithDensityBCStrategy.cpp @@ -68,10 +68,10 @@ void ThixotropyVelocityWithDensityBCStrategy::applyBC() //velocity bc for non reflecting pressure bc real f[D3Q27System::ENDF+1]; - distributions->getDistributionInv(f, x1, x2, x3); + distributions->getPostCollisionDistribution(f, x1, x2, x3); real h[D3Q27System::ENDF + 1]; - distributionsH->getDistributionInv(h, x1, x2, x3); + distributionsH->getPostCollisionDistribution(h, x1, x2, x3); real rho, vx1, vx2, vx3, drho; calcMacrosFct(f, drho, vx1, vx2, vx3); @@ -87,12 +87,12 @@ void ThixotropyVelocityWithDensityBCStrategy::applyBC() int nx3 = x3; //flag points in direction of fluid - if (bcPtr->hasVelocityBoundaryFlag(DIR_P00)) { nx1 -= 1; } - else if (bcPtr->hasVelocityBoundaryFlag(DIR_M00)) { nx1 += 1; } - else if (bcPtr->hasVelocityBoundaryFlag(DIR_0P0)) { nx2 -= 1; } - else if (bcPtr->hasVelocityBoundaryFlag(DIR_0M0)) { nx2 += 1; } - else if (bcPtr->hasVelocityBoundaryFlag(DIR_00P)) { nx3 -= 1; } - else if (bcPtr->hasVelocityBoundaryFlag(DIR_00M)) { nx3 += 1; } + if (bcPtr->hasVelocityBoundaryFlag(dP00)) { nx1 -= 1; } + else if (bcPtr->hasVelocityBoundaryFlag(dM00)) { nx1 += 1; } + else if (bcPtr->hasVelocityBoundaryFlag(d0P0)) { nx2 -= 1; } + else if (bcPtr->hasVelocityBoundaryFlag(d0M0)) { nx2 += 1; } + else if (bcPtr->hasVelocityBoundaryFlag(d00P)) { nx3 -= 1; } + else if (bcPtr->hasVelocityBoundaryFlag(d00M)) { nx3 += 1; } else UB_THROW(UbException(UB_EXARGS, "Danger...no orthogonal BC-Flag on velocity boundary...")); for (int fdir = D3Q27System::FSTARTDIR; fdir <= D3Q27System::FENDDIR; fdir++) @@ -117,7 +117,7 @@ void ThixotropyVelocityWithDensityBCStrategy::applyBC() real velocity = bcPtr->getBoundaryVelocity(fdir); real fReturn = (f[fdir] + f[invDir] - velocity*rho) / vf::basics::constant::c2o1 - drho*D3Q27System::WEIGTH[invDir]; - distributions->setDistributionForDirection(fReturn, nX1, nX2, nX3, invDir); + distributions->setPostCollisionDistributionForDirection(fReturn, nX1, nX2, nX3, invDir); } } @@ -125,7 +125,7 @@ void ThixotropyVelocityWithDensityBCStrategy::applyBC() { real htemp = D3Q27System::getCompFeqForDirection(fdir, lambda, vx1, vx2, vx3); htemp = D3Q27System::getCompFeqForDirection(fdir, lambdaBC, vx1, vx2, vx3) + h[fdir] - htemp; - distributionsH->setDistributionForDirection(htemp, nx1, nx2, nx3, fdir); + distributionsH->setPostCollisionDistributionForDirection(htemp, nx1, nx2, nx3, fdir); } } } diff --git a/src/cpu/NonNewtonianFluids/CMakeLists.txt b/src/cpu/NonNewtonianFluids/CMakeLists.txt index 35765164bce5ce208f1c43fcc7345cbd77f4e999..261919282ce830bfcf1e364443c439338b642d88 100644 --- a/src/cpu/NonNewtonianFluids/CMakeLists.txt +++ b/src/cpu/NonNewtonianFluids/CMakeLists.txt @@ -1 +1 @@ -vf_add_library(PUBLIC_LINK VirtualFluidsCore) \ No newline at end of file +vf_add_library(PUBLIC_LINK cpu_core) \ No newline at end of file diff --git a/src/cpu/NonNewtonianFluids/LBM/Rheology.h b/src/cpu/NonNewtonianFluids/LBM/Rheology.h index 782810ca3f68290310af3e70d440488c27bf96de..54e375de60951129af1e37a9fb1569e2fd4bab4c 100644 --- a/src/cpu/NonNewtonianFluids/LBM/Rheology.h +++ b/src/cpu/NonNewtonianFluids/LBM/Rheology.h @@ -89,7 +89,7 @@ private: ////////////////////////////////////////////////////////////////////////// inline real Rheology::getBinghamCollFactor(real omegaInf, real shearRate, real drho) { - real cs2 = vf::basics::constant::one_over_sqrt3 * vf::basics::constant::one_over_sqrt3; + real cs2 = vf::basics::constant::c1oSqrt3 * vf::basics::constant::c1oSqrt3; real rho = vf::basics::constant::c1o1 + drho; //analytical solution real omega = omegaInf * (vf::basics::constant::c1o1 - (omegaInf * tau0) / (shearRate * cs2 * rho + UbMath::Epsilon<real>::val())); @@ -120,7 +120,7 @@ inline real Rheology::getBinghamCollFactor(real omegaInf, real shearRate, real d inline real Rheology::getBinghamCollFactorOld(real omegaInf, real shearRate, real drho) { - const real cs2 = vf::basics::constant::c1o3; // UbMath::one_over_sqrt3* UbMath::one_over_sqrt3; + const real cs2 = vf::basics::constant::c1o3; // UbMath::c1oSqrt3* UbMath::c1oSqrt3; real rho = vf::basics::constant::c1o1 + drho; if (rho * cs2 * (vf::basics::constant::c1o1 / omegaInf - vf::basics::constant::c1o2) * shearRate < tau0) @@ -131,7 +131,7 @@ inline real Rheology::getBinghamCollFactorOld(real omegaInf, real shearRate, rea ////////////////////////////////////////////////////////////////////////// inline real Rheology::getHerschelBulkleyCollFactor(real omegaInf, real shearRate, real drho) { - real cs2 = vf::basics::constant::one_over_sqrt3 * vf::basics::constant::one_over_sqrt3; + real cs2 = vf::basics::constant::c1oSqrt3 * vf::basics::constant::c1oSqrt3; real rho = vf::basics::constant::c1o1 + drho; real gammaDot = shearRate; real omega = omegaInf; @@ -164,7 +164,7 @@ inline real Rheology::getHerschelBulkleyCollFactorBackward(real shearRate, real { real rho = vf::basics::constant::c1o1 + drho; real gamma = shearRate + UbMath::Epsilon<real>::val(); - real cs2 = vf::basics::constant::one_over_sqrt3 * vf::basics::constant::one_over_sqrt3; + real cs2 = vf::basics::constant::c1oSqrt3 * vf::basics::constant::c1oSqrt3; return 1.0 / ((tau0 + k * std::pow(gamma, n)) / (cs2 * rho * gamma) + vf::basics::constant::c1o2); } @@ -174,7 +174,7 @@ inline real Rheology::getPowellEyringCollFactor(real omegaInf, real shearRate, r // using namespace UbMath; using namespace vf::basics::constant; - real cs2 = c1o3; // UbMath::one_over_sqrt3* UbMath::one_over_sqrt3; + real cs2 = c1o3; // UbMath::c1oSqrt3* UbMath::c1oSqrt3; real rho = c1o1 + drho; real gammaDot = shearRate; real omega = omegaInf; diff --git a/src/cpu/NonNewtonianFluids/LBM/RheologyInterpolator.cpp b/src/cpu/NonNewtonianFluids/LBM/RheologyInterpolator.cpp index 8da8886a42b0a9f9c784eca708618217f06c883a..d33bbef61f8731302b8c7b8ba0ce8b17a7bd9703 100644 --- a/src/cpu/NonNewtonianFluids/LBM/RheologyInterpolator.cpp +++ b/src/cpu/NonNewtonianFluids/LBM/RheologyInterpolator.cpp @@ -117,11 +117,11 @@ void RheologyInterpolator::calcMoments(const real* const f, real omegaInf, real& press = rho; //interpolate rho! - kxy = -3.*omega*((((f[DIR_MMP]+f[DIR_PPM])-(f[DIR_MPP]+f[DIR_PMM]))+((f[DIR_MMM]+f[DIR_PPP])-(f[DIR_MPM]+f[DIR_PMP])))+((f[DIR_MM0]+f[DIR_PP0])-(f[DIR_MP0]+f[DIR_PM0]))-(vx1*vx2));// might not be optimal MG 25.2.13 - kyz = -3.*omega*((((f[DIR_MMM]+f[DIR_PPP])-(f[DIR_PMP]+f[DIR_MPM]))+((f[DIR_PMM]+f[DIR_MPP])-(f[DIR_MMP]+f[DIR_PPM])))+((f[DIR_0MM]+f[DIR_0PP])-(f[DIR_0MP]+f[DIR_0PM]))-(vx2*vx3)); - kxz = -3.*omega*((((f[DIR_MPM]+f[DIR_PMP])-(f[DIR_MMP]+f[DIR_PPM]))+((f[DIR_MMM]+f[DIR_PPP])-(f[DIR_PMM]+f[DIR_MPP])))+((f[DIR_M0M]+f[DIR_P0P])-(f[DIR_M0P]+f[DIR_P0M]))-(vx1*vx3)); - kxxMyy = -3./2.*omega*((((f[DIR_M0M]+f[DIR_P0P])-(f[DIR_0MM]+f[DIR_0PP]))+((f[DIR_M0P]+f[DIR_P0M])-(f[DIR_0MP]+f[DIR_0PM])))+((f[DIR_M00]+f[DIR_P00])-(f[DIR_0M0]+f[DIR_0P0]))-(vx1*vx1-vx2*vx2)); - kxxMzz = -3./2.*omega*((((f[DIR_MP0]+f[DIR_PM0])-(f[DIR_0MM]+f[DIR_0PP]))+((f[DIR_MM0]+f[DIR_PP0])-(f[DIR_0MP]+f[DIR_0PM])))+((f[DIR_M00]+f[DIR_P00])-(f[DIR_00M]+f[DIR_00P]))-(vx1*vx1-vx3*vx3)); + kxy = -3.*omega*((((f[dMMP]+f[dPPM])-(f[dMPP]+f[dPMM]))+((f[dMMM]+f[dPPP])-(f[dMPM]+f[dPMP])))+((f[dMM0]+f[dPP0])-(f[dMP0]+f[dPM0]))-(vx1*vx2));// might not be optimal MG 25.2.13 + kyz = -3.*omega*((((f[dMMM]+f[dPPP])-(f[dPMP]+f[dMPM]))+((f[dPMM]+f[dMPP])-(f[dMMP]+f[dPPM])))+((f[d0MM]+f[d0PP])-(f[d0MP]+f[d0PM]))-(vx2*vx3)); + kxz = -3.*omega*((((f[dMPM]+f[dPMP])-(f[dMMP]+f[dPPM]))+((f[dMMM]+f[dPPP])-(f[dPMM]+f[dMPP])))+((f[dM0M]+f[dP0P])-(f[dM0P]+f[dP0M]))-(vx1*vx3)); + kxxMyy = -3./2.*omega*((((f[dM0M]+f[dP0P])-(f[d0MM]+f[d0PP]))+((f[dM0P]+f[dP0M])-(f[d0MP]+f[d0PM])))+((f[dM00]+f[dP00])-(f[d0M0]+f[d0P0]))-(vx1*vx1-vx2*vx2)); + kxxMzz = -3./2.*omega*((((f[dMP0]+f[dPM0])-(f[d0MM]+f[d0PP]))+((f[dMM0]+f[dPP0])-(f[d0MP]+f[d0PM])))+((f[dM00]+f[dP00])-(f[d00M]+f[d00P]))-(vx1*vx1-vx3*vx3)); } ////////////////////////////////////////////////////////////////////////// void RheologyInterpolator::calcInterpolatedCoefficiets_intern(const D3Q27ICell& icell, @@ -440,33 +440,33 @@ void RheologyInterpolator::calcInterpolatedNode(real* f, /*real omega,*/ real x, real feq[ENDF+1]; D3Q27System::calcIncompFeq(feq,rho,vx1,vx2,vx3); - f[DIR_P00] = f_E + xs*x_E + ys*y_E + zs*z_E + xs*ys*xy_E + xs*zs*xz_E + ys*zs*yz_E + feq[DIR_P00]; - f[DIR_M00] = f_E + xs*x_E + ys*y_E + zs*z_E + xs*ys*xy_E + xs*zs*xz_E + ys*zs*yz_E + feq[DIR_M00]; - f[DIR_0P0] = f_N + xs*x_N + ys*y_N + zs*z_N + xs*ys*xy_N + xs*zs*xz_N + ys*zs*yz_N + feq[DIR_0P0]; - f[DIR_0M0] = f_N + xs*x_N + ys*y_N + zs*z_N + xs*ys*xy_N + xs*zs*xz_N + ys*zs*yz_N + feq[DIR_0M0]; - f[DIR_00P] = f_T + xs*x_T + ys*y_T + zs*z_T + xs*ys*xy_T + xs*zs*xz_T + ys*zs*yz_T + feq[DIR_00P]; - f[DIR_00M] = f_T + xs*x_T + ys*y_T + zs*z_T + xs*ys*xy_T + xs*zs*xz_T + ys*zs*yz_T + feq[DIR_00M]; - f[DIR_PP0] = f_NE + xs*x_NE + ys*y_NE + zs*z_NE + xs*ys*xy_NE + xs*zs*xz_NE + ys*zs*yz_NE + feq[DIR_PP0]; - f[DIR_MM0] = f_NE + xs*x_NE + ys*y_NE + zs*z_NE + xs*ys*xy_NE + xs*zs*xz_NE + ys*zs*yz_NE + feq[DIR_MM0]; - f[DIR_PM0] = f_SE + xs*x_SE + ys*y_SE + zs*z_SE + xs*ys*xy_SE + xs*zs*xz_SE + ys*zs*yz_SE + feq[DIR_PM0]; - f[DIR_MP0] = f_SE + xs*x_SE + ys*y_SE + zs*z_SE + xs*ys*xy_SE + xs*zs*xz_SE + ys*zs*yz_SE + feq[DIR_MP0]; - f[DIR_P0P] = f_TE + xs*x_TE + ys*y_TE + zs*z_TE + xs*ys*xy_TE + xs*zs*xz_TE + ys*zs*yz_TE + feq[DIR_P0P]; - f[DIR_M0M] = f_TE + xs*x_TE + ys*y_TE + zs*z_TE + xs*ys*xy_TE + xs*zs*xz_TE + ys*zs*yz_TE + feq[DIR_M0M]; - f[DIR_P0M] = f_BE + xs*x_BE + ys*y_BE + zs*z_BE + xs*ys*xy_BE + xs*zs*xz_BE + ys*zs*yz_BE + feq[DIR_P0M]; - f[DIR_M0P] = f_BE + xs*x_BE + ys*y_BE + zs*z_BE + xs*ys*xy_BE + xs*zs*xz_BE + ys*zs*yz_BE + feq[DIR_M0P]; - f[DIR_0PP] = f_TN + xs*x_TN + ys*y_TN + zs*z_TN + xs*ys*xy_TN + xs*zs*xz_TN + ys*zs*yz_TN + feq[DIR_0PP]; - f[DIR_0MM] = f_TN + xs*x_TN + ys*y_TN + zs*z_TN + xs*ys*xy_TN + xs*zs*xz_TN + ys*zs*yz_TN + feq[DIR_0MM]; - f[DIR_0PM] = f_BN + xs*x_BN + ys*y_BN + zs*z_BN + xs*ys*xy_BN + xs*zs*xz_BN + ys*zs*yz_BN + feq[DIR_0PM]; - f[DIR_0MP] = f_BN + xs*x_BN + ys*y_BN + zs*z_BN + xs*ys*xy_BN + xs*zs*xz_BN + ys*zs*yz_BN + feq[DIR_0MP]; - f[DIR_PPP] = f_TNE + xs*x_TNE + ys*y_TNE + zs*z_TNE + xs*ys*xy_TNE + xs*zs*xz_TNE + ys*zs*yz_TNE + feq[DIR_PPP]; - f[DIR_MMP] = f_TSW + xs*x_TSW + ys*y_TSW + zs*z_TSW + xs*ys*xy_TSW + xs*zs*xz_TSW + ys*zs*yz_TSW + feq[DIR_MMP]; - f[DIR_PMP] = f_TSE + xs*x_TSE + ys*y_TSE + zs*z_TSE + xs*ys*xy_TSE + xs*zs*xz_TSE + ys*zs*yz_TSE + feq[DIR_PMP]; - f[DIR_MPP] = f_TNW + xs*x_TNW + ys*y_TNW + zs*z_TNW + xs*ys*xy_TNW + xs*zs*xz_TNW + ys*zs*yz_TNW + feq[DIR_MPP]; - f[DIR_PPM] = f_TSW + xs*x_TSW + ys*y_TSW + zs*z_TSW + xs*ys*xy_TSW + xs*zs*xz_TSW + ys*zs*yz_TSW + feq[DIR_PPM]; - f[DIR_MMM] = f_TNE + xs*x_TNE + ys*y_TNE + zs*z_TNE + xs*ys*xy_TNE + xs*zs*xz_TNE + ys*zs*yz_TNE + feq[DIR_MMM]; - f[DIR_PMM] = f_TNW + xs*x_TNW + ys*y_TNW + zs*z_TNW + xs*ys*xy_TNW + xs*zs*xz_TNW + ys*zs*yz_TNW + feq[DIR_PMM]; - f[DIR_MPM] = f_TSE + xs*x_TSE + ys*y_TSE + zs*z_TSE + xs*ys*xy_TSE + xs*zs*xz_TSE + ys*zs*yz_TSE + feq[DIR_MPM]; - f[DIR_000] = f_ZERO + xs*x_ZERO + ys*y_ZERO + zs*z_ZERO + feq[DIR_000]; + f[dP00] = f_E + xs*x_E + ys*y_E + zs*z_E + xs*ys*xy_E + xs*zs*xz_E + ys*zs*yz_E + feq[dP00]; + f[dM00] = f_E + xs*x_E + ys*y_E + zs*z_E + xs*ys*xy_E + xs*zs*xz_E + ys*zs*yz_E + feq[dM00]; + f[d0P0] = f_N + xs*x_N + ys*y_N + zs*z_N + xs*ys*xy_N + xs*zs*xz_N + ys*zs*yz_N + feq[d0P0]; + f[d0M0] = f_N + xs*x_N + ys*y_N + zs*z_N + xs*ys*xy_N + xs*zs*xz_N + ys*zs*yz_N + feq[d0M0]; + f[d00P] = f_T + xs*x_T + ys*y_T + zs*z_T + xs*ys*xy_T + xs*zs*xz_T + ys*zs*yz_T + feq[d00P]; + f[d00M] = f_T + xs*x_T + ys*y_T + zs*z_T + xs*ys*xy_T + xs*zs*xz_T + ys*zs*yz_T + feq[d00M]; + f[dPP0] = f_NE + xs*x_NE + ys*y_NE + zs*z_NE + xs*ys*xy_NE + xs*zs*xz_NE + ys*zs*yz_NE + feq[dPP0]; + f[dMM0] = f_NE + xs*x_NE + ys*y_NE + zs*z_NE + xs*ys*xy_NE + xs*zs*xz_NE + ys*zs*yz_NE + feq[dMM0]; + f[dPM0] = f_SE + xs*x_SE + ys*y_SE + zs*z_SE + xs*ys*xy_SE + xs*zs*xz_SE + ys*zs*yz_SE + feq[dPM0]; + f[dMP0] = f_SE + xs*x_SE + ys*y_SE + zs*z_SE + xs*ys*xy_SE + xs*zs*xz_SE + ys*zs*yz_SE + feq[dMP0]; + f[dP0P] = f_TE + xs*x_TE + ys*y_TE + zs*z_TE + xs*ys*xy_TE + xs*zs*xz_TE + ys*zs*yz_TE + feq[dP0P]; + f[dM0M] = f_TE + xs*x_TE + ys*y_TE + zs*z_TE + xs*ys*xy_TE + xs*zs*xz_TE + ys*zs*yz_TE + feq[dM0M]; + f[dP0M] = f_BE + xs*x_BE + ys*y_BE + zs*z_BE + xs*ys*xy_BE + xs*zs*xz_BE + ys*zs*yz_BE + feq[dP0M]; + f[dM0P] = f_BE + xs*x_BE + ys*y_BE + zs*z_BE + xs*ys*xy_BE + xs*zs*xz_BE + ys*zs*yz_BE + feq[dM0P]; + f[d0PP] = f_TN + xs*x_TN + ys*y_TN + zs*z_TN + xs*ys*xy_TN + xs*zs*xz_TN + ys*zs*yz_TN + feq[d0PP]; + f[d0MM] = f_TN + xs*x_TN + ys*y_TN + zs*z_TN + xs*ys*xy_TN + xs*zs*xz_TN + ys*zs*yz_TN + feq[d0MM]; + f[d0PM] = f_BN + xs*x_BN + ys*y_BN + zs*z_BN + xs*ys*xy_BN + xs*zs*xz_BN + ys*zs*yz_BN + feq[d0PM]; + f[d0MP] = f_BN + xs*x_BN + ys*y_BN + zs*z_BN + xs*ys*xy_BN + xs*zs*xz_BN + ys*zs*yz_BN + feq[d0MP]; + f[dPPP] = f_TNE + xs*x_TNE + ys*y_TNE + zs*z_TNE + xs*ys*xy_TNE + xs*zs*xz_TNE + ys*zs*yz_TNE + feq[dPPP]; + f[dMMP] = f_TSW + xs*x_TSW + ys*y_TSW + zs*z_TSW + xs*ys*xy_TSW + xs*zs*xz_TSW + ys*zs*yz_TSW + feq[dMMP]; + f[dPMP] = f_TSE + xs*x_TSE + ys*y_TSE + zs*z_TSE + xs*ys*xy_TSE + xs*zs*xz_TSE + ys*zs*yz_TSE + feq[dPMP]; + f[dMPP] = f_TNW + xs*x_TNW + ys*y_TNW + zs*z_TNW + xs*ys*xy_TNW + xs*zs*xz_TNW + ys*zs*yz_TNW + feq[dMPP]; + f[dPPM] = f_TSW + xs*x_TSW + ys*y_TSW + zs*z_TSW + xs*ys*xy_TSW + xs*zs*xz_TSW + ys*zs*yz_TSW + feq[dPPM]; + f[dMMM] = f_TNE + xs*x_TNE + ys*y_TNE + zs*z_TNE + xs*ys*xy_TNE + xs*zs*xz_TNE + ys*zs*yz_TNE + feq[dMMM]; + f[dPMM] = f_TNW + xs*x_TNW + ys*y_TNW + zs*z_TNW + xs*ys*xy_TNW + xs*zs*xz_TNW + ys*zs*yz_TNW + feq[dPMM]; + f[dMPM] = f_TSE + xs*x_TSE + ys*y_TSE + zs*z_TSE + xs*ys*xy_TSE + xs*zs*xz_TSE + ys*zs*yz_TSE + feq[dMPM]; + f[d000] = f_ZERO + xs*x_ZERO + ys*y_ZERO + zs*z_ZERO + feq[d000]; } ////////////////////////////////////////////////////////////////////////// //Position SWB -0.25, -0.25, -0.25 @@ -630,33 +630,33 @@ void RheologyInterpolator::calcInterpolatedNodeFC(real* f, real omega) f_TSE = eps_new*((ay - az + bx + bz - cx + cy+kxyAverage-kxzAverage+kyzAverage)/(72.*o)); f_TNW = eps_new*((ay + az + bx - bz + cx - cy+kxyAverage+kxzAverage-kyzAverage)/(72.*o)); - f[DIR_P00] = f_E + feq[DIR_P00]; - f[DIR_M00] = f_E + feq[DIR_M00]; - f[DIR_0P0] = f_N + feq[DIR_0P0]; - f[DIR_0M0] = f_N + feq[DIR_0M0]; - f[DIR_00P] = f_T + feq[DIR_00P]; - f[DIR_00M] = f_T + feq[DIR_00M]; - f[DIR_PP0] = f_NE + feq[DIR_PP0]; - f[DIR_MM0] = f_NE + feq[DIR_MM0]; - f[DIR_PM0] = f_SE + feq[DIR_PM0]; - f[DIR_MP0] = f_SE + feq[DIR_MP0]; - f[DIR_P0P] = f_TE + feq[DIR_P0P]; - f[DIR_M0M] = f_TE + feq[DIR_M0M]; - f[DIR_P0M] = f_BE + feq[DIR_P0M]; - f[DIR_M0P] = f_BE + feq[DIR_M0P]; - f[DIR_0PP] = f_TN + feq[DIR_0PP]; - f[DIR_0MM] = f_TN + feq[DIR_0MM]; - f[DIR_0PM] = f_BN + feq[DIR_0PM]; - f[DIR_0MP] = f_BN + feq[DIR_0MP]; - f[DIR_PPP] = f_TNE + feq[DIR_PPP]; - f[DIR_MPP] = f_TNW + feq[DIR_MPP]; - f[DIR_PMP] = f_TSE + feq[DIR_PMP]; - f[DIR_MMP] = f_TSW + feq[DIR_MMP]; - f[DIR_PPM] = f_TSW + feq[DIR_PPM]; - f[DIR_MPM] = f_TSE + feq[DIR_MPM]; - f[DIR_PMM] = f_TNW + feq[DIR_PMM]; - f[DIR_MMM] = f_TNE + feq[DIR_MMM]; - f[DIR_000] = f_ZERO + feq[DIR_000]; + f[dP00] = f_E + feq[dP00]; + f[dM00] = f_E + feq[dM00]; + f[d0P0] = f_N + feq[d0P0]; + f[d0M0] = f_N + feq[d0M0]; + f[d00P] = f_T + feq[d00P]; + f[d00M] = f_T + feq[d00M]; + f[dPP0] = f_NE + feq[dPP0]; + f[dMM0] = f_NE + feq[dMM0]; + f[dPM0] = f_SE + feq[dPM0]; + f[dMP0] = f_SE + feq[dMP0]; + f[dP0P] = f_TE + feq[dP0P]; + f[dM0M] = f_TE + feq[dM0M]; + f[dP0M] = f_BE + feq[dP0M]; + f[dM0P] = f_BE + feq[dM0P]; + f[d0PP] = f_TN + feq[d0PP]; + f[d0MM] = f_TN + feq[d0MM]; + f[d0PM] = f_BN + feq[d0PM]; + f[d0MP] = f_BN + feq[d0MP]; + f[dPPP] = f_TNE + feq[dPPP]; + f[dMPP] = f_TNW + feq[dMPP]; + f[dPMP] = f_TSE + feq[dPMP]; + f[dMMP] = f_TSW + feq[dMMP]; + f[dPPM] = f_TSW + feq[dPPM]; + f[dMPM] = f_TSE + feq[dMPM]; + f[dPMM] = f_TNW + feq[dPMM]; + f[dMMM] = f_TNE + feq[dMMM]; + f[d000] = f_ZERO + feq[d000]; } ////////////////////////////////////////////////////////////////////////// void RheologyInterpolator::calcInterpolatedVelocity(real x, real y, real z, real& vx1, real& vx2, real& vx3) diff --git a/src/cpu/NonNewtonianFluids/SimulationObservers/CalculateTorqueSimulationObserver.cpp b/src/cpu/NonNewtonianFluids/SimulationObservers/CalculateTorqueSimulationObserver.cpp index 7ed670deb9619565e9c11d18041cc522485ba2f6..fc120348cd9a1b1fc2f58139d200dabd4709bd26 100644 --- a/src/cpu/NonNewtonianFluids/SimulationObservers/CalculateTorqueSimulationObserver.cpp +++ b/src/cpu/NonNewtonianFluids/SimulationObservers/CalculateTorqueSimulationObserver.cpp @@ -222,7 +222,7 @@ UbTupleDouble3 CalculateTorqueSimulationObserver::getForcesFromMoments(int x1, i if (bc) { real f[D3Q27System::ENDF + 1]; - distributions->getDistribution(f, x1, x2, x3); + distributions->getPreCollisionDistribution(f, x1, x2, x3); real collFactor = kernel->getCollisionFactor(); real shearRate = D3Q27System::getShearRate(f, collFactor); real rho = D3Q27System::getDensity(f); @@ -256,7 +256,7 @@ UbTupleDouble3 CalculateTorqueSimulationObserver::getForcesFromStressTensor(int if (bc) { real f[D3Q27System::ENDF + 1]; - distributions->getDistribution(f, x1, x2, x3); + distributions->getPreCollisionDistribution(f, x1, x2, x3); real collFactor = kernel->getCollisionFactor(); real shearRate = D3Q27System::getShearRate(f, collFactor); real rho = D3Q27System::getDensity(f); diff --git a/src/cpu/NonNewtonianFluids/SimulationObservers/WriteThixotropyQuantitiesSimulationObserver.cpp b/src/cpu/NonNewtonianFluids/SimulationObservers/WriteThixotropyQuantitiesSimulationObserver.cpp index bc3eab4fb93581a0184d96cddbd5542fa358e8ee..4eb5c20109baa9d2368201bf96b7807de0f5cb41 100644 --- a/src/cpu/NonNewtonianFluids/SimulationObservers/WriteThixotropyQuantitiesSimulationObserver.cpp +++ b/src/cpu/NonNewtonianFluids/SimulationObservers/WriteThixotropyQuantitiesSimulationObserver.cpp @@ -239,7 +239,7 @@ void WriteThixotropyQuantitiesSimulationObserver::addDataMQ(SPtr<Block3D> block) //data[index++].push_back(gammaDot); //data[index++].push_back(collFactorF); - distributionsF->getDistribution(f, ix1, ix2, ix3); + distributionsF->getPreCollisionDistribution(f, ix1, ix2, ix3); real rho = D3Q27System::getDensity(f); real shearRate = D3Q27System::getShearRate(f, collFactor); //LBMReal omega = Rheology::getHerschelBulkleyCollFactor(collFactor, shearRate, rho); diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/NonReflectingInflowBCStrategy.cpp b/src/cpu/VirtualFluidsCore/BoundaryConditions/NonReflectingInflowBCStrategy.cpp deleted file mode 100644 index b1cf37e4b71ed883410c77098d9fa8d83f56a812..0000000000000000000000000000000000000000 --- a/src/cpu/VirtualFluidsCore/BoundaryConditions/NonReflectingInflowBCStrategy.cpp +++ /dev/null @@ -1,341 +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 NonReflectingInflowBCStrategy.cpp -//! \ingroup BoundarConditions -//! \author Hussein Alihussein -//======================================================================================= -#include "NonReflectingInflowBCStrategy.h" - -#include "BoundaryConditions.h" -#include "D3Q27System.h" -#include "DistributionArray3D.h" - -NonReflectingInflowBCStrategy::NonReflectingInflowBCStrategy() -{ - BCStrategy::type = BCStrategy::NonReflectingInflowBCStrategy; - BCStrategy::preCollision = true; -} -////////////////////////////////////////////////////////////////////////// -NonReflectingInflowBCStrategy::~NonReflectingInflowBCStrategy() = default; -////////////////////////////////////////////////////////////////////////// -SPtr<BCStrategy> NonReflectingInflowBCStrategy::clone() -{ - SPtr<BCStrategy> bc(new NonReflectingInflowBCStrategy()); - return bc; -} -////////////////////////////////////////////////////////////////////////// -void NonReflectingInflowBCStrategy::addDistributions(SPtr<DistributionArray3D> distributions) -{ - this->distributions = distributions; -} -////////////////////////////////////////////////////////////////////////// -void NonReflectingInflowBCStrategy::applyBC() -{ - using namespace vf::lbm::dir; - using namespace D3Q27System; - // using namespace UbMath; - using namespace vf::basics::constant; - - LBMReal f[ENDF + 1]; - LBMReal ftemp[ENDF + 1]; - - int nx1 = x1; - int nx2 = x2; - int nx3 = x3; - int direction = -1; - - // flag points in direction of fluid - if (bcPtr->hasDensityBoundaryFlag(DIR_P00)) { - nx1 += 1; - direction = DIR_P00; - } else if (bcPtr->hasDensityBoundaryFlag(DIR_M00)) { - nx1 -= 1; - direction = DIR_M00; - } else if (bcPtr->hasDensityBoundaryFlag(DIR_0P0)) { - nx2 += 1; - direction = DIR_0P0; - } else if (bcPtr->hasDensityBoundaryFlag(DIR_0M0)) { - nx2 -= 1; - direction = DIR_0M0; - } else if (bcPtr->hasDensityBoundaryFlag(DIR_00P)) { - nx3 += 1; - direction = DIR_00P; - } else if (bcPtr->hasDensityBoundaryFlag(DIR_00M)) { - nx3 -= 1; - direction = DIR_00M; - } else - UB_THROW(UbException(UB_EXARGS, "Danger...no orthogonal BC-Flag on density boundary...")); - - distributions->getDistribution(f, x1, x2, x3); - distributions->getDistribution(ftemp, nx1, nx2, nx3); - - LBMReal rho, vx1, vx2, vx3; - calcMacrosFct(f, rho, vx1, vx2, vx3); - //vx1 = 0.; - LBMReal BCVeloWeight = c1o2; - // LBMReal velocity = 0.004814077025232405; - // LBMReal velocity = 0.00057735; - //LBMReal velocity = 0.04; - // LBMReal velocity = 0.01; - // LBMReal velocity = 1./112.; - // LBMReal velocity = 1./126.; - LBMReal velocity = c1o100/2; - // LBMReal velocity = 0.005; - //LBMReal delf =(-velocity+vx1)*0.5 ; - LBMReal delf; - - switch (direction) { - case DIR_P00: - delf = (-velocity + vx1) * BCVeloWeight; - // delf = (-velocity ) * BCVeloWeight; - f[DIR_P00] = ftemp[DIR_P00] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * f[DIR_P00] - delf* WEIGTH[DIR_P00]; - f[DIR_PP0] = ftemp[DIR_PP0] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * f[DIR_PP0]- delf* WEIGTH[DIR_PP0]; - f[DIR_PM0] = ftemp[DIR_PM0] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * f[DIR_PM0]- delf* WEIGTH[DIR_PM0]; - f[DIR_P0P] = ftemp[DIR_P0P] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * f[DIR_P0P]- delf* WEIGTH[DIR_P0P]; - f[DIR_P0M] = ftemp[DIR_P0M] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * f[DIR_P0M]- delf* WEIGTH[DIR_P0M]; - f[DIR_PPP] = ftemp[DIR_PPP] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * f[DIR_PPP]- delf* WEIGTH[DIR_PPP]; - f[DIR_PMP] = ftemp[DIR_PMP] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * f[DIR_PMP]- delf* WEIGTH[DIR_PMP]; - f[DIR_PPM] = ftemp[DIR_PPM] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * f[DIR_PPM]- delf* WEIGTH[DIR_PPM]; - f[DIR_PMM] = ftemp[DIR_PMM] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * f[DIR_PMM]- delf* WEIGTH[DIR_PMM]; - //f[DIR_P00] = (ftemp[DIR_P00] * (one_over_sqrt3 + vx1) + (1.0 - one_over_sqrt3 - vx1) * f[DIR_P00]) * - // (1 - BCVeloWeight) + - // (ftemp[DIR_M00] * (one_over_sqrt3 + vx1) + (1.0 - one_over_sqrt3 - vx1) * f[DIR_M00] + - // velocity*(6)*WEIGTH[DIR_P00]/* bcPtr->getBoundaryVelocity(INVDIR[DIR_M00])*/) * - // (BCVeloWeight) ; - //f[DIR_PP0] = (ftemp[DIR_PP0] * (one_over_sqrt3 + vx1) + (1.0 - one_over_sqrt3 - vx1) * f[DIR_PP0]) * - // (1 - BCVeloWeight) + - // (ftemp[DIR_MM0] * (one_over_sqrt3 + vx1) + (1.0 - one_over_sqrt3 - vx1) * f[DIR_MM0] + - // velocity * (6) * WEIGTH[DIR_PP0] /*bcPtr->getBoundaryVelocity(INVDIR[DIR_MM0])*/) * - // (BCVeloWeight); - //f[DIR_PM0] = (ftemp[DIR_PM0] * (one_over_sqrt3 + vx1) + (1.0 - one_over_sqrt3 - vx1) * f[DIR_PM0]) * - // (1 - BCVeloWeight) + - // (ftemp[DIR_MP0] * (one_over_sqrt3 + vx1) + (1.0 - one_over_sqrt3 - vx1) * f[DIR_MP0] + - // velocity*(6)*WEIGTH[DIR_PP0]/* bcPtr->getBoundaryVelocity(INVDIR[DIR_MP0])*/) * - // (BCVeloWeight); - //f[DIR_P0P] = (ftemp[DIR_P0P] * (one_over_sqrt3 + vx1) + (1.0 - one_over_sqrt3 - vx1) * f[DIR_P0P]) * - // (1 - BCVeloWeight) + - // (ftemp[DIR_M0M] * (one_over_sqrt3 + vx1) + (1.0 - one_over_sqrt3 - vx1) * f[DIR_M0M] + - // velocity*(6)*WEIGTH[DIR_P0P]/* bcPtr->getBoundaryVelocity(INVDIR[DIR_M0M])*/) * - // (BCVeloWeight); - //f[DIR_P0M] = (ftemp[DIR_P0M] * (one_over_sqrt3 + vx1) + (1.0 - one_over_sqrt3 - vx1) * f[DIR_P0M])* - // (1 - BCVeloWeight) + - // (ftemp[DIR_M0P] * (one_over_sqrt3 + vx1) + (1.0 - one_over_sqrt3 - vx1) * f[DIR_M0P] + - // velocity*(6)*WEIGTH[DIR_P0M]/* bcPtr->getBoundaryVelocity(INVDIR[DIR_M0P])*/) * - // (BCVeloWeight); - //f[DIR_PPP] = (ftemp[DIR_PPP] * (one_over_sqrt3 + vx1) + (1.0 - one_over_sqrt3 - vx1) * f[DIR_PPP])* - // (1 - BCVeloWeight) + - // (ftemp[DIR_MMM] * (one_over_sqrt3 + vx1) + (1.0 - one_over_sqrt3 - vx1) * f[DIR_MMM] + - // velocity * (6) * WEIGTH[DIR_PPP] /* bcPtr->getBoundaryVelocity(INVDIR[DIR_MMM])*/) * - // (BCVeloWeight); - //f[DIR_PMP] = (ftemp[DIR_PMP] * (one_over_sqrt3 + vx1) + (1.0 - one_over_sqrt3 - vx1) * f[DIR_PMP]) * - // (1 - BCVeloWeight) + - // (ftemp[DIR_MPM] * (one_over_sqrt3 + vx1) + (1.0 - one_over_sqrt3 - vx1) * f[DIR_MPM] + - // velocity * (6) * WEIGTH[DIR_PPP] /*bcPtr->getBoundaryVelocity(INVDIR[DIR_MPM])*/) * - // (BCVeloWeight); - //f[DIR_PPM] = (ftemp[DIR_PPM] * (one_over_sqrt3 + vx1) + (1.0 - one_over_sqrt3 - vx1) * f[DIR_PPM]) * - // (1 - BCVeloWeight) + - // (ftemp[DIR_MMP] * (one_over_sqrt3 + vx1) + (1.0 - one_over_sqrt3 - vx1) * f[DIR_MMP] + - // velocity * (6) * WEIGTH[DIR_PPP] /* bcPtr->getBoundaryVelocity(INVDIR[DIR_MMP])*/) * - // (BCVeloWeight); - //f[DIR_PMM] = (ftemp[DIR_PMM] * (one_over_sqrt3 + vx1) + (1.0 - one_over_sqrt3 - vx1) * f[DIR_PMM]) * - // (1 - BCVeloWeight) + - // (ftemp[DIR_MPP] * (one_over_sqrt3 + vx1) + (1.0 - one_over_sqrt3 - vx1) * f[DIR_MPP] + - // velocity * (6) * WEIGTH[DIR_PPP] /* bcPtr->getBoundaryVelocity(INVDIR[DIR_MPP])*/) * - // (BCVeloWeight); - - distributions->setDistributionInvForDirection(f[DIR_P00], x1 + DX1[DIR_M00], x2 + DX2[DIR_M00], x3 + DX3[DIR_M00], DIR_M00); - distributions->setDistributionInvForDirection(f[DIR_PP0], x1 + DX1[DIR_MM0], x2 + DX2[DIR_MM0], x3 + DX3[DIR_MM0], DIR_MM0); - distributions->setDistributionInvForDirection(f[DIR_PM0], x1 + DX1[DIR_MP0], x2 + DX2[DIR_MP0], x3 + DX3[DIR_MP0], DIR_MP0); - distributions->setDistributionInvForDirection(f[DIR_P0P], x1 + DX1[DIR_M0M], x2 + DX2[DIR_M0M], x3 + DX3[DIR_M0M], DIR_M0M); - distributions->setDistributionInvForDirection(f[DIR_P0M], x1 + DX1[DIR_M0P], x2 + DX2[DIR_M0P], x3 + DX3[DIR_M0P], DIR_M0P); - distributions->setDistributionInvForDirection(f[DIR_PPP], x1 + DX1[DIR_MMM], x2 + DX2[DIR_MMM], x3 + DX3[DIR_MMM], DIR_MMM); - distributions->setDistributionInvForDirection(f[DIR_PMP], x1 + DX1[DIR_MPM], x2 + DX2[DIR_MPM], x3 + DX3[DIR_MPM], DIR_MPM); - distributions->setDistributionInvForDirection(f[DIR_PPM], x1 + DX1[DIR_MMP], x2 + DX2[DIR_MMP], x3 + DX3[DIR_MMP], DIR_MMP); - distributions->setDistributionInvForDirection(f[DIR_PMM], x1 + DX1[DIR_MPP], x2 + DX2[DIR_MPP], x3 + DX3[DIR_MPP], DIR_MPP); - break; - case DIR_M00: - delf = (-velocity - vx1) * BCVeloWeight; - f[DIR_M00] = ftemp[DIR_M00] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * f[DIR_M00] - - delf * WEIGTH[DIR_M00]; - f[DIR_MP0] = ftemp[DIR_MP0] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * f[DIR_MP0] - - delf * WEIGTH[DIR_MP0]; - f[DIR_MM0] = ftemp[DIR_MM0] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * f[DIR_MM0] - - delf * WEIGTH[DIR_MM0]; - f[DIR_M0P] = ftemp[DIR_M0P] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * f[DIR_M0P] - - delf * WEIGTH[DIR_M0P]; - f[DIR_M0M] = ftemp[DIR_M0M] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * f[DIR_M0M] - - delf * WEIGTH[DIR_M0M]; - f[DIR_MPP] = ftemp[DIR_MPP] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * f[DIR_MPP] - - delf * WEIGTH[DIR_MPP]; - f[DIR_MMP] = ftemp[DIR_MMP] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * f[DIR_MMP] - - delf * WEIGTH[DIR_MMP]; - f[DIR_MPM] = ftemp[DIR_MPM] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * f[DIR_MPM] - - delf * WEIGTH[DIR_MPM]; - f[DIR_MMM] = ftemp[DIR_MMM] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * f[DIR_MMM] - - delf * WEIGTH[DIR_MMM]; - - distributions->setDistributionInvForDirection(f[DIR_M00], x1 + DX1[DIR_P00], x2 + DX2[DIR_P00], x3 + DX3[DIR_P00], DIR_P00); - distributions->setDistributionInvForDirection(f[DIR_MP0], x1 + DX1[DIR_PM0], x2 + DX2[DIR_PM0], x3 + DX3[DIR_PM0], DIR_PM0); - distributions->setDistributionInvForDirection(f[DIR_MM0], x1 + DX1[DIR_PP0], x2 + DX2[DIR_PP0], x3 + DX3[DIR_PP0], DIR_PP0); - distributions->setDistributionInvForDirection(f[DIR_M0P], x1 + DX1[DIR_P0M], x2 + DX2[DIR_P0M], x3 + DX3[DIR_P0M], DIR_P0M); - distributions->setDistributionInvForDirection(f[DIR_M0M], x1 + DX1[DIR_P0P], x2 + DX2[DIR_P0P], x3 + DX3[DIR_P0P], DIR_P0P); - distributions->setDistributionInvForDirection(f[DIR_MPP], x1 + DX1[DIR_PMM], x2 + DX2[DIR_PMM], x3 + DX3[DIR_PMM], DIR_PMM); - distributions->setDistributionInvForDirection(f[DIR_MMP], x1 + DX1[DIR_PPM], x2 + DX2[DIR_PPM], x3 + DX3[DIR_PPM], DIR_PPM); - distributions->setDistributionInvForDirection(f[DIR_MPM], x1 + DX1[DIR_PMP], x2 + DX2[DIR_PMP], x3 + DX3[DIR_PMP], DIR_PMP); - distributions->setDistributionInvForDirection(f[DIR_MMM], x1 + DX1[DIR_PPP], x2 + DX2[DIR_PPP], x3 + DX3[DIR_PPP], DIR_PPP); - break; - case DIR_0P0: - delf = (-velocity + vx2) * BCVeloWeight; - f[DIR_0P0] = ftemp[DIR_0P0] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * f[DIR_0P0] - - delf * WEIGTH[DIR_0P0]; - f[DIR_PP0] = ftemp[DIR_PP0] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * f[DIR_PP0] - - delf * WEIGTH[DIR_PP0]; - f[DIR_MP0] = ftemp[DIR_MP0] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * f[DIR_MP0] - - delf * WEIGTH[DIR_MP0]; - f[DIR_0PP] = ftemp[DIR_0PP] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * f[DIR_0PP] - - delf * WEIGTH[DIR_0PP]; - f[DIR_0PM] = ftemp[DIR_0PM] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * f[DIR_0PM] - - delf * WEIGTH[DIR_0PM]; - f[DIR_PPP] = ftemp[DIR_PPP] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * f[DIR_PPP] - - delf * WEIGTH[DIR_PPP]; - f[DIR_MPP] = ftemp[DIR_MPP] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * f[DIR_MPP] - - delf * WEIGTH[DIR_MPP]; - f[DIR_PPM] = ftemp[DIR_PPM] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * f[DIR_PPM] - - delf * WEIGTH[DIR_PPM]; - f[DIR_MPM] = ftemp[DIR_MPM] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * f[DIR_MPM] - - delf * WEIGTH[DIR_MPM]; - - distributions->setDistributionInvForDirection(f[DIR_0P0], x1 + DX1[DIR_0M0], x2 + DX2[DIR_0M0], x3 + DX3[DIR_0M0], DIR_0M0); - distributions->setDistributionInvForDirection(f[DIR_PP0], x1 + DX1[DIR_MM0], x2 + DX2[DIR_MM0], x3 + DX3[DIR_MM0], DIR_MM0); - distributions->setDistributionInvForDirection(f[DIR_MP0], x1 + DX1[DIR_PM0], x2 + DX2[DIR_PM0], x3 + DX3[DIR_PM0], DIR_PM0); - distributions->setDistributionInvForDirection(f[DIR_0PP], x1 + DX1[DIR_0MM], x2 + DX2[DIR_0MM], x3 + DX3[DIR_0MM], DIR_0MM); - distributions->setDistributionInvForDirection(f[DIR_0PM], x1 + DX1[DIR_0MP], x2 + DX2[DIR_0MP], x3 + DX3[DIR_0MP], DIR_0MP); - distributions->setDistributionInvForDirection(f[DIR_PPP], x1 + DX1[DIR_MMM], x2 + DX2[DIR_MMM], x3 + DX3[DIR_MMM], DIR_MMM); - distributions->setDistributionInvForDirection(f[DIR_MPP], x1 + DX1[DIR_PMM], x2 + DX2[DIR_PMM], x3 + DX3[DIR_PMM], DIR_PMM); - distributions->setDistributionInvForDirection(f[DIR_PPM], x1 + DX1[DIR_MMP], x2 + DX2[DIR_MMP], x3 + DX3[DIR_MMP], DIR_MMP); - distributions->setDistributionInvForDirection(f[DIR_MPM], x1 + DX1[DIR_PMP], x2 + DX2[DIR_PMP], x3 + DX3[DIR_PMP], DIR_PMP); - break; - case DIR_0M0: - delf = (-velocity - vx2) * BCVeloWeight; - f[DIR_0M0] = ftemp[DIR_0M0] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * f[DIR_0M0] - - delf * WEIGTH[DIR_0M0]; - f[DIR_PM0] = ftemp[DIR_PM0] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * f[DIR_PM0] - - delf * WEIGTH[DIR_PM0]; - f[DIR_MM0] = ftemp[DIR_MM0] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * f[DIR_MM0] - - delf * WEIGTH[DIR_MM0]; - f[DIR_0MP] = ftemp[DIR_0MP] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * f[DIR_0MP] - - delf * WEIGTH[DIR_0MP]; - f[DIR_0MM] = ftemp[DIR_0MM] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * f[DIR_0MM] - - delf * WEIGTH[DIR_0MM]; - f[DIR_PMP] = ftemp[DIR_PMP] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * f[DIR_PMP] - - delf * WEIGTH[DIR_PMP]; - f[DIR_MMP] = ftemp[DIR_MMP] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * f[DIR_MMP] - - delf * WEIGTH[DIR_MMP]; - f[DIR_PMM] = ftemp[DIR_PMM] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * f[DIR_PMM] - - delf * WEIGTH[DIR_PMM]; - f[DIR_MMM] = ftemp[DIR_MMM] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * f[DIR_MMM] - - delf * WEIGTH[DIR_MMM]; - - distributions->setDistributionInvForDirection(f[DIR_0M0], x1 + DX1[DIR_0P0], x2 + DX2[DIR_0P0], x3 + DX3[DIR_0P0], DIR_0P0); - distributions->setDistributionInvForDirection(f[DIR_PM0], x1 + DX1[DIR_MP0], x2 + DX2[DIR_MP0], x3 + DX3[DIR_MP0], DIR_MP0); - distributions->setDistributionInvForDirection(f[DIR_MM0], x1 + DX1[DIR_PP0], x2 + DX2[DIR_PP0], x3 + DX3[DIR_PP0], DIR_PP0); - distributions->setDistributionInvForDirection(f[DIR_0MP], x1 + DX1[DIR_0PM], x2 + DX2[DIR_0PM], x3 + DX3[DIR_0PM], DIR_0PM); - distributions->setDistributionInvForDirection(f[DIR_0MM], x1 + DX1[DIR_0PP], x2 + DX2[DIR_0PP], x3 + DX3[DIR_0PP], DIR_0PP); - distributions->setDistributionInvForDirection(f[DIR_PMP], x1 + DX1[DIR_MPM], x2 + DX2[DIR_MPM], x3 + DX3[DIR_MPM], DIR_MPM); - distributions->setDistributionInvForDirection(f[DIR_MMP], x1 + DX1[DIR_PPM], x2 + DX2[DIR_PPM], x3 + DX3[DIR_PPM], DIR_PPM); - distributions->setDistributionInvForDirection(f[DIR_PMM], x1 + DX1[DIR_MPP], x2 + DX2[DIR_MPP], x3 + DX3[DIR_MPP], DIR_MPP); - distributions->setDistributionInvForDirection(f[DIR_MMM], x1 + DX1[DIR_PPP], x2 + DX2[DIR_PPP], x3 + DX3[DIR_PPP], DIR_PPP); - break; - case DIR_00P: - delf = (-velocity + vx3) * BCVeloWeight; - f[DIR_00P] = ftemp[DIR_00P] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * f[DIR_00P] - - delf * WEIGTH[DIR_00P]; - f[DIR_P0P] = ftemp[DIR_P0P] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * f[DIR_P0P] - - delf * WEIGTH[DIR_P0P]; - f[DIR_M0P] = ftemp[DIR_M0P] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * f[DIR_M0P] - - delf * WEIGTH[DIR_M0P]; - f[DIR_0PP] = ftemp[DIR_0PP] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * f[DIR_0PP] - - delf * WEIGTH[DIR_0PP]; - f[DIR_0MP] = ftemp[DIR_0MP] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * f[DIR_0MP] - - delf * WEIGTH[DIR_0MP]; - f[DIR_PPP] = ftemp[DIR_PPP] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * f[DIR_PPP] - - delf * WEIGTH[DIR_PPP]; - f[DIR_MPP] = ftemp[DIR_MPP] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * f[DIR_MPP] - - delf * WEIGTH[DIR_MPP]; - f[DIR_PMP] = ftemp[DIR_PMP] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * f[DIR_PMP] - - delf * WEIGTH[DIR_PMP]; - f[DIR_MMP] = ftemp[DIR_MMP] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * f[DIR_MMP] - - delf * WEIGTH[DIR_MMP]; - - distributions->setDistributionInvForDirection(f[DIR_00P], x1 + DX1[DIR_00M], x2 + DX2[DIR_00M], x3 + DX3[DIR_00M], DIR_00M); - distributions->setDistributionInvForDirection(f[DIR_P0P], x1 + DX1[DIR_M0M], x2 + DX2[DIR_M0M], x3 + DX3[DIR_M0M], DIR_M0M); - distributions->setDistributionInvForDirection(f[DIR_M0P], x1 + DX1[DIR_P0M], x2 + DX2[DIR_P0M], x3 + DX3[DIR_P0M], DIR_P0M); - distributions->setDistributionInvForDirection(f[DIR_0PP], x1 + DX1[DIR_0MM], x2 + DX2[DIR_0MM], x3 + DX3[DIR_0MM], DIR_0MM); - distributions->setDistributionInvForDirection(f[DIR_0MP], x1 + DX1[DIR_0PM], x2 + DX2[DIR_0PM], x3 + DX3[DIR_0PM], DIR_0PM); - distributions->setDistributionInvForDirection(f[DIR_PPP], x1 + DX1[DIR_MMM], x2 + DX2[DIR_MMM], x3 + DX3[DIR_MMM], DIR_MMM); - distributions->setDistributionInvForDirection(f[DIR_MPP], x1 + DX1[DIR_PMM], x2 + DX2[DIR_PMM], x3 + DX3[DIR_PMM], DIR_PMM); - distributions->setDistributionInvForDirection(f[DIR_PMP], x1 + DX1[DIR_MPM], x2 + DX2[DIR_MPM], x3 + DX3[DIR_MPM], DIR_MPM); - distributions->setDistributionInvForDirection(f[DIR_MMP], x1 + DX1[DIR_PPM], x2 + DX2[DIR_PPM], x3 + DX3[DIR_PPM], DIR_PPM); - break; - case DIR_00M: - delf = (-velocity - vx3) * BCVeloWeight; - f[DIR_00M] = ftemp[DIR_00M] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * f[DIR_00M] - - delf * WEIGTH[DIR_00M]; - f[DIR_P0M] = ftemp[DIR_P0M] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * f[DIR_P0M] - - delf * WEIGTH[DIR_P0M]; - f[DIR_M0M] = ftemp[DIR_M0M] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * f[DIR_M0M] - - delf * WEIGTH[DIR_M0M]; - f[DIR_0PM] = ftemp[DIR_0PM] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * f[DIR_0PM] - - delf * WEIGTH[DIR_0PM]; - f[DIR_0MM] = ftemp[DIR_0MM] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * f[DIR_0MM] - - delf * WEIGTH[DIR_0MM]; - f[DIR_PPM] = ftemp[DIR_PPM] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * f[DIR_PPM] - - delf * WEIGTH[DIR_PPM]; - f[DIR_MPM] = ftemp[DIR_MPM] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * f[DIR_MPM] - - delf * WEIGTH[DIR_MPM]; - f[DIR_PMM] = ftemp[DIR_PMM] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * f[DIR_PMM] - - delf * WEIGTH[DIR_PMM]; - f[DIR_MMM] = ftemp[DIR_MMM] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * f[DIR_MMM] - - delf * WEIGTH[DIR_MMM]; - - distributions->setDistributionInvForDirection(f[DIR_00M], x1 + DX1[DIR_00P], x2 + DX2[DIR_00P], x3 + DX3[DIR_00P], DIR_00P); - distributions->setDistributionInvForDirection(f[DIR_P0M], x1 + DX1[DIR_M0P], x2 + DX2[DIR_M0P], x3 + DX3[DIR_M0P], DIR_M0P); - distributions->setDistributionInvForDirection(f[DIR_M0M], x1 + DX1[DIR_P0P], x2 + DX2[DIR_P0P], x3 + DX3[DIR_P0P], DIR_P0P); - distributions->setDistributionInvForDirection(f[DIR_0PM], x1 + DX1[DIR_0MP], x2 + DX2[DIR_0MP], x3 + DX3[DIR_0MP], DIR_0MP); - distributions->setDistributionInvForDirection(f[DIR_0MM], x1 + DX1[DIR_0PP], x2 + DX2[DIR_0PP], x3 + DX3[DIR_0PP], DIR_0PP); - distributions->setDistributionInvForDirection(f[DIR_PPM], x1 + DX1[DIR_MMP], x2 + DX2[DIR_MMP], x3 + DX3[DIR_MMP], DIR_MMP); - distributions->setDistributionInvForDirection(f[DIR_MPM], x1 + DX1[DIR_PMP], x2 + DX2[DIR_PMP], x3 + DX3[DIR_PMP], DIR_PMP); - distributions->setDistributionInvForDirection(f[DIR_PMM], x1 + DX1[DIR_MPP], x2 + DX2[DIR_MPP], x3 + DX3[DIR_MPP], DIR_MPP); - distributions->setDistributionInvForDirection(f[DIR_MMM], x1 + DX1[DIR_PPP], x2 + DX2[DIR_PPP], x3 + DX3[DIR_PPP], DIR_PPP); - break; - default: - UB_THROW( - UbException(UB_EXARGS, "It isn't implemented non reflecting density boundary for this direction!")); - } -} diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/NonReflectingOutflowBCStrategy.cpp b/src/cpu/VirtualFluidsCore/BoundaryConditions/NonReflectingOutflowBCStrategy.cpp deleted file mode 100644 index b19b27ec1a5d22f835595020a26a76f194cc7ccb..0000000000000000000000000000000000000000 --- a/src/cpu/VirtualFluidsCore/BoundaryConditions/NonReflectingOutflowBCStrategy.cpp +++ /dev/null @@ -1,233 +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 NonReflectingOutflowBCStrategy.cpp -//! \ingroup BoundarConditions -//! \author Konstantin Kutscher -//======================================================================================= -#include "NonReflectingOutflowBCStrategy.h" - -#include "BoundaryConditions.h" -#include "D3Q27System.h" -#include "DistributionArray3D.h" - -NonReflectingOutflowBCStrategy::NonReflectingOutflowBCStrategy() -{ - BCStrategy::type = BCStrategy::NonReflectingOutflowBCStrategy; - BCStrategy::preCollision = true; -} -////////////////////////////////////////////////////////////////////////// -NonReflectingOutflowBCStrategy::~NonReflectingOutflowBCStrategy() = default; -////////////////////////////////////////////////////////////////////////// -SPtr<BCStrategy> NonReflectingOutflowBCStrategy::clone() -{ - SPtr<BCStrategy> bc(new NonReflectingOutflowBCStrategy()); - return bc; -} -////////////////////////////////////////////////////////////////////////// -void NonReflectingOutflowBCStrategy::addDistributions(SPtr<DistributionArray3D> distributions) -{ - this->distributions = distributions; -} -////////////////////////////////////////////////////////////////////////// -void NonReflectingOutflowBCStrategy::applyBC() -{ - using namespace vf::lbm::dir; - - using namespace D3Q27System; - // using namespace UbMath; - using namespace vf::basics::constant; - - real f[ENDF + 1]; - real ftemp[ENDF + 1]; - - int nx1 = x1; - int nx2 = x2; - int nx3 = x3; - int direction = -1; - - // flag points in direction of fluid - if (bcPtr->hasDensityBoundaryFlag(DIR_P00)) { - nx1 += 1; - direction = DIR_P00; - } else if (bcPtr->hasDensityBoundaryFlag(DIR_M00)) { - nx1 -= 1; - direction = DIR_M00; - } else if (bcPtr->hasDensityBoundaryFlag(DIR_0P0)) { - nx2 += 1; - direction = DIR_0P0; - } else if (bcPtr->hasDensityBoundaryFlag(DIR_0M0)) { - nx2 -= 1; - direction = DIR_0M0; - } else if (bcPtr->hasDensityBoundaryFlag(DIR_00P)) { - nx3 += 1; - direction = DIR_00P; - } else if (bcPtr->hasDensityBoundaryFlag(DIR_00M)) { - nx3 -= 1; - direction = DIR_00M; - } else - UB_THROW(UbException(UB_EXARGS, "Danger...no orthogonal BC-Flag on density boundary...")); - - distributions->getDistribution(f, x1, x2, x3); - distributions->getDistribution(ftemp, nx1, nx2, nx3); - - real rho, vx1, vx2, vx3; - calcMacrosFct(f, rho, vx1, vx2, vx3); - - switch (direction) { - case DIR_P00: - f[DIR_P00] = ftemp[DIR_P00] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * f[DIR_P00]; - f[DIR_PP0] = ftemp[DIR_PP0] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * f[DIR_PP0]; - f[DIR_PM0] = ftemp[DIR_PM0] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * f[DIR_PM0]; - f[DIR_P0P] = ftemp[DIR_P0P] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * f[DIR_P0P]; - f[DIR_P0M] = ftemp[DIR_P0M] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * f[DIR_P0M]; - f[DIR_PPP] = ftemp[DIR_PPP] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * f[DIR_PPP]; - f[DIR_PMP] = ftemp[DIR_PMP] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * f[DIR_PMP]; - f[DIR_PPM] = ftemp[DIR_PPM] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * f[DIR_PPM]; - f[DIR_PMM] = ftemp[DIR_PMM] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * f[DIR_PMM]; - - distributions->setDistributionInvForDirection(f[DIR_P00], x1 + DX1[DIR_M00], x2 + DX2[DIR_M00], x3 + DX3[DIR_M00], DIR_M00); - distributions->setDistributionInvForDirection(f[DIR_PP0], x1 + DX1[DIR_MM0], x2 + DX2[DIR_MM0], x3 + DX3[DIR_MM0], DIR_MM0); - distributions->setDistributionInvForDirection(f[DIR_PM0], x1 + DX1[DIR_MP0], x2 + DX2[DIR_MP0], x3 + DX3[DIR_MP0], DIR_MP0); - distributions->setDistributionInvForDirection(f[DIR_P0P], x1 + DX1[DIR_M0M], x2 + DX2[DIR_M0M], x3 + DX3[DIR_M0M], DIR_M0M); - distributions->setDistributionInvForDirection(f[DIR_P0M], x1 + DX1[DIR_M0P], x2 + DX2[DIR_M0P], x3 + DX3[DIR_M0P], DIR_M0P); - distributions->setDistributionInvForDirection(f[DIR_PPP], x1 + DX1[DIR_MMM], x2 + DX2[DIR_MMM], x3 + DX3[DIR_MMM], DIR_MMM); - distributions->setDistributionInvForDirection(f[DIR_PMP], x1 + DX1[DIR_MPM], x2 + DX2[DIR_MPM], x3 + DX3[DIR_MPM], DIR_MPM); - distributions->setDistributionInvForDirection(f[DIR_PPM], x1 + DX1[DIR_MMP], x2 + DX2[DIR_MMP], x3 + DX3[DIR_MMP], DIR_MMP); - distributions->setDistributionInvForDirection(f[DIR_PMM], x1 + DX1[DIR_MPP], x2 + DX2[DIR_MPP], x3 + DX3[DIR_MPP], DIR_MPP); - break; - case DIR_M00: - f[DIR_M00] = ftemp[DIR_M00] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * f[DIR_M00]; - f[DIR_MP0] = ftemp[DIR_MP0] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * f[DIR_MP0]; - f[DIR_MM0] = ftemp[DIR_MM0] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * f[DIR_MM0]; - f[DIR_M0P] = ftemp[DIR_M0P] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * f[DIR_M0P]; - f[DIR_M0M] = ftemp[DIR_M0M] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * f[DIR_M0M]; - f[DIR_MPP] = ftemp[DIR_MPP] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * f[DIR_MPP]; - f[DIR_MMP] = ftemp[DIR_MMP] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * f[DIR_MMP]; - f[DIR_MPM] = ftemp[DIR_MPM] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * f[DIR_MPM]; - f[DIR_MMM] = ftemp[DIR_MMM] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * f[DIR_MMM]; - - distributions->setDistributionInvForDirection(f[DIR_M00], x1 + DX1[DIR_P00], x2 + DX2[DIR_P00], x3 + DX3[DIR_P00], DIR_P00); - distributions->setDistributionInvForDirection(f[DIR_MP0], x1 + DX1[DIR_PM0], x2 + DX2[DIR_PM0], x3 + DX3[DIR_PM0], DIR_PM0); - distributions->setDistributionInvForDirection(f[DIR_MM0], x1 + DX1[DIR_PP0], x2 + DX2[DIR_PP0], x3 + DX3[DIR_PP0], DIR_PP0); - distributions->setDistributionInvForDirection(f[DIR_M0P], x1 + DX1[DIR_P0M], x2 + DX2[DIR_P0M], x3 + DX3[DIR_P0M], DIR_P0M); - distributions->setDistributionInvForDirection(f[DIR_M0M], x1 + DX1[DIR_P0P], x2 + DX2[DIR_P0P], x3 + DX3[DIR_P0P], DIR_P0P); - distributions->setDistributionInvForDirection(f[DIR_MPP], x1 + DX1[DIR_PMM], x2 + DX2[DIR_PMM], x3 + DX3[DIR_PMM], DIR_PMM); - distributions->setDistributionInvForDirection(f[DIR_MMP], x1 + DX1[DIR_PPM], x2 + DX2[DIR_PPM], x3 + DX3[DIR_PPM], DIR_PPM); - distributions->setDistributionInvForDirection(f[DIR_MPM], x1 + DX1[DIR_PMP], x2 + DX2[DIR_PMP], x3 + DX3[DIR_PMP], DIR_PMP); - distributions->setDistributionInvForDirection(f[DIR_MMM], x1 + DX1[DIR_PPP], x2 + DX2[DIR_PPP], x3 + DX3[DIR_PPP], DIR_PPP); - break; - case DIR_0P0: - f[DIR_0P0] = ftemp[DIR_0P0] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * f[DIR_0P0]; - f[DIR_PP0] = ftemp[DIR_PP0] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * f[DIR_PP0]; - f[DIR_MP0] = ftemp[DIR_MP0] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * f[DIR_MP0]; - f[DIR_0PP] = ftemp[DIR_0PP] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * f[DIR_0PP]; - f[DIR_0PM] = ftemp[DIR_0PM] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * f[DIR_0PM]; - f[DIR_PPP] = ftemp[DIR_PPP] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * f[DIR_PPP]; - f[DIR_MPP] = ftemp[DIR_MPP] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * f[DIR_MPP]; - f[DIR_PPM] = ftemp[DIR_PPM] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * f[DIR_PPM]; - f[DIR_MPM] = ftemp[DIR_MPM] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * f[DIR_MPM]; - - distributions->setDistributionInvForDirection(f[DIR_0P0], x1 + DX1[DIR_0M0], x2 + DX2[DIR_0M0], x3 + DX3[DIR_0M0], DIR_0M0); - distributions->setDistributionInvForDirection(f[DIR_PP0], x1 + DX1[DIR_MM0], x2 + DX2[DIR_MM0], x3 + DX3[DIR_MM0], DIR_MM0); - distributions->setDistributionInvForDirection(f[DIR_MP0], x1 + DX1[DIR_PM0], x2 + DX2[DIR_PM0], x3 + DX3[DIR_PM0], DIR_PM0); - distributions->setDistributionInvForDirection(f[DIR_0PP], x1 + DX1[DIR_0MM], x2 + DX2[DIR_0MM], x3 + DX3[DIR_0MM], DIR_0MM); - distributions->setDistributionInvForDirection(f[DIR_0PM], x1 + DX1[DIR_0MP], x2 + DX2[DIR_0MP], x3 + DX3[DIR_0MP], DIR_0MP); - distributions->setDistributionInvForDirection(f[DIR_PPP], x1 + DX1[DIR_MMM], x2 + DX2[DIR_MMM], x3 + DX3[DIR_MMM], DIR_MMM); - distributions->setDistributionInvForDirection(f[DIR_MPP], x1 + DX1[DIR_PMM], x2 + DX2[DIR_PMM], x3 + DX3[DIR_PMM], DIR_PMM); - distributions->setDistributionInvForDirection(f[DIR_PPM], x1 + DX1[DIR_MMP], x2 + DX2[DIR_MMP], x3 + DX3[DIR_MMP], DIR_MMP); - distributions->setDistributionInvForDirection(f[DIR_MPM], x1 + DX1[DIR_PMP], x2 + DX2[DIR_PMP], x3 + DX3[DIR_PMP], DIR_PMP); - break; - case DIR_0M0: - f[DIR_0M0] = ftemp[DIR_0M0] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * f[DIR_0M0]; - f[DIR_PM0] = ftemp[DIR_PM0] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * f[DIR_PM0]; - f[DIR_MM0] = ftemp[DIR_MM0] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * f[DIR_MM0]; - f[DIR_0MP] = ftemp[DIR_0MP] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * f[DIR_0MP]; - f[DIR_0MM] = ftemp[DIR_0MM] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * f[DIR_0MM]; - f[DIR_PMP] = ftemp[DIR_PMP] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * f[DIR_PMP]; - f[DIR_MMP] = ftemp[DIR_MMP] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * f[DIR_MMP]; - f[DIR_PMM] = ftemp[DIR_PMM] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * f[DIR_PMM]; - f[DIR_MMM] = ftemp[DIR_MMM] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * f[DIR_MMM]; - - distributions->setDistributionInvForDirection(f[DIR_0M0], x1 + DX1[DIR_0P0], x2 + DX2[DIR_0P0], x3 + DX3[DIR_0P0], DIR_0P0); - distributions->setDistributionInvForDirection(f[DIR_PM0], x1 + DX1[DIR_MP0], x2 + DX2[DIR_MP0], x3 + DX3[DIR_MP0], DIR_MP0); - distributions->setDistributionInvForDirection(f[DIR_MM0], x1 + DX1[DIR_PP0], x2 + DX2[DIR_PP0], x3 + DX3[DIR_PP0], DIR_PP0); - distributions->setDistributionInvForDirection(f[DIR_0MP], x1 + DX1[DIR_0PM], x2 + DX2[DIR_0PM], x3 + DX3[DIR_0PM], DIR_0PM); - distributions->setDistributionInvForDirection(f[DIR_0MM], x1 + DX1[DIR_0PP], x2 + DX2[DIR_0PP], x3 + DX3[DIR_0PP], DIR_0PP); - distributions->setDistributionInvForDirection(f[DIR_PMP], x1 + DX1[DIR_MPM], x2 + DX2[DIR_MPM], x3 + DX3[DIR_MPM], DIR_MPM); - distributions->setDistributionInvForDirection(f[DIR_MMP], x1 + DX1[DIR_PPM], x2 + DX2[DIR_PPM], x3 + DX3[DIR_PPM], DIR_PPM); - distributions->setDistributionInvForDirection(f[DIR_PMM], x1 + DX1[DIR_MPP], x2 + DX2[DIR_MPP], x3 + DX3[DIR_MPP], DIR_MPP); - distributions->setDistributionInvForDirection(f[DIR_MMM], x1 + DX1[DIR_PPP], x2 + DX2[DIR_PPP], x3 + DX3[DIR_PPP], DIR_PPP); - break; - case DIR_00P: - f[DIR_00P] = ftemp[DIR_00P] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * f[DIR_00P]; - f[DIR_P0P] = ftemp[DIR_P0P] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * f[DIR_P0P]; - f[DIR_M0P] = ftemp[DIR_M0P] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * f[DIR_M0P]; - f[DIR_0PP] = ftemp[DIR_0PP] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * f[DIR_0PP]; - f[DIR_0MP] = ftemp[DIR_0MP] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * f[DIR_0MP]; - f[DIR_PPP] = ftemp[DIR_PPP] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * f[DIR_PPP]; - f[DIR_MPP] = ftemp[DIR_MPP] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * f[DIR_MPP]; - f[DIR_PMP] = ftemp[DIR_PMP] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * f[DIR_PMP]; - f[DIR_MMP] = ftemp[DIR_MMP] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * f[DIR_MMP]; - - distributions->setDistributionInvForDirection(f[DIR_00P], x1 + DX1[DIR_00M], x2 + DX2[DIR_00M], x3 + DX3[DIR_00M], DIR_00M); - distributions->setDistributionInvForDirection(f[DIR_P0P], x1 + DX1[DIR_M0M], x2 + DX2[DIR_M0M], x3 + DX3[DIR_M0M], DIR_M0M); - distributions->setDistributionInvForDirection(f[DIR_M0P], x1 + DX1[DIR_P0M], x2 + DX2[DIR_P0M], x3 + DX3[DIR_P0M], DIR_P0M); - distributions->setDistributionInvForDirection(f[DIR_0PP], x1 + DX1[DIR_0MM], x2 + DX2[DIR_0MM], x3 + DX3[DIR_0MM], DIR_0MM); - distributions->setDistributionInvForDirection(f[DIR_0MP], x1 + DX1[DIR_0PM], x2 + DX2[DIR_0PM], x3 + DX3[DIR_0PM], DIR_0PM); - distributions->setDistributionInvForDirection(f[DIR_PPP], x1 + DX1[DIR_MMM], x2 + DX2[DIR_MMM], x3 + DX3[DIR_MMM], DIR_MMM); - distributions->setDistributionInvForDirection(f[DIR_MPP], x1 + DX1[DIR_PMM], x2 + DX2[DIR_PMM], x3 + DX3[DIR_PMM], DIR_PMM); - distributions->setDistributionInvForDirection(f[DIR_PMP], x1 + DX1[DIR_MPM], x2 + DX2[DIR_MPM], x3 + DX3[DIR_MPM], DIR_MPM); - distributions->setDistributionInvForDirection(f[DIR_MMP], x1 + DX1[DIR_PPM], x2 + DX2[DIR_PPM], x3 + DX3[DIR_PPM], DIR_PPM); - break; - case DIR_00M: - f[DIR_00M] = ftemp[DIR_00M] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * f[DIR_00M]; - f[DIR_P0M] = ftemp[DIR_P0M] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * f[DIR_P0M]; - f[DIR_M0M] = ftemp[DIR_M0M] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * f[DIR_M0M]; - f[DIR_0PM] = ftemp[DIR_0PM] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * f[DIR_0PM]; - f[DIR_0MM] = ftemp[DIR_0MM] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * f[DIR_0MM]; - f[DIR_PPM] = ftemp[DIR_PPM] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * f[DIR_PPM]; - f[DIR_MPM] = ftemp[DIR_MPM] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * f[DIR_MPM]; - f[DIR_PMM] = ftemp[DIR_PMM] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * f[DIR_PMM]; - f[DIR_MMM] = ftemp[DIR_MMM] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * f[DIR_MMM]; - - distributions->setDistributionInvForDirection(f[DIR_00M], x1 + DX1[DIR_00P], x2 + DX2[DIR_00P], x3 + DX3[DIR_00P], DIR_00P); - distributions->setDistributionInvForDirection(f[DIR_P0M], x1 + DX1[DIR_M0P], x2 + DX2[DIR_M0P], x3 + DX3[DIR_M0P], DIR_M0P); - distributions->setDistributionInvForDirection(f[DIR_M0M], x1 + DX1[DIR_P0P], x2 + DX2[DIR_P0P], x3 + DX3[DIR_P0P], DIR_P0P); - distributions->setDistributionInvForDirection(f[DIR_0PM], x1 + DX1[DIR_0MP], x2 + DX2[DIR_0MP], x3 + DX3[DIR_0MP], DIR_0MP); - distributions->setDistributionInvForDirection(f[DIR_0MM], x1 + DX1[DIR_0PP], x2 + DX2[DIR_0PP], x3 + DX3[DIR_0PP], DIR_0PP); - distributions->setDistributionInvForDirection(f[DIR_PPM], x1 + DX1[DIR_MMP], x2 + DX2[DIR_MMP], x3 + DX3[DIR_MMP], DIR_MMP); - distributions->setDistributionInvForDirection(f[DIR_MPM], x1 + DX1[DIR_PMP], x2 + DX2[DIR_PMP], x3 + DX3[DIR_PMP], DIR_PMP); - distributions->setDistributionInvForDirection(f[DIR_PMM], x1 + DX1[DIR_MPP], x2 + DX2[DIR_MPP], x3 + DX3[DIR_MPP], DIR_MPP); - distributions->setDistributionInvForDirection(f[DIR_MMM], x1 + DX1[DIR_PPP], x2 + DX2[DIR_PPP], x3 + DX3[DIR_PPP], DIR_PPP); - break; - default: - UB_THROW( - UbException(UB_EXARGS, "It isn't implemented non reflecting density boundary for this direction!")); - } -} diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/NonReflectingOutflowWithRelaxationBCStrategy.cpp b/src/cpu/VirtualFluidsCore/BoundaryConditions/NonReflectingOutflowWithRelaxationBCStrategy.cpp deleted file mode 100644 index f0fb4ccae28c38c13742fc9875acf7f44f545cbc..0000000000000000000000000000000000000000 --- a/src/cpu/VirtualFluidsCore/BoundaryConditions/NonReflectingOutflowWithRelaxationBCStrategy.cpp +++ /dev/null @@ -1,233 +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 NonReflectingOutflowWithRelaxationBCStrategy.cpp -//! \ingroup BoundarConditions -//! \author Konstantin Kutscher, Hussein Alihussein -//======================================================================================= -#include "NonReflectingOutflowWithRelaxationBCStrategy.h" - -#include "BoundaryConditions.h" -#include "D3Q27System.h" -#include "DistributionArray3D.h" - -NonReflectingOutflowWithRelaxationBCStrategy::NonReflectingOutflowWithRelaxationBCStrategy() -{ - BCStrategy::type = BCStrategy::NonReflectingOutflowWithRelaxationBCStrategy; - BCStrategy::preCollision = true; -} -////////////////////////////////////////////////////////////////////////// -NonReflectingOutflowWithRelaxationBCStrategy::~NonReflectingOutflowWithRelaxationBCStrategy() = default; -////////////////////////////////////////////////////////////////////////// -SPtr<BCStrategy> NonReflectingOutflowWithRelaxationBCStrategy::clone() -{ - SPtr<BCStrategy> bc(new NonReflectingOutflowWithRelaxationBCStrategy()); - return bc; -} -////////////////////////////////////////////////////////////////////////// -void NonReflectingOutflowWithRelaxationBCStrategy::addDistributions(SPtr<DistributionArray3D> distributions) -{ - this->distributions = distributions; -} -////////////////////////////////////////////////////////////////////////// -void NonReflectingOutflowWithRelaxationBCStrategy::applyBC() -{ - using namespace vf::lbm::dir; - - using namespace D3Q27System; - // using namespace UbMath; - using namespace vf::basics::constant; - - LBMReal f[ENDF + 1]; - LBMReal ftemp[ENDF + 1]; - - int nx1 = x1; - int nx2 = x2; - int nx3 = x3; - int direction = -1; - - // flag points in direction of fluid - if (bcPtr->hasDensityBoundaryFlag(DIR_P00)) { - nx1 += 1; - direction = DIR_P00; - } else if (bcPtr->hasDensityBoundaryFlag(DIR_M00)) { - nx1 -= 1; - direction = DIR_M00; - } else if (bcPtr->hasDensityBoundaryFlag(DIR_0P0)) { - nx2 += 1; - direction = DIR_0P0; - } else if (bcPtr->hasDensityBoundaryFlag(DIR_0M0)) { - nx2 -= 1; - direction = DIR_0M0; - } else if (bcPtr->hasDensityBoundaryFlag(DIR_00P)) { - nx3 += 1; - direction = DIR_00P; - } else if (bcPtr->hasDensityBoundaryFlag(DIR_00M)) { - nx3 -= 1; - direction = DIR_00M; - } else - UB_THROW(UbException(UB_EXARGS, "Danger...no orthogonal BC-Flag on density boundary...")); - - distributions->getDistribution(f, x1, x2, x3); - distributions->getDistribution(ftemp, nx1, nx2, nx3); - - LBMReal rho, vx1, vx2, vx3; - calcMacrosFct(f, rho, vx1, vx2, vx3); - LBMReal delf = rho* c1o100; - switch (direction) { - case DIR_P00: - f[DIR_P00] = ftemp[DIR_P00] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * f[DIR_P00] - delf* WEIGTH[DIR_P00]; - f[DIR_PP0] = ftemp[DIR_PP0] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * f[DIR_PP0]- delf* WEIGTH[DIR_PP0]; - f[DIR_PM0] = ftemp[DIR_PM0] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * f[DIR_PM0]- delf* WEIGTH[DIR_PM0]; - f[DIR_P0P] = ftemp[DIR_P0P] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * f[DIR_P0P]- delf* WEIGTH[DIR_P0P]; - f[DIR_P0M] = ftemp[DIR_P0M] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * f[DIR_P0M]- delf* WEIGTH[DIR_P0M]; - f[DIR_PPP] = ftemp[DIR_PPP] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * f[DIR_PPP]- delf* WEIGTH[DIR_PPP]; - f[DIR_PMP] = ftemp[DIR_PMP] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * f[DIR_PMP]- delf* WEIGTH[DIR_PMP]; - f[DIR_PPM] = ftemp[DIR_PPM] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * f[DIR_PPM]- delf* WEIGTH[DIR_PPM]; - f[DIR_PMM] = ftemp[DIR_PMM] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * f[DIR_PMM]- delf* WEIGTH[DIR_PMM]; - - distributions->setDistributionInvForDirection(f[DIR_P00], x1 + DX1[DIR_M00], x2 + DX2[DIR_M00], x3 + DX3[DIR_M00], DIR_M00); - distributions->setDistributionInvForDirection(f[DIR_PP0], x1 + DX1[DIR_MM0], x2 + DX2[DIR_MM0], x3 + DX3[DIR_MM0], DIR_MM0); - distributions->setDistributionInvForDirection(f[DIR_PM0], x1 + DX1[DIR_MP0], x2 + DX2[DIR_MP0], x3 + DX3[DIR_MP0], DIR_MP0); - distributions->setDistributionInvForDirection(f[DIR_P0P], x1 + DX1[DIR_M0M], x2 + DX2[DIR_M0M], x3 + DX3[DIR_M0M], DIR_M0M); - distributions->setDistributionInvForDirection(f[DIR_P0M], x1 + DX1[DIR_M0P], x2 + DX2[DIR_M0P], x3 + DX3[DIR_M0P], DIR_M0P); - distributions->setDistributionInvForDirection(f[DIR_PPP], x1 + DX1[DIR_MMM], x2 + DX2[DIR_MMM], x3 + DX3[DIR_MMM], DIR_MMM); - distributions->setDistributionInvForDirection(f[DIR_PMP], x1 + DX1[DIR_MPM], x2 + DX2[DIR_MPM], x3 + DX3[DIR_MPM], DIR_MPM); - distributions->setDistributionInvForDirection(f[DIR_PPM], x1 + DX1[DIR_MMP], x2 + DX2[DIR_MMP], x3 + DX3[DIR_MMP], DIR_MMP); - distributions->setDistributionInvForDirection(f[DIR_PMM], x1 + DX1[DIR_MPP], x2 + DX2[DIR_MPP], x3 + DX3[DIR_MPP], DIR_MPP); - break; - case DIR_M00: - f[DIR_M00] = ftemp[DIR_M00] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * f[DIR_M00]- delf* WEIGTH[DIR_M00]; - f[DIR_MP0] = ftemp[DIR_MP0] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * f[DIR_MP0]- delf* WEIGTH[DIR_MP0]; - f[DIR_MM0] = ftemp[DIR_MM0] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * f[DIR_MM0]- delf* WEIGTH[DIR_MM0]; - f[DIR_M0P] = ftemp[DIR_M0P] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * f[DIR_M0P]- delf* WEIGTH[DIR_M0P]; - f[DIR_M0M] = ftemp[DIR_M0M] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * f[DIR_M0M]- delf* WEIGTH[DIR_M0M]; - f[DIR_MPP] = ftemp[DIR_MPP] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * f[DIR_MPP]- delf* WEIGTH[DIR_MPP]; - f[DIR_MMP] = ftemp[DIR_MMP] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * f[DIR_MMP]- delf* WEIGTH[DIR_MMP]; - f[DIR_MPM] = ftemp[DIR_MPM] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * f[DIR_MPM]- delf* WEIGTH[DIR_MPM]; - f[DIR_MMM] = ftemp[DIR_MMM] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * f[DIR_MMM]- delf* WEIGTH[DIR_MMM]; - - distributions->setDistributionInvForDirection(f[DIR_M00], x1 + DX1[DIR_P00], x2 + DX2[DIR_P00], x3 + DX3[DIR_P00], DIR_P00); - distributions->setDistributionInvForDirection(f[DIR_MP0], x1 + DX1[DIR_PM0], x2 + DX2[DIR_PM0], x3 + DX3[DIR_PM0], DIR_PM0); - distributions->setDistributionInvForDirection(f[DIR_MM0], x1 + DX1[DIR_PP0], x2 + DX2[DIR_PP0], x3 + DX3[DIR_PP0], DIR_PP0); - distributions->setDistributionInvForDirection(f[DIR_M0P], x1 + DX1[DIR_P0M], x2 + DX2[DIR_P0M], x3 + DX3[DIR_P0M], DIR_P0M); - distributions->setDistributionInvForDirection(f[DIR_M0M], x1 + DX1[DIR_P0P], x2 + DX2[DIR_P0P], x3 + DX3[DIR_P0P], DIR_P0P); - distributions->setDistributionInvForDirection(f[DIR_MPP], x1 + DX1[DIR_PMM], x2 + DX2[DIR_PMM], x3 + DX3[DIR_PMM], DIR_PMM); - distributions->setDistributionInvForDirection(f[DIR_MMP], x1 + DX1[DIR_PPM], x2 + DX2[DIR_PPM], x3 + DX3[DIR_PPM], DIR_PPM); - distributions->setDistributionInvForDirection(f[DIR_MPM], x1 + DX1[DIR_PMP], x2 + DX2[DIR_PMP], x3 + DX3[DIR_PMP], DIR_PMP); - distributions->setDistributionInvForDirection(f[DIR_MMM], x1 + DX1[DIR_PPP], x2 + DX2[DIR_PPP], x3 + DX3[DIR_PPP], DIR_PPP); - break; - case DIR_0P0: - f[DIR_0P0] = ftemp[DIR_0P0] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * f[DIR_0P0]- delf* WEIGTH[DIR_0P0]; - f[DIR_PP0] = ftemp[DIR_PP0] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * f[DIR_PP0]- delf* WEIGTH[DIR_PP0]; - f[DIR_MP0] = ftemp[DIR_MP0] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * f[DIR_MP0]- delf* WEIGTH[DIR_MP0]; - f[DIR_0PP] = ftemp[DIR_0PP] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * f[DIR_0PP]- delf* WEIGTH[DIR_0PP]; - f[DIR_0PM] = ftemp[DIR_0PM] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * f[DIR_0PM]- delf* WEIGTH[DIR_0PM]; - f[DIR_PPP] = ftemp[DIR_PPP] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * f[DIR_PPP]- delf* WEIGTH[DIR_PPP]; - f[DIR_MPP] = ftemp[DIR_MPP] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * f[DIR_MPP]- delf* WEIGTH[DIR_MPP]; - f[DIR_PPM] = ftemp[DIR_PPM] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * f[DIR_PPM]- delf* WEIGTH[DIR_PPM]; - f[DIR_MPM] = ftemp[DIR_MPM] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * f[DIR_MPM]- delf* WEIGTH[DIR_MPM]; - - distributions->setDistributionInvForDirection(f[DIR_0P0], x1 + DX1[DIR_0M0], x2 + DX2[DIR_0M0], x3 + DX3[DIR_0M0], DIR_0M0); - distributions->setDistributionInvForDirection(f[DIR_PP0], x1 + DX1[DIR_MM0], x2 + DX2[DIR_MM0], x3 + DX3[DIR_MM0], DIR_MM0); - distributions->setDistributionInvForDirection(f[DIR_MP0], x1 + DX1[DIR_PM0], x2 + DX2[DIR_PM0], x3 + DX3[DIR_PM0], DIR_PM0); - distributions->setDistributionInvForDirection(f[DIR_0PP], x1 + DX1[DIR_0MM], x2 + DX2[DIR_0MM], x3 + DX3[DIR_0MM], DIR_0MM); - distributions->setDistributionInvForDirection(f[DIR_0PM], x1 + DX1[DIR_0MP], x2 + DX2[DIR_0MP], x3 + DX3[DIR_0MP], DIR_0MP); - distributions->setDistributionInvForDirection(f[DIR_PPP], x1 + DX1[DIR_MMM], x2 + DX2[DIR_MMM], x3 + DX3[DIR_MMM], DIR_MMM); - distributions->setDistributionInvForDirection(f[DIR_MPP], x1 + DX1[DIR_PMM], x2 + DX2[DIR_PMM], x3 + DX3[DIR_PMM], DIR_PMM); - distributions->setDistributionInvForDirection(f[DIR_PPM], x1 + DX1[DIR_MMP], x2 + DX2[DIR_MMP], x3 + DX3[DIR_MMP], DIR_MMP); - distributions->setDistributionInvForDirection(f[DIR_MPM], x1 + DX1[DIR_PMP], x2 + DX2[DIR_PMP], x3 + DX3[DIR_PMP], DIR_PMP); - break; - case DIR_0M0: - f[DIR_0M0] = ftemp[DIR_0M0] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * f[DIR_0M0]- delf* WEIGTH[DIR_0M0]; - f[DIR_PM0] = ftemp[DIR_PM0] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * f[DIR_PM0]- delf* WEIGTH[DIR_PM0]; - f[DIR_MM0] = ftemp[DIR_MM0] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * f[DIR_MM0]- delf* WEIGTH[DIR_MM0]; - f[DIR_0MP] = ftemp[DIR_0MP] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * f[DIR_0MP]- delf* WEIGTH[DIR_0MP]; - f[DIR_0MM] = ftemp[DIR_0MM] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * f[DIR_0MM]- delf* WEIGTH[DIR_0MM]; - f[DIR_PMP] = ftemp[DIR_PMP] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * f[DIR_PMP]- delf* WEIGTH[DIR_PMP]; - f[DIR_MMP] = ftemp[DIR_MMP] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * f[DIR_MMP]- delf* WEIGTH[DIR_MMP]; - f[DIR_PMM] = ftemp[DIR_PMM] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * f[DIR_PMM]- delf* WEIGTH[DIR_PMM]; - f[DIR_MMM] = ftemp[DIR_MMM] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * f[DIR_MMM]- delf* WEIGTH[DIR_MMM]; - - distributions->setDistributionInvForDirection(f[DIR_0M0], x1 + DX1[DIR_0P0], x2 + DX2[DIR_0P0], x3 + DX3[DIR_0P0], DIR_0P0); - distributions->setDistributionInvForDirection(f[DIR_PM0], x1 + DX1[DIR_MP0], x2 + DX2[DIR_MP0], x3 + DX3[DIR_MP0], DIR_MP0); - distributions->setDistributionInvForDirection(f[DIR_MM0], x1 + DX1[DIR_PP0], x2 + DX2[DIR_PP0], x3 + DX3[DIR_PP0], DIR_PP0); - distributions->setDistributionInvForDirection(f[DIR_0MP], x1 + DX1[DIR_0PM], x2 + DX2[DIR_0PM], x3 + DX3[DIR_0PM], DIR_0PM); - distributions->setDistributionInvForDirection(f[DIR_0MM], x1 + DX1[DIR_0PP], x2 + DX2[DIR_0PP], x3 + DX3[DIR_0PP], DIR_0PP); - distributions->setDistributionInvForDirection(f[DIR_PMP], x1 + DX1[DIR_MPM], x2 + DX2[DIR_MPM], x3 + DX3[DIR_MPM], DIR_MPM); - distributions->setDistributionInvForDirection(f[DIR_MMP], x1 + DX1[DIR_PPM], x2 + DX2[DIR_PPM], x3 + DX3[DIR_PPM], DIR_PPM); - distributions->setDistributionInvForDirection(f[DIR_PMM], x1 + DX1[DIR_MPP], x2 + DX2[DIR_MPP], x3 + DX3[DIR_MPP], DIR_MPP); - distributions->setDistributionInvForDirection(f[DIR_MMM], x1 + DX1[DIR_PPP], x2 + DX2[DIR_PPP], x3 + DX3[DIR_PPP], DIR_PPP); - break; - case DIR_00P: - f[DIR_00P] = ftemp[DIR_00P] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * f[DIR_00P]- delf* WEIGTH[DIR_00P]; - f[DIR_P0P] = ftemp[DIR_P0P] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * f[DIR_P0P]- delf* WEIGTH[DIR_P0P]; - f[DIR_M0P] = ftemp[DIR_M0P] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * f[DIR_M0P]- delf* WEIGTH[DIR_M0P]; - f[DIR_0PP] = ftemp[DIR_0PP] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * f[DIR_0PP]- delf* WEIGTH[DIR_0PP]; - f[DIR_0MP] = ftemp[DIR_0MP] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * f[DIR_0MP]- delf* WEIGTH[DIR_0MP]; - f[DIR_PPP] = ftemp[DIR_PPP] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * f[DIR_PPP]- delf* WEIGTH[DIR_PPP]; - f[DIR_MPP] = ftemp[DIR_MPP] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * f[DIR_MPP]- delf* WEIGTH[DIR_MPP]; - f[DIR_PMP] = ftemp[DIR_PMP] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * f[DIR_PMP]- delf* WEIGTH[DIR_PMP]; - f[DIR_MMP] = ftemp[DIR_MMP] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * f[DIR_MMP]- delf* WEIGTH[DIR_MMP]; - - distributions->setDistributionInvForDirection(f[DIR_00P], x1 + DX1[DIR_00M], x2 + DX2[DIR_00M], x3 + DX3[DIR_00M], DIR_00M); - distributions->setDistributionInvForDirection(f[DIR_P0P], x1 + DX1[DIR_M0M], x2 + DX2[DIR_M0M], x3 + DX3[DIR_M0M], DIR_M0M); - distributions->setDistributionInvForDirection(f[DIR_M0P], x1 + DX1[DIR_P0M], x2 + DX2[DIR_P0M], x3 + DX3[DIR_P0M], DIR_P0M); - distributions->setDistributionInvForDirection(f[DIR_0PP], x1 + DX1[DIR_0MM], x2 + DX2[DIR_0MM], x3 + DX3[DIR_0MM], DIR_0MM); - distributions->setDistributionInvForDirection(f[DIR_0MP], x1 + DX1[DIR_0PM], x2 + DX2[DIR_0PM], x3 + DX3[DIR_0PM], DIR_0PM); - distributions->setDistributionInvForDirection(f[DIR_PPP], x1 + DX1[DIR_MMM], x2 + DX2[DIR_MMM], x3 + DX3[DIR_MMM], DIR_MMM); - distributions->setDistributionInvForDirection(f[DIR_MPP], x1 + DX1[DIR_PMM], x2 + DX2[DIR_PMM], x3 + DX3[DIR_PMM], DIR_PMM); - distributions->setDistributionInvForDirection(f[DIR_PMP], x1 + DX1[DIR_MPM], x2 + DX2[DIR_MPM], x3 + DX3[DIR_MPM], DIR_MPM); - distributions->setDistributionInvForDirection(f[DIR_MMP], x1 + DX1[DIR_PPM], x2 + DX2[DIR_PPM], x3 + DX3[DIR_PPM], DIR_PPM); - break; - case DIR_00M: - f[DIR_00M] = ftemp[DIR_00M] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * f[DIR_00M]- delf* WEIGTH[DIR_00M]; - f[DIR_P0M] = ftemp[DIR_P0M] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * f[DIR_P0M]- delf* WEIGTH[DIR_P0M]; - f[DIR_M0M] = ftemp[DIR_M0M] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * f[DIR_M0M]- delf* WEIGTH[DIR_M0M]; - f[DIR_0PM] = ftemp[DIR_0PM] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * f[DIR_0PM]- delf* WEIGTH[DIR_0PM]; - f[DIR_0MM] = ftemp[DIR_0MM] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * f[DIR_0MM]- delf* WEIGTH[DIR_0MM]; - f[DIR_PPM] = ftemp[DIR_PPM] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * f[DIR_PPM]- delf* WEIGTH[DIR_PPM]; - f[DIR_MPM] = ftemp[DIR_MPM] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * f[DIR_MPM]- delf* WEIGTH[DIR_MPM]; - f[DIR_PMM] = ftemp[DIR_PMM] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * f[DIR_PMM]- delf* WEIGTH[DIR_PMM]; - f[DIR_MMM] = ftemp[DIR_MMM] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * f[DIR_MMM]- delf* WEIGTH[DIR_MMM]; - - distributions->setDistributionInvForDirection(f[DIR_00M], x1 + DX1[DIR_00P], x2 + DX2[DIR_00P], x3 + DX3[DIR_00P], DIR_00P); - distributions->setDistributionInvForDirection(f[DIR_P0M], x1 + DX1[DIR_M0P], x2 + DX2[DIR_M0P], x3 + DX3[DIR_M0P], DIR_M0P); - distributions->setDistributionInvForDirection(f[DIR_M0M], x1 + DX1[DIR_P0P], x2 + DX2[DIR_P0P], x3 + DX3[DIR_P0P], DIR_P0P); - distributions->setDistributionInvForDirection(f[DIR_0PM], x1 + DX1[DIR_0MP], x2 + DX2[DIR_0MP], x3 + DX3[DIR_0MP], DIR_0MP); - distributions->setDistributionInvForDirection(f[DIR_0MM], x1 + DX1[DIR_0PP], x2 + DX2[DIR_0PP], x3 + DX3[DIR_0PP], DIR_0PP); - distributions->setDistributionInvForDirection(f[DIR_PPM], x1 + DX1[DIR_MMP], x2 + DX2[DIR_MMP], x3 + DX3[DIR_MMP], DIR_MMP); - distributions->setDistributionInvForDirection(f[DIR_MPM], x1 + DX1[DIR_PMP], x2 + DX2[DIR_PMP], x3 + DX3[DIR_PMP], DIR_PMP); - distributions->setDistributionInvForDirection(f[DIR_PMM], x1 + DX1[DIR_MPP], x2 + DX2[DIR_MPP], x3 + DX3[DIR_MPP], DIR_MPP); - distributions->setDistributionInvForDirection(f[DIR_MMM], x1 + DX1[DIR_PPP], x2 + DX2[DIR_PPP], x3 + DX3[DIR_PPP], DIR_PPP); - break; - default: - UB_THROW( - UbException(UB_EXARGS, "It isn't implemented non reflecting density boundary for this direction!")); - } -} diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/SlipBCStrategy.cpp b/src/cpu/VirtualFluidsCore/BoundaryConditions/SlipBCStrategy.cpp deleted file mode 100644 index 34093b6a86833266b7c589ce1ed88252ba608892..0000000000000000000000000000000000000000 --- a/src/cpu/VirtualFluidsCore/BoundaryConditions/SlipBCStrategy.cpp +++ /dev/null @@ -1,84 +0,0 @@ -#include "SlipBCStrategy.h" -#include "BoundaryConditions.h" -#include "DistributionArray3D.h" - -SlipBCStrategy::SlipBCStrategy() -{ - BCStrategy::type = BCStrategy::SlipBCStrategy; - BCStrategy::preCollision = false; -} -////////////////////////////////////////////////////////////////////////// -SlipBCStrategy::~SlipBCStrategy() = default; -////////////////////////////////////////////////////////////////////////// -SPtr<BCStrategy> SlipBCStrategy::clone() -{ - SPtr<BCStrategy> bc(new SlipBCStrategy()); - return bc; -} -////////////////////////////////////////////////////////////////////////// -void SlipBCStrategy::addDistributions(SPtr<DistributionArray3D> distributions) { this->distributions = distributions; } -////////////////////////////////////////////////////////////////////////// -void SlipBCStrategy::applyBC() -{ - using namespace vf::lbm::dir; - - real f[D3Q27System::ENDF + 1]; - real feq[D3Q27System::ENDF + 1]; - distributions->getDistributionInv(f, x1, x2, x3); - real rho, vx1, vx2, vx3, drho; - calcMacrosFct(f, drho, vx1, vx2, vx3); - calcFeqFct(feq, drho, vx1, vx2, vx3); - - UbTupleFloat3 normale = bcPtr->getNormalVector(); - real amp = vx1 * val<1>(normale) + vx2 * val<2>(normale) + vx3 * val<3>(normale); - - vx1 = vx1 - amp * val<1>(normale); // normale zeigt von struktur weg! - vx2 = vx2 - amp * val<2>(normale); // normale zeigt von struktur weg! - vx3 = vx3 - amp * val<3>(normale); // normale zeigt von struktur weg! - - rho = vf::basics::constant::c1o1 + drho * compressibleFactor; - - for (int fdir = D3Q27System::FSTARTDIR; fdir<=D3Q27System::FENDDIR; fdir++) - { - if (bcPtr->hasSlipBoundaryFlag(fdir)) - { - //quadratic bounce back - const int invDir = D3Q27System::INVDIR[fdir]; - real q = bcPtr->getQ(invDir);// m+m q=0 stabiler - //vx3=0; - real velocity = vf::basics::constant::c0o1; - switch (invDir) - { - case DIR_P00: velocity = (vf::basics::constant::c4o9*(+vx1)); break; //(2/cs^2)(=6)*rho_0(=1 bei imkompr)*wi*u*ei mit cs=1/sqrt(3) - case DIR_M00: velocity = (vf::basics::constant::c4o9*(-vx1)); break; //z.B. aus paper manfred MRT LB models in three dimensions (2002) - case DIR_0P0: velocity = (vf::basics::constant::c4o9*(+vx2)); break; - case DIR_0M0: velocity = (vf::basics::constant::c4o9*(-vx2)); break; - case DIR_00P: velocity = (vf::basics::constant::c4o9*(+vx3)); break; - case DIR_00M: velocity = (vf::basics::constant::c4o9*(-vx3)); break; - case DIR_PP0: velocity = (vf::basics::constant::c1o9*(+vx1+vx2)); break; - case DIR_MM0: velocity = (vf::basics::constant::c1o9*(-vx1-vx2)); break; - case DIR_PM0: velocity = (vf::basics::constant::c1o9*(+vx1-vx2)); break; - case DIR_MP0: velocity = (vf::basics::constant::c1o9*(-vx1+vx2)); break; - case DIR_P0P: velocity = (vf::basics::constant::c1o9*(+vx1+vx3)); break; - case DIR_M0M: velocity = (vf::basics::constant::c1o9*(-vx1-vx3)); break; - case DIR_P0M: velocity = (vf::basics::constant::c1o9*(+vx1-vx3)); break; - case DIR_M0P: velocity = (vf::basics::constant::c1o9*(-vx1+vx3)); break; - case DIR_0PP: velocity = (vf::basics::constant::c1o9*(+vx2+vx3)); break; - case DIR_0MM: velocity = (vf::basics::constant::c1o9*(-vx2-vx3)); break; - case DIR_0PM: velocity = (vf::basics::constant::c1o9*(+vx2-vx3)); break; - case DIR_0MP: velocity = (vf::basics::constant::c1o9*(-vx2+vx3)); break; - case DIR_PPP: velocity = (vf::basics::constant::c1o36*(+vx1+vx2+vx3)); break; - case DIR_MMM: velocity = (vf::basics::constant::c1o36*(-vx1-vx2-vx3)); break; - case DIR_PPM: velocity = (vf::basics::constant::c1o36*(+vx1+vx2-vx3)); break; - case DIR_MMP: velocity = (vf::basics::constant::c1o36*(-vx1-vx2+vx3)); break; - case DIR_PMP: velocity = (vf::basics::constant::c1o36*(+vx1-vx2+vx3)); break; - case DIR_MPM: velocity = (vf::basics::constant::c1o36*(-vx1+vx2-vx3)); break; - case DIR_PMM: velocity = (vf::basics::constant::c1o36*(+vx1-vx2-vx3)); break; - case DIR_MPP: velocity = (vf::basics::constant::c1o36*(-vx1+vx2+vx3)); break; - default: throw UbException(UB_EXARGS, "unknown error"); - } - real fReturn = ((vf::basics::constant::c1o1-q)/(vf::basics::constant::c1o1+q))*((f[invDir]-feq[invDir])/(vf::basics::constant::c1o1-collFactor)+feq[invDir])+((q*(f[invDir]+f[fdir])-velocity*rho)/(vf::basics::constant::c1o1+q)); - distributions->setDistributionForDirection(fReturn, x1+D3Q27System::DX1[invDir], x2+D3Q27System::DX2[invDir], x3+D3Q27System::DX3[invDir], fdir); - } - } -} \ No newline at end of file diff --git a/src/cpu/VirtualFluidsCore/LBM/BGKLBMKernel.cpp b/src/cpu/VirtualFluidsCore/LBM/BGKLBMKernel.cpp deleted file mode 100644 index 0145e633de3901f407e93b374eaad7380ffac772..0000000000000000000000000000000000000000 --- a/src/cpu/VirtualFluidsCore/LBM/BGKLBMKernel.cpp +++ /dev/null @@ -1,305 +0,0 @@ -#include "BGKLBMKernel.h" -#include "BCArray3D.h" -#include "BCSet.h" -#include "D3Q27EsoTwist3DSoA.h" -#include "D3Q27EsoTwist3DSplittedVector.h" -#include "D3Q27System.h" -#include "DataSet3D.h" -#include "Block3D.h" -#include "basics/constants/NumericConstants.h" - -#define PROOF_CORRECTNESS - -////////////////////////////////////////////////////////////////////////// -BGKLBMKernel::BGKLBMKernel() { this->compressible = false; } -////////////////////////////////////////////////////////////////////////// -BGKLBMKernel::~BGKLBMKernel(void) = default; -////////////////////////////////////////////////////////////////////////// -void BGKLBMKernel::initDataSet() -{ - SPtr<DistributionArray3D> d(new D3Q27EsoTwist3DSplittedVector(nx[0] + 2, nx[1] + 2, nx[2] + 2, -999.9)); - dataSet->setFdistributions(d); -} -////////////////////////////////////////////////////////////////////////// -SPtr<LBMKernel> BGKLBMKernel::clone() -{ - SPtr<LBMKernel> kernel(new BGKLBMKernel()); - kernel->setNX(nx); - std::dynamic_pointer_cast<BGKLBMKernel>(kernel)->initDataSet(); - kernel->setCollisionFactor(this->collFactor); - kernel->setBCSet(bcSet->clone(kernel)); - kernel->setWithForcing(withForcing); - kernel->setForcingX1(muForcingX1); - kernel->setForcingX2(muForcingX2); - kernel->setForcingX3(muForcingX3); - kernel->setIndex(ix1, ix2, ix3); - kernel->setDeltaT(deltaT); - kernel->setBlock(block.lock()); - return kernel; -} -////////////////////////////////////////////////////////////////////////// -void BGKLBMKernel::calculate(int step) -{ - using namespace D3Q27System; - // using namespace UbMath; - using namespace vf::basics::constant; - using namespace vf::lbm::dir; - - // initializing of forcing stuff - if (withForcing) { - muForcingX1.DefineVar("x1", &muX1); - muForcingX1.DefineVar("x2", &muX2); - muForcingX1.DefineVar("x3", &muX3); - muForcingX2.DefineVar("x1", &muX1); - muForcingX2.DefineVar("x2", &muX2); - muForcingX2.DefineVar("x3", &muX3); - muForcingX3.DefineVar("x1", &muX1); - muForcingX3.DefineVar("x2", &muX2); - muForcingX3.DefineVar("x3", &muX3); - forcingX1 = 0; - forcingX2 = 0; - forcingX3 = 0; - } - ///////////////////////////////////// - - localDistributions = - std::dynamic_pointer_cast<D3Q27EsoTwist3DSplittedVector>(dataSet->getFdistributions())->getLocalDistributions(); - nonLocalDistributions = std::dynamic_pointer_cast<D3Q27EsoTwist3DSplittedVector>(dataSet->getFdistributions()) - ->getNonLocalDistributions(); - zeroDistributions = - std::dynamic_pointer_cast<D3Q27EsoTwist3DSplittedVector>(dataSet->getFdistributions())->getZeroDistributions(); - - SPtr<BCArray3D> bcArray = this->getBCSet()->getBCArray(); - real f[D3Q27System::ENDF + 1]; - real feq[D3Q27System::ENDF + 1]; - real drho, vx1, vx2, vx3; - const int bcArrayMaxX1 = (int)bcArray->getNX1(); - const int bcArrayMaxX2 = (int)bcArray->getNX2(); - const int bcArrayMaxX3 = (int)bcArray->getNX3(); - - int minX1 = ghostLayerWidth; - int minX2 = ghostLayerWidth; - int minX3 = ghostLayerWidth; - int maxX1 = bcArrayMaxX1 - ghostLayerWidth; - int maxX2 = bcArrayMaxX2 - ghostLayerWidth; - int maxX3 = bcArrayMaxX3 - ghostLayerWidth; - - for (int x3 = minX3; x3 < maxX3; x3++) { - for (int x2 = minX2; x2 < maxX2; x2++) { - for (int x1 = minX1; x1 < maxX1; x1++) { - if (!bcArray->isSolid(x1, x2, x3) && !bcArray->isUndefined(x1, x2, x3)) { - int x1p = x1 + 1; - int x2p = x2 + 1; - int x3p = x3 + 1; - ////////////////////////////////////////////////////////////////////////// - // read distribution - //////////////////////////////////////////////////////////////////////////// - f[DIR_000] = (*this->zeroDistributions)(x1, x2, x3); - - f[DIR_P00] = (*this->localDistributions)(D3Q27System::ET_E, x1, x2, x3); - f[DIR_0P0] = (*this->localDistributions)(D3Q27System::ET_N, x1, x2, x3); - f[DIR_00P] = (*this->localDistributions)(D3Q27System::ET_T, x1, x2, x3); - f[DIR_PP0] = (*this->localDistributions)(D3Q27System::ET_NE, x1, x2, x3); - f[DIR_MP0] = (*this->localDistributions)(D3Q27System::ET_NW, x1p, x2, x3); - f[DIR_P0P] = (*this->localDistributions)(D3Q27System::ET_TE, x1, x2, x3); - f[DIR_M0P] = (*this->localDistributions)(D3Q27System::ET_TW, x1p, x2, x3); - f[DIR_0PP] = (*this->localDistributions)(D3Q27System::ET_TN, x1, x2, x3); - f[DIR_0MP] = (*this->localDistributions)(D3Q27System::ET_TS, x1, x2p, x3); - f[DIR_PPP] = (*this->localDistributions)(D3Q27System::ET_TNE, x1, x2, x3); - f[DIR_MPP] = (*this->localDistributions)(D3Q27System::ET_TNW, x1p, x2, x3); - f[DIR_PMP] = (*this->localDistributions)(D3Q27System::ET_TSE, x1, x2p, x3); - f[DIR_MMP] = (*this->localDistributions)(D3Q27System::ET_TSW, x1p, x2p, x3); - - f[DIR_M00] = (*this->nonLocalDistributions)(D3Q27System::ET_W, x1p, x2, x3); - f[DIR_0M0] = (*this->nonLocalDistributions)(D3Q27System::ET_S, x1, x2p, x3); - f[DIR_00M] = (*this->nonLocalDistributions)(D3Q27System::ET_B, x1, x2, x3p); - f[DIR_MM0] = (*this->nonLocalDistributions)(D3Q27System::ET_SW, x1p, x2p, x3); - f[DIR_PM0] = (*this->nonLocalDistributions)(D3Q27System::ET_SE, x1, x2p, x3); - f[DIR_M0M] = (*this->nonLocalDistributions)(D3Q27System::ET_BW, x1p, x2, x3p); - f[DIR_P0M] = (*this->nonLocalDistributions)(D3Q27System::ET_BE, x1, x2, x3p); - f[DIR_0MM] = (*this->nonLocalDistributions)(D3Q27System::ET_BS, x1, x2p, x3p); - f[DIR_0PM] = (*this->nonLocalDistributions)(D3Q27System::ET_BN, x1, x2, x3p); - f[DIR_MMM] = (*this->nonLocalDistributions)(D3Q27System::ET_BSW, x1p, x2p, x3p); - f[DIR_PMM] = (*this->nonLocalDistributions)(D3Q27System::ET_BSE, x1, x2p, x3p); - f[DIR_MPM] = (*this->nonLocalDistributions)(D3Q27System::ET_BNW, x1p, x2, x3p); - f[DIR_PPM] = (*this->nonLocalDistributions)(D3Q27System::ET_BNE, x1, x2, x3p); - ////////////////////////////////////////////////////////////////////////// - - drho = f[DIR_000] + f[DIR_P00] + f[DIR_M00] + f[DIR_0P0] + f[DIR_0M0] + f[DIR_00P] + f[DIR_00M] + f[DIR_PP0] + f[DIR_MM0] + f[DIR_PM0] + f[DIR_MP0] + f[DIR_P0P] + - f[DIR_M0M] + f[DIR_P0M] + f[DIR_M0P] + f[DIR_0PP] + f[DIR_0MM] + f[DIR_0PM] + f[DIR_0MP] + f[DIR_PPP] + f[DIR_MMP] + f[DIR_PMP] + f[DIR_MPP] + - f[DIR_PPM] + f[DIR_MMM] + f[DIR_PMM] + f[DIR_MPM]; - - vx1 = f[DIR_P00] - f[DIR_M00] + f[DIR_PP0] - f[DIR_MM0] + f[DIR_PM0] - f[DIR_MP0] + f[DIR_P0P] - f[DIR_M0M] + f[DIR_P0M] - f[DIR_M0P] + f[DIR_PPP] - - f[DIR_MMP] + f[DIR_PMP] - f[DIR_MPP] + f[DIR_PPM] - f[DIR_MMM] + f[DIR_PMM] - f[DIR_MPM]; - - vx2 = f[DIR_0P0] - f[DIR_0M0] + f[DIR_PP0] - f[DIR_MM0] - f[DIR_PM0] + f[DIR_MP0] + f[DIR_0PP] - f[DIR_0MM] + f[DIR_0PM] - f[DIR_0MP] + f[DIR_PPP] - - f[DIR_MMP] - f[DIR_PMP] + f[DIR_MPP] + f[DIR_PPM] - f[DIR_MMM] - f[DIR_PMM] + f[DIR_MPM]; - - vx3 = f[DIR_00P] - f[DIR_00M] + f[DIR_P0P] - f[DIR_M0M] - f[DIR_P0M] + f[DIR_M0P] + f[DIR_0PP] - f[DIR_0MM] - f[DIR_0PM] + f[DIR_0MP] + f[DIR_PPP] + - f[DIR_MMP] + f[DIR_PMP] + f[DIR_MPP] - f[DIR_PPM] - f[DIR_MMM] - f[DIR_PMM] - f[DIR_MPM]; - - real cu_sq = c3o2 * (vx1 * vx1 + vx2 * vx2 + vx3 * vx3); - - feq[DIR_000] = c8o27 * (drho - cu_sq); - feq[DIR_P00] = c2o27 * (drho + c3o1 * (vx1) + c9o2 * (vx1) * (vx1)-cu_sq); - feq[DIR_M00] = c2o27 * (drho + c3o1 * (-vx1) + c9o2 * (-vx1) * (-vx1) - cu_sq); - feq[DIR_0P0] = c2o27 * (drho + c3o1 * (vx2) + c9o2 * (vx2) * (vx2)-cu_sq); - feq[DIR_0M0] = c2o27 * (drho + c3o1 * (-vx2) + c9o2 * (-vx2) * (-vx2) - cu_sq); - feq[DIR_00P] = c2o27 * (drho + c3o1 * (vx3) + c9o2 * (vx3) * (vx3)-cu_sq); - feq[DIR_00M] = c2o27 * (drho + c3o1 * (-vx3) + c9o2 * (-vx3) * (-vx3) - cu_sq); - feq[DIR_PP0] = c1o54 * (drho + c3o1 * (vx1 + vx2) + c9o2 * (vx1 + vx2) * (vx1 + vx2) - cu_sq); - feq[DIR_MM0] = c1o54 * (drho + c3o1 * (-vx1 - vx2) + c9o2 * (-vx1 - vx2) * (-vx1 - vx2) - cu_sq); - feq[DIR_PM0] = c1o54 * (drho + c3o1 * (vx1 - vx2) + c9o2 * (vx1 - vx2) * (vx1 - vx2) - cu_sq); - feq[DIR_MP0] = c1o54 * (drho + c3o1 * (-vx1 + vx2) + c9o2 * (-vx1 + vx2) * (-vx1 + vx2) - cu_sq); - feq[DIR_P0P] = c1o54 * (drho + c3o1 * (vx1 + vx3) + c9o2 * (vx1 + vx3) * (vx1 + vx3) - cu_sq); - feq[DIR_M0M] = c1o54 * (drho + c3o1 * (-vx1 - vx3) + c9o2 * (-vx1 - vx3) * (-vx1 - vx3) - cu_sq); - feq[DIR_P0M] = c1o54 * (drho + c3o1 * (vx1 - vx3) + c9o2 * (vx1 - vx3) * (vx1 - vx3) - cu_sq); - feq[DIR_M0P] = c1o54 * (drho + c3o1 * (-vx1 + vx3) + c9o2 * (-vx1 + vx3) * (-vx1 + vx3) - cu_sq); - feq[DIR_0PP] = c1o54 * (drho + c3o1 * (vx2 + vx3) + c9o2 * (vx2 + vx3) * (vx2 + vx3) - cu_sq); - feq[DIR_0MM] = c1o54 * (drho + c3o1 * (-vx2 - vx3) + c9o2 * (-vx2 - vx3) * (-vx2 - vx3) - cu_sq); - feq[DIR_0PM] = c1o54 * (drho + c3o1 * (vx2 - vx3) + c9o2 * (vx2 - vx3) * (vx2 - vx3) - cu_sq); - feq[DIR_0MP] = c1o54 * (drho + c3o1 * (-vx2 + vx3) + c9o2 * (-vx2 + vx3) * (-vx2 + vx3) - cu_sq); - feq[DIR_PPP] = c1o216 * - (drho + c3o1 * (vx1 + vx2 + vx3) + c9o2 * (vx1 + vx2 + vx3) * (vx1 + vx2 + vx3) - cu_sq); - feq[DIR_MMM] = c1o216 * (drho + c3o1 * (-vx1 - vx2 - vx3) + - c9o2 * (-vx1 - vx2 - vx3) * (-vx1 - vx2 - vx3) - cu_sq); - feq[DIR_PPM] = c1o216 * - (drho + c3o1 * (vx1 + vx2 - vx3) + c9o2 * (vx1 + vx2 - vx3) * (vx1 + vx2 - vx3) - cu_sq); - feq[DIR_MMP] = c1o216 * (drho + c3o1 * (-vx1 - vx2 + vx3) + - c9o2 * (-vx1 - vx2 + vx3) * (-vx1 - vx2 + vx3) - cu_sq); - feq[DIR_PMP] = c1o216 * - (drho + c3o1 * (vx1 - vx2 + vx3) + c9o2 * (vx1 - vx2 + vx3) * (vx1 - vx2 + vx3) - cu_sq); - feq[DIR_MPM] = c1o216 * (drho + c3o1 * (-vx1 + vx2 - vx3) + - c9o2 * (-vx1 + vx2 - vx3) * (-vx1 + vx2 - vx3) - cu_sq); - feq[DIR_PMM] = c1o216 * - (drho + c3o1 * (vx1 - vx2 - vx3) + c9o2 * (vx1 - vx2 - vx3) * (vx1 - vx2 - vx3) - cu_sq); - feq[DIR_MPP] = c1o216 * (drho + c3o1 * (-vx1 + vx2 + vx3) + - c9o2 * (-vx1 + vx2 + vx3) * (-vx1 + vx2 + vx3) - cu_sq); - - // Relaxation - f[DIR_000] += (feq[DIR_000] - f[DIR_000]) * collFactor; - f[DIR_P00] += (feq[DIR_P00] - f[DIR_P00]) * collFactor; - f[DIR_M00] += (feq[DIR_M00] - f[DIR_M00]) * collFactor; - f[DIR_0P0] += (feq[DIR_0P0] - f[DIR_0P0]) * collFactor; - f[DIR_0M0] += (feq[DIR_0M0] - f[DIR_0M0]) * collFactor; - f[DIR_00P] += (feq[DIR_00P] - f[DIR_00P]) * collFactor; - f[DIR_00M] += (feq[DIR_00M] - f[DIR_00M]) * collFactor; - f[DIR_PP0] += (feq[DIR_PP0] - f[DIR_PP0]) * collFactor; - f[DIR_MM0] += (feq[DIR_MM0] - f[DIR_MM0]) * collFactor; - f[DIR_PM0] += (feq[DIR_PM0] - f[DIR_PM0]) * collFactor; - f[DIR_MP0] += (feq[DIR_MP0] - f[DIR_MP0]) * collFactor; - f[DIR_P0P] += (feq[DIR_P0P] - f[DIR_P0P]) * collFactor; - f[DIR_M0M] += (feq[DIR_M0M] - f[DIR_M0M]) * collFactor; - f[DIR_P0M] += (feq[DIR_P0M] - f[DIR_P0M]) * collFactor; - f[DIR_M0P] += (feq[DIR_M0P] - f[DIR_M0P]) * collFactor; - f[DIR_0PP] += (feq[DIR_0PP] - f[DIR_0PP]) * collFactor; - f[DIR_0MM] += (feq[DIR_0MM] - f[DIR_0MM]) * collFactor; - f[DIR_0PM] += (feq[DIR_0PM] - f[DIR_0PM]) * collFactor; - f[DIR_0MP] += (feq[DIR_0MP] - f[DIR_0MP]) * collFactor; - - f[DIR_PPP] += (feq[DIR_PPP] - f[DIR_PPP]) * collFactor; - f[DIR_MMM] += (feq[DIR_MMM] - f[DIR_MMM]) * collFactor; - f[DIR_PPM] += (feq[DIR_PPM] - f[DIR_PPM]) * collFactor; - f[DIR_MMP] += (feq[DIR_MMP] - f[DIR_MMP]) * collFactor; - f[DIR_PMP] += (feq[DIR_PMP] - f[DIR_PMP]) * collFactor; - f[DIR_MPM] += (feq[DIR_MPM] - f[DIR_MPM]) * collFactor; - f[DIR_PMM] += (feq[DIR_PMM] - f[DIR_PMM]) * collFactor; - f[DIR_MPP] += (feq[DIR_MPP] - f[DIR_MPP]) * collFactor; - - ////////////////////////////////////////////////////////////////////////// - // forcing - if (withForcing) { - muX1 = x1 + ix1 * bcArrayMaxX1; - muX2 = x2 + ix2 * bcArrayMaxX2; - muX3 = x3 + ix3 * bcArrayMaxX3; - - forcingX1 = muForcingX1.Eval(); - forcingX2 = muForcingX2.Eval(); - forcingX3 = muForcingX3.Eval(); - - f[DIR_000] += c0o1; - f[DIR_P00] += c3o1 * c2o27 * (forcingX1); - f[DIR_M00] += c3o1 * c2o27 * (-forcingX1); - f[DIR_0P0] += c3o1 * c2o27 * (forcingX2); - f[DIR_0M0] += c3o1 * c2o27 * (-forcingX2); - f[DIR_00P] += c3o1 * c2o27 * (forcingX3); - f[DIR_00M] += c3o1 * c2o27 * (-forcingX3); - f[DIR_PP0] += c3o1 * c1o54 * (forcingX1 + forcingX2); - f[DIR_MM0] += c3o1 * c1o54 * (-forcingX1 - forcingX2); - f[DIR_PM0] += c3o1 * c1o54 * (forcingX1 - forcingX2); - f[DIR_MP0] += c3o1 * c1o54 * (-forcingX1 + forcingX2); - f[DIR_P0P] += c3o1 * c1o54 * (forcingX1 + forcingX3); - f[DIR_M0M] += c3o1 * c1o54 * (-forcingX1 - forcingX3); - f[DIR_P0M] += c3o1 * c1o54 * (forcingX1 - forcingX3); - f[DIR_M0P] += c3o1 * c1o54 * (-forcingX1 + forcingX3); - f[DIR_0PP] += c3o1 * c1o54 * (forcingX2 + forcingX3); - f[DIR_0MM] += c3o1 * c1o54 * (-forcingX2 - forcingX3); - f[DIR_0PM] += c3o1 * c1o54 * (forcingX2 - forcingX3); - f[DIR_0MP] += c3o1 * c1o54 * (-forcingX2 + forcingX3); - f[DIR_PPP] += c3o1 * c1o216 * (forcingX1 + forcingX2 + forcingX3); - f[DIR_MMM] += c3o1 * c1o216 * (-forcingX1 - forcingX2 - forcingX3); - f[DIR_PPM] += c3o1 * c1o216 * (forcingX1 + forcingX2 - forcingX3); - f[DIR_MMP] += c3o1 * c1o216 * (-forcingX1 - forcingX2 + forcingX3); - f[DIR_PMP] += c3o1 * c1o216 * (forcingX1 - forcingX2 + forcingX3); - f[DIR_MPM] += c3o1 * c1o216 * (-forcingX1 + forcingX2 - forcingX3); - f[DIR_PMM] += c3o1 * c1o216 * (forcingX1 - forcingX2 - forcingX3); - f[DIR_MPP] += c3o1 * c1o216 * (-forcingX1 + forcingX2 + forcingX3); - } - ////////////////////////////////////////////////////////////////////////// -#ifdef PROOF_CORRECTNESS - real rho_post = f[DIR_000] + f[DIR_P00] + f[DIR_M00] + f[DIR_0P0] + f[DIR_0M0] + f[DIR_00P] + f[DIR_00M] + f[DIR_PP0] + f[DIR_MM0] + f[DIR_PM0] + - f[DIR_MP0] + f[DIR_P0P] + f[DIR_M0M] + f[DIR_P0M] + f[DIR_M0P] + f[DIR_0PP] + f[DIR_0MM] + f[DIR_0PM] + f[DIR_0MP] + f[DIR_PPP] + - f[DIR_MMP] + f[DIR_PMP] + f[DIR_MPP] + f[DIR_PPM] + f[DIR_MMM] + f[DIR_PMM] + f[DIR_MPM]; - real dif = drho - rho_post; -#ifdef SINGLEPRECISION - if (dif > 10.0E-7 || dif < -10.0E-7) -#else - if (dif > 10.0E-15 || dif < -10.0E-15) -#endif - { - UB_THROW(UbException(UB_EXARGS, "rho="+UbSystem::toString(drho)+", rho_post="+UbSystem::toString(rho_post) - +" dif="+UbSystem::toString(dif) - +" rho is not correct for node "+UbSystem::toString(x1)+","+UbSystem::toString(x2)+","+UbSystem::toString(x3) - +" in " + block.lock()->toString()+" step = "+UbSystem::toString(step))); - } -#endif - ////////////////////////////////////////////////////////////////////////// - // write distribution - ////////////////////////////////////////////////////////////////////////// - (*this->localDistributions)(D3Q27System::ET_E, x1, x2, x3) = f[INV_P00]; - (*this->localDistributions)(D3Q27System::ET_N, x1, x2, x3) = f[INV_0P0]; - (*this->localDistributions)(D3Q27System::ET_T, x1, x2, x3) = f[INV_00P]; - (*this->localDistributions)(D3Q27System::ET_NE, x1, x2, x3) = f[INV_PP0]; - (*this->localDistributions)(D3Q27System::ET_NW, x1p, x2, x3) = f[INV_MP0]; - (*this->localDistributions)(D3Q27System::ET_TE, x1, x2, x3) = f[INV_P0P]; - (*this->localDistributions)(D3Q27System::ET_TW, x1p, x2, x3) = f[INV_M0P]; - (*this->localDistributions)(D3Q27System::ET_TN, x1, x2, x3) = f[INV_0PP]; - (*this->localDistributions)(D3Q27System::ET_TS, x1, x2p, x3) = f[INV_0MP]; - (*this->localDistributions)(D3Q27System::ET_TNE, x1, x2, x3) = f[INV_PPP]; - (*this->localDistributions)(D3Q27System::ET_TNW, x1p, x2, x3) = f[INV_MPP]; - (*this->localDistributions)(D3Q27System::ET_TSE, x1, x2p, x3) = f[INV_PMP]; - (*this->localDistributions)(D3Q27System::ET_TSW, x1p, x2p, x3) = f[INV_MMP]; - - (*this->nonLocalDistributions)(D3Q27System::ET_W, x1p, x2, x3) = f[INV_M00]; - (*this->nonLocalDistributions)(D3Q27System::ET_S, x1, x2p, x3) = f[INV_0M0]; - (*this->nonLocalDistributions)(D3Q27System::ET_B, x1, x2, x3p) = f[INV_00M]; - (*this->nonLocalDistributions)(D3Q27System::ET_SW, x1p, x2p, x3) = f[INV_MM0]; - (*this->nonLocalDistributions)(D3Q27System::ET_SE, x1, x2p, x3) = f[INV_PM0]; - (*this->nonLocalDistributions)(D3Q27System::ET_BW, x1p, x2, x3p) = f[INV_M0M]; - (*this->nonLocalDistributions)(D3Q27System::ET_BE, x1, x2, x3p) = f[INV_P0M]; - (*this->nonLocalDistributions)(D3Q27System::ET_BS, x1, x2p, x3p) = f[INV_0MM]; - (*this->nonLocalDistributions)(D3Q27System::ET_BN, x1, x2, x3p) = f[INV_0PM]; - (*this->nonLocalDistributions)(D3Q27System::ET_BSW, x1p, x2p, x3p) = f[INV_MMM]; - (*this->nonLocalDistributions)(D3Q27System::ET_BSE, x1, x2p, x3p) = f[INV_PMM]; - (*this->nonLocalDistributions)(D3Q27System::ET_BNW, x1p, x2, x3p) = f[INV_MPM]; - (*this->nonLocalDistributions)(D3Q27System::ET_BNE, x1, x2, x3p) = f[INV_PPM]; - - (*this->zeroDistributions)(x1, x2, x3) = f[DIR_000]; - ////////////////////////////////////////////////////////////////////////// - } - } - } - } -} -////////////////////////////////////////////////////////////////////////// -real BGKLBMKernel::getCalculationTime() { return vf::basics::constant::c0o1; } diff --git a/src/cpu/VirtualFluidsCore/LBM/LBMKernelETD3Q27BGK.cpp b/src/cpu/VirtualFluidsCore/LBM/LBMKernelETD3Q27BGK.cpp deleted file mode 100644 index 318b8cc037581a2239d0a1a487d70afdcd2d8685..0000000000000000000000000000000000000000 --- a/src/cpu/VirtualFluidsCore/LBM/LBMKernelETD3Q27BGK.cpp +++ /dev/null @@ -1,303 +0,0 @@ -#include "LBMKernelETD3Q27BGK.h" -#include "D3Q27System.h" -#include "D3Q27EsoTwist3DSplittedVector.h" -#include "D3Q27EsoTwist3DSoA.h" -#include "DataSet3D.h" -#include "BCSet.h" -#include "BCArray3D.h" -#include "basics/constants/NumericConstants.h" - -using namespace vf::basics::constant; -//using namespace UbMath; - -//#define PROOF_CORRECTNESS - - -////////////////////////////////////////////////////////////////////////// -LBMKernelETD3Q27BGK::LBMKernelETD3Q27BGK() -{ - this->compressible = false; -} -////////////////////////////////////////////////////////////////////////// -LBMKernelETD3Q27BGK::~LBMKernelETD3Q27BGK(void) -= default; -////////////////////////////////////////////////////////////////////////// -void LBMKernelETD3Q27BGK::initDataSet() -{ - SPtr<DistributionArray3D> d(new D3Q27EsoTwist3DSplittedVector(nx[0]+2, nx[1]+2, nx[2]+2, -999.9)); - dataSet->setFdistributions(d); -} -////////////////////////////////////////////////////////////////////////// -SPtr<LBMKernel> LBMKernelETD3Q27BGK::clone() -{ - SPtr<LBMKernel> kernel(new LBMKernelETD3Q27BGK()); - std::dynamic_pointer_cast<LBMKernelETD3Q27BGK>(kernel)->initDataSet(); - kernel->setCollisionFactor(this->collFactor); - kernel->setBCSet(bcSet->clone(kernel)); - kernel->setWithForcing(withForcing); - kernel->setForcingX1(muForcingX1); - kernel->setForcingX2(muForcingX2); - kernel->setForcingX3(muForcingX3); - kernel->setIndex(ix1, ix2, ix3); - return kernel; -} -////////////////////////////////////////////////////////////////////////// -void LBMKernelETD3Q27BGK::calculate(int /*step*/) -{ - using namespace D3Q27System; - using namespace vf::lbm::dir; - - //initializing of forcing stuff - if (withForcing) - { - muForcingX1.DefineVar("x1",&muX1); muForcingX1.DefineVar("x2",&muX2); muForcingX1.DefineVar("x3",&muX3); - muForcingX2.DefineVar("x1",&muX1); muForcingX2.DefineVar("x2",&muX2); muForcingX2.DefineVar("x3",&muX3); - muForcingX3.DefineVar("x1",&muX1); muForcingX3.DefineVar("x2",&muX2); muForcingX3.DefineVar("x3",&muX3); - forcingX1 = c0o1; - forcingX2 = c0o1; - forcingX3 = c0o1; - } - ///////////////////////////////////// - - localDistributions = std::dynamic_pointer_cast<D3Q27EsoTwist3DSplittedVector>(dataSet->getFdistributions())->getLocalDistributions(); - nonLocalDistributions = std::dynamic_pointer_cast<D3Q27EsoTwist3DSplittedVector>(dataSet->getFdistributions())->getNonLocalDistributions(); - zeroDistributions = std::dynamic_pointer_cast<D3Q27EsoTwist3DSplittedVector>(dataSet->getFdistributions())->getZeroDistributions(); - - SPtr<BCArray3D> bcArray = this->getBCSet()->getBCArray(); - real f[D3Q27System::ENDF+1]; - real feq[D3Q27System::ENDF+1]; - real drho,vx1,vx2,vx3; - const int bcArrayMaxX1 = (int)bcArray->getNX1(); - const int bcArrayMaxX2 = (int)bcArray->getNX2(); - const int bcArrayMaxX3 = (int)bcArray->getNX3(); - - int minX1 = ghostLayerWidth; - int minX2 = ghostLayerWidth; - int minX3 = ghostLayerWidth; - int maxX1 = bcArrayMaxX1-ghostLayerWidth; - int maxX2 = bcArrayMaxX2-ghostLayerWidth; - int maxX3 = bcArrayMaxX3-ghostLayerWidth; - - for(int x3 = minX3; x3 < maxX3; x3++) - { - for(int x2 = minX2; x2 < maxX2; x2++) - { - for(int x1 = minX1; x1 < maxX1; x1++) - { - if(!bcArray->isSolid(x1,x2,x3) && !bcArray->isUndefined(x1,x2,x3)) - { - int x1p = x1 + 1; - int x2p = x2 + 1; - int x3p = x3 + 1; - ////////////////////////////////////////////////////////////////////////// - //read distribution - //////////////////////////////////////////////////////////////////////////// - f[DIR_000] = (*this->zeroDistributions)(x1,x2,x3); - - f[DIR_P00] = (*this->localDistributions)(D3Q27System::ET_E, x1,x2,x3); - f[DIR_0P0] = (*this->localDistributions)(D3Q27System::ET_N,x1,x2,x3); - f[DIR_00P] = (*this->localDistributions)(D3Q27System::ET_T,x1,x2,x3); - f[DIR_PP0] = (*this->localDistributions)(D3Q27System::ET_NE,x1,x2,x3); - f[DIR_MP0] = (*this->localDistributions)(D3Q27System::ET_NW,x1p,x2,x3); - f[DIR_P0P] = (*this->localDistributions)(D3Q27System::ET_TE,x1,x2,x3); - f[DIR_M0P] = (*this->localDistributions)(D3Q27System::ET_TW, x1p,x2,x3); - f[DIR_0PP] = (*this->localDistributions)(D3Q27System::ET_TN,x1,x2,x3); - f[DIR_0MP] = (*this->localDistributions)(D3Q27System::ET_TS,x1,x2p,x3); - f[DIR_PPP] = (*this->localDistributions)(D3Q27System::ET_TNE,x1,x2,x3); - f[DIR_MPP] = (*this->localDistributions)(D3Q27System::ET_TNW,x1p,x2,x3); - f[DIR_PMP] = (*this->localDistributions)(D3Q27System::ET_TSE,x1,x2p,x3); - f[DIR_MMP] = (*this->localDistributions)(D3Q27System::ET_TSW,x1p,x2p,x3); - - f[DIR_M00] = (*this->nonLocalDistributions)(D3Q27System::ET_W,x1p,x2,x3 ); - f[DIR_0M0] = (*this->nonLocalDistributions)(D3Q27System::ET_S,x1,x2p,x3 ); - f[DIR_00M] = (*this->nonLocalDistributions)(D3Q27System::ET_B,x1,x2,x3p ); - f[DIR_MM0] = (*this->nonLocalDistributions)(D3Q27System::ET_SW,x1p,x2p,x3 ); - f[DIR_PM0] = (*this->nonLocalDistributions)(D3Q27System::ET_SE,x1,x2p,x3 ); - f[DIR_M0M] = (*this->nonLocalDistributions)(D3Q27System::ET_BW,x1p,x2,x3p ); - f[DIR_P0M] = (*this->nonLocalDistributions)(D3Q27System::ET_BE,x1,x2,x3p ); - f[DIR_0MM] = (*this->nonLocalDistributions)(D3Q27System::ET_BS,x1,x2p,x3p ); - f[DIR_0PM] = (*this->nonLocalDistributions)(D3Q27System::ET_BN,x1,x2,x3p ); - f[DIR_MMM] = (*this->nonLocalDistributions)(D3Q27System::ET_BSW,x1p,x2p,x3p); - f[DIR_PMM] = (*this->nonLocalDistributions)(D3Q27System::ET_BSE,x1,x2p,x3p); - f[DIR_MPM] = (*this->nonLocalDistributions)(D3Q27System::ET_BNW,x1p,x2,x3p); - f[DIR_PPM] = (*this->nonLocalDistributions)(D3Q27System::ET_BNE,x1,x2,x3p); - ////////////////////////////////////////////////////////////////////////// - - drho = f[DIR_000] + f[DIR_P00] + f[DIR_M00] + f[DIR_0P0] + f[DIR_0M0] + f[DIR_00P] + f[DIR_00M] - + f[DIR_PP0] + f[DIR_MM0] + f[DIR_PM0] + f[DIR_MP0] + f[DIR_P0P] + f[DIR_M0M] + f[DIR_P0M] - + f[DIR_M0P] + f[DIR_0PP] + f[DIR_0MM] + f[DIR_0PM] + f[DIR_0MP] + f[DIR_PPP] + f[DIR_MMP] - + f[DIR_PMP] + f[DIR_MPP] + f[DIR_PPM] + f[DIR_MMM] + f[DIR_PMM] + f[DIR_MPM]; - - vx1 = f[DIR_P00] - f[DIR_M00] + f[DIR_PP0] - f[DIR_MM0] + f[DIR_PM0] - f[DIR_MP0] + f[DIR_P0P] - f[DIR_M0M] - + f[DIR_P0M] - f[DIR_M0P] + f[DIR_PPP] - f[DIR_MMP] + f[DIR_PMP] - f[DIR_MPP] + f[DIR_PPM] - f[DIR_MMM] - + f[DIR_PMM] - f[DIR_MPM]; - - vx2 = f[DIR_0P0] - f[DIR_0M0] + f[DIR_PP0] - f[DIR_MM0] - f[DIR_PM0] + f[DIR_MP0] + f[DIR_0PP] - f[DIR_0MM] + f[DIR_0PM] - - f[DIR_0MP] + f[DIR_PPP] - f[DIR_MMP] - f[DIR_PMP] + f[DIR_MPP] + f[DIR_PPM] - f[DIR_MMM] - f[DIR_PMM] - + f[DIR_MPM]; - - vx3 = f[DIR_00P] - f[DIR_00M] + f[DIR_P0P] - f[DIR_M0M] - f[DIR_P0M] + f[DIR_M0P] + f[DIR_0PP] - f[DIR_0MM] - f[DIR_0PM] - + f[DIR_0MP] + f[DIR_PPP] + f[DIR_MMP] + f[DIR_PMP] + f[DIR_MPP] - f[DIR_PPM] - f[DIR_MMM] - f[DIR_PMM] - - f[DIR_MPM]; - - real cu_sq= c3o2*(vx1*vx1+vx2*vx2+vx3*vx3); - - feq[DIR_000] = c8o27*(drho-cu_sq); - feq[DIR_P00] = c2o27*(drho+c3o1*( vx1 )+c9o2*( vx1 )*( vx1 )-cu_sq); - feq[DIR_M00] = c2o27*(drho+c3o1*(-vx1 )+c9o2*(-vx1 )*(-vx1 )-cu_sq); - feq[DIR_0P0] = c2o27*(drho+c3o1*( vx2)+c9o2*( vx2)*( vx2)-cu_sq); - feq[DIR_0M0] = c2o27*(drho+c3o1*( -vx2)+c9o2*( -vx2)*( -vx2)-cu_sq); - feq[DIR_00P] = c2o27*(drho+c3o1*( vx3 )+c9o2*( vx3)*( vx3)-cu_sq); - feq[DIR_00M] = c2o27*(drho+c3o1*( -vx3)+c9o2*( -vx3)*( -vx3)-cu_sq); - feq[DIR_PP0] = c1o54*(drho+c3o1*( vx1+vx2)+c9o2*( vx1+vx2)*( vx1+vx2)-cu_sq); - feq[DIR_MM0] = c1o54*(drho+c3o1*(-vx1-vx2)+c9o2*(-vx1-vx2)*(-vx1-vx2)-cu_sq); - feq[DIR_PM0] = c1o54*(drho+c3o1*( vx1-vx2)+c9o2*( vx1-vx2)*( vx1-vx2)-cu_sq); - feq[DIR_MP0] = c1o54*(drho+c3o1*(-vx1+vx2)+c9o2*(-vx1+vx2)*(-vx1+vx2)-cu_sq); - feq[DIR_P0P] = c1o54*(drho+c3o1*( vx1+vx3)+c9o2*( vx1+vx3)*( vx1+vx3)-cu_sq); - feq[DIR_M0M] = c1o54*(drho+c3o1*(-vx1-vx3)+c9o2*(-vx1-vx3)*(-vx1-vx3)-cu_sq); - feq[DIR_P0M] = c1o54*(drho+c3o1*( vx1-vx3)+c9o2*( vx1-vx3)*( vx1-vx3)-cu_sq); - feq[DIR_M0P] = c1o54*(drho+c3o1*(-vx1+vx3)+c9o2*(-vx1+vx3)*(-vx1+vx3)-cu_sq); - feq[DIR_0PP] = c1o54*(drho+c3o1*( vx2+vx3)+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq); - feq[DIR_0MM] = c1o54*(drho+c3o1*(-vx2-vx3)+c9o2*(-vx2-vx3)*(-vx2-vx3)-cu_sq); - feq[DIR_0PM] = c1o54*(drho+c3o1*( vx2-vx3)+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq); - feq[DIR_0MP] = c1o54*(drho+c3o1*(-vx2+vx3)+c9o2*(-vx2+vx3)*(-vx2+vx3)-cu_sq); - feq[DIR_PPP]= c1o216*(drho+c3o1*( vx1+vx2+vx3)+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq); - feq[DIR_MMM]= c1o216*(drho+c3o1*(-vx1-vx2-vx3)+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq); - feq[DIR_PPM]= c1o216*(drho+c3o1*( vx1+vx2-vx3)+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq); - feq[DIR_MMP]= c1o216*(drho+c3o1*(-vx1-vx2+vx3)+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq); - feq[DIR_PMP]= c1o216*(drho+c3o1*( vx1-vx2+vx3)+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq); - feq[DIR_MPM]= c1o216*(drho+c3o1*(-vx1+vx2-vx3)+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq); - feq[DIR_PMM]= c1o216*(drho+c3o1*( vx1-vx2-vx3)+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq); - feq[DIR_MPP]= c1o216*(drho+c3o1*(-vx1+vx2+vx3)+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq); - - //Relaxation - f[DIR_000] += (feq[DIR_000]-f[DIR_000])*collFactor; - f[DIR_P00] += (feq[DIR_P00]-f[DIR_P00])*collFactor; - f[DIR_M00] += (feq[DIR_M00]-f[DIR_M00])*collFactor; - f[DIR_0P0] += (feq[DIR_0P0]-f[DIR_0P0])*collFactor; - f[DIR_0M0] += (feq[DIR_0M0]-f[DIR_0M0])*collFactor; - f[DIR_00P] += (feq[DIR_00P]-f[DIR_00P])*collFactor; - f[DIR_00M] += (feq[DIR_00M]-f[DIR_00M])*collFactor; - f[DIR_PP0] += (feq[DIR_PP0]-f[DIR_PP0])*collFactor; - f[DIR_MM0] += (feq[DIR_MM0]-f[DIR_MM0])*collFactor; - f[DIR_PM0] += (feq[DIR_PM0]-f[DIR_PM0])*collFactor; - f[DIR_MP0] += (feq[DIR_MP0]-f[DIR_MP0])*collFactor; - f[DIR_P0P] += (feq[DIR_P0P]-f[DIR_P0P])*collFactor; - f[DIR_M0M] += (feq[DIR_M0M]-f[DIR_M0M])*collFactor; - f[DIR_P0M] += (feq[DIR_P0M]-f[DIR_P0M])*collFactor; - f[DIR_M0P] += (feq[DIR_M0P]-f[DIR_M0P])*collFactor; - f[DIR_0PP] += (feq[DIR_0PP]-f[DIR_0PP])*collFactor; - f[DIR_0MM] += (feq[DIR_0MM]-f[DIR_0MM])*collFactor; - f[DIR_0PM] += (feq[DIR_0PM]-f[DIR_0PM])*collFactor; - f[DIR_0MP] += (feq[DIR_0MP]-f[DIR_0MP])*collFactor; - - f[DIR_PPP] += (feq[DIR_PPP]-f[DIR_PPP])*collFactor; - f[DIR_MMM] += (feq[DIR_MMM]-f[DIR_MMM])*collFactor; - f[DIR_PPM] += (feq[DIR_PPM]-f[DIR_PPM])*collFactor; - f[DIR_MMP] += (feq[DIR_MMP]-f[DIR_MMP])*collFactor; - f[DIR_PMP] += (feq[DIR_PMP]-f[DIR_PMP])*collFactor; - f[DIR_MPM] += (feq[DIR_MPM]-f[DIR_MPM])*collFactor; - f[DIR_PMM] += (feq[DIR_PMM]-f[DIR_PMM])*collFactor; - f[DIR_MPP] += (feq[DIR_MPP]-f[DIR_MPP])*collFactor; - - ////////////////////////////////////////////////////////////////////////// - //forcing - if (withForcing) - { - muX1 = x1+ix1*bcArrayMaxX1; - muX2 = x2+ix2*bcArrayMaxX2; - muX3 = x3+ix3*bcArrayMaxX3; - - forcingX1 = muForcingX1.Eval(); - forcingX2 = muForcingX2.Eval(); - forcingX3 = muForcingX3.Eval(); - - f[DIR_000] += c0o1; - f[DIR_P00] += c3o1*c2o27 * (forcingX1) ; - f[DIR_M00] += c3o1*c2o27 * (-forcingX1) ; - f[DIR_0P0] += c3o1*c2o27 * (forcingX2) ; - f[DIR_0M0] += c3o1*c2o27 * (-forcingX2) ; - f[DIR_00P] += c3o1*c2o27 * (forcingX3) ; - f[DIR_00M] += c3o1*c2o27 * (-forcingX3); - f[DIR_PP0] += c3o1*c1o54 * ( forcingX1+forcingX2 ) ; - f[DIR_MM0 ] += c3o1*c1o54 * (-forcingX1-forcingX2 ) ; - f[DIR_PM0 ] += c3o1*c1o54 * ( forcingX1-forcingX2 ) ; - f[DIR_MP0 ] += c3o1*c1o54 * (-forcingX1+forcingX2 ) ; - f[DIR_P0P ] += c3o1*c1o54 * ( forcingX1 +forcingX3) ; - f[DIR_M0M ] += c3o1*c1o54 * (-forcingX1 -forcingX3) ; - f[DIR_P0M ] += c3o1*c1o54 * ( forcingX1 -forcingX3) ; - f[DIR_M0P ] += c3o1*c1o54 * (-forcingX1 +forcingX3) ; - f[DIR_0PP ] += c3o1*c1o54 * ( forcingX2+forcingX3) ; - f[DIR_0MM ] += c3o1*c1o54 * ( -forcingX2-forcingX3) ; - f[DIR_0PM ] += c3o1*c1o54 * ( forcingX2-forcingX3) ; - f[DIR_0MP ] += c3o1*c1o54 * ( -forcingX2+forcingX3) ; - f[DIR_PPP] += c3o1*c1o216* ( forcingX1+forcingX2+forcingX3) ; - f[DIR_MMM] += c3o1*c1o216* (-forcingX1-forcingX2-forcingX3) ; - f[DIR_PPM] += c3o1*c1o216* ( forcingX1+forcingX2-forcingX3) ; - f[DIR_MMP] += c3o1*c1o216* (-forcingX1-forcingX2+forcingX3) ; - f[DIR_PMP] += c3o1*c1o216* ( forcingX1-forcingX2+forcingX3) ; - f[DIR_MPM] += c3o1*c1o216* (-forcingX1+forcingX2-forcingX3) ; - f[DIR_PMM] += c3o1*c1o216* ( forcingX1-forcingX2-forcingX3) ; - f[DIR_MPP] += c3o1*c1o216* (-forcingX1+forcingX2+forcingX3) ; - } - ////////////////////////////////////////////////////////////////////////// -#ifdef PROOF_CORRECTNESS - real rho_post = f[REST] + f[DIR_P00] + 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]; - real dif = drho - rho_post; -#ifdef SINGLEPRECISION - if(dif > 10.0E-7 || dif < -10.0E-7) -#else - if(dif > 10.0E-15 || dif < -10.0E-15) -#endif - { - UB_THROW(UbException(UB_EXARGS,"rho is not correct")); - } -#endif - ////////////////////////////////////////////////////////////////////////// - //write distribution - ////////////////////////////////////////////////////////////////////////// - (*this->localDistributions)(D3Q27System::ET_E,x1, x2, x3) = f[INV_P00]; - (*this->localDistributions)(D3Q27System::ET_N,x1, x2, x3) = f[INV_0P0]; - (*this->localDistributions)(D3Q27System::ET_T,x1, x2, x3) = f[INV_00P]; - (*this->localDistributions)(D3Q27System::ET_NE,x1, x2, x3) = f[INV_PP0]; - (*this->localDistributions)(D3Q27System::ET_NW,x1p,x2, x3) = f[INV_MP0]; - (*this->localDistributions)(D3Q27System::ET_TE,x1, x2, x3) = f[INV_P0P]; - (*this->localDistributions)(D3Q27System::ET_TW,x1p,x2, x3) = f[INV_M0P]; - (*this->localDistributions)(D3Q27System::ET_TN,x1, x2, x3) = f[INV_0PP]; - (*this->localDistributions)(D3Q27System::ET_TS,x1, x2p,x3) = f[INV_0MP]; - (*this->localDistributions)(D3Q27System::ET_TNE,x1, x2, x3) = f[INV_PPP]; - (*this->localDistributions)(D3Q27System::ET_TNW,x1p,x2, x3) = f[INV_MPP]; - (*this->localDistributions)(D3Q27System::ET_TSE,x1, x2p,x3) = f[INV_PMP]; - (*this->localDistributions)(D3Q27System::ET_TSW,x1p,x2p,x3) = f[INV_MMP]; - - (*this->nonLocalDistributions)(D3Q27System::ET_W,x1p,x2, x3 ) = f[INV_M00 ]; - (*this->nonLocalDistributions)(D3Q27System::ET_S,x1, x2p,x3 ) = f[INV_0M0 ]; - (*this->nonLocalDistributions)(D3Q27System::ET_B,x1, x2, x3p ) = f[INV_00M ]; - (*this->nonLocalDistributions)(D3Q27System::ET_SW,x1p,x2p,x3 ) = f[INV_MM0]; - (*this->nonLocalDistributions)(D3Q27System::ET_SE,x1, x2p,x3 ) = f[INV_PM0]; - (*this->nonLocalDistributions)(D3Q27System::ET_BW,x1p,x2, x3p ) = f[INV_M0M]; - (*this->nonLocalDistributions)(D3Q27System::ET_BE,x1, x2, x3p ) = f[INV_P0M]; - (*this->nonLocalDistributions)(D3Q27System::ET_BS,x1, x2p,x3p ) = f[INV_0MM]; - (*this->nonLocalDistributions)(D3Q27System::ET_BN,x1, x2, x3p ) = f[INV_0PM]; - (*this->nonLocalDistributions)(D3Q27System::ET_BSW,x1p,x2p,x3p) = f[INV_MMM]; - (*this->nonLocalDistributions)(D3Q27System::ET_BSE,x1, x2p,x3p) = f[INV_PMM]; - (*this->nonLocalDistributions)(D3Q27System::ET_BNW,x1p,x2, x3p) = f[INV_MPM]; - (*this->nonLocalDistributions)(D3Q27System::ET_BNE,x1, x2, x3p) = f[INV_PPM]; - - (*this->zeroDistributions)(x1,x2,x3) = f[DIR_000]; - ////////////////////////////////////////////////////////////////////////// - - - } - } - } - } -} -////////////////////////////////////////////////////////////////////////// -real LBMKernelETD3Q27BGK::getCalculationTime() -{ - return c0o1; -} diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/BC.h b/src/cpu/core/BoundaryConditions/BC.h similarity index 100% rename from src/cpu/VirtualFluidsCore/BoundaryConditions/BC.h rename to src/cpu/core/BoundaryConditions/BC.h diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/BCArray3D.cpp b/src/cpu/core/BoundaryConditions/BCArray3D.cpp similarity index 100% rename from src/cpu/VirtualFluidsCore/BoundaryConditions/BCArray3D.cpp rename to src/cpu/core/BoundaryConditions/BCArray3D.cpp diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/BCArray3D.h b/src/cpu/core/BoundaryConditions/BCArray3D.h similarity index 100% rename from src/cpu/VirtualFluidsCore/BoundaryConditions/BCArray3D.h rename to src/cpu/core/BoundaryConditions/BCArray3D.h diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/BCFunction.cpp b/src/cpu/core/BoundaryConditions/BCFunction.cpp similarity index 100% rename from src/cpu/VirtualFluidsCore/BoundaryConditions/BCFunction.cpp rename to src/cpu/core/BoundaryConditions/BCFunction.cpp diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/BCFunction.h b/src/cpu/core/BoundaryConditions/BCFunction.h similarity index 100% rename from src/cpu/VirtualFluidsCore/BoundaryConditions/BCFunction.h rename to src/cpu/core/BoundaryConditions/BCFunction.h diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/BCSet.cpp b/src/cpu/core/BoundaryConditions/BCSet.cpp similarity index 100% rename from src/cpu/VirtualFluidsCore/BoundaryConditions/BCSet.cpp rename to src/cpu/core/BoundaryConditions/BCSet.cpp diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/BCSet.h b/src/cpu/core/BoundaryConditions/BCSet.h similarity index 100% rename from src/cpu/VirtualFluidsCore/BoundaryConditions/BCSet.h rename to src/cpu/core/BoundaryConditions/BCSet.h diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/BCStrategy.cpp b/src/cpu/core/BoundaryConditions/BCStrategy.cpp similarity index 100% rename from src/cpu/VirtualFluidsCore/BoundaryConditions/BCStrategy.cpp rename to src/cpu/core/BoundaryConditions/BCStrategy.cpp diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/BCStrategy.h b/src/cpu/core/BoundaryConditions/BCStrategy.h similarity index 100% rename from src/cpu/VirtualFluidsCore/BoundaryConditions/BCStrategy.h rename to src/cpu/core/BoundaryConditions/BCStrategy.h diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/BoundaryConditions.cpp b/src/cpu/core/BoundaryConditions/BoundaryConditions.cpp similarity index 100% rename from src/cpu/VirtualFluidsCore/BoundaryConditions/BoundaryConditions.cpp rename to src/cpu/core/BoundaryConditions/BoundaryConditions.cpp diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/BoundaryConditions.h b/src/cpu/core/BoundaryConditions/BoundaryConditions.h similarity index 95% rename from src/cpu/VirtualFluidsCore/BoundaryConditions/BoundaryConditions.h rename to src/cpu/core/BoundaryConditions/BoundaryConditions.h index 92cfb6f3cbf347eee7e8fec95c27d7a5646db3b5..df5be0429d4f850f3c1caa2c411a586a020e51e7 100644 --- a/src/cpu/VirtualFluidsCore/BoundaryConditions/BoundaryConditions.h +++ b/src/cpu/core/BoundaryConditions/BoundaryConditions.h @@ -196,59 +196,59 @@ public: using namespace vf::lbm::dir; switch (direction) { - case DIR_P00: + case dP00: return (float)(vf::basics::constant::c4o9 * (+bcVelocityX1)); //(2/cs^2)(=6)*rho_0(=1 bei inkompr)*wi*u*ei mit cs=1/sqrt(3) - case DIR_M00: + case dM00: return (float)(vf::basics::constant::c4o9 * (-bcVelocityX1)); // z.B. aus paper manfred MRT LB models in three dimensions (2002) - case DIR_0P0: + case d0P0: return (float)(vf::basics::constant::c4o9 * (+bcVelocityX2)); - case DIR_0M0: + case d0M0: return (float)(vf::basics::constant::c4o9 * (-bcVelocityX2)); - case DIR_00P: + case d00P: return (float)(vf::basics::constant::c4o9 * (+bcVelocityX3)); - case DIR_00M: + case d00M: return (float)(vf::basics::constant::c4o9 * (-bcVelocityX3)); - case DIR_PP0: + case dPP0: return (float)(vf::basics::constant::c1o9 * (+bcVelocityX1 + bcVelocityX2)); - case DIR_MM0: + case dMM0: return (float)(vf::basics::constant::c1o9 * (-bcVelocityX1 - bcVelocityX2)); - case DIR_PM0: + case dPM0: return (float)(vf::basics::constant::c1o9 * (+bcVelocityX1 - bcVelocityX2)); - case DIR_MP0: + case dMP0: return (float)(vf::basics::constant::c1o9 * (-bcVelocityX1 + bcVelocityX2)); - case DIR_P0P: + case dP0P: return (float)(vf::basics::constant::c1o9 * (+bcVelocityX1 + bcVelocityX3)); - case DIR_M0M: + case dM0M: return (float)(vf::basics::constant::c1o9 * (-bcVelocityX1 - bcVelocityX3)); - case DIR_P0M: + case dP0M: return (float)(vf::basics::constant::c1o9 * (+bcVelocityX1 - bcVelocityX3)); - case DIR_M0P: + case dM0P: return (float)(vf::basics::constant::c1o9 * (-bcVelocityX1 + bcVelocityX3)); - case DIR_0PP: + case d0PP: return (float)(vf::basics::constant::c1o9 * (+bcVelocityX2 + bcVelocityX3)); - case DIR_0MM: + case d0MM: return (float)(vf::basics::constant::c1o9 * (-bcVelocityX2 - bcVelocityX3)); - case DIR_0PM: + case d0PM: return (float)(vf::basics::constant::c1o9 * (+bcVelocityX2 - bcVelocityX3)); - case DIR_0MP: + case d0MP: return (float)(vf::basics::constant::c1o9 * (-bcVelocityX2 + bcVelocityX3)); - case DIR_PPP: + case dPPP: return (float)(vf::basics::constant::c1o36 * (+bcVelocityX1 + bcVelocityX2 + bcVelocityX3)); - case DIR_MMM: + case dMMM: return (float)(vf::basics::constant::c1o36 * (-bcVelocityX1 - bcVelocityX2 - bcVelocityX3)); - case DIR_PPM: + case dPPM: return (float)(vf::basics::constant::c1o36 * (+bcVelocityX1 + bcVelocityX2 - bcVelocityX3)); - case DIR_MMP: + case dMMP: return (float)(vf::basics::constant::c1o36 * (-bcVelocityX1 - bcVelocityX2 + bcVelocityX3)); - case DIR_PMP: + case dPMP: return (float)(vf::basics::constant::c1o36 * (+bcVelocityX1 - bcVelocityX2 + bcVelocityX3)); - case DIR_MPM: + case dMPM: return (float)(vf::basics::constant::c1o36 * (-bcVelocityX1 + bcVelocityX2 - bcVelocityX3)); - case DIR_PMM: + case dPMM: return (float)(vf::basics::constant::c1o36 * (+bcVelocityX1 - bcVelocityX2 - bcVelocityX3)); - case DIR_MPP: + case dMPP: return (float)(vf::basics::constant::c1o36 * (-bcVelocityX1 + bcVelocityX2 + bcVelocityX3)); default: throw UbException(UB_EXARGS, "unknown error"); diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/DensityBC.cpp b/src/cpu/core/BoundaryConditions/DensityBC.cpp similarity index 100% rename from src/cpu/VirtualFluidsCore/BoundaryConditions/DensityBC.cpp rename to src/cpu/core/BoundaryConditions/DensityBC.cpp diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/DensityBC.h b/src/cpu/core/BoundaryConditions/DensityBC.h similarity index 100% rename from src/cpu/VirtualFluidsCore/BoundaryConditions/DensityBC.h rename to src/cpu/core/BoundaryConditions/DensityBC.h diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/EqDensityBCStrategy.cpp b/src/cpu/core/BoundaryConditions/EqDensityBCStrategy.cpp similarity index 88% rename from src/cpu/VirtualFluidsCore/BoundaryConditions/EqDensityBCStrategy.cpp rename to src/cpu/core/BoundaryConditions/EqDensityBCStrategy.cpp index 77a4601ea352efe1b25c9c509077f533e44f63dd..89dd9a09468102f0845b18f2a14919741c9b0e1d 100644 --- a/src/cpu/VirtualFluidsCore/BoundaryConditions/EqDensityBCStrategy.cpp +++ b/src/cpu/core/BoundaryConditions/EqDensityBCStrategy.cpp @@ -59,23 +59,23 @@ void EqDensityBCStrategy::applyBC() real f[D3Q27System::ENDF + 1]; - distributions->getDistributionInv(f, x1, x2, x3); + distributions->getPostCollisionDistribution(f, x1, x2, x3); int nx1 = x1; int nx2 = x2; int nx3 = x3; // flag points in direction of fluid - if (bcPtr->hasDensityBoundaryFlag(DIR_P00)) { + if (bcPtr->hasDensityBoundaryFlag(dP00)) { nx1 -= 1; - } else if (bcPtr->hasDensityBoundaryFlag(DIR_M00)) { + } else if (bcPtr->hasDensityBoundaryFlag(dM00)) { nx1 += 1; - } else if (bcPtr->hasDensityBoundaryFlag(DIR_0P0)) { + } else if (bcPtr->hasDensityBoundaryFlag(d0P0)) { nx2 -= 1; - } else if (bcPtr->hasDensityBoundaryFlag(DIR_0M0)) { + } else if (bcPtr->hasDensityBoundaryFlag(d0M0)) { nx2 += 1; - } else if (bcPtr->hasDensityBoundaryFlag(DIR_00P)) { + } else if (bcPtr->hasDensityBoundaryFlag(d00P)) { nx3 -= 1; - } else if (bcPtr->hasDensityBoundaryFlag(DIR_00M)) { + } else if (bcPtr->hasDensityBoundaryFlag(d00M)) { nx3 += 1; } else UB_THROW(UbException(UB_EXARGS, "Danger...no orthogonal BC-Flag on density boundary...")); @@ -87,7 +87,7 @@ void EqDensityBCStrategy::applyBC() if (bcPtr->hasDensityBoundaryFlag(fdir)) { // Ehsan: 15.2.2013: real ftemp = calcFeqsForDirFct(fdir, rhoBC, vx1, vx2, vx3); - distributions->setDistributionForDirection(ftemp, nx1, nx2, nx3, fdir); + distributions->setPostCollisionDistributionForDirection(ftemp, nx1, nx2, nx3, fdir); } } } diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/EqDensityBCStrategy.h b/src/cpu/core/BoundaryConditions/EqDensityBCStrategy.h similarity index 100% rename from src/cpu/VirtualFluidsCore/BoundaryConditions/EqDensityBCStrategy.h rename to src/cpu/core/BoundaryConditions/EqDensityBCStrategy.h diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/HighViscosityNoSlipBCStrategy.cpp b/src/cpu/core/BoundaryConditions/HighViscosityNoSlipBCStrategy.cpp similarity index 95% rename from src/cpu/VirtualFluidsCore/BoundaryConditions/HighViscosityNoSlipBCStrategy.cpp rename to src/cpu/core/BoundaryConditions/HighViscosityNoSlipBCStrategy.cpp index cb8deaa00b7cf0f38095cef86f72b71656a4cac3..85d9fda90b69f68d8703b4835e10a0367fe91d29 100644 --- a/src/cpu/VirtualFluidsCore/BoundaryConditions/HighViscosityNoSlipBCStrategy.cpp +++ b/src/cpu/core/BoundaryConditions/HighViscosityNoSlipBCStrategy.cpp @@ -57,7 +57,7 @@ void HighViscosityNoSlipBCStrategy::applyBC() { real f[D3Q27System::ENDF + 1]; real feq[D3Q27System::ENDF + 1]; - distributions->getDistribution(f, x1, x2, x3); + distributions->getPreCollisionDistribution(f, x1, x2, x3); real rho, vx1, vx2, vx3; calcMacrosFct(f, rho, vx1, vx2, vx3); calcFeqFct(feq, rho, vx1, vx2, vx3); @@ -70,7 +70,7 @@ void HighViscosityNoSlipBCStrategy::applyBC() real fReturn = (f[invDir] + q * f[fDir] + q * collFactor * (feq[invDir] - f[invDir] + feq[fDir] - f[fDir])) / (vf::basics::constant::c1o1 + q); - distributions->setDistributionInvForDirection(fReturn, x1 + D3Q27System::DX1[invDir], + distributions->setPreCollisionDistributionForDirection(fReturn, x1 + D3Q27System::DX1[invDir], x2 + D3Q27System::DX2[invDir], x3 + D3Q27System::DX3[invDir], invDir); } diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/HighViscosityNoSlipBCStrategy.h b/src/cpu/core/BoundaryConditions/HighViscosityNoSlipBCStrategy.h similarity index 100% rename from src/cpu/VirtualFluidsCore/BoundaryConditions/HighViscosityNoSlipBCStrategy.h rename to src/cpu/core/BoundaryConditions/HighViscosityNoSlipBCStrategy.h diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/NoSlipBC.cpp b/src/cpu/core/BoundaryConditions/NoSlipBC.cpp similarity index 100% rename from src/cpu/VirtualFluidsCore/BoundaryConditions/NoSlipBC.cpp rename to src/cpu/core/BoundaryConditions/NoSlipBC.cpp diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/NoSlipBC.h b/src/cpu/core/BoundaryConditions/NoSlipBC.h similarity index 100% rename from src/cpu/VirtualFluidsCore/BoundaryConditions/NoSlipBC.h rename to src/cpu/core/BoundaryConditions/NoSlipBC.h diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/NoSlipBCStrategy.cpp b/src/cpu/core/BoundaryConditions/NoSlipBCStrategy.cpp similarity index 94% rename from src/cpu/VirtualFluidsCore/BoundaryConditions/NoSlipBCStrategy.cpp rename to src/cpu/core/BoundaryConditions/NoSlipBCStrategy.cpp index bb98e499421328abc36f8911a14bcb8c90ebabd1..3fd5e214302af1cd7729fdddcdbd077ff826503e 100644 --- a/src/cpu/VirtualFluidsCore/BoundaryConditions/NoSlipBCStrategy.cpp +++ b/src/cpu/core/BoundaryConditions/NoSlipBCStrategy.cpp @@ -58,7 +58,7 @@ void NoSlipBCStrategy::applyBC() using namespace D3Q27System; real f[ENDF + 1]; real feq[ENDF + 1]; - distributions->getDistributionInv(f, x1, x2, x3); + distributions->getPostCollisionDistribution(f, x1, x2, x3); real rho, vx1, vx2, vx3; calcMacrosFct(f, rho, vx1, vx2, vx3); calcFeqFct(feq, rho, vx1, vx2, vx3); @@ -69,7 +69,7 @@ void NoSlipBCStrategy::applyBC() const int invDir = INVDIR[fdir]; real q = bcPtr->getQ(invDir); real fReturn = ((c1o1 - q) / (c1o1 + q)) * ((f[invDir] - feq[invDir]) / (c1o1 - collFactor) + feq[invDir]) + ((q / (c1o1 + q)) * (f[invDir] + f[fdir])); - distributions->setDistributionForDirection(fReturn, x1 + DX1[invDir], x2 + DX2[invDir], x3 + DX3[invDir], fdir); + distributions->setPostCollisionDistributionForDirection(fReturn, x1 + DX1[invDir], x2 + DX2[invDir], x3 + DX3[invDir], fdir); } } } diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/NoSlipBCStrategy.h b/src/cpu/core/BoundaryConditions/NoSlipBCStrategy.h similarity index 100% rename from src/cpu/VirtualFluidsCore/BoundaryConditions/NoSlipBCStrategy.h rename to src/cpu/core/BoundaryConditions/NoSlipBCStrategy.h diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/NonEqDensityBCStrategy.cpp b/src/cpu/core/BoundaryConditions/NonEqDensityBCStrategy.cpp similarity index 89% rename from src/cpu/VirtualFluidsCore/BoundaryConditions/NonEqDensityBCStrategy.cpp rename to src/cpu/core/BoundaryConditions/NonEqDensityBCStrategy.cpp index d3f44c6ff7ce9d8acf913a8cebd3e42800b7a571..d1c4e43ca7005dae4072a3d134052da8090c41d8 100644 --- a/src/cpu/VirtualFluidsCore/BoundaryConditions/NonEqDensityBCStrategy.cpp +++ b/src/cpu/core/BoundaryConditions/NonEqDensityBCStrategy.cpp @@ -59,23 +59,23 @@ void NonEqDensityBCStrategy::applyBC() using namespace vf::lbm::dir; real f[D3Q27System::ENDF + 1]; - distributions->getDistributionInv(f, x1, x2, x3); + distributions->getPostCollisionDistribution(f, x1, x2, x3); int nx1 = x1; int nx2 = x2; int nx3 = x3; // flag points in direction of fluid - if (bcPtr->hasDensityBoundaryFlag(DIR_P00)) { + if (bcPtr->hasDensityBoundaryFlag(dP00)) { nx1 -= 1; - } else if (bcPtr->hasDensityBoundaryFlag(DIR_M00)) { + } else if (bcPtr->hasDensityBoundaryFlag(dM00)) { nx1 += 1; - } else if (bcPtr->hasDensityBoundaryFlag(DIR_0P0)) { + } else if (bcPtr->hasDensityBoundaryFlag(d0P0)) { nx2 -= 1; - } else if (bcPtr->hasDensityBoundaryFlag(DIR_0M0)) { + } else if (bcPtr->hasDensityBoundaryFlag(d0M0)) { nx2 += 1; - } else if (bcPtr->hasDensityBoundaryFlag(DIR_00P)) { + } else if (bcPtr->hasDensityBoundaryFlag(d00P)) { nx3 -= 1; - } else if (bcPtr->hasDensityBoundaryFlag(DIR_00M)) { + } else if (bcPtr->hasDensityBoundaryFlag(d00M)) { nx3 += 1; } else return; // UB_THROW(UbException(UB_EXARGS, "Danger...no orthogonal BC-Flag on density boundary...")); @@ -94,7 +94,7 @@ void NonEqDensityBCStrategy::applyBC() real ftemp = calcFeqsForDirFct(fdir, rho, vx1, vx2, vx3); // rhoBC=(rho>rhoBC)? rhoBC : rho; //Limiter 08.08.2018 ftemp = calcFeqsForDirFct(fdir, rhoBC, vx1, vx2, vx3) + f[fdir] - ftemp; - distributions->setDistributionForDirection(ftemp, nx1, nx2, nx3, fdir); + distributions->setPostCollisionDistributionForDirection(ftemp, nx1, nx2, nx3, fdir); } } } diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/NonEqDensityBCStrategy.h b/src/cpu/core/BoundaryConditions/NonEqDensityBCStrategy.h similarity index 100% rename from src/cpu/VirtualFluidsCore/BoundaryConditions/NonEqDensityBCStrategy.h rename to src/cpu/core/BoundaryConditions/NonEqDensityBCStrategy.h diff --git a/src/cpu/core/BoundaryConditions/NonReflectingInflowBCStrategy.cpp b/src/cpu/core/BoundaryConditions/NonReflectingInflowBCStrategy.cpp new file mode 100644 index 0000000000000000000000000000000000000000..d84a8fac2874a93d520b6f7dda86fb9554988145 --- /dev/null +++ b/src/cpu/core/BoundaryConditions/NonReflectingInflowBCStrategy.cpp @@ -0,0 +1,341 @@ +//======================================================================================= +// ____ ____ __ ______ __________ __ __ __ __ +// \ \ | | | | | _ \ |___ ___| | | | | / \ | | +// \ \ | | | | | |_) | | | | | | | / \ | | +// \ \ | | | | | _ / | | | | | | / /\ \ | | +// \ \ | | | | | | \ \ | | | \__/ | / ____ \ | |____ +// \ \ | | |__| |__| \__\ |__| \________/ /__/ \__\ |_______| +// \ \ | | ________________________________________________________________ +// \ \ | | | ______________________________________________________________| +// \ \| | | | __ __ __ __ ______ _______ +// \ | | |_____ | | | | | | | | | _ \ / _____) +// \ | | _____| | | | | | | | | | | \ \ \_______ +// \ | | | | |_____ | \_/ | | | | |_/ / _____ | +// \ _____| |__| |________| \_______/ |__| |______/ (_______/ +// +// 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 NonReflectingInflowBCStrategy.cpp +//! \ingroup BoundarConditions +//! \author Hussein Alihussein +//======================================================================================= +#include "NonReflectingInflowBCStrategy.h" + +#include "BoundaryConditions.h" +#include "D3Q27System.h" +#include "DistributionArray3D.h" + +NonReflectingInflowBCStrategy::NonReflectingInflowBCStrategy() +{ + BCStrategy::type = BCStrategy::NonReflectingInflowBCStrategy; + BCStrategy::preCollision = true; +} +////////////////////////////////////////////////////////////////////////// +NonReflectingInflowBCStrategy::~NonReflectingInflowBCStrategy() = default; +////////////////////////////////////////////////////////////////////////// +SPtr<BCStrategy> NonReflectingInflowBCStrategy::clone() +{ + SPtr<BCStrategy> bc(new NonReflectingInflowBCStrategy()); + return bc; +} +////////////////////////////////////////////////////////////////////////// +void NonReflectingInflowBCStrategy::addDistributions(SPtr<DistributionArray3D> distributions) +{ + this->distributions = distributions; +} +////////////////////////////////////////////////////////////////////////// +void NonReflectingInflowBCStrategy::applyBC() +{ + using namespace vf::lbm::dir; + using namespace D3Q27System; + // using namespace UbMath; + using namespace vf::basics::constant; + + LBMReal f[ENDF + 1]; + LBMReal ftemp[ENDF + 1]; + + int nx1 = x1; + int nx2 = x2; + int nx3 = x3; + int direction = -1; + + // flag points in direction of fluid + if (bcPtr->hasDensityBoundaryFlag(dP00)) { + nx1 += 1; + direction = dP00; + } else if (bcPtr->hasDensityBoundaryFlag(dM00)) { + nx1 -= 1; + direction = dM00; + } else if (bcPtr->hasDensityBoundaryFlag(d0P0)) { + nx2 += 1; + direction = d0P0; + } else if (bcPtr->hasDensityBoundaryFlag(d0M0)) { + nx2 -= 1; + direction = d0M0; + } else if (bcPtr->hasDensityBoundaryFlag(d00P)) { + nx3 += 1; + direction = d00P; + } else if (bcPtr->hasDensityBoundaryFlag(d00M)) { + nx3 -= 1; + direction = d00M; + } else + UB_THROW(UbException(UB_EXARGS, "Danger...no orthogonal BC-Flag on density boundary...")); + + distributions->getPreCollisionDistribution(f, x1, x2, x3); + distributions->getPreCollisionDistribution(ftemp, nx1, nx2, nx3); + + LBMReal rho, vx1, vx2, vx3; + calcMacrosFct(f, rho, vx1, vx2, vx3); + //vx1 = 0.; + LBMReal BCVeloWeight = c1o2; + // LBMReal velocity = 0.004814077025232405; + // LBMReal velocity = 0.00057735; + //LBMReal velocity = 0.04; + // LBMReal velocity = 0.01; + // LBMReal velocity = 1./112.; + // LBMReal velocity = 1./126.; + LBMReal velocity = c1o100/2; + // LBMReal velocity = 0.005; + //LBMReal delf =(-velocity+vx1)*0.5 ; + LBMReal delf; + + switch (direction) { + case dP00: + delf = (-velocity + vx1) * BCVeloWeight; + // delf = (-velocity ) * BCVeloWeight; + f[dP00] = ftemp[dP00] * (c1oSqrt3 + vx1) + (c1o1 - c1oSqrt3 - vx1) * f[dP00] - delf* WEIGTH[dP00]; + f[dPP0] = ftemp[dPP0] * (c1oSqrt3 + vx1) + (c1o1 - c1oSqrt3 - vx1) * f[dPP0]- delf* WEIGTH[dPP0]; + f[dPM0] = ftemp[dPM0] * (c1oSqrt3 + vx1) + (c1o1 - c1oSqrt3 - vx1) * f[dPM0]- delf* WEIGTH[dPM0]; + f[dP0P] = ftemp[dP0P] * (c1oSqrt3 + vx1) + (c1o1 - c1oSqrt3 - vx1) * f[dP0P]- delf* WEIGTH[dP0P]; + f[dP0M] = ftemp[dP0M] * (c1oSqrt3 + vx1) + (c1o1 - c1oSqrt3 - vx1) * f[dP0M]- delf* WEIGTH[dP0M]; + f[dPPP] = ftemp[dPPP] * (c1oSqrt3 + vx1) + (c1o1 - c1oSqrt3 - vx1) * f[dPPP]- delf* WEIGTH[dPPP]; + f[dPMP] = ftemp[dPMP] * (c1oSqrt3 + vx1) + (c1o1 - c1oSqrt3 - vx1) * f[dPMP]- delf* WEIGTH[dPMP]; + f[dPPM] = ftemp[dPPM] * (c1oSqrt3 + vx1) + (c1o1 - c1oSqrt3 - vx1) * f[dPPM]- delf* WEIGTH[dPPM]; + f[dPMM] = ftemp[dPMM] * (c1oSqrt3 + vx1) + (c1o1 - c1oSqrt3 - vx1) * f[dPMM]- delf* WEIGTH[dPMM]; + //f[dP00] = (ftemp[dP00] * (c1oSqrt3 + vx1) + (1.0 - c1oSqrt3 - vx1) * f[dP00]) * + // (1 - BCVeloWeight) + + // (ftemp[dM00] * (c1oSqrt3 + vx1) + (1.0 - c1oSqrt3 - vx1) * f[dM00] + + // velocity*(6)*WEIGTH[dP00]/* bcPtr->getBoundaryVelocity(INVDIR[dM00])*/) * + // (BCVeloWeight) ; + //f[dPP0] = (ftemp[dPP0] * (c1oSqrt3 + vx1) + (1.0 - c1oSqrt3 - vx1) * f[dPP0]) * + // (1 - BCVeloWeight) + + // (ftemp[dMM0] * (c1oSqrt3 + vx1) + (1.0 - c1oSqrt3 - vx1) * f[dMM0] + + // velocity * (6) * WEIGTH[dPP0] /*bcPtr->getBoundaryVelocity(INVDIR[dMM0])*/) * + // (BCVeloWeight); + //f[dPM0] = (ftemp[dPM0] * (c1oSqrt3 + vx1) + (1.0 - c1oSqrt3 - vx1) * f[dPM0]) * + // (1 - BCVeloWeight) + + // (ftemp[dMP0] * (c1oSqrt3 + vx1) + (1.0 - c1oSqrt3 - vx1) * f[dMP0] + + // velocity*(6)*WEIGTH[dPP0]/* bcPtr->getBoundaryVelocity(INVDIR[dMP0])*/) * + // (BCVeloWeight); + //f[dP0P] = (ftemp[dP0P] * (c1oSqrt3 + vx1) + (1.0 - c1oSqrt3 - vx1) * f[dP0P]) * + // (1 - BCVeloWeight) + + // (ftemp[dM0M] * (c1oSqrt3 + vx1) + (1.0 - c1oSqrt3 - vx1) * f[dM0M] + + // velocity*(6)*WEIGTH[dP0P]/* bcPtr->getBoundaryVelocity(INVDIR[dM0M])*/) * + // (BCVeloWeight); + //f[dP0M] = (ftemp[dP0M] * (c1oSqrt3 + vx1) + (1.0 - c1oSqrt3 - vx1) * f[dP0M])* + // (1 - BCVeloWeight) + + // (ftemp[dM0P] * (c1oSqrt3 + vx1) + (1.0 - c1oSqrt3 - vx1) * f[dM0P] + + // velocity*(6)*WEIGTH[dP0M]/* bcPtr->getBoundaryVelocity(INVDIR[dM0P])*/) * + // (BCVeloWeight); + //f[dPPP] = (ftemp[dPPP] * (c1oSqrt3 + vx1) + (1.0 - c1oSqrt3 - vx1) * f[dPPP])* + // (1 - BCVeloWeight) + + // (ftemp[dMMM] * (c1oSqrt3 + vx1) + (1.0 - c1oSqrt3 - vx1) * f[dMMM] + + // velocity * (6) * WEIGTH[dPPP] /* bcPtr->getBoundaryVelocity(INVDIR[dMMM])*/) * + // (BCVeloWeight); + //f[dPMP] = (ftemp[dPMP] * (c1oSqrt3 + vx1) + (1.0 - c1oSqrt3 - vx1) * f[dPMP]) * + // (1 - BCVeloWeight) + + // (ftemp[dMPM] * (c1oSqrt3 + vx1) + (1.0 - c1oSqrt3 - vx1) * f[dMPM] + + // velocity * (6) * WEIGTH[dPPP] /*bcPtr->getBoundaryVelocity(INVDIR[dMPM])*/) * + // (BCVeloWeight); + //f[dPPM] = (ftemp[dPPM] * (c1oSqrt3 + vx1) + (1.0 - c1oSqrt3 - vx1) * f[dPPM]) * + // (1 - BCVeloWeight) + + // (ftemp[dMMP] * (c1oSqrt3 + vx1) + (1.0 - c1oSqrt3 - vx1) * f[dMMP] + + // velocity * (6) * WEIGTH[dPPP] /* bcPtr->getBoundaryVelocity(INVDIR[dMMP])*/) * + // (BCVeloWeight); + //f[dPMM] = (ftemp[dPMM] * (c1oSqrt3 + vx1) + (1.0 - c1oSqrt3 - vx1) * f[dPMM]) * + // (1 - BCVeloWeight) + + // (ftemp[dMPP] * (c1oSqrt3 + vx1) + (1.0 - c1oSqrt3 - vx1) * f[dMPP] + + // velocity * (6) * WEIGTH[dPPP] /* bcPtr->getBoundaryVelocity(INVDIR[dMPP])*/) * + // (BCVeloWeight); + + distributions->setPreCollisionDistributionForDirection(f[dP00], x1 + DX1[dM00], x2 + DX2[dM00], x3 + DX3[dM00], dM00); + distributions->setPreCollisionDistributionForDirection(f[dPP0], x1 + DX1[dMM0], x2 + DX2[dMM0], x3 + DX3[dMM0], dMM0); + distributions->setPreCollisionDistributionForDirection(f[dPM0], x1 + DX1[dMP0], x2 + DX2[dMP0], x3 + DX3[dMP0], dMP0); + distributions->setPreCollisionDistributionForDirection(f[dP0P], x1 + DX1[dM0M], x2 + DX2[dM0M], x3 + DX3[dM0M], dM0M); + distributions->setPreCollisionDistributionForDirection(f[dP0M], x1 + DX1[dM0P], x2 + DX2[dM0P], x3 + DX3[dM0P], dM0P); + distributions->setPreCollisionDistributionForDirection(f[dPPP], x1 + DX1[dMMM], x2 + DX2[dMMM], x3 + DX3[dMMM], dMMM); + distributions->setPreCollisionDistributionForDirection(f[dPMP], x1 + DX1[dMPM], x2 + DX2[dMPM], x3 + DX3[dMPM], dMPM); + distributions->setPreCollisionDistributionForDirection(f[dPPM], x1 + DX1[dMMP], x2 + DX2[dMMP], x3 + DX3[dMMP], dMMP); + distributions->setPreCollisionDistributionForDirection(f[dPMM], x1 + DX1[dMPP], x2 + DX2[dMPP], x3 + DX3[dMPP], dMPP); + break; + case dM00: + delf = (-velocity - vx1) * BCVeloWeight; + f[dM00] = ftemp[dM00] * (c1oSqrt3 - vx1) + (c1o1 - c1oSqrt3 + vx1) * f[dM00] - + delf * WEIGTH[dM00]; + f[dMP0] = ftemp[dMP0] * (c1oSqrt3 - vx1) + (c1o1 - c1oSqrt3 + vx1) * f[dMP0] - + delf * WEIGTH[dMP0]; + f[dMM0] = ftemp[dMM0] * (c1oSqrt3 - vx1) + (c1o1 - c1oSqrt3 + vx1) * f[dMM0] - + delf * WEIGTH[dMM0]; + f[dM0P] = ftemp[dM0P] * (c1oSqrt3 - vx1) + (c1o1 - c1oSqrt3 + vx1) * f[dM0P] - + delf * WEIGTH[dM0P]; + f[dM0M] = ftemp[dM0M] * (c1oSqrt3 - vx1) + (c1o1 - c1oSqrt3 + vx1) * f[dM0M] - + delf * WEIGTH[dM0M]; + f[dMPP] = ftemp[dMPP] * (c1oSqrt3 - vx1) + (c1o1 - c1oSqrt3 + vx1) * f[dMPP] - + delf * WEIGTH[dMPP]; + f[dMMP] = ftemp[dMMP] * (c1oSqrt3 - vx1) + (c1o1 - c1oSqrt3 + vx1) * f[dMMP] - + delf * WEIGTH[dMMP]; + f[dMPM] = ftemp[dMPM] * (c1oSqrt3 - vx1) + (c1o1 - c1oSqrt3 + vx1) * f[dMPM] - + delf * WEIGTH[dMPM]; + f[dMMM] = ftemp[dMMM] * (c1oSqrt3 - vx1) + (c1o1 - c1oSqrt3 + vx1) * f[dMMM] - + delf * WEIGTH[dMMM]; + + distributions->setPreCollisionDistributionForDirection(f[dM00], x1 + DX1[dP00], x2 + DX2[dP00], x3 + DX3[dP00], dP00); + distributions->setPreCollisionDistributionForDirection(f[dMP0], x1 + DX1[dPM0], x2 + DX2[dPM0], x3 + DX3[dPM0], dPM0); + distributions->setPreCollisionDistributionForDirection(f[dMM0], x1 + DX1[dPP0], x2 + DX2[dPP0], x3 + DX3[dPP0], dPP0); + distributions->setPreCollisionDistributionForDirection(f[dM0P], x1 + DX1[dP0M], x2 + DX2[dP0M], x3 + DX3[dP0M], dP0M); + distributions->setPreCollisionDistributionForDirection(f[dM0M], x1 + DX1[dP0P], x2 + DX2[dP0P], x3 + DX3[dP0P], dP0P); + distributions->setPreCollisionDistributionForDirection(f[dMPP], x1 + DX1[dPMM], x2 + DX2[dPMM], x3 + DX3[dPMM], dPMM); + distributions->setPreCollisionDistributionForDirection(f[dMMP], x1 + DX1[dPPM], x2 + DX2[dPPM], x3 + DX3[dPPM], dPPM); + distributions->setPreCollisionDistributionForDirection(f[dMPM], x1 + DX1[dPMP], x2 + DX2[dPMP], x3 + DX3[dPMP], dPMP); + distributions->setPreCollisionDistributionForDirection(f[dMMM], x1 + DX1[dPPP], x2 + DX2[dPPP], x3 + DX3[dPPP], dPPP); + break; + case d0P0: + delf = (-velocity + vx2) * BCVeloWeight; + f[d0P0] = ftemp[d0P0] * (c1oSqrt3 + vx2) + (c1o1 - c1oSqrt3 - vx2) * f[d0P0] - + delf * WEIGTH[d0P0]; + f[dPP0] = ftemp[dPP0] * (c1oSqrt3 + vx2) + (c1o1 - c1oSqrt3 - vx2) * f[dPP0] - + delf * WEIGTH[dPP0]; + f[dMP0] = ftemp[dMP0] * (c1oSqrt3 + vx2) + (c1o1 - c1oSqrt3 - vx2) * f[dMP0] - + delf * WEIGTH[dMP0]; + f[d0PP] = ftemp[d0PP] * (c1oSqrt3 + vx2) + (c1o1 - c1oSqrt3 - vx2) * f[d0PP] - + delf * WEIGTH[d0PP]; + f[d0PM] = ftemp[d0PM] * (c1oSqrt3 + vx2) + (c1o1 - c1oSqrt3 - vx2) * f[d0PM] - + delf * WEIGTH[d0PM]; + f[dPPP] = ftemp[dPPP] * (c1oSqrt3 + vx2) + (c1o1 - c1oSqrt3 - vx2) * f[dPPP] - + delf * WEIGTH[dPPP]; + f[dMPP] = ftemp[dMPP] * (c1oSqrt3 + vx2) + (c1o1 - c1oSqrt3 - vx2) * f[dMPP] - + delf * WEIGTH[dMPP]; + f[dPPM] = ftemp[dPPM] * (c1oSqrt3 + vx2) + (c1o1 - c1oSqrt3 - vx2) * f[dPPM] - + delf * WEIGTH[dPPM]; + f[dMPM] = ftemp[dMPM] * (c1oSqrt3 + vx2) + (c1o1 - c1oSqrt3 - vx2) * f[dMPM] - + delf * WEIGTH[dMPM]; + + distributions->setPreCollisionDistributionForDirection(f[d0P0], x1 + DX1[d0M0], x2 + DX2[d0M0], x3 + DX3[d0M0], d0M0); + distributions->setPreCollisionDistributionForDirection(f[dPP0], x1 + DX1[dMM0], x2 + DX2[dMM0], x3 + DX3[dMM0], dMM0); + distributions->setPreCollisionDistributionForDirection(f[dMP0], x1 + DX1[dPM0], x2 + DX2[dPM0], x3 + DX3[dPM0], dPM0); + distributions->setPreCollisionDistributionForDirection(f[d0PP], x1 + DX1[d0MM], x2 + DX2[d0MM], x3 + DX3[d0MM], d0MM); + distributions->setPreCollisionDistributionForDirection(f[d0PM], x1 + DX1[d0MP], x2 + DX2[d0MP], x3 + DX3[d0MP], d0MP); + distributions->setPreCollisionDistributionForDirection(f[dPPP], x1 + DX1[dMMM], x2 + DX2[dMMM], x3 + DX3[dMMM], dMMM); + distributions->setPreCollisionDistributionForDirection(f[dMPP], x1 + DX1[dPMM], x2 + DX2[dPMM], x3 + DX3[dPMM], dPMM); + distributions->setPreCollisionDistributionForDirection(f[dPPM], x1 + DX1[dMMP], x2 + DX2[dMMP], x3 + DX3[dMMP], dMMP); + distributions->setPreCollisionDistributionForDirection(f[dMPM], x1 + DX1[dPMP], x2 + DX2[dPMP], x3 + DX3[dPMP], dPMP); + break; + case d0M0: + delf = (-velocity - vx2) * BCVeloWeight; + f[d0M0] = ftemp[d0M0] * (c1oSqrt3 - vx2) + (c1o1 - c1oSqrt3 + vx2) * f[d0M0] - + delf * WEIGTH[d0M0]; + f[dPM0] = ftemp[dPM0] * (c1oSqrt3 - vx2) + (c1o1 - c1oSqrt3 + vx2) * f[dPM0] - + delf * WEIGTH[dPM0]; + f[dMM0] = ftemp[dMM0] * (c1oSqrt3 - vx2) + (c1o1 - c1oSqrt3 + vx2) * f[dMM0] - + delf * WEIGTH[dMM0]; + f[d0MP] = ftemp[d0MP] * (c1oSqrt3 - vx2) + (c1o1 - c1oSqrt3 + vx2) * f[d0MP] - + delf * WEIGTH[d0MP]; + f[d0MM] = ftemp[d0MM] * (c1oSqrt3 - vx2) + (c1o1 - c1oSqrt3 + vx2) * f[d0MM] - + delf * WEIGTH[d0MM]; + f[dPMP] = ftemp[dPMP] * (c1oSqrt3 - vx2) + (c1o1 - c1oSqrt3 + vx2) * f[dPMP] - + delf * WEIGTH[dPMP]; + f[dMMP] = ftemp[dMMP] * (c1oSqrt3 - vx2) + (c1o1 - c1oSqrt3 + vx2) * f[dMMP] - + delf * WEIGTH[dMMP]; + f[dPMM] = ftemp[dPMM] * (c1oSqrt3 - vx2) + (c1o1 - c1oSqrt3 + vx2) * f[dPMM] - + delf * WEIGTH[dPMM]; + f[dMMM] = ftemp[dMMM] * (c1oSqrt3 - vx2) + (c1o1 - c1oSqrt3 + vx2) * f[dMMM] - + delf * WEIGTH[dMMM]; + + distributions->setPreCollisionDistributionForDirection(f[d0M0], x1 + DX1[d0P0], x2 + DX2[d0P0], x3 + DX3[d0P0], d0P0); + distributions->setPreCollisionDistributionForDirection(f[dPM0], x1 + DX1[dMP0], x2 + DX2[dMP0], x3 + DX3[dMP0], dMP0); + distributions->setPreCollisionDistributionForDirection(f[dMM0], x1 + DX1[dPP0], x2 + DX2[dPP0], x3 + DX3[dPP0], dPP0); + distributions->setPreCollisionDistributionForDirection(f[d0MP], x1 + DX1[d0PM], x2 + DX2[d0PM], x3 + DX3[d0PM], d0PM); + distributions->setPreCollisionDistributionForDirection(f[d0MM], x1 + DX1[d0PP], x2 + DX2[d0PP], x3 + DX3[d0PP], d0PP); + distributions->setPreCollisionDistributionForDirection(f[dPMP], x1 + DX1[dMPM], x2 + DX2[dMPM], x3 + DX3[dMPM], dMPM); + distributions->setPreCollisionDistributionForDirection(f[dMMP], x1 + DX1[dPPM], x2 + DX2[dPPM], x3 + DX3[dPPM], dPPM); + distributions->setPreCollisionDistributionForDirection(f[dPMM], x1 + DX1[dMPP], x2 + DX2[dMPP], x3 + DX3[dMPP], dMPP); + distributions->setPreCollisionDistributionForDirection(f[dMMM], x1 + DX1[dPPP], x2 + DX2[dPPP], x3 + DX3[dPPP], dPPP); + break; + case d00P: + delf = (-velocity + vx3) * BCVeloWeight; + f[d00P] = ftemp[d00P] * (c1oSqrt3 + vx3) + (c1o1 - c1oSqrt3 - vx3) * f[d00P] - + delf * WEIGTH[d00P]; + f[dP0P] = ftemp[dP0P] * (c1oSqrt3 + vx3) + (c1o1 - c1oSqrt3 - vx3) * f[dP0P] - + delf * WEIGTH[dP0P]; + f[dM0P] = ftemp[dM0P] * (c1oSqrt3 + vx3) + (c1o1 - c1oSqrt3 - vx3) * f[dM0P] - + delf * WEIGTH[dM0P]; + f[d0PP] = ftemp[d0PP] * (c1oSqrt3 + vx3) + (c1o1 - c1oSqrt3 - vx3) * f[d0PP] - + delf * WEIGTH[d0PP]; + f[d0MP] = ftemp[d0MP] * (c1oSqrt3 + vx3) + (c1o1 - c1oSqrt3 - vx3) * f[d0MP] - + delf * WEIGTH[d0MP]; + f[dPPP] = ftemp[dPPP] * (c1oSqrt3 + vx3) + (c1o1 - c1oSqrt3 - vx3) * f[dPPP] - + delf * WEIGTH[dPPP]; + f[dMPP] = ftemp[dMPP] * (c1oSqrt3 + vx3) + (c1o1 - c1oSqrt3 - vx3) * f[dMPP] - + delf * WEIGTH[dMPP]; + f[dPMP] = ftemp[dPMP] * (c1oSqrt3 + vx3) + (c1o1 - c1oSqrt3 - vx3) * f[dPMP] - + delf * WEIGTH[dPMP]; + f[dMMP] = ftemp[dMMP] * (c1oSqrt3 + vx3) + (c1o1 - c1oSqrt3 - vx3) * f[dMMP] - + delf * WEIGTH[dMMP]; + + distributions->setPreCollisionDistributionForDirection(f[d00P], x1 + DX1[d00M], x2 + DX2[d00M], x3 + DX3[d00M], d00M); + distributions->setPreCollisionDistributionForDirection(f[dP0P], x1 + DX1[dM0M], x2 + DX2[dM0M], x3 + DX3[dM0M], dM0M); + distributions->setPreCollisionDistributionForDirection(f[dM0P], x1 + DX1[dP0M], x2 + DX2[dP0M], x3 + DX3[dP0M], dP0M); + distributions->setPreCollisionDistributionForDirection(f[d0PP], x1 + DX1[d0MM], x2 + DX2[d0MM], x3 + DX3[d0MM], d0MM); + distributions->setPreCollisionDistributionForDirection(f[d0MP], x1 + DX1[d0PM], x2 + DX2[d0PM], x3 + DX3[d0PM], d0PM); + distributions->setPreCollisionDistributionForDirection(f[dPPP], x1 + DX1[dMMM], x2 + DX2[dMMM], x3 + DX3[dMMM], dMMM); + distributions->setPreCollisionDistributionForDirection(f[dMPP], x1 + DX1[dPMM], x2 + DX2[dPMM], x3 + DX3[dPMM], dPMM); + distributions->setPreCollisionDistributionForDirection(f[dPMP], x1 + DX1[dMPM], x2 + DX2[dMPM], x3 + DX3[dMPM], dMPM); + distributions->setPreCollisionDistributionForDirection(f[dMMP], x1 + DX1[dPPM], x2 + DX2[dPPM], x3 + DX3[dPPM], dPPM); + break; + case d00M: + delf = (-velocity - vx3) * BCVeloWeight; + f[d00M] = ftemp[d00M] * (c1oSqrt3 - vx3) + (c1o1 - c1oSqrt3 + vx3) * f[d00M] - + delf * WEIGTH[d00M]; + f[dP0M] = ftemp[dP0M] * (c1oSqrt3 - vx3) + (c1o1 - c1oSqrt3 + vx3) * f[dP0M] - + delf * WEIGTH[dP0M]; + f[dM0M] = ftemp[dM0M] * (c1oSqrt3 - vx3) + (c1o1 - c1oSqrt3 + vx3) * f[dM0M] - + delf * WEIGTH[dM0M]; + f[d0PM] = ftemp[d0PM] * (c1oSqrt3 - vx3) + (c1o1 - c1oSqrt3 + vx3) * f[d0PM] - + delf * WEIGTH[d0PM]; + f[d0MM] = ftemp[d0MM] * (c1oSqrt3 - vx3) + (c1o1 - c1oSqrt3 + vx3) * f[d0MM] - + delf * WEIGTH[d0MM]; + f[dPPM] = ftemp[dPPM] * (c1oSqrt3 - vx3) + (c1o1 - c1oSqrt3 + vx3) * f[dPPM] - + delf * WEIGTH[dPPM]; + f[dMPM] = ftemp[dMPM] * (c1oSqrt3 - vx3) + (c1o1 - c1oSqrt3 + vx3) * f[dMPM] - + delf * WEIGTH[dMPM]; + f[dPMM] = ftemp[dPMM] * (c1oSqrt3 - vx3) + (c1o1 - c1oSqrt3 + vx3) * f[dPMM] - + delf * WEIGTH[dPMM]; + f[dMMM] = ftemp[dMMM] * (c1oSqrt3 - vx3) + (c1o1 - c1oSqrt3 + vx3) * f[dMMM] - + delf * WEIGTH[dMMM]; + + distributions->setPreCollisionDistributionForDirection(f[d00M], x1 + DX1[d00P], x2 + DX2[d00P], x3 + DX3[d00P], d00P); + distributions->setPreCollisionDistributionForDirection(f[dP0M], x1 + DX1[dM0P], x2 + DX2[dM0P], x3 + DX3[dM0P], dM0P); + distributions->setPreCollisionDistributionForDirection(f[dM0M], x1 + DX1[dP0P], x2 + DX2[dP0P], x3 + DX3[dP0P], dP0P); + distributions->setPreCollisionDistributionForDirection(f[d0PM], x1 + DX1[d0MP], x2 + DX2[d0MP], x3 + DX3[d0MP], d0MP); + distributions->setPreCollisionDistributionForDirection(f[d0MM], x1 + DX1[d0PP], x2 + DX2[d0PP], x3 + DX3[d0PP], d0PP); + distributions->setPreCollisionDistributionForDirection(f[dPPM], x1 + DX1[dMMP], x2 + DX2[dMMP], x3 + DX3[dMMP], dMMP); + distributions->setPreCollisionDistributionForDirection(f[dMPM], x1 + DX1[dPMP], x2 + DX2[dPMP], x3 + DX3[dPMP], dPMP); + distributions->setPreCollisionDistributionForDirection(f[dPMM], x1 + DX1[dMPP], x2 + DX2[dMPP], x3 + DX3[dMPP], dMPP); + distributions->setPreCollisionDistributionForDirection(f[dMMM], x1 + DX1[dPPP], x2 + DX2[dPPP], x3 + DX3[dPPP], dPPP); + break; + default: + UB_THROW( + UbException(UB_EXARGS, "It isn't implemented non reflecting density boundary for this direction!")); + } +} diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/NonReflectingInflowBCStrategy.h b/src/cpu/core/BoundaryConditions/NonReflectingInflowBCStrategy.h similarity index 100% rename from src/cpu/VirtualFluidsCore/BoundaryConditions/NonReflectingInflowBCStrategy.h rename to src/cpu/core/BoundaryConditions/NonReflectingInflowBCStrategy.h diff --git a/src/cpu/core/BoundaryConditions/NonReflectingOutflowBCStrategy.cpp b/src/cpu/core/BoundaryConditions/NonReflectingOutflowBCStrategy.cpp new file mode 100644 index 0000000000000000000000000000000000000000..fe8407bc5e36a6dbec4a914058fa206fe6a8dfad --- /dev/null +++ b/src/cpu/core/BoundaryConditions/NonReflectingOutflowBCStrategy.cpp @@ -0,0 +1,233 @@ +//======================================================================================= +// ____ ____ __ ______ __________ __ __ __ __ +// \ \ | | | | | _ \ |___ ___| | | | | / \ | | +// \ \ | | | | | |_) | | | | | | | / \ | | +// \ \ | | | | | _ / | | | | | | / /\ \ | | +// \ \ | | | | | | \ \ | | | \__/ | / ____ \ | |____ +// \ \ | | |__| |__| \__\ |__| \________/ /__/ \__\ |_______| +// \ \ | | ________________________________________________________________ +// \ \ | | | ______________________________________________________________| +// \ \| | | | __ __ __ __ ______ _______ +// \ | | |_____ | | | | | | | | | _ \ / _____) +// \ | | _____| | | | | | | | | | | \ \ \_______ +// \ | | | | |_____ | \_/ | | | | |_/ / _____ | +// \ _____| |__| |________| \_______/ |__| |______/ (_______/ +// +// 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 NonReflectingOutflowBCStrategy.cpp +//! \ingroup BoundarConditions +//! \author Konstantin Kutscher +//======================================================================================= +#include "NonReflectingOutflowBCStrategy.h" + +#include "BoundaryConditions.h" +#include "D3Q27System.h" +#include "DistributionArray3D.h" + +NonReflectingOutflowBCStrategy::NonReflectingOutflowBCStrategy() +{ + BCStrategy::type = BCStrategy::NonReflectingOutflowBCStrategy; + BCStrategy::preCollision = true; +} +////////////////////////////////////////////////////////////////////////// +NonReflectingOutflowBCStrategy::~NonReflectingOutflowBCStrategy() = default; +////////////////////////////////////////////////////////////////////////// +SPtr<BCStrategy> NonReflectingOutflowBCStrategy::clone() +{ + SPtr<BCStrategy> bc(new NonReflectingOutflowBCStrategy()); + return bc; +} +////////////////////////////////////////////////////////////////////////// +void NonReflectingOutflowBCStrategy::addDistributions(SPtr<DistributionArray3D> distributions) +{ + this->distributions = distributions; +} +////////////////////////////////////////////////////////////////////////// +void NonReflectingOutflowBCStrategy::applyBC() +{ + using namespace vf::lbm::dir; + + using namespace D3Q27System; + // using namespace UbMath; + using namespace vf::basics::constant; + + real f[ENDF + 1]; + real ftemp[ENDF + 1]; + + int nx1 = x1; + int nx2 = x2; + int nx3 = x3; + int direction = -1; + + // flag points in direction of fluid + if (bcPtr->hasDensityBoundaryFlag(dP00)) { + nx1 += 1; + direction = dP00; + } else if (bcPtr->hasDensityBoundaryFlag(dM00)) { + nx1 -= 1; + direction = dM00; + } else if (bcPtr->hasDensityBoundaryFlag(d0P0)) { + nx2 += 1; + direction = d0P0; + } else if (bcPtr->hasDensityBoundaryFlag(d0M0)) { + nx2 -= 1; + direction = d0M0; + } else if (bcPtr->hasDensityBoundaryFlag(d00P)) { + nx3 += 1; + direction = d00P; + } else if (bcPtr->hasDensityBoundaryFlag(d00M)) { + nx3 -= 1; + direction = d00M; + } else + UB_THROW(UbException(UB_EXARGS, "Danger...no orthogonal BC-Flag on density boundary...")); + + distributions->getPreCollisionDistribution(f, x1, x2, x3); + distributions->getPreCollisionDistribution(ftemp, nx1, nx2, nx3); + + real rho, vx1, vx2, vx3; + calcMacrosFct(f, rho, vx1, vx2, vx3); + + switch (direction) { + case dP00: + f[dP00] = ftemp[dP00] * (c1oSqrt3 + vx1) + (c1o1 - c1oSqrt3 - vx1) * f[dP00]; + f[dPP0] = ftemp[dPP0] * (c1oSqrt3 + vx1) + (c1o1 - c1oSqrt3 - vx1) * f[dPP0]; + f[dPM0] = ftemp[dPM0] * (c1oSqrt3 + vx1) + (c1o1 - c1oSqrt3 - vx1) * f[dPM0]; + f[dP0P] = ftemp[dP0P] * (c1oSqrt3 + vx1) + (c1o1 - c1oSqrt3 - vx1) * f[dP0P]; + f[dP0M] = ftemp[dP0M] * (c1oSqrt3 + vx1) + (c1o1 - c1oSqrt3 - vx1) * f[dP0M]; + f[dPPP] = ftemp[dPPP] * (c1oSqrt3 + vx1) + (c1o1 - c1oSqrt3 - vx1) * f[dPPP]; + f[dPMP] = ftemp[dPMP] * (c1oSqrt3 + vx1) + (c1o1 - c1oSqrt3 - vx1) * f[dPMP]; + f[dPPM] = ftemp[dPPM] * (c1oSqrt3 + vx1) + (c1o1 - c1oSqrt3 - vx1) * f[dPPM]; + f[dPMM] = ftemp[dPMM] * (c1oSqrt3 + vx1) + (c1o1 - c1oSqrt3 - vx1) * f[dPMM]; + + distributions->setPreCollisionDistributionForDirection(f[dP00], x1 + DX1[dM00], x2 + DX2[dM00], x3 + DX3[dM00], dM00); + distributions->setPreCollisionDistributionForDirection(f[dPP0], x1 + DX1[dMM0], x2 + DX2[dMM0], x3 + DX3[dMM0], dMM0); + distributions->setPreCollisionDistributionForDirection(f[dPM0], x1 + DX1[dMP0], x2 + DX2[dMP0], x3 + DX3[dMP0], dMP0); + distributions->setPreCollisionDistributionForDirection(f[dP0P], x1 + DX1[dM0M], x2 + DX2[dM0M], x3 + DX3[dM0M], dM0M); + distributions->setPreCollisionDistributionForDirection(f[dP0M], x1 + DX1[dM0P], x2 + DX2[dM0P], x3 + DX3[dM0P], dM0P); + distributions->setPreCollisionDistributionForDirection(f[dPPP], x1 + DX1[dMMM], x2 + DX2[dMMM], x3 + DX3[dMMM], dMMM); + distributions->setPreCollisionDistributionForDirection(f[dPMP], x1 + DX1[dMPM], x2 + DX2[dMPM], x3 + DX3[dMPM], dMPM); + distributions->setPreCollisionDistributionForDirection(f[dPPM], x1 + DX1[dMMP], x2 + DX2[dMMP], x3 + DX3[dMMP], dMMP); + distributions->setPreCollisionDistributionForDirection(f[dPMM], x1 + DX1[dMPP], x2 + DX2[dMPP], x3 + DX3[dMPP], dMPP); + break; + case dM00: + f[dM00] = ftemp[dM00] * (c1oSqrt3 - vx1) + (c1o1 - c1oSqrt3 + vx1) * f[dM00]; + f[dMP0] = ftemp[dMP0] * (c1oSqrt3 - vx1) + (c1o1 - c1oSqrt3 + vx1) * f[dMP0]; + f[dMM0] = ftemp[dMM0] * (c1oSqrt3 - vx1) + (c1o1 - c1oSqrt3 + vx1) * f[dMM0]; + f[dM0P] = ftemp[dM0P] * (c1oSqrt3 - vx1) + (c1o1 - c1oSqrt3 + vx1) * f[dM0P]; + f[dM0M] = ftemp[dM0M] * (c1oSqrt3 - vx1) + (c1o1 - c1oSqrt3 + vx1) * f[dM0M]; + f[dMPP] = ftemp[dMPP] * (c1oSqrt3 - vx1) + (c1o1 - c1oSqrt3 + vx1) * f[dMPP]; + f[dMMP] = ftemp[dMMP] * (c1oSqrt3 - vx1) + (c1o1 - c1oSqrt3 + vx1) * f[dMMP]; + f[dMPM] = ftemp[dMPM] * (c1oSqrt3 - vx1) + (c1o1 - c1oSqrt3 + vx1) * f[dMPM]; + f[dMMM] = ftemp[dMMM] * (c1oSqrt3 - vx1) + (c1o1 - c1oSqrt3 + vx1) * f[dMMM]; + + distributions->setPreCollisionDistributionForDirection(f[dM00], x1 + DX1[dP00], x2 + DX2[dP00], x3 + DX3[dP00], dP00); + distributions->setPreCollisionDistributionForDirection(f[dMP0], x1 + DX1[dPM0], x2 + DX2[dPM0], x3 + DX3[dPM0], dPM0); + distributions->setPreCollisionDistributionForDirection(f[dMM0], x1 + DX1[dPP0], x2 + DX2[dPP0], x3 + DX3[dPP0], dPP0); + distributions->setPreCollisionDistributionForDirection(f[dM0P], x1 + DX1[dP0M], x2 + DX2[dP0M], x3 + DX3[dP0M], dP0M); + distributions->setPreCollisionDistributionForDirection(f[dM0M], x1 + DX1[dP0P], x2 + DX2[dP0P], x3 + DX3[dP0P], dP0P); + distributions->setPreCollisionDistributionForDirection(f[dMPP], x1 + DX1[dPMM], x2 + DX2[dPMM], x3 + DX3[dPMM], dPMM); + distributions->setPreCollisionDistributionForDirection(f[dMMP], x1 + DX1[dPPM], x2 + DX2[dPPM], x3 + DX3[dPPM], dPPM); + distributions->setPreCollisionDistributionForDirection(f[dMPM], x1 + DX1[dPMP], x2 + DX2[dPMP], x3 + DX3[dPMP], dPMP); + distributions->setPreCollisionDistributionForDirection(f[dMMM], x1 + DX1[dPPP], x2 + DX2[dPPP], x3 + DX3[dPPP], dPPP); + break; + case d0P0: + f[d0P0] = ftemp[d0P0] * (c1oSqrt3 + vx2) + (c1o1 - c1oSqrt3 - vx2) * f[d0P0]; + f[dPP0] = ftemp[dPP0] * (c1oSqrt3 + vx2) + (c1o1 - c1oSqrt3 - vx2) * f[dPP0]; + f[dMP0] = ftemp[dMP0] * (c1oSqrt3 + vx2) + (c1o1 - c1oSqrt3 - vx2) * f[dMP0]; + f[d0PP] = ftemp[d0PP] * (c1oSqrt3 + vx2) + (c1o1 - c1oSqrt3 - vx2) * f[d0PP]; + f[d0PM] = ftemp[d0PM] * (c1oSqrt3 + vx2) + (c1o1 - c1oSqrt3 - vx2) * f[d0PM]; + f[dPPP] = ftemp[dPPP] * (c1oSqrt3 + vx2) + (c1o1 - c1oSqrt3 - vx2) * f[dPPP]; + f[dMPP] = ftemp[dMPP] * (c1oSqrt3 + vx2) + (c1o1 - c1oSqrt3 - vx2) * f[dMPP]; + f[dPPM] = ftemp[dPPM] * (c1oSqrt3 + vx2) + (c1o1 - c1oSqrt3 - vx2) * f[dPPM]; + f[dMPM] = ftemp[dMPM] * (c1oSqrt3 + vx2) + (c1o1 - c1oSqrt3 - vx2) * f[dMPM]; + + distributions->setPreCollisionDistributionForDirection(f[d0P0], x1 + DX1[d0M0], x2 + DX2[d0M0], x3 + DX3[d0M0], d0M0); + distributions->setPreCollisionDistributionForDirection(f[dPP0], x1 + DX1[dMM0], x2 + DX2[dMM0], x3 + DX3[dMM0], dMM0); + distributions->setPreCollisionDistributionForDirection(f[dMP0], x1 + DX1[dPM0], x2 + DX2[dPM0], x3 + DX3[dPM0], dPM0); + distributions->setPreCollisionDistributionForDirection(f[d0PP], x1 + DX1[d0MM], x2 + DX2[d0MM], x3 + DX3[d0MM], d0MM); + distributions->setPreCollisionDistributionForDirection(f[d0PM], x1 + DX1[d0MP], x2 + DX2[d0MP], x3 + DX3[d0MP], d0MP); + distributions->setPreCollisionDistributionForDirection(f[dPPP], x1 + DX1[dMMM], x2 + DX2[dMMM], x3 + DX3[dMMM], dMMM); + distributions->setPreCollisionDistributionForDirection(f[dMPP], x1 + DX1[dPMM], x2 + DX2[dPMM], x3 + DX3[dPMM], dPMM); + distributions->setPreCollisionDistributionForDirection(f[dPPM], x1 + DX1[dMMP], x2 + DX2[dMMP], x3 + DX3[dMMP], dMMP); + distributions->setPreCollisionDistributionForDirection(f[dMPM], x1 + DX1[dPMP], x2 + DX2[dPMP], x3 + DX3[dPMP], dPMP); + break; + case d0M0: + f[d0M0] = ftemp[d0M0] * (c1oSqrt3 - vx2) + (c1o1 - c1oSqrt3 + vx2) * f[d0M0]; + f[dPM0] = ftemp[dPM0] * (c1oSqrt3 - vx2) + (c1o1 - c1oSqrt3 + vx2) * f[dPM0]; + f[dMM0] = ftemp[dMM0] * (c1oSqrt3 - vx2) + (c1o1 - c1oSqrt3 + vx2) * f[dMM0]; + f[d0MP] = ftemp[d0MP] * (c1oSqrt3 - vx2) + (c1o1 - c1oSqrt3 + vx2) * f[d0MP]; + f[d0MM] = ftemp[d0MM] * (c1oSqrt3 - vx2) + (c1o1 - c1oSqrt3 + vx2) * f[d0MM]; + f[dPMP] = ftemp[dPMP] * (c1oSqrt3 - vx2) + (c1o1 - c1oSqrt3 + vx2) * f[dPMP]; + f[dMMP] = ftemp[dMMP] * (c1oSqrt3 - vx2) + (c1o1 - c1oSqrt3 + vx2) * f[dMMP]; + f[dPMM] = ftemp[dPMM] * (c1oSqrt3 - vx2) + (c1o1 - c1oSqrt3 + vx2) * f[dPMM]; + f[dMMM] = ftemp[dMMM] * (c1oSqrt3 - vx2) + (c1o1 - c1oSqrt3 + vx2) * f[dMMM]; + + distributions->setPreCollisionDistributionForDirection(f[d0M0], x1 + DX1[d0P0], x2 + DX2[d0P0], x3 + DX3[d0P0], d0P0); + distributions->setPreCollisionDistributionForDirection(f[dPM0], x1 + DX1[dMP0], x2 + DX2[dMP0], x3 + DX3[dMP0], dMP0); + distributions->setPreCollisionDistributionForDirection(f[dMM0], x1 + DX1[dPP0], x2 + DX2[dPP0], x3 + DX3[dPP0], dPP0); + distributions->setPreCollisionDistributionForDirection(f[d0MP], x1 + DX1[d0PM], x2 + DX2[d0PM], x3 + DX3[d0PM], d0PM); + distributions->setPreCollisionDistributionForDirection(f[d0MM], x1 + DX1[d0PP], x2 + DX2[d0PP], x3 + DX3[d0PP], d0PP); + distributions->setPreCollisionDistributionForDirection(f[dPMP], x1 + DX1[dMPM], x2 + DX2[dMPM], x3 + DX3[dMPM], dMPM); + distributions->setPreCollisionDistributionForDirection(f[dMMP], x1 + DX1[dPPM], x2 + DX2[dPPM], x3 + DX3[dPPM], dPPM); + distributions->setPreCollisionDistributionForDirection(f[dPMM], x1 + DX1[dMPP], x2 + DX2[dMPP], x3 + DX3[dMPP], dMPP); + distributions->setPreCollisionDistributionForDirection(f[dMMM], x1 + DX1[dPPP], x2 + DX2[dPPP], x3 + DX3[dPPP], dPPP); + break; + case d00P: + f[d00P] = ftemp[d00P] * (c1oSqrt3 + vx3) + (c1o1 - c1oSqrt3 - vx3) * f[d00P]; + f[dP0P] = ftemp[dP0P] * (c1oSqrt3 + vx3) + (c1o1 - c1oSqrt3 - vx3) * f[dP0P]; + f[dM0P] = ftemp[dM0P] * (c1oSqrt3 + vx3) + (c1o1 - c1oSqrt3 - vx3) * f[dM0P]; + f[d0PP] = ftemp[d0PP] * (c1oSqrt3 + vx3) + (c1o1 - c1oSqrt3 - vx3) * f[d0PP]; + f[d0MP] = ftemp[d0MP] * (c1oSqrt3 + vx3) + (c1o1 - c1oSqrt3 - vx3) * f[d0MP]; + f[dPPP] = ftemp[dPPP] * (c1oSqrt3 + vx3) + (c1o1 - c1oSqrt3 - vx3) * f[dPPP]; + f[dMPP] = ftemp[dMPP] * (c1oSqrt3 + vx3) + (c1o1 - c1oSqrt3 - vx3) * f[dMPP]; + f[dPMP] = ftemp[dPMP] * (c1oSqrt3 + vx3) + (c1o1 - c1oSqrt3 - vx3) * f[dPMP]; + f[dMMP] = ftemp[dMMP] * (c1oSqrt3 + vx3) + (c1o1 - c1oSqrt3 - vx3) * f[dMMP]; + + distributions->setPreCollisionDistributionForDirection(f[d00P], x1 + DX1[d00M], x2 + DX2[d00M], x3 + DX3[d00M], d00M); + distributions->setPreCollisionDistributionForDirection(f[dP0P], x1 + DX1[dM0M], x2 + DX2[dM0M], x3 + DX3[dM0M], dM0M); + distributions->setPreCollisionDistributionForDirection(f[dM0P], x1 + DX1[dP0M], x2 + DX2[dP0M], x3 + DX3[dP0M], dP0M); + distributions->setPreCollisionDistributionForDirection(f[d0PP], x1 + DX1[d0MM], x2 + DX2[d0MM], x3 + DX3[d0MM], d0MM); + distributions->setPreCollisionDistributionForDirection(f[d0MP], x1 + DX1[d0PM], x2 + DX2[d0PM], x3 + DX3[d0PM], d0PM); + distributions->setPreCollisionDistributionForDirection(f[dPPP], x1 + DX1[dMMM], x2 + DX2[dMMM], x3 + DX3[dMMM], dMMM); + distributions->setPreCollisionDistributionForDirection(f[dMPP], x1 + DX1[dPMM], x2 + DX2[dPMM], x3 + DX3[dPMM], dPMM); + distributions->setPreCollisionDistributionForDirection(f[dPMP], x1 + DX1[dMPM], x2 + DX2[dMPM], x3 + DX3[dMPM], dMPM); + distributions->setPreCollisionDistributionForDirection(f[dMMP], x1 + DX1[dPPM], x2 + DX2[dPPM], x3 + DX3[dPPM], dPPM); + break; + case d00M: + f[d00M] = ftemp[d00M] * (c1oSqrt3 - vx3) + (c1o1 - c1oSqrt3 + vx3) * f[d00M]; + f[dP0M] = ftemp[dP0M] * (c1oSqrt3 - vx3) + (c1o1 - c1oSqrt3 + vx3) * f[dP0M]; + f[dM0M] = ftemp[dM0M] * (c1oSqrt3 - vx3) + (c1o1 - c1oSqrt3 + vx3) * f[dM0M]; + f[d0PM] = ftemp[d0PM] * (c1oSqrt3 - vx3) + (c1o1 - c1oSqrt3 + vx3) * f[d0PM]; + f[d0MM] = ftemp[d0MM] * (c1oSqrt3 - vx3) + (c1o1 - c1oSqrt3 + vx3) * f[d0MM]; + f[dPPM] = ftemp[dPPM] * (c1oSqrt3 - vx3) + (c1o1 - c1oSqrt3 + vx3) * f[dPPM]; + f[dMPM] = ftemp[dMPM] * (c1oSqrt3 - vx3) + (c1o1 - c1oSqrt3 + vx3) * f[dMPM]; + f[dPMM] = ftemp[dPMM] * (c1oSqrt3 - vx3) + (c1o1 - c1oSqrt3 + vx3) * f[dPMM]; + f[dMMM] = ftemp[dMMM] * (c1oSqrt3 - vx3) + (c1o1 - c1oSqrt3 + vx3) * f[dMMM]; + + distributions->setPreCollisionDistributionForDirection(f[d00M], x1 + DX1[d00P], x2 + DX2[d00P], x3 + DX3[d00P], d00P); + distributions->setPreCollisionDistributionForDirection(f[dP0M], x1 + DX1[dM0P], x2 + DX2[dM0P], x3 + DX3[dM0P], dM0P); + distributions->setPreCollisionDistributionForDirection(f[dM0M], x1 + DX1[dP0P], x2 + DX2[dP0P], x3 + DX3[dP0P], dP0P); + distributions->setPreCollisionDistributionForDirection(f[d0PM], x1 + DX1[d0MP], x2 + DX2[d0MP], x3 + DX3[d0MP], d0MP); + distributions->setPreCollisionDistributionForDirection(f[d0MM], x1 + DX1[d0PP], x2 + DX2[d0PP], x3 + DX3[d0PP], d0PP); + distributions->setPreCollisionDistributionForDirection(f[dPPM], x1 + DX1[dMMP], x2 + DX2[dMMP], x3 + DX3[dMMP], dMMP); + distributions->setPreCollisionDistributionForDirection(f[dMPM], x1 + DX1[dPMP], x2 + DX2[dPMP], x3 + DX3[dPMP], dPMP); + distributions->setPreCollisionDistributionForDirection(f[dPMM], x1 + DX1[dMPP], x2 + DX2[dMPP], x3 + DX3[dMPP], dMPP); + distributions->setPreCollisionDistributionForDirection(f[dMMM], x1 + DX1[dPPP], x2 + DX2[dPPP], x3 + DX3[dPPP], dPPP); + break; + default: + UB_THROW( + UbException(UB_EXARGS, "It isn't implemented non reflecting density boundary for this direction!")); + } +} diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/NonReflectingOutflowBCStrategy.h b/src/cpu/core/BoundaryConditions/NonReflectingOutflowBCStrategy.h similarity index 100% rename from src/cpu/VirtualFluidsCore/BoundaryConditions/NonReflectingOutflowBCStrategy.h rename to src/cpu/core/BoundaryConditions/NonReflectingOutflowBCStrategy.h diff --git a/src/cpu/core/BoundaryConditions/NonReflectingOutflowWithRelaxationBCStrategy.cpp b/src/cpu/core/BoundaryConditions/NonReflectingOutflowWithRelaxationBCStrategy.cpp new file mode 100644 index 0000000000000000000000000000000000000000..a80a2d4e2c089c749b3bafac2c1f4461d88ede82 --- /dev/null +++ b/src/cpu/core/BoundaryConditions/NonReflectingOutflowWithRelaxationBCStrategy.cpp @@ -0,0 +1,233 @@ +//======================================================================================= +// ____ ____ __ ______ __________ __ __ __ __ +// \ \ | | | | | _ \ |___ ___| | | | | / \ | | +// \ \ | | | | | |_) | | | | | | | / \ | | +// \ \ | | | | | _ / | | | | | | / /\ \ | | +// \ \ | | | | | | \ \ | | | \__/ | / ____ \ | |____ +// \ \ | | |__| |__| \__\ |__| \________/ /__/ \__\ |_______| +// \ \ | | ________________________________________________________________ +// \ \ | | | ______________________________________________________________| +// \ \| | | | __ __ __ __ ______ _______ +// \ | | |_____ | | | | | | | | | _ \ / _____) +// \ | | _____| | | | | | | | | | | \ \ \_______ +// \ | | | | |_____ | \_/ | | | | |_/ / _____ | +// \ _____| |__| |________| \_______/ |__| |______/ (_______/ +// +// 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 NonReflectingOutflowWithRelaxationBCStrategy.cpp +//! \ingroup BoundarConditions +//! \author Konstantin Kutscher, Hussein Alihussein +//======================================================================================= +#include "NonReflectingOutflowWithRelaxationBCStrategy.h" + +#include "BoundaryConditions.h" +#include "D3Q27System.h" +#include "DistributionArray3D.h" + +NonReflectingOutflowWithRelaxationBCStrategy::NonReflectingOutflowWithRelaxationBCStrategy() +{ + BCStrategy::type = BCStrategy::NonReflectingOutflowWithRelaxationBCStrategy; + BCStrategy::preCollision = true; +} +////////////////////////////////////////////////////////////////////////// +NonReflectingOutflowWithRelaxationBCStrategy::~NonReflectingOutflowWithRelaxationBCStrategy() = default; +////////////////////////////////////////////////////////////////////////// +SPtr<BCStrategy> NonReflectingOutflowWithRelaxationBCStrategy::clone() +{ + SPtr<BCStrategy> bc(new NonReflectingOutflowWithRelaxationBCStrategy()); + return bc; +} +////////////////////////////////////////////////////////////////////////// +void NonReflectingOutflowWithRelaxationBCStrategy::addDistributions(SPtr<DistributionArray3D> distributions) +{ + this->distributions = distributions; +} +////////////////////////////////////////////////////////////////////////// +void NonReflectingOutflowWithRelaxationBCStrategy::applyBC() +{ + using namespace vf::lbm::dir; + + using namespace D3Q27System; + // using namespace UbMath; + using namespace vf::basics::constant; + + LBMReal f[ENDF + 1]; + LBMReal ftemp[ENDF + 1]; + + int nx1 = x1; + int nx2 = x2; + int nx3 = x3; + int direction = -1; + + // flag points in direction of fluid + if (bcPtr->hasDensityBoundaryFlag(dP00)) { + nx1 += 1; + direction = dP00; + } else if (bcPtr->hasDensityBoundaryFlag(dM00)) { + nx1 -= 1; + direction = dM00; + } else if (bcPtr->hasDensityBoundaryFlag(d0P0)) { + nx2 += 1; + direction = d0P0; + } else if (bcPtr->hasDensityBoundaryFlag(d0M0)) { + nx2 -= 1; + direction = d0M0; + } else if (bcPtr->hasDensityBoundaryFlag(d00P)) { + nx3 += 1; + direction = d00P; + } else if (bcPtr->hasDensityBoundaryFlag(d00M)) { + nx3 -= 1; + direction = d00M; + } else + UB_THROW(UbException(UB_EXARGS, "Danger...no orthogonal BC-Flag on density boundary...")); + + distributions->getPreCollisionDistribution(f, x1, x2, x3); + distributions->getPreCollisionDistribution(ftemp, nx1, nx2, nx3); + + LBMReal rho, vx1, vx2, vx3; + calcMacrosFct(f, rho, vx1, vx2, vx3); + LBMReal delf = rho* c1o100; + switch (direction) { + case dP00: + f[dP00] = ftemp[dP00] * (c1oSqrt3 + vx1) + (c1o1 - c1oSqrt3 - vx1) * f[dP00] - delf* WEIGTH[dP00]; + f[dPP0] = ftemp[dPP0] * (c1oSqrt3 + vx1) + (c1o1 - c1oSqrt3 - vx1) * f[dPP0]- delf* WEIGTH[dPP0]; + f[dPM0] = ftemp[dPM0] * (c1oSqrt3 + vx1) + (c1o1 - c1oSqrt3 - vx1) * f[dPM0]- delf* WEIGTH[dPM0]; + f[dP0P] = ftemp[dP0P] * (c1oSqrt3 + vx1) + (c1o1 - c1oSqrt3 - vx1) * f[dP0P]- delf* WEIGTH[dP0P]; + f[dP0M] = ftemp[dP0M] * (c1oSqrt3 + vx1) + (c1o1 - c1oSqrt3 - vx1) * f[dP0M]- delf* WEIGTH[dP0M]; + f[dPPP] = ftemp[dPPP] * (c1oSqrt3 + vx1) + (c1o1 - c1oSqrt3 - vx1) * f[dPPP]- delf* WEIGTH[dPPP]; + f[dPMP] = ftemp[dPMP] * (c1oSqrt3 + vx1) + (c1o1 - c1oSqrt3 - vx1) * f[dPMP]- delf* WEIGTH[dPMP]; + f[dPPM] = ftemp[dPPM] * (c1oSqrt3 + vx1) + (c1o1 - c1oSqrt3 - vx1) * f[dPPM]- delf* WEIGTH[dPPM]; + f[dPMM] = ftemp[dPMM] * (c1oSqrt3 + vx1) + (c1o1 - c1oSqrt3 - vx1) * f[dPMM]- delf* WEIGTH[dPMM]; + + distributions->setPreCollisionDistributionForDirection(f[dP00], x1 + DX1[dM00], x2 + DX2[dM00], x3 + DX3[dM00], dM00); + distributions->setPreCollisionDistributionForDirection(f[dPP0], x1 + DX1[dMM0], x2 + DX2[dMM0], x3 + DX3[dMM0], dMM0); + distributions->setPreCollisionDistributionForDirection(f[dPM0], x1 + DX1[dMP0], x2 + DX2[dMP0], x3 + DX3[dMP0], dMP0); + distributions->setPreCollisionDistributionForDirection(f[dP0P], x1 + DX1[dM0M], x2 + DX2[dM0M], x3 + DX3[dM0M], dM0M); + distributions->setPreCollisionDistributionForDirection(f[dP0M], x1 + DX1[dM0P], x2 + DX2[dM0P], x3 + DX3[dM0P], dM0P); + distributions->setPreCollisionDistributionForDirection(f[dPPP], x1 + DX1[dMMM], x2 + DX2[dMMM], x3 + DX3[dMMM], dMMM); + distributions->setPreCollisionDistributionForDirection(f[dPMP], x1 + DX1[dMPM], x2 + DX2[dMPM], x3 + DX3[dMPM], dMPM); + distributions->setPreCollisionDistributionForDirection(f[dPPM], x1 + DX1[dMMP], x2 + DX2[dMMP], x3 + DX3[dMMP], dMMP); + distributions->setPreCollisionDistributionForDirection(f[dPMM], x1 + DX1[dMPP], x2 + DX2[dMPP], x3 + DX3[dMPP], dMPP); + break; + case dM00: + f[dM00] = ftemp[dM00] * (c1oSqrt3 - vx1) + (c1o1 - c1oSqrt3 + vx1) * f[dM00]- delf* WEIGTH[dM00]; + f[dMP0] = ftemp[dMP0] * (c1oSqrt3 - vx1) + (c1o1 - c1oSqrt3 + vx1) * f[dMP0]- delf* WEIGTH[dMP0]; + f[dMM0] = ftemp[dMM0] * (c1oSqrt3 - vx1) + (c1o1 - c1oSqrt3 + vx1) * f[dMM0]- delf* WEIGTH[dMM0]; + f[dM0P] = ftemp[dM0P] * (c1oSqrt3 - vx1) + (c1o1 - c1oSqrt3 + vx1) * f[dM0P]- delf* WEIGTH[dM0P]; + f[dM0M] = ftemp[dM0M] * (c1oSqrt3 - vx1) + (c1o1 - c1oSqrt3 + vx1) * f[dM0M]- delf* WEIGTH[dM0M]; + f[dMPP] = ftemp[dMPP] * (c1oSqrt3 - vx1) + (c1o1 - c1oSqrt3 + vx1) * f[dMPP]- delf* WEIGTH[dMPP]; + f[dMMP] = ftemp[dMMP] * (c1oSqrt3 - vx1) + (c1o1 - c1oSqrt3 + vx1) * f[dMMP]- delf* WEIGTH[dMMP]; + f[dMPM] = ftemp[dMPM] * (c1oSqrt3 - vx1) + (c1o1 - c1oSqrt3 + vx1) * f[dMPM]- delf* WEIGTH[dMPM]; + f[dMMM] = ftemp[dMMM] * (c1oSqrt3 - vx1) + (c1o1 - c1oSqrt3 + vx1) * f[dMMM]- delf* WEIGTH[dMMM]; + + distributions->setPreCollisionDistributionForDirection(f[dM00], x1 + DX1[dP00], x2 + DX2[dP00], x3 + DX3[dP00], dP00); + distributions->setPreCollisionDistributionForDirection(f[dMP0], x1 + DX1[dPM0], x2 + DX2[dPM0], x3 + DX3[dPM0], dPM0); + distributions->setPreCollisionDistributionForDirection(f[dMM0], x1 + DX1[dPP0], x2 + DX2[dPP0], x3 + DX3[dPP0], dPP0); + distributions->setPreCollisionDistributionForDirection(f[dM0P], x1 + DX1[dP0M], x2 + DX2[dP0M], x3 + DX3[dP0M], dP0M); + distributions->setPreCollisionDistributionForDirection(f[dM0M], x1 + DX1[dP0P], x2 + DX2[dP0P], x3 + DX3[dP0P], dP0P); + distributions->setPreCollisionDistributionForDirection(f[dMPP], x1 + DX1[dPMM], x2 + DX2[dPMM], x3 + DX3[dPMM], dPMM); + distributions->setPreCollisionDistributionForDirection(f[dMMP], x1 + DX1[dPPM], x2 + DX2[dPPM], x3 + DX3[dPPM], dPPM); + distributions->setPreCollisionDistributionForDirection(f[dMPM], x1 + DX1[dPMP], x2 + DX2[dPMP], x3 + DX3[dPMP], dPMP); + distributions->setPreCollisionDistributionForDirection(f[dMMM], x1 + DX1[dPPP], x2 + DX2[dPPP], x3 + DX3[dPPP], dPPP); + break; + case d0P0: + f[d0P0] = ftemp[d0P0] * (c1oSqrt3 + vx2) + (c1o1 - c1oSqrt3 - vx2) * f[d0P0]- delf* WEIGTH[d0P0]; + f[dPP0] = ftemp[dPP0] * (c1oSqrt3 + vx2) + (c1o1 - c1oSqrt3 - vx2) * f[dPP0]- delf* WEIGTH[dPP0]; + f[dMP0] = ftemp[dMP0] * (c1oSqrt3 + vx2) + (c1o1 - c1oSqrt3 - vx2) * f[dMP0]- delf* WEIGTH[dMP0]; + f[d0PP] = ftemp[d0PP] * (c1oSqrt3 + vx2) + (c1o1 - c1oSqrt3 - vx2) * f[d0PP]- delf* WEIGTH[d0PP]; + f[d0PM] = ftemp[d0PM] * (c1oSqrt3 + vx2) + (c1o1 - c1oSqrt3 - vx2) * f[d0PM]- delf* WEIGTH[d0PM]; + f[dPPP] = ftemp[dPPP] * (c1oSqrt3 + vx2) + (c1o1 - c1oSqrt3 - vx2) * f[dPPP]- delf* WEIGTH[dPPP]; + f[dMPP] = ftemp[dMPP] * (c1oSqrt3 + vx2) + (c1o1 - c1oSqrt3 - vx2) * f[dMPP]- delf* WEIGTH[dMPP]; + f[dPPM] = ftemp[dPPM] * (c1oSqrt3 + vx2) + (c1o1 - c1oSqrt3 - vx2) * f[dPPM]- delf* WEIGTH[dPPM]; + f[dMPM] = ftemp[dMPM] * (c1oSqrt3 + vx2) + (c1o1 - c1oSqrt3 - vx2) * f[dMPM]- delf* WEIGTH[dMPM]; + + distributions->setPreCollisionDistributionForDirection(f[d0P0], x1 + DX1[d0M0], x2 + DX2[d0M0], x3 + DX3[d0M0], d0M0); + distributions->setPreCollisionDistributionForDirection(f[dPP0], x1 + DX1[dMM0], x2 + DX2[dMM0], x3 + DX3[dMM0], dMM0); + distributions->setPreCollisionDistributionForDirection(f[dMP0], x1 + DX1[dPM0], x2 + DX2[dPM0], x3 + DX3[dPM0], dPM0); + distributions->setPreCollisionDistributionForDirection(f[d0PP], x1 + DX1[d0MM], x2 + DX2[d0MM], x3 + DX3[d0MM], d0MM); + distributions->setPreCollisionDistributionForDirection(f[d0PM], x1 + DX1[d0MP], x2 + DX2[d0MP], x3 + DX3[d0MP], d0MP); + distributions->setPreCollisionDistributionForDirection(f[dPPP], x1 + DX1[dMMM], x2 + DX2[dMMM], x3 + DX3[dMMM], dMMM); + distributions->setPreCollisionDistributionForDirection(f[dMPP], x1 + DX1[dPMM], x2 + DX2[dPMM], x3 + DX3[dPMM], dPMM); + distributions->setPreCollisionDistributionForDirection(f[dPPM], x1 + DX1[dMMP], x2 + DX2[dMMP], x3 + DX3[dMMP], dMMP); + distributions->setPreCollisionDistributionForDirection(f[dMPM], x1 + DX1[dPMP], x2 + DX2[dPMP], x3 + DX3[dPMP], dPMP); + break; + case d0M0: + f[d0M0] = ftemp[d0M0] * (c1oSqrt3 - vx2) + (c1o1 - c1oSqrt3 + vx2) * f[d0M0]- delf* WEIGTH[d0M0]; + f[dPM0] = ftemp[dPM0] * (c1oSqrt3 - vx2) + (c1o1 - c1oSqrt3 + vx2) * f[dPM0]- delf* WEIGTH[dPM0]; + f[dMM0] = ftemp[dMM0] * (c1oSqrt3 - vx2) + (c1o1 - c1oSqrt3 + vx2) * f[dMM0]- delf* WEIGTH[dMM0]; + f[d0MP] = ftemp[d0MP] * (c1oSqrt3 - vx2) + (c1o1 - c1oSqrt3 + vx2) * f[d0MP]- delf* WEIGTH[d0MP]; + f[d0MM] = ftemp[d0MM] * (c1oSqrt3 - vx2) + (c1o1 - c1oSqrt3 + vx2) * f[d0MM]- delf* WEIGTH[d0MM]; + f[dPMP] = ftemp[dPMP] * (c1oSqrt3 - vx2) + (c1o1 - c1oSqrt3 + vx2) * f[dPMP]- delf* WEIGTH[dPMP]; + f[dMMP] = ftemp[dMMP] * (c1oSqrt3 - vx2) + (c1o1 - c1oSqrt3 + vx2) * f[dMMP]- delf* WEIGTH[dMMP]; + f[dPMM] = ftemp[dPMM] * (c1oSqrt3 - vx2) + (c1o1 - c1oSqrt3 + vx2) * f[dPMM]- delf* WEIGTH[dPMM]; + f[dMMM] = ftemp[dMMM] * (c1oSqrt3 - vx2) + (c1o1 - c1oSqrt3 + vx2) * f[dMMM]- delf* WEIGTH[dMMM]; + + distributions->setPreCollisionDistributionForDirection(f[d0M0], x1 + DX1[d0P0], x2 + DX2[d0P0], x3 + DX3[d0P0], d0P0); + distributions->setPreCollisionDistributionForDirection(f[dPM0], x1 + DX1[dMP0], x2 + DX2[dMP0], x3 + DX3[dMP0], dMP0); + distributions->setPreCollisionDistributionForDirection(f[dMM0], x1 + DX1[dPP0], x2 + DX2[dPP0], x3 + DX3[dPP0], dPP0); + distributions->setPreCollisionDistributionForDirection(f[d0MP], x1 + DX1[d0PM], x2 + DX2[d0PM], x3 + DX3[d0PM], d0PM); + distributions->setPreCollisionDistributionForDirection(f[d0MM], x1 + DX1[d0PP], x2 + DX2[d0PP], x3 + DX3[d0PP], d0PP); + distributions->setPreCollisionDistributionForDirection(f[dPMP], x1 + DX1[dMPM], x2 + DX2[dMPM], x3 + DX3[dMPM], dMPM); + distributions->setPreCollisionDistributionForDirection(f[dMMP], x1 + DX1[dPPM], x2 + DX2[dPPM], x3 + DX3[dPPM], dPPM); + distributions->setPreCollisionDistributionForDirection(f[dPMM], x1 + DX1[dMPP], x2 + DX2[dMPP], x3 + DX3[dMPP], dMPP); + distributions->setPreCollisionDistributionForDirection(f[dMMM], x1 + DX1[dPPP], x2 + DX2[dPPP], x3 + DX3[dPPP], dPPP); + break; + case d00P: + f[d00P] = ftemp[d00P] * (c1oSqrt3 + vx3) + (c1o1 - c1oSqrt3 - vx3) * f[d00P]- delf* WEIGTH[d00P]; + f[dP0P] = ftemp[dP0P] * (c1oSqrt3 + vx3) + (c1o1 - c1oSqrt3 - vx3) * f[dP0P]- delf* WEIGTH[dP0P]; + f[dM0P] = ftemp[dM0P] * (c1oSqrt3 + vx3) + (c1o1 - c1oSqrt3 - vx3) * f[dM0P]- delf* WEIGTH[dM0P]; + f[d0PP] = ftemp[d0PP] * (c1oSqrt3 + vx3) + (c1o1 - c1oSqrt3 - vx3) * f[d0PP]- delf* WEIGTH[d0PP]; + f[d0MP] = ftemp[d0MP] * (c1oSqrt3 + vx3) + (c1o1 - c1oSqrt3 - vx3) * f[d0MP]- delf* WEIGTH[d0MP]; + f[dPPP] = ftemp[dPPP] * (c1oSqrt3 + vx3) + (c1o1 - c1oSqrt3 - vx3) * f[dPPP]- delf* WEIGTH[dPPP]; + f[dMPP] = ftemp[dMPP] * (c1oSqrt3 + vx3) + (c1o1 - c1oSqrt3 - vx3) * f[dMPP]- delf* WEIGTH[dMPP]; + f[dPMP] = ftemp[dPMP] * (c1oSqrt3 + vx3) + (c1o1 - c1oSqrt3 - vx3) * f[dPMP]- delf* WEIGTH[dPMP]; + f[dMMP] = ftemp[dMMP] * (c1oSqrt3 + vx3) + (c1o1 - c1oSqrt3 - vx3) * f[dMMP]- delf* WEIGTH[dMMP]; + + distributions->setPreCollisionDistributionForDirection(f[d00P], x1 + DX1[d00M], x2 + DX2[d00M], x3 + DX3[d00M], d00M); + distributions->setPreCollisionDistributionForDirection(f[dP0P], x1 + DX1[dM0M], x2 + DX2[dM0M], x3 + DX3[dM0M], dM0M); + distributions->setPreCollisionDistributionForDirection(f[dM0P], x1 + DX1[dP0M], x2 + DX2[dP0M], x3 + DX3[dP0M], dP0M); + distributions->setPreCollisionDistributionForDirection(f[d0PP], x1 + DX1[d0MM], x2 + DX2[d0MM], x3 + DX3[d0MM], d0MM); + distributions->setPreCollisionDistributionForDirection(f[d0MP], x1 + DX1[d0PM], x2 + DX2[d0PM], x3 + DX3[d0PM], d0PM); + distributions->setPreCollisionDistributionForDirection(f[dPPP], x1 + DX1[dMMM], x2 + DX2[dMMM], x3 + DX3[dMMM], dMMM); + distributions->setPreCollisionDistributionForDirection(f[dMPP], x1 + DX1[dPMM], x2 + DX2[dPMM], x3 + DX3[dPMM], dPMM); + distributions->setPreCollisionDistributionForDirection(f[dPMP], x1 + DX1[dMPM], x2 + DX2[dMPM], x3 + DX3[dMPM], dMPM); + distributions->setPreCollisionDistributionForDirection(f[dMMP], x1 + DX1[dPPM], x2 + DX2[dPPM], x3 + DX3[dPPM], dPPM); + break; + case d00M: + f[d00M] = ftemp[d00M] * (c1oSqrt3 - vx3) + (c1o1 - c1oSqrt3 + vx3) * f[d00M]- delf* WEIGTH[d00M]; + f[dP0M] = ftemp[dP0M] * (c1oSqrt3 - vx3) + (c1o1 - c1oSqrt3 + vx3) * f[dP0M]- delf* WEIGTH[dP0M]; + f[dM0M] = ftemp[dM0M] * (c1oSqrt3 - vx3) + (c1o1 - c1oSqrt3 + vx3) * f[dM0M]- delf* WEIGTH[dM0M]; + f[d0PM] = ftemp[d0PM] * (c1oSqrt3 - vx3) + (c1o1 - c1oSqrt3 + vx3) * f[d0PM]- delf* WEIGTH[d0PM]; + f[d0MM] = ftemp[d0MM] * (c1oSqrt3 - vx3) + (c1o1 - c1oSqrt3 + vx3) * f[d0MM]- delf* WEIGTH[d0MM]; + f[dPPM] = ftemp[dPPM] * (c1oSqrt3 - vx3) + (c1o1 - c1oSqrt3 + vx3) * f[dPPM]- delf* WEIGTH[dPPM]; + f[dMPM] = ftemp[dMPM] * (c1oSqrt3 - vx3) + (c1o1 - c1oSqrt3 + vx3) * f[dMPM]- delf* WEIGTH[dMPM]; + f[dPMM] = ftemp[dPMM] * (c1oSqrt3 - vx3) + (c1o1 - c1oSqrt3 + vx3) * f[dPMM]- delf* WEIGTH[dPMM]; + f[dMMM] = ftemp[dMMM] * (c1oSqrt3 - vx3) + (c1o1 - c1oSqrt3 + vx3) * f[dMMM]- delf* WEIGTH[dMMM]; + + distributions->setPreCollisionDistributionForDirection(f[d00M], x1 + DX1[d00P], x2 + DX2[d00P], x3 + DX3[d00P], d00P); + distributions->setPreCollisionDistributionForDirection(f[dP0M], x1 + DX1[dM0P], x2 + DX2[dM0P], x3 + DX3[dM0P], dM0P); + distributions->setPreCollisionDistributionForDirection(f[dM0M], x1 + DX1[dP0P], x2 + DX2[dP0P], x3 + DX3[dP0P], dP0P); + distributions->setPreCollisionDistributionForDirection(f[d0PM], x1 + DX1[d0MP], x2 + DX2[d0MP], x3 + DX3[d0MP], d0MP); + distributions->setPreCollisionDistributionForDirection(f[d0MM], x1 + DX1[d0PP], x2 + DX2[d0PP], x3 + DX3[d0PP], d0PP); + distributions->setPreCollisionDistributionForDirection(f[dPPM], x1 + DX1[dMMP], x2 + DX2[dMMP], x3 + DX3[dMMP], dMMP); + distributions->setPreCollisionDistributionForDirection(f[dMPM], x1 + DX1[dPMP], x2 + DX2[dPMP], x3 + DX3[dPMP], dPMP); + distributions->setPreCollisionDistributionForDirection(f[dPMM], x1 + DX1[dMPP], x2 + DX2[dMPP], x3 + DX3[dMPP], dMPP); + distributions->setPreCollisionDistributionForDirection(f[dMMM], x1 + DX1[dPPP], x2 + DX2[dPPP], x3 + DX3[dPPP], dPPP); + break; + default: + UB_THROW( + UbException(UB_EXARGS, "It isn't implemented non reflecting density boundary for this direction!")); + } +} diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/NonReflectingOutflowWithRelaxationBCStrategy.h b/src/cpu/core/BoundaryConditions/NonReflectingOutflowWithRelaxationBCStrategy.h similarity index 100% rename from src/cpu/VirtualFluidsCore/BoundaryConditions/NonReflectingOutflowWithRelaxationBCStrategy.h rename to src/cpu/core/BoundaryConditions/NonReflectingOutflowWithRelaxationBCStrategy.h diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/SimpleSlipBCStrategy.cpp b/src/cpu/core/BoundaryConditions/SimpleSlipBCStrategy.cpp similarity index 62% rename from src/cpu/VirtualFluidsCore/BoundaryConditions/SimpleSlipBCStrategy.cpp rename to src/cpu/core/BoundaryConditions/SimpleSlipBCStrategy.cpp index 7bd97721771d1cd5f2d5121bc3776c6dad9b3900..0c1693613baaa27be10f9cb90f2049902accdacb 100644 --- a/src/cpu/VirtualFluidsCore/BoundaryConditions/SimpleSlipBCStrategy.cpp +++ b/src/cpu/core/BoundaryConditions/SimpleSlipBCStrategy.cpp @@ -62,7 +62,7 @@ void SimpleSlipBCStrategy::applyBC() real f[D3Q27System::ENDF+1]; real feq[D3Q27System::ENDF+1]; - distributions->getDistributionInv(f, x1, x2, x3); + distributions->getPostCollisionDistribution(f, x1, x2, x3); real vx1, vx2, vx3, drho, rho; calcMacrosFct(f, drho, vx1, vx2, vx3); calcFeqFct(feq, drho, vx1, vx2, vx3); @@ -85,36 +85,36 @@ void SimpleSlipBCStrategy::applyBC() real velocity = vf::basics::constant::c0o1; switch (invDir) { - case DIR_P00: velocity = (vf::basics::constant::c4o9*(+vx1)); break; //(2/cs^2)(=6)*rho_0(=1 bei imkompr)*wi*u*ei mit cs=1/sqrt(3) - case DIR_M00: velocity = (vf::basics::constant::c4o9*(-vx1)); break; //z.B. aus paper manfred MRT LB models in three dimensions (2002) - case DIR_0P0: velocity = (vf::basics::constant::c4o9*(+vx2)); break; - case DIR_0M0: velocity = (vf::basics::constant::c4o9*(-vx2)); break; - case DIR_00P: velocity = (vf::basics::constant::c4o9*(+vx3)); break; - case DIR_00M: velocity = (vf::basics::constant::c4o9*(-vx3)); break; - case DIR_PP0: velocity = (vf::basics::constant::c1o9*(+vx1+vx2)); break; - case DIR_MM0: velocity = (vf::basics::constant::c1o9*(-vx1-vx2)); break; - case DIR_PM0: velocity = (vf::basics::constant::c1o9*(+vx1-vx2)); break; - case DIR_MP0: velocity = (vf::basics::constant::c1o9*(-vx1+vx2)); break; - case DIR_P0P: velocity = (vf::basics::constant::c1o9*(+vx1+vx3)); break; - case DIR_M0M: velocity = (vf::basics::constant::c1o9*(-vx1-vx3)); break; - case DIR_P0M: velocity = (vf::basics::constant::c1o9*(+vx1-vx3)); break; - case DIR_M0P: velocity = (vf::basics::constant::c1o9*(-vx1+vx3)); break; - case DIR_0PP: velocity = (vf::basics::constant::c1o9*(+vx2+vx3)); break; - case DIR_0MM: velocity = (vf::basics::constant::c1o9*(-vx2-vx3)); break; - case DIR_0PM: velocity = (vf::basics::constant::c1o9*(+vx2-vx3)); break; - case DIR_0MP: velocity = (vf::basics::constant::c1o9*(-vx2+vx3)); break; - case DIR_PPP: velocity = (vf::basics::constant::c1o36*(+vx1+vx2+vx3)); break; - case DIR_MMM: velocity = (vf::basics::constant::c1o36*(-vx1-vx2-vx3)); break; - case DIR_PPM: velocity = (vf::basics::constant::c1o36*(+vx1+vx2-vx3)); break; - case DIR_MMP: velocity = (vf::basics::constant::c1o36*(-vx1-vx2+vx3)); break; - case DIR_PMP: velocity = (vf::basics::constant::c1o36*(+vx1-vx2+vx3)); break; - case DIR_MPM: velocity = (vf::basics::constant::c1o36*(-vx1+vx2-vx3)); break; - case DIR_PMM: velocity = (vf::basics::constant::c1o36*(+vx1-vx2-vx3)); break; - case DIR_MPP: velocity = (vf::basics::constant::c1o36*(-vx1+vx2+vx3)); break; + case dP00: velocity = (vf::basics::constant::c4o9*(+vx1)); break; //(2/cs^2)(=6)*rho_0(=1 bei imkompr)*wi*u*ei mit cs=1/sqrt(3) + case dM00: velocity = (vf::basics::constant::c4o9*(-vx1)); break; //z.B. aus paper manfred MRT LB models in three dimensions (2002) + case d0P0: velocity = (vf::basics::constant::c4o9*(+vx2)); break; + case d0M0: velocity = (vf::basics::constant::c4o9*(-vx2)); break; + case d00P: velocity = (vf::basics::constant::c4o9*(+vx3)); break; + case d00M: velocity = (vf::basics::constant::c4o9*(-vx3)); break; + case dPP0: velocity = (vf::basics::constant::c1o9*(+vx1+vx2)); break; + case dMM0: velocity = (vf::basics::constant::c1o9*(-vx1-vx2)); break; + case dPM0: velocity = (vf::basics::constant::c1o9*(+vx1-vx2)); break; + case dMP0: velocity = (vf::basics::constant::c1o9*(-vx1+vx2)); break; + case dP0P: velocity = (vf::basics::constant::c1o9*(+vx1+vx3)); break; + case dM0M: velocity = (vf::basics::constant::c1o9*(-vx1-vx3)); break; + case dP0M: velocity = (vf::basics::constant::c1o9*(+vx1-vx3)); break; + case dM0P: velocity = (vf::basics::constant::c1o9*(-vx1+vx3)); break; + case d0PP: velocity = (vf::basics::constant::c1o9*(+vx2+vx3)); break; + case d0MM: velocity = (vf::basics::constant::c1o9*(-vx2-vx3)); break; + case d0PM: velocity = (vf::basics::constant::c1o9*(+vx2-vx3)); break; + case d0MP: velocity = (vf::basics::constant::c1o9*(-vx2+vx3)); break; + case dPPP: velocity = (vf::basics::constant::c1o36*(+vx1+vx2+vx3)); break; + case dMMM: velocity = (vf::basics::constant::c1o36*(-vx1-vx2-vx3)); break; + case dPPM: velocity = (vf::basics::constant::c1o36*(+vx1+vx2-vx3)); break; + case dMMP: velocity = (vf::basics::constant::c1o36*(-vx1-vx2+vx3)); break; + case dPMP: velocity = (vf::basics::constant::c1o36*(+vx1-vx2+vx3)); break; + case dMPM: velocity = (vf::basics::constant::c1o36*(-vx1+vx2-vx3)); break; + case dPMM: velocity = (vf::basics::constant::c1o36*(+vx1-vx2-vx3)); break; + case dMPP: velocity = (vf::basics::constant::c1o36*(-vx1+vx2+vx3)); break; default: throw UbException(UB_EXARGS, "unknown error"); } real fReturn = f[invDir] - velocity * rho; - distributions->setDistributionForDirection(fReturn, x1+D3Q27System::DX1[invDir], x2+D3Q27System::DX2[invDir], x3+D3Q27System::DX3[invDir], fdir); + distributions->setPostCollisionDistributionForDirection(fReturn, x1+D3Q27System::DX1[invDir], x2+D3Q27System::DX2[invDir], x3+D3Q27System::DX3[invDir], fdir); } } } \ No newline at end of file diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/SimpleSlipBCStrategy.h b/src/cpu/core/BoundaryConditions/SimpleSlipBCStrategy.h similarity index 100% rename from src/cpu/VirtualFluidsCore/BoundaryConditions/SimpleSlipBCStrategy.h rename to src/cpu/core/BoundaryConditions/SimpleSlipBCStrategy.h diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/SimpleVelocityBCStrategy.cpp b/src/cpu/core/BoundaryConditions/SimpleVelocityBCStrategy.cpp similarity index 94% rename from src/cpu/VirtualFluidsCore/BoundaryConditions/SimpleVelocityBCStrategy.cpp rename to src/cpu/core/BoundaryConditions/SimpleVelocityBCStrategy.cpp index 2206e71541d6d264fd91146be5641ba75ed5b4d3..95cc73900df9a4da5daeb8ee2611cd8af300cb24 100644 --- a/src/cpu/VirtualFluidsCore/BoundaryConditions/SimpleVelocityBCStrategy.cpp +++ b/src/cpu/core/BoundaryConditions/SimpleVelocityBCStrategy.cpp @@ -60,7 +60,7 @@ void SimpleVelocityBCStrategy::applyBC() { real f[D3Q27System::ENDF+1]; real feq[D3Q27System::ENDF+1]; - distributions->getDistributionInv(f, x1, x2, x3); + distributions->getPostCollisionDistribution(f, x1, x2, x3); real vx1, vx2, vx3, drho; calcMacrosFct(f, drho, vx1, vx2, vx3); calcFeqFct(feq, drho, vx1, vx2, vx3); @@ -72,7 +72,7 @@ void SimpleVelocityBCStrategy::applyBC() const int invDir = D3Q27System::INVDIR[fdir]; real velocity = bcPtr->getBoundaryVelocity(invDir); real fReturn = f[invDir] - velocity; - distributions->setDistributionForDirection(fReturn, x1+D3Q27System::DX1[invDir], x2+D3Q27System::DX2[invDir], x3+D3Q27System::DX3[invDir], fdir); + distributions->setPostCollisionDistributionForDirection(fReturn, x1+D3Q27System::DX1[invDir], x2+D3Q27System::DX2[invDir], x3+D3Q27System::DX3[invDir], fdir); } } diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/SimpleVelocityBCStrategy.h b/src/cpu/core/BoundaryConditions/SimpleVelocityBCStrategy.h similarity index 100% rename from src/cpu/VirtualFluidsCore/BoundaryConditions/SimpleVelocityBCStrategy.h rename to src/cpu/core/BoundaryConditions/SimpleVelocityBCStrategy.h diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/SlipBC.cpp b/src/cpu/core/BoundaryConditions/SlipBC.cpp similarity index 93% rename from src/cpu/VirtualFluidsCore/BoundaryConditions/SlipBC.cpp rename to src/cpu/core/BoundaryConditions/SlipBC.cpp index eb254160395ce1ba12e22bc6ff6d6e063ce8f316..a97fc89fd233197c4286ed14a22a6e4256417ea2 100644 --- a/src/cpu/VirtualFluidsCore/BoundaryConditions/SlipBC.cpp +++ b/src/cpu/core/BoundaryConditions/SlipBC.cpp @@ -58,17 +58,17 @@ void SlipBC::adaptBC(const D3Q27Interactor &interactor, SPtr<BoundaryConditions> if (!geo) throw UbException(UB_EXARGS, "derzeit nur fuer Cubes valide"); - if (bc->hasSlipBoundaryFlag(DIR_P00)) + if (bc->hasSlipBoundaryFlag(dP00)) bc->setNormalVector(vf::basics::constant::c1o1, vf::basics::constant::c0o1, vf::basics::constant::c0o1); - else if (bc->hasSlipBoundaryFlag(DIR_M00)) + else if (bc->hasSlipBoundaryFlag(dM00)) bc->setNormalVector(-vf::basics::constant::c1o1, vf::basics::constant::c0o1, vf::basics::constant::c0o1); - else if (bc->hasSlipBoundaryFlag(DIR_0P0)) + else if (bc->hasSlipBoundaryFlag(d0P0)) bc->setNormalVector(vf::basics::constant::c0o1, vf::basics::constant::c1o1, vf::basics::constant::c0o1); - else if (bc->hasSlipBoundaryFlag(DIR_0M0)) + else if (bc->hasSlipBoundaryFlag(d0M0)) bc->setNormalVector(vf::basics::constant::c0o1, -vf::basics::constant::c1o1, vf::basics::constant::c0o1); - else if (bc->hasSlipBoundaryFlag(DIR_00P)) + else if (bc->hasSlipBoundaryFlag(d00P)) bc->setNormalVector(vf::basics::constant::c0o1, vf::basics::constant::c0o1, vf::basics::constant::c1o1); - else if (bc->hasSlipBoundaryFlag(DIR_00M)) + else if (bc->hasSlipBoundaryFlag(d00M)) bc->setNormalVector(vf::basics::constant::c0o1, vf::basics::constant::c0o1, -vf::basics::constant::c1o1); bc->setBCStrategyType(algorithmType); diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/SlipBC.h b/src/cpu/core/BoundaryConditions/SlipBC.h similarity index 100% rename from src/cpu/VirtualFluidsCore/BoundaryConditions/SlipBC.h rename to src/cpu/core/BoundaryConditions/SlipBC.h diff --git a/src/cpu/core/BoundaryConditions/SlipBCStrategy.cpp b/src/cpu/core/BoundaryConditions/SlipBCStrategy.cpp new file mode 100644 index 0000000000000000000000000000000000000000..5245de010674522f8e7a95b2c5f39b0036dea7a6 --- /dev/null +++ b/src/cpu/core/BoundaryConditions/SlipBCStrategy.cpp @@ -0,0 +1,84 @@ +#include "SlipBCStrategy.h" +#include "BoundaryConditions.h" +#include "DistributionArray3D.h" + +SlipBCStrategy::SlipBCStrategy() +{ + BCStrategy::type = BCStrategy::SlipBCStrategy; + BCStrategy::preCollision = false; +} +////////////////////////////////////////////////////////////////////////// +SlipBCStrategy::~SlipBCStrategy() = default; +////////////////////////////////////////////////////////////////////////// +SPtr<BCStrategy> SlipBCStrategy::clone() +{ + SPtr<BCStrategy> bc(new SlipBCStrategy()); + return bc; +} +////////////////////////////////////////////////////////////////////////// +void SlipBCStrategy::addDistributions(SPtr<DistributionArray3D> distributions) { this->distributions = distributions; } +////////////////////////////////////////////////////////////////////////// +void SlipBCStrategy::applyBC() +{ + using namespace vf::lbm::dir; + + real f[D3Q27System::ENDF + 1]; + real feq[D3Q27System::ENDF + 1]; + distributions->getPostCollisionDistribution(f, x1, x2, x3); + real rho, vx1, vx2, vx3, drho; + calcMacrosFct(f, drho, vx1, vx2, vx3); + calcFeqFct(feq, drho, vx1, vx2, vx3); + + UbTupleFloat3 normale = bcPtr->getNormalVector(); + real amp = vx1 * val<1>(normale) + vx2 * val<2>(normale) + vx3 * val<3>(normale); + + vx1 = vx1 - amp * val<1>(normale); // normale zeigt von struktur weg! + vx2 = vx2 - amp * val<2>(normale); // normale zeigt von struktur weg! + vx3 = vx3 - amp * val<3>(normale); // normale zeigt von struktur weg! + + rho = vf::basics::constant::c1o1 + drho * compressibleFactor; + + for (int fdir = D3Q27System::FSTARTDIR; fdir<=D3Q27System::FENDDIR; fdir++) + { + if (bcPtr->hasSlipBoundaryFlag(fdir)) + { + //quadratic bounce back + const int invDir = D3Q27System::INVDIR[fdir]; + real q = bcPtr->getQ(invDir);// m+m q=0 stabiler + //vx3=0; + real velocity = vf::basics::constant::c0o1; + switch (invDir) + { + case dP00: velocity = (vf::basics::constant::c4o9*(+vx1)); break; //(2/cs^2)(=6)*rho_0(=1 bei imkompr)*wi*u*ei mit cs=1/sqrt(3) + case dM00: velocity = (vf::basics::constant::c4o9*(-vx1)); break; //z.B. aus paper manfred MRT LB models in three dimensions (2002) + case d0P0: velocity = (vf::basics::constant::c4o9*(+vx2)); break; + case d0M0: velocity = (vf::basics::constant::c4o9*(-vx2)); break; + case d00P: velocity = (vf::basics::constant::c4o9*(+vx3)); break; + case d00M: velocity = (vf::basics::constant::c4o9*(-vx3)); break; + case dPP0: velocity = (vf::basics::constant::c1o9*(+vx1+vx2)); break; + case dMM0: velocity = (vf::basics::constant::c1o9*(-vx1-vx2)); break; + case dPM0: velocity = (vf::basics::constant::c1o9*(+vx1-vx2)); break; + case dMP0: velocity = (vf::basics::constant::c1o9*(-vx1+vx2)); break; + case dP0P: velocity = (vf::basics::constant::c1o9*(+vx1+vx3)); break; + case dM0M: velocity = (vf::basics::constant::c1o9*(-vx1-vx3)); break; + case dP0M: velocity = (vf::basics::constant::c1o9*(+vx1-vx3)); break; + case dM0P: velocity = (vf::basics::constant::c1o9*(-vx1+vx3)); break; + case d0PP: velocity = (vf::basics::constant::c1o9*(+vx2+vx3)); break; + case d0MM: velocity = (vf::basics::constant::c1o9*(-vx2-vx3)); break; + case d0PM: velocity = (vf::basics::constant::c1o9*(+vx2-vx3)); break; + case d0MP: velocity = (vf::basics::constant::c1o9*(-vx2+vx3)); break; + case dPPP: velocity = (vf::basics::constant::c1o36*(+vx1+vx2+vx3)); break; + case dMMM: velocity = (vf::basics::constant::c1o36*(-vx1-vx2-vx3)); break; + case dPPM: velocity = (vf::basics::constant::c1o36*(+vx1+vx2-vx3)); break; + case dMMP: velocity = (vf::basics::constant::c1o36*(-vx1-vx2+vx3)); break; + case dPMP: velocity = (vf::basics::constant::c1o36*(+vx1-vx2+vx3)); break; + case dMPM: velocity = (vf::basics::constant::c1o36*(-vx1+vx2-vx3)); break; + case dPMM: velocity = (vf::basics::constant::c1o36*(+vx1-vx2-vx3)); break; + case dMPP: velocity = (vf::basics::constant::c1o36*(-vx1+vx2+vx3)); break; + default: throw UbException(UB_EXARGS, "unknown error"); + } + real fReturn = ((vf::basics::constant::c1o1-q)/(vf::basics::constant::c1o1+q))*((f[invDir]-feq[invDir])/(vf::basics::constant::c1o1-collFactor)+feq[invDir])+((q*(f[invDir]+f[fdir])-velocity*rho)/(vf::basics::constant::c1o1+q)); + distributions->setPostCollisionDistributionForDirection(fReturn, x1+D3Q27System::DX1[invDir], x2+D3Q27System::DX2[invDir], x3+D3Q27System::DX3[invDir], fdir); + } + } +} \ No newline at end of file diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/SlipBCStrategy.h b/src/cpu/core/BoundaryConditions/SlipBCStrategy.h similarity index 100% rename from src/cpu/VirtualFluidsCore/BoundaryConditions/SlipBCStrategy.h rename to src/cpu/core/BoundaryConditions/SlipBCStrategy.h diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/ThinWallBCSet.cpp b/src/cpu/core/BoundaryConditions/ThinWallBCSet.cpp similarity index 100% rename from src/cpu/VirtualFluidsCore/BoundaryConditions/ThinWallBCSet.cpp rename to src/cpu/core/BoundaryConditions/ThinWallBCSet.cpp diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/ThinWallBCSet.h b/src/cpu/core/BoundaryConditions/ThinWallBCSet.h similarity index 100% rename from src/cpu/VirtualFluidsCore/BoundaryConditions/ThinWallBCSet.h rename to src/cpu/core/BoundaryConditions/ThinWallBCSet.h diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/ThinWallNoSlipBCStrategy.cpp b/src/cpu/core/BoundaryConditions/ThinWallNoSlipBCStrategy.cpp similarity index 94% rename from src/cpu/VirtualFluidsCore/BoundaryConditions/ThinWallNoSlipBCStrategy.cpp rename to src/cpu/core/BoundaryConditions/ThinWallNoSlipBCStrategy.cpp index 2427983a121b4948167b20d2336dbc39a0d81b9a..5cb6f4a13cece782370931e01415347a54fa87bd 100644 --- a/src/cpu/VirtualFluidsCore/BoundaryConditions/ThinWallNoSlipBCStrategy.cpp +++ b/src/cpu/core/BoundaryConditions/ThinWallNoSlipBCStrategy.cpp @@ -54,7 +54,7 @@ void ThinWallNoSlipBCStrategy::applyBC() { real f[D3Q27System::ENDF + 1]; real feq[D3Q27System::ENDF + 1]; - distributions->getDistributionInv(f, x1, x2, x3); + distributions->getPostCollisionDistribution(f, x1, x2, x3); real rho, vx1, vx2, vx3; calcMacrosFct(f, rho, vx1, vx2, vx3); calcFeqFct(feq, rho, vx1, vx2, vx3); @@ -69,7 +69,7 @@ void ThinWallNoSlipBCStrategy::applyBC() fReturn = ((vf::basics::constant::c1o1 - q) / (vf::basics::constant::c1o1 + q)) * vf::basics::constant::c1o2 * (f[invDir] - f[fdir] + (f[invDir] + f[fdir] - collFactor * (feq[fdir] + feq[invDir])) / (vf::basics::constant::c1o1 - collFactor)); - // distributionsTemp->setDistributionForDirection(fReturn, x1 + D3Q27System::DX1[invDir], x2 + + // distributionsTemp->setPostCollisionDistributionForDirection(fReturn, x1 + D3Q27System::DX1[invDir], x2 + // D3Q27System::DX2[invDir], x3 + D3Q27System::DX3[invDir], fdir); fTemp[fdir] = fReturn; } else { @@ -77,7 +77,7 @@ void ThinWallNoSlipBCStrategy::applyBC() // fReturn = distributionsTemp->getDistributionInvForDirection(x1 + D3Q27System::DX1[invDir], x2 + // D3Q27System::DX2[invDir], x3 + D3Q27System::DX3[invDir], fdir); fReturn = fTemp[fdir]; - distributions->setDistributionForDirection(fReturn, x1 + D3Q27System::DX1[invDir], + distributions->setPostCollisionDistributionForDirection(fReturn, x1 + D3Q27System::DX1[invDir], x2 + D3Q27System::DX2[invDir], x3 + D3Q27System::DX3[invDir], fdir); } diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/ThinWallNoSlipBCStrategy.h b/src/cpu/core/BoundaryConditions/ThinWallNoSlipBCStrategy.h similarity index 100% rename from src/cpu/VirtualFluidsCore/BoundaryConditions/ThinWallNoSlipBCStrategy.h rename to src/cpu/core/BoundaryConditions/ThinWallNoSlipBCStrategy.h diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/VelocityBC.cpp b/src/cpu/core/BoundaryConditions/VelocityBC.cpp similarity index 100% rename from src/cpu/VirtualFluidsCore/BoundaryConditions/VelocityBC.cpp rename to src/cpu/core/BoundaryConditions/VelocityBC.cpp diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/VelocityBC.h b/src/cpu/core/BoundaryConditions/VelocityBC.h similarity index 100% rename from src/cpu/VirtualFluidsCore/BoundaryConditions/VelocityBC.h rename to src/cpu/core/BoundaryConditions/VelocityBC.h diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/VelocityBCStrategy.cpp b/src/cpu/core/BoundaryConditions/VelocityBCStrategy.cpp similarity index 95% rename from src/cpu/VirtualFluidsCore/BoundaryConditions/VelocityBCStrategy.cpp rename to src/cpu/core/BoundaryConditions/VelocityBCStrategy.cpp index 4f4c1615d0b6386a2e3382959e73f1885c8e9af4..2cab5d9d321e52ac23fc7bd2c78a4b648966b619 100644 --- a/src/cpu/VirtualFluidsCore/BoundaryConditions/VelocityBCStrategy.cpp +++ b/src/cpu/core/BoundaryConditions/VelocityBCStrategy.cpp @@ -57,7 +57,7 @@ void VelocityBCStrategy::applyBC() { real f[D3Q27System::ENDF + 1]; real feq[D3Q27System::ENDF + 1]; - distributions->getDistributionInv(f, x1, x2, x3); + distributions->getPostCollisionDistribution(f, x1, x2, x3); real rho, vx1, vx2, vx3, drho; calcMacrosFct(f, drho, vx1, vx2, vx3); calcFeqFct(feq, drho, vx1, vx2, vx3); @@ -74,7 +74,7 @@ void VelocityBCStrategy::applyBC() real velocity = bcPtr->getBoundaryVelocity(invDir); real fReturn = ((vf::basics::constant::c1o1 - q) / (vf::basics::constant::c1o1 + q)) * ((f[invDir] - feq[invDir]) / (vf::basics::constant::c1o1 - collFactor) + feq[invDir]) + ((q * (f[invDir] + f[fdir]) - velocity * rho) / (vf::basics::constant::c1o1 + q)); - distributions->setDistributionForDirection(fReturn, x1 + D3Q27System::DX1[invDir], + distributions->setPostCollisionDistributionForDirection(fReturn, x1 + D3Q27System::DX1[invDir], x2 + D3Q27System::DX2[invDir], x3 + D3Q27System::DX3[invDir], fdir); } diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/VelocityBCStrategy.h b/src/cpu/core/BoundaryConditions/VelocityBCStrategy.h similarity index 100% rename from src/cpu/VirtualFluidsCore/BoundaryConditions/VelocityBCStrategy.h rename to src/cpu/core/BoundaryConditions/VelocityBCStrategy.h diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/VelocityWithDensityBCStrategy.cpp b/src/cpu/core/BoundaryConditions/VelocityWithDensityBCStrategy.cpp similarity index 96% rename from src/cpu/VirtualFluidsCore/BoundaryConditions/VelocityWithDensityBCStrategy.cpp rename to src/cpu/core/BoundaryConditions/VelocityWithDensityBCStrategy.cpp index 0278ee0954dda41fd028a40d820782bf76b512f8..5ef3bea739ec38e211a4ef649574ccd1c59fe6a4 100644 --- a/src/cpu/VirtualFluidsCore/BoundaryConditions/VelocityWithDensityBCStrategy.cpp +++ b/src/cpu/core/BoundaryConditions/VelocityWithDensityBCStrategy.cpp @@ -60,7 +60,7 @@ void VelocityWithDensityBCStrategy::applyBC() //velocity bc for non reflecting pressure bc real f[D3Q27System::ENDF+1]; //real feq[D3Q27System::ENDF+1]; - distributions->getDistributionInv(f, x1, x2, x3); + distributions->getPostCollisionDistribution(f, x1, x2, x3); real rho, vx1, vx2, vx3, drho; calcMacrosFct(f, drho, vx1, vx2, vx3); //calcFeqFct(feq, drho, vx1, vx2, vx3); @@ -96,7 +96,7 @@ void VelocityWithDensityBCStrategy::applyBC() // q))-drho*D3Q27System::WEIGTH[invDir]; real fReturn = (f[fdir] + f[invDir] - velocity * rho) / vf::basics::constant::c2o1 - drho * D3Q27System::WEIGTH[invDir]; - distributions->setDistributionForDirection(fReturn, nX1, nX2, nX3, invDir); + distributions->setPostCollisionDistributionForDirection(fReturn, nX1, nX2, nX3, invDir); } } } diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/VelocityWithDensityBCStrategy.h b/src/cpu/core/BoundaryConditions/VelocityWithDensityBCStrategy.h similarity index 100% rename from src/cpu/VirtualFluidsCore/BoundaryConditions/VelocityWithDensityBCStrategy.h rename to src/cpu/core/BoundaryConditions/VelocityWithDensityBCStrategy.h diff --git a/src/cpu/VirtualFluidsCore/CMakeLists.txt b/src/cpu/core/CMakeLists.txt similarity index 90% rename from src/cpu/VirtualFluidsCore/CMakeLists.txt rename to src/cpu/core/CMakeLists.txt index 3e767e49c6cc0d35c2c8706a20b77f17a625b9a4..ee8f4ed209673acfc4bbfbd8bff39379e28d5255 100644 --- a/src/cpu/VirtualFluidsCore/CMakeLists.txt +++ b/src/cpu/core/CMakeLists.txt @@ -20,11 +20,11 @@ if(BUILD_USE_OPENMP) list(APPEND VF_LIBRARIES OpenMP::OpenMP_CXX) endif() -vf_add_library(BUILDTYPE static PUBLIC_LINK basics muparser ${VF_LIBRARIES} parallel PRIVATE_LINK lbm logger) +set(library_name cpu_core) -vf_add_tests() +vf_add_library(NAME ${library_name} BUILDTYPE static PUBLIC_LINK basics muparser ${VF_LIBRARIES} parallel PRIVATE_LINK lbm logger) -vf_get_library_name(library_name) +vf_add_tests(NAME ${library_name}) target_include_directories(${library_name} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/BoundaryConditions) target_include_directories(${library_name} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/Connectors) diff --git a/src/cpu/VirtualFluidsCore/Connectors/Block3DConnector.h b/src/cpu/core/Connectors/Block3DConnector.h similarity index 100% rename from src/cpu/VirtualFluidsCore/Connectors/Block3DConnector.h rename to src/cpu/core/Connectors/Block3DConnector.h diff --git a/src/cpu/VirtualFluidsCore/Connectors/CoarseToFineVectorConnector.cpp b/src/cpu/core/Connectors/CoarseToFineVectorConnector.cpp similarity index 100% rename from src/cpu/VirtualFluidsCore/Connectors/CoarseToFineVectorConnector.cpp rename to src/cpu/core/Connectors/CoarseToFineVectorConnector.cpp diff --git a/src/cpu/VirtualFluidsCore/Connectors/CoarseToFineVectorConnector.h b/src/cpu/core/Connectors/CoarseToFineVectorConnector.h similarity index 90% rename from src/cpu/VirtualFluidsCore/Connectors/CoarseToFineVectorConnector.h rename to src/cpu/core/Connectors/CoarseToFineVectorConnector.h index 331e923ea6b94841c2d0c293b9f5680bab4cb400..9a0612f2afa4d226341ea4ab8132566203454226 100644 --- a/src/cpu/VirtualFluidsCore/Connectors/CoarseToFineVectorConnector.h +++ b/src/cpu/core/Connectors/CoarseToFineVectorConnector.h @@ -159,15 +159,15 @@ CoarseToFineVectorConnector<VectorTransmitter>::CoarseToFineVectorConnector( { using namespace vf::lbm::dir; - if (!(sendDir == DIR_P00 || sendDir == DIR_M00 || sendDir == DIR_0P0 || - sendDir == DIR_0M0 || sendDir == DIR_00P || sendDir == DIR_00M || - sendDir == DIR_PP0 || sendDir == DIR_MM0 || sendDir == DIR_PM0 || - sendDir == DIR_MP0 || sendDir == DIR_P0P || sendDir == DIR_M0M || - sendDir == DIR_P0M || sendDir == DIR_M0P || sendDir == DIR_0PP || - sendDir == DIR_0MM || sendDir == DIR_0PM || sendDir == DIR_0MP || - sendDir == DIR_PPP || sendDir == DIR_MPP || sendDir == DIR_PMP || - sendDir == DIR_MMP || sendDir == DIR_PPM || sendDir == DIR_MPM || - sendDir == DIR_PMM || sendDir == DIR_MMM)) { + if (!(sendDir == dP00 || sendDir == dM00 || sendDir == d0P0 || + sendDir == d0M0 || sendDir == d00P || sendDir == d00M || + sendDir == dPP0 || sendDir == dMM0 || sendDir == dPM0 || + sendDir == dMP0 || sendDir == dP0P || sendDir == dM0M || + sendDir == dP0M || sendDir == dM0P || sendDir == d0PP || + sendDir == d0MM || sendDir == d0PM || sendDir == d0MP || + sendDir == dPPP || sendDir == dMPP || sendDir == dPMP || + sendDir == dMMP || sendDir == dPPM || sendDir == dMPM || + sendDir == dPMM || sendDir == dMMM)) { throw UbException(UB_EXARGS, "invalid constructor for this direction"); } } @@ -314,44 +314,44 @@ void CoarseToFineVectorConnector<VectorTransmitter>::init() int iCellSize = 8; // size of interpolation cell switch (this->sendDir) { - case DIR_P00: - case DIR_M00: + case dP00: + case dM00: sendSize = bMaxX2 * bMaxX3 * sendDataPerNode * iCellSize; break; - case DIR_0P0: - case DIR_0M0: + case d0P0: + case d0M0: sendSize = bMaxX1 * bMaxX3 * sendDataPerNode * iCellSize; break; - case DIR_00P: - case DIR_00M: + case d00P: + case d00M: sendSize = bMaxX1 * bMaxX2 * sendDataPerNode * iCellSize; break; - case DIR_PP0: - case DIR_MM0: - case DIR_PM0: - case DIR_MP0: + case dPP0: + case dMM0: + case dPM0: + case dMP0: sendSize = 2 * bMaxX3 * sendDataPerNode * iCellSize; break; - case DIR_P0P: - case DIR_M0M: - case DIR_P0M: - case DIR_M0P: + case dP0P: + case dM0M: + case dP0M: + case dM0P: sendSize = 2 * bMaxX2 * sendDataPerNode * iCellSize; break; - case DIR_0PP: - case DIR_0MM: - case DIR_0PM: - case DIR_0MP: + case d0PP: + case d0MM: + case d0PM: + case d0MP: sendSize = 2 * bMaxX1 * sendDataPerNode * iCellSize; break; - case DIR_PPP: - case DIR_MPP: - case DIR_PMP: - case DIR_MMP: - case DIR_PPM: - case DIR_MPM: - case DIR_PMM: - case DIR_MMM: + case dPPP: + case dMPP: + case dPMP: + case dMMP: + case dPPM: + case dMPM: + case dPMM: + case dMMM: sendSize = 6 * bMaxX1 * sendDataPerNode * iCellSize; break; default: @@ -413,7 +413,7 @@ void CoarseToFineVectorConnector<VectorTransmitter>::fillSendVectors() int lMinX1, lMinX2, lMinX3, lMaxX1, lMaxX2, lMaxX3; switch (sendDir) { - case DIR_P00: + case dP00: lMinX1 = maxX1 - 3; lMaxX1 = lMinX1 + 1; @@ -433,7 +433,7 @@ void CoarseToFineVectorConnector<VectorTransmitter>::fillSendVectors() getLocalMinMax(minX3, maxX3, false, lMinX3, lMaxX3, false); fillSendVectorExt(fFrom, lMinX1, lMinX2, lMinX3, lMaxX1, lMaxX2, lMaxX3, dataOdOd, indexOdOd); break; - case DIR_M00: + case dM00: lMinX1 = 1; lMaxX1 = lMinX1 + 1; @@ -453,7 +453,7 @@ void CoarseToFineVectorConnector<VectorTransmitter>::fillSendVectors() getLocalMinMax(minX3, maxX3, false, lMinX3, lMaxX3, false); fillSendVectorExt(fFrom, lMinX1, lMinX2, lMinX3, lMaxX1, lMaxX2, lMaxX3, dataOdOd, indexOdOd); break; - case DIR_0P0: + case d0P0: lMinX2 = maxX2 - 3; lMaxX2 = lMinX2 + 1; @@ -473,7 +473,7 @@ void CoarseToFineVectorConnector<VectorTransmitter>::fillSendVectors() getLocalMinMax(minX3, maxX3, false, lMinX3, lMaxX3, false); fillSendVectorExt(fFrom, lMinX1, lMinX2, lMinX3, lMaxX1, lMaxX2, lMaxX3, dataOdOd, indexOdOd); break; - case DIR_0M0: + case d0M0: lMinX2 = 1; lMaxX2 = lMinX2 + 1; @@ -493,7 +493,7 @@ void CoarseToFineVectorConnector<VectorTransmitter>::fillSendVectors() getLocalMinMax(minX3, maxX3, false, lMinX3, lMaxX3, false); fillSendVectorExt(fFrom, lMinX1, lMinX2, lMinX3, lMaxX1, lMaxX2, lMaxX3, dataOdOd, indexOdOd); break; - case DIR_00P: + case d00P: lMinX3 = maxX3 - 3; lMaxX3 = lMinX3 + 1; @@ -513,7 +513,7 @@ void CoarseToFineVectorConnector<VectorTransmitter>::fillSendVectors() getLocalMinMax(minX2, maxX2, false, lMinX2, lMaxX2, false); fillSendVectorExt(fFrom, lMinX1, lMinX2, lMinX3, lMaxX1, lMaxX2, lMaxX3, dataOdOd, indexOdOd); break; - case DIR_00M: + case d00M: lMinX3 = 1; lMaxX3 = lMinX3 + 1; @@ -534,7 +534,7 @@ void CoarseToFineVectorConnector<VectorTransmitter>::fillSendVectors() fillSendVectorExt(fFrom, lMinX1, lMinX2, lMinX3, lMaxX1, lMaxX2, lMaxX3, dataOdOd, indexOdOd); break; /// N-S-E-W - case DIR_PP0: + case dPP0: lMinX1 = maxX1 - 3; lMaxX1 = lMinX1 + 2; lMinX2 = maxX2 - 3; @@ -548,7 +548,7 @@ void CoarseToFineVectorConnector<VectorTransmitter>::fillSendVectors() break; - case DIR_MM0: + case dMM0: lMinX1 = 0; lMaxX1 = lMinX1 + 2; lMinX2 = 0; @@ -562,7 +562,7 @@ void CoarseToFineVectorConnector<VectorTransmitter>::fillSendVectors() break; - case DIR_PM0: + case dPM0: lMinX1 = maxX1 - 3; lMaxX1 = lMinX1 + 2; lMinX2 = 0; @@ -576,7 +576,7 @@ void CoarseToFineVectorConnector<VectorTransmitter>::fillSendVectors() break; - case DIR_MP0: + case dMP0: lMinX1 = 0; lMaxX1 = lMinX1 + 2; lMinX2 = maxX2 - 3; @@ -590,7 +590,7 @@ void CoarseToFineVectorConnector<VectorTransmitter>::fillSendVectors() break; /////T-B-E-W - case DIR_P0P: + case dP0P: lMinX1 = maxX1 - 3; lMaxX1 = lMinX1 + 2; lMinX3 = maxX3 - 3; @@ -604,7 +604,7 @@ void CoarseToFineVectorConnector<VectorTransmitter>::fillSendVectors() break; - case DIR_M0M: + case dM0M: lMinX1 = 0; lMaxX1 = lMinX1 + 2; lMinX3 = 0; @@ -618,7 +618,7 @@ void CoarseToFineVectorConnector<VectorTransmitter>::fillSendVectors() break; - case DIR_P0M: + case dP0M: lMinX1 = maxX1 - 3; lMaxX1 = lMinX1 + 2; lMinX3 = 0; @@ -632,7 +632,7 @@ void CoarseToFineVectorConnector<VectorTransmitter>::fillSendVectors() break; - case DIR_M0P: + case dM0P: lMinX1 = 0; lMaxX1 = lMinX1 + 2; lMinX3 = maxX3 - 3; @@ -647,7 +647,7 @@ void CoarseToFineVectorConnector<VectorTransmitter>::fillSendVectors() break; //// /////T-B-N-S - case DIR_0PP: + case d0PP: lMinX2 = maxX2 - 3; lMaxX2 = lMinX2 + 2; lMinX3 = maxX3 - 3; @@ -661,7 +661,7 @@ void CoarseToFineVectorConnector<VectorTransmitter>::fillSendVectors() break; - case DIR_0MM: + case d0MM: lMinX2 = 0; lMaxX2 = lMinX2 + 2; lMinX3 = 0; @@ -675,7 +675,7 @@ void CoarseToFineVectorConnector<VectorTransmitter>::fillSendVectors() break; - case DIR_0PM: + case d0PM: lMinX2 = maxX2 - 3; lMaxX2 = lMinX2 + 2; lMinX3 = 0; @@ -689,7 +689,7 @@ void CoarseToFineVectorConnector<VectorTransmitter>::fillSendVectors() break; - case DIR_0MP: + case d0MP: lMinX2 = 0; lMaxX2 = lMinX2 + 2; lMinX3 = maxX3 - 3; @@ -704,7 +704,7 @@ void CoarseToFineVectorConnector<VectorTransmitter>::fillSendVectors() break; // TNE - case DIR_PPP: + case dPPP: lMinX1 = maxX1 - 3; lMaxX1 = maxX1 - 1; lMinX2 = maxX2 - 3; @@ -715,7 +715,7 @@ void CoarseToFineVectorConnector<VectorTransmitter>::fillSendVectors() fillSendVectorExt(fFrom, lMinX1, lMinX2, lMinX3, lMaxX1, lMaxX2, lMaxX3, dataEvEv, indexEvEv); break; // TNW - case DIR_MPP: + case dMPP: lMinX1 = 0; lMaxX1 = 2; lMinX2 = maxX2 - 3; @@ -726,7 +726,7 @@ void CoarseToFineVectorConnector<VectorTransmitter>::fillSendVectors() fillSendVectorExt(fFrom, lMinX1, lMinX2, lMinX3, lMaxX1, lMaxX2, lMaxX3, dataEvEv, indexEvEv); break; // TSE - case DIR_PMP: + case dPMP: lMinX1 = maxX1 - 3; lMaxX1 = maxX1 - 1; lMinX2 = 0; @@ -737,7 +737,7 @@ void CoarseToFineVectorConnector<VectorTransmitter>::fillSendVectors() fillSendVectorExt(fFrom, lMinX1, lMinX2, lMinX3, lMaxX1, lMaxX2, lMaxX3, dataEvEv, indexEvEv); break; // TSW - case DIR_MMP: + case dMMP: lMinX1 = 0; lMaxX1 = 2; lMinX2 = 0; @@ -748,7 +748,7 @@ void CoarseToFineVectorConnector<VectorTransmitter>::fillSendVectors() fillSendVectorExt(fFrom, lMinX1, lMinX2, lMinX3, lMaxX1, lMaxX2, lMaxX3, dataEvEv, indexEvEv); break; // BNE - case DIR_PPM: + case dPPM: lMinX1 = maxX1 - 3; lMaxX1 = maxX1 - 1; lMinX2 = maxX2 - 3; @@ -759,7 +759,7 @@ void CoarseToFineVectorConnector<VectorTransmitter>::fillSendVectors() fillSendVectorExt(fFrom, lMinX1, lMinX2, lMinX3, lMaxX1, lMaxX2, lMaxX3, dataEvEv, indexEvEv); break; // BNW - case DIR_MPM: + case dMPM: lMinX1 = 0; lMaxX1 = 2; lMinX2 = maxX2 - 3; @@ -770,7 +770,7 @@ void CoarseToFineVectorConnector<VectorTransmitter>::fillSendVectors() fillSendVectorExt(fFrom, lMinX1, lMinX2, lMinX3, lMaxX1, lMaxX2, lMaxX3, dataEvEv, indexEvEv); break; // BSE - case DIR_PMM: + case dPMM: lMinX1 = maxX1 - 3; lMaxX1 = maxX1 - 1; lMinX2 = 0; @@ -781,7 +781,7 @@ void CoarseToFineVectorConnector<VectorTransmitter>::fillSendVectors() fillSendVectorExt(fFrom, lMinX1, lMinX2, lMinX3, lMaxX1, lMaxX2, lMaxX3, dataEvEv, indexEvEv); break; // BSW - case DIR_MMM: + case dMMM: lMinX1 = 0; lMaxX1 = 2; lMinX2 = 0; @@ -920,7 +920,7 @@ void CoarseToFineVectorConnector<VectorTransmitter>::distributeReceiveVectors() int dummy; switch (sendDir) { - case DIR_P00: + case dP00: lMinX1 = maxX1 - 4; lMaxX1 = lMinX1 + 1; getLocalMinMax(minX2, maxX2, true, lMinX2, lMaxX2, true); @@ -943,7 +943,7 @@ void CoarseToFineVectorConnector<VectorTransmitter>::distributeReceiveVectors() getLocalMinMax(dummy, dummy, dummy, dummy, lMaxX2, lMaxX3); distributeReceiveVector(fTo, lMinX1, lMinX2, lMinX3, lMaxX1, lMaxX2, lMaxX3, dataOdOd, indexOdOd); break; - case DIR_M00: + case dM00: lMinX1 = 3; lMaxX1 = lMinX1 + 1; getLocalMinMax(minX2, maxX2, true, lMinX2, lMaxX2, true); @@ -966,7 +966,7 @@ void CoarseToFineVectorConnector<VectorTransmitter>::distributeReceiveVectors() getLocalMinMax(dummy, dummy, dummy, dummy, lMaxX2, lMaxX3); distributeReceiveVector(fTo, lMinX1, lMinX2, lMinX3, lMaxX1, lMaxX2, lMaxX3, dataOdOd, indexOdOd); break; - case DIR_0P0: + case d0P0: lMinX2 = maxX2 - 4; lMaxX2 = lMinX2 + 1; getLocalMinMax(minX1, maxX1, true, lMinX1, lMaxX1, true); @@ -989,7 +989,7 @@ void CoarseToFineVectorConnector<VectorTransmitter>::distributeReceiveVectors() getLocalMinMax(dummy, dummy, dummy, lMaxX1, dummy, lMaxX3); distributeReceiveVector(fTo, lMinX1, lMinX2, lMinX3, lMaxX1, lMaxX2, lMaxX3, dataOdOd, indexOdOd); break; - case DIR_0M0: + case d0M0: lMinX2 = 3; lMaxX2 = lMinX2 + 1; getLocalMinMax(minX1, maxX1, true, lMinX1, lMaxX1, true); @@ -1012,7 +1012,7 @@ void CoarseToFineVectorConnector<VectorTransmitter>::distributeReceiveVectors() getLocalMinMax(dummy, dummy, dummy, lMaxX1, dummy, lMaxX3); distributeReceiveVector(fTo, lMinX1, lMinX2, lMinX3, lMaxX1, lMaxX2, lMaxX3, dataOdOd, indexOdOd); break; - case DIR_00P: + case d00P: lMinX3 = maxX3 - 4; lMaxX3 = lMinX3 + 1; getLocalMinMax(minX1, maxX1, true, lMinX1, lMaxX1, true); @@ -1035,7 +1035,7 @@ void CoarseToFineVectorConnector<VectorTransmitter>::distributeReceiveVectors() getLocalMinMax(dummy, dummy, dummy, lMaxX1, lMaxX2, dummy); distributeReceiveVector(fTo, lMinX1, lMinX2, lMinX3, lMaxX1, lMaxX2, lMaxX3, dataOdOd, indexOdOd); break; - case DIR_00M: + case d00M: lMinX3 = 3; lMaxX3 = lMinX3 + 1; getLocalMinMax(minX1, maxX1, true, lMinX1, lMaxX1, true); @@ -1060,7 +1060,7 @@ void CoarseToFineVectorConnector<VectorTransmitter>::distributeReceiveVectors() break; // /////E-W-N-S - case DIR_PP0: + case dPP0: lMinX1 = maxX1 - 4; lMaxX1 = lMinX1 + 3; lMinX2 = maxX2 - 4; @@ -1087,7 +1087,7 @@ void CoarseToFineVectorConnector<VectorTransmitter>::distributeReceiveVectors() break; - case DIR_MM0: + case dMM0: lMinX1 = 1; lMaxX1 = lMinX1 + 3; lMinX2 = 3; @@ -1114,7 +1114,7 @@ void CoarseToFineVectorConnector<VectorTransmitter>::distributeReceiveVectors() break; - case DIR_PM0: + case dPM0: lMinX1 = maxX1 - 4; lMaxX1 = lMinX1 + 3; lMinX2 = 3; @@ -1141,7 +1141,7 @@ void CoarseToFineVectorConnector<VectorTransmitter>::distributeReceiveVectors() break; - case DIR_MP0: + case dMP0: lMinX1 = 1; lMaxX1 = lMinX1 + 3; lMinX2 = maxX2 - 4; @@ -1168,7 +1168,7 @@ void CoarseToFineVectorConnector<VectorTransmitter>::distributeReceiveVectors() break; // /////T-B-E-W - case DIR_P0P: + case dP0P: lMinX1 = maxX1 - 4; lMaxX1 = lMinX1 + 3; lMinX3 = maxX3 - 4; @@ -1195,7 +1195,7 @@ void CoarseToFineVectorConnector<VectorTransmitter>::distributeReceiveVectors() break; - case DIR_M0M: + case dM0M: lMinX1 = 1; lMaxX1 = lMinX1 + 3; lMinX3 = 3; @@ -1222,7 +1222,7 @@ void CoarseToFineVectorConnector<VectorTransmitter>::distributeReceiveVectors() break; - case DIR_P0M: + case dP0M: lMinX1 = maxX1 - 4; lMaxX1 = lMinX1 + 3; lMinX3 = 3; @@ -1249,7 +1249,7 @@ void CoarseToFineVectorConnector<VectorTransmitter>::distributeReceiveVectors() break; - case DIR_M0P: + case dM0P: lMinX1 = 1; lMaxX1 = lMinX1 + 3; lMinX3 = maxX3 - 4; @@ -1277,7 +1277,7 @@ void CoarseToFineVectorConnector<VectorTransmitter>::distributeReceiveVectors() break; /////////////////////////T-N-B-S - case DIR_0PP: + case d0PP: lMinX2 = maxX2 - 4; lMaxX2 = lMinX2 + 3; lMinX3 = maxX3 - 4; @@ -1304,7 +1304,7 @@ void CoarseToFineVectorConnector<VectorTransmitter>::distributeReceiveVectors() break; - case DIR_0MM: + case d0MM: lMinX2 = 1; lMaxX2 = lMinX2 + 3; lMinX3 = 3; @@ -1331,7 +1331,7 @@ void CoarseToFineVectorConnector<VectorTransmitter>::distributeReceiveVectors() break; - case DIR_0PM: + case d0PM: lMinX2 = maxX2 - 4; lMaxX2 = lMinX2 + 3; lMinX3 = 3; @@ -1358,7 +1358,7 @@ void CoarseToFineVectorConnector<VectorTransmitter>::distributeReceiveVectors() break; - case DIR_0MP: + case d0MP: lMinX2 = 1; lMaxX2 = lMinX2 + 3; lMinX3 = maxX3 - 4; @@ -1386,7 +1386,7 @@ void CoarseToFineVectorConnector<VectorTransmitter>::distributeReceiveVectors() break; // TNE - case DIR_PPP: + case dPPP: lMinX1 = maxX1 - 4; lMaxX1 = maxX1 - 3; lMinX2 = maxX2 - 4; @@ -1413,7 +1413,7 @@ void CoarseToFineVectorConnector<VectorTransmitter>::distributeReceiveVectors() break; // TNW - case DIR_MPP: + case dMPP: lMinX1 = 3; lMaxX1 = 4; lMinX2 = maxX2 - 4; @@ -1440,7 +1440,7 @@ void CoarseToFineVectorConnector<VectorTransmitter>::distributeReceiveVectors() break; // TSE - case DIR_PMP: + case dPMP: lMinX1 = maxX1 - 4; lMaxX1 = maxX1 - 3; lMinX2 = 1; @@ -1466,7 +1466,7 @@ void CoarseToFineVectorConnector<VectorTransmitter>::distributeReceiveVectors() distributeReceiveVector(fTo, lMinX1, lMinX2, lMinX3, lMaxX1, lMaxX2, lMaxX3, dataEvEv, indexEvEv); break; // TSW - case DIR_MMP: + case dMMP: lMinX1 = 3; lMaxX1 = 4; lMinX2 = 1; @@ -1492,7 +1492,7 @@ void CoarseToFineVectorConnector<VectorTransmitter>::distributeReceiveVectors() distributeReceiveVector(fTo, lMinX1, lMinX2, lMinX3, lMaxX1, lMaxX2, lMaxX3, dataEvEv, indexEvEv); break; // BNE - case DIR_PPM: + case dPPM: lMinX1 = maxX1 - 4; lMaxX1 = maxX1 - 3; lMinX2 = maxX2 - 4; @@ -1519,7 +1519,7 @@ void CoarseToFineVectorConnector<VectorTransmitter>::distributeReceiveVectors() break; // BNW - case DIR_MPM: + case dMPM: lMinX1 = 3; lMaxX1 = 4; lMinX2 = maxX2 - 4; @@ -1545,7 +1545,7 @@ void CoarseToFineVectorConnector<VectorTransmitter>::distributeReceiveVectors() distributeReceiveVector(fTo, lMinX1, lMinX2, lMinX3, lMaxX1, lMaxX2, lMaxX3, dataEvEv, indexEvEv); break; // BSE - case DIR_PMM: + case dPMM: lMinX1 = maxX1 - 4; lMaxX1 = maxX1 - 3; lMinX2 = 1; @@ -1571,7 +1571,7 @@ void CoarseToFineVectorConnector<VectorTransmitter>::distributeReceiveVectors() distributeReceiveVector(fTo, lMinX1, lMinX2, lMinX3, lMaxX1, lMaxX2, lMaxX3, dataEvEv, indexEvEv); break; // BSW - case DIR_MMM: + case dMMM: lMinX1 = 3; lMaxX1 = 4; lMinX2 = 1; @@ -1644,55 +1644,55 @@ void CoarseToFineVectorConnector<VectorTransmitter>::getLocalMinMax(int &minX1, int TmaxX2 = maxX2; int TmaxX3 = maxX3; - if (block.lock()->hasInterpolationFlagCF(DIR_P00)) { + if (block.lock()->hasInterpolationFlagCF(dP00)) { if (maxX1 == TmaxX1) maxX1 -= 2; } - if (block.lock()->hasInterpolationFlagCF(DIR_M00)) { + if (block.lock()->hasInterpolationFlagCF(dM00)) { if (minX1 == TminX1) minX1 += 2; } - if (block.lock()->hasInterpolationFlagCF(DIR_0P0)) { + if (block.lock()->hasInterpolationFlagCF(d0P0)) { if (maxX2 == TmaxX2) maxX2 -= 2; } - if (block.lock()->hasInterpolationFlagCF(DIR_0M0)) { + if (block.lock()->hasInterpolationFlagCF(d0M0)) { if (minX2 == TminX2) minX2 += 2; } - if (block.lock()->hasInterpolationFlagCF(DIR_00P)) { + if (block.lock()->hasInterpolationFlagCF(d00P)) { if (maxX3 == TmaxX3) maxX3 -= 2; } - if (block.lock()->hasInterpolationFlagCF(DIR_00M)) { + if (block.lock()->hasInterpolationFlagCF(d00M)) { if (minX3 == TminX3) minX3 += 2; } // E-W-N-S - if (block.lock()->hasInterpolationFlagCF(DIR_PP0) && !block.lock()->hasInterpolationFlagCF(DIR_0P0) && - !block.lock()->hasInterpolationFlagCF(DIR_P00)) { + if (block.lock()->hasInterpolationFlagCF(dPP0) && !block.lock()->hasInterpolationFlagCF(d0P0) && + !block.lock()->hasInterpolationFlagCF(dP00)) { if (maxX1 == TmaxX1) maxX1 -= 2; if (maxX2 == TmaxX2) maxX2 -= 2; } - if (block.lock()->hasInterpolationFlagCF(DIR_MM0) && !block.lock()->hasInterpolationFlagCF(DIR_M00) && - !block.lock()->hasInterpolationFlagCF(DIR_0M0)) { + if (block.lock()->hasInterpolationFlagCF(dMM0) && !block.lock()->hasInterpolationFlagCF(dM00) && + !block.lock()->hasInterpolationFlagCF(d0M0)) { if (minX1 == TminX1) minX1 += 2; if (minX2 == TminX2) minX2 += 2; } - if (block.lock()->hasInterpolationFlagCF(DIR_PM0) && !block.lock()->hasInterpolationFlagCF(DIR_P00) && - !block.lock()->hasInterpolationFlagCF(DIR_0M0)) { + if (block.lock()->hasInterpolationFlagCF(dPM0) && !block.lock()->hasInterpolationFlagCF(dP00) && + !block.lock()->hasInterpolationFlagCF(d0M0)) { if (maxX1 == TmaxX1) maxX1 -= 2; if (minX2 == TminX2) minX2 += 2; } - if (block.lock()->hasInterpolationFlagCF(DIR_MP0) && !block.lock()->hasInterpolationFlagCF(DIR_0P0) && - !block.lock()->hasInterpolationFlagCF(DIR_M00)) { + if (block.lock()->hasInterpolationFlagCF(dMP0) && !block.lock()->hasInterpolationFlagCF(d0P0) && + !block.lock()->hasInterpolationFlagCF(dM00)) { if (minX1 == TminX1) minX1 += 2; if (maxX2 == TmaxX2) @@ -1700,29 +1700,29 @@ void CoarseToFineVectorConnector<VectorTransmitter>::getLocalMinMax(int &minX1, } // ////T-B-E-W - if (block.lock()->hasInterpolationFlagCF(DIR_P0P) && !block.lock()->hasInterpolationFlagCF(DIR_P00) && - !block.lock()->hasInterpolationFlagCF(DIR_00P)) { + if (block.lock()->hasInterpolationFlagCF(dP0P) && !block.lock()->hasInterpolationFlagCF(dP00) && + !block.lock()->hasInterpolationFlagCF(d00P)) { if (maxX1 == TmaxX1) maxX1 -= 2; if (maxX3 == TmaxX3) maxX3 -= 2; } - if (block.lock()->hasInterpolationFlagCF(DIR_M0M) && !block.lock()->hasInterpolationFlagCF(DIR_M00) && - !block.lock()->hasInterpolationFlagCF(DIR_00M)) { + if (block.lock()->hasInterpolationFlagCF(dM0M) && !block.lock()->hasInterpolationFlagCF(dM00) && + !block.lock()->hasInterpolationFlagCF(d00M)) { if (minX1 == TminX1) minX1 += 2; if (minX3 == TminX3) minX3 += 2; } - if (block.lock()->hasInterpolationFlagCF(DIR_P0M) && !block.lock()->hasInterpolationFlagCF(DIR_P00) && - !block.lock()->hasInterpolationFlagCF(DIR_00M)) { + if (block.lock()->hasInterpolationFlagCF(dP0M) && !block.lock()->hasInterpolationFlagCF(dP00) && + !block.lock()->hasInterpolationFlagCF(d00M)) { if (maxX1 == TmaxX1) maxX1 -= 2; if (minX3 == TminX3) minX3 += 2; } - if (block.lock()->hasInterpolationFlagCF(DIR_M0P) && !block.lock()->hasInterpolationFlagCF(DIR_M00) && - !block.lock()->hasInterpolationFlagCF(DIR_00P)) { + if (block.lock()->hasInterpolationFlagCF(dM0P) && !block.lock()->hasInterpolationFlagCF(dM00) && + !block.lock()->hasInterpolationFlagCF(d00P)) { if (minX1 == TminX1) minX1 += 2; if (maxX3 == TmaxX3) @@ -1730,29 +1730,29 @@ void CoarseToFineVectorConnector<VectorTransmitter>::getLocalMinMax(int &minX1, } ////T-B-N-S - if (block.lock()->hasInterpolationFlagCF(DIR_0PP) && !block.lock()->hasInterpolationFlagCF(DIR_0P0) && - !block.lock()->hasInterpolationFlagCF(DIR_00P)) { + if (block.lock()->hasInterpolationFlagCF(d0PP) && !block.lock()->hasInterpolationFlagCF(d0P0) && + !block.lock()->hasInterpolationFlagCF(d00P)) { if (maxX2 == TmaxX2) maxX2 -= 2; if (maxX3 == TmaxX3) maxX3 -= 2; } - if (block.lock()->hasInterpolationFlagCF(DIR_0MM) && !block.lock()->hasInterpolationFlagCF(DIR_0M0) && - !block.lock()->hasInterpolationFlagCF(DIR_00M)) { + if (block.lock()->hasInterpolationFlagCF(d0MM) && !block.lock()->hasInterpolationFlagCF(d0M0) && + !block.lock()->hasInterpolationFlagCF(d00M)) { if (minX2 == TminX2) minX2 += 2; if (minX3 == TminX3) minX3 += 2; } - if (block.lock()->hasInterpolationFlagCF(DIR_0PM) && !block.lock()->hasInterpolationFlagCF(DIR_0P0) && - !block.lock()->hasInterpolationFlagCF(DIR_00M)) { + if (block.lock()->hasInterpolationFlagCF(d0PM) && !block.lock()->hasInterpolationFlagCF(d0P0) && + !block.lock()->hasInterpolationFlagCF(d00M)) { if (maxX2 == TmaxX2) maxX2 -= 2; if (minX3 == TminX3) minX3 += 2; } - if (block.lock()->hasInterpolationFlagCF(DIR_0MP) && !block.lock()->hasInterpolationFlagCF(DIR_0M0) && - !block.lock()->hasInterpolationFlagCF(DIR_00P)) { + if (block.lock()->hasInterpolationFlagCF(d0MP) && !block.lock()->hasInterpolationFlagCF(d0M0) && + !block.lock()->hasInterpolationFlagCF(d00P)) { if (minX2 == TminX2) minX2 += 2; if (maxX3 == TmaxX3) @@ -1760,10 +1760,10 @@ void CoarseToFineVectorConnector<VectorTransmitter>::getLocalMinMax(int &minX1, } // if - // (block.lock()->hasInterpolationFlagCF(D3Q27System::DIR_PPP)&&!block.lock()->hasInterpolationFlagCF(D3Q27System::DIR_P0P)&&!block.lock()->hasInterpolationFlagCF(D3Q27System::DIR_0PP)&&!block.lock()->hasInterpolationFlagCF(D3Q27System::DIR_PP0)&&!block.lock()->hasInterpolationFlagCF(D3Q27System::DIR_00P)&&!block.lock()->hasInterpolationFlagCF(D3Q27System::DIR_0P0) - // && !block.lock()->hasInterpolationFlagCF(D3Q27System::DIR_P00)) if - // (!block.lock()->hasInterpolationFlagCF(D3Q27System::DIR_P0P)&&!block.lock()->hasInterpolationFlagCF(D3Q27System::DIR_00P)&& - // !block.lock()->hasInterpolationFlagCF(D3Q27System::DIR_P00)) + // (block.lock()->hasInterpolationFlagCF(D3Q27System::dPPP)&&!block.lock()->hasInterpolationFlagCF(D3Q27System::dP0P)&&!block.lock()->hasInterpolationFlagCF(D3Q27System::d0PP)&&!block.lock()->hasInterpolationFlagCF(D3Q27System::dPP0)&&!block.lock()->hasInterpolationFlagCF(D3Q27System::d00P)&&!block.lock()->hasInterpolationFlagCF(D3Q27System::d0P0) + // && !block.lock()->hasInterpolationFlagCF(D3Q27System::dP00)) if + // (!block.lock()->hasInterpolationFlagCF(D3Q27System::dP0P)&&!block.lock()->hasInterpolationFlagCF(D3Q27System::d00P)&& + // !block.lock()->hasInterpolationFlagCF(D3Q27System::dP00)) //{ // if (maxX1==TmaxX1) maxX1 -= 2; // if (maxX2==TmaxX2) maxX2 -= 2; @@ -1786,55 +1786,55 @@ void CoarseToFineVectorConnector<VectorTransmitter>::getLocalMinMax(int &minX1, int TmaxX2 = maxX2; int TmaxX3 = maxX3; - if (block.lock()->hasInterpolationFlagCF(DIR_P00)) { + if (block.lock()->hasInterpolationFlagCF(dP00)) { if (maxX1 == TmaxX1) maxX1 -= 2; } - if (block.lock()->hasInterpolationFlagCF(DIR_M00)) { + if (block.lock()->hasInterpolationFlagCF(dM00)) { if (minX1 == TminX1) minX1 += 2; } - if (block.lock()->hasInterpolationFlagCF(DIR_0P0)) { + if (block.lock()->hasInterpolationFlagCF(d0P0)) { if (maxX2 == TmaxX2) maxX2 -= 2; } - if (block.lock()->hasInterpolationFlagCF(DIR_0M0)) { + if (block.lock()->hasInterpolationFlagCF(d0M0)) { if (minX2 == TminX2) minX2 += 2; } - if (block.lock()->hasInterpolationFlagCF(DIR_00P)) { + if (block.lock()->hasInterpolationFlagCF(d00P)) { if (maxX3 == TmaxX3) maxX3 -= 2; } - if (block.lock()->hasInterpolationFlagCF(DIR_00M)) { + if (block.lock()->hasInterpolationFlagCF(d00M)) { if (minX3 == TminX3) minX3 += 2; } // E-W-N-S - if (block.lock()->hasInterpolationFlagCF(DIR_PP0) && !block.lock()->hasInterpolationFlagCF(DIR_0P0) && - !block.lock()->hasInterpolationFlagCF(DIR_P00)) { + if (block.lock()->hasInterpolationFlagCF(dPP0) && !block.lock()->hasInterpolationFlagCF(d0P0) && + !block.lock()->hasInterpolationFlagCF(dP00)) { if (maxX1 == TmaxX1) maxX1 -= 2; if (maxX2 == TmaxX2) maxX2 -= 2; } - if (block.lock()->hasInterpolationFlagCF(DIR_MM0) && !block.lock()->hasInterpolationFlagCF(DIR_M00) && - !block.lock()->hasInterpolationFlagCF(DIR_0M0)) { + if (block.lock()->hasInterpolationFlagCF(dMM0) && !block.lock()->hasInterpolationFlagCF(dM00) && + !block.lock()->hasInterpolationFlagCF(d0M0)) { if (minX1 == TminX1) minX1 += 2; if (minX2 == TminX2) minX2 += 2; } - if (block.lock()->hasInterpolationFlagCF(DIR_PM0) && !block.lock()->hasInterpolationFlagCF(DIR_P00) && - !block.lock()->hasInterpolationFlagCF(DIR_0M0)) { + if (block.lock()->hasInterpolationFlagCF(dPM0) && !block.lock()->hasInterpolationFlagCF(dP00) && + !block.lock()->hasInterpolationFlagCF(d0M0)) { if (maxX1 == TmaxX1) maxX1 -= 2; if (minX2 == TminX2) minX2 += 2; } - if (block.lock()->hasInterpolationFlagCF(DIR_MP0) && !block.lock()->hasInterpolationFlagCF(DIR_0P0) && - !block.lock()->hasInterpolationFlagCF(DIR_M00)) { + if (block.lock()->hasInterpolationFlagCF(dMP0) && !block.lock()->hasInterpolationFlagCF(d0P0) && + !block.lock()->hasInterpolationFlagCF(dM00)) { if (minX1 == TminX1) minX1 += 2; if (maxX2 == TmaxX2) @@ -1842,29 +1842,29 @@ void CoarseToFineVectorConnector<VectorTransmitter>::getLocalMinMax(int &minX1, } // ////T-B-E-W - if (block.lock()->hasInterpolationFlagCF(DIR_P0P) && !block.lock()->hasInterpolationFlagCF(DIR_P00) && - !block.lock()->hasInterpolationFlagCF(DIR_00P)) { + if (block.lock()->hasInterpolationFlagCF(dP0P) && !block.lock()->hasInterpolationFlagCF(dP00) && + !block.lock()->hasInterpolationFlagCF(d00P)) { if (maxX1 == TmaxX1) maxX1 -= 2; if (maxX3 == TmaxX3) maxX3 -= 2; } - if (block.lock()->hasInterpolationFlagCF(DIR_M0M) && !block.lock()->hasInterpolationFlagCF(DIR_M00) && - !block.lock()->hasInterpolationFlagCF(DIR_00M)) { + if (block.lock()->hasInterpolationFlagCF(dM0M) && !block.lock()->hasInterpolationFlagCF(dM00) && + !block.lock()->hasInterpolationFlagCF(d00M)) { if (minX1 == TminX1) minX1 += 2; if (minX3 == TminX3) minX3 += 2; } - if (block.lock()->hasInterpolationFlagCF(DIR_P0M) && !block.lock()->hasInterpolationFlagCF(DIR_P00) && - !block.lock()->hasInterpolationFlagCF(DIR_00M)) { + if (block.lock()->hasInterpolationFlagCF(dP0M) && !block.lock()->hasInterpolationFlagCF(dP00) && + !block.lock()->hasInterpolationFlagCF(d00M)) { if (maxX1 == TmaxX1) maxX1 -= 2; if (minX3 == TminX3) minX3 += 2; } - if (block.lock()->hasInterpolationFlagCF(DIR_M0P) && !block.lock()->hasInterpolationFlagCF(DIR_M00) && - !block.lock()->hasInterpolationFlagCF(DIR_00P)) { + if (block.lock()->hasInterpolationFlagCF(dM0P) && !block.lock()->hasInterpolationFlagCF(dM00) && + !block.lock()->hasInterpolationFlagCF(d00P)) { if (minX1 == TminX1) minX1 += 2; if (maxX3 == TmaxX3) @@ -1872,29 +1872,29 @@ void CoarseToFineVectorConnector<VectorTransmitter>::getLocalMinMax(int &minX1, } ////T-B-N-S - if (block.lock()->hasInterpolationFlagCF(DIR_0PP) && !block.lock()->hasInterpolationFlagCF(DIR_0P0) && - !block.lock()->hasInterpolationFlagCF(DIR_00P)) { + if (block.lock()->hasInterpolationFlagCF(d0PP) && !block.lock()->hasInterpolationFlagCF(d0P0) && + !block.lock()->hasInterpolationFlagCF(d00P)) { if (maxX2 == TmaxX2) maxX2 -= 2; if (maxX3 == TmaxX3) maxX3 -= 2; } - if (block.lock()->hasInterpolationFlagCF(DIR_0MM) && !block.lock()->hasInterpolationFlagCF(DIR_0M0) && - !block.lock()->hasInterpolationFlagCF(DIR_00M)) { + if (block.lock()->hasInterpolationFlagCF(d0MM) && !block.lock()->hasInterpolationFlagCF(d0M0) && + !block.lock()->hasInterpolationFlagCF(d00M)) { if (minX2 == TminX2) minX2 += 2; if (minX3 == TminX3) minX3 += 2; } - if (block.lock()->hasInterpolationFlagCF(DIR_0PM) && !block.lock()->hasInterpolationFlagCF(DIR_0P0) && - !block.lock()->hasInterpolationFlagCF(DIR_00M)) { + if (block.lock()->hasInterpolationFlagCF(d0PM) && !block.lock()->hasInterpolationFlagCF(d0P0) && + !block.lock()->hasInterpolationFlagCF(d00M)) { if (maxX2 == TmaxX2) maxX2 -= 2; if (minX3 == TminX3) minX3 += 2; } - if (block.lock()->hasInterpolationFlagCF(DIR_0MP) && !block.lock()->hasInterpolationFlagCF(DIR_0M0) && - !block.lock()->hasInterpolationFlagCF(DIR_00P)) { + if (block.lock()->hasInterpolationFlagCF(d0MP) && !block.lock()->hasInterpolationFlagCF(d0M0) && + !block.lock()->hasInterpolationFlagCF(d00P)) { if (minX2 == TminX2) minX2 += 2; if (maxX3 == TmaxX3) @@ -1902,8 +1902,8 @@ void CoarseToFineVectorConnector<VectorTransmitter>::getLocalMinMax(int &minX1, } // if - // (block.lock()->hasInterpolationFlagCF(D3Q27System::DIR_PPP)&&!block.lock()->hasInterpolationFlagCF(D3Q27System::DIR_P0P)&&!block.lock()->hasInterpolationFlagCF(D3Q27System::DIR_0PP)&&!block.lock()->hasInterpolationFlagCF(D3Q27System::DIR_PP0)&&!block.lock()->hasInterpolationFlagCF(D3Q27System::DIR_00P)&&!block.lock()->hasInterpolationFlagCF(D3Q27System::DIR_0P0) - // && !block.lock()->hasInterpolationFlagCF(D3Q27System::DIR_P00)) + // (block.lock()->hasInterpolationFlagCF(D3Q27System::dPPP)&&!block.lock()->hasInterpolationFlagCF(D3Q27System::dP0P)&&!block.lock()->hasInterpolationFlagCF(D3Q27System::d0PP)&&!block.lock()->hasInterpolationFlagCF(D3Q27System::dPP0)&&!block.lock()->hasInterpolationFlagCF(D3Q27System::d00P)&&!block.lock()->hasInterpolationFlagCF(D3Q27System::d0P0) + // && !block.lock()->hasInterpolationFlagCF(D3Q27System::dP00)) //{ // if (maxX1==TmaxX1) maxX1 -= 2; // if (maxX2==TmaxX2) maxX2 -= 2; @@ -1937,7 +1937,7 @@ void CoarseToFineVectorConnector<VectorTransmitter>::findCFnodes() using namespace D3Q27System; using namespace vf::lbm::dir; - if (block.lock()->hasInterpolationFlagCF(DIR_M00)) { + if (block.lock()->hasInterpolationFlagCF(dM00)) { lMinX1 = 1; lMaxX1 = lMinX1 + 1; @@ -1957,8 +1957,8 @@ void CoarseToFineVectorConnector<VectorTransmitter>::findCFnodes() getLocalMinMax(minX3, maxX3, false, lMinX3, lMaxX3, false); findCFnodes(fFrom, lMinX1, lMinX2, lMinX3, lMaxX1, lMaxX2, lMaxX3, dataOdOd, indexOdOd); } - if (block.lock()->hasInterpolationFlagCF(DIR_0PP) && !block.lock()->hasInterpolationFlagCF(DIR_0P0) && - !block.lock()->hasInterpolationFlagCF(DIR_00P)) { + if (block.lock()->hasInterpolationFlagCF(d0PP) && !block.lock()->hasInterpolationFlagCF(d0P0) && + !block.lock()->hasInterpolationFlagCF(d00P)) { lMinX2 = maxX2 - 3; lMaxX2 = lMinX2 + 1; lMinX3 = maxX3 - 3; diff --git a/src/cpu/VirtualFluidsCore/Connectors/FineToCoarseVectorConnector.cpp b/src/cpu/core/Connectors/FineToCoarseVectorConnector.cpp similarity index 100% rename from src/cpu/VirtualFluidsCore/Connectors/FineToCoarseVectorConnector.cpp rename to src/cpu/core/Connectors/FineToCoarseVectorConnector.cpp diff --git a/src/cpu/VirtualFluidsCore/Connectors/FineToCoarseVectorConnector.h b/src/cpu/core/Connectors/FineToCoarseVectorConnector.h similarity index 85% rename from src/cpu/VirtualFluidsCore/Connectors/FineToCoarseVectorConnector.h rename to src/cpu/core/Connectors/FineToCoarseVectorConnector.h index 94222fee2940dc13411b4c7520ac64a5ab942478..7b92bac07e2cd606fcf4f5531c6992e442bf4ee1 100644 --- a/src/cpu/VirtualFluidsCore/Connectors/FineToCoarseVectorConnector.h +++ b/src/cpu/core/Connectors/FineToCoarseVectorConnector.h @@ -147,16 +147,16 @@ FineToCoarseVectorConnector<VectorTransmitter>::FineToCoarseVectorConnector(SPtr { using namespace vf::lbm::dir; - if (!(sendDir == DIR_P00 || sendDir == DIR_M00 || sendDir == DIR_0P0 || - sendDir == DIR_0M0 || sendDir == DIR_00P || sendDir == DIR_00M || - sendDir == DIR_PP0 || sendDir == DIR_MM0 || sendDir == DIR_PM0 || - sendDir == DIR_MP0 || sendDir == DIR_P0P || sendDir == DIR_M0M || - sendDir == DIR_P0M || sendDir == DIR_M0P || sendDir == DIR_0PP || - sendDir == DIR_0MM || sendDir == DIR_0PM || sendDir == DIR_0MP + if (!(sendDir == dP00 || sendDir == dM00 || sendDir == d0P0 || + sendDir == d0M0 || sendDir == d00P || sendDir == d00M || + sendDir == dPP0 || sendDir == dMM0 || sendDir == dPM0 || + sendDir == dMP0 || sendDir == dP0P || sendDir == dM0M || + sendDir == dP0M || sendDir == dM0P || sendDir == d0PP || + sendDir == d0MM || sendDir == d0PM || sendDir == d0MP - || sendDir == DIR_PPP || sendDir == DIR_MPP || sendDir == DIR_PMP || - sendDir == DIR_MMP || sendDir == DIR_PPM || sendDir == DIR_MPM || - sendDir == DIR_PMM || sendDir == DIR_MMM + || sendDir == dPPP || sendDir == dMPP || sendDir == dPMP || + sendDir == dMMP || sendDir == dPPM || sendDir == dMPM || + sendDir == dPMM || sendDir == dMMM )) { throw UbException(UB_EXARGS, "invalid constructor for this direction"); @@ -240,44 +240,44 @@ void FineToCoarseVectorConnector<VectorTransmitter>::init() int iCellSize = 1; // size of interpolation cell switch (this->sendDir) { - case DIR_P00: - case DIR_M00: + case dP00: + case dM00: sendSize = (bMaxX2 - 1) / 2 * (bMaxX3 - 1) / 2 * sendDataPerNode * iCellSize; break; - case DIR_0P0: - case DIR_0M0: + case d0P0: + case d0M0: sendSize = (bMaxX1 - 1) / 2 * (bMaxX3 - 1) / 2 * sendDataPerNode * iCellSize; break; - case DIR_00P: - case DIR_00M: + case d00P: + case d00M: sendSize = (bMaxX1 - 1) / 2 * (bMaxX2 - 1) / 2 * sendDataPerNode * iCellSize; break; - case DIR_PP0: - case DIR_MM0: - case DIR_PM0: - case DIR_MP0: + case dPP0: + case dMM0: + case dPM0: + case dMP0: sendSize = (3 * bMaxX3 - 3) * sendDataPerNode * iCellSize; break; // buffer overhead, should be (3*bMaxX3-6) for even bMax3 - case DIR_P0P: - case DIR_M0M: - case DIR_P0M: - case DIR_M0P: + case dP0P: + case dM0M: + case dP0M: + case dM0P: sendSize = (3 * bMaxX2 - 3) * sendDataPerNode * iCellSize; break; - case DIR_0PP: - case DIR_0MM: - case DIR_0PM: - case DIR_0MP: + case d0PP: + case d0MM: + case d0PM: + case d0MP: sendSize = (3 * bMaxX1 - 3) * sendDataPerNode * iCellSize; break; - case DIR_PPP: - case DIR_MPP: - case DIR_PMP: - case DIR_MMP: - case DIR_PPM: - case DIR_MPM: - case DIR_PMM: - case DIR_MMM: + case dPPP: + case dMPP: + case dPMP: + case dMMP: + case dPPM: + case dMPM: + case dPMM: + case dMMM: sendSize = 3 * (3 * bMaxX1 - 3) * sendDataPerNode * iCellSize; break; default: @@ -327,42 +327,42 @@ void FineToCoarseVectorConnector<VectorTransmitter>::fillSendVectors() ////////////// switch (sendDir) { - case DIR_P00: + case dP00: getLocalMinMax(lMinX1, lMinX2, lMinX3, lMaxX1, lMaxX2, lMaxX3); getLocalMins(lMinX1, lMinX2, lMinX3, oMinX1, oMinX2, oMinX3); lMinX1 = maxX1 - 7; lMaxX1 = lMinX1 + 1; fillSendVector(fFrom, lMinX1, lMinX2, lMinX3, lMaxX1, lMaxX2, lMaxX3, data, index); break; - case DIR_M00: + case dM00: getLocalMinMax(lMinX1, lMinX2, lMinX3, lMaxX1, lMaxX2, lMaxX3); getLocalMins(lMinX1, lMinX2, lMinX3, oMinX1, oMinX2, oMinX3); lMinX1 = 5; lMaxX1 = lMinX1 + 1; fillSendVector(fFrom, lMinX1, lMinX2, lMinX3, lMaxX1, lMaxX2, lMaxX3, data, index); break; - case DIR_0P0: + case d0P0: getLocalMinMax(lMinX1, lMinX2, lMinX3, lMaxX1, lMaxX2, lMaxX3); getLocalMins(lMinX1, lMinX2, lMinX3, oMinX1, oMinX2, oMinX3); lMinX2 = maxX2 - 7; lMaxX2 = lMinX2 + 1; fillSendVector(fFrom, lMinX1, lMinX2, lMinX3, lMaxX1, lMaxX2, lMaxX3, data, index); break; - case DIR_0M0: + case d0M0: getLocalMinMax(lMinX1, lMinX2, lMinX3, lMaxX1, lMaxX2, lMaxX3); getLocalMins(lMinX1, lMinX2, lMinX3, oMinX1, oMinX2, oMinX3); lMinX2 = 5; lMaxX2 = lMinX2 + 1; fillSendVector(fFrom, lMinX1, lMinX2, lMinX3, lMaxX1, lMaxX2, lMaxX3, data, index); break; - case DIR_00P: + case d00P: getLocalMinMax(lMinX1, lMinX2, lMinX3, lMaxX1, lMaxX2, lMaxX3); getLocalMins(lMinX1, lMinX2, lMinX3, oMinX1, oMinX2, oMinX3); lMinX3 = maxX3 - 7; lMaxX3 = lMinX3 + 1; fillSendVector(fFrom, lMinX1, lMinX2, lMinX3, lMaxX1, lMaxX2, lMaxX3, data, index); break; - case DIR_00M: + case d00M: getLocalMinMax(lMinX1, lMinX2, lMinX3, lMaxX1, lMaxX2, lMaxX3); getLocalMins(lMinX1, lMinX2, lMinX3, oMinX1, oMinX2, oMinX3); lMinX3 = 5; @@ -371,7 +371,7 @@ void FineToCoarseVectorConnector<VectorTransmitter>::fillSendVectors() break; // ////N-S-E-W - case DIR_PP0: + case dPP0: getLocalMinMax(lMinX1, lMinX2, lMinX3, lMaxX1, lMaxX2, lMaxX3); getLocalMins(lMinX1, lMinX2, lMinX3, oMinX1, oMinX2, oMinX3); lMinX1 = maxX1 - 7; @@ -386,7 +386,7 @@ void FineToCoarseVectorConnector<VectorTransmitter>::fillSendVectors() lMaxX2 = lMinX2 + 5; fillSendVector(fFrom, lMinX1, lMinX2, lMinX3, lMaxX1, lMaxX2, lMaxX3, data, index); break; - case DIR_MM0: + case dMM0: getLocalMinMax(lMinX1, lMinX2, lMinX3, lMaxX1, lMaxX2, lMaxX3); getLocalMins(lMinX1, lMinX2, lMinX3, oMinX1, oMinX2, oMinX3); @@ -403,7 +403,7 @@ void FineToCoarseVectorConnector<VectorTransmitter>::fillSendVectors() fillSendVector(fFrom, lMinX1, lMinX2, lMinX3, lMaxX1, lMaxX2, lMaxX3, data, index); break; - case DIR_PM0: + case dPM0: getLocalMinMax(lMinX1, lMinX2, lMinX3, lMaxX1, lMaxX2, lMaxX3); getLocalMins(lMinX1, lMinX2, lMinX3, oMinX1, oMinX2, oMinX3); lMinX1 = maxX1 - 7; @@ -420,7 +420,7 @@ void FineToCoarseVectorConnector<VectorTransmitter>::fillSendVectors() break; - case DIR_MP0: + case dMP0: getLocalMinMax(lMinX1, lMinX2, lMinX3, lMaxX1, lMaxX2, lMaxX3); getLocalMins(lMinX1, lMinX2, lMinX3, oMinX1, oMinX2, oMinX3); lMinX1 = 1; @@ -436,7 +436,7 @@ void FineToCoarseVectorConnector<VectorTransmitter>::fillSendVectors() fillSendVector(fFrom, lMinX1, lMinX2, lMinX3, lMaxX1, lMaxX2, lMaxX3, data, index); break; //////T-B-E-W - case DIR_P0P: + case dP0P: getLocalMinMax(lMinX1, lMinX2, lMinX3, lMaxX1, lMaxX2, lMaxX3); getLocalMins(lMinX1, lMinX2, lMinX3, oMinX1, oMinX2, oMinX3); lMinX1 = maxX1 - 7; @@ -452,7 +452,7 @@ void FineToCoarseVectorConnector<VectorTransmitter>::fillSendVectors() fillSendVector(fFrom, lMinX1, lMinX2, lMinX3, lMaxX1, lMaxX2, lMaxX3, data, index); break; - case DIR_M0M: + case dM0M: getLocalMinMax(lMinX1, lMinX2, lMinX3, lMaxX1, lMaxX2, lMaxX3); getLocalMins(lMinX1, lMinX2, lMinX3, oMinX1, oMinX2, oMinX3); lMinX1 = 1; @@ -468,7 +468,7 @@ void FineToCoarseVectorConnector<VectorTransmitter>::fillSendVectors() fillSendVector(fFrom, lMinX1, lMinX2, lMinX3, lMaxX1, lMaxX2, lMaxX3, data, index); break; - case DIR_P0M: + case dP0M: getLocalMinMax(lMinX1, lMinX2, lMinX3, lMaxX1, lMaxX2, lMaxX3); getLocalMins(lMinX1, lMinX2, lMinX3, oMinX1, oMinX2, oMinX3); lMinX1 = maxX1 - 7; @@ -484,7 +484,7 @@ void FineToCoarseVectorConnector<VectorTransmitter>::fillSendVectors() fillSendVector(fFrom, lMinX1, lMinX2, lMinX3, lMaxX1, lMaxX2, lMaxX3, data, index); break; - case DIR_M0P: + case dM0P: getLocalMinMax(lMinX1, lMinX2, lMinX3, lMaxX1, lMaxX2, lMaxX3); getLocalMins(lMinX1, lMinX2, lMinX3, oMinX1, oMinX2, oMinX3); lMinX1 = 1; @@ -501,7 +501,7 @@ void FineToCoarseVectorConnector<VectorTransmitter>::fillSendVectors() break; ///////////////T-B-N-S // - case DIR_0PP: + case d0PP: getLocalMinMax(lMinX1, lMinX2, lMinX3, lMaxX1, lMaxX2, lMaxX3); getLocalMins(lMinX1, lMinX2, lMinX3, oMinX1, oMinX2, oMinX3); lMinX2 = maxX2 - 7; @@ -517,7 +517,7 @@ void FineToCoarseVectorConnector<VectorTransmitter>::fillSendVectors() fillSendVector(fFrom, lMinX1, lMinX2, lMinX3, lMaxX1, lMaxX2, lMaxX3, data, index); break; - case DIR_0MM: + case d0MM: getLocalMinMax(lMinX1, lMinX2, lMinX3, lMaxX1, lMaxX2, lMaxX3); getLocalMins(lMinX1, lMinX2, lMinX3, oMinX1, oMinX2, oMinX3); lMinX2 = 1; @@ -533,7 +533,7 @@ void FineToCoarseVectorConnector<VectorTransmitter>::fillSendVectors() fillSendVector(fFrom, lMinX1, lMinX2, lMinX3, lMaxX1, lMaxX2, lMaxX3, data, index); break; - case DIR_0PM: + case d0PM: getLocalMinMax(lMinX1, lMinX2, lMinX3, lMaxX1, lMaxX2, lMaxX3); getLocalMins(lMinX1, lMinX2, lMinX3, oMinX1, oMinX2, oMinX3); lMinX2 = maxX2 - 7; @@ -549,7 +549,7 @@ void FineToCoarseVectorConnector<VectorTransmitter>::fillSendVectors() fillSendVector(fFrom, lMinX1, lMinX2, lMinX3, lMaxX1, lMaxX2, lMaxX3, data, index); break; - case DIR_0MP: + case d0MP: getLocalMinMax(lMinX1, lMinX2, lMinX3, lMaxX1, lMaxX2, lMaxX3); getLocalMins(lMinX1, lMinX2, lMinX3, oMinX1, oMinX2, oMinX3); lMinX2 = 1; @@ -566,7 +566,7 @@ void FineToCoarseVectorConnector<VectorTransmitter>::fillSendVectors() break; // TNE - case DIR_PPP: + case dPPP: lMinX1 = maxX1 - 7; lMaxX1 = maxX1 - 6; lMinX2 = maxX2 - 7; @@ -593,7 +593,7 @@ void FineToCoarseVectorConnector<VectorTransmitter>::fillSendVectors() break; // TNW - case DIR_MPP: + case dMPP: lMinX1 = 5; lMaxX1 = 6; lMinX2 = maxX2 - 7; @@ -622,7 +622,7 @@ void FineToCoarseVectorConnector<VectorTransmitter>::fillSendVectors() break; // TSE - case DIR_PMP: + case dPMP: lMinX1 = maxX1 - 7; lMaxX1 = maxX1 - 6; lMinX2 = 1; @@ -649,7 +649,7 @@ void FineToCoarseVectorConnector<VectorTransmitter>::fillSendVectors() break; // TSW - case DIR_MMP: + case dMMP: lMinX1 = 5; lMaxX1 = 6; lMinX2 = 1; @@ -676,7 +676,7 @@ void FineToCoarseVectorConnector<VectorTransmitter>::fillSendVectors() break; // BNE - case DIR_PPM: + case dPPM: lMinX1 = maxX1 - 7; lMaxX1 = maxX1 - 6; lMinX2 = maxX2 - 7; @@ -703,7 +703,7 @@ void FineToCoarseVectorConnector<VectorTransmitter>::fillSendVectors() break; // BNW - case DIR_MPM: + case dMPM: lMinX1 = 5; lMaxX1 = 6; lMinX2 = maxX2 - 7; @@ -731,7 +731,7 @@ void FineToCoarseVectorConnector<VectorTransmitter>::fillSendVectors() break; // BSE - case DIR_PMM: + case dPMM: lMinX1 = maxX1 - 7; lMaxX1 = maxX1 - 6; lMinX2 = 1; @@ -759,7 +759,7 @@ void FineToCoarseVectorConnector<VectorTransmitter>::fillSendVectors() break; // BSW - case DIR_MMM: + case dMMM: lMinX1 = 5; lMaxX1 = 6; lMinX2 = 1; @@ -878,42 +878,42 @@ void FineToCoarseVectorConnector<VectorTransmitter>::distributeReceiveVectors() lMaxX3 = maxX3 - 1; switch (sendDir) { - case DIR_P00: + case dP00: lMinX1 = maxX1 - 4; lMaxX1 = lMinX1 + 1; getLocalMinMaxCF(maxX2, lMinX2, lMaxX2); getLocalMinMaxCF(maxX3, lMinX3, lMaxX3); distributeReceiveVector(fTo, lMinX1, lMinX2, lMinX3, lMaxX1, lMaxX2, lMaxX3, data, index); break; - case DIR_M00: + case dM00: lMinX1 = 2; lMaxX1 = lMinX1 + 1; getLocalMinMaxCF(maxX2, lMinX2, lMaxX2); getLocalMinMaxCF(maxX3, lMinX3, lMaxX3); distributeReceiveVector(fTo, lMinX1, lMinX2, lMinX3, lMaxX1, lMaxX2, lMaxX3, data, index); break; - case DIR_0P0: + case d0P0: lMinX2 = maxX2 - 4; lMaxX2 = lMinX2 + 1; getLocalMinMaxCF(maxX1, lMinX1, lMaxX1); getLocalMinMaxCF(maxX3, lMinX3, lMaxX3); distributeReceiveVector(fTo, lMinX1, lMinX2, lMinX3, lMaxX1, lMaxX2, lMaxX3, data, index); break; - case DIR_0M0: + case d0M0: lMinX2 = 2; lMaxX2 = lMinX2 + 1; getLocalMinMaxCF(maxX1, lMinX1, lMaxX1); getLocalMinMaxCF(maxX3, lMinX3, lMaxX3); distributeReceiveVector(fTo, lMinX1, lMinX2, lMinX3, lMaxX1, lMaxX2, lMaxX3, data, index); break; - case DIR_00P: + case d00P: lMinX3 = maxX3 - 4; lMaxX3 = lMinX3 + 1; getLocalMinMaxCF(maxX1, lMinX1, lMaxX1); getLocalMinMaxCF(maxX2, lMinX2, lMaxX2); distributeReceiveVector(fTo, lMinX1, lMinX2, lMinX3, lMaxX1, lMaxX2, lMaxX3, data, index); break; - case DIR_00M: + case d00M: lMinX3 = 2; lMaxX3 = lMinX3 + 1; getLocalMinMaxCF(maxX1, lMinX1, lMaxX1); @@ -922,7 +922,7 @@ void FineToCoarseVectorConnector<VectorTransmitter>::distributeReceiveVectors() break; /////E-W-N-S - case DIR_PP0: + case dPP0: lMinX1 = maxX1 - 4; lMaxX1 = lMinX1 + 3; lMinX2 = maxX2 - 4; @@ -931,7 +931,7 @@ void FineToCoarseVectorConnector<VectorTransmitter>::distributeReceiveVectors() distributeReceiveVector(fTo, lMinX1, lMinX2, lMinX3, lMaxX1, lMaxX2, lMaxX3, data, index); break; - case DIR_MM0: + case dMM0: lMinX1 = 0; lMaxX1 = lMinX1 + 3; lMinX2 = 0; @@ -940,7 +940,7 @@ void FineToCoarseVectorConnector<VectorTransmitter>::distributeReceiveVectors() distributeReceiveVector(fTo, lMinX1, lMinX2, lMinX3, lMaxX1, lMaxX2, lMaxX3, data, index); break; - case DIR_PM0: + case dPM0: lMinX1 = maxX1 - 4; lMaxX1 = lMinX1 + 3; lMinX2 = 0; @@ -949,7 +949,7 @@ void FineToCoarseVectorConnector<VectorTransmitter>::distributeReceiveVectors() distributeReceiveVector(fTo, lMinX1, lMinX2, lMinX3, lMaxX1, lMaxX2, lMaxX3, data, index); break; - case DIR_MP0: + case dMP0: lMinX1 = 0; lMaxX1 = lMinX1 + 3; lMinX2 = maxX2 - 4; @@ -959,7 +959,7 @@ void FineToCoarseVectorConnector<VectorTransmitter>::distributeReceiveVectors() break; // // /////T-B-E-W - case DIR_P0P: + case dP0P: lMinX1 = maxX1 - 4; lMaxX1 = lMinX1 + 3; lMinX3 = maxX3 - 4; @@ -968,7 +968,7 @@ void FineToCoarseVectorConnector<VectorTransmitter>::distributeReceiveVectors() distributeReceiveVector(fTo, lMinX1, lMinX2, lMinX3, lMaxX1, lMaxX2, lMaxX3, data, index); break; - case DIR_M0M: + case dM0M: lMinX1 = 0; lMaxX1 = lMinX1 + 3; lMinX3 = 0; @@ -977,7 +977,7 @@ void FineToCoarseVectorConnector<VectorTransmitter>::distributeReceiveVectors() distributeReceiveVector(fTo, lMinX1, lMinX2, lMinX3, lMaxX1, lMaxX2, lMaxX3, data, index); break; - case DIR_P0M: + case dP0M: lMinX1 = maxX1 - 4; lMaxX1 = lMinX1 + 3; lMinX3 = 0; @@ -986,7 +986,7 @@ void FineToCoarseVectorConnector<VectorTransmitter>::distributeReceiveVectors() distributeReceiveVector(fTo, lMinX1, lMinX2, lMinX3, lMaxX1, lMaxX2, lMaxX3, data, index); break; - case DIR_M0P: + case dM0P: lMinX1 = 0; lMaxX1 = lMinX1 + 3; lMinX3 = maxX3 - 4; @@ -997,7 +997,7 @@ void FineToCoarseVectorConnector<VectorTransmitter>::distributeReceiveVectors() // ////////////////T-B-N-S // - case DIR_0PP: + case d0PP: lMinX2 = maxX2 - 4; lMaxX2 = lMinX2 + 3; lMinX3 = maxX3 - 4; @@ -1006,7 +1006,7 @@ void FineToCoarseVectorConnector<VectorTransmitter>::distributeReceiveVectors() distributeReceiveVector(fTo, lMinX1, lMinX2, lMinX3, lMaxX1, lMaxX2, lMaxX3, data, index); break; - case DIR_0MM: + case d0MM: lMinX2 = 0; lMaxX2 = lMinX2 + 3; lMinX3 = 0; @@ -1015,7 +1015,7 @@ void FineToCoarseVectorConnector<VectorTransmitter>::distributeReceiveVectors() distributeReceiveVector(fTo, lMinX1, lMinX2, lMinX3, lMaxX1, lMaxX2, lMaxX3, data, index); break; - case DIR_0PM: + case d0PM: lMinX2 = maxX2 - 4; lMaxX2 = lMinX2 + 3; lMinX3 = 0; @@ -1024,7 +1024,7 @@ void FineToCoarseVectorConnector<VectorTransmitter>::distributeReceiveVectors() distributeReceiveVector(fTo, lMinX1, lMinX2, lMinX3, lMaxX1, lMaxX2, lMaxX3, data, index); break; - case DIR_0MP: + case d0MP: lMinX2 = 0; lMaxX2 = lMinX2 + 3; lMinX3 = maxX3 - 4; @@ -1034,7 +1034,7 @@ void FineToCoarseVectorConnector<VectorTransmitter>::distributeReceiveVectors() break; // //TNE - case DIR_PPP: + case dPPP: lMinX1 = maxX1 - 4; lMaxX1 = maxX1 - 1; lMinX2 = maxX2 - 4; @@ -1044,7 +1044,7 @@ void FineToCoarseVectorConnector<VectorTransmitter>::distributeReceiveVectors() distributeReceiveVector(fTo, lMinX1, lMinX2, lMinX3, lMaxX1, lMaxX2, lMaxX3, data, index); break; // TNW - case DIR_MPP: + case dMPP: lMinX1 = 0; lMaxX1 = 3; lMinX2 = maxX2 - 4; @@ -1054,7 +1054,7 @@ void FineToCoarseVectorConnector<VectorTransmitter>::distributeReceiveVectors() distributeReceiveVector(fTo, lMinX1, lMinX2, lMinX3, lMaxX1, lMaxX2, lMaxX3, data, index); break; // TSE - case DIR_PMP: + case dPMP: lMinX1 = maxX1 - 4; lMaxX1 = maxX1 - 1; lMinX2 = 0; @@ -1064,7 +1064,7 @@ void FineToCoarseVectorConnector<VectorTransmitter>::distributeReceiveVectors() distributeReceiveVector(fTo, lMinX1, lMinX2, lMinX3, lMaxX1, lMaxX2, lMaxX3, data, index); break; // TSW - case DIR_MMP: + case dMMP: lMinX1 = 0; lMaxX1 = 3; lMinX2 = 0; @@ -1074,7 +1074,7 @@ void FineToCoarseVectorConnector<VectorTransmitter>::distributeReceiveVectors() distributeReceiveVector(fTo, lMinX1, lMinX2, lMinX3, lMaxX1, lMaxX2, lMaxX3, data, index); break; // BNE - case DIR_PPM: + case dPPM: lMinX1 = maxX1 - 4; lMaxX1 = maxX1 - 1; lMinX2 = maxX2 - 4; @@ -1084,7 +1084,7 @@ void FineToCoarseVectorConnector<VectorTransmitter>::distributeReceiveVectors() distributeReceiveVector(fTo, lMinX1, lMinX2, lMinX3, lMaxX1, lMaxX2, lMaxX3, data, index); break; // BNW - case DIR_MPM: + case dMPM: lMinX1 = 0; lMaxX1 = 3; lMinX2 = maxX2 - 4; @@ -1094,7 +1094,7 @@ void FineToCoarseVectorConnector<VectorTransmitter>::distributeReceiveVectors() distributeReceiveVector(fTo, lMinX1, lMinX2, lMinX3, lMaxX1, lMaxX2, lMaxX3, data, index); break; // BSE - case DIR_PMM: + case dPMM: lMinX1 = maxX1 - 4; lMaxX1 = maxX1 - 1; lMinX2 = 0; @@ -1104,7 +1104,7 @@ void FineToCoarseVectorConnector<VectorTransmitter>::distributeReceiveVectors() distributeReceiveVector(fTo, lMinX1, lMinX2, lMinX3, lMaxX1, lMaxX2, lMaxX3, data, index); break; // BSW - case DIR_MMM: + case dMMM: lMinX1 = 0; lMaxX1 = 3; lMinX2 = 0; @@ -1174,56 +1174,56 @@ void FineToCoarseVectorConnector<VectorTransmitter>::getLocalMinMax(int &minX1, int TmaxX2 = maxX2; int TmaxX3 = maxX3; - if (block.lock()->hasInterpolationFlagFC(DIR_P00)) { + if (block.lock()->hasInterpolationFlagFC(dP00)) { if (maxX1 == TmaxX1) maxX1 -= 3; } - if (block.lock()->hasInterpolationFlagFC(DIR_M00)) { + if (block.lock()->hasInterpolationFlagFC(dM00)) { if (minX1 == TminX1) minX1 += 4; } - if (block.lock()->hasInterpolationFlagFC(DIR_0P0)) { + if (block.lock()->hasInterpolationFlagFC(d0P0)) { if (maxX2 == TmaxX2) maxX2 -= 3; } - if (block.lock()->hasInterpolationFlagFC(DIR_0M0)) { + if (block.lock()->hasInterpolationFlagFC(d0M0)) { if (minX2 == TminX2) minX2 += 4; } - if (block.lock()->hasInterpolationFlagFC(DIR_00P)) { + if (block.lock()->hasInterpolationFlagFC(d00P)) { if (maxX3 == TmaxX3) maxX3 -= 3; } - if (block.lock()->hasInterpolationFlagFC(DIR_00M)) { + if (block.lock()->hasInterpolationFlagFC(d00M)) { if (minX3 == TminX3) minX3 += 4; } //////////// /////E-W-N-S - if (block.lock()->hasInterpolationFlagFC(DIR_PP0) && !block.lock()->hasInterpolationFlagFC(DIR_0P0) && - !block.lock()->hasInterpolationFlagFC(DIR_P00)) { + if (block.lock()->hasInterpolationFlagFC(dPP0) && !block.lock()->hasInterpolationFlagFC(d0P0) && + !block.lock()->hasInterpolationFlagFC(dP00)) { if (maxX1 == TmaxX1) maxX1 -= 3; if (maxX2 == TmaxX2) maxX2 -= 3; } - if (block.lock()->hasInterpolationFlagFC(DIR_MM0) && !block.lock()->hasInterpolationFlagFC(DIR_M00) && - !block.lock()->hasInterpolationFlagFC(DIR_0M0)) { + if (block.lock()->hasInterpolationFlagFC(dMM0) && !block.lock()->hasInterpolationFlagFC(dM00) && + !block.lock()->hasInterpolationFlagFC(d0M0)) { if (minX1 == TminX1) minX1 += 4; if (minX2 == TminX2) minX2 += 4; } - if (block.lock()->hasInterpolationFlagFC(DIR_PM0) && !block.lock()->hasInterpolationFlagFC(DIR_P00) && - !block.lock()->hasInterpolationFlagFC(DIR_0M0)) { + if (block.lock()->hasInterpolationFlagFC(dPM0) && !block.lock()->hasInterpolationFlagFC(dP00) && + !block.lock()->hasInterpolationFlagFC(d0M0)) { if (maxX1 == TmaxX1) maxX1 -= 3; if (minX2 == TminX2) minX2 += 4; } - if (block.lock()->hasInterpolationFlagFC(DIR_MP0) && !block.lock()->hasInterpolationFlagFC(DIR_0P0) && - !block.lock()->hasInterpolationFlagFC(DIR_M00)) { + if (block.lock()->hasInterpolationFlagFC(dMP0) && !block.lock()->hasInterpolationFlagFC(d0P0) && + !block.lock()->hasInterpolationFlagFC(dM00)) { if (minX1 == TminX1) minX1 += 4; if (maxX2 == TmaxX2) @@ -1231,29 +1231,29 @@ void FineToCoarseVectorConnector<VectorTransmitter>::getLocalMinMax(int &minX1, } //////T-B-E-W - if (block.lock()->hasInterpolationFlagFC(DIR_P0P) && !block.lock()->hasInterpolationFlagFC(DIR_P00) && - !block.lock()->hasInterpolationFlagFC(DIR_00P)) { + if (block.lock()->hasInterpolationFlagFC(dP0P) && !block.lock()->hasInterpolationFlagFC(dP00) && + !block.lock()->hasInterpolationFlagFC(d00P)) { if (maxX1 == TmaxX1) maxX1 -= 3; if (maxX3 == TmaxX3) maxX3 -= 3; } - if (block.lock()->hasInterpolationFlagFC(DIR_M0M) && !block.lock()->hasInterpolationFlagFC(DIR_M00) && - !block.lock()->hasInterpolationFlagFC(DIR_00M)) { + if (block.lock()->hasInterpolationFlagFC(dM0M) && !block.lock()->hasInterpolationFlagFC(dM00) && + !block.lock()->hasInterpolationFlagFC(d00M)) { if (minX1 == TminX1) minX1 += 4; if (minX3 == TminX3) minX3 += 4; } - if (block.lock()->hasInterpolationFlagFC(DIR_P0M) && !block.lock()->hasInterpolationFlagFC(DIR_P00) && - !block.lock()->hasInterpolationFlagFC(DIR_00M)) { + if (block.lock()->hasInterpolationFlagFC(dP0M) && !block.lock()->hasInterpolationFlagFC(dP00) && + !block.lock()->hasInterpolationFlagFC(d00M)) { if (maxX1 == TmaxX1) maxX1 -= 3; if (minX3 == TminX3) minX3 += 4; } - if (block.lock()->hasInterpolationFlagFC(DIR_M0P) && !block.lock()->hasInterpolationFlagFC(DIR_M00) && - !block.lock()->hasInterpolationFlagFC(DIR_00P)) { + if (block.lock()->hasInterpolationFlagFC(dM0P) && !block.lock()->hasInterpolationFlagFC(dM00) && + !block.lock()->hasInterpolationFlagFC(d00P)) { if (minX1 == TminX1) minX1 += 4; if (maxX3 == TmaxX3) @@ -1261,29 +1261,29 @@ void FineToCoarseVectorConnector<VectorTransmitter>::getLocalMinMax(int &minX1, } ////T-B-N-S - if (block.lock()->hasInterpolationFlagFC(DIR_0PP) && !block.lock()->hasInterpolationFlagFC(DIR_0P0) && - !block.lock()->hasInterpolationFlagFC(DIR_00P)) { + if (block.lock()->hasInterpolationFlagFC(d0PP) && !block.lock()->hasInterpolationFlagFC(d0P0) && + !block.lock()->hasInterpolationFlagFC(d00P)) { if (maxX2 == TmaxX2) maxX2 -= 3; if (maxX3 == TmaxX3) maxX3 -= 3; } - if (block.lock()->hasInterpolationFlagFC(DIR_0MM) && !block.lock()->hasInterpolationFlagFC(DIR_0M0) && - !block.lock()->hasInterpolationFlagFC(DIR_00M)) { + if (block.lock()->hasInterpolationFlagFC(d0MM) && !block.lock()->hasInterpolationFlagFC(d0M0) && + !block.lock()->hasInterpolationFlagFC(d00M)) { if (minX2 == TminX2) minX2 += 4; if (minX3 == TminX3) minX3 += 4; } - if (block.lock()->hasInterpolationFlagFC(DIR_0PM) && !block.lock()->hasInterpolationFlagFC(DIR_0P0) && - !block.lock()->hasInterpolationFlagFC(DIR_00M)) { + if (block.lock()->hasInterpolationFlagFC(d0PM) && !block.lock()->hasInterpolationFlagFC(d0P0) && + !block.lock()->hasInterpolationFlagFC(d00M)) { if (maxX2 == TmaxX2) maxX2 -= 3; if (minX3 == TminX3) minX3 += 4; } - if (block.lock()->hasInterpolationFlagFC(DIR_0MP) && !block.lock()->hasInterpolationFlagFC(DIR_0M0) && - !block.lock()->hasInterpolationFlagFC(DIR_00P)) { + if (block.lock()->hasInterpolationFlagFC(d0MP) && !block.lock()->hasInterpolationFlagFC(d0M0) && + !block.lock()->hasInterpolationFlagFC(d00P)) { if (minX2 == TminX2) minX2 += 4; if (maxX3 == TmaxX3) @@ -1291,10 +1291,10 @@ void FineToCoarseVectorConnector<VectorTransmitter>::getLocalMinMax(int &minX1, } // if - // (block.lock()->hasInterpolationFlagFC(D3Q27System::DIR_PPP)&&!block.lock()->hasInterpolationFlagFC(D3Q27System::DIR_P0P)&&!block.lock()->hasInterpolationFlagFC(D3Q27System::DIR_0PP)&&!block.lock()->hasInterpolationFlagFC(D3Q27System::DIR_PP0)&&!block.lock()->hasInterpolationFlagFC(D3Q27System::DIR_00P)&&!block.lock()->hasInterpolationFlagFC(D3Q27System::DIR_0P0) - // && !block.lock()->hasInterpolationFlagFC(D3Q27System::DIR_P00)) if - // (!block.lock()->hasInterpolationFlagFC(D3Q27System::DIR_P0P)&&!block.lock()->hasInterpolationFlagFC(D3Q27System::DIR_00P) && - // !block.lock()->hasInterpolationFlagFC(D3Q27System::DIR_P00)) + // (block.lock()->hasInterpolationFlagFC(D3Q27System::dPPP)&&!block.lock()->hasInterpolationFlagFC(D3Q27System::dP0P)&&!block.lock()->hasInterpolationFlagFC(D3Q27System::d0PP)&&!block.lock()->hasInterpolationFlagFC(D3Q27System::dPP0)&&!block.lock()->hasInterpolationFlagFC(D3Q27System::d00P)&&!block.lock()->hasInterpolationFlagFC(D3Q27System::d0P0) + // && !block.lock()->hasInterpolationFlagFC(D3Q27System::dP00)) if + // (!block.lock()->hasInterpolationFlagFC(D3Q27System::dP0P)&&!block.lock()->hasInterpolationFlagFC(D3Q27System::d00P) && + // !block.lock()->hasInterpolationFlagFC(D3Q27System::dP00)) //{ // if (maxX1==TmaxX1) maxX1 -= 3; // if (maxX2==TmaxX2) maxX2 -= 3; @@ -1317,56 +1317,56 @@ void FineToCoarseVectorConnector<VectorTransmitter>::getLocalMinMax(int &minX1, int TmaxX2 = maxX2; int TmaxX3 = maxX3; - if (block.lock()->hasInterpolationFlagFC(DIR_P00)) { + if (block.lock()->hasInterpolationFlagFC(dP00)) { if (maxX1 == TmaxX1) maxX1 -= 3; } - if (block.lock()->hasInterpolationFlagFC(DIR_M00)) { + if (block.lock()->hasInterpolationFlagFC(dM00)) { if (minX1 == TminX1) minX1 += 4; } - if (block.lock()->hasInterpolationFlagFC(DIR_0P0)) { + if (block.lock()->hasInterpolationFlagFC(d0P0)) { if (maxX2 == TmaxX2) maxX2 -= 3; } - if (block.lock()->hasInterpolationFlagFC(DIR_0M0)) { + if (block.lock()->hasInterpolationFlagFC(d0M0)) { if (minX2 == TminX2) minX2 += 4; } - if (block.lock()->hasInterpolationFlagFC(DIR_00P)) { + if (block.lock()->hasInterpolationFlagFC(d00P)) { if (maxX3 == TmaxX3) maxX3 -= 3; } - if (block.lock()->hasInterpolationFlagFC(DIR_00M)) { + if (block.lock()->hasInterpolationFlagFC(d00M)) { if (minX3 == TminX3) minX3 += 4; } //////////// /////E-W-N-S - if (block.lock()->hasInterpolationFlagFC(DIR_PP0) && !block.lock()->hasInterpolationFlagFC(DIR_0P0) && - !block.lock()->hasInterpolationFlagFC(DIR_P00)) { + if (block.lock()->hasInterpolationFlagFC(dPP0) && !block.lock()->hasInterpolationFlagFC(d0P0) && + !block.lock()->hasInterpolationFlagFC(dP00)) { if (maxX1 == TmaxX1) maxX1 -= 3; if (maxX2 == TmaxX2) maxX2 -= 3; } - if (block.lock()->hasInterpolationFlagFC(DIR_MM0) && !block.lock()->hasInterpolationFlagFC(DIR_M00) && - !block.lock()->hasInterpolationFlagFC(DIR_0M0)) { + if (block.lock()->hasInterpolationFlagFC(dMM0) && !block.lock()->hasInterpolationFlagFC(dM00) && + !block.lock()->hasInterpolationFlagFC(d0M0)) { if (minX1 == TminX1) minX1 += 4; if (minX2 == TminX2) minX2 += 4; } - if (block.lock()->hasInterpolationFlagFC(DIR_PM0) && !block.lock()->hasInterpolationFlagFC(DIR_P00) && - !block.lock()->hasInterpolationFlagFC(DIR_0M0)) { + if (block.lock()->hasInterpolationFlagFC(dPM0) && !block.lock()->hasInterpolationFlagFC(dP00) && + !block.lock()->hasInterpolationFlagFC(d0M0)) { if (maxX1 == TmaxX1) maxX1 -= 3; if (minX2 == TminX2) minX2 += 4; } - if (block.lock()->hasInterpolationFlagFC(DIR_MP0) && !block.lock()->hasInterpolationFlagFC(DIR_0P0) && - !block.lock()->hasInterpolationFlagFC(DIR_M00)) { + if (block.lock()->hasInterpolationFlagFC(dMP0) && !block.lock()->hasInterpolationFlagFC(d0P0) && + !block.lock()->hasInterpolationFlagFC(dM00)) { if (minX1 == TminX1) minX1 += 4; if (maxX2 == TmaxX2) @@ -1374,29 +1374,29 @@ void FineToCoarseVectorConnector<VectorTransmitter>::getLocalMinMax(int &minX1, } //////T-B-E-W - if (block.lock()->hasInterpolationFlagFC(DIR_P0P) && !block.lock()->hasInterpolationFlagFC(DIR_P00) && - !block.lock()->hasInterpolationFlagFC(DIR_00P)) { + if (block.lock()->hasInterpolationFlagFC(dP0P) && !block.lock()->hasInterpolationFlagFC(dP00) && + !block.lock()->hasInterpolationFlagFC(d00P)) { if (maxX1 == TmaxX1) maxX1 -= 3; if (maxX3 == TmaxX3) maxX3 -= 3; } - if (block.lock()->hasInterpolationFlagFC(DIR_M0M) && !block.lock()->hasInterpolationFlagFC(DIR_M00) && - !block.lock()->hasInterpolationFlagFC(DIR_00M)) { + if (block.lock()->hasInterpolationFlagFC(dM0M) && !block.lock()->hasInterpolationFlagFC(dM00) && + !block.lock()->hasInterpolationFlagFC(d00M)) { if (minX1 == TminX1) minX1 += 4; if (minX3 == TminX3) minX3 += 4; } - if (block.lock()->hasInterpolationFlagFC(DIR_P0M) && !block.lock()->hasInterpolationFlagFC(DIR_P00) && - !block.lock()->hasInterpolationFlagFC(DIR_00M)) { + if (block.lock()->hasInterpolationFlagFC(dP0M) && !block.lock()->hasInterpolationFlagFC(dP00) && + !block.lock()->hasInterpolationFlagFC(d00M)) { if (maxX1 == TmaxX1) maxX1 -= 3; if (minX3 == TminX3) minX3 += 4; } - if (block.lock()->hasInterpolationFlagFC(DIR_M0P) && !block.lock()->hasInterpolationFlagFC(DIR_M00) && - !block.lock()->hasInterpolationFlagFC(DIR_00P)) { + if (block.lock()->hasInterpolationFlagFC(dM0P) && !block.lock()->hasInterpolationFlagFC(dM00) && + !block.lock()->hasInterpolationFlagFC(d00P)) { if (minX1 == TminX1) minX1 += 4; if (maxX3 == TmaxX3) @@ -1404,29 +1404,29 @@ void FineToCoarseVectorConnector<VectorTransmitter>::getLocalMinMax(int &minX1, } ////T-B-N-S - if (block.lock()->hasInterpolationFlagFC(DIR_0PP) && !block.lock()->hasInterpolationFlagFC(DIR_0P0) && - !block.lock()->hasInterpolationFlagFC(DIR_00P)) { + if (block.lock()->hasInterpolationFlagFC(d0PP) && !block.lock()->hasInterpolationFlagFC(d0P0) && + !block.lock()->hasInterpolationFlagFC(d00P)) { if (maxX2 == TmaxX2) maxX2 -= 3; if (maxX3 == TmaxX3) maxX3 -= 3; } - if (block.lock()->hasInterpolationFlagFC(DIR_0MM) && !block.lock()->hasInterpolationFlagFC(DIR_0M0) && - !block.lock()->hasInterpolationFlagFC(DIR_00M)) { + if (block.lock()->hasInterpolationFlagFC(d0MM) && !block.lock()->hasInterpolationFlagFC(d0M0) && + !block.lock()->hasInterpolationFlagFC(d00M)) { if (minX2 == TminX2) minX2 += 4; if (minX3 == TminX3) minX3 += 4; } - if (block.lock()->hasInterpolationFlagFC(DIR_0PM) && !block.lock()->hasInterpolationFlagFC(DIR_0P0) && - !block.lock()->hasInterpolationFlagFC(DIR_00M)) { + if (block.lock()->hasInterpolationFlagFC(d0PM) && !block.lock()->hasInterpolationFlagFC(d0P0) && + !block.lock()->hasInterpolationFlagFC(d00M)) { if (maxX2 == TmaxX2) maxX2 -= 3; if (minX3 == TminX3) minX3 += 4; } - if (block.lock()->hasInterpolationFlagFC(DIR_0MP) && !block.lock()->hasInterpolationFlagFC(DIR_0M0) && - !block.lock()->hasInterpolationFlagFC(DIR_00P)) { + if (block.lock()->hasInterpolationFlagFC(d0MP) && !block.lock()->hasInterpolationFlagFC(d0M0) && + !block.lock()->hasInterpolationFlagFC(d00P)) { if (minX2 == TminX2) minX2 += 4; if (maxX3 == TmaxX3) @@ -1434,8 +1434,8 @@ void FineToCoarseVectorConnector<VectorTransmitter>::getLocalMinMax(int &minX1, } // if - // (block.lock()->hasInterpolationFlagFC(D3Q27System::DIR_PPP)&&!block.lock()->hasInterpolationFlagFC(D3Q27System::DIR_P0P)&&!block.lock()->hasInterpolationFlagFC(D3Q27System::DIR_0PP)&&!block.lock()->hasInterpolationFlagFC(D3Q27System::DIR_PP0)&&!block.lock()->hasInterpolationFlagFC(D3Q27System::DIR_00P)&&!block.lock()->hasInterpolationFlagFC(D3Q27System::DIR_0P0) - // && !block.lock()->hasInterpolationFlagFC(D3Q27System::DIR_P00)) + // (block.lock()->hasInterpolationFlagFC(D3Q27System::dPPP)&&!block.lock()->hasInterpolationFlagFC(D3Q27System::dP0P)&&!block.lock()->hasInterpolationFlagFC(D3Q27System::d0PP)&&!block.lock()->hasInterpolationFlagFC(D3Q27System::dPP0)&&!block.lock()->hasInterpolationFlagFC(D3Q27System::d00P)&&!block.lock()->hasInterpolationFlagFC(D3Q27System::d0P0) + // && !block.lock()->hasInterpolationFlagFC(D3Q27System::dP00)) //{ // if (maxX1==TmaxX1) maxX1 -= 3; // if (maxX2==TmaxX2) maxX2 -= 3; @@ -1462,8 +1462,8 @@ void FineToCoarseVectorConnector<VectorTransmitter>::getLocalMins(int &minX1, in using namespace vf::lbm::dir; switch (sendDir) { - case DIR_P00: - case DIR_M00: + case dP00: + case dM00: if (connType == OddEvenSE) minX2 += oMinX2; if (connType == OddOddNE) { @@ -1473,8 +1473,8 @@ void FineToCoarseVectorConnector<VectorTransmitter>::getLocalMins(int &minX1, in if (connType == EvenOddNW) minX3 += oMinX3; break; - case DIR_0P0: - case DIR_0M0: + case d0P0: + case d0M0: if (connType == OddEvenSE) minX1 += oMinX1; if (connType == OddOddNE) { @@ -1484,8 +1484,8 @@ void FineToCoarseVectorConnector<VectorTransmitter>::getLocalMins(int &minX1, in if (connType == EvenOddNW) minX3 += oMinX3; break; - case DIR_00P: - case DIR_00M: + case d00P: + case d00M: if (connType == OddEvenSE) minX1 += oMinX1; if (connType == OddOddNE) { @@ -1497,10 +1497,10 @@ void FineToCoarseVectorConnector<VectorTransmitter>::getLocalMins(int &minX1, in break; ///// - case DIR_PP0: - case DIR_MM0: - case DIR_PM0: - case DIR_MP0: + case dPP0: + case dMM0: + case dPM0: + case dMP0: // case SW: if (connType == OddEvenSE) // minX2 += oMinX2; @@ -1513,10 +1513,10 @@ void FineToCoarseVectorConnector<VectorTransmitter>::getLocalMins(int &minX1, in break; ////// - case DIR_P0P: - case DIR_M0M: - case DIR_P0M: - case DIR_M0P: + case dP0P: + case dM0M: + case dP0M: + case dM0P: if (connType == OddEvenSE) // minX1 += oMinX1; if (connType == OddOddNE) { @@ -1528,10 +1528,10 @@ void FineToCoarseVectorConnector<VectorTransmitter>::getLocalMins(int &minX1, in break; // ////// - case DIR_0PP: - case DIR_0MM: - case DIR_0PM: - case DIR_0MP: + case d0PP: + case d0MM: + case d0PM: + case d0MP: if (connType == OddEvenSE) minX1 += oMinX1; if (connType == OddOddNE) { diff --git a/src/cpu/VirtualFluidsCore/Connectors/FineToCoarseVectorConnectorTest.cpp b/src/cpu/core/Connectors/FineToCoarseVectorConnectorTest.cpp similarity index 98% rename from src/cpu/VirtualFluidsCore/Connectors/FineToCoarseVectorConnectorTest.cpp rename to src/cpu/core/Connectors/FineToCoarseVectorConnectorTest.cpp index 1d400f74e8e4a2def9419c4e5288c512db7af936..81d56102ef98b6dfd6695e087fcad181dbcac7e0 100644 --- a/src/cpu/VirtualFluidsCore/Connectors/FineToCoarseVectorConnectorTest.cpp +++ b/src/cpu/core/Connectors/FineToCoarseVectorConnectorTest.cpp @@ -27,7 +27,7 @@ TEST_F(FineToCoarseVectorConnectorTest, getLocalMinMax) { using namespace vf::lbm::dir; - int sendDir = DIR_P00; + int sendDir = dP00; block->setInterpolationFlagFC(sendDir); //FineToCoarseVectorConnector(SPtr<Block3D> block, VectorTransmitterPtr sender, VectorTransmitterPtr receiver, //int sendDir, InterpolationProcessorPtr iprocessor, CFconnectorType connType); diff --git a/src/cpu/VirtualFluidsCore/Connectors/FullDirectConnector.cpp b/src/cpu/core/Connectors/FullDirectConnector.cpp similarity index 87% rename from src/cpu/VirtualFluidsCore/Connectors/FullDirectConnector.cpp rename to src/cpu/core/Connectors/FullDirectConnector.cpp index 7a12ef1bb30796bd2aa24fd6c61c07f26295950d..d40fc36cb9a15e1b7d1664be2ab2beeee74df394 100644 --- a/src/cpu/VirtualFluidsCore/Connectors/FullDirectConnector.cpp +++ b/src/cpu/core/Connectors/FullDirectConnector.cpp @@ -62,7 +62,7 @@ void FullDirectConnector::exchangeData() using namespace vf::lbm::dir; // EAST - if (sendDir == DIR_P00) { + if (sendDir == dP00) { for (int x3 = 1; x3 < maxX3; x3++) { for (int x2 = 1; x2 < maxX2; x2++) { exchangeData(maxX1 - 1, x2, x3, 0, x2, x3); @@ -70,7 +70,7 @@ void FullDirectConnector::exchangeData() } } // WEST - else if (sendDir == DIR_M00) { + else if (sendDir == dM00) { for (int x3 = 1; x3 < maxX3; x3++) { for (int x2 = 1; x2 < maxX2; x2++) { exchangeData(1, x2, x3, maxX1, x2, x3); @@ -78,7 +78,7 @@ void FullDirectConnector::exchangeData() } } // NORTH - else if (sendDir == DIR_0P0) { + else if (sendDir == d0P0) { for (int x3 = 1; x3 < maxX3; x3++) { for (int x1 = 1; x1 < maxX1; x1++) { exchangeData(x1, maxX2 - 1, x3, x1, 0, x3); @@ -86,7 +86,7 @@ void FullDirectConnector::exchangeData() } } // SOUTH - else if (sendDir == DIR_0M0) { + else if (sendDir == d0M0) { for (int x3 = 1; x3 < maxX3; x3++) { for (int x1 = 1; x1 < maxX1; x1++) { exchangeData(x1, 1, x3, x1, maxX2, x3); @@ -95,7 +95,7 @@ void FullDirectConnector::exchangeData() } // TOP - else if (sendDir == DIR_00P) { + else if (sendDir == d00P) { for (int x2 = 1; x2 < maxX2; x2++) { for (int x1 = 1; x1 < maxX1; x1++) { exchangeData(x1, x2, maxX3 - 1, x1, x2, 0); @@ -103,7 +103,7 @@ void FullDirectConnector::exchangeData() } } // BOTTOM - else if (sendDir == DIR_00M) { + else if (sendDir == d00M) { for (int x2 = 1; x2 < maxX2; x2++) { for (int x1 = 1; x1 < maxX1; x1++) { exchangeData(x1, x2, 1, x1, x2, maxX3); @@ -111,77 +111,77 @@ void FullDirectConnector::exchangeData() } } // NORTHEAST - else if (sendDir == DIR_PP0) { + else if (sendDir == dPP0) { for (int x3 = 1; x3 < maxX3; x3++) { exchangeData(maxX1 - 1, maxX2 - 1, x3, 0, 0, x3); } } // NORTHWEST - else if (sendDir == DIR_MP0) { + else if (sendDir == dMP0) { for (int x3 = 1; x3 < maxX3; x3++) { exchangeData(1, maxX2 - 1, x3, maxX1, 0, x3); } } // SOUTHWEST - else if (sendDir == DIR_MM0) { + else if (sendDir == dMM0) { for (int x3 = 1; x3 < maxX3; x3++) { exchangeData(1, 1, x3, maxX1, maxX2, x3); } } // SOUTHEAST - else if (sendDir == DIR_PM0) { + else if (sendDir == dPM0) { for (int x3 = 1; x3 < maxX3; x3++) { exchangeData(maxX1 - 1, 1, x3, 0, maxX2, x3); } - } else if (sendDir == DIR_P0P) + } else if (sendDir == dP0P) for (int x2 = 1; x2 < maxX2; x2++) { exchangeData(maxX1 - 1, x2, maxX3 - 1, 0, x2, 0); } - else if (sendDir == DIR_M0M) + else if (sendDir == dM0M) for (int x2 = 1; x2 < maxX2; x2++) { exchangeData(1, x2, 1, maxX1, x2, maxX3); } - else if (sendDir == DIR_P0M) + else if (sendDir == dP0M) for (int x2 = 1; x2 < maxX2; x2++) { exchangeData(maxX1 - 1, x2, 1, 0, x2, maxX3); } - else if (sendDir == DIR_M0P) + else if (sendDir == dM0P) for (int x2 = 1; x2 < maxX2; x2++) { exchangeData(1, x2, maxX3 - 1, maxX1, x2, 0); } - else if (sendDir == DIR_0PP) + else if (sendDir == d0PP) for (int x1 = 1; x1 < maxX1; x1++) { exchangeData(x1, maxX2 - 1, maxX3 - 1, x1, 0, 0); } - else if (sendDir == DIR_0MM) + else if (sendDir == d0MM) for (int x1 = 1; x1 < maxX1; x1++) { exchangeData(x1, 1, 1, x1, maxX2, maxX3); } - else if (sendDir == DIR_0PM) + else if (sendDir == d0PM) for (int x1 = 1; x1 < maxX1; x1++) { exchangeData(x1, maxX2 - 1, 1, x1, 0, maxX3); } - else if (sendDir == DIR_0MP) + else if (sendDir == d0MP) for (int x1 = 1; x1 < maxX1; x1++) { exchangeData(x1, 1, maxX3 - 1, x1, maxX2, 0); } - else if (sendDir == DIR_MMP) { + else if (sendDir == dMMP) { exchangeData(1, 1, maxX3 - 1, maxX1, maxX2, 0); - } else if (sendDir == DIR_PMP) { + } else if (sendDir == dPMP) { exchangeData(maxX1 - 1, 1, maxX3 - 1, 0, maxX2, 0); - } else if (sendDir == DIR_MPP) { + } else if (sendDir == dMPP) { exchangeData(1, maxX2 - 1, maxX3 - 1, maxX1, 0, 0); - } else if (sendDir == DIR_PPP) { + } else if (sendDir == dPPP) { exchangeData(maxX1 - 1, maxX2 - 1, maxX3 - 1, 0, 0, 0); - } else if (sendDir == DIR_MMM) { + } else if (sendDir == dMMM) { exchangeData(1, 1, 1, maxX1, maxX2, maxX3); - } else if (sendDir == DIR_PMM) { + } else if (sendDir == dPMM) { exchangeData(maxX1 - 1, 1, 1, 0, maxX2, maxX3); - } else if (sendDir == DIR_MPM) { + } else if (sendDir == dMPM) { exchangeData(1, maxX2 - 1, 1, maxX1, 0, maxX3); - } else if (sendDir == DIR_PPM) { + } else if (sendDir == dPPM) { exchangeData(maxX1 - 1, maxX2 - 1, 1, 0, 0, maxX3); } else UB_THROW(UbException(UB_EXARGS, "unknown dir")); diff --git a/src/cpu/VirtualFluidsCore/Connectors/FullDirectConnector.h b/src/cpu/core/Connectors/FullDirectConnector.h similarity index 100% rename from src/cpu/VirtualFluidsCore/Connectors/FullDirectConnector.h rename to src/cpu/core/Connectors/FullDirectConnector.h diff --git a/src/cpu/VirtualFluidsCore/Connectors/FullVectorConnector.cpp b/src/cpu/core/Connectors/FullVectorConnector.cpp similarity index 81% rename from src/cpu/VirtualFluidsCore/Connectors/FullVectorConnector.cpp rename to src/cpu/core/Connectors/FullVectorConnector.cpp index d4cb17d156016815b20f8420a4699a428899af51..ff501a8ecfc123ffba8eb1a0906126281b22ead8 100644 --- a/src/cpu/VirtualFluidsCore/Connectors/FullVectorConnector.cpp +++ b/src/cpu/core/Connectors/FullVectorConnector.cpp @@ -65,7 +65,7 @@ void FullVectorConnector::fillData() int index = 0; // EAST - if (sendDir == DIR_P00) { + if (sendDir == dP00) { for (int x3 = 1; x3 < maxX3; x3++) { for (int x2 = 1; x2 < maxX2; x2++) { fillData(sdata, index, maxX1 - 1, x2, x3); @@ -73,7 +73,7 @@ void FullVectorConnector::fillData() } } // WEST - else if (sendDir == DIR_M00) { + else if (sendDir == dM00) { for (int x3 = 1; x3 < maxX3; x3++) { for (int x2 = 1; x2 < maxX2; x2++) { fillData(sdata, index, 1, x2, x3); @@ -81,7 +81,7 @@ void FullVectorConnector::fillData() } } // NORTH - else if (sendDir == DIR_0P0) { + else if (sendDir == d0P0) { for (int x3 = 1; x3 < maxX3; x3++) { for (int x1 = 1; x1 < maxX1; x1++) { fillData(sdata, index, x1, maxX2 - 1, x3); @@ -89,7 +89,7 @@ void FullVectorConnector::fillData() } } // SOUTH - else if (sendDir == DIR_0M0) { + else if (sendDir == d0M0) { for (int x3 = 1; x3 < maxX3; x3++) { for (int x1 = 1; x1 < maxX1; x1++) { fillData(sdata, index, x1, 1, x3); @@ -97,7 +97,7 @@ void FullVectorConnector::fillData() } } // TOP - else if (sendDir == DIR_00P) { + else if (sendDir == d00P) { for (int x2 = 1; x2 < maxX2; x2++) { for (int x1 = 1; x1 < maxX1; x1++) { fillData(sdata, index, x1, x2, maxX3 - 1); @@ -105,7 +105,7 @@ void FullVectorConnector::fillData() } } // BOTTOM - else if (sendDir == DIR_00M) { + else if (sendDir == d00M) { for (int x2 = 1; x2 < maxX2; x2++) { for (int x1 = 1; x1 < maxX1; x1++) { fillData(sdata, index, x1, x2, 1); @@ -113,24 +113,24 @@ void FullVectorConnector::fillData() } } // NE NW SW SE - else if (sendDir == DIR_PP0 || sendDir == DIR_MP0 || sendDir == DIR_MM0 || - sendDir == DIR_PM0) { + else if (sendDir == dPP0 || sendDir == dMP0 || sendDir == dMM0 || + sendDir == dPM0) { int x1 = 0; int x2 = 0; switch (sendDir) { - case DIR_PP0: + case dPP0: x1 = maxX1 - 1; x2 = maxX2 - 1; break; - case DIR_MP0: + case dMP0: x1 = 1; x2 = maxX2 - 1; break; - case DIR_MM0: + case dMM0: x1 = 1; x2 = 1; break; - case DIR_PM0: + case dPM0: x1 = maxX1 - 1; x2 = 1; break; @@ -140,24 +140,24 @@ void FullVectorConnector::fillData() } } // TE TW BW BE - else if (sendDir == DIR_P0P || sendDir == DIR_M0P || sendDir == DIR_M0M || - sendDir == DIR_P0M) { + else if (sendDir == dP0P || sendDir == dM0P || sendDir == dM0M || + sendDir == dP0M) { int x1 = 0; int x3 = 0; switch (sendDir) { - case DIR_P0P: + case dP0P: x1 = maxX1 - 1; x3 = maxX3 - 1; break; - case DIR_M0P: + case dM0P: x1 = 1; x3 = maxX3 - 1; break; - case DIR_M0M: + case dM0M: x1 = 1; x3 = 1; break; - case DIR_P0M: + case dP0M: x1 = maxX1 - 1; x3 = 1; break; @@ -167,24 +167,24 @@ void FullVectorConnector::fillData() } } // TN BN BS TS - else if (sendDir == DIR_0PP || sendDir == DIR_0PM || sendDir == DIR_0MM || - sendDir == DIR_0MP) { + else if (sendDir == d0PP || sendDir == d0PM || sendDir == d0MM || + sendDir == d0MP) { int x2 = 0; int x3 = 0; switch (sendDir) { - case DIR_0PP: + case d0PP: x3 = maxX3 - 1; x2 = maxX2 - 1; break; - case DIR_0PM: + case d0PM: x3 = 1; x2 = maxX2 - 1; break; - case DIR_0MM: + case d0MM: x3 = 1; x2 = 1; break; - case DIR_0MP: + case d0MP: x3 = maxX3 - 1; x2 = 1; break; @@ -194,49 +194,49 @@ void FullVectorConnector::fillData() } } // TNE TNW TSW TSE BNE BNW BSW BSE - else if (sendDir == DIR_PPP || sendDir == DIR_MPP || sendDir == DIR_MMP || - sendDir == DIR_PMP || sendDir == DIR_PPM || sendDir == DIR_MPM || - sendDir == DIR_MMM || sendDir == DIR_PMM) { + else if (sendDir == dPPP || sendDir == dMPP || sendDir == dMMP || + sendDir == dPMP || sendDir == dPPM || sendDir == dMPM || + sendDir == dMMM || sendDir == dPMM) { int x1 = 0; int x2 = 0; int x3 = 0; switch (sendDir) { - case DIR_PPP: + case dPPP: x1 = maxX1 - 1; x2 = maxX2 - 1; x3 = maxX3 - 1; break; - case DIR_MPP: + case dMPP: x1 = 1; x2 = maxX2 - 1; x3 = maxX3 - 1; break; - case DIR_MMP: + case dMMP: x1 = 1; x2 = 1; x3 = maxX3 - 1; break; - case DIR_PMP: + case dPMP: x1 = maxX1 - 1; x2 = 1; x3 = maxX3 - 1; break; - case DIR_PPM: + case dPPM: x1 = maxX1 - 1; x2 = maxX2 - 1; x3 = 1; break; - case DIR_MPM: + case dMPM: x1 = 1; x2 = maxX2 - 1; x3 = 1; break; - case DIR_MMM: + case dMMM: x1 = 1; x2 = 1; x3 = 1; break; - case DIR_PMM: + case dPMM: x1 = maxX1 - 1; x2 = 1; x3 = 1; @@ -261,37 +261,37 @@ void FullVectorConnector::distributeData() int index = 0; - if (sendDir == DIR_M00) { + if (sendDir == dM00) { for (int x3 = 1; x3 < maxX3; x3++) { for (int x2 = 1; x2 < maxX2; x2++) { distributeData(rdata, index, 0, x2, x3); } } - } else if (sendDir == DIR_P00) { + } else if (sendDir == dP00) { for (int x3 = 1; x3 < maxX3; x3++) { for (int x2 = 1; x2 < maxX2; x2++) { distributeData(rdata, index, maxX1, x2, x3); } } - } else if (sendDir == DIR_0M0) { + } else if (sendDir == d0M0) { for (int x3 = 1; x3 < maxX3; x3++) { for (int x1 = 1; x1 < maxX1; x1++) { distributeData(rdata, index, x1, 0, x3); } } - } else if (sendDir == DIR_0P0) { + } else if (sendDir == d0P0) { for (int x3 = 1; x3 < maxX3; x3++) { for (int x1 = 1; x1 < maxX1; x1++) { distributeData(rdata, index, x1, maxX2, x3); } } - } else if (sendDir == DIR_00M) { + } else if (sendDir == d00M) { for (int x2 = 1; x2 < maxX2; x2++) { for (int x1 = 1; x1 < maxX1; x1++) { distributeData(rdata, index, x1, x2, 0); } } - } else if (sendDir == DIR_00P) { + } else if (sendDir == d00P) { for (int x2 = 1; x2 < maxX2; x2++) { for (int x1 = 1; x1 < maxX1; x1++) { distributeData(rdata, index, x1, x2, maxX3); @@ -299,25 +299,25 @@ void FullVectorConnector::distributeData() } } // NE NW SW SE - else if (sendDir == DIR_PP0 || sendDir == DIR_MP0 || sendDir == DIR_MM0 || - sendDir == DIR_PM0) { + else if (sendDir == dPP0 || sendDir == dMP0 || sendDir == dMM0 || + sendDir == dPM0) { int x1 = 0; int x2 = 0; switch (sendDir) // wenn sendir NE dann kommen werte von SW { - case DIR_PP0: + case dPP0: x1 = maxX1; x2 = maxX2; break; - case DIR_MP0: + case dMP0: x1 = 0; x2 = maxX2; break; - case DIR_MM0: + case dMM0: x1 = 0; x2 = 0; break; - case DIR_PM0: + case dPM0: x1 = maxX1; x2 = 0; break; @@ -328,27 +328,27 @@ void FullVectorConnector::distributeData() } // TE TW BW BE - else if (sendDir == DIR_P0P || sendDir == DIR_M0P || sendDir == DIR_M0M || - sendDir == DIR_P0M) + else if (sendDir == dP0P || sendDir == dM0P || sendDir == dM0M || + sendDir == dP0M) { int x1 = 0; int x3 = 0; switch (sendDir) // wenn sendir NE dann kommen werte von SW { - case DIR_P0P: + case dP0P: x1 = maxX1; x3 = maxX3; break; - case DIR_M0P: + case dM0P: x1 = 0; x3 = maxX3; break; - case DIR_M0M: + case dM0M: x1 = 0; x3 = 0; break; - case DIR_P0M: + case dP0M: x1 = maxX1; x3 = 0; break; @@ -358,24 +358,24 @@ void FullVectorConnector::distributeData() } } // TN BN BS TS - else if (sendDir == DIR_0PP || sendDir == DIR_0PM || sendDir == DIR_0MM || - sendDir == DIR_0MP) { + else if (sendDir == d0PP || sendDir == d0PM || sendDir == d0MM || + sendDir == d0MP) { int x2 = 0; int x3 = 0; switch (sendDir) { - case DIR_0PP: + case d0PP: x3 = maxX3; x2 = maxX2; break; - case DIR_0PM: + case d0PM: x3 = 0; x2 = maxX2; break; - case DIR_0MM: + case d0MM: x3 = 0; x2 = 0; break; - case DIR_0MP: + case d0MP: x3 = maxX3; x2 = 0; break; @@ -385,50 +385,50 @@ void FullVectorConnector::distributeData() } } // TNE TNW TSW TSE BNE BNW BSW BSE - else if (sendDir == DIR_PPP || sendDir == DIR_MPP || sendDir == DIR_MMP || - sendDir == DIR_PMP || sendDir == DIR_PPM || sendDir == DIR_MPM || - sendDir == DIR_MMM || sendDir == DIR_PMM) { + else if (sendDir == dPPP || sendDir == dMPP || sendDir == dMMP || + sendDir == dPMP || sendDir == dPPM || sendDir == dMPM || + sendDir == dMMM || sendDir == dPMM) { int x1 = 0; int x2 = 0; int x3 = 0; switch (sendDir) { - case DIR_PPP: + case dPPP: x1 = maxX1; x2 = maxX2; x3 = maxX3; break; - case DIR_MPP: + case dMPP: x1 = 0; x2 = maxX2; x3 = maxX3; break; - case DIR_MMP: + case dMMP: x1 = 0; x2 = 0; x3 = maxX3; break; - case DIR_PMP: + case dPMP: x1 = maxX1; x2 = 0; x3 = maxX3; break; - case DIR_PPM: + case dPPM: x1 = maxX1; x2 = maxX2; x3 = 0; break; - case DIR_MPM: + case dMPM: x1 = 0; x2 = maxX2; x3 = 0; break; - case DIR_MMM: + case dMMM: x1 = 0; x2 = 0; x3 = 0; break; - case DIR_PMM: + case dPMM: x1 = maxX1; x2 = 0; x3 = 0; diff --git a/src/cpu/VirtualFluidsCore/Connectors/FullVectorConnector.h b/src/cpu/core/Connectors/FullVectorConnector.h similarity index 100% rename from src/cpu/VirtualFluidsCore/Connectors/FullVectorConnector.h rename to src/cpu/core/Connectors/FullVectorConnector.h diff --git a/src/cpu/VirtualFluidsCore/Connectors/LocalBlock3DConnector.h b/src/cpu/core/Connectors/LocalBlock3DConnector.h similarity index 100% rename from src/cpu/VirtualFluidsCore/Connectors/LocalBlock3DConnector.h rename to src/cpu/core/Connectors/LocalBlock3DConnector.h diff --git a/src/cpu/VirtualFluidsCore/Connectors/OneDistributionFullDirectConnector.cpp b/src/cpu/core/Connectors/OneDistributionFullDirectConnector.cpp similarity index 100% rename from src/cpu/VirtualFluidsCore/Connectors/OneDistributionFullDirectConnector.cpp rename to src/cpu/core/Connectors/OneDistributionFullDirectConnector.cpp diff --git a/src/cpu/VirtualFluidsCore/Connectors/OneDistributionFullDirectConnector.h b/src/cpu/core/Connectors/OneDistributionFullDirectConnector.h similarity index 100% rename from src/cpu/VirtualFluidsCore/Connectors/OneDistributionFullDirectConnector.h rename to src/cpu/core/Connectors/OneDistributionFullDirectConnector.h diff --git a/src/cpu/VirtualFluidsCore/Connectors/OneDistributionFullVectorConnector.cpp b/src/cpu/core/Connectors/OneDistributionFullVectorConnector.cpp similarity index 75% rename from src/cpu/VirtualFluidsCore/Connectors/OneDistributionFullVectorConnector.cpp rename to src/cpu/core/Connectors/OneDistributionFullVectorConnector.cpp index be66dfb5b0785198e826f3fe2017aa479b92b53a..2ce640d47d00836d8b289ccb159a07455c280b45 100644 --- a/src/cpu/VirtualFluidsCore/Connectors/OneDistributionFullVectorConnector.cpp +++ b/src/cpu/core/Connectors/OneDistributionFullVectorConnector.cpp @@ -21,51 +21,51 @@ void OneDistributionFullVectorConnector::init() int anz = 27; switch (sendDir) { - case DIR_000: + case d000: UB_THROW(UbException(UB_EXARGS, "ZERO not allowed")); break; - case DIR_P00: - case DIR_M00: + case dP00: + case dM00: sender->getData().resize(maxX2 * maxX3 * anz, c0o1); break; - case DIR_0P0: - case DIR_0M0: + case d0P0: + case d0M0: sender->getData().resize(maxX1 * maxX3 * anz, c0o1); break; - case DIR_00P: - case DIR_00M: + case d00P: + case d00M: sender->getData().resize(maxX1 * maxX2 * anz, c0o1); break; - case DIR_PP0: - case DIR_MM0: - case DIR_PM0: - case DIR_MP0: + case dPP0: + case dMM0: + case dPM0: + case dMP0: sender->getData().resize(maxX3 * anz, c0o1); break; - case DIR_P0P: - case DIR_M0M: - case DIR_P0M: - case DIR_M0P: + case dP0P: + case dM0M: + case dP0M: + case dM0P: sender->getData().resize(maxX2 * anz, c0o1); break; - case DIR_0PP: - case DIR_0MM: - case DIR_0PM: - case DIR_0MP: + case d0PP: + case d0MM: + case d0PM: + case d0MP: sender->getData().resize(maxX1 * anz, c0o1); break; - case DIR_PPP: - case DIR_MMM: - case DIR_PPM: - case DIR_MMP: - case DIR_PMP: - case DIR_MPM: - case DIR_PMM: - case DIR_MPP: + case dPPP: + case dMMM: + case dPPM: + case dMMP: + case dPMP: + case dMPM: + case dPMM: + case dMPP: sender->getData().resize(anz, c0o1); break; diff --git a/src/cpu/VirtualFluidsCore/Connectors/OneDistributionFullVectorConnector.h b/src/cpu/core/Connectors/OneDistributionFullVectorConnector.h similarity index 100% rename from src/cpu/VirtualFluidsCore/Connectors/OneDistributionFullVectorConnector.h rename to src/cpu/core/Connectors/OneDistributionFullVectorConnector.h diff --git a/src/cpu/VirtualFluidsCore/Connectors/RemoteBlock3DConnector.cpp b/src/cpu/core/Connectors/RemoteBlock3DConnector.cpp similarity index 100% rename from src/cpu/VirtualFluidsCore/Connectors/RemoteBlock3DConnector.cpp rename to src/cpu/core/Connectors/RemoteBlock3DConnector.cpp diff --git a/src/cpu/VirtualFluidsCore/Connectors/RemoteBlock3DConnector.h b/src/cpu/core/Connectors/RemoteBlock3DConnector.h similarity index 100% rename from src/cpu/VirtualFluidsCore/Connectors/RemoteBlock3DConnector.h rename to src/cpu/core/Connectors/RemoteBlock3DConnector.h diff --git a/src/cpu/VirtualFluidsCore/Connectors/ThreeDistributionsDoubleGhostLayerFullDirectConnector.cpp b/src/cpu/core/Connectors/ThreeDistributionsDoubleGhostLayerFullDirectConnector.cpp similarity index 94% rename from src/cpu/VirtualFluidsCore/Connectors/ThreeDistributionsDoubleGhostLayerFullDirectConnector.cpp rename to src/cpu/core/Connectors/ThreeDistributionsDoubleGhostLayerFullDirectConnector.cpp index 4856743128041bbfef3048fb53c9d8110de498fb..ce4f88cb7760c412a27fa53e9823353bcfa1f494 100644 --- a/src/cpu/VirtualFluidsCore/Connectors/ThreeDistributionsDoubleGhostLayerFullDirectConnector.cpp +++ b/src/cpu/core/Connectors/ThreeDistributionsDoubleGhostLayerFullDirectConnector.cpp @@ -96,7 +96,7 @@ void ThreeDistributionsDoubleGhostLayerFullDirectConnector::exchangeData() int maxX3m3 = maxX3 - 3; // EAST - if (sendDir == DIR_P00) { + if (sendDir == dP00) { for (int x3 = minX3p2; x3 <= maxX3m2; x3++) { for (int x2 = minX2p2; x2 <= maxX2m2; x2++) { exchangeData(maxX1m3, x2, x3, minX1, x2, x3); @@ -105,7 +105,7 @@ void ThreeDistributionsDoubleGhostLayerFullDirectConnector::exchangeData() } } // WEST - else if (sendDir == DIR_M00) { + else if (sendDir == dM00) { for (int x3 = minX3p2; x3 <= maxX3m2; x3++) { for (int x2 = minX2p2; x2 <= maxX2m2; x2++) { exchangeData(minX1p3, x2, x3, maxX1, x2, x3); @@ -114,7 +114,7 @@ void ThreeDistributionsDoubleGhostLayerFullDirectConnector::exchangeData() } } // NORTH - else if (sendDir == DIR_0P0) { + else if (sendDir == d0P0) { for (int x3 = minX3p2; x3 <= maxX3m2; x3++) { for (int x1 = minX1p2; x1 <= maxX1m2; x1++) { exchangeData(x1, maxX2m3, x3, x1, minX2, x3); @@ -123,7 +123,7 @@ void ThreeDistributionsDoubleGhostLayerFullDirectConnector::exchangeData() } } // SOUTH - else if (sendDir == DIR_0M0) { + else if (sendDir == d0M0) { for (int x3 = minX3p2; x3 <= maxX3m2; x3++) { for (int x1 = minX1p2; x1 <= maxX1m2; x1++) { exchangeData(x1, minX2p3, x3, x1, maxX2, x3); @@ -133,7 +133,7 @@ void ThreeDistributionsDoubleGhostLayerFullDirectConnector::exchangeData() } // TOP - else if (sendDir == DIR_00P) { + else if (sendDir == d00P) { for (int x2 = minX2p2; x2 <= maxX2m2; x2++) { for (int x1 = minX1p2; x1 <= maxX1m2; x1++) { exchangeData(x1, x2, maxX3m3, x1, x2, minX3); @@ -142,7 +142,7 @@ void ThreeDistributionsDoubleGhostLayerFullDirectConnector::exchangeData() } } // BOTTOM - else if (sendDir == DIR_00M) { + else if (sendDir == d00M) { for (int x2 = minX2p2; x2 <= maxX2m2; x2++) { for (int x1 = minX1p2; x1 <= maxX1m2; x1++) { exchangeData(x1, x2, minX3p3, x1, x2, maxX3); @@ -151,7 +151,7 @@ void ThreeDistributionsDoubleGhostLayerFullDirectConnector::exchangeData() } } // NORTHEAST - else if (sendDir == DIR_PP0) { + else if (sendDir == dPP0) { for (int x3 = minX3p2; x3 <= maxX3m2; x3++) { exchangeData(maxX1m3, maxX2m3, x3, minX1, minX2, x3); exchangeData(maxX1m2, maxX2m2, x3, minX1p1, minX2p1, x3); @@ -160,7 +160,7 @@ void ThreeDistributionsDoubleGhostLayerFullDirectConnector::exchangeData() } } // NORTHWEST - else if (sendDir == DIR_MP0) { + else if (sendDir == dMP0) { for (int x3 = minX3p2; x3 <= maxX3m2; x3++) { exchangeData(minX1p3, maxX2m3, x3, maxX1, minX2, x3); exchangeData(minX1p2, maxX2m2, x3, maxX1m1, minX2p1, x3); @@ -169,7 +169,7 @@ void ThreeDistributionsDoubleGhostLayerFullDirectConnector::exchangeData() } } // SOUTHWEST - else if (sendDir == DIR_MM0) { + else if (sendDir == dMM0) { for (int x3 = minX3p2; x3 <= maxX3m2; x3++) { exchangeData(minX1p3, minX2p3, x3, maxX1, maxX2, x3); exchangeData(minX1p2, minX2p2, x3, maxX1m1, maxX2m1, x3); @@ -178,70 +178,70 @@ void ThreeDistributionsDoubleGhostLayerFullDirectConnector::exchangeData() } } // SOUTHEAST - else if (sendDir == DIR_PM0) { + else if (sendDir == dPM0) { for (int x3 = minX3p2; x3 <= maxX3m2; x3++) { exchangeData(maxX1m3, minX2p3, x3, minX1, maxX2, x3); exchangeData(maxX1m2, minX2p2, x3, minX1p1, maxX2m1, x3); exchangeData(maxX1m3, minX2p2, x3, minX1, maxX2m1, x3); exchangeData(maxX1m2, minX2p3, x3, minX1p1, maxX2, x3); } - } else if (sendDir == DIR_P0P) + } else if (sendDir == dP0P) for (int x2 = minX2p2; x2 <= maxX2m2; x2++) { exchangeData(maxX1m3, x2, maxX3m3, minX1, x2, minX3); exchangeData(maxX1m2, x2, maxX3m2, minX1p1, x2, minX3p1); exchangeData(maxX1m3, x2, maxX3m2, minX1, x2, minX3p1); exchangeData(maxX1m2, x2, maxX3m3, minX1p1, x2, minX3); } - else if (sendDir == DIR_M0M) + else if (sendDir == dM0M) for (int x2 = minX2p2; x2 <= maxX2m2; x2++) { exchangeData(minX1p3, x2, minX3p3, maxX1, x2, maxX3); exchangeData(minX1p2, x2, minX3p2, maxX1m1, x2, maxX3m1); exchangeData(minX1p3, x2, minX3p2, maxX1, x2, maxX3m1); exchangeData(minX1p2, x2, minX3p3, maxX1m1, x2, maxX3); } - else if (sendDir == DIR_P0M) + else if (sendDir == dP0M) for (int x2 = minX2p2; x2 <= maxX2m2; x2++) { exchangeData(maxX1m3, x2, minX3p3, minX1, x2, maxX3); exchangeData(maxX1m2, x2, minX3p2, minX1p1, x2, maxX3m1); exchangeData(maxX1m3, x2, minX3p2, minX1, x2, maxX3m1); exchangeData(maxX1m2, x2, minX3p3, minX1p1, x2, maxX3); } - else if (sendDir == DIR_M0P) + else if (sendDir == dM0P) for (int x2 = minX2p2; x2 <= maxX2m2; x2++) { exchangeData(minX1p3, x2, maxX3m3, maxX1, x2, minX3); exchangeData(minX1p2, x2, maxX3m2, maxX1m1, x2, minX3p1); exchangeData(minX1p3, x2, maxX3m2, maxX1, x2, minX3p1); exchangeData(minX1p2, x2, maxX3m3, maxX1m1, x2, minX3); } - else if (sendDir == DIR_0PP) + else if (sendDir == d0PP) for (int x1 = minX1p2; x1 <= maxX1m2; x1++) { exchangeData(x1, maxX2m3, maxX3m3, x1, minX2, minX3); exchangeData(x1, maxX2m2, maxX3m2, x1, minX2p1, minX3p1); exchangeData(x1, maxX2m3, maxX3m2, x1, minX2, minX3p1); exchangeData(x1, maxX2m2, maxX3m3, x1, minX2p1, minX3); } - else if (sendDir == DIR_0MM) + else if (sendDir == d0MM) for (int x1 = minX1p2; x1 <= maxX1m2; x1++) { exchangeData(x1, minX2p3, minX3p3, x1, maxX2, maxX3); exchangeData(x1, minX2p2, minX3p2, x1, maxX2m1, maxX3m1); exchangeData(x1, minX2p3, minX3p2, x1, maxX2, maxX3m1); exchangeData(x1, minX2p2, minX3p3, x1, maxX2m1, maxX3); } - else if (sendDir == DIR_0PM) + else if (sendDir == d0PM) for (int x1 = minX1p2; x1 <= maxX1m2; x1++) { exchangeData(x1, maxX2m3, minX3p3, x1, minX2, maxX3); exchangeData(x1, maxX2m2, minX3p2, x1, minX2p1, maxX3m1); exchangeData(x1, maxX2m3, minX3p2, x1, minX2, maxX3m1); exchangeData(x1, maxX2m2, minX3p3, x1, minX2p1, maxX3); } - else if (sendDir == DIR_0MP) + else if (sendDir == d0MP) for (int x1 = minX1p2; x1 <= maxX1m2; x1++) { exchangeData(x1, minX2p3, maxX3m3, x1, maxX2, minX3); exchangeData(x1, minX2p2, maxX3m2, x1, maxX2m1, minX3p1); exchangeData(x1, minX2p3, maxX3m2, x1, maxX2, minX3p1); exchangeData(x1, minX2p2, maxX3m3, x1, maxX2m1, minX3); } - else if (sendDir == DIR_MMP) { + else if (sendDir == dMMP) { exchangeData(minX1p3, minX2p3, maxX3m3, maxX1, maxX2, minX3); exchangeData(minX1p2, minX2p2, maxX3m2, maxX1m1, maxX2m1, minX3p1); exchangeData(minX1p3, minX2p2, maxX3m2, maxX1, maxX2m1, minX3p1); @@ -250,7 +250,7 @@ void ThreeDistributionsDoubleGhostLayerFullDirectConnector::exchangeData() exchangeData(minX1p3, minX2p3, maxX3m2, maxX1, maxX2, minX3p1); exchangeData(minX1p3, minX2p2, maxX3m3, maxX1, maxX2m1, minX3); exchangeData(minX1p2, minX2p3, maxX3m3, maxX1m1, maxX2, minX3); - } else if (sendDir == DIR_PMP) { + } else if (sendDir == dPMP) { exchangeData(maxX1m3, minX1p3, maxX3m3, minX1, maxX2, minX3); exchangeData(maxX1m2, minX1p2, maxX3m2, minX1p1, maxX2m1, minX3p1); exchangeData(maxX1m3, minX1p2, maxX3m2, minX1, maxX2m1, minX3p1); @@ -259,7 +259,7 @@ void ThreeDistributionsDoubleGhostLayerFullDirectConnector::exchangeData() exchangeData(maxX1m3, minX1p3, maxX3m2, minX1, maxX2, minX3p1); exchangeData(maxX1m3, minX1p2, maxX3m3, minX1, maxX2m1, minX3); exchangeData(maxX1m2, minX1p3, maxX3m3, minX1p1, maxX2, minX3); - } else if (sendDir == DIR_MPP) { + } else if (sendDir == dMPP) { exchangeData(minX1p3, maxX2m3, maxX3m3, maxX1, minX2, minX3); exchangeData(minX1p2, maxX2m2, maxX3m2, maxX1m1, minX2p1, minX3p1); exchangeData(minX1p3, maxX2m2, maxX3m2, maxX1, minX2p1, minX3p1); @@ -268,7 +268,7 @@ void ThreeDistributionsDoubleGhostLayerFullDirectConnector::exchangeData() exchangeData(minX1p3, maxX2m3, maxX3m2, maxX1, minX2, minX3p1); exchangeData(minX1p3, maxX2m2, maxX3m3, maxX1, minX2p1, minX3); exchangeData(minX1p2, maxX2m3, maxX3m3, maxX1m1, minX2, minX3); - } else if (sendDir == DIR_PPP) { + } else if (sendDir == dPPP) { exchangeData(maxX1m3, maxX2m3, maxX3m3, minX1, minX2, minX3); exchangeData(maxX1m2, maxX2m2, maxX3m2, minX1p1, minX2p1, minX3p1); exchangeData(maxX1m3, maxX2m2, maxX3m2, minX1, minX2p1, minX3p1); @@ -277,7 +277,7 @@ void ThreeDistributionsDoubleGhostLayerFullDirectConnector::exchangeData() exchangeData(maxX1m3, maxX2m3, maxX3m2, minX1, minX2, minX3p1); exchangeData(maxX1m3, maxX2m2, maxX3m3, minX1, minX2p1, minX3); exchangeData(maxX1m2, maxX2m3, maxX3m3, minX1p1, minX2, minX3); - } else if (sendDir == DIR_MMM) { + } else if (sendDir == dMMM) { exchangeData(minX1p3, minX2p3, minX3p3, maxX1, maxX2, maxX3); exchangeData(minX1p2, minX2p2, minX3p2, maxX1m1, maxX2m1, maxX3m1); exchangeData(minX1p3, minX2p2, minX3p2, maxX1, maxX2m1, maxX3m1); @@ -286,7 +286,7 @@ void ThreeDistributionsDoubleGhostLayerFullDirectConnector::exchangeData() exchangeData(minX1p3, minX2p3, minX3p2, maxX1, maxX2, maxX3m1); exchangeData(minX1p3, minX2p2, minX3p3, maxX1, maxX2m1, maxX3); exchangeData(minX1p2, minX2p3, minX3p3, maxX1m1, maxX2, maxX3); - } else if (sendDir == DIR_PMM) { + } else if (sendDir == dPMM) { exchangeData(maxX1m3, minX2p3, minX3p3, minX1, maxX2, maxX3); exchangeData(maxX1m2, minX2p2, minX3p2, minX1p1, maxX2m1, maxX3m1); exchangeData(maxX1m3, minX2p2, minX3p2, minX1, maxX2m1, maxX3m1); @@ -295,7 +295,7 @@ void ThreeDistributionsDoubleGhostLayerFullDirectConnector::exchangeData() exchangeData(maxX1m3, minX2p3, minX3p2, minX1, maxX2, maxX3m1); exchangeData(maxX1m3, minX2p2, minX3p3, minX1, maxX2m1, maxX3); exchangeData(maxX1m2, minX2p3, minX3p3, minX1p1, maxX2, maxX3); - } else if (sendDir == DIR_MPM) { + } else if (sendDir == dMPM) { exchangeData(minX1p3, maxX2m3, minX3p3, maxX1, minX2, maxX3); exchangeData(minX1p2, maxX2m2, minX3p2, maxX1m1, minX2p1, maxX3m1); exchangeData(minX1p3, maxX2m2, minX3p2, maxX1, minX2p1, maxX3m1); @@ -304,7 +304,7 @@ void ThreeDistributionsDoubleGhostLayerFullDirectConnector::exchangeData() exchangeData(minX1p3, maxX2m3, minX3p2, maxX1, minX2, maxX3m1); exchangeData(minX1p3, maxX2m2, minX3p3, maxX1, minX2p1, maxX3); exchangeData(minX1p2, maxX2m3, minX3p3, maxX1m1, minX2, maxX3); - } else if (sendDir == DIR_PPM) { + } else if (sendDir == dPPM) { exchangeData(maxX1m3, maxX2m3, minX3p3, minX1, minX2, maxX3); exchangeData(maxX1m2, maxX2m2, minX3p2, minX1p1, minX2p1, maxX3m1); exchangeData(maxX1m3, maxX2m2, minX3p2, minX1, minX2p1, maxX3m1); diff --git a/src/cpu/VirtualFluidsCore/Connectors/ThreeDistributionsDoubleGhostLayerFullDirectConnector.h b/src/cpu/core/Connectors/ThreeDistributionsDoubleGhostLayerFullDirectConnector.h similarity index 100% rename from src/cpu/VirtualFluidsCore/Connectors/ThreeDistributionsDoubleGhostLayerFullDirectConnector.h rename to src/cpu/core/Connectors/ThreeDistributionsDoubleGhostLayerFullDirectConnector.h diff --git a/src/cpu/VirtualFluidsCore/Connectors/ThreeDistributionsDoubleGhostLayerFullVectorConnector.cpp b/src/cpu/core/Connectors/ThreeDistributionsDoubleGhostLayerFullVectorConnector.cpp similarity index 90% rename from src/cpu/VirtualFluidsCore/Connectors/ThreeDistributionsDoubleGhostLayerFullVectorConnector.cpp rename to src/cpu/core/Connectors/ThreeDistributionsDoubleGhostLayerFullVectorConnector.cpp index a94da62ef440c3f1ff67f48d75d0ba18c34887ec..3f6789e01d31108bb1fe4d879bde5a32a295eb51 100644 --- a/src/cpu/VirtualFluidsCore/Connectors/ThreeDistributionsDoubleGhostLayerFullVectorConnector.cpp +++ b/src/cpu/core/Connectors/ThreeDistributionsDoubleGhostLayerFullVectorConnector.cpp @@ -63,37 +63,37 @@ void ThreeDistributionsDoubleGhostLayerFullVectorConnector::init() int anz = 3*27+1; switch (sendDir) { - case DIR_000: UB_THROW(UbException(UB_EXARGS, "ZERO not allowed")); break; - case DIR_P00: - case DIR_M00: sender->getData().resize(maxX2*maxX3*anz*2, c0o1); break; - case DIR_0P0: - case DIR_0M0: sender->getData().resize(maxX1*maxX3*anz*2, c0o1); break; - case DIR_00P: - case DIR_00M: sender->getData().resize(maxX1*maxX2*anz*2, c0o1); break; + case d000: UB_THROW(UbException(UB_EXARGS, "ZERO not allowed")); break; + case dP00: + case dM00: sender->getData().resize(maxX2*maxX3*anz*2, c0o1); break; + case d0P0: + case d0M0: sender->getData().resize(maxX1*maxX3*anz*2, c0o1); break; + case d00P: + case d00M: sender->getData().resize(maxX1*maxX2*anz*2, c0o1); break; - case DIR_PP0: - case DIR_MM0: - case DIR_PM0: - case DIR_MP0: sender->getData().resize(maxX3*anz*4, c0o1); break; + case dPP0: + case dMM0: + case dPM0: + case dMP0: sender->getData().resize(maxX3*anz*4, c0o1); break; - case DIR_P0P: - case DIR_M0M: - case DIR_P0M: - case DIR_M0P: sender->getData().resize(maxX2*anz*4, c0o1); break; + case dP0P: + case dM0M: + case dP0M: + case dM0P: sender->getData().resize(maxX2*anz*4, c0o1); break; - case DIR_0PP: - case DIR_0MM: - case DIR_0PM: - case DIR_0MP: sender->getData().resize(maxX1*anz*4, c0o1); break; + case d0PP: + case d0MM: + case d0PM: + case d0MP: sender->getData().resize(maxX1*anz*4, c0o1); break; - case DIR_PPP: - case DIR_MMM: - case DIR_PPM: - case DIR_MMP: - case DIR_PMP: - case DIR_MPM: - case DIR_PMM: - case DIR_MPP: sender->getData().resize(anz*8, c0o1); break; + case dPPP: + case dMMM: + case dPPM: + case dMMP: + case dPMP: + case dMPM: + case dPMM: + case dMPP: sender->getData().resize(anz*8, c0o1); break; default: UB_THROW(UbException(UB_EXARGS, "unknown sendDir")); } @@ -143,7 +143,7 @@ void ThreeDistributionsDoubleGhostLayerFullVectorConnector::fillData() int index = 0; // EAST - if (sendDir == DIR_P00) { + if (sendDir == dP00) { for (int x3 = minX3p2; x3 <= maxX3m2; x3++) { for (int x2 = minX2p2; x2 <= maxX2m2; x2++) { fillData(sdata, index, maxX1m3, x2, x3); @@ -152,7 +152,7 @@ void ThreeDistributionsDoubleGhostLayerFullVectorConnector::fillData() } } // WEST - else if (sendDir == DIR_M00) { + else if (sendDir == dM00) { for (int x3 = minX3p2; x3 <= maxX3m2; x3++) { for (int x2 = minX2p2; x2 <= maxX2m2; x2++) { fillData(sdata, index, minX1p3, x2, x3); @@ -161,7 +161,7 @@ void ThreeDistributionsDoubleGhostLayerFullVectorConnector::fillData() } } // NORTH - else if (sendDir == DIR_0P0) { + else if (sendDir == d0P0) { for (int x3 = minX3p2; x3 <= maxX3m2; x3++) { for (int x1 = minX1p2; x1 <= maxX1m2; x1++) { fillData(sdata, index, x1, maxX2m3, x3); @@ -170,7 +170,7 @@ void ThreeDistributionsDoubleGhostLayerFullVectorConnector::fillData() } } // SOUTH - else if (sendDir == DIR_0M0) { + else if (sendDir == d0M0) { for (int x3 = minX3p2; x3 <= maxX3m2; x3++) { for (int x1 = minX1p2; x1 <= maxX1m2; x1++) { fillData(sdata, index, x1, minX2p3, x3); @@ -180,7 +180,7 @@ void ThreeDistributionsDoubleGhostLayerFullVectorConnector::fillData() } // TOP - else if (sendDir == DIR_00P) { + else if (sendDir == d00P) { for (int x2 = minX2p2; x2 <= maxX2m2; x2++) { for (int x1 = minX1p2; x1 <= maxX1m2; x1++) { fillData(sdata, index, x1, x2, maxX3m3); @@ -189,7 +189,7 @@ void ThreeDistributionsDoubleGhostLayerFullVectorConnector::fillData() } } // BOTTOM - else if (sendDir == DIR_00M) { + else if (sendDir == d00M) { for (int x2 = minX2p2; x2 <= maxX2m2; x2++) { for (int x1 = minX1p2; x1 <= maxX1m2; x1++) { fillData(sdata, index, x1, x2, minX3p3); @@ -198,7 +198,7 @@ void ThreeDistributionsDoubleGhostLayerFullVectorConnector::fillData() } } // NORTHEAST - else if (sendDir == DIR_PP0) { + else if (sendDir == dPP0) { for (int x3 = minX3p2; x3 <= maxX3m2; x3++) { fillData(sdata, index, maxX1m3, maxX2m3, x3); fillData(sdata, index, maxX1m2, maxX2m2, x3); @@ -207,7 +207,7 @@ void ThreeDistributionsDoubleGhostLayerFullVectorConnector::fillData() } } // NORTHWEST - else if (sendDir == DIR_MP0) { + else if (sendDir == dMP0) { for (int x3 = minX3p2; x3 <= maxX3m2; x3++) { fillData(sdata, index, minX1p3, maxX2m3, x3); fillData(sdata, index, minX1p2, maxX2m2, x3); @@ -216,7 +216,7 @@ void ThreeDistributionsDoubleGhostLayerFullVectorConnector::fillData() } } // SOUTHWEST - else if (sendDir == DIR_MM0) { + else if (sendDir == dMM0) { for (int x3 = minX3p2; x3 <= maxX3m2; x3++) { fillData(sdata, index, minX1p3, minX2p3, x3); fillData(sdata, index, minX1p2, minX2p2, x3); @@ -225,70 +225,70 @@ void ThreeDistributionsDoubleGhostLayerFullVectorConnector::fillData() } } // SOUTHEAST - else if (sendDir == DIR_PM0) { + else if (sendDir == dPM0) { for (int x3 = minX3p2; x3 <= maxX3m2; x3++) { fillData(sdata, index, maxX1m3, minX2p3, x3); fillData(sdata, index, maxX1m2, minX2p2, x3); fillData(sdata, index, maxX1m3, minX2p2, x3); fillData(sdata, index, maxX1m2, minX2p3, x3); } - } else if (sendDir == DIR_P0P) + } else if (sendDir == dP0P) for (int x2 = minX2p2; x2 <= maxX2m2; x2++) { fillData(sdata, index, maxX1m3, x2, maxX3m3); fillData(sdata, index, maxX1m2, x2, maxX3m2); fillData(sdata, index, maxX1m3, x2, maxX3m2); fillData(sdata, index, maxX1m2, x2, maxX3m3); } - else if (sendDir == DIR_M0M) + else if (sendDir == dM0M) for (int x2 = minX2p2; x2 <= maxX2m2; x2++) { fillData(sdata, index, minX1p3, x2, minX3p3); fillData(sdata, index, minX1p2, x2, minX3p2); fillData(sdata, index, minX1p3, x2, minX3p2); fillData(sdata, index, minX1p2, x2, minX3p3); } - else if (sendDir == DIR_P0M) + else if (sendDir == dP0M) for (int x2 = minX2p2; x2 <= maxX2m2; x2++) { fillData(sdata, index, maxX1m3, x2, minX3p3); fillData(sdata, index, maxX1m2, x2, minX3p2); fillData(sdata, index, maxX1m3, x2, minX3p2); fillData(sdata, index, maxX1m2, x2, minX3p3); } - else if (sendDir == DIR_M0P) + else if (sendDir == dM0P) for (int x2 = minX2p2; x2 <= maxX2m2; x2++) { fillData(sdata, index, minX1p3, x2, maxX3m3); fillData(sdata, index, minX1p2, x2, maxX3m2); fillData(sdata, index, minX1p3, x2, maxX3m2); fillData(sdata, index, minX1p2, x2, maxX3m3); } - else if (sendDir == DIR_0PP) + else if (sendDir == d0PP) for (int x1 = minX1p2; x1 <= maxX1m2; x1++) { fillData(sdata, index, x1, maxX2m3, maxX3m3); fillData(sdata, index, x1, maxX2m2, maxX3m2); fillData(sdata, index, x1, maxX2m3, maxX3m2); fillData(sdata, index, x1, maxX2m2, maxX3m3); } - else if (sendDir == DIR_0MM) + else if (sendDir == d0MM) for (int x1 = minX1p2; x1 <= maxX1m2; x1++) { fillData(sdata, index, x1, minX2p3, minX3p3); fillData(sdata, index, x1, minX2p2, minX3p2); fillData(sdata, index, x1, minX2p3, minX3p2); fillData(sdata, index, x1, minX2p2, minX3p3); } - else if (sendDir == DIR_0PM) + else if (sendDir == d0PM) for (int x1 = minX1p2; x1 <= maxX1m2; x1++) { fillData(sdata, index, x1, maxX2m3, minX3p3); fillData(sdata, index, x1, maxX2m2, minX3p2); fillData(sdata, index, x1, maxX2m3, minX3p2); fillData(sdata, index, x1, maxX2m2, minX3p3); } - else if (sendDir == DIR_0MP) + else if (sendDir == d0MP) for (int x1 = minX1p2; x1 <= maxX1m2; x1++) { fillData(sdata, index, x1, minX2p3, maxX3m3); fillData(sdata, index, x1, minX2p2, maxX3m2); fillData(sdata, index, x1, minX2p3, maxX3m2); fillData(sdata, index, x1, minX2p2, maxX3m3); } - else if (sendDir == DIR_MMP) { + else if (sendDir == dMMP) { fillData(sdata, index, minX1p3, minX2p3, maxX3m3); fillData(sdata, index, minX1p2, minX2p2, maxX3m2); fillData(sdata, index, minX1p3, minX2p2, maxX3m2); @@ -297,7 +297,7 @@ void ThreeDistributionsDoubleGhostLayerFullVectorConnector::fillData() fillData(sdata, index, minX1p3, minX2p3, maxX3m2); fillData(sdata, index, minX1p3, minX2p2, maxX3m3); fillData(sdata, index, minX1p2, minX2p3, maxX3m3); - } else if (sendDir == DIR_PMP) { + } else if (sendDir == dPMP) { fillData(sdata, index, maxX1m3, minX1p3, maxX3m3); fillData(sdata, index, maxX1m2, minX1p2, maxX3m2); fillData(sdata, index, maxX1m3, minX1p2, maxX3m2); @@ -306,7 +306,7 @@ void ThreeDistributionsDoubleGhostLayerFullVectorConnector::fillData() fillData(sdata, index, maxX1m3, minX1p3, maxX3m2); fillData(sdata, index, maxX1m3, minX1p2, maxX3m3); fillData(sdata, index, maxX1m2, minX1p3, maxX3m3); - } else if (sendDir == DIR_MPP) { + } else if (sendDir == dMPP) { fillData(sdata, index, minX1p3, maxX2m3, maxX3m3); fillData(sdata, index, minX1p2, maxX2m2, maxX3m2); fillData(sdata, index, minX1p3, maxX2m2, maxX3m2); @@ -315,7 +315,7 @@ void ThreeDistributionsDoubleGhostLayerFullVectorConnector::fillData() fillData(sdata, index, minX1p3, maxX2m3, maxX3m2); fillData(sdata, index, minX1p3, maxX2m2, maxX3m3); fillData(sdata, index, minX1p2, maxX2m3, maxX3m3); - } else if (sendDir == DIR_PPP) { + } else if (sendDir == dPPP) { fillData(sdata, index, maxX1m3, maxX2m3, maxX3m3); fillData(sdata, index, maxX1m2, maxX2m2, maxX3m2); fillData(sdata, index, maxX1m3, maxX2m2, maxX3m2); @@ -324,7 +324,7 @@ void ThreeDistributionsDoubleGhostLayerFullVectorConnector::fillData() fillData(sdata, index, maxX1m3, maxX2m3, maxX3m2); fillData(sdata, index, maxX1m3, maxX2m2, maxX3m3); fillData(sdata, index, maxX1m2, maxX2m3, maxX3m3); - } else if (sendDir == DIR_MMM) { + } else if (sendDir == dMMM) { fillData(sdata, index, minX1p3, minX2p3, minX3p3); fillData(sdata, index, minX1p2, minX2p2, minX3p2); fillData(sdata, index, minX1p3, minX2p2, minX3p2); @@ -333,7 +333,7 @@ void ThreeDistributionsDoubleGhostLayerFullVectorConnector::fillData() fillData(sdata, index, minX1p3, minX2p3, minX3p2); fillData(sdata, index, minX1p3, minX2p2, minX3p3); fillData(sdata, index, minX1p2, minX2p3, minX3p3); - } else if (sendDir == DIR_PMM) { + } else if (sendDir == dPMM) { fillData(sdata, index, maxX1m3, minX2p3, minX3p3); fillData(sdata, index, maxX1m2, minX2p2, minX3p2); fillData(sdata, index, maxX1m3, minX2p2, minX3p2); @@ -342,7 +342,7 @@ void ThreeDistributionsDoubleGhostLayerFullVectorConnector::fillData() fillData(sdata, index, maxX1m3, minX2p3, minX3p2); fillData(sdata, index, maxX1m3, minX2p2, minX3p3); fillData(sdata, index, maxX1m2, minX2p3, minX3p3); - } else if (sendDir == DIR_MPM) { + } else if (sendDir == dMPM) { fillData(sdata, index, minX1p3, maxX2m3, minX3p3); fillData(sdata, index, minX1p2, maxX2m2, minX3p2); fillData(sdata, index, minX1p3, maxX2m2, minX3p2); @@ -351,7 +351,7 @@ void ThreeDistributionsDoubleGhostLayerFullVectorConnector::fillData() fillData(sdata, index, minX1p3, maxX2m3, minX3p2); fillData(sdata, index, minX1p3, maxX2m2, minX3p3); fillData(sdata, index, minX1p2, maxX2m3, minX3p3); - } else if (sendDir == DIR_PPM) { + } else if (sendDir == dPPM) { fillData(sdata, index, maxX1m3, maxX2m3, minX3p3); fillData(sdata, index, maxX1m2, maxX2m2, minX3p2); fillData(sdata, index, maxX1m3, maxX2m2, minX3p2); @@ -407,7 +407,7 @@ void ThreeDistributionsDoubleGhostLayerFullVectorConnector::distributeData() int maxX3m2 = maxX3 - 2; //int maxX3m3 = maxX3 - 3; - if (sendDir == DIR_M00) { + if (sendDir == dM00) { for (int x3 = minX3p2; x3 <= maxX3m2; x3++) { for (int x2 = minX2p2; x2 <= maxX2m2; x2++) { distributeData(rdata, index, minX1, x2, x3); @@ -415,7 +415,7 @@ void ThreeDistributionsDoubleGhostLayerFullVectorConnector::distributeData() } } } - else if (sendDir == DIR_P00) { + else if (sendDir == dP00) { for (int x3 = minX3p2; x3 <= maxX3m2; x3++) { for (int x2 = minX2p2; x2 <= maxX2m2; x2++) { distributeData(rdata, index, maxX1, x2, x3); @@ -423,7 +423,7 @@ void ThreeDistributionsDoubleGhostLayerFullVectorConnector::distributeData() } } } - else if (sendDir == DIR_0M0) { + else if (sendDir == d0M0) { for (int x3 = minX3p2; x3 <= maxX3m2; x3++) { for (int x1 = minX1p2; x1 <= maxX1m2; x1++) { distributeData(rdata, index, x1, minX2, x3); @@ -431,7 +431,7 @@ void ThreeDistributionsDoubleGhostLayerFullVectorConnector::distributeData() } } } - else if (sendDir == DIR_0P0) { + else if (sendDir == d0P0) { for (int x3 = minX3p2; x3 <= maxX3m2; x3++) { for (int x1 = minX1p2; x1 <= maxX1m2; x1++) { distributeData(rdata, index, x1, maxX2, x3); @@ -439,7 +439,7 @@ void ThreeDistributionsDoubleGhostLayerFullVectorConnector::distributeData() } } } - else if (sendDir == DIR_00M) { + else if (sendDir == d00M) { for (int x2 = minX2p2; x2 <= maxX2m2; x2++) { for (int x1 = minX1p2; x1 <= maxX1m2; x1++) { distributeData(rdata, index, x1, x2, minX3); @@ -447,7 +447,7 @@ void ThreeDistributionsDoubleGhostLayerFullVectorConnector::distributeData() } } } - else if (sendDir == DIR_00P) { + else if (sendDir == d00P) { for (int x2 = minX2p2; x2 <= maxX2m2; x2++) { for (int x1 = minX1p2; x1 <= maxX1m2; x1++) { distributeData(rdata, index, x1, x2, maxX3); @@ -455,7 +455,7 @@ void ThreeDistributionsDoubleGhostLayerFullVectorConnector::distributeData() } } } - else if (sendDir == DIR_MM0) { + else if (sendDir == dMM0) { for (int x3 = minX3p2; x3 <= maxX3m2; x3++) { distributeData(rdata, index, minX1, minX2, x3); distributeData(rdata, index, minX1p1, minX2p1, x3); @@ -463,7 +463,7 @@ void ThreeDistributionsDoubleGhostLayerFullVectorConnector::distributeData() distributeData(rdata, index, minX1p1, minX2, x3); } } - else if (sendDir == DIR_PM0) { + else if (sendDir == dPM0) { for (int x3 = minX3p2; x3 <= maxX3m2; x3++) { distributeData(rdata, index, maxX1, minX2, x3); distributeData(rdata, index, maxX1m1, minX2p1, x3); @@ -471,7 +471,7 @@ void ThreeDistributionsDoubleGhostLayerFullVectorConnector::distributeData() distributeData(rdata, index, maxX1m1, minX2, x3); } } - else if (sendDir == DIR_PP0) { + else if (sendDir == dPP0) { for (int x3 = minX3p2; x3 <= maxX3m2; x3++) { distributeData(rdata, index, maxX1, maxX2, x3); distributeData(rdata, index, maxX1m1, maxX2m1, x3); @@ -479,70 +479,70 @@ void ThreeDistributionsDoubleGhostLayerFullVectorConnector::distributeData() distributeData(rdata, index, maxX1m1, maxX2, x3); } } - else if (sendDir == DIR_MP0) { + else if (sendDir == dMP0) { for (int x3 = minX3p2; x3 <= maxX3m2; x3++) { distributeData(rdata, index, minX1, maxX2, x3); distributeData(rdata, index, minX1p1, maxX2m1, x3); distributeData(rdata, index, minX1, maxX2m1, x3); distributeData(rdata, index, minX1p1, maxX2, x3); } - } else if (sendDir == DIR_M0M) + } else if (sendDir == dM0M) for (int x2 = minX2p2; x2 <= maxX2m2; x2++) { distributeData(rdata, index, minX1, x2, minX3); distributeData(rdata, index, minX1p1, x2, minX3p1); distributeData(rdata, index, minX1, x2, minX3p1); distributeData(rdata, index, minX1p1, x2, minX3); } - else if (sendDir == DIR_P0P) + else if (sendDir == dP0P) for (int x2 = minX2p2; x2 <= maxX2m2; x2++) { distributeData(rdata, index, maxX1, x2, maxX3); distributeData(rdata, index, maxX1m1, x2, maxX3m1); distributeData(rdata, index, maxX1, x2, maxX3m1); distributeData(rdata, index, maxX1m1, x2, maxX3); } - else if (sendDir == DIR_M0P) + else if (sendDir == dM0P) for (int x2 = minX2p2; x2 <= maxX2m2; x2++) { distributeData(rdata, index, minX1, x2, maxX3); distributeData(rdata, index, minX1p1, x2, maxX3m1); distributeData(rdata, index, minX1, x2, maxX3m1); distributeData(rdata, index, minX1p1, x2, maxX3); } - else if (sendDir == DIR_P0M) + else if (sendDir == dP0M) for (int x2 = minX2p2; x2 <= maxX2m2; x2++) { distributeData(rdata, index, maxX1, x2, minX3); distributeData(rdata, index, maxX1m1, x2, minX3p1); distributeData(rdata, index, maxX1, x2, minX3p1); distributeData(rdata, index, maxX1m1, x2, minX3); } - else if (sendDir == DIR_0MM) + else if (sendDir == d0MM) for (int x1 = minX1p2; x1 <= maxX1m2; x1++) { distributeData(rdata, index, x1, minX2, minX3); distributeData(rdata, index, x1, minX2p1, minX3p1); distributeData(rdata, index, x1, minX2, minX3p1); distributeData(rdata, index, x1, minX2p1, minX3); } - else if (sendDir == DIR_0PP) + else if (sendDir == d0PP) for (int x1 = minX1p2; x1 <= maxX1m2; x1++) { distributeData(rdata, index, x1, maxX2, maxX3); distributeData(rdata, index, x1, maxX2m1, maxX3m1); distributeData(rdata, index, x1, maxX2, maxX3m1); distributeData(rdata, index, x1, maxX2m1, maxX3); } - else if (sendDir == DIR_0MP) + else if (sendDir == d0MP) for (int x1 = minX1p2; x1 <= maxX1m2; x1++) { distributeData(rdata, index, x1, minX2, maxX3); distributeData(rdata, index, x1, minX2p1, maxX3m1); distributeData(rdata, index, x1, minX2, maxX3m1); distributeData(rdata, index, x1, minX2p1, maxX3); } - else if (sendDir == DIR_0PM) + else if (sendDir == d0PM) for (int x1 = minX1p2; x1 <= maxX1m2; x1++) { distributeData(rdata, index, x1, maxX2, minX3); distributeData(rdata, index, x1, maxX2m1, minX3p1); distributeData(rdata, index, x1, maxX2, minX3p1); distributeData(rdata, index, x1, maxX2m1, minX3); } - else if (sendDir == DIR_PPM) { + else if (sendDir == dPPM) { distributeData(rdata, index, maxX1, maxX2, minX3); distributeData(rdata, index, maxX1m1, maxX2m1, minX3p1); distributeData(rdata, index, maxX1, maxX2m1, minX3p1); @@ -551,7 +551,7 @@ void ThreeDistributionsDoubleGhostLayerFullVectorConnector::distributeData() distributeData(rdata, index, maxX1, maxX2, minX3p1); distributeData(rdata, index, maxX1, maxX2m1, minX3); distributeData(rdata, index, maxX1m1, maxX2, minX3); - } else if (sendDir == DIR_MPM) { + } else if (sendDir == dMPM) { distributeData(rdata, index, minX1, maxX2, minX3); distributeData(rdata, index, minX1p1, maxX2m1, minX3p1); distributeData(rdata, index, minX1, maxX2m1, minX3p1); @@ -560,7 +560,7 @@ void ThreeDistributionsDoubleGhostLayerFullVectorConnector::distributeData() distributeData(rdata, index, minX1, maxX2, minX3p1); distributeData(rdata, index, minX1, maxX2m1, minX3); distributeData(rdata, index, minX1p1, maxX2, minX3); - } else if (sendDir == DIR_PMM) { + } else if (sendDir == dPMM) { distributeData(rdata, index, maxX1, minX2, minX3); distributeData(rdata, index, maxX1m1, minX2p1, minX3p1); distributeData(rdata, index, maxX1, minX2p1, minX3p1); @@ -569,7 +569,7 @@ void ThreeDistributionsDoubleGhostLayerFullVectorConnector::distributeData() distributeData(rdata, index, maxX1, minX2, minX3p1); distributeData(rdata, index, maxX1, minX2p1, minX3); distributeData(rdata, index, maxX1m1, minX2, minX3); - } else if (sendDir == DIR_MMM) { + } else if (sendDir == dMMM) { distributeData(rdata, index, minX1, minX2, minX3); distributeData(rdata, index, minX1p1, minX2p1, minX3p1); distributeData(rdata, index, minX1, minX2p1, minX3p1); @@ -578,7 +578,7 @@ void ThreeDistributionsDoubleGhostLayerFullVectorConnector::distributeData() distributeData(rdata, index, minX1, minX2, minX3p1); distributeData(rdata, index, minX1, minX2p1, minX3); distributeData(rdata, index, minX1p1, minX2, minX3); - } else if (sendDir == DIR_PPP) { + } else if (sendDir == dPPP) { distributeData(rdata, index, maxX1, maxX2, maxX3); distributeData(rdata, index, maxX1m1, maxX2m1, maxX3m1); distributeData(rdata, index, maxX1, maxX2m1, maxX3m1); @@ -587,7 +587,7 @@ void ThreeDistributionsDoubleGhostLayerFullVectorConnector::distributeData() distributeData(rdata, index, maxX1, maxX2, maxX3m1); distributeData(rdata, index, maxX1, maxX2m1, maxX3); distributeData(rdata, index, maxX1m1, maxX2, maxX3); - } else if (sendDir == DIR_MPP) { + } else if (sendDir == dMPP) { distributeData(rdata, index, minX1, maxX2, maxX3); distributeData(rdata, index, minX1p1, maxX2m1, maxX3m1); distributeData(rdata, index, minX1, maxX2m1, maxX3m1); @@ -596,7 +596,7 @@ void ThreeDistributionsDoubleGhostLayerFullVectorConnector::distributeData() distributeData(rdata, index, minX1, maxX2, maxX3m1); distributeData(rdata, index, minX1, maxX2m1, maxX3); distributeData(rdata, index, minX1p1, maxX2, maxX3); - } else if (sendDir == DIR_PMP) { + } else if (sendDir == dPMP) { distributeData(rdata, index, maxX1, minX2, maxX3); distributeData(rdata, index, maxX1m1, minX2p1, maxX3m1); distributeData(rdata, index, maxX1, minX2p1, maxX3m1); @@ -605,7 +605,7 @@ void ThreeDistributionsDoubleGhostLayerFullVectorConnector::distributeData() distributeData(rdata, index, maxX1, minX2, maxX3m1); distributeData(rdata, index, maxX1, minX2p1, maxX3); distributeData(rdata, index, maxX1m1, minX2, maxX3); - } else if (sendDir == DIR_MMP) { + } else if (sendDir == dMMP) { distributeData(rdata, index, minX1, minX2, maxX3); distributeData(rdata, index, minX1p1, minX2p1, maxX3m1); distributeData(rdata, index, minX1, minX2p1, maxX3m1); diff --git a/src/cpu/VirtualFluidsCore/Connectors/ThreeDistributionsDoubleGhostLayerFullVectorConnector.h b/src/cpu/core/Connectors/ThreeDistributionsDoubleGhostLayerFullVectorConnector.h similarity index 100% rename from src/cpu/VirtualFluidsCore/Connectors/ThreeDistributionsDoubleGhostLayerFullVectorConnector.h rename to src/cpu/core/Connectors/ThreeDistributionsDoubleGhostLayerFullVectorConnector.h diff --git a/src/cpu/VirtualFluidsCore/Connectors/ThreeDistributionsFullDirectConnector.cpp b/src/cpu/core/Connectors/ThreeDistributionsFullDirectConnector.cpp similarity index 100% rename from src/cpu/VirtualFluidsCore/Connectors/ThreeDistributionsFullDirectConnector.cpp rename to src/cpu/core/Connectors/ThreeDistributionsFullDirectConnector.cpp diff --git a/src/cpu/VirtualFluidsCore/Connectors/ThreeDistributionsFullDirectConnector.h b/src/cpu/core/Connectors/ThreeDistributionsFullDirectConnector.h similarity index 100% rename from src/cpu/VirtualFluidsCore/Connectors/ThreeDistributionsFullDirectConnector.h rename to src/cpu/core/Connectors/ThreeDistributionsFullDirectConnector.h diff --git a/src/cpu/VirtualFluidsCore/Connectors/ThreeDistributionsFullVectorConnector.cpp b/src/cpu/core/Connectors/ThreeDistributionsFullVectorConnector.cpp similarity index 79% rename from src/cpu/VirtualFluidsCore/Connectors/ThreeDistributionsFullVectorConnector.cpp rename to src/cpu/core/Connectors/ThreeDistributionsFullVectorConnector.cpp index 65315b4f33ea1d64df96cb919d2335f8130e950e..25d838b81f6dad17ba81c15882c50b4b30be2b40 100644 --- a/src/cpu/VirtualFluidsCore/Connectors/ThreeDistributionsFullVectorConnector.cpp +++ b/src/cpu/core/Connectors/ThreeDistributionsFullVectorConnector.cpp @@ -62,37 +62,37 @@ void ThreeDistributionsFullVectorConnector::init() int anz = 3*27; switch (sendDir) { - case DIR_000: UB_THROW(UbException(UB_EXARGS, "ZERO not allowed")); break; - case DIR_P00: - case DIR_M00: sender->getData().resize(maxX2*maxX3*anz, c0o1); break; - case DIR_0P0: - case DIR_0M0: sender->getData().resize(maxX1*maxX3*anz, c0o1); break; - case DIR_00P: - case DIR_00M: sender->getData().resize(maxX1*maxX2*anz, c0o1); break; + case d000: UB_THROW(UbException(UB_EXARGS, "ZERO not allowed")); break; + case dP00: + case dM00: sender->getData().resize(maxX2*maxX3*anz, c0o1); break; + case d0P0: + case d0M0: sender->getData().resize(maxX1*maxX3*anz, c0o1); break; + case d00P: + case d00M: sender->getData().resize(maxX1*maxX2*anz, c0o1); break; - case DIR_PP0: - case DIR_MM0: - case DIR_PM0: - case DIR_MP0: sender->getData().resize(maxX3*anz, c0o1); break; + case dPP0: + case dMM0: + case dPM0: + case dMP0: sender->getData().resize(maxX3*anz, c0o1); break; - case DIR_P0P: - case DIR_M0M: - case DIR_P0M: - case DIR_M0P: sender->getData().resize(maxX2*anz, c0o1); break; + case dP0P: + case dM0M: + case dP0M: + case dM0P: sender->getData().resize(maxX2*anz, c0o1); break; - case DIR_0PP: - case DIR_0MM: - case DIR_0PM: - case DIR_0MP: sender->getData().resize(maxX1*anz, c0o1); break; + case d0PP: + case d0MM: + case d0PM: + case d0MP: sender->getData().resize(maxX1*anz, c0o1); break; - case DIR_PPP: - case DIR_MMM: - case DIR_PPM: - case DIR_MMP: - case DIR_PMP: - case DIR_MPM: - case DIR_PMM: - case DIR_MPP: sender->getData().resize(anz, c0o1); break; + case dPPP: + case dMMM: + case dPPM: + case dMMP: + case dPMP: + case dMPM: + case dPMM: + case dMPP: sender->getData().resize(anz, c0o1); break; default: UB_THROW(UbException(UB_EXARGS, "unknown sendDir")); } diff --git a/src/cpu/VirtualFluidsCore/Connectors/ThreeDistributionsFullVectorConnector.h b/src/cpu/core/Connectors/ThreeDistributionsFullVectorConnector.h similarity index 100% rename from src/cpu/VirtualFluidsCore/Connectors/ThreeDistributionsFullVectorConnector.h rename to src/cpu/core/Connectors/ThreeDistributionsFullVectorConnector.h diff --git a/src/cpu/VirtualFluidsCore/Connectors/TransmitterType.h b/src/cpu/core/Connectors/TransmitterType.h similarity index 100% rename from src/cpu/VirtualFluidsCore/Connectors/TransmitterType.h rename to src/cpu/core/Connectors/TransmitterType.h diff --git a/src/cpu/VirtualFluidsCore/Connectors/TwoDistributionsDoubleGhostLayerFullDirectConnector.cpp b/src/cpu/core/Connectors/TwoDistributionsDoubleGhostLayerFullDirectConnector.cpp similarity index 94% rename from src/cpu/VirtualFluidsCore/Connectors/TwoDistributionsDoubleGhostLayerFullDirectConnector.cpp rename to src/cpu/core/Connectors/TwoDistributionsDoubleGhostLayerFullDirectConnector.cpp index 121fef6b86040aab370e9ffd925bea0033d61446..7413f237ecc603a73ad6d39a61689b0f9785b042 100644 --- a/src/cpu/VirtualFluidsCore/Connectors/TwoDistributionsDoubleGhostLayerFullDirectConnector.cpp +++ b/src/cpu/core/Connectors/TwoDistributionsDoubleGhostLayerFullDirectConnector.cpp @@ -94,7 +94,7 @@ void TwoDistributionsDoubleGhostLayerFullDirectConnector::exchangeData() int maxX3m3 = maxX3 - 3; // EAST - if (sendDir == DIR_P00) { + if (sendDir == dP00) { for (int x3 = minX3p2; x3 <= maxX3m2; x3++) { for (int x2 = minX2p2; x2 <= maxX2m2; x2++) { exchangeData(maxX1m3, x2, x3, minX1, x2, x3); @@ -103,7 +103,7 @@ void TwoDistributionsDoubleGhostLayerFullDirectConnector::exchangeData() } } // WEST - else if (sendDir == DIR_M00) { + else if (sendDir == dM00) { for (int x3 = minX3p2; x3 <= maxX3m2; x3++) { for (int x2 = minX2p2; x2 <= maxX2m2; x2++) { exchangeData(minX1p3, x2, x3, maxX1, x2, x3); @@ -112,7 +112,7 @@ void TwoDistributionsDoubleGhostLayerFullDirectConnector::exchangeData() } } // NORTH - else if (sendDir == DIR_0P0) { + else if (sendDir == d0P0) { for (int x3 = minX3p2; x3 <= maxX3m2; x3++) { for (int x1 = minX1p2; x1 <= maxX1m2; x1++) { exchangeData(x1, maxX2m3, x3, x1, minX2, x3); @@ -121,7 +121,7 @@ void TwoDistributionsDoubleGhostLayerFullDirectConnector::exchangeData() } } // SOUTH - else if (sendDir == DIR_0M0) { + else if (sendDir == d0M0) { for (int x3 = minX3p2; x3 <= maxX3m2; x3++) { for (int x1 = minX1p2; x1 <= maxX1m2; x1++) { exchangeData(x1, minX2p3, x3, x1, maxX2, x3); @@ -131,7 +131,7 @@ void TwoDistributionsDoubleGhostLayerFullDirectConnector::exchangeData() } // TOP - else if (sendDir == DIR_00P) { + else if (sendDir == d00P) { for (int x2 = minX2p2; x2 <= maxX2m2; x2++) { for (int x1 = minX1p2; x1 <= maxX1m2; x1++) { exchangeData(x1, x2, maxX3m3, x1, x2, minX3); @@ -140,7 +140,7 @@ void TwoDistributionsDoubleGhostLayerFullDirectConnector::exchangeData() } } // BOTTOM - else if (sendDir == DIR_00M) { + else if (sendDir == d00M) { for (int x2 = minX2p2; x2 <= maxX2m2; x2++) { for (int x1 = minX1p2; x1 <= maxX1m2; x1++) { exchangeData(x1, x2, minX3p3, x1, x2, maxX3); @@ -149,7 +149,7 @@ void TwoDistributionsDoubleGhostLayerFullDirectConnector::exchangeData() } } // NORTHEAST - else if (sendDir == DIR_PP0) { + else if (sendDir == dPP0) { for (int x3 = minX3p2; x3 <= maxX3m2; x3++) { exchangeData(maxX1m3, maxX2m3, x3, minX1, minX2, x3); exchangeData(maxX1m2, maxX2m2, x3, minX1p1, minX2p1, x3); @@ -158,7 +158,7 @@ void TwoDistributionsDoubleGhostLayerFullDirectConnector::exchangeData() } } // NORTHWEST - else if (sendDir == DIR_MP0) { + else if (sendDir == dMP0) { for (int x3 = minX3p2; x3 <= maxX3m2; x3++) { exchangeData(minX1p3, maxX2m3, x3, maxX1, minX2, x3); exchangeData(minX1p2, maxX2m2, x3, maxX1m1, minX2p1, x3); @@ -167,7 +167,7 @@ void TwoDistributionsDoubleGhostLayerFullDirectConnector::exchangeData() } } // SOUTHWEST - else if (sendDir == DIR_MM0) { + else if (sendDir == dMM0) { for (int x3 = minX3p2; x3 <= maxX3m2; x3++) { exchangeData(minX1p3, minX2p3, x3, maxX1, maxX2, x3); exchangeData(minX1p2, minX2p2, x3, maxX1m1, maxX2m1, x3); @@ -176,70 +176,70 @@ void TwoDistributionsDoubleGhostLayerFullDirectConnector::exchangeData() } } // SOUTHEAST - else if (sendDir == DIR_PM0) { + else if (sendDir == dPM0) { for (int x3 = minX3p2; x3 <= maxX3m2; x3++) { exchangeData(maxX1m3, minX2p3, x3, minX1, maxX2, x3); exchangeData(maxX1m2, minX2p2, x3, minX1p1, maxX2m1, x3); exchangeData(maxX1m3, minX2p2, x3, minX1, maxX2m1, x3); exchangeData(maxX1m2, minX2p3, x3, minX1p1, maxX2, x3); } - } else if (sendDir == DIR_P0P) + } else if (sendDir == dP0P) for (int x2 = minX2p2; x2 <= maxX2m2; x2++) { exchangeData(maxX1m3, x2, maxX3m3, minX1, x2, minX3); exchangeData(maxX1m2, x2, maxX3m2, minX1p1, x2, minX3p1); exchangeData(maxX1m3, x2, maxX3m2, minX1, x2, minX3p1); exchangeData(maxX1m2, x2, maxX3m3, minX1p1, x2, minX3); } - else if (sendDir == DIR_M0M) + else if (sendDir == dM0M) for (int x2 = minX2p2; x2 <= maxX2m2; x2++) { exchangeData(minX1p3, x2, minX3p3, maxX1, x2, maxX3); exchangeData(minX1p2, x2, minX3p2, maxX1m1, x2, maxX3m1); exchangeData(minX1p3, x2, minX3p2, maxX1, x2, maxX3m1); exchangeData(minX1p2, x2, minX3p3, maxX1m1, x2, maxX3); } - else if (sendDir == DIR_P0M) + else if (sendDir == dP0M) for (int x2 = minX2p2; x2 <= maxX2m2; x2++) { exchangeData(maxX1m3, x2, minX3p3, minX1, x2, maxX3); exchangeData(maxX1m2, x2, minX3p2, minX1p1, x2, maxX3m1); exchangeData(maxX1m3, x2, minX3p2, minX1, x2, maxX3m1); exchangeData(maxX1m2, x2, minX3p3, minX1p1, x2, maxX3); } - else if (sendDir == DIR_M0P) + else if (sendDir == dM0P) for (int x2 = minX2p2; x2 <= maxX2m2; x2++) { exchangeData(minX1p3, x2, maxX3m3, maxX1, x2, minX3); exchangeData(minX1p2, x2, maxX3m2, maxX1m1, x2, minX3p1); exchangeData(minX1p3, x2, maxX3m2, maxX1, x2, minX3p1); exchangeData(minX1p2, x2, maxX3m3, maxX1m1, x2, minX3); } - else if (sendDir == DIR_0PP) + else if (sendDir == d0PP) for (int x1 = minX1p2; x1 <= maxX1m2; x1++) { exchangeData(x1, maxX2m3, maxX3m3, x1, minX2, minX3); exchangeData(x1, maxX2m2, maxX3m2, x1, minX2p1, minX3p1); exchangeData(x1, maxX2m3, maxX3m2, x1, minX2, minX3p1); exchangeData(x1, maxX2m2, maxX3m3, x1, minX2p1, minX3); } - else if (sendDir == DIR_0MM) + else if (sendDir == d0MM) for (int x1 = minX1p2; x1 <= maxX1m2; x1++) { exchangeData(x1, minX2p3, minX3p3, x1, maxX2, maxX3); exchangeData(x1, minX2p2, minX3p2, x1, maxX2m1, maxX3m1); exchangeData(x1, minX2p3, minX3p2, x1, maxX2, maxX3m1); exchangeData(x1, minX2p2, minX3p3, x1, maxX2m1, maxX3); } - else if (sendDir == DIR_0PM) + else if (sendDir == d0PM) for (int x1 = minX1p2; x1 <= maxX1m2; x1++) { exchangeData(x1, maxX2m3, minX3p3, x1, minX2, maxX3); exchangeData(x1, maxX2m2, minX3p2, x1, minX2p1, maxX3m1); exchangeData(x1, maxX2m3, minX3p2, x1, minX2, maxX3m1); exchangeData(x1, maxX2m2, minX3p3, x1, minX2p1, maxX3); } - else if (sendDir == DIR_0MP) + else if (sendDir == d0MP) for (int x1 = minX1p2; x1 <= maxX1m2; x1++) { exchangeData(x1, minX2p3, maxX3m3, x1, maxX2, minX3); exchangeData(x1, minX2p2, maxX3m2, x1, maxX2m1, minX3p1); exchangeData(x1, minX2p3, maxX3m2, x1, maxX2, minX3p1); exchangeData(x1, minX2p2, maxX3m3, x1, maxX2m1, minX3); } - else if (sendDir == DIR_MMP) { + else if (sendDir == dMMP) { exchangeData(minX1p3, minX2p3, maxX3m3, maxX1, maxX2, minX3); exchangeData(minX1p2, minX2p2, maxX3m2, maxX1m1, maxX2m1, minX3p1); exchangeData(minX1p3, minX2p2, maxX3m2, maxX1, maxX2m1, minX3p1); @@ -248,7 +248,7 @@ void TwoDistributionsDoubleGhostLayerFullDirectConnector::exchangeData() exchangeData(minX1p3, minX2p3, maxX3m2, maxX1, maxX2, minX3p1); exchangeData(minX1p3, minX2p2, maxX3m3, maxX1, maxX2m1, minX3); exchangeData(minX1p2, minX2p3, maxX3m3, maxX1m1, maxX2, minX3); - } else if (sendDir == DIR_PMP) { + } else if (sendDir == dPMP) { exchangeData(maxX1m3, minX1p3, maxX3m3, minX1, maxX2, minX3); exchangeData(maxX1m2, minX1p2, maxX3m2, minX1p1, maxX2m1, minX3p1); exchangeData(maxX1m3, minX1p2, maxX3m2, minX1, maxX2m1, minX3p1); @@ -257,7 +257,7 @@ void TwoDistributionsDoubleGhostLayerFullDirectConnector::exchangeData() exchangeData(maxX1m3, minX1p3, maxX3m2, minX1, maxX2, minX3p1); exchangeData(maxX1m3, minX1p2, maxX3m3, minX1, maxX2m1, minX3); exchangeData(maxX1m2, minX1p3, maxX3m3, minX1p1, maxX2, minX3); - } else if (sendDir == DIR_MPP) { + } else if (sendDir == dMPP) { exchangeData(minX1p3, maxX2m3, maxX3m3, maxX1, minX2, minX3); exchangeData(minX1p2, maxX2m2, maxX3m2, maxX1m1, minX2p1, minX3p1); exchangeData(minX1p3, maxX2m2, maxX3m2, maxX1, minX2p1, minX3p1); @@ -266,7 +266,7 @@ void TwoDistributionsDoubleGhostLayerFullDirectConnector::exchangeData() exchangeData(minX1p3, maxX2m3, maxX3m2, maxX1, minX2, minX3p1); exchangeData(minX1p3, maxX2m2, maxX3m3, maxX1, minX2p1, minX3); exchangeData(minX1p2, maxX2m3, maxX3m3, maxX1m1, minX2, minX3); - } else if (sendDir == DIR_PPP) { + } else if (sendDir == dPPP) { exchangeData(maxX1m3, maxX2m3, maxX3m3, minX1, minX2, minX3); exchangeData(maxX1m2, maxX2m2, maxX3m2, minX1p1, minX2p1, minX3p1); exchangeData(maxX1m3, maxX2m2, maxX3m2, minX1, minX2p1, minX3p1); @@ -275,7 +275,7 @@ void TwoDistributionsDoubleGhostLayerFullDirectConnector::exchangeData() exchangeData(maxX1m3, maxX2m3, maxX3m2, minX1, minX2, minX3p1); exchangeData(maxX1m3, maxX2m2, maxX3m3, minX1, minX2p1, minX3); exchangeData(maxX1m2, maxX2m3, maxX3m3, minX1p1, minX2, minX3); - } else if (sendDir == DIR_MMM) { + } else if (sendDir == dMMM) { exchangeData(minX1p3, minX2p3, minX3p3, maxX1, maxX2, maxX3); exchangeData(minX1p2, minX2p2, minX3p2, maxX1m1, maxX2m1, maxX3m1); exchangeData(minX1p3, minX2p2, minX3p2, maxX1, maxX2m1, maxX3m1); @@ -284,7 +284,7 @@ void TwoDistributionsDoubleGhostLayerFullDirectConnector::exchangeData() exchangeData(minX1p3, minX2p3, minX3p2, maxX1, maxX2, maxX3m1); exchangeData(minX1p3, minX2p2, minX3p3, maxX1, maxX2m1, maxX3); exchangeData(minX1p2, minX2p3, minX3p3, maxX1m1, maxX2, maxX3); - } else if (sendDir == DIR_PMM) { + } else if (sendDir == dPMM) { exchangeData(maxX1m3, minX2p3, minX3p3, minX1, maxX2, maxX3); exchangeData(maxX1m2, minX2p2, minX3p2, minX1p1, maxX2m1, maxX3m1); exchangeData(maxX1m3, minX2p2, minX3p2, minX1, maxX2m1, maxX3m1); @@ -293,7 +293,7 @@ void TwoDistributionsDoubleGhostLayerFullDirectConnector::exchangeData() exchangeData(maxX1m3, minX2p3, minX3p2, minX1, maxX2, maxX3m1); exchangeData(maxX1m3, minX2p2, minX3p3, minX1, maxX2m1, maxX3); exchangeData(maxX1m2, minX2p3, minX3p3, minX1p1, maxX2, maxX3); - } else if (sendDir == DIR_MPM) { + } else if (sendDir == dMPM) { exchangeData(minX1p3, maxX2m3, minX3p3, maxX1, minX2, maxX3); exchangeData(minX1p2, maxX2m2, minX3p2, maxX1m1, minX2p1, maxX3m1); exchangeData(minX1p3, maxX2m2, minX3p2, maxX1, minX2p1, maxX3m1); @@ -302,7 +302,7 @@ void TwoDistributionsDoubleGhostLayerFullDirectConnector::exchangeData() exchangeData(minX1p3, maxX2m3, minX3p2, maxX1, minX2, maxX3m1); exchangeData(minX1p3, maxX2m2, minX3p3, maxX1, minX2p1, maxX3); exchangeData(minX1p2, maxX2m3, minX3p3, maxX1m1, minX2, maxX3); - } else if (sendDir == DIR_PPM) { + } else if (sendDir == dPPM) { exchangeData(maxX1m3, maxX2m3, minX3p3, minX1, minX2, maxX3); exchangeData(maxX1m2, maxX2m2, minX3p2, minX1p1, minX2p1, maxX3m1); exchangeData(maxX1m3, maxX2m2, minX3p2, minX1, minX2p1, maxX3m1); diff --git a/src/cpu/VirtualFluidsCore/Connectors/TwoDistributionsDoubleGhostLayerFullDirectConnector.h b/src/cpu/core/Connectors/TwoDistributionsDoubleGhostLayerFullDirectConnector.h similarity index 100% rename from src/cpu/VirtualFluidsCore/Connectors/TwoDistributionsDoubleGhostLayerFullDirectConnector.h rename to src/cpu/core/Connectors/TwoDistributionsDoubleGhostLayerFullDirectConnector.h diff --git a/src/cpu/VirtualFluidsCore/Connectors/TwoDistributionsDoubleGhostLayerFullVectorConnector.cpp b/src/cpu/core/Connectors/TwoDistributionsDoubleGhostLayerFullVectorConnector.cpp similarity index 90% rename from src/cpu/VirtualFluidsCore/Connectors/TwoDistributionsDoubleGhostLayerFullVectorConnector.cpp rename to src/cpu/core/Connectors/TwoDistributionsDoubleGhostLayerFullVectorConnector.cpp index f8ff7d5c28bb04e41f51a5223dc9a64bcd0cf317..00f6348a4e3c5d5309ca6a4eb5f5e730f71c13c7 100644 --- a/src/cpu/VirtualFluidsCore/Connectors/TwoDistributionsDoubleGhostLayerFullVectorConnector.cpp +++ b/src/cpu/core/Connectors/TwoDistributionsDoubleGhostLayerFullVectorConnector.cpp @@ -62,37 +62,37 @@ void TwoDistributionsDoubleGhostLayerFullVectorConnector::init() int anz = 2*27+1; switch (sendDir) { - case DIR_000: UB_THROW(UbException(UB_EXARGS, "ZERO not allowed")); break; - case DIR_P00: - case DIR_M00: sender->getData().resize(maxX2*maxX3*anz*2, c0o1); break; - case DIR_0P0: - case DIR_0M0: sender->getData().resize(maxX1*maxX3*anz*2, c0o1); break; - case DIR_00P: - case DIR_00M: sender->getData().resize(maxX1*maxX2*anz*2, c0o1); break; + case d000: UB_THROW(UbException(UB_EXARGS, "ZERO not allowed")); break; + case dP00: + case dM00: sender->getData().resize(maxX2*maxX3*anz*2, c0o1); break; + case d0P0: + case d0M0: sender->getData().resize(maxX1*maxX3*anz*2, c0o1); break; + case d00P: + case d00M: sender->getData().resize(maxX1*maxX2*anz*2, c0o1); break; - case DIR_PP0: - case DIR_MM0: - case DIR_PM0: - case DIR_MP0: sender->getData().resize(maxX3*anz*4, c0o1); break; + case dPP0: + case dMM0: + case dPM0: + case dMP0: sender->getData().resize(maxX3*anz*4, c0o1); break; - case DIR_P0P: - case DIR_M0M: - case DIR_P0M: - case DIR_M0P: sender->getData().resize(maxX2*anz*4, c0o1); break; + case dP0P: + case dM0M: + case dP0M: + case dM0P: sender->getData().resize(maxX2*anz*4, c0o1); break; - case DIR_0PP: - case DIR_0MM: - case DIR_0PM: - case DIR_0MP: sender->getData().resize(maxX1*anz*4, c0o1); break; + case d0PP: + case d0MM: + case d0PM: + case d0MP: sender->getData().resize(maxX1*anz*4, c0o1); break; - case DIR_PPP: - case DIR_MMM: - case DIR_PPM: - case DIR_MMP: - case DIR_PMP: - case DIR_MPM: - case DIR_PMM: - case DIR_MPP: sender->getData().resize(anz*8, c0o1); break; + case dPPP: + case dMMM: + case dPPM: + case dMMP: + case dPMP: + case dMPM: + case dPMM: + case dMPP: sender->getData().resize(anz*8, c0o1); break; default: UB_THROW(UbException(UB_EXARGS, "unknown sendDir")); } @@ -142,7 +142,7 @@ void TwoDistributionsDoubleGhostLayerFullVectorConnector::fillData() int index = 0; // EAST - if (sendDir == DIR_P00) { + if (sendDir == dP00) { for (int x3 = minX3p2; x3 <= maxX3m2; x3++) { for (int x2 = minX2p2; x2 <= maxX2m2; x2++) { fillData(sdata, index, maxX1m3, x2, x3); @@ -151,7 +151,7 @@ void TwoDistributionsDoubleGhostLayerFullVectorConnector::fillData() } } // WEST - else if (sendDir == DIR_M00) { + else if (sendDir == dM00) { for (int x3 = minX3p2; x3 <= maxX3m2; x3++) { for (int x2 = minX2p2; x2 <= maxX2m2; x2++) { fillData(sdata, index, minX1p3, x2, x3); @@ -160,7 +160,7 @@ void TwoDistributionsDoubleGhostLayerFullVectorConnector::fillData() } } // NORTH - else if (sendDir == DIR_0P0) { + else if (sendDir == d0P0) { for (int x3 = minX3p2; x3 <= maxX3m2; x3++) { for (int x1 = minX1p2; x1 <= maxX1m2; x1++) { fillData(sdata, index, x1, maxX2m3, x3); @@ -169,7 +169,7 @@ void TwoDistributionsDoubleGhostLayerFullVectorConnector::fillData() } } // SOUTH - else if (sendDir == DIR_0M0) { + else if (sendDir == d0M0) { for (int x3 = minX3p2; x3 <= maxX3m2; x3++) { for (int x1 = minX1p2; x1 <= maxX1m2; x1++) { fillData(sdata, index, x1, minX2p3, x3); @@ -179,7 +179,7 @@ void TwoDistributionsDoubleGhostLayerFullVectorConnector::fillData() } // TOP - else if (sendDir == DIR_00P) { + else if (sendDir == d00P) { for (int x2 = minX2p2; x2 <= maxX2m2; x2++) { for (int x1 = minX1p2; x1 <= maxX1m2; x1++) { fillData(sdata, index, x1, x2, maxX3m3); @@ -188,7 +188,7 @@ void TwoDistributionsDoubleGhostLayerFullVectorConnector::fillData() } } // BOTTOM - else if (sendDir == DIR_00M) { + else if (sendDir == d00M) { for (int x2 = minX2p2; x2 <= maxX2m2; x2++) { for (int x1 = minX1p2; x1 <= maxX1m2; x1++) { fillData(sdata, index, x1, x2, minX3p3); @@ -197,7 +197,7 @@ void TwoDistributionsDoubleGhostLayerFullVectorConnector::fillData() } } // NORTHEAST - else if (sendDir == DIR_PP0) { + else if (sendDir == dPP0) { for (int x3 = minX3p2; x3 <= maxX3m2; x3++) { fillData(sdata, index, maxX1m3, maxX2m3, x3); fillData(sdata, index, maxX1m2, maxX2m2, x3); @@ -206,7 +206,7 @@ void TwoDistributionsDoubleGhostLayerFullVectorConnector::fillData() } } // NORTHWEST - else if (sendDir == DIR_MP0) { + else if (sendDir == dMP0) { for (int x3 = minX3p2; x3 <= maxX3m2; x3++) { fillData(sdata, index, minX1p3, maxX2m3, x3); fillData(sdata, index, minX1p2, maxX2m2, x3); @@ -215,7 +215,7 @@ void TwoDistributionsDoubleGhostLayerFullVectorConnector::fillData() } } // SOUTHWEST - else if (sendDir == DIR_MM0) { + else if (sendDir == dMM0) { for (int x3 = minX3p2; x3 <= maxX3m2; x3++) { fillData(sdata, index, minX1p3, minX2p3, x3); fillData(sdata, index, minX1p2, minX2p2, x3); @@ -224,70 +224,70 @@ void TwoDistributionsDoubleGhostLayerFullVectorConnector::fillData() } } // SOUTHEAST - else if (sendDir == DIR_PM0) { + else if (sendDir == dPM0) { for (int x3 = minX3p2; x3 <= maxX3m2; x3++) { fillData(sdata, index, maxX1m3, minX2p3, x3); fillData(sdata, index, maxX1m2, minX2p2, x3); fillData(sdata, index, maxX1m3, minX2p2, x3); fillData(sdata, index, maxX1m2, minX2p3, x3); } - } else if (sendDir == DIR_P0P) + } else if (sendDir == dP0P) for (int x2 = minX2p2; x2 <= maxX2m2; x2++) { fillData(sdata, index, maxX1m3, x2, maxX3m3); fillData(sdata, index, maxX1m2, x2, maxX3m2); fillData(sdata, index, maxX1m3, x2, maxX3m2); fillData(sdata, index, maxX1m2, x2, maxX3m3); } - else if (sendDir == DIR_M0M) + else if (sendDir == dM0M) for (int x2 = minX2p2; x2 <= maxX2m2; x2++) { fillData(sdata, index, minX1p3, x2, minX3p3); fillData(sdata, index, minX1p2, x2, minX3p2); fillData(sdata, index, minX1p3, x2, minX3p2); fillData(sdata, index, minX1p2, x2, minX3p3); } - else if (sendDir == DIR_P0M) + else if (sendDir == dP0M) for (int x2 = minX2p2; x2 <= maxX2m2; x2++) { fillData(sdata, index, maxX1m3, x2, minX3p3); fillData(sdata, index, maxX1m2, x2, minX3p2); fillData(sdata, index, maxX1m3, x2, minX3p2); fillData(sdata, index, maxX1m2, x2, minX3p3); } - else if (sendDir == DIR_M0P) + else if (sendDir == dM0P) for (int x2 = minX2p2; x2 <= maxX2m2; x2++) { fillData(sdata, index, minX1p3, x2, maxX3m3); fillData(sdata, index, minX1p2, x2, maxX3m2); fillData(sdata, index, minX1p3, x2, maxX3m2); fillData(sdata, index, minX1p2, x2, maxX3m3); } - else if (sendDir == DIR_0PP) + else if (sendDir == d0PP) for (int x1 = minX1p2; x1 <= maxX1m2; x1++) { fillData(sdata, index, x1, maxX2m3, maxX3m3); fillData(sdata, index, x1, maxX2m2, maxX3m2); fillData(sdata, index, x1, maxX2m3, maxX3m2); fillData(sdata, index, x1, maxX2m2, maxX3m3); } - else if (sendDir == DIR_0MM) + else if (sendDir == d0MM) for (int x1 = minX1p2; x1 <= maxX1m2; x1++) { fillData(sdata, index, x1, minX2p3, minX3p3); fillData(sdata, index, x1, minX2p2, minX3p2); fillData(sdata, index, x1, minX2p3, minX3p2); fillData(sdata, index, x1, minX2p2, minX3p3); } - else if (sendDir == DIR_0PM) + else if (sendDir == d0PM) for (int x1 = minX1p2; x1 <= maxX1m2; x1++) { fillData(sdata, index, x1, maxX2m3, minX3p3); fillData(sdata, index, x1, maxX2m2, minX3p2); fillData(sdata, index, x1, maxX2m3, minX3p2); fillData(sdata, index, x1, maxX2m2, minX3p3); } - else if (sendDir == DIR_0MP) + else if (sendDir == d0MP) for (int x1 = minX1p2; x1 <= maxX1m2; x1++) { fillData(sdata, index, x1, minX2p3, maxX3m3); fillData(sdata, index, x1, minX2p2, maxX3m2); fillData(sdata, index, x1, minX2p3, maxX3m2); fillData(sdata, index, x1, minX2p2, maxX3m3); } - else if (sendDir == DIR_MMP) { + else if (sendDir == dMMP) { fillData(sdata, index, minX1p3, minX2p3, maxX3m3); fillData(sdata, index, minX1p2, minX2p2, maxX3m2); fillData(sdata, index, minX1p3, minX2p2, maxX3m2); @@ -296,7 +296,7 @@ void TwoDistributionsDoubleGhostLayerFullVectorConnector::fillData() fillData(sdata, index, minX1p3, minX2p3, maxX3m2); fillData(sdata, index, minX1p3, minX2p2, maxX3m3); fillData(sdata, index, minX1p2, minX2p3, maxX3m3); - } else if (sendDir == DIR_PMP) { + } else if (sendDir == dPMP) { fillData(sdata, index, maxX1m3, minX1p3, maxX3m3); fillData(sdata, index, maxX1m2, minX1p2, maxX3m2); fillData(sdata, index, maxX1m3, minX1p2, maxX3m2); @@ -305,7 +305,7 @@ void TwoDistributionsDoubleGhostLayerFullVectorConnector::fillData() fillData(sdata, index, maxX1m3, minX1p3, maxX3m2); fillData(sdata, index, maxX1m3, minX1p2, maxX3m3); fillData(sdata, index, maxX1m2, minX1p3, maxX3m3); - } else if (sendDir == DIR_MPP) { + } else if (sendDir == dMPP) { fillData(sdata, index, minX1p3, maxX2m3, maxX3m3); fillData(sdata, index, minX1p2, maxX2m2, maxX3m2); fillData(sdata, index, minX1p3, maxX2m2, maxX3m2); @@ -314,7 +314,7 @@ void TwoDistributionsDoubleGhostLayerFullVectorConnector::fillData() fillData(sdata, index, minX1p3, maxX2m3, maxX3m2); fillData(sdata, index, minX1p3, maxX2m2, maxX3m3); fillData(sdata, index, minX1p2, maxX2m3, maxX3m3); - } else if (sendDir == DIR_PPP) { + } else if (sendDir == dPPP) { fillData(sdata, index, maxX1m3, maxX2m3, maxX3m3); fillData(sdata, index, maxX1m2, maxX2m2, maxX3m2); fillData(sdata, index, maxX1m3, maxX2m2, maxX3m2); @@ -323,7 +323,7 @@ void TwoDistributionsDoubleGhostLayerFullVectorConnector::fillData() fillData(sdata, index, maxX1m3, maxX2m3, maxX3m2); fillData(sdata, index, maxX1m3, maxX2m2, maxX3m3); fillData(sdata, index, maxX1m2, maxX2m3, maxX3m3); - } else if (sendDir == DIR_MMM) { + } else if (sendDir == dMMM) { fillData(sdata, index, minX1p3, minX2p3, minX3p3); fillData(sdata, index, minX1p2, minX2p2, minX3p2); fillData(sdata, index, minX1p3, minX2p2, minX3p2); @@ -332,7 +332,7 @@ void TwoDistributionsDoubleGhostLayerFullVectorConnector::fillData() fillData(sdata, index, minX1p3, minX2p3, minX3p2); fillData(sdata, index, minX1p3, minX2p2, minX3p3); fillData(sdata, index, minX1p2, minX2p3, minX3p3); - } else if (sendDir == DIR_PMM) { + } else if (sendDir == dPMM) { fillData(sdata, index, maxX1m3, minX2p3, minX3p3); fillData(sdata, index, maxX1m2, minX2p2, minX3p2); fillData(sdata, index, maxX1m3, minX2p2, minX3p2); @@ -341,7 +341,7 @@ void TwoDistributionsDoubleGhostLayerFullVectorConnector::fillData() fillData(sdata, index, maxX1m3, minX2p3, minX3p2); fillData(sdata, index, maxX1m3, minX2p2, minX3p3); fillData(sdata, index, maxX1m2, minX2p3, minX3p3); - } else if (sendDir == DIR_MPM) { + } else if (sendDir == dMPM) { fillData(sdata, index, minX1p3, maxX2m3, minX3p3); fillData(sdata, index, minX1p2, maxX2m2, minX3p2); fillData(sdata, index, minX1p3, maxX2m2, minX3p2); @@ -350,7 +350,7 @@ void TwoDistributionsDoubleGhostLayerFullVectorConnector::fillData() fillData(sdata, index, minX1p3, maxX2m3, minX3p2); fillData(sdata, index, minX1p3, maxX2m2, minX3p3); fillData(sdata, index, minX1p2, maxX2m3, minX3p3); - } else if (sendDir == DIR_PPM) { + } else if (sendDir == dPPM) { fillData(sdata, index, maxX1m3, maxX2m3, minX3p3); fillData(sdata, index, maxX1m2, maxX2m2, minX3p2); fillData(sdata, index, maxX1m3, maxX2m2, minX3p2); @@ -406,7 +406,7 @@ void TwoDistributionsDoubleGhostLayerFullVectorConnector::distributeData() int maxX3m2 = maxX3 - 2; //int maxX3m3 = maxX3 - 3; - if (sendDir == DIR_M00) { + if (sendDir == dM00) { for (int x3 = minX3p2; x3 <= maxX3m2; x3++) { for (int x2 = minX2p2; x2 <= maxX2m2; x2++) { distributeData(rdata, index, minX1, x2, x3); @@ -414,7 +414,7 @@ void TwoDistributionsDoubleGhostLayerFullVectorConnector::distributeData() } } } - else if (sendDir == DIR_P00) { + else if (sendDir == dP00) { for (int x3 = minX3p2; x3 <= maxX3m2; x3++) { for (int x2 = minX2p2; x2 <= maxX2m2; x2++) { distributeData(rdata, index, maxX1, x2, x3); @@ -422,7 +422,7 @@ void TwoDistributionsDoubleGhostLayerFullVectorConnector::distributeData() } } } - else if (sendDir == DIR_0M0) { + else if (sendDir == d0M0) { for (int x3 = minX3p2; x3 <= maxX3m2; x3++) { for (int x1 = minX1p2; x1 <= maxX1m2; x1++) { distributeData(rdata, index, x1, minX2, x3); @@ -430,7 +430,7 @@ void TwoDistributionsDoubleGhostLayerFullVectorConnector::distributeData() } } } - else if (sendDir == DIR_0P0) { + else if (sendDir == d0P0) { for (int x3 = minX3p2; x3 <= maxX3m2; x3++) { for (int x1 = minX1p2; x1 <= maxX1m2; x1++) { distributeData(rdata, index, x1, maxX2, x3); @@ -438,7 +438,7 @@ void TwoDistributionsDoubleGhostLayerFullVectorConnector::distributeData() } } } - else if (sendDir == DIR_00M) { + else if (sendDir == d00M) { for (int x2 = minX2p2; x2 <= maxX2m2; x2++) { for (int x1 = minX1p2; x1 <= maxX1m2; x1++) { distributeData(rdata, index, x1, x2, minX3); @@ -446,7 +446,7 @@ void TwoDistributionsDoubleGhostLayerFullVectorConnector::distributeData() } } } - else if (sendDir == DIR_00P) { + else if (sendDir == d00P) { for (int x2 = minX2p2; x2 <= maxX2m2; x2++) { for (int x1 = minX1p2; x1 <= maxX1m2; x1++) { distributeData(rdata, index, x1, x2, maxX3); @@ -454,7 +454,7 @@ void TwoDistributionsDoubleGhostLayerFullVectorConnector::distributeData() } } } - else if (sendDir == DIR_MM0) { + else if (sendDir == dMM0) { for (int x3 = minX3p2; x3 <= maxX3m2; x3++) { distributeData(rdata, index, minX1, minX2, x3); distributeData(rdata, index, minX1p1, minX2p1, x3); @@ -462,7 +462,7 @@ void TwoDistributionsDoubleGhostLayerFullVectorConnector::distributeData() distributeData(rdata, index, minX1p1, minX2, x3); } } - else if (sendDir == DIR_PM0) { + else if (sendDir == dPM0) { for (int x3 = minX3p2; x3 <= maxX3m2; x3++) { distributeData(rdata, index, maxX1, minX2, x3); distributeData(rdata, index, maxX1m1, minX2p1, x3); @@ -470,7 +470,7 @@ void TwoDistributionsDoubleGhostLayerFullVectorConnector::distributeData() distributeData(rdata, index, maxX1m1, minX2, x3); } } - else if (sendDir == DIR_PP0) { + else if (sendDir == dPP0) { for (int x3 = minX3p2; x3 <= maxX3m2; x3++) { distributeData(rdata, index, maxX1, maxX2, x3); distributeData(rdata, index, maxX1m1, maxX2m1, x3); @@ -478,70 +478,70 @@ void TwoDistributionsDoubleGhostLayerFullVectorConnector::distributeData() distributeData(rdata, index, maxX1m1, maxX2, x3); } } - else if (sendDir == DIR_MP0) { + else if (sendDir == dMP0) { for (int x3 = minX3p2; x3 <= maxX3m2; x3++) { distributeData(rdata, index, minX1, maxX2, x3); distributeData(rdata, index, minX1p1, maxX2m1, x3); distributeData(rdata, index, minX1, maxX2m1, x3); distributeData(rdata, index, minX1p1, maxX2, x3); } - } else if (sendDir == DIR_M0M) + } else if (sendDir == dM0M) for (int x2 = minX2p2; x2 <= maxX2m2; x2++) { distributeData(rdata, index, minX1, x2, minX3); distributeData(rdata, index, minX1p1, x2, minX3p1); distributeData(rdata, index, minX1, x2, minX3p1); distributeData(rdata, index, minX1p1, x2, minX3); } - else if (sendDir == DIR_P0P) + else if (sendDir == dP0P) for (int x2 = minX2p2; x2 <= maxX2m2; x2++) { distributeData(rdata, index, maxX1, x2, maxX3); distributeData(rdata, index, maxX1m1, x2, maxX3m1); distributeData(rdata, index, maxX1, x2, maxX3m1); distributeData(rdata, index, maxX1m1, x2, maxX3); } - else if (sendDir == DIR_M0P) + else if (sendDir == dM0P) for (int x2 = minX2p2; x2 <= maxX2m2; x2++) { distributeData(rdata, index, minX1, x2, maxX3); distributeData(rdata, index, minX1p1, x2, maxX3m1); distributeData(rdata, index, minX1, x2, maxX3m1); distributeData(rdata, index, minX1p1, x2, maxX3); } - else if (sendDir == DIR_P0M) + else if (sendDir == dP0M) for (int x2 = minX2p2; x2 <= maxX2m2; x2++) { distributeData(rdata, index, maxX1, x2, minX3); distributeData(rdata, index, maxX1m1, x2, minX3p1); distributeData(rdata, index, maxX1, x2, minX3p1); distributeData(rdata, index, maxX1m1, x2, minX3); } - else if (sendDir == DIR_0MM) + else if (sendDir == d0MM) for (int x1 = minX1p2; x1 <= maxX1m2; x1++) { distributeData(rdata, index, x1, minX2, minX3); distributeData(rdata, index, x1, minX2p1, minX3p1); distributeData(rdata, index, x1, minX2, minX3p1); distributeData(rdata, index, x1, minX2p1, minX3); } - else if (sendDir == DIR_0PP) + else if (sendDir == d0PP) for (int x1 = minX1p2; x1 <= maxX1m2; x1++) { distributeData(rdata, index, x1, maxX2, maxX3); distributeData(rdata, index, x1, maxX2m1, maxX3m1); distributeData(rdata, index, x1, maxX2, maxX3m1); distributeData(rdata, index, x1, maxX2m1, maxX3); } - else if (sendDir == DIR_0MP) + else if (sendDir == d0MP) for (int x1 = minX1p2; x1 <= maxX1m2; x1++) { distributeData(rdata, index, x1, minX2, maxX3); distributeData(rdata, index, x1, minX2p1, maxX3m1); distributeData(rdata, index, x1, minX2, maxX3m1); distributeData(rdata, index, x1, minX2p1, maxX3); } - else if (sendDir == DIR_0PM) + else if (sendDir == d0PM) for (int x1 = minX1p2; x1 <= maxX1m2; x1++) { distributeData(rdata, index, x1, maxX2, minX3); distributeData(rdata, index, x1, maxX2m1, minX3p1); distributeData(rdata, index, x1, maxX2, minX3p1); distributeData(rdata, index, x1, maxX2m1, minX3); } - else if (sendDir == DIR_PPM) { + else if (sendDir == dPPM) { distributeData(rdata, index, maxX1, maxX2, minX3); distributeData(rdata, index, maxX1m1, maxX2m1, minX3p1); distributeData(rdata, index, maxX1, maxX2m1, minX3p1); @@ -550,7 +550,7 @@ void TwoDistributionsDoubleGhostLayerFullVectorConnector::distributeData() distributeData(rdata, index, maxX1, maxX2, minX3p1); distributeData(rdata, index, maxX1, maxX2m1, minX3); distributeData(rdata, index, maxX1m1, maxX2, minX3); - } else if (sendDir == DIR_MPM) { + } else if (sendDir == dMPM) { distributeData(rdata, index, minX1, maxX2, minX3); distributeData(rdata, index, minX1p1, maxX2m1, minX3p1); distributeData(rdata, index, minX1, maxX2m1, minX3p1); @@ -559,7 +559,7 @@ void TwoDistributionsDoubleGhostLayerFullVectorConnector::distributeData() distributeData(rdata, index, minX1, maxX2, minX3p1); distributeData(rdata, index, minX1, maxX2m1, minX3); distributeData(rdata, index, minX1p1, maxX2, minX3); - } else if (sendDir == DIR_PMM) { + } else if (sendDir == dPMM) { distributeData(rdata, index, maxX1, minX2, minX3); distributeData(rdata, index, maxX1m1, minX2p1, minX3p1); distributeData(rdata, index, maxX1, minX2p1, minX3p1); @@ -568,7 +568,7 @@ void TwoDistributionsDoubleGhostLayerFullVectorConnector::distributeData() distributeData(rdata, index, maxX1, minX2, minX3p1); distributeData(rdata, index, maxX1, minX2p1, minX3); distributeData(rdata, index, maxX1m1, minX2, minX3); - } else if (sendDir == DIR_MMM) { + } else if (sendDir == dMMM) { distributeData(rdata, index, minX1, minX2, minX3); distributeData(rdata, index, minX1p1, minX2p1, minX3p1); distributeData(rdata, index, minX1, minX2p1, minX3p1); @@ -577,7 +577,7 @@ void TwoDistributionsDoubleGhostLayerFullVectorConnector::distributeData() distributeData(rdata, index, minX1, minX2, minX3p1); distributeData(rdata, index, minX1, minX2p1, minX3); distributeData(rdata, index, minX1p1, minX2, minX3); - } else if (sendDir == DIR_PPP) { + } else if (sendDir == dPPP) { distributeData(rdata, index, maxX1, maxX2, maxX3); distributeData(rdata, index, maxX1m1, maxX2m1, maxX3m1); distributeData(rdata, index, maxX1, maxX2m1, maxX3m1); @@ -586,7 +586,7 @@ void TwoDistributionsDoubleGhostLayerFullVectorConnector::distributeData() distributeData(rdata, index, maxX1, maxX2, maxX3m1); distributeData(rdata, index, maxX1, maxX2m1, maxX3); distributeData(rdata, index, maxX1m1, maxX2, maxX3); - } else if (sendDir == DIR_MPP) { + } else if (sendDir == dMPP) { distributeData(rdata, index, minX1, maxX2, maxX3); distributeData(rdata, index, minX1p1, maxX2m1, maxX3m1); distributeData(rdata, index, minX1, maxX2m1, maxX3m1); @@ -595,7 +595,7 @@ void TwoDistributionsDoubleGhostLayerFullVectorConnector::distributeData() distributeData(rdata, index, minX1, maxX2, maxX3m1); distributeData(rdata, index, minX1, maxX2m1, maxX3); distributeData(rdata, index, minX1p1, maxX2, maxX3); - } else if (sendDir == DIR_PMP) { + } else if (sendDir == dPMP) { distributeData(rdata, index, maxX1, minX2, maxX3); distributeData(rdata, index, maxX1m1, minX2p1, maxX3m1); distributeData(rdata, index, maxX1, minX2p1, maxX3m1); @@ -604,7 +604,7 @@ void TwoDistributionsDoubleGhostLayerFullVectorConnector::distributeData() distributeData(rdata, index, maxX1, minX2, maxX3m1); distributeData(rdata, index, maxX1, minX2p1, maxX3); distributeData(rdata, index, maxX1m1, minX2, maxX3); - } else if (sendDir == DIR_MMP) { + } else if (sendDir == dMMP) { distributeData(rdata, index, minX1, minX2, maxX3); distributeData(rdata, index, minX1p1, minX2p1, maxX3m1); distributeData(rdata, index, minX1, minX2p1, maxX3m1); diff --git a/src/cpu/VirtualFluidsCore/Connectors/TwoDistributionsDoubleGhostLayerFullVectorConnector.h b/src/cpu/core/Connectors/TwoDistributionsDoubleGhostLayerFullVectorConnector.h similarity index 100% rename from src/cpu/VirtualFluidsCore/Connectors/TwoDistributionsDoubleGhostLayerFullVectorConnector.h rename to src/cpu/core/Connectors/TwoDistributionsDoubleGhostLayerFullVectorConnector.h diff --git a/src/cpu/VirtualFluidsCore/Connectors/TwoDistributionsFullDirectConnector.cpp b/src/cpu/core/Connectors/TwoDistributionsFullDirectConnector.cpp similarity index 100% rename from src/cpu/VirtualFluidsCore/Connectors/TwoDistributionsFullDirectConnector.cpp rename to src/cpu/core/Connectors/TwoDistributionsFullDirectConnector.cpp diff --git a/src/cpu/VirtualFluidsCore/Connectors/TwoDistributionsFullDirectConnector.h b/src/cpu/core/Connectors/TwoDistributionsFullDirectConnector.h similarity index 100% rename from src/cpu/VirtualFluidsCore/Connectors/TwoDistributionsFullDirectConnector.h rename to src/cpu/core/Connectors/TwoDistributionsFullDirectConnector.h diff --git a/src/cpu/VirtualFluidsCore/Connectors/TwoDistributionsFullVectorConnector.cpp b/src/cpu/core/Connectors/TwoDistributionsFullVectorConnector.cpp similarity index 79% rename from src/cpu/VirtualFluidsCore/Connectors/TwoDistributionsFullVectorConnector.cpp rename to src/cpu/core/Connectors/TwoDistributionsFullVectorConnector.cpp index 36e34321d0bcaecec63b70d2b059542dc5514b95..a615bb51decac01730be1107a2c693d973d802fd 100644 --- a/src/cpu/VirtualFluidsCore/Connectors/TwoDistributionsFullVectorConnector.cpp +++ b/src/cpu/core/Connectors/TwoDistributionsFullVectorConnector.cpp @@ -61,37 +61,37 @@ void TwoDistributionsFullVectorConnector::init() int anz = 2*27; switch (sendDir) { - case DIR_000: UB_THROW(UbException(UB_EXARGS, "ZERO not allowed")); break; - case DIR_P00: - case DIR_M00: sender->getData().resize(maxX2*maxX3*anz, c0o1); break; - case DIR_0P0: - case DIR_0M0: sender->getData().resize(maxX1*maxX3*anz, c0o1); break; - case DIR_00P: - case DIR_00M: sender->getData().resize(maxX1*maxX2*anz, c0o1); break; + case d000: UB_THROW(UbException(UB_EXARGS, "ZERO not allowed")); break; + case dP00: + case dM00: sender->getData().resize(maxX2*maxX3*anz, c0o1); break; + case d0P0: + case d0M0: sender->getData().resize(maxX1*maxX3*anz, c0o1); break; + case d00P: + case d00M: sender->getData().resize(maxX1*maxX2*anz, c0o1); break; - case DIR_PP0: - case DIR_MM0: - case DIR_PM0: - case DIR_MP0: sender->getData().resize(maxX3*anz, c0o1); break; + case dPP0: + case dMM0: + case dPM0: + case dMP0: sender->getData().resize(maxX3*anz, c0o1); break; - case DIR_P0P: - case DIR_M0M: - case DIR_P0M: - case DIR_M0P: sender->getData().resize(maxX2*anz, c0o1); break; + case dP0P: + case dM0M: + case dP0M: + case dM0P: sender->getData().resize(maxX2*anz, c0o1); break; - case DIR_0PP: - case DIR_0MM: - case DIR_0PM: - case DIR_0MP: sender->getData().resize(maxX1*anz, c0o1); break; + case d0PP: + case d0MM: + case d0PM: + case d0MP: sender->getData().resize(maxX1*anz, c0o1); break; - case DIR_PPP: - case DIR_MMM: - case DIR_PPM: - case DIR_MMP: - case DIR_PMP: - case DIR_MPM: - case DIR_PMM: - case DIR_MPP: sender->getData().resize(anz, c0o1); break; + case dPPP: + case dMMM: + case dPPM: + case dMMP: + case dPMP: + case dMPM: + case dPMM: + case dMPP: sender->getData().resize(anz, c0o1); break; default: UB_THROW(UbException(UB_EXARGS, "unknown sendDir")); } diff --git a/src/cpu/VirtualFluidsCore/Connectors/TwoDistributionsFullVectorConnector.h b/src/cpu/core/Connectors/TwoDistributionsFullVectorConnector.h similarity index 100% rename from src/cpu/VirtualFluidsCore/Connectors/TwoDistributionsFullVectorConnector.h rename to src/cpu/core/Connectors/TwoDistributionsFullVectorConnector.h diff --git a/src/cpu/VirtualFluidsCore/Data/D3Q27EsoTwist3DSoA.cpp b/src/cpu/core/Data/D3Q27EsoTwist3DSoA.cpp similarity index 72% rename from src/cpu/VirtualFluidsCore/Data/D3Q27EsoTwist3DSoA.cpp rename to src/cpu/core/Data/D3Q27EsoTwist3DSoA.cpp index 07e62e78a57fa8817ec8f4b7c20bce693697788d..14d5904ebbf30dd6b3d5694cd89c6753357536f6 100644 --- a/src/cpu/VirtualFluidsCore/Data/D3Q27EsoTwist3DSoA.cpp +++ b/src/cpu/core/Data/D3Q27EsoTwist3DSoA.cpp @@ -85,7 +85,7 @@ void D3Q27EsoTwist3DSoA::swap() std::swap(d.TSW, d.BNE); } ////////////////////////////////////////////////////////////////////////// -void D3Q27EsoTwist3DSoA::getDistribution(real *const f, size_t x1, size_t x2, size_t x3) +void D3Q27EsoTwist3DSoA::getPreCollisionDistribution(real *const f, size_t x1, size_t x2, size_t x3) { using namespace vf::lbm::dir; @@ -93,38 +93,38 @@ void D3Q27EsoTwist3DSoA::getDistribution(real *const f, size_t x1, size_t x2, si size_t x2p = x2 + 1; size_t x3p = x3 + 1; - f[DIR_P00] = (*d.E)(x1, x2, x3); - f[DIR_0P0] = (*d.N)(x1, x2, x3); - f[DIR_00P] = (*d.T)(x1, x2, x3); - f[DIR_PP0] = (*d.NE)(x1, x2, x3); - f[DIR_MP0] = (*d.NW)(x1p, x2, x3); - f[DIR_P0P] = (*d.TE)(x1, x2, x3); - f[DIR_M0P] = (*d.TW)(x1p, x2, x3); - f[DIR_0PP] = (*d.TN)(x1, x2, x3); - f[DIR_0MP] = (*d.TS)(x1, x2p, x3); - f[DIR_PPP] = (*d.TNE)(x1, x2, x3); - f[DIR_MPP] = (*d.TNW)(x1p, x2, x3); - f[DIR_PMP] = (*d.TSE)(x1, x2p, x3); - f[DIR_MMP] = (*d.TSW)(x1p, x2p, x3); + f[dP00] = (*d.E)(x1, x2, x3); + f[d0P0] = (*d.N)(x1, x2, x3); + f[d00P] = (*d.T)(x1, x2, x3); + f[dPP0] = (*d.NE)(x1, x2, x3); + f[dMP0] = (*d.NW)(x1p, x2, x3); + f[dP0P] = (*d.TE)(x1, x2, x3); + f[dM0P] = (*d.TW)(x1p, x2, x3); + f[d0PP] = (*d.TN)(x1, x2, x3); + f[d0MP] = (*d.TS)(x1, x2p, x3); + f[dPPP] = (*d.TNE)(x1, x2, x3); + f[dMPP] = (*d.TNW)(x1p, x2, x3); + f[dPMP] = (*d.TSE)(x1, x2p, x3); + f[dMMP] = (*d.TSW)(x1p, x2p, x3); - f[DIR_M00] = (*d.W)(x1p, x2, x3); - f[DIR_0M0] = (*d.S)(x1, x2p, x3); - f[DIR_00M] = (*d.B)(x1, x2, x3p); - f[DIR_MM0] = (*d.SW)(x1p, x2p, x3); - f[DIR_PM0] = (*d.SE)(x1, x2p, x3); - f[DIR_M0M] = (*d.BW)(x1p, x2, x3p); - f[DIR_P0M] = (*d.BE)(x1, x2, x3p); - f[DIR_0MM] = (*d.BS)(x1, x2p, x3p); - f[DIR_0PM] = (*d.BN)(x1, x2, x3p); - f[DIR_MMM] = (*d.BSW)(x1p, x2p, x3p); - f[DIR_PMM] = (*d.BSE)(x1, x2p, x3p); - f[DIR_MPM] = (*d.BNW)(x1p, x2, x3p); - f[DIR_PPM] = (*d.BNE)(x1, x2, x3p); + f[dM00] = (*d.W)(x1p, x2, x3); + f[d0M0] = (*d.S)(x1, x2p, x3); + f[d00M] = (*d.B)(x1, x2, x3p); + f[dMM0] = (*d.SW)(x1p, x2p, x3); + f[dPM0] = (*d.SE)(x1, x2p, x3); + f[dM0M] = (*d.BW)(x1p, x2, x3p); + f[dP0M] = (*d.BE)(x1, x2, x3p); + f[d0MM] = (*d.BS)(x1, x2p, x3p); + f[d0PM] = (*d.BN)(x1, x2, x3p); + f[dMMM] = (*d.BSW)(x1p, x2p, x3p); + f[dPMM] = (*d.BSE)(x1, x2p, x3p); + f[dMPM] = (*d.BNW)(x1p, x2, x3p); + f[dPPM] = (*d.BNE)(x1, x2, x3p); - f[DIR_000] = (*d.REST)(x1, x2, x3); + f[d000] = (*d.REST)(x1, x2, x3); } ////////////////////////////////////////////////////////////////////////// -void D3Q27EsoTwist3DSoA::setDistribution(const real *const f, size_t x1, size_t x2, size_t x3) +void D3Q27EsoTwist3DSoA::setPostCollisionDistribution(const real *const f, size_t x1, size_t x2, size_t x3) { using namespace vf::lbm::dir; @@ -132,97 +132,97 @@ void D3Q27EsoTwist3DSoA::setDistribution(const real *const f, size_t x1, size_t size_t x2p = x2 + 1; size_t x3p = x3 + 1; - (*d.E)(x1, x2, x3) = f[INV_P00]; - (*d.N)(x1, x2, x3) = f[INV_0P0]; - (*d.T)(x1, x2, x3) = f[INV_00P]; - (*d.NE)(x1, x2, x3) = f[INV_PP0]; - (*d.NW)(x1p, x2, x3) = f[INV_MP0]; - (*d.TE)(x1, x2, x3) = f[INV_P0P]; - (*d.TW)(x1p, x2, x3) = f[INV_M0P]; - (*d.TN)(x1, x2, x3) = f[INV_0PP]; - (*d.TS)(x1, x2p, x3) = f[INV_0MP]; - (*d.TNE)(x1, x2, x3) = f[INV_PPP]; - (*d.TNW)(x1p, x2, x3) = f[INV_MPP]; - (*d.TSE)(x1, x2p, x3) = f[INV_PMP]; - (*d.TSW)(x1p, x2p, x3) = f[INV_MMP]; + (*d.E)(x1, x2, x3) = f[iP00]; + (*d.N)(x1, x2, x3) = f[i0P0]; + (*d.T)(x1, x2, x3) = f[i00P]; + (*d.NE)(x1, x2, x3) = f[iPP0]; + (*d.NW)(x1p, x2, x3) = f[iMP0]; + (*d.TE)(x1, x2, x3) = f[iP0P]; + (*d.TW)(x1p, x2, x3) = f[iM0P]; + (*d.TN)(x1, x2, x3) = f[i0PP]; + (*d.TS)(x1, x2p, x3) = f[i0MP]; + (*d.TNE)(x1, x2, x3) = f[iPPP]; + (*d.TNW)(x1p, x2, x3) = f[iMPP]; + (*d.TSE)(x1, x2p, x3) = f[iPMP]; + (*d.TSW)(x1p, x2p, x3) = f[iMMP]; - (*d.W)(x1p, x2, x3) = f[INV_M00]; - (*d.S)(x1, x2p, x3) = f[INV_0M0]; - (*d.B)(x1, x2, x3p) = f[INV_00M]; - (*d.SW)(x1p, x2p, x3) = f[INV_MM0]; - (*d.SE)(x1, x2p, x3) = f[INV_PM0]; - (*d.BW)(x1p, x2, x3p) = f[INV_M0M]; - (*d.BE)(x1, x2, x3p) = f[INV_P0M]; - (*d.BS)(x1, x2p, x3p) = f[INV_0MM]; - (*d.BN)(x1, x2, x3p) = f[INV_0PM]; - (*d.BSW)(x1p, x2p, x3p) = f[INV_MMM]; - (*d.BSE)(x1, x2p, x3p) = f[INV_PMM]; - (*d.BNW)(x1p, x2, x3p) = f[INV_MPM]; - (*d.BNE)(x1, x2, x3p) = f[INV_PPM]; + (*d.W)(x1p, x2, x3) = f[iM00]; + (*d.S)(x1, x2p, x3) = f[i0M0]; + (*d.B)(x1, x2, x3p) = f[i00M]; + (*d.SW)(x1p, x2p, x3) = f[iMM0]; + (*d.SE)(x1, x2p, x3) = f[iPM0]; + (*d.BW)(x1p, x2, x3p) = f[iM0M]; + (*d.BE)(x1, x2, x3p) = f[iP0M]; + (*d.BS)(x1, x2p, x3p) = f[i0MM]; + (*d.BN)(x1, x2, x3p) = f[i0PM]; + (*d.BSW)(x1p, x2p, x3p) = f[iMMM]; + (*d.BSE)(x1, x2p, x3p) = f[iPMM]; + (*d.BNW)(x1p, x2, x3p) = f[iMPM]; + (*d.BNE)(x1, x2, x3p) = f[iPPM]; - (*d.REST)(x1, x2, x3) = f[DIR_000]; + (*d.REST)(x1, x2, x3) = f[d000]; } ////////////////////////////////////////////////////////////////////////// -void D3Q27EsoTwist3DSoA::getDistributionInv(real *const f, size_t x1, size_t x2, size_t x3) +void D3Q27EsoTwist3DSoA::getPostCollisionDistribution(real *const f, size_t x1, size_t x2, size_t x3) { using namespace vf::lbm::dir; - f[INV_P00] = (*d.E)(x1, x2, x3); - f[INV_0P0] = (*d.N)(x1, x2, x3); - f[INV_00P] = (*d.T)(x1, x2, x3); - f[INV_PP0] = (*d.NE)(x1, x2, x3); - f[INV_MP0] = (*d.NW)(x1 + 1, x2, x3); - f[INV_P0P] = (*d.TE)(x1, x2, x3); - f[INV_M0P] = (*d.TW)(x1 + 1, x2, x3); - f[INV_0PP] = (*d.TN)(x1, x2, x3); - f[INV_0MP] = (*d.TS)(x1, x2 + 1, x3); - f[INV_PPP] = (*d.TNE)(x1, x2, x3); - f[INV_MPP] = (*d.TNW)(x1 + 1, x2, x3); - f[INV_PMP] = (*d.TSE)(x1, x2 + 1, x3); - f[INV_MMP] = (*d.TSW)(x1 + 1, x2 + 1, x3); + f[iP00] = (*d.E)(x1, x2, x3); + f[i0P0] = (*d.N)(x1, x2, x3); + f[i00P] = (*d.T)(x1, x2, x3); + f[iPP0] = (*d.NE)(x1, x2, x3); + f[iMP0] = (*d.NW)(x1 + 1, x2, x3); + f[iP0P] = (*d.TE)(x1, x2, x3); + f[iM0P] = (*d.TW)(x1 + 1, x2, x3); + f[i0PP] = (*d.TN)(x1, x2, x3); + f[i0MP] = (*d.TS)(x1, x2 + 1, x3); + f[iPPP] = (*d.TNE)(x1, x2, x3); + f[iMPP] = (*d.TNW)(x1 + 1, x2, x3); + f[iPMP] = (*d.TSE)(x1, x2 + 1, x3); + f[iMMP] = (*d.TSW)(x1 + 1, x2 + 1, x3); - f[INV_M00] = (*d.W)(x1 + 1, x2, x3); - f[INV_0M0] = (*d.S)(x1, x2 + 1, x3); - f[INV_00M] = (*d.B)(x1, x2, x3 + 1); - f[INV_MM0] = (*d.SW)(x1 + 1, x2 + 1, x3); - f[INV_PM0] = (*d.SE)(x1, x2 + 1, x3); - f[INV_M0M] = (*d.BW)(x1 + 1, x2, x3 + 1); - f[INV_P0M] = (*d.BE)(x1, x2, x3 + 1); - f[INV_0MM] = (*d.BS)(x1, x2 + 1, x3 + 1); - f[INV_0PM] = (*d.BN)(x1, x2, x3 + 1); - f[INV_MMM] = (*d.BSW)(x1 + 1, x2 + 1, x3 + 1); - f[INV_PMM] = (*d.BSE)(x1, x2 + 1, x3 + 1); - f[INV_MPM] = (*d.BNW)(x1 + 1, x2, x3 + 1); - f[INV_PPM] = (*d.BNE)(x1, x2, x3 + 1); + f[iM00] = (*d.W)(x1 + 1, x2, x3); + f[i0M0] = (*d.S)(x1, x2 + 1, x3); + f[i00M] = (*d.B)(x1, x2, x3 + 1); + f[iMM0] = (*d.SW)(x1 + 1, x2 + 1, x3); + f[iPM0] = (*d.SE)(x1, x2 + 1, x3); + f[iM0M] = (*d.BW)(x1 + 1, x2, x3 + 1); + f[iP0M] = (*d.BE)(x1, x2, x3 + 1); + f[i0MM] = (*d.BS)(x1, x2 + 1, x3 + 1); + f[i0PM] = (*d.BN)(x1, x2, x3 + 1); + f[iMMM] = (*d.BSW)(x1 + 1, x2 + 1, x3 + 1); + f[iPMM] = (*d.BSE)(x1, x2 + 1, x3 + 1); + f[iMPM] = (*d.BNW)(x1 + 1, x2, x3 + 1); + f[iPPM] = (*d.BNE)(x1, x2, x3 + 1); - f[DIR_000] = (*d.REST)(x1, x2, x3); + f[d000] = (*d.REST)(x1, x2, x3); } ////////////////////////////////////////////////////////////////////////// -void D3Q27EsoTwist3DSoA::setDistributionInv(const real *const f, size_t x1, size_t x2, size_t x3) +void D3Q27EsoTwist3DSoA::setPreCollisionDistribution(const real *const f, size_t x1, size_t x2, size_t x3) { - //(*this->localDistributions)(D3Q27System::ET_E,x1, x2, x3) = f[D3Q27System::DIR_P00]; - //(*this->localDistributions)(D3Q27System::ET_N,x1, x2, x3) = f[D3Q27System::DIR_0P0]; - //(*this->localDistributions)(D3Q27System::ET_T,x1, x2, x3) = f[D3Q27System::DIR_00P]; - //(*this->localDistributions)(D3Q27System::ET_NE,x1, x2, x3) = f[D3Q27System::DIR_PP0]; - //(*this->localDistributions)(D3Q27System::ET_NW,x1+1,x2, x3) = f[D3Q27System::DIR_MP0]; - //(*this->localDistributions)(D3Q27System::ET_TE,x1, x2, x3) = f[D3Q27System::DIR_P0P]; - //(*this->localDistributions)(D3Q27System::ET_TW,x1+1,x2, x3) = f[D3Q27System::DIR_M0P]; - //(*this->localDistributions)(D3Q27System::ET_TN,x1, x2, x3) = f[D3Q27System::DIR_0PP]; - //(*this->localDistributions)(D3Q27System::ET_TS,x1, x2+1,x3) = f[D3Q27System::DIR_0MP]; - //(*this->localDistributions)(D3Q27System::ET_TNE,x1, x2, x3) = f[D3Q27System::DIR_PPP]; - //(*this->localDistributions)(D3Q27System::ET_TNW,x1+1,x2, x3) = f[D3Q27System::DIR_MPP]; - //(*this->localDistributions)(D3Q27System::ET_TSE,x1, x2+1,x3) = f[D3Q27System::DIR_PMP]; - //(*this->localDistributions)(D3Q27System::ET_TSW,x1+1,x2+1,x3) = f[D3Q27System::DIR_MMP]; + //(*this->localDistributions)(D3Q27System::ET_E,x1, x2, x3) = f[D3Q27System::dP00]; + //(*this->localDistributions)(D3Q27System::ET_N,x1, x2, x3) = f[D3Q27System::d0P0]; + //(*this->localDistributions)(D3Q27System::ET_T,x1, x2, x3) = f[D3Q27System::d00P]; + //(*this->localDistributions)(D3Q27System::ET_NE,x1, x2, x3) = f[D3Q27System::dPP0]; + //(*this->localDistributions)(D3Q27System::ET_NW,x1+1,x2, x3) = f[D3Q27System::dMP0]; + //(*this->localDistributions)(D3Q27System::ET_TE,x1, x2, x3) = f[D3Q27System::dP0P]; + //(*this->localDistributions)(D3Q27System::ET_TW,x1+1,x2, x3) = f[D3Q27System::dM0P]; + //(*this->localDistributions)(D3Q27System::ET_TN,x1, x2, x3) = f[D3Q27System::d0PP]; + //(*this->localDistributions)(D3Q27System::ET_TS,x1, x2+1,x3) = f[D3Q27System::d0MP]; + //(*this->localDistributions)(D3Q27System::ET_TNE,x1, x2, x3) = f[D3Q27System::dPPP]; + //(*this->localDistributions)(D3Q27System::ET_TNW,x1+1,x2, x3) = f[D3Q27System::dMPP]; + //(*this->localDistributions)(D3Q27System::ET_TSE,x1, x2+1,x3) = f[D3Q27System::dPMP]; + //(*this->localDistributions)(D3Q27System::ET_TSW,x1+1,x2+1,x3) = f[D3Q27System::dMMP]; - //(*this->nonLocalDistributions)(D3Q27System::ET_W,x1+1,x2, x3 ) = f[D3Q27System::DIR_M00 ]; - //(*this->nonLocalDistributions)(D3Q27System::ET_S,x1, x2+1,x3 ) = f[D3Q27System::DIR_0M0 ]; - //(*this->nonLocalDistributions)(D3Q27System::ET_B,x1, x2, x3+1 ) = f[D3Q27System::DIR_00M ]; - //(*this->nonLocalDistributions)(D3Q27System::ET_SW,x1+1,x2+1,x3 ) = f[D3Q27System::DIR_MM0]; - //(*this->nonLocalDistributions)(D3Q27System::ET_SE,x1, x2+1,x3 ) = f[D3Q27System::DIR_PM0]; - //(*this->nonLocalDistributions)(D3Q27System::ET_BW,x1+1,x2, x3+1 ) = f[D3Q27System::DIR_M0M]; - //(*this->nonLocalDistributions)(D3Q27System::ET_BE,x1, x2, x3+1 ) = f[D3Q27System::DIR_P0M]; - //(*this->nonLocalDistributions)(D3Q27System::ET_BS,x1, x2+1,x3+1 ) = f[D3Q27System::DIR_0MM]; - //(*this->nonLocalDistributions)(D3Q27System::ET_BN,x1, x2, x3+1 ) = f[D3Q27System::DIR_0PM]; + //(*this->nonLocalDistributions)(D3Q27System::ET_W,x1+1,x2, x3 ) = f[D3Q27System::dM00 ]; + //(*this->nonLocalDistributions)(D3Q27System::ET_S,x1, x2+1,x3 ) = f[D3Q27System::d0M0 ]; + //(*this->nonLocalDistributions)(D3Q27System::ET_B,x1, x2, x3+1 ) = f[D3Q27System::d00M ]; + //(*this->nonLocalDistributions)(D3Q27System::ET_SW,x1+1,x2+1,x3 ) = f[D3Q27System::dMM0]; + //(*this->nonLocalDistributions)(D3Q27System::ET_SE,x1, x2+1,x3 ) = f[D3Q27System::dPM0]; + //(*this->nonLocalDistributions)(D3Q27System::ET_BW,x1+1,x2, x3+1 ) = f[D3Q27System::dM0M]; + //(*this->nonLocalDistributions)(D3Q27System::ET_BE,x1, x2, x3+1 ) = f[D3Q27System::dP0M]; + //(*this->nonLocalDistributions)(D3Q27System::ET_BS,x1, x2+1,x3+1 ) = f[D3Q27System::d0MM]; + //(*this->nonLocalDistributions)(D3Q27System::ET_BN,x1, x2, x3+1 ) = f[D3Q27System::d0PM]; //(*this->nonLocalDistributions)(D3Q27System::ET_BSW,x1+1,x2+1,x3+1) = f[D3Q27System::BSW]; //(*this->nonLocalDistributions)(D3Q27System::ET_BSE,x1, x2+1,x3+1) = f[D3Q27System::BSE]; //(*this->nonLocalDistributions)(D3Q27System::ET_BNW,x1+1,x2, x3+1) = f[D3Q27System::BNW]; @@ -231,62 +231,62 @@ void D3Q27EsoTwist3DSoA::setDistributionInv(const real *const f, size_t x1, size //(*this->zeroDistributions)(x1,x2,x3) = f[D3Q27System::REST]; } ////////////////////////////////////////////////////////////////////////// -void D3Q27EsoTwist3DSoA::setDistributionForDirection(const real *const f, size_t x1, size_t x2, size_t x3, +void D3Q27EsoTwist3DSoA::setPostCollisionDistributionForDirection(const real *const f, size_t x1, size_t x2, size_t x3, unsigned long int direction) { // bool directionFlag = false; // if ((direction & EsoTwistD3Q27System::etE) == EsoTwistD3Q27System::etE) - // (*this->nonLocalDistributions)(D3Q27System::ET_W,x1+1,x2, x3 ) = f[D3Q27System::DIR_P00]; directionFlag=true; + // (*this->nonLocalDistributions)(D3Q27System::ET_W,x1+1,x2, x3 ) = f[D3Q27System::dP00]; directionFlag=true; // if ((direction & EsoTwistD3Q27System::etW) == EsoTwistD3Q27System::etW) - // (*this->localDistributions)(D3Q27System::ET_E,x1, x2, x3) = f[D3Q27System::DIR_M00]; directionFlag=true; + // (*this->localDistributions)(D3Q27System::ET_E,x1, x2, x3) = f[D3Q27System::dM00]; directionFlag=true; // if ((direction & EsoTwistD3Q27System::etS) == EsoTwistD3Q27System::etS) - // (*this->localDistributions)(D3Q27System::ET_N,x1, x2, x3) = f[D3Q27System::DIR_0M0]; directionFlag=true; + // (*this->localDistributions)(D3Q27System::ET_N,x1, x2, x3) = f[D3Q27System::d0M0]; directionFlag=true; // if ((direction & EsoTwistD3Q27System::etN) == EsoTwistD3Q27System::etN) - // (*this->nonLocalDistributions)(D3Q27System::ET_S,x1, x2+1,x3 ) = f[D3Q27System::DIR_0P0]; directionFlag=true; + // (*this->nonLocalDistributions)(D3Q27System::ET_S,x1, x2+1,x3 ) = f[D3Q27System::d0P0]; directionFlag=true; // if ((direction & EsoTwistD3Q27System::etB) == EsoTwistD3Q27System::etB) - // (*this->localDistributions)(D3Q27System::ET_T,x1, x2, x3) = f[D3Q27System::DIR_00M]; directionFlag=true; + // (*this->localDistributions)(D3Q27System::ET_T,x1, x2, x3) = f[D3Q27System::d00M]; directionFlag=true; // if ((direction & EsoTwistD3Q27System::etT) == EsoTwistD3Q27System::etT) - // (*this->nonLocalDistributions)(D3Q27System::ET_B,x1, x2, x3+1 ) = f[D3Q27System::DIR_00P]; directionFlag=true; + // (*this->nonLocalDistributions)(D3Q27System::ET_B,x1, x2, x3+1 ) = f[D3Q27System::d00P]; directionFlag=true; // if ((direction & EsoTwistD3Q27System::etSW) == EsoTwistD3Q27System::etSW) - // (*this->localDistributions)(D3Q27System::ET_NE,x1, x2, x3) = f[D3Q27System::DIR_MM0]; directionFlag=true; + // (*this->localDistributions)(D3Q27System::ET_NE,x1, x2, x3) = f[D3Q27System::dMM0]; directionFlag=true; // if ((direction & EsoTwistD3Q27System::etNE) == EsoTwistD3Q27System::etNE) - // (*this->nonLocalDistributions)(D3Q27System::ET_SW,x1+1,x2+1,x3 ) = f[D3Q27System::DIR_PP0]; directionFlag=true; + // (*this->nonLocalDistributions)(D3Q27System::ET_SW,x1+1,x2+1,x3 ) = f[D3Q27System::dPP0]; directionFlag=true; // if ((direction & EsoTwistD3Q27System::etNW) == EsoTwistD3Q27System::etNW) - // (*this->nonLocalDistributions)(D3Q27System::ET_SE,x1, x2+1,x3 ) = f[D3Q27System::DIR_MP0]; directionFlag=true; + // (*this->nonLocalDistributions)(D3Q27System::ET_SE,x1, x2+1,x3 ) = f[D3Q27System::dMP0]; directionFlag=true; // if ((direction & EsoTwistD3Q27System::etSE) == EsoTwistD3Q27System::etSE) - // (*this->localDistributions)(D3Q27System::ET_NW,x1+1,x2, x3) = f[D3Q27System::DIR_PM0]; directionFlag=true; + // (*this->localDistributions)(D3Q27System::ET_NW,x1+1,x2, x3) = f[D3Q27System::dPM0]; directionFlag=true; // if ((direction & EsoTwistD3Q27System::etBW) == EsoTwistD3Q27System::etBW) - // (*this->localDistributions)(D3Q27System::ET_TE,x1, x2, x3) = f[D3Q27System::DIR_M0M]; directionFlag=true; + // (*this->localDistributions)(D3Q27System::ET_TE,x1, x2, x3) = f[D3Q27System::dM0M]; directionFlag=true; // if ((direction & EsoTwistD3Q27System::etTE) == EsoTwistD3Q27System::etTE) - // (*this->nonLocalDistributions)(D3Q27System::ET_BW,x1+1,x2, x3+1 ) = f[D3Q27System::DIR_P0P]; directionFlag=true; + // (*this->nonLocalDistributions)(D3Q27System::ET_BW,x1+1,x2, x3+1 ) = f[D3Q27System::dP0P]; directionFlag=true; // if ((direction & EsoTwistD3Q27System::etTW) == EsoTwistD3Q27System::etTW) - // (*this->nonLocalDistributions)(D3Q27System::ET_BE,x1, x2, x3+1 ) = f[D3Q27System::DIR_M0P]; directionFlag=true; + // (*this->nonLocalDistributions)(D3Q27System::ET_BE,x1, x2, x3+1 ) = f[D3Q27System::dM0P]; directionFlag=true; // if ((direction & EsoTwistD3Q27System::etBE) == EsoTwistD3Q27System::etBE) - // (*this->localDistributions)(D3Q27System::ET_TW,x1+1,x2, x3) = f[D3Q27System::DIR_P0M]; directionFlag=true; + // (*this->localDistributions)(D3Q27System::ET_TW,x1+1,x2, x3) = f[D3Q27System::dP0M]; directionFlag=true; // if ((direction & EsoTwistD3Q27System::etBS) == EsoTwistD3Q27System::etBS) - // (*this->localDistributions)(D3Q27System::ET_TN,x1, x2, x3) = f[D3Q27System::DIR_0MM]; directionFlag=true; + // (*this->localDistributions)(D3Q27System::ET_TN,x1, x2, x3) = f[D3Q27System::d0MM]; directionFlag=true; // if ((direction & EsoTwistD3Q27System::etTN) == EsoTwistD3Q27System::etTN) - // (*this->nonLocalDistributions)(D3Q27System::ET_BS,x1, x2+1,x3+1 ) = f[D3Q27System::DIR_0PP]; directionFlag=true; + // (*this->nonLocalDistributions)(D3Q27System::ET_BS,x1, x2+1,x3+1 ) = f[D3Q27System::d0PP]; directionFlag=true; // if ((direction & EsoTwistD3Q27System::etTS) == EsoTwistD3Q27System::etTS) - // (*this->nonLocalDistributions)(D3Q27System::ET_BN,x1, x2, x3+1 ) = f[D3Q27System::DIR_0MP]; directionFlag=true; + // (*this->nonLocalDistributions)(D3Q27System::ET_BN,x1, x2, x3+1 ) = f[D3Q27System::d0MP]; directionFlag=true; // if ((direction & EsoTwistD3Q27System::etBN) == EsoTwistD3Q27System::etBN) - // (*this->localDistributions)(D3Q27System::ET_TS,x1, x2+1,x3) = f[D3Q27System::DIR_0PM]; directionFlag=true; + // (*this->localDistributions)(D3Q27System::ET_TS,x1, x2+1,x3) = f[D3Q27System::d0PM]; directionFlag=true; // if ((direction & EsoTwistD3Q27System::etBSW) == EsoTwistD3Q27System::etBSW) // (*this->localDistributions)(D3Q27System::ET_TNE,x1, x2, x3) = f[D3Q27System::BSW]; directionFlag=true; // if ((direction & EsoTwistD3Q27System::etTNE) == EsoTwistD3Q27System::etTNE) - // (*this->nonLocalDistributions)(D3Q27System::ET_BSW,x1+1,x2+1,x3+1) = f[D3Q27System::DIR_PPP]; directionFlag=true; + // (*this->nonLocalDistributions)(D3Q27System::ET_BSW,x1+1,x2+1,x3+1) = f[D3Q27System::dPPP]; directionFlag=true; // if ((direction & EsoTwistD3Q27System::etBSE) == EsoTwistD3Q27System::etBSE) // (*this->localDistributions)(D3Q27System::ET_TNW,x1+1,x2, x3) = f[D3Q27System::BSE]; directionFlag=true; // if ((direction & EsoTwistD3Q27System::etTNW) == EsoTwistD3Q27System::etTNW) - // (*this->nonLocalDistributions)(D3Q27System::ET_BSE,x1, x2+1,x3+1) = f[D3Q27System::DIR_MPP]; directionFlag=true; + // (*this->nonLocalDistributions)(D3Q27System::ET_BSE,x1, x2+1,x3+1) = f[D3Q27System::dMPP]; directionFlag=true; // if ((direction & EsoTwistD3Q27System::etBNW) == EsoTwistD3Q27System::etBNW) // (*this->localDistributions)(D3Q27System::ET_TSE,x1, x2+1,x3) = f[D3Q27System::BNW]; directionFlag=true; // if ((direction & EsoTwistD3Q27System::etTSE) == EsoTwistD3Q27System::etTSE) - // (*this->nonLocalDistributions)(D3Q27System::ET_BNW,x1+1,x2, x3+1) = f[D3Q27System::DIR_PMP]; directionFlag=true; + // (*this->nonLocalDistributions)(D3Q27System::ET_BNW,x1+1,x2, x3+1) = f[D3Q27System::dPMP]; directionFlag=true; // if ((direction & EsoTwistD3Q27System::etBNE) == EsoTwistD3Q27System::etBNE) // (*this->localDistributions)(D3Q27System::ET_TSW,x1+1,x2+1,x3) = f[D3Q27System::DIR_DIR_PPM]; directionFlag=true; // if ((direction & EsoTwistD3Q27System::etTSW) == EsoTwistD3Q27System::etTSW) - // (*this->nonLocalDistributions)(D3Q27System::ET_BNE,x1, x2, x3+1) = f[D3Q27System::DIR_MMP]; directionFlag=true; + // (*this->nonLocalDistributions)(D3Q27System::ET_BNE,x1, x2, x3+1) = f[D3Q27System::dMMP]; directionFlag=true; // if ((direction & EsoTwistD3Q27System::REST) == EsoTwistD3Q27System::REST) // (*this->zeroDistributions)(x1,x2,x3) = f[D3Q27System::REST]; directionFlag=true; //#ifdef _DEBUG @@ -294,86 +294,86 @@ void D3Q27EsoTwist3DSoA::setDistributionForDirection(const real *const f, size_t //#endif //DEBUG } ////////////////////////////////////////////////////////////////////////// -void D3Q27EsoTwist3DSoA::setDistributionForDirection(real f, size_t x1, size_t x2, size_t x3, int direction) +void D3Q27EsoTwist3DSoA::setPostCollisionDistributionForDirection(real f, size_t x1, size_t x2, size_t x3, int direction) { // switch (direction) //{ - // case D3Q27System::DIR_P00 : + // case D3Q27System::dP00 : // (*this->nonLocalDistributions)(D3Q27System::ET_W,x1+1,x2, x3 ) = f; // break; - // case D3Q27System::DIR_M00 : + // case D3Q27System::dM00 : // (*this->localDistributions)(D3Q27System::ET_E,x1, x2, x3) = f; // break; - // case D3Q27System::DIR_0M0 : + // case D3Q27System::d0M0 : // (*this->localDistributions)(D3Q27System::ET_N,x1, x2, x3) = f; // break; - // case D3Q27System::DIR_0P0 : + // case D3Q27System::d0P0 : // (*this->nonLocalDistributions)(D3Q27System::ET_S,x1, x2+1,x3 ) = f; // break; - // case D3Q27System::DIR_00M : + // case D3Q27System::d00M : // (*this->localDistributions)(D3Q27System::ET_T,x1, x2, x3) = f; // break; - // case D3Q27System::DIR_00P : + // case D3Q27System::d00P : // (*this->nonLocalDistributions)(D3Q27System::ET_B,x1, x2, x3+1 ) = f; // break; - // case D3Q27System::DIR_MM0 : + // case D3Q27System::dMM0 : // (*this->localDistributions)(D3Q27System::ET_NE,x1, x2, x3) = f; // break; - // case D3Q27System::DIR_PP0 : + // case D3Q27System::dPP0 : // (*this->nonLocalDistributions)(D3Q27System::ET_SW,x1+1,x2+1,x3 ) = f; // break; - // case D3Q27System::DIR_MP0 : + // case D3Q27System::dMP0 : // (*this->nonLocalDistributions)(D3Q27System::ET_SE,x1, x2+1,x3 ) = f; // break; - // case D3Q27System::DIR_PM0 : + // case D3Q27System::dPM0 : // (*this->localDistributions)(D3Q27System::ET_NW,x1+1,x2, x3) = f; // break; - // case D3Q27System::DIR_M0M : + // case D3Q27System::dM0M : // (*this->localDistributions)(D3Q27System::ET_TE,x1, x2, x3) = f; // break; - // case D3Q27System::DIR_P0P : + // case D3Q27System::dP0P : // (*this->nonLocalDistributions)(D3Q27System::ET_BW,x1+1,x2, x3+1 ) = f; // break; - // case D3Q27System::DIR_M0P : + // case D3Q27System::dM0P : // (*this->nonLocalDistributions)(D3Q27System::ET_BE,x1, x2, x3+1 ) = f; // break; - // case D3Q27System::DIR_P0M : + // case D3Q27System::dP0M : // (*this->localDistributions)(D3Q27System::ET_TW,x1+1,x2, x3) = f; // break; - // case D3Q27System::DIR_0MM : + // case D3Q27System::d0MM : // (*this->localDistributions)(D3Q27System::ET_TN,x1, x2, x3) = f; // break; - // case D3Q27System::DIR_0PP : + // case D3Q27System::d0PP : // (*this->nonLocalDistributions)(D3Q27System::ET_BS,x1, x2+1,x3+1 ) = f; // break; - // case D3Q27System::DIR_0MP : + // case D3Q27System::d0MP : // (*this->nonLocalDistributions)(D3Q27System::ET_BN,x1, x2, x3+1 ) = f; // break; - // case D3Q27System::DIR_0PM : + // case D3Q27System::d0PM : // (*this->localDistributions)(D3Q27System::ET_TS,x1, x2+1,x3) = f; // break; // case D3Q27System::BSW : // (*this->localDistributions)(D3Q27System::ET_TNE,x1, x2, x3) = f; // break; - // case D3Q27System::DIR_PPP : + // case D3Q27System::dPPP : // (*this->nonLocalDistributions)(D3Q27System::ET_BSW,x1+1,x2+1,x3+1) = f; // break; // case D3Q27System::BSE : // (*this->localDistributions)(D3Q27System::ET_TNW,x1+1,x2, x3) = f; // break; - // case D3Q27System::DIR_MPP : + // case D3Q27System::dMPP : // (*this->nonLocalDistributions)(D3Q27System::ET_BSE,x1, x2+1,x3+1) = f; // break; // case D3Q27System::BNW : // (*this->localDistributions)(D3Q27System::ET_TSE,x1, x2+1,x3) = f; // break; - // case D3Q27System::DIR_PMP : + // case D3Q27System::dPMP : // (*this->nonLocalDistributions)(D3Q27System::ET_BNW,x1+1,x2, x3+1) = f; // break; // case D3Q27System::DIR_DIR_PPM : // (*this->localDistributions)(D3Q27System::ET_TSW,x1+1,x2+1,x3) = f; // break; - // case D3Q27System::DIR_MMP : + // case D3Q27System::dMMP : // (*this->nonLocalDistributions)(D3Q27System::ET_BNE,x1, x2, x3+1) = f; // break; // case D3Q27System::REST : @@ -384,65 +384,65 @@ void D3Q27EsoTwist3DSoA::setDistributionForDirection(real f, size_t x1, size_t x //} } ////////////////////////////////////////////////////////////////////////// -void D3Q27EsoTwist3DSoA::setDistributionInvForDirection(const real *const f, size_t x1, size_t x2, size_t x3, +void D3Q27EsoTwist3DSoA::setPreCollisionDistributionForDirection(const real *const f, size_t x1, size_t x2, size_t x3, unsigned long int direction) { // bool directionFlag = false; // if ((direction & EsoTwistD3Q27System::etE) == EsoTwistD3Q27System::etE) - // (*this->localDistributions)(D3Q27System::ET_E,x1, x2, x3) = f[D3Q27System::DIR_P00]; directionFlag=true; + // (*this->localDistributions)(D3Q27System::ET_E,x1, x2, x3) = f[D3Q27System::dP00]; directionFlag=true; // if ((direction & EsoTwistD3Q27System::etW) == EsoTwistD3Q27System::etW) - // (*this->nonLocalDistributions)(D3Q27System::ET_W,x1+1,x2, x3 ) = f[D3Q27System::DIR_M00]; directionFlag=true; + // (*this->nonLocalDistributions)(D3Q27System::ET_W,x1+1,x2, x3 ) = f[D3Q27System::dM00]; directionFlag=true; // if ((direction & EsoTwistD3Q27System::etS) == EsoTwistD3Q27System::etS) - // (*this->nonLocalDistributions)(D3Q27System::ET_S,x1, x2+1,x3 ) = f[D3Q27System::DIR_0M0]; directionFlag=true; + // (*this->nonLocalDistributions)(D3Q27System::ET_S,x1, x2+1,x3 ) = f[D3Q27System::d0M0]; directionFlag=true; // if ((direction & EsoTwistD3Q27System::etN) == EsoTwistD3Q27System::etN) - // (*this->localDistributions)(D3Q27System::ET_N,x1, x2, x3) = f[D3Q27System::DIR_0P0]; directionFlag=true; + // (*this->localDistributions)(D3Q27System::ET_N,x1, x2, x3) = f[D3Q27System::d0P0]; directionFlag=true; // if ((direction & EsoTwistD3Q27System::etB) == EsoTwistD3Q27System::etB) - // (*this->nonLocalDistributions)(D3Q27System::ET_B,x1, x2, x3+1 ) = f[D3Q27System::DIR_00M]; directionFlag=true; + // (*this->nonLocalDistributions)(D3Q27System::ET_B,x1, x2, x3+1 ) = f[D3Q27System::d00M]; directionFlag=true; // if ((direction & EsoTwistD3Q27System::etT) == EsoTwistD3Q27System::etT) - // (*this->localDistributions)(D3Q27System::ET_T,x1, x2, x3) = f[D3Q27System::DIR_00P]; directionFlag=true; + // (*this->localDistributions)(D3Q27System::ET_T,x1, x2, x3) = f[D3Q27System::d00P]; directionFlag=true; // if ((direction & EsoTwistD3Q27System::etSW) == EsoTwistD3Q27System::etSW) - // (*this->nonLocalDistributions)(D3Q27System::ET_SW,x1+1,x2+1,x3 ) = f[D3Q27System::DIR_MM0]; directionFlag=true; + // (*this->nonLocalDistributions)(D3Q27System::ET_SW,x1+1,x2+1,x3 ) = f[D3Q27System::dMM0]; directionFlag=true; // if ((direction & EsoTwistD3Q27System::etNE) == EsoTwistD3Q27System::etNE) - // (*this->localDistributions)(D3Q27System::ET_NE,x1, x2, x3) = f[D3Q27System::DIR_PP0]; directionFlag=true; + // (*this->localDistributions)(D3Q27System::ET_NE,x1, x2, x3) = f[D3Q27System::dPP0]; directionFlag=true; // if ((direction & EsoTwistD3Q27System::etNW) == EsoTwistD3Q27System::etNW) - // (*this->localDistributions)(D3Q27System::ET_NW,x1+1,x2, x3) = f[D3Q27System::DIR_MP0]; directionFlag=true; + // (*this->localDistributions)(D3Q27System::ET_NW,x1+1,x2, x3) = f[D3Q27System::dMP0]; directionFlag=true; // if ((direction & EsoTwistD3Q27System::etSE) == EsoTwistD3Q27System::etSE) - // (*this->nonLocalDistributions)(D3Q27System::ET_SE,x1, x2+1,x3 ) = f[D3Q27System::DIR_PM0]; directionFlag=true; + // (*this->nonLocalDistributions)(D3Q27System::ET_SE,x1, x2+1,x3 ) = f[D3Q27System::dPM0]; directionFlag=true; // if ((direction & EsoTwistD3Q27System::etBW) == EsoTwistD3Q27System::etBW) - // (*this->nonLocalDistributions)(D3Q27System::ET_BW,x1+1,x2, x3+1 ) = f[D3Q27System::DIR_M0M]; directionFlag=true; + // (*this->nonLocalDistributions)(D3Q27System::ET_BW,x1+1,x2, x3+1 ) = f[D3Q27System::dM0M]; directionFlag=true; // if ((direction & EsoTwistD3Q27System::etTE) == EsoTwistD3Q27System::etTE) - // (*this->localDistributions)(D3Q27System::ET_TE,x1, x2, x3) = f[D3Q27System::DIR_P0P]; directionFlag=true; + // (*this->localDistributions)(D3Q27System::ET_TE,x1, x2, x3) = f[D3Q27System::dP0P]; directionFlag=true; // if ((direction & EsoTwistD3Q27System::etTW) == EsoTwistD3Q27System::etTW) - // (*this->localDistributions)(D3Q27System::ET_TW,x1+1,x2, x3) = f[D3Q27System::DIR_M0P]; directionFlag=true; + // (*this->localDistributions)(D3Q27System::ET_TW,x1+1,x2, x3) = f[D3Q27System::dM0P]; directionFlag=true; // if ((direction & EsoTwistD3Q27System::etBE) == EsoTwistD3Q27System::etBE) - // (*this->nonLocalDistributions)(D3Q27System::ET_BE,x1, x2, x3+1 ) = f[D3Q27System::DIR_P0M]; directionFlag=true; + // (*this->nonLocalDistributions)(D3Q27System::ET_BE,x1, x2, x3+1 ) = f[D3Q27System::dP0M]; directionFlag=true; // if ((direction & EsoTwistD3Q27System::etBS) == EsoTwistD3Q27System::etBS) - // (*this->nonLocalDistributions)(D3Q27System::ET_BS,x1, x2+1,x3+1 ) = f[D3Q27System::DIR_0MM]; directionFlag=true; + // (*this->nonLocalDistributions)(D3Q27System::ET_BS,x1, x2+1,x3+1 ) = f[D3Q27System::d0MM]; directionFlag=true; // if ((direction & EsoTwistD3Q27System::etTN) == EsoTwistD3Q27System::etTN) - // (*this->localDistributions)(D3Q27System::ET_TN,x1, x2, x3) = f[D3Q27System::DIR_0PP]; directionFlag=true; + // (*this->localDistributions)(D3Q27System::ET_TN,x1, x2, x3) = f[D3Q27System::d0PP]; directionFlag=true; // if ((direction & EsoTwistD3Q27System::etTS) == EsoTwistD3Q27System::etTS) - // (*this->localDistributions)(D3Q27System::ET_TS,x1, x2+1,x3) = f[D3Q27System::DIR_0MP]; directionFlag=true; + // (*this->localDistributions)(D3Q27System::ET_TS,x1, x2+1,x3) = f[D3Q27System::d0MP]; directionFlag=true; // if ((direction & EsoTwistD3Q27System::etBN) == EsoTwistD3Q27System::etBN) - // (*this->nonLocalDistributions)(D3Q27System::ET_BN,x1, x2, x3+1 ) = f[D3Q27System::DIR_0PM]; directionFlag=true; + // (*this->nonLocalDistributions)(D3Q27System::ET_BN,x1, x2, x3+1 ) = f[D3Q27System::d0PM]; directionFlag=true; // if ((direction & EsoTwistD3Q27System::etBSW) == EsoTwistD3Q27System::etBSW) // (*this->nonLocalDistributions)(D3Q27System::ET_BSW,x1+1,x2+1,x3+1) = f[D3Q27System::BSW]; // directionFlag=true; // if ((direction & EsoTwistD3Q27System::etTNE) == EsoTwistD3Q27System::etTNE) - // (*this->localDistributions)(D3Q27System::ET_TNE,x1, x2, x3) = f[D3Q27System::DIR_PPP]; directionFlag=true; + // (*this->localDistributions)(D3Q27System::ET_TNE,x1, x2, x3) = f[D3Q27System::dPPP]; directionFlag=true; // if ((direction & EsoTwistD3Q27System::etBSE) == EsoTwistD3Q27System::etBSE) // (*this->nonLocalDistributions)(D3Q27System::ET_BSE,x1, x2+1,x3+1) = f[D3Q27System::BSE]; // directionFlag=true; // if ((direction & EsoTwistD3Q27System::etTNW) == EsoTwistD3Q27System::etTNW) - // (*this->localDistributions)(D3Q27System::ET_TNW,x1+1,x2, x3) = f[D3Q27System::DIR_MPP]; directionFlag=true; + // (*this->localDistributions)(D3Q27System::ET_TNW,x1+1,x2, x3) = f[D3Q27System::dMPP]; directionFlag=true; // if ((direction & EsoTwistD3Q27System::etBNW) == EsoTwistD3Q27System::etBNW) // (*this->nonLocalDistributions)(D3Q27System::ET_BNW,x1+1,x2, x3+1) = f[D3Q27System::BNW]; // directionFlag=true; // if ((direction & EsoTwistD3Q27System::etTSE) == EsoTwistD3Q27System::etTSE) - // (*this->localDistributions)(D3Q27System::ET_TSE,x1, x2+1,x3) = f[D3Q27System::DIR_PMP]; directionFlag=true; + // (*this->localDistributions)(D3Q27System::ET_TSE,x1, x2+1,x3) = f[D3Q27System::dPMP]; directionFlag=true; // if ((direction & EsoTwistD3Q27System::etBNE) == EsoTwistD3Q27System::etBNE) // (*this->nonLocalDistributions)(D3Q27System::ET_BNE,x1, x2, x3+1)= f[D3Q27System::DIR_DIR_PPM]; directionFlag=true; // if ((direction & EsoTwistD3Q27System::etTSW) == EsoTwistD3Q27System::etTSW) - // (*this->localDistributions)(D3Q27System::ET_TSW,x1+1,x2+1,x3) = f[D3Q27System::DIR_MMP]; directionFlag=true; + // (*this->localDistributions)(D3Q27System::ET_TSW,x1+1,x2+1,x3) = f[D3Q27System::dMMP]; directionFlag=true; // if ((direction & EsoTwistD3Q27System::REST) == EsoTwistD3Q27System::REST) // (*this->zeroDistributions)(x1,x2,x3) = f[D3Q27System::REST]; directionFlag=true; //#ifdef _DEBUG @@ -450,87 +450,87 @@ void D3Q27EsoTwist3DSoA::setDistributionInvForDirection(const real *const f, siz //#endif //DEBUG } ////////////////////////////////////////////////////////////////////////// -void D3Q27EsoTwist3DSoA::setDistributionInvForDirection(real f, size_t x1, size_t x2, size_t x3, +void D3Q27EsoTwist3DSoA::setPreCollisionDistributionForDirection(real f, size_t x1, size_t x2, size_t x3, unsigned long int direction) { // switch (direction) //{ - // case D3Q27System::DIR_P00 : + // case D3Q27System::dP00 : // (*this->localDistributions)(D3Q27System::ET_E,x1, x2, x3) = f; // break; - // case D3Q27System::DIR_M00 : + // case D3Q27System::dM00 : // (*this->nonLocalDistributions)(D3Q27System::ET_W,x1+1,x2, x3 ) = f; // break; - // case D3Q27System::DIR_0M0 : + // case D3Q27System::d0M0 : // (*this->nonLocalDistributions)(D3Q27System::ET_S,x1, x2+1,x3 ) = f; // break; - // case D3Q27System::DIR_0P0 : + // case D3Q27System::d0P0 : // (*this->localDistributions)(D3Q27System::ET_N,x1, x2, x3) = f; // break; - // case D3Q27System::DIR_00M : + // case D3Q27System::d00M : // (*this->nonLocalDistributions)(D3Q27System::ET_B,x1, x2, x3+1 ) = f; // break; - // case D3Q27System::DIR_00P : + // case D3Q27System::d00P : // (*this->localDistributions)(D3Q27System::ET_T,x1, x2, x3) = f; // break; - // case D3Q27System::DIR_MM0 : + // case D3Q27System::dMM0 : // (*this->nonLocalDistributions)(D3Q27System::ET_SW,x1+1,x2+1,x3 ) = f; // break; - // case D3Q27System::DIR_PP0 : + // case D3Q27System::dPP0 : // (*this->localDistributions)(D3Q27System::ET_NE,x1, x2, x3) = f; // break; - // case D3Q27System::DIR_MP0 : + // case D3Q27System::dMP0 : // (*this->localDistributions)(D3Q27System::ET_NW,x1+1,x2, x3) = f; // break; - // case D3Q27System::DIR_PM0 : + // case D3Q27System::dPM0 : // (*this->nonLocalDistributions)(D3Q27System::ET_SE,x1, x2+1,x3 ) = f; // break; - // case D3Q27System::DIR_M0M : + // case D3Q27System::dM0M : // (*this->nonLocalDistributions)(D3Q27System::ET_BW,x1+1,x2, x3+1 ) = f; // break; - // case D3Q27System::DIR_P0P : + // case D3Q27System::dP0P : // (*this->localDistributions)(D3Q27System::ET_TE,x1, x2, x3) = f; // break; - // case D3Q27System::DIR_M0P : + // case D3Q27System::dM0P : // (*this->localDistributions)(D3Q27System::ET_TW,x1+1,x2, x3) = f; // break; - // case D3Q27System::DIR_P0M : + // case D3Q27System::dP0M : // (*this->nonLocalDistributions)(D3Q27System::ET_BE,x1, x2, x3+1 ) = f; // break; - // case D3Q27System::DIR_0MM : + // case D3Q27System::d0MM : // (*this->nonLocalDistributions)(D3Q27System::ET_BS,x1, x2+1,x3+1 ) = f; // break; - // case D3Q27System::DIR_0PP : + // case D3Q27System::d0PP : // (*this->localDistributions)(D3Q27System::ET_TN,x1, x2, x3) = f; // break; - // case D3Q27System::DIR_0MP : + // case D3Q27System::d0MP : // (*this->localDistributions)(D3Q27System::ET_TS,x1, x2+1,x3) = f; // break; - // case D3Q27System::DIR_0PM : + // case D3Q27System::d0PM : // (*this->nonLocalDistributions)(D3Q27System::ET_BN,x1, x2, x3+1 ) = f; // break; // case D3Q27System::BSW : // (*this->nonLocalDistributions)(D3Q27System::ET_BSW,x1+1,x2+1,x3+1) = f; // break; - // case D3Q27System::DIR_PPP : + // case D3Q27System::dPPP : // (*this->localDistributions)(D3Q27System::ET_TNE,x1, x2, x3) = f; // break; // case D3Q27System::BSE : // (*this->nonLocalDistributions)(D3Q27System::ET_BSE,x1, x2+1,x3+1) = f; // break; - // case D3Q27System::DIR_MPP : + // case D3Q27System::dMPP : // (*this->localDistributions)(D3Q27System::ET_TNW,x1+1,x2, x3) = f; // break; // case D3Q27System::BNW : // (*this->nonLocalDistributions)(D3Q27System::ET_BNW,x1+1,x2, x3+1) = f; // break; - // case D3Q27System::DIR_PMP : + // case D3Q27System::dPMP : // (*this->localDistributions)(D3Q27System::ET_TSE,x1, x2+1,x3) = f; // break; // case D3Q27System::DIR_DIR_PPM : // (*this->nonLocalDistributions)(D3Q27System::ET_BNE,x1, x2, x3+1) = f; // break; - // case D3Q27System::DIR_MMP : + // case D3Q27System::dMMP : // (*this->localDistributions)(D3Q27System::ET_TSW,x1+1,x2+1,x3) = f; // break; // case D3Q27System::REST : @@ -546,57 +546,57 @@ real D3Q27EsoTwist3DSoA::getDistributionInvForDirection(size_t /*x1*/, size_t /* { // switch (direction) //{ - // case D3Q27System::DIR_P00 : + // case D3Q27System::dP00 : // return (*this->nonLocalDistributions)(D3Q27System::ET_W,x1+1,x2, x3 ); - // case D3Q27System::DIR_M00 : + // case D3Q27System::dM00 : // return (*this->localDistributions)(D3Q27System::ET_E,x1, x2, x3); - // case D3Q27System::DIR_0M0 : + // case D3Q27System::d0M0 : // return (*this->localDistributions)(D3Q27System::ET_N,x1, x2, x3); - // case D3Q27System::DIR_0P0 : + // case D3Q27System::d0P0 : // return (*this->nonLocalDistributions)(D3Q27System::ET_S,x1, x2+1,x3 ); - // case D3Q27System::DIR_00M : + // case D3Q27System::d00M : // return (*this->localDistributions)(D3Q27System::ET_T,x1, x2, x3); - // case D3Q27System::DIR_00P : + // case D3Q27System::d00P : // return (*this->nonLocalDistributions)(D3Q27System::ET_B,x1, x2, x3+1 ); - // case D3Q27System::DIR_MM0 : + // case D3Q27System::dMM0 : // return (*this->localDistributions)(D3Q27System::ET_NE,x1, x2, x3); - // case D3Q27System::DIR_PP0 : + // case D3Q27System::dPP0 : // return (*this->nonLocalDistributions)(D3Q27System::ET_SW,x1+1,x2+1,x3 ); - // case D3Q27System::DIR_MP0 : + // case D3Q27System::dMP0 : // return (*this->nonLocalDistributions)(D3Q27System::ET_SE,x1, x2+1,x3 ); - // case D3Q27System::DIR_PM0 : + // case D3Q27System::dPM0 : // return (*this->localDistributions)(D3Q27System::ET_NW,x1+1,x2, x3); - // case D3Q27System::DIR_M0M : + // case D3Q27System::dM0M : // return (*this->localDistributions)(D3Q27System::ET_TE,x1, x2, x3); - // case D3Q27System::DIR_P0P : + // case D3Q27System::dP0P : // return (*this->nonLocalDistributions)(D3Q27System::ET_BW,x1+1,x2, x3+1 ); - // case D3Q27System::DIR_M0P : + // case D3Q27System::dM0P : // return (*this->nonLocalDistributions)(D3Q27System::ET_BE,x1, x2, x3+1 ); - // case D3Q27System::DIR_P0M : + // case D3Q27System::dP0M : // return (*this->localDistributions)(D3Q27System::ET_TW,x1+1,x2, x3); - // case D3Q27System::DIR_0MM : + // case D3Q27System::d0MM : // return (*this->localDistributions)(D3Q27System::ET_TN,x1, x2, x3); - // case D3Q27System::DIR_0PP : + // case D3Q27System::d0PP : // return (*this->nonLocalDistributions)(D3Q27System::ET_BS,x1, x2+1,x3+1 ); - // case D3Q27System::DIR_0MP : + // case D3Q27System::d0MP : // return (*this->nonLocalDistributions)(D3Q27System::ET_BN,x1, x2, x3+1 ); - // case D3Q27System::DIR_0PM : + // case D3Q27System::d0PM : // return (*this->localDistributions)(D3Q27System::ET_TS,x1, x2+1,x3); // case D3Q27System::BSW : // return (*this->localDistributions)(D3Q27System::ET_TNE,x1, x2, x3); - // case D3Q27System::DIR_PPP : + // case D3Q27System::dPPP : // return (*this->nonLocalDistributions)(D3Q27System::ET_BSW,x1+1,x2+1,x3+1); // case D3Q27System::BSE : // return (*this->localDistributions)(D3Q27System::ET_TNW,x1+1,x2, x3); - // case D3Q27System::DIR_MPP : + // case D3Q27System::dMPP : // return (*this->nonLocalDistributions)(D3Q27System::ET_BSE,x1, x2+1,x3+1); // case D3Q27System::BNW : // return (*this->localDistributions)(D3Q27System::ET_TSE,x1, x2+1,x3); - // case D3Q27System::DIR_PMP : + // case D3Q27System::dPMP : // return (*this->nonLocalDistributions)(D3Q27System::ET_BNW,x1+1,x2, x3+1); // case D3Q27System::DIR_DIR_PPM : // return (*this->localDistributions)(D3Q27System::ET_TSW,x1+1,x2+1,x3); - // case D3Q27System::DIR_MMP : + // case D3Q27System::dMMP : // return (*this->nonLocalDistributions)(D3Q27System::ET_BNE,x1, x2, x3+1); // case D3Q27System::REST : // return (*this->zeroDistributions)(x1,x2,x3); diff --git a/src/cpu/VirtualFluidsCore/Data/D3Q27EsoTwist3DSoA.h b/src/cpu/core/Data/D3Q27EsoTwist3DSoA.h similarity index 81% rename from src/cpu/VirtualFluidsCore/Data/D3Q27EsoTwist3DSoA.h rename to src/cpu/core/Data/D3Q27EsoTwist3DSoA.h index 204e6fe15f69a387c289ae8c60f63d59ef62ddc3..503054373c0ef6cf7fbbc4bd24cf1d06c769995a 100644 --- a/src/cpu/VirtualFluidsCore/Data/D3Q27EsoTwist3DSoA.h +++ b/src/cpu/core/Data/D3Q27EsoTwist3DSoA.h @@ -48,28 +48,28 @@ public: ////////////////////////////////////////////////////////////////////////// void swap() override; ////////////////////////////////////////////////////////////////////////// - void getDistribution(real *const f, size_t x1, size_t x2, size_t x3) override; + void getPreCollisionDistribution(real *const f, size_t x1, size_t x2, size_t x3) override; ////////////////////////////////////////////////////////////////////////// - void setDistribution(const real *const f, size_t x1, size_t x2, size_t x3) override; + void setPostCollisionDistribution(const real *const f, size_t x1, size_t x2, size_t x3) override; //////////////////////////////////////////////////////////////////////// - void getDistributionInv(real *const f, size_t x1, size_t x2, size_t x3) override; + void getPostCollisionDistribution(real *const f, size_t x1, size_t x2, size_t x3) override; ////////////////////////////////////////////////////////////////////////// - void setDistributionInv(const real *const f, size_t x1, size_t x2, size_t x3) override; + void setPreCollisionDistribution(const real *const f, size_t x1, size_t x2, size_t x3) override; ////////////////////////////////////////////////////////////////////////// - void setDistributionForDirection(const real *const f, size_t x1, size_t x2, size_t x3, + void setPostCollisionDistributionForDirection(const real *const f, size_t x1, size_t x2, size_t x3, unsigned long int direction) override; ////////////////////////////////////////////////////////////////////////// - void setDistributionForDirection(real f, size_t x1, size_t x2, size_t x3, int direction) override; + void setPostCollisionDistributionForDirection(real f, size_t x1, size_t x2, size_t x3, int direction) override; ////////////////////////////////////////////////////////////////////////// real getDistributionInvForDirection(size_t x1, size_t x2, size_t x3, int direction) override; ////////////////////////////////////////////////////////////////////////// - void setDistributionInvForDirection(const real *const f, size_t x1, size_t x2, size_t x3, + void setPreCollisionDistributionForDirection(const real *const f, size_t x1, size_t x2, size_t x3, unsigned long int direction) override; ////////////////////////////////////////////////////////////////////////// - void setDistributionInvForDirection(real f, size_t x1, size_t x2, size_t x3, + void setPreCollisionDistributionForDirection(real f, size_t x1, size_t x2, size_t x3, unsigned long int direction) override; ////////////////////////////////////////////////////////////////////////// - real getDistributionForDirection(size_t x1, size_t x2, size_t x3, int direction) override; + real getPreCollisionDistributionForDirection(size_t x1, size_t x2, size_t x3, int direction) override; ////////////////////////////////////////////////////////////////////////// size_t getNX1() const override; ////////////////////////////////////////////////////////////////////////// diff --git a/src/cpu/VirtualFluidsCore/Data/D3Q27EsoTwist3DSplittedVector.cpp b/src/cpu/core/Data/D3Q27EsoTwist3DSplittedVector.cpp similarity index 72% rename from src/cpu/VirtualFluidsCore/Data/D3Q27EsoTwist3DSplittedVector.cpp rename to src/cpu/core/Data/D3Q27EsoTwist3DSplittedVector.cpp index ae213baab78c7c18912c2b33af684aad47e3b1dd..f40adc2eab55c3292faaec698ff0bdb666adf13c 100644 --- a/src/cpu/VirtualFluidsCore/Data/D3Q27EsoTwist3DSplittedVector.cpp +++ b/src/cpu/core/Data/D3Q27EsoTwist3DSplittedVector.cpp @@ -54,294 +54,294 @@ D3Q27EsoTwist3DSplittedVector::~D3Q27EsoTwist3DSplittedVector() = default; ////////////////////////////////////////////////////////////////////////// void D3Q27EsoTwist3DSplittedVector::swap() { std::swap(this->localDistributions, this->nonLocalDistributions); } ////////////////////////////////////////////////////////////////////////// -void D3Q27EsoTwist3DSplittedVector::getDistribution(real *const f, size_t x1, size_t x2, size_t x3) +void D3Q27EsoTwist3DSplittedVector::getPreCollisionDistribution(real *const f, size_t x1, size_t x2, size_t x3) { const size_t x1p = x1 + 1; const size_t x2p = x2 + 1; const size_t x3p = x3 + 1; - f[vf::lbm::dir::DIR_P00] = (*this->localDistributions)(D3Q27System::ET_P00, x1, x2, x3); - f[vf::lbm::dir::DIR_0P0] = (*this->localDistributions)(D3Q27System::ET_0P0, x1, x2, x3); - f[vf::lbm::dir::DIR_00P] = (*this->localDistributions)(D3Q27System::ET_00P, x1, x2, x3); - f[vf::lbm::dir::DIR_PP0] = (*this->localDistributions)(D3Q27System::ET_PP0, x1, x2, x3); - f[vf::lbm::dir::DIR_MP0] = (*this->localDistributions)(D3Q27System::ET_MP0, x1p, x2, x3); - f[vf::lbm::dir::DIR_P0P] = (*this->localDistributions)(D3Q27System::ET_P0P, x1, x2, x3); - f[vf::lbm::dir::DIR_M0P] = (*this->localDistributions)(D3Q27System::ET_M0P, x1p, x2, x3); - f[vf::lbm::dir::DIR_0PP] = (*this->localDistributions)(D3Q27System::ET_0PP, x1, x2, x3); - f[vf::lbm::dir::DIR_0MP] = (*this->localDistributions)(D3Q27System::ET_0MP, x1, x2p, x3); - f[vf::lbm::dir::DIR_PPP] = (*this->localDistributions)(D3Q27System::ET_PPP, x1, x2, x3); - f[vf::lbm::dir::DIR_MPP] = (*this->localDistributions)(D3Q27System::ET_MPP, x1p, x2, x3); - f[vf::lbm::dir::DIR_PMP] = (*this->localDistributions)(D3Q27System::ET_PMP, x1, x2p, x3); - f[vf::lbm::dir::DIR_MMP] = (*this->localDistributions)(D3Q27System::ET_MMP, x1p, x2p, x3); + f[vf::lbm::dir::dP00] = (*this->localDistributions)(D3Q27System::ET_P00, x1, x2, x3); + f[vf::lbm::dir::d0P0] = (*this->localDistributions)(D3Q27System::ET_0P0, x1, x2, x3); + f[vf::lbm::dir::d00P] = (*this->localDistributions)(D3Q27System::ET_00P, x1, x2, x3); + f[vf::lbm::dir::dPP0] = (*this->localDistributions)(D3Q27System::ET_PP0, x1, x2, x3); + f[vf::lbm::dir::dMP0] = (*this->localDistributions)(D3Q27System::ET_MP0, x1p, x2, x3); + f[vf::lbm::dir::dP0P] = (*this->localDistributions)(D3Q27System::ET_P0P, x1, x2, x3); + f[vf::lbm::dir::dM0P] = (*this->localDistributions)(D3Q27System::ET_M0P, x1p, x2, x3); + f[vf::lbm::dir::d0PP] = (*this->localDistributions)(D3Q27System::ET_0PP, x1, x2, x3); + f[vf::lbm::dir::d0MP] = (*this->localDistributions)(D3Q27System::ET_0MP, x1, x2p, x3); + f[vf::lbm::dir::dPPP] = (*this->localDistributions)(D3Q27System::ET_PPP, x1, x2, x3); + f[vf::lbm::dir::dMPP] = (*this->localDistributions)(D3Q27System::ET_MPP, x1p, x2, x3); + f[vf::lbm::dir::dPMP] = (*this->localDistributions)(D3Q27System::ET_PMP, x1, x2p, x3); + f[vf::lbm::dir::dMMP] = (*this->localDistributions)(D3Q27System::ET_MMP, x1p, x2p, x3); - f[vf::lbm::dir::DIR_M00] = (*this->nonLocalDistributions)(D3Q27System::ET_M00, x1p, x2, x3); - f[vf::lbm::dir::DIR_0M0] = (*this->nonLocalDistributions)(D3Q27System::ET_0M0, x1, x2p, x3); - f[vf::lbm::dir::DIR_00M] = (*this->nonLocalDistributions)(D3Q27System::ET_00M, x1, x2, x3p); - f[vf::lbm::dir::DIR_MM0] = (*this->nonLocalDistributions)(D3Q27System::ET_MM0, x1p, x2p, x3); - f[vf::lbm::dir::DIR_PM0] = (*this->nonLocalDistributions)(D3Q27System::ET_PM0, x1, x2p, x3); - f[vf::lbm::dir::DIR_M0M] = (*this->nonLocalDistributions)(D3Q27System::ET_M0M, x1p, x2, x3p); - f[vf::lbm::dir::DIR_P0M] = (*this->nonLocalDistributions)(D3Q27System::ET_P0M, x1, x2, x3p); - f[vf::lbm::dir::DIR_0MM] = (*this->nonLocalDistributions)(D3Q27System::ET_0MM, x1, x2p, x3p); - f[vf::lbm::dir::DIR_0PM] = (*this->nonLocalDistributions)(D3Q27System::ET_0PM, x1, x2, x3p); - f[vf::lbm::dir::DIR_MMM] = (*this->nonLocalDistributions)(D3Q27System::ET_MMM, x1p, x2p, x3p); - f[vf::lbm::dir::DIR_PMM] = (*this->nonLocalDistributions)(D3Q27System::ET_PMM, x1, x2p, x3p); - f[vf::lbm::dir::DIR_MPM] = (*this->nonLocalDistributions)(D3Q27System::ET_MPM, x1p, x2, x3p); - f[vf::lbm::dir::DIR_PPM] = (*this->nonLocalDistributions)(D3Q27System::ET_PPM, x1, x2, x3p); + f[vf::lbm::dir::dM00] = (*this->nonLocalDistributions)(D3Q27System::ET_M00, x1p, x2, x3); + f[vf::lbm::dir::d0M0] = (*this->nonLocalDistributions)(D3Q27System::ET_0M0, x1, x2p, x3); + f[vf::lbm::dir::d00M] = (*this->nonLocalDistributions)(D3Q27System::ET_00M, x1, x2, x3p); + f[vf::lbm::dir::dMM0] = (*this->nonLocalDistributions)(D3Q27System::ET_MM0, x1p, x2p, x3); + f[vf::lbm::dir::dPM0] = (*this->nonLocalDistributions)(D3Q27System::ET_PM0, x1, x2p, x3); + f[vf::lbm::dir::dM0M] = (*this->nonLocalDistributions)(D3Q27System::ET_M0M, x1p, x2, x3p); + f[vf::lbm::dir::dP0M] = (*this->nonLocalDistributions)(D3Q27System::ET_P0M, x1, x2, x3p); + f[vf::lbm::dir::d0MM] = (*this->nonLocalDistributions)(D3Q27System::ET_0MM, x1, x2p, x3p); + f[vf::lbm::dir::d0PM] = (*this->nonLocalDistributions)(D3Q27System::ET_0PM, x1, x2, x3p); + f[vf::lbm::dir::dMMM] = (*this->nonLocalDistributions)(D3Q27System::ET_MMM, x1p, x2p, x3p); + f[vf::lbm::dir::dPMM] = (*this->nonLocalDistributions)(D3Q27System::ET_PMM, x1, x2p, x3p); + f[vf::lbm::dir::dMPM] = (*this->nonLocalDistributions)(D3Q27System::ET_MPM, x1p, x2, x3p); + f[vf::lbm::dir::dPPM] = (*this->nonLocalDistributions)(D3Q27System::ET_PPM, x1, x2, x3p); - f[vf::lbm::dir::DIR_000] = (*this->zeroDistributions)(x1, x2, x3); + f[vf::lbm::dir::d000] = (*this->zeroDistributions)(x1, x2, x3); } ////////////////////////////////////////////////////////////////////////// -void D3Q27EsoTwist3DSplittedVector::setDistribution(const real *const f, size_t x1, size_t x2, size_t x3) +void D3Q27EsoTwist3DSplittedVector::setPostCollisionDistribution(const real *const f, size_t x1, size_t x2, size_t x3) { using namespace vf::lbm::dir; - (*this->localDistributions)(D3Q27System::ET_P00, x1, x2, x3) = f[INV_P00]; - (*this->localDistributions)(D3Q27System::ET_0P0, x1, x2, x3) = f[INV_0P0]; - (*this->localDistributions)(D3Q27System::ET_00P, x1, x2, x3) = f[INV_00P]; - (*this->localDistributions)(D3Q27System::ET_PP0, x1, x2, x3) = f[INV_PP0]; - (*this->localDistributions)(D3Q27System::ET_MP0, x1 + 1, x2, x3) = f[INV_MP0]; - (*this->localDistributions)(D3Q27System::ET_P0P, x1, x2, x3) = f[INV_P0P]; - (*this->localDistributions)(D3Q27System::ET_M0P, x1 + 1, x2, x3) = f[INV_M0P]; - (*this->localDistributions)(D3Q27System::ET_0PP, x1, x2, x3) = f[INV_0PP]; - (*this->localDistributions)(D3Q27System::ET_0MP, x1, x2 + 1, x3) = f[INV_0MP]; - (*this->localDistributions)(D3Q27System::ET_PPP, x1, x2, x3) = f[INV_PPP]; - (*this->localDistributions)(D3Q27System::ET_MPP, x1 + 1, x2, x3) = f[INV_MPP]; - (*this->localDistributions)(D3Q27System::ET_PMP, x1, x2 + 1, x3) = f[INV_PMP]; - (*this->localDistributions)(D3Q27System::ET_MMP, x1 + 1, x2 + 1, x3) = f[INV_MMP]; + (*this->localDistributions)(D3Q27System::ET_P00, x1, x2, x3) = f[iP00]; + (*this->localDistributions)(D3Q27System::ET_0P0, x1, x2, x3) = f[i0P0]; + (*this->localDistributions)(D3Q27System::ET_00P, x1, x2, x3) = f[i00P]; + (*this->localDistributions)(D3Q27System::ET_PP0, x1, x2, x3) = f[iPP0]; + (*this->localDistributions)(D3Q27System::ET_MP0, x1 + 1, x2, x3) = f[iMP0]; + (*this->localDistributions)(D3Q27System::ET_P0P, x1, x2, x3) = f[iP0P]; + (*this->localDistributions)(D3Q27System::ET_M0P, x1 + 1, x2, x3) = f[iM0P]; + (*this->localDistributions)(D3Q27System::ET_0PP, x1, x2, x3) = f[i0PP]; + (*this->localDistributions)(D3Q27System::ET_0MP, x1, x2 + 1, x3) = f[i0MP]; + (*this->localDistributions)(D3Q27System::ET_PPP, x1, x2, x3) = f[iPPP]; + (*this->localDistributions)(D3Q27System::ET_MPP, x1 + 1, x2, x3) = f[iMPP]; + (*this->localDistributions)(D3Q27System::ET_PMP, x1, x2 + 1, x3) = f[iPMP]; + (*this->localDistributions)(D3Q27System::ET_MMP, x1 + 1, x2 + 1, x3) = f[iMMP]; - (*this->nonLocalDistributions)(D3Q27System::ET_M00, x1 + 1, x2, x3) = f[INV_M00]; - (*this->nonLocalDistributions)(D3Q27System::ET_0M0, x1, x2 + 1, x3) = f[INV_0M0]; - (*this->nonLocalDistributions)(D3Q27System::ET_00M, x1, x2, x3 + 1) = f[INV_00M]; - (*this->nonLocalDistributions)(D3Q27System::ET_MM0, x1 + 1, x2 + 1, x3) = f[INV_MM0]; - (*this->nonLocalDistributions)(D3Q27System::ET_PM0, x1, x2 + 1, x3) = f[INV_PM0]; - (*this->nonLocalDistributions)(D3Q27System::ET_M0M, x1 + 1, x2, x3 + 1) = f[INV_M0M]; - (*this->nonLocalDistributions)(D3Q27System::ET_P0M, x1, x2, x3 + 1) = f[INV_P0M]; - (*this->nonLocalDistributions)(D3Q27System::ET_0MM, x1, x2 + 1, x3 + 1) = f[INV_0MM]; - (*this->nonLocalDistributions)(D3Q27System::ET_0PM, x1, x2, x3 + 1) = f[INV_0PM]; - (*this->nonLocalDistributions)(D3Q27System::ET_MMM, x1 + 1, x2 + 1, x3 + 1) = f[INV_MMM]; - (*this->nonLocalDistributions)(D3Q27System::ET_PMM, x1, x2 + 1, x3 + 1) = f[INV_PMM]; - (*this->nonLocalDistributions)(D3Q27System::ET_MPM, x1 + 1, x2, x3 + 1) = f[INV_MPM]; - (*this->nonLocalDistributions)(D3Q27System::ET_PPM, x1, x2, x3 + 1) = f[INV_PPM]; + (*this->nonLocalDistributions)(D3Q27System::ET_M00, x1 + 1, x2, x3) = f[iM00]; + (*this->nonLocalDistributions)(D3Q27System::ET_0M0, x1, x2 + 1, x3) = f[i0M0]; + (*this->nonLocalDistributions)(D3Q27System::ET_00M, x1, x2, x3 + 1) = f[i00M]; + (*this->nonLocalDistributions)(D3Q27System::ET_MM0, x1 + 1, x2 + 1, x3) = f[iMM0]; + (*this->nonLocalDistributions)(D3Q27System::ET_PM0, x1, x2 + 1, x3) = f[iPM0]; + (*this->nonLocalDistributions)(D3Q27System::ET_M0M, x1 + 1, x2, x3 + 1) = f[iM0M]; + (*this->nonLocalDistributions)(D3Q27System::ET_P0M, x1, x2, x3 + 1) = f[iP0M]; + (*this->nonLocalDistributions)(D3Q27System::ET_0MM, x1, x2 + 1, x3 + 1) = f[i0MM]; + (*this->nonLocalDistributions)(D3Q27System::ET_0PM, x1, x2, x3 + 1) = f[i0PM]; + (*this->nonLocalDistributions)(D3Q27System::ET_MMM, x1 + 1, x2 + 1, x3 + 1) = f[iMMM]; + (*this->nonLocalDistributions)(D3Q27System::ET_PMM, x1, x2 + 1, x3 + 1) = f[iPMM]; + (*this->nonLocalDistributions)(D3Q27System::ET_MPM, x1 + 1, x2, x3 + 1) = f[iMPM]; + (*this->nonLocalDistributions)(D3Q27System::ET_PPM, x1, x2, x3 + 1) = f[iPPM]; - (*this->zeroDistributions)(x1, x2, x3) = f[DIR_000]; + (*this->zeroDistributions)(x1, x2, x3) = f[d000]; } ////////////////////////////////////////////////////////////////////////// -void D3Q27EsoTwist3DSplittedVector::getDistributionInv(real *const f, size_t x1, size_t x2, size_t x3) +void D3Q27EsoTwist3DSplittedVector::getPostCollisionDistribution(real *const f, size_t x1, size_t x2, size_t x3) { using namespace vf::lbm::dir; - f[INV_P00] = (*this->localDistributions)(D3Q27System::ET_P00, x1, x2, x3); - f[INV_0P0] = (*this->localDistributions)(D3Q27System::ET_0P0, x1, x2, x3); - f[INV_00P] = (*this->localDistributions)(D3Q27System::ET_00P, x1, x2, x3); - f[INV_PP0] = (*this->localDistributions)(D3Q27System::ET_PP0, x1, x2, x3); - f[INV_MP0] = (*this->localDistributions)(D3Q27System::ET_MP0, x1 + 1, x2, x3); - f[INV_P0P] = (*this->localDistributions)(D3Q27System::ET_P0P, x1, x2, x3); - f[INV_M0P] = (*this->localDistributions)(D3Q27System::ET_M0P, x1 + 1, x2, x3); - f[INV_0PP] = (*this->localDistributions)(D3Q27System::ET_0PP, x1, x2, x3); - f[INV_0MP] = (*this->localDistributions)(D3Q27System::ET_0MP, x1, x2 + 1, x3); - f[INV_PPP] = (*this->localDistributions)(D3Q27System::ET_PPP, x1, x2, x3); - f[INV_MPP] = (*this->localDistributions)(D3Q27System::ET_MPP, x1 + 1, x2, x3); - f[INV_PMP] = (*this->localDistributions)(D3Q27System::ET_PMP, x1, x2 + 1, x3); - f[INV_MMP] = (*this->localDistributions)(D3Q27System::ET_MMP, x1 + 1, x2 + 1, x3); + f[iP00] = (*this->localDistributions)(D3Q27System::ET_P00, x1, x2, x3); + f[i0P0] = (*this->localDistributions)(D3Q27System::ET_0P0, x1, x2, x3); + f[i00P] = (*this->localDistributions)(D3Q27System::ET_00P, x1, x2, x3); + f[iPP0] = (*this->localDistributions)(D3Q27System::ET_PP0, x1, x2, x3); + f[iMP0] = (*this->localDistributions)(D3Q27System::ET_MP0, x1 + 1, x2, x3); + f[iP0P] = (*this->localDistributions)(D3Q27System::ET_P0P, x1, x2, x3); + f[iM0P] = (*this->localDistributions)(D3Q27System::ET_M0P, x1 + 1, x2, x3); + f[i0PP] = (*this->localDistributions)(D3Q27System::ET_0PP, x1, x2, x3); + f[i0MP] = (*this->localDistributions)(D3Q27System::ET_0MP, x1, x2 + 1, x3); + f[iPPP] = (*this->localDistributions)(D3Q27System::ET_PPP, x1, x2, x3); + f[iMPP] = (*this->localDistributions)(D3Q27System::ET_MPP, x1 + 1, x2, x3); + f[iPMP] = (*this->localDistributions)(D3Q27System::ET_PMP, x1, x2 + 1, x3); + f[iMMP] = (*this->localDistributions)(D3Q27System::ET_MMP, x1 + 1, x2 + 1, x3); - f[INV_M00] = (*this->nonLocalDistributions)(D3Q27System::ET_M00, x1 + 1, x2, x3); - f[INV_0M0] = (*this->nonLocalDistributions)(D3Q27System::ET_0M0, x1, x2 + 1, x3); - f[INV_00M] = (*this->nonLocalDistributions)(D3Q27System::ET_00M, x1, x2, x3 + 1); - f[INV_MM0] = (*this->nonLocalDistributions)(D3Q27System::ET_MM0, x1 + 1, x2 + 1, x3); - f[INV_PM0] = (*this->nonLocalDistributions)(D3Q27System::ET_PM0, x1, x2 + 1, x3); - f[INV_M0M] = (*this->nonLocalDistributions)(D3Q27System::ET_M0M, x1 + 1, x2, x3 + 1); - f[INV_P0M] = (*this->nonLocalDistributions)(D3Q27System::ET_P0M, x1, x2, x3 + 1); - f[INV_0MM] = (*this->nonLocalDistributions)(D3Q27System::ET_0MM, x1, x2 + 1, x3 + 1); - f[INV_0PM] = (*this->nonLocalDistributions)(D3Q27System::ET_0PM, x1, x2, x3 + 1); - f[INV_MMM] = (*this->nonLocalDistributions)(D3Q27System::ET_MMM, x1 + 1, x2 + 1, x3 + 1); - f[INV_PMM] = (*this->nonLocalDistributions)(D3Q27System::ET_PMM, x1, x2 + 1, x3 + 1); - f[INV_MPM] = (*this->nonLocalDistributions)(D3Q27System::ET_MPM, x1 + 1, x2, x3 + 1); - f[INV_PPM] = (*this->nonLocalDistributions)(D3Q27System::ET_PPM, x1, x2, x3 + 1); + f[iM00] = (*this->nonLocalDistributions)(D3Q27System::ET_M00, x1 + 1, x2, x3); + f[i0M0] = (*this->nonLocalDistributions)(D3Q27System::ET_0M0, x1, x2 + 1, x3); + f[i00M] = (*this->nonLocalDistributions)(D3Q27System::ET_00M, x1, x2, x3 + 1); + f[iMM0] = (*this->nonLocalDistributions)(D3Q27System::ET_MM0, x1 + 1, x2 + 1, x3); + f[iPM0] = (*this->nonLocalDistributions)(D3Q27System::ET_PM0, x1, x2 + 1, x3); + f[iM0M] = (*this->nonLocalDistributions)(D3Q27System::ET_M0M, x1 + 1, x2, x3 + 1); + f[iP0M] = (*this->nonLocalDistributions)(D3Q27System::ET_P0M, x1, x2, x3 + 1); + f[i0MM] = (*this->nonLocalDistributions)(D3Q27System::ET_0MM, x1, x2 + 1, x3 + 1); + f[i0PM] = (*this->nonLocalDistributions)(D3Q27System::ET_0PM, x1, x2, x3 + 1); + f[iMMM] = (*this->nonLocalDistributions)(D3Q27System::ET_MMM, x1 + 1, x2 + 1, x3 + 1); + f[iPMM] = (*this->nonLocalDistributions)(D3Q27System::ET_PMM, x1, x2 + 1, x3 + 1); + f[iMPM] = (*this->nonLocalDistributions)(D3Q27System::ET_MPM, x1 + 1, x2, x3 + 1); + f[iPPM] = (*this->nonLocalDistributions)(D3Q27System::ET_PPM, x1, x2, x3 + 1); - f[DIR_000] = (*this->zeroDistributions)(x1, x2, x3); + f[d000] = (*this->zeroDistributions)(x1, x2, x3); } ////////////////////////////////////////////////////////////////////////// -void D3Q27EsoTwist3DSplittedVector::setDistributionInv(const real *const f, size_t x1, size_t x2, size_t x3) +void D3Q27EsoTwist3DSplittedVector::setPreCollisionDistribution(const real *const f, size_t x1, size_t x2, size_t x3) { using namespace vf::lbm::dir; - (*this->localDistributions)(D3Q27System::ET_P00, x1, x2, x3) = f[DIR_P00]; - (*this->localDistributions)(D3Q27System::ET_0P0, x1, x2, x3) = f[DIR_0P0]; - (*this->localDistributions)(D3Q27System::ET_00P, x1, x2, x3) = f[DIR_00P]; - (*this->localDistributions)(D3Q27System::ET_PP0, x1, x2, x3) = f[DIR_PP0]; - (*this->localDistributions)(D3Q27System::ET_MP0, x1 + 1, x2, x3) = f[DIR_MP0]; - (*this->localDistributions)(D3Q27System::ET_P0P, x1, x2, x3) = f[DIR_P0P]; - (*this->localDistributions)(D3Q27System::ET_M0P, x1 + 1, x2, x3) = f[DIR_M0P]; - (*this->localDistributions)(D3Q27System::ET_0PP, x1, x2, x3) = f[DIR_0PP]; - (*this->localDistributions)(D3Q27System::ET_0MP, x1, x2 + 1, x3) = f[DIR_0MP]; - (*this->localDistributions)(D3Q27System::ET_PPP, x1, x2, x3) = f[DIR_PPP]; - (*this->localDistributions)(D3Q27System::ET_MPP, x1 + 1, x2, x3) = f[DIR_MPP]; - (*this->localDistributions)(D3Q27System::ET_PMP, x1, x2 + 1, x3) = f[DIR_PMP]; - (*this->localDistributions)(D3Q27System::ET_MMP, x1 + 1, x2 + 1, x3) = f[DIR_MMP]; + (*this->localDistributions)(D3Q27System::ET_P00, x1, x2, x3) = f[dP00]; + (*this->localDistributions)(D3Q27System::ET_0P0, x1, x2, x3) = f[d0P0]; + (*this->localDistributions)(D3Q27System::ET_00P, x1, x2, x3) = f[d00P]; + (*this->localDistributions)(D3Q27System::ET_PP0, x1, x2, x3) = f[dPP0]; + (*this->localDistributions)(D3Q27System::ET_MP0, x1 + 1, x2, x3) = f[dMP0]; + (*this->localDistributions)(D3Q27System::ET_P0P, x1, x2, x3) = f[dP0P]; + (*this->localDistributions)(D3Q27System::ET_M0P, x1 + 1, x2, x3) = f[dM0P]; + (*this->localDistributions)(D3Q27System::ET_0PP, x1, x2, x3) = f[d0PP]; + (*this->localDistributions)(D3Q27System::ET_0MP, x1, x2 + 1, x3) = f[d0MP]; + (*this->localDistributions)(D3Q27System::ET_PPP, x1, x2, x3) = f[dPPP]; + (*this->localDistributions)(D3Q27System::ET_MPP, x1 + 1, x2, x3) = f[dMPP]; + (*this->localDistributions)(D3Q27System::ET_PMP, x1, x2 + 1, x3) = f[dPMP]; + (*this->localDistributions)(D3Q27System::ET_MMP, x1 + 1, x2 + 1, x3) = f[dMMP]; - (*this->nonLocalDistributions)(D3Q27System::ET_M00, x1 + 1, x2, x3) = f[DIR_M00]; - (*this->nonLocalDistributions)(D3Q27System::ET_0M0, x1, x2 + 1, x3) = f[DIR_0M0]; - (*this->nonLocalDistributions)(D3Q27System::ET_00M, x1, x2, x3 + 1) = f[DIR_00M]; - (*this->nonLocalDistributions)(D3Q27System::ET_MM0, x1 + 1, x2 + 1, x3) = f[DIR_MM0]; - (*this->nonLocalDistributions)(D3Q27System::ET_PM0, x1, x2 + 1, x3) = f[DIR_PM0]; - (*this->nonLocalDistributions)(D3Q27System::ET_M0M, x1 + 1, x2, x3 + 1) = f[DIR_M0M]; - (*this->nonLocalDistributions)(D3Q27System::ET_P0M, x1, x2, x3 + 1) = f[DIR_P0M]; - (*this->nonLocalDistributions)(D3Q27System::ET_0MM, x1, x2 + 1, x3 + 1) = f[DIR_0MM]; - (*this->nonLocalDistributions)(D3Q27System::ET_0PM, x1, x2, x3 + 1) = f[DIR_0PM]; - (*this->nonLocalDistributions)(D3Q27System::ET_MMM, x1 + 1, x2 + 1, x3 + 1) = f[DIR_MMM]; - (*this->nonLocalDistributions)(D3Q27System::ET_PMM, x1, x2 + 1, x3 + 1) = f[DIR_PMM]; - (*this->nonLocalDistributions)(D3Q27System::ET_MPM, x1 + 1, x2, x3 + 1) = f[DIR_MPM]; - (*this->nonLocalDistributions)(D3Q27System::ET_PPM, x1, x2, x3 + 1) = f[DIR_PPM]; + (*this->nonLocalDistributions)(D3Q27System::ET_M00, x1 + 1, x2, x3) = f[dM00]; + (*this->nonLocalDistributions)(D3Q27System::ET_0M0, x1, x2 + 1, x3) = f[d0M0]; + (*this->nonLocalDistributions)(D3Q27System::ET_00M, x1, x2, x3 + 1) = f[d00M]; + (*this->nonLocalDistributions)(D3Q27System::ET_MM0, x1 + 1, x2 + 1, x3) = f[dMM0]; + (*this->nonLocalDistributions)(D3Q27System::ET_PM0, x1, x2 + 1, x3) = f[dPM0]; + (*this->nonLocalDistributions)(D3Q27System::ET_M0M, x1 + 1, x2, x3 + 1) = f[dM0M]; + (*this->nonLocalDistributions)(D3Q27System::ET_P0M, x1, x2, x3 + 1) = f[dP0M]; + (*this->nonLocalDistributions)(D3Q27System::ET_0MM, x1, x2 + 1, x3 + 1) = f[d0MM]; + (*this->nonLocalDistributions)(D3Q27System::ET_0PM, x1, x2, x3 + 1) = f[d0PM]; + (*this->nonLocalDistributions)(D3Q27System::ET_MMM, x1 + 1, x2 + 1, x3 + 1) = f[dMMM]; + (*this->nonLocalDistributions)(D3Q27System::ET_PMM, x1, x2 + 1, x3 + 1) = f[dPMM]; + (*this->nonLocalDistributions)(D3Q27System::ET_MPM, x1 + 1, x2, x3 + 1) = f[dMPM]; + (*this->nonLocalDistributions)(D3Q27System::ET_PPM, x1, x2, x3 + 1) = f[dPPM]; - (*this->zeroDistributions)(x1, x2, x3) = f[DIR_000]; + (*this->zeroDistributions)(x1, x2, x3) = f[d000]; } ////////////////////////////////////////////////////////////////////////// -void D3Q27EsoTwist3DSplittedVector::setDistributionForDirection(const real *const f, size_t x1, size_t x2, size_t x3, +void D3Q27EsoTwist3DSplittedVector::setPostCollisionDistributionForDirection(const real *const f, size_t x1, size_t x2, size_t x3, unsigned long int direction) { using namespace vf::lbm::dir; if ((direction & EsoTwistD3Q27System::etE) == EsoTwistD3Q27System::etE) - (*this->nonLocalDistributions)(D3Q27System::ET_W, x1 + 1, x2, x3) = f[DIR_P00]; + (*this->nonLocalDistributions)(D3Q27System::ET_W, x1 + 1, x2, x3) = f[dP00]; if ((direction & EsoTwistD3Q27System::etW) == EsoTwistD3Q27System::etW) - (*this->localDistributions)(D3Q27System::ET_E, x1, x2, x3) = f[DIR_M00]; + (*this->localDistributions)(D3Q27System::ET_E, x1, x2, x3) = f[dM00]; if ((direction & EsoTwistD3Q27System::etS) == EsoTwistD3Q27System::etS) - (*this->localDistributions)(D3Q27System::ET_N, x1, x2, x3) = f[DIR_0M0]; + (*this->localDistributions)(D3Q27System::ET_N, x1, x2, x3) = f[d0M0]; if ((direction & EsoTwistD3Q27System::etN) == EsoTwistD3Q27System::etN) - (*this->nonLocalDistributions)(D3Q27System::ET_S, x1, x2 + 1, x3) = f[DIR_0P0]; + (*this->nonLocalDistributions)(D3Q27System::ET_S, x1, x2 + 1, x3) = f[d0P0]; if ((direction & EsoTwistD3Q27System::etB) == EsoTwistD3Q27System::etB) - (*this->localDistributions)(D3Q27System::ET_T, x1, x2, x3) = f[DIR_00M]; + (*this->localDistributions)(D3Q27System::ET_T, x1, x2, x3) = f[d00M]; if ((direction & EsoTwistD3Q27System::etT) == EsoTwistD3Q27System::etT) - (*this->nonLocalDistributions)(D3Q27System::ET_B, x1, x2, x3 + 1) = f[DIR_00P]; + (*this->nonLocalDistributions)(D3Q27System::ET_B, x1, x2, x3 + 1) = f[d00P]; if ((direction & EsoTwistD3Q27System::etSW) == EsoTwistD3Q27System::etSW) - (*this->localDistributions)(D3Q27System::ET_NE, x1, x2, x3) = f[DIR_MM0]; + (*this->localDistributions)(D3Q27System::ET_NE, x1, x2, x3) = f[dMM0]; if ((direction & EsoTwistD3Q27System::etNE) == EsoTwistD3Q27System::etNE) - (*this->nonLocalDistributions)(D3Q27System::ET_SW, x1 + 1, x2 + 1, x3) = f[DIR_PP0]; + (*this->nonLocalDistributions)(D3Q27System::ET_SW, x1 + 1, x2 + 1, x3) = f[dPP0]; if ((direction & EsoTwistD3Q27System::etNW) == EsoTwistD3Q27System::etNW) - (*this->nonLocalDistributions)(D3Q27System::ET_SE, x1, x2 + 1, x3) = f[DIR_MP0]; + (*this->nonLocalDistributions)(D3Q27System::ET_SE, x1, x2 + 1, x3) = f[dMP0]; if ((direction & EsoTwistD3Q27System::etSE) == EsoTwistD3Q27System::etSE) - (*this->localDistributions)(D3Q27System::ET_NW, x1 + 1, x2, x3) = f[DIR_PM0]; + (*this->localDistributions)(D3Q27System::ET_NW, x1 + 1, x2, x3) = f[dPM0]; if ((direction & EsoTwistD3Q27System::etBW) == EsoTwistD3Q27System::etBW) - (*this->localDistributions)(D3Q27System::ET_TE, x1, x2, x3) = f[DIR_M0M]; + (*this->localDistributions)(D3Q27System::ET_TE, x1, x2, x3) = f[dM0M]; if ((direction & EsoTwistD3Q27System::etTE) == EsoTwistD3Q27System::etTE) - (*this->nonLocalDistributions)(D3Q27System::ET_BW, x1 + 1, x2, x3 + 1) = f[DIR_P0P]; + (*this->nonLocalDistributions)(D3Q27System::ET_BW, x1 + 1, x2, x3 + 1) = f[dP0P]; if ((direction & EsoTwistD3Q27System::etTW) == EsoTwistD3Q27System::etTW) - (*this->nonLocalDistributions)(D3Q27System::ET_BE, x1, x2, x3 + 1) = f[DIR_M0P]; + (*this->nonLocalDistributions)(D3Q27System::ET_BE, x1, x2, x3 + 1) = f[dM0P]; if ((direction & EsoTwistD3Q27System::etBE) == EsoTwistD3Q27System::etBE) - (*this->localDistributions)(D3Q27System::ET_TW, x1 + 1, x2, x3) = f[DIR_P0M]; + (*this->localDistributions)(D3Q27System::ET_TW, x1 + 1, x2, x3) = f[dP0M]; if ((direction & EsoTwistD3Q27System::etBS) == EsoTwistD3Q27System::etBS) - (*this->localDistributions)(D3Q27System::ET_TN, x1, x2, x3) = f[DIR_0MM]; + (*this->localDistributions)(D3Q27System::ET_TN, x1, x2, x3) = f[d0MM]; if ((direction & EsoTwistD3Q27System::etTN) == EsoTwistD3Q27System::etTN) - (*this->nonLocalDistributions)(D3Q27System::ET_BS, x1, x2 + 1, x3 + 1) = f[DIR_0PP]; + (*this->nonLocalDistributions)(D3Q27System::ET_BS, x1, x2 + 1, x3 + 1) = f[d0PP]; if ((direction & EsoTwistD3Q27System::etTS) == EsoTwistD3Q27System::etTS) - (*this->nonLocalDistributions)(D3Q27System::ET_BN, x1, x2, x3 + 1) = f[DIR_0MP]; + (*this->nonLocalDistributions)(D3Q27System::ET_BN, x1, x2, x3 + 1) = f[d0MP]; if ((direction & EsoTwistD3Q27System::etBN) == EsoTwistD3Q27System::etBN) - (*this->localDistributions)(D3Q27System::ET_TS, x1, x2 + 1, x3) = f[DIR_0PM]; + (*this->localDistributions)(D3Q27System::ET_TS, x1, x2 + 1, x3) = f[d0PM]; if ((direction & EsoTwistD3Q27System::etBSW) == EsoTwistD3Q27System::etBSW) - (*this->localDistributions)(D3Q27System::ET_TNE, x1, x2, x3) = f[DIR_MMM]; + (*this->localDistributions)(D3Q27System::ET_TNE, x1, x2, x3) = f[dMMM]; if ((direction & EsoTwistD3Q27System::etTNE) == EsoTwistD3Q27System::etTNE) - (*this->nonLocalDistributions)(D3Q27System::ET_BSW, x1 + 1, x2 + 1, x3 + 1) = f[DIR_PPP]; + (*this->nonLocalDistributions)(D3Q27System::ET_BSW, x1 + 1, x2 + 1, x3 + 1) = f[dPPP]; if ((direction & EsoTwistD3Q27System::etBSE) == EsoTwistD3Q27System::etBSE) - (*this->localDistributions)(D3Q27System::ET_TNW, x1 + 1, x2, x3) = f[DIR_PMM]; + (*this->localDistributions)(D3Q27System::ET_TNW, x1 + 1, x2, x3) = f[dPMM]; if ((direction & EsoTwistD3Q27System::etTNW) == EsoTwistD3Q27System::etTNW) - (*this->nonLocalDistributions)(D3Q27System::ET_BSE, x1, x2 + 1, x3 + 1) = f[DIR_MPP]; + (*this->nonLocalDistributions)(D3Q27System::ET_BSE, x1, x2 + 1, x3 + 1) = f[dMPP]; if ((direction & EsoTwistD3Q27System::etBNW) == EsoTwistD3Q27System::etBNW) - (*this->localDistributions)(D3Q27System::ET_TSE, x1, x2 + 1, x3) = f[DIR_MPM]; + (*this->localDistributions)(D3Q27System::ET_TSE, x1, x2 + 1, x3) = f[dMPM]; if ((direction & EsoTwistD3Q27System::etTSE) == EsoTwistD3Q27System::etTSE) - (*this->nonLocalDistributions)(D3Q27System::ET_BNW, x1 + 1, x2, x3 + 1) = f[DIR_PMP]; + (*this->nonLocalDistributions)(D3Q27System::ET_BNW, x1 + 1, x2, x3 + 1) = f[dPMP]; if ((direction & EsoTwistD3Q27System::etBNE) == EsoTwistD3Q27System::etBNE) - (*this->localDistributions)(D3Q27System::ET_TSW, x1 + 1, x2 + 1, x3) = f[DIR_PPM]; + (*this->localDistributions)(D3Q27System::ET_TSW, x1 + 1, x2 + 1, x3) = f[dPPM]; if ((direction & EsoTwistD3Q27System::etTSW) == EsoTwistD3Q27System::etTSW) - (*this->nonLocalDistributions)(D3Q27System::ET_BNE, x1, x2, x3 + 1) = f[DIR_MMP]; + (*this->nonLocalDistributions)(D3Q27System::ET_BNE, x1, x2, x3 + 1) = f[dMMP]; if ((direction & EsoTwistD3Q27System::REST) == EsoTwistD3Q27System::REST) - (*this->zeroDistributions)(x1, x2, x3) = f[DIR_000]; + (*this->zeroDistributions)(x1, x2, x3) = f[d000]; } ////////////////////////////////////////////////////////////////////////// -void D3Q27EsoTwist3DSplittedVector::setDistributionForDirection(real f, size_t x1, size_t x2, size_t x3, +void D3Q27EsoTwist3DSplittedVector::setPostCollisionDistributionForDirection(real f, size_t x1, size_t x2, size_t x3, int direction) { using namespace vf::lbm::dir; switch (direction) { - case DIR_P00: + case dP00: (*this->nonLocalDistributions)(D3Q27System::ET_W, x1 + 1, x2, x3) = f; break; - case DIR_M00: + case dM00: (*this->localDistributions)(D3Q27System::ET_E, x1, x2, x3) = f; break; - case DIR_0M0: + case d0M0: (*this->localDistributions)(D3Q27System::ET_N, x1, x2, x3) = f; break; - case DIR_0P0: + case d0P0: (*this->nonLocalDistributions)(D3Q27System::ET_S, x1, x2 + 1, x3) = f; break; - case DIR_00M: + case d00M: (*this->localDistributions)(D3Q27System::ET_T, x1, x2, x3) = f; break; - case DIR_00P: + case d00P: (*this->nonLocalDistributions)(D3Q27System::ET_B, x1, x2, x3 + 1) = f; break; - case DIR_MM0: + case dMM0: (*this->localDistributions)(D3Q27System::ET_NE, x1, x2, x3) = f; break; - case DIR_PP0: + case dPP0: (*this->nonLocalDistributions)(D3Q27System::ET_SW, x1 + 1, x2 + 1, x3) = f; break; - case DIR_MP0: + case dMP0: (*this->nonLocalDistributions)(D3Q27System::ET_SE, x1, x2 + 1, x3) = f; break; - case DIR_PM0: + case dPM0: (*this->localDistributions)(D3Q27System::ET_NW, x1 + 1, x2, x3) = f; break; - case DIR_M0M: + case dM0M: (*this->localDistributions)(D3Q27System::ET_TE, x1, x2, x3) = f; break; - case DIR_P0P: + case dP0P: (*this->nonLocalDistributions)(D3Q27System::ET_BW, x1 + 1, x2, x3 + 1) = f; break; - case DIR_M0P: + case dM0P: (*this->nonLocalDistributions)(D3Q27System::ET_BE, x1, x2, x3 + 1) = f; break; - case DIR_P0M: + case dP0M: (*this->localDistributions)(D3Q27System::ET_TW, x1 + 1, x2, x3) = f; break; - case DIR_0MM: + case d0MM: (*this->localDistributions)(D3Q27System::ET_TN, x1, x2, x3) = f; break; - case DIR_0PP: + case d0PP: (*this->nonLocalDistributions)(D3Q27System::ET_BS, x1, x2 + 1, x3 + 1) = f; break; - case DIR_0MP: + case d0MP: (*this->nonLocalDistributions)(D3Q27System::ET_BN, x1, x2, x3 + 1) = f; break; - case DIR_0PM: + case d0PM: (*this->localDistributions)(D3Q27System::ET_TS, x1, x2 + 1, x3) = f; break; - case DIR_MMM: + case dMMM: (*this->localDistributions)(D3Q27System::ET_TNE, x1, x2, x3) = f; break; - case DIR_PPP: + case dPPP: (*this->nonLocalDistributions)(D3Q27System::ET_BSW, x1 + 1, x2 + 1, x3 + 1) = f; break; - case DIR_PMM: + case dPMM: (*this->localDistributions)(D3Q27System::ET_TNW, x1 + 1, x2, x3) = f; break; - case DIR_MPP: + case dMPP: (*this->nonLocalDistributions)(D3Q27System::ET_BSE, x1, x2 + 1, x3 + 1) = f; break; - case DIR_MPM: + case dMPM: (*this->localDistributions)(D3Q27System::ET_TSE, x1, x2 + 1, x3) = f; break; - case DIR_PMP: + case dPMP: (*this->nonLocalDistributions)(D3Q27System::ET_BNW, x1 + 1, x2, x3 + 1) = f; break; - case DIR_PPM: + case dPPM: (*this->localDistributions)(D3Q27System::ET_TSW, x1 + 1, x2 + 1, x3) = f; break; - case DIR_MMP: + case dMMP: (*this->nonLocalDistributions)(D3Q27System::ET_BNE, x1, x2, x3 + 1) = f; break; - case DIR_000: + case d000: (*this->zeroDistributions)(x1, x2, x3) = f; break; default: @@ -349,152 +349,152 @@ void D3Q27EsoTwist3DSplittedVector::setDistributionForDirection(real f, size_t x } } ////////////////////////////////////////////////////////////////////////// -void D3Q27EsoTwist3DSplittedVector::setDistributionInvForDirection(const real *const f, size_t x1, size_t x2, +void D3Q27EsoTwist3DSplittedVector::setPreCollisionDistributionForDirection(const real *const f, size_t x1, size_t x2, size_t x3, unsigned long int direction) { using namespace vf::lbm::dir; if ((direction & EsoTwistD3Q27System::etE) == EsoTwistD3Q27System::etE) - (*this->localDistributions)(D3Q27System::ET_E, x1, x2, x3) = f[DIR_P00]; + (*this->localDistributions)(D3Q27System::ET_E, x1, x2, x3) = f[dP00]; if ((direction & EsoTwistD3Q27System::etW) == EsoTwistD3Q27System::etW) - (*this->nonLocalDistributions)(D3Q27System::ET_W, x1 + 1, x2, x3) = f[DIR_M00]; + (*this->nonLocalDistributions)(D3Q27System::ET_W, x1 + 1, x2, x3) = f[dM00]; if ((direction & EsoTwistD3Q27System::etS) == EsoTwistD3Q27System::etS) - (*this->nonLocalDistributions)(D3Q27System::ET_S, x1, x2 + 1, x3) = f[DIR_0M0]; + (*this->nonLocalDistributions)(D3Q27System::ET_S, x1, x2 + 1, x3) = f[d0M0]; if ((direction & EsoTwistD3Q27System::etN) == EsoTwistD3Q27System::etN) - (*this->localDistributions)(D3Q27System::ET_N, x1, x2, x3) = f[DIR_0P0]; + (*this->localDistributions)(D3Q27System::ET_N, x1, x2, x3) = f[d0P0]; if ((direction & EsoTwistD3Q27System::etB) == EsoTwistD3Q27System::etB) - (*this->nonLocalDistributions)(D3Q27System::ET_B, x1, x2, x3 + 1) = f[DIR_00M]; + (*this->nonLocalDistributions)(D3Q27System::ET_B, x1, x2, x3 + 1) = f[d00M]; if ((direction & EsoTwistD3Q27System::etT) == EsoTwistD3Q27System::etT) - (*this->localDistributions)(D3Q27System::ET_T, x1, x2, x3) = f[DIR_00P]; + (*this->localDistributions)(D3Q27System::ET_T, x1, x2, x3) = f[d00P]; if ((direction & EsoTwistD3Q27System::etSW) == EsoTwistD3Q27System::etSW) - (*this->nonLocalDistributions)(D3Q27System::ET_SW, x1 + 1, x2 + 1, x3) = f[DIR_MM0]; + (*this->nonLocalDistributions)(D3Q27System::ET_SW, x1 + 1, x2 + 1, x3) = f[dMM0]; if ((direction & EsoTwistD3Q27System::etNE) == EsoTwistD3Q27System::etNE) - (*this->localDistributions)(D3Q27System::ET_NE, x1, x2, x3) = f[DIR_PP0]; + (*this->localDistributions)(D3Q27System::ET_NE, x1, x2, x3) = f[dPP0]; if ((direction & EsoTwistD3Q27System::etNW) == EsoTwistD3Q27System::etNW) - (*this->localDistributions)(D3Q27System::ET_NW, x1 + 1, x2, x3) = f[DIR_MP0]; + (*this->localDistributions)(D3Q27System::ET_NW, x1 + 1, x2, x3) = f[dMP0]; if ((direction & EsoTwistD3Q27System::etSE) == EsoTwistD3Q27System::etSE) - (*this->nonLocalDistributions)(D3Q27System::ET_SE, x1, x2 + 1, x3) = f[DIR_PM0]; + (*this->nonLocalDistributions)(D3Q27System::ET_SE, x1, x2 + 1, x3) = f[dPM0]; if ((direction & EsoTwistD3Q27System::etBW) == EsoTwistD3Q27System::etBW) - (*this->nonLocalDistributions)(D3Q27System::ET_BW, x1 + 1, x2, x3 + 1) = f[DIR_M0M]; + (*this->nonLocalDistributions)(D3Q27System::ET_BW, x1 + 1, x2, x3 + 1) = f[dM0M]; if ((direction & EsoTwistD3Q27System::etTE) == EsoTwistD3Q27System::etTE) - (*this->localDistributions)(D3Q27System::ET_TE, x1, x2, x3) = f[DIR_P0P]; + (*this->localDistributions)(D3Q27System::ET_TE, x1, x2, x3) = f[dP0P]; if ((direction & EsoTwistD3Q27System::etTW) == EsoTwistD3Q27System::etTW) - (*this->localDistributions)(D3Q27System::ET_TW, x1 + 1, x2, x3) = f[DIR_M0P]; + (*this->localDistributions)(D3Q27System::ET_TW, x1 + 1, x2, x3) = f[dM0P]; if ((direction & EsoTwistD3Q27System::etBE) == EsoTwistD3Q27System::etBE) - (*this->nonLocalDistributions)(D3Q27System::ET_BE, x1, x2, x3 + 1) = f[DIR_P0M]; + (*this->nonLocalDistributions)(D3Q27System::ET_BE, x1, x2, x3 + 1) = f[dP0M]; if ((direction & EsoTwistD3Q27System::etBS) == EsoTwistD3Q27System::etBS) - (*this->nonLocalDistributions)(D3Q27System::ET_BS, x1, x2 + 1, x3 + 1) = f[DIR_0MM]; + (*this->nonLocalDistributions)(D3Q27System::ET_BS, x1, x2 + 1, x3 + 1) = f[d0MM]; if ((direction & EsoTwistD3Q27System::etTN) == EsoTwistD3Q27System::etTN) - (*this->localDistributions)(D3Q27System::ET_TN, x1, x2, x3) = f[DIR_0PP]; + (*this->localDistributions)(D3Q27System::ET_TN, x1, x2, x3) = f[d0PP]; if ((direction & EsoTwistD3Q27System::etTS) == EsoTwistD3Q27System::etTS) - (*this->localDistributions)(D3Q27System::ET_TS, x1, x2 + 1, x3) = f[DIR_0MP]; + (*this->localDistributions)(D3Q27System::ET_TS, x1, x2 + 1, x3) = f[d0MP]; if ((direction & EsoTwistD3Q27System::etBN) == EsoTwistD3Q27System::etBN) - (*this->nonLocalDistributions)(D3Q27System::ET_BN, x1, x2, x3 + 1) = f[DIR_0PM]; + (*this->nonLocalDistributions)(D3Q27System::ET_BN, x1, x2, x3 + 1) = f[d0PM]; if ((direction & EsoTwistD3Q27System::etBSW) == EsoTwistD3Q27System::etBSW) - (*this->nonLocalDistributions)(D3Q27System::ET_BSW, x1 + 1, x2 + 1, x3 + 1) = f[DIR_MMM]; + (*this->nonLocalDistributions)(D3Q27System::ET_BSW, x1 + 1, x2 + 1, x3 + 1) = f[dMMM]; if ((direction & EsoTwistD3Q27System::etTNE) == EsoTwistD3Q27System::etTNE) - (*this->localDistributions)(D3Q27System::ET_TNE, x1, x2, x3) = f[DIR_PPP]; + (*this->localDistributions)(D3Q27System::ET_TNE, x1, x2, x3) = f[dPPP]; if ((direction & EsoTwistD3Q27System::etBSE) == EsoTwistD3Q27System::etBSE) - (*this->nonLocalDistributions)(D3Q27System::ET_BSE, x1, x2 + 1, x3 + 1) = f[DIR_PMM]; + (*this->nonLocalDistributions)(D3Q27System::ET_BSE, x1, x2 + 1, x3 + 1) = f[dPMM]; if ((direction & EsoTwistD3Q27System::etTNW) == EsoTwistD3Q27System::etTNW) - (*this->localDistributions)(D3Q27System::ET_TNW, x1 + 1, x2, x3) = f[DIR_MPP]; + (*this->localDistributions)(D3Q27System::ET_TNW, x1 + 1, x2, x3) = f[dMPP]; if ((direction & EsoTwistD3Q27System::etBNW) == EsoTwistD3Q27System::etBNW) - (*this->nonLocalDistributions)(D3Q27System::ET_BNW, x1 + 1, x2, x3 + 1) = f[DIR_MPM]; + (*this->nonLocalDistributions)(D3Q27System::ET_BNW, x1 + 1, x2, x3 + 1) = f[dMPM]; if ((direction & EsoTwistD3Q27System::etTSE) == EsoTwistD3Q27System::etTSE) - (*this->localDistributions)(D3Q27System::ET_TSE, x1, x2 + 1, x3) = f[DIR_PMP]; + (*this->localDistributions)(D3Q27System::ET_TSE, x1, x2 + 1, x3) = f[dPMP]; if ((direction & EsoTwistD3Q27System::etBNE) == EsoTwistD3Q27System::etBNE) - (*this->nonLocalDistributions)(D3Q27System::ET_BNE, x1, x2, x3 + 1) = f[DIR_PPM]; + (*this->nonLocalDistributions)(D3Q27System::ET_BNE, x1, x2, x3 + 1) = f[dPPM]; if ((direction & EsoTwistD3Q27System::etTSW) == EsoTwistD3Q27System::etTSW) - (*this->localDistributions)(D3Q27System::ET_TSW, x1 + 1, x2 + 1, x3) = f[DIR_MMP]; + (*this->localDistributions)(D3Q27System::ET_TSW, x1 + 1, x2 + 1, x3) = f[dMMP]; if ((direction & EsoTwistD3Q27System::REST) == EsoTwistD3Q27System::REST) - (*this->zeroDistributions)(x1, x2, x3) = f[DIR_000]; + (*this->zeroDistributions)(x1, x2, x3) = f[d000]; } ////////////////////////////////////////////////////////////////////////// -void D3Q27EsoTwist3DSplittedVector::setDistributionInvForDirection(real f, size_t x1, size_t x2, size_t x3, +void D3Q27EsoTwist3DSplittedVector::setPreCollisionDistributionForDirection(real f, size_t x1, size_t x2, size_t x3, unsigned long int direction) { using namespace vf::lbm::dir; switch (direction) { - case DIR_P00: + case dP00: (*this->localDistributions)(D3Q27System::ET_E, x1, x2, x3) = f; break; - case DIR_M00: + case dM00: (*this->nonLocalDistributions)(D3Q27System::ET_W, x1 + 1, x2, x3) = f; break; - case DIR_0M0: + case d0M0: (*this->nonLocalDistributions)(D3Q27System::ET_S, x1, x2 + 1, x3) = f; break; - case DIR_0P0: + case d0P0: (*this->localDistributions)(D3Q27System::ET_N, x1, x2, x3) = f; break; - case DIR_00M: + case d00M: (*this->nonLocalDistributions)(D3Q27System::ET_B, x1, x2, x3 + 1) = f; break; - case DIR_00P: + case d00P: (*this->localDistributions)(D3Q27System::ET_T, x1, x2, x3) = f; break; - case DIR_MM0: + case dMM0: (*this->nonLocalDistributions)(D3Q27System::ET_SW, x1 + 1, x2 + 1, x3) = f; break; - case DIR_PP0: + case dPP0: (*this->localDistributions)(D3Q27System::ET_NE, x1, x2, x3) = f; break; - case DIR_MP0: + case dMP0: (*this->localDistributions)(D3Q27System::ET_NW, x1 + 1, x2, x3) = f; break; - case DIR_PM0: + case dPM0: (*this->nonLocalDistributions)(D3Q27System::ET_SE, x1, x2 + 1, x3) = f; break; - case DIR_M0M: + case dM0M: (*this->nonLocalDistributions)(D3Q27System::ET_BW, x1 + 1, x2, x3 + 1) = f; break; - case DIR_P0P: + case dP0P: (*this->localDistributions)(D3Q27System::ET_TE, x1, x2, x3) = f; break; - case DIR_M0P: + case dM0P: (*this->localDistributions)(D3Q27System::ET_TW, x1 + 1, x2, x3) = f; break; - case DIR_P0M: + case dP0M: (*this->nonLocalDistributions)(D3Q27System::ET_BE, x1, x2, x3 + 1) = f; break; - case DIR_0MM: + case d0MM: (*this->nonLocalDistributions)(D3Q27System::ET_BS, x1, x2 + 1, x3 + 1) = f; break; - case DIR_0PP: + case d0PP: (*this->localDistributions)(D3Q27System::ET_TN, x1, x2, x3) = f; break; - case DIR_0MP: + case d0MP: (*this->localDistributions)(D3Q27System::ET_TS, x1, x2 + 1, x3) = f; break; - case DIR_0PM: + case d0PM: (*this->nonLocalDistributions)(D3Q27System::ET_BN, x1, x2, x3 + 1) = f; break; - case DIR_MMM: + case dMMM: (*this->nonLocalDistributions)(D3Q27System::ET_BSW, x1 + 1, x2 + 1, x3 + 1) = f; break; - case DIR_PPP: + case dPPP: (*this->localDistributions)(D3Q27System::ET_TNE, x1, x2, x3) = f; break; - case DIR_PMM: + case dPMM: (*this->nonLocalDistributions)(D3Q27System::ET_BSE, x1, x2 + 1, x3 + 1) = f; break; - case DIR_MPP: + case dMPP: (*this->localDistributions)(D3Q27System::ET_TNW, x1 + 1, x2, x3) = f; break; - case DIR_MPM: + case dMPM: (*this->nonLocalDistributions)(D3Q27System::ET_BNW, x1 + 1, x2, x3 + 1) = f; break; - case DIR_PMP: + case dPMP: (*this->localDistributions)(D3Q27System::ET_TSE, x1, x2 + 1, x3) = f; break; - case DIR_PPM: + case dPPM: (*this->nonLocalDistributions)(D3Q27System::ET_BNE, x1, x2, x3 + 1) = f; break; - case DIR_MMP: + case dMMP: (*this->localDistributions)(D3Q27System::ET_TSW, x1 + 1, x2 + 1, x3) = f; break; - case DIR_000: + case d000: (*this->zeroDistributions)(x1, x2, x3) = f; break; default: @@ -502,64 +502,64 @@ void D3Q27EsoTwist3DSplittedVector::setDistributionInvForDirection(real f, size_ } } ////////////////////////////////////////////////////////////////////////// -real D3Q27EsoTwist3DSplittedVector::getDistributionForDirection(size_t x1, size_t x2, size_t x3, int direction) +real D3Q27EsoTwist3DSplittedVector::getPreCollisionDistributionForDirection(size_t x1, size_t x2, size_t x3, int direction) { using namespace vf::lbm::dir; switch (direction) { - case DIR_M00: + case dM00: return (*this->nonLocalDistributions)(D3Q27System::ET_W, x1 + 1, x2, x3); - case DIR_P00: + case dP00: return (*this->localDistributions)(D3Q27System::ET_E, x1, x2, x3); - case DIR_0P0: + case d0P0: return (*this->localDistributions)(D3Q27System::ET_N, x1, x2, x3); - case DIR_0M0: + case d0M0: return (*this->nonLocalDistributions)(D3Q27System::ET_S, x1, x2 + 1, x3); - case DIR_00P: + case d00P: return (*this->localDistributions)(D3Q27System::ET_T, x1, x2, x3); - case DIR_00M: + case d00M: return (*this->nonLocalDistributions)(D3Q27System::ET_B, x1, x2, x3 + 1); - case DIR_PP0: + case dPP0: return (*this->localDistributions)(D3Q27System::ET_NE, x1, x2, x3); - case DIR_MM0: + case dMM0: return (*this->nonLocalDistributions)(D3Q27System::ET_SW, x1 + 1, x2 + 1, x3); - case DIR_PM0: + case dPM0: return (*this->nonLocalDistributions)(D3Q27System::ET_SE, x1, x2 + 1, x3); - case DIR_MP0: + case dMP0: return (*this->localDistributions)(D3Q27System::ET_NW, x1 + 1, x2, x3); - case DIR_P0P: + case dP0P: return (*this->localDistributions)(D3Q27System::ET_TE, x1, x2, x3); - case DIR_M0M: + case dM0M: return (*this->nonLocalDistributions)(D3Q27System::ET_BW, x1 + 1, x2, x3 + 1); - case DIR_P0M: + case dP0M: return (*this->nonLocalDistributions)(D3Q27System::ET_BE, x1, x2, x3 + 1); - case DIR_M0P: + case dM0P: return (*this->localDistributions)(D3Q27System::ET_TW, x1 + 1, x2, x3); - case DIR_0PP: + case d0PP: return (*this->localDistributions)(D3Q27System::ET_TN, x1, x2, x3); - case DIR_0MM: + case d0MM: return (*this->nonLocalDistributions)(D3Q27System::ET_BS, x1, x2 + 1, x3 + 1); - case DIR_0PM: + case d0PM: return (*this->nonLocalDistributions)(D3Q27System::ET_BN, x1, x2, x3 + 1); - case DIR_0MP: + case d0MP: return (*this->localDistributions)(D3Q27System::ET_TS, x1, x2 + 1, x3); - case DIR_PPP: + case dPPP: return (*this->localDistributions)(D3Q27System::ET_TNE, x1, x2, x3); - case DIR_MMM: + case dMMM: return (*this->nonLocalDistributions)(D3Q27System::ET_BSW, x1 + 1, x2 + 1, x3 + 1); - case DIR_MPP: + case dMPP: return (*this->localDistributions)(D3Q27System::ET_TNW, x1 + 1, x2, x3); - case DIR_PMM: + case dPMM: return (*this->nonLocalDistributions)(D3Q27System::ET_BSE, x1, x2 + 1, x3 + 1); - case DIR_PMP: + case dPMP: return (*this->localDistributions)(D3Q27System::ET_TSE, x1, x2 + 1, x3); - case DIR_MPM: + case dMPM: return (*this->nonLocalDistributions)(D3Q27System::ET_BNW, x1 + 1, x2, x3 + 1); - case DIR_MMP: + case dMMP: return (*this->localDistributions)(D3Q27System::ET_TSW, x1 + 1, x2 + 1, x3); - case DIR_PPM: + case dPPM: return (*this->nonLocalDistributions)(D3Q27System::ET_BNE, x1, x2, x3 + 1); - case DIR_000: + case d000: return (*this->zeroDistributions)(x1, x2, x3); default: UB_THROW(UbException(UB_EXARGS, "Direction didn't find")); @@ -571,59 +571,59 @@ real D3Q27EsoTwist3DSplittedVector::getDistributionInvForDirection(size_t x1, si using namespace vf::lbm::dir; switch (direction) { - case DIR_P00: + case dP00: return (*this->nonLocalDistributions)(D3Q27System::ET_W, x1 + 1, x2, x3); - case DIR_M00: + case dM00: return (*this->localDistributions)(D3Q27System::ET_E, x1, x2, x3); - case DIR_0M0: + case d0M0: return (*this->localDistributions)(D3Q27System::ET_N, x1, x2, x3); - case DIR_0P0: + case d0P0: return (*this->nonLocalDistributions)(D3Q27System::ET_S, x1, x2 + 1, x3); - case DIR_00M: + case d00M: return (*this->localDistributions)(D3Q27System::ET_T, x1, x2, x3); - case DIR_00P: + case d00P: return (*this->nonLocalDistributions)(D3Q27System::ET_B, x1, x2, x3 + 1); - case DIR_MM0: + case dMM0: return (*this->localDistributions)(D3Q27System::ET_NE, x1, x2, x3); - case DIR_PP0: + case dPP0: return (*this->nonLocalDistributions)(D3Q27System::ET_SW, x1 + 1, x2 + 1, x3); - case DIR_MP0: + case dMP0: return (*this->nonLocalDistributions)(D3Q27System::ET_SE, x1, x2 + 1, x3); - case DIR_PM0: + case dPM0: return (*this->localDistributions)(D3Q27System::ET_NW, x1 + 1, x2, x3); - case DIR_M0M: + case dM0M: return (*this->localDistributions)(D3Q27System::ET_TE, x1, x2, x3); - case DIR_P0P: + case dP0P: return (*this->nonLocalDistributions)(D3Q27System::ET_BW, x1 + 1, x2, x3 + 1); - case DIR_M0P: + case dM0P: return (*this->nonLocalDistributions)(D3Q27System::ET_BE, x1, x2, x3 + 1); - case DIR_P0M: + case dP0M: return (*this->localDistributions)(D3Q27System::ET_TW, x1 + 1, x2, x3); - case DIR_0MM: + case d0MM: return (*this->localDistributions)(D3Q27System::ET_TN, x1, x2, x3); - case DIR_0PP: + case d0PP: return (*this->nonLocalDistributions)(D3Q27System::ET_BS, x1, x2 + 1, x3 + 1); - case DIR_0MP: + case d0MP: return (*this->nonLocalDistributions)(D3Q27System::ET_BN, x1, x2, x3 + 1); - case DIR_0PM: + case d0PM: return (*this->localDistributions)(D3Q27System::ET_TS, x1, x2 + 1, x3); - case DIR_MMM: + case dMMM: return (*this->localDistributions)(D3Q27System::ET_TNE, x1, x2, x3); - case DIR_PPP: + case dPPP: return (*this->nonLocalDistributions)(D3Q27System::ET_BSW, x1 + 1, x2 + 1, x3 + 1); - case DIR_PMM: + case dPMM: return (*this->localDistributions)(D3Q27System::ET_TNW, x1 + 1, x2, x3); - case DIR_MPP: + case dMPP: return (*this->nonLocalDistributions)(D3Q27System::ET_BSE, x1, x2 + 1, x3 + 1); - case DIR_MPM: + case dMPM: return (*this->localDistributions)(D3Q27System::ET_TSE, x1, x2 + 1, x3); - case DIR_PMP: + case dPMP: return (*this->nonLocalDistributions)(D3Q27System::ET_BNW, x1 + 1, x2, x3 + 1); - case DIR_PPM: + case dPPM: return (*this->localDistributions)(D3Q27System::ET_TSW, x1 + 1, x2 + 1, x3); - case DIR_MMP: + case dMMP: return (*this->nonLocalDistributions)(D3Q27System::ET_BNE, x1, x2, x3 + 1); - case DIR_000: + case d000: return (*this->zeroDistributions)(x1, x2, x3); default: UB_THROW(UbException(UB_EXARGS, "Direction didn't find")); diff --git a/src/cpu/VirtualFluidsCore/Data/D3Q27EsoTwist3DSplittedVector.h b/src/cpu/core/Data/D3Q27EsoTwist3DSplittedVector.h similarity index 86% rename from src/cpu/VirtualFluidsCore/Data/D3Q27EsoTwist3DSplittedVector.h rename to src/cpu/core/Data/D3Q27EsoTwist3DSplittedVector.h index 21f1610641706dac82e1314b1a01be5959c8b0b2..5705df3965d6afc3218f996ae7c6164f5c3830e0 100644 --- a/src/cpu/VirtualFluidsCore/Data/D3Q27EsoTwist3DSplittedVector.h +++ b/src/cpu/core/Data/D3Q27EsoTwist3DSplittedVector.h @@ -55,28 +55,28 @@ public: ////////////////////////////////////////////////////////////////////////// void swap() override; ////////////////////////////////////////////////////////////////////////// - void getDistribution(real *const f, size_t x1, size_t x2, size_t x3) override; + void getPreCollisionDistribution(real *const f, size_t x1, size_t x2, size_t x3) override; ////////////////////////////////////////////////////////////////////////// - void setDistribution(const real *const f, size_t x1, size_t x2, size_t x3) override; + void setPostCollisionDistribution(const real *const f, size_t x1, size_t x2, size_t x3) override; //////////////////////////////////////////////////////////////////////// - void getDistributionInv(real *const f, size_t x1, size_t x2, size_t x3) override; + void getPostCollisionDistribution(real *const f, size_t x1, size_t x2, size_t x3) override; ////////////////////////////////////////////////////////////////////////// - void setDistributionInv(const real *const f, size_t x1, size_t x2, size_t x3) override; + void setPreCollisionDistribution(const real *const f, size_t x1, size_t x2, size_t x3) override; ////////////////////////////////////////////////////////////////////////// - void setDistributionForDirection(const real *const f, size_t x1, size_t x2, size_t x3, + void setPostCollisionDistributionForDirection(const real *const f, size_t x1, size_t x2, size_t x3, unsigned long int direction) override; ////////////////////////////////////////////////////////////////////////// - void setDistributionForDirection(real f, size_t x1, size_t x2, size_t x3, int direction) override; + void setPostCollisionDistributionForDirection(real f, size_t x1, size_t x2, size_t x3, int direction) override; ////////////////////////////////////////////////////////////////////////// real getDistributionInvForDirection(size_t x1, size_t x2, size_t x3, int direction) override; ////////////////////////////////////////////////////////////////////////// - void setDistributionInvForDirection(const real *const f, size_t x1, size_t x2, size_t x3, + void setPreCollisionDistributionForDirection(const real *const f, size_t x1, size_t x2, size_t x3, unsigned long int direction) override; ////////////////////////////////////////////////////////////////////////// - void setDistributionInvForDirection(real f, size_t x1, size_t x2, size_t x3, + void setPreCollisionDistributionForDirection(real f, size_t x1, size_t x2, size_t x3, unsigned long int direction) override; ////////////////////////////////////////////////////////////////////////// - real getDistributionForDirection(size_t x1, size_t x2, size_t x3, int direction) override; + real getPreCollisionDistributionForDirection(size_t x1, size_t x2, size_t x3, int direction) override; ////////////////////////////////////////////////////////////////////////// size_t getNX1() const override; ////////////////////////////////////////////////////////////////////////// diff --git a/src/cpu/VirtualFluidsCore/Data/D3Q27EsoTwist3DSplittedVectorEx.cpp b/src/cpu/core/Data/D3Q27EsoTwist3DSplittedVectorEx.cpp similarity index 100% rename from src/cpu/VirtualFluidsCore/Data/D3Q27EsoTwist3DSplittedVectorEx.cpp rename to src/cpu/core/Data/D3Q27EsoTwist3DSplittedVectorEx.cpp diff --git a/src/cpu/VirtualFluidsCore/Data/D3Q27EsoTwist3DSplittedVectorEx.h b/src/cpu/core/Data/D3Q27EsoTwist3DSplittedVectorEx.h similarity index 100% rename from src/cpu/VirtualFluidsCore/Data/D3Q27EsoTwist3DSplittedVectorEx.h rename to src/cpu/core/Data/D3Q27EsoTwist3DSplittedVectorEx.h diff --git a/src/cpu/VirtualFluidsCore/Data/DataSet3D.h b/src/cpu/core/Data/DataSet3D.h similarity index 100% rename from src/cpu/VirtualFluidsCore/Data/DataSet3D.h rename to src/cpu/core/Data/DataSet3D.h diff --git a/src/cpu/VirtualFluidsCore/Data/DistributionArray3D.h b/src/cpu/core/Data/DistributionArray3D.h similarity index 80% rename from src/cpu/VirtualFluidsCore/Data/DistributionArray3D.h rename to src/cpu/core/Data/DistributionArray3D.h index fff57191d5172e2f3c085b6f8753018c58fae42a..21b9c23e998ae971130f918463cfe670f018b7a4 100644 --- a/src/cpu/VirtualFluidsCore/Data/DistributionArray3D.h +++ b/src/cpu/core/Data/DistributionArray3D.h @@ -55,39 +55,39 @@ public: //! \param x1 coordinate x1 //! \param x2 coordinate x2 //! \param x3 coordinate x3 - virtual void getDistribution(real *const f, size_t x1, size_t x2, size_t x3) = 0; + virtual void getPreCollisionDistribution(real *const f, size_t x1, size_t x2, size_t x3) = 0; //! set distribution //! \param f distribution //! \param x1 coordinate x1 //! \param x2 coordinate x2 //! \param x3 coordinate x3 - virtual void setDistribution(const real *const f, size_t x1, size_t x2, size_t x3) = 0; + virtual void setPostCollisionDistribution(const real *const f, size_t x1, size_t x2, size_t x3) = 0; //! get distribution in inverse order //! \param f distribution //! \param x1 coordinate x1 //! \param x2 coordinate x2 //! \param x3 coordinate x3 - virtual void getDistributionInv(real *const f, size_t x1, size_t x2, size_t x3) = 0; + virtual void getPostCollisionDistribution(real *const f, size_t x1, size_t x2, size_t x3) = 0; //! set distribution in inverse order //! \param f distribution //! \param x1 coordinate x1 //! \param x1 coordinate x2 //! \param x1 coordinate x3 - virtual void setDistributionInv(const real *const f, size_t x1, size_t x2, size_t x3) = 0; + virtual void setPreCollisionDistribution(const real *const f, size_t x1, size_t x2, size_t x3) = 0; //! set distribution in inverse order //! \param f distribution //! \param x1 coordinate x1 //! \param x1 coordinate x2 //! \param x1 coordinate x3 - virtual void setDistributionForDirection(const real *const f, size_t x1, size_t x2, size_t x3, + virtual void setPostCollisionDistributionForDirection(const real *const f, size_t x1, size_t x2, size_t x3, unsigned long int direction) = 0; - virtual void setDistributionForDirection(real f, size_t x1, size_t x2, size_t x3, int direction) = 0; + virtual void setPostCollisionDistributionForDirection(real f, size_t x1, size_t x2, size_t x3, int direction) = 0; virtual real getDistributionInvForDirection(size_t x1, size_t x2, size_t x3, int direction) = 0; - virtual void setDistributionInvForDirection(const real *const f, size_t x1, size_t x2, size_t x3, + virtual void setPreCollisionDistributionForDirection(const real *const f, size_t x1, size_t x2, size_t x3, unsigned long int direction) = 0; - virtual void setDistributionInvForDirection(real f, size_t x1, size_t x2, size_t x3, + virtual void setPreCollisionDistributionForDirection(real f, size_t x1, size_t x2, size_t x3, unsigned long int direction) = 0; - virtual real getDistributionForDirection(size_t x1, size_t x2, size_t x3, int direction) = 0; + virtual real getPreCollisionDistributionForDirection(size_t x1, size_t x2, size_t x3, int direction) = 0; virtual void swap() = 0; protected: diff --git a/src/cpu/VirtualFluidsCore/Data/EsoTwist3D.h b/src/cpu/core/Data/EsoTwist3D.h similarity index 83% rename from src/cpu/VirtualFluidsCore/Data/EsoTwist3D.h rename to src/cpu/core/Data/EsoTwist3D.h index 6a65255adfaf48d415c76b66364f3f34966572c0..1642c09daddadb7add0e16c5c833e5cb79c21dd3 100644 --- a/src/cpu/VirtualFluidsCore/Data/EsoTwist3D.h +++ b/src/cpu/core/Data/EsoTwist3D.h @@ -43,16 +43,6 @@ // Geier, M., & Schönherr, M. (2017). Esoteric twist: an efficient in-place streaming algorithmus for the lattice // Boltzmann method on massively parallel hardware. Computation, 5(2), 19. -class EsoTwistD3Q27UnrollArray -{ -}; -class EsoTwistPlusD3Q27UnrollArray -{ -}; -class EsoTwistPlusD3Q19UnrollArray -{ -}; - class EsoTwist3D : public DistributionArray3D { public: @@ -63,31 +53,31 @@ public: ////////////////////////////////////////////////////////////////////////// void swap() override = 0; ////////////////////////////////////////////////////////////////////////// - void getDistribution(real *const f, size_t x1, size_t x2, size_t x3) override = 0; + void getPreCollisionDistribution(real *const f, size_t x1, size_t x2, size_t x3) override = 0; ////////////////////////////////////////////////////////////////////////// - void setDistribution(const real *const f, size_t x1, size_t x2, size_t x3) override = 0; + void setPostCollisionDistribution(const real *const f, size_t x1, size_t x2, size_t x3) override = 0; //////////////////////////////////////////////////////////////////////// - void getDistributionInv(real *const f, size_t x1, size_t x2, size_t x3) override = 0; + void getPostCollisionDistribution(real *const f, size_t x1, size_t x2, size_t x3) override = 0; ////////////////////////////////////////////////////////////////////////// - void setDistributionInv(const real *const f, size_t x1, size_t x2, size_t x3) override = 0; + void setPreCollisionDistribution(const real *const f, size_t x1, size_t x2, size_t x3) override = 0; ////////////////////////////////////////////////////////////////////////// - void setDistributionForDirection(const real *const f, size_t x1, size_t x2, size_t x3, + void setPostCollisionDistributionForDirection(const real *const f, size_t x1, size_t x2, size_t x3, unsigned long int direction) override = 0; ////////////////////////////////////////////////////////////////////////// - void setDistributionForDirection(real f, size_t x1, size_t x2, size_t x3, int direction) override = 0; + void setPostCollisionDistributionForDirection(real f, size_t x1, size_t x2, size_t x3, int direction) override = 0; ////////////////////////////////////////////////////////////////////////// // virtual void getDistributionInvForDirection(real* const& f, const size_t& x1, const size_t& x2, const size_t& // x3, const unsigned long int& direction) = 0; ////////////////////////////////////////////////////////////////////////// real getDistributionInvForDirection(size_t x1, size_t x2, size_t x3, int direction) override = 0; ////////////////////////////////////////////////////////////////////////// - void setDistributionInvForDirection(const real *const f, size_t x1, size_t x2, size_t x3, + void setPreCollisionDistributionForDirection(const real *const f, size_t x1, size_t x2, size_t x3, unsigned long int direction) override = 0; ////////////////////////////////////////////////////////////////////////// - void setDistributionInvForDirection(real f, size_t x1, size_t x2, size_t x3, + void setPreCollisionDistributionForDirection(real f, size_t x1, size_t x2, size_t x3, unsigned long int direction) override = 0; ////////////////////////////////////////////////////////////////////////// - real getDistributionForDirection(size_t x1, size_t x2, size_t x3, int direction) override = 0; + real getPreCollisionDistributionForDirection(size_t x1, size_t x2, size_t x3, int direction) override = 0; ////////////////////////////////////////////////////////////////////////// size_t getNX1() const override = 0; ////////////////////////////////////////////////////////////////////////// diff --git a/src/cpu/VirtualFluidsCore/Data/EsoTwistD3Q27System.cpp b/src/cpu/core/Data/EsoTwistD3Q27System.cpp similarity index 88% rename from src/cpu/VirtualFluidsCore/Data/EsoTwistD3Q27System.cpp rename to src/cpu/core/Data/EsoTwistD3Q27System.cpp index c28f1d4896619d72f27d7cd99579295fa46c68a5..8f249ceeca6e0270a4396e6100fc1a7d0af0c3c6 100644 --- a/src/cpu/VirtualFluidsCore/Data/EsoTwistD3Q27System.cpp +++ b/src/cpu/core/Data/EsoTwistD3Q27System.cpp @@ -45,12 +45,12 @@ const int EsoTwistD3Q27System::ETX3[EsoTwistD3Q27System::ENDF + 1] = { 0, 0, 0, const int EsoTwistD3Q27System::etINVDIR[EsoTwistD3Q27System::ENDF + 1] = { - vf::lbm::dir::INV_P00, vf::lbm::dir::INV_M00, vf::lbm::dir::INV_0P0, vf::lbm::dir::INV_0M0, vf::lbm::dir::INV_00P, - vf::lbm::dir::INV_00M, vf::lbm::dir::INV_PP0, vf::lbm::dir::INV_MM0, vf::lbm::dir::INV_PM0, vf::lbm::dir::INV_MP0, - vf::lbm::dir::INV_P0P, vf::lbm::dir::INV_M0M, vf::lbm::dir::INV_P0M, vf::lbm::dir::INV_M0P, vf::lbm::dir::INV_0PP, - vf::lbm::dir::INV_0MM, vf::lbm::dir::INV_0PM, vf::lbm::dir::INV_0MP, vf::lbm::dir::INV_PPP, vf::lbm::dir::INV_MPP, - vf::lbm::dir::INV_PMP, vf::lbm::dir::INV_MMP, vf::lbm::dir::INV_PPM, vf::lbm::dir::INV_MPM, vf::lbm::dir::INV_PMM, - vf::lbm::dir::INV_MMM, vf::lbm::dir::DIR_000 + vf::lbm::dir::iP00, vf::lbm::dir::iM00, vf::lbm::dir::i0P0, vf::lbm::dir::i0M0, vf::lbm::dir::i00P, + vf::lbm::dir::i00M, vf::lbm::dir::iPP0, vf::lbm::dir::iMM0, vf::lbm::dir::iPM0, vf::lbm::dir::iMP0, + vf::lbm::dir::iP0P, vf::lbm::dir::iM0M, vf::lbm::dir::iP0M, vf::lbm::dir::iM0P, vf::lbm::dir::i0PP, + vf::lbm::dir::i0MM, vf::lbm::dir::i0PM, vf::lbm::dir::i0MP, vf::lbm::dir::iPPP, vf::lbm::dir::iMPP, + vf::lbm::dir::iPMP, vf::lbm::dir::iMMP, vf::lbm::dir::iPPM, vf::lbm::dir::iMPM, vf::lbm::dir::iPMM, + vf::lbm::dir::iMMM, vf::lbm::dir::d000 }; const unsigned long int EsoTwistD3Q27System::etDIR[EsoTwistD3Q27System::ENDF + 1] = { diff --git a/src/cpu/VirtualFluidsCore/Data/EsoTwistD3Q27System.h b/src/cpu/core/Data/EsoTwistD3Q27System.h similarity index 59% rename from src/cpu/VirtualFluidsCore/Data/EsoTwistD3Q27System.h rename to src/cpu/core/Data/EsoTwistD3Q27System.h index 74cd5b9b8fe0aeb58fad65c34c5231abb8eb4b8c..77db3dd1dc2d8406e0f0777ced845c8df54fca1a 100644 --- a/src/cpu/VirtualFluidsCore/Data/EsoTwistD3Q27System.h +++ b/src/cpu/core/Data/EsoTwistD3Q27System.h @@ -47,60 +47,60 @@ struct EsoTwistD3Q27System { // const static int STARTDIR = D3Q27System::STARTDIR; const static int ENDDIR = D3Q27System::ENDDIR; - static const int REST = vf::lbm::dir::DIR_000; /*f0 */ - static const int E = vf::lbm::dir::DIR_P00; /*f1 */ - static const int W = vf::lbm::dir::DIR_M00; /*f2 */ - static const int N = vf::lbm::dir::DIR_0P0; /*f3 */ - static const int S = vf::lbm::dir::DIR_0M0; /*f4 */ - static const int T = vf::lbm::dir::DIR_00P; /*f5 */ - static const int B = vf::lbm::dir::DIR_00M; /*f6 */ - static const int NE = vf::lbm::dir::DIR_PP0; /*f7 */ - static const int SW = vf::lbm::dir::DIR_MM0; /*f8 */ - static const int SE = vf::lbm::dir::DIR_PM0; /*f9 */ - static const int NW = vf::lbm::dir::DIR_MP0; /*f10*/ - static const int TE = vf::lbm::dir::DIR_P0P; /*f11*/ - static const int BW = vf::lbm::dir::DIR_M0M; /*f12*/ - static const int BE = vf::lbm::dir::DIR_P0M; /*f13*/ - static const int TW = vf::lbm::dir::DIR_M0P; /*f14*/ - static const int TN = vf::lbm::dir::DIR_0PP; /*f15*/ - static const int BS = vf::lbm::dir::DIR_0MM; /*f16*/ - static const int BN = vf::lbm::dir::DIR_0PM; /*f17*/ - static const int TS = vf::lbm::dir::DIR_0MP; /*f18*/ - static const int TNE = vf::lbm::dir::DIR_PPP; - static const int TNW = vf::lbm::dir::DIR_MPP; - static const int TSE = vf::lbm::dir::DIR_PMP; - static const int TSW = vf::lbm::dir::DIR_MMP; - static const int BNE = vf::lbm::dir::DIR_PPM; - static const int BNW = vf::lbm::dir::DIR_MPM; - static const int BSE = vf::lbm::dir::DIR_PMM; - static const int BSW = vf::lbm::dir::DIR_MMM; + static const int REST = vf::lbm::dir::d000; /*f0 */ + static const int E = vf::lbm::dir::dP00; /*f1 */ + static const int W = vf::lbm::dir::dM00; /*f2 */ + static const int N = vf::lbm::dir::d0P0; /*f3 */ + static const int S = vf::lbm::dir::d0M0; /*f4 */ + static const int T = vf::lbm::dir::d00P; /*f5 */ + static const int B = vf::lbm::dir::d00M; /*f6 */ + static const int NE = vf::lbm::dir::dPP0; /*f7 */ + static const int SW = vf::lbm::dir::dMM0; /*f8 */ + static const int SE = vf::lbm::dir::dPM0; /*f9 */ + static const int NW = vf::lbm::dir::dMP0; /*f10*/ + static const int TE = vf::lbm::dir::dP0P; /*f11*/ + static const int BW = vf::lbm::dir::dM0M; /*f12*/ + static const int BE = vf::lbm::dir::dP0M; /*f13*/ + static const int TW = vf::lbm::dir::dM0P; /*f14*/ + static const int TN = vf::lbm::dir::d0PP; /*f15*/ + static const int BS = vf::lbm::dir::d0MM; /*f16*/ + static const int BN = vf::lbm::dir::d0PM; /*f17*/ + static const int TS = vf::lbm::dir::d0MP; /*f18*/ + static const int TNE = vf::lbm::dir::dPPP; + static const int TNW = vf::lbm::dir::dMPP; + static const int TSE = vf::lbm::dir::dPMP; + static const int TSW = vf::lbm::dir::dMMP; + static const int BNE = vf::lbm::dir::dPPM; + static const int BNW = vf::lbm::dir::dMPM; + static const int BSE = vf::lbm::dir::dPMM; + static const int BSW = vf::lbm::dir::dMMM; - static const int INV_E = vf::lbm::dir::DIR_M00; - static const int INV_W = vf::lbm::dir::DIR_P00; - static const int INV_N = vf::lbm::dir::DIR_0M0; - static const int INV_S = vf::lbm::dir::DIR_0P0; - static const int INV_T = vf::lbm::dir::DIR_00M; - static const int INV_B = vf::lbm::dir::DIR_00P; - static const int INV_NE = vf::lbm::dir::DIR_MM0; - static const int INV_SW = vf::lbm::dir::DIR_PP0; - static const int INV_SE = vf::lbm::dir::DIR_MP0; - static const int INV_NW = vf::lbm::dir::DIR_PM0; - static const int INV_TE = vf::lbm::dir::DIR_M0M; - static const int INV_BW = vf::lbm::dir::DIR_P0P; - static const int INV_BE = vf::lbm::dir::DIR_M0P; - static const int INV_TW = vf::lbm::dir::DIR_P0M; - static const int INV_TN = vf::lbm::dir::DIR_0MM; - static const int INV_BS = vf::lbm::dir::DIR_0PP; - static const int INV_BN = vf::lbm::dir::DIR_0MP; - static const int INV_TS = vf::lbm::dir::DIR_0PM; - static const int INV_TNE = vf::lbm::dir::DIR_MMM; - static const int INV_TNW = vf::lbm::dir::DIR_PMM; - static const int INV_TSE = vf::lbm::dir::DIR_MPM; - static const int INV_TSW = vf::lbm::dir::DIR_PPM; - static const int INV_BNE = vf::lbm::dir::DIR_MMP; - static const int INV_BNW = vf::lbm::dir::DIR_PMP; - static const int INV_BSE = vf::lbm::dir::DIR_MPP; - static const int INV_BSW = vf::lbm::dir::DIR_PPP; + static const int INV_E = vf::lbm::dir::dM00; + static const int INV_W = vf::lbm::dir::dP00; + static const int INV_N = vf::lbm::dir::d0M0; + static const int INV_S = vf::lbm::dir::d0P0; + static const int INV_T = vf::lbm::dir::d00M; + static const int INV_B = vf::lbm::dir::d00P; + static const int INV_NE = vf::lbm::dir::dMM0; + static const int INV_SW = vf::lbm::dir::dPP0; + static const int INV_SE = vf::lbm::dir::dMP0; + static const int INV_NW = vf::lbm::dir::dPM0; + static const int INV_TE = vf::lbm::dir::dM0M; + static const int INV_BW = vf::lbm::dir::dP0P; + static const int INV_BE = vf::lbm::dir::dM0P; + static const int INV_TW = vf::lbm::dir::dP0M; + static const int INV_TN = vf::lbm::dir::d0MM; + static const int INV_BS = vf::lbm::dir::d0PP; + static const int INV_BN = vf::lbm::dir::d0MP; + static const int INV_TS = vf::lbm::dir::d0PM; + static const int INV_TNE = vf::lbm::dir::dMMM; + static const int INV_TNW = vf::lbm::dir::dPMM; + static const int INV_TSE = vf::lbm::dir::dMPM; + static const int INV_TSW = vf::lbm::dir::dPPM; + static const int INV_BNE = vf::lbm::dir::dMMP; + static const int INV_BNW = vf::lbm::dir::dPMP; + static const int INV_BSE = vf::lbm::dir::dMPP; + static const int INV_BSW = vf::lbm::dir::dPPP; static const unsigned long int etZERO; // 1;/*f0 */ static const unsigned long int etE; // 2; /*f1 */ diff --git a/src/cpu/VirtualFluidsCore/Data/VoidData3D.h b/src/cpu/core/Data/VoidData3D.h similarity index 52% rename from src/cpu/VirtualFluidsCore/Data/VoidData3D.h rename to src/cpu/core/Data/VoidData3D.h index 25fe5dde2a5a874fdefe0eaf2502c86df29faa95..2b47d397149fbc06d03045d46c95d9b3c3c7a4fc 100644 --- a/src/cpu/VirtualFluidsCore/Data/VoidData3D.h +++ b/src/cpu/core/Data/VoidData3D.h @@ -19,28 +19,28 @@ public: size_t getNX1() const override { return NX1; } size_t getNX2() const override { return NX2; } size_t getNX3() const override { return NX3; } - void getDistribution(real *const f, size_t x1, size_t x2, size_t x3) override {} - void setDistribution(const real *const f, size_t x1, size_t x2, size_t x3) override {} - void getDistributionInv(real *const f, size_t x1, size_t x2, size_t x3) override {} - void setDistributionInv(const real *const f, size_t x1, size_t x2, size_t x3) override {} - void setDistributionForDirection(const real *const f, size_t x1, size_t x2, size_t x3, + void getPreCollisionDistribution(real *const f, size_t x1, size_t x2, size_t x3) override {} + void setPostCollisionDistribution(const real *const f, size_t x1, size_t x2, size_t x3) override {} + void getPostCollisionDistribution(real *const f, size_t x1, size_t x2, size_t x3) override {} + void setPreCollisionDistribution(const real *const f, size_t x1, size_t x2, size_t x3) override {} + void setPostCollisionDistributionForDirection(const real *const f, size_t x1, size_t x2, size_t x3, unsigned long int direction) override { } - void setDistributionForDirection(real f, size_t x1, size_t x2, size_t x3, int direction) override {} + void setPostCollisionDistributionForDirection(real f, size_t x1, size_t x2, size_t x3, int direction) override {} real getDistributionInvForDirection(size_t /*x1*/, size_t /*x2*/, size_t /*x3*/, int /*direction*/) override { return 0.0; } - void setDistributionInvForDirection(const real *const f, size_t x1, size_t x2, size_t x3, + void setPreCollisionDistributionForDirection(const real *const f, size_t x1, size_t x2, size_t x3, unsigned long int direction) override { } - void setDistributionInvForDirection(real f, size_t x1, size_t x2, size_t x3, + void setPreCollisionDistributionForDirection(real f, size_t x1, size_t x2, size_t x3, unsigned long int direction) override { } - real getDistributionForDirection(size_t /*x1*/, size_t /*x2*/, size_t /*x3*/, int /*direction*/) override + real getPreCollisionDistributionForDirection(size_t /*x1*/, size_t /*x2*/, size_t /*x3*/, int /*direction*/) override { return 0.0; } diff --git a/src/cpu/VirtualFluidsCore/Interactors/D3Q27Interactor.cpp b/src/cpu/core/Interactors/D3Q27Interactor.cpp similarity index 90% rename from src/cpu/VirtualFluidsCore/Interactors/D3Q27Interactor.cpp rename to src/cpu/core/Interactors/D3Q27Interactor.cpp index d9c605a587c90a96d0e070f9528fefb028307cf6..598cfe5b07174a230ae7437ec7217b3d05c94f6e 100644 --- a/src/cpu/VirtualFluidsCore/Interactors/D3Q27Interactor.cpp +++ b/src/cpu/core/Interactors/D3Q27Interactor.cpp @@ -91,110 +91,110 @@ void D3Q27Interactor::initRayVectors() using namespace vf::basics::constant; int fdir; - real c1oS2 = vf::basics::constant::one_over_sqrt2; - real c1oS3 = vf::basics::constant::one_over_sqrt3; - fdir = DIR_P00; + real c1oS2 = vf::basics::constant::c1oSqrt2; + real c1oS3 = vf::basics::constant::c1oSqrt3; + fdir = dP00; rayX1[fdir] = c1o1; rayX2[fdir] = c0o1; rayX3[fdir] = c0o1; - fdir = DIR_M00; + fdir = dM00; rayX1[fdir] = -c1o1; rayX2[fdir] = c0o1; rayX3[fdir] = c0o1; - fdir = DIR_0P0; + fdir = d0P0; rayX1[fdir] = c0o1; rayX2[fdir] = c1o1; rayX3[fdir] = c0o1; - fdir = DIR_0M0; + fdir = d0M0; rayX1[fdir] = c0o1; rayX2[fdir] = -c1o1; rayX3[fdir] = c0o1; - fdir = DIR_00P; + fdir = d00P; rayX1[fdir] = c0o1; rayX2[fdir] = c0o1; rayX3[fdir] = c1o1; - fdir = DIR_00M; + fdir = d00M; rayX1[fdir] = c0o1; rayX2[fdir] = c0o1; rayX3[fdir] = -c1o1; - fdir = DIR_PP0; + fdir = dPP0; rayX1[fdir] = c1oS2; rayX2[fdir] = c1oS2; rayX3[fdir] = c0o1; - fdir = DIR_MM0; + fdir = dMM0; rayX1[fdir] = -c1oS2; rayX2[fdir] = -c1oS2; rayX3[fdir] = c0o1; - fdir = DIR_PM0; + fdir = dPM0; rayX1[fdir] = c1oS2; rayX2[fdir] = -c1oS2; rayX3[fdir] = c0o1; - fdir = DIR_MP0; + fdir = dMP0; rayX1[fdir] = -c1oS2; rayX2[fdir] = c1oS2; rayX3[fdir] = c0o1; - fdir = DIR_P0P; + fdir = dP0P; rayX1[fdir] = c1oS2; rayX2[fdir] = c0o1; rayX3[fdir] = c1oS2; - fdir = DIR_M0M; + fdir = dM0M; rayX1[fdir] = -c1oS2; rayX2[fdir] = c0o1; rayX3[fdir] = -c1oS2; - fdir = DIR_P0M; + fdir = dP0M; rayX1[fdir] = c1oS2; rayX2[fdir] = c0o1; rayX3[fdir] = -c1oS2; - fdir = DIR_M0P; + fdir = dM0P; rayX1[fdir] = -c1oS2; rayX2[fdir] = c0o1; rayX3[fdir] = c1oS2; - fdir = DIR_0PP; + fdir = d0PP; rayX1[fdir] = c0o1; rayX2[fdir] = c1oS2; rayX3[fdir] = c1oS2; - fdir = DIR_0MM; + fdir = d0MM; rayX1[fdir] = c0o1; rayX2[fdir] = -c1oS2; rayX3[fdir] = -c1oS2; - fdir = DIR_0PM; + fdir = d0PM; rayX1[fdir] = c0o1; rayX2[fdir] = c1oS2; rayX3[fdir] = -c1oS2; - fdir = DIR_0MP; + fdir = d0MP; rayX1[fdir] = c0o1; rayX2[fdir] = -c1oS2; rayX3[fdir] = c1oS2; - fdir = DIR_MPP; + fdir = dMPP; rayX1[fdir] = -c1oS3; rayX2[fdir] = c1oS3; rayX3[fdir] = c1oS3; - fdir = DIR_PPP; + fdir = dPPP; rayX1[fdir] = c1oS3; rayX2[fdir] = c1oS3; rayX3[fdir] = c1oS3; - fdir = DIR_MMP; + fdir = dMMP; rayX1[fdir] = -c1oS3; rayX2[fdir] = -c1oS3; rayX3[fdir] = c1oS3; - fdir = DIR_PMP; + fdir = dPMP; rayX1[fdir] = c1oS3; rayX2[fdir] = -c1oS3; rayX3[fdir] = c1oS3; - fdir = DIR_MPM; + fdir = dMPM; rayX1[fdir] = -c1oS3; rayX2[fdir] = c1oS3; rayX3[fdir] = -c1oS3; - fdir = DIR_PPM; + fdir = dPPM; rayX1[fdir] = c1oS3; rayX2[fdir] = c1oS3; rayX3[fdir] = -c1oS3; - fdir = DIR_MMM; + fdir = dMMM; rayX1[fdir] = -c1oS3; rayX2[fdir] = -c1oS3; rayX3[fdir] = -c1oS3; - fdir = DIR_PMM; + fdir = dPMM; rayX1[fdir] = c1oS3; rayX2[fdir] = -c1oS3; rayX3[fdir] = -c1oS3; @@ -332,19 +332,19 @@ bool D3Q27Interactor::setDifferencesToGbObject3D(const SPtr<Block3D> block) throw UbException( UB_EXARGS, "fuer den bei LB nicht vorkommenden Fall deltaX1!=deltaX2!=deltaX3 nicht implementiert "); - vector<real> distNeigh(D3Q27System::FENDDIR + 1, vf::basics::constant::sqrt2 * deltaX1); - distNeigh[DIR_P00] = distNeigh[DIR_M00] = distNeigh[DIR_0P0] = deltaX1; - distNeigh[DIR_0M0] = distNeigh[DIR_00P] = distNeigh[DIR_00M] = deltaX1; - distNeigh[DIR_PP0] = distNeigh[DIR_MP0] = distNeigh[DIR_MM0] = - distNeigh[DIR_PM0] = vf::basics::constant::sqrt2 * deltaX1; - distNeigh[DIR_P0P] = distNeigh[DIR_0PP] = distNeigh[DIR_M0P] = - distNeigh[DIR_0MP] = vf::basics::constant::sqrt2 * deltaX1; - distNeigh[DIR_P0M] = distNeigh[DIR_0PM] = distNeigh[DIR_M0M] = - distNeigh[DIR_0MM] = vf::basics::constant::sqrt2 * deltaX1; - distNeigh[DIR_PPP] = distNeigh[DIR_MPP] = distNeigh[DIR_PMP] = - distNeigh[DIR_MMP] = vf::basics::constant::sqrt3 * deltaX1; - distNeigh[DIR_PPM] = distNeigh[DIR_MPM] = distNeigh[DIR_PMM] = - distNeigh[DIR_MMM] = vf::basics::constant::sqrt3 * deltaX1; + vector<real> distNeigh(D3Q27System::FENDDIR + 1, vf::basics::constant::cSqrt2 * deltaX1); + distNeigh[dP00] = distNeigh[dM00] = distNeigh[d0P0] = deltaX1; + distNeigh[d0M0] = distNeigh[d00P] = distNeigh[d00M] = deltaX1; + distNeigh[dPP0] = distNeigh[dMP0] = distNeigh[dMM0] = + distNeigh[dPM0] = vf::basics::constant::cSqrt2 * deltaX1; + distNeigh[dP0P] = distNeigh[d0PP] = distNeigh[dM0P] = + distNeigh[d0MP] = vf::basics::constant::cSqrt2 * deltaX1; + distNeigh[dP0M] = distNeigh[d0PM] = distNeigh[dM0M] = + distNeigh[d0MM] = vf::basics::constant::cSqrt2 * deltaX1; + distNeigh[dPPP] = distNeigh[dMPP] = distNeigh[dPMP] = + distNeigh[dMMP] = vf::basics::constant::cSqrt3 * deltaX1; + distNeigh[dPPM] = distNeigh[dMPM] = distNeigh[dPMM] = + distNeigh[dMMM] = vf::basics::constant::cSqrt3 * deltaX1; real q; bool pointOnBoundary = false; @@ -621,132 +621,132 @@ void D3Q27Interactor::addQsLineSet(std::vector<UbTupleFloat3> &nodes, std::vecto if (bc->hasBoundaryConditionFlag(D3Q27System::INVDIR[dir])) { real x1b, x2b, x3b, q = bc->getQ(dir); switch (dir) { - case DIR_P00: + case dP00: x1b = x1a + q * dx; x2b = x2a; x3b = x3a; break; - case DIR_0P0: + case d0P0: x1b = x1a; x2b = x2a + q * dx; x3b = x3a; break; - case DIR_M00: + case dM00: x1b = x1a - q * dx; x2b = x2a; x3b = x3a; break; - case DIR_0M0: + case d0M0: x1b = x1a; x2b = x2a - q * dx; x3b = x3a; break; - case DIR_PP0: + case dPP0: x1b = x1a + q * dx; x2b = x2a + q * dx; x3b = x3a; break; - case DIR_MP0: + case dMP0: x1b = x1a - q * dx; x2b = x2a + q * dx; x3b = x3a; break; - case DIR_MM0: + case dMM0: x1b = x1a - q * dx; x2b = x2a - q * dx; x3b = x3a; break; - case DIR_PM0: + case dPM0: x1b = x1a + q * dx; x2b = x2a - q * dx; x3b = x3a; break; - case DIR_00P: + case d00P: x1b = x1a; x2b = x2a; x3b = x3a + q * dx; break; - case DIR_P0P: + case dP0P: x1b = x1a + q * dx; x2b = x2a; x3b = x3a + q * dx; break; - case DIR_0PP: + case d0PP: x1b = x1a; x2b = x2a + q * dx; x3b = x3a + q * dx; break; - case DIR_M0P: + case dM0P: x1b = x1a - q * dx; x2b = x2a; x3b = x3a + q * dx; break; - case DIR_0MP: + case d0MP: x1b = x1a; x2b = x2a - q * dx; x3b = x3a + q * dx; break; - case DIR_00M: + case d00M: x1b = x1a; x2b = x2a; x3b = x3a - q * dx; break; - case DIR_P0M: + case dP0M: x1b = x1a + q * dx; x2b = x2a; x3b = x3a - q * dx; break; - case DIR_0PM: + case d0PM: x1b = x1a; x2b = x2a + q * dx; x3b = x3a - q * dx; break; - case DIR_M0M: + case dM0M: x1b = x1a - q * dx; x2b = x2a; x3b = x3a - q * dx; break; - case DIR_0MM: + case d0MM: x1b = x1a; x2b = x2a - q * dx; x3b = x3a - q * dx; break; - case DIR_PPP: + case dPPP: x1b = x1a + q * dx; x2b = x2a + q * dx; x3b = x3a + q * dx; break; - case DIR_MMM: + case dMMM: x1b = x1a - q * dx; x2b = x2a - q * dx; x3b = x3a - q * dx; break; - case DIR_PPM: + case dPPM: x1b = x1a + q * dx; x2b = x2a + q * dx; x3b = x3a - q * dx; break; - case DIR_MMP: + case dMMP: x1b = x1a - q * dx; x2b = x2a - q * dx; x3b = x3a + q * dx; break; - case DIR_PMP: + case dPMP: x1b = x1a + q * dx; x2b = x2a - q * dx; x3b = x3a + q * dx; break; - case DIR_MPM: + case dMPM: x1b = x1a - q * dx; x2b = x2a + q * dx; x3b = x3a - q * dx; break; - case DIR_PMM: + case dPMM: x1b = x1a + q * dx; x2b = x2a - q * dx; x3b = x3a - q * dx; break; - case DIR_MPP: + case dMPP: x1b = x1a - q * dx; x2b = x2a + q * dx; x3b = x3a + q * dx; @@ -792,17 +792,17 @@ vector<pair<GbPoint3D, GbPoint3D>> D3Q27Interactor::getQsLineSet() bool include_TN_Edge = false; //(x1/x2/x3)=([0..blocknx1[/blocknx2/blocknx1) bool include_TE_Edge = false; //(x1/x2/x3)=(blocknx1/[0..blocknx2[/blocknx2) if (block) { - if (!block->getConnector(DIR_0P0)) + if (!block->getConnector(d0P0)) include_N_Face = true; - if (!block->getConnector(DIR_P00)) + if (!block->getConnector(dP00)) include_E_Face = true; - if (!block->getConnector(DIR_00P)) + if (!block->getConnector(d00P)) include_T_Face = true; - if (!block->getConnector(DIR_PP0) && include_N_Face && include_E_Face) + if (!block->getConnector(dPP0) && include_N_Face && include_E_Face) include_NE_Edge = true; - if (!block->getConnector(DIR_0PP) && include_T_Face && include_N_Face) + if (!block->getConnector(d0PP) && include_T_Face && include_N_Face) include_TN_Edge = true; - if (!block->getConnector(DIR_P0P) && include_T_Face && include_E_Face) + if (!block->getConnector(dP0P) && include_T_Face && include_E_Face) include_TE_Edge = true; } @@ -844,132 +844,132 @@ vector<pair<GbPoint3D, GbPoint3D>> D3Q27Interactor::getQsLineSet() if (bc->hasBoundaryConditionFlag(D3Q27System::INVDIR[dir])) { real x1b, x2b, x3b, q = bc->getQ(dir); switch (dir) { - case DIR_P00: + case dP00: x1b = x1a + q * dx; x2b = x2a; x3b = x3a; break; - case DIR_0P0: + case d0P0: x1b = x1a; x2b = x2a + q * dx; x3b = x3a; break; - case DIR_M00: + case dM00: x1b = x1a - q * dx; x2b = x2a; x3b = x3a; break; - case DIR_0M0: + case d0M0: x1b = x1a; x2b = x2a - q * dx; x3b = x3a; break; - case DIR_PP0: + case dPP0: x1b = x1a + q * dx; x2b = x2a + q * dx; x3b = x3a; break; - case DIR_MP0: + case dMP0: x1b = x1a - q * dx; x2b = x2a + q * dx; x3b = x3a; break; - case DIR_MM0: + case dMM0: x1b = x1a - q * dx; x2b = x2a - q * dx; x3b = x3a; break; - case DIR_PM0: + case dPM0: x1b = x1a + q * dx; x2b = x2a - q * dx; x3b = x3a; break; - case DIR_00P: + case d00P: x1b = x1a; x2b = x2a; x3b = x3a + q * dx; break; - case DIR_P0P: + case dP0P: x1b = x1a + q * dx; x2b = x2a; x3b = x3a + q * dx; break; - case DIR_0PP: + case d0PP: x1b = x1a; x2b = x2a + q * dx; x3b = x3a + q * dx; break; - case DIR_M0P: + case dM0P: x1b = x1a - q * dx; x2b = x2a; x3b = x3a + q * dx; break; - case DIR_0MP: + case d0MP: x1b = x1a; x2b = x2a - q * dx; x3b = x3a + q * dx; break; - case DIR_00M: + case d00M: x1b = x1a; x2b = x2a; x3b = x3a - q * dx; break; - case DIR_P0M: + case dP0M: x1b = x1a + q * dx; x2b = x2a; x3b = x3a - q * dx; break; - case DIR_0PM: + case d0PM: x1b = x1a; x2b = x2a + q * dx; x3b = x3a - q * dx; break; - case DIR_M0M: + case dM0M: x1b = x1a - q * dx; x2b = x2a; x3b = x3a - q * dx; break; - case DIR_0MM: + case d0MM: x1b = x1a; x2b = x2a - q * dx; x3b = x3a - q * dx; break; - case DIR_PPP: + case dPPP: x1b = x1a + q * dx; x2b = x2a + q * dx; x3b = x3a + q * dx; break; - case DIR_MMM: + case dMMM: x1b = x1a - q * dx; x2b = x2a - q * dx; x3b = x3a - q * dx; break; - case DIR_PPM: + case dPPM: x1b = x1a + q * dx; x2b = x2a + q * dx; x3b = x3a - q * dx; break; - case DIR_MMP: + case dMMP: x1b = x1a - q * dx; x2b = x2a - q * dx; x3b = x3a + q * dx; break; - case DIR_PMP: + case dPMP: x1b = x1a + q * dx; x2b = x2a - q * dx; x3b = x3a + q * dx; break; - case DIR_MPM: + case dMPM: x1b = x1a - q * dx; x2b = x2a + q * dx; x3b = x3a - q * dx; break; - case DIR_PMM: + case dPMM: x1b = x1a + q * dx; x2b = x2a - q * dx; x3b = x3a - q * dx; break; - case DIR_MPP: + case dMPP: x1b = x1a - q * dx; x2b = x2a + q * dx; x3b = x3a + q * dx; diff --git a/src/cpu/VirtualFluidsCore/Interactors/D3Q27Interactor.h b/src/cpu/core/Interactors/D3Q27Interactor.h similarity index 100% rename from src/cpu/VirtualFluidsCore/Interactors/D3Q27Interactor.h rename to src/cpu/core/Interactors/D3Q27Interactor.h diff --git a/src/cpu/VirtualFluidsCore/Interactors/D3Q27TriFaceMeshInteractor.cpp b/src/cpu/core/Interactors/D3Q27TriFaceMeshInteractor.cpp similarity index 99% rename from src/cpu/VirtualFluidsCore/Interactors/D3Q27TriFaceMeshInteractor.cpp rename to src/cpu/core/Interactors/D3Q27TriFaceMeshInteractor.cpp index 98906576c44b5abf3895eb429d37ee0a065ae9ec..f655ac84d1c12b9206dad27d53250f1ff9702f02 100644 --- a/src/cpu/VirtualFluidsCore/Interactors/D3Q27TriFaceMeshInteractor.cpp +++ b/src/cpu/core/Interactors/D3Q27TriFaceMeshInteractor.cpp @@ -365,9 +365,9 @@ void D3Q27TriFaceMeshInteractor::setQs(const real &timeStep) // tmpSolidNodesFromOtherInteractors[block]; double q, distance; - double &nodeDx1 = nodeDeltaToNeigh[level][DIR_P00]; - double &nodeDx2 = nodeDeltaToNeigh[level][DIR_0P0]; - double &nodeDx3 = nodeDeltaToNeigh[level][DIR_00P]; + double &nodeDx1 = nodeDeltaToNeigh[level][dP00]; + double &nodeDx2 = nodeDeltaToNeigh[level][d0P0]; + double &nodeDx3 = nodeDeltaToNeigh[level][d00P]; // fuer OBB-Test double qEinflussDelta = 1.1 * sqrt(nodeDx1 * nodeDx1 + nodeDx2 * nodeDx2 + nodeDx3 * nodeDx3); @@ -775,10 +775,10 @@ void D3Q27TriFaceMeshInteractor::initInteractor2(const real &timeStep) // FeTriFaceMesh3D::VertexAttributes& vAttribut2 = (*attributes)[triangle.v2]; // FeTriFaceMesh3D::VertexAttributes& vAttribut3 = (*attributes)[triangle.v3]; // vx1 = - // (float)(UbMath::c1o3*(vAttribut1.getVelocityX()+vAttribut2.getVelocityX()+vAttribut3.getVelocityX())); vx2 - // = (float)(UbMath::c1o3*(vAttribut1.getVelocityY()+vAttribut2.getVelocityY()+vAttribut3.getVelocityY())); + // (float)(vf::basics::constant::c1o3*(vAttribut1.getVelocityX()+vAttribut2.getVelocityX()+vAttribut3.getVelocityX())); vx2 + // = (float)(vf::basics::constant::c1o3*(vAttribut1.getVelocityY()+vAttribut2.getVelocityY()+vAttribut3.getVelocityY())); // vx3 = - // (float)(UbMath::c1o3*(vAttribut1.getVelocityZ()+vAttribut2.getVelocityZ()+vAttribut3.getVelocityZ())); + // (float)(vf::basics::constant::c1o3*(vAttribut1.getVelocityZ()+vAttribut2.getVelocityZ()+vAttribut3.getVelocityZ())); //} ////////////////////////////////////////////////////////////////////////// @@ -881,9 +881,9 @@ void D3Q27TriFaceMeshInteractor::initInteractor2(const real &timeStep) std::set<std::vector<int>> &solidsFromOtherInteractors = tmpSolidNodesFromOtherInteractors[block]; double q, internX1, internX2, internX3, distance; - double &nodeDx1 = nodeDeltaToNeigh[level][DIR_P00]; - double &nodeDx2 = nodeDeltaToNeigh[level][DIR_0P0]; - double &nodeDx3 = nodeDeltaToNeigh[level][DIR_00P]; + double &nodeDx1 = nodeDeltaToNeigh[level][dP00]; + double &nodeDx2 = nodeDeltaToNeigh[level][d0P0]; + double &nodeDx3 = nodeDeltaToNeigh[level][d00P]; // fuer OBB-Test double qEinflussDelta = 1.1 * sqrt(nodeDx1 * nodeDx1 + nodeDx2 * nodeDx2 + nodeDx3 * nodeDx3); @@ -1181,9 +1181,9 @@ void D3Q27TriFaceMeshInteractor::initInteractor2(const real &timeStep) std::set<UbTupleInt3> &solidNodeIndices = this->solidNodeIndicesMap[block]; - float nodeDeltaX1 = (float)nodeDeltaToNeigh[level][DIR_P00]; - float nodeDeltaX2 = (float)nodeDeltaToNeigh[level][DIR_0P0]; - float nodeDeltaX3 = (float)nodeDeltaToNeigh[level][DIR_00P]; + float nodeDeltaX1 = (float)nodeDeltaToNeigh[level][dP00]; + float nodeDeltaX2 = (float)nodeDeltaToNeigh[level][d0P0]; + float nodeDeltaX3 = (float)nodeDeltaToNeigh[level][d00P]; // flagfield matrix initialisieren CbArray3D<FLAGS> flagField(blocknx1, blocknx2, blocknx3, UNDEF_FLAG); diff --git a/src/cpu/VirtualFluidsCore/Interactors/D3Q27TriFaceMeshInteractor.h b/src/cpu/core/Interactors/D3Q27TriFaceMeshInteractor.h similarity index 100% rename from src/cpu/VirtualFluidsCore/Interactors/D3Q27TriFaceMeshInteractor.h rename to src/cpu/core/Interactors/D3Q27TriFaceMeshInteractor.h diff --git a/src/cpu/VirtualFluidsCore/Interactors/Interactor3D.cpp b/src/cpu/core/Interactors/Interactor3D.cpp similarity index 100% rename from src/cpu/VirtualFluidsCore/Interactors/Interactor3D.cpp rename to src/cpu/core/Interactors/Interactor3D.cpp diff --git a/src/cpu/VirtualFluidsCore/Interactors/Interactor3D.h b/src/cpu/core/Interactors/Interactor3D.h similarity index 100% rename from src/cpu/VirtualFluidsCore/Interactors/Interactor3D.h rename to src/cpu/core/Interactors/Interactor3D.h diff --git a/src/cpu/VirtualFluidsCore/Interactors/InteractorsHelper.cpp b/src/cpu/core/Interactors/InteractorsHelper.cpp similarity index 100% rename from src/cpu/VirtualFluidsCore/Interactors/InteractorsHelper.cpp rename to src/cpu/core/Interactors/InteractorsHelper.cpp diff --git a/src/cpu/VirtualFluidsCore/Interactors/InteractorsHelper.h b/src/cpu/core/Interactors/InteractorsHelper.h similarity index 100% rename from src/cpu/VirtualFluidsCore/Interactors/InteractorsHelper.h rename to src/cpu/core/Interactors/InteractorsHelper.h diff --git a/src/cpu/core/LBM/BGKLBMKernel.cpp b/src/cpu/core/LBM/BGKLBMKernel.cpp new file mode 100644 index 0000000000000000000000000000000000000000..d5cae00398a4156db28feea98a616363cef0671d --- /dev/null +++ b/src/cpu/core/LBM/BGKLBMKernel.cpp @@ -0,0 +1,305 @@ +#include "BGKLBMKernel.h" +#include "BCArray3D.h" +#include "BCSet.h" +#include "D3Q27EsoTwist3DSoA.h" +#include "D3Q27EsoTwist3DSplittedVector.h" +#include "D3Q27System.h" +#include "DataSet3D.h" +#include "Block3D.h" +#include "basics/constants/NumericConstants.h" + +#define PROOF_CORRECTNESS + +////////////////////////////////////////////////////////////////////////// +BGKLBMKernel::BGKLBMKernel() { this->compressible = false; } +////////////////////////////////////////////////////////////////////////// +BGKLBMKernel::~BGKLBMKernel(void) = default; +////////////////////////////////////////////////////////////////////////// +void BGKLBMKernel::initDataSet() +{ + SPtr<DistributionArray3D> d(new D3Q27EsoTwist3DSplittedVector(nx[0] + 2, nx[1] + 2, nx[2] + 2, -999.9)); + dataSet->setFdistributions(d); +} +////////////////////////////////////////////////////////////////////////// +SPtr<LBMKernel> BGKLBMKernel::clone() +{ + SPtr<LBMKernel> kernel(new BGKLBMKernel()); + kernel->setNX(nx); + std::dynamic_pointer_cast<BGKLBMKernel>(kernel)->initDataSet(); + kernel->setCollisionFactor(this->collFactor); + kernel->setBCSet(bcSet->clone(kernel)); + kernel->setWithForcing(withForcing); + kernel->setForcingX1(muForcingX1); + kernel->setForcingX2(muForcingX2); + kernel->setForcingX3(muForcingX3); + kernel->setIndex(ix1, ix2, ix3); + kernel->setDeltaT(deltaT); + kernel->setBlock(block.lock()); + return kernel; +} +////////////////////////////////////////////////////////////////////////// +void BGKLBMKernel::calculate(int step) +{ + using namespace D3Q27System; + // using namespace UbMath; + using namespace vf::basics::constant; + using namespace vf::lbm::dir; + + // initializing of forcing stuff + if (withForcing) { + muForcingX1.DefineVar("x1", &muX1); + muForcingX1.DefineVar("x2", &muX2); + muForcingX1.DefineVar("x3", &muX3); + muForcingX2.DefineVar("x1", &muX1); + muForcingX2.DefineVar("x2", &muX2); + muForcingX2.DefineVar("x3", &muX3); + muForcingX3.DefineVar("x1", &muX1); + muForcingX3.DefineVar("x2", &muX2); + muForcingX3.DefineVar("x3", &muX3); + forcingX1 = 0; + forcingX2 = 0; + forcingX3 = 0; + } + ///////////////////////////////////// + + localDistributions = + std::dynamic_pointer_cast<D3Q27EsoTwist3DSplittedVector>(dataSet->getFdistributions())->getLocalDistributions(); + nonLocalDistributions = std::dynamic_pointer_cast<D3Q27EsoTwist3DSplittedVector>(dataSet->getFdistributions()) + ->getNonLocalDistributions(); + zeroDistributions = + std::dynamic_pointer_cast<D3Q27EsoTwist3DSplittedVector>(dataSet->getFdistributions())->getZeroDistributions(); + + SPtr<BCArray3D> bcArray = this->getBCSet()->getBCArray(); + real f[D3Q27System::ENDF + 1]; + real feq[D3Q27System::ENDF + 1]; + real drho, vx1, vx2, vx3; + const int bcArrayMaxX1 = (int)bcArray->getNX1(); + const int bcArrayMaxX2 = (int)bcArray->getNX2(); + const int bcArrayMaxX3 = (int)bcArray->getNX3(); + + int minX1 = ghostLayerWidth; + int minX2 = ghostLayerWidth; + int minX3 = ghostLayerWidth; + int maxX1 = bcArrayMaxX1 - ghostLayerWidth; + int maxX2 = bcArrayMaxX2 - ghostLayerWidth; + int maxX3 = bcArrayMaxX3 - ghostLayerWidth; + + for (int x3 = minX3; x3 < maxX3; x3++) { + for (int x2 = minX2; x2 < maxX2; x2++) { + for (int x1 = minX1; x1 < maxX1; x1++) { + if (!bcArray->isSolid(x1, x2, x3) && !bcArray->isUndefined(x1, x2, x3)) { + int x1p = x1 + 1; + int x2p = x2 + 1; + int x3p = x3 + 1; + ////////////////////////////////////////////////////////////////////////// + // read distribution + //////////////////////////////////////////////////////////////////////////// + f[d000] = (*this->zeroDistributions)(x1, x2, x3); + + f[dP00] = (*this->localDistributions)(D3Q27System::ET_E, x1, x2, x3); + f[d0P0] = (*this->localDistributions)(D3Q27System::ET_N, x1, x2, x3); + f[d00P] = (*this->localDistributions)(D3Q27System::ET_T, x1, x2, x3); + f[dPP0] = (*this->localDistributions)(D3Q27System::ET_NE, x1, x2, x3); + f[dMP0] = (*this->localDistributions)(D3Q27System::ET_NW, x1p, x2, x3); + f[dP0P] = (*this->localDistributions)(D3Q27System::ET_TE, x1, x2, x3); + f[dM0P] = (*this->localDistributions)(D3Q27System::ET_TW, x1p, x2, x3); + f[d0PP] = (*this->localDistributions)(D3Q27System::ET_TN, x1, x2, x3); + f[d0MP] = (*this->localDistributions)(D3Q27System::ET_TS, x1, x2p, x3); + f[dPPP] = (*this->localDistributions)(D3Q27System::ET_TNE, x1, x2, x3); + f[dMPP] = (*this->localDistributions)(D3Q27System::ET_TNW, x1p, x2, x3); + f[dPMP] = (*this->localDistributions)(D3Q27System::ET_TSE, x1, x2p, x3); + f[dMMP] = (*this->localDistributions)(D3Q27System::ET_TSW, x1p, x2p, x3); + + f[dM00] = (*this->nonLocalDistributions)(D3Q27System::ET_W, x1p, x2, x3); + f[d0M0] = (*this->nonLocalDistributions)(D3Q27System::ET_S, x1, x2p, x3); + f[d00M] = (*this->nonLocalDistributions)(D3Q27System::ET_B, x1, x2, x3p); + f[dMM0] = (*this->nonLocalDistributions)(D3Q27System::ET_SW, x1p, x2p, x3); + f[dPM0] = (*this->nonLocalDistributions)(D3Q27System::ET_SE, x1, x2p, x3); + f[dM0M] = (*this->nonLocalDistributions)(D3Q27System::ET_BW, x1p, x2, x3p); + f[dP0M] = (*this->nonLocalDistributions)(D3Q27System::ET_BE, x1, x2, x3p); + f[d0MM] = (*this->nonLocalDistributions)(D3Q27System::ET_BS, x1, x2p, x3p); + f[d0PM] = (*this->nonLocalDistributions)(D3Q27System::ET_BN, x1, x2, x3p); + f[dMMM] = (*this->nonLocalDistributions)(D3Q27System::ET_BSW, x1p, x2p, x3p); + f[dPMM] = (*this->nonLocalDistributions)(D3Q27System::ET_BSE, x1, x2p, x3p); + f[dMPM] = (*this->nonLocalDistributions)(D3Q27System::ET_BNW, x1p, x2, x3p); + f[dPPM] = (*this->nonLocalDistributions)(D3Q27System::ET_BNE, x1, x2, x3p); + ////////////////////////////////////////////////////////////////////////// + + drho = f[d000] + f[dP00] + f[dM00] + f[d0P0] + f[d0M0] + f[d00P] + f[d00M] + f[dPP0] + f[dMM0] + f[dPM0] + f[dMP0] + f[dP0P] + + f[dM0M] + f[dP0M] + f[dM0P] + f[d0PP] + f[d0MM] + f[d0PM] + f[d0MP] + f[dPPP] + f[dMMP] + f[dPMP] + f[dMPP] + + f[dPPM] + f[dMMM] + f[dPMM] + f[dMPM]; + + vx1 = f[dP00] - f[dM00] + f[dPP0] - f[dMM0] + f[dPM0] - f[dMP0] + f[dP0P] - f[dM0M] + f[dP0M] - f[dM0P] + f[dPPP] - + f[dMMP] + f[dPMP] - f[dMPP] + f[dPPM] - f[dMMM] + f[dPMM] - f[dMPM]; + + vx2 = f[d0P0] - f[d0M0] + f[dPP0] - f[dMM0] - f[dPM0] + f[dMP0] + f[d0PP] - f[d0MM] + f[d0PM] - f[d0MP] + f[dPPP] - + f[dMMP] - f[dPMP] + f[dMPP] + f[dPPM] - f[dMMM] - f[dPMM] + f[dMPM]; + + vx3 = f[d00P] - f[d00M] + f[dP0P] - f[dM0M] - f[dP0M] + f[dM0P] + f[d0PP] - f[d0MM] - f[d0PM] + f[d0MP] + f[dPPP] + + f[dMMP] + f[dPMP] + f[dMPP] - f[dPPM] - f[dMMM] - f[dPMM] - f[dMPM]; + + real cu_sq = c3o2 * (vx1 * vx1 + vx2 * vx2 + vx3 * vx3); + + feq[d000] = c8o27 * (drho - cu_sq); + feq[dP00] = c2o27 * (drho + c3o1 * (vx1) + c9o2 * (vx1) * (vx1)-cu_sq); + feq[dM00] = c2o27 * (drho + c3o1 * (-vx1) + c9o2 * (-vx1) * (-vx1) - cu_sq); + feq[d0P0] = c2o27 * (drho + c3o1 * (vx2) + c9o2 * (vx2) * (vx2)-cu_sq); + feq[d0M0] = c2o27 * (drho + c3o1 * (-vx2) + c9o2 * (-vx2) * (-vx2) - cu_sq); + feq[d00P] = c2o27 * (drho + c3o1 * (vx3) + c9o2 * (vx3) * (vx3)-cu_sq); + feq[d00M] = c2o27 * (drho + c3o1 * (-vx3) + c9o2 * (-vx3) * (-vx3) - cu_sq); + feq[dPP0] = c1o54 * (drho + c3o1 * (vx1 + vx2) + c9o2 * (vx1 + vx2) * (vx1 + vx2) - cu_sq); + feq[dMM0] = c1o54 * (drho + c3o1 * (-vx1 - vx2) + c9o2 * (-vx1 - vx2) * (-vx1 - vx2) - cu_sq); + feq[dPM0] = c1o54 * (drho + c3o1 * (vx1 - vx2) + c9o2 * (vx1 - vx2) * (vx1 - vx2) - cu_sq); + feq[dMP0] = c1o54 * (drho + c3o1 * (-vx1 + vx2) + c9o2 * (-vx1 + vx2) * (-vx1 + vx2) - cu_sq); + feq[dP0P] = c1o54 * (drho + c3o1 * (vx1 + vx3) + c9o2 * (vx1 + vx3) * (vx1 + vx3) - cu_sq); + feq[dM0M] = c1o54 * (drho + c3o1 * (-vx1 - vx3) + c9o2 * (-vx1 - vx3) * (-vx1 - vx3) - cu_sq); + feq[dP0M] = c1o54 * (drho + c3o1 * (vx1 - vx3) + c9o2 * (vx1 - vx3) * (vx1 - vx3) - cu_sq); + feq[dM0P] = c1o54 * (drho + c3o1 * (-vx1 + vx3) + c9o2 * (-vx1 + vx3) * (-vx1 + vx3) - cu_sq); + feq[d0PP] = c1o54 * (drho + c3o1 * (vx2 + vx3) + c9o2 * (vx2 + vx3) * (vx2 + vx3) - cu_sq); + feq[d0MM] = c1o54 * (drho + c3o1 * (-vx2 - vx3) + c9o2 * (-vx2 - vx3) * (-vx2 - vx3) - cu_sq); + feq[d0PM] = c1o54 * (drho + c3o1 * (vx2 - vx3) + c9o2 * (vx2 - vx3) * (vx2 - vx3) - cu_sq); + feq[d0MP] = c1o54 * (drho + c3o1 * (-vx2 + vx3) + c9o2 * (-vx2 + vx3) * (-vx2 + vx3) - cu_sq); + feq[dPPP] = c1o216 * + (drho + c3o1 * (vx1 + vx2 + vx3) + c9o2 * (vx1 + vx2 + vx3) * (vx1 + vx2 + vx3) - cu_sq); + feq[dMMM] = c1o216 * (drho + c3o1 * (-vx1 - vx2 - vx3) + + c9o2 * (-vx1 - vx2 - vx3) * (-vx1 - vx2 - vx3) - cu_sq); + feq[dPPM] = c1o216 * + (drho + c3o1 * (vx1 + vx2 - vx3) + c9o2 * (vx1 + vx2 - vx3) * (vx1 + vx2 - vx3) - cu_sq); + feq[dMMP] = c1o216 * (drho + c3o1 * (-vx1 - vx2 + vx3) + + c9o2 * (-vx1 - vx2 + vx3) * (-vx1 - vx2 + vx3) - cu_sq); + feq[dPMP] = c1o216 * + (drho + c3o1 * (vx1 - vx2 + vx3) + c9o2 * (vx1 - vx2 + vx3) * (vx1 - vx2 + vx3) - cu_sq); + feq[dMPM] = c1o216 * (drho + c3o1 * (-vx1 + vx2 - vx3) + + c9o2 * (-vx1 + vx2 - vx3) * (-vx1 + vx2 - vx3) - cu_sq); + feq[dPMM] = c1o216 * + (drho + c3o1 * (vx1 - vx2 - vx3) + c9o2 * (vx1 - vx2 - vx3) * (vx1 - vx2 - vx3) - cu_sq); + feq[dMPP] = c1o216 * (drho + c3o1 * (-vx1 + vx2 + vx3) + + c9o2 * (-vx1 + vx2 + vx3) * (-vx1 + vx2 + vx3) - cu_sq); + + // Relaxation + f[d000] += (feq[d000] - f[d000]) * collFactor; + f[dP00] += (feq[dP00] - f[dP00]) * collFactor; + f[dM00] += (feq[dM00] - f[dM00]) * collFactor; + f[d0P0] += (feq[d0P0] - f[d0P0]) * collFactor; + f[d0M0] += (feq[d0M0] - f[d0M0]) * collFactor; + f[d00P] += (feq[d00P] - f[d00P]) * collFactor; + f[d00M] += (feq[d00M] - f[d00M]) * collFactor; + f[dPP0] += (feq[dPP0] - f[dPP0]) * collFactor; + f[dMM0] += (feq[dMM0] - f[dMM0]) * collFactor; + f[dPM0] += (feq[dPM0] - f[dPM0]) * collFactor; + f[dMP0] += (feq[dMP0] - f[dMP0]) * collFactor; + f[dP0P] += (feq[dP0P] - f[dP0P]) * collFactor; + f[dM0M] += (feq[dM0M] - f[dM0M]) * collFactor; + f[dP0M] += (feq[dP0M] - f[dP0M]) * collFactor; + f[dM0P] += (feq[dM0P] - f[dM0P]) * collFactor; + f[d0PP] += (feq[d0PP] - f[d0PP]) * collFactor; + f[d0MM] += (feq[d0MM] - f[d0MM]) * collFactor; + f[d0PM] += (feq[d0PM] - f[d0PM]) * collFactor; + f[d0MP] += (feq[d0MP] - f[d0MP]) * collFactor; + + f[dPPP] += (feq[dPPP] - f[dPPP]) * collFactor; + f[dMMM] += (feq[dMMM] - f[dMMM]) * collFactor; + f[dPPM] += (feq[dPPM] - f[dPPM]) * collFactor; + f[dMMP] += (feq[dMMP] - f[dMMP]) * collFactor; + f[dPMP] += (feq[dPMP] - f[dPMP]) * collFactor; + f[dMPM] += (feq[dMPM] - f[dMPM]) * collFactor; + f[dPMM] += (feq[dPMM] - f[dPMM]) * collFactor; + f[dMPP] += (feq[dMPP] - f[dMPP]) * collFactor; + + ////////////////////////////////////////////////////////////////////////// + // forcing + if (withForcing) { + muX1 = x1 + ix1 * bcArrayMaxX1; + muX2 = x2 + ix2 * bcArrayMaxX2; + muX3 = x3 + ix3 * bcArrayMaxX3; + + forcingX1 = muForcingX1.Eval(); + forcingX2 = muForcingX2.Eval(); + forcingX3 = muForcingX3.Eval(); + + f[d000] += c0o1; + f[dP00] += c3o1 * c2o27 * (forcingX1); + f[dM00] += c3o1 * c2o27 * (-forcingX1); + f[d0P0] += c3o1 * c2o27 * (forcingX2); + f[d0M0] += c3o1 * c2o27 * (-forcingX2); + f[d00P] += c3o1 * c2o27 * (forcingX3); + f[d00M] += c3o1 * c2o27 * (-forcingX3); + f[dPP0] += c3o1 * c1o54 * (forcingX1 + forcingX2); + f[dMM0] += c3o1 * c1o54 * (-forcingX1 - forcingX2); + f[dPM0] += c3o1 * c1o54 * (forcingX1 - forcingX2); + f[dMP0] += c3o1 * c1o54 * (-forcingX1 + forcingX2); + f[dP0P] += c3o1 * c1o54 * (forcingX1 + forcingX3); + f[dM0M] += c3o1 * c1o54 * (-forcingX1 - forcingX3); + f[dP0M] += c3o1 * c1o54 * (forcingX1 - forcingX3); + f[dM0P] += c3o1 * c1o54 * (-forcingX1 + forcingX3); + f[d0PP] += c3o1 * c1o54 * (forcingX2 + forcingX3); + f[d0MM] += c3o1 * c1o54 * (-forcingX2 - forcingX3); + f[d0PM] += c3o1 * c1o54 * (forcingX2 - forcingX3); + f[d0MP] += c3o1 * c1o54 * (-forcingX2 + forcingX3); + f[dPPP] += c3o1 * c1o216 * (forcingX1 + forcingX2 + forcingX3); + f[dMMM] += c3o1 * c1o216 * (-forcingX1 - forcingX2 - forcingX3); + f[dPPM] += c3o1 * c1o216 * (forcingX1 + forcingX2 - forcingX3); + f[dMMP] += c3o1 * c1o216 * (-forcingX1 - forcingX2 + forcingX3); + f[dPMP] += c3o1 * c1o216 * (forcingX1 - forcingX2 + forcingX3); + f[dMPM] += c3o1 * c1o216 * (-forcingX1 + forcingX2 - forcingX3); + f[dPMM] += c3o1 * c1o216 * (forcingX1 - forcingX2 - forcingX3); + f[dMPP] += c3o1 * c1o216 * (-forcingX1 + forcingX2 + forcingX3); + } + ////////////////////////////////////////////////////////////////////////// +#ifdef PROOF_CORRECTNESS + real rho_post = f[d000] + f[dP00] + f[dM00] + f[d0P0] + f[d0M0] + f[d00P] + f[d00M] + f[dPP0] + f[dMM0] + f[dPM0] + + f[dMP0] + f[dP0P] + f[dM0M] + f[dP0M] + f[dM0P] + f[d0PP] + f[d0MM] + f[d0PM] + f[d0MP] + f[dPPP] + + f[dMMP] + f[dPMP] + f[dMPP] + f[dPPM] + f[dMMM] + f[dPMM] + f[dMPM]; + real dif = drho - rho_post; +#ifdef SINGLEPRECISION + if (dif > 10.0E-7 || dif < -10.0E-7) +#else + if (dif > 10.0E-15 || dif < -10.0E-15) +#endif + { + UB_THROW(UbException(UB_EXARGS, "rho="+UbSystem::toString(drho)+", rho_post="+UbSystem::toString(rho_post) + +" dif="+UbSystem::toString(dif) + +" rho is not correct for node "+UbSystem::toString(x1)+","+UbSystem::toString(x2)+","+UbSystem::toString(x3) + +" in " + block.lock()->toString()+" step = "+UbSystem::toString(step))); + } +#endif + ////////////////////////////////////////////////////////////////////////// + // write distribution + ////////////////////////////////////////////////////////////////////////// + (*this->localDistributions)(D3Q27System::ET_E, x1, x2, x3) = f[iP00]; + (*this->localDistributions)(D3Q27System::ET_N, x1, x2, x3) = f[i0P0]; + (*this->localDistributions)(D3Q27System::ET_T, x1, x2, x3) = f[i00P]; + (*this->localDistributions)(D3Q27System::ET_NE, x1, x2, x3) = f[iPP0]; + (*this->localDistributions)(D3Q27System::ET_NW, x1p, x2, x3) = f[iMP0]; + (*this->localDistributions)(D3Q27System::ET_TE, x1, x2, x3) = f[iP0P]; + (*this->localDistributions)(D3Q27System::ET_TW, x1p, x2, x3) = f[iM0P]; + (*this->localDistributions)(D3Q27System::ET_TN, x1, x2, x3) = f[i0PP]; + (*this->localDistributions)(D3Q27System::ET_TS, x1, x2p, x3) = f[i0MP]; + (*this->localDistributions)(D3Q27System::ET_TNE, x1, x2, x3) = f[iPPP]; + (*this->localDistributions)(D3Q27System::ET_TNW, x1p, x2, x3) = f[iMPP]; + (*this->localDistributions)(D3Q27System::ET_TSE, x1, x2p, x3) = f[iPMP]; + (*this->localDistributions)(D3Q27System::ET_TSW, x1p, x2p, x3) = f[iMMP]; + + (*this->nonLocalDistributions)(D3Q27System::ET_W, x1p, x2, x3) = f[iM00]; + (*this->nonLocalDistributions)(D3Q27System::ET_S, x1, x2p, x3) = f[i0M0]; + (*this->nonLocalDistributions)(D3Q27System::ET_B, x1, x2, x3p) = f[i00M]; + (*this->nonLocalDistributions)(D3Q27System::ET_SW, x1p, x2p, x3) = f[iMM0]; + (*this->nonLocalDistributions)(D3Q27System::ET_SE, x1, x2p, x3) = f[iPM0]; + (*this->nonLocalDistributions)(D3Q27System::ET_BW, x1p, x2, x3p) = f[iM0M]; + (*this->nonLocalDistributions)(D3Q27System::ET_BE, x1, x2, x3p) = f[iP0M]; + (*this->nonLocalDistributions)(D3Q27System::ET_BS, x1, x2p, x3p) = f[i0MM]; + (*this->nonLocalDistributions)(D3Q27System::ET_BN, x1, x2, x3p) = f[i0PM]; + (*this->nonLocalDistributions)(D3Q27System::ET_BSW, x1p, x2p, x3p) = f[iMMM]; + (*this->nonLocalDistributions)(D3Q27System::ET_BSE, x1, x2p, x3p) = f[iPMM]; + (*this->nonLocalDistributions)(D3Q27System::ET_BNW, x1p, x2, x3p) = f[iMPM]; + (*this->nonLocalDistributions)(D3Q27System::ET_BNE, x1, x2, x3p) = f[iPPM]; + + (*this->zeroDistributions)(x1, x2, x3) = f[d000]; + ////////////////////////////////////////////////////////////////////////// + } + } + } + } +} +////////////////////////////////////////////////////////////////////////// +real BGKLBMKernel::getCalculationTime() { return vf::basics::constant::c0o1; } diff --git a/src/cpu/VirtualFluidsCore/LBM/BGKLBMKernel.h b/src/cpu/core/LBM/BGKLBMKernel.h similarity index 100% rename from src/cpu/VirtualFluidsCore/LBM/BGKLBMKernel.h rename to src/cpu/core/LBM/BGKLBMKernel.h diff --git a/src/cpu/VirtualFluidsCore/LBM/BasicLBMKernel.cpp b/src/cpu/core/LBM/BasicLBMKernel.cpp similarity index 100% rename from src/cpu/VirtualFluidsCore/LBM/BasicLBMKernel.cpp rename to src/cpu/core/LBM/BasicLBMKernel.cpp diff --git a/src/cpu/VirtualFluidsCore/LBM/BasicLBMKernel.h b/src/cpu/core/LBM/BasicLBMKernel.h similarity index 100% rename from src/cpu/VirtualFluidsCore/LBM/BasicLBMKernel.h rename to src/cpu/core/LBM/BasicLBMKernel.h diff --git a/src/cpu/VirtualFluidsCore/LBM/CompressibleCumulant4thOrderViscosityLBMKernel.cpp b/src/cpu/core/LBM/CompressibleCumulant4thOrderViscosityLBMKernel.cpp similarity index 99% rename from src/cpu/VirtualFluidsCore/LBM/CompressibleCumulant4thOrderViscosityLBMKernel.cpp rename to src/cpu/core/LBM/CompressibleCumulant4thOrderViscosityLBMKernel.cpp index c6349de8f1d281d31d0be4e684c54da457d3029f..e4d0017015b71a465c317b1bd8ce105e24c938bb 100644 --- a/src/cpu/VirtualFluidsCore/LBM/CompressibleCumulant4thOrderViscosityLBMKernel.cpp +++ b/src/cpu/core/LBM/CompressibleCumulant4thOrderViscosityLBMKernel.cpp @@ -118,7 +118,7 @@ void CompressibleCumulant4thOrderViscosityLBMKernel::calculate(int step) //LBMReal B = (four + twentyeight*omega - fourteen*omega*omega) / (six - twentyone*omega + fiveteen*omega*omega); real A = (c4o1*omega*omega+c2o1*omega*OxxPyyPzz*(omega-c6o1)+OxxPyyPzz*OxxPyyPzz*(omega*(c10o1-c3o1*omega)-c4o1))/((omega-OxxPyyPzz)*(OxxPyyPzz*(c2o1+c3o1*omega)-c8o1*omega)); - //FIXME: warning C4459: declaration of 'B' hides global declaration (message : see declaration of 'D3Q27System::DIR_00M' ) + //FIXME: warning C4459: declaration of 'B' hides global declaration (message : see declaration of 'D3Q27System::d00M' ) real B = (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)); for (int x3 = minX3; x3 < maxX3; x3++) diff --git a/src/cpu/VirtualFluidsCore/LBM/CompressibleCumulant4thOrderViscosityLBMKernel.h b/src/cpu/core/LBM/CompressibleCumulant4thOrderViscosityLBMKernel.h similarity index 100% rename from src/cpu/VirtualFluidsCore/LBM/CompressibleCumulant4thOrderViscosityLBMKernel.h rename to src/cpu/core/LBM/CompressibleCumulant4thOrderViscosityLBMKernel.h diff --git a/src/cpu/VirtualFluidsCore/LBM/CompressibleCumulantLBMKernel.cpp b/src/cpu/core/LBM/CompressibleCumulantLBMKernel.cpp similarity index 100% rename from src/cpu/VirtualFluidsCore/LBM/CompressibleCumulantLBMKernel.cpp rename to src/cpu/core/LBM/CompressibleCumulantLBMKernel.cpp diff --git a/src/cpu/VirtualFluidsCore/LBM/CompressibleCumulantLBMKernel.h b/src/cpu/core/LBM/CompressibleCumulantLBMKernel.h similarity index 100% rename from src/cpu/VirtualFluidsCore/LBM/CompressibleCumulantLBMKernel.h rename to src/cpu/core/LBM/CompressibleCumulantLBMKernel.h diff --git a/src/cpu/VirtualFluidsCore/LBM/CumulantK17LBMKernel.cpp b/src/cpu/core/LBM/CumulantK17LBMKernel.cpp similarity index 100% rename from src/cpu/VirtualFluidsCore/LBM/CumulantK17LBMKernel.cpp rename to src/cpu/core/LBM/CumulantK17LBMKernel.cpp diff --git a/src/cpu/VirtualFluidsCore/LBM/CumulantK17LBMKernel.h b/src/cpu/core/LBM/CumulantK17LBMKernel.h similarity index 100% rename from src/cpu/VirtualFluidsCore/LBM/CumulantK17LBMKernel.h rename to src/cpu/core/LBM/CumulantK17LBMKernel.h diff --git a/src/cpu/VirtualFluidsCore/LBM/CumulantLBMKernel.cpp b/src/cpu/core/LBM/CumulantLBMKernel.cpp similarity index 100% rename from src/cpu/VirtualFluidsCore/LBM/CumulantLBMKernel.cpp rename to src/cpu/core/LBM/CumulantLBMKernel.cpp diff --git a/src/cpu/VirtualFluidsCore/LBM/CumulantLBMKernel.h b/src/cpu/core/LBM/CumulantLBMKernel.h similarity index 100% rename from src/cpu/VirtualFluidsCore/LBM/CumulantLBMKernel.h rename to src/cpu/core/LBM/CumulantLBMKernel.h diff --git a/src/cpu/VirtualFluidsCore/LBM/D3Q27System.cpp b/src/cpu/core/LBM/D3Q27System.cpp similarity index 89% rename from src/cpu/VirtualFluidsCore/LBM/D3Q27System.cpp rename to src/cpu/core/LBM/D3Q27System.cpp index a35465e8cfde1f84a5446e4bbfcb02fc5478b8f1..174c7d8e30b5604da6a5dc71acbcd7b51bf0197a 100644 --- a/src/cpu/VirtualFluidsCore/LBM/D3Q27System.cpp +++ b/src/cpu/core/LBM/D3Q27System.cpp @@ -25,9 +25,9 @@ const real WEIGTH[] = { c8o27, c1o54, c1o54, c1o54, c1o54, c1o54, c1o54, c1o54, c1o54, c1o54, c1o54, c1o54, c1o54, c1o216, c1o216, c1o216, c1o216, c1o216, c1o216, c1o216, c1o216 }; -const int INVDIR[] = { DIR_000, INV_P00, INV_M00, INV_0P0, INV_0M0, INV_00P, INV_00M, - INV_PP0, INV_MM0, INV_PM0, INV_MP0, INV_P0P, INV_M0M, INV_P0M, INV_M0P, INV_0PP, INV_0MM, INV_0PM, INV_0MP, - INV_PPP, INV_MPP, INV_PMP, INV_MMP, INV_PPM, INV_MPM, INV_PMM, INV_MMM }; +const int INVDIR[] = { d000, iP00, iM00, i0P0, i0M0, i00P, i00M, + iPP0, iMM0, iPM0, iMP0, iP0P, iM0M, iP0M, iM0P, i0PP, i0MM, i0PM, i0MP, + iPPP, iMPP, iPMP, iMMP, iPPM, iMPM, iPMM, iMMM }; // index 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 // direction: E, W, N, S, T, B, NE, SW, SE, NW, TE, BW, BE, TW, TN, BS, BN, TS, TNE TNW TSE TSW BNE BNW BSE diff --git a/src/cpu/VirtualFluidsCore/LBM/D3Q27System.h b/src/cpu/core/LBM/D3Q27System.h similarity index 72% rename from src/cpu/VirtualFluidsCore/LBM/D3Q27System.h rename to src/cpu/core/LBM/D3Q27System.h index c63e9f554367808d95c87fd630922333cf17790b..0f284a2cbe30e8c181c6de8ea7ed589c3c35bf75 100644 --- a/src/cpu/VirtualFluidsCore/LBM/D3Q27System.h +++ b/src/cpu/core/LBM/D3Q27System.h @@ -131,60 +131,60 @@ extern const int EX3[ENDDIR + 1]; //static constexpr int BSE = 25; //static constexpr int BSW = 26; -//static constexpr int DIR_000 = 0; -//static constexpr int DIR_P00 = 1; -//static constexpr int DIR_M00 = 2; -//static constexpr int DIR_0P0 = 3; -//static constexpr int DIR_0M0 = 4; -//static constexpr int DIR_00P = 5; -//static constexpr int DIR_00M = 6; -//static constexpr int DIR_PP0 = 7; -//static constexpr int DIR_MM0 = 8; -//static constexpr int DIR_PM0 = 9; -//static constexpr int DIR_MP0 = 10; -//static constexpr int DIR_P0P = 11; -//static constexpr int DIR_M0M = 12; -//static constexpr int DIR_P0M = 13; -//static constexpr int DIR_M0P = 14; -//static constexpr int DIR_0PP = 15; -//static constexpr int DIR_0MM = 16; -//static constexpr int DIR_0PM = 17; -//static constexpr int DIR_0MP = 18; -//static constexpr int DIR_PPP = 19; -//static constexpr int DIR_MPP = 20; -//static constexpr int DIR_PMP = 21; -//static constexpr int DIR_MMP = 22; -//static constexpr int DIR_PPM = 23; -//static constexpr int DIR_MPM = 24; -//static constexpr int DIR_PMM = 25; -//static constexpr int DIR_MMM = 26; - -//static constexpr int INV_P00 = DIR_M00; -//static constexpr int INV_M00 = DIR_P00; -//static constexpr int INV_0P0 = DIR_0M0; -//static constexpr int INV_0M0 = DIR_0P0; -//static constexpr int INV_00P = DIR_00M; -//static constexpr int INV_00M = DIR_00P; -//static constexpr int INV_PP0 = DIR_MM0; -//static constexpr int INV_MM0 = DIR_PP0; -//static constexpr int INV_PM0 = DIR_MP0; -//static constexpr int INV_MP0 = DIR_PM0; -//static constexpr int INV_P0P = DIR_M0M; -//static constexpr int INV_M0M = DIR_P0P; -//static constexpr int INV_P0M = DIR_M0P; -//static constexpr int INV_M0P = DIR_P0M; -//static constexpr int INV_0PP = DIR_0MM; -//static constexpr int INV_0MM = DIR_0PP; -//static constexpr int INV_0PM = DIR_0MP; -//static constexpr int INV_0MP = DIR_0PM; -//static constexpr int INV_PPP = DIR_MMM; -//static constexpr int INV_MPP = DIR_PMM; -//static constexpr int INV_PMP = DIR_MPM; -//static constexpr int INV_MMP = DIR_PPM; -//static constexpr int INV_PPM = DIR_MMP; -//static constexpr int INV_MPM = DIR_PMP; -//static constexpr int INV_PMM = DIR_MPP; -//static constexpr int INV_MMM = DIR_PPP; +//static constexpr int d000 = 0; +//static constexpr int dP00 = 1; +//static constexpr int dM00 = 2; +//static constexpr int d0P0 = 3; +//static constexpr int d0M0 = 4; +//static constexpr int d00P = 5; +//static constexpr int d00M = 6; +//static constexpr int dPP0 = 7; +//static constexpr int dMM0 = 8; +//static constexpr int dPM0 = 9; +//static constexpr int dMP0 = 10; +//static constexpr int dP0P = 11; +//static constexpr int dM0M = 12; +//static constexpr int dP0M = 13; +//static constexpr int dM0P = 14; +//static constexpr int d0PP = 15; +//static constexpr int d0MM = 16; +//static constexpr int d0PM = 17; +//static constexpr int d0MP = 18; +//static constexpr int dPPP = 19; +//static constexpr int dMPP = 20; +//static constexpr int dPMP = 21; +//static constexpr int dMMP = 22; +//static constexpr int dPPM = 23; +//static constexpr int dMPM = 24; +//static constexpr int dPMM = 25; +//static constexpr int dMMM = 26; + +//static constexpr int iP00 = dM00; +//static constexpr int iM00 = dP00; +//static constexpr int i0P0 = d0M0; +//static constexpr int i0M0 = d0P0; +//static constexpr int i00P = d00M; +//static constexpr int i00M = d00P; +//static constexpr int iPP0 = dMM0; +//static constexpr int iMM0 = dPP0; +//static constexpr int iPM0 = dMP0; +//static constexpr int iMP0 = dPM0; +//static constexpr int iP0P = dM0M; +//static constexpr int iM0M = dP0P; +//static constexpr int iP0M = dM0P; +//static constexpr int iM0P = dP0M; +//static constexpr int i0PP = d0MM; +//static constexpr int i0MM = d0PP; +//static constexpr int i0PM = d0MP; +//static constexpr int i0MP = d0PM; +//static constexpr int iPPP = dMMM; +//static constexpr int iMPP = dPMM; +//static constexpr int iPMP = dMPM; +//static constexpr int iMMP = dPPM; +//static constexpr int iPPM = dMMP; +//static constexpr int iMPM = dPMP; +//static constexpr int iPMM = dMPP; +//static constexpr int iMMM = dPPP; extern const int INVDIR[ENDDIR + 1]; @@ -248,57 +248,57 @@ inline std::string getDirectionString(int direction) using namespace vf::lbm::dir; switch (direction) { - case DIR_P00: + case dP00: return "E"; - case DIR_M00: + case dM00: return "W"; - case DIR_0P0: + case d0P0: return "N"; - case DIR_0M0: + case d0M0: return "S"; - case DIR_00P: + case d00P: return "T"; - case DIR_00M: + case d00M: return "B"; - case DIR_PP0: + case dPP0: return "NE"; - case DIR_MP0: + case dMP0: return "NW"; - case DIR_PM0: + case dPM0: return "SE"; - case DIR_MM0: + case dMM0: return "SW"; - case DIR_P0P: + case dP0P: return "TE"; - case DIR_M0P: + case dM0P: return "TW"; - case DIR_P0M: + case dP0M: return "BE"; - case DIR_M0M: + case dM0M: return "BW"; - case DIR_0PP: + case d0PP: return "TN"; - case DIR_0MP: + case d0MP: return "TS"; - case DIR_0PM: + case d0PM: return "BN"; - case DIR_0MM: + case d0MM: return "BS"; - case DIR_PPP: + case dPPP: return "TNE"; - case DIR_MPP: + case dMPP: return "TNW"; - case DIR_PMP: + case dPMP: return "TSE"; - case DIR_MMP: + case dMMP: return "TSW"; - case DIR_PPM: + case dPPM: return "BNE"; - case DIR_MPM: + case dMPM: return "BNW"; - case DIR_PMM: + case dPMM: return "BSE"; - case DIR_MMM: + case dMMM: return "BSW"; default: return "Cell3DSystem::getDrectionString(...) - unknown dir"; @@ -310,108 +310,108 @@ static inline void setNeighborCoordinatesForDirection(int &x1, int &x2, int &x3, using namespace vf::lbm::dir; switch (direction) { - case DIR_P00: + case dP00: x1++; break; - case DIR_0P0: + case d0P0: x2++; break; - case DIR_00P: + case d00P: x3++; break; - case DIR_M00: + case dM00: x1--; break; - case DIR_0M0: + case d0M0: x2--; break; - case DIR_00M: + case d00M: x3--; break; - case DIR_PP0: + case dPP0: x1++; x2++; break; - case DIR_MP0: + case dMP0: x1--; x2++; break; - case DIR_MM0: + case dMM0: x1--; x2--; break; - case DIR_PM0: + case dPM0: x1++; x2--; break; - case DIR_P0P: + case dP0P: x1++; x3++; break; - case DIR_M0M: + case dM0M: x1--; x3--; break; - case DIR_P0M: + case dP0M: x1++; x3--; break; - case DIR_M0P: + case dM0P: x1--; x3++; break; - case DIR_0PP: + case d0PP: x2++; x3++; break; - case DIR_0MM: + case d0MM: x2--; x3--; break; - case DIR_0PM: + case d0PM: x2++; x3--; break; - case DIR_0MP: + case d0MP: x2--; x3++; break; - case DIR_PPP: + case dPPP: x1++; x2++; x3++; break; - case DIR_MPP: + case dMPP: x1--; x2++; x3++; break; - case DIR_PMP: + case dPMP: x1++; x2--; x3++; break; - case DIR_MMP: + case dMMP: x1--; x2--; x3++; break; - case DIR_PPM: + case dPPM: x1++; x2++; x3--; break; - case DIR_MPM: + case dMPM: x1--; x2++; x3--; break; - case DIR_PMM: + case dPMM: x1++; x2--; x3--; break; - case DIR_MMM: + case dMMM: x1--; x2--; x3--; @@ -440,42 +440,42 @@ static void calcDensity(const real *const &f /*[27]*/, real &rho) { using namespace vf::lbm::dir; - rho = ((f[DIR_PPP] + f[DIR_MMM]) + (f[DIR_PMP] + f[DIR_MPM])) + ((f[DIR_PMM] + f[DIR_MPP]) + (f[DIR_MMP] + f[DIR_PPM])) + - (((f[DIR_PP0] + f[DIR_MM0]) + (f[DIR_PM0] + f[DIR_MP0])) + ((f[DIR_P0P] + f[DIR_M0M]) + (f[DIR_P0M] + f[DIR_M0P])) + - ((f[DIR_0PM] + f[DIR_0MP]) + (f[DIR_0PP] + f[DIR_0MM]))) + - ((f[DIR_P00] + f[DIR_M00]) + (f[DIR_0P0] + f[DIR_0M0]) + (f[DIR_00P] + f[DIR_00M])) + f[DIR_000]; + rho = ((f[dPPP] + f[dMMM]) + (f[dPMP] + f[dMPM])) + ((f[dPMM] + f[dMPP]) + (f[dMMP] + f[dPPM])) + + (((f[dPP0] + f[dMM0]) + (f[dPM0] + f[dMP0])) + ((f[dP0P] + f[dM0M]) + (f[dP0M] + f[dM0P])) + + ((f[d0PM] + f[d0MP]) + (f[d0PP] + f[d0MM]))) + + ((f[dP00] + f[dM00]) + (f[d0P0] + f[d0M0]) + (f[d00P] + f[d00M])) + f[d000]; } /*=====================================================================*/ static void calcIncompVelocityX1(const real *const &f /*[27]*/, real &vx1) { using namespace vf::lbm::dir; - vx1 = ((((f[DIR_PPP] - f[DIR_MMM]) + (f[DIR_PMP] - f[DIR_MPM])) + ((f[DIR_PMM] - f[DIR_MPP]) + (f[DIR_PPM] - f[DIR_MMP]))) + - (((f[DIR_P0M] - f[DIR_M0P]) + (f[DIR_P0P] - f[DIR_M0M])) + ((f[DIR_PM0] - f[DIR_MP0]) + (f[DIR_PP0] - f[DIR_MM0]))) + (f[DIR_P00] - f[DIR_M00])); + vx1 = ((((f[dPPP] - f[dMMM]) + (f[dPMP] - f[dMPM])) + ((f[dPMM] - f[dMPP]) + (f[dPPM] - f[dMMP]))) + + (((f[dP0M] - f[dM0P]) + (f[dP0P] - f[dM0M])) + ((f[dPM0] - f[dMP0]) + (f[dPP0] - f[dMM0]))) + (f[dP00] - f[dM00])); } /*=====================================================================*/ static void calcIncompVelocityX2(const real *const &f /*[27]*/, real &vx2) { using namespace vf::lbm::dir; - vx2 = ((((f[DIR_PPP] - f[DIR_MMM]) + (f[DIR_MPM] - f[DIR_PMP])) + ((f[DIR_MPP] - f[DIR_PMM]) + (f[DIR_PPM] - f[DIR_MMP]))) + - (((f[DIR_0PM] - f[DIR_0MP]) + (f[DIR_0PP] - f[DIR_0MM])) + ((f[DIR_MP0] - f[DIR_PM0]) + (f[DIR_PP0] - f[DIR_MM0]))) + (f[DIR_0P0] - f[DIR_0M0])); + vx2 = ((((f[dPPP] - f[dMMM]) + (f[dMPM] - f[dPMP])) + ((f[dMPP] - f[dPMM]) + (f[dPPM] - f[dMMP]))) + + (((f[d0PM] - f[d0MP]) + (f[d0PP] - f[d0MM])) + ((f[dMP0] - f[dPM0]) + (f[dPP0] - f[dMM0]))) + (f[d0P0] - f[d0M0])); } /*=====================================================================*/ static void calcIncompVelocityX3(const real *const &f /*[27]*/, real &vx3) { using namespace vf::lbm::dir; - vx3 = ((((f[DIR_PPP] - f[DIR_MMM]) + (f[DIR_PMP] - f[DIR_MPM])) + ((f[DIR_MPP] - f[DIR_PMM]) + (f[DIR_MMP] - f[DIR_PPM]))) + - (((f[DIR_0MP] - f[DIR_0PM]) + (f[DIR_0PP] - f[DIR_0MM])) + ((f[DIR_M0P] - f[DIR_P0M]) + (f[DIR_P0P] - f[DIR_M0M]))) + (f[DIR_00P] - f[DIR_00M])); + vx3 = ((((f[dPPP] - f[dMMM]) + (f[dPMP] - f[dMPM])) + ((f[dMPP] - f[dPMM]) + (f[dMMP] - f[dPPM]))) + + (((f[d0MP] - f[d0PM]) + (f[d0PP] - f[d0MM])) + ((f[dM0P] - f[dP0M]) + (f[dP0P] - f[dM0M]))) + (f[d00P] - f[d00M])); } /*=====================================================================*/ static real getCompVelocityX1(const real *const &f /*[27]*/) { using namespace vf::lbm::dir; - return ((((f[DIR_PPP] - f[DIR_MMM]) + (f[DIR_PMP] - f[DIR_MPM])) + ((f[DIR_PMM] - f[DIR_MPP]) + (f[DIR_PPM] - f[DIR_MMP]))) + - (((f[DIR_P0M] - f[DIR_M0P]) + (f[DIR_P0P] - f[DIR_M0M])) + ((f[DIR_PM0] - f[DIR_MP0]) + (f[DIR_PP0] - f[DIR_MM0]))) + (f[DIR_P00] - f[DIR_M00])) / + return ((((f[dPPP] - f[dMMM]) + (f[dPMP] - f[dMPM])) + ((f[dPMM] - f[dMPP]) + (f[dPPM] - f[dMMP]))) + + (((f[dP0M] - f[dM0P]) + (f[dP0P] - f[dM0M])) + ((f[dPM0] - f[dMP0]) + (f[dPP0] - f[dMM0]))) + (f[dP00] - f[dM00])) / getDensity(f); } /*=====================================================================*/ @@ -483,8 +483,8 @@ static real getCompVelocityX2(const real *const &f /*[27]*/) { using namespace vf::lbm::dir; - return ((((f[DIR_PPP] - f[DIR_MMM]) + (f[DIR_MPM] - f[DIR_PMP])) + ((f[DIR_MPP] - f[DIR_PMM]) + (f[DIR_PPM] - f[DIR_MMP]))) + - (((f[DIR_0PM] - f[DIR_0MP]) + (f[DIR_0PP] - f[DIR_0MM])) + ((f[DIR_MP0] - f[DIR_PM0]) + (f[DIR_PP0] - f[DIR_MM0]))) + (f[DIR_0P0] - f[DIR_0M0])) / + return ((((f[dPPP] - f[dMMM]) + (f[dMPM] - f[dPMP])) + ((f[dMPP] - f[dPMM]) + (f[dPPM] - f[dMMP]))) + + (((f[d0PM] - f[d0MP]) + (f[d0PP] - f[d0MM])) + ((f[dMP0] - f[dPM0]) + (f[dPP0] - f[dMM0]))) + (f[d0P0] - f[d0M0])) / getDensity(f); } /*=====================================================================*/ @@ -492,8 +492,8 @@ static real getCompVelocityX3(const real *const &f /*[27]*/) { using namespace vf::lbm::dir; - return ((((f[DIR_PPP] - f[DIR_MMM]) + (f[DIR_PMP] - f[DIR_MPM])) + ((f[DIR_MPP] - f[DIR_PMM]) + (f[DIR_MMP] - f[DIR_PPM]))) + - (((f[DIR_0MP] - f[DIR_0PM]) + (f[DIR_0PP] - f[DIR_0MM])) + ((f[DIR_M0P] - f[DIR_P0M]) + (f[DIR_P0P] - f[DIR_M0M]))) + (f[DIR_00P] - f[DIR_00M])) / + return ((((f[dPPP] - f[dMMM]) + (f[dPMP] - f[dMPM])) + ((f[dMPP] - f[dPMM]) + (f[dMMP] - f[dPPM]))) + + (((f[d0MP] - f[d0PM]) + (f[d0PP] - f[d0MM])) + ((f[dM0P] - f[dP0M]) + (f[dP0P] - f[dM0M]))) + (f[d00P] - f[d00M])) / getDensity(f); } /*=====================================================================*/ @@ -501,8 +501,8 @@ static void calcCompVelocityX1(const real *const &f /*[27]*/, real &vx1) { using namespace vf::lbm::dir; - vx1 = ((((f[DIR_PPP] - f[DIR_MMM]) + (f[DIR_PMP] - f[DIR_MPM])) + ((f[DIR_PMM] - f[DIR_MPP]) + (f[DIR_PPM] - f[DIR_MMP]))) + - (((f[DIR_P0M] - f[DIR_M0P]) + (f[DIR_P0P] - f[DIR_M0M])) + ((f[DIR_PM0] - f[DIR_MP0]) + (f[DIR_PP0] - f[DIR_MM0]))) + (f[DIR_P00] - f[DIR_M00])) / + vx1 = ((((f[dPPP] - f[dMMM]) + (f[dPMP] - f[dMPM])) + ((f[dPMM] - f[dMPP]) + (f[dPPM] - f[dMMP]))) + + (((f[dP0M] - f[dM0P]) + (f[dP0P] - f[dM0M])) + ((f[dPM0] - f[dMP0]) + (f[dPP0] - f[dMM0]))) + (f[dP00] - f[dM00])) / getDensity(f); } /*=====================================================================*/ @@ -510,8 +510,8 @@ static void calcCompVelocityX2(const real *const &f /*[27]*/, real &vx2) { using namespace vf::lbm::dir; - vx2 = ((((f[DIR_PPP] - f[DIR_MMM]) + (f[DIR_MPM] - f[DIR_PMP])) + ((f[DIR_MPP] - f[DIR_PMM]) + (f[DIR_PPM] - f[DIR_MMP]))) + - (((f[DIR_0PM] - f[DIR_0MP]) + (f[DIR_0PP] - f[DIR_0MM])) + ((f[DIR_MP0] - f[DIR_PM0]) + (f[DIR_PP0] - f[DIR_MM0]))) + (f[DIR_0P0] - f[DIR_0M0])) / + vx2 = ((((f[dPPP] - f[dMMM]) + (f[dMPM] - f[dPMP])) + ((f[dMPP] - f[dPMM]) + (f[dPPM] - f[dMMP]))) + + (((f[d0PM] - f[d0MP]) + (f[d0PP] - f[d0MM])) + ((f[dMP0] - f[dPM0]) + (f[dPP0] - f[dMM0]))) + (f[d0P0] - f[d0M0])) / getDensity(f); } /*=====================================================================*/ @@ -519,8 +519,8 @@ static void calcCompVelocityX3(const real *const &f /*[27]*/, real &vx3) { using namespace vf::lbm::dir; - vx3 = ((((f[DIR_PPP] - f[DIR_MMM]) + (f[DIR_PMP] - f[DIR_MPM])) + ((f[DIR_MPP] - f[DIR_PMM]) + (f[DIR_MMP] - f[DIR_PPM]))) + - (((f[DIR_0MP] - f[DIR_0PM]) + (f[DIR_0PP] - f[DIR_0MM])) + ((f[DIR_M0P] - f[DIR_P0M]) + (f[DIR_P0P] - f[DIR_M0M]))) + (f[DIR_00P] - f[DIR_00M])) / + vx3 = ((((f[dPPP] - f[dMMM]) + (f[dPMP] - f[dMPM])) + ((f[dMPP] - f[dPMM]) + (f[dMMP] - f[dPPM]))) + + (((f[d0MP] - f[d0PM]) + (f[d0PP] - f[d0MM])) + ((f[dM0P] - f[dP0M]) + (f[dP0P] - f[dM0M]))) + (f[d00P] - f[d00M])) / getDensity(f); } /*=====================================================================*/ @@ -556,85 +556,85 @@ static real getCompFeqForDirection(const int &direction, const real &drho, const real cu_sq = 1.5 * (vx1 * vx1 + vx2 * vx2 + vx3 * vx3); real rho = drho + vf::basics::constant::c1o1; switch (direction) { - case DIR_000: + case d000: return REAL_CAST(vf::basics::constant::c8o27 * (drho + rho * (-cu_sq))); - case DIR_P00: + case dP00: return REAL_CAST(vf::basics::constant::c2o27 * (drho + rho * (3.0 * (vx1) +vf::basics::constant::c9o2 * (vx1) * (vx1)-cu_sq))); - case DIR_M00: + case dM00: return REAL_CAST(vf::basics::constant::c2o27 * (drho + rho * (3.0 * (-vx1) + vf::basics::constant::c9o2 * (-vx1) * (-vx1) - cu_sq))); - case DIR_0P0: + case d0P0: return REAL_CAST(vf::basics::constant::c2o27 * (drho + rho * (3.0 * (vx2) +vf::basics::constant::c9o2 * (vx2) * (vx2)-cu_sq))); - case DIR_0M0: + case d0M0: return REAL_CAST(vf::basics::constant::c2o27 * (drho + rho * (3.0 * (-vx2) + vf::basics::constant::c9o2 * (-vx2) * (-vx2) - cu_sq))); - case DIR_00P: + case d00P: return REAL_CAST(vf::basics::constant::c2o27 * (drho + rho * (3.0 * (vx3) + vf::basics::constant::c9o2 * (vx3) * (vx3)-cu_sq))); - case DIR_00M: + case d00M: return REAL_CAST(vf::basics::constant::c2o27 * (drho + rho * (3.0 * (-vx3) + vf::basics::constant::c9o2 * (-vx3) * (-vx3) - cu_sq))); - case DIR_PP0: + case dPP0: return REAL_CAST(vf::basics::constant::c1o54 * (drho + rho * (3.0 * (vx1 + vx2) + vf::basics::constant::c9o2 * (vx1 + vx2) * (vx1 + vx2) - cu_sq))); - case DIR_MM0: + case dMM0: return REAL_CAST(vf::basics::constant::c1o54 * (drho + rho * (3.0 * (-vx1 - vx2) + vf::basics::constant::c9o2 * (-vx1 - vx2) * (-vx1 - vx2) - cu_sq))); - case DIR_PM0: + case dPM0: return REAL_CAST(vf::basics::constant::c1o54 * (drho + rho * (3.0 * (vx1 - vx2) + vf::basics::constant::c9o2 * (vx1 - vx2) * (vx1 - vx2) - cu_sq))); - case DIR_MP0: + case dMP0: return REAL_CAST(vf::basics::constant::c1o54 * (drho + rho * (3.0 * (-vx1 + vx2) + vf::basics::constant::c9o2 * (-vx1 + vx2) * (-vx1 + vx2) - cu_sq))); - case DIR_P0P: + case dP0P: return REAL_CAST(vf::basics::constant::c1o54 * (drho + rho * (3.0 * (vx1 + vx3) + vf::basics::constant::c9o2 * (vx1 + vx3) * (vx1 + vx3) - cu_sq))); - case DIR_M0M: + case dM0M: return REAL_CAST(vf::basics::constant::c1o54 * (drho + rho * (3.0 * (-vx1 - vx3) + vf::basics::constant::c9o2 * (-vx1 - vx3) * (-vx1 - vx3) - cu_sq))); - case DIR_P0M: + case dP0M: return REAL_CAST(vf::basics::constant::c1o54 * (drho + rho * (3.0 * (vx1 - vx3) + vf::basics::constant::c9o2 * (vx1 - vx3) * (vx1 - vx3) - cu_sq))); - case DIR_M0P: + case dM0P: return REAL_CAST(vf::basics::constant::c1o54 * (drho + rho * (3.0 * (-vx1 + vx3) + vf::basics::constant::c9o2 * (-vx1 + vx3) * (-vx1 + vx3) - cu_sq))); - case DIR_0PP: + case d0PP: return REAL_CAST(vf::basics::constant::c1o54 * (drho + rho * (3.0 * (vx2 + vx3) + vf::basics::constant::c9o2 * (vx2 + vx3) * (vx2 + vx3) - cu_sq))); - case DIR_0MM: + case d0MM: return REAL_CAST(vf::basics::constant::c1o54 * (drho + rho * (3.0 * (-vx2 - vx3) + vf::basics::constant::c9o2 * (-vx2 - vx3) * (-vx2 - vx3) - cu_sq))); - case DIR_0PM: + case d0PM: return REAL_CAST(vf::basics::constant::c1o54 * (drho + rho * (3.0 * (vx2 - vx3) + vf::basics::constant::c9o2 * (vx2 - vx3) * (vx2 - vx3) - cu_sq))); - case DIR_0MP: + case d0MP: return REAL_CAST(vf::basics::constant::c1o54 * (drho + rho * (3.0 * (-vx2 + vx3) + vf::basics::constant::c9o2 * (-vx2 + vx3) * (-vx2 + vx3) - cu_sq))); - case DIR_PPP: + case dPPP: return REAL_CAST(vf::basics::constant::c1o216 * (drho + rho * (3.0 * (vx1 + vx2 + vx3) + vf::basics::constant::c9o2 * (vx1 + vx2 + vx3) * (vx1 + vx2 + vx3) - cu_sq))); - case DIR_MMM: + case dMMM: return REAL_CAST(vf::basics::constant::c1o216 * (drho + rho * (3.0 * (-vx1 - vx2 - vx3) + vf::basics::constant::c9o2 * (-vx1 - vx2 - vx3) * (-vx1 - vx2 - vx3) - cu_sq))); - case DIR_PPM: + case dPPM: return REAL_CAST(vf::basics::constant::c1o216 * (drho + rho * (3.0 * (vx1 + vx2 - vx3) + vf::basics::constant::c9o2 * (vx1 + vx2 - vx3) * (vx1 + vx2 - vx3) - cu_sq))); - case DIR_MMP: + case dMMP: return REAL_CAST(vf::basics::constant::c1o216 * (drho + rho * (3.0 * (-vx1 - vx2 + vx3) + vf::basics::constant::c9o2 * (-vx1 - vx2 + vx3) * (-vx1 - vx2 + vx3) - cu_sq))); - case DIR_PMP: + case dPMP: return REAL_CAST(vf::basics::constant::c1o216 * (drho + rho * (3.0 * (vx1 - vx2 + vx3) + vf::basics::constant::c9o2 * (vx1 - vx2 + vx3) * (vx1 - vx2 + vx3) - cu_sq))); - case DIR_MPM: + case dMPM: return REAL_CAST(vf::basics::constant::c1o216 * (drho + rho * (3.0 * (-vx1 + vx2 - vx3) + vf::basics::constant::c9o2 * (-vx1 + vx2 - vx3) * (-vx1 + vx2 - vx3) - cu_sq))); - case DIR_PMM: + case dPMM: return REAL_CAST(vf::basics::constant::c1o216 * (drho + rho * (3.0 * (vx1 - vx2 - vx3) + vf::basics::constant::c9o2 * (vx1 - vx2 - vx3) * (vx1 - vx2 - vx3) - cu_sq))); - case DIR_MPP: + case dMPP: return REAL_CAST(vf::basics::constant::c1o216 * (drho + rho * (3.0 * (-vx1 + vx2 + vx3) + vf::basics::constant::c9o2 * (-vx1 + vx2 + vx3) * (-vx1 + vx2 + vx3) - cu_sq))); @@ -651,43 +651,43 @@ static void calcCompFeq(real *const &feq /*[27]*/, const real &drho, const real real cu_sq = 1.5 * (vx1 * vx1 + vx2 * vx2 + vx3 * vx3); real rho = drho + vf::basics::constant::c1o1; - feq[DIR_000] = vf::basics::constant::c8o27 * (drho + rho * (-cu_sq)); - feq[DIR_P00] = vf::basics::constant::c2o27 * (drho + rho * (3.0 * (vx1) + vf::basics::constant::c9o2 * (vx1) * (vx1)-cu_sq)); - feq[DIR_M00] = vf::basics::constant::c2o27 * (drho + rho * (3.0 * (-vx1) + vf::basics::constant::c9o2 * (-vx1) * (-vx1) - cu_sq)); - feq[DIR_0P0] = vf::basics::constant::c2o27 * (drho + rho * (3.0 * (vx2) + vf::basics::constant::c9o2 * (vx2) * (vx2)-cu_sq)); - feq[DIR_0M0] = vf::basics::constant::c2o27 * (drho + rho * (3.0 * (-vx2) + vf::basics::constant::c9o2 * (-vx2) * (-vx2) - cu_sq)); - feq[DIR_00P] = vf::basics::constant::c2o27 * (drho + rho * (3.0 * (vx3) + vf::basics::constant::c9o2 * (vx3) * (vx3)-cu_sq)); - feq[DIR_00M] = vf::basics::constant::c2o27 * (drho + rho * (3.0 * (-vx3) + vf::basics::constant::c9o2 * (-vx3) * (-vx3) - cu_sq)); - feq[DIR_PP0] = vf::basics::constant::c1o54 * (drho + rho * (3.0 * (vx1 + vx2) + vf::basics::constant::c9o2 * (vx1 + vx2) * (vx1 + vx2) - cu_sq)); - feq[DIR_MM0] = vf::basics::constant::c1o54 * (drho + rho * (3.0 * (-vx1 - vx2) + vf::basics::constant::c9o2 * (-vx1 - vx2) * (-vx1 - vx2) - cu_sq)); - feq[DIR_PM0] = vf::basics::constant::c1o54 * (drho + rho * (3.0 * (vx1 - vx2) + vf::basics::constant::c9o2 * (vx1 - vx2) * (vx1 - vx2) - cu_sq)); - feq[DIR_MP0] = vf::basics::constant::c1o54 * (drho + rho * (3.0 * (-vx1 + vx2) + vf::basics::constant::c9o2 * (-vx1 + vx2) * (-vx1 + vx2) - cu_sq)); - feq[DIR_P0P] = vf::basics::constant::c1o54 * (drho + rho * (3.0 * (vx1 + vx3) + vf::basics::constant::c9o2 * (vx1 + vx3) * (vx1 + vx3) - cu_sq)); - feq[DIR_M0M] = vf::basics::constant::c1o54 * (drho + rho * (3.0 * (-vx1 - vx3) + vf::basics::constant::c9o2 * (-vx1 - vx3) * (-vx1 - vx3) - cu_sq)); - feq[DIR_P0M] = vf::basics::constant::c1o54 * (drho + rho * (3.0 * (vx1 - vx3) + vf::basics::constant::c9o2 * (vx1 - vx3) * (vx1 - vx3) - cu_sq)); - feq[DIR_M0P] = vf::basics::constant::c1o54 * (drho + rho * (3.0 * (-vx1 + vx3) + vf::basics::constant::c9o2 * (-vx1 + vx3) * (-vx1 + vx3) - cu_sq)); - feq[DIR_0PP] = vf::basics::constant::c1o54 * (drho + rho * (3.0 * (vx2 + vx3) + vf::basics::constant::c9o2 * (vx2 + vx3) * (vx2 + vx3) - cu_sq)); - feq[DIR_0MM] = vf::basics::constant::c1o54 * (drho + rho * (3.0 * (-vx2 - vx3) + vf::basics::constant::c9o2 * (-vx2 - vx3) * (-vx2 - vx3) - cu_sq)); - feq[DIR_0PM] = vf::basics::constant::c1o54 * (drho + rho * (3.0 * (vx2 - vx3) + vf::basics::constant::c9o2 * (vx2 - vx3) * (vx2 - vx3) - cu_sq)); - feq[DIR_0MP] = vf::basics::constant::c1o54 * (drho + rho * (3.0 * (-vx2 + vx3) + vf::basics::constant::c9o2 * (-vx2 + vx3) * (-vx2 + vx3) - cu_sq)); - feq[DIR_PPP] = vf::basics::constant::c1o216 * + feq[d000] = vf::basics::constant::c8o27 * (drho + rho * (-cu_sq)); + feq[dP00] = vf::basics::constant::c2o27 * (drho + rho * (3.0 * (vx1) + vf::basics::constant::c9o2 * (vx1) * (vx1)-cu_sq)); + feq[dM00] = vf::basics::constant::c2o27 * (drho + rho * (3.0 * (-vx1) + vf::basics::constant::c9o2 * (-vx1) * (-vx1) - cu_sq)); + feq[d0P0] = vf::basics::constant::c2o27 * (drho + rho * (3.0 * (vx2) + vf::basics::constant::c9o2 * (vx2) * (vx2)-cu_sq)); + feq[d0M0] = vf::basics::constant::c2o27 * (drho + rho * (3.0 * (-vx2) + vf::basics::constant::c9o2 * (-vx2) * (-vx2) - cu_sq)); + feq[d00P] = vf::basics::constant::c2o27 * (drho + rho * (3.0 * (vx3) + vf::basics::constant::c9o2 * (vx3) * (vx3)-cu_sq)); + feq[d00M] = vf::basics::constant::c2o27 * (drho + rho * (3.0 * (-vx3) + vf::basics::constant::c9o2 * (-vx3) * (-vx3) - cu_sq)); + feq[dPP0] = vf::basics::constant::c1o54 * (drho + rho * (3.0 * (vx1 + vx2) + vf::basics::constant::c9o2 * (vx1 + vx2) * (vx1 + vx2) - cu_sq)); + feq[dMM0] = vf::basics::constant::c1o54 * (drho + rho * (3.0 * (-vx1 - vx2) + vf::basics::constant::c9o2 * (-vx1 - vx2) * (-vx1 - vx2) - cu_sq)); + feq[dPM0] = vf::basics::constant::c1o54 * (drho + rho * (3.0 * (vx1 - vx2) + vf::basics::constant::c9o2 * (vx1 - vx2) * (vx1 - vx2) - cu_sq)); + feq[dMP0] = vf::basics::constant::c1o54 * (drho + rho * (3.0 * (-vx1 + vx2) + vf::basics::constant::c9o2 * (-vx1 + vx2) * (-vx1 + vx2) - cu_sq)); + feq[dP0P] = vf::basics::constant::c1o54 * (drho + rho * (3.0 * (vx1 + vx3) + vf::basics::constant::c9o2 * (vx1 + vx3) * (vx1 + vx3) - cu_sq)); + feq[dM0M] = vf::basics::constant::c1o54 * (drho + rho * (3.0 * (-vx1 - vx3) + vf::basics::constant::c9o2 * (-vx1 - vx3) * (-vx1 - vx3) - cu_sq)); + feq[dP0M] = vf::basics::constant::c1o54 * (drho + rho * (3.0 * (vx1 - vx3) + vf::basics::constant::c9o2 * (vx1 - vx3) * (vx1 - vx3) - cu_sq)); + feq[dM0P] = vf::basics::constant::c1o54 * (drho + rho * (3.0 * (-vx1 + vx3) + vf::basics::constant::c9o2 * (-vx1 + vx3) * (-vx1 + vx3) - cu_sq)); + feq[d0PP] = vf::basics::constant::c1o54 * (drho + rho * (3.0 * (vx2 + vx3) + vf::basics::constant::c9o2 * (vx2 + vx3) * (vx2 + vx3) - cu_sq)); + feq[d0MM] = vf::basics::constant::c1o54 * (drho + rho * (3.0 * (-vx2 - vx3) + vf::basics::constant::c9o2 * (-vx2 - vx3) * (-vx2 - vx3) - cu_sq)); + feq[d0PM] = vf::basics::constant::c1o54 * (drho + rho * (3.0 * (vx2 - vx3) + vf::basics::constant::c9o2 * (vx2 - vx3) * (vx2 - vx3) - cu_sq)); + feq[d0MP] = vf::basics::constant::c1o54 * (drho + rho * (3.0 * (-vx2 + vx3) + vf::basics::constant::c9o2 * (-vx2 + vx3) * (-vx2 + vx3) - cu_sq)); + feq[dPPP] = vf::basics::constant::c1o216 * (drho + rho * (3.0 * (vx1 + vx2 + vx3) + vf::basics::constant::c9o2 * (vx1 + vx2 + vx3) * (vx1 + vx2 + vx3) - cu_sq)); - feq[DIR_MMM] = + feq[dMMM] = vf::basics::constant::c1o216 * (drho + rho * (3.0 * (-vx1 - vx2 - vx3) + vf::basics::constant::c9o2 * (-vx1 - vx2 - vx3) * (-vx1 - vx2 - vx3) - cu_sq)); - feq[DIR_PPM] = vf::basics::constant::c1o216 * + feq[dPPM] = vf::basics::constant::c1o216 * (drho + rho * (3.0 * (vx1 + vx2 - vx3) + vf::basics::constant::c9o2 * (vx1 + vx2 - vx3) * (vx1 + vx2 - vx3) - cu_sq)); - feq[DIR_MMP] = + feq[dMMP] = vf::basics::constant::c1o216 * (drho + rho * (3.0 * (-vx1 - vx2 + vx3) + vf::basics::constant::c9o2 * (-vx1 - vx2 + vx3) * (-vx1 - vx2 + vx3) - cu_sq)); - feq[DIR_PMP] = vf::basics::constant::c1o216 * + feq[dPMP] = vf::basics::constant::c1o216 * (drho + rho * (3.0 * (vx1 - vx2 + vx3) + vf::basics::constant::c9o2 * (vx1 - vx2 + vx3) * (vx1 - vx2 + vx3) - cu_sq)); - feq[DIR_MPM] = + feq[dMPM] = vf::basics::constant::c1o216 * (drho + rho * (3.0 * (-vx1 + vx2 - vx3) + vf::basics::constant::c9o2 * (-vx1 + vx2 - vx3) * (-vx1 + vx2 - vx3) - cu_sq)); - feq[DIR_PMM] = vf::basics::constant::c1o216 * + feq[dPMM] = vf::basics::constant::c1o216 * (drho + rho * (3.0 * (vx1 - vx2 - vx3) + vf::basics::constant::c9o2 * (vx1 - vx2 - vx3) * (vx1 - vx2 - vx3) - cu_sq)); - feq[DIR_MPP] = + feq[dMPP] = vf::basics::constant::c1o216 * (drho + rho * (3.0 * (-vx1 + vx2 + vx3) + vf::basics::constant::c9o2 * (-vx1 + vx2 + vx3) * (-vx1 + vx2 + vx3) - cu_sq)); } @@ -700,78 +700,78 @@ static real getIncompFeqForDirection(const int &direction, const real &drho, con real cu_sq = 1.5f * (vx1 * vx1 + vx2 * vx2 + vx3 * vx3); switch (direction) { - case DIR_000: + case d000: return REAL_CAST(vf::basics::constant::c8o27 * (drho - cu_sq)); - case DIR_P00: + case dP00: return REAL_CAST(vf::basics::constant::c2o27 * (drho + 3.0 * (vx1) + vf::basics::constant::c9o2 * (vx1) * (vx1)-cu_sq)); - case DIR_M00: + case dM00: return REAL_CAST(vf::basics::constant::c2o27 * (drho + 3.0 * (-vx1) + vf::basics::constant::c9o2 * (-vx1) * (-vx1) - cu_sq)); - case DIR_0P0: + case d0P0: return REAL_CAST(vf::basics::constant::c2o27 * (drho + 3.0 * (vx2) + vf::basics::constant::c9o2 * (vx2) * (vx2)-cu_sq)); - case DIR_0M0: + case d0M0: return REAL_CAST(vf::basics::constant::c2o27 * (drho + 3.0 * (-vx2) + vf::basics::constant::c9o2 * (-vx2) * (-vx2) - cu_sq)); - case DIR_00P: + case d00P: return REAL_CAST(vf::basics::constant::c2o27 * (drho + 3.0 * (vx3) + vf::basics::constant::c9o2 * (vx3) * (vx3)-cu_sq)); - case DIR_00M: + case d00M: return REAL_CAST(vf::basics::constant::c2o27 * (drho + 3.0 * (-vx3) + vf::basics::constant::c9o2 * (-vx3) * (-vx3) - cu_sq)); - case DIR_PP0: + case dPP0: return REAL_CAST(vf::basics::constant::c1o54 * (drho + 3.0 * (vx1 + vx2) + vf::basics::constant::c9o2 * (vx1 + vx2) * (vx1 + vx2) - cu_sq)); - case DIR_MM0: + case dMM0: return REAL_CAST(vf::basics::constant::c1o54 * (drho + 3.0 * (-vx1 - vx2) + vf::basics::constant::c9o2 * (-vx1 - vx2) * (-vx1 - vx2) - cu_sq)); - case DIR_PM0: + case dPM0: return REAL_CAST(vf::basics::constant::c1o54 * (drho + 3.0 * (vx1 - vx2) + vf::basics::constant::c9o2 * (vx1 - vx2) * (vx1 - vx2) - cu_sq)); - case DIR_MP0: + case dMP0: return REAL_CAST(vf::basics::constant::c1o54 * (drho + 3.0 * (-vx1 + vx2) + vf::basics::constant::c9o2 * (-vx1 + vx2) * (-vx1 + vx2) - cu_sq)); - case DIR_P0P: + case dP0P: return REAL_CAST(vf::basics::constant::c1o54 * (drho + 3.0 * (vx1 + vx3) + vf::basics::constant::c9o2 * (vx1 + vx3) * (vx1 + vx3) - cu_sq)); - case DIR_M0M: + case dM0M: return REAL_CAST(vf::basics::constant::c1o54 * (drho + 3.0 * (-vx1 - vx3) + vf::basics::constant::c9o2 * (-vx1 - vx3) * (-vx1 - vx3) - cu_sq)); - case DIR_P0M: + case dP0M: return REAL_CAST(vf::basics::constant::c1o54 * (drho + 3.0 * (vx1 - vx3) + vf::basics::constant::c9o2 * (vx1 - vx3) * (vx1 - vx3) - cu_sq)); - case DIR_M0P: + case dM0P: return REAL_CAST(vf::basics::constant::c1o54 * (drho + 3.0 * (-vx1 + vx3) + vf::basics::constant::c9o2 * (-vx1 + vx3) * (-vx1 + vx3) - cu_sq)); - case DIR_0PP: + case d0PP: return REAL_CAST(vf::basics::constant::c1o54 * (drho + 3.0 * (vx2 + vx3) + vf::basics::constant::c9o2 * (vx2 + vx3) * (vx2 + vx3) - cu_sq)); - case DIR_0MM: + case d0MM: return REAL_CAST(vf::basics::constant::c1o54 * (drho + 3.0 * (-vx2 - vx3) + vf::basics::constant::c9o2 * (-vx2 - vx3) * (-vx2 - vx3) - cu_sq)); - case DIR_0PM: + case d0PM: return REAL_CAST(vf::basics::constant::c1o54 * (drho + 3.0 * (vx2 - vx3) + vf::basics::constant::c9o2 * (vx2 - vx3) * (vx2 - vx3) - cu_sq)); - case DIR_0MP: + case d0MP: return REAL_CAST(vf::basics::constant::c1o54 * (drho + 3.0 * (-vx2 + vx3) + vf::basics::constant::c9o2 * (-vx2 + vx3) * (-vx2 + vx3) - cu_sq)); - case DIR_PPP: + case dPPP: return REAL_CAST(vf::basics::constant::c1o216 * (drho + 3.0 * (vx1 + vx2 + vx3) + vf::basics::constant::c9o2 * (vx1 + vx2 + vx3) * (vx1 + vx2 + vx3) - cu_sq)); - case DIR_MMM: + case dMMM: return REAL_CAST(vf::basics::constant::c1o216 * (drho + 3.0 * (-vx1 - vx2 - vx3) + vf::basics::constant::c9o2 * (-vx1 - vx2 - vx3) * (-vx1 - vx2 - vx3) - cu_sq)); - case DIR_PPM: + case dPPM: return REAL_CAST(vf::basics::constant::c1o216 * (drho + 3.0 * (vx1 + vx2 - vx3) + vf::basics::constant::c9o2 * (vx1 + vx2 - vx3) * (vx1 + vx2 - vx3) - cu_sq)); - case DIR_MMP: + case dMMP: return REAL_CAST(vf::basics::constant::c1o216 * (drho + 3.0 * (-vx1 - vx2 + vx3) + vf::basics::constant::c9o2 * (-vx1 - vx2 + vx3) * (-vx1 - vx2 + vx3) - cu_sq)); - case DIR_PMP: + case dPMP: return REAL_CAST(vf::basics::constant::c1o216 * (drho + 3.0 * (vx1 - vx2 + vx3) + vf::basics::constant::c9o2 * (vx1 - vx2 + vx3) * (vx1 - vx2 + vx3) - cu_sq)); - case DIR_MPM: + case dMPM: return REAL_CAST(vf::basics::constant::c1o216 * (drho + 3.0 * (-vx1 + vx2 - vx3) + vf::basics::constant::c9o2 * (-vx1 + vx2 - vx3) * (-vx1 + vx2 - vx3) - cu_sq)); - case DIR_PMM: + case dPMM: return REAL_CAST(vf::basics::constant::c1o216 * (drho + 3.0 * (vx1 - vx2 - vx3) + vf::basics::constant::c9o2 * (vx1 - vx2 - vx3) * (vx1 - vx2 - vx3) - cu_sq)); - case DIR_MPP: + case dMPP: return REAL_CAST(vf::basics::constant::c1o216 * (drho + 3.0 * (-vx1 + vx2 + vx3) + vf::basics::constant::c9o2 * (-vx1 + vx2 + vx3) * (-vx1 + vx2 + vx3) - cu_sq)); default: @@ -786,40 +786,40 @@ static void calcIncompFeq(real *const &feq /*[27]*/, const real &drho, const rea real cu_sq = 1.5 * (vx1 * vx1 + vx2 * vx2 + vx3 * vx3); - feq[DIR_000] = vf::basics::constant::c8o27 * (drho - cu_sq); - feq[DIR_P00] = vf::basics::constant::c2o27 * (drho + 3.0 * (vx1) + vf::basics::constant::c9o2 * (vx1) * (vx1)-cu_sq); - feq[DIR_M00] = vf::basics::constant::c2o27 * (drho + 3.0 * (-vx1) + vf::basics::constant::c9o2 * (-vx1) * (-vx1) - cu_sq); - feq[DIR_0P0] = vf::basics::constant::c2o27 * (drho + 3.0 * (vx2) + vf::basics::constant::c9o2 * (vx2) * (vx2)-cu_sq); - feq[DIR_0M0] = vf::basics::constant::c2o27 * (drho + 3.0 * (-vx2) + vf::basics::constant::c9o2 * (-vx2) * (-vx2) - cu_sq); - feq[DIR_00P] = vf::basics::constant::c2o27 * (drho + 3.0 * (vx3) + vf::basics::constant::c9o2 * (vx3) * (vx3)-cu_sq); - feq[DIR_00M] = vf::basics::constant::c2o27 * (drho + 3.0 * (-vx3) + vf::basics::constant::c9o2 * (-vx3) * (-vx3) - cu_sq); - feq[DIR_PP0] = vf::basics::constant::c1o54 * (drho + 3.0 * (vx1 + vx2) + vf::basics::constant::c9o2 * (vx1 + vx2) * (vx1 + vx2) - cu_sq); - feq[DIR_MM0] = vf::basics::constant::c1o54 * (drho + 3.0 * (-vx1 - vx2) + vf::basics::constant::c9o2 * (-vx1 - vx2) * (-vx1 - vx2) - cu_sq); - feq[DIR_PM0] = vf::basics::constant::c1o54 * (drho + 3.0 * (vx1 - vx2) + vf::basics::constant::c9o2 * (vx1 - vx2) * (vx1 - vx2) - cu_sq); - feq[DIR_MP0] = vf::basics::constant::c1o54 * (drho + 3.0 * (-vx1 + vx2) + vf::basics::constant::c9o2 * (-vx1 + vx2) * (-vx1 + vx2) - cu_sq); - feq[DIR_P0P] = vf::basics::constant::c1o54 * (drho + 3.0 * (vx1 + vx3) + vf::basics::constant::c9o2 * (vx1 + vx3) * (vx1 + vx3) - cu_sq); - feq[DIR_M0M] = vf::basics::constant::c1o54 * (drho + 3.0 * (-vx1 - vx3) + vf::basics::constant::c9o2 * (-vx1 - vx3) * (-vx1 - vx3) - cu_sq); - feq[DIR_P0M] = vf::basics::constant::c1o54 * (drho + 3.0 * (vx1 - vx3) + vf::basics::constant::c9o2 * (vx1 - vx3) * (vx1 - vx3) - cu_sq); - feq[DIR_M0P] = vf::basics::constant::c1o54 * (drho + 3.0 * (-vx1 + vx3) + vf::basics::constant::c9o2 * (-vx1 + vx3) * (-vx1 + vx3) - cu_sq); - feq[DIR_0PP] = vf::basics::constant::c1o54 * (drho + 3.0 * (vx2 + vx3) + vf::basics::constant::c9o2 * (vx2 + vx3) * (vx2 + vx3) - cu_sq); - feq[DIR_0MM] = vf::basics::constant::c1o54 * (drho + 3.0 * (-vx2 - vx3) + vf::basics::constant::c9o2 * (-vx2 - vx3) * (-vx2 - vx3) - cu_sq); - feq[DIR_0PM] = vf::basics::constant::c1o54 * (drho + 3.0 * (vx2 - vx3) + vf::basics::constant::c9o2 * (vx2 - vx3) * (vx2 - vx3) - cu_sq); - feq[DIR_0MP] = vf::basics::constant::c1o54 * (drho + 3.0 * (-vx2 + vx3) + vf::basics::constant::c9o2 * (-vx2 + vx3) * (-vx2 + vx3) - cu_sq); - feq[DIR_PPP] = vf::basics::constant::c1o216 * + feq[d000] = vf::basics::constant::c8o27 * (drho - cu_sq); + feq[dP00] = vf::basics::constant::c2o27 * (drho + 3.0 * (vx1) + vf::basics::constant::c9o2 * (vx1) * (vx1)-cu_sq); + feq[dM00] = vf::basics::constant::c2o27 * (drho + 3.0 * (-vx1) + vf::basics::constant::c9o2 * (-vx1) * (-vx1) - cu_sq); + feq[d0P0] = vf::basics::constant::c2o27 * (drho + 3.0 * (vx2) + vf::basics::constant::c9o2 * (vx2) * (vx2)-cu_sq); + feq[d0M0] = vf::basics::constant::c2o27 * (drho + 3.0 * (-vx2) + vf::basics::constant::c9o2 * (-vx2) * (-vx2) - cu_sq); + feq[d00P] = vf::basics::constant::c2o27 * (drho + 3.0 * (vx3) + vf::basics::constant::c9o2 * (vx3) * (vx3)-cu_sq); + feq[d00M] = vf::basics::constant::c2o27 * (drho + 3.0 * (-vx3) + vf::basics::constant::c9o2 * (-vx3) * (-vx3) - cu_sq); + feq[dPP0] = vf::basics::constant::c1o54 * (drho + 3.0 * (vx1 + vx2) + vf::basics::constant::c9o2 * (vx1 + vx2) * (vx1 + vx2) - cu_sq); + feq[dMM0] = vf::basics::constant::c1o54 * (drho + 3.0 * (-vx1 - vx2) + vf::basics::constant::c9o2 * (-vx1 - vx2) * (-vx1 - vx2) - cu_sq); + feq[dPM0] = vf::basics::constant::c1o54 * (drho + 3.0 * (vx1 - vx2) + vf::basics::constant::c9o2 * (vx1 - vx2) * (vx1 - vx2) - cu_sq); + feq[dMP0] = vf::basics::constant::c1o54 * (drho + 3.0 * (-vx1 + vx2) + vf::basics::constant::c9o2 * (-vx1 + vx2) * (-vx1 + vx2) - cu_sq); + feq[dP0P] = vf::basics::constant::c1o54 * (drho + 3.0 * (vx1 + vx3) + vf::basics::constant::c9o2 * (vx1 + vx3) * (vx1 + vx3) - cu_sq); + feq[dM0M] = vf::basics::constant::c1o54 * (drho + 3.0 * (-vx1 - vx3) + vf::basics::constant::c9o2 * (-vx1 - vx3) * (-vx1 - vx3) - cu_sq); + feq[dP0M] = vf::basics::constant::c1o54 * (drho + 3.0 * (vx1 - vx3) + vf::basics::constant::c9o2 * (vx1 - vx3) * (vx1 - vx3) - cu_sq); + feq[dM0P] = vf::basics::constant::c1o54 * (drho + 3.0 * (-vx1 + vx3) + vf::basics::constant::c9o2 * (-vx1 + vx3) * (-vx1 + vx3) - cu_sq); + feq[d0PP] = vf::basics::constant::c1o54 * (drho + 3.0 * (vx2 + vx3) + vf::basics::constant::c9o2 * (vx2 + vx3) * (vx2 + vx3) - cu_sq); + feq[d0MM] = vf::basics::constant::c1o54 * (drho + 3.0 * (-vx2 - vx3) + vf::basics::constant::c9o2 * (-vx2 - vx3) * (-vx2 - vx3) - cu_sq); + feq[d0PM] = vf::basics::constant::c1o54 * (drho + 3.0 * (vx2 - vx3) + vf::basics::constant::c9o2 * (vx2 - vx3) * (vx2 - vx3) - cu_sq); + feq[d0MP] = vf::basics::constant::c1o54 * (drho + 3.0 * (-vx2 + vx3) + vf::basics::constant::c9o2 * (-vx2 + vx3) * (-vx2 + vx3) - cu_sq); + feq[dPPP] = vf::basics::constant::c1o216 * (drho + 3.0 * (vx1 + vx2 + vx3) + vf::basics::constant::c9o2 * (vx1 + vx2 + vx3) * (vx1 + vx2 + vx3) - cu_sq); - feq[DIR_MMM] = vf::basics::constant::c1o216 * + feq[dMMM] = vf::basics::constant::c1o216 * (drho + 3.0 * (-vx1 - vx2 - vx3) + vf::basics::constant::c9o2 * (-vx1 - vx2 - vx3) * (-vx1 - vx2 - vx3) - cu_sq); - feq[DIR_PPM] = vf::basics::constant::c1o216 * + feq[dPPM] = vf::basics::constant::c1o216 * (drho + 3.0 * (vx1 + vx2 - vx3) + vf::basics::constant::c9o2 * (vx1 + vx2 - vx3) * (vx1 + vx2 - vx3) - cu_sq); - feq[DIR_MMP] = vf::basics::constant::c1o216 * + feq[dMMP] = vf::basics::constant::c1o216 * (drho + 3.0 * (-vx1 - vx2 + vx3) + vf::basics::constant::c9o2 * (-vx1 - vx2 + vx3) * (-vx1 - vx2 + vx3) - cu_sq); - feq[DIR_PMP] = vf::basics::constant::c1o216 * + feq[dPMP] = vf::basics::constant::c1o216 * (drho + 3.0 * (vx1 - vx2 + vx3) + vf::basics::constant::c9o2 * (vx1 - vx2 + vx3) * (vx1 - vx2 + vx3) - cu_sq); - feq[DIR_MPM] = vf::basics::constant::c1o216 * + feq[dMPM] = vf::basics::constant::c1o216 * (drho + 3.0 * (-vx1 + vx2 - vx3) + vf::basics::constant::c9o2 * (-vx1 + vx2 - vx3) * (-vx1 + vx2 - vx3) - cu_sq); - feq[DIR_PMM] = vf::basics::constant::c1o216 * + feq[dPMM] = vf::basics::constant::c1o216 * (drho + 3.0 * (vx1 - vx2 - vx3) + vf::basics::constant::c9o2 * (vx1 - vx2 - vx3) * (vx1 - vx2 - vx3) - cu_sq); - feq[DIR_MPP] = vf::basics::constant::c1o216 * + feq[dMPP] = vf::basics::constant::c1o216 * (drho + 3.0 * (-vx1 + vx2 + vx3) + vf::basics::constant::c9o2 * (-vx1 + vx2 + vx3) * (-vx1 + vx2 + vx3) - cu_sq); } ////////////////////////////////////////////////////////////////////////// @@ -829,57 +829,57 @@ static inline real getBoundaryVelocityForDirection(const int &direction, const r using namespace vf::lbm::dir; switch (direction) { - case DIR_P00: + case dP00: return (real)(vf::basics::constant::c4o9 * (+bcVelocityX1)); - case DIR_M00: + case dM00: return (real)(vf::basics::constant::c4o9 * (-bcVelocityX1)); - case DIR_0P0: + case d0P0: return (real)(vf::basics::constant::c4o9 * (+bcVelocityX2)); - case DIR_0M0: + case d0M0: return (real)(vf::basics::constant::c4o9 * (-bcVelocityX2)); - case DIR_00P: + case d00P: return (real)(vf::basics::constant::c4o9 * (+bcVelocityX3)); - case DIR_00M: + case d00M: return (real)(vf::basics::constant::c4o9 * (-bcVelocityX3)); - case DIR_PP0: + case dPP0: return (real)(vf::basics::constant::c1o9 * (+bcVelocityX1 + bcVelocityX2)); - case DIR_MM0: + case dMM0: return (real)(vf::basics::constant::c1o9 * (-bcVelocityX1 - bcVelocityX2)); - case DIR_PM0: + case dPM0: return (real)(vf::basics::constant::c1o9 * (+bcVelocityX1 - bcVelocityX2)); - case DIR_MP0: + case dMP0: return (real)(vf::basics::constant::c1o9 * (-bcVelocityX1 + bcVelocityX2)); - case DIR_P0P: + case dP0P: return (real)(vf::basics::constant::c1o9 * (+bcVelocityX1 + bcVelocityX3)); - case DIR_M0M: + case dM0M: return (real)(vf::basics::constant::c1o9 * (-bcVelocityX1 - bcVelocityX3)); - case DIR_P0M: + case dP0M: return (real)(vf::basics::constant::c1o9 * (+bcVelocityX1 - bcVelocityX3)); - case DIR_M0P: + case dM0P: return (real)(vf::basics::constant::c1o9 * (-bcVelocityX1 + bcVelocityX3)); - case DIR_0PP: + case d0PP: return (real)(vf::basics::constant::c1o9 * (+bcVelocityX2 + bcVelocityX3)); - case DIR_0MM: + case d0MM: return (real)(vf::basics::constant::c1o9 * (-bcVelocityX2 - bcVelocityX3)); - case DIR_0PM: + case d0PM: return (real)(vf::basics::constant::c1o9 * (+bcVelocityX2 - bcVelocityX3)); - case DIR_0MP: + case d0MP: return (real)(vf::basics::constant::c1o9 * (-bcVelocityX2 + bcVelocityX3)); - case DIR_PPP: + case dPPP: return (real)(vf::basics::constant::c1o36 * (+bcVelocityX1 + bcVelocityX2 + bcVelocityX3)); - case DIR_MMM: + case dMMM: return (real)(vf::basics::constant::c1o36 * (-bcVelocityX1 - bcVelocityX2 - bcVelocityX3)); - case DIR_PPM: + case dPPM: return (real)(vf::basics::constant::c1o36 * (+bcVelocityX1 + bcVelocityX2 - bcVelocityX3)); - case DIR_MMP: + case dMMP: return (real)(vf::basics::constant::c1o36 * (-bcVelocityX1 - bcVelocityX2 + bcVelocityX3)); - case DIR_PMP: + case dPMP: return (real)(vf::basics::constant::c1o36 * (+bcVelocityX1 - bcVelocityX2 + bcVelocityX3)); - case DIR_MPM: + case dMPM: return (real)(vf::basics::constant::c1o36 * (-bcVelocityX1 + bcVelocityX2 - bcVelocityX3)); - case DIR_PMM: + case dPMM: return (real)(vf::basics::constant::c1o36 * (+bcVelocityX1 - bcVelocityX2 - bcVelocityX3)); - case DIR_MPP: + case dMPP: return (real)(vf::basics::constant::c1o36 * (-bcVelocityX1 + bcVelocityX2 + bcVelocityX3)); default: throw UbException(UB_EXARGS, "unknown direction"); @@ -937,15 +937,15 @@ static inline void calcDistanceToNeighbors(std::vector<real> &distNeigh, const r { using namespace vf::lbm::dir; - // distNeigh.resize(FENDDIR+1, UbMath::sqrt2*deltaX1); + // distNeigh.resize(FENDDIR+1, UbMath::cSqrt2*deltaX1); - distNeigh[DIR_P00] = distNeigh[DIR_M00] = distNeigh[DIR_0P0] = deltaX1; - distNeigh[DIR_0M0] = distNeigh[DIR_00P] = distNeigh[DIR_00M] = deltaX1; - distNeigh[DIR_PP0] = distNeigh[DIR_MP0] = distNeigh[DIR_MM0] = distNeigh[DIR_PM0] = vf::basics::constant::sqrt2 * deltaX1; - distNeigh[DIR_P0P] = distNeigh[DIR_0PP] = distNeigh[DIR_M0P] = distNeigh[DIR_0MP] = vf::basics::constant::sqrt2 * deltaX1; - distNeigh[DIR_P0M] = distNeigh[DIR_0PM] = distNeigh[DIR_M0M] = distNeigh[DIR_0MM] = vf::basics::constant::sqrt2 * deltaX1; - distNeigh[DIR_PPP] = distNeigh[DIR_MPP] = distNeigh[DIR_PMP] = distNeigh[DIR_MMP] = vf::basics::constant::sqrt3 * deltaX1; - distNeigh[DIR_PPM] = distNeigh[DIR_MPM] = distNeigh[DIR_PMM] = distNeigh[DIR_MMM] = vf::basics::constant::sqrt3 * deltaX1; + distNeigh[dP00] = distNeigh[dM00] = distNeigh[d0P0] = deltaX1; + distNeigh[d0M0] = distNeigh[d00P] = distNeigh[d00M] = deltaX1; + distNeigh[dPP0] = distNeigh[dMP0] = distNeigh[dMM0] = distNeigh[dPM0] = vf::basics::constant::cSqrt2 * deltaX1; + distNeigh[dP0P] = distNeigh[d0PP] = distNeigh[dM0P] = distNeigh[d0MP] = vf::basics::constant::cSqrt2 * deltaX1; + distNeigh[dP0M] = distNeigh[d0PM] = distNeigh[dM0M] = distNeigh[d0MM] = vf::basics::constant::cSqrt2 * deltaX1; + distNeigh[dPPP] = distNeigh[dMPP] = distNeigh[dPMP] = distNeigh[dMMP] = vf::basics::constant::cSqrt3 * deltaX1; + distNeigh[dPPM] = distNeigh[dMPM] = distNeigh[dPMM] = distNeigh[dMMM] = vf::basics::constant::cSqrt3 * deltaX1; } ////////////////////////////////////////////////////////////////////////// static inline void calcDistanceToNeighbors(std::vector<real> &distNeigh, const real &deltaX1, const real &deltaX2, @@ -953,16 +953,16 @@ static inline void calcDistanceToNeighbors(std::vector<real> &distNeigh, const r { using namespace vf::lbm::dir; - // distNeigh.resize(FENDDIR+1, UbMath::sqrt2*deltaX1); - distNeigh[DIR_P00] = distNeigh[DIR_M00] = deltaX1; - distNeigh[DIR_0P0] = distNeigh[DIR_0M0] = deltaX2; - distNeigh[DIR_00P] = distNeigh[DIR_00M] = deltaX3; - distNeigh[DIR_PP0] = distNeigh[DIR_MP0] = distNeigh[DIR_MM0] = distNeigh[DIR_PM0] = sqrt(deltaX1 * deltaX1 + deltaX2 * deltaX2); - distNeigh[DIR_P0P] = distNeigh[DIR_0PP] = distNeigh[DIR_M0P] = distNeigh[DIR_0MP] = sqrt(deltaX1 * deltaX1 + deltaX3 * deltaX3); - distNeigh[DIR_P0M] = distNeigh[DIR_0PM] = distNeigh[DIR_M0M] = distNeigh[DIR_0MM] = sqrt(deltaX2 * deltaX2 + deltaX3 * deltaX3); - distNeigh[DIR_PPP] = distNeigh[DIR_MPP] = distNeigh[DIR_PMP] = distNeigh[DIR_MMP] = + // distNeigh.resize(FENDDIR+1, UbMath::cSqrt2*deltaX1); + distNeigh[dP00] = distNeigh[dM00] = deltaX1; + distNeigh[d0P0] = distNeigh[d0M0] = deltaX2; + distNeigh[d00P] = distNeigh[d00M] = deltaX3; + distNeigh[dPP0] = distNeigh[dMP0] = distNeigh[dMM0] = distNeigh[dPM0] = sqrt(deltaX1 * deltaX1 + deltaX2 * deltaX2); + distNeigh[dP0P] = distNeigh[d0PP] = distNeigh[dM0P] = distNeigh[d0MP] = sqrt(deltaX1 * deltaX1 + deltaX3 * deltaX3); + distNeigh[dP0M] = distNeigh[d0PM] = distNeigh[dM0M] = distNeigh[d0MM] = sqrt(deltaX2 * deltaX2 + deltaX3 * deltaX3); + distNeigh[dPPP] = distNeigh[dMPP] = distNeigh[dPMP] = distNeigh[dMMP] = sqrt(deltaX1 * deltaX1 + deltaX2 * deltaX2 + deltaX3 * deltaX3); - distNeigh[DIR_PPM] = distNeigh[DIR_MPM] = distNeigh[DIR_PMM] = distNeigh[DIR_MMM] = + distNeigh[dPPM] = distNeigh[dMPM] = distNeigh[dPMM] = distNeigh[dMMM] = sqrt(deltaX1 * deltaX1 + deltaX2 * deltaX2 + deltaX3 * deltaX3); } ////////////////////////////////////////////////////////////////////////// @@ -971,109 +971,109 @@ static inline void initRayVectors(real *const &rayX1, real *const &rayX2, real * using namespace vf::lbm::dir; int fdir; - real c1oS2 = vf::basics::constant::one_over_sqrt2; - real c1oS3 = vf::basics::constant::one_over_sqrt3; - fdir = DIR_P00; + real c1oS2 = vf::basics::constant::c1oSqrt2; + real c1oS3 = vf::basics::constant::c1oSqrt3; + fdir = dP00; rayX1[fdir] = 1.0; rayX2[fdir] = 0.0; rayX3[fdir] = 0.0; - fdir = DIR_M00; + fdir = dM00; rayX1[fdir] = -1.0; rayX2[fdir] = 0.0; rayX3[fdir] = 0.0; - fdir = DIR_0P0; + fdir = d0P0; rayX1[fdir] = 0.0; rayX2[fdir] = 1.0; rayX3[fdir] = 0.0; - fdir = DIR_0M0; + fdir = d0M0; rayX1[fdir] = 0.0; rayX2[fdir] = -1.0; rayX3[fdir] = 0.0; - fdir = DIR_00P; + fdir = d00P; rayX1[fdir] = 0.0; rayX2[fdir] = 0.0; rayX3[fdir] = 1.0; - fdir = DIR_00M; + fdir = d00M; rayX1[fdir] = 0.0; rayX2[fdir] = 0.0; rayX3[fdir] = -1.0; - fdir = DIR_PP0; + fdir = dPP0; rayX1[fdir] = c1oS2; rayX2[fdir] = c1oS2; rayX3[fdir] = 0.0; - fdir = DIR_MM0; + fdir = dMM0; rayX1[fdir] = -c1oS2; rayX2[fdir] = -c1oS2; rayX3[fdir] = 0.0; - fdir = DIR_PM0; + fdir = dPM0; rayX1[fdir] = c1oS2; rayX2[fdir] = -c1oS2; rayX3[fdir] = 0.0; - fdir = DIR_MP0; + fdir = dMP0; rayX1[fdir] = -c1oS2; rayX2[fdir] = c1oS2; rayX3[fdir] = 0.0; - fdir = DIR_P0P; + fdir = dP0P; rayX1[fdir] = c1oS2; rayX2[fdir] = 0.0; rayX3[fdir] = c1oS2; - fdir = DIR_M0M; + fdir = dM0M; rayX1[fdir] = -c1oS2; rayX2[fdir] = 0.0; rayX3[fdir] = -c1oS2; - fdir = DIR_P0M; + fdir = dP0M; rayX1[fdir] = c1oS2; rayX2[fdir] = 0.0; rayX3[fdir] = -c1oS2; - fdir = DIR_M0P; + fdir = dM0P; rayX1[fdir] = -c1oS2; rayX2[fdir] = 0.0; rayX3[fdir] = c1oS2; - fdir = DIR_0PP; + fdir = d0PP; rayX1[fdir] = 0.0; rayX2[fdir] = c1oS2; rayX3[fdir] = c1oS2; - fdir = DIR_0MM; + fdir = d0MM; rayX1[fdir] = 0.0; rayX2[fdir] = -c1oS2; rayX3[fdir] = -c1oS2; - fdir = DIR_0PM; + fdir = d0PM; rayX1[fdir] = 0.0; rayX2[fdir] = c1oS2; rayX3[fdir] = -c1oS2; - fdir = DIR_0MP; + fdir = d0MP; rayX1[fdir] = 0.0; rayX2[fdir] = -c1oS2; rayX3[fdir] = c1oS2; - fdir = DIR_PPP; + fdir = dPPP; rayX1[fdir] = c1oS3; rayX2[fdir] = c1oS3; rayX3[fdir] = c1oS3; - fdir = DIR_MPP; + fdir = dMPP; rayX1[fdir] = -c1oS3; rayX2[fdir] = c1oS3; rayX3[fdir] = c1oS3; - fdir = DIR_PMP; + fdir = dPMP; rayX1[fdir] = c1oS3; rayX2[fdir] = -c1oS3; rayX3[fdir] = c1oS3; - fdir = DIR_MMP; + fdir = dMMP; rayX1[fdir] = -c1oS3; rayX2[fdir] = -c1oS3; rayX3[fdir] = c1oS3; - fdir = DIR_PPM; + fdir = dPPM; rayX1[fdir] = c1oS3; rayX2[fdir] = c1oS3; rayX3[fdir] = -c1oS3; - fdir = DIR_MPM; + fdir = dMPM; rayX1[fdir] = -c1oS3; rayX2[fdir] = c1oS3; rayX3[fdir] = -c1oS3; - fdir = DIR_PMM; + fdir = dPMM; rayX1[fdir] = c1oS3; rayX2[fdir] = -c1oS3; rayX3[fdir] = -c1oS3; - fdir = DIR_MMM; + fdir = dMMM; rayX1[fdir] = -c1oS3; rayX2[fdir] = -c1oS3; rayX3[fdir] = -c1oS3; @@ -1084,9 +1084,9 @@ static inline real calcPress(const real *const f, real rho, real vx1, real vx2, using namespace vf::lbm::dir; real op = 1.0; - return ((f[DIR_P00] + f[DIR_M00] + f[DIR_0P0] + f[DIR_0M0] + f[DIR_00P] + f[DIR_00M] + - 2. * (f[DIR_PP0] + f[DIR_MM0] + f[DIR_PM0] + f[DIR_MP0] + f[DIR_P0P] + f[DIR_M0M] + f[DIR_P0M] + f[DIR_M0P] + f[DIR_0PP] + f[DIR_0MM] + f[DIR_0PM] + f[DIR_0MP]) + - 3. * (f[DIR_PPP] + f[DIR_MMP] + f[DIR_PMP] + f[DIR_MPP] + f[DIR_PPM] + f[DIR_MMM] + f[DIR_PMM] + f[DIR_MPM]) - + return ((f[dP00] + f[dM00] + f[d0P0] + f[d0M0] + f[d00P] + f[d00M] + + 2. * (f[dPP0] + f[dMM0] + f[dPM0] + f[dMP0] + f[dP0P] + f[dM0M] + f[dP0M] + f[dM0P] + f[d0PP] + f[d0MM] + f[d0PM] + f[d0MP]) + + 3. * (f[dPPP] + f[dMMP] + f[dPMP] + f[dMPP] + f[dPPM] + f[dMMM] + f[dPMM] + f[dMPM]) - (vx1 * vx1 + vx2 * vx2 + vx3 * vx3)) * (1 - 0.5 * op) + op * 0.5 * (rho)) * @@ -1097,35 +1097,35 @@ static inline real getShearRate(const real *const f, real collFactorF) { using namespace vf::lbm::dir; - real mfcbb = f[DIR_P00]; - real mfbcb = f[DIR_0P0]; - real mfbbc = f[DIR_00P]; - real mfccb = f[DIR_PP0]; - real mfacb = f[DIR_MP0]; - real mfcbc = f[DIR_P0P]; - real mfabc = f[DIR_M0P]; - real mfbcc = f[DIR_0PP]; - real mfbac = f[DIR_0MP]; - real mfccc = f[DIR_PPP]; - real mfacc = f[DIR_MPP]; - real mfcac = f[DIR_PMP]; - real mfaac = f[DIR_MMP]; - - real mfabb = f[DIR_M00]; - real mfbab = f[DIR_0M0]; - real mfbba = f[DIR_00M]; - real mfaab = f[DIR_MM0]; - real mfcab = f[DIR_PM0]; - real mfaba = f[DIR_M0M]; - real mfcba = f[DIR_P0M]; - real mfbaa = f[DIR_0MM]; - real mfbca = f[DIR_0PM]; - real mfaaa = f[DIR_MMM]; - real mfcaa = f[DIR_PMM]; - real mfaca = f[DIR_MPM]; - real mfcca = f[DIR_PPM]; - - real mfbbb = f[DIR_000]; + real mfcbb = f[dP00]; + real mfbcb = f[d0P0]; + real mfbbc = f[d00P]; + real mfccb = f[dPP0]; + real mfacb = f[dMP0]; + real mfcbc = f[dP0P]; + real mfabc = f[dM0P]; + real mfbcc = f[d0PP]; + real mfbac = f[d0MP]; + real mfccc = f[dPPP]; + real mfacc = f[dMPP]; + real mfcac = f[dPMP]; + real mfaac = f[dMMP]; + + real mfabb = f[dM00]; + real mfbab = f[d0M0]; + real mfbba = f[d00M]; + real mfaab = f[dMM0]; + real mfcab = f[dPM0]; + real mfaba = f[dM0M]; + real mfcba = f[dP0M]; + real mfbaa = f[d0MM]; + real mfbca = f[d0PM]; + real mfaaa = f[dMMM]; + real mfcaa = f[dPMM]; + real mfaca = f[dMPM]; + real mfcca = f[dPPM]; + + real mfbbb = f[d000]; real m0, m1, m2; @@ -1427,35 +1427,35 @@ static inline std::array<real,6> getSecondMoments(const real *const f, real coll using namespace vf::lbm::dir; using namespace vf::basics::constant; - real mfcbb = f[DIR_P00]; - real mfbcb = f[DIR_0P0]; - real mfbbc = f[DIR_00P]; - real mfccb = f[DIR_PP0]; - real mfacb = f[DIR_MP0]; - real mfcbc = f[DIR_P0P]; - real mfabc = f[DIR_M0P]; - real mfbcc = f[DIR_0PP]; - real mfbac = f[DIR_0MP]; - real mfccc = f[DIR_PPP]; - real mfacc = f[DIR_MPP]; - real mfcac = f[DIR_PMP]; - real mfaac = f[DIR_MMP]; - - real mfabb = f[DIR_M00]; - real mfbab = f[DIR_0M0]; - real mfbba = f[DIR_00M]; - real mfaab = f[DIR_MM0]; - real mfcab = f[DIR_PM0]; - real mfaba = f[DIR_M0M]; - real mfcba = f[DIR_P0M]; - real mfbaa = f[DIR_0MM]; - real mfbca = f[DIR_0PM]; - real mfaaa = f[DIR_MMM]; - real mfcaa = f[DIR_PMM]; - real mfaca = f[DIR_MPM]; - real mfcca = f[DIR_PPM]; - - real mfbbb = f[DIR_000]; + real mfcbb = f[dP00]; + real mfbcb = f[d0P0]; + real mfbbc = f[d00P]; + real mfccb = f[dPP0]; + real mfacb = f[dMP0]; + real mfcbc = f[dP0P]; + real mfabc = f[dM0P]; + real mfbcc = f[d0PP]; + real mfbac = f[d0MP]; + real mfccc = f[dPPP]; + real mfacc = f[dMPP]; + real mfcac = f[dPMP]; + real mfaac = f[dMMP]; + + real mfabb = f[dM00]; + real mfbab = f[d0M0]; + real mfbba = f[d00M]; + real mfaab = f[dMM0]; + real mfcab = f[dPM0]; + real mfaba = f[dM0M]; + real mfcba = f[dP0M]; + real mfbaa = f[d0MM]; + real mfbca = f[d0PM]; + real mfaaa = f[dMMM]; + real mfcaa = f[dPMM]; + real mfaca = f[dMPM]; + real mfcca = f[dPPM]; + + real mfbbb = f[d000]; real m0, m1, m2; @@ -1752,35 +1752,35 @@ static inline std::array<real, 6> getStressTensor(const real *const f, real coll using namespace vf::lbm::dir; using namespace vf::basics::constant; - real mfcbb = f[DIR_P00]; - real mfbcb = f[DIR_0P0]; - real mfbbc = f[DIR_00P]; - real mfccb = f[DIR_PP0]; - real mfacb = f[DIR_MP0]; - real mfcbc = f[DIR_P0P]; - real mfabc = f[DIR_M0P]; - real mfbcc = f[DIR_0PP]; - real mfbac = f[DIR_0MP]; - real mfccc = f[DIR_PPP]; - real mfacc = f[DIR_MPP]; - real mfcac = f[DIR_PMP]; - real mfaac = f[DIR_MMP]; - - real mfabb = f[DIR_M00]; - real mfbab = f[DIR_0M0]; - real mfbba = f[DIR_00M]; - real mfaab = f[DIR_MM0]; - real mfcab = f[DIR_PM0]; - real mfaba = f[DIR_M0M]; - real mfcba = f[DIR_P0M]; - real mfbaa = f[DIR_0MM]; - real mfbca = f[DIR_0PM]; - real mfaaa = f[DIR_MMM]; - real mfcaa = f[DIR_PMM]; - real mfaca = f[DIR_MPM]; - real mfcca = f[DIR_PPM]; - - real mfbbb = f[DIR_000]; + real mfcbb = f[dP00]; + real mfbcb = f[d0P0]; + real mfbbc = f[d00P]; + real mfccb = f[dPP0]; + real mfacb = f[dMP0]; + real mfcbc = f[dP0P]; + real mfabc = f[dM0P]; + real mfbcc = f[d0PP]; + real mfbac = f[d0MP]; + real mfccc = f[dPPP]; + real mfacc = f[dMPP]; + real mfcac = f[dPMP]; + real mfaac = f[dMMP]; + + real mfabb = f[dM00]; + real mfbab = f[d0M0]; + real mfbba = f[d00M]; + real mfaab = f[dMM0]; + real mfcab = f[dPM0]; + real mfaba = f[dM0M]; + real mfcba = f[dP0M]; + real mfbaa = f[d0MM]; + real mfbca = f[d0PM]; + real mfaaa = f[dMMM]; + real mfcaa = f[dPMM]; + real mfaca = f[dMPM]; + real mfcca = f[dPPM]; + + real mfbbb = f[d000]; real m0, m1, m2; @@ -2087,40 +2087,40 @@ static void calcMultiphaseFeq(real *const &feq /*[27]*/, const real &rho, const using namespace vf::basics::constant; real cu_sq = 1.5 * (vx1 * vx1 + vx2 * vx2 + vx3 * vx3); - feq[DIR_000] = c8o27 * (p1 + rho * c1o3 * (-cu_sq)); - feq[DIR_P00] = c2o27 * (p1 + rho * c1o3 * (3.0 * (vx1) + c9o2 * (vx1) * (vx1)-cu_sq)); - feq[DIR_M00] = c2o27 * (p1 + rho * c1o3 * (3.0 * (-vx1) + c9o2 * (-vx1) * (-vx1) - cu_sq)); - feq[DIR_0P0] = c2o27 * (p1 + rho * c1o3 * (3.0 * (vx2) + c9o2 * (vx2) * (vx2)-cu_sq)); - feq[DIR_0M0] = c2o27 * (p1 + rho * c1o3 * (3.0 * (-vx2) + c9o2 * (-vx2) * (-vx2) - cu_sq)); - feq[DIR_00P] = c2o27 * (p1 + rho * c1o3 * (3.0 * (vx3) + c9o2 * (vx3) * (vx3)-cu_sq)); - feq[DIR_00M] = c2o27 * (p1 + rho * c1o3 * (3.0 * (-vx3) + c9o2 * (-vx3) * (-vx3) - cu_sq)); - feq[DIR_PP0] = c1o54 * (p1 + rho * c1o3 * (3.0 * (vx1 + vx2) + c9o2 * (vx1 + vx2) * (vx1 + vx2) - cu_sq)); - feq[DIR_MM0] = c1o54 * (p1 + rho * c1o3 * (3.0 * (-vx1 - vx2) + c9o2 * (-vx1 - vx2) * (-vx1 - vx2) - cu_sq)); - feq[DIR_PM0] = c1o54 * (p1 + rho * c1o3 * (3.0 * (vx1 - vx2) + c9o2 * (vx1 - vx2) * (vx1 - vx2) - cu_sq)); - feq[DIR_MP0] = c1o54 * (p1 + rho * c1o3 * (3.0 * (-vx1 + vx2) + c9o2 * (-vx1 + vx2) * (-vx1 + vx2) - cu_sq)); - feq[DIR_P0P] = c1o54 * (p1 + rho * c1o3 * (3.0 * (vx1 + vx3) + c9o2 * (vx1 + vx3) * (vx1 + vx3) - cu_sq)); - feq[DIR_M0M] = c1o54 * (p1 + rho * c1o3 * (3.0 * (-vx1 - vx3) + c9o2 * (-vx1 - vx3) * (-vx1 - vx3) - cu_sq)); - feq[DIR_P0M] = c1o54 * (p1 + rho * c1o3 * (3.0 * (vx1 - vx3) + c9o2 * (vx1 - vx3) * (vx1 - vx3) - cu_sq)); - feq[DIR_M0P] = c1o54 * (p1 + rho * c1o3 * (3.0 * (-vx1 + vx3) + c9o2 * (-vx1 + vx3) * (-vx1 + vx3) - cu_sq)); - feq[DIR_0PP] = c1o54 * (p1 + rho * c1o3 * (3.0 * (vx2 + vx3) + c9o2 * (vx2 + vx3) * (vx2 + vx3) - cu_sq)); - feq[DIR_0MM] = c1o54 * (p1 + rho * c1o3 * (3.0 * (-vx2 - vx3) + c9o2 * (-vx2 - vx3) * (-vx2 - vx3) - cu_sq)); - feq[DIR_0PM] = c1o54 * (p1 + rho * c1o3 * (3.0 * (vx2 - vx3) + c9o2 * (vx2 - vx3) * (vx2 - vx3) - cu_sq)); - feq[DIR_0MP] = c1o54 * (p1 + rho * c1o3 * (3.0 * (-vx2 + vx3) + c9o2 * (-vx2 + vx3) * (-vx2 + vx3) - cu_sq)); - feq[DIR_PPP] = + feq[d000] = c8o27 * (p1 + rho * c1o3 * (-cu_sq)); + feq[dP00] = c2o27 * (p1 + rho * c1o3 * (3.0 * (vx1) + c9o2 * (vx1) * (vx1)-cu_sq)); + feq[dM00] = c2o27 * (p1 + rho * c1o3 * (3.0 * (-vx1) + c9o2 * (-vx1) * (-vx1) - cu_sq)); + feq[d0P0] = c2o27 * (p1 + rho * c1o3 * (3.0 * (vx2) + c9o2 * (vx2) * (vx2)-cu_sq)); + feq[d0M0] = c2o27 * (p1 + rho * c1o3 * (3.0 * (-vx2) + c9o2 * (-vx2) * (-vx2) - cu_sq)); + feq[d00P] = c2o27 * (p1 + rho * c1o3 * (3.0 * (vx3) + c9o2 * (vx3) * (vx3)-cu_sq)); + feq[d00M] = c2o27 * (p1 + rho * c1o3 * (3.0 * (-vx3) + c9o2 * (-vx3) * (-vx3) - cu_sq)); + feq[dPP0] = c1o54 * (p1 + rho * c1o3 * (3.0 * (vx1 + vx2) + c9o2 * (vx1 + vx2) * (vx1 + vx2) - cu_sq)); + feq[dMM0] = c1o54 * (p1 + rho * c1o3 * (3.0 * (-vx1 - vx2) + c9o2 * (-vx1 - vx2) * (-vx1 - vx2) - cu_sq)); + feq[dPM0] = c1o54 * (p1 + rho * c1o3 * (3.0 * (vx1 - vx2) + c9o2 * (vx1 - vx2) * (vx1 - vx2) - cu_sq)); + feq[dMP0] = c1o54 * (p1 + rho * c1o3 * (3.0 * (-vx1 + vx2) + c9o2 * (-vx1 + vx2) * (-vx1 + vx2) - cu_sq)); + feq[dP0P] = c1o54 * (p1 + rho * c1o3 * (3.0 * (vx1 + vx3) + c9o2 * (vx1 + vx3) * (vx1 + vx3) - cu_sq)); + feq[dM0M] = c1o54 * (p1 + rho * c1o3 * (3.0 * (-vx1 - vx3) + c9o2 * (-vx1 - vx3) * (-vx1 - vx3) - cu_sq)); + feq[dP0M] = c1o54 * (p1 + rho * c1o3 * (3.0 * (vx1 - vx3) + c9o2 * (vx1 - vx3) * (vx1 - vx3) - cu_sq)); + feq[dM0P] = c1o54 * (p1 + rho * c1o3 * (3.0 * (-vx1 + vx3) + c9o2 * (-vx1 + vx3) * (-vx1 + vx3) - cu_sq)); + feq[d0PP] = c1o54 * (p1 + rho * c1o3 * (3.0 * (vx2 + vx3) + c9o2 * (vx2 + vx3) * (vx2 + vx3) - cu_sq)); + feq[d0MM] = c1o54 * (p1 + rho * c1o3 * (3.0 * (-vx2 - vx3) + c9o2 * (-vx2 - vx3) * (-vx2 - vx3) - cu_sq)); + feq[d0PM] = c1o54 * (p1 + rho * c1o3 * (3.0 * (vx2 - vx3) + c9o2 * (vx2 - vx3) * (vx2 - vx3) - cu_sq)); + feq[d0MP] = c1o54 * (p1 + rho * c1o3 * (3.0 * (-vx2 + vx3) + c9o2 * (-vx2 + vx3) * (-vx2 + vx3) - cu_sq)); + feq[dPPP] = c1o216 * (p1 + rho * c1o3 * (3.0 * (vx1 + vx2 + vx3) + c9o2 * (vx1 + vx2 + vx3) * (vx1 + vx2 + vx3) - cu_sq)); - feq[DIR_MMM] = c1o216 * + feq[dMMM] = c1o216 * (p1 + rho * c1o3 * (3.0 * (-vx1 - vx2 - vx3) + c9o2 * (-vx1 - vx2 - vx3) * (-vx1 - vx2 - vx3) - cu_sq)); - feq[DIR_PPM] = + feq[dPPM] = c1o216 * (p1 + rho * c1o3 * (3.0 * (vx1 + vx2 - vx3) + c9o2 * (vx1 + vx2 - vx3) * (vx1 + vx2 - vx3) - cu_sq)); - feq[DIR_MMP] = c1o216 * + feq[dMMP] = c1o216 * (p1 + rho * c1o3 * (3.0 * (-vx1 - vx2 + vx3) + c9o2 * (-vx1 - vx2 + vx3) * (-vx1 - vx2 + vx3) - cu_sq)); - feq[DIR_PMP] = + feq[dPMP] = c1o216 * (p1 + rho * c1o3 * (3.0 * (vx1 - vx2 + vx3) + c9o2 * (vx1 - vx2 + vx3) * (vx1 - vx2 + vx3) - cu_sq)); - feq[DIR_MPM] = c1o216 * + feq[dMPM] = c1o216 * (p1 + rho * c1o3 * (3.0 * (-vx1 + vx2 - vx3) + c9o2 * (-vx1 + vx2 - vx3) * (-vx1 + vx2 - vx3) - cu_sq)); - feq[DIR_PMM] = + feq[dPMM] = c1o216 * (p1 + rho * c1o3 * (3.0 * (vx1 - vx2 - vx3) + c9o2 * (vx1 - vx2 - vx3) * (vx1 - vx2 - vx3) - cu_sq)); - feq[DIR_MPP] = c1o216 * + feq[dMPP] = c1o216 * (p1 + rho * c1o3 * (3.0 * (-vx1 + vx2 + vx3) + c9o2 * (-vx1 + vx2 + vx3) * (-vx1 + vx2 + vx3) - cu_sq)); } ////////////////////////////////////////////////////////////////////////// @@ -2132,33 +2132,33 @@ static void calcMultiphaseFeqVB(real *const &feq /*[27]*/, const real &p1, const using namespace vf::basics::constant; real cu_sq = 1.5 * (vx1 * vx1 + vx2 * vx2 + vx3 * vx3); - feq[DIR_000] = p1 + c8o27 * (-cu_sq); - feq[DIR_P00] = c2o27 * ((3.0 * (vx1) + c9o2 * (vx1) * (vx1)-cu_sq)); - feq[DIR_M00] = c2o27 * ((3.0 * (-vx1) + c9o2 * (-vx1) * (-vx1) - cu_sq)); - feq[DIR_0P0] = c2o27 * ((3.0 * (vx2) + c9o2 * (vx2) * (vx2)-cu_sq)); - feq[DIR_0M0] = c2o27 * ((3.0 * (-vx2) + c9o2 * (-vx2) * (-vx2) - cu_sq)); - feq[DIR_00P] = c2o27 * ((3.0 * (vx3) + c9o2 * (vx3) * (vx3)-cu_sq)); - feq[DIR_00M] = c2o27 * ((3.0 * (-vx3) + c9o2 * (-vx3) * (-vx3) - cu_sq)); - feq[DIR_PP0] = c1o54 * ((3.0 * (vx1 + vx2) + c9o2 * (vx1 + vx2) * (vx1 + vx2) - cu_sq)); - feq[DIR_MM0] = c1o54 * ((3.0 * (-vx1 - vx2) + c9o2 * (-vx1 - vx2) * (-vx1 - vx2) - cu_sq)); - feq[DIR_PM0] = c1o54 * ((3.0 * (vx1 - vx2) + c9o2 * (vx1 - vx2) * (vx1 - vx2) - cu_sq)); - feq[DIR_MP0] = c1o54 * ((3.0 * (-vx1 + vx2) + c9o2 * (-vx1 + vx2) * (-vx1 + vx2) - cu_sq)); - feq[DIR_P0P] = c1o54 * ((3.0 * (vx1 + vx3) + c9o2 * (vx1 + vx3) * (vx1 + vx3) - cu_sq)); - feq[DIR_M0M] = c1o54 * ((3.0 * (-vx1 - vx3) + c9o2 * (-vx1 - vx3) * (-vx1 - vx3) - cu_sq)); - feq[DIR_P0M] = c1o54 * ((3.0 * (vx1 - vx3) + c9o2 * (vx1 - vx3) * (vx1 - vx3) - cu_sq)); - feq[DIR_M0P] = c1o54 * ((3.0 * (-vx1 + vx3) + c9o2 * (-vx1 + vx3) * (-vx1 + vx3) - cu_sq)); - feq[DIR_0PP] = c1o54 * ((3.0 * (vx2 + vx3) + c9o2 * (vx2 + vx3) * (vx2 + vx3) - cu_sq)); - feq[DIR_0MM] = c1o54 * ((3.0 * (-vx2 - vx3) + c9o2 * (-vx2 - vx3) * (-vx2 - vx3) - cu_sq)); - feq[DIR_0PM] = c1o54 * ((3.0 * (vx2 - vx3) + c9o2 * (vx2 - vx3) * (vx2 - vx3) - cu_sq)); - feq[DIR_0MP] = c1o54 * ((3.0 * (-vx2 + vx3) + c9o2 * (-vx2 + vx3) * (-vx2 + vx3) - cu_sq)); - feq[DIR_PPP] = c1o216 * ((3.0 * (vx1 + vx2 + vx3) + c9o2 * (vx1 + vx2 + vx3) * (vx1 + vx2 + vx3) - cu_sq)); - feq[DIR_MMM] = c1o216 * ((3.0 * (-vx1 - vx2 - vx3) + c9o2 * (-vx1 - vx2 - vx3) * (-vx1 - vx2 - vx3) - cu_sq)); - feq[DIR_PPM] = c1o216 * ((3.0 * (vx1 + vx2 - vx3) + c9o2 * (vx1 + vx2 - vx3) * (vx1 + vx2 - vx3) - cu_sq)); - feq[DIR_MMP] = c1o216 * ((3.0 * (-vx1 - vx2 + vx3) + c9o2 * (-vx1 - vx2 + vx3) * (-vx1 - vx2 + vx3) - cu_sq)); - feq[DIR_PMP] = c1o216 * ((3.0 * (vx1 - vx2 + vx3) + c9o2 * (vx1 - vx2 + vx3) * (vx1 - vx2 + vx3) - cu_sq)); - feq[DIR_MPM] = c1o216 * ((3.0 * (-vx1 + vx2 - vx3) + c9o2 * (-vx1 + vx2 - vx3) * (-vx1 + vx2 - vx3) - cu_sq)); - feq[DIR_PMM] = c1o216 * ((3.0 * (vx1 - vx2 - vx3) + c9o2 * (vx1 - vx2 - vx3) * (vx1 - vx2 - vx3) - cu_sq)); - feq[DIR_MPP] = c1o216 * ((3.0 * (-vx1 + vx2 + vx3) + c9o2 * (-vx1 + vx2 + vx3) * (-vx1 + vx2 + vx3) - cu_sq)); + feq[d000] = p1 + c8o27 * (-cu_sq); + feq[dP00] = c2o27 * ((3.0 * (vx1) + c9o2 * (vx1) * (vx1)-cu_sq)); + feq[dM00] = c2o27 * ((3.0 * (-vx1) + c9o2 * (-vx1) * (-vx1) - cu_sq)); + feq[d0P0] = c2o27 * ((3.0 * (vx2) + c9o2 * (vx2) * (vx2)-cu_sq)); + feq[d0M0] = c2o27 * ((3.0 * (-vx2) + c9o2 * (-vx2) * (-vx2) - cu_sq)); + feq[d00P] = c2o27 * ((3.0 * (vx3) + c9o2 * (vx3) * (vx3)-cu_sq)); + feq[d00M] = c2o27 * ((3.0 * (-vx3) + c9o2 * (-vx3) * (-vx3) - cu_sq)); + feq[dPP0] = c1o54 * ((3.0 * (vx1 + vx2) + c9o2 * (vx1 + vx2) * (vx1 + vx2) - cu_sq)); + feq[dMM0] = c1o54 * ((3.0 * (-vx1 - vx2) + c9o2 * (-vx1 - vx2) * (-vx1 - vx2) - cu_sq)); + feq[dPM0] = c1o54 * ((3.0 * (vx1 - vx2) + c9o2 * (vx1 - vx2) * (vx1 - vx2) - cu_sq)); + feq[dMP0] = c1o54 * ((3.0 * (-vx1 + vx2) + c9o2 * (-vx1 + vx2) * (-vx1 + vx2) - cu_sq)); + feq[dP0P] = c1o54 * ((3.0 * (vx1 + vx3) + c9o2 * (vx1 + vx3) * (vx1 + vx3) - cu_sq)); + feq[dM0M] = c1o54 * ((3.0 * (-vx1 - vx3) + c9o2 * (-vx1 - vx3) * (-vx1 - vx3) - cu_sq)); + feq[dP0M] = c1o54 * ((3.0 * (vx1 - vx3) + c9o2 * (vx1 - vx3) * (vx1 - vx3) - cu_sq)); + feq[dM0P] = c1o54 * ((3.0 * (-vx1 + vx3) + c9o2 * (-vx1 + vx3) * (-vx1 + vx3) - cu_sq)); + feq[d0PP] = c1o54 * ((3.0 * (vx2 + vx3) + c9o2 * (vx2 + vx3) * (vx2 + vx3) - cu_sq)); + feq[d0MM] = c1o54 * ((3.0 * (-vx2 - vx3) + c9o2 * (-vx2 - vx3) * (-vx2 - vx3) - cu_sq)); + feq[d0PM] = c1o54 * ((3.0 * (vx2 - vx3) + c9o2 * (vx2 - vx3) * (vx2 - vx3) - cu_sq)); + feq[d0MP] = c1o54 * ((3.0 * (-vx2 + vx3) + c9o2 * (-vx2 + vx3) * (-vx2 + vx3) - cu_sq)); + feq[dPPP] = c1o216 * ((3.0 * (vx1 + vx2 + vx3) + c9o2 * (vx1 + vx2 + vx3) * (vx1 + vx2 + vx3) - cu_sq)); + feq[dMMM] = c1o216 * ((3.0 * (-vx1 - vx2 - vx3) + c9o2 * (-vx1 - vx2 - vx3) * (-vx1 - vx2 - vx3) - cu_sq)); + feq[dPPM] = c1o216 * ((3.0 * (vx1 + vx2 - vx3) + c9o2 * (vx1 + vx2 - vx3) * (vx1 + vx2 - vx3) - cu_sq)); + feq[dMMP] = c1o216 * ((3.0 * (-vx1 - vx2 + vx3) + c9o2 * (-vx1 - vx2 + vx3) * (-vx1 - vx2 + vx3) - cu_sq)); + feq[dPMP] = c1o216 * ((3.0 * (vx1 - vx2 + vx3) + c9o2 * (vx1 - vx2 + vx3) * (vx1 - vx2 + vx3) - cu_sq)); + feq[dMPM] = c1o216 * ((3.0 * (-vx1 + vx2 - vx3) + c9o2 * (-vx1 + vx2 - vx3) * (-vx1 + vx2 - vx3) - cu_sq)); + feq[dPMM] = c1o216 * ((3.0 * (vx1 - vx2 - vx3) + c9o2 * (vx1 - vx2 - vx3) * (vx1 - vx2 - vx3) - cu_sq)); + feq[dMPP] = c1o216 * ((3.0 * (-vx1 + vx2 + vx3) + c9o2 * (-vx1 + vx2 + vx3) * (-vx1 + vx2 + vx3) - cu_sq)); } ////////////////////////////////////////////////////////////////////////// static void calcMultiphaseHeq(real *const &heq /*[27]*/, const real &phi, const real &vx1, const real &vx2, @@ -2169,33 +2169,33 @@ static void calcMultiphaseHeq(real *const &heq /*[27]*/, const real &phi, const real cu_sq = 1.5 * (vx1 * vx1 + vx2 * vx2 + vx3 * vx3); - heq[DIR_000] = c8o27 * phi * (1.0 - cu_sq); - heq[DIR_P00] = c2o27 * phi * (1.0 + 3.0 * (vx1) + c9o2 * (vx1) * (vx1)-cu_sq); - heq[DIR_M00] = c2o27 * phi * (1.0 + 3.0 * (-vx1) + c9o2 * (-vx1) * (-vx1) - cu_sq); - heq[DIR_0P0] = c2o27 * phi * (1.0 + 3.0 * (vx2) + c9o2 * (vx2) * (vx2)-cu_sq); - heq[DIR_0M0] = c2o27 * phi * (1.0 + 3.0 * (-vx2) + c9o2 * (-vx2) * (-vx2) - cu_sq); - heq[DIR_00P] = c2o27 * phi * (1.0 + 3.0 * (vx3) + c9o2 * (vx3) * (vx3)-cu_sq); - heq[DIR_00M] = c2o27 * phi * (1.0 + 3.0 * (-vx3) + c9o2 * (-vx3) * (-vx3) - cu_sq); - heq[DIR_PP0] = c1o54 * phi * (1.0 + 3.0 * (vx1 + vx2) + c9o2 * (vx1 + vx2) * (vx1 + vx2) - cu_sq); - heq[DIR_MM0] = c1o54 * phi * (1.0 + 3.0 * (-vx1 - vx2) + c9o2 * (-vx1 - vx2) * (-vx1 - vx2) - cu_sq); - heq[DIR_PM0] = c1o54 * phi * (1.0 + 3.0 * (vx1 - vx2) + c9o2 * (vx1 - vx2) * (vx1 - vx2) - cu_sq); - heq[DIR_MP0] = c1o54 * phi * (1.0 + 3.0 * (-vx1 + vx2) + c9o2 * (-vx1 + vx2) * (-vx1 + vx2) - cu_sq); - heq[DIR_P0P] = c1o54 * phi * (1.0 + 3.0 * (vx1 + vx3) + c9o2 * (vx1 + vx3) * (vx1 + vx3) - cu_sq); - heq[DIR_M0M] = c1o54 * phi * (1.0 + 3.0 * (-vx1 - vx3) + c9o2 * (-vx1 - vx3) * (-vx1 - vx3) - cu_sq); - heq[DIR_P0M] = c1o54 * phi * (1.0 + 3.0 * (vx1 - vx3) + c9o2 * (vx1 - vx3) * (vx1 - vx3) - cu_sq); - heq[DIR_M0P] = c1o54 * phi * (1.0 + 3.0 * (-vx1 + vx3) + c9o2 * (-vx1 + vx3) * (-vx1 + vx3) - cu_sq); - heq[DIR_0PP] = c1o54 * phi * (1.0 + 3.0 * (vx2 + vx3) + c9o2 * (vx2 + vx3) * (vx2 + vx3) - cu_sq); - heq[DIR_0MM] = c1o54 * phi * (1.0 + 3.0 * (-vx2 - vx3) + c9o2 * (-vx2 - vx3) * (-vx2 - vx3) - cu_sq); - heq[DIR_0PM] = c1o54 * phi * (1.0 + 3.0 * (vx2 - vx3) + c9o2 * (vx2 - vx3) * (vx2 - vx3) - cu_sq); - heq[DIR_0MP] = c1o54 * phi * (1.0 + 3.0 * (-vx2 + vx3) + c9o2 * (-vx2 + vx3) * (-vx2 + vx3) - cu_sq); - heq[DIR_PPP] = c1o216 * phi * (1.0 + 3.0 * (vx1 + vx2 + vx3) + c9o2 * (vx1 + vx2 + vx3) * (vx1 + vx2 + vx3) - cu_sq); - heq[DIR_MMM] = c1o216 * phi * (1.0 + 3.0 * (-vx1 - vx2 - vx3) + c9o2 * (-vx1 - vx2 - vx3) * (-vx1 - vx2 - vx3) - cu_sq); - heq[DIR_PPM] = c1o216 * phi * (1.0 + 3.0 * (vx1 + vx2 - vx3) + c9o2 * (vx1 + vx2 - vx3) * (vx1 + vx2 - vx3) - cu_sq); - heq[DIR_MMP] = c1o216 * phi * (1.0 + 3.0 * (-vx1 - vx2 + vx3) + c9o2 * (-vx1 - vx2 + vx3) * (-vx1 - vx2 + vx3) - cu_sq); - heq[DIR_PMP] = c1o216 * phi * (1.0 + 3.0 * (vx1 - vx2 + vx3) + c9o2 * (vx1 - vx2 + vx3) * (vx1 - vx2 + vx3) - cu_sq); - heq[DIR_MPM] = c1o216 * phi * (1.0 + 3.0 * (-vx1 + vx2 - vx3) + c9o2 * (-vx1 + vx2 - vx3) * (-vx1 + vx2 - vx3) - cu_sq); - heq[DIR_PMM] = c1o216 * phi * (1.0 + 3.0 * (vx1 - vx2 - vx3) + c9o2 * (vx1 - vx2 - vx3) * (vx1 - vx2 - vx3) - cu_sq); - heq[DIR_MPP] = c1o216 * phi * (1.0 + 3.0 * (-vx1 + vx2 + vx3) + c9o2 * (-vx1 + vx2 + vx3) * (-vx1 + vx2 + vx3) - cu_sq); + heq[d000] = c8o27 * phi * (1.0 - cu_sq); + heq[dP00] = c2o27 * phi * (1.0 + 3.0 * (vx1) + c9o2 * (vx1) * (vx1)-cu_sq); + heq[dM00] = c2o27 * phi * (1.0 + 3.0 * (-vx1) + c9o2 * (-vx1) * (-vx1) - cu_sq); + heq[d0P0] = c2o27 * phi * (1.0 + 3.0 * (vx2) + c9o2 * (vx2) * (vx2)-cu_sq); + heq[d0M0] = c2o27 * phi * (1.0 + 3.0 * (-vx2) + c9o2 * (-vx2) * (-vx2) - cu_sq); + heq[d00P] = c2o27 * phi * (1.0 + 3.0 * (vx3) + c9o2 * (vx3) * (vx3)-cu_sq); + heq[d00M] = c2o27 * phi * (1.0 + 3.0 * (-vx3) + c9o2 * (-vx3) * (-vx3) - cu_sq); + heq[dPP0] = c1o54 * phi * (1.0 + 3.0 * (vx1 + vx2) + c9o2 * (vx1 + vx2) * (vx1 + vx2) - cu_sq); + heq[dMM0] = c1o54 * phi * (1.0 + 3.0 * (-vx1 - vx2) + c9o2 * (-vx1 - vx2) * (-vx1 - vx2) - cu_sq); + heq[dPM0] = c1o54 * phi * (1.0 + 3.0 * (vx1 - vx2) + c9o2 * (vx1 - vx2) * (vx1 - vx2) - cu_sq); + heq[dMP0] = c1o54 * phi * (1.0 + 3.0 * (-vx1 + vx2) + c9o2 * (-vx1 + vx2) * (-vx1 + vx2) - cu_sq); + heq[dP0P] = c1o54 * phi * (1.0 + 3.0 * (vx1 + vx3) + c9o2 * (vx1 + vx3) * (vx1 + vx3) - cu_sq); + heq[dM0M] = c1o54 * phi * (1.0 + 3.0 * (-vx1 - vx3) + c9o2 * (-vx1 - vx3) * (-vx1 - vx3) - cu_sq); + heq[dP0M] = c1o54 * phi * (1.0 + 3.0 * (vx1 - vx3) + c9o2 * (vx1 - vx3) * (vx1 - vx3) - cu_sq); + heq[dM0P] = c1o54 * phi * (1.0 + 3.0 * (-vx1 + vx3) + c9o2 * (-vx1 + vx3) * (-vx1 + vx3) - cu_sq); + heq[d0PP] = c1o54 * phi * (1.0 + 3.0 * (vx2 + vx3) + c9o2 * (vx2 + vx3) * (vx2 + vx3) - cu_sq); + heq[d0MM] = c1o54 * phi * (1.0 + 3.0 * (-vx2 - vx3) + c9o2 * (-vx2 - vx3) * (-vx2 - vx3) - cu_sq); + heq[d0PM] = c1o54 * phi * (1.0 + 3.0 * (vx2 - vx3) + c9o2 * (vx2 - vx3) * (vx2 - vx3) - cu_sq); + heq[d0MP] = c1o54 * phi * (1.0 + 3.0 * (-vx2 + vx3) + c9o2 * (-vx2 + vx3) * (-vx2 + vx3) - cu_sq); + heq[dPPP] = c1o216 * phi * (1.0 + 3.0 * (vx1 + vx2 + vx3) + c9o2 * (vx1 + vx2 + vx3) * (vx1 + vx2 + vx3) - cu_sq); + heq[dMMM] = c1o216 * phi * (1.0 + 3.0 * (-vx1 - vx2 - vx3) + c9o2 * (-vx1 - vx2 - vx3) * (-vx1 - vx2 - vx3) - cu_sq); + heq[dPPM] = c1o216 * phi * (1.0 + 3.0 * (vx1 + vx2 - vx3) + c9o2 * (vx1 + vx2 - vx3) * (vx1 + vx2 - vx3) - cu_sq); + heq[dMMP] = c1o216 * phi * (1.0 + 3.0 * (-vx1 - vx2 + vx3) + c9o2 * (-vx1 - vx2 + vx3) * (-vx1 - vx2 + vx3) - cu_sq); + heq[dPMP] = c1o216 * phi * (1.0 + 3.0 * (vx1 - vx2 + vx3) + c9o2 * (vx1 - vx2 + vx3) * (vx1 - vx2 + vx3) - cu_sq); + heq[dMPM] = c1o216 * phi * (1.0 + 3.0 * (-vx1 + vx2 - vx3) + c9o2 * (-vx1 + vx2 - vx3) * (-vx1 + vx2 - vx3) - cu_sq); + heq[dPMM] = c1o216 * phi * (1.0 + 3.0 * (vx1 - vx2 - vx3) + c9o2 * (vx1 - vx2 - vx3) * (vx1 - vx2 - vx3) - cu_sq); + heq[dMPP] = c1o216 * phi * (1.0 + 3.0 * (-vx1 + vx2 + vx3) + c9o2 * (-vx1 + vx2 + vx3) * (-vx1 + vx2 + vx3) - cu_sq); } } // namespace D3Q27System diff --git a/src/cpu/VirtualFluidsCore/LBM/ICell.h b/src/cpu/core/LBM/ICell.h similarity index 100% rename from src/cpu/VirtualFluidsCore/LBM/ICell.h rename to src/cpu/core/LBM/ICell.h diff --git a/src/cpu/VirtualFluidsCore/LBM/ILBMKernel.h b/src/cpu/core/LBM/ILBMKernel.h similarity index 100% rename from src/cpu/VirtualFluidsCore/LBM/ILBMKernel.h rename to src/cpu/core/LBM/ILBMKernel.h diff --git a/src/cpu/VirtualFluidsCore/LBM/IncompressibleCumulantLBMKernel.cpp b/src/cpu/core/LBM/IncompressibleCumulantLBMKernel.cpp similarity index 100% rename from src/cpu/VirtualFluidsCore/LBM/IncompressibleCumulantLBMKernel.cpp rename to src/cpu/core/LBM/IncompressibleCumulantLBMKernel.cpp diff --git a/src/cpu/VirtualFluidsCore/LBM/IncompressibleCumulantLBMKernel.h b/src/cpu/core/LBM/IncompressibleCumulantLBMKernel.h similarity index 100% rename from src/cpu/VirtualFluidsCore/LBM/IncompressibleCumulantLBMKernel.h rename to src/cpu/core/LBM/IncompressibleCumulantLBMKernel.h diff --git a/src/cpu/VirtualFluidsCore/LBM/IncompressibleCumulantWithSpongeLayerLBMKernel.cpp b/src/cpu/core/LBM/IncompressibleCumulantWithSpongeLayerLBMKernel.cpp similarity index 99% rename from src/cpu/VirtualFluidsCore/LBM/IncompressibleCumulantWithSpongeLayerLBMKernel.cpp rename to src/cpu/core/LBM/IncompressibleCumulantWithSpongeLayerLBMKernel.cpp index 0ac578d90615b0ab0ba4989b6b70d680eb0e8c44..d052f4f71a4e03ad64c4bf26e9372e0b23423f00 100644 --- a/src/cpu/VirtualFluidsCore/LBM/IncompressibleCumulantWithSpongeLayerLBMKernel.cpp +++ b/src/cpu/core/LBM/IncompressibleCumulantWithSpongeLayerLBMKernel.cpp @@ -71,37 +71,37 @@ void IncompressibleCumulantWithSpongeLayerLBMKernel::initRelaxFactor(int vdir, r { switch (direction) { - case DIR_P00: + case dP00: muX1 = (real)(x1 + ix1 * maxX1); if (muX1 >= (sizeX - sizeSP) / deltaT) spongeFactor = (sizeX - (muX1 * deltaT + c1o1)) / sizeSP / c2o1 + c1o2; else spongeFactor = c1o1; break; - case DIR_M00: + case dM00: muX1 = (real)(x1 + ix1 * maxX1); if (muX1 <= sizeSP / deltaT) spongeFactor = (sizeSP - (muX1 * deltaT + c1o1)) / sizeSP / c2o1 + c1o2; else spongeFactor = c1o1; break; - case DIR_0P0: + case d0P0: muX2 = (real)(x2 + ix2 * maxX2); if (muX2 >= (sizeX - sizeSP) / deltaT) spongeFactor = (sizeX - (muX2 * deltaT + c1o1)) / sizeSP / c2o1 + c1o2; else spongeFactor = c1o1; break; - case DIR_0M0: + case d0M0: muX2 = (real)(x2 + ix2 * maxX2); if (muX2 <= sizeSP / deltaT) spongeFactor = (sizeSP - (muX2 * deltaT + c1o1)) / sizeSP / c2o1 + c1o2; else spongeFactor = c1o1; break; - case DIR_00P: + case d00P: muX3 = (real)(x3 + ix3 * maxX3); if (muX3 >= (sizeX - sizeSP) / deltaT) spongeFactor = (sizeX - (muX3 * deltaT + c1o1)) / sizeSP / c2o1 + c1o2; else spongeFactor = c1o1; break; - case DIR_00M: + case d00M: muX3 = (real)(x3 + ix3 * maxX3); if (muX3 <= sizeSP / deltaT) spongeFactor = (sizeSP - (muX3 * deltaT + c1o1)) / sizeSP / c2o1 + c1o2; diff --git a/src/cpu/VirtualFluidsCore/LBM/IncompressibleCumulantWithSpongeLayerLBMKernel.h b/src/cpu/core/LBM/IncompressibleCumulantWithSpongeLayerLBMKernel.h similarity index 100% rename from src/cpu/VirtualFluidsCore/LBM/IncompressibleCumulantWithSpongeLayerLBMKernel.h rename to src/cpu/core/LBM/IncompressibleCumulantWithSpongeLayerLBMKernel.h diff --git a/src/cpu/VirtualFluidsCore/LBM/InitDensityLBMKernel.cpp b/src/cpu/core/LBM/InitDensityLBMKernel.cpp similarity index 86% rename from src/cpu/VirtualFluidsCore/LBM/InitDensityLBMKernel.cpp rename to src/cpu/core/LBM/InitDensityLBMKernel.cpp index 574014992fe58993aa5720d482b0931293be5d6d..734e2e33fd478e86151309d78c24b48fc9e0a401 100644 --- a/src/cpu/VirtualFluidsCore/LBM/InitDensityLBMKernel.cpp +++ b/src/cpu/core/LBM/InitDensityLBMKernel.cpp @@ -897,45 +897,45 @@ void InitDensityLBMKernel::calculate(int /*step*/) ////////////////////////////////////////////////////////////////////////// //read distribution //////////////////////////////////////////////////////////////////////////// - f[DIR_000] = (*this->zeroDistributions)(x1, x2, x3); + f[d000] = (*this->zeroDistributions)(x1, x2, x3); - f[DIR_P00] = (*this->localDistributions)(D3Q27System::ET_E, x1, x2, x3); - f[DIR_0P0] = (*this->localDistributions)(D3Q27System::ET_N, x1, x2, x3); - f[DIR_00P] = (*this->localDistributions)(D3Q27System::ET_T, x1, x2, x3); - f[DIR_PP0] = (*this->localDistributions)(D3Q27System::ET_NE, x1, x2, x3); - f[DIR_MP0] = (*this->localDistributions)(D3Q27System::ET_NW, x1p, x2, x3); - f[DIR_P0P] = (*this->localDistributions)(D3Q27System::ET_TE, x1, x2, x3); - f[DIR_M0P] = (*this->localDistributions)(D3Q27System::ET_TW, x1p, x2, x3); - f[DIR_0PP] = (*this->localDistributions)(D3Q27System::ET_TN, x1, x2, x3); - f[DIR_0MP] = (*this->localDistributions)(D3Q27System::ET_TS, x1, x2p, x3); - f[DIR_PPP] = (*this->localDistributions)(D3Q27System::ET_TNE, x1, x2, x3); - f[DIR_MPP] = (*this->localDistributions)(D3Q27System::ET_TNW, x1p, x2, x3); - f[DIR_PMP] = (*this->localDistributions)(D3Q27System::ET_TSE, x1, x2p, x3); - f[DIR_MMP] = (*this->localDistributions)(D3Q27System::ET_TSW, x1p, x2p, x3); + f[dP00] = (*this->localDistributions)(D3Q27System::ET_E, x1, x2, x3); + f[d0P0] = (*this->localDistributions)(D3Q27System::ET_N, x1, x2, x3); + f[d00P] = (*this->localDistributions)(D3Q27System::ET_T, x1, x2, x3); + f[dPP0] = (*this->localDistributions)(D3Q27System::ET_NE, x1, x2, x3); + f[dMP0] = (*this->localDistributions)(D3Q27System::ET_NW, x1p, x2, x3); + f[dP0P] = (*this->localDistributions)(D3Q27System::ET_TE, x1, x2, x3); + f[dM0P] = (*this->localDistributions)(D3Q27System::ET_TW, x1p, x2, x3); + f[d0PP] = (*this->localDistributions)(D3Q27System::ET_TN, x1, x2, x3); + f[d0MP] = (*this->localDistributions)(D3Q27System::ET_TS, x1, x2p, x3); + f[dPPP] = (*this->localDistributions)(D3Q27System::ET_TNE, x1, x2, x3); + f[dMPP] = (*this->localDistributions)(D3Q27System::ET_TNW, x1p, x2, x3); + f[dPMP] = (*this->localDistributions)(D3Q27System::ET_TSE, x1, x2p, x3); + f[dMMP] = (*this->localDistributions)(D3Q27System::ET_TSW, x1p, x2p, x3); - f[DIR_M00] = (*this->nonLocalDistributions)(D3Q27System::ET_W, x1p, x2, x3); - f[DIR_0M0] = (*this->nonLocalDistributions)(D3Q27System::ET_S, x1, x2p, x3); - f[DIR_00M] = (*this->nonLocalDistributions)(D3Q27System::ET_B, x1, x2, x3p); - f[DIR_MM0] = (*this->nonLocalDistributions)(D3Q27System::ET_SW, x1p, x2p, x3); - f[DIR_PM0] = (*this->nonLocalDistributions)(D3Q27System::ET_SE, x1, x2p, x3); - f[DIR_M0M] = (*this->nonLocalDistributions)(D3Q27System::ET_BW, x1p, x2, x3p); - f[DIR_P0M] = (*this->nonLocalDistributions)(D3Q27System::ET_BE, x1, x2, x3p); - f[DIR_0MM] = (*this->nonLocalDistributions)(D3Q27System::ET_BS, x1, x2p, x3p); - f[DIR_0PM] = (*this->nonLocalDistributions)(D3Q27System::ET_BN, x1, x2, x3p); - f[DIR_MMM] = (*this->nonLocalDistributions)(D3Q27System::ET_BSW, x1p, x2p, x3p); - f[DIR_PMM] = (*this->nonLocalDistributions)(D3Q27System::ET_BSE, x1, x2p, x3p); - f[DIR_MPM] = (*this->nonLocalDistributions)(D3Q27System::ET_BNW, x1p, x2, x3p); - f[DIR_PPM] = (*this->nonLocalDistributions)(D3Q27System::ET_BNE, x1, x2, x3p); + f[dM00] = (*this->nonLocalDistributions)(D3Q27System::ET_W, x1p, x2, x3); + f[d0M0] = (*this->nonLocalDistributions)(D3Q27System::ET_S, x1, x2p, x3); + f[d00M] = (*this->nonLocalDistributions)(D3Q27System::ET_B, x1, x2, x3p); + f[dMM0] = (*this->nonLocalDistributions)(D3Q27System::ET_SW, x1p, x2p, x3); + f[dPM0] = (*this->nonLocalDistributions)(D3Q27System::ET_SE, x1, x2p, x3); + f[dM0M] = (*this->nonLocalDistributions)(D3Q27System::ET_BW, x1p, x2, x3p); + f[dP0M] = (*this->nonLocalDistributions)(D3Q27System::ET_BE, x1, x2, x3p); + f[d0MM] = (*this->nonLocalDistributions)(D3Q27System::ET_BS, x1, x2p, x3p); + f[d0PM] = (*this->nonLocalDistributions)(D3Q27System::ET_BN, x1, x2, x3p); + f[dMMM] = (*this->nonLocalDistributions)(D3Q27System::ET_BSW, x1p, x2p, x3p); + f[dPMM] = (*this->nonLocalDistributions)(D3Q27System::ET_BSE, x1, x2p, x3p); + f[dMPM] = (*this->nonLocalDistributions)(D3Q27System::ET_BNW, x1p, x2, x3p); + f[dPPM] = (*this->nonLocalDistributions)(D3Q27System::ET_BNE, x1, x2, x3p); ////////////////////////////////////////////////////////////////////////// - drho = ((f[DIR_PPP]+f[DIR_MMM])+(f[DIR_PMP]+f[DIR_MPM]))+((f[DIR_PMM]+f[DIR_MPP])+(f[DIR_MMP]+f[DIR_PPM])) - +(((f[DIR_PP0]+f[DIR_MM0])+(f[DIR_PM0]+f[DIR_MP0]))+((f[DIR_P0P]+f[DIR_M0M])+(f[DIR_P0M]+f[DIR_M0P])) - +((f[DIR_0PM]+f[DIR_0MP])+(f[DIR_0PP]+f[DIR_0MM])))+((f[DIR_P00]+f[DIR_M00])+(f[DIR_0P0]+f[DIR_0M0]) - +(f[DIR_00P]+f[DIR_00M]))+f[DIR_000]; + drho = ((f[dPPP]+f[dMMM])+(f[dPMP]+f[dMPM]))+((f[dPMM]+f[dMPP])+(f[dMMP]+f[dPPM])) + +(((f[dPP0]+f[dMM0])+(f[dPM0]+f[dMP0]))+((f[dP0P]+f[dM0M])+(f[dP0M]+f[dM0P])) + +((f[d0PM]+f[d0MP])+(f[d0PP]+f[d0MM])))+((f[dP00]+f[dM00])+(f[d0P0]+f[d0M0]) + +(f[d00P]+f[d00M]))+f[d000]; //vx1 = ((((f[TNE]-f[BSW])+(f[TSE]-f[BNW]))+((f[BSE]-f[TNW])+(f[BNE]-f[TSW])))+ // (((f[BE]-f[TW])+(f[TE]-f[BW]))+((f[SE]-f[NW])+(f[NE]-f[SW])))+ - // (f[DIR_P00]-f[W])); + // (f[dP00]-f[W])); //vx2 = ((((f[TNE]-f[BSW])+(f[BNW]-f[TSE]))+((f[TNW]-f[BSE])+(f[BNE]-f[TSW])))+ // (((f[BN]-f[TS])+(f[TN]-f[BS]))+((f[NW]-f[SE])+(f[NE]-f[SW])))+ @@ -959,67 +959,67 @@ void InitDensityLBMKernel::calculate(int /*step*/) real cu_sq = c3o2*(vx1*vx1+vx2*vx2+vx3*vx3); - feq[DIR_000] = c8o27*(drho-cu_sq); - feq[DIR_P00] = c2o27*(drho+c3o1*(vx1)+c9o2*(vx1)*(vx1)-cu_sq); - feq[DIR_M00] = c2o27*(drho+c3o1*(-vx1)+c9o2*(-vx1)*(-vx1)-cu_sq); - feq[DIR_0P0] = c2o27*(drho+c3o1*(vx2)+c9o2*(vx2)*(vx2)-cu_sq); - feq[DIR_0M0] = c2o27*(drho+c3o1*(-vx2)+c9o2*(-vx2)*(-vx2)-cu_sq); - feq[DIR_00P] = c2o27*(drho+c3o1*(vx3)+c9o2*(vx3)*(vx3)-cu_sq); - feq[DIR_00M] = c2o27*(drho+c3o1*(-vx3)+c9o2*(-vx3)*(-vx3)-cu_sq); - feq[DIR_PP0] = c1o54*(drho+c3o1*(vx1+vx2)+c9o2*(vx1+vx2)*(vx1+vx2)-cu_sq); - feq[DIR_MM0] = c1o54*(drho+c3o1*(-vx1-vx2)+c9o2*(-vx1-vx2)*(-vx1-vx2)-cu_sq); - feq[DIR_PM0] = c1o54*(drho+c3o1*(vx1-vx2)+c9o2*(vx1-vx2)*(vx1-vx2)-cu_sq); - feq[DIR_MP0] = c1o54*(drho+c3o1*(-vx1+vx2)+c9o2*(-vx1+vx2)*(-vx1+vx2)-cu_sq); - feq[DIR_P0P] = c1o54*(drho+c3o1*(vx1+vx3)+c9o2*(vx1+vx3)*(vx1+vx3)-cu_sq); - feq[DIR_M0M] = c1o54*(drho+c3o1*(-vx1-vx3)+c9o2*(-vx1-vx3)*(-vx1-vx3)-cu_sq); - feq[DIR_P0M] = c1o54*(drho+c3o1*(vx1-vx3)+c9o2*(vx1-vx3)*(vx1-vx3)-cu_sq); - feq[DIR_M0P] = c1o54*(drho+c3o1*(-vx1+vx3)+c9o2*(-vx1+vx3)*(-vx1+vx3)-cu_sq); - feq[DIR_0PP] = c1o54*(drho+c3o1*(vx2+vx3)+c9o2*(vx2+vx3)*(vx2+vx3)-cu_sq); - feq[DIR_0MM] = c1o54*(drho+c3o1*(-vx2-vx3)+c9o2*(-vx2-vx3)*(-vx2-vx3)-cu_sq); - feq[DIR_0PM] = c1o54*(drho+c3o1*(vx2-vx3)+c9o2*(vx2-vx3)*(vx2-vx3)-cu_sq); - feq[DIR_0MP] = c1o54*(drho+c3o1*(-vx2+vx3)+c9o2*(-vx2+vx3)*(-vx2+vx3)-cu_sq); - feq[DIR_PPP] = c1o216*(drho+c3o1*(vx1+vx2+vx3)+c9o2*(vx1+vx2+vx3)*(vx1+vx2+vx3)-cu_sq); - feq[DIR_MMM] = c1o216*(drho+c3o1*(-vx1-vx2-vx3)+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq); - feq[DIR_PPM] = c1o216*(drho+c3o1*(vx1+vx2-vx3)+c9o2*(vx1+vx2-vx3)*(vx1+vx2-vx3)-cu_sq); - feq[DIR_MMP] = c1o216*(drho+c3o1*(-vx1-vx2+vx3)+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq); - feq[DIR_PMP] = c1o216*(drho+c3o1*(vx1-vx2+vx3)+c9o2*(vx1-vx2+vx3)*(vx1-vx2+vx3)-cu_sq); - feq[DIR_MPM] = c1o216*(drho+c3o1*(-vx1+vx2-vx3)+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq); - feq[DIR_PMM] = c1o216*(drho+c3o1*(vx1-vx2-vx3)+c9o2*(vx1-vx2-vx3)*(vx1-vx2-vx3)-cu_sq); - feq[DIR_MPP] = c1o216*(drho+c3o1*(-vx1+vx2+vx3)+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq); + feq[d000] = c8o27*(drho-cu_sq); + feq[dP00] = c2o27*(drho+c3o1*(vx1)+c9o2*(vx1)*(vx1)-cu_sq); + feq[dM00] = c2o27*(drho+c3o1*(-vx1)+c9o2*(-vx1)*(-vx1)-cu_sq); + feq[d0P0] = c2o27*(drho+c3o1*(vx2)+c9o2*(vx2)*(vx2)-cu_sq); + feq[d0M0] = c2o27*(drho+c3o1*(-vx2)+c9o2*(-vx2)*(-vx2)-cu_sq); + feq[d00P] = c2o27*(drho+c3o1*(vx3)+c9o2*(vx3)*(vx3)-cu_sq); + feq[d00M] = c2o27*(drho+c3o1*(-vx3)+c9o2*(-vx3)*(-vx3)-cu_sq); + feq[dPP0] = c1o54*(drho+c3o1*(vx1+vx2)+c9o2*(vx1+vx2)*(vx1+vx2)-cu_sq); + feq[dMM0] = c1o54*(drho+c3o1*(-vx1-vx2)+c9o2*(-vx1-vx2)*(-vx1-vx2)-cu_sq); + feq[dPM0] = c1o54*(drho+c3o1*(vx1-vx2)+c9o2*(vx1-vx2)*(vx1-vx2)-cu_sq); + feq[dMP0] = c1o54*(drho+c3o1*(-vx1+vx2)+c9o2*(-vx1+vx2)*(-vx1+vx2)-cu_sq); + feq[dP0P] = c1o54*(drho+c3o1*(vx1+vx3)+c9o2*(vx1+vx3)*(vx1+vx3)-cu_sq); + feq[dM0M] = c1o54*(drho+c3o1*(-vx1-vx3)+c9o2*(-vx1-vx3)*(-vx1-vx3)-cu_sq); + feq[dP0M] = c1o54*(drho+c3o1*(vx1-vx3)+c9o2*(vx1-vx3)*(vx1-vx3)-cu_sq); + feq[dM0P] = c1o54*(drho+c3o1*(-vx1+vx3)+c9o2*(-vx1+vx3)*(-vx1+vx3)-cu_sq); + feq[d0PP] = c1o54*(drho+c3o1*(vx2+vx3)+c9o2*(vx2+vx3)*(vx2+vx3)-cu_sq); + feq[d0MM] = c1o54*(drho+c3o1*(-vx2-vx3)+c9o2*(-vx2-vx3)*(-vx2-vx3)-cu_sq); + feq[d0PM] = c1o54*(drho+c3o1*(vx2-vx3)+c9o2*(vx2-vx3)*(vx2-vx3)-cu_sq); + feq[d0MP] = c1o54*(drho+c3o1*(-vx2+vx3)+c9o2*(-vx2+vx3)*(-vx2+vx3)-cu_sq); + feq[dPPP] = c1o216*(drho+c3o1*(vx1+vx2+vx3)+c9o2*(vx1+vx2+vx3)*(vx1+vx2+vx3)-cu_sq); + feq[dMMM] = c1o216*(drho+c3o1*(-vx1-vx2-vx3)+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq); + feq[dPPM] = c1o216*(drho+c3o1*(vx1+vx2-vx3)+c9o2*(vx1+vx2-vx3)*(vx1+vx2-vx3)-cu_sq); + feq[dMMP] = c1o216*(drho+c3o1*(-vx1-vx2+vx3)+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq); + feq[dPMP] = c1o216*(drho+c3o1*(vx1-vx2+vx3)+c9o2*(vx1-vx2+vx3)*(vx1-vx2+vx3)-cu_sq); + feq[dMPM] = c1o216*(drho+c3o1*(-vx1+vx2-vx3)+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq); + feq[dPMM] = c1o216*(drho+c3o1*(vx1-vx2-vx3)+c9o2*(vx1-vx2-vx3)*(vx1-vx2-vx3)-cu_sq); + feq[dMPP] = c1o216*(drho+c3o1*(-vx1+vx2+vx3)+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq); //Relaxation - f[DIR_000] += (feq[DIR_000]-f[DIR_000])*collFactor; - f[DIR_P00] += (feq[DIR_P00]-f[DIR_P00])*collFactor; - f[DIR_M00] += (feq[DIR_M00]-f[DIR_M00])*collFactor; - f[DIR_0P0] += (feq[DIR_0P0]-f[DIR_0P0])*collFactor; - f[DIR_0M0] += (feq[DIR_0M0]-f[DIR_0M0])*collFactor; - f[DIR_00P] += (feq[DIR_00P]-f[DIR_00P])*collFactor; - f[DIR_00M] += (feq[DIR_00M]-f[DIR_00M])*collFactor; - f[DIR_PP0] += (feq[DIR_PP0]-f[DIR_PP0])*collFactor; - f[DIR_MM0] += (feq[DIR_MM0]-f[DIR_MM0])*collFactor; - f[DIR_PM0] += (feq[DIR_PM0]-f[DIR_PM0])*collFactor; - f[DIR_MP0] += (feq[DIR_MP0]-f[DIR_MP0])*collFactor; - f[DIR_P0P] += (feq[DIR_P0P]-f[DIR_P0P])*collFactor; - f[DIR_M0M] += (feq[DIR_M0M]-f[DIR_M0M])*collFactor; - f[DIR_P0M] += (feq[DIR_P0M]-f[DIR_P0M])*collFactor; - f[DIR_M0P] += (feq[DIR_M0P]-f[DIR_M0P])*collFactor; - f[DIR_0PP] += (feq[DIR_0PP]-f[DIR_0PP])*collFactor; - f[DIR_0MM] += (feq[DIR_0MM]-f[DIR_0MM])*collFactor; - f[DIR_0PM] += (feq[DIR_0PM]-f[DIR_0PM])*collFactor; - f[DIR_0MP] += (feq[DIR_0MP]-f[DIR_0MP])*collFactor; + f[d000] += (feq[d000]-f[d000])*collFactor; + f[dP00] += (feq[dP00]-f[dP00])*collFactor; + f[dM00] += (feq[dM00]-f[dM00])*collFactor; + f[d0P0] += (feq[d0P0]-f[d0P0])*collFactor; + f[d0M0] += (feq[d0M0]-f[d0M0])*collFactor; + f[d00P] += (feq[d00P]-f[d00P])*collFactor; + f[d00M] += (feq[d00M]-f[d00M])*collFactor; + f[dPP0] += (feq[dPP0]-f[dPP0])*collFactor; + f[dMM0] += (feq[dMM0]-f[dMM0])*collFactor; + f[dPM0] += (feq[dPM0]-f[dPM0])*collFactor; + f[dMP0] += (feq[dMP0]-f[dMP0])*collFactor; + f[dP0P] += (feq[dP0P]-f[dP0P])*collFactor; + f[dM0M] += (feq[dM0M]-f[dM0M])*collFactor; + f[dP0M] += (feq[dP0M]-f[dP0M])*collFactor; + f[dM0P] += (feq[dM0P]-f[dM0P])*collFactor; + f[d0PP] += (feq[d0PP]-f[d0PP])*collFactor; + f[d0MM] += (feq[d0MM]-f[d0MM])*collFactor; + f[d0PM] += (feq[d0PM]-f[d0PM])*collFactor; + f[d0MP] += (feq[d0MP]-f[d0MP])*collFactor; - f[DIR_PPP] += (feq[DIR_PPP]-f[DIR_PPP])*collFactor; - f[DIR_MMM] += (feq[DIR_MMM]-f[DIR_MMM])*collFactor; - f[DIR_PPM] += (feq[DIR_PPM]-f[DIR_PPM])*collFactor; - f[DIR_MMP] += (feq[DIR_MMP]-f[DIR_MMP])*collFactor; - f[DIR_PMP] += (feq[DIR_PMP]-f[DIR_PMP])*collFactor; - f[DIR_MPM] += (feq[DIR_MPM]-f[DIR_MPM])*collFactor; - f[DIR_PMM] += (feq[DIR_PMM]-f[DIR_PMM])*collFactor; - f[DIR_MPP] += (feq[DIR_MPP]-f[DIR_MPP])*collFactor; + f[dPPP] += (feq[dPPP]-f[dPPP])*collFactor; + f[dMMM] += (feq[dMMM]-f[dMMM])*collFactor; + f[dPPM] += (feq[dPPM]-f[dPPM])*collFactor; + f[dMMP] += (feq[dMMP]-f[dMMP])*collFactor; + f[dPMP] += (feq[dPMP]-f[dPMP])*collFactor; + f[dMPM] += (feq[dMPM]-f[dMPM])*collFactor; + f[dPMM] += (feq[dPMM]-f[dPMM])*collFactor; + f[dMPP] += (feq[dMPP]-f[dMPP])*collFactor; ////////////////////////////////////////////////////////////////////////// #ifdef PROOF_CORRECTNESS - real rho_post = f[REST]+f[DIR_P00]+f[W]+f[N]+f[S]+f[T]+f[B] + real rho_post = f[REST]+f[dP00]+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]; @@ -1036,35 +1036,35 @@ void InitDensityLBMKernel::calculate(int /*step*/) ////////////////////////////////////////////////////////////////////////// //write distribution ////////////////////////////////////////////////////////////////////////// - (*this->localDistributions)(D3Q27System::ET_E, x1, x2, x3) = f[INV_P00]; - (*this->localDistributions)(D3Q27System::ET_N, x1, x2, x3) = f[INV_0P0]; - (*this->localDistributions)(D3Q27System::ET_T, x1, x2, x3) = f[INV_00P]; - (*this->localDistributions)(D3Q27System::ET_NE, x1, x2, x3) = f[INV_PP0]; - (*this->localDistributions)(D3Q27System::ET_NW, x1p, x2, x3) = f[INV_MP0]; - (*this->localDistributions)(D3Q27System::ET_TE, x1, x2, x3) = f[INV_P0P]; - (*this->localDistributions)(D3Q27System::ET_TW, x1p, x2, x3) = f[INV_M0P]; - (*this->localDistributions)(D3Q27System::ET_TN, x1, x2, x3) = f[INV_0PP]; - (*this->localDistributions)(D3Q27System::ET_TS, x1, x2p, x3) = f[INV_0MP]; - (*this->localDistributions)(D3Q27System::ET_TNE, x1, x2, x3) = f[INV_PPP]; - (*this->localDistributions)(D3Q27System::ET_TNW, x1p, x2, x3) = f[INV_MPP]; - (*this->localDistributions)(D3Q27System::ET_TSE, x1, x2p, x3) = f[INV_PMP]; - (*this->localDistributions)(D3Q27System::ET_TSW, x1p, x2p, x3) = f[INV_MMP]; + (*this->localDistributions)(D3Q27System::ET_E, x1, x2, x3) = f[iP00]; + (*this->localDistributions)(D3Q27System::ET_N, x1, x2, x3) = f[i0P0]; + (*this->localDistributions)(D3Q27System::ET_T, x1, x2, x3) = f[i00P]; + (*this->localDistributions)(D3Q27System::ET_NE, x1, x2, x3) = f[iPP0]; + (*this->localDistributions)(D3Q27System::ET_NW, x1p, x2, x3) = f[iMP0]; + (*this->localDistributions)(D3Q27System::ET_TE, x1, x2, x3) = f[iP0P]; + (*this->localDistributions)(D3Q27System::ET_TW, x1p, x2, x3) = f[iM0P]; + (*this->localDistributions)(D3Q27System::ET_TN, x1, x2, x3) = f[i0PP]; + (*this->localDistributions)(D3Q27System::ET_TS, x1, x2p, x3) = f[i0MP]; + (*this->localDistributions)(D3Q27System::ET_TNE, x1, x2, x3) = f[iPPP]; + (*this->localDistributions)(D3Q27System::ET_TNW, x1p, x2, x3) = f[iMPP]; + (*this->localDistributions)(D3Q27System::ET_TSE, x1, x2p, x3) = f[iPMP]; + (*this->localDistributions)(D3Q27System::ET_TSW, x1p, x2p, x3) = f[iMMP]; - (*this->nonLocalDistributions)(D3Q27System::ET_W, x1p, x2, x3) = f[INV_M00]; - (*this->nonLocalDistributions)(D3Q27System::ET_S, x1, x2p, x3) = f[INV_0M0]; - (*this->nonLocalDistributions)(D3Q27System::ET_B, x1, x2, x3p) = f[INV_00M]; - (*this->nonLocalDistributions)(D3Q27System::ET_SW, x1p, x2p, x3) = f[INV_MM0]; - (*this->nonLocalDistributions)(D3Q27System::ET_SE, x1, x2p, x3) = f[INV_PM0]; - (*this->nonLocalDistributions)(D3Q27System::ET_BW, x1p, x2, x3p) = f[INV_M0M]; - (*this->nonLocalDistributions)(D3Q27System::ET_BE, x1, x2, x3p) = f[INV_P0M]; - (*this->nonLocalDistributions)(D3Q27System::ET_BS, x1, x2p, x3p) = f[INV_0MM]; - (*this->nonLocalDistributions)(D3Q27System::ET_BN, x1, x2, x3p) = f[INV_0PM]; - (*this->nonLocalDistributions)(D3Q27System::ET_BSW, x1p, x2p, x3p) = f[INV_MMM]; - (*this->nonLocalDistributions)(D3Q27System::ET_BSE, x1, x2p, x3p) = f[INV_PMM]; - (*this->nonLocalDistributions)(D3Q27System::ET_BNW, x1p, x2, x3p) = f[INV_MPM]; - (*this->nonLocalDistributions)(D3Q27System::ET_BNE, x1, x2, x3p) = f[INV_PPM]; + (*this->nonLocalDistributions)(D3Q27System::ET_W, x1p, x2, x3) = f[iM00]; + (*this->nonLocalDistributions)(D3Q27System::ET_S, x1, x2p, x3) = f[i0M0]; + (*this->nonLocalDistributions)(D3Q27System::ET_B, x1, x2, x3p) = f[i00M]; + (*this->nonLocalDistributions)(D3Q27System::ET_SW, x1p, x2p, x3) = f[iMM0]; + (*this->nonLocalDistributions)(D3Q27System::ET_SE, x1, x2p, x3) = f[iPM0]; + (*this->nonLocalDistributions)(D3Q27System::ET_BW, x1p, x2, x3p) = f[iM0M]; + (*this->nonLocalDistributions)(D3Q27System::ET_BE, x1, x2, x3p) = f[iP0M]; + (*this->nonLocalDistributions)(D3Q27System::ET_BS, x1, x2p, x3p) = f[i0MM]; + (*this->nonLocalDistributions)(D3Q27System::ET_BN, x1, x2, x3p) = f[i0PM]; + (*this->nonLocalDistributions)(D3Q27System::ET_BSW, x1p, x2p, x3p) = f[iMMM]; + (*this->nonLocalDistributions)(D3Q27System::ET_BSE, x1, x2p, x3p) = f[iPMM]; + (*this->nonLocalDistributions)(D3Q27System::ET_BNW, x1p, x2, x3p) = f[iMPM]; + (*this->nonLocalDistributions)(D3Q27System::ET_BNE, x1, x2, x3p) = f[iPPM]; - (*this->zeroDistributions)(x1, x2, x3) = f[DIR_000]; + (*this->zeroDistributions)(x1, x2, x3) = f[d000]; ////////////////////////////////////////////////////////////////////////// diff --git a/src/cpu/VirtualFluidsCore/LBM/InitDensityLBMKernel.h b/src/cpu/core/LBM/InitDensityLBMKernel.h similarity index 100% rename from src/cpu/VirtualFluidsCore/LBM/InitDensityLBMKernel.h rename to src/cpu/core/LBM/InitDensityLBMKernel.h diff --git a/src/cpu/VirtualFluidsCore/LBM/Interpolation/CompressibleOffsetInterpolator.cpp b/src/cpu/core/LBM/Interpolation/CompressibleOffsetInterpolator.cpp similarity index 88% rename from src/cpu/VirtualFluidsCore/LBM/Interpolation/CompressibleOffsetInterpolator.cpp rename to src/cpu/core/LBM/Interpolation/CompressibleOffsetInterpolator.cpp index a5450b3b4b467143e0286ef7f7757a75c2e8457f..de2e4a01fe7c272900d40a8daa58ba4d6c0fb8b4 100644 --- a/src/cpu/VirtualFluidsCore/LBM/Interpolation/CompressibleOffsetInterpolator.cpp +++ b/src/cpu/core/LBM/Interpolation/CompressibleOffsetInterpolator.cpp @@ -69,11 +69,11 @@ void CompressibleOffsetInterpolator::calcMoments(const real* const f, real omega press = drho; //interpolate rho! - kxy = -c3o1*omega*((((f[DIR_MMP]+f[DIR_PPM])-(f[DIR_MPP]+f[DIR_PMM]))+((f[DIR_MMM]+f[DIR_PPP])-(f[DIR_MPM]+f[DIR_PMP])))+((f[DIR_MM0]+f[DIR_PP0])-(f[DIR_MP0]+f[DIR_PM0]))/(c1o1 + drho)-(vx1*vx2));// might not be optimal MG 25.2.13 - kyz = -c3o1*omega*((((f[DIR_MMM]+f[DIR_PPP])-(f[DIR_PMP]+f[DIR_MPM]))+((f[DIR_PMM]+f[DIR_MPP])-(f[DIR_MMP]+f[DIR_PPM])))+((f[DIR_0MM]+f[DIR_0PP])-(f[DIR_0MP]+f[DIR_0PM]))/(c1o1 + drho)-(vx2*vx3)); - kxz = -c3o1*omega*((((f[DIR_MPM]+f[DIR_PMP])-(f[DIR_MMP]+f[DIR_PPM]))+((f[DIR_MMM]+f[DIR_PPP])-(f[DIR_PMM]+f[DIR_MPP])))+((f[DIR_M0M]+f[DIR_P0P])-(f[DIR_M0P]+f[DIR_P0M]))/(c1o1 + drho)-(vx1*vx3)); - kxxMyy = -c3o1/c2o1*omega*((((f[DIR_M0M]+f[DIR_P0P])-(f[DIR_0MM]+f[DIR_0PP]))+((f[DIR_M0P]+f[DIR_P0M])-(f[DIR_0MP]+f[DIR_0PM])))+((f[DIR_M00]+f[DIR_P00])-(f[DIR_0M0]+f[DIR_0P0]))/(c1o1 + drho)-(vx1*vx1-vx2*vx2)); - kxxMzz = -c3o1/c2o1*omega*((((f[DIR_MP0]+f[DIR_PM0])-(f[DIR_0MM]+f[DIR_0PP]))+((f[DIR_MM0]+f[DIR_PP0])-(f[DIR_0MP]+f[DIR_0PM])))+((f[DIR_M00]+f[DIR_P00])-(f[DIR_00M]+f[DIR_00P]))/(c1o1 + drho)-(vx1*vx1-vx3*vx3)); + kxy = -c3o1*omega*((((f[dMMP]+f[dPPM])-(f[dMPP]+f[dPMM]))+((f[dMMM]+f[dPPP])-(f[dMPM]+f[dPMP])))+((f[dMM0]+f[dPP0])-(f[dMP0]+f[dPM0]))/(c1o1 + drho)-(vx1*vx2));// might not be optimal MG 25.2.13 + kyz = -c3o1*omega*((((f[dMMM]+f[dPPP])-(f[dPMP]+f[dMPM]))+((f[dPMM]+f[dMPP])-(f[dMMP]+f[dPPM])))+((f[d0MM]+f[d0PP])-(f[d0MP]+f[d0PM]))/(c1o1 + drho)-(vx2*vx3)); + kxz = -c3o1*omega*((((f[dMPM]+f[dPMP])-(f[dMMP]+f[dPPM]))+((f[dMMM]+f[dPPP])-(f[dPMM]+f[dMPP])))+((f[dM0M]+f[dP0P])-(f[dM0P]+f[dP0M]))/(c1o1 + drho)-(vx1*vx3)); + kxxMyy = -c3o1/c2o1*omega*((((f[dM0M]+f[dP0P])-(f[d0MM]+f[d0PP]))+((f[dM0P]+f[dP0M])-(f[d0MP]+f[d0PM])))+((f[dM00]+f[dP00])-(f[d0M0]+f[d0P0]))/(c1o1 + drho)-(vx1*vx1-vx2*vx2)); + kxxMzz = -c3o1/c2o1*omega*((((f[dMP0]+f[dPM0])-(f[d0MM]+f[d0PP]))+((f[dMM0]+f[dPP0])-(f[d0MP]+f[d0PM])))+((f[dM00]+f[dP00])-(f[d00M]+f[d00P]))/(c1o1 + drho)-(vx1*vx1-vx3*vx3)); } ////////////////////////////////////////////////////////////////////////// void CompressibleOffsetInterpolator::calcInterpolatedCoefficiets(const D3Q27ICell& icell, real omega, real eps_new) @@ -475,33 +475,33 @@ void CompressibleOffsetInterpolator::calcInterpolatedNodeCF(real* f, real /*ome real feq[ENDF+1]; D3Q27System::calcCompFeq(feq,rho,vx1,vx2,vx3); - f[DIR_P00] = f_E + xs*x_E + ys*y_E + zs*z_E + xs*ys*xy_E + xs*zs*xz_E + ys*zs*yz_E + feq[DIR_P00]; - f[DIR_M00] = f_E + xs*x_E + ys*y_E + zs*z_E + xs*ys*xy_E + xs*zs*xz_E + ys*zs*yz_E + feq[DIR_M00]; - f[DIR_0P0] = f_N + xs*x_N + ys*y_N + zs*z_N + xs*ys*xy_N + xs*zs*xz_N + ys*zs*yz_N + feq[DIR_0P0]; - f[DIR_0M0] = f_N + xs*x_N + ys*y_N + zs*z_N + xs*ys*xy_N + xs*zs*xz_N + ys*zs*yz_N + feq[DIR_0M0]; - f[DIR_00P] = f_T + xs*x_T + ys*y_T + zs*z_T + xs*ys*xy_T + xs*zs*xz_T + ys*zs*yz_T + feq[DIR_00P]; - f[DIR_00M] = f_T + xs*x_T + ys*y_T + zs*z_T + xs*ys*xy_T + xs*zs*xz_T + ys*zs*yz_T + feq[DIR_00M]; - f[DIR_PP0] = f_NE + xs*x_NE + ys*y_NE + zs*z_NE + xs*ys*xy_NE + xs*zs*xz_NE + ys*zs*yz_NE + feq[DIR_PP0]; - f[DIR_MM0] = f_NE + xs*x_NE + ys*y_NE + zs*z_NE + xs*ys*xy_NE + xs*zs*xz_NE + ys*zs*yz_NE + feq[DIR_MM0]; - f[DIR_PM0] = f_SE + xs*x_SE + ys*y_SE + zs*z_SE + xs*ys*xy_SE + xs*zs*xz_SE + ys*zs*yz_SE + feq[DIR_PM0]; - f[DIR_MP0] = f_SE + xs*x_SE + ys*y_SE + zs*z_SE + xs*ys*xy_SE + xs*zs*xz_SE + ys*zs*yz_SE + feq[DIR_MP0]; - f[DIR_P0P] = f_TE + xs*x_TE + ys*y_TE + zs*z_TE + xs*ys*xy_TE + xs*zs*xz_TE + ys*zs*yz_TE + feq[DIR_P0P]; - f[DIR_M0M] = f_TE + xs*x_TE + ys*y_TE + zs*z_TE + xs*ys*xy_TE + xs*zs*xz_TE + ys*zs*yz_TE + feq[DIR_M0M]; - f[DIR_P0M] = f_BE + xs*x_BE + ys*y_BE + zs*z_BE + xs*ys*xy_BE + xs*zs*xz_BE + ys*zs*yz_BE + feq[DIR_P0M]; - f[DIR_M0P] = f_BE + xs*x_BE + ys*y_BE + zs*z_BE + xs*ys*xy_BE + xs*zs*xz_BE + ys*zs*yz_BE + feq[DIR_M0P]; - f[DIR_0PP] = f_TN + xs*x_TN + ys*y_TN + zs*z_TN + xs*ys*xy_TN + xs*zs*xz_TN + ys*zs*yz_TN + feq[DIR_0PP]; - f[DIR_0MM] = f_TN + xs*x_TN + ys*y_TN + zs*z_TN + xs*ys*xy_TN + xs*zs*xz_TN + ys*zs*yz_TN + feq[DIR_0MM]; - f[DIR_0PM] = f_BN + xs*x_BN + ys*y_BN + zs*z_BN + xs*ys*xy_BN + xs*zs*xz_BN + ys*zs*yz_BN + feq[DIR_0PM]; - f[DIR_0MP] = f_BN + xs*x_BN + ys*y_BN + zs*z_BN + xs*ys*xy_BN + xs*zs*xz_BN + ys*zs*yz_BN + feq[DIR_0MP]; - f[DIR_PPP] = f_TNE + xs*x_TNE + ys*y_TNE + zs*z_TNE + xs*ys*xy_TNE + xs*zs*xz_TNE + ys*zs*yz_TNE + feq[DIR_PPP]; - f[DIR_MMP] = f_TSW + xs*x_TSW + ys*y_TSW + zs*z_TSW + xs*ys*xy_TSW + xs*zs*xz_TSW + ys*zs*yz_TSW + feq[DIR_MMP]; - f[DIR_PMP] = f_TSE + xs*x_TSE + ys*y_TSE + zs*z_TSE + xs*ys*xy_TSE + xs*zs*xz_TSE + ys*zs*yz_TSE + feq[DIR_PMP]; - f[DIR_MPP] = f_TNW + xs*x_TNW + ys*y_TNW + zs*z_TNW + xs*ys*xy_TNW + xs*zs*xz_TNW + ys*zs*yz_TNW + feq[DIR_MPP]; - f[DIR_PPM] = f_TSW + xs*x_TSW + ys*y_TSW + zs*z_TSW + xs*ys*xy_TSW + xs*zs*xz_TSW + ys*zs*yz_TSW + feq[DIR_PPM]; - f[DIR_MMM] = f_TNE + xs*x_TNE + ys*y_TNE + zs*z_TNE + xs*ys*xy_TNE + xs*zs*xz_TNE + ys*zs*yz_TNE + feq[DIR_MMM]; - f[DIR_PMM] = f_TNW + xs*x_TNW + ys*y_TNW + zs*z_TNW + xs*ys*xy_TNW + xs*zs*xz_TNW + ys*zs*yz_TNW + feq[DIR_PMM]; - f[DIR_MPM] = f_TSE + xs*x_TSE + ys*y_TSE + zs*z_TSE + xs*ys*xy_TSE + xs*zs*xz_TSE + ys*zs*yz_TSE + feq[DIR_MPM]; - f[DIR_000] = f_ZERO + xs*x_ZERO + ys*y_ZERO + zs*z_ZERO + feq[DIR_000]; + f[dP00] = f_E + xs*x_E + ys*y_E + zs*z_E + xs*ys*xy_E + xs*zs*xz_E + ys*zs*yz_E + feq[dP00]; + f[dM00] = f_E + xs*x_E + ys*y_E + zs*z_E + xs*ys*xy_E + xs*zs*xz_E + ys*zs*yz_E + feq[dM00]; + f[d0P0] = f_N + xs*x_N + ys*y_N + zs*z_N + xs*ys*xy_N + xs*zs*xz_N + ys*zs*yz_N + feq[d0P0]; + f[d0M0] = f_N + xs*x_N + ys*y_N + zs*z_N + xs*ys*xy_N + xs*zs*xz_N + ys*zs*yz_N + feq[d0M0]; + f[d00P] = f_T + xs*x_T + ys*y_T + zs*z_T + xs*ys*xy_T + xs*zs*xz_T + ys*zs*yz_T + feq[d00P]; + f[d00M] = f_T + xs*x_T + ys*y_T + zs*z_T + xs*ys*xy_T + xs*zs*xz_T + ys*zs*yz_T + feq[d00M]; + f[dPP0] = f_NE + xs*x_NE + ys*y_NE + zs*z_NE + xs*ys*xy_NE + xs*zs*xz_NE + ys*zs*yz_NE + feq[dPP0]; + f[dMM0] = f_NE + xs*x_NE + ys*y_NE + zs*z_NE + xs*ys*xy_NE + xs*zs*xz_NE + ys*zs*yz_NE + feq[dMM0]; + f[dPM0] = f_SE + xs*x_SE + ys*y_SE + zs*z_SE + xs*ys*xy_SE + xs*zs*xz_SE + ys*zs*yz_SE + feq[dPM0]; + f[dMP0] = f_SE + xs*x_SE + ys*y_SE + zs*z_SE + xs*ys*xy_SE + xs*zs*xz_SE + ys*zs*yz_SE + feq[dMP0]; + f[dP0P] = f_TE + xs*x_TE + ys*y_TE + zs*z_TE + xs*ys*xy_TE + xs*zs*xz_TE + ys*zs*yz_TE + feq[dP0P]; + f[dM0M] = f_TE + xs*x_TE + ys*y_TE + zs*z_TE + xs*ys*xy_TE + xs*zs*xz_TE + ys*zs*yz_TE + feq[dM0M]; + f[dP0M] = f_BE + xs*x_BE + ys*y_BE + zs*z_BE + xs*ys*xy_BE + xs*zs*xz_BE + ys*zs*yz_BE + feq[dP0M]; + f[dM0P] = f_BE + xs*x_BE + ys*y_BE + zs*z_BE + xs*ys*xy_BE + xs*zs*xz_BE + ys*zs*yz_BE + feq[dM0P]; + f[d0PP] = f_TN + xs*x_TN + ys*y_TN + zs*z_TN + xs*ys*xy_TN + xs*zs*xz_TN + ys*zs*yz_TN + feq[d0PP]; + f[d0MM] = f_TN + xs*x_TN + ys*y_TN + zs*z_TN + xs*ys*xy_TN + xs*zs*xz_TN + ys*zs*yz_TN + feq[d0MM]; + f[d0PM] = f_BN + xs*x_BN + ys*y_BN + zs*z_BN + xs*ys*xy_BN + xs*zs*xz_BN + ys*zs*yz_BN + feq[d0PM]; + f[d0MP] = f_BN + xs*x_BN + ys*y_BN + zs*z_BN + xs*ys*xy_BN + xs*zs*xz_BN + ys*zs*yz_BN + feq[d0MP]; + f[dPPP] = f_TNE + xs*x_TNE + ys*y_TNE + zs*z_TNE + xs*ys*xy_TNE + xs*zs*xz_TNE + ys*zs*yz_TNE + feq[dPPP]; + f[dMMP] = f_TSW + xs*x_TSW + ys*y_TSW + zs*z_TSW + xs*ys*xy_TSW + xs*zs*xz_TSW + ys*zs*yz_TSW + feq[dMMP]; + f[dPMP] = f_TSE + xs*x_TSE + ys*y_TSE + zs*z_TSE + xs*ys*xy_TSE + xs*zs*xz_TSE + ys*zs*yz_TSE + feq[dPMP]; + f[dMPP] = f_TNW + xs*x_TNW + ys*y_TNW + zs*z_TNW + xs*ys*xy_TNW + xs*zs*xz_TNW + ys*zs*yz_TNW + feq[dMPP]; + f[dPPM] = f_TSW + xs*x_TSW + ys*y_TSW + zs*z_TSW + xs*ys*xy_TSW + xs*zs*xz_TSW + ys*zs*yz_TSW + feq[dPPM]; + f[dMMM] = f_TNE + xs*x_TNE + ys*y_TNE + zs*z_TNE + xs*ys*xy_TNE + xs*zs*xz_TNE + ys*zs*yz_TNE + feq[dMMM]; + f[dPMM] = f_TNW + xs*x_TNW + ys*y_TNW + zs*z_TNW + xs*ys*xy_TNW + xs*zs*xz_TNW + ys*zs*yz_TNW + feq[dPMM]; + f[dMPM] = f_TSE + xs*x_TSE + ys*y_TSE + zs*z_TSE + xs*ys*xy_TSE + xs*zs*xz_TSE + ys*zs*yz_TSE + feq[dMPM]; + f[d000] = f_ZERO + xs*x_ZERO + ys*y_ZERO + zs*z_ZERO + feq[d000]; } ////////////////////////////////////////////////////////////////////////// //Position SWB -0.25, -0.25, -0.25 @@ -670,33 +670,33 @@ void CompressibleOffsetInterpolator::calcInterpolatedNodeFC(real* f, real omega) f_TSE = eps_new*((ay - az + bx + bz - cx + cy+kxyAverage-kxzAverage+kyzAverage)/(c72o1*o)); f_TNW = eps_new*((ay + az + bx - bz + cx - cy+kxyAverage+kxzAverage-kyzAverage)/(c72o1*o)); - f[DIR_P00] = f_E + feq[DIR_P00]; - f[DIR_M00] = f_E + feq[DIR_M00]; - f[DIR_0P0] = f_N + feq[DIR_0P0]; - f[DIR_0M0] = f_N + feq[DIR_0M0]; - f[DIR_00P] = f_T + feq[DIR_00P]; - f[DIR_00M] = f_T + feq[DIR_00M]; - f[DIR_PP0] = f_NE + feq[DIR_PP0]; - f[DIR_MM0] = f_NE + feq[DIR_MM0]; - f[DIR_PM0] = f_SE + feq[DIR_PM0]; - f[DIR_MP0] = f_SE + feq[DIR_MP0]; - f[DIR_P0P] = f_TE + feq[DIR_P0P]; - f[DIR_M0M] = f_TE + feq[DIR_M0M]; - f[DIR_P0M] = f_BE + feq[DIR_P0M]; - f[DIR_M0P] = f_BE + feq[DIR_M0P]; - f[DIR_0PP] = f_TN + feq[DIR_0PP]; - f[DIR_0MM] = f_TN + feq[DIR_0MM]; - f[DIR_0PM] = f_BN + feq[DIR_0PM]; - f[DIR_0MP] = f_BN + feq[DIR_0MP]; - f[DIR_PPP] = f_TNE + feq[DIR_PPP]; - f[DIR_MPP] = f_TNW + feq[DIR_MPP]; - f[DIR_PMP] = f_TSE + feq[DIR_PMP]; - f[DIR_MMP] = f_TSW + feq[DIR_MMP]; - f[DIR_PPM] = f_TSW + feq[DIR_PPM]; - f[DIR_MPM] = f_TSE + feq[DIR_MPM]; - f[DIR_PMM] = f_TNW + feq[DIR_PMM]; - f[DIR_MMM] = f_TNE + feq[DIR_MMM]; - f[DIR_000] = f_ZERO + feq[DIR_000]; + f[dP00] = f_E + feq[dP00]; + f[dM00] = f_E + feq[dM00]; + f[d0P0] = f_N + feq[d0P0]; + f[d0M0] = f_N + feq[d0M0]; + f[d00P] = f_T + feq[d00P]; + f[d00M] = f_T + feq[d00M]; + f[dPP0] = f_NE + feq[dPP0]; + f[dMM0] = f_NE + feq[dMM0]; + f[dPM0] = f_SE + feq[dPM0]; + f[dMP0] = f_SE + feq[dMP0]; + f[dP0P] = f_TE + feq[dP0P]; + f[dM0M] = f_TE + feq[dM0M]; + f[dP0M] = f_BE + feq[dP0M]; + f[dM0P] = f_BE + feq[dM0P]; + f[d0PP] = f_TN + feq[d0PP]; + f[d0MM] = f_TN + feq[d0MM]; + f[d0PM] = f_BN + feq[d0PM]; + f[d0MP] = f_BN + feq[d0MP]; + f[dPPP] = f_TNE + feq[dPPP]; + f[dMPP] = f_TNW + feq[dMPP]; + f[dPMP] = f_TSE + feq[dPMP]; + f[dMMP] = f_TSW + feq[dMMP]; + f[dPPM] = f_TSW + feq[dPPM]; + f[dMPM] = f_TSE + feq[dMPM]; + f[dPMM] = f_TNW + feq[dPMM]; + f[dMMM] = f_TNE + feq[dMMM]; + f[d000] = f_ZERO + feq[d000]; } ////////////////////////////////////////////////////////////////////////// void CompressibleOffsetInterpolator::calcInterpolatedVelocity(real x, real y, real z, real& vx1, real& vx2, real& vx3) diff --git a/src/cpu/VirtualFluidsCore/LBM/Interpolation/CompressibleOffsetInterpolator.h b/src/cpu/core/LBM/Interpolation/CompressibleOffsetInterpolator.h similarity index 100% rename from src/cpu/VirtualFluidsCore/LBM/Interpolation/CompressibleOffsetInterpolator.h rename to src/cpu/core/LBM/Interpolation/CompressibleOffsetInterpolator.h diff --git a/src/cpu/VirtualFluidsCore/LBM/Interpolation/CompressibleOffsetMomentsInterpolator.cpp b/src/cpu/core/LBM/Interpolation/CompressibleOffsetMomentsInterpolator.cpp similarity index 100% rename from src/cpu/VirtualFluidsCore/LBM/Interpolation/CompressibleOffsetMomentsInterpolator.cpp rename to src/cpu/core/LBM/Interpolation/CompressibleOffsetMomentsInterpolator.cpp diff --git a/src/cpu/VirtualFluidsCore/LBM/Interpolation/CompressibleOffsetMomentsInterpolator.h b/src/cpu/core/LBM/Interpolation/CompressibleOffsetMomentsInterpolator.h similarity index 100% rename from src/cpu/VirtualFluidsCore/LBM/Interpolation/CompressibleOffsetMomentsInterpolator.h rename to src/cpu/core/LBM/Interpolation/CompressibleOffsetMomentsInterpolator.h diff --git a/src/cpu/VirtualFluidsCore/LBM/Interpolation/CompressibleOffsetSquarePressureInterpolator.cpp b/src/cpu/core/LBM/Interpolation/CompressibleOffsetSquarePressureInterpolator.cpp similarity index 96% rename from src/cpu/VirtualFluidsCore/LBM/Interpolation/CompressibleOffsetSquarePressureInterpolator.cpp rename to src/cpu/core/LBM/Interpolation/CompressibleOffsetSquarePressureInterpolator.cpp index 3b5d7386ae4e615a6f89d6ed07eb78d02b295799..c7fba8407e71e423c5e5231cc4ae220b438fefc9 100644 --- a/src/cpu/VirtualFluidsCore/LBM/Interpolation/CompressibleOffsetSquarePressureInterpolator.cpp +++ b/src/cpu/core/LBM/Interpolation/CompressibleOffsetSquarePressureInterpolator.cpp @@ -87,11 +87,11 @@ void CompressibleOffsetSquarePressureInterpolator::calcMoments(const real* const press = drho; //interpolate rho! - kxy = -c3o1*omega*((((f[DIR_MMP]+f[DIR_PPM])-(f[DIR_MPP]+f[DIR_PMM]))+((f[DIR_MMM]+f[DIR_PPP])-(f[DIR_MPM]+f[DIR_PMP])))+((f[DIR_MM0]+f[DIR_PP0])-(f[DIR_MP0]+f[DIR_PM0]))/(c1o1 + drho)-(vx1*vx2));// might not be optimal MG 25.2.13 - kyz = -c3o1*omega*((((f[DIR_MMM]+f[DIR_PPP])-(f[DIR_PMP]+f[DIR_MPM]))+((f[DIR_PMM]+f[DIR_MPP])-(f[DIR_MMP]+f[DIR_PPM])))+((f[DIR_0MM]+f[DIR_0PP])-(f[DIR_0MP]+f[DIR_0PM]))/(c1o1 + drho)-(vx2*vx3)); - kxz = -c3o1*omega*((((f[DIR_MPM]+f[DIR_PMP])-(f[DIR_MMP]+f[DIR_PPM]))+((f[DIR_MMM]+f[DIR_PPP])-(f[DIR_PMM]+f[DIR_MPP])))+((f[DIR_M0M]+f[DIR_P0P])-(f[DIR_M0P]+f[DIR_P0M]))/(c1o1 + drho)-(vx1*vx3)); - kxxMyy = -c3o1/c2o1*omega*((((f[DIR_M0M]+f[DIR_P0P])-(f[DIR_0MM]+f[DIR_0PP]))+((f[DIR_M0P]+f[DIR_P0M])-(f[DIR_0MP]+f[DIR_0PM])))+((f[DIR_M00]+f[DIR_P00])-(f[DIR_0M0]+f[DIR_0P0]))/(c1o1 + drho)-(vx1*vx1-vx2*vx2)); - kxxMzz = -c3o1/c2o1*omega*((((f[DIR_MP0]+f[DIR_PM0])-(f[DIR_0MM]+f[DIR_0PP]))+((f[DIR_MM0]+f[DIR_PP0])-(f[DIR_0MP]+f[DIR_0PM])))+((f[DIR_M00]+f[DIR_P00])-(f[DIR_00M]+f[DIR_00P]))/(c1o1 + drho)-(vx1*vx1-vx3*vx3)); + kxy = -c3o1*omega*((((f[dMMP]+f[dPPM])-(f[dMPP]+f[dPMM]))+((f[dMMM]+f[dPPP])-(f[dMPM]+f[dPMP])))+((f[dMM0]+f[dPP0])-(f[dMP0]+f[dPM0]))/(c1o1 + drho)-(vx1*vx2));// might not be optimal MG 25.2.13 + kyz = -c3o1*omega*((((f[dMMM]+f[dPPP])-(f[dPMP]+f[dMPM]))+((f[dPMM]+f[dMPP])-(f[dMMP]+f[dPPM])))+((f[d0MM]+f[d0PP])-(f[d0MP]+f[d0PM]))/(c1o1 + drho)-(vx2*vx3)); + kxz = -c3o1*omega*((((f[dMPM]+f[dPMP])-(f[dMMP]+f[dPPM]))+((f[dMMM]+f[dPPP])-(f[dPMM]+f[dMPP])))+((f[dM0M]+f[dP0P])-(f[dM0P]+f[dP0M]))/(c1o1 + drho)-(vx1*vx3)); + kxxMyy = -c3o1/c2o1*omega*((((f[dM0M]+f[dP0P])-(f[d0MM]+f[d0PP]))+((f[dM0P]+f[dP0M])-(f[d0MP]+f[d0PM])))+((f[dM00]+f[dP00])-(f[d0M0]+f[d0P0]))/(c1o1 + drho)-(vx1*vx1-vx2*vx2)); + kxxMzz = -c3o1/c2o1*omega*((((f[dMP0]+f[dPM0])-(f[d0MM]+f[d0PP]))+((f[dMM0]+f[dPP0])-(f[d0MP]+f[d0PM])))+((f[dM00]+f[dP00])-(f[d00M]+f[d00P]))/(c1o1 + drho)-(vx1*vx1-vx3*vx3)); } ////////////////////////////////////////////////////////////////////////// void CompressibleOffsetSquarePressureInterpolator::calcInterpolatedCoefficiets(const D3Q27ICell& icell, real omega, real eps_new) @@ -783,33 +783,33 @@ void CompressibleOffsetSquarePressureInterpolator::calcInterpolatedNodeCF(real* mfccc = m2; //////////////////////////////////////////////////////////////////////////////////// - f[DIR_P00] = mfcbb; - f[DIR_M00] = mfabb; - f[DIR_0P0] = mfbcb; - f[DIR_0M0] = mfbab; - f[DIR_00P] = mfbbc; - f[DIR_00M] = mfbba; - f[DIR_PP0] = mfccb; - f[DIR_MM0] = mfaab; - f[DIR_PM0] = mfcab; - f[DIR_MP0] = mfacb; - f[DIR_P0P] = mfcbc; - f[DIR_M0M] = mfaba; - f[DIR_P0M] = mfcba; - f[DIR_M0P] = mfabc; - f[DIR_0PP] = mfbcc; - f[DIR_0MM] = mfbaa; - f[DIR_0PM] = mfbca; - f[DIR_0MP] = mfbac; - f[DIR_000] = mfbbb; - f[DIR_PPP] = mfccc; - f[DIR_PMP] = mfcac; - f[DIR_PPM] = mfcca; - f[DIR_PMM] = mfcaa; - f[DIR_MPP] = mfacc; - f[DIR_MMP] = mfaac; - f[DIR_MPM] = mfaca; - f[DIR_MMM] = mfaaa; + f[dP00] = mfcbb; + f[dM00] = mfabb; + f[d0P0] = mfbcb; + f[d0M0] = mfbab; + f[d00P] = mfbbc; + f[d00M] = mfbba; + f[dPP0] = mfccb; + f[dMM0] = mfaab; + f[dPM0] = mfcab; + f[dMP0] = mfacb; + f[dP0P] = mfcbc; + f[dM0M] = mfaba; + f[dP0M] = mfcba; + f[dM0P] = mfabc; + f[d0PP] = mfbcc; + f[d0MM] = mfbaa; + f[d0PM] = mfbca; + f[d0MP] = mfbac; + f[d000] = mfbbb; + f[dPPP] = mfccc; + f[dPMP] = mfcac; + f[dPPM] = mfcca; + f[dPMM] = mfcaa; + f[dMPP] = mfacc; + f[dMMP] = mfaac; + f[dMPM] = mfaca; + f[dMMM] = mfaaa; } ////////////////////////////////////////////////////////////////////////// //Position SWB -0.25, -0.25, -0.25 @@ -1237,33 +1237,33 @@ void CompressibleOffsetSquarePressureInterpolator::calcInterpolatedNodeFC(real* mfccc = m2; //////////////////////////////////////////////////////////////////////////////////// - f[DIR_P00] = mfcbb; - f[DIR_M00] = mfabb; - f[DIR_0P0] = mfbcb; - f[DIR_0M0] = mfbab; - f[DIR_00P] = mfbbc; - f[DIR_00M] = mfbba; - f[DIR_PP0] = mfccb; - f[DIR_MM0] = mfaab; - f[DIR_PM0] = mfcab; - f[DIR_MP0] = mfacb; - f[DIR_P0P] = mfcbc; - f[DIR_M0M] = mfaba; - f[DIR_P0M] = mfcba; - f[DIR_M0P] = mfabc; - f[DIR_0PP] = mfbcc; - f[DIR_0MM] = mfbaa; - f[DIR_0PM] = mfbca; - f[DIR_0MP] = mfbac; - f[DIR_000] = mfbbb; - f[DIR_PPP] = mfccc; - f[DIR_PMP] = mfcac; - f[DIR_PPM] = mfcca; - f[DIR_PMM] = mfcaa; - f[DIR_MPP] = mfacc; - f[DIR_MMP] = mfaac; - f[DIR_MPM] = mfaca; - f[DIR_MMM] = mfaaa; + f[dP00] = mfcbb; + f[dM00] = mfabb; + f[d0P0] = mfbcb; + f[d0M0] = mfbab; + f[d00P] = mfbbc; + f[d00M] = mfbba; + f[dPP0] = mfccb; + f[dMM0] = mfaab; + f[dPM0] = mfcab; + f[dMP0] = mfacb; + f[dP0P] = mfcbc; + f[dM0M] = mfaba; + f[dP0M] = mfcba; + f[dM0P] = mfabc; + f[d0PP] = mfbcc; + f[d0MM] = mfbaa; + f[d0PM] = mfbca; + f[d0MP] = mfbac; + f[d000] = mfbbb; + f[dPPP] = mfccc; + f[dPMP] = mfcac; + f[dPPM] = mfcca; + f[dPMM] = mfcaa; + f[dMPP] = mfacc; + f[dMMP] = mfaac; + f[dMPM] = mfaca; + f[dMMM] = mfaaa; } ////////////////////////////////////////////////////////////////////////// void CompressibleOffsetSquarePressureInterpolator::calcInterpolatedVelocity(real x, real y, real z, real& vx1, real& vx2, real& vx3) diff --git a/src/cpu/VirtualFluidsCore/LBM/Interpolation/CompressibleOffsetSquarePressureInterpolator.h b/src/cpu/core/LBM/Interpolation/CompressibleOffsetSquarePressureInterpolator.h similarity index 100% rename from src/cpu/VirtualFluidsCore/LBM/Interpolation/CompressibleOffsetSquarePressureInterpolator.h rename to src/cpu/core/LBM/Interpolation/CompressibleOffsetSquarePressureInterpolator.h diff --git a/src/cpu/VirtualFluidsCore/LBM/Interpolation/IncompressibleOffsetInterpolator.cpp b/src/cpu/core/LBM/Interpolation/IncompressibleOffsetInterpolator.cpp similarity index 88% rename from src/cpu/VirtualFluidsCore/LBM/Interpolation/IncompressibleOffsetInterpolator.cpp rename to src/cpu/core/LBM/Interpolation/IncompressibleOffsetInterpolator.cpp index a00c266191353e2124d1999b370d5ec6e51ec697..d8f7efac4cfab144e163bb0263993dc8ba997d17 100644 --- a/src/cpu/VirtualFluidsCore/LBM/Interpolation/IncompressibleOffsetInterpolator.cpp +++ b/src/cpu/core/LBM/Interpolation/IncompressibleOffsetInterpolator.cpp @@ -65,7 +65,7 @@ void IncompressibleOffsetInterpolator::calcMoments(const real* const f, real ome using namespace vf::lbm::dir; using namespace vf::basics::constant; - //UBLOG(logINFO,"D3Q27System::DIR_M0M = " << D3Q27System::DIR_M0M); + //UBLOG(logINFO,"D3Q27System::dM0M = " << D3Q27System::dM0M); //UBLOG(logINFO,"BW = " << BW);; real rho = c0o1; @@ -86,14 +86,14 @@ void IncompressibleOffsetInterpolator::calcMoments(const real* const f, real ome //press = D3Q27System::calcPress(f,rho,vx1,vx2,vx3); press = rho; //interpolate rho! - kxy = -c3o1*omega*((((f[DIR_MMP]+f[DIR_PPM])-(f[DIR_MPP]+f[DIR_PMM]))+((f[DIR_MMM]+f[DIR_PPP])-(f[DIR_MPM]+f[DIR_PMP])))+((f[DIR_MM0]+f[DIR_PP0])-(f[DIR_MP0]+f[DIR_PM0]))-(vx1*vx2));// might not be optimal MG 25.2.13 - kyz = -c3o1*omega*((((f[DIR_MMM]+f[DIR_PPP])-(f[DIR_PMP]+f[DIR_MPM]))+((f[DIR_PMM]+f[DIR_MPP])-(f[DIR_MMP]+f[DIR_PPM])))+((f[DIR_0MM]+f[DIR_0PP])-(f[DIR_0MP]+f[DIR_0PM]))-(vx2*vx3)); - kxz = -c3o1*omega*((((f[DIR_MPM]+f[DIR_PMP])-(f[DIR_MMP]+f[DIR_PPM]))+((f[DIR_MMM]+f[DIR_PPP])-(f[DIR_PMM]+f[DIR_MPP])))+((f[DIR_M0M]+f[DIR_P0P])-(f[DIR_M0P]+f[DIR_P0M]))-(vx1*vx3)); - kxxMyy = -c3o1/c2o1*omega*((((f[DIR_M0M]+f[DIR_P0P])-(f[DIR_0MM]+f[DIR_0PP]))+((f[DIR_M0P]+f[DIR_P0M])-(f[DIR_0MP]+f[DIR_0PM])))+((f[DIR_M00]+f[DIR_P00])-(f[DIR_0M0]+f[DIR_0P0]))-(vx1*vx1-vx2*vx2)); - kxxMzz = -c3o1/c2o1*omega*((((f[DIR_MP0]+f[DIR_PM0])-(f[DIR_0MM]+f[DIR_0PP]))+((f[DIR_MM0]+f[DIR_PP0])-(f[DIR_0MP]+f[DIR_0PM])))+((f[DIR_M00]+f[DIR_P00])-(f[DIR_00M]+f[DIR_00P]))-(vx1*vx1-vx3*vx3)); - //kxxMzz = -c3o1/c2o1*omega*(((((f[NW]+f[SE])-(f[BS]+f[TN]))+((f[SW]+f[NE])-(f[17]+f[BN])))+((f[W]+f[DIR_P00])-(f[B]+f[T])))-(vx1*vx1-vx3*vx3)); + kxy = -c3o1*omega*((((f[dMMP]+f[dPPM])-(f[dMPP]+f[dPMM]))+((f[dMMM]+f[dPPP])-(f[dMPM]+f[dPMP])))+((f[dMM0]+f[dPP0])-(f[dMP0]+f[dPM0]))-(vx1*vx2));// might not be optimal MG 25.2.13 + kyz = -c3o1*omega*((((f[dMMM]+f[dPPP])-(f[dPMP]+f[dMPM]))+((f[dPMM]+f[dMPP])-(f[dMMP]+f[dPPM])))+((f[d0MM]+f[d0PP])-(f[d0MP]+f[d0PM]))-(vx2*vx3)); + kxz = -c3o1*omega*((((f[dMPM]+f[dPMP])-(f[dMMP]+f[dPPM]))+((f[dMMM]+f[dPPP])-(f[dPMM]+f[dMPP])))+((f[dM0M]+f[dP0P])-(f[dM0P]+f[dP0M]))-(vx1*vx3)); + kxxMyy = -c3o1/c2o1*omega*((((f[dM0M]+f[dP0P])-(f[d0MM]+f[d0PP]))+((f[dM0P]+f[dP0M])-(f[d0MP]+f[d0PM])))+((f[dM00]+f[dP00])-(f[d0M0]+f[d0P0]))-(vx1*vx1-vx2*vx2)); + kxxMzz = -c3o1/c2o1*omega*((((f[dMP0]+f[dPM0])-(f[d0MM]+f[d0PP]))+((f[dMM0]+f[dPP0])-(f[d0MP]+f[d0PM])))+((f[dM00]+f[dP00])-(f[d00M]+f[d00P]))-(vx1*vx1-vx3*vx3)); + //kxxMzz = -c3o1/c2o1*omega*(((((f[NW]+f[SE])-(f[BS]+f[TN]))+((f[SW]+f[NE])-(f[17]+f[BN])))+((f[W]+f[dP00])-(f[B]+f[T])))-(vx1*vx1-vx3*vx3)); - //UBLOG(logINFO, "t1 = "<<(((f[NW]+f[SE])-(f[BS]+f[TN]))+((f[SW]+f[NE])-(f[17]+f[BN])))+((f[W]+f[DIR_P00])-(f[B]+f[T]))); + //UBLOG(logINFO, "t1 = "<<(((f[NW]+f[SE])-(f[BS]+f[TN]))+((f[SW]+f[NE])-(f[17]+f[BN])))+((f[W]+f[dP00])-(f[B]+f[T]))); //UBLOG(logINFO, "kxxMzz = "<<kxxMzz); //UBLOG(logINFO,"f[BW] = " << f[BW] << " BW = " << BW); @@ -551,33 +551,33 @@ void IncompressibleOffsetInterpolator::calcInterpolatedNode(real* f, real /*ome real feq[ENDF+1]; D3Q27System::calcIncompFeq(feq,rho,vx1,vx2,vx3); - f[DIR_P00] = f_E + xs*x_E + ys*y_E + zs*z_E + xs*ys*xy_E + xs*zs*xz_E + ys*zs*yz_E + feq[DIR_P00]; - f[DIR_M00] = f_E + xs*x_E + ys*y_E + zs*z_E + xs*ys*xy_E + xs*zs*xz_E + ys*zs*yz_E + feq[DIR_M00]; - f[DIR_0P0] = f_N + xs*x_N + ys*y_N + zs*z_N + xs*ys*xy_N + xs*zs*xz_N + ys*zs*yz_N + feq[DIR_0P0]; - f[DIR_0M0] = f_N + xs*x_N + ys*y_N + zs*z_N + xs*ys*xy_N + xs*zs*xz_N + ys*zs*yz_N + feq[DIR_0M0]; - f[DIR_00P] = f_T + xs*x_T + ys*y_T + zs*z_T + xs*ys*xy_T + xs*zs*xz_T + ys*zs*yz_T + feq[DIR_00P]; - f[DIR_00M] = f_T + xs*x_T + ys*y_T + zs*z_T + xs*ys*xy_T + xs*zs*xz_T + ys*zs*yz_T + feq[DIR_00M]; - f[DIR_PP0] = f_NE + xs*x_NE + ys*y_NE + zs*z_NE + xs*ys*xy_NE + xs*zs*xz_NE + ys*zs*yz_NE + feq[DIR_PP0]; - f[DIR_MM0] = f_NE + xs*x_NE + ys*y_NE + zs*z_NE + xs*ys*xy_NE + xs*zs*xz_NE + ys*zs*yz_NE + feq[DIR_MM0]; - f[DIR_PM0] = f_SE + xs*x_SE + ys*y_SE + zs*z_SE + xs*ys*xy_SE + xs*zs*xz_SE + ys*zs*yz_SE + feq[DIR_PM0]; - f[DIR_MP0] = f_SE + xs*x_SE + ys*y_SE + zs*z_SE + xs*ys*xy_SE + xs*zs*xz_SE + ys*zs*yz_SE + feq[DIR_MP0]; - f[DIR_P0P] = f_TE + xs*x_TE + ys*y_TE + zs*z_TE + xs*ys*xy_TE + xs*zs*xz_TE + ys*zs*yz_TE + feq[DIR_P0P]; - f[DIR_M0M] = f_TE + xs*x_TE + ys*y_TE + zs*z_TE + xs*ys*xy_TE + xs*zs*xz_TE + ys*zs*yz_TE + feq[DIR_M0M]; - f[DIR_P0M] = f_BE + xs*x_BE + ys*y_BE + zs*z_BE + xs*ys*xy_BE + xs*zs*xz_BE + ys*zs*yz_BE + feq[DIR_P0M]; - f[DIR_M0P] = f_BE + xs*x_BE + ys*y_BE + zs*z_BE + xs*ys*xy_BE + xs*zs*xz_BE + ys*zs*yz_BE + feq[DIR_M0P]; - f[DIR_0PP] = f_TN + xs*x_TN + ys*y_TN + zs*z_TN + xs*ys*xy_TN + xs*zs*xz_TN + ys*zs*yz_TN + feq[DIR_0PP]; - f[DIR_0MM] = f_TN + xs*x_TN + ys*y_TN + zs*z_TN + xs*ys*xy_TN + xs*zs*xz_TN + ys*zs*yz_TN + feq[DIR_0MM]; - f[DIR_0PM] = f_BN + xs*x_BN + ys*y_BN + zs*z_BN + xs*ys*xy_BN + xs*zs*xz_BN + ys*zs*yz_BN + feq[DIR_0PM]; - f[DIR_0MP] = f_BN + xs*x_BN + ys*y_BN + zs*z_BN + xs*ys*xy_BN + xs*zs*xz_BN + ys*zs*yz_BN + feq[DIR_0MP]; - f[DIR_PPP] = f_TNE + xs*x_TNE + ys*y_TNE + zs*z_TNE + xs*ys*xy_TNE + xs*zs*xz_TNE + ys*zs*yz_TNE + feq[DIR_PPP]; - f[DIR_MMP] = f_TSW + xs*x_TSW + ys*y_TSW + zs*z_TSW + xs*ys*xy_TSW + xs*zs*xz_TSW + ys*zs*yz_TSW + feq[DIR_MMP]; - f[DIR_PMP] = f_TSE + xs*x_TSE + ys*y_TSE + zs*z_TSE + xs*ys*xy_TSE + xs*zs*xz_TSE + ys*zs*yz_TSE + feq[DIR_PMP]; - f[DIR_MPP] = f_TNW + xs*x_TNW + ys*y_TNW + zs*z_TNW + xs*ys*xy_TNW + xs*zs*xz_TNW + ys*zs*yz_TNW + feq[DIR_MPP]; - f[DIR_PPM] = f_TSW + xs*x_TSW + ys*y_TSW + zs*z_TSW + xs*ys*xy_TSW + xs*zs*xz_TSW + ys*zs*yz_TSW + feq[DIR_PPM]; - f[DIR_MMM] = f_TNE + xs*x_TNE + ys*y_TNE + zs*z_TNE + xs*ys*xy_TNE + xs*zs*xz_TNE + ys*zs*yz_TNE + feq[DIR_MMM]; - f[DIR_PMM] = f_TNW + xs*x_TNW + ys*y_TNW + zs*z_TNW + xs*ys*xy_TNW + xs*zs*xz_TNW + ys*zs*yz_TNW + feq[DIR_PMM]; - f[DIR_MPM] = f_TSE + xs*x_TSE + ys*y_TSE + zs*z_TSE + xs*ys*xy_TSE + xs*zs*xz_TSE + ys*zs*yz_TSE + feq[DIR_MPM]; - f[DIR_000] = f_ZERO + xs*x_ZERO + ys*y_ZERO + zs*z_ZERO + feq[DIR_000]; + f[dP00] = f_E + xs*x_E + ys*y_E + zs*z_E + xs*ys*xy_E + xs*zs*xz_E + ys*zs*yz_E + feq[dP00]; + f[dM00] = f_E + xs*x_E + ys*y_E + zs*z_E + xs*ys*xy_E + xs*zs*xz_E + ys*zs*yz_E + feq[dM00]; + f[d0P0] = f_N + xs*x_N + ys*y_N + zs*z_N + xs*ys*xy_N + xs*zs*xz_N + ys*zs*yz_N + feq[d0P0]; + f[d0M0] = f_N + xs*x_N + ys*y_N + zs*z_N + xs*ys*xy_N + xs*zs*xz_N + ys*zs*yz_N + feq[d0M0]; + f[d00P] = f_T + xs*x_T + ys*y_T + zs*z_T + xs*ys*xy_T + xs*zs*xz_T + ys*zs*yz_T + feq[d00P]; + f[d00M] = f_T + xs*x_T + ys*y_T + zs*z_T + xs*ys*xy_T + xs*zs*xz_T + ys*zs*yz_T + feq[d00M]; + f[dPP0] = f_NE + xs*x_NE + ys*y_NE + zs*z_NE + xs*ys*xy_NE + xs*zs*xz_NE + ys*zs*yz_NE + feq[dPP0]; + f[dMM0] = f_NE + xs*x_NE + ys*y_NE + zs*z_NE + xs*ys*xy_NE + xs*zs*xz_NE + ys*zs*yz_NE + feq[dMM0]; + f[dPM0] = f_SE + xs*x_SE + ys*y_SE + zs*z_SE + xs*ys*xy_SE + xs*zs*xz_SE + ys*zs*yz_SE + feq[dPM0]; + f[dMP0] = f_SE + xs*x_SE + ys*y_SE + zs*z_SE + xs*ys*xy_SE + xs*zs*xz_SE + ys*zs*yz_SE + feq[dMP0]; + f[dP0P] = f_TE + xs*x_TE + ys*y_TE + zs*z_TE + xs*ys*xy_TE + xs*zs*xz_TE + ys*zs*yz_TE + feq[dP0P]; + f[dM0M] = f_TE + xs*x_TE + ys*y_TE + zs*z_TE + xs*ys*xy_TE + xs*zs*xz_TE + ys*zs*yz_TE + feq[dM0M]; + f[dP0M] = f_BE + xs*x_BE + ys*y_BE + zs*z_BE + xs*ys*xy_BE + xs*zs*xz_BE + ys*zs*yz_BE + feq[dP0M]; + f[dM0P] = f_BE + xs*x_BE + ys*y_BE + zs*z_BE + xs*ys*xy_BE + xs*zs*xz_BE + ys*zs*yz_BE + feq[dM0P]; + f[d0PP] = f_TN + xs*x_TN + ys*y_TN + zs*z_TN + xs*ys*xy_TN + xs*zs*xz_TN + ys*zs*yz_TN + feq[d0PP]; + f[d0MM] = f_TN + xs*x_TN + ys*y_TN + zs*z_TN + xs*ys*xy_TN + xs*zs*xz_TN + ys*zs*yz_TN + feq[d0MM]; + f[d0PM] = f_BN + xs*x_BN + ys*y_BN + zs*z_BN + xs*ys*xy_BN + xs*zs*xz_BN + ys*zs*yz_BN + feq[d0PM]; + f[d0MP] = f_BN + xs*x_BN + ys*y_BN + zs*z_BN + xs*ys*xy_BN + xs*zs*xz_BN + ys*zs*yz_BN + feq[d0MP]; + f[dPPP] = f_TNE + xs*x_TNE + ys*y_TNE + zs*z_TNE + xs*ys*xy_TNE + xs*zs*xz_TNE + ys*zs*yz_TNE + feq[dPPP]; + f[dMMP] = f_TSW + xs*x_TSW + ys*y_TSW + zs*z_TSW + xs*ys*xy_TSW + xs*zs*xz_TSW + ys*zs*yz_TSW + feq[dMMP]; + f[dPMP] = f_TSE + xs*x_TSE + ys*y_TSE + zs*z_TSE + xs*ys*xy_TSE + xs*zs*xz_TSE + ys*zs*yz_TSE + feq[dPMP]; + f[dMPP] = f_TNW + xs*x_TNW + ys*y_TNW + zs*z_TNW + xs*ys*xy_TNW + xs*zs*xz_TNW + ys*zs*yz_TNW + feq[dMPP]; + f[dPPM] = f_TSW + xs*x_TSW + ys*y_TSW + zs*z_TSW + xs*ys*xy_TSW + xs*zs*xz_TSW + ys*zs*yz_TSW + feq[dPPM]; + f[dMMM] = f_TNE + xs*x_TNE + ys*y_TNE + zs*z_TNE + xs*ys*xy_TNE + xs*zs*xz_TNE + ys*zs*yz_TNE + feq[dMMM]; + f[dPMM] = f_TNW + xs*x_TNW + ys*y_TNW + zs*z_TNW + xs*ys*xy_TNW + xs*zs*xz_TNW + ys*zs*yz_TNW + feq[dPMM]; + f[dMPM] = f_TSE + xs*x_TSE + ys*y_TSE + zs*z_TSE + xs*ys*xy_TSE + xs*zs*xz_TSE + ys*zs*yz_TSE + feq[dMPM]; + f[d000] = f_ZERO + xs*x_ZERO + ys*y_ZERO + zs*z_ZERO + feq[d000]; } ////////////////////////////////////////////////////////////////////////// //Position SWB -0.25, -0.25, -0.25 @@ -763,33 +763,33 @@ void IncompressibleOffsetInterpolator::calcInterpolatedNodeFC(real* f, real omeg f_TSE = eps_new*((ay - az + bx + bz - cx + cy+kxyAverage-kxzAverage+kyzAverage)/(c72o1*o)); f_TNW = eps_new*((ay + az + bx - bz + cx - cy+kxyAverage+kxzAverage-kyzAverage)/(c72o1*o)); - f[DIR_P00] = f_E + feq[DIR_P00]; - f[DIR_M00] = f_E + feq[DIR_M00]; - f[DIR_0P0] = f_N + feq[DIR_0P0]; - f[DIR_0M0] = f_N + feq[DIR_0M0]; - f[DIR_00P] = f_T + feq[DIR_00P]; - f[DIR_00M] = f_T + feq[DIR_00M]; - f[DIR_PP0] = f_NE + feq[DIR_PP0]; - f[DIR_MM0] = f_NE + feq[DIR_MM0]; - f[DIR_PM0] = f_SE + feq[DIR_PM0]; - f[DIR_MP0] = f_SE + feq[DIR_MP0]; - f[DIR_P0P] = f_TE + feq[DIR_P0P]; - f[DIR_M0M] = f_TE + feq[DIR_M0M]; - f[DIR_P0M] = f_BE + feq[DIR_P0M]; - f[DIR_M0P] = f_BE + feq[DIR_M0P]; - f[DIR_0PP] = f_TN + feq[DIR_0PP]; - f[DIR_0MM] = f_TN + feq[DIR_0MM]; - f[DIR_0PM] = f_BN + feq[DIR_0PM]; - f[DIR_0MP] = f_BN + feq[DIR_0MP]; - f[DIR_PPP] = f_TNE + feq[DIR_PPP]; - f[DIR_MPP] = f_TNW + feq[DIR_MPP]; - f[DIR_PMP] = f_TSE + feq[DIR_PMP]; - f[DIR_MMP] = f_TSW + feq[DIR_MMP]; - f[DIR_PPM] = f_TSW + feq[DIR_PPM]; - f[DIR_MPM] = f_TSE + feq[DIR_MPM]; - f[DIR_PMM] = f_TNW + feq[DIR_PMM]; - f[DIR_MMM] = f_TNE + feq[DIR_MMM]; - f[DIR_000] = f_ZERO + feq[DIR_000]; + f[dP00] = f_E + feq[dP00]; + f[dM00] = f_E + feq[dM00]; + f[d0P0] = f_N + feq[d0P0]; + f[d0M0] = f_N + feq[d0M0]; + f[d00P] = f_T + feq[d00P]; + f[d00M] = f_T + feq[d00M]; + f[dPP0] = f_NE + feq[dPP0]; + f[dMM0] = f_NE + feq[dMM0]; + f[dPM0] = f_SE + feq[dPM0]; + f[dMP0] = f_SE + feq[dMP0]; + f[dP0P] = f_TE + feq[dP0P]; + f[dM0M] = f_TE + feq[dM0M]; + f[dP0M] = f_BE + feq[dP0M]; + f[dM0P] = f_BE + feq[dM0P]; + f[d0PP] = f_TN + feq[d0PP]; + f[d0MM] = f_TN + feq[d0MM]; + f[d0PM] = f_BN + feq[d0PM]; + f[d0MP] = f_BN + feq[d0MP]; + f[dPPP] = f_TNE + feq[dPPP]; + f[dMPP] = f_TNW + feq[dMPP]; + f[dPMP] = f_TSE + feq[dPMP]; + f[dMMP] = f_TSW + feq[dMMP]; + f[dPPM] = f_TSW + feq[dPPM]; + f[dMPM] = f_TSE + feq[dMPM]; + f[dPMM] = f_TNW + feq[dPMM]; + f[dMMM] = f_TNE + feq[dMMM]; + f[d000] = f_ZERO + feq[d000]; } ////////////////////////////////////////////////////////////////////////// void IncompressibleOffsetInterpolator::calcInterpolatedVelocity(real x, real y, real z, real& vx1, real& vx2, real& vx3) diff --git a/src/cpu/VirtualFluidsCore/LBM/Interpolation/IncompressibleOffsetInterpolator.h b/src/cpu/core/LBM/Interpolation/IncompressibleOffsetInterpolator.h similarity index 100% rename from src/cpu/VirtualFluidsCore/LBM/Interpolation/IncompressibleOffsetInterpolator.h rename to src/cpu/core/LBM/Interpolation/IncompressibleOffsetInterpolator.h diff --git a/src/cpu/VirtualFluidsCore/LBM/Interpolation/Interpolator.cpp b/src/cpu/core/LBM/Interpolation/Interpolator.cpp similarity index 86% rename from src/cpu/VirtualFluidsCore/LBM/Interpolation/Interpolator.cpp rename to src/cpu/core/LBM/Interpolation/Interpolator.cpp index f28b1efed4836ca71b09a390078dd2aaf5463710..8bbd38b51b8351a93c4a544c50abc6194aed6648 100644 --- a/src/cpu/VirtualFluidsCore/LBM/Interpolation/Interpolator.cpp +++ b/src/cpu/core/LBM/Interpolation/Interpolator.cpp @@ -18,49 +18,49 @@ struct Range ////////////////////////////////////////////////////////////////////////// void Interpolator::readICell(SPtr<DistributionArray3D> f, D3Q27ICell &icell, int x1, int x2, int x3) { - f->getDistribution(icell.BSW, x1, x2, x3); - f->getDistribution(icell.BSE, x1 + 1, x2, x3); - f->getDistribution(icell.BNW, x1, x2 + 1, x3); - f->getDistribution(icell.BNE, x1 + 1, x2 + 1, x3); - f->getDistribution(icell.TSW, x1, x2, x3 + 1); - f->getDistribution(icell.TSE, x1 + 1, x2, x3 + 1); - f->getDistribution(icell.TNW, x1, x2 + 1, x3 + 1); - f->getDistribution(icell.TNE, x1 + 1, x2 + 1, x3 + 1); + f->getPreCollisionDistribution(icell.BSW, x1, x2, x3); + f->getPreCollisionDistribution(icell.BSE, x1 + 1, x2, x3); + f->getPreCollisionDistribution(icell.BNW, x1, x2 + 1, x3); + f->getPreCollisionDistribution(icell.BNE, x1 + 1, x2 + 1, x3); + f->getPreCollisionDistribution(icell.TSW, x1, x2, x3 + 1); + f->getPreCollisionDistribution(icell.TSE, x1 + 1, x2, x3 + 1); + f->getPreCollisionDistribution(icell.TNW, x1, x2 + 1, x3 + 1); + f->getPreCollisionDistribution(icell.TNE, x1 + 1, x2 + 1, x3 + 1); } ////////////////////////////////////////////////////////////////////////// void Interpolator::writeICell(SPtr<DistributionArray3D> f, const D3Q27ICell &icell, int x1, int x2, int x3) { - f->setDistribution(icell.BSW, x1, x2, x3); - f->setDistribution(icell.BSE, x1 + 1, x2, x3); - f->setDistribution(icell.BNW, x1, x2 + 1, x3); - f->setDistribution(icell.BNE, x1 + 1, x2 + 1, x3); - f->setDistribution(icell.TSW, x1, x2, x3 + 1); - f->setDistribution(icell.TSE, x1 + 1, x2, x3 + 1); - f->setDistribution(icell.TNW, x1, x2 + 1, x3 + 1); - f->setDistribution(icell.TNE, x1 + 1, x2 + 1, x3 + 1); + f->setPostCollisionDistribution(icell.BSW, x1, x2, x3); + f->setPostCollisionDistribution(icell.BSE, x1 + 1, x2, x3); + f->setPostCollisionDistribution(icell.BNW, x1, x2 + 1, x3); + f->setPostCollisionDistribution(icell.BNE, x1 + 1, x2 + 1, x3); + f->setPostCollisionDistribution(icell.TSW, x1, x2, x3 + 1); + f->setPostCollisionDistribution(icell.TSE, x1 + 1, x2, x3 + 1); + f->setPostCollisionDistribution(icell.TNW, x1, x2 + 1, x3 + 1); + f->setPostCollisionDistribution(icell.TNE, x1 + 1, x2 + 1, x3 + 1); } ////////////////////////////////////////////////////////////////////////// void Interpolator::writeICellInv(SPtr<DistributionArray3D> f, const D3Q27ICell &icell, int x1, int x2, int x3) { - f->setDistributionInv(icell.BSW, x1, x2, x3); - f->setDistributionInv(icell.BSE, x1 + 1, x2, x3); - f->setDistributionInv(icell.BNW, x1, x2 + 1, x3); - f->setDistributionInv(icell.BNE, x1 + 1, x2 + 1, x3); - f->setDistributionInv(icell.TSW, x1, x2, x3 + 1); - f->setDistributionInv(icell.TSE, x1 + 1, x2, x3 + 1); - f->setDistributionInv(icell.TNW, x1, x2 + 1, x3 + 1); - f->setDistributionInv(icell.TNE, x1 + 1, x2 + 1, x3 + 1); + f->setPreCollisionDistribution(icell.BSW, x1, x2, x3); + f->setPreCollisionDistribution(icell.BSE, x1 + 1, x2, x3); + f->setPreCollisionDistribution(icell.BNW, x1, x2 + 1, x3); + f->setPreCollisionDistribution(icell.BNE, x1 + 1, x2 + 1, x3); + f->setPreCollisionDistribution(icell.TSW, x1, x2, x3 + 1); + f->setPreCollisionDistribution(icell.TSE, x1 + 1, x2, x3 + 1); + f->setPreCollisionDistribution(icell.TNW, x1, x2 + 1, x3 + 1); + f->setPreCollisionDistribution(icell.TNE, x1 + 1, x2 + 1, x3 + 1); } ////////////////////////////////////////////////////////////////////////// void Interpolator::writeINode(SPtr<DistributionArray3D> f, const real *const inode, int x1, int x2, int x3) { - f->setDistribution(inode, x1, x2, x3); + f->setPostCollisionDistribution(inode, x1, x2, x3); } ////////////////////////////////////////////////////////////////////////// void Interpolator::writeINodeInv(SPtr<DistributionArray3D> f, const real *const inode, int x1, int x2, int x3) { - f->setDistributionInv(inode, x1, x2, x3); + f->setPreCollisionDistribution(inode, x1, x2, x3); } ////////////////////////////////////////////////////////////////////////// bool Interpolator::iCellHasSolid(const SPtr<BCArray3D> bcArray, int x1, int x2, int x3) diff --git a/src/cpu/VirtualFluidsCore/LBM/Interpolation/Interpolator.h b/src/cpu/core/LBM/Interpolation/Interpolator.h similarity index 100% rename from src/cpu/VirtualFluidsCore/LBM/Interpolation/Interpolator.h rename to src/cpu/core/LBM/Interpolation/Interpolator.h diff --git a/src/cpu/VirtualFluidsCore/LBM/K17CompressibleNavierStokes.cpp b/src/cpu/core/LBM/K17CompressibleNavierStokes.cpp similarity index 96% rename from src/cpu/VirtualFluidsCore/LBM/K17CompressibleNavierStokes.cpp rename to src/cpu/core/LBM/K17CompressibleNavierStokes.cpp index 6fdc2b96ca744906a26266e0101a0145cc3928dd..4287254015ad9ee8c6d1250636c15989cd81242b 100644 --- a/src/cpu/VirtualFluidsCore/LBM/K17CompressibleNavierStokes.cpp +++ b/src/cpu/core/LBM/K17CompressibleNavierStokes.cpp @@ -127,7 +127,7 @@ void K17CompressibleNavierStokes::calculate(int step) } vf::lbm::CollisionParameter parameter; - dataSet->getFdistributions()->getDistribution(parameter.distribution, x1, x2, x3); + dataSet->getFdistributions()->getPreCollisionDistribution(parameter.distribution, x1, x2, x3); real forces[3] = { c0o1, c0o1, c0o1 }; if (withForcing) // TODO: add level factor? @@ -156,7 +156,7 @@ void K17CompressibleNavierStokes::calculate(int step) vf::lbm::MacroscopicValues mv; // not used vf::lbm::TurbulentViscosity tv; // not used vf::lbm::runK17CompressibleNavierStokes<vf::lbm::TurbulenceModel::None>(parameter, mv, tv); - dataSet->getFdistributions()->setDistribution(parameter.distribution, x1, x2, x3); + dataSet->getFdistributions()->setPostCollisionDistribution(parameter.distribution, x1, x2, x3); } } } diff --git a/src/cpu/VirtualFluidsCore/LBM/K17CompressibleNavierStokes.h b/src/cpu/core/LBM/K17CompressibleNavierStokes.h similarity index 100% rename from src/cpu/VirtualFluidsCore/LBM/K17CompressibleNavierStokes.h rename to src/cpu/core/LBM/K17CompressibleNavierStokes.h diff --git a/src/cpu/VirtualFluidsCore/LBM/LBMKernel.cpp b/src/cpu/core/LBM/LBMKernel.cpp similarity index 100% rename from src/cpu/VirtualFluidsCore/LBM/LBMKernel.cpp rename to src/cpu/core/LBM/LBMKernel.cpp diff --git a/src/cpu/VirtualFluidsCore/LBM/LBMKernel.h b/src/cpu/core/LBM/LBMKernel.h similarity index 100% rename from src/cpu/VirtualFluidsCore/LBM/LBMKernel.h rename to src/cpu/core/LBM/LBMKernel.h diff --git a/src/cpu/core/LBM/LBMKernelETD3Q27BGK.cpp b/src/cpu/core/LBM/LBMKernelETD3Q27BGK.cpp new file mode 100644 index 0000000000000000000000000000000000000000..a154ee477b83d13c1d65a4acd53f9e8fe75e63a8 --- /dev/null +++ b/src/cpu/core/LBM/LBMKernelETD3Q27BGK.cpp @@ -0,0 +1,303 @@ +#include "LBMKernelETD3Q27BGK.h" +#include "D3Q27System.h" +#include "D3Q27EsoTwist3DSplittedVector.h" +#include "D3Q27EsoTwist3DSoA.h" +#include "DataSet3D.h" +#include "BCSet.h" +#include "BCArray3D.h" +#include "basics/constants/NumericConstants.h" + +using namespace vf::basics::constant; +//using namespace UbMath; + +//#define PROOF_CORRECTNESS + + +////////////////////////////////////////////////////////////////////////// +LBMKernelETD3Q27BGK::LBMKernelETD3Q27BGK() +{ + this->compressible = false; +} +////////////////////////////////////////////////////////////////////////// +LBMKernelETD3Q27BGK::~LBMKernelETD3Q27BGK(void) += default; +////////////////////////////////////////////////////////////////////////// +void LBMKernelETD3Q27BGK::initDataSet() +{ + SPtr<DistributionArray3D> d(new D3Q27EsoTwist3DSplittedVector(nx[0]+2, nx[1]+2, nx[2]+2, -999.9)); + dataSet->setFdistributions(d); +} +////////////////////////////////////////////////////////////////////////// +SPtr<LBMKernel> LBMKernelETD3Q27BGK::clone() +{ + SPtr<LBMKernel> kernel(new LBMKernelETD3Q27BGK()); + std::dynamic_pointer_cast<LBMKernelETD3Q27BGK>(kernel)->initDataSet(); + kernel->setCollisionFactor(this->collFactor); + kernel->setBCSet(bcSet->clone(kernel)); + kernel->setWithForcing(withForcing); + kernel->setForcingX1(muForcingX1); + kernel->setForcingX2(muForcingX2); + kernel->setForcingX3(muForcingX3); + kernel->setIndex(ix1, ix2, ix3); + return kernel; +} +////////////////////////////////////////////////////////////////////////// +void LBMKernelETD3Q27BGK::calculate(int /*step*/) +{ + using namespace D3Q27System; + using namespace vf::lbm::dir; + + //initializing of forcing stuff + if (withForcing) + { + muForcingX1.DefineVar("x1",&muX1); muForcingX1.DefineVar("x2",&muX2); muForcingX1.DefineVar("x3",&muX3); + muForcingX2.DefineVar("x1",&muX1); muForcingX2.DefineVar("x2",&muX2); muForcingX2.DefineVar("x3",&muX3); + muForcingX3.DefineVar("x1",&muX1); muForcingX3.DefineVar("x2",&muX2); muForcingX3.DefineVar("x3",&muX3); + forcingX1 = c0o1; + forcingX2 = c0o1; + forcingX3 = c0o1; + } + ///////////////////////////////////// + + localDistributions = std::dynamic_pointer_cast<D3Q27EsoTwist3DSplittedVector>(dataSet->getFdistributions())->getLocalDistributions(); + nonLocalDistributions = std::dynamic_pointer_cast<D3Q27EsoTwist3DSplittedVector>(dataSet->getFdistributions())->getNonLocalDistributions(); + zeroDistributions = std::dynamic_pointer_cast<D3Q27EsoTwist3DSplittedVector>(dataSet->getFdistributions())->getZeroDistributions(); + + SPtr<BCArray3D> bcArray = this->getBCSet()->getBCArray(); + real f[D3Q27System::ENDF+1]; + real feq[D3Q27System::ENDF+1]; + real drho,vx1,vx2,vx3; + const int bcArrayMaxX1 = (int)bcArray->getNX1(); + const int bcArrayMaxX2 = (int)bcArray->getNX2(); + const int bcArrayMaxX3 = (int)bcArray->getNX3(); + + int minX1 = ghostLayerWidth; + int minX2 = ghostLayerWidth; + int minX3 = ghostLayerWidth; + int maxX1 = bcArrayMaxX1-ghostLayerWidth; + int maxX2 = bcArrayMaxX2-ghostLayerWidth; + int maxX3 = bcArrayMaxX3-ghostLayerWidth; + + for(int x3 = minX3; x3 < maxX3; x3++) + { + for(int x2 = minX2; x2 < maxX2; x2++) + { + for(int x1 = minX1; x1 < maxX1; x1++) + { + if(!bcArray->isSolid(x1,x2,x3) && !bcArray->isUndefined(x1,x2,x3)) + { + int x1p = x1 + 1; + int x2p = x2 + 1; + int x3p = x3 + 1; + ////////////////////////////////////////////////////////////////////////// + //read distribution + //////////////////////////////////////////////////////////////////////////// + f[d000] = (*this->zeroDistributions)(x1,x2,x3); + + f[dP00] = (*this->localDistributions)(D3Q27System::ET_E, x1,x2,x3); + f[d0P0] = (*this->localDistributions)(D3Q27System::ET_N,x1,x2,x3); + f[d00P] = (*this->localDistributions)(D3Q27System::ET_T,x1,x2,x3); + f[dPP0] = (*this->localDistributions)(D3Q27System::ET_NE,x1,x2,x3); + f[dMP0] = (*this->localDistributions)(D3Q27System::ET_NW,x1p,x2,x3); + f[dP0P] = (*this->localDistributions)(D3Q27System::ET_TE,x1,x2,x3); + f[dM0P] = (*this->localDistributions)(D3Q27System::ET_TW, x1p,x2,x3); + f[d0PP] = (*this->localDistributions)(D3Q27System::ET_TN,x1,x2,x3); + f[d0MP] = (*this->localDistributions)(D3Q27System::ET_TS,x1,x2p,x3); + f[dPPP] = (*this->localDistributions)(D3Q27System::ET_TNE,x1,x2,x3); + f[dMPP] = (*this->localDistributions)(D3Q27System::ET_TNW,x1p,x2,x3); + f[dPMP] = (*this->localDistributions)(D3Q27System::ET_TSE,x1,x2p,x3); + f[dMMP] = (*this->localDistributions)(D3Q27System::ET_TSW,x1p,x2p,x3); + + f[dM00] = (*this->nonLocalDistributions)(D3Q27System::ET_W,x1p,x2,x3 ); + f[d0M0] = (*this->nonLocalDistributions)(D3Q27System::ET_S,x1,x2p,x3 ); + f[d00M] = (*this->nonLocalDistributions)(D3Q27System::ET_B,x1,x2,x3p ); + f[dMM0] = (*this->nonLocalDistributions)(D3Q27System::ET_SW,x1p,x2p,x3 ); + f[dPM0] = (*this->nonLocalDistributions)(D3Q27System::ET_SE,x1,x2p,x3 ); + f[dM0M] = (*this->nonLocalDistributions)(D3Q27System::ET_BW,x1p,x2,x3p ); + f[dP0M] = (*this->nonLocalDistributions)(D3Q27System::ET_BE,x1,x2,x3p ); + f[d0MM] = (*this->nonLocalDistributions)(D3Q27System::ET_BS,x1,x2p,x3p ); + f[d0PM] = (*this->nonLocalDistributions)(D3Q27System::ET_BN,x1,x2,x3p ); + f[dMMM] = (*this->nonLocalDistributions)(D3Q27System::ET_BSW,x1p,x2p,x3p); + f[dPMM] = (*this->nonLocalDistributions)(D3Q27System::ET_BSE,x1,x2p,x3p); + f[dMPM] = (*this->nonLocalDistributions)(D3Q27System::ET_BNW,x1p,x2,x3p); + f[dPPM] = (*this->nonLocalDistributions)(D3Q27System::ET_BNE,x1,x2,x3p); + ////////////////////////////////////////////////////////////////////////// + + drho = f[d000] + f[dP00] + f[dM00] + f[d0P0] + f[d0M0] + f[d00P] + f[d00M] + + f[dPP0] + f[dMM0] + f[dPM0] + f[dMP0] + f[dP0P] + f[dM0M] + f[dP0M] + + f[dM0P] + f[d0PP] + f[d0MM] + f[d0PM] + f[d0MP] + f[dPPP] + f[dMMP] + + f[dPMP] + f[dMPP] + f[dPPM] + f[dMMM] + f[dPMM] + f[dMPM]; + + vx1 = f[dP00] - f[dM00] + f[dPP0] - f[dMM0] + f[dPM0] - f[dMP0] + f[dP0P] - f[dM0M] + + f[dP0M] - f[dM0P] + f[dPPP] - f[dMMP] + f[dPMP] - f[dMPP] + f[dPPM] - f[dMMM] + + f[dPMM] - f[dMPM]; + + vx2 = f[d0P0] - f[d0M0] + f[dPP0] - f[dMM0] - f[dPM0] + f[dMP0] + f[d0PP] - f[d0MM] + f[d0PM] + - f[d0MP] + f[dPPP] - f[dMMP] - f[dPMP] + f[dMPP] + f[dPPM] - f[dMMM] - f[dPMM] + + f[dMPM]; + + vx3 = f[d00P] - f[d00M] + f[dP0P] - f[dM0M] - f[dP0M] + f[dM0P] + f[d0PP] - f[d0MM] - f[d0PM] + + f[d0MP] + f[dPPP] + f[dMMP] + f[dPMP] + f[dMPP] - f[dPPM] - f[dMMM] - f[dPMM] + - f[dMPM]; + + real cu_sq= c3o2*(vx1*vx1+vx2*vx2+vx3*vx3); + + feq[d000] = c8o27*(drho-cu_sq); + feq[dP00] = c2o27*(drho+c3o1*( vx1 )+c9o2*( vx1 )*( vx1 )-cu_sq); + feq[dM00] = c2o27*(drho+c3o1*(-vx1 )+c9o2*(-vx1 )*(-vx1 )-cu_sq); + feq[d0P0] = c2o27*(drho+c3o1*( vx2)+c9o2*( vx2)*( vx2)-cu_sq); + feq[d0M0] = c2o27*(drho+c3o1*( -vx2)+c9o2*( -vx2)*( -vx2)-cu_sq); + feq[d00P] = c2o27*(drho+c3o1*( vx3 )+c9o2*( vx3)*( vx3)-cu_sq); + feq[d00M] = c2o27*(drho+c3o1*( -vx3)+c9o2*( -vx3)*( -vx3)-cu_sq); + feq[dPP0] = c1o54*(drho+c3o1*( vx1+vx2)+c9o2*( vx1+vx2)*( vx1+vx2)-cu_sq); + feq[dMM0] = c1o54*(drho+c3o1*(-vx1-vx2)+c9o2*(-vx1-vx2)*(-vx1-vx2)-cu_sq); + feq[dPM0] = c1o54*(drho+c3o1*( vx1-vx2)+c9o2*( vx1-vx2)*( vx1-vx2)-cu_sq); + feq[dMP0] = c1o54*(drho+c3o1*(-vx1+vx2)+c9o2*(-vx1+vx2)*(-vx1+vx2)-cu_sq); + feq[dP0P] = c1o54*(drho+c3o1*( vx1+vx3)+c9o2*( vx1+vx3)*( vx1+vx3)-cu_sq); + feq[dM0M] = c1o54*(drho+c3o1*(-vx1-vx3)+c9o2*(-vx1-vx3)*(-vx1-vx3)-cu_sq); + feq[dP0M] = c1o54*(drho+c3o1*( vx1-vx3)+c9o2*( vx1-vx3)*( vx1-vx3)-cu_sq); + feq[dM0P] = c1o54*(drho+c3o1*(-vx1+vx3)+c9o2*(-vx1+vx3)*(-vx1+vx3)-cu_sq); + feq[d0PP] = c1o54*(drho+c3o1*( vx2+vx3)+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq); + feq[d0MM] = c1o54*(drho+c3o1*(-vx2-vx3)+c9o2*(-vx2-vx3)*(-vx2-vx3)-cu_sq); + feq[d0PM] = c1o54*(drho+c3o1*( vx2-vx3)+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq); + feq[d0MP] = c1o54*(drho+c3o1*(-vx2+vx3)+c9o2*(-vx2+vx3)*(-vx2+vx3)-cu_sq); + feq[dPPP]= c1o216*(drho+c3o1*( vx1+vx2+vx3)+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq); + feq[dMMM]= c1o216*(drho+c3o1*(-vx1-vx2-vx3)+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq); + feq[dPPM]= c1o216*(drho+c3o1*( vx1+vx2-vx3)+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq); + feq[dMMP]= c1o216*(drho+c3o1*(-vx1-vx2+vx3)+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq); + feq[dPMP]= c1o216*(drho+c3o1*( vx1-vx2+vx3)+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq); + feq[dMPM]= c1o216*(drho+c3o1*(-vx1+vx2-vx3)+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq); + feq[dPMM]= c1o216*(drho+c3o1*( vx1-vx2-vx3)+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq); + feq[dMPP]= c1o216*(drho+c3o1*(-vx1+vx2+vx3)+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq); + + //Relaxation + f[d000] += (feq[d000]-f[d000])*collFactor; + f[dP00] += (feq[dP00]-f[dP00])*collFactor; + f[dM00] += (feq[dM00]-f[dM00])*collFactor; + f[d0P0] += (feq[d0P0]-f[d0P0])*collFactor; + f[d0M0] += (feq[d0M0]-f[d0M0])*collFactor; + f[d00P] += (feq[d00P]-f[d00P])*collFactor; + f[d00M] += (feq[d00M]-f[d00M])*collFactor; + f[dPP0] += (feq[dPP0]-f[dPP0])*collFactor; + f[dMM0] += (feq[dMM0]-f[dMM0])*collFactor; + f[dPM0] += (feq[dPM0]-f[dPM0])*collFactor; + f[dMP0] += (feq[dMP0]-f[dMP0])*collFactor; + f[dP0P] += (feq[dP0P]-f[dP0P])*collFactor; + f[dM0M] += (feq[dM0M]-f[dM0M])*collFactor; + f[dP0M] += (feq[dP0M]-f[dP0M])*collFactor; + f[dM0P] += (feq[dM0P]-f[dM0P])*collFactor; + f[d0PP] += (feq[d0PP]-f[d0PP])*collFactor; + f[d0MM] += (feq[d0MM]-f[d0MM])*collFactor; + f[d0PM] += (feq[d0PM]-f[d0PM])*collFactor; + f[d0MP] += (feq[d0MP]-f[d0MP])*collFactor; + + f[dPPP] += (feq[dPPP]-f[dPPP])*collFactor; + f[dMMM] += (feq[dMMM]-f[dMMM])*collFactor; + f[dPPM] += (feq[dPPM]-f[dPPM])*collFactor; + f[dMMP] += (feq[dMMP]-f[dMMP])*collFactor; + f[dPMP] += (feq[dPMP]-f[dPMP])*collFactor; + f[dMPM] += (feq[dMPM]-f[dMPM])*collFactor; + f[dPMM] += (feq[dPMM]-f[dPMM])*collFactor; + f[dMPP] += (feq[dMPP]-f[dMPP])*collFactor; + + ////////////////////////////////////////////////////////////////////////// + //forcing + if (withForcing) + { + muX1 = x1+ix1*bcArrayMaxX1; + muX2 = x2+ix2*bcArrayMaxX2; + muX3 = x3+ix3*bcArrayMaxX3; + + forcingX1 = muForcingX1.Eval(); + forcingX2 = muForcingX2.Eval(); + forcingX3 = muForcingX3.Eval(); + + f[d000] += c0o1; + f[dP00] += c3o1*c2o27 * (forcingX1) ; + f[dM00] += c3o1*c2o27 * (-forcingX1) ; + f[d0P0] += c3o1*c2o27 * (forcingX2) ; + f[d0M0] += c3o1*c2o27 * (-forcingX2) ; + f[d00P] += c3o1*c2o27 * (forcingX3) ; + f[d00M] += c3o1*c2o27 * (-forcingX3); + f[dPP0] += c3o1*c1o54 * ( forcingX1+forcingX2 ) ; + f[dMM0 ] += c3o1*c1o54 * (-forcingX1-forcingX2 ) ; + f[dPM0 ] += c3o1*c1o54 * ( forcingX1-forcingX2 ) ; + f[dMP0 ] += c3o1*c1o54 * (-forcingX1+forcingX2 ) ; + f[dP0P ] += c3o1*c1o54 * ( forcingX1 +forcingX3) ; + f[dM0M ] += c3o1*c1o54 * (-forcingX1 -forcingX3) ; + f[dP0M ] += c3o1*c1o54 * ( forcingX1 -forcingX3) ; + f[dM0P ] += c3o1*c1o54 * (-forcingX1 +forcingX3) ; + f[d0PP ] += c3o1*c1o54 * ( forcingX2+forcingX3) ; + f[d0MM ] += c3o1*c1o54 * ( -forcingX2-forcingX3) ; + f[d0PM ] += c3o1*c1o54 * ( forcingX2-forcingX3) ; + f[d0MP ] += c3o1*c1o54 * ( -forcingX2+forcingX3) ; + f[dPPP] += c3o1*c1o216* ( forcingX1+forcingX2+forcingX3) ; + f[dMMM] += c3o1*c1o216* (-forcingX1-forcingX2-forcingX3) ; + f[dPPM] += c3o1*c1o216* ( forcingX1+forcingX2-forcingX3) ; + f[dMMP] += c3o1*c1o216* (-forcingX1-forcingX2+forcingX3) ; + f[dPMP] += c3o1*c1o216* ( forcingX1-forcingX2+forcingX3) ; + f[dMPM] += c3o1*c1o216* (-forcingX1+forcingX2-forcingX3) ; + f[dPMM] += c3o1*c1o216* ( forcingX1-forcingX2-forcingX3) ; + f[dMPP] += c3o1*c1o216* (-forcingX1+forcingX2+forcingX3) ; + } + ////////////////////////////////////////////////////////////////////////// +#ifdef PROOF_CORRECTNESS + real rho_post = f[REST] + f[dP00] + 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]; + real dif = drho - rho_post; +#ifdef SINGLEPRECISION + if(dif > 10.0E-7 || dif < -10.0E-7) +#else + if(dif > 10.0E-15 || dif < -10.0E-15) +#endif + { + UB_THROW(UbException(UB_EXARGS,"rho is not correct")); + } +#endif + ////////////////////////////////////////////////////////////////////////// + //write distribution + ////////////////////////////////////////////////////////////////////////// + (*this->localDistributions)(D3Q27System::ET_E,x1, x2, x3) = f[iP00]; + (*this->localDistributions)(D3Q27System::ET_N,x1, x2, x3) = f[i0P0]; + (*this->localDistributions)(D3Q27System::ET_T,x1, x2, x3) = f[i00P]; + (*this->localDistributions)(D3Q27System::ET_NE,x1, x2, x3) = f[iPP0]; + (*this->localDistributions)(D3Q27System::ET_NW,x1p,x2, x3) = f[iMP0]; + (*this->localDistributions)(D3Q27System::ET_TE,x1, x2, x3) = f[iP0P]; + (*this->localDistributions)(D3Q27System::ET_TW,x1p,x2, x3) = f[iM0P]; + (*this->localDistributions)(D3Q27System::ET_TN,x1, x2, x3) = f[i0PP]; + (*this->localDistributions)(D3Q27System::ET_TS,x1, x2p,x3) = f[i0MP]; + (*this->localDistributions)(D3Q27System::ET_TNE,x1, x2, x3) = f[iPPP]; + (*this->localDistributions)(D3Q27System::ET_TNW,x1p,x2, x3) = f[iMPP]; + (*this->localDistributions)(D3Q27System::ET_TSE,x1, x2p,x3) = f[iPMP]; + (*this->localDistributions)(D3Q27System::ET_TSW,x1p,x2p,x3) = f[iMMP]; + + (*this->nonLocalDistributions)(D3Q27System::ET_W,x1p,x2, x3 ) = f[iM00 ]; + (*this->nonLocalDistributions)(D3Q27System::ET_S,x1, x2p,x3 ) = f[i0M0 ]; + (*this->nonLocalDistributions)(D3Q27System::ET_B,x1, x2, x3p ) = f[i00M ]; + (*this->nonLocalDistributions)(D3Q27System::ET_SW,x1p,x2p,x3 ) = f[iMM0]; + (*this->nonLocalDistributions)(D3Q27System::ET_SE,x1, x2p,x3 ) = f[iPM0]; + (*this->nonLocalDistributions)(D3Q27System::ET_BW,x1p,x2, x3p ) = f[iM0M]; + (*this->nonLocalDistributions)(D3Q27System::ET_BE,x1, x2, x3p ) = f[iP0M]; + (*this->nonLocalDistributions)(D3Q27System::ET_BS,x1, x2p,x3p ) = f[i0MM]; + (*this->nonLocalDistributions)(D3Q27System::ET_BN,x1, x2, x3p ) = f[i0PM]; + (*this->nonLocalDistributions)(D3Q27System::ET_BSW,x1p,x2p,x3p) = f[iMMM]; + (*this->nonLocalDistributions)(D3Q27System::ET_BSE,x1, x2p,x3p) = f[iPMM]; + (*this->nonLocalDistributions)(D3Q27System::ET_BNW,x1p,x2, x3p) = f[iMPM]; + (*this->nonLocalDistributions)(D3Q27System::ET_BNE,x1, x2, x3p) = f[iPPM]; + + (*this->zeroDistributions)(x1,x2,x3) = f[d000]; + ////////////////////////////////////////////////////////////////////////// + + + } + } + } + } +} +////////////////////////////////////////////////////////////////////////// +real LBMKernelETD3Q27BGK::getCalculationTime() +{ + return c0o1; +} diff --git a/src/cpu/VirtualFluidsCore/LBM/LBMKernelETD3Q27BGK.h b/src/cpu/core/LBM/LBMKernelETD3Q27BGK.h similarity index 100% rename from src/cpu/VirtualFluidsCore/LBM/LBMKernelETD3Q27BGK.h rename to src/cpu/core/LBM/LBMKernelETD3Q27BGK.h diff --git a/src/cpu/VirtualFluidsCore/LBM/LBMSystem.cpp b/src/cpu/core/LBM/LBMSystem.cpp similarity index 100% rename from src/cpu/VirtualFluidsCore/LBM/LBMSystem.cpp rename to src/cpu/core/LBM/LBMSystem.cpp diff --git a/src/cpu/VirtualFluidsCore/LBM/LBMSystem.h b/src/cpu/core/LBM/LBMSystem.h similarity index 100% rename from src/cpu/VirtualFluidsCore/LBM/LBMSystem.h rename to src/cpu/core/LBM/LBMSystem.h diff --git a/src/cpu/VirtualFluidsCore/LBM/LBMUnitConverter.h b/src/cpu/core/LBM/LBMUnitConverter.h similarity index 100% rename from src/cpu/VirtualFluidsCore/LBM/LBMUnitConverter.h rename to src/cpu/core/LBM/LBMUnitConverter.h diff --git a/src/cpu/VirtualFluidsCore/LBM/VoidLBMKernel.cpp b/src/cpu/core/LBM/VoidLBMKernel.cpp similarity index 100% rename from src/cpu/VirtualFluidsCore/LBM/VoidLBMKernel.cpp rename to src/cpu/core/LBM/VoidLBMKernel.cpp diff --git a/src/cpu/VirtualFluidsCore/LBM/VoidLBMKernel.h b/src/cpu/core/LBM/VoidLBMKernel.h similarity index 100% rename from src/cpu/VirtualFluidsCore/LBM/VoidLBMKernel.h rename to src/cpu/core/LBM/VoidLBMKernel.h diff --git a/src/cpu/VirtualFluidsCore/Parallel/BlocksDistributor.cpp b/src/cpu/core/Parallel/BlocksDistributor.cpp similarity index 100% rename from src/cpu/VirtualFluidsCore/Parallel/BlocksDistributor.cpp rename to src/cpu/core/Parallel/BlocksDistributor.cpp diff --git a/src/cpu/VirtualFluidsCore/Parallel/BlocksDistributor.h b/src/cpu/core/Parallel/BlocksDistributor.h similarity index 100% rename from src/cpu/VirtualFluidsCore/Parallel/BlocksDistributor.h rename to src/cpu/core/Parallel/BlocksDistributor.h diff --git a/src/cpu/VirtualFluidsCore/Parallel/MPIIODataStructures.h b/src/cpu/core/Parallel/MPIIODataStructures.h similarity index 100% rename from src/cpu/VirtualFluidsCore/Parallel/MPIIODataStructures.h rename to src/cpu/core/Parallel/MPIIODataStructures.h diff --git a/src/cpu/VirtualFluidsCore/Parallel/MetisPartitioner.cpp b/src/cpu/core/Parallel/MetisPartitioner.cpp similarity index 100% rename from src/cpu/VirtualFluidsCore/Parallel/MetisPartitioner.cpp rename to src/cpu/core/Parallel/MetisPartitioner.cpp diff --git a/src/cpu/VirtualFluidsCore/Parallel/MetisPartitioner.h b/src/cpu/core/Parallel/MetisPartitioner.h similarity index 100% rename from src/cpu/VirtualFluidsCore/Parallel/MetisPartitioner.h rename to src/cpu/core/Parallel/MetisPartitioner.h diff --git a/src/cpu/VirtualFluidsCore/Parallel/PriorityQueueDecompositor.cpp b/src/cpu/core/Parallel/PriorityQueueDecompositor.cpp similarity index 100% rename from src/cpu/VirtualFluidsCore/Parallel/PriorityQueueDecompositor.cpp rename to src/cpu/core/Parallel/PriorityQueueDecompositor.cpp diff --git a/src/cpu/VirtualFluidsCore/Parallel/PriorityQueueDecompositor.h b/src/cpu/core/Parallel/PriorityQueueDecompositor.h similarity index 100% rename from src/cpu/VirtualFluidsCore/Parallel/PriorityQueueDecompositor.h rename to src/cpu/core/Parallel/PriorityQueueDecompositor.h diff --git a/src/cpu/VirtualFluidsCore/Parallel/SimpleGeometricPartitioner.h b/src/cpu/core/Parallel/SimpleGeometricPartitioner.h similarity index 100% rename from src/cpu/VirtualFluidsCore/Parallel/SimpleGeometricPartitioner.h rename to src/cpu/core/Parallel/SimpleGeometricPartitioner.h diff --git a/src/cpu/VirtualFluidsCore/Parallel/ZoltanPartitioner.cpp b/src/cpu/core/Parallel/ZoltanPartitioner.cpp similarity index 100% rename from src/cpu/VirtualFluidsCore/Parallel/ZoltanPartitioner.cpp rename to src/cpu/core/Parallel/ZoltanPartitioner.cpp diff --git a/src/cpu/VirtualFluidsCore/Parallel/ZoltanPartitioner.h b/src/cpu/core/Parallel/ZoltanPartitioner.h similarity index 100% rename from src/cpu/VirtualFluidsCore/Parallel/ZoltanPartitioner.h rename to src/cpu/core/Parallel/ZoltanPartitioner.h diff --git a/src/cpu/VirtualFluidsCore/Simulation/Block3D.cpp b/src/cpu/core/Simulation/Block3D.cpp similarity index 98% rename from src/cpu/VirtualFluidsCore/Simulation/Block3D.cpp rename to src/cpu/core/Simulation/Block3D.cpp index a6b7127bc4ecd2049790cb2bef98c1d506f7f513..856924874f853b60c617c33a5d0f3c7084da762f 100644 --- a/src/cpu/VirtualFluidsCore/Simulation/Block3D.cpp +++ b/src/cpu/core/Simulation/Block3D.cpp @@ -266,7 +266,7 @@ int Block3D::getNumberOfLocalConnectorsForSurfaces() for (SPtr<Block3DConnector> c : connectors) { if (c) { - if (c->getSendDir() >= (int)DIR_P00 && c->getSendDir() <= (int)DIR_00M && c->isLocalConnector()) + if (c->getSendDir() >= (int)dP00 && c->getSendDir() <= (int)d00M && c->isLocalConnector()) count++; } } @@ -282,7 +282,7 @@ int Block3D::getNumberOfRemoteConnectorsForSurfaces() for (SPtr<Block3DConnector> c : connectors) { if (c) { - if (c->getSendDir() >= (int)DIR_P00 && c->getSendDir() <= (int)DIR_00M && c->isRemoteConnector()) + if (c->getSendDir() >= (int)dP00 && c->getSendDir() <= (int)d00M && c->isRemoteConnector()) count++; } } diff --git a/src/cpu/VirtualFluidsCore/Simulation/Block3D.h b/src/cpu/core/Simulation/Block3D.h similarity index 100% rename from src/cpu/VirtualFluidsCore/Simulation/Block3D.h rename to src/cpu/core/Simulation/Block3D.h diff --git a/src/cpu/VirtualFluidsCore/Simulation/Grid3D.cpp b/src/cpu/core/Simulation/Grid3D.cpp similarity index 98% rename from src/cpu/VirtualFluidsCore/Simulation/Grid3D.cpp rename to src/cpu/core/Simulation/Grid3D.cpp index 2cf8a4824c6d7f30bb2b1593ba96da3d952924ad..faa3d793b72f4e1c51c7c6d87d060c68dfbed7d9 100644 --- a/src/cpu/VirtualFluidsCore/Simulation/Grid3D.cpp +++ b/src/cpu/core/Simulation/Grid3D.cpp @@ -1106,82 +1106,82 @@ void Grid3D::getNeighborBlocksForDirection(int dir, int ix1, int ix2, int ix3, i using namespace vf::lbm::dir; switch (dir) { - case DIR_P00: + case dP00: this->getNeighborsEast(ix1, ix2, ix3, level, levelDepth, blocks); break; - case DIR_M00: + case dM00: this->getNeighborsWest(ix1, ix2, ix3, level, levelDepth, blocks); break; - case DIR_0P0: + case d0P0: this->getNeighborsNorth(ix1, ix2, ix3, level, levelDepth, blocks); break; - case DIR_0M0: + case d0M0: this->getNeighborsSouth(ix1, ix2, ix3, level, levelDepth, blocks); break; - case DIR_00P: + case d00P: this->getNeighborsTop(ix1, ix2, ix3, level, levelDepth, blocks); break; - case DIR_00M: + case d00M: this->getNeighborsBottom(ix1, ix2, ix3, level, levelDepth, blocks); break; - case DIR_PP0: + case dPP0: this->getNeighborsNorthEast(ix1, ix2, ix3, level, levelDepth, blocks); break; - case DIR_MM0: + case dMM0: this->getNeighborsSouthWest(ix1, ix2, ix3, level, levelDepth, blocks); break; - case DIR_PM0: + case dPM0: this->getNeighborsSouthEast(ix1, ix2, ix3, level, levelDepth, blocks); break; - case DIR_MP0: + case dMP0: this->getNeighborsNorthWest(ix1, ix2, ix3, level, levelDepth, blocks); break; - case DIR_P0P: + case dP0P: this->getNeighborsTopEast(ix1, ix2, ix3, level, levelDepth, blocks); break; - case DIR_M0M: + case dM0M: this->getNeighborsBottomWest(ix1, ix2, ix3, level, levelDepth, blocks); break; - case DIR_P0M: + case dP0M: this->getNeighborsBottomEast(ix1, ix2, ix3, level, levelDepth, blocks); break; - case DIR_M0P: + case dM0P: this->getNeighborsTopWest(ix1, ix2, ix3, level, levelDepth, blocks); break; - case DIR_0PP: + case d0PP: this->getNeighborsTopNorth(ix1, ix2, ix3, level, levelDepth, blocks); break; - case DIR_0MM: + case d0MM: this->getNeighborsBottomSouth(ix1, ix2, ix3, level, levelDepth, blocks); break; - case DIR_0PM: + case d0PM: this->getNeighborsBottomNorth(ix1, ix2, ix3, level, levelDepth, blocks); break; - case DIR_0MP: + case d0MP: this->getNeighborsTopSouth(ix1, ix2, ix3, level, levelDepth, blocks); break; - case DIR_PPP: + case dPPP: this->getNeighborsTopNorthEast(ix1, ix2, ix3, level, levelDepth, blocks); break; - case DIR_MPP: + case dMPP: this->getNeighborsTopNorthWest(ix1, ix2, ix3, level, levelDepth, blocks); break; - case DIR_PMP: + case dPMP: this->getNeighborsTopSouthEast(ix1, ix2, ix3, level, levelDepth, blocks); break; - case DIR_MMP: + case dMMP: this->getNeighborsTopSouthWest(ix1, ix2, ix3, level, levelDepth, blocks); break; - case DIR_PPM: + case dPPM: this->getNeighborsBottomNorthEast(ix1, ix2, ix3, level, levelDepth, blocks); break; - case DIR_MPM: + case dMPM: this->getNeighborsBottomNorthWest(ix1, ix2, ix3, level, levelDepth, blocks); break; - case DIR_PMM: + case dPMM: this->getNeighborsBottomSouthEast(ix1, ix2, ix3, level, levelDepth, blocks); break; - case DIR_MMM: + case dMMM: this->getNeighborsBottomSouthWest(ix1, ix2, ix3, level, levelDepth, blocks); break; default: @@ -1271,85 +1271,85 @@ void Grid3D::getNeighborBlocksForDirectionWithREST(int dir, int ix1, int ix2, in using namespace vf::lbm::dir; switch (dir) { - case DIR_P00: + case dP00: this->getNeighborsEast(ix1, ix2, ix3, level, levelDepth, blocks); break; - case DIR_M00: + case dM00: this->getNeighborsWest(ix1, ix2, ix3, level, levelDepth, blocks); break; - case DIR_0P0: + case d0P0: this->getNeighborsNorth(ix1, ix2, ix3, level, levelDepth, blocks); break; - case DIR_0M0: + case d0M0: this->getNeighborsSouth(ix1, ix2, ix3, level, levelDepth, blocks); break; - case DIR_00P: + case d00P: this->getNeighborsTop(ix1, ix2, ix3, level, levelDepth, blocks); break; - case DIR_00M: + case d00M: this->getNeighborsBottom(ix1, ix2, ix3, level, levelDepth, blocks); break; - case DIR_PP0: + case dPP0: this->getNeighborsNorthEast(ix1, ix2, ix3, level, levelDepth, blocks); break; - case DIR_MM0: + case dMM0: this->getNeighborsSouthWest(ix1, ix2, ix3, level, levelDepth, blocks); break; - case DIR_PM0: + case dPM0: this->getNeighborsSouthEast(ix1, ix2, ix3, level, levelDepth, blocks); break; - case DIR_MP0: + case dMP0: this->getNeighborsNorthWest(ix1, ix2, ix3, level, levelDepth, blocks); break; - case DIR_P0P: + case dP0P: this->getNeighborsTopEast(ix1, ix2, ix3, level, levelDepth, blocks); break; - case DIR_M0M: + case dM0M: this->getNeighborsBottomWest(ix1, ix2, ix3, level, levelDepth, blocks); break; - case DIR_P0M: + case dP0M: this->getNeighborsBottomEast(ix1, ix2, ix3, level, levelDepth, blocks); break; - case DIR_M0P: + case dM0P: this->getNeighborsTopWest(ix1, ix2, ix3, level, levelDepth, blocks); break; - case DIR_0PP: + case d0PP: this->getNeighborsTopNorth(ix1, ix2, ix3, level, levelDepth, blocks); break; - case DIR_0MM: + case d0MM: this->getNeighborsBottomSouth(ix1, ix2, ix3, level, levelDepth, blocks); break; - case DIR_0PM: + case d0PM: this->getNeighborsBottomNorth(ix1, ix2, ix3, level, levelDepth, blocks); break; - case DIR_0MP: + case d0MP: this->getNeighborsTopSouth(ix1, ix2, ix3, level, levelDepth, blocks); break; - case DIR_PPP: + case dPPP: this->getNeighborsTopNorthEast(ix1, ix2, ix3, level, levelDepth, blocks); break; - case DIR_MPP: + case dMPP: this->getNeighborsTopNorthWest(ix1, ix2, ix3, level, levelDepth, blocks); break; - case DIR_PMP: + case dPMP: this->getNeighborsTopSouthEast(ix1, ix2, ix3, level, levelDepth, blocks); break; - case DIR_MMP: + case dMMP: this->getNeighborsTopSouthWest(ix1, ix2, ix3, level, levelDepth, blocks); break; - case DIR_PPM: + case dPPM: this->getNeighborsBottomNorthEast(ix1, ix2, ix3, level, levelDepth, blocks); break; - case DIR_MPM: + case dMPM: this->getNeighborsBottomNorthWest(ix1, ix2, ix3, level, levelDepth, blocks); break; - case DIR_PMM: + case dPMM: this->getNeighborsBottomSouthEast(ix1, ix2, ix3, level, levelDepth, blocks); break; - case DIR_MMM: + case dMMM: this->getNeighborsBottomSouthWest(ix1, ix2, ix3, level, levelDepth, blocks); break; - case DIR_000: + case d000: this->getNeighborsZero(ix1, ix2, ix3, level, levelDepth, blocks); break; default: diff --git a/src/cpu/VirtualFluidsCore/Simulation/Grid3D.h b/src/cpu/core/Simulation/Grid3D.h similarity index 100% rename from src/cpu/VirtualFluidsCore/Simulation/Grid3D.h rename to src/cpu/core/Simulation/Grid3D.h diff --git a/src/cpu/VirtualFluidsCore/Simulation/Simulation.cpp b/src/cpu/core/Simulation/Simulation.cpp similarity index 100% rename from src/cpu/VirtualFluidsCore/Simulation/Simulation.cpp rename to src/cpu/core/Simulation/Simulation.cpp diff --git a/src/cpu/VirtualFluidsCore/Simulation/Simulation.h b/src/cpu/core/Simulation/Simulation.h similarity index 100% rename from src/cpu/VirtualFluidsCore/Simulation/Simulation.h rename to src/cpu/core/Simulation/Simulation.h diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/AdjustForcingSimulationObserver.cpp b/src/cpu/core/SimulationObservers/AdjustForcingSimulationObserver.cpp similarity index 100% rename from src/cpu/VirtualFluidsCore/SimulationObservers/AdjustForcingSimulationObserver.cpp rename to src/cpu/core/SimulationObservers/AdjustForcingSimulationObserver.cpp diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/AdjustForcingSimulationObserver.h b/src/cpu/core/SimulationObservers/AdjustForcingSimulationObserver.h similarity index 100% rename from src/cpu/VirtualFluidsCore/SimulationObservers/AdjustForcingSimulationObserver.h rename to src/cpu/core/SimulationObservers/AdjustForcingSimulationObserver.h diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/AverageValuesSimulationObserver.cpp b/src/cpu/core/SimulationObservers/AverageValuesSimulationObserver.cpp similarity index 99% rename from src/cpu/VirtualFluidsCore/SimulationObservers/AverageValuesSimulationObserver.cpp rename to src/cpu/core/SimulationObservers/AverageValuesSimulationObserver.cpp index 3724569eb1acd4a96076205a07a7ae393e4924dc..4542a2837b7c08653e138e73df18493a67b96bde 100644 --- a/src/cpu/VirtualFluidsCore/SimulationObservers/AverageValuesSimulationObserver.cpp +++ b/src/cpu/core/SimulationObservers/AverageValuesSimulationObserver.cpp @@ -376,7 +376,7 @@ void AverageValuesSimulationObserver::calculateAverageValues(real timeStep) ////////////////////////////////////////////////////////////////////////// // read distribution //////////////////////////////////////////////////////////////////////////// - distributions->getDistribution(f, ix1, ix2, ix3); + distributions->getPreCollisionDistribution(f, ix1, ix2, ix3); ////////////////////////////////////////////////////////////////////////// // compute velocity ////////////////////////////////////////////////////////////////////////// diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/AverageValuesSimulationObserver.h b/src/cpu/core/SimulationObservers/AverageValuesSimulationObserver.h similarity index 100% rename from src/cpu/VirtualFluidsCore/SimulationObservers/AverageValuesSimulationObserver.h rename to src/cpu/core/SimulationObservers/AverageValuesSimulationObserver.h diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/CalculateForcesSimulationObserver.cpp b/src/cpu/core/SimulationObservers/CalculateForcesSimulationObserver.cpp similarity index 100% rename from src/cpu/VirtualFluidsCore/SimulationObservers/CalculateForcesSimulationObserver.cpp rename to src/cpu/core/SimulationObservers/CalculateForcesSimulationObserver.cpp diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/CalculateForcesSimulationObserver.h b/src/cpu/core/SimulationObservers/CalculateForcesSimulationObserver.h similarity index 100% rename from src/cpu/VirtualFluidsCore/SimulationObservers/CalculateForcesSimulationObserver.h rename to src/cpu/core/SimulationObservers/CalculateForcesSimulationObserver.h diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/CalculateTorqueSimulationObserver.cpp b/src/cpu/core/SimulationObservers/CalculateTorqueSimulationObserver.cpp similarity index 98% rename from src/cpu/VirtualFluidsCore/SimulationObservers/CalculateTorqueSimulationObserver.cpp rename to src/cpu/core/SimulationObservers/CalculateTorqueSimulationObserver.cpp index 01521d043986c3223b87096bcb4898cba1809438..7d9d22bd7dcac7b7216a7cf8d6fe7b54bc0fba50 100644 --- a/src/cpu/VirtualFluidsCore/SimulationObservers/CalculateTorqueSimulationObserver.cpp +++ b/src/cpu/core/SimulationObservers/CalculateTorqueSimulationObserver.cpp @@ -226,7 +226,7 @@ UbTupleDouble3 CalculateTorqueSimulationObserver::getForcesFromMoments(int x1, i if (bc) { real f[D3Q27System::ENDF + 1]; - distributions->getDistribution(f, x1, x2, x3); + distributions->getPreCollisionDistribution(f, x1, x2, x3); real collFactor = kernel->getCollisionFactor(); real shearRate = D3Q27System::getShearRate(f, collFactor); real rho = D3Q27System::getDensity(f); @@ -260,7 +260,7 @@ UbTupleDouble3 CalculateTorqueSimulationObserver::getForcesFromStressTensor(int if (bc) { real f[D3Q27System::ENDF + 1]; - distributions->getDistribution(f, x1, x2, x3); + distributions->getPreCollisionDistribution(f, x1, x2, x3); real collFactor = kernel->getCollisionFactor(); real shearRate = D3Q27System::getShearRate(f, collFactor); real rho = D3Q27System::getDensity(f); diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/DecreaseViscositySimulationObserver.cpp b/src/cpu/core/SimulationObservers/DecreaseViscositySimulationObserver.cpp similarity index 100% rename from src/cpu/VirtualFluidsCore/SimulationObservers/DecreaseViscositySimulationObserver.cpp rename to src/cpu/core/SimulationObservers/DecreaseViscositySimulationObserver.cpp diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/DecreaseViscositySimulationObserver.h b/src/cpu/core/SimulationObservers/DecreaseViscositySimulationObserver.h similarity index 100% rename from src/cpu/VirtualFluidsCore/SimulationObservers/DecreaseViscositySimulationObserver.h rename to src/cpu/core/SimulationObservers/DecreaseViscositySimulationObserver.h diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/EmergencyExitSimulationObserver.cpp b/src/cpu/core/SimulationObservers/EmergencyExitSimulationObserver.cpp similarity index 100% rename from src/cpu/VirtualFluidsCore/SimulationObservers/EmergencyExitSimulationObserver.cpp rename to src/cpu/core/SimulationObservers/EmergencyExitSimulationObserver.cpp diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/EmergencyExitSimulationObserver.h b/src/cpu/core/SimulationObservers/EmergencyExitSimulationObserver.h similarity index 100% rename from src/cpu/VirtualFluidsCore/SimulationObservers/EmergencyExitSimulationObserver.h rename to src/cpu/core/SimulationObservers/EmergencyExitSimulationObserver.h diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/ForceCalculator.cpp b/src/cpu/core/SimulationObservers/ForceCalculator.cpp similarity index 100% rename from src/cpu/VirtualFluidsCore/SimulationObservers/ForceCalculator.cpp rename to src/cpu/core/SimulationObservers/ForceCalculator.cpp diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/ForceCalculator.h b/src/cpu/core/SimulationObservers/ForceCalculator.h similarity index 100% rename from src/cpu/VirtualFluidsCore/SimulationObservers/ForceCalculator.h rename to src/cpu/core/SimulationObservers/ForceCalculator.h diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/InSituCatalystSimulationObserver.cpp b/src/cpu/core/SimulationObservers/InSituCatalystSimulationObserver.cpp similarity index 100% rename from src/cpu/VirtualFluidsCore/SimulationObservers/InSituCatalystSimulationObserver.cpp rename to src/cpu/core/SimulationObservers/InSituCatalystSimulationObserver.cpp diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/InSituCatalystSimulationObserver.h b/src/cpu/core/SimulationObservers/InSituCatalystSimulationObserver.h similarity index 100% rename from src/cpu/VirtualFluidsCore/SimulationObservers/InSituCatalystSimulationObserver.h rename to src/cpu/core/SimulationObservers/InSituCatalystSimulationObserver.h diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/InSituVTKSimulationObserver.cpp b/src/cpu/core/SimulationObservers/InSituVTKSimulationObserver.cpp similarity index 100% rename from src/cpu/VirtualFluidsCore/SimulationObservers/InSituVTKSimulationObserver.cpp rename to src/cpu/core/SimulationObservers/InSituVTKSimulationObserver.cpp diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/InSituVTKSimulationObserver.h b/src/cpu/core/SimulationObservers/InSituVTKSimulationObserver.h similarity index 100% rename from src/cpu/VirtualFluidsCore/SimulationObservers/InSituVTKSimulationObserver.h rename to src/cpu/core/SimulationObservers/InSituVTKSimulationObserver.h diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/IntegrateValuesHelper.cpp b/src/cpu/core/SimulationObservers/IntegrateValuesHelper.cpp similarity index 99% rename from src/cpu/VirtualFluidsCore/SimulationObservers/IntegrateValuesHelper.cpp rename to src/cpu/core/SimulationObservers/IntegrateValuesHelper.cpp index a2d35b6b2883f54b799cc2e5b6aacd1ece5c08bc..76c4a5aa570b0badd4e050e4938d728521f14f71 100644 --- a/src/cpu/VirtualFluidsCore/SimulationObservers/IntegrateValuesHelper.cpp +++ b/src/cpu/core/SimulationObservers/IntegrateValuesHelper.cpp @@ -200,7 +200,7 @@ void IntegrateValuesHelper::calculateMQ() SPtr<BCArray3D> bcArray = kernel->getBCSet()->getBCArray(); SPtr<DistributionArray3D> distributions = kernel->getDataSet()->getFdistributions(); for (UbTupleInt3 node : cn.nodes) { - distributions->getDistribution(f, val<1>(node), val<2>(node), val<3>(node)); + distributions->getPreCollisionDistribution(f, val<1>(node), val<2>(node), val<3>(node)); calcMacros(f, rho, vx1, vx2, vx3); sRho += rho * cellVolume; sVx1 += vx1 * cellVolume; diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/IntegrateValuesHelper.h b/src/cpu/core/SimulationObservers/IntegrateValuesHelper.h similarity index 100% rename from src/cpu/VirtualFluidsCore/SimulationObservers/IntegrateValuesHelper.h rename to src/cpu/core/SimulationObservers/IntegrateValuesHelper.h diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/LineTimeSeriesSimulationObserver.cpp b/src/cpu/core/SimulationObservers/LineTimeSeriesSimulationObserver.cpp similarity index 98% rename from src/cpu/VirtualFluidsCore/SimulationObservers/LineTimeSeriesSimulationObserver.cpp rename to src/cpu/core/SimulationObservers/LineTimeSeriesSimulationObserver.cpp index e312bf2b27aa15b51146aab9559c201ed88bbd7e..68ec072e59f5ba3739637db6b529e1d26d7fb78b 100644 --- a/src/cpu/VirtualFluidsCore/SimulationObservers/LineTimeSeriesSimulationObserver.cpp +++ b/src/cpu/core/SimulationObservers/LineTimeSeriesSimulationObserver.cpp @@ -124,7 +124,7 @@ void LineTimeSeriesSimulationObserver::collectData() } else if (dir == X3) { ix3 = ix; } - distributions->getDistribution(f, ix1, ix2, ix3); + distributions->getPreCollisionDistribution(f, ix1, ix2, ix3); calcMacros(f, rho, vx1, vx2, vx3); v1[x + (ix - 1)] = vx1; v2[x + (ix - 1)] = vx2; diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/LineTimeSeriesSimulationObserver.h b/src/cpu/core/SimulationObservers/LineTimeSeriesSimulationObserver.h similarity index 100% rename from src/cpu/VirtualFluidsCore/SimulationObservers/LineTimeSeriesSimulationObserver.h rename to src/cpu/core/SimulationObservers/LineTimeSeriesSimulationObserver.h diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/MPIIOMigrationBESimulationObserver.cpp b/src/cpu/core/SimulationObservers/MPIIOMigrationBESimulationObserver.cpp similarity index 100% rename from src/cpu/VirtualFluidsCore/SimulationObservers/MPIIOMigrationBESimulationObserver.cpp rename to src/cpu/core/SimulationObservers/MPIIOMigrationBESimulationObserver.cpp diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/MPIIOMigrationBESimulationObserver.h b/src/cpu/core/SimulationObservers/MPIIOMigrationBESimulationObserver.h similarity index 100% rename from src/cpu/VirtualFluidsCore/SimulationObservers/MPIIOMigrationBESimulationObserver.h rename to src/cpu/core/SimulationObservers/MPIIOMigrationBESimulationObserver.h diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/MPIIOMigrationSimulationObserver.cpp b/src/cpu/core/SimulationObservers/MPIIOMigrationSimulationObserver.cpp similarity index 100% rename from src/cpu/VirtualFluidsCore/SimulationObservers/MPIIOMigrationSimulationObserver.cpp rename to src/cpu/core/SimulationObservers/MPIIOMigrationSimulationObserver.cpp diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/MPIIOMigrationSimulationObserver.h b/src/cpu/core/SimulationObservers/MPIIOMigrationSimulationObserver.h similarity index 100% rename from src/cpu/VirtualFluidsCore/SimulationObservers/MPIIOMigrationSimulationObserver.h rename to src/cpu/core/SimulationObservers/MPIIOMigrationSimulationObserver.h diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/MPIIORestartSimulationObserver.cpp b/src/cpu/core/SimulationObservers/MPIIORestartSimulationObserver.cpp similarity index 100% rename from src/cpu/VirtualFluidsCore/SimulationObservers/MPIIORestartSimulationObserver.cpp rename to src/cpu/core/SimulationObservers/MPIIORestartSimulationObserver.cpp diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/MPIIORestartSimulationObserver.h b/src/cpu/core/SimulationObservers/MPIIORestartSimulationObserver.h similarity index 100% rename from src/cpu/VirtualFluidsCore/SimulationObservers/MPIIORestartSimulationObserver.h rename to src/cpu/core/SimulationObservers/MPIIORestartSimulationObserver.h diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/MPIIOSimulationObserver.cpp b/src/cpu/core/SimulationObservers/MPIIOSimulationObserver.cpp similarity index 100% rename from src/cpu/VirtualFluidsCore/SimulationObservers/MPIIOSimulationObserver.cpp rename to src/cpu/core/SimulationObservers/MPIIOSimulationObserver.cpp diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/MPIIOSimulationObserver.h b/src/cpu/core/SimulationObservers/MPIIOSimulationObserver.h similarity index 100% rename from src/cpu/VirtualFluidsCore/SimulationObservers/MPIIOSimulationObserver.h rename to src/cpu/core/SimulationObservers/MPIIOSimulationObserver.h diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/MicrophoneArraySimulationObserver.cpp b/src/cpu/core/SimulationObservers/MicrophoneArraySimulationObserver.cpp similarity index 97% rename from src/cpu/VirtualFluidsCore/SimulationObservers/MicrophoneArraySimulationObserver.cpp rename to src/cpu/core/SimulationObservers/MicrophoneArraySimulationObserver.cpp index 10749b5130e387205f01e57f4c71c90c90f46e02..5575cc53e8d40f9a322d3912a8346403b04e75f3 100644 --- a/src/cpu/VirtualFluidsCore/SimulationObservers/MicrophoneArraySimulationObserver.cpp +++ b/src/cpu/core/SimulationObservers/MicrophoneArraySimulationObserver.cpp @@ -93,7 +93,7 @@ void MicrophoneArraySimulationObserver::collectData(real step) { for (std::size_t i = 0; i < microphones.size(); i++) { real f[D3Q27System::ENDF + 1]; - microphones[i]->distridution->getDistribution(f, val<1>(microphones[i]->nodeIndexes), + microphones[i]->distridution->getPreCollisionDistribution(f, val<1>(microphones[i]->nodeIndexes), val<2>(microphones[i]->nodeIndexes), val<3>(microphones[i]->nodeIndexes)); real vx1, vx2, vx3, rho; diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/MicrophoneArraySimulationObserver.h b/src/cpu/core/SimulationObservers/MicrophoneArraySimulationObserver.h similarity index 100% rename from src/cpu/VirtualFluidsCore/SimulationObservers/MicrophoneArraySimulationObserver.h rename to src/cpu/core/SimulationObservers/MicrophoneArraySimulationObserver.h diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/NUPSCounterSimulationObserver.cpp b/src/cpu/core/SimulationObservers/NUPSCounterSimulationObserver.cpp similarity index 100% rename from src/cpu/VirtualFluidsCore/SimulationObservers/NUPSCounterSimulationObserver.cpp rename to src/cpu/core/SimulationObservers/NUPSCounterSimulationObserver.cpp diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/NUPSCounterSimulationObserver.h b/src/cpu/core/SimulationObservers/NUPSCounterSimulationObserver.h similarity index 100% rename from src/cpu/VirtualFluidsCore/SimulationObservers/NUPSCounterSimulationObserver.h rename to src/cpu/core/SimulationObservers/NUPSCounterSimulationObserver.h diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/PressureCoefficientSimulationObserver.cpp b/src/cpu/core/SimulationObservers/PressureCoefficientSimulationObserver.cpp similarity index 99% rename from src/cpu/VirtualFluidsCore/SimulationObservers/PressureCoefficientSimulationObserver.cpp rename to src/cpu/core/SimulationObservers/PressureCoefficientSimulationObserver.cpp index f36997c05dc92970b743a57d1fc9b79f92a2df51..d82a51e175075ad211ac6d6c187b707e605cb7fe 100644 --- a/src/cpu/VirtualFluidsCore/SimulationObservers/PressureCoefficientSimulationObserver.cpp +++ b/src/cpu/core/SimulationObservers/PressureCoefficientSimulationObserver.cpp @@ -93,7 +93,7 @@ void PressureCoefficientSimulationObserver::calculateRho() real cx2 = val<2>(org) - val<2>(nodeOffset) + x2 * dx; real cx3 = val<3>(org) - val<3>(nodeOffset) + x3 * dx; if (plane->isPointInGbObject3D(cx1, cx2, cx3)) { - distributions->getDistribution(f, x1, x2, x3); + distributions->getPreCollisionDistribution(f, x1, x2, x3); calcMacros(f, rho, vx1, vx2, vx3); values.push_back(cx1); values.push_back(cx2); diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/PressureCoefficientSimulationObserver.h b/src/cpu/core/SimulationObservers/PressureCoefficientSimulationObserver.h similarity index 100% rename from src/cpu/VirtualFluidsCore/SimulationObservers/PressureCoefficientSimulationObserver.h rename to src/cpu/core/SimulationObservers/PressureCoefficientSimulationObserver.h diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/PressureDifferenceSimulationObserver.cpp b/src/cpu/core/SimulationObservers/PressureDifferenceSimulationObserver.cpp similarity index 100% rename from src/cpu/VirtualFluidsCore/SimulationObservers/PressureDifferenceSimulationObserver.cpp rename to src/cpu/core/SimulationObservers/PressureDifferenceSimulationObserver.cpp diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/PressureDifferenceSimulationObserver.h b/src/cpu/core/SimulationObservers/PressureDifferenceSimulationObserver.h similarity index 100% rename from src/cpu/VirtualFluidsCore/SimulationObservers/PressureDifferenceSimulationObserver.h rename to src/cpu/core/SimulationObservers/PressureDifferenceSimulationObserver.h diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/QCriterionSimulationObserver.cpp b/src/cpu/core/SimulationObservers/QCriterionSimulationObserver.cpp similarity index 94% rename from src/cpu/VirtualFluidsCore/SimulationObservers/QCriterionSimulationObserver.cpp rename to src/cpu/core/SimulationObservers/QCriterionSimulationObserver.cpp index ccd4025235dd636b0654ea14ad307f3a256c58a9..397f576f63b99a4107d55bfce4e884dc987830b0 100644 --- a/src/cpu/VirtualFluidsCore/SimulationObservers/QCriterionSimulationObserver.cpp +++ b/src/cpu/core/SimulationObservers/QCriterionSimulationObserver.cpp @@ -297,12 +297,12 @@ void QCriterionSimulationObserver::getNeighborVelocities(int offx, int offy, int // std::max(ix3+offz,1)); distributionsW->getDistribution(f0, std::max(ix1 ,1), std::max(ix2 ,1), // std::max(ix3 ,1)); distributions->getDistribution(fE, std::max(ix1+offx ,1), std::max(ix2+offy ,1), // std::max(ix3+offz ,1)); //E:= plus 1 - distributionsW->getDistribution(fW2, std::max(ix1 + 2 * offx, 0), std::max(ix2 + 2 * offy, 0), + distributionsW->getPreCollisionDistribution(fW2, std::max(ix1 + 2 * offx, 0), std::max(ix2 + 2 * offy, 0), std::max(ix3 + 2 * offz, 0)); - distributionsW->getDistribution(fW, std::max(ix1 + offx, 0), std::max(ix2 + offy, 0), + distributionsW->getPreCollisionDistribution(fW, std::max(ix1 + offx, 0), std::max(ix2 + offy, 0), std::max(ix3 + offz, 0)); - distributionsW->getDistribution(f0, std::max(ix1, 0), std::max(ix2, 0), std::max(ix3, 0)); - distributions->getDistribution(fE, std::max(ix1 + offx, 0), std::max(ix2 + offy, 0), + distributionsW->getPreCollisionDistribution(f0, std::max(ix1, 0), std::max(ix2, 0), std::max(ix3, 0)); + distributions->getPreCollisionDistribution(fE, std::max(ix1 + offx, 0), std::max(ix2 + offy, 0), std::max(ix3 + offz, 0)); // E:= plus 1 computeVelocity(fE, vE, compressible); @@ -321,13 +321,13 @@ void QCriterionSimulationObserver::getNeighborVelocities(int offx, int offy, int real fW[27]; if (offx == 1) { - distributionsW->getDistribution(fW, (distributions->getNX1()) - 1, ix2, + distributionsW->getPreCollisionDistribution(fW, (distributions->getNX1()) - 1, ix2, ix3); // moved one block backward, now get last entry } else if (offy == 1) { - distributionsW->getDistribution(fW, ix1, (distributions->getNX2()) - 1, ix3); + distributionsW->getPreCollisionDistribution(fW, ix1, (distributions->getNX2()) - 1, ix3); } else if (offz == 1) { - distributionsW->getDistribution(fW, ix1, ix2, distributions->getNX3() - 1); + distributionsW->getPreCollisionDistribution(fW, ix1, ix2, distributions->getNX3() - 1); } computeVelocity(fW, vW, compressible); } @@ -335,13 +335,13 @@ void QCriterionSimulationObserver::getNeighborVelocities(int offx, int offy, int } else { // data available in current block: real fW[27]; - distributions->getDistribution(fW, ix1 - offx, ix2 - offy, ix3 - offz); + distributions->getPreCollisionDistribution(fW, ix1 - offx, ix2 - offy, ix3 - offz); computeVelocity(fW, vW, compressible); } if (checkInterpolation) { // in plus-direction data is available in current block because of ghost layers real fE[27]; - distributions->getDistribution(fE, ix1 + offx, ix2 + offy, ix3 + offz); // E:= plus 1 + distributions->getPreCollisionDistribution(fE, ix1 + offx, ix2 + offy, ix3 + offz); // E:= plus 1 computeVelocity(fE, vE, compressible); } } diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/QCriterionSimulationObserver.h b/src/cpu/core/SimulationObservers/QCriterionSimulationObserver.h similarity index 100% rename from src/cpu/VirtualFluidsCore/SimulationObservers/QCriterionSimulationObserver.h rename to src/cpu/core/SimulationObservers/QCriterionSimulationObserver.h diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/ShearStressSimulationObserver.cpp b/src/cpu/core/SimulationObservers/ShearStressSimulationObserver.cpp similarity index 91% rename from src/cpu/VirtualFluidsCore/SimulationObservers/ShearStressSimulationObserver.cpp rename to src/cpu/core/SimulationObservers/ShearStressSimulationObserver.cpp index 8a2b90698ee7f48dce5eea8f738bd69651d8b059..7bc7923f3c26dcf496e7111ce9383bc7907dcf57 100644 --- a/src/cpu/VirtualFluidsCore/SimulationObservers/ShearStressSimulationObserver.cpp +++ b/src/cpu/core/SimulationObservers/ShearStressSimulationObserver.cpp @@ -170,38 +170,38 @@ void ShearStressSimulationObserver::calculateShearStress(real timeStep) ////////////////////////////////////////////////////////////////////////// // read distribution //////////////////////////////////////////////////////////////////////////// - distributions->getDistribution(f, ix1, ix2, ix3); + distributions->getPreCollisionDistribution(f, ix1, ix2, ix3); ////////////////////////////////////////////////////////////////////////// // compute velocity ////////////////////////////////////////////////////////////////////////// - vx = ((((f[DIR_PPP] - f[DIR_MMM]) + (f[DIR_PMP] - f[DIR_MPM])) + ((f[DIR_PMM] - f[DIR_MPP]) + (f[DIR_PPM] - f[DIR_MMP]))) + - (((f[DIR_P0M] - f[DIR_M0P]) + (f[DIR_P0P] - f[DIR_M0M])) + ((f[DIR_PM0] - f[DIR_MP0]) + (f[DIR_PP0] - f[DIR_MM0]))) + (f[DIR_P00] - f[DIR_M00])); + vx = ((((f[dPPP] - f[dMMM]) + (f[dPMP] - f[dMPM])) + ((f[dPMM] - f[dMPP]) + (f[dPPM] - f[dMMP]))) + + (((f[dP0M] - f[dM0P]) + (f[dP0P] - f[dM0M])) + ((f[dPM0] - f[dMP0]) + (f[dPP0] - f[dMM0]))) + (f[dP00] - f[dM00])); - vy = ((((f[DIR_PPP] - f[DIR_MMM]) + (f[DIR_MPM] - f[DIR_PMP])) + ((f[DIR_MPP] - f[DIR_PMM]) + (f[DIR_PPM] - f[DIR_MMP]))) + - (((f[DIR_0PM] - f[DIR_0MP]) + (f[DIR_0PP] - f[DIR_0MM])) + ((f[DIR_MP0] - f[DIR_PM0]) + (f[DIR_PP0] - f[DIR_MM0]))) + (f[DIR_0P0] - f[DIR_0M0])); + vy = ((((f[dPPP] - f[dMMM]) + (f[dMPM] - f[dPMP])) + ((f[dMPP] - f[dPMM]) + (f[dPPM] - f[dMMP]))) + + (((f[d0PM] - f[d0MP]) + (f[d0PP] - f[d0MM])) + ((f[dMP0] - f[dPM0]) + (f[dPP0] - f[dMM0]))) + (f[d0P0] - f[d0M0])); - vz = ((((f[DIR_PPP] - f[DIR_MMM]) + (f[DIR_PMP] - f[DIR_MPM])) + ((f[DIR_MPP] - f[DIR_PMM]) + (f[DIR_MMP] - f[DIR_PPM]))) + - (((f[DIR_0MP] - f[DIR_0PM]) + (f[DIR_0PP] - f[DIR_0MM])) + ((f[DIR_M0P] - f[DIR_P0M]) + (f[DIR_P0P] - f[DIR_M0M]))) + (f[DIR_00P] - f[DIR_00M])); + vz = ((((f[dPPP] - f[dMMM]) + (f[dPMP] - f[dMPM])) + ((f[dMPP] - f[dPMM]) + (f[dMMP] - f[dPPM]))) + + (((f[d0MP] - f[d0PM]) + (f[d0PP] - f[d0MM])) + ((f[dM0P] - f[dP0M]) + (f[dP0P] - f[dM0M]))) + (f[d00P] - f[d00M])); sxy = c3o1 * collFactor / (collFactor - c1o1) * - (((f[DIR_PPP] + f[DIR_MMM]) - (f[DIR_PMP] + f[DIR_MPM])) + (-(f[DIR_PMM] + f[DIR_MPP]) + (f[DIR_MMP] + f[DIR_PPM])) + - (((f[DIR_PP0] + f[DIR_MM0]) - (f[DIR_PM0] + f[DIR_MP0]))) - vx * vy); + (((f[dPPP] + f[dMMM]) - (f[dPMP] + f[dMPM])) + (-(f[dPMM] + f[dMPP]) + (f[dMMP] + f[dPPM])) + + (((f[dPP0] + f[dMM0]) - (f[dPM0] + f[dMP0]))) - vx * vy); sxz = c3o1 * collFactor / (collFactor - c1o1) * - (((f[DIR_PPP] + f[DIR_MMM]) + (f[DIR_PMP] + f[DIR_MPM])) + (-(f[DIR_PMM] + f[DIR_MPP]) - (f[DIR_MMP] + f[DIR_PPM])) + - ((f[DIR_P0P] + f[DIR_M0M]) - (f[DIR_P0M] + f[DIR_M0P])) - vx * vz); + (((f[dPPP] + f[dMMM]) + (f[dPMP] + f[dMPM])) + (-(f[dPMM] + f[dMPP]) - (f[dMMP] + f[dPPM])) + + ((f[dP0P] + f[dM0M]) - (f[dP0M] + f[dM0P])) - vx * vz); syz = c3o1 * collFactor / (collFactor - c1o1) * - (((f[DIR_PPP] + f[DIR_MMM]) - (f[DIR_PMP] + f[DIR_MPM])) + ((f[DIR_PMM] + f[DIR_MPP]) - (f[DIR_MMP] + f[DIR_PPM])) + - (-(f[DIR_0PM] + f[DIR_0MP]) + (f[DIR_0PP] + f[DIR_0MM])) - vy * vz); + (((f[dPPP] + f[dMMM]) - (f[dPMP] + f[dMPM])) + ((f[dPMM] + f[dMPP]) - (f[dMMP] + f[dPPM])) + + (-(f[d0PM] + f[d0MP]) + (f[d0PP] + f[d0MM])) - vy * vz); real dxxMyy = c3o1 / c2o1 * collFactor / (collFactor - c1o1) * - (((f[DIR_P0P] + f[DIR_M0M]) + (f[DIR_P0M] + f[DIR_M0P])) - ((f[DIR_0PM] + f[DIR_0MP]) + (f[DIR_0PP] + f[DIR_0MM])) + - ((f[DIR_P00] + f[DIR_M00]) - (f[DIR_0P0] + f[DIR_0M0])) - vx * vx + vy * vy); + (((f[dP0P] + f[dM0M]) + (f[dP0M] + f[dM0P])) - ((f[d0PM] + f[d0MP]) + (f[d0PP] + f[d0MM])) + + ((f[dP00] + f[dM00]) - (f[d0P0] + f[d0M0])) - vx * vx + vy * vy); real dxxMzz = c3o1 / c2o1 * collFactor / (collFactor - c1o1) * - ((((f[DIR_PP0] + f[DIR_MM0]) + (f[DIR_PM0] + f[DIR_MP0])) - ((f[DIR_0PM] + f[DIR_0MP]) + (f[DIR_0PP] + f[DIR_0MM]))) + - ((f[DIR_P00] + f[DIR_M00]) - (f[DIR_00P] + f[DIR_00M])) - vx * vx + vz * vz); + ((((f[dPP0] + f[dMM0]) + (f[dPM0] + f[dMP0])) - ((f[d0PM] + f[d0MP]) + (f[d0PP] + f[d0MM]))) + + ((f[dP00] + f[dM00]) - (f[d00P] + f[d00M])) - vx * vx + vz * vz); // LBMReal dyyMzz =3.0/2.0 *collFactor/(collFactor-1.0)*((((f[NE] + f[SW]) + (f[SE] + // f[NW]))-((f[TE] + f[BW])+(f[BE]+ f[TW]))) @@ -571,32 +571,32 @@ void ShearStressSimulationObserver::findPlane(int ix1, int ix2, int ix3, SPtr<Gr "ix2=" + UbSystem::toString(ix2) + "ix3=" + UbSystem::toString(ix3) + "GlobalID=" + UbSystem::toString(block->getGlobalID()) + "dx=" + UbSystem::toString(dx) + - "T=" + UbSystem::toString(bcPtr->getQ(DIR_00P)) + - "B=" + UbSystem::toString(bcPtr->getQ(DIR_00M)) + - "E=" + UbSystem::toString(bcPtr->getQ(DIR_P00)) + - "W=" + UbSystem::toString(bcPtr->getQ(DIR_M00)) + - "N=" + UbSystem::toString(bcPtr->getQ(DIR_0P0)) + - "S=" + UbSystem::toString(bcPtr->getQ(DIR_0M0)) + - "NE=" + UbSystem::toString(bcPtr->getQ(DIR_PP0)) + - "SW=" + UbSystem::toString(bcPtr->getQ(DIR_MM0)) + - "SE=" + UbSystem::toString(bcPtr->getQ(DIR_PM0)) + - "NW=" + UbSystem::toString(bcPtr->getQ(DIR_MP0)) + - "TE=" + UbSystem::toString(bcPtr->getQ(DIR_P0P)) + - "BW=" + UbSystem::toString(bcPtr->getQ(DIR_M0M)) + - "BE=" + UbSystem::toString(bcPtr->getQ(DIR_P0M)) + - "TW=" + UbSystem::toString(bcPtr->getQ(DIR_M0P)) + - "TN=" + UbSystem::toString(bcPtr->getQ(DIR_0PP)) + - "BS=" + UbSystem::toString(bcPtr->getQ(DIR_0MM)) + - "BN=" + UbSystem::toString(bcPtr->getQ(DIR_0PM)) + - "TS=" + UbSystem::toString(bcPtr->getQ(DIR_0MP)) + - "TNE=" + UbSystem::toString(bcPtr->getQ(DIR_PPP)) + - "TNW=" + UbSystem::toString(bcPtr->getQ(DIR_MPP)) + - "TSE=" + UbSystem::toString(bcPtr->getQ(DIR_PMP)) + - "TSW=" + UbSystem::toString(bcPtr->getQ(DIR_MMP)) + - "BNE=" + UbSystem::toString(bcPtr->getQ(DIR_PPM)) + - "BNW=" + UbSystem::toString(bcPtr->getQ(DIR_MPM)) + - "BSE=" + UbSystem::toString(bcPtr->getQ(DIR_PMM)) + - "BSW=" + UbSystem::toString(bcPtr->getQ(DIR_MMM) * dx))); + "T=" + UbSystem::toString(bcPtr->getQ(d00P)) + + "B=" + UbSystem::toString(bcPtr->getQ(d00M)) + + "E=" + UbSystem::toString(bcPtr->getQ(dP00)) + + "W=" + UbSystem::toString(bcPtr->getQ(dM00)) + + "N=" + UbSystem::toString(bcPtr->getQ(d0P0)) + + "S=" + UbSystem::toString(bcPtr->getQ(d0M0)) + + "NE=" + UbSystem::toString(bcPtr->getQ(dPP0)) + + "SW=" + UbSystem::toString(bcPtr->getQ(dMM0)) + + "SE=" + UbSystem::toString(bcPtr->getQ(dPM0)) + + "NW=" + UbSystem::toString(bcPtr->getQ(dMP0)) + + "TE=" + UbSystem::toString(bcPtr->getQ(dP0P)) + + "BW=" + UbSystem::toString(bcPtr->getQ(dM0M)) + + "BE=" + UbSystem::toString(bcPtr->getQ(dP0M)) + + "TW=" + UbSystem::toString(bcPtr->getQ(dM0P)) + + "TN=" + UbSystem::toString(bcPtr->getQ(d0PP)) + + "BS=" + UbSystem::toString(bcPtr->getQ(d0MM)) + + "BN=" + UbSystem::toString(bcPtr->getQ(d0PM)) + + "TS=" + UbSystem::toString(bcPtr->getQ(d0MP)) + + "TNE=" + UbSystem::toString(bcPtr->getQ(dPPP)) + + "TNW=" + UbSystem::toString(bcPtr->getQ(dMPP)) + + "TSE=" + UbSystem::toString(bcPtr->getQ(dPMP)) + + "TSW=" + UbSystem::toString(bcPtr->getQ(dMMP)) + + "BNE=" + UbSystem::toString(bcPtr->getQ(dPPM)) + + "BNW=" + UbSystem::toString(bcPtr->getQ(dMPM)) + + "BSE=" + UbSystem::toString(bcPtr->getQ(dPMM)) + + "BSW=" + UbSystem::toString(bcPtr->getQ(dMMM) * dx))); } } @@ -617,7 +617,7 @@ void ShearStressSimulationObserver::findPlane(int ix1, int ix2, int ix3, SPtr<Gr if (ii <= 2) { real q = bcPtrIn->getQ(fdir); if (q != 999.00000) { - if (fdir == DIR_P00) { + if (fdir == dP00) { // if(!bcArray->isSolid(i, j, k))continue; if (i + q <= x + 1) { if (ii == 0) { @@ -643,7 +643,7 @@ void ShearStressSimulationObserver::findPlane(int ix1, int ix2, int ix3, SPtr<Gr } } } - if (fdir == DIR_M00) { + if (fdir == dM00) { // if(!bcArray->isSolid(i, j, k))continue; if (i - q >= x) { if (ii == 0) { @@ -669,7 +669,7 @@ void ShearStressSimulationObserver::findPlane(int ix1, int ix2, int ix3, SPtr<Gr } } } - if (fdir == DIR_0P0) { + if (fdir == d0P0) { // if(!bcArray->isSolid(i, j, k))continue; if (j + q <= y + 1) { if (ii == 0) { @@ -695,7 +695,7 @@ void ShearStressSimulationObserver::findPlane(int ix1, int ix2, int ix3, SPtr<Gr } } } - if (fdir == DIR_0M0) { + if (fdir == d0M0) { // if(!bcArray->isSolid(i, j, k))continue; if (j - q >= y) { if (ii == 0) { @@ -722,7 +722,7 @@ void ShearStressSimulationObserver::findPlane(int ix1, int ix2, int ix3, SPtr<Gr } } - if (fdir == DIR_00P) { + if (fdir == d00P) { // if(!bcArray->isSolid(i, j, k))continue; if (k + q <= z + 1) { if (ii == 0) { @@ -748,7 +748,7 @@ void ShearStressSimulationObserver::findPlane(int ix1, int ix2, int ix3, SPtr<Gr } } } - if (fdir == DIR_00M) { + if (fdir == d00M) { // if(!bcArray->isSolid(i, j, k))continue; if (k - q >= z) { if (ii == 0) { @@ -797,32 +797,32 @@ void ShearStressSimulationObserver::findPlane(int ix1, int ix2, int ix3, SPtr<Gr UB_EXARGS, "ii is=" + UbSystem::toString(ii) + " ix1=" + UbSystem::toString(ix1) + " ix2=" + UbSystem::toString(ix2) + " ix3=" + UbSystem::toString(ix3) + " Block3D::GlobalID=" + UbSystem::toString(block->getGlobalID()) + " dx=" + - UbSystem::toString(dx) + " T=" + UbSystem::toString(bcPtr->getQ(DIR_00P)) + - " B=" + UbSystem::toString(bcPtr->getQ(DIR_00M)) + - " E=" + UbSystem::toString(bcPtr->getQ(DIR_P00)) + - " W=" + UbSystem::toString(bcPtr->getQ(DIR_M00)) + - " N=" + UbSystem::toString(bcPtr->getQ(DIR_0P0)) + - " S=" + UbSystem::toString(bcPtr->getQ(DIR_0M0)) + - " NE=" + UbSystem::toString(bcPtr->getQ(DIR_PP0)) + - " SW=" + UbSystem::toString(bcPtr->getQ(DIR_MM0)) + - " SE=" + UbSystem::toString(bcPtr->getQ(DIR_PM0)) + - " NW=" + UbSystem::toString(bcPtr->getQ(DIR_MP0)) + - " TE=" + UbSystem::toString(bcPtr->getQ(DIR_P0P)) + - " BW=" + UbSystem::toString(bcPtr->getQ(DIR_M0M)) + - " BE=" + UbSystem::toString(bcPtr->getQ(DIR_P0M)) + - " TW=" + UbSystem::toString(bcPtr->getQ(DIR_M0P)) + - " TN=" + UbSystem::toString(bcPtr->getQ(DIR_0PP)) + - " BS=" + UbSystem::toString(bcPtr->getQ(DIR_0MM)) + - " BN=" + UbSystem::toString(bcPtr->getQ(DIR_0PM)) + - " TS=" + UbSystem::toString(bcPtr->getQ(DIR_0MP)) + - " TNE=" + UbSystem::toString(bcPtr->getQ(DIR_PPP)) + - " TNW=" + UbSystem::toString(bcPtr->getQ(DIR_MPP)) + - " TSE=" + UbSystem::toString(bcPtr->getQ(DIR_PMP)) + - " TSW=" + UbSystem::toString(bcPtr->getQ(DIR_MMP)) + - " BNE=" + UbSystem::toString(bcPtr->getQ(DIR_PPM)) + - " BNW=" + UbSystem::toString(bcPtr->getQ(DIR_MPM)) + - " BSE=" + UbSystem::toString(bcPtr->getQ(DIR_PMM)) + - " BSW=" + UbSystem::toString(bcPtr->getQ(DIR_MMM)))); + UbSystem::toString(dx) + " T=" + UbSystem::toString(bcPtr->getQ(d00P)) + + " B=" + UbSystem::toString(bcPtr->getQ(d00M)) + + " E=" + UbSystem::toString(bcPtr->getQ(dP00)) + + " W=" + UbSystem::toString(bcPtr->getQ(dM00)) + + " N=" + UbSystem::toString(bcPtr->getQ(d0P0)) + + " S=" + UbSystem::toString(bcPtr->getQ(d0M0)) + + " NE=" + UbSystem::toString(bcPtr->getQ(dPP0)) + + " SW=" + UbSystem::toString(bcPtr->getQ(dMM0)) + + " SE=" + UbSystem::toString(bcPtr->getQ(dPM0)) + + " NW=" + UbSystem::toString(bcPtr->getQ(dMP0)) + + " TE=" + UbSystem::toString(bcPtr->getQ(dP0P)) + + " BW=" + UbSystem::toString(bcPtr->getQ(dM0M)) + + " BE=" + UbSystem::toString(bcPtr->getQ(dP0M)) + + " TW=" + UbSystem::toString(bcPtr->getQ(dM0P)) + + " TN=" + UbSystem::toString(bcPtr->getQ(d0PP)) + + " BS=" + UbSystem::toString(bcPtr->getQ(d0MM)) + + " BN=" + UbSystem::toString(bcPtr->getQ(d0PM)) + + " TS=" + UbSystem::toString(bcPtr->getQ(d0MP)) + + " TNE=" + UbSystem::toString(bcPtr->getQ(dPPP)) + + " TNW=" + UbSystem::toString(bcPtr->getQ(dMPP)) + + " TSE=" + UbSystem::toString(bcPtr->getQ(dPMP)) + + " TSW=" + UbSystem::toString(bcPtr->getQ(dMMP)) + + " BNE=" + UbSystem::toString(bcPtr->getQ(dPPM)) + + " BNW=" + UbSystem::toString(bcPtr->getQ(dMPM)) + + " BSE=" + UbSystem::toString(bcPtr->getQ(dPMM)) + + " BSW=" + UbSystem::toString(bcPtr->getQ(dMMM)))); } } } @@ -888,22 +888,22 @@ void ShearStressSimulationObserver::initDistance() continue; int numberOfCorner = 0; - if (bc->getQ(DIR_00P) != 999.000) { + if (bc->getQ(d00P) != 999.000) { numberOfCorner++; } - if (bc->getQ(DIR_00M) != 999.000) { + if (bc->getQ(d00M) != 999.000) { numberOfCorner++; } - if (bc->getQ(DIR_P00) != 999.000) { + if (bc->getQ(dP00) != 999.000) { numberOfCorner++; } - if (bc->getQ(DIR_M00) != 999.000) { + if (bc->getQ(dM00) != 999.000) { numberOfCorner++; } - if (bc->getQ(DIR_0P0) != 999.000) { + if (bc->getQ(d0P0) != 999.000) { numberOfCorner++; } - if (bc->getQ(DIR_0M0) != 999.000) { + if (bc->getQ(d0M0) != 999.000) { numberOfCorner++; } // if(bc->hasVelocityBoundary()||bc->hasDensityBoundary())continue; diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/ShearStressSimulationObserver.h b/src/cpu/core/SimulationObservers/ShearStressSimulationObserver.h similarity index 100% rename from src/cpu/VirtualFluidsCore/SimulationObservers/ShearStressSimulationObserver.h rename to src/cpu/core/SimulationObservers/ShearStressSimulationObserver.h diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/SimulationObserver.cpp b/src/cpu/core/SimulationObservers/SimulationObserver.cpp similarity index 100% rename from src/cpu/VirtualFluidsCore/SimulationObservers/SimulationObserver.cpp rename to src/cpu/core/SimulationObservers/SimulationObserver.cpp diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/SimulationObserver.h b/src/cpu/core/SimulationObservers/SimulationObserver.h similarity index 100% rename from src/cpu/VirtualFluidsCore/SimulationObservers/SimulationObserver.h rename to src/cpu/core/SimulationObservers/SimulationObserver.h diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/TimeAveragedValuesSimulationObserver.cpp b/src/cpu/core/SimulationObservers/TimeAveragedValuesSimulationObserver.cpp similarity index 99% rename from src/cpu/VirtualFluidsCore/SimulationObservers/TimeAveragedValuesSimulationObserver.cpp rename to src/cpu/core/SimulationObservers/TimeAveragedValuesSimulationObserver.cpp index 7f915be1a931fb61a4c59ab9d20677f4d3be97ad..5161e887b63c8c0b1ed945839a00f25b2fb5d070 100644 --- a/src/cpu/VirtualFluidsCore/SimulationObservers/TimeAveragedValuesSimulationObserver.cpp +++ b/src/cpu/core/SimulationObservers/TimeAveragedValuesSimulationObserver.cpp @@ -286,7 +286,7 @@ void TimeAveragedValuesSimulationObserver::addData(const SPtr<Block3D> block) data[index++].push_back(level); - distributions->getDistribution(f, ix1, ix2, ix3); + distributions->getPreCollisionDistribution(f, ix1, ix2, ix3); calcMacros(f, rho, vx1, vx2, vx3); data[index++].push_back(rho); @@ -516,7 +516,7 @@ void TimeAveragedValuesSimulationObserver::calculateSubtotal(real step) // read distribution //////////////////////////////////////////////////////////////////////////// - distributions->getDistribution(f, ix1, ix2, ix3); + distributions->getPreCollisionDistribution(f, ix1, ix2, ix3); ////////////////////////////////////////////////////////////////////////// // compute velocity ////////////////////////////////////////////////////////////////////////// diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/TimeAveragedValuesSimulationObserver.h b/src/cpu/core/SimulationObservers/TimeAveragedValuesSimulationObserver.h similarity index 100% rename from src/cpu/VirtualFluidsCore/SimulationObservers/TimeAveragedValuesSimulationObserver.h rename to src/cpu/core/SimulationObservers/TimeAveragedValuesSimulationObserver.h diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/TimeDependentBCSimulationObserver.cpp b/src/cpu/core/SimulationObservers/TimeDependentBCSimulationObserver.cpp similarity index 100% rename from src/cpu/VirtualFluidsCore/SimulationObservers/TimeDependentBCSimulationObserver.cpp rename to src/cpu/core/SimulationObservers/TimeDependentBCSimulationObserver.cpp diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/TimeDependentBCSimulationObserver.h b/src/cpu/core/SimulationObservers/TimeDependentBCSimulationObserver.h similarity index 100% rename from src/cpu/VirtualFluidsCore/SimulationObservers/TimeDependentBCSimulationObserver.h rename to src/cpu/core/SimulationObservers/TimeDependentBCSimulationObserver.h diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/TimeseriesSimulationObserver.cpp b/src/cpu/core/SimulationObservers/TimeseriesSimulationObserver.cpp similarity index 100% rename from src/cpu/VirtualFluidsCore/SimulationObservers/TimeseriesSimulationObserver.cpp rename to src/cpu/core/SimulationObservers/TimeseriesSimulationObserver.cpp diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/TimeseriesSimulationObserver.h b/src/cpu/core/SimulationObservers/TimeseriesSimulationObserver.h similarity index 100% rename from src/cpu/VirtualFluidsCore/SimulationObservers/TimeseriesSimulationObserver.h rename to src/cpu/core/SimulationObservers/TimeseriesSimulationObserver.h diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/TurbulenceIntensitySimulationObserver.cpp b/src/cpu/core/SimulationObservers/TurbulenceIntensitySimulationObserver.cpp similarity index 92% rename from src/cpu/VirtualFluidsCore/SimulationObservers/TurbulenceIntensitySimulationObserver.cpp rename to src/cpu/core/SimulationObservers/TurbulenceIntensitySimulationObserver.cpp index d5a0ccb593488f4e992fef0fc7591c0672fc24ed..424c3411f05400597c1722df793153354ba874b7 100644 --- a/src/cpu/VirtualFluidsCore/SimulationObservers/TurbulenceIntensitySimulationObserver.cpp +++ b/src/cpu/core/SimulationObservers/TurbulenceIntensitySimulationObserver.cpp @@ -212,18 +212,18 @@ void TurbulenceIntensitySimulationObserver::calculateAverageValues(real timeStep ////////////////////////////////////////////////////////////////////////// // read distribution //////////////////////////////////////////////////////////////////////////// - distributions->getDistribution(f, ix1, ix2, ix3); + distributions->getPreCollisionDistribution(f, ix1, ix2, ix3); ////////////////////////////////////////////////////////////////////////// // compute velocity ////////////////////////////////////////////////////////////////////////// - vx = f[DIR_P00] - f[DIR_M00] + f[DIR_PP0] - f[DIR_MM0] + f[DIR_PM0] - f[DIR_MP0] + f[DIR_P0P] - f[DIR_M0M] + f[DIR_P0M] - f[DIR_M0P] + - f[DIR_PPP] - f[DIR_MMP] + f[DIR_PMP] - f[DIR_MPP] + f[DIR_PPM] - f[DIR_MMM] + f[DIR_PMM] - f[DIR_MPM]; + vx = f[dP00] - f[dM00] + f[dPP0] - f[dMM0] + f[dPM0] - f[dMP0] + f[dP0P] - f[dM0M] + f[dP0M] - f[dM0P] + + f[dPPP] - f[dMMP] + f[dPMP] - f[dMPP] + f[dPPM] - f[dMMM] + f[dPMM] - f[dMPM]; - vy = f[DIR_0P0] - f[DIR_0M0] + f[DIR_PP0] - f[DIR_MM0] - f[DIR_PM0] + f[DIR_MP0] + f[DIR_0PP] - f[DIR_0MM] + f[DIR_0PM] - f[DIR_0MP] + - f[DIR_PPP] - f[DIR_MMP] - f[DIR_PMP] + f[DIR_MPP] + f[DIR_PPM] - f[DIR_MMM] - f[DIR_PMM] + f[DIR_MPM]; + vy = f[d0P0] - f[d0M0] + f[dPP0] - f[dMM0] - f[dPM0] + f[dMP0] + f[d0PP] - f[d0MM] + f[d0PM] - f[d0MP] + + f[dPPP] - f[dMMP] - f[dPMP] + f[dMPP] + f[dPPM] - f[dMMM] - f[dPMM] + f[dMPM]; - vz = f[DIR_00P] - f[DIR_00M] + f[DIR_P0P] - f[DIR_M0M] - f[DIR_P0M] + f[DIR_M0P] + f[DIR_0PP] - f[DIR_0MM] - f[DIR_0PM] + f[DIR_0MP] + - f[DIR_PPP] + f[DIR_MMP] + f[DIR_PMP] + f[DIR_MPP] - f[DIR_PPM] - f[DIR_MMM] - f[DIR_PMM] - f[DIR_MPM]; + vz = f[d00P] - f[d00M] + f[dP0P] - f[dM0M] - f[dP0M] + f[dM0P] + f[d0PP] - f[d0MM] - f[d0PM] + f[d0MP] + + f[dPPP] + f[dMMP] + f[dPMP] + f[dMPP] - f[dPPM] - f[dMMM] - f[dPMM] - f[dMPM]; ////////////////////////////////////////////////////////////////////////// // compute average values ////////////////////////////////////////////////////////////////////////// diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/TurbulenceIntensitySimulationObserver.h b/src/cpu/core/SimulationObservers/TurbulenceIntensitySimulationObserver.h similarity index 100% rename from src/cpu/VirtualFluidsCore/SimulationObservers/TurbulenceIntensitySimulationObserver.h rename to src/cpu/core/SimulationObservers/TurbulenceIntensitySimulationObserver.h diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/WriteBlocksSimulationObserver.cpp b/src/cpu/core/SimulationObservers/WriteBlocksSimulationObserver.cpp similarity index 99% rename from src/cpu/VirtualFluidsCore/SimulationObservers/WriteBlocksSimulationObserver.cpp rename to src/cpu/core/SimulationObservers/WriteBlocksSimulationObserver.cpp index 15a1c39cf268659d8cc8dec4b7633636049a019d..45ea8b5714775bca42b23dc14d96fa764129d962 100644 --- a/src/cpu/VirtualFluidsCore/SimulationObservers/WriteBlocksSimulationObserver.cpp +++ b/src/cpu/core/SimulationObservers/WriteBlocksSimulationObserver.cpp @@ -123,7 +123,7 @@ void WriteBlocksSimulationObserver::collectData(real step) // for (std::size_t i = 0; i<connectors.size(); i++) // if (connectors[i]) // { - // if (connectors[i]->getSendDir() == D3Q27System::DIR_0MM) + // if (connectors[i]->getSendDir() == D3Q27System::d0MM) // { // flag = true; @@ -146,7 +146,7 @@ void WriteBlocksSimulationObserver::collectData(real step) // for (std::size_t i = 0; i<connectors.size(); i++) // if (connectors[i]) // { - // if (connectors[i]->getSendDir() == D3Q27System::DIR_0MM) + // if (connectors[i]->getSendDir() == D3Q27System::d0MM) // { // flag = true; diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/WriteBlocksSimulationObserver.h b/src/cpu/core/SimulationObservers/WriteBlocksSimulationObserver.h similarity index 100% rename from src/cpu/VirtualFluidsCore/SimulationObservers/WriteBlocksSimulationObserver.h rename to src/cpu/core/SimulationObservers/WriteBlocksSimulationObserver.h diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/WriteBoundaryConditionsSimulationObserver.cpp b/src/cpu/core/SimulationObservers/WriteBoundaryConditionsSimulationObserver.cpp similarity index 100% rename from src/cpu/VirtualFluidsCore/SimulationObservers/WriteBoundaryConditionsSimulationObserver.cpp rename to src/cpu/core/SimulationObservers/WriteBoundaryConditionsSimulationObserver.cpp diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/WriteBoundaryConditionsSimulationObserver.h b/src/cpu/core/SimulationObservers/WriteBoundaryConditionsSimulationObserver.h similarity index 100% rename from src/cpu/VirtualFluidsCore/SimulationObservers/WriteBoundaryConditionsSimulationObserver.h rename to src/cpu/core/SimulationObservers/WriteBoundaryConditionsSimulationObserver.h diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/WriteGbObjectsSimulationObserver.cpp b/src/cpu/core/SimulationObservers/WriteGbObjectsSimulationObserver.cpp similarity index 100% rename from src/cpu/VirtualFluidsCore/SimulationObservers/WriteGbObjectsSimulationObserver.cpp rename to src/cpu/core/SimulationObservers/WriteGbObjectsSimulationObserver.cpp diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/WriteGbObjectsSimulationObserver.h b/src/cpu/core/SimulationObservers/WriteGbObjectsSimulationObserver.h similarity index 100% rename from src/cpu/VirtualFluidsCore/SimulationObservers/WriteGbObjectsSimulationObserver.h rename to src/cpu/core/SimulationObservers/WriteGbObjectsSimulationObserver.h diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/WriteMQFromSelectionSimulationObserver.cpp b/src/cpu/core/SimulationObservers/WriteMQFromSelectionSimulationObserver.cpp similarity index 99% rename from src/cpu/VirtualFluidsCore/SimulationObservers/WriteMQFromSelectionSimulationObserver.cpp rename to src/cpu/core/SimulationObservers/WriteMQFromSelectionSimulationObserver.cpp index 945058c8e94b2d7780c4a03444c0848267b4b8f7..b95930db587687142c4339ad1b7b6edae9a815f9 100644 --- a/src/cpu/VirtualFluidsCore/SimulationObservers/WriteMQFromSelectionSimulationObserver.cpp +++ b/src/cpu/core/SimulationObservers/WriteMQFromSelectionSimulationObserver.cpp @@ -174,7 +174,7 @@ void WriteMQFromSelectionSimulationObserver::addDataMQ(SPtr<Block3D> block) nodes.emplace_back(float(worldCoordinates[0]), float(worldCoordinates[1]), float(worldCoordinates[2])); - distributions->getDistribution(f, ix1, ix2, ix3); + distributions->getPreCollisionDistribution(f, ix1, ix2, ix3); calcMacros(f, rho, vx1, vx2, vx3); if (UbMath::isNaN(rho) || UbMath::isInfinity(rho)) diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/WriteMQFromSelectionSimulationObserver.h b/src/cpu/core/SimulationObservers/WriteMQFromSelectionSimulationObserver.h similarity index 100% rename from src/cpu/VirtualFluidsCore/SimulationObservers/WriteMQFromSelectionSimulationObserver.h rename to src/cpu/core/SimulationObservers/WriteMQFromSelectionSimulationObserver.h diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/WriteMacroscopicQuantitiesPlusMassSimulationObserver.cpp b/src/cpu/core/SimulationObservers/WriteMacroscopicQuantitiesPlusMassSimulationObserver.cpp similarity index 99% rename from src/cpu/VirtualFluidsCore/SimulationObservers/WriteMacroscopicQuantitiesPlusMassSimulationObserver.cpp rename to src/cpu/core/SimulationObservers/WriteMacroscopicQuantitiesPlusMassSimulationObserver.cpp index f098a21f536ba9ee1c8786007fe5ef272fb674af..733d9d80672c483696b84b0b1ae14be660ed4866 100644 --- a/src/cpu/VirtualFluidsCore/SimulationObservers/WriteMacroscopicQuantitiesPlusMassSimulationObserver.cpp +++ b/src/cpu/core/SimulationObservers/WriteMacroscopicQuantitiesPlusMassSimulationObserver.cpp @@ -209,7 +209,7 @@ void WriteMacroscopicQuantitiesPlusMassSimulationObserver::addDataMQ(SPtr<Block3 nodes.push_back(UbTupleFloat3(float(worldCoordinates[0]), float(worldCoordinates[1]), float(worldCoordinates[2]))); - distributions->getDistribution(f, ix1, ix2, ix3); + distributions->getPreCollisionDistribution(f, ix1, ix2, ix3); calcMacros(f, rho, vx1, vx2, vx3); //double press = D3Q27System::getPressure(f); // D3Q27System::calcPress(f,rho,vx1,vx2,vx3); diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/WriteMacroscopicQuantitiesPlusMassSimulationObserver.h b/src/cpu/core/SimulationObservers/WriteMacroscopicQuantitiesPlusMassSimulationObserver.h similarity index 100% rename from src/cpu/VirtualFluidsCore/SimulationObservers/WriteMacroscopicQuantitiesPlusMassSimulationObserver.h rename to src/cpu/core/SimulationObservers/WriteMacroscopicQuantitiesPlusMassSimulationObserver.h diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/WriteMacroscopicQuantitiesSimulationObserver.cpp b/src/cpu/core/SimulationObservers/WriteMacroscopicQuantitiesSimulationObserver.cpp similarity index 99% rename from src/cpu/VirtualFluidsCore/SimulationObservers/WriteMacroscopicQuantitiesSimulationObserver.cpp rename to src/cpu/core/SimulationObservers/WriteMacroscopicQuantitiesSimulationObserver.cpp index d5c80b4df56bc303361572e9114ab57efe995ecc..704f09ce2eb6ceae11d604ecd9cf22fc0d3fb83c 100644 --- a/src/cpu/VirtualFluidsCore/SimulationObservers/WriteMacroscopicQuantitiesSimulationObserver.cpp +++ b/src/cpu/core/SimulationObservers/WriteMacroscopicQuantitiesSimulationObserver.cpp @@ -209,7 +209,7 @@ void WriteMacroscopicQuantitiesSimulationObserver::addDataMQ(SPtr<Block3D> block nodes.push_back(UbTupleFloat3(real(worldCoordinates[0]), real(worldCoordinates[1]), real(worldCoordinates[2]))); - distributions->getDistribution(f, ix1, ix2, ix3); + distributions->getPreCollisionDistribution(f, ix1, ix2, ix3); calcMacros(f, rho, vx1, vx2, vx3); //double press = D3Q27System::getPressure(f); // D3Q27System::calcPress(f,rho,vx1,vx2,vx3); diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/WriteMacroscopicQuantitiesSimulationObserver.h b/src/cpu/core/SimulationObservers/WriteMacroscopicQuantitiesSimulationObserver.h similarity index 100% rename from src/cpu/VirtualFluidsCore/SimulationObservers/WriteMacroscopicQuantitiesSimulationObserver.h rename to src/cpu/core/SimulationObservers/WriteMacroscopicQuantitiesSimulationObserver.h diff --git a/src/cpu/VirtualFluidsCore/Utilities/ChangeRandomQs.hpp b/src/cpu/core/Utilities/ChangeRandomQs.hpp similarity index 100% rename from src/cpu/VirtualFluidsCore/Utilities/ChangeRandomQs.hpp rename to src/cpu/core/Utilities/ChangeRandomQs.hpp diff --git a/src/cpu/VirtualFluidsCore/Utilities/CheckpointConverter.cpp b/src/cpu/core/Utilities/CheckpointConverter.cpp similarity index 100% rename from src/cpu/VirtualFluidsCore/Utilities/CheckpointConverter.cpp rename to src/cpu/core/Utilities/CheckpointConverter.cpp diff --git a/src/cpu/VirtualFluidsCore/Utilities/CheckpointConverter.h b/src/cpu/core/Utilities/CheckpointConverter.h similarity index 100% rename from src/cpu/VirtualFluidsCore/Utilities/CheckpointConverter.h rename to src/cpu/core/Utilities/CheckpointConverter.h diff --git a/src/cpu/VirtualFluidsCore/Utilities/MathUtil.hpp b/src/cpu/core/Utilities/MathUtil.hpp similarity index 100% rename from src/cpu/VirtualFluidsCore/Utilities/MathUtil.hpp rename to src/cpu/core/Utilities/MathUtil.hpp diff --git a/src/cpu/VirtualFluidsCore/Utilities/MemoryUtil.h b/src/cpu/core/Utilities/MemoryUtil.h similarity index 100% rename from src/cpu/VirtualFluidsCore/Utilities/MemoryUtil.h rename to src/cpu/core/Utilities/MemoryUtil.h diff --git a/src/cpu/VirtualFluidsCore/Utilities/VoxelMatrixUtil.hpp b/src/cpu/core/Utilities/VoxelMatrixUtil.hpp similarity index 100% rename from src/cpu/VirtualFluidsCore/Utilities/VoxelMatrixUtil.hpp rename to src/cpu/core/Utilities/VoxelMatrixUtil.hpp diff --git a/src/cpu/VirtualFluidsCore/Visitors/Block3DVisitor.h b/src/cpu/core/Visitors/Block3DVisitor.h similarity index 100% rename from src/cpu/VirtualFluidsCore/Visitors/Block3DVisitor.h rename to src/cpu/core/Visitors/Block3DVisitor.h diff --git a/src/cpu/VirtualFluidsCore/Visitors/BoundaryConditionsBlockVisitor.cpp b/src/cpu/core/Visitors/BoundaryConditionsBlockVisitor.cpp similarity index 100% rename from src/cpu/VirtualFluidsCore/Visitors/BoundaryConditionsBlockVisitor.cpp rename to src/cpu/core/Visitors/BoundaryConditionsBlockVisitor.cpp diff --git a/src/cpu/VirtualFluidsCore/Visitors/BoundaryConditionsBlockVisitor.h b/src/cpu/core/Visitors/BoundaryConditionsBlockVisitor.h similarity index 100% rename from src/cpu/VirtualFluidsCore/Visitors/BoundaryConditionsBlockVisitor.h rename to src/cpu/core/Visitors/BoundaryConditionsBlockVisitor.h diff --git a/src/cpu/VirtualFluidsCore/Visitors/ChangeBoundaryDensityBlockVisitor.cpp b/src/cpu/core/Visitors/ChangeBoundaryDensityBlockVisitor.cpp similarity index 100% rename from src/cpu/VirtualFluidsCore/Visitors/ChangeBoundaryDensityBlockVisitor.cpp rename to src/cpu/core/Visitors/ChangeBoundaryDensityBlockVisitor.cpp diff --git a/src/cpu/VirtualFluidsCore/Visitors/ChangeBoundaryDensityBlockVisitor.h b/src/cpu/core/Visitors/ChangeBoundaryDensityBlockVisitor.h similarity index 100% rename from src/cpu/VirtualFluidsCore/Visitors/ChangeBoundaryDensityBlockVisitor.h rename to src/cpu/core/Visitors/ChangeBoundaryDensityBlockVisitor.h diff --git a/src/cpu/VirtualFluidsCore/Visitors/CheckRatioBlockVisitor.cpp b/src/cpu/core/Visitors/CheckRatioBlockVisitor.cpp similarity index 100% rename from src/cpu/VirtualFluidsCore/Visitors/CheckRatioBlockVisitor.cpp rename to src/cpu/core/Visitors/CheckRatioBlockVisitor.cpp diff --git a/src/cpu/VirtualFluidsCore/Visitors/CheckRatioBlockVisitor.h b/src/cpu/core/Visitors/CheckRatioBlockVisitor.h similarity index 100% rename from src/cpu/VirtualFluidsCore/Visitors/CheckRatioBlockVisitor.h rename to src/cpu/core/Visitors/CheckRatioBlockVisitor.h diff --git a/src/cpu/VirtualFluidsCore/Visitors/CoarsenCrossAndInsideGbObjectBlockVisitor.cpp b/src/cpu/core/Visitors/CoarsenCrossAndInsideGbObjectBlockVisitor.cpp similarity index 100% rename from src/cpu/VirtualFluidsCore/Visitors/CoarsenCrossAndInsideGbObjectBlockVisitor.cpp rename to src/cpu/core/Visitors/CoarsenCrossAndInsideGbObjectBlockVisitor.cpp diff --git a/src/cpu/VirtualFluidsCore/Visitors/CoarsenCrossAndInsideGbObjectBlockVisitor.h b/src/cpu/core/Visitors/CoarsenCrossAndInsideGbObjectBlockVisitor.h similarity index 100% rename from src/cpu/VirtualFluidsCore/Visitors/CoarsenCrossAndInsideGbObjectBlockVisitor.h rename to src/cpu/core/Visitors/CoarsenCrossAndInsideGbObjectBlockVisitor.h diff --git a/src/cpu/VirtualFluidsCore/Visitors/CreateTransmittersHelper.cpp b/src/cpu/core/Visitors/CreateTransmittersHelper.cpp similarity index 100% rename from src/cpu/VirtualFluidsCore/Visitors/CreateTransmittersHelper.cpp rename to src/cpu/core/Visitors/CreateTransmittersHelper.cpp diff --git a/src/cpu/VirtualFluidsCore/Visitors/CreateTransmittersHelper.h b/src/cpu/core/Visitors/CreateTransmittersHelper.h similarity index 100% rename from src/cpu/VirtualFluidsCore/Visitors/CreateTransmittersHelper.h rename to src/cpu/core/Visitors/CreateTransmittersHelper.h diff --git a/src/cpu/VirtualFluidsCore/Visitors/GenBlocksGridVisitor.cpp b/src/cpu/core/Visitors/GenBlocksGridVisitor.cpp similarity index 100% rename from src/cpu/VirtualFluidsCore/Visitors/GenBlocksGridVisitor.cpp rename to src/cpu/core/Visitors/GenBlocksGridVisitor.cpp diff --git a/src/cpu/VirtualFluidsCore/Visitors/GenBlocksGridVisitor.h b/src/cpu/core/Visitors/GenBlocksGridVisitor.h similarity index 100% rename from src/cpu/VirtualFluidsCore/Visitors/GenBlocksGridVisitor.h rename to src/cpu/core/Visitors/GenBlocksGridVisitor.h diff --git a/src/cpu/VirtualFluidsCore/Visitors/Grid3DVisitor.h b/src/cpu/core/Visitors/Grid3DVisitor.h similarity index 100% rename from src/cpu/VirtualFluidsCore/Visitors/Grid3DVisitor.h rename to src/cpu/core/Visitors/Grid3DVisitor.h diff --git a/src/cpu/VirtualFluidsCore/Visitors/InitDistributionsBlockVisitor.cpp b/src/cpu/core/Visitors/InitDistributionsBlockVisitor.cpp similarity index 87% rename from src/cpu/VirtualFluidsCore/Visitors/InitDistributionsBlockVisitor.cpp rename to src/cpu/core/Visitors/InitDistributionsBlockVisitor.cpp index 0cc445b303b29897076080aa0146ae64cba11e28..daef0aa7eea9c0d5180845f5fc3bd88bb9f1d4ba 100644 --- a/src/cpu/VirtualFluidsCore/Visitors/InitDistributionsBlockVisitor.cpp +++ b/src/cpu/core/Visitors/InitDistributionsBlockVisitor.cpp @@ -251,41 +251,41 @@ void InitDistributionsBlockVisitor::visit(const SPtr<Grid3D> grid, SPtr<Block3D> real f_TNW = - eps_new *((bz + cy)/(c36o1*o)) - f_TNE; - f[DIR_P00] = f_E + feq[DIR_P00]; - f[DIR_M00] = f_E + feq[DIR_M00]; - f[DIR_0P0] = f_N + feq[DIR_0P0]; - f[DIR_0M0] = f_N + feq[DIR_0M0]; - f[DIR_00P] = f_T + feq[DIR_00P]; - f[DIR_00M] = f_T + feq[DIR_00M]; - f[DIR_PP0] = f_NE + feq[DIR_PP0]; - f[DIR_MM0] = f_NE + feq[DIR_MM0]; - f[DIR_PM0] = f_SE + feq[DIR_PM0]; - f[DIR_MP0] = f_SE + feq[DIR_MP0]; - f[DIR_P0P] = f_TE + feq[DIR_P0P]; - f[DIR_M0M] = f_TE + feq[DIR_M0M]; - f[DIR_P0M] = f_BE + feq[DIR_P0M]; - f[DIR_M0P] = f_BE + feq[DIR_M0P]; - f[DIR_0PP] = f_TN + feq[DIR_0PP]; - f[DIR_0MM] = f_TN + feq[DIR_0MM]; - f[DIR_0PM] = f_BN + feq[DIR_0PM]; - f[DIR_0MP] = f_BN + feq[DIR_0MP]; - f[DIR_PPP] = f_TNE + feq[DIR_PPP]; - f[DIR_MPP] = f_TNW + feq[DIR_MPP]; - f[DIR_PMP] = f_TSE + feq[DIR_PMP]; - f[DIR_MMP] = f_TSW + feq[DIR_MMP]; - f[DIR_PPM] = f_TSW + feq[DIR_PPM]; - f[DIR_MPM] = f_TSE + feq[DIR_MPM]; - f[DIR_PMM] = f_TNW + feq[DIR_PMM]; - f[DIR_MMM] = f_TNE + feq[DIR_MMM]; - f[DIR_000] = f_ZERO + feq[DIR_000]; + f[dP00] = f_E + feq[dP00]; + f[dM00] = f_E + feq[dM00]; + f[d0P0] = f_N + feq[d0P0]; + f[d0M0] = f_N + feq[d0M0]; + f[d00P] = f_T + feq[d00P]; + f[d00M] = f_T + feq[d00M]; + f[dPP0] = f_NE + feq[dPP0]; + f[dMM0] = f_NE + feq[dMM0]; + f[dPM0] = f_SE + feq[dPM0]; + f[dMP0] = f_SE + feq[dMP0]; + f[dP0P] = f_TE + feq[dP0P]; + f[dM0M] = f_TE + feq[dM0M]; + f[dP0M] = f_BE + feq[dP0M]; + f[dM0P] = f_BE + feq[dM0P]; + f[d0PP] = f_TN + feq[d0PP]; + f[d0MM] = f_TN + feq[d0MM]; + f[d0PM] = f_BN + feq[d0PM]; + f[d0MP] = f_BN + feq[d0MP]; + f[dPPP] = f_TNE + feq[dPPP]; + f[dMPP] = f_TNW + feq[dMPP]; + f[dPMP] = f_TSE + feq[dPMP]; + f[dMMP] = f_TSW + feq[dMMP]; + f[dPPM] = f_TSW + feq[dPPM]; + f[dMPM] = f_TSE + feq[dMPM]; + f[dPMM] = f_TNW + feq[dPMM]; + f[dMMM] = f_TNE + feq[dMMM]; + f[d000] = f_ZERO + feq[d000]; //calcFeqsFct(f,rho,vx1,vx2,vx3); - distributions->setDistribution(f, ix1, ix2, ix3); - distributions->setDistributionInv(f, ix1, ix2, ix3); + distributions->setPostCollisionDistribution(f, ix1, ix2, ix3); + distributions->setPreCollisionDistribution(f, ix1, ix2, ix3); //distributions->swap(); - //distributions->setDistribution(f, ix1, ix2, ix3); - //distributions->setDistributionInv(f, ix1, ix2, ix3); + //distributions->setPostCollisionDistribution(f, ix1, ix2, ix3); + //distributions->setPreCollisionDistribution(f, ix1, ix2, ix3); //distributions->swap(); } diff --git a/src/cpu/VirtualFluidsCore/Visitors/InitDistributionsBlockVisitor.h b/src/cpu/core/Visitors/InitDistributionsBlockVisitor.h similarity index 100% rename from src/cpu/VirtualFluidsCore/Visitors/InitDistributionsBlockVisitor.h rename to src/cpu/core/Visitors/InitDistributionsBlockVisitor.h diff --git a/src/cpu/VirtualFluidsCore/Visitors/InitDistributionsFromFileBlockVisitor.cpp b/src/cpu/core/Visitors/InitDistributionsFromFileBlockVisitor.cpp similarity index 97% rename from src/cpu/VirtualFluidsCore/Visitors/InitDistributionsFromFileBlockVisitor.cpp rename to src/cpu/core/Visitors/InitDistributionsFromFileBlockVisitor.cpp index 3a51f5532532e4ac116221a551a1d4ad9bb5e66c..e3e058b2810719d0466afd1276c8aaa342d185a0 100644 --- a/src/cpu/VirtualFluidsCore/Visitors/InitDistributionsFromFileBlockVisitor.cpp +++ b/src/cpu/core/Visitors/InitDistributionsFromFileBlockVisitor.cpp @@ -202,7 +202,7 @@ void InitDistributionsFromFileBlockVisitor::visit(const SPtr<Grid3D> grid, SPtr< // f_TSW = -eps_new *((ay + bx) / (36.*o)) - f_TNE; double f_TSE = -eps_new *((az + cx) / (36.*o)) - // f_TNE; double f_TNW = -eps_new *((bz + cy) / (36.*o)) - f_TNE; - // f[DIR_P00] = f_E + feq[DIR_P00]; + // f[dP00] = f_E + feq[dP00]; // f[W] = f_E + feq[W]; // f[N] = f_N + feq[N]; // f[S] = f_N + feq[S]; @@ -232,8 +232,8 @@ void InitDistributionsFromFileBlockVisitor::visit(const SPtr<Grid3D> grid, SPtr< calcFeqsFct(f, rho, vx1, vx2, vx3); - distributions->setDistribution(f, ix1, ix2, ix3); - distributions->setDistributionInv(f, ix1, ix2, ix3); + distributions->setPostCollisionDistribution(f, ix1, ix2, ix3); + distributions->setPreCollisionDistribution(f, ix1, ix2, ix3); dynamicPointerCast<InitDensityLBMKernel>(kernel)->setVelocity(ix1, ix2, ix3, vx1, vx2, vx3); } } diff --git a/src/cpu/VirtualFluidsCore/Visitors/InitDistributionsFromFileBlockVisitor.h b/src/cpu/core/Visitors/InitDistributionsFromFileBlockVisitor.h similarity index 100% rename from src/cpu/VirtualFluidsCore/Visitors/InitDistributionsFromFileBlockVisitor.h rename to src/cpu/core/Visitors/InitDistributionsFromFileBlockVisitor.h diff --git a/src/cpu/VirtualFluidsCore/Visitors/InitDistributionsWithInterpolationGridVisitor.cpp b/src/cpu/core/Visitors/InitDistributionsWithInterpolationGridVisitor.cpp similarity index 100% rename from src/cpu/VirtualFluidsCore/Visitors/InitDistributionsWithInterpolationGridVisitor.cpp rename to src/cpu/core/Visitors/InitDistributionsWithInterpolationGridVisitor.cpp diff --git a/src/cpu/VirtualFluidsCore/Visitors/InitDistributionsWithInterpolationGridVisitor.h b/src/cpu/core/Visitors/InitDistributionsWithInterpolationGridVisitor.h similarity index 100% rename from src/cpu/VirtualFluidsCore/Visitors/InitDistributionsWithInterpolationGridVisitor.h rename to src/cpu/core/Visitors/InitDistributionsWithInterpolationGridVisitor.h diff --git a/src/cpu/VirtualFluidsCore/Visitors/InitThixotropyBlockVisitor.cpp b/src/cpu/core/Visitors/InitThixotropyBlockVisitor.cpp similarity index 98% rename from src/cpu/VirtualFluidsCore/Visitors/InitThixotropyBlockVisitor.cpp rename to src/cpu/core/Visitors/InitThixotropyBlockVisitor.cpp index 79c354e5f28724279447a4751ba81c3b6eba0958..00d0e9e7f26d6d50caa9ec5f46f7984ab7c3b1c8 100644 --- a/src/cpu/VirtualFluidsCore/Visitors/InitThixotropyBlockVisitor.cpp +++ b/src/cpu/core/Visitors/InitThixotropyBlockVisitor.cpp @@ -281,15 +281,15 @@ void InitThixotropyBlockVisitor::visit(SPtr<Grid3D> grid, SPtr<Block3D> block) //initialize(h, x1, x2, x3, f1, f2, f3, conc, coords, dx, oDiffusion, false); - //distributionsf->setDistribution(f, ix1, ix2, ix3); - //distributionsf->setDistributionInv(f, ix1, ix2, ix3); + //distributionsf->setPostCollisionDistribution(f, ix1, ix2, ix3); + //distributionsf->setPreCollisionDistribution(f, ix1, ix2, ix3); real lambda = muLambda.Eval(); calcFeqsFct(h,lambda,c0o1,c0o1,c0o1); - distributions->setDistribution(h, ix1, ix2, ix3); - distributions->setDistributionInv(h, ix1, ix2, ix3); + distributions->setPostCollisionDistribution(h, ix1, ix2, ix3); + distributions->setPreCollisionDistribution(h, ix1, ix2, ix3); } @@ -429,7 +429,7 @@ void InitThixotropyBlockVisitor::checkFunction(mu::Parser fct) // double f_TNW = -eps_new * ((bz + cy) / (36. * o)) - f_TNE; // // -// f[DIR_P00] = f_E + feq[DIR_P00]; +// f[dP00] = f_E + feq[dP00]; // f[W] = f_E + feq[W]; // f[N] = f_N + feq[N]; // f[S] = f_N + feq[S]; diff --git a/src/cpu/VirtualFluidsCore/Visitors/InitThixotropyBlockVisitor.h b/src/cpu/core/Visitors/InitThixotropyBlockVisitor.h similarity index 100% rename from src/cpu/VirtualFluidsCore/Visitors/InitThixotropyBlockVisitor.h rename to src/cpu/core/Visitors/InitThixotropyBlockVisitor.h diff --git a/src/cpu/VirtualFluidsCore/Visitors/MetisPartitioningGridVisitor.cpp b/src/cpu/core/Visitors/MetisPartitioningGridVisitor.cpp similarity index 97% rename from src/cpu/VirtualFluidsCore/Visitors/MetisPartitioningGridVisitor.cpp rename to src/cpu/core/Visitors/MetisPartitioningGridVisitor.cpp index 30708d664deb405954f95a4aac58cd6c01d17153..26787a1530681d98f29469c95443503611ec62ce 100644 --- a/src/cpu/VirtualFluidsCore/Visitors/MetisPartitioningGridVisitor.cpp +++ b/src/cpu/core/Visitors/MetisPartitioningGridVisitor.cpp @@ -135,7 +135,7 @@ void MetisPartitioningGridVisitor::buildMetisGraphLevelIntersected(SPtr<Grid3D> // the weights of the vertices are 2^level of grid (1, 2, 4, 8 .....) 1<<level metis.vwgt.push_back((idx_t)(1 << block->getLevel())); - for (int dir = (int)DIR_P00; dir <= numOfDirs; dir++) { + for (int dir = (int)dP00; dir <= numOfDirs; dir++) { SPtr<Block3D> neighBlock = grid->getNeighborBlock(dir, block); if (neighBlock) { if (this->getPartitionCondition(neighBlock, level)) { @@ -204,7 +204,7 @@ void MetisPartitioningGridVisitor::buildMetisGraphLevelBased(SPtr<Grid3D> grid, metis.xadj.push_back(edges); metis.vwgt.push_back(vertexWeight); - for (int dir = (int)DIR_P00; dir <= numOfDirs; dir++) { + for (int dir = (int)dP00; dir <= numOfDirs; dir++) { SPtr<Block3D> neighBlock = grid->getNeighborBlock(dir, block); if (neighBlock) { if (this->getPartitionCondition(neighBlock, level)) { @@ -262,11 +262,11 @@ int MetisPartitioningGridVisitor::getEdgeWeight(int dir) using namespace D3Q27System; using namespace vf::lbm::dir; - if (dir <= (int)DIR_00M) { + if (dir <= (int)d00M) { return 100; - } else if (dir >= (int)DIR_PP0 && dir <= (int)DIR_0MP) { + } else if (dir >= (int)dPP0 && dir <= (int)d0MP) { return 10; - } else if (dir >= (int)DIR_PPP) { + } else if (dir >= (int)dPPP) { return 1; } diff --git a/src/cpu/VirtualFluidsCore/Visitors/MetisPartitioningGridVisitor.h b/src/cpu/core/Visitors/MetisPartitioningGridVisitor.h similarity index 100% rename from src/cpu/VirtualFluidsCore/Visitors/MetisPartitioningGridVisitor.h rename to src/cpu/core/Visitors/MetisPartitioningGridVisitor.h diff --git a/src/cpu/VirtualFluidsCore/Visitors/OverlapBlockVisitor.cpp b/src/cpu/core/Visitors/OverlapBlockVisitor.cpp similarity index 100% rename from src/cpu/VirtualFluidsCore/Visitors/OverlapBlockVisitor.cpp rename to src/cpu/core/Visitors/OverlapBlockVisitor.cpp diff --git a/src/cpu/VirtualFluidsCore/Visitors/OverlapBlockVisitor.h b/src/cpu/core/Visitors/OverlapBlockVisitor.h similarity index 100% rename from src/cpu/VirtualFluidsCore/Visitors/OverlapBlockVisitor.h rename to src/cpu/core/Visitors/OverlapBlockVisitor.h diff --git a/src/cpu/VirtualFluidsCore/Visitors/PQueuePartitioningGridVisitor.cpp b/src/cpu/core/Visitors/PQueuePartitioningGridVisitor.cpp similarity index 100% rename from src/cpu/VirtualFluidsCore/Visitors/PQueuePartitioningGridVisitor.cpp rename to src/cpu/core/Visitors/PQueuePartitioningGridVisitor.cpp diff --git a/src/cpu/VirtualFluidsCore/Visitors/PQueuePartitioningGridVisitor.h b/src/cpu/core/Visitors/PQueuePartitioningGridVisitor.h similarity index 100% rename from src/cpu/VirtualFluidsCore/Visitors/PQueuePartitioningGridVisitor.h rename to src/cpu/core/Visitors/PQueuePartitioningGridVisitor.h diff --git a/src/cpu/VirtualFluidsCore/Visitors/RatioBlockVisitor.cpp b/src/cpu/core/Visitors/RatioBlockVisitor.cpp similarity index 100% rename from src/cpu/VirtualFluidsCore/Visitors/RatioBlockVisitor.cpp rename to src/cpu/core/Visitors/RatioBlockVisitor.cpp diff --git a/src/cpu/VirtualFluidsCore/Visitors/RatioBlockVisitor.h b/src/cpu/core/Visitors/RatioBlockVisitor.h similarity index 100% rename from src/cpu/VirtualFluidsCore/Visitors/RatioBlockVisitor.h rename to src/cpu/core/Visitors/RatioBlockVisitor.h diff --git a/src/cpu/VirtualFluidsCore/Visitors/RatioSmoothBlockVisitor.cpp b/src/cpu/core/Visitors/RatioSmoothBlockVisitor.cpp similarity index 100% rename from src/cpu/VirtualFluidsCore/Visitors/RatioSmoothBlockVisitor.cpp rename to src/cpu/core/Visitors/RatioSmoothBlockVisitor.cpp diff --git a/src/cpu/VirtualFluidsCore/Visitors/RatioSmoothBlockVisitor.h b/src/cpu/core/Visitors/RatioSmoothBlockVisitor.h similarity index 100% rename from src/cpu/VirtualFluidsCore/Visitors/RatioSmoothBlockVisitor.h rename to src/cpu/core/Visitors/RatioSmoothBlockVisitor.h diff --git a/src/cpu/VirtualFluidsCore/Visitors/RefineAroundGbObjectHelper.cpp b/src/cpu/core/Visitors/RefineAroundGbObjectHelper.cpp similarity index 97% rename from src/cpu/VirtualFluidsCore/Visitors/RefineAroundGbObjectHelper.cpp rename to src/cpu/core/Visitors/RefineAroundGbObjectHelper.cpp index b2eefc859d26ef92d43bb7701a1eb96e6a7a6f4a..3245fa58c090d0cc790a40ddef69f13ab638cd16 100644 --- a/src/cpu/VirtualFluidsCore/Visitors/RefineAroundGbObjectHelper.cpp +++ b/src/cpu/core/Visitors/RefineAroundGbObjectHelper.cpp @@ -40,7 +40,7 @@ void RefineAroundGbObjectHelper::refine() grid->accept(overlapVisitor); std::vector<int> dirs; - for (int i = (int)DIR_P00; i <= (int)DIR_0MP; i++) { + for (int i = (int)dP00; i <= (int)d0MP; i++) { dirs.push_back(i); } SetInterpolationDirsBlockVisitor interDirsVisitor(dirs); diff --git a/src/cpu/VirtualFluidsCore/Visitors/RefineAroundGbObjectHelper.h b/src/cpu/core/Visitors/RefineAroundGbObjectHelper.h similarity index 100% rename from src/cpu/VirtualFluidsCore/Visitors/RefineAroundGbObjectHelper.h rename to src/cpu/core/Visitors/RefineAroundGbObjectHelper.h diff --git a/src/cpu/VirtualFluidsCore/Visitors/RefineCrossAndInsideGbObjectBlockVisitor.cpp b/src/cpu/core/Visitors/RefineCrossAndInsideGbObjectBlockVisitor.cpp similarity index 100% rename from src/cpu/VirtualFluidsCore/Visitors/RefineCrossAndInsideGbObjectBlockVisitor.cpp rename to src/cpu/core/Visitors/RefineCrossAndInsideGbObjectBlockVisitor.cpp diff --git a/src/cpu/VirtualFluidsCore/Visitors/RefineCrossAndInsideGbObjectBlockVisitor.h b/src/cpu/core/Visitors/RefineCrossAndInsideGbObjectBlockVisitor.h similarity index 100% rename from src/cpu/VirtualFluidsCore/Visitors/RefineCrossAndInsideGbObjectBlockVisitor.h rename to src/cpu/core/Visitors/RefineCrossAndInsideGbObjectBlockVisitor.h diff --git a/src/cpu/VirtualFluidsCore/Visitors/RefineCrossAndInsideGbObjectHelper.cpp b/src/cpu/core/Visitors/RefineCrossAndInsideGbObjectHelper.cpp similarity index 100% rename from src/cpu/VirtualFluidsCore/Visitors/RefineCrossAndInsideGbObjectHelper.cpp rename to src/cpu/core/Visitors/RefineCrossAndInsideGbObjectHelper.cpp diff --git a/src/cpu/VirtualFluidsCore/Visitors/RefineCrossAndInsideGbObjectHelper.h b/src/cpu/core/Visitors/RefineCrossAndInsideGbObjectHelper.h similarity index 100% rename from src/cpu/VirtualFluidsCore/Visitors/RefineCrossAndInsideGbObjectHelper.h rename to src/cpu/core/Visitors/RefineCrossAndInsideGbObjectHelper.h diff --git a/src/cpu/VirtualFluidsCore/Visitors/RefineInterGbObjectsVisitor.cpp b/src/cpu/core/Visitors/RefineInterGbObjectsVisitor.cpp similarity index 100% rename from src/cpu/VirtualFluidsCore/Visitors/RefineInterGbObjectsVisitor.cpp rename to src/cpu/core/Visitors/RefineInterGbObjectsVisitor.cpp diff --git a/src/cpu/VirtualFluidsCore/Visitors/RefineInterGbObjectsVisitor.h b/src/cpu/core/Visitors/RefineInterGbObjectsVisitor.h similarity index 100% rename from src/cpu/VirtualFluidsCore/Visitors/RefineInterGbObjectsVisitor.h rename to src/cpu/core/Visitors/RefineInterGbObjectsVisitor.h diff --git a/src/cpu/VirtualFluidsCore/Visitors/RenumberBlockVisitor.cpp b/src/cpu/core/Visitors/RenumberBlockVisitor.cpp similarity index 100% rename from src/cpu/VirtualFluidsCore/Visitors/RenumberBlockVisitor.cpp rename to src/cpu/core/Visitors/RenumberBlockVisitor.cpp diff --git a/src/cpu/VirtualFluidsCore/Visitors/RenumberBlockVisitor.h b/src/cpu/core/Visitors/RenumberBlockVisitor.h similarity index 100% rename from src/cpu/VirtualFluidsCore/Visitors/RenumberBlockVisitor.h rename to src/cpu/core/Visitors/RenumberBlockVisitor.h diff --git a/src/cpu/VirtualFluidsCore/Visitors/RenumberGridVisitor.cpp b/src/cpu/core/Visitors/RenumberGridVisitor.cpp similarity index 100% rename from src/cpu/VirtualFluidsCore/Visitors/RenumberGridVisitor.cpp rename to src/cpu/core/Visitors/RenumberGridVisitor.cpp diff --git a/src/cpu/VirtualFluidsCore/Visitors/RenumberGridVisitor.h b/src/cpu/core/Visitors/RenumberGridVisitor.h similarity index 100% rename from src/cpu/VirtualFluidsCore/Visitors/RenumberGridVisitor.h rename to src/cpu/core/Visitors/RenumberGridVisitor.h diff --git a/src/cpu/VirtualFluidsCore/Visitors/SetBcBlocksBlockVisitor.cpp b/src/cpu/core/Visitors/SetBcBlocksBlockVisitor.cpp similarity index 100% rename from src/cpu/VirtualFluidsCore/Visitors/SetBcBlocksBlockVisitor.cpp rename to src/cpu/core/Visitors/SetBcBlocksBlockVisitor.cpp diff --git a/src/cpu/VirtualFluidsCore/Visitors/SetBcBlocksBlockVisitor.h b/src/cpu/core/Visitors/SetBcBlocksBlockVisitor.h similarity index 100% rename from src/cpu/VirtualFluidsCore/Visitors/SetBcBlocksBlockVisitor.h rename to src/cpu/core/Visitors/SetBcBlocksBlockVisitor.h diff --git a/src/cpu/VirtualFluidsCore/Visitors/SetConnectorsBlockVisitor.cpp b/src/cpu/core/Visitors/SetConnectorsBlockVisitor.cpp similarity index 100% rename from src/cpu/VirtualFluidsCore/Visitors/SetConnectorsBlockVisitor.cpp rename to src/cpu/core/Visitors/SetConnectorsBlockVisitor.cpp diff --git a/src/cpu/VirtualFluidsCore/Visitors/SetConnectorsBlockVisitor.h b/src/cpu/core/Visitors/SetConnectorsBlockVisitor.h similarity index 99% rename from src/cpu/VirtualFluidsCore/Visitors/SetConnectorsBlockVisitor.h rename to src/cpu/core/Visitors/SetConnectorsBlockVisitor.h index fcf2c93d233a5168f0ff4586244ee2088a7bf627..f54f3f210dd8a62a30de03f08948c7cd6de7ff7f 100644 --- a/src/cpu/VirtualFluidsCore/Visitors/SetConnectorsBlockVisitor.h +++ b/src/cpu/core/Visitors/SetConnectorsBlockVisitor.h @@ -128,7 +128,7 @@ void SetConnectorsBlockVisitor<T1, T2>::setSameLevelConnectors(SPtr<Grid3D> grid } else if (blockRank != neighBlockRank && neighBlock->isActive()) { setRemoteConnectors(block, neighBlock, dir); - if (dir >= (int)DIR_P00 && dir <= (int)DIR_00M) { + if (dir >= (int)dP00 && dir <= (int)d00M) { int weight = block->getWeight(neighBlockRank); weight++; block->setWeight(neighBlockRank, weight); diff --git a/src/cpu/VirtualFluidsCore/Visitors/SetForcingBlockVisitor.cpp b/src/cpu/core/Visitors/SetForcingBlockVisitor.cpp similarity index 100% rename from src/cpu/VirtualFluidsCore/Visitors/SetForcingBlockVisitor.cpp rename to src/cpu/core/Visitors/SetForcingBlockVisitor.cpp diff --git a/src/cpu/VirtualFluidsCore/Visitors/SetForcingBlockVisitor.h b/src/cpu/core/Visitors/SetForcingBlockVisitor.h similarity index 100% rename from src/cpu/VirtualFluidsCore/Visitors/SetForcingBlockVisitor.h rename to src/cpu/core/Visitors/SetForcingBlockVisitor.h diff --git a/src/cpu/VirtualFluidsCore/Visitors/SetInterpolationConnectorsBlockVisitor.cpp b/src/cpu/core/Visitors/SetInterpolationConnectorsBlockVisitor.cpp similarity index 80% rename from src/cpu/VirtualFluidsCore/Visitors/SetInterpolationConnectorsBlockVisitor.cpp rename to src/cpu/core/Visitors/SetInterpolationConnectorsBlockVisitor.cpp index bdf851025d380daa93db2477217a513002591ebb..c8d9fa7cb803ea922cd37914d2e51beeab685240 100644 --- a/src/cpu/VirtualFluidsCore/Visitors/SetInterpolationConnectorsBlockVisitor.cpp +++ b/src/cpu/core/Visitors/SetInterpolationConnectorsBlockVisitor.cpp @@ -84,110 +84,110 @@ void SetInterpolationConnectorsBlockVisitor::setInterpolationConnectors(SPtr<Gri int fbx3 = block->getX3() << 1; int level = block->getLevel() + 1; - if( block->hasInterpolationFlagCF(DIR_P00)) + if( block->hasInterpolationFlagCF(dP00)) { SPtr<Block3D> fblockSW = grid->getBlock(fbx1+1,fbx2,fbx3,level); SPtr<Block3D> fblockSE = grid->getBlock(fbx1+1,fbx2+1,fbx3,level); SPtr<Block3D> fblockNW = grid->getBlock(fbx1+1,fbx2,fbx3+1,level); SPtr<Block3D> fblockNE = grid->getBlock(fbx1+1,fbx2+1,fbx3+1,level); - setInterpolationConnectors(fblockSW, fblockSE, fblockNW, fblockNE, block, DIR_P00); + setInterpolationConnectors(fblockSW, fblockSE, fblockNW, fblockNE, block, dP00); } - if( block->hasInterpolationFlagCF(DIR_M00)) + if( block->hasInterpolationFlagCF(dM00)) { SPtr<Block3D> fblockSW = grid->getBlock(fbx1,fbx2,fbx3,level); SPtr<Block3D> fblockSE = grid->getBlock(fbx1,fbx2+1,fbx3,level); SPtr<Block3D> fblockNW = grid->getBlock(fbx1,fbx2,fbx3+1,level); SPtr<Block3D> fblockNE = grid->getBlock(fbx1,fbx2+1,fbx3+1,level); - setInterpolationConnectors(fblockSW, fblockSE, fblockNW, fblockNE, block, DIR_M00); + setInterpolationConnectors(fblockSW, fblockSE, fblockNW, fblockNE, block, dM00); } - if( block->hasInterpolationFlagCF(DIR_0P0)) + if( block->hasInterpolationFlagCF(d0P0)) { SPtr<Block3D> fblockSW = grid->getBlock(fbx1,fbx2+1,fbx3,level); SPtr<Block3D> fblockSE = grid->getBlock(fbx1+1,fbx2+1,fbx3,level); SPtr<Block3D> fblockNW = grid->getBlock(fbx1,fbx2+1,fbx3+1,level); SPtr<Block3D> fblockNE = grid->getBlock(fbx1+1,fbx2+1,fbx3+1,level); - setInterpolationConnectors(fblockSW, fblockSE, fblockNW, fblockNE, block, DIR_0P0); + setInterpolationConnectors(fblockSW, fblockSE, fblockNW, fblockNE, block, d0P0); } - if( block->hasInterpolationFlagCF(DIR_0M0)) + if( block->hasInterpolationFlagCF(d0M0)) { SPtr<Block3D> fblockSW = grid->getBlock(fbx1,fbx2,fbx3,level); SPtr<Block3D> fblockSE = grid->getBlock(fbx1+1,fbx2,fbx3,level); SPtr<Block3D> fblockNW = grid->getBlock(fbx1,fbx2,fbx3+1,level); SPtr<Block3D> fblockNE = grid->getBlock(fbx1+1,fbx2,fbx3+1,level); - setInterpolationConnectors(fblockSW, fblockSE, fblockNW, fblockNE, block, DIR_0M0); + setInterpolationConnectors(fblockSW, fblockSE, fblockNW, fblockNE, block, d0M0); } - if( block->hasInterpolationFlagCF(DIR_00P)) + if( block->hasInterpolationFlagCF(d00P)) { SPtr<Block3D> fblockSW = grid->getBlock(fbx1,fbx2,fbx3+1,level); SPtr<Block3D> fblockSE = grid->getBlock(fbx1+1,fbx2,fbx3+1,level); SPtr<Block3D> fblockNW = grid->getBlock(fbx1,fbx2+1,fbx3+1,level); SPtr<Block3D> fblockNE = grid->getBlock(fbx1+1,fbx2+1,fbx3+1,level); - setInterpolationConnectors(fblockSW, fblockSE, fblockNW, fblockNE, block, DIR_00P); + setInterpolationConnectors(fblockSW, fblockSE, fblockNW, fblockNE, block, d00P); } - if( block->hasInterpolationFlagCF(DIR_00M)) + if( block->hasInterpolationFlagCF(d00M)) { SPtr<Block3D> fblockSW = grid->getBlock(fbx1,fbx2,fbx3,level); SPtr<Block3D> fblockSE = grid->getBlock(fbx1+1,fbx2,fbx3,level); SPtr<Block3D> fblockNW = grid->getBlock(fbx1,fbx2+1,fbx3,level); SPtr<Block3D> fblockNE = grid->getBlock(fbx1+1,fbx2+1,fbx3,level); - setInterpolationConnectors(fblockSW, fblockSE, fblockNW, fblockNE, block, DIR_00M); + setInterpolationConnectors(fblockSW, fblockSE, fblockNW, fblockNE, block, d00M); } //////NE-NW-SE-SW - if( block->hasInterpolationFlagCF(DIR_PP0)&&!block->hasInterpolationFlagCF(DIR_0P0) && !block->hasInterpolationFlagCF(DIR_P00)) + if( block->hasInterpolationFlagCF(dPP0)&&!block->hasInterpolationFlagCF(d0P0) && !block->hasInterpolationFlagCF(dP00)) { SPtr<Block3D> fblockSW = grid->getBlock(fbx1+1,fbx2+1,fbx3+0,level); SPtr<Block3D> fblockSE = grid->getBlock(fbx1+1,fbx2+1,fbx3+1,level); SPtr<Block3D> fblockNW;// = grid->getBlock(fbx1+1, fbx2+1, fbx3+1, level); SPtr<Block3D> fblockNE;// = grid->getBlock(fbx1+1, fbx2+1, fbx3+1, level); - setInterpolationConnectors(fblockSW, fblockSE, fblockNW, fblockNE, block, DIR_PP0); + setInterpolationConnectors(fblockSW, fblockSE, fblockNW, fblockNE, block, dPP0); } - if( block->hasInterpolationFlagCF(DIR_MM0)&& !block->hasInterpolationFlagCF(DIR_M00) && !block->hasInterpolationFlagCF(DIR_0M0)) + if( block->hasInterpolationFlagCF(dMM0)&& !block->hasInterpolationFlagCF(dM00) && !block->hasInterpolationFlagCF(d0M0)) { SPtr<Block3D> fblockSW = grid->getBlock(fbx1,fbx2,fbx3,level); SPtr<Block3D> fblockSE = grid->getBlock(fbx1,fbx2,fbx3+1,level); SPtr<Block3D> fblockNW;// = grid->getBlock(fbx1, fbx2, fbx3+1, level); SPtr<Block3D> fblockNE;// = grid->getBlock(fbx1, fbx2, fbx3+1, level); - setInterpolationConnectors(fblockSW, fblockSE, fblockNW, fblockNE, block, DIR_MM0); + setInterpolationConnectors(fblockSW, fblockSE, fblockNW, fblockNE, block, dMM0); } - if( block->hasInterpolationFlagCF(DIR_PM0)&& !block->hasInterpolationFlagCF(DIR_P00) && !block->hasInterpolationFlagCF(DIR_0M0)) + if( block->hasInterpolationFlagCF(dPM0)&& !block->hasInterpolationFlagCF(dP00) && !block->hasInterpolationFlagCF(d0M0)) { SPtr<Block3D> fblockSW = grid->getBlock(fbx1+1,fbx2,fbx3+0,level); SPtr<Block3D> fblockSE = grid->getBlock(fbx1+1,fbx2,fbx3+1,level); SPtr<Block3D> fblockNW;// = grid->getBlock(fbx1+1, fbx2, fbx3+1, level); SPtr<Block3D> fblockNE;// = grid->getBlock(fbx1+1, fbx2, fbx3+1, level); - setInterpolationConnectors(fblockSW, fblockSE, fblockNW, fblockNE, block, DIR_PM0); + setInterpolationConnectors(fblockSW, fblockSE, fblockNW, fblockNE, block, dPM0); } - if( block->hasInterpolationFlagCF(DIR_MP0)&& !block->hasInterpolationFlagCF(DIR_0P0) && !block->hasInterpolationFlagCF(DIR_M00)) + if( block->hasInterpolationFlagCF(dMP0)&& !block->hasInterpolationFlagCF(d0P0) && !block->hasInterpolationFlagCF(dM00)) { SPtr<Block3D> fblockSW = grid->getBlock(fbx1,fbx2+1,fbx3,level); SPtr<Block3D> fblockSE = grid->getBlock(fbx1,fbx2+1,fbx3+1,level); SPtr<Block3D> fblockNW;// = grid->getBlock(fbx1, fbx2+1, fbx3+1, level); SPtr<Block3D> fblockNE;// = grid->getBlock(fbx1, fbx2+1, fbx3+1, level); - setInterpolationConnectors(fblockSW, fblockSE, fblockNW, fblockNE, block, DIR_MP0); + setInterpolationConnectors(fblockSW, fblockSE, fblockNW, fblockNE, block, dMP0); } /////////TE-BW-BE-TW 1-0 - if( block->hasInterpolationFlagCF(DIR_P0P)&& !block->hasInterpolationFlagCF(DIR_P00) && !block->hasInterpolationFlagCF(DIR_00P)) + if( block->hasInterpolationFlagCF(dP0P)&& !block->hasInterpolationFlagCF(dP00) && !block->hasInterpolationFlagCF(d00P)) { SPtr<Block3D> fblockSW = grid->getBlock(fbx1+1,fbx2+0,fbx3+1,level); SPtr<Block3D> fblockSE = grid->getBlock(fbx1+1,fbx2+1,fbx3+1,level); SPtr<Block3D> fblockNW;// = grid->getBlock(fbx1+1, fbx2+0, fbx3+1, level); SPtr<Block3D> fblockNE;// = grid->getBlock(fbx1+1, fbx2+1, fbx3+1, level); - setInterpolationConnectors(fblockSW, fblockSE, fblockNW, fblockNE, block, DIR_P0P); + setInterpolationConnectors(fblockSW, fblockSE, fblockNW, fblockNE, block, dP0P); } - if( block->hasInterpolationFlagCF(DIR_M0M)&& !block->hasInterpolationFlagCF(DIR_M00) && !block->hasInterpolationFlagCF(DIR_00M)) + if( block->hasInterpolationFlagCF(dM0M)&& !block->hasInterpolationFlagCF(dM00) && !block->hasInterpolationFlagCF(d00M)) { SPtr<Block3D> fblockSW = grid->getBlock(fbx1,fbx2+0,fbx3,level); @@ -195,140 +195,140 @@ void SetInterpolationConnectorsBlockVisitor::setInterpolationConnectors(SPtr<Gri SPtr<Block3D> fblockNW;// = grid->getBlock(fbx1, fbx2+0, fbx3, level); SPtr<Block3D> fblockNE;// = grid->getBlock(fbx1, fbx2+1, fbx3, level); - setInterpolationConnectors(fblockSW, fblockSE, fblockNW, fblockNE, block, DIR_M0M); + setInterpolationConnectors(fblockSW, fblockSE, fblockNW, fblockNE, block, dM0M); } - if( block->hasInterpolationFlagCF(DIR_P0M)&& !block->hasInterpolationFlagCF(DIR_P00) && !block->hasInterpolationFlagCF(DIR_00M)) + if( block->hasInterpolationFlagCF(dP0M)&& !block->hasInterpolationFlagCF(dP00) && !block->hasInterpolationFlagCF(d00M)) { SPtr<Block3D> fblockSW = grid->getBlock(fbx1+1,fbx2+0,fbx3,level); SPtr<Block3D> fblockSE = grid->getBlock(fbx1+1,fbx2+1,fbx3,level); SPtr<Block3D> fblockNW;// = grid->getBlock(fbx1+1, fbx2+0, fbx3, level); SPtr<Block3D> fblockNE;// = grid->getBlock(fbx1+1, fbx2+1, fbx3, level); - setInterpolationConnectors(fblockSW, fblockSE, fblockNW, fblockNE, block, DIR_P0M); + setInterpolationConnectors(fblockSW, fblockSE, fblockNW, fblockNE, block, dP0M); } - if( block->hasInterpolationFlagCF(DIR_M0P)&& !block->hasInterpolationFlagCF(DIR_M00) && !block->hasInterpolationFlagCF(DIR_00P)) + if( block->hasInterpolationFlagCF(dM0P)&& !block->hasInterpolationFlagCF(dM00) && !block->hasInterpolationFlagCF(d00P)) { SPtr<Block3D> fblockSW = grid->getBlock(fbx1,fbx2+0,fbx3+1,level); SPtr<Block3D> fblockSE = grid->getBlock(fbx1,fbx2+1,fbx3+1,level); SPtr<Block3D> fblockNW;// = grid->getBlock(fbx1, fbx2+0, fbx3+1, level); SPtr<Block3D> fblockNE;// = grid->getBlock(fbx1, fbx2+1, fbx3+1, level); - setInterpolationConnectors(fblockSW, fblockSE, fblockNW, fblockNE, block, DIR_M0P); + setInterpolationConnectors(fblockSW, fblockSE, fblockNW, fblockNE, block, dM0P); } //////TN-BS-BN-TS - if( block->hasInterpolationFlagCF(DIR_0PP)&& !block->hasInterpolationFlagCF(DIR_0P0) && !block->hasInterpolationFlagCF(DIR_00P)) + if( block->hasInterpolationFlagCF(d0PP)&& !block->hasInterpolationFlagCF(d0P0) && !block->hasInterpolationFlagCF(d00P)) { SPtr<Block3D> fblockSW = grid->getBlock(fbx1+0,fbx2+1,fbx3+1,level); SPtr<Block3D> fblockSE = grid->getBlock(fbx1+1,fbx2+1,fbx3+1,level); SPtr<Block3D> fblockNW;// = grid->getBlock(fbx1+0, fbx2+1, fbx3+1, level); SPtr<Block3D> fblockNE;// = grid->getBlock(fbx1+1, fbx2+1, fbx3+1, level); - setInterpolationConnectors(fblockSW, fblockSE, fblockNW, fblockNE, block, DIR_0PP); + setInterpolationConnectors(fblockSW, fblockSE, fblockNW, fblockNE, block, d0PP); } - if( block->hasInterpolationFlagCF(DIR_0MM)&& !block->hasInterpolationFlagCF(DIR_0M0) && !block->hasInterpolationFlagCF(DIR_00M)) + if( block->hasInterpolationFlagCF(d0MM)&& !block->hasInterpolationFlagCF(d0M0) && !block->hasInterpolationFlagCF(d00M)) { SPtr<Block3D> fblockSW = grid->getBlock(fbx1+0,fbx2,fbx3,level); SPtr<Block3D> fblockSE = grid->getBlock(fbx1+1,fbx2,fbx3,level); SPtr<Block3D> fblockNW;// = grid->getBlock(fbx1+0, fbx2, fbx3, level); SPtr<Block3D> fblockNE;// = grid->getBlock(fbx1+1, fbx2, fbx3, level); - setInterpolationConnectors(fblockSW, fblockSE, fblockNW, fblockNE, block, DIR_0MM); + setInterpolationConnectors(fblockSW, fblockSE, fblockNW, fblockNE, block, d0MM); } - if( block->hasInterpolationFlagCF(DIR_0PM)&& !block->hasInterpolationFlagCF(DIR_0P0) && !block->hasInterpolationFlagCF(DIR_00M)) + if( block->hasInterpolationFlagCF(d0PM)&& !block->hasInterpolationFlagCF(d0P0) && !block->hasInterpolationFlagCF(d00M)) { SPtr<Block3D> fblockSW = grid->getBlock(fbx1+0,fbx2+1,fbx3,level); SPtr<Block3D> fblockSE = grid->getBlock(fbx1+1,fbx2+1,fbx3,level); SPtr<Block3D> fblockNW;// = grid->getBlock(fbx1+0, fbx2+1, fbx3, level); SPtr<Block3D> fblockNE;// = grid->getBlock(fbx1+1, fbx2+1, fbx3, level); - setInterpolationConnectors(fblockSW, fblockSE, fblockNW, fblockNE, block, DIR_0PM); + setInterpolationConnectors(fblockSW, fblockSE, fblockNW, fblockNE, block, d0PM); } - if( block->hasInterpolationFlagCF(DIR_0MP)&& !block->hasInterpolationFlagCF(DIR_0M0) && !block->hasInterpolationFlagCF(DIR_00P)) + if( block->hasInterpolationFlagCF(d0MP)&& !block->hasInterpolationFlagCF(d0M0) && !block->hasInterpolationFlagCF(d00P)) { SPtr<Block3D> fblockSW = grid->getBlock(fbx1+0,fbx2,fbx3+1,level); SPtr<Block3D> fblockSE = grid->getBlock(fbx1+1,fbx2,fbx3+1,level); SPtr<Block3D> fblockNW;// = grid->getBlock(fbx1+0, fbx2, fbx3+1, level); SPtr<Block3D> fblockNE;// = grid->getBlock(fbx1+1, fbx2, fbx3+1, level); - setInterpolationConnectors(fblockSW, fblockSE, fblockNW, fblockNE, block, DIR_0MP); + setInterpolationConnectors(fblockSW, fblockSE, fblockNW, fblockNE, block, d0MP); } //////corners - if (block->hasInterpolationFlagCF(DIR_PPP)&&!block->hasInterpolationFlagCF(DIR_P0P)&&!block->hasInterpolationFlagCF(DIR_0PP)&&!block->hasInterpolationFlagCF(DIR_PP0)&&!block->hasInterpolationFlagCF(DIR_00P)&&!block->hasInterpolationFlagCF(DIR_0P0) && !block->hasInterpolationFlagCF(DIR_P00)) + if (block->hasInterpolationFlagCF(dPPP)&&!block->hasInterpolationFlagCF(dP0P)&&!block->hasInterpolationFlagCF(d0PP)&&!block->hasInterpolationFlagCF(dPP0)&&!block->hasInterpolationFlagCF(d00P)&&!block->hasInterpolationFlagCF(d0P0) && !block->hasInterpolationFlagCF(dP00)) { SPtr<Block3D> fblockSW = grid->getBlock(fbx1+1, fbx2+1, fbx3+1, level); SPtr<Block3D> fblockSE;// = grid->getBlock(fbx1+1, fbx2+1, fbx3+0, level); SPtr<Block3D> fblockNW;// = grid->getBlock(fbx1+1, fbx2+1, fbx3+1, level); SPtr<Block3D> fblockNE;// = grid->getBlock(fbx1+1, fbx2+1, fbx3+1, level); - setInterpolationConnectors(fblockSW, fblockSE, fblockNW, fblockNE, block, DIR_PPP); + setInterpolationConnectors(fblockSW, fblockSE, fblockNW, fblockNE, block, dPPP); } - if (block->hasInterpolationFlagCF(DIR_MMP)&&!block->hasInterpolationFlagCF(DIR_M0P)&&!block->hasInterpolationFlagCF(DIR_0MP)&& !block->hasInterpolationFlagCF(DIR_MM0)&& !block->hasInterpolationFlagCF(DIR_00P)&& !block->hasInterpolationFlagCF(DIR_M00) && !block->hasInterpolationFlagCF(DIR_0M0)) + if (block->hasInterpolationFlagCF(dMMP)&&!block->hasInterpolationFlagCF(dM0P)&&!block->hasInterpolationFlagCF(d0MP)&& !block->hasInterpolationFlagCF(dMM0)&& !block->hasInterpolationFlagCF(d00P)&& !block->hasInterpolationFlagCF(dM00) && !block->hasInterpolationFlagCF(d0M0)) { SPtr<Block3D> fblockSW = grid->getBlock(fbx1, fbx2, fbx3+1, level); SPtr<Block3D> fblockSE;// = grid->getBlock(fbx1, fbx2, fbx3, level); SPtr<Block3D> fblockNW;// = grid->getBlock(fbx1, fbx2, fbx3+1, level); SPtr<Block3D> fblockNE;// = grid->getBlock(fbx1, fbx2, fbx3+1, level); - setInterpolationConnectors(fblockSW, fblockSE, fblockNW, fblockNE, block, DIR_MMP); + setInterpolationConnectors(fblockSW, fblockSE, fblockNW, fblockNE, block, dMMP); } - if (block->hasInterpolationFlagCF(DIR_PMP)&&!block->hasInterpolationFlagCF(DIR_P0P)&&!block->hasInterpolationFlagCF(DIR_0MP)&& !block->hasInterpolationFlagCF(DIR_PM0)&& !block->hasInterpolationFlagCF(DIR_00P)&& !block->hasInterpolationFlagCF(DIR_P00) && !block->hasInterpolationFlagCF(DIR_0M0)) + if (block->hasInterpolationFlagCF(dPMP)&&!block->hasInterpolationFlagCF(dP0P)&&!block->hasInterpolationFlagCF(d0MP)&& !block->hasInterpolationFlagCF(dPM0)&& !block->hasInterpolationFlagCF(d00P)&& !block->hasInterpolationFlagCF(dP00) && !block->hasInterpolationFlagCF(d0M0)) { SPtr<Block3D> fblockSW = grid->getBlock(fbx1+1, fbx2, fbx3+1, level); SPtr<Block3D> fblockSE;// = grid->getBlock(fbx1+1, fbx2, fbx3+0, level); SPtr<Block3D> fblockNW;// = grid->getBlock(fbx1+1, fbx2, fbx3+1, level); SPtr<Block3D> fblockNE;// = grid->getBlock(fbx1+1, fbx2, fbx3+1, level); - setInterpolationConnectors(fblockSW, fblockSE, fblockNW, fblockNE, block, DIR_PMP); + setInterpolationConnectors(fblockSW, fblockSE, fblockNW, fblockNE, block, dPMP); } - if (block->hasInterpolationFlagCF(DIR_MPP)&&!block->hasInterpolationFlagCF(DIR_M0P)&&!block->hasInterpolationFlagCF(DIR_0PP)&& !block->hasInterpolationFlagCF(DIR_MP0)&& !block->hasInterpolationFlagCF(DIR_00P)&& !block->hasInterpolationFlagCF(DIR_0P0) && !block->hasInterpolationFlagCF(DIR_M00)) + if (block->hasInterpolationFlagCF(dMPP)&&!block->hasInterpolationFlagCF(dM0P)&&!block->hasInterpolationFlagCF(d0PP)&& !block->hasInterpolationFlagCF(dMP0)&& !block->hasInterpolationFlagCF(d00P)&& !block->hasInterpolationFlagCF(d0P0) && !block->hasInterpolationFlagCF(dM00)) { SPtr<Block3D> fblockSW = grid->getBlock(fbx1, fbx2+1, fbx3+1, level); SPtr<Block3D> fblockSE;// = grid->getBlock(fbx1, fbx2+1, fbx3, level); SPtr<Block3D> fblockNW;// = grid->getBlock(fbx1, fbx2+1, fbx3+1, level); SPtr<Block3D> fblockNE;// = grid->getBlock(fbx1, fbx2+1, fbx3+1, level); - setInterpolationConnectors(fblockSW, fblockSE, fblockNW, fblockNE, block, DIR_MPP); + setInterpolationConnectors(fblockSW, fblockSE, fblockNW, fblockNE, block, dMPP); } - if (block->hasInterpolationFlagCF(DIR_PPM)&&!block->hasInterpolationFlagCF(DIR_P0M)&&!block->hasInterpolationFlagCF(DIR_0PM)&& !block->hasInterpolationFlagCF(DIR_PP0)&&!block->hasInterpolationFlagCF(DIR_00M)&&!block->hasInterpolationFlagCF(DIR_0P0) && !block->hasInterpolationFlagCF(DIR_P00)) + if (block->hasInterpolationFlagCF(dPPM)&&!block->hasInterpolationFlagCF(dP0M)&&!block->hasInterpolationFlagCF(d0PM)&& !block->hasInterpolationFlagCF(dPP0)&&!block->hasInterpolationFlagCF(d00M)&&!block->hasInterpolationFlagCF(d0P0) && !block->hasInterpolationFlagCF(dP00)) { SPtr<Block3D> fblockSW = grid->getBlock(fbx1+1, fbx2+1, fbx3+0, level); SPtr<Block3D> fblockSE;// = grid->getBlock(fbx1+1, fbx2+1, fbx3+0, level); SPtr<Block3D> fblockNW;// = grid->getBlock(fbx1+1, fbx2+1, fbx3+1, level); SPtr<Block3D> fblockNE;// = grid->getBlock(fbx1+1, fbx2+1, fbx3+1, level); - setInterpolationConnectors(fblockSW, fblockSE, fblockNW, fblockNE, block, DIR_PPM); + setInterpolationConnectors(fblockSW, fblockSE, fblockNW, fblockNE, block, dPPM); } - if (block->hasInterpolationFlagCF(DIR_MMM)&& !block->hasInterpolationFlagCF(DIR_0MM)&& !block->hasInterpolationFlagCF(DIR_M0M)&& !block->hasInterpolationFlagCF(DIR_MM0)&& !block->hasInterpolationFlagCF(DIR_00M)&& !block->hasInterpolationFlagCF(DIR_M00) && !block->hasInterpolationFlagCF(DIR_0M0)) + if (block->hasInterpolationFlagCF(dMMM)&& !block->hasInterpolationFlagCF(d0MM)&& !block->hasInterpolationFlagCF(dM0M)&& !block->hasInterpolationFlagCF(dMM0)&& !block->hasInterpolationFlagCF(d00M)&& !block->hasInterpolationFlagCF(dM00) && !block->hasInterpolationFlagCF(d0M0)) { SPtr<Block3D> fblockSW = grid->getBlock(fbx1, fbx2, fbx3+0, level); SPtr<Block3D> fblockSE;// = grid->getBlock(fbx1, fbx2, fbx3, level); SPtr<Block3D> fblockNW;// = grid->getBlock(fbx1, fbx2, fbx3+1, level); SPtr<Block3D> fblockNE;// = grid->getBlock(fbx1, fbx2, fbx3+1, level); - setInterpolationConnectors(fblockSW, fblockSE, fblockNW, fblockNE, block, DIR_MMM); + setInterpolationConnectors(fblockSW, fblockSE, fblockNW, fblockNE, block, dMMM); } - if (block->hasInterpolationFlagCF(DIR_PMM)&& !block->hasInterpolationFlagCF(DIR_0MM)&& !block->hasInterpolationFlagCF(DIR_P0M)&& !block->hasInterpolationFlagCF(DIR_PM0)&& !block->hasInterpolationFlagCF(DIR_00M)&& !block->hasInterpolationFlagCF(DIR_P00) && !block->hasInterpolationFlagCF(DIR_0M0)) + if (block->hasInterpolationFlagCF(dPMM)&& !block->hasInterpolationFlagCF(d0MM)&& !block->hasInterpolationFlagCF(dP0M)&& !block->hasInterpolationFlagCF(dPM0)&& !block->hasInterpolationFlagCF(d00M)&& !block->hasInterpolationFlagCF(dP00) && !block->hasInterpolationFlagCF(d0M0)) { SPtr<Block3D> fblockSW = grid->getBlock(fbx1+1, fbx2, fbx3, level); SPtr<Block3D> fblockSE;// = grid->getBlock(fbx1+1, fbx2, fbx3+0, level); SPtr<Block3D> fblockNW;// = grid->getBlock(fbx1+1, fbx2, fbx3+1, level); SPtr<Block3D> fblockNE;// = grid->getBlock(fbx1+1, fbx2, fbx3+1, level); - setInterpolationConnectors(fblockSW, fblockSE, fblockNW, fblockNE, block, DIR_PMM); + setInterpolationConnectors(fblockSW, fblockSE, fblockNW, fblockNE, block, dPMM); } - if (block->hasInterpolationFlagCF(DIR_MPM)&& !block->hasInterpolationFlagCF(DIR_0PM)&& !block->hasInterpolationFlagCF(DIR_M0M)&& !block->hasInterpolationFlagCF(DIR_MP0)&& !block->hasInterpolationFlagCF(DIR_00M)&& !block->hasInterpolationFlagCF(DIR_0P0) && !block->hasInterpolationFlagCF(DIR_M00)) + if (block->hasInterpolationFlagCF(dMPM)&& !block->hasInterpolationFlagCF(d0PM)&& !block->hasInterpolationFlagCF(dM0M)&& !block->hasInterpolationFlagCF(dMP0)&& !block->hasInterpolationFlagCF(d00M)&& !block->hasInterpolationFlagCF(d0P0) && !block->hasInterpolationFlagCF(dM00)) { SPtr<Block3D> fblockSW = grid->getBlock(fbx1, fbx2+1, fbx3+0, level); SPtr<Block3D> fblockSE;// = grid->getBlock(fbx1, fbx2+1, fbx3, level); SPtr<Block3D> fblockNW;// = grid->getBlock(fbx1, fbx2+1, fbx3+1, level); SPtr<Block3D> fblockNE;// = grid->getBlock(fbx1, fbx2+1, fbx3+1, level); - setInterpolationConnectors(fblockSW, fblockSE, fblockNW, fblockNE, block, DIR_MPM); + setInterpolationConnectors(fblockSW, fblockSE, fblockNW, fblockNE, block, dMPM); } } diff --git a/src/cpu/VirtualFluidsCore/Visitors/SetInterpolationConnectorsBlockVisitor.h b/src/cpu/core/Visitors/SetInterpolationConnectorsBlockVisitor.h similarity index 100% rename from src/cpu/VirtualFluidsCore/Visitors/SetInterpolationConnectorsBlockVisitor.h rename to src/cpu/core/Visitors/SetInterpolationConnectorsBlockVisitor.h diff --git a/src/cpu/VirtualFluidsCore/Visitors/SetInterpolationDirsBlockVisitor.cpp b/src/cpu/core/Visitors/SetInterpolationDirsBlockVisitor.cpp similarity index 70% rename from src/cpu/VirtualFluidsCore/Visitors/SetInterpolationDirsBlockVisitor.cpp rename to src/cpu/core/Visitors/SetInterpolationDirsBlockVisitor.cpp index dbb85c0b848d2c5dc89e99f72d4091476eb31790..dcf71314768d8274941d5631906b972d0ab82561 100644 --- a/src/cpu/VirtualFluidsCore/Visitors/SetInterpolationDirsBlockVisitor.cpp +++ b/src/cpu/core/Visitors/SetInterpolationDirsBlockVisitor.cpp @@ -34,103 +34,103 @@ void SetInterpolationDirsBlockVisitor::visit(SPtr<Grid3D> grid, SPtr<Block3D> bl if (p_nblock) { bool flagDir; switch (dir) { - case DIR_PP0: - checkFlagDir(grid, DIR_P00, DIR_0P0, flagDir, ix1, ix2, ix3, level); + case dPP0: + checkFlagDir(grid, dP00, d0P0, flagDir, ix1, ix2, ix3, level); if (!flagDir) continue; break; - case DIR_MM0: - checkFlagDir(grid, DIR_M00, DIR_0M0, flagDir, ix1, ix2, ix3, level); + case dMM0: + checkFlagDir(grid, dM00, d0M0, flagDir, ix1, ix2, ix3, level); if (!flagDir) continue; break; - case DIR_PM0: - checkFlagDir(grid, DIR_P00, DIR_0M0, flagDir, ix1, ix2, ix3, level); + case dPM0: + checkFlagDir(grid, dP00, d0M0, flagDir, ix1, ix2, ix3, level); if (!flagDir) continue; break; - case DIR_MP0: - checkFlagDir(grid, DIR_M00, DIR_0P0, flagDir, ix1, ix2, ix3, level); + case dMP0: + checkFlagDir(grid, dM00, d0P0, flagDir, ix1, ix2, ix3, level); if (!flagDir) continue; break; - case DIR_P0P: - checkFlagDir(grid, DIR_P00, DIR_00P, flagDir, ix1, ix2, ix3, level); + case dP0P: + checkFlagDir(grid, dP00, d00P, flagDir, ix1, ix2, ix3, level); if (!flagDir) continue; break; - case DIR_M0M: - checkFlagDir(grid, DIR_M00, DIR_00M, flagDir, ix1, ix2, ix3, level); + case dM0M: + checkFlagDir(grid, dM00, d00M, flagDir, ix1, ix2, ix3, level); if (!flagDir) continue; break; - case DIR_P0M: - checkFlagDir(grid, DIR_P00, DIR_00M, flagDir, ix1, ix2, ix3, level); + case dP0M: + checkFlagDir(grid, dP00, d00M, flagDir, ix1, ix2, ix3, level); if (!flagDir) continue; break; - case DIR_M0P: - checkFlagDir(grid, DIR_M00, DIR_00P, flagDir, ix1, ix2, ix3, level); + case dM0P: + checkFlagDir(grid, dM00, d00P, flagDir, ix1, ix2, ix3, level); if (!flagDir) continue; break; - case DIR_0PP: - checkFlagDir(grid, DIR_0P0, DIR_00P, flagDir, ix1, ix2, ix3, level); + case d0PP: + checkFlagDir(grid, d0P0, d00P, flagDir, ix1, ix2, ix3, level); if (!flagDir) continue; break; - case DIR_0MM: - checkFlagDir(grid, DIR_0M0, DIR_00M, flagDir, ix1, ix2, ix3, level); + case d0MM: + checkFlagDir(grid, d0M0, d00M, flagDir, ix1, ix2, ix3, level); if (!flagDir) continue; break; - case DIR_0PM: - checkFlagDir(grid, DIR_0P0, DIR_00M, flagDir, ix1, ix2, ix3, level); + case d0PM: + checkFlagDir(grid, d0P0, d00M, flagDir, ix1, ix2, ix3, level); if (!flagDir) continue; break; - case DIR_0MP: - checkFlagDir(grid, DIR_0M0, DIR_00P, flagDir, ix1, ix2, ix3, level); + case d0MP: + checkFlagDir(grid, d0M0, d00P, flagDir, ix1, ix2, ix3, level); if (!flagDir) continue; break; - case DIR_PPP: - checkFlagDir(grid, DIR_P00, DIR_0P0, DIR_00P, flagDir, ix1, ix2, ix3, level); + case dPPP: + checkFlagDir(grid, dP00, d0P0, d00P, flagDir, ix1, ix2, ix3, level); if (!flagDir) continue; break; - case DIR_MMP: - checkFlagDir(grid, DIR_M00, DIR_0M0, DIR_00P, flagDir, ix1, ix2, ix3, level); + case dMMP: + checkFlagDir(grid, dM00, d0M0, d00P, flagDir, ix1, ix2, ix3, level); if (!flagDir) continue; break; - case DIR_PMP: - checkFlagDir(grid, DIR_P00, DIR_0M0, DIR_00P, flagDir, ix1, ix2, ix3, level); + case dPMP: + checkFlagDir(grid, dP00, d0M0, d00P, flagDir, ix1, ix2, ix3, level); if (!flagDir) continue; break; - case DIR_MPP: - checkFlagDir(grid, DIR_M00, DIR_0P0, DIR_00P, flagDir, ix1, ix2, ix3, level); + case dMPP: + checkFlagDir(grid, dM00, d0P0, d00P, flagDir, ix1, ix2, ix3, level); if (!flagDir) continue; break; - case DIR_PPM: - checkFlagDir(grid, DIR_P00, DIR_0P0, DIR_00M, flagDir, ix1, ix2, ix3, level); + case dPPM: + checkFlagDir(grid, dP00, d0P0, d00M, flagDir, ix1, ix2, ix3, level); if (!flagDir) continue; break; - case DIR_MMM: - checkFlagDir(grid, DIR_M00, DIR_0M0, DIR_00M, flagDir, ix1, ix2, ix3, level); + case dMMM: + checkFlagDir(grid, dM00, d0M0, d00M, flagDir, ix1, ix2, ix3, level); if (!flagDir) continue; break; - case DIR_PMM: - checkFlagDir(grid, DIR_P00, DIR_0M0, DIR_00M, flagDir, ix1, ix2, ix3, level); + case dPMM: + checkFlagDir(grid, dP00, d0M0, d00M, flagDir, ix1, ix2, ix3, level); if (!flagDir) continue; break; - case DIR_MPM: - checkFlagDir(grid, DIR_M00, DIR_0P0, DIR_00M, flagDir, ix1, ix2, ix3, level); + case dMPM: + checkFlagDir(grid, dM00, d0P0, d00M, flagDir, ix1, ix2, ix3, level); if (!flagDir) continue; break; diff --git a/src/cpu/VirtualFluidsCore/Visitors/SetInterpolationDirsBlockVisitor.h b/src/cpu/core/Visitors/SetInterpolationDirsBlockVisitor.h similarity index 100% rename from src/cpu/VirtualFluidsCore/Visitors/SetInterpolationDirsBlockVisitor.h rename to src/cpu/core/Visitors/SetInterpolationDirsBlockVisitor.h diff --git a/src/cpu/VirtualFluidsCore/Visitors/SetKernelBlockVisitor.cpp b/src/cpu/core/Visitors/SetKernelBlockVisitor.cpp similarity index 100% rename from src/cpu/VirtualFluidsCore/Visitors/SetKernelBlockVisitor.cpp rename to src/cpu/core/Visitors/SetKernelBlockVisitor.cpp diff --git a/src/cpu/VirtualFluidsCore/Visitors/SetKernelBlockVisitor.h b/src/cpu/core/Visitors/SetKernelBlockVisitor.h similarity index 100% rename from src/cpu/VirtualFluidsCore/Visitors/SetKernelBlockVisitor.h rename to src/cpu/core/Visitors/SetKernelBlockVisitor.h diff --git a/src/cpu/VirtualFluidsCore/Visitors/SetSolidBlocksBlockVisitor.cpp b/src/cpu/core/Visitors/SetSolidBlocksBlockVisitor.cpp similarity index 100% rename from src/cpu/VirtualFluidsCore/Visitors/SetSolidBlocksBlockVisitor.cpp rename to src/cpu/core/Visitors/SetSolidBlocksBlockVisitor.cpp diff --git a/src/cpu/VirtualFluidsCore/Visitors/SetSolidBlocksBlockVisitor.h b/src/cpu/core/Visitors/SetSolidBlocksBlockVisitor.h similarity index 100% rename from src/cpu/VirtualFluidsCore/Visitors/SetSolidBlocksBlockVisitor.h rename to src/cpu/core/Visitors/SetSolidBlocksBlockVisitor.h diff --git a/src/cpu/VirtualFluidsCore/Visitors/SetSpongeLayerBlockVisitor.cpp b/src/cpu/core/Visitors/SetSpongeLayerBlockVisitor.cpp similarity index 100% rename from src/cpu/VirtualFluidsCore/Visitors/SetSpongeLayerBlockVisitor.cpp rename to src/cpu/core/Visitors/SetSpongeLayerBlockVisitor.cpp diff --git a/src/cpu/VirtualFluidsCore/Visitors/SetSpongeLayerBlockVisitor.h b/src/cpu/core/Visitors/SetSpongeLayerBlockVisitor.h similarity index 100% rename from src/cpu/VirtualFluidsCore/Visitors/SetSpongeLayerBlockVisitor.h rename to src/cpu/core/Visitors/SetSpongeLayerBlockVisitor.h diff --git a/src/cpu/VirtualFluidsCore/Visitors/SetUndefinedNodesBlockVisitor.cpp b/src/cpu/core/Visitors/SetUndefinedNodesBlockVisitor.cpp similarity index 89% rename from src/cpu/VirtualFluidsCore/Visitors/SetUndefinedNodesBlockVisitor.cpp rename to src/cpu/core/Visitors/SetUndefinedNodesBlockVisitor.cpp index 04f758d396b726c67a5e9a5797a3d65d3d26a36b..797e8886e7825075cbff8ce9e762d0286dc81bea 100644 --- a/src/cpu/VirtualFluidsCore/Visitors/SetUndefinedNodesBlockVisitor.cpp +++ b/src/cpu/core/Visitors/SetUndefinedNodesBlockVisitor.cpp @@ -42,7 +42,7 @@ void SetUndefinedNodesBlockVisitor::visit(SPtr<Grid3D> grid, SPtr<Block3D> block // int offset = 2; int offset = 3; - if (block->hasInterpolationFlag(DIR_P00)) { + if (block->hasInterpolationFlag(dP00)) { int startix1 = maxX1; int endix1 = maxX1; if (block->hasInterpolationFlagCF()) @@ -53,7 +53,7 @@ void SetUndefinedNodesBlockVisitor::visit(SPtr<Grid3D> grid, SPtr<Block3D> block int endix3 = maxX3; this->setNodesUndefined(startix1, endix1, startix2, endix2, startix3, endix3, bcMatrix); } - if (block->hasInterpolationFlag(DIR_M00)) { + if (block->hasInterpolationFlag(dM00)) { int startix1 = minX1; int endix1 = minX1; if (block->hasInterpolationFlagCF()) @@ -64,7 +64,7 @@ void SetUndefinedNodesBlockVisitor::visit(SPtr<Grid3D> grid, SPtr<Block3D> block int endix3 = maxX3; this->setNodesUndefined(startix1, endix1, startix2, endix2, startix3, endix3, bcMatrix); } - if (block->hasInterpolationFlag(DIR_0P0)) { + if (block->hasInterpolationFlag(d0P0)) { int startix1 = minX1; int endix1 = maxX1; int startix2 = maxX2; @@ -75,7 +75,7 @@ void SetUndefinedNodesBlockVisitor::visit(SPtr<Grid3D> grid, SPtr<Block3D> block int endix3 = maxX3; this->setNodesUndefined(startix1, endix1, startix2, endix2, startix3, endix3, bcMatrix); } - if (block->hasInterpolationFlag(DIR_0M0)) { + if (block->hasInterpolationFlag(d0M0)) { int startix1 = minX1; int endix1 = maxX1; int startix2 = minX2; @@ -86,7 +86,7 @@ void SetUndefinedNodesBlockVisitor::visit(SPtr<Grid3D> grid, SPtr<Block3D> block int endix3 = maxX3; this->setNodesUndefined(startix1, endix1, startix2, endix2, startix3, endix3, bcMatrix); } - if (block->hasInterpolationFlag(DIR_00P)) { + if (block->hasInterpolationFlag(d00P)) { int startix1 = minX1; int endix1 = maxX1; int startix2 = minX2; @@ -97,7 +97,7 @@ void SetUndefinedNodesBlockVisitor::visit(SPtr<Grid3D> grid, SPtr<Block3D> block startix3 = startix3 - offset; this->setNodesUndefined(startix1, endix1, startix2, endix2, startix3, endix3, bcMatrix); } - if (block->hasInterpolationFlag(DIR_00M)) { + if (block->hasInterpolationFlag(d00M)) { int startix1 = minX1; int endix1 = maxX1; int startix2 = minX2; @@ -108,7 +108,7 @@ void SetUndefinedNodesBlockVisitor::visit(SPtr<Grid3D> grid, SPtr<Block3D> block endix3 = endix3 + offset; this->setNodesUndefined(startix1, endix1, startix2, endix2, startix3, endix3, bcMatrix); } - if (block->hasInterpolationFlag(DIR_PP0)) { + if (block->hasInterpolationFlag(dPP0)) { int startix1 = maxX1; int endix1 = maxX1; if (block->hasInterpolationFlagCF()) @@ -121,7 +121,7 @@ void SetUndefinedNodesBlockVisitor::visit(SPtr<Grid3D> grid, SPtr<Block3D> block int endix3 = maxX3; this->setNodesUndefined(startix1, endix1, startix2, endix2, startix3, endix3, bcMatrix); } - if (block->hasInterpolationFlag(DIR_MM0)) { + if (block->hasInterpolationFlag(dMM0)) { int startix1 = minX1; int endix1 = minX1; if (block->hasInterpolationFlagCF()) @@ -134,7 +134,7 @@ void SetUndefinedNodesBlockVisitor::visit(SPtr<Grid3D> grid, SPtr<Block3D> block int endix3 = maxX3; this->setNodesUndefined(startix1, endix1, startix2, endix2, startix3, endix3, bcMatrix); } - if (block->hasInterpolationFlag(DIR_PM0)) { + if (block->hasInterpolationFlag(dPM0)) { int startix1 = maxX1; int endix1 = maxX1; if (block->hasInterpolationFlagCF()) @@ -147,7 +147,7 @@ void SetUndefinedNodesBlockVisitor::visit(SPtr<Grid3D> grid, SPtr<Block3D> block int endix3 = maxX3; this->setNodesUndefined(startix1, endix1, startix2, endix2, startix3, endix3, bcMatrix); } - if (block->hasInterpolationFlag(DIR_MP0)) { + if (block->hasInterpolationFlag(dMP0)) { int startix1 = minX1; int endix1 = minX1; if (block->hasInterpolationFlagCF()) @@ -160,7 +160,7 @@ void SetUndefinedNodesBlockVisitor::visit(SPtr<Grid3D> grid, SPtr<Block3D> block int endix3 = maxX3; this->setNodesUndefined(startix1, endix1, startix2, endix2, startix3, endix3, bcMatrix); } - if (block->hasInterpolationFlag(DIR_P0P)) { + if (block->hasInterpolationFlag(dP0P)) { int startix1 = maxX1; int endix1 = maxX1; if (block->hasInterpolationFlagCF()) @@ -173,7 +173,7 @@ void SetUndefinedNodesBlockVisitor::visit(SPtr<Grid3D> grid, SPtr<Block3D> block startix3 = startix3 - offset; this->setNodesUndefined(startix1, endix1, startix2, endix2, startix3, endix3, bcMatrix); } - if (block->hasInterpolationFlag(DIR_M0M)) { + if (block->hasInterpolationFlag(dM0M)) { int startix1 = minX1; int endix1 = minX1; if (block->hasInterpolationFlagCF()) @@ -186,7 +186,7 @@ void SetUndefinedNodesBlockVisitor::visit(SPtr<Grid3D> grid, SPtr<Block3D> block endix3 = endix3 + offset; this->setNodesUndefined(startix1, endix1, startix2, endix2, startix3, endix3, bcMatrix); } - if (block->hasInterpolationFlag(DIR_P0M)) { + if (block->hasInterpolationFlag(dP0M)) { int startix1 = maxX1; int endix1 = maxX1; if (block->hasInterpolationFlagCF()) @@ -199,7 +199,7 @@ void SetUndefinedNodesBlockVisitor::visit(SPtr<Grid3D> grid, SPtr<Block3D> block endix3 = endix3 + offset; this->setNodesUndefined(startix1, endix1, startix2, endix2, startix3, endix3, bcMatrix); } - if (block->hasInterpolationFlag(DIR_M0P)) { + if (block->hasInterpolationFlag(dM0P)) { int startix1 = minX1; int endix1 = minX1; if (block->hasInterpolationFlagCF()) @@ -212,7 +212,7 @@ void SetUndefinedNodesBlockVisitor::visit(SPtr<Grid3D> grid, SPtr<Block3D> block startix3 = startix3 - offset; this->setNodesUndefined(startix1, endix1, startix2, endix2, startix3, endix3, bcMatrix); } - if (block->hasInterpolationFlag(DIR_0PP)) { + if (block->hasInterpolationFlag(d0PP)) { int startix1 = minX1; int endix1 = maxX1; int startix2 = maxX2; @@ -225,7 +225,7 @@ void SetUndefinedNodesBlockVisitor::visit(SPtr<Grid3D> grid, SPtr<Block3D> block startix3 = startix3 - offset; this->setNodesUndefined(startix1, endix1, startix2, endix2, startix3, endix3, bcMatrix); } - if (block->hasInterpolationFlag(DIR_0MM)) { + if (block->hasInterpolationFlag(d0MM)) { int startix1 = minX1; int endix1 = maxX1; int startix2 = minX2; @@ -238,7 +238,7 @@ void SetUndefinedNodesBlockVisitor::visit(SPtr<Grid3D> grid, SPtr<Block3D> block endix3 = endix3 + offset; this->setNodesUndefined(startix1, endix1, startix2, endix2, startix3, endix3, bcMatrix); } - if (block->hasInterpolationFlag(DIR_0PM)) { + if (block->hasInterpolationFlag(d0PM)) { int startix1 = minX1; int endix1 = maxX1; int startix2 = maxX2; @@ -251,7 +251,7 @@ void SetUndefinedNodesBlockVisitor::visit(SPtr<Grid3D> grid, SPtr<Block3D> block endix3 = endix3 + offset; this->setNodesUndefined(startix1, endix1, startix2, endix2, startix3, endix3, bcMatrix); } - if (block->hasInterpolationFlag(DIR_0MP)) { + if (block->hasInterpolationFlag(d0MP)) { int startix1 = minX1; int endix1 = maxX1; int startix2 = minX2; @@ -264,7 +264,7 @@ void SetUndefinedNodesBlockVisitor::visit(SPtr<Grid3D> grid, SPtr<Block3D> block startix3 = startix3 - offset; this->setNodesUndefined(startix1, endix1, startix2, endix2, startix3, endix3, bcMatrix); } - if (block->hasInterpolationFlag(DIR_PPP)) { + if (block->hasInterpolationFlag(dPPP)) { int startix1 = maxX1; int endix1 = maxX1; if (block->hasInterpolationFlagCF()) @@ -279,7 +279,7 @@ void SetUndefinedNodesBlockVisitor::visit(SPtr<Grid3D> grid, SPtr<Block3D> block startix3 = startix3 - offset; this->setNodesUndefined(startix1, endix1, startix2, endix2, startix3, endix3, bcMatrix); } - if (block->hasInterpolationFlag(DIR_MPP)) { + if (block->hasInterpolationFlag(dMPP)) { int startix1 = minX1; int endix1 = minX1; if (block->hasInterpolationFlagCF()) @@ -294,7 +294,7 @@ void SetUndefinedNodesBlockVisitor::visit(SPtr<Grid3D> grid, SPtr<Block3D> block startix3 = startix3 - offset; this->setNodesUndefined(startix1, endix1, startix2, endix2, startix3, endix3, bcMatrix); } - if (block->hasInterpolationFlag(DIR_PMP)) { + if (block->hasInterpolationFlag(dPMP)) { int startix1 = maxX1; int endix1 = maxX1; if (block->hasInterpolationFlagCF()) @@ -309,7 +309,7 @@ void SetUndefinedNodesBlockVisitor::visit(SPtr<Grid3D> grid, SPtr<Block3D> block startix3 = startix3 - offset; this->setNodesUndefined(startix1, endix1, startix2, endix2, startix3, endix3, bcMatrix); } - if (block->hasInterpolationFlag(DIR_MMP)) { + if (block->hasInterpolationFlag(dMMP)) { int startix1 = minX1; int endix1 = minX1; if (block->hasInterpolationFlagCF()) @@ -324,7 +324,7 @@ void SetUndefinedNodesBlockVisitor::visit(SPtr<Grid3D> grid, SPtr<Block3D> block startix3 = startix3 - offset; this->setNodesUndefined(startix1, endix1, startix2, endix2, startix3, endix3, bcMatrix); } - if (block->hasInterpolationFlag(DIR_PPM)) { + if (block->hasInterpolationFlag(dPPM)) { int startix1 = maxX1; int endix1 = maxX1; if (block->hasInterpolationFlagCF()) @@ -339,7 +339,7 @@ void SetUndefinedNodesBlockVisitor::visit(SPtr<Grid3D> grid, SPtr<Block3D> block endix3 = endix3 + offset; this->setNodesUndefined(startix1, endix1, startix2, endix2, startix3, endix3, bcMatrix); } - if (block->hasInterpolationFlag(DIR_MPM)) { + if (block->hasInterpolationFlag(dMPM)) { int startix1 = minX1; int endix1 = minX1; if (block->hasInterpolationFlagCF()) @@ -354,7 +354,7 @@ void SetUndefinedNodesBlockVisitor::visit(SPtr<Grid3D> grid, SPtr<Block3D> block endix3 = endix3 + offset; this->setNodesUndefined(startix1, endix1, startix2, endix2, startix3, endix3, bcMatrix); } - if (block->hasInterpolationFlag(DIR_PMM)) { + if (block->hasInterpolationFlag(dPMM)) { int startix1 = maxX1; int endix1 = maxX1; if (block->hasInterpolationFlagCF()) @@ -369,7 +369,7 @@ void SetUndefinedNodesBlockVisitor::visit(SPtr<Grid3D> grid, SPtr<Block3D> block endix3 = endix3 + offset; this->setNodesUndefined(startix1, endix1, startix2, endix2, startix3, endix3, bcMatrix); } - if (block->hasInterpolationFlag(DIR_MMM)) { + if (block->hasInterpolationFlag(dMMM)) { int startix1 = minX1; int endix1 = minX1; if (block->hasInterpolationFlagCF()) @@ -397,7 +397,7 @@ void SetUndefinedNodesBlockVisitor::visit(SPtr<Grid3D> grid, SPtr<Block3D> block maxX2 = static_cast<int>(bcMatrix->getNX2()) - 1 - ll; maxX3 = static_cast<int>(bcMatrix->getNX3()) - 1 - ll; - if (block->hasInterpolationFlagFC(DIR_P00)) { + if (block->hasInterpolationFlagFC(dP00)) { int startix1 = maxX1 - offset2; int endix1 = maxX1; int startix2 = minX2; @@ -406,7 +406,7 @@ void SetUndefinedNodesBlockVisitor::visit(SPtr<Grid3D> grid, SPtr<Block3D> block int endix3 = maxX3; this->setNodesUndefined(startix1, endix1, startix2, endix2, startix3, endix3, bcMatrix); } - if (block->hasInterpolationFlagFC(DIR_M00)) { + if (block->hasInterpolationFlagFC(dM00)) { int startix1 = minX1; int endix1 = minX1 + offset2; int startix2 = minX2; @@ -415,7 +415,7 @@ void SetUndefinedNodesBlockVisitor::visit(SPtr<Grid3D> grid, SPtr<Block3D> block int endix3 = maxX3; this->setNodesUndefined(startix1, endix1, startix2, endix2, startix3, endix3, bcMatrix); } - if (block->hasInterpolationFlagFC(DIR_0P0)) { + if (block->hasInterpolationFlagFC(d0P0)) { int startix1 = minX1; int endix1 = maxX1; int startix2 = maxX2 - offset2; @@ -424,7 +424,7 @@ void SetUndefinedNodesBlockVisitor::visit(SPtr<Grid3D> grid, SPtr<Block3D> block int endix3 = maxX3; this->setNodesUndefined(startix1, endix1, startix2, endix2, startix3, endix3, bcMatrix); } - if (block->hasInterpolationFlagFC(DIR_0M0)) { + if (block->hasInterpolationFlagFC(d0M0)) { int startix1 = minX1; int endix1 = maxX1; int startix2 = minX2; @@ -433,7 +433,7 @@ void SetUndefinedNodesBlockVisitor::visit(SPtr<Grid3D> grid, SPtr<Block3D> block int endix3 = maxX3; this->setNodesUndefined(startix1, endix1, startix2, endix2, startix3, endix3, bcMatrix); } - if (block->hasInterpolationFlagFC(DIR_00P)) { + if (block->hasInterpolationFlagFC(d00P)) { int startix1 = minX1; int endix1 = maxX1; int startix2 = minX2; @@ -442,7 +442,7 @@ void SetUndefinedNodesBlockVisitor::visit(SPtr<Grid3D> grid, SPtr<Block3D> block int endix3 = maxX3; this->setNodesUndefined(startix1, endix1, startix2, endix2, startix3, endix3, bcMatrix); } - if (block->hasInterpolationFlagFC(DIR_00M)) { + if (block->hasInterpolationFlagFC(d00M)) { int startix1 = minX1; int endix1 = maxX1; int startix2 = minX2; @@ -451,7 +451,7 @@ void SetUndefinedNodesBlockVisitor::visit(SPtr<Grid3D> grid, SPtr<Block3D> block int endix3 = minX3 + offset2; this->setNodesUndefined(startix1, endix1, startix2, endix2, startix3, endix3, bcMatrix); } - if (block->hasInterpolationFlagFC(DIR_PP0)) { + if (block->hasInterpolationFlagFC(dPP0)) { int startix1 = maxX1 - offset2; int endix1 = maxX1; int startix2 = maxX2 - offset2; @@ -460,7 +460,7 @@ void SetUndefinedNodesBlockVisitor::visit(SPtr<Grid3D> grid, SPtr<Block3D> block int endix3 = maxX3; this->setNodesUndefined(startix1, endix1, startix2, endix2, startix3, endix3, bcMatrix); } - if (block->hasInterpolationFlagFC(DIR_MM0)) { + if (block->hasInterpolationFlagFC(dMM0)) { int startix1 = minX1; int endix1 = minX1 + offset2; int startix2 = minX2; @@ -469,7 +469,7 @@ void SetUndefinedNodesBlockVisitor::visit(SPtr<Grid3D> grid, SPtr<Block3D> block int endix3 = maxX3; this->setNodesUndefined(startix1, endix1, startix2, endix2, startix3, endix3, bcMatrix); } - if (block->hasInterpolationFlagFC(DIR_PM0)) { + if (block->hasInterpolationFlagFC(dPM0)) { int startix1 = maxX1 - offset2; int endix1 = maxX1; int startix2 = minX2; @@ -478,7 +478,7 @@ void SetUndefinedNodesBlockVisitor::visit(SPtr<Grid3D> grid, SPtr<Block3D> block int endix3 = maxX3; this->setNodesUndefined(startix1, endix1, startix2, endix2, startix3, endix3, bcMatrix); } - if (block->hasInterpolationFlagFC(DIR_MP0)) { + if (block->hasInterpolationFlagFC(dMP0)) { int startix1 = minX1; int endix1 = minX1 + offset2; int startix2 = maxX2 - offset2; @@ -487,7 +487,7 @@ void SetUndefinedNodesBlockVisitor::visit(SPtr<Grid3D> grid, SPtr<Block3D> block int endix3 = maxX3; this->setNodesUndefined(startix1, endix1, startix2, endix2, startix3, endix3, bcMatrix); } - if (block->hasInterpolationFlagFC(DIR_P0P)) { + if (block->hasInterpolationFlagFC(dP0P)) { int startix1 = maxX1 - offset2; int endix1 = maxX1; int startix2 = minX2; @@ -496,7 +496,7 @@ void SetUndefinedNodesBlockVisitor::visit(SPtr<Grid3D> grid, SPtr<Block3D> block int endix3 = maxX3; this->setNodesUndefined(startix1, endix1, startix2, endix2, startix3, endix3, bcMatrix); } - if (block->hasInterpolationFlagFC(DIR_M0M)) { + if (block->hasInterpolationFlagFC(dM0M)) { int startix1 = minX1; int endix1 = minX1 + offset2; int startix2 = minX2; @@ -505,7 +505,7 @@ void SetUndefinedNodesBlockVisitor::visit(SPtr<Grid3D> grid, SPtr<Block3D> block int endix3 = minX3 + offset2; this->setNodesUndefined(startix1, endix1, startix2, endix2, startix3, endix3, bcMatrix); } - if (block->hasInterpolationFlagFC(DIR_P0M)) { + if (block->hasInterpolationFlagFC(dP0M)) { int startix1 = maxX1 - offset2; int endix1 = maxX1; int startix2 = minX2; @@ -514,7 +514,7 @@ void SetUndefinedNodesBlockVisitor::visit(SPtr<Grid3D> grid, SPtr<Block3D> block int endix3 = minX3 + offset2; this->setNodesUndefined(startix1, endix1, startix2, endix2, startix3, endix3, bcMatrix); } - if (block->hasInterpolationFlagFC(DIR_M0P)) { + if (block->hasInterpolationFlagFC(dM0P)) { int startix1 = minX1; int endix1 = minX1 + offset2; int startix2 = minX2; @@ -523,7 +523,7 @@ void SetUndefinedNodesBlockVisitor::visit(SPtr<Grid3D> grid, SPtr<Block3D> block int endix3 = maxX3; this->setNodesUndefined(startix1, endix1, startix2, endix2, startix3, endix3, bcMatrix); } - if (block->hasInterpolationFlagFC(DIR_0PP)) { + if (block->hasInterpolationFlagFC(d0PP)) { int startix1 = minX1; int endix1 = maxX1; int startix2 = maxX2 - offset2; @@ -532,7 +532,7 @@ void SetUndefinedNodesBlockVisitor::visit(SPtr<Grid3D> grid, SPtr<Block3D> block int endix3 = maxX3; this->setNodesUndefined(startix1, endix1, startix2, endix2, startix3, endix3, bcMatrix); } - if (block->hasInterpolationFlagFC(DIR_0MM)) { + if (block->hasInterpolationFlagFC(d0MM)) { int startix1 = minX1; int endix1 = maxX1; int startix2 = minX2; @@ -541,7 +541,7 @@ void SetUndefinedNodesBlockVisitor::visit(SPtr<Grid3D> grid, SPtr<Block3D> block int endix3 = minX3 + offset2; this->setNodesUndefined(startix1, endix1, startix2, endix2, startix3, endix3, bcMatrix); } - if (block->hasInterpolationFlagFC(DIR_0PM)) { + if (block->hasInterpolationFlagFC(d0PM)) { int startix1 = minX1; int endix1 = maxX1; int startix2 = maxX2 - offset2; @@ -550,7 +550,7 @@ void SetUndefinedNodesBlockVisitor::visit(SPtr<Grid3D> grid, SPtr<Block3D> block int endix3 = minX3 + offset2; this->setNodesUndefined(startix1, endix1, startix2, endix2, startix3, endix3, bcMatrix); } - if (block->hasInterpolationFlagFC(DIR_0MP)) { + if (block->hasInterpolationFlagFC(d0MP)) { int startix1 = minX1; int endix1 = maxX1; int startix2 = minX2; @@ -559,7 +559,7 @@ void SetUndefinedNodesBlockVisitor::visit(SPtr<Grid3D> grid, SPtr<Block3D> block int endix3 = maxX3; this->setNodesUndefined(startix1, endix1, startix2, endix2, startix3, endix3, bcMatrix); } - if (block->hasInterpolationFlagFC(DIR_PPP)) { + if (block->hasInterpolationFlagFC(dPPP)) { int startix1 = maxX1 - offset2; int endix1 = maxX1; int startix2 = maxX2 - offset2; @@ -568,7 +568,7 @@ void SetUndefinedNodesBlockVisitor::visit(SPtr<Grid3D> grid, SPtr<Block3D> block int endix3 = maxX3; this->setNodesUndefined(startix1, endix1, startix2, endix2, startix3, endix3, bcMatrix); } - if (block->hasInterpolationFlagFC(DIR_MPP)) { + if (block->hasInterpolationFlagFC(dMPP)) { int startix1 = minX1; int endix1 = minX1 + offset2; int startix2 = maxX2 - offset2; @@ -577,7 +577,7 @@ void SetUndefinedNodesBlockVisitor::visit(SPtr<Grid3D> grid, SPtr<Block3D> block int endix3 = maxX3; this->setNodesUndefined(startix1, endix1, startix2, endix2, startix3, endix3, bcMatrix); } - if (block->hasInterpolationFlagFC(DIR_PMP)) { + if (block->hasInterpolationFlagFC(dPMP)) { int startix1 = maxX1 - offset2; int endix1 = maxX1; int startix2 = minX2; @@ -586,7 +586,7 @@ void SetUndefinedNodesBlockVisitor::visit(SPtr<Grid3D> grid, SPtr<Block3D> block int endix3 = maxX3; this->setNodesUndefined(startix1, endix1, startix2, endix2, startix3, endix3, bcMatrix); } - if (block->hasInterpolationFlagFC(DIR_MMP)) { + if (block->hasInterpolationFlagFC(dMMP)) { int startix1 = minX1; int endix1 = minX1 + offset2; int startix2 = minX2; @@ -595,7 +595,7 @@ void SetUndefinedNodesBlockVisitor::visit(SPtr<Grid3D> grid, SPtr<Block3D> block int endix3 = maxX3; this->setNodesUndefined(startix1, endix1, startix2, endix2, startix3, endix3, bcMatrix); } - if (block->hasInterpolationFlagFC(DIR_PPM)) { + if (block->hasInterpolationFlagFC(dPPM)) { int startix1 = maxX1 - offset2; int endix1 = maxX1; int startix2 = maxX2 - offset2; @@ -604,7 +604,7 @@ void SetUndefinedNodesBlockVisitor::visit(SPtr<Grid3D> grid, SPtr<Block3D> block int endix3 = minX3 + offset2; this->setNodesUndefined(startix1, endix1, startix2, endix2, startix3, endix3, bcMatrix); } - if (block->hasInterpolationFlagFC(DIR_MPM)) { + if (block->hasInterpolationFlagFC(dMPM)) { int startix1 = minX1; int endix1 = minX1 + offset2; int startix2 = maxX2 - offset2; @@ -613,7 +613,7 @@ void SetUndefinedNodesBlockVisitor::visit(SPtr<Grid3D> grid, SPtr<Block3D> block int endix3 = minX3 + offset2; this->setNodesUndefined(startix1, endix1, startix2, endix2, startix3, endix3, bcMatrix); } - if (block->hasInterpolationFlagFC(DIR_PMM)) { + if (block->hasInterpolationFlagFC(dPMM)) { int startix1 = maxX1 - offset2; int endix1 = maxX1; int startix2 = minX2; @@ -622,7 +622,7 @@ void SetUndefinedNodesBlockVisitor::visit(SPtr<Grid3D> grid, SPtr<Block3D> block int endix3 = minX3 + offset2; this->setNodesUndefined(startix1, endix1, startix2, endix2, startix3, endix3, bcMatrix); } - if (block->hasInterpolationFlagFC(DIR_MMM)) { + if (block->hasInterpolationFlagFC(dMMM)) { int startix1 = minX1; int endix1 = minX1 + offset2; int startix2 = minX2; @@ -635,10 +635,10 @@ void SetUndefinedNodesBlockVisitor::visit(SPtr<Grid3D> grid, SPtr<Block3D> block // invert scaleCF blocks if (block->hasInterpolationFlagCF()) { if (block->hasInterpolationFlagFC() && twoTypeOfConnectorsCheck) { - for (int i = (int)DIR_P00; i <= (int)DIR_MMM; i++) { + for (int i = (int)dP00; i <= (int)dMMM; i++) { UBLOG(logINFO, "FC in dir=" << i << " " << block->hasInterpolationFlagFC(i)); } - for (int i = (int)DIR_P00; i <= (int)DIR_MMM; i++) { + for (int i = (int)dP00; i <= (int)dMMM; i++) { UBLOG(logINFO, "CF in dir=" << i << " " << block->hasInterpolationFlagCF(i)); } throw UbException(UB_EXARGS, "block " + block->toString() + " has CF and FC"); diff --git a/src/cpu/VirtualFluidsCore/Visitors/SetUndefinedNodesBlockVisitor.h b/src/cpu/core/Visitors/SetUndefinedNodesBlockVisitor.h similarity index 100% rename from src/cpu/VirtualFluidsCore/Visitors/SetUndefinedNodesBlockVisitor.h rename to src/cpu/core/Visitors/SetUndefinedNodesBlockVisitor.h diff --git a/src/cpu/VirtualFluidsCore/Visitors/SpongeLayerBlockVisitor.cpp b/src/cpu/core/Visitors/SpongeLayerBlockVisitor.cpp similarity index 96% rename from src/cpu/VirtualFluidsCore/Visitors/SpongeLayerBlockVisitor.cpp rename to src/cpu/core/Visitors/SpongeLayerBlockVisitor.cpp index 520c7cfa30f582438b188643d8f913fd6ce2bd0b..01bb35cd52b78231a82651575006d7682afbdda5 100644 --- a/src/cpu/VirtualFluidsCore/Visitors/SpongeLayerBlockVisitor.cpp +++ b/src/cpu/core/Visitors/SpongeLayerBlockVisitor.cpp @@ -75,22 +75,22 @@ void SpongeLayerBlockVisitor::visit(SPtr<Grid3D> grid, SPtr<Block3D> block) real newCollFactor; - if (dir == DIR_P00) { + if (dir == dP00) { int ibX1 = block->getX1(); int ibMax = val<1>(ixMax) - val<1>(ixMin) + 1; real index = (real)(ibX1 - val<1>(ixMin) + 1); newCollFactor = oldCollFactor - (oldCollFactor - c1o1) / (real)(ibMax)*index; - } else if (dir == DIR_M00) { + } else if (dir == dM00) { int ibX1 = block->getX1(); int ibMax = val<1>(ixMax) - val<1>(ixMin) + 1; real index = (real)(ibX1 - val<1>(ixMin) + 1); newCollFactor = (oldCollFactor - c1o1) / (real)(ibMax)*index; - } else if (dir == DIR_00P) { + } else if (dir == d00P) { int ibX3 = block->getX3(); int ibMax = val<3>(ixMax) - val<3>(ixMin) + 1; real index = (real)(ibX3 - val<3>(ixMin) + 1); newCollFactor = oldCollFactor - (oldCollFactor - c1o1) / (real)(ibMax)*index; - } else if (dir == DIR_00M) { + } else if (dir == d00M) { int ibX3 = block->getX3(); int ibMax = val<3>(ixMax) - val<3>(ixMin) + 1; real index = (real)(ibX3 - val<3>(ixMin) + 1); diff --git a/src/cpu/VirtualFluidsCore/Visitors/SpongeLayerBlockVisitor.h b/src/cpu/core/Visitors/SpongeLayerBlockVisitor.h similarity index 100% rename from src/cpu/VirtualFluidsCore/Visitors/SpongeLayerBlockVisitor.h rename to src/cpu/core/Visitors/SpongeLayerBlockVisitor.h diff --git a/src/cpu/VirtualFluidsCore/Visitors/ViscosityBlockVisitor.cpp b/src/cpu/core/Visitors/ViscosityBlockVisitor.cpp similarity index 100% rename from src/cpu/VirtualFluidsCore/Visitors/ViscosityBlockVisitor.cpp rename to src/cpu/core/Visitors/ViscosityBlockVisitor.cpp diff --git a/src/cpu/VirtualFluidsCore/Visitors/ViscosityBlockVisitor.h b/src/cpu/core/Visitors/ViscosityBlockVisitor.h similarity index 100% rename from src/cpu/VirtualFluidsCore/Visitors/ViscosityBlockVisitor.h rename to src/cpu/core/Visitors/ViscosityBlockVisitor.h diff --git a/src/cpu/VirtualFluidsCore/Visitors/ZoltanPartitioningGridVisitor.cpp b/src/cpu/core/Visitors/ZoltanPartitioningGridVisitor.cpp similarity index 100% rename from src/cpu/VirtualFluidsCore/Visitors/ZoltanPartitioningGridVisitor.cpp rename to src/cpu/core/Visitors/ZoltanPartitioningGridVisitor.cpp diff --git a/src/cpu/VirtualFluidsCore/Visitors/ZoltanPartitioningGridVisitor.h b/src/cpu/core/Visitors/ZoltanPartitioningGridVisitor.h similarity index 100% rename from src/cpu/VirtualFluidsCore/Visitors/ZoltanPartitioningGridVisitor.h rename to src/cpu/core/Visitors/ZoltanPartitioningGridVisitor.h diff --git a/src/cpu/simulationconfig/CMakeLists.txt b/src/cpu/simulationconfig/CMakeLists.txt index 255c83dfc2bff125e15f67e98080a76017abe6e9..9fb244cbb3943a60950d1fff21947bc93cf3648b 100644 --- a/src/cpu/simulationconfig/CMakeLists.txt +++ b/src/cpu/simulationconfig/CMakeLists.txt @@ -1,5 +1,5 @@ -vf_add_library(PUBLIC_LINK VirtualFluidsCore basics muparser lbm) +vf_add_library(PUBLIC_LINK cpu_core basics muparser lbm) set_target_properties(simulationconfig PROPERTIES POSITION_INDEPENDENT_CODE ON) diff --git a/src/cpu/simulationconfig/Simulation.cpp b/src/cpu/simulationconfig/Simulation.cpp index 4b7d52286995ed9b5eadd5827d586b49e9f222a4..35fca4a47253c2ff50b93ea341409792a4b7f6a0 100644 --- a/src/cpu/simulationconfig/Simulation.cpp +++ b/src/cpu/simulationconfig/Simulation.cpp @@ -118,7 +118,7 @@ void CPUSimulation::run() auto metisVisitor = std::make_shared<MetisPartitioningGridVisitor>(communicator, MetisPartitioningGridVisitor::LevelBased, - vf::lbm::dir::DIR_00M, MetisPartitioner::RECURSIVE); + vf::lbm::dir::d00M, MetisPartitioner::RECURSIVE); InteractorsHelper intHelper(grid, metisVisitor); for (auto const &interactor : interactors) diff --git a/src/gpu/GridGenerator/grid/BoundaryConditions/Side.h b/src/gpu/GridGenerator/grid/BoundaryConditions/Side.h index 624b3722a1c909ba26063b49565779b924d34adc..c4232335a071a34e63292e240139d7bf84bdf28b 100644 --- a/src/gpu/GridGenerator/grid/BoundaryConditions/Side.h +++ b/src/gpu/GridGenerator/grid/BoundaryConditions/Side.h @@ -106,9 +106,9 @@ protected: { SideType::MZ, { 0.0, 0.0, NEGATIVE_DIR } }, { SideType::PZ, { 0.0, 0.0, POSITIVE_DIR } } }; const std::map<SideType, size_t> sideToD3Q27 = { - { SideType::MX, vf::lbm::dir::DIR_M00 }, { SideType::PX, vf::lbm::dir::DIR_P00 }, - { SideType::MY, vf::lbm::dir::DIR_0M0 }, { SideType::PY, vf::lbm::dir::DIR_0P0 }, - { SideType::MZ, vf::lbm::dir::DIR_00M }, { SideType::PZ, vf::lbm::dir::DIR_00P } + { SideType::MX, vf::lbm::dir::dM00 }, { SideType::PX, vf::lbm::dir::dP00 }, + { SideType::MY, vf::lbm::dir::d0M0 }, { SideType::PY, vf::lbm::dir::d0P0 }, + { SideType::MZ, vf::lbm::dir::d00M }, { SideType::PZ, vf::lbm::dir::d00P } }; }; diff --git a/src/gpu/GridGenerator/grid/BoundaryConditions/SideTest.cpp b/src/gpu/GridGenerator/grid/BoundaryConditions/SideTest.cpp index 36a286a8766db4af7e109eb3f8d47add401779f9..31a7edea02d5282cb109f907e10006952e5c4ef5 100644 --- a/src/gpu/GridGenerator/grid/BoundaryConditions/SideTest.cpp +++ b/src/gpu/GridGenerator/grid/BoundaryConditions/SideTest.cpp @@ -134,9 +134,9 @@ TEST_F(SideTestBC, setQs2D_whenSettingPX_setAllQsNormalToBC) auto actualQs = bc->getQs()[0]; std::vector<real> expectedQs(11, -1); - expectedQs[DIR_P00] = 0.5; - expectedQs[DIR_PP0] = 0.5; - expectedQs[DIR_PM0] = 0.5; + expectedQs[dP00] = 0.5; + expectedQs[dPP0] = 0.5; + expectedQs[dPM0] = 0.5; EXPECT_THAT(actualQs, testing::Eq(expectedQs)); } @@ -151,8 +151,8 @@ TEST_F(SideTestBC, setQs2D_givenPYhasBeenSet_thenSetPX_doNotSetSameQsAgain) auto actualQs = bc->getQs()[0]; std::vector<real> expectedQs(11, -1); - expectedQs[DIR_P00] = 0.5; - expectedQs[DIR_PM0] = 0.5; + expectedQs[dP00] = 0.5; + expectedQs[dPM0] = 0.5; EXPECT_THAT(actualQs, testing::Eq(expectedQs)); } @@ -167,15 +167,15 @@ TEST_F(SideTestBC, setQs3D_givenMXhasBeenSet_thenSetPX_setAllQsNormalToPX) auto actualQs = bc->getQs()[0]; std::vector<real> expectedQs(27, -1); - expectedQs[DIR_P00] = 0.5; - expectedQs[DIR_PP0] = 0.5; - expectedQs[DIR_PM0] = 0.5; - expectedQs[DIR_P0P] = 0.5; - expectedQs[DIR_P0M] = 0.5; - expectedQs[DIR_PPP] = 0.5; - expectedQs[DIR_PMP] = 0.5; - expectedQs[DIR_PPM] = 0.5; - expectedQs[DIR_PMM] = 0.5; + expectedQs[dP00] = 0.5; + expectedQs[dPP0] = 0.5; + expectedQs[dPM0] = 0.5; + expectedQs[dP0P] = 0.5; + expectedQs[dP0M] = 0.5; + expectedQs[dPPP] = 0.5; + expectedQs[dPMP] = 0.5; + expectedQs[dPPM] = 0.5; + expectedQs[dPMM] = 0.5; EXPECT_THAT(actualQs, testing::Eq(expectedQs)); // node already has BC in MX direction, but this does not change anything @@ -205,15 +205,15 @@ TEST_F(SideTestBC, setQs3D_whenSettingPX_setAllQsNormalToBC) auto actualQs = bc->getQs()[0]; std::vector<real> expectedQs(27, -1); - expectedQs[DIR_P00] = 0.5; - expectedQs[DIR_PP0] = 0.5; - expectedQs[DIR_PM0] = 0.5; - expectedQs[DIR_P0P] = 0.5; - expectedQs[DIR_P0M] = 0.5; - expectedQs[DIR_PPP] = 0.5; - expectedQs[DIR_PMP] = 0.5; - expectedQs[DIR_PPM] = 0.5; - expectedQs[DIR_PMM] = 0.5; + expectedQs[dP00] = 0.5; + expectedQs[dPP0] = 0.5; + expectedQs[dPM0] = 0.5; + expectedQs[dP0P] = 0.5; + expectedQs[dP0M] = 0.5; + expectedQs[dPPP] = 0.5; + expectedQs[dPMP] = 0.5; + expectedQs[dPPM] = 0.5; + expectedQs[dPMM] = 0.5; EXPECT_THAT(actualQs, testing::Eq(expectedQs)); } @@ -227,12 +227,12 @@ TEST_F(SideTestBC, setQs3D_givenPYhasBeenSet_thenSetPX_doNotSetSameQsAgain) auto actualQs = bc->getQs()[0]; std::vector<real> expectedQs(27, -1); - expectedQs[DIR_P00] = 0.5; - expectedQs[DIR_PM0] = 0.5; - expectedQs[DIR_P0P] = 0.5; - expectedQs[DIR_P0M] = 0.5; - expectedQs[DIR_PMP] = 0.5; - expectedQs[DIR_PMM] = 0.5; + expectedQs[dP00] = 0.5; + expectedQs[dPM0] = 0.5; + expectedQs[dP0P] = 0.5; + expectedQs[dP0M] = 0.5; + expectedQs[dPMP] = 0.5; + expectedQs[dPMM] = 0.5; EXPECT_THAT(actualQs, testing::Eq(expectedQs)); } @@ -246,12 +246,12 @@ TEST_F(SideTestBC, setQs3D_givenMYhasBeenSet_thenSetPX_doNotSetSameQsAgain) auto actualQs = bc->getQs()[0]; std::vector<real> expectedQs(27, -1); - expectedQs[DIR_P00] = 0.5; - expectedQs[DIR_PP0] = 0.5; - expectedQs[DIR_P0P] = 0.5; - expectedQs[DIR_P0M] = 0.5; - expectedQs[DIR_PPP] = 0.5; - expectedQs[DIR_PPM] = 0.5; + expectedQs[dP00] = 0.5; + expectedQs[dPP0] = 0.5; + expectedQs[dP0P] = 0.5; + expectedQs[dP0M] = 0.5; + expectedQs[dPPP] = 0.5; + expectedQs[dPPM] = 0.5; EXPECT_THAT(actualQs, testing::Eq(expectedQs)); } @@ -265,12 +265,12 @@ TEST_F(SideTestBC, setQs3D_givenPZhasBeenSet_thenSetPX_doNotSetSameQsAgain) auto actualQs = bc->getQs()[0]; std::vector<real> expectedQs(27, -1); - expectedQs[DIR_P00] = 0.5; - expectedQs[DIR_PP0] = 0.5; - expectedQs[DIR_PM0] = 0.5; - expectedQs[DIR_P0M] = 0.5; - expectedQs[DIR_PPM] = 0.5; - expectedQs[DIR_PMM] = 0.5; + expectedQs[dP00] = 0.5; + expectedQs[dPP0] = 0.5; + expectedQs[dPM0] = 0.5; + expectedQs[dP0M] = 0.5; + expectedQs[dPPM] = 0.5; + expectedQs[dPMM] = 0.5; EXPECT_THAT(actualQs, testing::Eq(expectedQs)); } @@ -284,12 +284,12 @@ TEST_F(SideTestBC, setQs3D_givenMZhasBeenSet_thenSetPX_doNotSetSameQsAgain) auto actualQs = bc->getQs()[0]; std::vector<real> expectedQs(27, -1); - expectedQs[DIR_P00] = 0.5; - expectedQs[DIR_PP0] = 0.5; - expectedQs[DIR_PM0] = 0.5; - expectedQs[DIR_P0P] = 0.5; - expectedQs[DIR_PPP] = 0.5; - expectedQs[DIR_PMP] = 0.5; + expectedQs[dP00] = 0.5; + expectedQs[dPP0] = 0.5; + expectedQs[dPM0] = 0.5; + expectedQs[dP0P] = 0.5; + expectedQs[dPPP] = 0.5; + expectedQs[dPMP] = 0.5; EXPECT_THAT(actualQs, testing::Eq(expectedQs)); } @@ -304,10 +304,10 @@ TEST_F(SideTestBC, setQs3D_givenPYandMZhaveBeenSet_thenSetPX_doNotSetSameQsAgain auto actualQs = bc->getQs()[0]; std::vector<real> expectedQsForTwoPreviousBCs(27, -1); - expectedQsForTwoPreviousBCs[DIR_P00] = 0.5; - expectedQsForTwoPreviousBCs[DIR_PM0] = 0.5; - expectedQsForTwoPreviousBCs[DIR_P0P] = 0.5; - expectedQsForTwoPreviousBCs[DIR_PMP] = 0.5; + expectedQsForTwoPreviousBCs[dP00] = 0.5; + expectedQsForTwoPreviousBCs[dPM0] = 0.5; + expectedQsForTwoPreviousBCs[dP0P] = 0.5; + expectedQsForTwoPreviousBCs[dPMP] = 0.5; EXPECT_THAT(actualQs, testing::Eq(expectedQsForTwoPreviousBCs)); } @@ -322,10 +322,10 @@ TEST_F(SideTestBC, setQs3D_givenPYandPZhaveBeenSet_thenSetPX_doNotSetSameQsAgain auto actualQs = bc->getQs()[0]; std::vector<real> expectedQsForTwoPreviousBCs(27, -1); - expectedQsForTwoPreviousBCs[DIR_P00] = 0.5; - expectedQsForTwoPreviousBCs[DIR_PM0] = 0.5; - expectedQsForTwoPreviousBCs[DIR_P0M] = 0.5; - expectedQsForTwoPreviousBCs[DIR_PMM] = 0.5; + expectedQsForTwoPreviousBCs[dP00] = 0.5; + expectedQsForTwoPreviousBCs[dPM0] = 0.5; + expectedQsForTwoPreviousBCs[dP0M] = 0.5; + expectedQsForTwoPreviousBCs[dPMM] = 0.5; EXPECT_THAT(actualQs, testing::Eq(expectedQsForTwoPreviousBCs)); } @@ -340,10 +340,10 @@ TEST_F(SideTestBC, setQs3D_givenMYandPZhaveBeenSet_thenSetPX_doNotSetSameQsAgain auto actualQs = bc->getQs()[0]; std::vector<real> expectedQsForTwoPreviousBCs(27, -1); - expectedQsForTwoPreviousBCs[DIR_P00] = 0.5; - expectedQsForTwoPreviousBCs[DIR_PP0] = 0.5; - expectedQsForTwoPreviousBCs[DIR_P0M] = 0.5; - expectedQsForTwoPreviousBCs[DIR_PPM] = 0.5; + expectedQsForTwoPreviousBCs[dP00] = 0.5; + expectedQsForTwoPreviousBCs[dPP0] = 0.5; + expectedQsForTwoPreviousBCs[dP0M] = 0.5; + expectedQsForTwoPreviousBCs[dPPM] = 0.5; EXPECT_THAT(actualQs, testing::Eq(expectedQsForTwoPreviousBCs)); } @@ -358,10 +358,10 @@ TEST_F(SideTestBC, setQs3D_givenMYandMZhaveBeenSet_thenSetPX_doNotSetSameQsAgain auto actualQs = bc->getQs()[0]; std::vector<real> expectedQsForTwoPreviousBCs(27, -1); - expectedQsForTwoPreviousBCs[DIR_P00] = 0.5; - expectedQsForTwoPreviousBCs[DIR_PP0] = 0.5; - expectedQsForTwoPreviousBCs[DIR_P0P] = 0.5; - expectedQsForTwoPreviousBCs[DIR_PPP] = 0.5; + expectedQsForTwoPreviousBCs[dP00] = 0.5; + expectedQsForTwoPreviousBCs[dPP0] = 0.5; + expectedQsForTwoPreviousBCs[dP0P] = 0.5; + expectedQsForTwoPreviousBCs[dPPP] = 0.5; EXPECT_THAT(actualQs, testing::Eq(expectedQsForTwoPreviousBCs)); } @@ -374,15 +374,15 @@ TEST_F(SideTestBC, setQs3D_whenSettingMX_setAllQsNormalToBC) auto actualQs = bc->getQs()[0]; std::vector<real> expectedQs(27, -1); - expectedQs[DIR_M00] = 0.5; - expectedQs[DIR_MP0] = 0.5; - expectedQs[DIR_MM0] = 0.5; - expectedQs[DIR_M0P] = 0.5; - expectedQs[DIR_M0M] = 0.5; - expectedQs[DIR_MPP] = 0.5; - expectedQs[DIR_MMP] = 0.5; - expectedQs[DIR_MPM] = 0.5; - expectedQs[DIR_MMM] = 0.5; + expectedQs[dM00] = 0.5; + expectedQs[dMP0] = 0.5; + expectedQs[dMM0] = 0.5; + expectedQs[dM0P] = 0.5; + expectedQs[dM0M] = 0.5; + expectedQs[dMPP] = 0.5; + expectedQs[dMMP] = 0.5; + expectedQs[dMPM] = 0.5; + expectedQs[dMMM] = 0.5; EXPECT_THAT(actualQs, testing::Eq(expectedQs)); } @@ -396,12 +396,12 @@ TEST_F(SideTestBC, setQs3D_givenPYhasBeenSet_thenSetMX_doNotSetSameQsAgain) auto actualQs = bc->getQs()[0]; std::vector<real> expectedQs(27, -1); - expectedQs[DIR_M00] = 0.5; - expectedQs[DIR_MM0] = 0.5; - expectedQs[DIR_M0P] = 0.5; - expectedQs[DIR_M0M] = 0.5; - expectedQs[DIR_MMP] = 0.5; - expectedQs[DIR_MMM] = 0.5; + expectedQs[dM00] = 0.5; + expectedQs[dMM0] = 0.5; + expectedQs[dM0P] = 0.5; + expectedQs[dM0M] = 0.5; + expectedQs[dMMP] = 0.5; + expectedQs[dMMM] = 0.5; EXPECT_THAT(actualQs, testing::Eq(expectedQs)); } @@ -415,12 +415,12 @@ TEST_F(SideTestBC, setQs3D_givenMYhasBeenSet_thenSetMX_doNotSetSameQsAgain) auto actualQs = bc->getQs()[0]; std::vector<real> expectedQs(27, -1); - expectedQs[DIR_M00] = 0.5; - expectedQs[DIR_MP0] = 0.5; - expectedQs[DIR_M0P] = 0.5; - expectedQs[DIR_M0M] = 0.5; - expectedQs[DIR_MPP] = 0.5; - expectedQs[DIR_MPM] = 0.5; + expectedQs[dM00] = 0.5; + expectedQs[dMP0] = 0.5; + expectedQs[dM0P] = 0.5; + expectedQs[dM0M] = 0.5; + expectedQs[dMPP] = 0.5; + expectedQs[dMPM] = 0.5; EXPECT_THAT(actualQs, testing::Eq(expectedQs)); } @@ -434,12 +434,12 @@ TEST_F(SideTestBC, setQs3D_givenPZhasBeenSet_thenSetMX_doNotSetSameQsAgain) auto actualQs = bc->getQs()[0]; std::vector<real> expectedQs(27, -1); - expectedQs[DIR_M00] = 0.5; - expectedQs[DIR_MP0] = 0.5; - expectedQs[DIR_MM0] = 0.5; - expectedQs[DIR_M0M] = 0.5; - expectedQs[DIR_MPM] = 0.5; - expectedQs[DIR_MMM] = 0.5; + expectedQs[dM00] = 0.5; + expectedQs[dMP0] = 0.5; + expectedQs[dMM0] = 0.5; + expectedQs[dM0M] = 0.5; + expectedQs[dMPM] = 0.5; + expectedQs[dMMM] = 0.5; EXPECT_THAT(actualQs, testing::Eq(expectedQs)); } @@ -453,12 +453,12 @@ TEST_F(SideTestBC, setQs3D_givenMZhasBeenSet_thenSetMX_doNotSetSameQsAgain) auto actualQs = bc->getQs()[0]; std::vector<real> expectedQs(27, -1); - expectedQs[DIR_M00] = 0.5; - expectedQs[DIR_MP0] = 0.5; - expectedQs[DIR_MM0] = 0.5; - expectedQs[DIR_M0P] = 0.5; - expectedQs[DIR_MPP] = 0.5; - expectedQs[DIR_MMP] = 0.5; + expectedQs[dM00] = 0.5; + expectedQs[dMP0] = 0.5; + expectedQs[dMM0] = 0.5; + expectedQs[dM0P] = 0.5; + expectedQs[dMPP] = 0.5; + expectedQs[dMMP] = 0.5; EXPECT_THAT(actualQs, testing::Eq(expectedQs)); } @@ -473,10 +473,10 @@ TEST_F(SideTestBC, setQs3D_givenPYandMZhaveBeenSet_thenSetMX_doNotSetSameQsAgain auto actualQs = bc->getQs()[0]; std::vector<real> expectedQsForTwoPreviousBCs(27, -1); - expectedQsForTwoPreviousBCs[DIR_M00] = 0.5; - expectedQsForTwoPreviousBCs[DIR_MM0] = 0.5; - expectedQsForTwoPreviousBCs[DIR_M0P] = 0.5; - expectedQsForTwoPreviousBCs[DIR_MMP] = 0.5; + expectedQsForTwoPreviousBCs[dM00] = 0.5; + expectedQsForTwoPreviousBCs[dMM0] = 0.5; + expectedQsForTwoPreviousBCs[dM0P] = 0.5; + expectedQsForTwoPreviousBCs[dMMP] = 0.5; EXPECT_THAT(actualQs, testing::Eq(expectedQsForTwoPreviousBCs)); } @@ -491,10 +491,10 @@ TEST_F(SideTestBC, setQs3D_givenPYandPZhaveBeenSet_thenSetMX_doNotSetSameQsAgain auto actualQs = bc->getQs()[0]; std::vector<real> expectedQsForTwoPreviousBCs(27, -1); - expectedQsForTwoPreviousBCs[DIR_M00] = 0.5; - expectedQsForTwoPreviousBCs[DIR_MM0] = 0.5; - expectedQsForTwoPreviousBCs[DIR_M0M] = 0.5; - expectedQsForTwoPreviousBCs[DIR_MMM] = 0.5; + expectedQsForTwoPreviousBCs[dM00] = 0.5; + expectedQsForTwoPreviousBCs[dMM0] = 0.5; + expectedQsForTwoPreviousBCs[dM0M] = 0.5; + expectedQsForTwoPreviousBCs[dMMM] = 0.5; EXPECT_THAT(actualQs, testing::Eq(expectedQsForTwoPreviousBCs)); } @@ -509,10 +509,10 @@ TEST_F(SideTestBC, setQs3D_givenMYandPZhaveBeenSet_thenSetMX_doNotSetSameQsAgain auto actualQs = bc->getQs()[0]; std::vector<real> expectedQsForTwoPreviousBCs(27, -1); - expectedQsForTwoPreviousBCs[DIR_M00] = 0.5; - expectedQsForTwoPreviousBCs[DIR_MP0] = 0.5; - expectedQsForTwoPreviousBCs[DIR_M0M] = 0.5; - expectedQsForTwoPreviousBCs[DIR_MPM] = 0.5; + expectedQsForTwoPreviousBCs[dM00] = 0.5; + expectedQsForTwoPreviousBCs[dMP0] = 0.5; + expectedQsForTwoPreviousBCs[dM0M] = 0.5; + expectedQsForTwoPreviousBCs[dMPM] = 0.5; EXPECT_THAT(actualQs, testing::Eq(expectedQsForTwoPreviousBCs)); } @@ -527,10 +527,10 @@ TEST_F(SideTestBC, setQs3D_givenMYandMZhaveBeenSet_thenSetMX_doNotSetSameQsAgain auto actualQs = bc->getQs()[0]; std::vector<real> expectedQsForTwoPreviousBCs(27, -1); - expectedQsForTwoPreviousBCs[DIR_M00] = 0.5; - expectedQsForTwoPreviousBCs[DIR_MP0] = 0.5; - expectedQsForTwoPreviousBCs[DIR_M0P] = 0.5; - expectedQsForTwoPreviousBCs[DIR_MPP] = 0.5; + expectedQsForTwoPreviousBCs[dM00] = 0.5; + expectedQsForTwoPreviousBCs[dMP0] = 0.5; + expectedQsForTwoPreviousBCs[dM0P] = 0.5; + expectedQsForTwoPreviousBCs[dMPP] = 0.5; EXPECT_THAT(actualQs, testing::Eq(expectedQsForTwoPreviousBCs)); } @@ -543,15 +543,15 @@ TEST_F(SideTestBC, setQs3D_whenSettingMZ_setAllQsNormalToBC) auto actualQs = bc->getQs()[0]; std::vector<real> expectedQs(27, -1); - expectedQs[DIR_00M] = 0.5; - expectedQs[DIR_P0M] = 0.5; - expectedQs[DIR_M0M] = 0.5; - expectedQs[DIR_0PM] = 0.5; - expectedQs[DIR_0MM] = 0.5; - expectedQs[DIR_PPM] = 0.5; - expectedQs[DIR_MPM] = 0.5; - expectedQs[DIR_PMM] = 0.5; - expectedQs[DIR_MMM] = 0.5; + expectedQs[d00M] = 0.5; + expectedQs[dP0M] = 0.5; + expectedQs[dM0M] = 0.5; + expectedQs[d0PM] = 0.5; + expectedQs[d0MM] = 0.5; + expectedQs[dPPM] = 0.5; + expectedQs[dMPM] = 0.5; + expectedQs[dPMM] = 0.5; + expectedQs[dMMM] = 0.5; EXPECT_THAT(actualQs, testing::Eq(expectedQs)); } @@ -565,12 +565,12 @@ TEST_F(SideTestBC, setQs3D_givenMYhasBeenSet_thenSetMZ_doNotSetSameQsAgain) auto actualQs = bc->getQs()[0]; std::vector<real> expectedQs(27, -1); - expectedQs[DIR_00M] = 0.5; - expectedQs[DIR_P0M] = 0.5; - expectedQs[DIR_M0M] = 0.5; - expectedQs[DIR_0PM] = 0.5; - expectedQs[DIR_PPM] = 0.5; - expectedQs[DIR_MPM] = 0.5; + expectedQs[d00M] = 0.5; + expectedQs[dP0M] = 0.5; + expectedQs[dM0M] = 0.5; + expectedQs[d0PM] = 0.5; + expectedQs[dPPM] = 0.5; + expectedQs[dMPM] = 0.5; EXPECT_THAT(actualQs, testing::Eq(expectedQs)); } @@ -584,12 +584,12 @@ TEST_F(SideTestBC, setQs3D_givenPYhasBeenSet_thenSetMZ_doNotSetSameQsAgain) auto actualQs = bc->getQs()[0]; std::vector<real> expectedQs(27, -1); - expectedQs[DIR_00M] = 0.5; - expectedQs[DIR_P0M] = 0.5; - expectedQs[DIR_M0M] = 0.5; - expectedQs[DIR_0MM] = 0.5; - expectedQs[DIR_PMM] = 0.5; - expectedQs[DIR_MMM] = 0.5; + expectedQs[d00M] = 0.5; + expectedQs[dP0M] = 0.5; + expectedQs[dM0M] = 0.5; + expectedQs[d0MM] = 0.5; + expectedQs[dPMM] = 0.5; + expectedQs[dMMM] = 0.5; EXPECT_THAT(actualQs, testing::Eq(expectedQs)); } @@ -603,12 +603,12 @@ TEST_F(SideTestBC, setQs3D_givenPXhasBeenSet_thenSetMZ_doNotSetSameQsAgain) auto actualQs = bc->getQs()[0]; std::vector<real> expectedQs(27, -1); - expectedQs[DIR_00M] = 0.5; - expectedQs[DIR_M0M] = 0.5; - expectedQs[DIR_0PM] = 0.5; - expectedQs[DIR_0MM] = 0.5; - expectedQs[DIR_MPM] = 0.5; - expectedQs[DIR_MMM] = 0.5; + expectedQs[d00M] = 0.5; + expectedQs[dM0M] = 0.5; + expectedQs[d0PM] = 0.5; + expectedQs[d0MM] = 0.5; + expectedQs[dMPM] = 0.5; + expectedQs[dMMM] = 0.5; EXPECT_THAT(actualQs, testing::Eq(expectedQs)); } @@ -622,12 +622,12 @@ TEST_F(SideTestBC, setQs3D_givenMXhasBeenSet_thenSetMZ_doNotSetSameQsAgain) auto actualQs = bc->getQs()[0]; std::vector<real> expectedQs(27, -1); - expectedQs[DIR_00M] = 0.5; - expectedQs[DIR_P0M] = 0.5; - expectedQs[DIR_0PM] = 0.5; - expectedQs[DIR_0MM] = 0.5; - expectedQs[DIR_PPM] = 0.5; - expectedQs[DIR_PMM] = 0.5; + expectedQs[d00M] = 0.5; + expectedQs[dP0M] = 0.5; + expectedQs[d0PM] = 0.5; + expectedQs[d0MM] = 0.5; + expectedQs[dPPM] = 0.5; + expectedQs[dPMM] = 0.5; EXPECT_THAT(actualQs, testing::Eq(expectedQs)); } @@ -642,10 +642,10 @@ TEST_F(SideTestBC, setQs3D_givenMYandPXhaveBeenSet_thenSetMZ_doNotSetSameQsAgain auto actualQs = bc->getQs()[0]; std::vector<real> expectedQsForTwoPreviousBCs(27, -1); - expectedQsForTwoPreviousBCs[DIR_00M] = 0.5; - expectedQsForTwoPreviousBCs[DIR_M0M] = 0.5; - expectedQsForTwoPreviousBCs[DIR_0PM] = 0.5; - expectedQsForTwoPreviousBCs[DIR_MPM] = 0.5; + expectedQsForTwoPreviousBCs[d00M] = 0.5; + expectedQsForTwoPreviousBCs[dM0M] = 0.5; + expectedQsForTwoPreviousBCs[d0PM] = 0.5; + expectedQsForTwoPreviousBCs[dMPM] = 0.5; EXPECT_THAT(actualQs, testing::Eq(expectedQsForTwoPreviousBCs)); } @@ -660,10 +660,10 @@ TEST_F(SideTestBC, setQs3D_givenMYandMXhaveBeenSet_thenSetMZ_doNotSetSameQsAgain auto actualQs = bc->getQs()[0]; std::vector<real> expectedQsForTwoPreviousBCs(27, -1); - expectedQsForTwoPreviousBCs[DIR_00M] = 0.5; - expectedQsForTwoPreviousBCs[DIR_P0M] = 0.5; - expectedQsForTwoPreviousBCs[DIR_0PM] = 0.5; - expectedQsForTwoPreviousBCs[DIR_PPM] = 0.5; + expectedQsForTwoPreviousBCs[d00M] = 0.5; + expectedQsForTwoPreviousBCs[dP0M] = 0.5; + expectedQsForTwoPreviousBCs[d0PM] = 0.5; + expectedQsForTwoPreviousBCs[dPPM] = 0.5; EXPECT_THAT(actualQs, testing::Eq(expectedQsForTwoPreviousBCs)); } @@ -678,10 +678,10 @@ TEST_F(SideTestBC, setQs3D_givenPYandPXhaveBeenSet_thenSetMZ_doNotSetSameQsAgain auto actualQs = bc->getQs()[0]; std::vector<real> expectedQsForTwoPreviousBCs(27, -1); - expectedQsForTwoPreviousBCs[DIR_00M] = 0.5; - expectedQsForTwoPreviousBCs[DIR_M0M] = 0.5; - expectedQsForTwoPreviousBCs[DIR_0MM] = 0.5; - expectedQsForTwoPreviousBCs[DIR_MMM] = 0.5; + expectedQsForTwoPreviousBCs[d00M] = 0.5; + expectedQsForTwoPreviousBCs[dM0M] = 0.5; + expectedQsForTwoPreviousBCs[d0MM] = 0.5; + expectedQsForTwoPreviousBCs[dMMM] = 0.5; EXPECT_THAT(actualQs, testing::Eq(expectedQsForTwoPreviousBCs)); } @@ -696,10 +696,10 @@ TEST_F(SideTestBC, setQs3D_givenPYandMXhaveBeenSet_thenSetMZ_doNotSetSameQsAgain auto actualQs = bc->getQs()[0]; std::vector<real> expectedQsForTwoPreviousBCs(27, -1); - expectedQsForTwoPreviousBCs[DIR_00M] = 0.5; - expectedQsForTwoPreviousBCs[DIR_P0M] = 0.5; - expectedQsForTwoPreviousBCs[DIR_0MM] = 0.5; - expectedQsForTwoPreviousBCs[DIR_PMM] = 0.5; + expectedQsForTwoPreviousBCs[d00M] = 0.5; + expectedQsForTwoPreviousBCs[dP0M] = 0.5; + expectedQsForTwoPreviousBCs[d0MM] = 0.5; + expectedQsForTwoPreviousBCs[dPMM] = 0.5; EXPECT_THAT(actualQs, testing::Eq(expectedQsForTwoPreviousBCs)); } @@ -712,15 +712,15 @@ TEST_F(SideTestBC, setQs3D_whenSettingPZ_setAllQsNormalToBC) auto actualQs = bc->getQs()[0]; std::vector<real> expectedQs(27, -1); - expectedQs[DIR_00P] = 0.5; - expectedQs[DIR_P0P] = 0.5; - expectedQs[DIR_M0P] = 0.5; - expectedQs[DIR_0PP] = 0.5; - expectedQs[DIR_0MP] = 0.5; - expectedQs[DIR_PPP] = 0.5; - expectedQs[DIR_MPP] = 0.5; - expectedQs[DIR_PMP] = 0.5; - expectedQs[DIR_MMP] = 0.5; + expectedQs[d00P] = 0.5; + expectedQs[dP0P] = 0.5; + expectedQs[dM0P] = 0.5; + expectedQs[d0PP] = 0.5; + expectedQs[d0MP] = 0.5; + expectedQs[dPPP] = 0.5; + expectedQs[dMPP] = 0.5; + expectedQs[dPMP] = 0.5; + expectedQs[dMMP] = 0.5; EXPECT_THAT(actualQs, testing::Eq(expectedQs)); } @@ -734,12 +734,12 @@ TEST_F(SideTestBC, setQs3D_givenMYhasBeenSet_thenSetPZ_doNotSetSameQsAgain) auto actualQs = bc->getQs()[0]; std::vector<real> expectedQs(27, -1); - expectedQs[DIR_00P] = 0.5; - expectedQs[DIR_P0P] = 0.5; - expectedQs[DIR_M0P] = 0.5; - expectedQs[DIR_0PP] = 0.5; - expectedQs[DIR_PPP] = 0.5; - expectedQs[DIR_MPP] = 0.5; + expectedQs[d00P] = 0.5; + expectedQs[dP0P] = 0.5; + expectedQs[dM0P] = 0.5; + expectedQs[d0PP] = 0.5; + expectedQs[dPPP] = 0.5; + expectedQs[dMPP] = 0.5; EXPECT_THAT(actualQs, testing::Eq(expectedQs)); } @@ -753,12 +753,12 @@ TEST_F(SideTestBC, setQs3D_givenPYhasBeenSet_thenSetPZ_doNotSetSameQsAgain) auto actualQs = bc->getQs()[0]; std::vector<real> expectedQs(27, -1); - expectedQs[DIR_00P] = 0.5; - expectedQs[DIR_P0P] = 0.5; - expectedQs[DIR_M0P] = 0.5; - expectedQs[DIR_0MP] = 0.5; - expectedQs[DIR_PMP] = 0.5; - expectedQs[DIR_MMP] = 0.5; + expectedQs[d00P] = 0.5; + expectedQs[dP0P] = 0.5; + expectedQs[dM0P] = 0.5; + expectedQs[d0MP] = 0.5; + expectedQs[dPMP] = 0.5; + expectedQs[dMMP] = 0.5; EXPECT_THAT(actualQs, testing::Eq(expectedQs)); } @@ -772,12 +772,12 @@ TEST_F(SideTestBC, setQs3D_givenPXhasBeenSet_thenSetPZ_doNotSetSameQsAgain) auto actualQs = bc->getQs()[0]; std::vector<real> expectedQs(27, -1); - expectedQs[DIR_00P] = 0.5; - expectedQs[DIR_M0P] = 0.5; - expectedQs[DIR_0PP] = 0.5; - expectedQs[DIR_0MP] = 0.5; - expectedQs[DIR_MPP] = 0.5; - expectedQs[DIR_MMP] = 0.5; + expectedQs[d00P] = 0.5; + expectedQs[dM0P] = 0.5; + expectedQs[d0PP] = 0.5; + expectedQs[d0MP] = 0.5; + expectedQs[dMPP] = 0.5; + expectedQs[dMMP] = 0.5; EXPECT_THAT(actualQs, testing::Eq(expectedQs)); } @@ -791,12 +791,12 @@ TEST_F(SideTestBC, setQs3D_givenMXhasBeenSet_thenSetPZ_doNotSetSameQsAgain) auto actualQs = bc->getQs()[0]; std::vector<real> expectedQs(27, -1); - expectedQs[DIR_00P] = 0.5; - expectedQs[DIR_P0P] = 0.5; - expectedQs[DIR_0PP] = 0.5; - expectedQs[DIR_0MP] = 0.5; - expectedQs[DIR_PPP] = 0.5; - expectedQs[DIR_PMP] = 0.5; + expectedQs[d00P] = 0.5; + expectedQs[dP0P] = 0.5; + expectedQs[d0PP] = 0.5; + expectedQs[d0MP] = 0.5; + expectedQs[dPPP] = 0.5; + expectedQs[dPMP] = 0.5; EXPECT_THAT(actualQs, testing::Eq(expectedQs)); } @@ -811,10 +811,10 @@ TEST_F(SideTestBC, setQs3D_givenMYandPXhaveBeenSet_thenSetPZ_doNotSetSameQsAgain auto actualQs = bc->getQs()[0]; std::vector<real> expectedQsForTwoPreviousBCs(27, -1); - expectedQsForTwoPreviousBCs[DIR_00P] = 0.5; - expectedQsForTwoPreviousBCs[DIR_M0P] = 0.5; - expectedQsForTwoPreviousBCs[DIR_0PP] = 0.5; - expectedQsForTwoPreviousBCs[DIR_MPP] = 0.5; + expectedQsForTwoPreviousBCs[d00P] = 0.5; + expectedQsForTwoPreviousBCs[dM0P] = 0.5; + expectedQsForTwoPreviousBCs[d0PP] = 0.5; + expectedQsForTwoPreviousBCs[dMPP] = 0.5; EXPECT_THAT(actualQs, testing::Eq(expectedQsForTwoPreviousBCs)); } @@ -829,10 +829,10 @@ TEST_F(SideTestBC, setQs3D_givenMYandMXhaveBeenSet_thenSetPZ_doNotSetSameQsAgain auto actualQs = bc->getQs()[0]; std::vector<real> expectedQsForTwoPreviousBCs(27, -1); - expectedQsForTwoPreviousBCs[DIR_00P] = 0.5; - expectedQsForTwoPreviousBCs[DIR_P0P] = 0.5; - expectedQsForTwoPreviousBCs[DIR_0PP] = 0.5; - expectedQsForTwoPreviousBCs[DIR_PPP] = 0.5; + expectedQsForTwoPreviousBCs[d00P] = 0.5; + expectedQsForTwoPreviousBCs[dP0P] = 0.5; + expectedQsForTwoPreviousBCs[d0PP] = 0.5; + expectedQsForTwoPreviousBCs[dPPP] = 0.5; EXPECT_THAT(actualQs, testing::Eq(expectedQsForTwoPreviousBCs)); } @@ -847,10 +847,10 @@ TEST_F(SideTestBC, setQs3D_givenPYandPXhaveBeenSet_thenSetPZ_doNotSetSameQsAgain auto actualQs = bc->getQs()[0]; std::vector<real> expectedQsForTwoPreviousBCs(27, -1); - expectedQsForTwoPreviousBCs[DIR_00P] = 0.5; - expectedQsForTwoPreviousBCs[DIR_M0P] = 0.5; - expectedQsForTwoPreviousBCs[DIR_0MP] = 0.5; - expectedQsForTwoPreviousBCs[DIR_MMP] = 0.5; + expectedQsForTwoPreviousBCs[d00P] = 0.5; + expectedQsForTwoPreviousBCs[dM0P] = 0.5; + expectedQsForTwoPreviousBCs[d0MP] = 0.5; + expectedQsForTwoPreviousBCs[dMMP] = 0.5; EXPECT_THAT(actualQs, testing::Eq(expectedQsForTwoPreviousBCs)); } @@ -865,9 +865,9 @@ TEST_F(SideTestBC, setQs3D_givenPYandMXhaveBeenSet_thenSetPZ_doNotSetSameQsAgain auto actualQs = bc->getQs()[0]; std::vector<real> expectedQsForTwoPreviousBCs(27, -1); - expectedQsForTwoPreviousBCs[DIR_00P] = 0.5; - expectedQsForTwoPreviousBCs[DIR_P0P] = 0.5; - expectedQsForTwoPreviousBCs[DIR_0MP] = 0.5; - expectedQsForTwoPreviousBCs[DIR_PMP] = 0.5; + expectedQsForTwoPreviousBCs[d00P] = 0.5; + expectedQsForTwoPreviousBCs[dP0P] = 0.5; + expectedQsForTwoPreviousBCs[d0MP] = 0.5; + expectedQsForTwoPreviousBCs[dPMP] = 0.5; EXPECT_THAT(actualQs, testing::Eq(expectedQsForTwoPreviousBCs)); } diff --git a/src/gpu/GridGenerator/grid/GridInterface.cpp b/src/gpu/GridGenerator/grid/GridInterface.cpp index 53613bf4ab34f6e9d2e843c61431cc0a2e7be154..7a0e1cf4a0cd7a8a87982f38056a601a4a41cba7 100644 --- a/src/gpu/GridGenerator/grid/GridInterface.cpp +++ b/src/gpu/GridGenerator/grid/GridInterface.cpp @@ -460,7 +460,7 @@ uint GridInterface::findOffsetBaseToNested(const uint& indexOnCoarseGrid, GridIm Cell cell(x, y, z, coarseGrid->getDelta()); if( coarseGrid->cellContainsOnly( cell, FLUID, FLUID_CFC ) ){ - this->bn.offset[ interfaceIndex ] = dir::DIR_000; + this->bn.offset[ interfaceIndex ] = dir::d000; return indexOnCoarseGrid; } @@ -495,7 +495,7 @@ uint GridInterface::findOffsetNestedToBase(const uint& indexOnFineGrid, GridImp* Cell cell(x, y, z, fineGrid->getDelta()); if( fineGrid->cellContainsOnly( cell, FLUID, FLUID_FCF ) ){ - this->nb.offset[ interfaceIndex ] = dir::DIR_000; + this->nb.offset[ interfaceIndex ] = dir::d000; return indexOnFineGrid; } diff --git a/src/gpu/GridGenerator/grid/distributions/Distribution.cpp b/src/gpu/GridGenerator/grid/distributions/Distribution.cpp index 31d2e2f8a927e7141d80a55f4164dfcb0f52a8e0..d21ec338dabc4207ddbb6d83b8b63b8d2facd689 100644 --- a/src/gpu/GridGenerator/grid/distributions/Distribution.cpp +++ b/src/gpu/GridGenerator/grid/distributions/Distribution.cpp @@ -49,148 +49,148 @@ Distribution DistributionHelper::getDistribution27() d27.dirs.resize((ENDDIR + 1) * DIMENSION); d27.directions.resize(ENDDIR + 1); - d27.directions[DIR_P00] = Direction(DIR_27_E_X, DIR_27_E_Y, DIR_27_E_Z); - d27.directions[DIR_M00] = Direction(DIR_27_W_X, DIR_27_W_Y, DIR_27_W_Z); - d27.directions[DIR_0P0] = Direction(DIR_27_N_X, DIR_27_N_Y, DIR_27_N_Z); - d27.directions[DIR_0M0] = Direction(DIR_27_S_X, DIR_27_S_Y, DIR_27_S_Z); - d27.directions[DIR_00P] = Direction(DIR_27_T_X, DIR_27_T_Y, DIR_27_T_Z); - d27.directions[DIR_00M] = Direction(DIR_27_B_X, DIR_27_B_Y, DIR_27_B_Z); - - d27.directions[DIR_PP0] = Direction(DIR_27_NE_X, DIR_27_NE_Y, DIR_27_NE_Z); - d27.directions[DIR_MM0] = Direction(DIR_27_SW_X, DIR_27_SW_Y, DIR_27_SW_Z); - d27.directions[DIR_PM0] = Direction(DIR_27_SE_X, DIR_27_SE_Y, DIR_27_SE_Z); - d27.directions[DIR_MP0] = Direction(DIR_27_NW_X, DIR_27_NW_Y, DIR_27_NW_Z); - - d27.directions[DIR_P0P] = Direction(DIR_27_TE_X, DIR_27_TE_Y, DIR_27_TE_Z); - d27.directions[DIR_M0M] = Direction(DIR_27_BW_X, DIR_27_BW_Y, DIR_27_BW_Z); - d27.directions[DIR_P0M] = Direction(DIR_27_BE_X, DIR_27_BE_Y, DIR_27_BE_Z); - d27.directions[DIR_M0P] = Direction(DIR_27_TW_X, DIR_27_TW_Y, DIR_27_TW_Z); - - d27.directions[DIR_0PP] = Direction(DIR_27_TN_X, DIR_27_TN_Y, DIR_27_TN_Z); - d27.directions[DIR_0MM] = Direction(DIR_27_BS_X, DIR_27_BS_Y, DIR_27_BS_Z); - d27.directions[DIR_0PM] = Direction(DIR_27_BN_X, DIR_27_BN_Y, DIR_27_BN_Z); - d27.directions[DIR_0MP] = Direction(DIR_27_TS_X, DIR_27_TS_Y, DIR_27_TS_Z); - - d27.directions[DIR_000] = Direction(DIR_27_REST_X, DIR_27_REST_Y, DIR_27_REST_Z); - - d27.directions[DIR_PPP] = Direction(DIR_27_TNE_X, DIR_27_TNE_Y, DIR_27_TNE_Z); - d27.directions[DIR_MPP] = Direction(DIR_27_TNW_X, DIR_27_TNW_Y, DIR_27_TNW_Z); - d27.directions[DIR_PMP] = Direction(DIR_27_TSE_X, DIR_27_TSE_Y, DIR_27_TSE_Z); - d27.directions[DIR_MMP] = Direction(DIR_27_TSW_X, DIR_27_TSW_Y, DIR_27_TSW_Z); - - d27.directions[DIR_PPM] = Direction(DIR_27_BNE_X, DIR_27_BNE_Y, DIR_27_BNE_Z); - d27.directions[DIR_MPM]= Direction(DIR_27_BNW_X, DIR_27_BNW_Y, DIR_27_BNW_Z); - d27.directions[DIR_PMM]= Direction(DIR_27_BSE_X, DIR_27_BSE_Y, DIR_27_BSE_Z); - d27.directions[DIR_MMM] = Direction(DIR_27_BSW_X, DIR_27_BSW_Y, DIR_27_BSW_Z); - - - d27.dirs[DIR_P00 * 3 ] = DIR_27_E_X; - d27.dirs[DIR_P00 * 3 + 1] = DIR_27_E_Y; - d27.dirs[DIR_P00 * 3 + 2] = DIR_27_E_Z; - - d27.dirs[DIR_M00 * 3 ] = DIR_27_W_X; - d27.dirs[DIR_M00 * 3 + 1] = DIR_27_W_Y; - d27.dirs[DIR_M00 * 3 + 2] = DIR_27_W_Z; + d27.directions[dP00] = Direction(DIR_27_E_X, DIR_27_E_Y, DIR_27_E_Z); + d27.directions[dM00] = Direction(DIR_27_W_X, DIR_27_W_Y, DIR_27_W_Z); + d27.directions[d0P0] = Direction(DIR_27_N_X, DIR_27_N_Y, DIR_27_N_Z); + d27.directions[d0M0] = Direction(DIR_27_S_X, DIR_27_S_Y, DIR_27_S_Z); + d27.directions[d00P] = Direction(DIR_27_T_X, DIR_27_T_Y, DIR_27_T_Z); + d27.directions[d00M] = Direction(DIR_27_B_X, DIR_27_B_Y, DIR_27_B_Z); + + d27.directions[dPP0] = Direction(DIR_27_NE_X, DIR_27_NE_Y, DIR_27_NE_Z); + d27.directions[dMM0] = Direction(DIR_27_SW_X, DIR_27_SW_Y, DIR_27_SW_Z); + d27.directions[dPM0] = Direction(DIR_27_SE_X, DIR_27_SE_Y, DIR_27_SE_Z); + d27.directions[dMP0] = Direction(DIR_27_NW_X, DIR_27_NW_Y, DIR_27_NW_Z); + + d27.directions[dP0P] = Direction(DIR_27_TE_X, DIR_27_TE_Y, DIR_27_TE_Z); + d27.directions[dM0M] = Direction(DIR_27_BW_X, DIR_27_BW_Y, DIR_27_BW_Z); + d27.directions[dP0M] = Direction(DIR_27_BE_X, DIR_27_BE_Y, DIR_27_BE_Z); + d27.directions[dM0P] = Direction(DIR_27_TW_X, DIR_27_TW_Y, DIR_27_TW_Z); + + d27.directions[d0PP] = Direction(DIR_27_TN_X, DIR_27_TN_Y, DIR_27_TN_Z); + d27.directions[d0MM] = Direction(DIR_27_BS_X, DIR_27_BS_Y, DIR_27_BS_Z); + d27.directions[d0PM] = Direction(DIR_27_BN_X, DIR_27_BN_Y, DIR_27_BN_Z); + d27.directions[d0MP] = Direction(DIR_27_TS_X, DIR_27_TS_Y, DIR_27_TS_Z); + + d27.directions[d000] = Direction(DIR_27_REST_X, DIR_27_REST_Y, DIR_27_REST_Z); + + d27.directions[dPPP] = Direction(DIR_27_TNE_X, DIR_27_TNE_Y, DIR_27_TNE_Z); + d27.directions[dMPP] = Direction(DIR_27_TNW_X, DIR_27_TNW_Y, DIR_27_TNW_Z); + d27.directions[dPMP] = Direction(DIR_27_TSE_X, DIR_27_TSE_Y, DIR_27_TSE_Z); + d27.directions[dMMP] = Direction(DIR_27_TSW_X, DIR_27_TSW_Y, DIR_27_TSW_Z); + + d27.directions[dPPM] = Direction(DIR_27_BNE_X, DIR_27_BNE_Y, DIR_27_BNE_Z); + d27.directions[dMPM]= Direction(DIR_27_BNW_X, DIR_27_BNW_Y, DIR_27_BNW_Z); + d27.directions[dPMM]= Direction(DIR_27_BSE_X, DIR_27_BSE_Y, DIR_27_BSE_Z); + d27.directions[dMMM] = Direction(DIR_27_BSW_X, DIR_27_BSW_Y, DIR_27_BSW_Z); + + + d27.dirs[dP00 * 3 ] = DIR_27_E_X; + d27.dirs[dP00 * 3 + 1] = DIR_27_E_Y; + d27.dirs[dP00 * 3 + 2] = DIR_27_E_Z; + + d27.dirs[dM00 * 3 ] = DIR_27_W_X; + d27.dirs[dM00 * 3 + 1] = DIR_27_W_Y; + d27.dirs[dM00 * 3 + 2] = DIR_27_W_Z; - d27.dirs[DIR_0P0 * 3 ] = DIR_27_N_X; - d27.dirs[DIR_0P0 * 3 + 1] = DIR_27_N_Y; - d27.dirs[DIR_0P0 * 3 + 2] = DIR_27_N_Z; + d27.dirs[d0P0 * 3 ] = DIR_27_N_X; + d27.dirs[d0P0 * 3 + 1] = DIR_27_N_Y; + d27.dirs[d0P0 * 3 + 2] = DIR_27_N_Z; - d27.dirs[DIR_0M0 * 3 ] = DIR_27_S_X; - d27.dirs[DIR_0M0 * 3 + 1] = DIR_27_S_Y; - d27.dirs[DIR_0M0 * 3 + 2] = DIR_27_S_Z; + d27.dirs[d0M0 * 3 ] = DIR_27_S_X; + d27.dirs[d0M0 * 3 + 1] = DIR_27_S_Y; + d27.dirs[d0M0 * 3 + 2] = DIR_27_S_Z; - d27.dirs[DIR_00P * 3 ] = DIR_27_T_X; - d27.dirs[DIR_00P * 3 + 1] = DIR_27_T_Y; - d27.dirs[DIR_00P * 3 + 2] = DIR_27_T_Z; + d27.dirs[d00P * 3 ] = DIR_27_T_X; + d27.dirs[d00P * 3 + 1] = DIR_27_T_Y; + d27.dirs[d00P * 3 + 2] = DIR_27_T_Z; - d27.dirs[DIR_00M * 3 ] = DIR_27_B_X; - d27.dirs[DIR_00M * 3 + 1] = DIR_27_B_Y; - d27.dirs[DIR_00M * 3 + 2] = DIR_27_B_Z; + d27.dirs[d00M * 3 ] = DIR_27_B_X; + d27.dirs[d00M * 3 + 1] = DIR_27_B_Y; + d27.dirs[d00M * 3 + 2] = DIR_27_B_Z; - d27.dirs[DIR_PP0 * 3 ] = DIR_27_NE_X; - d27.dirs[DIR_PP0 * 3 + 1] = DIR_27_NE_Y; - d27.dirs[DIR_PP0 * 3 + 2] = DIR_27_NE_Z; + d27.dirs[dPP0 * 3 ] = DIR_27_NE_X; + d27.dirs[dPP0 * 3 + 1] = DIR_27_NE_Y; + d27.dirs[dPP0 * 3 + 2] = DIR_27_NE_Z; - d27.dirs[DIR_MM0 * 3 ] = DIR_27_SW_X; - d27.dirs[DIR_MM0 * 3 + 1] = DIR_27_SW_Y; - d27.dirs[DIR_MM0 * 3 + 2] = DIR_27_SW_Z; + d27.dirs[dMM0 * 3 ] = DIR_27_SW_X; + d27.dirs[dMM0 * 3 + 1] = DIR_27_SW_Y; + d27.dirs[dMM0 * 3 + 2] = DIR_27_SW_Z; - d27.dirs[DIR_PM0 * 3 ] = DIR_27_SE_X; - d27.dirs[DIR_PM0 * 3 + 1] = DIR_27_SE_Y; - d27.dirs[DIR_PM0 * 3 + 2] = DIR_27_SE_Z; + d27.dirs[dPM0 * 3 ] = DIR_27_SE_X; + d27.dirs[dPM0 * 3 + 1] = DIR_27_SE_Y; + d27.dirs[dPM0 * 3 + 2] = DIR_27_SE_Z; - d27.dirs[DIR_MP0 * 3 ] = DIR_27_NW_X; - d27.dirs[DIR_MP0 * 3 + 1] = DIR_27_NW_Y; - d27.dirs[DIR_MP0 * 3 + 2] = DIR_27_NW_Z; + d27.dirs[dMP0 * 3 ] = DIR_27_NW_X; + d27.dirs[dMP0 * 3 + 1] = DIR_27_NW_Y; + d27.dirs[dMP0 * 3 + 2] = DIR_27_NW_Z; - d27.dirs[DIR_P0P * 3 ] = DIR_27_TE_X; - d27.dirs[DIR_P0P * 3 + 1] = DIR_27_TE_Y; - d27.dirs[DIR_P0P * 3 + 2] = DIR_27_TE_Z; + d27.dirs[dP0P * 3 ] = DIR_27_TE_X; + d27.dirs[dP0P * 3 + 1] = DIR_27_TE_Y; + d27.dirs[dP0P * 3 + 2] = DIR_27_TE_Z; - d27.dirs[DIR_M0M * 3 ] = DIR_27_BW_X; - d27.dirs[DIR_M0M * 3 + 1] = DIR_27_BW_Y; - d27.dirs[DIR_M0M * 3 + 2] = DIR_27_BW_Z; + d27.dirs[dM0M * 3 ] = DIR_27_BW_X; + d27.dirs[dM0M * 3 + 1] = DIR_27_BW_Y; + d27.dirs[dM0M * 3 + 2] = DIR_27_BW_Z; - d27.dirs[DIR_P0M * 3 ] = DIR_27_BE_X; - d27.dirs[DIR_P0M * 3 + 1] = DIR_27_BE_Y; - d27.dirs[DIR_P0M * 3 + 2] = DIR_27_BE_Z; + d27.dirs[dP0M * 3 ] = DIR_27_BE_X; + d27.dirs[dP0M * 3 + 1] = DIR_27_BE_Y; + d27.dirs[dP0M * 3 + 2] = DIR_27_BE_Z; - d27.dirs[DIR_M0P * 3 ] = DIR_27_TW_X; - d27.dirs[DIR_M0P * 3 + 1] = DIR_27_TW_Y; - d27.dirs[DIR_M0P * 3 + 2] = DIR_27_TW_Z; + d27.dirs[dM0P * 3 ] = DIR_27_TW_X; + d27.dirs[dM0P * 3 + 1] = DIR_27_TW_Y; + d27.dirs[dM0P * 3 + 2] = DIR_27_TW_Z; - d27.dirs[DIR_0PP * 3 ] = DIR_27_TN_X; - d27.dirs[DIR_0PP * 3 + 1] = DIR_27_TN_Y; - d27.dirs[DIR_0PP * 3 + 2] = DIR_27_TN_Z; + d27.dirs[d0PP * 3 ] = DIR_27_TN_X; + d27.dirs[d0PP * 3 + 1] = DIR_27_TN_Y; + d27.dirs[d0PP * 3 + 2] = DIR_27_TN_Z; - d27.dirs[DIR_0MM * 3 ] = DIR_27_BS_X; - d27.dirs[DIR_0MM * 3 + 1] = DIR_27_BS_Y; - d27.dirs[DIR_0MM * 3 + 2] = DIR_27_BS_Z; + d27.dirs[d0MM * 3 ] = DIR_27_BS_X; + d27.dirs[d0MM * 3 + 1] = DIR_27_BS_Y; + d27.dirs[d0MM * 3 + 2] = DIR_27_BS_Z; - d27.dirs[DIR_0PM * 3 ] = DIR_27_BN_X; - d27.dirs[DIR_0PM * 3 + 1] = DIR_27_BN_Y; - d27.dirs[DIR_0PM * 3 + 2] = DIR_27_BN_Z; + d27.dirs[d0PM * 3 ] = DIR_27_BN_X; + d27.dirs[d0PM * 3 + 1] = DIR_27_BN_Y; + d27.dirs[d0PM * 3 + 2] = DIR_27_BN_Z; - d27.dirs[DIR_0MP * 3 ] = DIR_27_TS_X; - d27.dirs[DIR_0MP * 3 + 1] = DIR_27_TS_Y; - d27.dirs[DIR_0MP * 3 + 2] = DIR_27_TS_Z; + d27.dirs[d0MP * 3 ] = DIR_27_TS_X; + d27.dirs[d0MP * 3 + 1] = DIR_27_TS_Y; + d27.dirs[d0MP * 3 + 2] = DIR_27_TS_Z; - d27.dirs[DIR_000 * 3 ] = DIR_27_REST_X; // - d27.dirs[DIR_000 * 3 + 1] = DIR_27_REST_Y; // ZERO ELEMENT - d27.dirs[DIR_000 * 3 + 2] = DIR_27_REST_Z; // + d27.dirs[d000 * 3 ] = DIR_27_REST_X; // + d27.dirs[d000 * 3 + 1] = DIR_27_REST_Y; // ZERO ELEMENT + d27.dirs[d000 * 3 + 2] = DIR_27_REST_Z; // - d27.dirs[DIR_PPP * 3 ] = DIR_27_TNE_X; - d27.dirs[DIR_PPP * 3 + 1] = DIR_27_TNE_Y; - d27.dirs[DIR_PPP * 3 + 2] = DIR_27_TNE_Z; + d27.dirs[dPPP * 3 ] = DIR_27_TNE_X; + d27.dirs[dPPP * 3 + 1] = DIR_27_TNE_Y; + d27.dirs[dPPP * 3 + 2] = DIR_27_TNE_Z; - d27.dirs[DIR_PPM * 3 ] = DIR_27_BNE_X; - d27.dirs[DIR_PPM * 3 + 1] = DIR_27_BNE_Y; - d27.dirs[DIR_PPM * 3 + 2] = DIR_27_BNE_Z; + d27.dirs[dPPM * 3 ] = DIR_27_BNE_X; + d27.dirs[dPPM * 3 + 1] = DIR_27_BNE_Y; + d27.dirs[dPPM * 3 + 2] = DIR_27_BNE_Z; - d27.dirs[DIR_PMP * 3 ] = DIR_27_TSE_X; - d27.dirs[DIR_PMP * 3 + 1] = DIR_27_TSE_Y; - d27.dirs[DIR_PMP * 3 + 2] = DIR_27_TSE_Z; + d27.dirs[dPMP * 3 ] = DIR_27_TSE_X; + d27.dirs[dPMP * 3 + 1] = DIR_27_TSE_Y; + d27.dirs[dPMP * 3 + 2] = DIR_27_TSE_Z; - d27.dirs[DIR_PMM * 3 ] = DIR_27_BSE_X; - d27.dirs[DIR_PMM * 3 + 1] = DIR_27_BSE_Y; - d27.dirs[DIR_PMM * 3 + 2] = DIR_27_BSE_Z; + d27.dirs[dPMM * 3 ] = DIR_27_BSE_X; + d27.dirs[dPMM * 3 + 1] = DIR_27_BSE_Y; + d27.dirs[dPMM * 3 + 2] = DIR_27_BSE_Z; - d27.dirs[DIR_MPP * 3 ] = DIR_27_TNW_X; - d27.dirs[DIR_MPP * 3 + 1] = DIR_27_TNW_Y; - d27.dirs[DIR_MPP * 3 + 2] = DIR_27_TNW_Z; + d27.dirs[dMPP * 3 ] = DIR_27_TNW_X; + d27.dirs[dMPP * 3 + 1] = DIR_27_TNW_Y; + d27.dirs[dMPP * 3 + 2] = DIR_27_TNW_Z; - d27.dirs[DIR_MPM * 3 ] = DIR_27_BNW_X; - d27.dirs[DIR_MPM * 3 + 1] = DIR_27_BNW_Y; - d27.dirs[DIR_MPM * 3 + 2] = DIR_27_BNW_Z; + d27.dirs[dMPM * 3 ] = DIR_27_BNW_X; + d27.dirs[dMPM * 3 + 1] = DIR_27_BNW_Y; + d27.dirs[dMPM * 3 + 2] = DIR_27_BNW_Z; - d27.dirs[DIR_MMP * 3 ] = DIR_27_TSW_X; - d27.dirs[DIR_MMP * 3 + 1] = DIR_27_TSW_Y; - d27.dirs[DIR_MMP * 3 + 2] = DIR_27_TSW_Z; + d27.dirs[dMMP * 3 ] = DIR_27_TSW_X; + d27.dirs[dMMP * 3 + 1] = DIR_27_TSW_Y; + d27.dirs[dMMP * 3 + 2] = DIR_27_TSW_Z; - d27.dirs[DIR_MMM * 3 ] = DIR_27_BSW_X; - d27.dirs[DIR_MMM * 3 + 1] = DIR_27_BSW_Y; - d27.dirs[DIR_MMM * 3 + 2] = DIR_27_BSW_Z; + d27.dirs[dMMM * 3 ] = DIR_27_BSW_X; + d27.dirs[dMMM * 3 + 1] = DIR_27_BSW_Y; + d27.dirs[dMMM * 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 index 3a9dd1d33ec4e1567b7b85e99970a5245ebbb06d..4ea6e345fe5fbdef05e386002f35d47f34703a9b 100644 --- a/src/gpu/GridGenerator/grid/distributions/DistributionTest.cpp +++ b/src/gpu/GridGenerator/grid/distributions/DistributionTest.cpp @@ -10,52 +10,52 @@ TEST(DistributionTest, DistributionReturnsCorrectDirections) { Distribution dist = DistributionHelper::getDistribution27(); - EXPECT_THAT(dist.directions[DIR_P00][0], testing::Eq(DIR_27_E_X)); - EXPECT_THAT(dist.directions[DIR_P00][1], testing::Eq(DIR_27_E_Y)); - EXPECT_THAT(dist.directions[DIR_P00][2], testing::Eq(DIR_27_E_Z)); - EXPECT_THAT(dist.dirs[DIR_P00 * 3 ], testing::Eq(DIR_27_E_X)); - EXPECT_THAT(dist.dirs[DIR_P00 * 3 + 1], testing::Eq(DIR_27_E_Y)); - EXPECT_THAT(dist.dirs[DIR_P00 * 3 + 2], testing::Eq(DIR_27_E_Z)); - - EXPECT_THAT(dist.directions[DIR_00M][0], testing::Eq(DIR_27_B_X)); - EXPECT_THAT(dist.directions[DIR_00M][1], testing::Eq(DIR_27_B_Y)); - EXPECT_THAT(dist.directions[DIR_00M][2], testing::Eq(DIR_27_B_Z)); - EXPECT_THAT(dist.dirs[DIR_00M * 3 ], testing::Eq(DIR_27_B_X)); - EXPECT_THAT(dist.dirs[DIR_00M * 3 + 1], testing::Eq(DIR_27_B_Y)); - EXPECT_THAT(dist.dirs[DIR_00M * 3 + 2], testing::Eq(DIR_27_B_Z)); + EXPECT_THAT(dist.directions[dP00][0], testing::Eq(DIR_27_E_X)); + EXPECT_THAT(dist.directions[dP00][1], testing::Eq(DIR_27_E_Y)); + EXPECT_THAT(dist.directions[dP00][2], testing::Eq(DIR_27_E_Z)); + EXPECT_THAT(dist.dirs[dP00 * 3 ], testing::Eq(DIR_27_E_X)); + EXPECT_THAT(dist.dirs[dP00 * 3 + 1], testing::Eq(DIR_27_E_Y)); + EXPECT_THAT(dist.dirs[dP00 * 3 + 2], testing::Eq(DIR_27_E_Z)); + + EXPECT_THAT(dist.directions[d00M][0], testing::Eq(DIR_27_B_X)); + EXPECT_THAT(dist.directions[d00M][1], testing::Eq(DIR_27_B_Y)); + EXPECT_THAT(dist.directions[d00M][2], testing::Eq(DIR_27_B_Z)); + EXPECT_THAT(dist.dirs[d00M * 3 ], testing::Eq(DIR_27_B_X)); + EXPECT_THAT(dist.dirs[d00M * 3 + 1], testing::Eq(DIR_27_B_Y)); + EXPECT_THAT(dist.dirs[d00M * 3 + 2], testing::Eq(DIR_27_B_Z)); - EXPECT_THAT(dist.directions[DIR_000][0], testing::Eq(0)); - EXPECT_THAT(dist.directions[DIR_000][1], testing::Eq(0)); - EXPECT_THAT(dist.directions[DIR_000][2], testing::Eq(0)); - EXPECT_THAT(dist.dirs[DIR_000 * 3 ], testing::Eq(0)); - EXPECT_THAT(dist.dirs[DIR_000 * 3 + 1], testing::Eq(0)); - EXPECT_THAT(dist.dirs[DIR_000 * 3 + 2], testing::Eq(0)); - - EXPECT_THAT(dist.directions[DIR_PP0][0], testing::Eq(DIR_27_NE_X)); - EXPECT_THAT(dist.directions[DIR_PP0][1], testing::Eq(DIR_27_NE_Y)); - EXPECT_THAT(dist.directions[DIR_PP0][2], testing::Eq(DIR_27_NE_Z)); - EXPECT_THAT(dist.dirs[DIR_PP0 * 3 ], testing::Eq(DIR_27_NE_X)); - EXPECT_THAT(dist.dirs[DIR_PP0 * 3 + 1], testing::Eq(DIR_27_NE_Y)); - EXPECT_THAT(dist.dirs[DIR_PP0 * 3 + 2], testing::Eq(DIR_27_NE_Z)); - - EXPECT_THAT(dist.directions[DIR_0MP][0], testing::Eq(DIR_27_TS_X)); - EXPECT_THAT(dist.directions[DIR_0MP][1], testing::Eq(DIR_27_TS_Y)); - EXPECT_THAT(dist.directions[DIR_0MP][2], testing::Eq(DIR_27_TS_Z)); - EXPECT_THAT(dist.dirs[DIR_0MP * 3 ], testing::Eq(DIR_27_TS_X)); - EXPECT_THAT(dist.dirs[DIR_0MP * 3 + 1], testing::Eq(DIR_27_TS_Y)); - EXPECT_THAT(dist.dirs[DIR_0MP * 3 + 2], testing::Eq(DIR_27_TS_Z)); - - EXPECT_THAT(dist.directions[DIR_PPP][0], testing::Eq(DIR_27_TNE_X)); - EXPECT_THAT(dist.directions[DIR_PPP][1], testing::Eq(DIR_27_TNE_Y)); - EXPECT_THAT(dist.directions[DIR_PPP][2], testing::Eq(DIR_27_TNE_Z)); - EXPECT_THAT(dist.dirs[DIR_PPP * 3 ], testing::Eq(DIR_27_TNE_X)); - EXPECT_THAT(dist.dirs[DIR_PPP * 3 + 1], testing::Eq(DIR_27_TNE_Y)); - EXPECT_THAT(dist.dirs[DIR_PPP * 3 + 2], testing::Eq(DIR_27_TNE_Z)); - - EXPECT_THAT(dist.directions[DIR_MMM][0], testing::Eq(DIR_27_BSW_X)); - EXPECT_THAT(dist.directions[DIR_MMM][1], testing::Eq(DIR_27_BSW_Y)); - EXPECT_THAT(dist.directions[DIR_MMM][2], testing::Eq(DIR_27_BSW_Z)); - EXPECT_THAT(dist.dirs[DIR_MMM * 3 ], testing::Eq(DIR_27_BSW_X)); - EXPECT_THAT(dist.dirs[DIR_MMM * 3 + 1], testing::Eq(DIR_27_BSW_Y)); - EXPECT_THAT(dist.dirs[DIR_MMM * 3 + 2], testing::Eq(DIR_27_BSW_Z)); + EXPECT_THAT(dist.directions[d000][0], testing::Eq(0)); + EXPECT_THAT(dist.directions[d000][1], testing::Eq(0)); + EXPECT_THAT(dist.directions[d000][2], testing::Eq(0)); + EXPECT_THAT(dist.dirs[d000 * 3 ], testing::Eq(0)); + EXPECT_THAT(dist.dirs[d000 * 3 + 1], testing::Eq(0)); + EXPECT_THAT(dist.dirs[d000 * 3 + 2], testing::Eq(0)); + + EXPECT_THAT(dist.directions[dPP0][0], testing::Eq(DIR_27_NE_X)); + EXPECT_THAT(dist.directions[dPP0][1], testing::Eq(DIR_27_NE_Y)); + EXPECT_THAT(dist.directions[dPP0][2], testing::Eq(DIR_27_NE_Z)); + EXPECT_THAT(dist.dirs[dPP0 * 3 ], testing::Eq(DIR_27_NE_X)); + EXPECT_THAT(dist.dirs[dPP0 * 3 + 1], testing::Eq(DIR_27_NE_Y)); + EXPECT_THAT(dist.dirs[dPP0 * 3 + 2], testing::Eq(DIR_27_NE_Z)); + + EXPECT_THAT(dist.directions[d0MP][0], testing::Eq(DIR_27_TS_X)); + EXPECT_THAT(dist.directions[d0MP][1], testing::Eq(DIR_27_TS_Y)); + EXPECT_THAT(dist.directions[d0MP][2], testing::Eq(DIR_27_TS_Z)); + EXPECT_THAT(dist.dirs[d0MP * 3 ], testing::Eq(DIR_27_TS_X)); + EXPECT_THAT(dist.dirs[d0MP * 3 + 1], testing::Eq(DIR_27_TS_Y)); + EXPECT_THAT(dist.dirs[d0MP * 3 + 2], testing::Eq(DIR_27_TS_Z)); + + EXPECT_THAT(dist.directions[dPPP][0], testing::Eq(DIR_27_TNE_X)); + EXPECT_THAT(dist.directions[dPPP][1], testing::Eq(DIR_27_TNE_Y)); + EXPECT_THAT(dist.directions[dPPP][2], testing::Eq(DIR_27_TNE_Z)); + EXPECT_THAT(dist.dirs[dPPP * 3 ], testing::Eq(DIR_27_TNE_X)); + EXPECT_THAT(dist.dirs[dPPP * 3 + 1], testing::Eq(DIR_27_TNE_Y)); + EXPECT_THAT(dist.dirs[dPPP * 3 + 2], testing::Eq(DIR_27_TNE_Z)); + + EXPECT_THAT(dist.directions[dMMM][0], testing::Eq(DIR_27_BSW_X)); + EXPECT_THAT(dist.directions[dMMM][1], testing::Eq(DIR_27_BSW_Y)); + EXPECT_THAT(dist.directions[dMMM][2], testing::Eq(DIR_27_BSW_Z)); + EXPECT_THAT(dist.dirs[dMMM * 3 ], testing::Eq(DIR_27_BSW_X)); + EXPECT_THAT(dist.dirs[dMMM * 3 + 1], testing::Eq(DIR_27_BSW_Y)); + EXPECT_THAT(dist.dirs[dMMM * 3 + 2], testing::Eq(DIR_27_BSW_Z)); } \ No newline at end of file diff --git a/src/gpu/VirtualFluids_GPU/GPU/AdvectionDiffusionBCs27.cu b/src/gpu/VirtualFluids_GPU/GPU/AdvectionDiffusionBCs27.cu deleted file mode 100644 index 278d01e149aeb6de5241f5c84463e4e80d360512..0000000000000000000000000000000000000000 --- a/src/gpu/VirtualFluids_GPU/GPU/AdvectionDiffusionBCs27.cu +++ /dev/null @@ -1,7147 +0,0 @@ -/* Device code */ -#include "LBM/LB.h" -#include "lbm/constants/D3Q27.h" - -#include <basics/constants/NumericConstants.h> - -using namespace vf::basics::constant; -using namespace vf::lbm::dir; - -////////////////////////////////////////////////////////////////////////////// -__global__ void QADPress7( real* DD, - real* DD7, - real* temp, - real* velo, - real diffusivity, - int* k_Q, - real* QQ, - unsigned int numberOfBCnodes, - real om1, - unsigned int* neighborX, - unsigned int* neighborY, - unsigned int* neighborZ, - unsigned long long numberOfLBnodes, - bool isEvenTimestep) -{ - Distributions27 D; - if (isEvenTimestep==true) - { - D.f[DIR_P00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_M00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_PMP * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_MPM * numberOfLBnodes]; - } - else - { - D.f[DIR_M00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_P00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_MPM * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_PMP * numberOfLBnodes]; - } - - Distributions7 D7; - if (isEvenTimestep==true) - { - D7.f[0] = &DD7[0*numberOfLBnodes]; - D7.f[1] = &DD7[1*numberOfLBnodes]; - D7.f[2] = &DD7[2*numberOfLBnodes]; - D7.f[3] = &DD7[3*numberOfLBnodes]; - D7.f[4] = &DD7[4*numberOfLBnodes]; - D7.f[5] = &DD7[5*numberOfLBnodes]; - D7.f[6] = &DD7[6*numberOfLBnodes]; - } - else - { - D7.f[0] = &DD7[0*numberOfLBnodes]; - D7.f[2] = &DD7[1*numberOfLBnodes]; - D7.f[1] = &DD7[2*numberOfLBnodes]; - D7.f[4] = &DD7[3*numberOfLBnodes]; - D7.f[3] = &DD7[4*numberOfLBnodes]; - D7.f[6] = &DD7[5*numberOfLBnodes]; - D7.f[5] = &DD7[6*numberOfLBnodes]; - } - - - //////////////////////////////////////////////////////////////////////////////// - const unsigned x = threadIdx.x; // Globaler x-Index - const unsigned y = blockIdx.x; // Globaler y-Index - const unsigned z = blockIdx.y; // Globaler z-Index - - const unsigned nx = blockDim.x; - const unsigned ny = gridDim.x; - - const unsigned k = nx*(ny*z + y) + x; - ////////////////////////////////////////////////////////////////////////// - - if(k<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[DIR_P00 * numberOfBCnodes]; - q_dirW = &QQ[DIR_M00 * numberOfBCnodes]; - q_dirN = &QQ[DIR_0P0 * numberOfBCnodes]; - q_dirS = &QQ[DIR_0M0 * numberOfBCnodes]; - q_dirT = &QQ[DIR_00P * numberOfBCnodes]; - q_dirB = &QQ[DIR_00M * numberOfBCnodes]; - //q_dirNE = &QQ[DIR_PP0 * numberOfBCnodes]; - //q_dirSW = &QQ[DIR_MM0 * numberOfBCnodes]; - //q_dirSE = &QQ[DIR_PM0 * numberOfBCnodes]; - //q_dirNW = &QQ[DIR_MP0 * numberOfBCnodes]; - //q_dirTE = &QQ[DIR_P0P * numberOfBCnodes]; - //q_dirBW = &QQ[DIR_M0M * numberOfBCnodes]; - //q_dirBE = &QQ[DIR_P0M * numberOfBCnodes]; - //q_dirTW = &QQ[DIR_M0P * numberOfBCnodes]; - //q_dirTN = &QQ[DIR_0PP * numberOfBCnodes]; - //q_dirBS = &QQ[DIR_0MM * numberOfBCnodes]; - //q_dirBN = &QQ[DIR_0PM * numberOfBCnodes]; - //q_dirTS = &QQ[DIR_0MP * numberOfBCnodes]; - //q_dirTNE = &QQ[DIR_PPP * numberOfBCnodes]; - //q_dirTSW = &QQ[DIR_MMP * numberOfBCnodes]; - //q_dirTSE = &QQ[DIR_PMP * numberOfBCnodes]; - //q_dirTNW = &QQ[DIR_MPP * numberOfBCnodes]; - //q_dirBNE = &QQ[DIR_PPM * numberOfBCnodes]; - //q_dirBSW = &QQ[DIR_MMM * numberOfBCnodes]; - //q_dirBSE = &QQ[DIR_PMM * numberOfBCnodes]; - //q_dirBNW = &QQ[DIR_MPM * 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]; - 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 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[DIR_P00])[ke ]; - f_E = (D.f[DIR_M00])[kw ]; - f_S = (D.f[DIR_0P0])[kn ]; - f_N = (D.f[DIR_0M0])[ks ]; - f_B = (D.f[DIR_00P])[kt ]; - f_T = (D.f[DIR_00M])[kb ]; - f_SW = (D.f[DIR_PP0])[kne ]; - f_NE = (D.f[DIR_MM0])[ksw ]; - f_NW = (D.f[DIR_PM0])[kse ]; - f_SE = (D.f[DIR_MP0])[knw ]; - f_BW = (D.f[DIR_P0P])[kte ]; - f_TE = (D.f[DIR_M0M])[kbw ]; - f_TW = (D.f[DIR_P0M])[kbe ]; - f_BE = (D.f[DIR_M0P])[ktw ]; - f_BS = (D.f[DIR_0PP])[ktn ]; - f_TN = (D.f[DIR_0MM])[kbs ]; - f_TS = (D.f[DIR_0PM])[kbn ]; - f_BN = (D.f[DIR_0MP])[kts ]; - f_BSW = (D.f[DIR_PPP])[ktne ]; - f_BNE = (D.f[DIR_MMP])[ktsw ]; - f_BNW = (D.f[DIR_PMP])[ktse ]; - f_BSE = (D.f[DIR_MPP])[ktnw ]; - f_TSW = (D.f[DIR_PPM])[kbne ]; - f_TNE = (D.f[DIR_MMM])[kbsw ]; - f_TNW = (D.f[DIR_PMM])[kbse ]; - f_TSE = (D.f[DIR_MPM])[kbnw ]; - //////////////////////////////////////////////////////////////////////////////// - /*real drho*/; - //real vx1_Inflow = zero; - //real vx2_Inflow = zero; - //real vx3_Inflow = velo[k]; - //real ux_sq_Inflow = vx1_Inflow * vx1_Inflow; - //real uy_sq_Inflow = vx2_Inflow * vx2_Inflow; - //real uz_sq_Inflow = vx3_Inflow * vx3_Inflow; - - - //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[DIR_000])[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); - - //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); - - //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); - - 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[DIR_000])[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)); - real 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)); - real 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 cu_sq =1.5*(vx1*vx1+vx2*vx2+vx3*vx3); - real ux_sq = vx1 * vx1; - real uy_sq = vx2 * vx2; - real uz_sq = vx3 * vx3; - real omegaD = c3o1 - sqrt(c3o1); - real Lam = -(c1o2-c1o1/omegaD); - real nue_d = Lam/c3o1; - //real ae = zero; - real ae = diffusivity/nue_d - c1o1; - - real f7_ZERO,f7_E,f7_W,f7_N,f7_S,f7_T,f7_B; - real /*feq7_ZERO,*/feq7_E,feq7_W,feq7_N,feq7_S,feq7_T,feq7_B; - real /*feqW7_ZERO,*/feqW7_E,feqW7_W,feqW7_N,feqW7_S,feqW7_T,feqW7_B; - //real TempD = temp[k]; - - - f7_ZERO = (D7.f[0])[kzero]; - f7_W = (D7.f[1])[ke ]; - f7_E = (D7.f[2])[kw ]; - f7_S = (D7.f[3])[kn ]; - f7_N = (D7.f[4])[ks ]; - f7_B = (D7.f[5])[kt ]; - f7_T = (D7.f[6])[kb ]; - - real ConcD = f7_ZERO + f7_E + f7_W + f7_N + f7_S + f7_T + f7_B; - - //feq7_ZERO = ConcD*(c1o3*(ae*(-3.0))-(ux_sq+uy_sq+uz_sq)); - feq7_E = ConcD*(c1o6*(ae+c1o1)+c1o2*(ux_sq)+vx1*c1o2); - feq7_W = ConcD*(c1o6*(ae+c1o1)+c1o2*(ux_sq)-vx1*c1o2); - feq7_N = ConcD*(c1o6*(ae+c1o1)+c1o2*(uy_sq)+vx2*c1o2); - feq7_S = ConcD*(c1o6*(ae+c1o1)+c1o2*(uy_sq)-vx2*c1o2); - feq7_T = ConcD*(c1o6*(ae+c1o1)+c1o2*(uz_sq)+vx3*c1o2); - feq7_B = ConcD*(c1o6*(ae+c1o1)+c1o2*(uz_sq)-vx3*c1o2); - - //feq7_ZERO = TempD*(c1o3*(ae*(-3.0f))-(ux_sq+uy_sq+uz_sq)); - feqW7_E = feq7_E;// TempD*(c1o6*(ae+one)+c1o2*(ux_sq_Inflow)+vx1_Inflow*c1o2); - feqW7_W = feq7_W;// TempD*(c1o6*(ae+one)+c1o2*(ux_sq_Inflow)-vx1_Inflow*c1o2); - feqW7_N = feq7_N;// TempD*(c1o6*(ae+one)+c1o2*(uy_sq_Inflow)+vx2_Inflow*c1o2); - feqW7_S = feq7_S;// TempD*(c1o6*(ae+one)+c1o2*(uy_sq_Inflow)-vx2_Inflow*c1o2); - feqW7_T = feq7_T;// TempD*(c1o6*(ae+one)+c1o2*(uz_sq_Inflow)+vx3_Inflow*c1o2); - feqW7_B = feq7_B;// TempD*(c1o6*(ae+one)+c1o2*(uz_sq_Inflow)-vx3_Inflow*c1o2); - - ////////////////////////////////////////////////////////////////////////// - //pointertausch - if (isEvenTimestep==false) - { - D7.f[0] = &DD7[0*numberOfLBnodes]; - D7.f[1] = &DD7[1*numberOfLBnodes]; - D7.f[2] = &DD7[2*numberOfLBnodes]; - D7.f[3] = &DD7[3*numberOfLBnodes]; - D7.f[4] = &DD7[4*numberOfLBnodes]; - D7.f[5] = &DD7[5*numberOfLBnodes]; - D7.f[6] = &DD7[6*numberOfLBnodes]; - } - else - { - D7.f[0] = &DD7[0*numberOfLBnodes]; - D7.f[2] = &DD7[1*numberOfLBnodes]; - D7.f[1] = &DD7[2*numberOfLBnodes]; - D7.f[4] = &DD7[3*numberOfLBnodes]; - D7.f[3] = &DD7[4*numberOfLBnodes]; - D7.f[6] = &DD7[5*numberOfLBnodes]; - D7.f[5] = &DD7[6*numberOfLBnodes]; - } - - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //Test - //(D.f[DIR_000])[k]=0.1f; - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //(D7.f[1])[ke ] = f7_E - feq7_E + feqW7_W; //DIR_P00 - //(D7.f[2])[kw ] = f7_W - feq7_W + feqW7_E; //DIR_M00 - //(D7.f[3])[kn ] = f7_N - feq7_N + feqW7_S; //DIR_0P0 - //(D7.f[4])[ks ] = f7_S - feq7_S + feqW7_N; //DIR_0M0 - //(D7.f[5])[kt ] = f7_T - feq7_T + feqW7_B; //DIR_00P - //(D7.f[6])[kb ] = f7_B - feq7_B + feqW7_T; //DIR_00M - - ////////////////////////////////////////////////////////////////////////// - //mit Q's - real /*feq,*/ q; - q = q_dirE[k]; - if (q>=c0o1 && q<=c1o1) - { - //q=0.; - (D7.f[2])[kw]=(c2o1*feqW7_W-(f7_E*(q*omegaD-c1o1)-omegaD*feq7_E*(q-c1o1))/(omegaD-c1o1)+f7_W*q)/(q+c1o1);//f7_W - feq7_W + feqW7_E; - } - - q = q_dirW[k]; - if (q>=c0o1 && q<=c1o1) - { - //q=0.; - (D7.f[1])[ke]=(c2o1*feqW7_E-(f7_W*(q*omegaD-c1o1)-omegaD*feq7_W*(q-c1o1))/(omegaD-c1o1)+f7_E*q)/(q+c1o1);//f7_E - feq7_E + feqW7_W; - } - - q = q_dirN[k]; - if (q>=c0o1 && q<=c1o1) - { - //q=0.; - (D7.f[4])[ks]=(c2o1*feqW7_S-(f7_N*(q*omegaD-1.)-omegaD*feq7_N*(q-c1o1))/(omegaD-c1o1)+f7_S*q)/(q+c1o1);//f7_S - feq7_S + feqW7_N; - } - - q = q_dirS[k]; - if (q>=c0o1 && q<=c1o1) - { - //q=0.; - (D7.f[3])[kn]=(c2o1*feqW7_N-(f7_S*(q*omegaD-c1o1)-omegaD*feq7_S*(q-c1o1))/(omegaD-c1o1)+f7_N*q)/(q+c1o1);//f7_N - feq7_N + feqW7_S; - } - - q = q_dirT[k]; - if (q>=c0o1 && q<=c1o1) - { - //q=0.; - (D7.f[6])[kb]=(c2o1*feqW7_B-(f7_T*(q*omegaD-1.)-omegaD*feq7_T*(q-c1o1))/(omegaD-c1o1)+f7_B*q)/(q+c1o1);//f7_B - feq7_B + feqW7_T; - } - - q = q_dirB[k]; - if (q>=c0o1 && q<=c1o1) - { - //q=0.; - (D7.f[5])[kt]=(c2o1*feqW7_T-(f7_B*(q*omegaD-c1o1)-omegaD*feq7_B*(q-c1o1))/(omegaD-c1o1)+f7_T*q)/(q+c1o1);//f7_T - feq7_T + feqW7_B; - } - - //////////////////////////////////////////////////////////////////////////// - ////ohne Q's - //real /*feq,*/ q; - //q = q_dirE[k]; - //if (q>=zero && q<=one) - //{ - // (D7.f[2])[kw]=f7_W - feq7_W + feqW7_E; - //} - - //q = q_dirW[k]; - //if (q>=zero && q<=one) - //{ - // (D7.f[1])[ke]=f7_E - feq7_E + feqW7_W; - //} - - //q = q_dirN[k]; - //if (q>=zero && q<=one) - //{ - // (D7.f[4])[ks]=f7_S - feq7_S + feqW7_N; - //} - - //q = q_dirS[k]; - //if (q>=zero && q<=one) - //{ - // (D7.f[3])[kn]=f7_N - feq7_N + feqW7_S; - //} - - //q = q_dirT[k]; - //if (q>=zero && q<=one) - //{ - // (D7.f[6])[kb]=f7_B - feq7_B + feqW7_T; - //} - - //q = q_dirB[k]; - //if (q>=zero && q<=one) - //{ - // (D7.f[5])[kt]=f7_T - feq7_T + feqW7_B; - //} - } -} -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -////////////////////////////////////////////////////////////////////////////// -__global__ void QADPress27( real* DD, - real* DD27, - real* temp, - real* velo, - real diffusivity, - int* k_Q, - real* QQ, - unsigned int numberOfBCnodes, - real om1, - unsigned int* neighborX, - unsigned int* neighborY, - unsigned int* neighborZ, - unsigned long long numberOfLBnodes, - bool isEvenTimestep) -{ - Distributions27 D; - if (isEvenTimestep==true) - { - D.f[DIR_P00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_M00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_PMP * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_MPM * numberOfLBnodes]; - } - else - { - D.f[DIR_M00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_P00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_MPM * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_PMP * numberOfLBnodes]; - } - - Distributions27 D27; - if (isEvenTimestep==true) - { - D27.f[DIR_P00] = &DD27[DIR_P00 * numberOfLBnodes]; - D27.f[DIR_M00] = &DD27[DIR_M00 * numberOfLBnodes]; - D27.f[DIR_0P0] = &DD27[DIR_0P0 * numberOfLBnodes]; - D27.f[DIR_0M0] = &DD27[DIR_0M0 * numberOfLBnodes]; - D27.f[DIR_00P] = &DD27[DIR_00P * numberOfLBnodes]; - D27.f[DIR_00M] = &DD27[DIR_00M * numberOfLBnodes]; - D27.f[DIR_PP0] = &DD27[DIR_PP0 * numberOfLBnodes]; - D27.f[DIR_MM0] = &DD27[DIR_MM0 * numberOfLBnodes]; - D27.f[DIR_PM0] = &DD27[DIR_PM0 * numberOfLBnodes]; - D27.f[DIR_MP0] = &DD27[DIR_MP0 * numberOfLBnodes]; - D27.f[DIR_P0P] = &DD27[DIR_P0P * numberOfLBnodes]; - D27.f[DIR_M0M] = &DD27[DIR_M0M * numberOfLBnodes]; - D27.f[DIR_P0M] = &DD27[DIR_P0M * numberOfLBnodes]; - D27.f[DIR_M0P] = &DD27[DIR_M0P * numberOfLBnodes]; - D27.f[DIR_0PP] = &DD27[DIR_0PP * numberOfLBnodes]; - D27.f[DIR_0MM] = &DD27[DIR_0MM * numberOfLBnodes]; - D27.f[DIR_0PM] = &DD27[DIR_0PM * numberOfLBnodes]; - D27.f[DIR_0MP] = &DD27[DIR_0MP * numberOfLBnodes]; - D27.f[DIR_000] = &DD27[DIR_000 * numberOfLBnodes]; - D27.f[DIR_PPP] = &DD27[DIR_PPP * numberOfLBnodes]; - D27.f[DIR_MMP] = &DD27[DIR_MMP * numberOfLBnodes]; - D27.f[DIR_PMP] = &DD27[DIR_PMP * numberOfLBnodes]; - D27.f[DIR_MPP] = &DD27[DIR_MPP * numberOfLBnodes]; - D27.f[DIR_PPM] = &DD27[DIR_PPM * numberOfLBnodes]; - D27.f[DIR_MMM] = &DD27[DIR_MMM * numberOfLBnodes]; - D27.f[DIR_PMM] = &DD27[DIR_PMM * numberOfLBnodes]; - D27.f[DIR_MPM] = &DD27[DIR_MPM * numberOfLBnodes]; - } - else - { - D27.f[DIR_M00] = &DD27[DIR_P00 * numberOfLBnodes]; - D27.f[DIR_P00] = &DD27[DIR_M00 * numberOfLBnodes]; - D27.f[DIR_0M0] = &DD27[DIR_0P0 * numberOfLBnodes]; - D27.f[DIR_0P0] = &DD27[DIR_0M0 * numberOfLBnodes]; - D27.f[DIR_00M] = &DD27[DIR_00P * numberOfLBnodes]; - D27.f[DIR_00P] = &DD27[DIR_00M * numberOfLBnodes]; - D27.f[DIR_MM0] = &DD27[DIR_PP0 * numberOfLBnodes]; - D27.f[DIR_PP0] = &DD27[DIR_MM0 * numberOfLBnodes]; - D27.f[DIR_MP0] = &DD27[DIR_PM0 * numberOfLBnodes]; - D27.f[DIR_PM0] = &DD27[DIR_MP0 * numberOfLBnodes]; - D27.f[DIR_M0M] = &DD27[DIR_P0P * numberOfLBnodes]; - D27.f[DIR_P0P] = &DD27[DIR_M0M * numberOfLBnodes]; - D27.f[DIR_M0P] = &DD27[DIR_P0M * numberOfLBnodes]; - D27.f[DIR_P0M] = &DD27[DIR_M0P * numberOfLBnodes]; - D27.f[DIR_0MM] = &DD27[DIR_0PP * numberOfLBnodes]; - D27.f[DIR_0PP] = &DD27[DIR_0MM * numberOfLBnodes]; - D27.f[DIR_0MP] = &DD27[DIR_0PM * numberOfLBnodes]; - D27.f[DIR_0PM] = &DD27[DIR_0MP * numberOfLBnodes]; - D27.f[DIR_000] = &DD27[DIR_000 * numberOfLBnodes]; - D27.f[DIR_PPP] = &DD27[DIR_MMM * numberOfLBnodes]; - D27.f[DIR_MMP] = &DD27[DIR_PPM * numberOfLBnodes]; - D27.f[DIR_PMP] = &DD27[DIR_MPM * numberOfLBnodes]; - D27.f[DIR_MPP] = &DD27[DIR_PMM * numberOfLBnodes]; - D27.f[DIR_PPM] = &DD27[DIR_MMP * numberOfLBnodes]; - D27.f[DIR_MMM] = &DD27[DIR_PPP * numberOfLBnodes]; - D27.f[DIR_PMM] = &DD27[DIR_MPP * numberOfLBnodes]; - D27.f[DIR_MPM] = &DD27[DIR_PMP * numberOfLBnodes]; - } - //////////////////////////////////////////////////////////////////////////////// - const unsigned x = threadIdx.x; // Globaler x-Index - const unsigned y = blockIdx.x; // Globaler y-Index - const unsigned z = blockIdx.y; // Globaler z-Index - - const unsigned nx = blockDim.x; - const unsigned ny = gridDim.x; - - const unsigned k = nx*(ny*z + y) + x; - ////////////////////////////////////////////////////////////////////////// - - if(k<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[DIR_P00 * numberOfBCnodes]; - q_dirW = &QQ[DIR_M00 * numberOfBCnodes]; - q_dirN = &QQ[DIR_0P0 * numberOfBCnodes]; - q_dirS = &QQ[DIR_0M0 * numberOfBCnodes]; - q_dirT = &QQ[DIR_00P * numberOfBCnodes]; - q_dirB = &QQ[DIR_00M * numberOfBCnodes]; - q_dirNE = &QQ[DIR_PP0 * numberOfBCnodes]; - q_dirSW = &QQ[DIR_MM0 * numberOfBCnodes]; - q_dirSE = &QQ[DIR_PM0 * numberOfBCnodes]; - q_dirNW = &QQ[DIR_MP0 * numberOfBCnodes]; - q_dirTE = &QQ[DIR_P0P * numberOfBCnodes]; - q_dirBW = &QQ[DIR_M0M * numberOfBCnodes]; - q_dirBE = &QQ[DIR_P0M * numberOfBCnodes]; - q_dirTW = &QQ[DIR_M0P * numberOfBCnodes]; - q_dirTN = &QQ[DIR_0PP * numberOfBCnodes]; - q_dirBS = &QQ[DIR_0MM * numberOfBCnodes]; - q_dirBN = &QQ[DIR_0PM * numberOfBCnodes]; - q_dirTS = &QQ[DIR_0MP * numberOfBCnodes]; - q_dirTNE = &QQ[DIR_PPP * numberOfBCnodes]; - q_dirTSW = &QQ[DIR_MMP * numberOfBCnodes]; - q_dirTSE = &QQ[DIR_PMP * numberOfBCnodes]; - q_dirTNW = &QQ[DIR_MPP * numberOfBCnodes]; - q_dirBNE = &QQ[DIR_PPM * numberOfBCnodes]; - q_dirBSW = &QQ[DIR_MMM * numberOfBCnodes]; - q_dirBSE = &QQ[DIR_PMM * numberOfBCnodes]; - q_dirBNW = &QQ[DIR_MPM * 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]; - 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 f_W = (D.f[DIR_P00])[ke ]; - real f_E = (D.f[DIR_M00])[kw ]; - real f_S = (D.f[DIR_0P0])[kn ]; - real f_N = (D.f[DIR_0M0])[ks ]; - real f_B = (D.f[DIR_00P])[kt ]; - real f_T = (D.f[DIR_00M])[kb ]; - real f_SW = (D.f[DIR_PP0])[kne ]; - real f_NE = (D.f[DIR_MM0])[ksw ]; - real f_NW = (D.f[DIR_PM0])[kse ]; - real f_SE = (D.f[DIR_MP0])[knw ]; - real f_BW = (D.f[DIR_P0P])[kte ]; - real f_TE = (D.f[DIR_M0M])[kbw ]; - real f_TW = (D.f[DIR_P0M])[kbe ]; - real f_BE = (D.f[DIR_M0P])[ktw ]; - real f_BS = (D.f[DIR_0PP])[ktn ]; - real f_TN = (D.f[DIR_0MM])[kbs ]; - real f_TS = (D.f[DIR_0PM])[kbn ]; - real f_BN = (D.f[DIR_0MP])[kts ]; - real f_ZERO = (D.f[DIR_000])[kzero]; - real f_BSW = (D.f[DIR_PPP])[ktne ]; - real f_BNE = (D.f[DIR_MMP])[ktsw ]; - real f_BNW = (D.f[DIR_PMP])[ktse ]; - real f_BSE = (D.f[DIR_MPP])[ktnw ]; - real f_TSW = (D.f[DIR_PPM])[kbne ]; - real f_TNE = (D.f[DIR_MMM])[kbsw ]; - real f_TNW = (D.f[DIR_PMM])[kbse ]; - real f_TSE = (D.f[DIR_MPM])[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 + f_ZERO; - - //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); - - - //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); - - //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)+ f_ZERO; - 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)); - 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[DIR_P00])[ke ]; - real f27_E = (D27.f[DIR_M00])[kw ]; - real f27_S = (D27.f[DIR_0P0])[kn ]; - real f27_N = (D27.f[DIR_0M0])[ks ]; - real f27_B = (D27.f[DIR_00P])[kt ]; - real f27_T = (D27.f[DIR_00M])[kb ]; - real f27_SW = (D27.f[DIR_PP0])[kne ]; - real f27_NE = (D27.f[DIR_MM0])[ksw ]; - real f27_NW = (D27.f[DIR_PM0])[kse ]; - real f27_SE = (D27.f[DIR_MP0])[knw ]; - real f27_BW = (D27.f[DIR_P0P])[kte ]; - real f27_TE = (D27.f[DIR_M0M])[kbw ]; - real f27_TW = (D27.f[DIR_P0M])[kbe ]; - real f27_BE = (D27.f[DIR_M0P])[ktw ]; - real f27_BS = (D27.f[DIR_0PP])[ktn ]; - real f27_TN = (D27.f[DIR_0MM])[kbs ]; - real f27_TS = (D27.f[DIR_0PM])[kbn ]; - real f27_BN = (D27.f[DIR_0MP])[kts ]; - real f27_ZERO = (D27.f[DIR_000])[kzero]; - real f27_BSW = (D27.f[DIR_PPP])[ktne ]; - real f27_BNE = (D27.f[DIR_MMP])[ktsw ]; - real f27_BNW = (D27.f[DIR_PMP])[ktse ]; - real f27_BSE = (D27.f[DIR_MPP])[ktnw ]; - real f27_TSW = (D27.f[DIR_PPM])[kbne ]; - real f27_TNE = (D27.f[DIR_MMM])[kbsw ]; - real f27_TNW = (D27.f[DIR_PMM])[kbse ]; - real f27_TSE = (D27.f[DIR_MPM])[kbnw ]; - //////////////////////////////////////////////////////////////////////////////// - real cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3); - //////////////////////////////////////////////////////////////////////////////// - real ConcD = f27_TSE + f27_TNW + f27_TNE + f27_TSW + f27_BSE + f27_BNW + f27_BNE + f27_BSW + - f27_BN + f27_TS + f27_TN + f27_BS + f27_BE + f27_TW + f27_TE + f27_BW + f27_SE + f27_NW + f27_NE + f27_SW + - f27_T + f27_B + f27_N + f27_S + f27_E + f27_W + f27_ZERO; - - ////real feq27_ZERO = c8over27* ConcD*(one-cu_sq); - //real feq27_E = c2over27* (ConcD+(one+ConcD)*(three*( vx1 )+c9over2*( vx1 )*( vx1 )-cu_sq)); - //real feq27_W = c2over27* (ConcD+(one+ConcD)*(three*(-vx1 )+c9over2*(-vx1 )*(-vx1 )-cu_sq)); - //real feq27_N = c2over27* (ConcD+(one+ConcD)*(three*( vx2 )+c9over2*( vx2 )*( vx2 )-cu_sq)); - //real feq27_S = c2over27* (ConcD+(one+ConcD)*(three*( -vx2 )+c9over2*( -vx2 )*( -vx2 )-cu_sq)); - //real feq27_T = c2over27* (ConcD+(one+ConcD)*(three*( vx3)+c9over2*( vx3)*( vx3)-cu_sq)); - //real feq27_B = c2over27* (ConcD+(one+ConcD)*(three*( -vx3)+c9over2*( -vx3)*( -vx3)-cu_sq)); - //real feq27_NE = c1over54* (ConcD+(one+ConcD)*(three*( vx1+vx2 )+c9over2*( vx1+vx2 )*( vx1+vx2 )-cu_sq)); - //real feq27_SW = c1over54* (ConcD+(one+ConcD)*(three*(-vx1-vx2 )+c9over2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq)); - //real feq27_SE = c1over54* (ConcD+(one+ConcD)*(three*( vx1-vx2 )+c9over2*( vx1-vx2 )*( vx1-vx2 )-cu_sq)); - //real feq27_NW = c1over54* (ConcD+(one+ConcD)*(three*(-vx1+vx2 )+c9over2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq)); - //real feq27_TE = c1over54* (ConcD+(one+ConcD)*(three*( vx1 +vx3)+c9over2*( vx1 +vx3)*( vx1 +vx3)-cu_sq)); - //real feq27_BW = c1over54* (ConcD+(one+ConcD)*(three*(-vx1 -vx3)+c9over2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq)); - //real feq27_BE = c1over54* (ConcD+(one+ConcD)*(three*( vx1 -vx3)+c9over2*( vx1 -vx3)*( vx1 -vx3)-cu_sq)); - //real feq27_TW = c1over54* (ConcD+(one+ConcD)*(three*(-vx1 +vx3)+c9over2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq)); - //real feq27_TN = c1over54* (ConcD+(one+ConcD)*(three*( vx2+vx3)+c9over2*( vx2+vx3)*( vx2+vx3)-cu_sq)); - //real feq27_BS = c1over54* (ConcD+(one+ConcD)*(three*( -vx2-vx3)+c9over2*( -vx2-vx3)*( -vx2-vx3)-cu_sq)); - //real feq27_BN = c1over54* (ConcD+(one+ConcD)*(three*( vx2-vx3)+c9over2*( vx2-vx3)*( vx2-vx3)-cu_sq)); - //real feq27_TS = c1over54* (ConcD+(one+ConcD)*(three*( -vx2+vx3)+c9over2*( -vx2+vx3)*( -vx2+vx3)-cu_sq)); - //real feq27_TNE = c1over216*(ConcD+(one+ConcD)*(three*( vx1+vx2+vx3)+c9over2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq)); - //real feq27_BSW = c1over216*(ConcD+(one+ConcD)*(three*(-vx1-vx2-vx3)+c9over2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq)); - //real feq27_BNE = c1over216*(ConcD+(one+ConcD)*(three*( vx1+vx2-vx3)+c9over2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq)); - //real feq27_TSW = c1over216*(ConcD+(one+ConcD)*(three*(-vx1-vx2+vx3)+c9over2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq)); - //real feq27_TSE = c1over216*(ConcD+(one+ConcD)*(three*( vx1-vx2+vx3)+c9over2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq)); - //real feq27_BNW = c1over216*(ConcD+(one+ConcD)*(three*(-vx1+vx2-vx3)+c9over2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq)); - //real feq27_BSE = c1over216*(ConcD+(one+ConcD)*(three*( vx1-vx2-vx3)+c9over2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq)); - //real feq27_TNW = c1over216*(ConcD+(one+ConcD)*(three*(-vx1+vx2+vx3)+c9over2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq)); - // - real feq27_E = c2o27* ConcD*(c1o1+c3o1*( vx1 )+c9o2*( vx1 )*( vx1 )-cu_sq); - real feq27_W = c2o27* ConcD*(c1o1+c3o1*(-vx1 )+c9o2*(-vx1 )*(-vx1 )-cu_sq); - real feq27_N = c2o27* ConcD*(c1o1+c3o1*( vx2 )+c9o2*( vx2 )*( vx2 )-cu_sq); - real feq27_S = c2o27* ConcD*(c1o1+c3o1*( -vx2 )+c9o2*( -vx2 )*( -vx2 )-cu_sq); - real feq27_T = c2o27* ConcD*(c1o1+c3o1*( vx3)+c9o2*( vx3)*( vx3)-cu_sq); - real feq27_B = c2o27* ConcD*(c1o1+c3o1*( -vx3)+c9o2*( -vx3)*( -vx3)-cu_sq); - real feq27_NE = c1o54* ConcD*(c1o1+c3o1*( vx1+vx2 )+c9o2*( vx1+vx2 )*( vx1+vx2 )-cu_sq); - real feq27_SW = c1o54* ConcD*(c1o1+c3o1*(-vx1-vx2 )+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq); - real feq27_SE = c1o54* ConcD*(c1o1+c3o1*( vx1-vx2 )+c9o2*( vx1-vx2 )*( vx1-vx2 )-cu_sq); - real feq27_NW = c1o54* ConcD*(c1o1+c3o1*(-vx1+vx2 )+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq); - real feq27_TE = c1o54* ConcD*(c1o1+c3o1*( vx1 +vx3)+c9o2*( vx1 +vx3)*( vx1 +vx3)-cu_sq); - real feq27_BW = c1o54* ConcD*(c1o1+c3o1*(-vx1 -vx3)+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq); - real feq27_BE = c1o54* ConcD*(c1o1+c3o1*( vx1 -vx3)+c9o2*( vx1 -vx3)*( vx1 -vx3)-cu_sq); - real feq27_TW = c1o54* ConcD*(c1o1+c3o1*(-vx1 +vx3)+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq); - real feq27_TN = c1o54* ConcD*(c1o1+c3o1*( vx2+vx3)+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq); - real feq27_BS = c1o54* ConcD*(c1o1+c3o1*( -vx2-vx3)+c9o2*( -vx2-vx3)*( -vx2-vx3)-cu_sq); - real feq27_BN = c1o54* ConcD*(c1o1+c3o1*( vx2-vx3)+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq); - real feq27_TS = c1o54* ConcD*(c1o1+c3o1*( -vx2+vx3)+c9o2*( -vx2+vx3)*( -vx2+vx3)-cu_sq); - real feq27_TNE = c1o216*ConcD*(c1o1+c3o1*( vx1+vx2+vx3)+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq); - real feq27_BSW = c1o216*ConcD*(c1o1+c3o1*(-vx1-vx2-vx3)+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq); - real feq27_BNE = c1o216*ConcD*(c1o1+c3o1*( vx1+vx2-vx3)+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq); - real feq27_TSW = c1o216*ConcD*(c1o1+c3o1*(-vx1-vx2+vx3)+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq); - real feq27_TSE = c1o216*ConcD*(c1o1+c3o1*( vx1-vx2+vx3)+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq); - real feq27_BNW = c1o216*ConcD*(c1o1+c3o1*(-vx1+vx2-vx3)+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq); - real feq27_BSE = c1o216*ConcD*(c1o1+c3o1*( vx1-vx2-vx3)+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq); - real feq27_TNW = c1o216*ConcD*(c1o1+c3o1*(-vx1+vx2+vx3)+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq); - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //real TempD = temp[k]; - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - // velocity inflow - //vx1 = zero; - //vx2 = zero; - //vx3 = velo[k]; - - //real feqW27_ZERO = c8over27* TempD*(one-cu_sq); - real feqW27_E = feq27_E ;// c2over27* TempD*(one+three*( vx1 )+c9over2*( vx1 )*( vx1 )-cu_sq); - real feqW27_W = feq27_W ;// c2over27* TempD*(one+three*(-vx1 )+c9over2*(-vx1 )*(-vx1 )-cu_sq); - real feqW27_N = feq27_N ;// c2over27* TempD*(one+three*( vx2 )+c9over2*( vx2 )*( vx2 )-cu_sq); - real feqW27_S = feq27_S ;// c2over27* TempD*(one+three*( -vx2 )+c9over2*( -vx2 )*( -vx2 )-cu_sq); - real feqW27_T = feq27_T ;// c2over27* TempD*(one+three*( vx3)+c9over2*( vx3)*( vx3)-cu_sq); - real feqW27_B = feq27_B ;// c2over27* TempD*(one+three*( -vx3)+c9over2*( -vx3)*( -vx3)-cu_sq); - real feqW27_NE = feq27_NE ;// c1over54* TempD*(one+three*( vx1+vx2 )+c9over2*( vx1+vx2 )*( vx1+vx2 )-cu_sq); - real feqW27_SW = feq27_SW ;// c1over54* TempD*(one+three*(-vx1-vx2 )+c9over2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq); - real feqW27_SE = feq27_SE ;// c1over54* TempD*(one+three*( vx1-vx2 )+c9over2*( vx1-vx2 )*( vx1-vx2 )-cu_sq); - real feqW27_NW = feq27_NW ;// c1over54* TempD*(one+three*(-vx1+vx2 )+c9over2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq); - real feqW27_TE = feq27_TE ;// c1over54* TempD*(one+three*( vx1 +vx3)+c9over2*( vx1 +vx3)*( vx1 +vx3)-cu_sq); - real feqW27_BW = feq27_BW ;// c1over54* TempD*(one+three*(-vx1 -vx3)+c9over2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq); - real feqW27_BE = feq27_BE ;// c1over54* TempD*(one+three*( vx1 -vx3)+c9over2*( vx1 -vx3)*( vx1 -vx3)-cu_sq); - real feqW27_TW = feq27_TW ;// c1over54* TempD*(one+three*(-vx1 +vx3)+c9over2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq); - real feqW27_TN = feq27_TN ;// c1over54* TempD*(one+three*( vx2+vx3)+c9over2*( vx2+vx3)*( vx2+vx3)-cu_sq); - real feqW27_BS = feq27_BS ;// c1over54* TempD*(one+three*( -vx2-vx3)+c9over2*( -vx2-vx3)*( -vx2-vx3)-cu_sq); - real feqW27_BN = feq27_BN ;// c1over54* TempD*(one+three*( vx2-vx3)+c9over2*( vx2-vx3)*( vx2-vx3)-cu_sq); - real feqW27_TS = feq27_TS ;// c1over54* TempD*(one+three*( -vx2+vx3)+c9over2*( -vx2+vx3)*( -vx2+vx3)-cu_sq); - real feqW27_TNE = feq27_TNE;// c1over216*TempD*(one+three*( vx1+vx2+vx3)+c9over2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq); - real feqW27_BSW = feq27_BSW;// c1over216*TempD*(one+three*(-vx1-vx2-vx3)+c9over2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq); - real feqW27_BNE = feq27_BNE;// c1over216*TempD*(one+three*( vx1+vx2-vx3)+c9over2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq); - real feqW27_TSW = feq27_TSW;// c1over216*TempD*(one+three*(-vx1-vx2+vx3)+c9over2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq); - real feqW27_TSE = feq27_TSE;// c1over216*TempD*(one+three*( vx1-vx2+vx3)+c9over2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq); - real feqW27_BNW = feq27_BNW;// c1over216*TempD*(one+three*(-vx1+vx2-vx3)+c9over2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq); - real feqW27_BSE = feq27_BSE;// c1over216*TempD*(one+three*( vx1-vx2-vx3)+c9over2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq); - real feqW27_TNW = feq27_TNW;// c1over216*TempD*(one+three*(-vx1+vx2+vx3)+c9over2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq); - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real omegaD = c3o1 - sqrt(c3o1); - //real Lam = -(c1o2-one/omegaD); - //real nue_d = Lam/three; - //real ae = zero; - //real ae = diffusivity/nue_d - one; - - - ////////////////////////////////////////////////////////////////////////// - if (isEvenTimestep==false) - { - D27.f[DIR_P00] = &DD27[DIR_P00 * numberOfLBnodes]; - D27.f[DIR_M00] = &DD27[DIR_M00 * numberOfLBnodes]; - D27.f[DIR_0P0] = &DD27[DIR_0P0 * numberOfLBnodes]; - D27.f[DIR_0M0] = &DD27[DIR_0M0 * numberOfLBnodes]; - D27.f[DIR_00P] = &DD27[DIR_00P * numberOfLBnodes]; - D27.f[DIR_00M] = &DD27[DIR_00M * numberOfLBnodes]; - D27.f[DIR_PP0] = &DD27[DIR_PP0 * numberOfLBnodes]; - D27.f[DIR_MM0] = &DD27[DIR_MM0 * numberOfLBnodes]; - D27.f[DIR_PM0] = &DD27[DIR_PM0 * numberOfLBnodes]; - D27.f[DIR_MP0] = &DD27[DIR_MP0 * numberOfLBnodes]; - D27.f[DIR_P0P] = &DD27[DIR_P0P * numberOfLBnodes]; - D27.f[DIR_M0M] = &DD27[DIR_M0M * numberOfLBnodes]; - D27.f[DIR_P0M] = &DD27[DIR_P0M * numberOfLBnodes]; - D27.f[DIR_M0P] = &DD27[DIR_M0P * numberOfLBnodes]; - D27.f[DIR_0PP] = &DD27[DIR_0PP * numberOfLBnodes]; - D27.f[DIR_0MM] = &DD27[DIR_0MM * numberOfLBnodes]; - D27.f[DIR_0PM] = &DD27[DIR_0PM * numberOfLBnodes]; - D27.f[DIR_0MP] = &DD27[DIR_0MP * numberOfLBnodes]; - D27.f[DIR_000] = &DD27[DIR_000 * numberOfLBnodes]; - D27.f[DIR_PPP] = &DD27[DIR_PPP * numberOfLBnodes]; - D27.f[DIR_MMP] = &DD27[DIR_MMP * numberOfLBnodes]; - D27.f[DIR_PMP] = &DD27[DIR_PMP * numberOfLBnodes]; - D27.f[DIR_MPP] = &DD27[DIR_MPP * numberOfLBnodes]; - D27.f[DIR_PPM] = &DD27[DIR_PPM * numberOfLBnodes]; - D27.f[DIR_MMM] = &DD27[DIR_MMM * numberOfLBnodes]; - D27.f[DIR_PMM] = &DD27[DIR_PMM * numberOfLBnodes]; - D27.f[DIR_MPM] = &DD27[DIR_MPM * numberOfLBnodes]; - } - else - { - D27.f[DIR_M00] = &DD27[DIR_P00 * numberOfLBnodes]; - D27.f[DIR_P00] = &DD27[DIR_M00 * numberOfLBnodes]; - D27.f[DIR_0M0] = &DD27[DIR_0P0 * numberOfLBnodes]; - D27.f[DIR_0P0] = &DD27[DIR_0M0 * numberOfLBnodes]; - D27.f[DIR_00M] = &DD27[DIR_00P * numberOfLBnodes]; - D27.f[DIR_00P] = &DD27[DIR_00M * numberOfLBnodes]; - D27.f[DIR_MM0] = &DD27[DIR_PP0 * numberOfLBnodes]; - D27.f[DIR_PP0] = &DD27[DIR_MM0 * numberOfLBnodes]; - D27.f[DIR_MP0] = &DD27[DIR_PM0 * numberOfLBnodes]; - D27.f[DIR_PM0] = &DD27[DIR_MP0 * numberOfLBnodes]; - D27.f[DIR_M0M] = &DD27[DIR_P0P * numberOfLBnodes]; - D27.f[DIR_P0P] = &DD27[DIR_M0M * numberOfLBnodes]; - D27.f[DIR_M0P] = &DD27[DIR_P0M * numberOfLBnodes]; - D27.f[DIR_P0M] = &DD27[DIR_M0P * numberOfLBnodes]; - D27.f[DIR_0MM] = &DD27[DIR_0PP * numberOfLBnodes]; - D27.f[DIR_0PP] = &DD27[DIR_0MM * numberOfLBnodes]; - D27.f[DIR_0MP] = &DD27[DIR_0PM * numberOfLBnodes]; - D27.f[DIR_0PM] = &DD27[DIR_0MP * numberOfLBnodes]; - D27.f[DIR_000] = &DD27[DIR_000 * numberOfLBnodes]; - D27.f[DIR_PPP] = &DD27[DIR_MMM * numberOfLBnodes]; - D27.f[DIR_MMP] = &DD27[DIR_PPM * numberOfLBnodes]; - D27.f[DIR_PMP] = &DD27[DIR_MPM * numberOfLBnodes]; - D27.f[DIR_MPP] = &DD27[DIR_PMM * numberOfLBnodes]; - D27.f[DIR_PPM] = &DD27[DIR_MMP * numberOfLBnodes]; - D27.f[DIR_MMM] = &DD27[DIR_PPP * numberOfLBnodes]; - D27.f[DIR_PMM] = &DD27[DIR_MPP * numberOfLBnodes]; - D27.f[DIR_MPM] = &DD27[DIR_PMP * numberOfLBnodes]; - } - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //Test - //(D.f[DIR_000])[k]=c1o10; - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - q = q_dirE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_M00])[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[DIR_P00])[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[DIR_0M0])[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[DIR_0P0])[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[DIR_00M])[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[DIR_00P])[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[DIR_MM0])[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[DIR_PP0])[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[DIR_MP0])[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[DIR_PM0])[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[DIR_M0M])[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[DIR_P0P])[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[DIR_M0P])[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[DIR_P0M])[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[DIR_0MM])[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[DIR_0PP])[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[DIR_0MP])[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[DIR_0PM])[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[DIR_MMM])[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[DIR_PPP])[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[DIR_MMP])[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[DIR_PPM])[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[DIR_MPM])[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[DIR_PMP])[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[DIR_MPP])[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[DIR_PMM])[kbse]=(c2o1*feqW27_BSE-(f27_TNW*(q*omegaD-c1o1)-omegaD*feq27_TNW*(q-c1o1))/(omegaD-c1o1)+f27_BSE*q)/(q+c1o1); - } -} -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -////////////////////////////////////////////////////////////////////////////// -__global__ void QADPressNEQNeighbor27( - real* DD, - real* DD27, - int* k_Q, - int* k_N, - int numberOfBCnodes, - unsigned int* neighborX, - unsigned int* neighborY, - unsigned int* neighborZ, - unsigned long long numberOfLBnodes, - bool isEvenTimestep - ) -{ - Distributions27 D; - if (isEvenTimestep == true) - { - D.f[DIR_P00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_M00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_PMP * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_MPM * numberOfLBnodes]; - } - else - { - D.f[DIR_M00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_P00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_MPM * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_PMP * numberOfLBnodes]; - } - - Distributions27 D27; - if (isEvenTimestep == true) - { - D27.f[DIR_P00] = &DD27[DIR_P00 * numberOfLBnodes]; - D27.f[DIR_M00] = &DD27[DIR_M00 * numberOfLBnodes]; - D27.f[DIR_0P0] = &DD27[DIR_0P0 * numberOfLBnodes]; - D27.f[DIR_0M0] = &DD27[DIR_0M0 * numberOfLBnodes]; - D27.f[DIR_00P] = &DD27[DIR_00P * numberOfLBnodes]; - D27.f[DIR_00M] = &DD27[DIR_00M * numberOfLBnodes]; - D27.f[DIR_PP0] = &DD27[DIR_PP0 * numberOfLBnodes]; - D27.f[DIR_MM0] = &DD27[DIR_MM0 * numberOfLBnodes]; - D27.f[DIR_PM0] = &DD27[DIR_PM0 * numberOfLBnodes]; - D27.f[DIR_MP0] = &DD27[DIR_MP0 * numberOfLBnodes]; - D27.f[DIR_P0P] = &DD27[DIR_P0P * numberOfLBnodes]; - D27.f[DIR_M0M] = &DD27[DIR_M0M * numberOfLBnodes]; - D27.f[DIR_P0M] = &DD27[DIR_P0M * numberOfLBnodes]; - D27.f[DIR_M0P] = &DD27[DIR_M0P * numberOfLBnodes]; - D27.f[DIR_0PP] = &DD27[DIR_0PP * numberOfLBnodes]; - D27.f[DIR_0MM] = &DD27[DIR_0MM * numberOfLBnodes]; - D27.f[DIR_0PM] = &DD27[DIR_0PM * numberOfLBnodes]; - D27.f[DIR_0MP] = &DD27[DIR_0MP * numberOfLBnodes]; - D27.f[DIR_000] = &DD27[DIR_000 * numberOfLBnodes]; - D27.f[DIR_PPP] = &DD27[DIR_PPP * numberOfLBnodes]; - D27.f[DIR_MMP] = &DD27[DIR_MMP * numberOfLBnodes]; - D27.f[DIR_PMP] = &DD27[DIR_PMP * numberOfLBnodes]; - D27.f[DIR_MPP] = &DD27[DIR_MPP * numberOfLBnodes]; - D27.f[DIR_PPM] = &DD27[DIR_PPM * numberOfLBnodes]; - D27.f[DIR_MMM] = &DD27[DIR_MMM * numberOfLBnodes]; - D27.f[DIR_PMM] = &DD27[DIR_PMM * numberOfLBnodes]; - D27.f[DIR_MPM] = &DD27[DIR_MPM * numberOfLBnodes]; - } - else - { - D27.f[DIR_M00] = &DD27[DIR_P00 * numberOfLBnodes]; - D27.f[DIR_P00] = &DD27[DIR_M00 * numberOfLBnodes]; - D27.f[DIR_0M0] = &DD27[DIR_0P0 * numberOfLBnodes]; - D27.f[DIR_0P0] = &DD27[DIR_0M0 * numberOfLBnodes]; - D27.f[DIR_00M] = &DD27[DIR_00P * numberOfLBnodes]; - D27.f[DIR_00P] = &DD27[DIR_00M * numberOfLBnodes]; - D27.f[DIR_MM0] = &DD27[DIR_PP0 * numberOfLBnodes]; - D27.f[DIR_PP0] = &DD27[DIR_MM0 * numberOfLBnodes]; - D27.f[DIR_MP0] = &DD27[DIR_PM0 * numberOfLBnodes]; - D27.f[DIR_PM0] = &DD27[DIR_MP0 * numberOfLBnodes]; - D27.f[DIR_M0M] = &DD27[DIR_P0P * numberOfLBnodes]; - D27.f[DIR_P0P] = &DD27[DIR_M0M * numberOfLBnodes]; - D27.f[DIR_M0P] = &DD27[DIR_P0M * numberOfLBnodes]; - D27.f[DIR_P0M] = &DD27[DIR_M0P * numberOfLBnodes]; - D27.f[DIR_0MM] = &DD27[DIR_0PP * numberOfLBnodes]; - D27.f[DIR_0PP] = &DD27[DIR_0MM * numberOfLBnodes]; - D27.f[DIR_0MP] = &DD27[DIR_0PM * numberOfLBnodes]; - D27.f[DIR_0PM] = &DD27[DIR_0MP * numberOfLBnodes]; - D27.f[DIR_000] = &DD27[DIR_000 * numberOfLBnodes]; - D27.f[DIR_PPP] = &DD27[DIR_MMM * numberOfLBnodes]; - D27.f[DIR_MMP] = &DD27[DIR_PPM * numberOfLBnodes]; - D27.f[DIR_PMP] = &DD27[DIR_MPM * numberOfLBnodes]; - D27.f[DIR_MPP] = &DD27[DIR_PMM * numberOfLBnodes]; - D27.f[DIR_PPM] = &DD27[DIR_MMP * numberOfLBnodes]; - D27.f[DIR_MMM] = &DD27[DIR_PPP * numberOfLBnodes]; - D27.f[DIR_PMM] = &DD27[DIR_MPP * numberOfLBnodes]; - D27.f[DIR_MPM] = &DD27[DIR_PMP * numberOfLBnodes]; - } - //////////////////////////////////////////////////////////////////////////////// - const unsigned x = threadIdx.x; // Globaler x-Index - const unsigned y = blockIdx.x; // Globaler y-Index - const unsigned z = blockIdx.y; // Globaler z-Index - - const unsigned nx = blockDim.x; - const unsigned ny = gridDim.x; - - const unsigned k = nx*(ny*z + y) + x; - ////////////////////////////////////////////////////////////////////////// - - if (k < numberOfBCnodes) - { - //////////////////////////////////////////////////////////////////////////////// - //Fluid - BC Nodes - //////////////////////////////////////////////////////////////////////////////// - //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]; - //////////////////////////////////////////////////////////////////////////////// - //distributions - real f_W = (D.f[DIR_P00])[ke]; - real f_E = (D.f[DIR_M00])[kw]; - real f_S = (D.f[DIR_0P0])[kn]; - real f_N = (D.f[DIR_0M0])[ks]; - real f_B = (D.f[DIR_00P])[kt]; - real f_T = (D.f[DIR_00M])[kb]; - real f_SW = (D.f[DIR_PP0])[kne]; - real f_NE = (D.f[DIR_MM0])[ksw]; - real f_NW = (D.f[DIR_PM0])[kse]; - real f_SE = (D.f[DIR_MP0])[knw]; - real f_BW = (D.f[DIR_P0P])[kte]; - real f_TE = (D.f[DIR_M0M])[kbw]; - real f_TW = (D.f[DIR_P0M])[kbe]; - real f_BE = (D.f[DIR_M0P])[ktw]; - real f_BS = (D.f[DIR_0PP])[ktn]; - real f_TN = (D.f[DIR_0MM])[kbs]; - real f_TS = (D.f[DIR_0PM])[kbn]; - real f_BN = (D.f[DIR_0MP])[kts]; - real f_ZERO = (D.f[DIR_000])[kzero]; - real f_BSW = (D.f[DIR_PPP])[ktne]; - real f_BNE = (D.f[DIR_MMP])[ktsw]; - real f_BNW = (D.f[DIR_PMP])[ktse]; - real f_BSE = (D.f[DIR_MPP])[ktnw]; - real f_TSW = (D.f[DIR_PPM])[kbne]; - real f_TNE = (D.f[DIR_MMM])[kbsw]; - real f_TNW = (D.f[DIR_PMM])[kbse]; - real f_TSE = (D.f[DIR_MPM])[kbnw]; - //////////////////////////////////////////////////////////////////////////////// - //macroscopic values - 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 ) + f_ZERO; - 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)); - real 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)); - real 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)); - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //AD - BC Nodes - //////////////////////////////////////////////////////////////////////////////// - //distributions - real f27_W = (D27.f[DIR_P00])[ke]; - real f27_E = (D27.f[DIR_M00])[kw]; - real f27_S = (D27.f[DIR_0P0])[kn]; - real f27_N = (D27.f[DIR_0M0])[ks]; - real f27_B = (D27.f[DIR_00P])[kt]; - real f27_T = (D27.f[DIR_00M])[kb]; - real f27_SW = (D27.f[DIR_PP0])[kne]; - real f27_NE = (D27.f[DIR_MM0])[ksw]; - real f27_NW = (D27.f[DIR_PM0])[kse]; - real f27_SE = (D27.f[DIR_MP0])[knw]; - real f27_BW = (D27.f[DIR_P0P])[kte]; - real f27_TE = (D27.f[DIR_M0M])[kbw]; - real f27_TW = (D27.f[DIR_P0M])[kbe]; - real f27_BE = (D27.f[DIR_M0P])[ktw]; - real f27_BS = (D27.f[DIR_0PP])[ktn]; - real f27_TN = (D27.f[DIR_0MM])[kbs]; - real f27_TS = (D27.f[DIR_0PM])[kbn]; - real f27_BN = (D27.f[DIR_0MP])[kts]; - real f27_ZERO = (D27.f[DIR_000])[kzero]; - real f27_BSW = (D27.f[DIR_PPP])[ktne]; - real f27_BNE = (D27.f[DIR_MMP])[ktsw]; - real f27_BNW = (D27.f[DIR_PMP])[ktse]; - real f27_BSE = (D27.f[DIR_MPP])[ktnw]; - real f27_TSW = (D27.f[DIR_PPM])[kbne]; - real f27_TNE = (D27.f[DIR_MMM])[kbsw]; - real f27_TNW = (D27.f[DIR_PMM])[kbse]; - real f27_TSE = (D27.f[DIR_MPM])[kbnw]; - //////////////////////////////////////////////////////////////////////////////// - real cusq = c3o2*(vx1*vx1 + vx2*vx2 + vx3*vx3); - //////////////////////////////////////////////////////////////////////////////// - //concentration - real ConcD = - (f27_TNE + f27_BSW) + (f27_TSW + f27_BNE) + (f27_TSE + f27_BNW) + (f27_TNW + f27_BSE) + - (f27_NE + f27_SW ) + (f27_NW + f27_SE ) + (f27_TE + f27_BW ) + (f27_BE + f27_TW ) + - (f27_TN + f27_BS ) + (f27_BN + f27_TS ) + - (f27_E + f27_W ) + (f27_N + f27_S ) + (f27_T + f27_B ) + f27_ZERO; - //////////////////////////////////////////////////////////////////////////////// - //calculate non-equilibrium - f27_ZERO -= c8o27* (ConcD-(ConcD+c1o1)*cusq); - f27_E -= c2o27* (ConcD+(ConcD+c1o1)*(c3o1*( vx1 )+c9o2*( vx1 )*( vx1 )-cusq)); - f27_W -= c2o27* (ConcD+(ConcD+c1o1)*(c3o1*(-vx1 )+c9o2*(-vx1 )*(-vx1 )-cusq)); - f27_N -= c2o27* (ConcD+(ConcD+c1o1)*(c3o1*( vx2 )+c9o2*( vx2 )*( vx2 )-cusq)); - f27_S -= c2o27* (ConcD+(ConcD+c1o1)*(c3o1*( -vx2 )+c9o2*( -vx2 )*( -vx2 )-cusq)); - f27_T -= c2o27* (ConcD+(ConcD+c1o1)*(c3o1*( vx3)+c9o2*( vx3)*( vx3)-cusq)); - f27_B -= c2o27* (ConcD+(ConcD+c1o1)*(c3o1*( -vx3)+c9o2*( -vx3)*( -vx3)-cusq)); - f27_NE -= c1o54* (ConcD+(ConcD+c1o1)*(c3o1*( vx1+vx2 )+c9o2*( vx1+vx2 )*( vx1+vx2 )-cusq)); - f27_SW -= c1o54* (ConcD+(ConcD+c1o1)*(c3o1*(-vx1-vx2 )+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cusq)); - f27_SE -= c1o54* (ConcD+(ConcD+c1o1)*(c3o1*( vx1-vx2 )+c9o2*( vx1-vx2 )*( vx1-vx2 )-cusq)); - f27_NW -= c1o54* (ConcD+(ConcD+c1o1)*(c3o1*(-vx1+vx2 )+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cusq)); - f27_TE -= c1o54* (ConcD+(ConcD+c1o1)*(c3o1*( vx1 +vx3)+c9o2*( vx1 +vx3)*( vx1 +vx3)-cusq)); - f27_BW -= c1o54* (ConcD+(ConcD+c1o1)*(c3o1*(-vx1 -vx3)+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cusq)); - f27_BE -= c1o54* (ConcD+(ConcD+c1o1)*(c3o1*( vx1 -vx3)+c9o2*( vx1 -vx3)*( vx1 -vx3)-cusq)); - f27_TW -= c1o54* (ConcD+(ConcD+c1o1)*(c3o1*(-vx1 +vx3)+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cusq)); - f27_TN -= c1o54* (ConcD+(ConcD+c1o1)*(c3o1*( vx2+vx3)+c9o2*( vx2+vx3)*( vx2+vx3)-cusq)); - f27_BS -= c1o54* (ConcD+(ConcD+c1o1)*(c3o1*( -vx2-vx3)+c9o2*( -vx2-vx3)*( -vx2-vx3)-cusq)); - f27_BN -= c1o54* (ConcD+(ConcD+c1o1)*(c3o1*( vx2-vx3)+c9o2*( vx2-vx3)*( vx2-vx3)-cusq)); - f27_TS -= c1o54* (ConcD+(ConcD+c1o1)*(c3o1*( -vx2+vx3)+c9o2*( -vx2+vx3)*( -vx2+vx3)-cusq)); - f27_TNE -= c1o216*(ConcD+(ConcD+c1o1)*(c3o1*( vx1+vx2+vx3)+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cusq)); - f27_BSW -= c1o216*(ConcD+(ConcD+c1o1)*(c3o1*(-vx1-vx2-vx3)+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cusq)); - f27_BNE -= c1o216*(ConcD+(ConcD+c1o1)*(c3o1*( vx1+vx2-vx3)+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cusq)); - f27_TSW -= c1o216*(ConcD+(ConcD+c1o1)*(c3o1*(-vx1-vx2+vx3)+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cusq)); - f27_TSE -= c1o216*(ConcD+(ConcD+c1o1)*(c3o1*( vx1-vx2+vx3)+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cusq)); - f27_BNW -= c1o216*(ConcD+(ConcD+c1o1)*(c3o1*(-vx1+vx2-vx3)+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cusq)); - f27_BSE -= c1o216*(ConcD+(ConcD+c1o1)*(c3o1*( vx1-vx2-vx3)+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cusq)); - f27_TNW -= c1o216*(ConcD+(ConcD+c1o1)*(c3o1*(-vx1+vx2+vx3)+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cusq)); - //////////////////////////////////////////////////////////////////////////////// - ConcD = c0o1; - //////////////////////////////////////////////////////////////////////////////// - //add BC equilibrium - f27_ZERO += c8o27* (ConcD-(ConcD+c1o1)*cusq); - f27_E += c2o27* (ConcD+(ConcD+c1o1)*(c3o1*( vx1 )+c9o2*( vx1 )*( vx1 )-cusq)); - f27_W += c2o27* (ConcD+(ConcD+c1o1)*(c3o1*(-vx1 )+c9o2*(-vx1 )*(-vx1 )-cusq)); - f27_N += c2o27* (ConcD+(ConcD+c1o1)*(c3o1*( vx2 )+c9o2*( vx2 )*( vx2 )-cusq)); - f27_S += c2o27* (ConcD+(ConcD+c1o1)*(c3o1*( -vx2 )+c9o2*( -vx2 )*( -vx2 )-cusq)); - f27_T += c2o27* (ConcD+(ConcD+c1o1)*(c3o1*( vx3)+c9o2*( vx3)*( vx3)-cusq)); - f27_B += c2o27* (ConcD+(ConcD+c1o1)*(c3o1*( -vx3)+c9o2*( -vx3)*( -vx3)-cusq)); - f27_NE += c1o54* (ConcD+(ConcD+c1o1)*(c3o1*( vx1+vx2 )+c9o2*( vx1+vx2 )*( vx1+vx2 )-cusq)); - f27_SW += c1o54* (ConcD+(ConcD+c1o1)*(c3o1*(-vx1-vx2 )+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cusq)); - f27_SE += c1o54* (ConcD+(ConcD+c1o1)*(c3o1*( vx1-vx2 )+c9o2*( vx1-vx2 )*( vx1-vx2 )-cusq)); - f27_NW += c1o54* (ConcD+(ConcD+c1o1)*(c3o1*(-vx1+vx2 )+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cusq)); - f27_TE += c1o54* (ConcD+(ConcD+c1o1)*(c3o1*( vx1 +vx3)+c9o2*( vx1 +vx3)*( vx1 +vx3)-cusq)); - f27_BW += c1o54* (ConcD+(ConcD+c1o1)*(c3o1*(-vx1 -vx3)+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cusq)); - f27_BE += c1o54* (ConcD+(ConcD+c1o1)*(c3o1*( vx1 -vx3)+c9o2*( vx1 -vx3)*( vx1 -vx3)-cusq)); - f27_TW += c1o54* (ConcD+(ConcD+c1o1)*(c3o1*(-vx1 +vx3)+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cusq)); - f27_TN += c1o54* (ConcD+(ConcD+c1o1)*(c3o1*( vx2+vx3)+c9o2*( vx2+vx3)*( vx2+vx3)-cusq)); - f27_BS += c1o54* (ConcD+(ConcD+c1o1)*(c3o1*( -vx2-vx3)+c9o2*( -vx2-vx3)*( -vx2-vx3)-cusq)); - f27_BN += c1o54* (ConcD+(ConcD+c1o1)*(c3o1*( vx2-vx3)+c9o2*( vx2-vx3)*( vx2-vx3)-cusq)); - f27_TS += c1o54* (ConcD+(ConcD+c1o1)*(c3o1*( -vx2+vx3)+c9o2*( -vx2+vx3)*( -vx2+vx3)-cusq)); - f27_TNE += c1o216*(ConcD+(ConcD+c1o1)*(c3o1*( vx1+vx2+vx3)+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cusq)); - f27_BSW += c1o216*(ConcD+(ConcD+c1o1)*(c3o1*(-vx1-vx2-vx3)+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cusq)); - f27_BNE += c1o216*(ConcD+(ConcD+c1o1)*(c3o1*( vx1+vx2-vx3)+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cusq)); - f27_TSW += c1o216*(ConcD+(ConcD+c1o1)*(c3o1*(-vx1-vx2+vx3)+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cusq)); - f27_TSE += c1o216*(ConcD+(ConcD+c1o1)*(c3o1*( vx1-vx2+vx3)+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cusq)); - f27_BNW += c1o216*(ConcD+(ConcD+c1o1)*(c3o1*(-vx1+vx2-vx3)+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cusq)); - f27_BSE += c1o216*(ConcD+(ConcD+c1o1)*(c3o1*( vx1-vx2-vx3)+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cusq)); - f27_TNW += c1o216*(ConcD+(ConcD+c1o1)*(c3o1*(-vx1+vx2+vx3)+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cusq)); - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - __syncthreads(); - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //Neighbors of BC Nodes - //////////////////////////////////////////////////////////////////////////////// - //index neighbor - unsigned int KNQK = k_N[k]; - unsigned int kNzero = KNQK; - unsigned int kNe = KNQK; - unsigned int kNw = neighborX[KNQK]; - unsigned int kNn = KNQK; - unsigned int kNs = neighborY[KNQK]; - unsigned int kNt = KNQK; - unsigned int kNb = neighborZ[KNQK]; - unsigned int kNsw = neighborY[kNw]; - unsigned int kNne = KNQK; - unsigned int kNse = kNs; - unsigned int kNnw = kNw; - unsigned int kNbw = neighborZ[kNw]; - unsigned int kNte = KNQK; - unsigned int kNbe = kNb; - unsigned int kNtw = kNw; - unsigned int kNbs = neighborZ[kNs]; - unsigned int kNtn = KNQK; - unsigned int kNbn = kNb; - unsigned int kNts = kNs; - unsigned int kNtse = kNs; - unsigned int kNbnw = kNbw; - unsigned int kNtnw = kNw; - unsigned int kNbse = kNbs; - unsigned int kNtsw = kNsw; - unsigned int kNbne = kNb; - unsigned int kNtne = KNQK; - unsigned int kNbsw = neighborZ[kNsw]; - //////////////////////////////////////////////////////////////////////////////// - //update distributions at neighbor nodes - (D27.f[DIR_P00])[kNe ] = f27_W ; - (D27.f[DIR_M00])[kNw ] = f27_E ; - (D27.f[DIR_0P0])[kNn ] = f27_S ; - (D27.f[DIR_0M0])[kNs ] = f27_N ; - (D27.f[DIR_00P])[kNt ] = f27_B ; - (D27.f[DIR_00M])[kNb ] = f27_T ; - (D27.f[DIR_PP0])[kNne ] = f27_SW ; - (D27.f[DIR_MM0])[kNsw ] = f27_NE ; - (D27.f[DIR_PM0])[kNse ] = f27_NW ; - (D27.f[DIR_MP0])[kNnw ] = f27_SE ; - (D27.f[DIR_P0P])[kNte ] = f27_BW ; - (D27.f[DIR_M0M])[kNbw ] = f27_TE ; - (D27.f[DIR_P0M])[kNbe ] = f27_TW ; - (D27.f[DIR_M0P])[kNtw ] = f27_BE ; - (D27.f[DIR_0PP])[kNtn ] = f27_BS ; - (D27.f[DIR_0MM])[kNbs ] = f27_TN ; - (D27.f[DIR_0PM])[kNbn ] = f27_TS ; - (D27.f[DIR_0MP])[kNts ] = f27_BN ; - (D27.f[DIR_000])[kNzero] = f27_ZERO; - (D27.f[DIR_PPP])[kNtne ] = f27_BSW ; - (D27.f[DIR_MMP])[kNtsw ] = f27_BNE ; - (D27.f[DIR_PMP])[kNtse ] = f27_BNW ; - (D27.f[DIR_MPP])[kNtnw ] = f27_BSE ; - (D27.f[DIR_PPM])[kNbne ] = f27_TSW ; - (D27.f[DIR_MMM])[kNbsw ] = f27_TNE ; - (D27.f[DIR_PMM])[kNbse ] = f27_TNW ; - (D27.f[DIR_MPM])[kNbnw ] = f27_TSE ; - } -} -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -////////////////////////////////////////////////////////////////////////////// -__global__ void QADVel7( real* DD, - real* DD7, - real* temp, - real* velo, - real diffusivity, - int* k_Q, - real* QQ, - unsigned int numberOfBCnodes, - real om1, - unsigned int* neighborX, - unsigned int* neighborY, - unsigned int* neighborZ, - unsigned long long numberOfLBnodes, - bool isEvenTimestep) -{ - Distributions27 D; - if (isEvenTimestep==true) - { - D.f[DIR_P00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_M00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_PMP * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_MPM * numberOfLBnodes]; - } - else - { - D.f[DIR_M00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_P00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_MPM * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_PMP * numberOfLBnodes]; - } - - Distributions7 D7; - if (isEvenTimestep==true) - { - D7.f[0] = &DD7[0*numberOfLBnodes]; - D7.f[1] = &DD7[1*numberOfLBnodes]; - D7.f[2] = &DD7[2*numberOfLBnodes]; - D7.f[3] = &DD7[3*numberOfLBnodes]; - D7.f[4] = &DD7[4*numberOfLBnodes]; - D7.f[5] = &DD7[5*numberOfLBnodes]; - D7.f[6] = &DD7[6*numberOfLBnodes]; - } - else - { - D7.f[0] = &DD7[0*numberOfLBnodes]; - D7.f[2] = &DD7[1*numberOfLBnodes]; - D7.f[1] = &DD7[2*numberOfLBnodes]; - D7.f[4] = &DD7[3*numberOfLBnodes]; - D7.f[3] = &DD7[4*numberOfLBnodes]; - D7.f[6] = &DD7[5*numberOfLBnodes]; - D7.f[5] = &DD7[6*numberOfLBnodes]; - } - - - //////////////////////////////////////////////////////////////////////////////// - const unsigned x = threadIdx.x; // Globaler x-Index - const unsigned y = blockIdx.x; // Globaler y-Index - const unsigned z = blockIdx.y; // Globaler z-Index - - const unsigned nx = blockDim.x; - const unsigned ny = gridDim.x; - - const unsigned k = nx*(ny*z + y) + x; - ////////////////////////////////////////////////////////////////////////// - - if(k<numberOfBCnodes) - { - ////////////////////////////////////////////////////////////////////////////////// - real *q_dirE, *q_dirW, *q_dirN, *q_dirS, *q_dirT, *q_dirB;//, - - q_dirE = &QQ[DIR_P00 * numberOfBCnodes]; - q_dirW = &QQ[DIR_M00 * numberOfBCnodes]; - q_dirN = &QQ[DIR_0P0 * numberOfBCnodes]; - q_dirS = &QQ[DIR_0M0 * numberOfBCnodes]; - q_dirT = &QQ[DIR_00P * numberOfBCnodes]; - q_dirB = &QQ[DIR_00M * 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]; - 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 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[DIR_P00])[ke ]; - f_E = (D.f[DIR_M00])[kw ]; - f_S = (D.f[DIR_0P0])[kn ]; - f_N = (D.f[DIR_0M0])[ks ]; - f_B = (D.f[DIR_00P])[kt ]; - f_T = (D.f[DIR_00M])[kb ]; - f_SW = (D.f[DIR_PP0])[kne ]; - f_NE = (D.f[DIR_MM0])[ksw ]; - f_NW = (D.f[DIR_PM0])[kse ]; - f_SE = (D.f[DIR_MP0])[knw ]; - f_BW = (D.f[DIR_P0P])[kte ]; - f_TE = (D.f[DIR_M0M])[kbw ]; - f_TW = (D.f[DIR_P0M])[kbe ]; - f_BE = (D.f[DIR_M0P])[ktw ]; - f_BS = (D.f[DIR_0PP])[ktn ]; - f_TN = (D.f[DIR_0MM])[kbs ]; - f_TS = (D.f[DIR_0PM])[kbn ]; - f_BN = (D.f[DIR_0MP])[kts ]; - f_BSW = (D.f[DIR_PPP])[ktne ]; - f_BNE = (D.f[DIR_MMP])[ktsw ]; - f_BNW = (D.f[DIR_PMP])[ktse ]; - f_BSE = (D.f[DIR_MPP])[ktnw ]; - f_TSW = (D.f[DIR_PPM])[kbne ]; - f_TNE = (D.f[DIR_MMM])[kbsw ]; - f_TNW = (D.f[DIR_PMM])[kbse ]; - f_TSE = (D.f[DIR_MPM])[kbnw ]; - //////////////////////////////////////////////////////////////////////////////// - /*real drho*/; - real vx1_Inflow = c0o1; - real vx2_Inflow = c0o1; - real vx3_Inflow = velo[k]; - real ux_sq_Inflow = vx1_Inflow * vx1_Inflow; - real uy_sq_Inflow = vx2_Inflow * vx2_Inflow; - real uz_sq_Inflow = vx3_Inflow * vx3_Inflow; - - - ////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[DIR_000])[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); - - //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); - - //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); - - 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[DIR_000])[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)); - real 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)); - real 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 cu_sq =1.5f*(vx1*vx1+vx2*vx2+vx3*vx3); - real ux_sq = vx1 * vx1; - real uy_sq = vx2 * vx2; - real uz_sq = vx3 * vx3; - real omegaD = c3o1 - sqrt(c3o1); - real Lam = -(c1o2-c1o1/omegaD); - real nue_d = Lam/c3o1; - //real ae = zero; - real ae = diffusivity/nue_d - c1o1; - - real f7_ZERO,f7_E,f7_W,f7_N,f7_S,f7_T,f7_B; - real /*feq7_ZERO,*/feq7_E,feq7_W,feq7_N,feq7_S,feq7_T,feq7_B; - real /*feqW7_ZERO,*/feqW7_E,feqW7_W,feqW7_N,feqW7_S,feqW7_T,feqW7_B; - real TempD = temp[k]; - - - f7_ZERO = (D7.f[0])[kzero]; - f7_W = (D7.f[1])[ke ]; - f7_E = (D7.f[2])[kw ]; - f7_S = (D7.f[3])[kn ]; - f7_N = (D7.f[4])[ks ]; - f7_B = (D7.f[5])[kt ]; - f7_T = (D7.f[6])[kb ]; - - real ConcD = f7_ZERO + f7_E + f7_W + f7_N + f7_S + f7_T + f7_B; - - //feq7_ZERO = ConcD*(c1o3*(ae*(-three))-(ux_sq+uy_sq+uz_sq)); - feq7_E = ConcD*(c1o6*(ae+c1o1)+c1o2*(ux_sq)+vx1*c1o2); - feq7_W = ConcD*(c1o6*(ae+c1o1)+c1o2*(ux_sq)-vx1*c1o2); - feq7_N = ConcD*(c1o6*(ae+c1o1)+c1o2*(uy_sq)+vx2*c1o2); - feq7_S = ConcD*(c1o6*(ae+c1o1)+c1o2*(uy_sq)-vx2*c1o2); - feq7_T = ConcD*(c1o6*(ae+c1o1)+c1o2*(uz_sq)+vx3*c1o2); - feq7_B = ConcD*(c1o6*(ae+c1o1)+c1o2*(uz_sq)-vx3*c1o2); - - //feq7_ZERO = TempD*(c1o3*(ae*(-three))-(ux_sq+uy_sq+uz_sq)); - feqW7_E = TempD*(c1o6*(ae+c1o1)+c1o2*(ux_sq_Inflow)+vx1_Inflow*c1o2); - feqW7_W = TempD*(c1o6*(ae+c1o1)+c1o2*(ux_sq_Inflow)-vx1_Inflow*c1o2); - feqW7_N = TempD*(c1o6*(ae+c1o1)+c1o2*(uy_sq_Inflow)+vx2_Inflow*c1o2); - feqW7_S = TempD*(c1o6*(ae+c1o1)+c1o2*(uy_sq_Inflow)-vx2_Inflow*c1o2); - feqW7_T = TempD*(c1o6*(ae+c1o1)+c1o2*(uz_sq_Inflow)+vx3_Inflow*c1o2); - feqW7_B = TempD*(c1o6*(ae+c1o1)+c1o2*(uz_sq_Inflow)-vx3_Inflow*c1o2); - - ////////////////////////////////////////////////////////////////////////// - //pointertausch - if (isEvenTimestep==false) - { - D7.f[0] = &DD7[0*numberOfLBnodes]; - D7.f[1] = &DD7[1*numberOfLBnodes]; - D7.f[2] = &DD7[2*numberOfLBnodes]; - D7.f[3] = &DD7[3*numberOfLBnodes]; - D7.f[4] = &DD7[4*numberOfLBnodes]; - D7.f[5] = &DD7[5*numberOfLBnodes]; - D7.f[6] = &DD7[6*numberOfLBnodes]; - } - else - { - D7.f[0] = &DD7[0*numberOfLBnodes]; - D7.f[2] = &DD7[1*numberOfLBnodes]; - D7.f[1] = &DD7[2*numberOfLBnodes]; - D7.f[4] = &DD7[3*numberOfLBnodes]; - D7.f[3] = &DD7[4*numberOfLBnodes]; - D7.f[6] = &DD7[5*numberOfLBnodes]; - D7.f[5] = &DD7[6*numberOfLBnodes]; - } - - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //Test - //(D.f[DIR_000])[k]=c1o10; - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //(D7.f[1])[ke ] = f7_E - feq7_E + feqW7_W; //DIR_P00 - //(D7.f[2])[kw ] = f7_W - feq7_W + feqW7_E; //DIR_M00 - //(D7.f[3])[kn ] = f7_N - feq7_N + feqW7_S; //DIR_0P0 - //(D7.f[4])[ks ] = f7_S - feq7_S + feqW7_N; //DIR_0M0 - //(D7.f[5])[kt ] = f7_T - feq7_T + feqW7_B; //DIR_00P - //(D7.f[6])[kb ] = f7_B - feq7_B + feqW7_T; //DIR_00M - - ////////////////////////////////////////////////////////////////////////// - //mit Q's - real /*feq,*/ q; - q = q_dirE[k]; - if (q>=c0o1 && q<=c1o1) - { - //q=0.; - (D7.f[2])[kw]=(c2o1*feqW7_W-(f7_E*(q*omegaD-c1o1)-omegaD*feq7_E*(q-c1o1))/(omegaD-c1o1)+f7_W*q)/(q+c1o1);//f7_W - feq7_W + feqW7_E; - } - - q = q_dirW[k]; - if (q>=c0o1 && q<=c1o1) - { - //q=0.; - (D7.f[1])[ke]=(c2o1*feqW7_E-(f7_W*(q*omegaD-c1o1)-omegaD*feq7_W*(q-c1o1))/(omegaD-c1o1)+f7_E*q)/(q+c1o1);//f7_E - feq7_E + feqW7_W; - } - - q = q_dirN[k]; - if (q>=c0o1 && q<=c1o1) - { - //q=0.; - (D7.f[4])[ks]=(c2o1*feqW7_S-(f7_N*(q*omegaD-c1o1)-omegaD*feq7_N*(q-c1o1))/(omegaD-c1o1)+f7_S*q)/(q+c1o1);//f7_S - feq7_S + feqW7_N; - } - - q = q_dirS[k]; - if (q>=c0o1 && q<=c1o1) - { - //q=0.; - (D7.f[3])[kn]=(c2o1*feqW7_N-(f7_S*(q*omegaD-c1o1)-omegaD*feq7_S*(q-c1o1))/(omegaD-c1o1)+f7_N*q)/(q+c1o1);//f7_N - feq7_N + feqW7_S; - } - - q = q_dirT[k]; - if (q>=c0o1 && q<=c1o1) - { - //q=0.; - (D7.f[6])[kb]=(c2o1*feqW7_B-(f7_T*(q*omegaD-c1o1)-omegaD*feq7_T*(q-c1o1))/(omegaD-c1o1)+f7_B*q)/(q+c1o1);//f7_B - feq7_B + feqW7_T; - } - - q = q_dirB[k]; - if (q>=c0o1 && q<=c1o1) - { - //q=0.; - (D7.f[5])[kt]=(c2o1*feqW7_T-(f7_B*(q*omegaD-c1o1)-omegaD*feq7_B*(q-c1o1))/(omegaD-c1o1)+f7_T*q)/(q+c1o1);//f7_T - feq7_T + feqW7_B; - } - - //////////////////////////////////////////////////////////////////////////// - ////ohne Q's - //real /*feq,*/ q; - //q = q_dirE[k]; - //if (q>=zero && q<=one) - //{ - // (D7.f[2])[kw]=f7_W - feq7_W + feqW7_E; - //} - - //q = q_dirW[k]; - //if (q>=zero && q<=one) - //{ - // (D7.f[1])[ke]=f7_E - feq7_E + feqW7_W; - //} - - //q = q_dirN[k]; - //if (q>=zero && q<=one) - //{ - // (D7.f[4])[ks]=f7_S - feq7_S + feqW7_N; - //} - - //q = q_dirS[k]; - //if (q>=zero && q<=one) - //{ - // (D7.f[3])[kn]=f7_N - feq7_N + feqW7_S; - //} - - //q = q_dirT[k]; - //if (q>=zero && q<=one) - //{ - // (D7.f[6])[kb]=f7_B - feq7_B + feqW7_T; - //} - - //q = q_dirB[k]; - //if (q>=zero && q<=one) - //{ - // (D7.f[5])[kt]=f7_T - feq7_T + feqW7_B; - //} - } -} -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -////////////////////////////////////////////////////////////////////////////// -__global__ void QADVel27(real* DD, - real* DD27, - real* temp, - real* velo, - real diffusivity, - int* k_Q, - real* QQ, - unsigned int numberOfBCnodes, - real om1, - unsigned int* neighborX, - unsigned int* neighborY, - unsigned int* neighborZ, - unsigned long long numberOfLBnodes, - bool isEvenTimestep) -{ - Distributions27 D; - if (isEvenTimestep==true) - { - D.f[DIR_P00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_M00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_PMP * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_MPM * numberOfLBnodes]; - } - else - { - D.f[DIR_M00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_P00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_MPM * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_PMP * numberOfLBnodes]; - } - - Distributions27 D27; - if (isEvenTimestep==true) - { - D27.f[DIR_P00] = &DD27[DIR_P00 * numberOfLBnodes]; - D27.f[DIR_M00] = &DD27[DIR_M00 * numberOfLBnodes]; - D27.f[DIR_0P0] = &DD27[DIR_0P0 * numberOfLBnodes]; - D27.f[DIR_0M0] = &DD27[DIR_0M0 * numberOfLBnodes]; - D27.f[DIR_00P] = &DD27[DIR_00P * numberOfLBnodes]; - D27.f[DIR_00M] = &DD27[DIR_00M * numberOfLBnodes]; - D27.f[DIR_PP0] = &DD27[DIR_PP0 * numberOfLBnodes]; - D27.f[DIR_MM0] = &DD27[DIR_MM0 * numberOfLBnodes]; - D27.f[DIR_PM0] = &DD27[DIR_PM0 * numberOfLBnodes]; - D27.f[DIR_MP0] = &DD27[DIR_MP0 * numberOfLBnodes]; - D27.f[DIR_P0P] = &DD27[DIR_P0P * numberOfLBnodes]; - D27.f[DIR_M0M] = &DD27[DIR_M0M * numberOfLBnodes]; - D27.f[DIR_P0M] = &DD27[DIR_P0M * numberOfLBnodes]; - D27.f[DIR_M0P] = &DD27[DIR_M0P * numberOfLBnodes]; - D27.f[DIR_0PP] = &DD27[DIR_0PP * numberOfLBnodes]; - D27.f[DIR_0MM] = &DD27[DIR_0MM * numberOfLBnodes]; - D27.f[DIR_0PM] = &DD27[DIR_0PM * numberOfLBnodes]; - D27.f[DIR_0MP] = &DD27[DIR_0MP * numberOfLBnodes]; - D27.f[DIR_000] = &DD27[DIR_000 * numberOfLBnodes]; - D27.f[DIR_PPP] = &DD27[DIR_PPP * numberOfLBnodes]; - D27.f[DIR_MMP] = &DD27[DIR_MMP * numberOfLBnodes]; - D27.f[DIR_PMP] = &DD27[DIR_PMP * numberOfLBnodes]; - D27.f[DIR_MPP] = &DD27[DIR_MPP * numberOfLBnodes]; - D27.f[DIR_PPM] = &DD27[DIR_PPM * numberOfLBnodes]; - D27.f[DIR_MMM] = &DD27[DIR_MMM * numberOfLBnodes]; - D27.f[DIR_PMM] = &DD27[DIR_PMM * numberOfLBnodes]; - D27.f[DIR_MPM] = &DD27[DIR_MPM * numberOfLBnodes]; - } - else - { - D27.f[DIR_M00] = &DD27[DIR_P00 * numberOfLBnodes]; - D27.f[DIR_P00] = &DD27[DIR_M00 * numberOfLBnodes]; - D27.f[DIR_0M0] = &DD27[DIR_0P0 * numberOfLBnodes]; - D27.f[DIR_0P0] = &DD27[DIR_0M0 * numberOfLBnodes]; - D27.f[DIR_00M] = &DD27[DIR_00P * numberOfLBnodes]; - D27.f[DIR_00P] = &DD27[DIR_00M * numberOfLBnodes]; - D27.f[DIR_MM0] = &DD27[DIR_PP0 * numberOfLBnodes]; - D27.f[DIR_PP0] = &DD27[DIR_MM0 * numberOfLBnodes]; - D27.f[DIR_MP0] = &DD27[DIR_PM0 * numberOfLBnodes]; - D27.f[DIR_PM0] = &DD27[DIR_MP0 * numberOfLBnodes]; - D27.f[DIR_M0M] = &DD27[DIR_P0P * numberOfLBnodes]; - D27.f[DIR_P0P] = &DD27[DIR_M0M * numberOfLBnodes]; - D27.f[DIR_M0P] = &DD27[DIR_P0M * numberOfLBnodes]; - D27.f[DIR_P0M] = &DD27[DIR_M0P * numberOfLBnodes]; - D27.f[DIR_0MM] = &DD27[DIR_0PP * numberOfLBnodes]; - D27.f[DIR_0PP] = &DD27[DIR_0MM * numberOfLBnodes]; - D27.f[DIR_0MP] = &DD27[DIR_0PM * numberOfLBnodes]; - D27.f[DIR_0PM] = &DD27[DIR_0MP * numberOfLBnodes]; - D27.f[DIR_000] = &DD27[DIR_000 * numberOfLBnodes]; - D27.f[DIR_PPP] = &DD27[DIR_MMM * numberOfLBnodes]; - D27.f[DIR_MMP] = &DD27[DIR_PPM * numberOfLBnodes]; - D27.f[DIR_PMP] = &DD27[DIR_MPM * numberOfLBnodes]; - D27.f[DIR_MPP] = &DD27[DIR_PMM * numberOfLBnodes]; - D27.f[DIR_PPM] = &DD27[DIR_MMP * numberOfLBnodes]; - D27.f[DIR_MMM] = &DD27[DIR_PPP * numberOfLBnodes]; - D27.f[DIR_PMM] = &DD27[DIR_MPP * numberOfLBnodes]; - D27.f[DIR_MPM] = &DD27[DIR_PMP * numberOfLBnodes]; - } - //////////////////////////////////////////////////////////////////////////////// - const unsigned x = threadIdx.x; // Globaler x-Index - const unsigned y = blockIdx.x; // Globaler y-Index - const unsigned z = blockIdx.y; // Globaler z-Index - - const unsigned nx = blockDim.x; - const unsigned ny = gridDim.x; - - const unsigned k = nx*(ny*z + y) + x; - ////////////////////////////////////////////////////////////////////////// - - if(k<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[DIR_P00 * numberOfBCnodes]; - q_dirW = &QQ[DIR_M00 * numberOfBCnodes]; - q_dirN = &QQ[DIR_0P0 * numberOfBCnodes]; - q_dirS = &QQ[DIR_0M0 * numberOfBCnodes]; - q_dirT = &QQ[DIR_00P * numberOfBCnodes]; - q_dirB = &QQ[DIR_00M * numberOfBCnodes]; - q_dirNE = &QQ[DIR_PP0 * numberOfBCnodes]; - q_dirSW = &QQ[DIR_MM0 * numberOfBCnodes]; - q_dirSE = &QQ[DIR_PM0 * numberOfBCnodes]; - q_dirNW = &QQ[DIR_MP0 * numberOfBCnodes]; - q_dirTE = &QQ[DIR_P0P * numberOfBCnodes]; - q_dirBW = &QQ[DIR_M0M * numberOfBCnodes]; - q_dirBE = &QQ[DIR_P0M * numberOfBCnodes]; - q_dirTW = &QQ[DIR_M0P * numberOfBCnodes]; - q_dirTN = &QQ[DIR_0PP * numberOfBCnodes]; - q_dirBS = &QQ[DIR_0MM * numberOfBCnodes]; - q_dirBN = &QQ[DIR_0PM * numberOfBCnodes]; - q_dirTS = &QQ[DIR_0MP * numberOfBCnodes]; - q_dirTNE = &QQ[DIR_PPP * numberOfBCnodes]; - q_dirTSW = &QQ[DIR_MMP * numberOfBCnodes]; - q_dirTSE = &QQ[DIR_PMP * numberOfBCnodes]; - q_dirTNW = &QQ[DIR_MPP * numberOfBCnodes]; - q_dirBNE = &QQ[DIR_PPM * numberOfBCnodes]; - q_dirBSW = &QQ[DIR_MMM * numberOfBCnodes]; - q_dirBSE = &QQ[DIR_PMM * numberOfBCnodes]; - q_dirBNW = &QQ[DIR_MPM * 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]; - 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 f_W = (D.f[DIR_P00])[ke ]; - real f_E = (D.f[DIR_M00])[kw ]; - real f_S = (D.f[DIR_0P0])[kn ]; - real f_N = (D.f[DIR_0M0])[ks ]; - real f_B = (D.f[DIR_00P])[kt ]; - real f_T = (D.f[DIR_00M])[kb ]; - real f_SW = (D.f[DIR_PP0])[kne ]; - real f_NE = (D.f[DIR_MM0])[ksw ]; - real f_NW = (D.f[DIR_PM0])[kse ]; - real f_SE = (D.f[DIR_MP0])[knw ]; - real f_BW = (D.f[DIR_P0P])[kte ]; - real f_TE = (D.f[DIR_M0M])[kbw ]; - real f_TW = (D.f[DIR_P0M])[kbe ]; - real f_BE = (D.f[DIR_M0P])[ktw ]; - real f_BS = (D.f[DIR_0PP])[ktn ]; - real f_TN = (D.f[DIR_0MM])[kbs ]; - real f_TS = (D.f[DIR_0PM])[kbn ]; - real f_BN = (D.f[DIR_0MP])[kts ]; - real f_ZERO = (D.f[DIR_000])[kzero]; - real f_BSW = (D.f[DIR_PPP])[ktne ]; - real f_BNE = (D.f[DIR_MMP])[ktsw ]; - real f_BNW = (D.f[DIR_PMP])[ktse ]; - real f_BSE = (D.f[DIR_MPP])[ktnw ]; - real f_TSW = (D.f[DIR_PPM])[kbne ]; - real f_TNE = (D.f[DIR_MMM])[kbsw ]; - real f_TNW = (D.f[DIR_PMM])[kbse ]; - real f_TSE = (D.f[DIR_MPM])[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 + f_ZERO; - - //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); - - - //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); - - //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)+ f_ZERO; - 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)); - 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[DIR_P00])[ke ]; - //real f27_E = (D27.f[DIR_M00])[kw ]; - //real f27_S = (D27.f[DIR_0P0])[kn ]; - //real f27_N = (D27.f[DIR_0M0])[ks ]; - //real f27_B = (D27.f[DIR_00P])[kt ]; - //real f27_T = (D27.f[DIR_00M])[kb ]; - //real f27_SW = (D27.f[DIR_PP0])[kne ]; - //real f27_NE = (D27.f[DIR_MM0])[ksw ]; - //real f27_NW = (D27.f[DIR_PM0])[kse ]; - //real f27_SE = (D27.f[DIR_MP0])[knw ]; - //real f27_BW = (D27.f[DIR_P0P])[kte ]; - //real f27_TE = (D27.f[DIR_M0M])[kbw ]; - //real f27_TW = (D27.f[DIR_P0M])[kbe ]; - //real f27_BE = (D27.f[DIR_M0P])[ktw ]; - //real f27_BS = (D27.f[DIR_0PP])[ktn ]; - //real f27_TN = (D27.f[DIR_0MM])[kbs ]; - //real f27_TS = (D27.f[DIR_0PM])[kbn ]; - //real f27_BN = (D27.f[DIR_0MP])[kts ]; - //real f27_ZERO = (D27.f[DIR_000])[kzero]; - //real f27_BSW = (D27.f[DIR_PPP])[ktne ]; - //real f27_BNE = (D27.f[DIR_MMP])[ktsw ]; - //real f27_BNW = (D27.f[DIR_PMP])[ktse ]; - //real f27_BSE = (D27.f[DIR_MPP])[ktnw ]; - //real f27_TSW = (D27.f[DIR_PPM])[kbne ]; - //real f27_TNE = (D27.f[DIR_MMM])[kbsw ]; - //real f27_TNW = (D27.f[DIR_PMM])[kbse ]; - //real f27_TSE = (D27.f[DIR_MPM])[kbnw ]; - //////////////////////////////////////////////////////////////////////////////// - real cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3); - //////////////////////////////////////////////////////////////////////////////// - //real ConcD = f27_TSE + f27_TNW + f27_TNE + f27_TSW + f27_BSE + f27_BNW + f27_BNE + f27_BSW + - // f27_BN + f27_TS + f27_TN + f27_BS + f27_BE + f27_TW + f27_TE + f27_BW + f27_SE + f27_NW + f27_NE + f27_SW + - // f27_T + f27_B + f27_N + f27_S + f27_E + f27_W + f27_ZERO; - - //real feq27_ZERO = c8over27* ConcD*(one-cu_sq); - //real feq27_E = c2o27* ConcD*(c1o1+c3o1*( vx1 )+c9o2*( vx1 )*( vx1 )-cu_sq); - //real feq27_W = c2o27* ConcD*(c1o1+c3o1*(-vx1 )+c9o2*(-vx1 )*(-vx1 )-cu_sq); - //real feq27_N = c2o27* ConcD*(c1o1+c3o1*( vx2 )+c9o2*( vx2 )*( vx2 )-cu_sq); - //real feq27_S = c2o27* ConcD*(c1o1+c3o1*( -vx2 )+c9o2*( -vx2 )*( -vx2 )-cu_sq); - //real feq27_T = c2o27* ConcD*(c1o1+c3o1*( vx3)+c9o2*( vx3)*( vx3)-cu_sq); - //real feq27_B = c2o27* ConcD*(c1o1+c3o1*( -vx3)+c9o2*( -vx3)*( -vx3)-cu_sq); - //real feq27_NE = c1o54* ConcD*(c1o1+c3o1*( vx1+vx2 )+c9o2*( vx1+vx2 )*( vx1+vx2 )-cu_sq); - //real feq27_SW = c1o54* ConcD*(c1o1+c3o1*(-vx1-vx2 )+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq); - //real feq27_SE = c1o54* ConcD*(c1o1+c3o1*( vx1-vx2 )+c9o2*( vx1-vx2 )*( vx1-vx2 )-cu_sq); - //real feq27_NW = c1o54* ConcD*(c1o1+c3o1*(-vx1+vx2 )+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq); - //real feq27_TE = c1o54* ConcD*(c1o1+c3o1*( vx1 +vx3)+c9o2*( vx1 +vx3)*( vx1 +vx3)-cu_sq); - //real feq27_BW = c1o54* ConcD*(c1o1+c3o1*(-vx1 -vx3)+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq); - //real feq27_BE = c1o54* ConcD*(c1o1+c3o1*( vx1 -vx3)+c9o2*( vx1 -vx3)*( vx1 -vx3)-cu_sq); - //real feq27_TW = c1o54* ConcD*(c1o1+c3o1*(-vx1 +vx3)+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq); - //real feq27_TN = c1o54* ConcD*(c1o1+c3o1*( vx2+vx3)+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq); - //real feq27_BS = c1o54* ConcD*(c1o1+c3o1*( -vx2-vx3)+c9o2*( -vx2-vx3)*( -vx2-vx3)-cu_sq); - //real feq27_BN = c1o54* ConcD*(c1o1+c3o1*( vx2-vx3)+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq); - //real feq27_TS = c1o54* ConcD*(c1o1+c3o1*( -vx2+vx3)+c9o2*( -vx2+vx3)*( -vx2+vx3)-cu_sq); - //real feq27_TNE = c1o216*ConcD*(c1o1+c3o1*( vx1+vx2+vx3)+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq); - //real feq27_BSW = c1o216*ConcD*(c1o1+c3o1*(-vx1-vx2-vx3)+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq); - //real feq27_BNE = c1o216*ConcD*(c1o1+c3o1*( vx1+vx2-vx3)+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq); - //real feq27_TSW = c1o216*ConcD*(c1o1+c3o1*(-vx1-vx2+vx3)+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq); - //real feq27_TSE = c1o216*ConcD*(c1o1+c3o1*( vx1-vx2+vx3)+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq); - //real feq27_BNW = c1o216*ConcD*(c1o1+c3o1*(-vx1+vx2-vx3)+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq); - //real feq27_BSE = c1o216*ConcD*(c1o1+c3o1*( vx1-vx2-vx3)+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq); - //real feq27_TNW = c1o216*ConcD*(c1o1+c3o1*(-vx1+vx2+vx3)+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq); - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real TempD = temp[k]; - //real TempD = four; - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - // velocity inflow - //vx1 = velo[k]; //zero; - //vx2 = zero; //velo[k];//zero;//velo[k]; - //vx3 = zero; - - ////real feqW27_ZERO = c8over27* TempD*(one-cu_sq); - //real feqW27_E = c2over27* (TempD+(one+TempD)*(three*( vx1 )+c9over2*( vx1 )*( vx1 )-cu_sq)); - //real feqW27_W = c2over27* (TempD+(one+TempD)*(three*(-vx1 )+c9over2*(-vx1 )*(-vx1 )-cu_sq)); - //real feqW27_N = c2over27* (TempD+(one+TempD)*(three*( vx2 )+c9over2*( vx2 )*( vx2 )-cu_sq)); - //real feqW27_S = c2over27* (TempD+(one+TempD)*(three*( -vx2 )+c9over2*( -vx2 )*( -vx2 )-cu_sq)); - //real feqW27_T = c2over27* (TempD+(one+TempD)*(three*( vx3)+c9over2*( vx3)*( vx3)-cu_sq)); - //real feqW27_B = c2over27* (TempD+(one+TempD)*(three*( -vx3)+c9over2*( -vx3)*( -vx3)-cu_sq)); - //real feqW27_NE = c1over54* (TempD+(one+TempD)*(three*( vx1+vx2 )+c9over2*( vx1+vx2 )*( vx1+vx2 )-cu_sq)); - //real feqW27_SW = c1over54* (TempD+(one+TempD)*(three*(-vx1-vx2 )+c9over2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq)); - //real feqW27_SE = c1over54* (TempD+(one+TempD)*(three*( vx1-vx2 )+c9over2*( vx1-vx2 )*( vx1-vx2 )-cu_sq)); - //real feqW27_NW = c1over54* (TempD+(one+TempD)*(three*(-vx1+vx2 )+c9over2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq)); - //real feqW27_TE = c1over54* (TempD+(one+TempD)*(three*( vx1 +vx3)+c9over2*( vx1 +vx3)*( vx1 +vx3)-cu_sq)); - //real feqW27_BW = c1over54* (TempD+(one+TempD)*(three*(-vx1 -vx3)+c9over2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq)); - //real feqW27_BE = c1over54* (TempD+(one+TempD)*(three*( vx1 -vx3)+c9over2*( vx1 -vx3)*( vx1 -vx3)-cu_sq)); - //real feqW27_TW = c1over54* (TempD+(one+TempD)*(three*(-vx1 +vx3)+c9over2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq)); - //real feqW27_TN = c1over54* (TempD+(one+TempD)*(three*( vx2+vx3)+c9over2*( vx2+vx3)*( vx2+vx3)-cu_sq)); - //real feqW27_BS = c1over54* (TempD+(one+TempD)*(three*( -vx2-vx3)+c9over2*( -vx2-vx3)*( -vx2-vx3)-cu_sq)); - //real feqW27_BN = c1over54* (TempD+(one+TempD)*(three*( vx2-vx3)+c9over2*( vx2-vx3)*( vx2-vx3)-cu_sq)); - //real feqW27_TS = c1over54* (TempD+(one+TempD)*(three*( -vx2+vx3)+c9over2*( -vx2+vx3)*( -vx2+vx3)-cu_sq)); - //real feqW27_TNE = c1over216*(TempD+(one+TempD)*(three*( vx1+vx2+vx3)+c9over2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq)); - //real feqW27_BSW = c1over216*(TempD+(one+TempD)*(three*(-vx1-vx2-vx3)+c9over2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq)); - //real feqW27_BNE = c1over216*(TempD+(one+TempD)*(three*( vx1+vx2-vx3)+c9over2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq)); - //real feqW27_TSW = c1over216*(TempD+(one+TempD)*(three*(-vx1-vx2+vx3)+c9over2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq)); - //real feqW27_TSE = c1over216*(TempD+(one+TempD)*(three*( vx1-vx2+vx3)+c9over2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq)); - //real feqW27_BNW = c1over216*(TempD+(one+TempD)*(three*(-vx1+vx2-vx3)+c9over2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq)); - //real feqW27_BSE = c1over216*(TempD+(one+TempD)*(three*( vx1-vx2-vx3)+c9over2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq)); - //real feqW27_TNW = c1over216*(TempD+(one+TempD)*(three*(-vx1+vx2+vx3)+c9over2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq)); - // - real feqW27_E = c2o27* TempD*(c1o1+c3o1*( vx1 )+c9o2*( vx1 )*( vx1 )-cu_sq); - real feqW27_W = c2o27* TempD*(c1o1+c3o1*(-vx1 )+c9o2*(-vx1 )*(-vx1 )-cu_sq); - real feqW27_N = c2o27* TempD*(c1o1+c3o1*( vx2 )+c9o2*( vx2 )*( vx2 )-cu_sq); - real feqW27_S = c2o27* TempD*(c1o1+c3o1*( -vx2 )+c9o2*( -vx2 )*( -vx2 )-cu_sq); - real feqW27_T = c2o27* TempD*(c1o1+c3o1*( vx3)+c9o2*( vx3)*( vx3)-cu_sq); - real feqW27_B = c2o27* TempD*(c1o1+c3o1*( -vx3)+c9o2*( -vx3)*( -vx3)-cu_sq); - real feqW27_NE = c1o54* TempD*(c1o1+c3o1*( vx1+vx2 )+c9o2*( vx1+vx2 )*( vx1+vx2 )-cu_sq); - real feqW27_SW = c1o54* TempD*(c1o1+c3o1*(-vx1-vx2 )+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq); - real feqW27_SE = c1o54* TempD*(c1o1+c3o1*( vx1-vx2 )+c9o2*( vx1-vx2 )*( vx1-vx2 )-cu_sq); - real feqW27_NW = c1o54* TempD*(c1o1+c3o1*(-vx1+vx2 )+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq); - real feqW27_TE = c1o54* TempD*(c1o1+c3o1*( vx1 +vx3)+c9o2*( vx1 +vx3)*( vx1 +vx3)-cu_sq); - real feqW27_BW = c1o54* TempD*(c1o1+c3o1*(-vx1 -vx3)+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq); - real feqW27_BE = c1o54* TempD*(c1o1+c3o1*( vx1 -vx3)+c9o2*( vx1 -vx3)*( vx1 -vx3)-cu_sq); - real feqW27_TW = c1o54* TempD*(c1o1+c3o1*(-vx1 +vx3)+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq); - real feqW27_TN = c1o54* TempD*(c1o1+c3o1*( vx2+vx3)+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq); - real feqW27_BS = c1o54* TempD*(c1o1+c3o1*( -vx2-vx3)+c9o2*( -vx2-vx3)*( -vx2-vx3)-cu_sq); - real feqW27_BN = c1o54* TempD*(c1o1+c3o1*( vx2-vx3)+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq); - real feqW27_TS = c1o54* TempD*(c1o1+c3o1*( -vx2+vx3)+c9o2*( -vx2+vx3)*( -vx2+vx3)-cu_sq); - real feqW27_TNE = c1o216*TempD*(c1o1+c3o1*( vx1+vx2+vx3)+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq); - real feqW27_BSW = c1o216*TempD*(c1o1+c3o1*(-vx1-vx2-vx3)+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq); - real feqW27_BNE = c1o216*TempD*(c1o1+c3o1*( vx1+vx2-vx3)+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq); - real feqW27_TSW = c1o216*TempD*(c1o1+c3o1*(-vx1-vx2+vx3)+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq); - real feqW27_TSE = c1o216*TempD*(c1o1+c3o1*( vx1-vx2+vx3)+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq); - real feqW27_BNW = c1o216*TempD*(c1o1+c3o1*(-vx1+vx2-vx3)+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq); - real feqW27_BSE = c1o216*TempD*(c1o1+c3o1*( vx1-vx2-vx3)+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq); - real feqW27_TNW = c1o216*TempD*(c1o1+c3o1*(-vx1+vx2+vx3)+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq); - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real omegaD = c3o1 - sqrt(c3o1); - //real Lam = -(c1o2-one/omegaD); - //real nue_d = Lam/three; - //real ae = zero; - //real ae = diffusivity/nue_d - one; - - - ////////////////////////////////////////////////////////////////////////// - if (isEvenTimestep==false) - { - D27.f[DIR_P00] = &DD27[DIR_P00 * numberOfLBnodes]; - D27.f[DIR_M00] = &DD27[DIR_M00 * numberOfLBnodes]; - D27.f[DIR_0P0] = &DD27[DIR_0P0 * numberOfLBnodes]; - D27.f[DIR_0M0] = &DD27[DIR_0M0 * numberOfLBnodes]; - D27.f[DIR_00P] = &DD27[DIR_00P * numberOfLBnodes]; - D27.f[DIR_00M] = &DD27[DIR_00M * numberOfLBnodes]; - D27.f[DIR_PP0] = &DD27[DIR_PP0 * numberOfLBnodes]; - D27.f[DIR_MM0] = &DD27[DIR_MM0 * numberOfLBnodes]; - D27.f[DIR_PM0] = &DD27[DIR_PM0 * numberOfLBnodes]; - D27.f[DIR_MP0] = &DD27[DIR_MP0 * numberOfLBnodes]; - D27.f[DIR_P0P] = &DD27[DIR_P0P * numberOfLBnodes]; - D27.f[DIR_M0M] = &DD27[DIR_M0M * numberOfLBnodes]; - D27.f[DIR_P0M] = &DD27[DIR_P0M * numberOfLBnodes]; - D27.f[DIR_M0P] = &DD27[DIR_M0P * numberOfLBnodes]; - D27.f[DIR_0PP] = &DD27[DIR_0PP * numberOfLBnodes]; - D27.f[DIR_0MM] = &DD27[DIR_0MM * numberOfLBnodes]; - D27.f[DIR_0PM] = &DD27[DIR_0PM * numberOfLBnodes]; - D27.f[DIR_0MP] = &DD27[DIR_0MP * numberOfLBnodes]; - D27.f[DIR_000] = &DD27[DIR_000 * numberOfLBnodes]; - D27.f[DIR_PPP] = &DD27[DIR_PPP * numberOfLBnodes]; - D27.f[DIR_MMP] = &DD27[DIR_MMP * numberOfLBnodes]; - D27.f[DIR_PMP] = &DD27[DIR_PMP * numberOfLBnodes]; - D27.f[DIR_MPP] = &DD27[DIR_MPP * numberOfLBnodes]; - D27.f[DIR_PPM] = &DD27[DIR_PPM * numberOfLBnodes]; - D27.f[DIR_MMM] = &DD27[DIR_MMM * numberOfLBnodes]; - D27.f[DIR_PMM] = &DD27[DIR_PMM * numberOfLBnodes]; - D27.f[DIR_MPM] = &DD27[DIR_MPM * numberOfLBnodes]; - } - else - { - D27.f[DIR_M00] = &DD27[DIR_P00 * numberOfLBnodes]; - D27.f[DIR_P00] = &DD27[DIR_M00 * numberOfLBnodes]; - D27.f[DIR_0M0] = &DD27[DIR_0P0 * numberOfLBnodes]; - D27.f[DIR_0P0] = &DD27[DIR_0M0 * numberOfLBnodes]; - D27.f[DIR_00M] = &DD27[DIR_00P * numberOfLBnodes]; - D27.f[DIR_00P] = &DD27[DIR_00M * numberOfLBnodes]; - D27.f[DIR_MM0] = &DD27[DIR_PP0 * numberOfLBnodes]; - D27.f[DIR_PP0] = &DD27[DIR_MM0 * numberOfLBnodes]; - D27.f[DIR_MP0] = &DD27[DIR_PM0 * numberOfLBnodes]; - D27.f[DIR_PM0] = &DD27[DIR_MP0 * numberOfLBnodes]; - D27.f[DIR_M0M] = &DD27[DIR_P0P * numberOfLBnodes]; - D27.f[DIR_P0P] = &DD27[DIR_M0M * numberOfLBnodes]; - D27.f[DIR_M0P] = &DD27[DIR_P0M * numberOfLBnodes]; - D27.f[DIR_P0M] = &DD27[DIR_M0P * numberOfLBnodes]; - D27.f[DIR_0MM] = &DD27[DIR_0PP * numberOfLBnodes]; - D27.f[DIR_0PP] = &DD27[DIR_0MM * numberOfLBnodes]; - D27.f[DIR_0MP] = &DD27[DIR_0PM * numberOfLBnodes]; - D27.f[DIR_0PM] = &DD27[DIR_0MP * numberOfLBnodes]; - D27.f[DIR_000] = &DD27[DIR_000 * numberOfLBnodes]; - D27.f[DIR_PPP] = &DD27[DIR_MMM * numberOfLBnodes]; - D27.f[DIR_MMP] = &DD27[DIR_PPM * numberOfLBnodes]; - D27.f[DIR_PMP] = &DD27[DIR_MPM * numberOfLBnodes]; - D27.f[DIR_MPP] = &DD27[DIR_PMM * numberOfLBnodes]; - D27.f[DIR_PPM] = &DD27[DIR_MMP * numberOfLBnodes]; - D27.f[DIR_MMM] = &DD27[DIR_PPP * numberOfLBnodes]; - D27.f[DIR_PMM] = &DD27[DIR_MPP * numberOfLBnodes]; - D27.f[DIR_MPM] = &DD27[DIR_PMP * numberOfLBnodes]; - } - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //Test - //(D.f[DIR_000])[k]=c1o10; - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //Test - //(D.f[DIR_000])[k]=c1o10; - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //(D27.f[DIR_M00])[kw ]= four; - //(D27.f[DIR_P00])[ke ]= four; - //(D27.f[DIR_0M0])[ks ]= four; - //(D27.f[DIR_0P0])[kn ]= four; - //(D27.f[DIR_00M])[kb ]= four; - //(D27.f[DIR_00P])[kt ]= four; - //(D27.f[DIR_MM0])[ksw ]= four; - //(D27.f[DIR_PP0])[kne ]= four; - //(D27.f[DIR_MP0])[knw ]= four; - //(D27.f[DIR_PM0])[kse ]= four; - //(D27.f[DIR_M0M])[kbw ]= four; - //(D27.f[DIR_P0P])[kte ]= four; - //(D27.f[DIR_M0P])[ktw ]= four; - //(D27.f[DIR_P0M])[kbe ]= four; - //(D27.f[DIR_0MM])[kbs ]= four; - //(D27.f[DIR_0PP])[ktn ]= four; - //(D27.f[DIR_0MP])[kts ]= four; - //(D27.f[DIR_0PM])[kbn ]= four; - //(D27.f[DIR_MMM])[kbsw]= four; - //(D27.f[DIR_PPP])[ktne]= four; - //(D27.f[DIR_MMP])[ktsw]= four; - //(D27.f[DIR_PPM])[kbne]= four; - //(D27.f[DIR_MPM])[kbnw]= four; - //(D27.f[DIR_PMP])[ktse]= four; - //(D27.f[DIR_MPP])[ktnw]= four; - //(D27.f[DIR_PMM])[kbse]= four; - q = q_dirE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_M00])[kw ]= -feqW27_W + c2o1 * c2o27 * TempD; - q = q_dirW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_P00])[ke ]= -feqW27_E + c2o1 * c2o27 * TempD; - q = q_dirN[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_0M0])[ks ]= -feqW27_S + c2o1 * c2o27 * TempD; - q = q_dirS[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_0P0])[kn ]= -feqW27_N + c2o1 * c2o27 * TempD; - q = q_dirT[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_00M])[kb ]= -feqW27_B + c2o1 * c2o27 * TempD; - q = q_dirB[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_00P])[kt ]= -feqW27_T + c2o1 * c2o27 * TempD; - q = q_dirNE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_MM0])[ksw ]= -feqW27_SW + c2o1 * c1o54 * TempD; - q = q_dirSW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_PP0])[kne ]= -feqW27_NE + c2o1 * c1o54 * TempD; - q = q_dirSE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_MP0])[knw ]= -feqW27_NW + c2o1 * c1o54 * TempD; - q = q_dirNW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_PM0])[kse ]= -feqW27_SE + c2o1 * c1o54 * TempD; - q = q_dirTE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_M0M])[kbw ]= -feqW27_BW + c2o1 * c1o54 * TempD; - q = q_dirBW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_P0P])[kte ]= -feqW27_TE + c2o1 * c1o54 * TempD; - q = q_dirBE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_M0P])[ktw ]= -feqW27_TW + c2o1 * c1o54 * TempD; - q = q_dirTW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_P0M])[kbe ]= -feqW27_BE + c2o1 * c1o54 * TempD; - q = q_dirTN[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_0MM])[kbs ]= -feqW27_BS + c2o1 * c1o54 * TempD; - q = q_dirBS[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_0PP])[ktn ]= -feqW27_TN + c2o1 * c1o54 * TempD; - q = q_dirBN[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_0MP])[kts ]= -feqW27_TS + c2o1 * c1o54 * TempD; - q = q_dirTS[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_0PM])[kbn ]= -feqW27_BN + c2o1 * c1o54 * TempD; - q = q_dirTNE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_MMM])[kbsw]= -feqW27_BSW+ c2o1 * c1o216 * TempD; - q = q_dirBSW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_PPP])[ktne]= -feqW27_TNE+ c2o1 * c1o216 * TempD; - q = q_dirBNE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_MMP])[ktsw]= -feqW27_TSW+ c2o1 * c1o216 * TempD; - q = q_dirTSW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_PPM])[kbne]= -feqW27_BNE+ c2o1 * c1o216 * TempD; - q = q_dirTSE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_MPM])[kbnw]= -feqW27_BNW+ c2o1 * c1o216 * TempD; - q = q_dirBNW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_PMP])[ktse]= -feqW27_TSE+ c2o1 * c1o216 * TempD; - q = q_dirBSE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_MPP])[ktnw]= -feqW27_TNW+ c2o1 * c1o216 * TempD; - q = q_dirTNW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_PMM])[kbse]= -feqW27_BSE+ c2o1 * c1o216 * TempD; - //q = q_dirE[k]; if (q>=zero && q<=one) (D27.f[DIR_M00])[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[DIR_P00])[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[DIR_0M0])[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[DIR_0P0])[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[DIR_00M])[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[DIR_00P])[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[DIR_MM0])[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[DIR_PP0])[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[DIR_MP0])[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[DIR_PM0])[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[DIR_M0M])[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[DIR_P0P])[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[DIR_M0P])[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[DIR_P0M])[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[DIR_0MM])[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[DIR_0PP])[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[DIR_0MP])[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[DIR_0PM])[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[DIR_MMM])[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[DIR_PPP])[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[DIR_MMP])[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[DIR_PPM])[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[DIR_MPM])[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[DIR_PMP])[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[DIR_MPP])[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[DIR_PMM])[kbse]=(two*feqW27_BSE-(f27_TNW*(q*omegaD-one)-omegaD*feq27_TNW*(q-one))/(omegaD-one)+f27_BSE*q)/(q+one); - } -} -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -////////////////////////////////////////////////////////////////////////////// -__global__ void QAD7( real* DD, - real* DD7, - real* temp, - real diffusivity, - int* k_Q, - real* QQ, - unsigned int numberOfBCnodes, - real om1, - unsigned int* neighborX, - unsigned int* neighborY, - unsigned int* neighborZ, - unsigned long long numberOfLBnodes, - bool isEvenTimestep) -{ - Distributions27 D; - if (isEvenTimestep==true) - { - D.f[DIR_P00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_M00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_PMP * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_MPM * numberOfLBnodes]; - } - else - { - D.f[DIR_M00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_P00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_MPM * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_PMP * numberOfLBnodes]; - } - - Distributions7 D7; - if (isEvenTimestep==true) - { - D7.f[0] = &DD7[0*numberOfLBnodes]; - D7.f[1] = &DD7[1*numberOfLBnodes]; - D7.f[2] = &DD7[2*numberOfLBnodes]; - D7.f[3] = &DD7[3*numberOfLBnodes]; - D7.f[4] = &DD7[4*numberOfLBnodes]; - D7.f[5] = &DD7[5*numberOfLBnodes]; - D7.f[6] = &DD7[6*numberOfLBnodes]; - } - else - { - D7.f[0] = &DD7[0*numberOfLBnodes]; - D7.f[2] = &DD7[1*numberOfLBnodes]; - D7.f[1] = &DD7[2*numberOfLBnodes]; - D7.f[4] = &DD7[3*numberOfLBnodes]; - D7.f[3] = &DD7[4*numberOfLBnodes]; - D7.f[6] = &DD7[5*numberOfLBnodes]; - D7.f[5] = &DD7[6*numberOfLBnodes]; - } - - - //////////////////////////////////////////////////////////////////////////////// - const unsigned x = threadIdx.x; // Globaler x-Index - const unsigned y = blockIdx.x; // Globaler y-Index - const unsigned z = blockIdx.y; // Globaler z-Index - - const unsigned nx = blockDim.x; - const unsigned ny = gridDim.x; - - const unsigned k = nx*(ny*z + y) + x; - ////////////////////////////////////////////////////////////////////////// - - if(k<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[DIR_P00 * numberOfBCnodes]; - q_dirW = &QQ[DIR_M00 * numberOfBCnodes]; - q_dirN = &QQ[DIR_0P0 * numberOfBCnodes]; - q_dirS = &QQ[DIR_0M0 * numberOfBCnodes]; - q_dirT = &QQ[DIR_00P * numberOfBCnodes]; - q_dirB = &QQ[DIR_00M * numberOfBCnodes]; - //q_dirNE = &QQ[DIR_PP0 * numberOfBCnodes]; - //q_dirSW = &QQ[DIR_MM0 * numberOfBCnodes]; - //q_dirSE = &QQ[DIR_PM0 * numberOfBCnodes]; - //q_dirNW = &QQ[DIR_MP0 * numberOfBCnodes]; - //q_dirTE = &QQ[DIR_P0P * numberOfBCnodes]; - //q_dirBW = &QQ[DIR_M0M * numberOfBCnodes]; - //q_dirBE = &QQ[DIR_P0M * numberOfBCnodes]; - //q_dirTW = &QQ[DIR_M0P * numberOfBCnodes]; - //q_dirTN = &QQ[DIR_0PP * numberOfBCnodes]; - //q_dirBS = &QQ[DIR_0MM * numberOfBCnodes]; - //q_dirBN = &QQ[DIR_0PM * numberOfBCnodes]; - //q_dirTS = &QQ[DIR_0MP * numberOfBCnodes]; - //q_dirTNE = &QQ[DIR_PPP * numberOfBCnodes]; - //q_dirTSW = &QQ[DIR_MMP * numberOfBCnodes]; - //q_dirTSE = &QQ[DIR_PMP * numberOfBCnodes]; - //q_dirTNW = &QQ[DIR_MPP * numberOfBCnodes]; - //q_dirBNE = &QQ[DIR_PPM * numberOfBCnodes]; - //q_dirBSW = &QQ[DIR_MMM * numberOfBCnodes]; - //q_dirBSE = &QQ[DIR_PMM * numberOfBCnodes]; - //q_dirBNW = &QQ[DIR_MPM * 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]; - 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 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[DIR_P00])[ke ]; - f_E = (D.f[DIR_M00])[kw ]; - f_S = (D.f[DIR_0P0])[kn ]; - f_N = (D.f[DIR_0M0])[ks ]; - f_B = (D.f[DIR_00P])[kt ]; - f_T = (D.f[DIR_00M])[kb ]; - f_SW = (D.f[DIR_PP0])[kne ]; - f_NE = (D.f[DIR_MM0])[ksw ]; - f_NW = (D.f[DIR_PM0])[kse ]; - f_SE = (D.f[DIR_MP0])[knw ]; - f_BW = (D.f[DIR_P0P])[kte ]; - f_TE = (D.f[DIR_M0M])[kbw ]; - f_TW = (D.f[DIR_P0M])[kbe ]; - f_BE = (D.f[DIR_M0P])[ktw ]; - f_BS = (D.f[DIR_0PP])[ktn ]; - f_TN = (D.f[DIR_0MM])[kbs ]; - f_TS = (D.f[DIR_0PM])[kbn ]; - f_BN = (D.f[DIR_0MP])[kts ]; - f_BSW = (D.f[DIR_PPP])[ktne ]; - f_BNE = (D.f[DIR_MMP])[ktsw ]; - f_BNW = (D.f[DIR_PMP])[ktse ]; - f_BSE = (D.f[DIR_MPP])[ktnw ]; - f_TSW = (D.f[DIR_PPM])[kbne ]; - f_TNE = (D.f[DIR_MMM])[kbsw ]; - f_TNW = (D.f[DIR_PMM])[kbse ]; - f_TSE = (D.f[DIR_MPM])[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[DIR_000])[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); - - - //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); - - //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[DIR_000])[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)); - 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 cu_sq =c3o2*(vx1*vx1+vx2*vx2+vx3*vx3); - real ux_sq = vx1 * vx1; - real uy_sq = vx2 * vx2; - real uz_sq = vx3 * vx3; - real omegaD = c3o1 - sqrt(c3o1); - real Lam = -(c1o2-c1o1/omegaD); - real nue_d = Lam/c3o1; - //real ae = zero; - real ae = diffusivity/nue_d - c1o1; - - real f7_ZERO,f7_E,f7_W,f7_N,f7_S,f7_T,f7_B; - real /*feq7_ZERO,*/feq7_E,feq7_W,feq7_N,feq7_S,feq7_T,feq7_B; - real /*feqW7_ZERO,*/feqW7_E,feqW7_W,feqW7_N,feqW7_S,feqW7_T,feqW7_B; - real TempD = temp[k]; - - - f7_ZERO = (D7.f[0])[kzero]; - f7_W = (D7.f[1])[ke ]; - f7_E = (D7.f[2])[kw ]; - f7_S = (D7.f[3])[kn ]; - f7_N = (D7.f[4])[ks ]; - f7_B = (D7.f[5])[kt ]; - f7_T = (D7.f[6])[kb ]; - - real ConcD = f7_ZERO + f7_E + f7_W + f7_N + f7_S + f7_T + f7_B; - - //feq7_ZERO = ConcD*(c1o3*(ae*(-three))-(ux_sq+uy_sq+uz_sq)); - feq7_E = ConcD*(c1o6*(ae+c1o1)+c1o2*(ux_sq)+vx1*c1o2); - feq7_W = ConcD*(c1o6*(ae+c1o1)+c1o2*(ux_sq)-vx1*c1o2); - feq7_N = ConcD*(c1o6*(ae+c1o1)+c1o2*(uy_sq)+vx2*c1o2); - feq7_S = ConcD*(c1o6*(ae+c1o1)+c1o2*(uy_sq)-vx2*c1o2); - feq7_T = ConcD*(c1o6*(ae+c1o1)+c1o2*(uz_sq)+vx3*c1o2); - feq7_B = ConcD*(c1o6*(ae+c1o1)+c1o2*(uz_sq)-vx3*c1o2); - - //feq7_ZERO = TempD*(c1o3*(ae*(-three))-(ux_sq+uy_sq+uz_sq)); - feqW7_E = TempD*(c1o6*(ae+c1o1));//+c1o2*(ux_sq)+vx1*c1o2); - feqW7_W = TempD*(c1o6*(ae+c1o1));//+c1o2*(ux_sq)-vx1*c1o2); - feqW7_N = TempD*(c1o6*(ae+c1o1));//+c1o2*(uy_sq)+vx2*c1o2); - feqW7_S = TempD*(c1o6*(ae+c1o1));//+c1o2*(uy_sq)-vx2*c1o2); - feqW7_T = TempD*(c1o6*(ae+c1o1));//+c1o2*(uz_sq)+vx3*c1o2); - feqW7_B = TempD*(c1o6*(ae+c1o1));//+c1o2*(uz_sq)-vx3*c1o2); - - ////////////////////////////////////////////////////////////////////////// - //pointertausch - if (isEvenTimestep==false) - { - D7.f[0] = &DD7[0*numberOfLBnodes]; - D7.f[1] = &DD7[1*numberOfLBnodes]; - D7.f[2] = &DD7[2*numberOfLBnodes]; - D7.f[3] = &DD7[3*numberOfLBnodes]; - D7.f[4] = &DD7[4*numberOfLBnodes]; - D7.f[5] = &DD7[5*numberOfLBnodes]; - D7.f[6] = &DD7[6*numberOfLBnodes]; - } - else - { - D7.f[0] = &DD7[0*numberOfLBnodes]; - D7.f[2] = &DD7[1*numberOfLBnodes]; - D7.f[1] = &DD7[2*numberOfLBnodes]; - D7.f[4] = &DD7[3*numberOfLBnodes]; - D7.f[3] = &DD7[4*numberOfLBnodes]; - D7.f[6] = &DD7[5*numberOfLBnodes]; - D7.f[5] = &DD7[6*numberOfLBnodes]; - } - - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //Test - //(D.f[DIR_000])[k]=c1o10; - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //(D7.f[1])[ke ] = f7_E - feq7_E + feqW7_W; //DIR_P00 - //(D7.f[2])[kw ] = f7_W - feq7_W + feqW7_E; //DIR_M00 - //(D7.f[3])[kn ] = f7_N - feq7_N + feqW7_S; //DIR_0P0 - //(D7.f[4])[ks ] = f7_S - feq7_S + feqW7_N; //DIR_0M0 - //(D7.f[5])[kt ] = f7_T - feq7_T + feqW7_B; //DIR_00P - //(D7.f[6])[kb ] = f7_B - feq7_B + feqW7_T; //DIR_00M - - //////////////////////////////////////////////////////////////////////////// - ////mit Q's - //real /*feq,*/ q; - //q = q_dirE[k]; - //if (q>=zero && q<=one) - //{ - // //q=zero; - // (D7.f[2])[kw]=(two*feqW7_W-(f7_E*(q*omegaD-one)-omegaD*feq7_E*(q-one))/(omegaD-one)+f7_W*q)/(q+one);//f7_W - feq7_W + feqW7_E; - //} - - //q = q_dirW[k]; - //if (q>=zero && q<=one) - //{ - // //q=zero; - // (D7.f[1])[ke]=(two*feqW7_E-(f7_W*(q*omegaD-one)-omegaD*feq7_W*(q-one))/(omegaD-one)+f7_E*q)/(q+one);//f7_E - feq7_E + feqW7_W; - //} - - //q = q_dirN[k]; - //if (q>=zero && q<=one) - //{ - // //q=zero; - // (D7.f[4])[ks]=(two*feqW7_S-(f7_N*(q*omegaD-one)-omegaD*feq7_N*(q-one))/(omegaD-one)+f7_S*q)/(q+one);//f7_S - feq7_S + feqW7_N; - //} - - //q = q_dirS[k]; - //if (q>=zero && q<=one) - //{ - // //q=zero; - // (D7.f[3])[kn]=(two*feqW7_N-(f7_S*(q*omegaD-one)-omegaD*feq7_S*(q-one))/(omegaD-one)+f7_N*q)/(q+one);//f7_N - feq7_N + feqW7_S; - //} - - //q = q_dirT[k]; - //if (q>=zero && q<=one) - //{ - // //q=zero; - // (D7.f[6])[kb]=(two*feqW7_B-(f7_T*(q*omegaD-one)-omegaD*feq7_T*(q-one))/(omegaD-one)+f7_B*q)/(q+one);//f7_B - feq7_B + feqW7_T; - //} - - //q = q_dirB[k]; - //if (q>=zero && q<=one) - //{ - // //q=zero; - // (D7.f[5])[kt]=(two*feqW7_T-(f7_B*(q*omegaD-one)-omegaD*feq7_B*(q-one))/(omegaD-one)+f7_T*q)/(q+one);//f7_T - feq7_T + feqW7_B; - //} - - ////////////////////////////////////////////////////////////////////////// - //ohne Q's - real /*feq,*/ q; - q = q_dirE[k]; - if (q>=c0o1 && q<=c1o1) - { - (D7.f[2])[kw]=f7_W - feq7_W + feqW7_E; - } - - q = q_dirW[k]; - if (q>=c0o1 && q<=c1o1) - { - (D7.f[1])[ke]=f7_E - feq7_E + feqW7_W; - } - - q = q_dirN[k]; - if (q>=c0o1 && q<=c1o1) - { - (D7.f[4])[ks]=f7_S - feq7_S + feqW7_N; - } - - q = q_dirS[k]; - if (q>=c0o1 && q<=c1o1) - { - (D7.f[3])[kn]=f7_N - feq7_N + feqW7_S; - } - - q = q_dirT[k]; - if (q>=c0o1 && q<=c1o1) - { - (D7.f[6])[kb]=f7_B - feq7_B + feqW7_T; - } - - q = q_dirB[k]; - if (q>=c0o1 && q<=c1o1) - { - (D7.f[5])[kt]=f7_T - feq7_T + feqW7_B; - } - } -} -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -////////////////////////////////////////////////////////////////////////////// -__global__ void QADDirichlet27( - real* DD, - real* DD27, - real* temp, - real diffusivity, - int* k_Q, - real* QQ, - unsigned int numberOfBCnodes, - real om1, - unsigned int* neighborX, - unsigned int* neighborY, - unsigned int* neighborZ, - unsigned long long numberOfLBnodes, - bool isEvenTimestep) -{ - Distributions27 D; - if (isEvenTimestep==true) - { - D.f[DIR_P00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_M00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_PMP * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_MPM * numberOfLBnodes]; - } - else - { - D.f[DIR_M00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_P00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_MPM * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_PMP * numberOfLBnodes]; - } - - Distributions27 D27; - if (isEvenTimestep==true) - { - D27.f[DIR_P00] = &DD27[DIR_P00 * numberOfLBnodes]; - D27.f[DIR_M00] = &DD27[DIR_M00 * numberOfLBnodes]; - D27.f[DIR_0P0] = &DD27[DIR_0P0 * numberOfLBnodes]; - D27.f[DIR_0M0] = &DD27[DIR_0M0 * numberOfLBnodes]; - D27.f[DIR_00P] = &DD27[DIR_00P * numberOfLBnodes]; - D27.f[DIR_00M] = &DD27[DIR_00M * numberOfLBnodes]; - D27.f[DIR_PP0] = &DD27[DIR_PP0 * numberOfLBnodes]; - D27.f[DIR_MM0] = &DD27[DIR_MM0 * numberOfLBnodes]; - D27.f[DIR_PM0] = &DD27[DIR_PM0 * numberOfLBnodes]; - D27.f[DIR_MP0] = &DD27[DIR_MP0 * numberOfLBnodes]; - D27.f[DIR_P0P] = &DD27[DIR_P0P * numberOfLBnodes]; - D27.f[DIR_M0M] = &DD27[DIR_M0M * numberOfLBnodes]; - D27.f[DIR_P0M] = &DD27[DIR_P0M * numberOfLBnodes]; - D27.f[DIR_M0P] = &DD27[DIR_M0P * numberOfLBnodes]; - D27.f[DIR_0PP] = &DD27[DIR_0PP * numberOfLBnodes]; - D27.f[DIR_0MM] = &DD27[DIR_0MM * numberOfLBnodes]; - D27.f[DIR_0PM] = &DD27[DIR_0PM * numberOfLBnodes]; - D27.f[DIR_0MP] = &DD27[DIR_0MP * numberOfLBnodes]; - D27.f[DIR_000] = &DD27[DIR_000 * numberOfLBnodes]; - D27.f[DIR_PPP] = &DD27[DIR_PPP * numberOfLBnodes]; - D27.f[DIR_MMP] = &DD27[DIR_MMP * numberOfLBnodes]; - D27.f[DIR_PMP] = &DD27[DIR_PMP * numberOfLBnodes]; - D27.f[DIR_MPP] = &DD27[DIR_MPP * numberOfLBnodes]; - D27.f[DIR_PPM] = &DD27[DIR_PPM * numberOfLBnodes]; - D27.f[DIR_MMM] = &DD27[DIR_MMM * numberOfLBnodes]; - D27.f[DIR_PMM] = &DD27[DIR_PMM * numberOfLBnodes]; - D27.f[DIR_MPM] = &DD27[DIR_MPM * numberOfLBnodes]; - } - else - { - D27.f[DIR_M00] = &DD27[DIR_P00 * numberOfLBnodes]; - D27.f[DIR_P00] = &DD27[DIR_M00 * numberOfLBnodes]; - D27.f[DIR_0M0] = &DD27[DIR_0P0 * numberOfLBnodes]; - D27.f[DIR_0P0] = &DD27[DIR_0M0 * numberOfLBnodes]; - D27.f[DIR_00M] = &DD27[DIR_00P * numberOfLBnodes]; - D27.f[DIR_00P] = &DD27[DIR_00M * numberOfLBnodes]; - D27.f[DIR_MM0] = &DD27[DIR_PP0 * numberOfLBnodes]; - D27.f[DIR_PP0] = &DD27[DIR_MM0 * numberOfLBnodes]; - D27.f[DIR_MP0] = &DD27[DIR_PM0 * numberOfLBnodes]; - D27.f[DIR_PM0] = &DD27[DIR_MP0 * numberOfLBnodes]; - D27.f[DIR_M0M] = &DD27[DIR_P0P * numberOfLBnodes]; - D27.f[DIR_P0P] = &DD27[DIR_M0M * numberOfLBnodes]; - D27.f[DIR_M0P] = &DD27[DIR_P0M * numberOfLBnodes]; - D27.f[DIR_P0M] = &DD27[DIR_M0P * numberOfLBnodes]; - D27.f[DIR_0MM] = &DD27[DIR_0PP * numberOfLBnodes]; - D27.f[DIR_0PP] = &DD27[DIR_0MM * numberOfLBnodes]; - D27.f[DIR_0MP] = &DD27[DIR_0PM * numberOfLBnodes]; - D27.f[DIR_0PM] = &DD27[DIR_0MP * numberOfLBnodes]; - D27.f[DIR_000] = &DD27[DIR_000 * numberOfLBnodes]; - D27.f[DIR_PPP] = &DD27[DIR_MMM * numberOfLBnodes]; - D27.f[DIR_MMP] = &DD27[DIR_PPM * numberOfLBnodes]; - D27.f[DIR_PMP] = &DD27[DIR_MPM * numberOfLBnodes]; - D27.f[DIR_MPP] = &DD27[DIR_PMM * numberOfLBnodes]; - D27.f[DIR_PPM] = &DD27[DIR_MMP * numberOfLBnodes]; - D27.f[DIR_MMM] = &DD27[DIR_PPP * numberOfLBnodes]; - D27.f[DIR_PMM] = &DD27[DIR_MPP * numberOfLBnodes]; - D27.f[DIR_MPM] = &DD27[DIR_PMP * numberOfLBnodes]; - } - //////////////////////////////////////////////////////////////////////////////// - const unsigned x = threadIdx.x; // Globaler x-Index - const unsigned y = blockIdx.x; // Globaler y-Index - const unsigned z = blockIdx.y; // Globaler z-Index - - const unsigned nx = blockDim.x; - const unsigned ny = gridDim.x; - - const unsigned k = nx*(ny*z + y) + x; - ////////////////////////////////////////////////////////////////////////// - - if(k<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[DIR_P00 * numberOfBCnodes]; - q_dirW = &QQ[DIR_M00 * numberOfBCnodes]; - q_dirN = &QQ[DIR_0P0 * numberOfBCnodes]; - q_dirS = &QQ[DIR_0M0 * numberOfBCnodes]; - q_dirT = &QQ[DIR_00P * numberOfBCnodes]; - q_dirB = &QQ[DIR_00M * numberOfBCnodes]; - q_dirNE = &QQ[DIR_PP0 * numberOfBCnodes]; - q_dirSW = &QQ[DIR_MM0 * numberOfBCnodes]; - q_dirSE = &QQ[DIR_PM0 * numberOfBCnodes]; - q_dirNW = &QQ[DIR_MP0 * numberOfBCnodes]; - q_dirTE = &QQ[DIR_P0P * numberOfBCnodes]; - q_dirBW = &QQ[DIR_M0M * numberOfBCnodes]; - q_dirBE = &QQ[DIR_P0M * numberOfBCnodes]; - q_dirTW = &QQ[DIR_M0P * numberOfBCnodes]; - q_dirTN = &QQ[DIR_0PP * numberOfBCnodes]; - q_dirBS = &QQ[DIR_0MM * numberOfBCnodes]; - q_dirBN = &QQ[DIR_0PM * numberOfBCnodes]; - q_dirTS = &QQ[DIR_0MP * numberOfBCnodes]; - q_dirTNE = &QQ[DIR_PPP * numberOfBCnodes]; - q_dirTSW = &QQ[DIR_MMP * numberOfBCnodes]; - q_dirTSE = &QQ[DIR_PMP * numberOfBCnodes]; - q_dirTNW = &QQ[DIR_MPP * numberOfBCnodes]; - q_dirBNE = &QQ[DIR_PPM * numberOfBCnodes]; - q_dirBSW = &QQ[DIR_MMM * numberOfBCnodes]; - q_dirBSE = &QQ[DIR_PMM * numberOfBCnodes]; - q_dirBNW = &QQ[DIR_MPM * 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]; - 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 f_W = (D.f[DIR_P00])[ke ]; - real f_E = (D.f[DIR_M00])[kw ]; - real f_S = (D.f[DIR_0P0])[kn ]; - real f_N = (D.f[DIR_0M0])[ks ]; - real f_B = (D.f[DIR_00P])[kt ]; - real f_T = (D.f[DIR_00M])[kb ]; - real f_SW = (D.f[DIR_PP0])[kne ]; - real f_NE = (D.f[DIR_MM0])[ksw ]; - real f_NW = (D.f[DIR_PM0])[kse ]; - real f_SE = (D.f[DIR_MP0])[knw ]; - real f_BW = (D.f[DIR_P0P])[kte ]; - real f_TE = (D.f[DIR_M0M])[kbw ]; - real f_TW = (D.f[DIR_P0M])[kbe ]; - real f_BE = (D.f[DIR_M0P])[ktw ]; - real f_BS = (D.f[DIR_0PP])[ktn ]; - real f_TN = (D.f[DIR_0MM])[kbs ]; - real f_TS = (D.f[DIR_0PM])[kbn ]; - real f_BN = (D.f[DIR_0MP])[kts ]; - real f_ZERO = (D.f[DIR_000])[kzero]; - real f_BSW = (D.f[DIR_PPP])[ktne ]; - real f_BNE = (D.f[DIR_MMP])[ktsw ]; - real f_BNW = (D.f[DIR_PMP])[ktse ]; - real f_BSE = (D.f[DIR_MPP])[ktnw ]; - real f_TSW = (D.f[DIR_PPM])[kbne ]; - real f_TNE = (D.f[DIR_MMM])[kbsw ]; - real f_TNW = (D.f[DIR_PMM])[kbse ]; - real f_TSE = (D.f[DIR_MPM])[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 + f_ZERO; - - //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); - - - //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); - - //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)+f_ZERO; - 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)); - 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[DIR_P00])[ke ]; - real f27_E = (D27.f[DIR_M00])[kw ]; - real f27_S = (D27.f[DIR_0P0])[kn ]; - real f27_N = (D27.f[DIR_0M0])[ks ]; - real f27_B = (D27.f[DIR_00P])[kt ]; - real f27_T = (D27.f[DIR_00M])[kb ]; - real f27_SW = (D27.f[DIR_PP0])[kne ]; - real f27_NE = (D27.f[DIR_MM0])[ksw ]; - real f27_NW = (D27.f[DIR_PM0])[kse ]; - real f27_SE = (D27.f[DIR_MP0])[knw ]; - real f27_BW = (D27.f[DIR_P0P])[kte ]; - real f27_TE = (D27.f[DIR_M0M])[kbw ]; - real f27_TW = (D27.f[DIR_P0M])[kbe ]; - real f27_BE = (D27.f[DIR_M0P])[ktw ]; - real f27_BS = (D27.f[DIR_0PP])[ktn ]; - real f27_TN = (D27.f[DIR_0MM])[kbs ]; - real f27_TS = (D27.f[DIR_0PM])[kbn ]; - real f27_BN = (D27.f[DIR_0MP])[kts ]; - real f27_ZERO = (D27.f[DIR_000])[kzero]; - real f27_BSW = (D27.f[DIR_PPP])[ktne ]; - real f27_BNE = (D27.f[DIR_MMP])[ktsw ]; - real f27_BNW = (D27.f[DIR_PMP])[ktse ]; - real f27_BSE = (D27.f[DIR_MPP])[ktnw ]; - real f27_TSW = (D27.f[DIR_PPM])[kbne ]; - real f27_TNE = (D27.f[DIR_MMM])[kbsw ]; - real f27_TNW = (D27.f[DIR_PMM])[kbse ]; - real f27_TSE = (D27.f[DIR_MPM])[kbnw ]; - //////////////////////////////////////////////////////////////////////////////// - real cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3); - //////////////////////////////////////////////////////////////////////////////// - real ConcD = f27_TSE + f27_TNW + f27_TNE + f27_TSW + f27_BSE + f27_BNW + f27_BNE + f27_BSW + - f27_BN + f27_TS + f27_TN + f27_BS + f27_BE + f27_TW + f27_TE + f27_BW + f27_SE + f27_NW + f27_NE + f27_SW + - f27_T + f27_B + f27_N + f27_S + f27_E + f27_W + f27_ZERO; - - //real feq27_ZERO = c8over27* ConcD*(one-cu_sq); - real feq27_E = c2o27* ConcD*(c1o1+c3o1*( vx1 )+c9o2*( vx1 )*( vx1 )-cu_sq); - real feq27_W = c2o27* ConcD*(c1o1+c3o1*(-vx1 )+c9o2*(-vx1 )*(-vx1 )-cu_sq); - real feq27_N = c2o27* ConcD*(c1o1+c3o1*( vx2 )+c9o2*( vx2 )*( vx2 )-cu_sq); - real feq27_S = c2o27* ConcD*(c1o1+c3o1*( -vx2 )+c9o2*( -vx2 )*( -vx2 )-cu_sq); - real feq27_T = c2o27* ConcD*(c1o1+c3o1*( vx3)+c9o2*( vx3)*( vx3)-cu_sq); - real feq27_B = c2o27* ConcD*(c1o1+c3o1*( -vx3)+c9o2*( -vx3)*( -vx3)-cu_sq); - real feq27_NE = c1o54* ConcD*(c1o1+c3o1*( vx1+vx2 )+c9o2*( vx1+vx2 )*( vx1+vx2 )-cu_sq); - real feq27_SW = c1o54* ConcD*(c1o1+c3o1*(-vx1-vx2 )+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq); - real feq27_SE = c1o54* ConcD*(c1o1+c3o1*( vx1-vx2 )+c9o2*( vx1-vx2 )*( vx1-vx2 )-cu_sq); - real feq27_NW = c1o54* ConcD*(c1o1+c3o1*(-vx1+vx2 )+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq); - real feq27_TE = c1o54* ConcD*(c1o1+c3o1*( vx1 +vx3)+c9o2*( vx1 +vx3)*( vx1 +vx3)-cu_sq); - real feq27_BW = c1o54* ConcD*(c1o1+c3o1*(-vx1 -vx3)+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq); - real feq27_BE = c1o54* ConcD*(c1o1+c3o1*( vx1 -vx3)+c9o2*( vx1 -vx3)*( vx1 -vx3)-cu_sq); - real feq27_TW = c1o54* ConcD*(c1o1+c3o1*(-vx1 +vx3)+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq); - real feq27_TN = c1o54* ConcD*(c1o1+c3o1*( vx2+vx3)+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq); - real feq27_BS = c1o54* ConcD*(c1o1+c3o1*( -vx2-vx3)+c9o2*( -vx2-vx3)*( -vx2-vx3)-cu_sq); - real feq27_BN = c1o54* ConcD*(c1o1+c3o1*( vx2-vx3)+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq); - real feq27_TS = c1o54* ConcD*(c1o1+c3o1*( -vx2+vx3)+c9o2*( -vx2+vx3)*( -vx2+vx3)-cu_sq); - real feq27_TNE = c1o216*ConcD*(c1o1+c3o1*( vx1+vx2+vx3)+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq); - real feq27_BSW = c1o216*ConcD*(c1o1+c3o1*(-vx1-vx2-vx3)+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq); - real feq27_BNE = c1o216*ConcD*(c1o1+c3o1*( vx1+vx2-vx3)+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq); - real feq27_TSW = c1o216*ConcD*(c1o1+c3o1*(-vx1-vx2+vx3)+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq); - real feq27_TSE = c1o216*ConcD*(c1o1+c3o1*( vx1-vx2+vx3)+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq); - real feq27_BNW = c1o216*ConcD*(c1o1+c3o1*(-vx1+vx2-vx3)+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq); - real feq27_BSE = c1o216*ConcD*(c1o1+c3o1*( vx1-vx2-vx3)+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq); - real feq27_TNW = c1o216*ConcD*(c1o1+c3o1*(-vx1+vx2+vx3)+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq); - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real TempD = temp[k];//one;//temp[k]; - - //real feqW27_ZERO = c8over27* TempD*(one-cu_sq); - real feqW27_E = c2o27* TempD*(c1o1+c3o1*( vx1 )+c9o2*( vx1 )*( vx1 )-cu_sq); - real feqW27_W = c2o27* TempD*(c1o1+c3o1*(-vx1 )+c9o2*(-vx1 )*(-vx1 )-cu_sq); - real feqW27_N = c2o27* TempD*(c1o1+c3o1*( vx2 )+c9o2*( vx2 )*( vx2 )-cu_sq); - real feqW27_S = c2o27* TempD*(c1o1+c3o1*( -vx2 )+c9o2*( -vx2 )*( -vx2 )-cu_sq); - real feqW27_T = c2o27* TempD*(c1o1+c3o1*( vx3)+c9o2*( vx3)*( vx3)-cu_sq); - real feqW27_B = c2o27* TempD*(c1o1+c3o1*( -vx3)+c9o2*( -vx3)*( -vx3)-cu_sq); - real feqW27_NE = c1o54* TempD*(c1o1+c3o1*( vx1+vx2 )+c9o2*( vx1+vx2 )*( vx1+vx2 )-cu_sq); - real feqW27_SW = c1o54* TempD*(c1o1+c3o1*(-vx1-vx2 )+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq); - real feqW27_SE = c1o54* TempD*(c1o1+c3o1*( vx1-vx2 )+c9o2*( vx1-vx2 )*( vx1-vx2 )-cu_sq); - real feqW27_NW = c1o54* TempD*(c1o1+c3o1*(-vx1+vx2 )+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq); - real feqW27_TE = c1o54* TempD*(c1o1+c3o1*( vx1 +vx3)+c9o2*( vx1 +vx3)*( vx1 +vx3)-cu_sq); - real feqW27_BW = c1o54* TempD*(c1o1+c3o1*(-vx1 -vx3)+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq); - real feqW27_BE = c1o54* TempD*(c1o1+c3o1*( vx1 -vx3)+c9o2*( vx1 -vx3)*( vx1 -vx3)-cu_sq); - real feqW27_TW = c1o54* TempD*(c1o1+c3o1*(-vx1 +vx3)+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq); - real feqW27_TN = c1o54* TempD*(c1o1+c3o1*( vx2+vx3)+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq); - real feqW27_BS = c1o54* TempD*(c1o1+c3o1*( -vx2-vx3)+c9o2*( -vx2-vx3)*( -vx2-vx3)-cu_sq); - real feqW27_BN = c1o54* TempD*(c1o1+c3o1*( vx2-vx3)+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq); - real feqW27_TS = c1o54* TempD*(c1o1+c3o1*( -vx2+vx3)+c9o2*( -vx2+vx3)*( -vx2+vx3)-cu_sq); - real feqW27_TNE = c1o216*TempD*(c1o1+c3o1*( vx1+vx2+vx3)+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq); - real feqW27_BSW = c1o216*TempD*(c1o1+c3o1*(-vx1-vx2-vx3)+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq); - real feqW27_BNE = c1o216*TempD*(c1o1+c3o1*( vx1+vx2-vx3)+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq); - real feqW27_TSW = c1o216*TempD*(c1o1+c3o1*(-vx1-vx2+vx3)+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq); - real feqW27_TSE = c1o216*TempD*(c1o1+c3o1*( vx1-vx2+vx3)+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq); - real feqW27_BNW = c1o216*TempD*(c1o1+c3o1*(-vx1+vx2-vx3)+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq); - real feqW27_BSE = c1o216*TempD*(c1o1+c3o1*( vx1-vx2-vx3)+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq); - real feqW27_TNW = c1o216*TempD*(c1o1+c3o1*(-vx1+vx2+vx3)+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq); - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real omegaD = c3o1 - sqrt(c3o1); - //real Lam = -(c1o2-one/omegaD); - //real nue_d = Lam/three; - //real ae = zero; - //real ae = diffusivity/nue_d - one; - - - ////////////////////////////////////////////////////////////////////////// - if (isEvenTimestep==false) - { - D27.f[DIR_P00] = &DD27[DIR_P00 * numberOfLBnodes]; - D27.f[DIR_M00] = &DD27[DIR_M00 * numberOfLBnodes]; - D27.f[DIR_0P0] = &DD27[DIR_0P0 * numberOfLBnodes]; - D27.f[DIR_0M0] = &DD27[DIR_0M0 * numberOfLBnodes]; - D27.f[DIR_00P] = &DD27[DIR_00P * numberOfLBnodes]; - D27.f[DIR_00M] = &DD27[DIR_00M * numberOfLBnodes]; - D27.f[DIR_PP0] = &DD27[DIR_PP0 * numberOfLBnodes]; - D27.f[DIR_MM0] = &DD27[DIR_MM0 * numberOfLBnodes]; - D27.f[DIR_PM0] = &DD27[DIR_PM0 * numberOfLBnodes]; - D27.f[DIR_MP0] = &DD27[DIR_MP0 * numberOfLBnodes]; - D27.f[DIR_P0P] = &DD27[DIR_P0P * numberOfLBnodes]; - D27.f[DIR_M0M] = &DD27[DIR_M0M * numberOfLBnodes]; - D27.f[DIR_P0M] = &DD27[DIR_P0M * numberOfLBnodes]; - D27.f[DIR_M0P] = &DD27[DIR_M0P * numberOfLBnodes]; - D27.f[DIR_0PP] = &DD27[DIR_0PP * numberOfLBnodes]; - D27.f[DIR_0MM] = &DD27[DIR_0MM * numberOfLBnodes]; - D27.f[DIR_0PM] = &DD27[DIR_0PM * numberOfLBnodes]; - D27.f[DIR_0MP] = &DD27[DIR_0MP * numberOfLBnodes]; - D27.f[DIR_000] = &DD27[DIR_000 * numberOfLBnodes]; - D27.f[DIR_PPP] = &DD27[DIR_PPP * numberOfLBnodes]; - D27.f[DIR_MMP] = &DD27[DIR_MMP * numberOfLBnodes]; - D27.f[DIR_PMP] = &DD27[DIR_PMP * numberOfLBnodes]; - D27.f[DIR_MPP] = &DD27[DIR_MPP * numberOfLBnodes]; - D27.f[DIR_PPM] = &DD27[DIR_PPM * numberOfLBnodes]; - D27.f[DIR_MMM] = &DD27[DIR_MMM * numberOfLBnodes]; - D27.f[DIR_PMM] = &DD27[DIR_PMM * numberOfLBnodes]; - D27.f[DIR_MPM] = &DD27[DIR_MPM * numberOfLBnodes]; - } - else - { - D27.f[DIR_M00] = &DD27[DIR_P00 * numberOfLBnodes]; - D27.f[DIR_P00] = &DD27[DIR_M00 * numberOfLBnodes]; - D27.f[DIR_0M0] = &DD27[DIR_0P0 * numberOfLBnodes]; - D27.f[DIR_0P0] = &DD27[DIR_0M0 * numberOfLBnodes]; - D27.f[DIR_00M] = &DD27[DIR_00P * numberOfLBnodes]; - D27.f[DIR_00P] = &DD27[DIR_00M * numberOfLBnodes]; - D27.f[DIR_MM0] = &DD27[DIR_PP0 * numberOfLBnodes]; - D27.f[DIR_PP0] = &DD27[DIR_MM0 * numberOfLBnodes]; - D27.f[DIR_MP0] = &DD27[DIR_PM0 * numberOfLBnodes]; - D27.f[DIR_PM0] = &DD27[DIR_MP0 * numberOfLBnodes]; - D27.f[DIR_M0M] = &DD27[DIR_P0P * numberOfLBnodes]; - D27.f[DIR_P0P] = &DD27[DIR_M0M * numberOfLBnodes]; - D27.f[DIR_M0P] = &DD27[DIR_P0M * numberOfLBnodes]; - D27.f[DIR_P0M] = &DD27[DIR_M0P * numberOfLBnodes]; - D27.f[DIR_0MM] = &DD27[DIR_0PP * numberOfLBnodes]; - D27.f[DIR_0PP] = &DD27[DIR_0MM * numberOfLBnodes]; - D27.f[DIR_0MP] = &DD27[DIR_0PM * numberOfLBnodes]; - D27.f[DIR_0PM] = &DD27[DIR_0MP * numberOfLBnodes]; - D27.f[DIR_000] = &DD27[DIR_000 * numberOfLBnodes]; - D27.f[DIR_PPP] = &DD27[DIR_MMM * numberOfLBnodes]; - D27.f[DIR_MMP] = &DD27[DIR_PPM * numberOfLBnodes]; - D27.f[DIR_PMP] = &DD27[DIR_MPM * numberOfLBnodes]; - D27.f[DIR_MPP] = &DD27[DIR_PMM * numberOfLBnodes]; - D27.f[DIR_PPM] = &DD27[DIR_MMP * numberOfLBnodes]; - D27.f[DIR_MMM] = &DD27[DIR_PPP * numberOfLBnodes]; - D27.f[DIR_PMM] = &DD27[DIR_MPP * numberOfLBnodes]; - D27.f[DIR_MPM] = &DD27[DIR_PMP * numberOfLBnodes]; - } - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //Test - //(D.f[DIR_000])[k]=0.1f; - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - q = q_dirE[ ke ]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_M00])[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[DIR_P00])[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[DIR_0M0])[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[DIR_0P0])[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[DIR_00M])[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[DIR_00P])[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[DIR_MM0])[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[DIR_PP0])[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[DIR_MP0])[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[DIR_PM0])[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[DIR_M0M])[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[DIR_P0P])[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[DIR_M0P])[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[DIR_P0M])[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[DIR_0MM])[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[DIR_0PP])[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[DIR_0MP])[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[DIR_0PM])[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[DIR_MMM])[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[DIR_PPP])[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[DIR_MMP])[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[DIR_PPM])[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[DIR_MPM])[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[DIR_PMP])[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[DIR_MPP])[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[DIR_PMM])[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[DIR_M00])[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[DIR_P00])[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[DIR_0M0])[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[DIR_0P0])[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[DIR_00M])[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[DIR_00P])[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[DIR_MM0])[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[DIR_PP0])[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[DIR_MP0])[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[DIR_PM0])[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[DIR_M0M])[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[DIR_P0P])[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[DIR_M0P])[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[DIR_P0M])[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[DIR_0MM])[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[DIR_0PP])[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[DIR_0MP])[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[DIR_0PM])[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[DIR_MMM])[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[DIR_PPP])[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[DIR_MMP])[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[DIR_PPM])[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[DIR_MPM])[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[DIR_PMP])[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[DIR_MPP])[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[DIR_PMM])[kbse]=(two*feqW27_BSE-(f27_TNW*(q*omegaD-one)-omegaD*feq27_TNW*(q-one))/(omegaD-one)+f27_BSE*q)/(q+one); - } -} -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -////////////////////////////////////////////////////////////////////////////// -__global__ void QADBB27( real* DD, - real* DD27, - real* temp, - real diffusivity, - int* k_Q, - real* QQ, - unsigned int numberOfBCnodes, - real om1, - unsigned int* neighborX, - unsigned int* neighborY, - unsigned int* neighborZ, - unsigned long long numberOfLBnodes, - bool isEvenTimestep) -{ - //Distributions27 D; - //if (isEvenTimestep==true) - //{ - // D.f[DIR_P00] = &DD[DIR_P00 * size_Mat]; - // D.f[DIR_M00] = &DD[DIR_M00 * size_Mat]; - // D.f[DIR_0P0] = &DD[DIR_0P0 * size_Mat]; - // D.f[DIR_0M0] = &DD[DIR_0M0 * size_Mat]; - // D.f[DIR_00P] = &DD[DIR_00P * size_Mat]; - // D.f[DIR_00M] = &DD[DIR_00M * size_Mat]; - // D.f[DIR_PP0] = &DD[DIR_PP0 * size_Mat]; - // D.f[DIR_MM0] = &DD[DIR_MM0 * size_Mat]; - // D.f[DIR_PM0] = &DD[DIR_PM0 * size_Mat]; - // D.f[DIR_MP0] = &DD[DIR_MP0 * size_Mat]; - // D.f[DIR_P0P] = &DD[DIR_P0P * size_Mat]; - // D.f[DIR_M0M] = &DD[DIR_M0M * size_Mat]; - // D.f[DIR_P0M] = &DD[DIR_P0M * size_Mat]; - // D.f[DIR_M0P] = &DD[DIR_M0P * size_Mat]; - // D.f[DIR_0PP] = &DD[DIR_0PP * size_Mat]; - // D.f[DIR_0MM] = &DD[DIR_0MM * size_Mat]; - // D.f[DIR_0PM] = &DD[DIR_0PM * size_Mat]; - // D.f[DIR_0MP] = &DD[DIR_0MP * size_Mat]; - // D.f[DIR_000] = &DD[DIR_000 * size_Mat]; - // D.f[DIR_PPP] = &DD[DIR_PPP * size_Mat]; - // D.f[DIR_MMP] = &DD[DIR_MMP * size_Mat]; - // D.f[DIR_PMP] = &DD[DIR_PMP * size_Mat]; - // D.f[DIR_MPP] = &DD[DIR_MPP * size_Mat]; - // D.f[DIR_PPM] = &DD[DIR_PPM * size_Mat]; - // D.f[DIR_MMM] = &DD[DIR_MMM * size_Mat]; - // D.f[DIR_PMM] = &DD[DIR_PMM * size_Mat]; - // D.f[DIR_MPM] = &DD[DIR_MPM * size_Mat]; - //} - //else - //{ - // D.f[DIR_M00] = &DD[DIR_P00 * size_Mat]; - // D.f[DIR_P00] = &DD[DIR_M00 * size_Mat]; - // D.f[DIR_0M0] = &DD[DIR_0P0 * size_Mat]; - // D.f[DIR_0P0] = &DD[DIR_0M0 * size_Mat]; - // D.f[DIR_00M] = &DD[DIR_00P * size_Mat]; - // D.f[DIR_00P] = &DD[DIR_00M * size_Mat]; - // D.f[DIR_MM0] = &DD[DIR_PP0 * size_Mat]; - // D.f[DIR_PP0] = &DD[DIR_MM0 * size_Mat]; - // D.f[DIR_MP0] = &DD[DIR_PM0 * size_Mat]; - // D.f[DIR_PM0] = &DD[DIR_MP0 * size_Mat]; - // D.f[DIR_M0M] = &DD[DIR_P0P * size_Mat]; - // D.f[DIR_P0P] = &DD[DIR_M0M * size_Mat]; - // D.f[DIR_M0P] = &DD[DIR_P0M * size_Mat]; - // D.f[DIR_P0M] = &DD[DIR_M0P * size_Mat]; - // D.f[DIR_0MM] = &DD[DIR_0PP * size_Mat]; - // D.f[DIR_0PP] = &DD[DIR_0MM * size_Mat]; - // D.f[DIR_0MP] = &DD[DIR_0PM * size_Mat]; - // D.f[DIR_0PM] = &DD[DIR_0MP * size_Mat]; - // D.f[DIR_000] = &DD[DIR_000 * size_Mat]; - // D.f[DIR_PPP] = &DD[DIR_MMM * size_Mat]; - // D.f[DIR_MMP] = &DD[DIR_PPM * size_Mat]; - // D.f[DIR_PMP] = &DD[DIR_MPM * size_Mat]; - // D.f[DIR_MPP] = &DD[DIR_PMM * size_Mat]; - // D.f[DIR_PPM] = &DD[DIR_MMP * size_Mat]; - // D.f[DIR_MMM] = &DD[DIR_PPP * size_Mat]; - // D.f[DIR_PMM] = &DD[DIR_MPP * size_Mat]; - // D.f[DIR_MPM] = &DD[DIR_PMP * size_Mat]; - //} - - Distributions27 D27; - if (isEvenTimestep==true) - { - D27.f[DIR_P00] = &DD27[DIR_P00 * numberOfLBnodes]; - D27.f[DIR_M00] = &DD27[DIR_M00 * numberOfLBnodes]; - D27.f[DIR_0P0] = &DD27[DIR_0P0 * numberOfLBnodes]; - D27.f[DIR_0M0] = &DD27[DIR_0M0 * numberOfLBnodes]; - D27.f[DIR_00P] = &DD27[DIR_00P * numberOfLBnodes]; - D27.f[DIR_00M] = &DD27[DIR_00M * numberOfLBnodes]; - D27.f[DIR_PP0] = &DD27[DIR_PP0 * numberOfLBnodes]; - D27.f[DIR_MM0] = &DD27[DIR_MM0 * numberOfLBnodes]; - D27.f[DIR_PM0] = &DD27[DIR_PM0 * numberOfLBnodes]; - D27.f[DIR_MP0] = &DD27[DIR_MP0 * numberOfLBnodes]; - D27.f[DIR_P0P] = &DD27[DIR_P0P * numberOfLBnodes]; - D27.f[DIR_M0M] = &DD27[DIR_M0M * numberOfLBnodes]; - D27.f[DIR_P0M] = &DD27[DIR_P0M * numberOfLBnodes]; - D27.f[DIR_M0P] = &DD27[DIR_M0P * numberOfLBnodes]; - D27.f[DIR_0PP] = &DD27[DIR_0PP * numberOfLBnodes]; - D27.f[DIR_0MM] = &DD27[DIR_0MM * numberOfLBnodes]; - D27.f[DIR_0PM] = &DD27[DIR_0PM * numberOfLBnodes]; - D27.f[DIR_0MP] = &DD27[DIR_0MP * numberOfLBnodes]; - D27.f[DIR_000] = &DD27[DIR_000 * numberOfLBnodes]; - D27.f[DIR_PPP] = &DD27[DIR_PPP * numberOfLBnodes]; - D27.f[DIR_MMP] = &DD27[DIR_MMP * numberOfLBnodes]; - D27.f[DIR_PMP] = &DD27[DIR_PMP * numberOfLBnodes]; - D27.f[DIR_MPP] = &DD27[DIR_MPP * numberOfLBnodes]; - D27.f[DIR_PPM] = &DD27[DIR_PPM * numberOfLBnodes]; - D27.f[DIR_MMM] = &DD27[DIR_MMM * numberOfLBnodes]; - D27.f[DIR_PMM] = &DD27[DIR_PMM * numberOfLBnodes]; - D27.f[DIR_MPM] = &DD27[DIR_MPM * numberOfLBnodes]; - } - else - { - D27.f[DIR_M00] = &DD27[DIR_P00 * numberOfLBnodes]; - D27.f[DIR_P00] = &DD27[DIR_M00 * numberOfLBnodes]; - D27.f[DIR_0M0] = &DD27[DIR_0P0 * numberOfLBnodes]; - D27.f[DIR_0P0] = &DD27[DIR_0M0 * numberOfLBnodes]; - D27.f[DIR_00M] = &DD27[DIR_00P * numberOfLBnodes]; - D27.f[DIR_00P] = &DD27[DIR_00M * numberOfLBnodes]; - D27.f[DIR_MM0] = &DD27[DIR_PP0 * numberOfLBnodes]; - D27.f[DIR_PP0] = &DD27[DIR_MM0 * numberOfLBnodes]; - D27.f[DIR_MP0] = &DD27[DIR_PM0 * numberOfLBnodes]; - D27.f[DIR_PM0] = &DD27[DIR_MP0 * numberOfLBnodes]; - D27.f[DIR_M0M] = &DD27[DIR_P0P * numberOfLBnodes]; - D27.f[DIR_P0P] = &DD27[DIR_M0M * numberOfLBnodes]; - D27.f[DIR_M0P] = &DD27[DIR_P0M * numberOfLBnodes]; - D27.f[DIR_P0M] = &DD27[DIR_M0P * numberOfLBnodes]; - D27.f[DIR_0MM] = &DD27[DIR_0PP * numberOfLBnodes]; - D27.f[DIR_0PP] = &DD27[DIR_0MM * numberOfLBnodes]; - D27.f[DIR_0MP] = &DD27[DIR_0PM * numberOfLBnodes]; - D27.f[DIR_0PM] = &DD27[DIR_0MP * numberOfLBnodes]; - D27.f[DIR_000] = &DD27[DIR_000 * numberOfLBnodes]; - D27.f[DIR_PPP] = &DD27[DIR_MMM * numberOfLBnodes]; - D27.f[DIR_MMP] = &DD27[DIR_PPM * numberOfLBnodes]; - D27.f[DIR_PMP] = &DD27[DIR_MPM * numberOfLBnodes]; - D27.f[DIR_MPP] = &DD27[DIR_PMM * numberOfLBnodes]; - D27.f[DIR_PPM] = &DD27[DIR_MMP * numberOfLBnodes]; - D27.f[DIR_MMM] = &DD27[DIR_PPP * numberOfLBnodes]; - D27.f[DIR_PMM] = &DD27[DIR_MPP * numberOfLBnodes]; - D27.f[DIR_MPM] = &DD27[DIR_PMP * numberOfLBnodes]; - } - //////////////////////////////////////////////////////////////////////////////// - const unsigned x = threadIdx.x; // Globaler x-Index - const unsigned y = blockIdx.x; // Globaler y-Index - const unsigned z = blockIdx.y; // Globaler z-Index - - const unsigned nx = blockDim.x; - const unsigned ny = gridDim.x; - - const unsigned k = nx*(ny*z + y) + x; - ////////////////////////////////////////////////////////////////////////// - - if(k<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[DIR_P00 * numberOfBCnodes]; - q_dirW = &QQ[DIR_M00 * numberOfBCnodes]; - q_dirN = &QQ[DIR_0P0 * numberOfBCnodes]; - q_dirS = &QQ[DIR_0M0 * numberOfBCnodes]; - q_dirT = &QQ[DIR_00P * numberOfBCnodes]; - q_dirB = &QQ[DIR_00M * numberOfBCnodes]; - q_dirNE = &QQ[DIR_PP0 * numberOfBCnodes]; - q_dirSW = &QQ[DIR_MM0 * numberOfBCnodes]; - q_dirSE = &QQ[DIR_PM0 * numberOfBCnodes]; - q_dirNW = &QQ[DIR_MP0 * numberOfBCnodes]; - q_dirTE = &QQ[DIR_P0P * numberOfBCnodes]; - q_dirBW = &QQ[DIR_M0M * numberOfBCnodes]; - q_dirBE = &QQ[DIR_P0M * numberOfBCnodes]; - q_dirTW = &QQ[DIR_M0P * numberOfBCnodes]; - q_dirTN = &QQ[DIR_0PP * numberOfBCnodes]; - q_dirBS = &QQ[DIR_0MM * numberOfBCnodes]; - q_dirBN = &QQ[DIR_0PM * numberOfBCnodes]; - q_dirTS = &QQ[DIR_0MP * numberOfBCnodes]; - q_dirTNE = &QQ[DIR_PPP * numberOfBCnodes]; - q_dirTSW = &QQ[DIR_MMP * numberOfBCnodes]; - q_dirTSE = &QQ[DIR_PMP * numberOfBCnodes]; - q_dirTNW = &QQ[DIR_MPP * numberOfBCnodes]; - q_dirBNE = &QQ[DIR_PPM * numberOfBCnodes]; - q_dirBSW = &QQ[DIR_MMM * numberOfBCnodes]; - q_dirBSE = &QQ[DIR_PMM * numberOfBCnodes]; - q_dirBNW = &QQ[DIR_MPM * 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]; - 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 f_W = (D.f[DIR_P00])[ke ]; - //real f_E = (D.f[DIR_M00])[kw ]; - //real f_S = (D.f[DIR_0P0])[kn ]; - //real f_N = (D.f[DIR_0M0])[ks ]; - //real f_B = (D.f[DIR_00P])[kt ]; - //real f_T = (D.f[DIR_00M])[kb ]; - //real f_SW = (D.f[DIR_PP0])[kne ]; - //real f_NE = (D.f[DIR_MM0])[ksw ]; - //real f_NW = (D.f[DIR_PM0])[kse ]; - //real f_SE = (D.f[DIR_MP0])[knw ]; - //real f_BW = (D.f[DIR_P0P])[kte ]; - //real f_TE = (D.f[DIR_M0M])[kbw ]; - //real f_TW = (D.f[DIR_P0M])[kbe ]; - //real f_BE = (D.f[DIR_M0P])[ktw ]; - //real f_BS = (D.f[DIR_0PP])[ktn ]; - //real f_TN = (D.f[DIR_0MM])[kbs ]; - //real f_TS = (D.f[DIR_0PM])[kbn ]; - //real f_BN = (D.f[DIR_0MP])[kts ]; - //real f_ZERO = (D.f[DIR_000])[kzero]; - //real f_BSW = (D.f[DIR_PPP])[ktne ]; - //real f_BNE = (D.f[DIR_MMP])[ktsw ]; - //real f_BNW = (D.f[DIR_PMP])[ktse ]; - //real f_BSE = (D.f[DIR_MPP])[ktnw ]; - //real f_TSW = (D.f[DIR_PPM])[kbne ]; - //real f_TNE = (D.f[DIR_MMM])[kbsw ]; - //real f_TNW = (D.f[DIR_PMM])[kbse ]; - //real f_TSE = (D.f[DIR_MPM])[kbnw ]; - //////////////////////////////////////////////////////////////////////////////// - //real vx1, vx2, vx3, /*drho, feq,*/ q; - real 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 + f_ZERO; - - //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); - - - //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); - - //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)+f_ZERO; - //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)); - //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[DIR_P00])[ke ]; - real f27_E = (D27.f[DIR_M00])[kw ]; - real f27_S = (D27.f[DIR_0P0])[kn ]; - real f27_N = (D27.f[DIR_0M0])[ks ]; - real f27_B = (D27.f[DIR_00P])[kt ]; - real f27_T = (D27.f[DIR_00M])[kb ]; - real f27_SW = (D27.f[DIR_PP0])[kne ]; - real f27_NE = (D27.f[DIR_MM0])[ksw ]; - real f27_NW = (D27.f[DIR_PM0])[kse ]; - real f27_SE = (D27.f[DIR_MP0])[knw ]; - real f27_BW = (D27.f[DIR_P0P])[kte ]; - real f27_TE = (D27.f[DIR_M0M])[kbw ]; - real f27_TW = (D27.f[DIR_P0M])[kbe ]; - real f27_BE = (D27.f[DIR_M0P])[ktw ]; - real f27_BS = (D27.f[DIR_0PP])[ktn ]; - real f27_TN = (D27.f[DIR_0MM])[kbs ]; - real f27_TS = (D27.f[DIR_0PM])[kbn ]; - real f27_BN = (D27.f[DIR_0MP])[kts ]; - //real f27_ZERO = (D27.f[DIR_000])[kzero]; - real f27_BSW = (D27.f[DIR_PPP])[ktne ]; - real f27_BNE = (D27.f[DIR_MMP])[ktsw ]; - real f27_BNW = (D27.f[DIR_PMP])[ktse ]; - real f27_BSE = (D27.f[DIR_MPP])[ktnw ]; - real f27_TSW = (D27.f[DIR_PPM])[kbne ]; - real f27_TNE = (D27.f[DIR_MMM])[kbsw ]; - real f27_TNW = (D27.f[DIR_PMM])[kbse ]; - real f27_TSE = (D27.f[DIR_MPM])[kbnw ]; - //////////////////////////////////////////////////////////////////////////////// - //real cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3); - //////////////////////////////////////////////////////////////////////////////// - //real ConcD = f27_TSE + f27_TNW + f27_TNE + f27_TSW + f27_BSE + f27_BNW + f27_BNE + f27_BSW + - // f27_BN + f27_TS + f27_TN + f27_BS + f27_BE + f27_TW + f27_TE + f27_BW + f27_SE + f27_NW + f27_NE + f27_SW + - // f27_T + f27_B + f27_N + f27_S + f27_E + f27_W + f27_ZERO; - - //real feq27_ZERO = c8over27* ConcD*(one-cu_sq); - //real feq27_E = c2o27* ConcD*(c1o1+c3o1*( vx1 )+c9o2*( vx1 )*( vx1 )-cu_sq); - //real feq27_W = c2o27* ConcD*(c1o1+c3o1*(-vx1 )+c9o2*(-vx1 )*(-vx1 )-cu_sq); - //real feq27_N = c2o27* ConcD*(c1o1+c3o1*( vx2 )+c9o2*( vx2 )*( vx2 )-cu_sq); - //real feq27_S = c2o27* ConcD*(c1o1+c3o1*( -vx2 )+c9o2*( -vx2 )*( -vx2 )-cu_sq); - //real feq27_T = c2o27* ConcD*(c1o1+c3o1*( vx3)+c9o2*( vx3)*( vx3)-cu_sq); - //real feq27_B = c2o27* ConcD*(c1o1+c3o1*( -vx3)+c9o2*( -vx3)*( -vx3)-cu_sq); - //real feq27_NE = c1o54* ConcD*(c1o1+c3o1*( vx1+vx2 )+c9o2*( vx1+vx2 )*( vx1+vx2 )-cu_sq); - //real feq27_SW = c1o54* ConcD*(c1o1+c3o1*(-vx1-vx2 )+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq); - //real feq27_SE = c1o54* ConcD*(c1o1+c3o1*( vx1-vx2 )+c9o2*( vx1-vx2 )*( vx1-vx2 )-cu_sq); - //real feq27_NW = c1o54* ConcD*(c1o1+c3o1*(-vx1+vx2 )+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq); - //real feq27_TE = c1o54* ConcD*(c1o1+c3o1*( vx1 +vx3)+c9o2*( vx1 +vx3)*( vx1 +vx3)-cu_sq); - //real feq27_BW = c1o54* ConcD*(c1o1+c3o1*(-vx1 -vx3)+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq); - //real feq27_BE = c1o54* ConcD*(c1o1+c3o1*( vx1 -vx3)+c9o2*( vx1 -vx3)*( vx1 -vx3)-cu_sq); - //real feq27_TW = c1o54* ConcD*(c1o1+c3o1*(-vx1 +vx3)+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq); - //real feq27_TN = c1o54* ConcD*(c1o1+c3o1*( vx2+vx3)+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq); - //real feq27_BS = c1o54* ConcD*(c1o1+c3o1*( -vx2-vx3)+c9o2*( -vx2-vx3)*( -vx2-vx3)-cu_sq); - //real feq27_BN = c1o54* ConcD*(c1o1+c3o1*( vx2-vx3)+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq); - //real feq27_TS = c1o54* ConcD*(c1o1+c3o1*( -vx2+vx3)+c9o2*( -vx2+vx3)*( -vx2+vx3)-cu_sq); - //real feq27_TNE = c1o216*ConcD*(c1o1+c3o1*( vx1+vx2+vx3)+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq); - //real feq27_BSW = c1o216*ConcD*(c1o1+c3o1*(-vx1-vx2-vx3)+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq); - //real feq27_BNE = c1o216*ConcD*(c1o1+c3o1*( vx1+vx2-vx3)+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq); - //real feq27_TSW = c1o216*ConcD*(c1o1+c3o1*(-vx1-vx2+vx3)+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq); - //real feq27_TSE = c1o216*ConcD*(c1o1+c3o1*( vx1-vx2+vx3)+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq); - //real feq27_BNW = c1o216*ConcD*(c1o1+c3o1*(-vx1+vx2-vx3)+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq); - //real feq27_BSE = c1o216*ConcD*(c1o1+c3o1*( vx1-vx2-vx3)+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq); - //real feq27_TNW = c1o216*ConcD*(c1o1+c3o1*(-vx1+vx2+vx3)+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq); - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //real TempD = temp[k]; - - //real feqW27_ZERO = c8over27* TempD*(one-cu_sq); - //real feqW27_E = c2o27* TempD*(c1o1+c3o1*( vx1 )+c9o2*( vx1 )*( vx1 )-cu_sq); - //real feqW27_W = c2o27* TempD*(c1o1+c3o1*(-vx1 )+c9o2*(-vx1 )*(-vx1 )-cu_sq); - //real feqW27_N = c2o27* TempD*(c1o1+c3o1*( vx2 )+c9o2*( vx2 )*( vx2 )-cu_sq); - //real feqW27_S = c2o27* TempD*(c1o1+c3o1*( -vx2 )+c9o2*( -vx2 )*( -vx2 )-cu_sq); - //real feqW27_T = c2o27* TempD*(c1o1+c3o1*( vx3)+c9o2*( vx3)*( vx3)-cu_sq); - //real feqW27_B = c2o27* TempD*(c1o1+c3o1*( -vx3)+c9o2*( -vx3)*( -vx3)-cu_sq); - //real feqW27_NE = c1o54* TempD*(c1o1+c3o1*( vx1+vx2 )+c9o2*( vx1+vx2 )*( vx1+vx2 )-cu_sq); - //real feqW27_SW = c1o54* TempD*(c1o1+c3o1*(-vx1-vx2 )+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq); - //real feqW27_SE = c1o54* TempD*(c1o1+c3o1*( vx1-vx2 )+c9o2*( vx1-vx2 )*( vx1-vx2 )-cu_sq); - //real feqW27_NW = c1o54* TempD*(c1o1+c3o1*(-vx1+vx2 )+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq); - //real feqW27_TE = c1o54* TempD*(c1o1+c3o1*( vx1 +vx3)+c9o2*( vx1 +vx3)*( vx1 +vx3)-cu_sq); - //real feqW27_BW = c1o54* TempD*(c1o1+c3o1*(-vx1 -vx3)+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq); - //real feqW27_BE = c1o54* TempD*(c1o1+c3o1*( vx1 -vx3)+c9o2*( vx1 -vx3)*( vx1 -vx3)-cu_sq); - //real feqW27_TW = c1o54* TempD*(c1o1+c3o1*(-vx1 +vx3)+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq); - //real feqW27_TN = c1o54* TempD*(c1o1+c3o1*( vx2+vx3)+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq); - //real feqW27_BS = c1o54* TempD*(c1o1+c3o1*( -vx2-vx3)+c9o2*( -vx2-vx3)*( -vx2-vx3)-cu_sq); - //real feqW27_BN = c1o54* TempD*(c1o1+c3o1*( vx2-vx3)+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq); - //real feqW27_TS = c1o54* TempD*(c1o1+c3o1*( -vx2+vx3)+c9o2*( -vx2+vx3)*( -vx2+vx3)-cu_sq); - //real feqW27_TNE = c1o216*TempD*(c1o1+c3o1*( vx1+vx2+vx3)+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq); - //real feqW27_BSW = c1o216*TempD*(c1o1+c3o1*(-vx1-vx2-vx3)+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq); - //real feqW27_BNE = c1o216*TempD*(c1o1+c3o1*( vx1+vx2-vx3)+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq); - //real feqW27_TSW = c1o216*TempD*(c1o1+c3o1*(-vx1-vx2+vx3)+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq); - //real feqW27_TSE = c1o216*TempD*(c1o1+c3o1*( vx1-vx2+vx3)+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq); - //real feqW27_BNW = c1o216*TempD*(c1o1+c3o1*(-vx1+vx2-vx3)+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq); - //real feqW27_BSE = c1o216*TempD*(c1o1+c3o1*( vx1-vx2-vx3)+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq); - //real feqW27_TNW = c1o216*TempD*(c1o1+c3o1*(-vx1+vx2+vx3)+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq); - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real omegaD = c3o1 - sqrt(c3o1); - //real Lam = -(c1o2-one/omegaD); - //real nue_d = Lam/three; - //real ae = zero; - //real ae = diffusivity/nue_d - one; - - - ////////////////////////////////////////////////////////////////////////// - if (isEvenTimestep==false) - { - D27.f[DIR_P00] = &DD27[DIR_P00 * numberOfLBnodes]; - D27.f[DIR_M00] = &DD27[DIR_M00 * numberOfLBnodes]; - D27.f[DIR_0P0] = &DD27[DIR_0P0 * numberOfLBnodes]; - D27.f[DIR_0M0] = &DD27[DIR_0M0 * numberOfLBnodes]; - D27.f[DIR_00P] = &DD27[DIR_00P * numberOfLBnodes]; - D27.f[DIR_00M] = &DD27[DIR_00M * numberOfLBnodes]; - D27.f[DIR_PP0] = &DD27[DIR_PP0 * numberOfLBnodes]; - D27.f[DIR_MM0] = &DD27[DIR_MM0 * numberOfLBnodes]; - D27.f[DIR_PM0] = &DD27[DIR_PM0 * numberOfLBnodes]; - D27.f[DIR_MP0] = &DD27[DIR_MP0 * numberOfLBnodes]; - D27.f[DIR_P0P] = &DD27[DIR_P0P * numberOfLBnodes]; - D27.f[DIR_M0M] = &DD27[DIR_M0M * numberOfLBnodes]; - D27.f[DIR_P0M] = &DD27[DIR_P0M * numberOfLBnodes]; - D27.f[DIR_M0P] = &DD27[DIR_M0P * numberOfLBnodes]; - D27.f[DIR_0PP] = &DD27[DIR_0PP * numberOfLBnodes]; - D27.f[DIR_0MM] = &DD27[DIR_0MM * numberOfLBnodes]; - D27.f[DIR_0PM] = &DD27[DIR_0PM * numberOfLBnodes]; - D27.f[DIR_0MP] = &DD27[DIR_0MP * numberOfLBnodes]; - D27.f[DIR_000] = &DD27[DIR_000 * numberOfLBnodes]; - D27.f[DIR_PPP] = &DD27[DIR_PPP * numberOfLBnodes]; - D27.f[DIR_MMP] = &DD27[DIR_MMP * numberOfLBnodes]; - D27.f[DIR_PMP] = &DD27[DIR_PMP * numberOfLBnodes]; - D27.f[DIR_MPP] = &DD27[DIR_MPP * numberOfLBnodes]; - D27.f[DIR_PPM] = &DD27[DIR_PPM * numberOfLBnodes]; - D27.f[DIR_MMM] = &DD27[DIR_MMM * numberOfLBnodes]; - D27.f[DIR_PMM] = &DD27[DIR_PMM * numberOfLBnodes]; - D27.f[DIR_MPM] = &DD27[DIR_MPM * numberOfLBnodes]; - } - else - { - D27.f[DIR_M00] = &DD27[DIR_P00 * numberOfLBnodes]; - D27.f[DIR_P00] = &DD27[DIR_M00 * numberOfLBnodes]; - D27.f[DIR_0M0] = &DD27[DIR_0P0 * numberOfLBnodes]; - D27.f[DIR_0P0] = &DD27[DIR_0M0 * numberOfLBnodes]; - D27.f[DIR_00M] = &DD27[DIR_00P * numberOfLBnodes]; - D27.f[DIR_00P] = &DD27[DIR_00M * numberOfLBnodes]; - D27.f[DIR_MM0] = &DD27[DIR_PP0 * numberOfLBnodes]; - D27.f[DIR_PP0] = &DD27[DIR_MM0 * numberOfLBnodes]; - D27.f[DIR_MP0] = &DD27[DIR_PM0 * numberOfLBnodes]; - D27.f[DIR_PM0] = &DD27[DIR_MP0 * numberOfLBnodes]; - D27.f[DIR_M0M] = &DD27[DIR_P0P * numberOfLBnodes]; - D27.f[DIR_P0P] = &DD27[DIR_M0M * numberOfLBnodes]; - D27.f[DIR_M0P] = &DD27[DIR_P0M * numberOfLBnodes]; - D27.f[DIR_P0M] = &DD27[DIR_M0P * numberOfLBnodes]; - D27.f[DIR_0MM] = &DD27[DIR_0PP * numberOfLBnodes]; - D27.f[DIR_0PP] = &DD27[DIR_0MM * numberOfLBnodes]; - D27.f[DIR_0MP] = &DD27[DIR_0PM * numberOfLBnodes]; - D27.f[DIR_0PM] = &DD27[DIR_0MP * numberOfLBnodes]; - D27.f[DIR_000] = &DD27[DIR_000 * numberOfLBnodes]; - D27.f[DIR_PPP] = &DD27[DIR_MMM * numberOfLBnodes]; - D27.f[DIR_MMP] = &DD27[DIR_PPM * numberOfLBnodes]; - D27.f[DIR_PMP] = &DD27[DIR_MPM * numberOfLBnodes]; - D27.f[DIR_MPP] = &DD27[DIR_PMM * numberOfLBnodes]; - D27.f[DIR_PPM] = &DD27[DIR_MMP * numberOfLBnodes]; - D27.f[DIR_MMM] = &DD27[DIR_PPP * numberOfLBnodes]; - D27.f[DIR_PMM] = &DD27[DIR_MPP * numberOfLBnodes]; - D27.f[DIR_MPM] = &DD27[DIR_PMP * numberOfLBnodes]; - } - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //Test - //(D.f[DIR_000])[k]=0.1f; - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - q = q_dirE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_M00])[kw ]=f27_E ; - q = q_dirW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_P00])[ke ]=f27_W ; - q = q_dirN[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_0M0])[ks ]=f27_N ; - q = q_dirS[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_0P0])[kn ]=f27_S ; - q = q_dirT[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_00M])[kb ]=f27_T ; - q = q_dirB[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_00P])[kt ]=f27_B ; - q = q_dirNE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_MM0])[ksw ]=f27_NE ; - q = q_dirSW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_PP0])[kne ]=f27_SW ; - q = q_dirSE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_MP0])[knw ]=f27_SE ; - q = q_dirNW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_PM0])[kse ]=f27_NW ; - q = q_dirTE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_M0M])[kbw ]=f27_TE ; - q = q_dirBW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_P0P])[kte ]=f27_BW ; - q = q_dirBE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_M0P])[ktw ]=f27_BE ; - q = q_dirTW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_P0M])[kbe ]=f27_TW ; - q = q_dirTN[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_0MM])[kbs ]=f27_TN ; - q = q_dirBS[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_0PP])[ktn ]=f27_BS ; - q = q_dirBN[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_0MP])[kts ]=f27_BN ; - q = q_dirTS[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_0PM])[kbn ]=f27_TS ; - q = q_dirTNE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_MMM])[kbsw]=f27_TNE; - q = q_dirBSW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_PPP])[ktne]=f27_BSW; - q = q_dirBNE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_MMP])[ktsw]=f27_BNE; - q = q_dirTSW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_PPM])[kbne]=f27_TSW; - q = q_dirTSE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_MPM])[kbnw]=f27_TSE; - q = q_dirBNW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_PMP])[ktse]=f27_BNW; - q = q_dirBSE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_MPP])[ktnw]=f27_BSE; - q = q_dirTNW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_PMM])[kbse]=f27_TNW; - } -} -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -////// ////// -////// incomp ////// -////// ////// -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - - -////////////////////////////////////////////////////////////////////////////// -__global__ void QNoSlipADincomp7( - real* DD, - real* DD7, - real* temp, - real diffusivity, - int* k_Q, - real* QQ, - unsigned int numberOfBCnodes, - real om1, - unsigned int* neighborX, - unsigned int* neighborY, - unsigned int* neighborZ, - unsigned long long numberOfLBnodes, - bool isEvenTimestep) -{ - //Distributions27 D; - //if (isEvenTimestep==true) - //{ - // D.f[DIR_P00] = &DD[DIR_P00 * size_Mat]; - // D.f[DIR_M00] = &DD[DIR_M00 * size_Mat]; - // D.f[DIR_0P0] = &DD[DIR_0P0 * size_Mat]; - // D.f[DIR_0M0] = &DD[DIR_0M0 * size_Mat]; - // D.f[DIR_00P] = &DD[DIR_00P * size_Mat]; - // D.f[DIR_00M] = &DD[DIR_00M * size_Mat]; - // D.f[DIR_PP0] = &DD[DIR_PP0 * size_Mat]; - // D.f[DIR_MM0] = &DD[DIR_MM0 * size_Mat]; - // D.f[DIR_PM0] = &DD[DIR_PM0 * size_Mat]; - // D.f[DIR_MP0] = &DD[DIR_MP0 * size_Mat]; - // D.f[DIR_P0P] = &DD[DIR_P0P * size_Mat]; - // D.f[DIR_M0M] = &DD[DIR_M0M * size_Mat]; - // D.f[DIR_P0M] = &DD[DIR_P0M * size_Mat]; - // D.f[DIR_M0P] = &DD[DIR_M0P * size_Mat]; - // D.f[DIR_0PP] = &DD[DIR_0PP * size_Mat]; - // D.f[DIR_0MM] = &DD[DIR_0MM * size_Mat]; - // D.f[DIR_0PM] = &DD[DIR_0PM * size_Mat]; - // D.f[DIR_0MP] = &DD[DIR_0MP * size_Mat]; - // D.f[DIR_000] = &DD[DIR_000 * size_Mat]; - // D.f[DIR_PPP] = &DD[DIR_PPP * size_Mat]; - // D.f[DIR_MMP] = &DD[DIR_MMP * size_Mat]; - // D.f[DIR_PMP] = &DD[DIR_PMP * size_Mat]; - // D.f[DIR_MPP] = &DD[DIR_MPP * size_Mat]; - // D.f[DIR_PPM] = &DD[DIR_PPM * size_Mat]; - // D.f[DIR_MMM] = &DD[DIR_MMM * size_Mat]; - // D.f[DIR_PMM] = &DD[DIR_PMM * size_Mat]; - // D.f[DIR_MPM] = &DD[DIR_MPM * size_Mat]; - //} - //else - //{ - // D.f[DIR_M00] = &DD[DIR_P00 * size_Mat]; - // D.f[DIR_P00] = &DD[DIR_M00 * size_Mat]; - // D.f[DIR_0M0] = &DD[DIR_0P0 * size_Mat]; - // D.f[DIR_0P0] = &DD[DIR_0M0 * size_Mat]; - // D.f[DIR_00M] = &DD[DIR_00P * size_Mat]; - // D.f[DIR_00P] = &DD[DIR_00M * size_Mat]; - // D.f[DIR_MM0] = &DD[DIR_PP0 * size_Mat]; - // D.f[DIR_PP0] = &DD[DIR_MM0 * size_Mat]; - // D.f[DIR_MP0] = &DD[DIR_PM0 * size_Mat]; - // D.f[DIR_PM0] = &DD[DIR_MP0 * size_Mat]; - // D.f[DIR_M0M] = &DD[DIR_P0P * size_Mat]; - // D.f[DIR_P0P] = &DD[DIR_M0M * size_Mat]; - // D.f[DIR_M0P] = &DD[DIR_P0M * size_Mat]; - // D.f[DIR_P0M] = &DD[DIR_M0P * size_Mat]; - // D.f[DIR_0MM] = &DD[DIR_0PP * size_Mat]; - // D.f[DIR_0PP] = &DD[DIR_0MM * size_Mat]; - // D.f[DIR_0MP] = &DD[DIR_0PM * size_Mat]; - // D.f[DIR_0PM] = &DD[DIR_0MP * size_Mat]; - // D.f[DIR_000] = &DD[DIR_000 * size_Mat]; - // D.f[DIR_PPP] = &DD[DIR_MMM * size_Mat]; - // D.f[DIR_MMP] = &DD[DIR_PPM * size_Mat]; - // D.f[DIR_PMP] = &DD[DIR_MPM * size_Mat]; - // D.f[DIR_MPP] = &DD[DIR_PMM * size_Mat]; - // D.f[DIR_PPM] = &DD[DIR_MMP * size_Mat]; - // D.f[DIR_MMM] = &DD[DIR_PPP * size_Mat]; - // D.f[DIR_PMM] = &DD[DIR_MPP * size_Mat]; - // D.f[DIR_MPM] = &DD[DIR_PMP * size_Mat]; - //} - - Distributions7 D7; - if (isEvenTimestep==true) - { - D7.f[0] = &DD7[0*numberOfLBnodes]; - D7.f[1] = &DD7[1*numberOfLBnodes]; - D7.f[2] = &DD7[2*numberOfLBnodes]; - D7.f[3] = &DD7[3*numberOfLBnodes]; - D7.f[4] = &DD7[4*numberOfLBnodes]; - D7.f[5] = &DD7[5*numberOfLBnodes]; - D7.f[6] = &DD7[6*numberOfLBnodes]; - } - else - { - D7.f[0] = &DD7[0*numberOfLBnodes]; - D7.f[2] = &DD7[1*numberOfLBnodes]; - D7.f[1] = &DD7[2*numberOfLBnodes]; - D7.f[4] = &DD7[3*numberOfLBnodes]; - D7.f[3] = &DD7[4*numberOfLBnodes]; - D7.f[6] = &DD7[5*numberOfLBnodes]; - D7.f[5] = &DD7[6*numberOfLBnodes]; - } - - - //////////////////////////////////////////////////////////////////////////////// - const unsigned x = threadIdx.x; // Globaler x-Index - const unsigned y = blockIdx.x; // Globaler y-Index - const unsigned z = blockIdx.y; // Globaler z-Index - - const unsigned nx = blockDim.x; - const unsigned ny = gridDim.x; - - const unsigned k = nx*(ny*z + y) + x; - ////////////////////////////////////////////////////////////////////////// - - if(k<numberOfBCnodes) - { - ////////////////////////////////////////////////////////////////////////////////// - real *q_dirE, *q_dirW, *q_dirN, *q_dirS, *q_dirT, *q_dirB; - - q_dirE = &QQ[DIR_P00 * numberOfBCnodes]; - q_dirW = &QQ[DIR_M00 * numberOfBCnodes]; - q_dirN = &QQ[DIR_0P0 * numberOfBCnodes]; - q_dirS = &QQ[DIR_0M0 * numberOfBCnodes]; - q_dirT = &QQ[DIR_00P * numberOfBCnodes]; - q_dirB = &QQ[DIR_00M * 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]; - //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 f_W = (D.f[DIR_P00])[ke ]; - //real f_E = (D.f[DIR_M00])[kw ]; - //real f_S = (D.f[DIR_0P0])[kn ]; - //real f_N = (D.f[DIR_0M0])[ks ]; - //real f_B = (D.f[DIR_00P])[kt ]; - //real f_T = (D.f[DIR_00M])[kb ]; - //real f_SW = (D.f[DIR_PP0])[kne ]; - //real f_NE = (D.f[DIR_MM0])[ksw ]; - //real f_NW = (D.f[DIR_PM0])[kse ]; - //real f_SE = (D.f[DIR_MP0])[knw ]; - //real f_BW = (D.f[DIR_P0P])[kte ]; - //real f_TE = (D.f[DIR_M0M])[kbw ]; - //real f_TW = (D.f[DIR_P0M])[kbe ]; - //real f_BE = (D.f[DIR_M0P])[ktw ]; - //real f_BS = (D.f[DIR_0PP])[ktn ]; - //real f_TN = (D.f[DIR_0MM])[kbs ]; - //real f_TS = (D.f[DIR_0PM])[kbn ]; - //real f_BN = (D.f[DIR_0MP])[kts ]; - //real f_BSW = (D.f[DIR_PPP])[ktne ]; - //real f_BNE = (D.f[DIR_MMP])[ktsw ]; - //real f_BNW = (D.f[DIR_PMP])[ktse ]; - //real f_BSE = (D.f[DIR_MPP])[ktnw ]; - //real f_TSW = (D.f[DIR_PPM])[kbne ]; - //real f_TNE = (D.f[DIR_MMM])[kbsw ]; - //real f_TNW = (D.f[DIR_PMM])[kbse ]; - //real f_TSE = (D.f[DIR_MPM])[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)); - ////d�rrrrrty !!!!!!!!!!!!! - // real vx1 = ten * ((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 = ten * ((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 = ten * ((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 cu_sq =c3o2*(vx1*vx1+vx2*vx2+vx3*vx3); - //real ux_sq = vx1 * vx1; - //real uy_sq = vx2 * vx2; - //real uz_sq = vx3 * vx3; - //////////////////////////////////////////////////////////////////////////////// - //BGK - //real omegaD = three - sqrt(three); - //real Lam = -(c1o2-one/omegaD); - //real nue_d = Lam/three; - //real ae = diffusivity/nue_d - one; //zero; - - real f7_E,f7_W,f7_N,f7_S,f7_T,f7_B; - //real /*feq7_ZERO,*/feq7_E,feq7_W,feq7_N,feq7_S,feq7_T,feq7_B; - //real /*feqW7_ZERO,*/feqW7_E,feqW7_W,feqW7_N,feqW7_S,feqW7_T,feqW7_B; - real TempD = temp[k]; - - - //f7_ZERO = (D7.f[0])[kzero]; - f7_W = (D7.f[1])[ke ]; - f7_E = (D7.f[2])[kw ]; - f7_S = (D7.f[3])[kn ]; - f7_N = (D7.f[4])[ks ]; - f7_B = (D7.f[5])[kt ]; - f7_T = (D7.f[6])[kb ]; - - //real ConcD = f7_ZERO + f7_E + f7_W + f7_N + f7_S + f7_T + f7_B; - - ////feq7_ZERO = ConcD*(c1o3*(ae*(-three))-(ux_sq+uy_sq+uz_sq)); - //feq7_E = ConcD*(c1o6*(ae+one)+c1o2*(ux_sq)+vx1*c1o2); - //feq7_W = ConcD*(c1o6*(ae+one)+c1o2*(ux_sq)-vx1*c1o2); - //feq7_N = ConcD*(c1o6*(ae+one)+c1o2*(uy_sq)+vx2*c1o2); - //feq7_S = ConcD*(c1o6*(ae+one)+c1o2*(uy_sq)-vx2*c1o2); - //feq7_T = ConcD*(c1o6*(ae+one)+c1o2*(uz_sq)+vx3*c1o2); - //feq7_B = ConcD*(c1o6*(ae+one)+c1o2*(uz_sq)-vx3*c1o2); - - ////feq7_ZERO = TempD*(c1o3*(ae*(-three))-(ux_sq+uy_sq+uz_sq)); - //feqW7_E = TempD*(c1o6*(ae+one));//+c1o2*(ux_sq)+vx1*c1o2); - //feqW7_W = TempD*(c1o6*(ae+one));//+c1o2*(ux_sq)-vx1*c1o2); - //feqW7_N = TempD*(c1o6*(ae+one));//+c1o2*(uy_sq)+vx2*c1o2); - //feqW7_S = TempD*(c1o6*(ae+one));//+c1o2*(uy_sq)-vx2*c1o2); - //feqW7_T = TempD*(c1o6*(ae+one));//+c1o2*(uz_sq)+vx3*c1o2); - //feqW7_B = TempD*(c1o6*(ae+one));//+c1o2*(uz_sq)-vx3*c1o2); - - //////////////////////////////////////////////////////////////////////////////// - //TRT - real cs2 = c1o4; - ////////////////////////////////////////////////////////////////////////// - //pointertausch - if (isEvenTimestep==false) - { - D7.f[0] = &DD7[0*numberOfLBnodes]; - D7.f[1] = &DD7[1*numberOfLBnodes]; - D7.f[2] = &DD7[2*numberOfLBnodes]; - D7.f[3] = &DD7[3*numberOfLBnodes]; - D7.f[4] = &DD7[4*numberOfLBnodes]; - D7.f[5] = &DD7[5*numberOfLBnodes]; - D7.f[6] = &DD7[6*numberOfLBnodes]; - } - else - { - D7.f[0] = &DD7[0*numberOfLBnodes]; - D7.f[2] = &DD7[1*numberOfLBnodes]; - D7.f[1] = &DD7[2*numberOfLBnodes]; - D7.f[4] = &DD7[3*numberOfLBnodes]; - D7.f[3] = &DD7[4*numberOfLBnodes]; - D7.f[6] = &DD7[5*numberOfLBnodes]; - D7.f[5] = &DD7[6*numberOfLBnodes]; - } - - //////////////////////////////////////////////////////////////////////////// - ////mit Q's - //real /*feq,*/ q; - //q = q_dirE[k]; - //if (q>=zero && q<=one) - //{ - // //q=zero; - // (D7.f[2])[kw]=(two*feqW7_W-(f7_E*(q*omegaD-one)-omegaD*feq7_E*(q-one))/(omegaD-one)+f7_W*q)/(q+one);//f7_W - feq7_W + feqW7_E; - //} - - //q = q_dirW[k]; - //if (q>=zero && q<=one) - //{ - // //q=zero; - // (D7.f[1])[ke]=(two*feqW7_E-(f7_W*(q*omegaD-one)-omegaD*feq7_W*(q-one))/(omegaD-one)+f7_E*q)/(q+one);//f7_E - feq7_E + feqW7_W; - //} - - //q = q_dirN[k]; - //if (q>=zero && q<=one) - //{ - // //q=zero; - // (D7.f[4])[ks]=(two*feqW7_S-(f7_N*(q*omegaD-one)-omegaD*feq7_N*(q-one))/(omegaD-one)+f7_S*q)/(q+one);//f7_S - feq7_S + feqW7_N; - //} - - //q = q_dirS[k]; - //if (q>=zero && q<=one) - //{ - // //q=zero; - // (D7.f[3])[kn]=(two*feqW7_N-(f7_S*(q*omegaD-one)-omegaD*feq7_S*(q-one))/(omegaD-one)+f7_N*q)/(q+one);//f7_N - feq7_N + feqW7_S; - //} - - //q = q_dirT[k]; - //if (q>=zero && q<=one) - //{ - // //q=zero; - // (D7.f[6])[kb]=(two*feqW7_B-(f7_T*(q*omegaD-one)-omegaD*feq7_T*(q-one))/(omegaD-one)+f7_B*q)/(q+one);//f7_B - feq7_B + feqW7_T; - //} - - //q = q_dirB[k]; - //if (q>=zero && q<=one) - //{ - // //q=zero; - // (D7.f[5])[kt]=(two*feqW7_T-(f7_B*(q*omegaD-one)-omegaD*feq7_B*(q-one))/(omegaD-one)+f7_T*q)/(q+one);//f7_T - feq7_T + feqW7_B; - //} - - //////////////////////////////////////////////////////////////////////////// - ////ohne Q's - //real /*feq,*/ q; - //q = q_dirE[k]; - //if (q>=zero && q<=one) - //{ - // (D7.f[2])[kw]=f7_W;// - feq7_W + feqW7_E; - //} - - //q = q_dirW[k]; - //if (q>=zero && q<=one) - //{ - // (D7.f[1])[ke]=f7_E;// - feq7_E + feqW7_W; - //} - - //q = q_dirN[k]; - //if (q>=zero && q<=one) - //{ - // (D7.f[4])[ks]=f7_S;// - feq7_S + feqW7_N; - //} - - //q = q_dirS[k]; - //if (q>=zero && q<=one) - //{ - // (D7.f[3])[kn]=f7_N;// - feq7_N + feqW7_S; - //} - - //q = q_dirT[k]; - //if (q>=zero && q<=one) - //{ - // (D7.f[6])[kb]=f7_B;// - feq7_B + feqW7_T; - //} - - //q = q_dirB[k]; - //if (q>=zero && q<=one) - //{ - // (D7.f[5])[kt]=f7_T;// - feq7_T + feqW7_B; - //} - - - ////////////////////////////////////////////////////////////////////////// - //ohne Q's aber mit TRT - real /*feq,*/ q; - q = q_dirE[k]; - if (q>=c0o1 && q<=c1o1) - { - (D7.f[2])[kw]= -f7_W + cs2 * TempD; - } - - q = q_dirW[k]; - if (q>=c0o1 && q<=c1o1) - { - (D7.f[1])[ke]= -f7_E + cs2 * TempD; - } - - q = q_dirN[k]; - if (q>=c0o1 && q<=c1o1) - { - (D7.f[4])[ks]= -f7_S + cs2 * TempD; - } - - q = q_dirS[k]; - if (q>=c0o1 && q<=c1o1) - { - (D7.f[3])[kn]= -f7_N + cs2 * TempD; - } - - q = q_dirT[k]; - if (q>=c0o1 && q<=c1o1) - { - (D7.f[6])[kb]= -f7_B + cs2 * TempD; - } - - q = q_dirB[k]; - if (q>=c0o1 && q<=c1o1) - { - (D7.f[5])[kt]= -f7_T + cs2 * TempD; - } - - } -} -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -////////////////////////////////////////////////////////////////////////////// -__global__ void QNoSlipADincomp27( - real* DD, - real* DD27, - real* temp, - real diffusivity, - int* k_Q, - real* QQ, - unsigned int numberOfBCnodes, - real om1, - unsigned int* neighborX, - unsigned int* neighborY, - unsigned int* neighborZ, - unsigned long long numberOfLBnodes, - bool isEvenTimestep) -{ - Distributions27 D; - if (isEvenTimestep==true) - { - D.f[DIR_P00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_M00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_PMP * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_MPM * numberOfLBnodes]; - } - else - { - D.f[DIR_M00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_P00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_MPM * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_PMP * numberOfLBnodes]; - } - - Distributions27 D27; - if (isEvenTimestep==true) - { - D27.f[DIR_P00] = &DD27[DIR_P00 * numberOfLBnodes]; - D27.f[DIR_M00] = &DD27[DIR_M00 * numberOfLBnodes]; - D27.f[DIR_0P0] = &DD27[DIR_0P0 * numberOfLBnodes]; - D27.f[DIR_0M0] = &DD27[DIR_0M0 * numberOfLBnodes]; - D27.f[DIR_00P] = &DD27[DIR_00P * numberOfLBnodes]; - D27.f[DIR_00M] = &DD27[DIR_00M * numberOfLBnodes]; - D27.f[DIR_PP0] = &DD27[DIR_PP0 * numberOfLBnodes]; - D27.f[DIR_MM0] = &DD27[DIR_MM0 * numberOfLBnodes]; - D27.f[DIR_PM0] = &DD27[DIR_PM0 * numberOfLBnodes]; - D27.f[DIR_MP0] = &DD27[DIR_MP0 * numberOfLBnodes]; - D27.f[DIR_P0P] = &DD27[DIR_P0P * numberOfLBnodes]; - D27.f[DIR_M0M] = &DD27[DIR_M0M * numberOfLBnodes]; - D27.f[DIR_P0M] = &DD27[DIR_P0M * numberOfLBnodes]; - D27.f[DIR_M0P] = &DD27[DIR_M0P * numberOfLBnodes]; - D27.f[DIR_0PP] = &DD27[DIR_0PP * numberOfLBnodes]; - D27.f[DIR_0MM] = &DD27[DIR_0MM * numberOfLBnodes]; - D27.f[DIR_0PM] = &DD27[DIR_0PM * numberOfLBnodes]; - D27.f[DIR_0MP] = &DD27[DIR_0MP * numberOfLBnodes]; - D27.f[DIR_000] = &DD27[DIR_000 * numberOfLBnodes]; - D27.f[DIR_PPP] = &DD27[DIR_PPP * numberOfLBnodes]; - D27.f[DIR_MMP] = &DD27[DIR_MMP * numberOfLBnodes]; - D27.f[DIR_PMP] = &DD27[DIR_PMP * numberOfLBnodes]; - D27.f[DIR_MPP] = &DD27[DIR_MPP * numberOfLBnodes]; - D27.f[DIR_PPM] = &DD27[DIR_PPM * numberOfLBnodes]; - D27.f[DIR_MMM] = &DD27[DIR_MMM * numberOfLBnodes]; - D27.f[DIR_PMM] = &DD27[DIR_PMM * numberOfLBnodes]; - D27.f[DIR_MPM] = &DD27[DIR_MPM * numberOfLBnodes]; - } - else - { - D27.f[DIR_M00] = &DD27[DIR_P00 * numberOfLBnodes]; - D27.f[DIR_P00] = &DD27[DIR_M00 * numberOfLBnodes]; - D27.f[DIR_0M0] = &DD27[DIR_0P0 * numberOfLBnodes]; - D27.f[DIR_0P0] = &DD27[DIR_0M0 * numberOfLBnodes]; - D27.f[DIR_00M] = &DD27[DIR_00P * numberOfLBnodes]; - D27.f[DIR_00P] = &DD27[DIR_00M * numberOfLBnodes]; - D27.f[DIR_MM0] = &DD27[DIR_PP0 * numberOfLBnodes]; - D27.f[DIR_PP0] = &DD27[DIR_MM0 * numberOfLBnodes]; - D27.f[DIR_MP0] = &DD27[DIR_PM0 * numberOfLBnodes]; - D27.f[DIR_PM0] = &DD27[DIR_MP0 * numberOfLBnodes]; - D27.f[DIR_M0M] = &DD27[DIR_P0P * numberOfLBnodes]; - D27.f[DIR_P0P] = &DD27[DIR_M0M * numberOfLBnodes]; - D27.f[DIR_M0P] = &DD27[DIR_P0M * numberOfLBnodes]; - D27.f[DIR_P0M] = &DD27[DIR_M0P * numberOfLBnodes]; - D27.f[DIR_0MM] = &DD27[DIR_0PP * numberOfLBnodes]; - D27.f[DIR_0PP] = &DD27[DIR_0MM * numberOfLBnodes]; - D27.f[DIR_0MP] = &DD27[DIR_0PM * numberOfLBnodes]; - D27.f[DIR_0PM] = &DD27[DIR_0MP * numberOfLBnodes]; - D27.f[DIR_000] = &DD27[DIR_000 * numberOfLBnodes]; - D27.f[DIR_PPP] = &DD27[DIR_MMM * numberOfLBnodes]; - D27.f[DIR_MMP] = &DD27[DIR_PPM * numberOfLBnodes]; - D27.f[DIR_PMP] = &DD27[DIR_MPM * numberOfLBnodes]; - D27.f[DIR_MPP] = &DD27[DIR_PMM * numberOfLBnodes]; - D27.f[DIR_PPM] = &DD27[DIR_MMP * numberOfLBnodes]; - D27.f[DIR_MMM] = &DD27[DIR_PPP * numberOfLBnodes]; - D27.f[DIR_PMM] = &DD27[DIR_MPP * numberOfLBnodes]; - D27.f[DIR_MPM] = &DD27[DIR_PMP * numberOfLBnodes]; - } - //////////////////////////////////////////////////////////////////////////////// - const unsigned x = threadIdx.x; // Globaler x-Index - const unsigned y = blockIdx.x; // Globaler y-Index - const unsigned z = blockIdx.y; // Globaler z-Index - - const unsigned nx = blockDim.x; - const unsigned ny = gridDim.x; - - const unsigned k = nx*(ny*z + y) + x; - ////////////////////////////////////////////////////////////////////////// - - if(k<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[DIR_P00 * numberOfBCnodes]; - q_dirW = &QQ[DIR_M00 * numberOfBCnodes]; - q_dirN = &QQ[DIR_0P0 * numberOfBCnodes]; - q_dirS = &QQ[DIR_0M0 * numberOfBCnodes]; - q_dirT = &QQ[DIR_00P * numberOfBCnodes]; - q_dirB = &QQ[DIR_00M * numberOfBCnodes]; - q_dirNE = &QQ[DIR_PP0 * numberOfBCnodes]; - q_dirSW = &QQ[DIR_MM0 * numberOfBCnodes]; - q_dirSE = &QQ[DIR_PM0 * numberOfBCnodes]; - q_dirNW = &QQ[DIR_MP0 * numberOfBCnodes]; - q_dirTE = &QQ[DIR_P0P * numberOfBCnodes]; - q_dirBW = &QQ[DIR_M0M * numberOfBCnodes]; - q_dirBE = &QQ[DIR_P0M * numberOfBCnodes]; - q_dirTW = &QQ[DIR_M0P * numberOfBCnodes]; - q_dirTN = &QQ[DIR_0PP * numberOfBCnodes]; - q_dirBS = &QQ[DIR_0MM * numberOfBCnodes]; - q_dirBN = &QQ[DIR_0PM * numberOfBCnodes]; - q_dirTS = &QQ[DIR_0MP * numberOfBCnodes]; - q_dirTNE = &QQ[DIR_PPP * numberOfBCnodes]; - q_dirTSW = &QQ[DIR_MMP * numberOfBCnodes]; - q_dirTSE = &QQ[DIR_PMP * numberOfBCnodes]; - q_dirTNW = &QQ[DIR_MPP * numberOfBCnodes]; - q_dirBNE = &QQ[DIR_PPM * numberOfBCnodes]; - q_dirBSW = &QQ[DIR_MMM * numberOfBCnodes]; - q_dirBSE = &QQ[DIR_PMM * numberOfBCnodes]; - q_dirBNW = &QQ[DIR_MPM * 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]; - 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 f_W = (D.f[DIR_P00])[ke ]; - real f_E = (D.f[DIR_M00])[kw ]; - real f_S = (D.f[DIR_0P0])[kn ]; - real f_N = (D.f[DIR_0M0])[ks ]; - real f_B = (D.f[DIR_00P])[kt ]; - real f_T = (D.f[DIR_00M])[kb ]; - real f_SW = (D.f[DIR_PP0])[kne ]; - real f_NE = (D.f[DIR_MM0])[ksw ]; - real f_NW = (D.f[DIR_PM0])[kse ]; - real f_SE = (D.f[DIR_MP0])[knw ]; - real f_BW = (D.f[DIR_P0P])[kte ]; - real f_TE = (D.f[DIR_M0M])[kbw ]; - real f_TW = (D.f[DIR_P0M])[kbe ]; - real f_BE = (D.f[DIR_M0P])[ktw ]; - real f_BS = (D.f[DIR_0PP])[ktn ]; - real f_TN = (D.f[DIR_0MM])[kbs ]; - real f_TS = (D.f[DIR_0PM])[kbn ]; - real f_BN = (D.f[DIR_0MP])[kts ]; - //real f_ZERO = (D.f[DIR_000])[kzero]; - real f_BSW = (D.f[DIR_PPP])[ktne ]; - real f_BNE = (D.f[DIR_MMP])[ktsw ]; - real f_BNW = (D.f[DIR_PMP])[ktse ]; - real f_BSE = (D.f[DIR_MPP])[ktnw ]; - real f_TSW = (D.f[DIR_PPM])[kbne ]; - real f_TNE = (D.f[DIR_MMM])[kbsw ]; - real f_TNW = (D.f[DIR_PMM])[kbse ]; - real f_TSE = (D.f[DIR_MPM])[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[DIR_P00])[ke ]; - real f27_E = (D27.f[DIR_M00])[kw ]; - real f27_S = (D27.f[DIR_0P0])[kn ]; - real f27_N = (D27.f[DIR_0M0])[ks ]; - real f27_B = (D27.f[DIR_00P])[kt ]; - real f27_T = (D27.f[DIR_00M])[kb ]; - real f27_SW = (D27.f[DIR_PP0])[kne ]; - real f27_NE = (D27.f[DIR_MM0])[ksw ]; - real f27_NW = (D27.f[DIR_PM0])[kse ]; - real f27_SE = (D27.f[DIR_MP0])[knw ]; - real f27_BW = (D27.f[DIR_P0P])[kte ]; - real f27_TE = (D27.f[DIR_M0M])[kbw ]; - real f27_TW = (D27.f[DIR_P0M])[kbe ]; - real f27_BE = (D27.f[DIR_M0P])[ktw ]; - real f27_BS = (D27.f[DIR_0PP])[ktn ]; - real f27_TN = (D27.f[DIR_0MM])[kbs ]; - real f27_TS = (D27.f[DIR_0PM])[kbn ]; - real f27_BN = (D27.f[DIR_0MP])[kts ]; - real f27_ZERO = (D27.f[DIR_000])[kzero]; - real f27_BSW = (D27.f[DIR_PPP])[ktne ]; - real f27_BNE = (D27.f[DIR_MMP])[ktsw ]; - real f27_BNW = (D27.f[DIR_PMP])[ktse ]; - real f27_BSE = (D27.f[DIR_MPP])[ktnw ]; - real f27_TSW = (D27.f[DIR_PPM])[kbne ]; - real f27_TNE = (D27.f[DIR_MMM])[kbsw ]; - real f27_TNW = (D27.f[DIR_PMM])[kbse ]; - real f27_TSE = (D27.f[DIR_MPM])[kbnw ]; - //////////////////////////////////////////////////////////////////////////////// - real cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3); - //////////////////////////////////////////////////////////////////////////////// - real ConcD = f27_TSE + f27_TNW + f27_TNE + f27_TSW + f27_BSE + f27_BNW + f27_BNE + f27_BSW + - f27_BN + f27_TS + f27_TN + f27_BS + f27_BE + f27_TW + f27_TE + f27_BW + f27_SE + f27_NW + f27_NE + f27_SW + - f27_T + f27_B + f27_N + f27_S + f27_E + f27_W + f27_ZERO; - - //real feq27_ZERO = c8over27* ConcD*(one-cu_sq); - real feq27_E = c2o27* ConcD*(c1o1+c3o1*( vx1 )+c9o2*( vx1 )*( vx1 )-cu_sq); - real feq27_W = c2o27* ConcD*(c1o1+c3o1*(-vx1 )+c9o2*(-vx1 )*(-vx1 )-cu_sq); - real feq27_N = c2o27* ConcD*(c1o1+c3o1*( vx2 )+c9o2*( vx2 )*( vx2 )-cu_sq); - real feq27_S = c2o27* ConcD*(c1o1+c3o1*( -vx2 )+c9o2*( -vx2 )*( -vx2 )-cu_sq); - real feq27_T = c2o27* ConcD*(c1o1+c3o1*( vx3)+c9o2*( vx3)*( vx3)-cu_sq); - real feq27_B = c2o27* ConcD*(c1o1+c3o1*( -vx3)+c9o2*( -vx3)*( -vx3)-cu_sq); - real feq27_NE = c1o54* ConcD*(c1o1+c3o1*( vx1+vx2 )+c9o2*( vx1+vx2 )*( vx1+vx2 )-cu_sq); - real feq27_SW = c1o54* ConcD*(c1o1+c3o1*(-vx1-vx2 )+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq); - real feq27_SE = c1o54* ConcD*(c1o1+c3o1*( vx1-vx2 )+c9o2*( vx1-vx2 )*( vx1-vx2 )-cu_sq); - real feq27_NW = c1o54* ConcD*(c1o1+c3o1*(-vx1+vx2 )+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq); - real feq27_TE = c1o54* ConcD*(c1o1+c3o1*( vx1 +vx3)+c9o2*( vx1 +vx3)*( vx1 +vx3)-cu_sq); - real feq27_BW = c1o54* ConcD*(c1o1+c3o1*(-vx1 -vx3)+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq); - real feq27_BE = c1o54* ConcD*(c1o1+c3o1*( vx1 -vx3)+c9o2*( vx1 -vx3)*( vx1 -vx3)-cu_sq); - real feq27_TW = c1o54* ConcD*(c1o1+c3o1*(-vx1 +vx3)+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq); - real feq27_TN = c1o54* ConcD*(c1o1+c3o1*( vx2+vx3)+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq); - real feq27_BS = c1o54* ConcD*(c1o1+c3o1*( -vx2-vx3)+c9o2*( -vx2-vx3)*( -vx2-vx3)-cu_sq); - real feq27_BN = c1o54* ConcD*(c1o1+c3o1*( vx2-vx3)+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq); - real feq27_TS = c1o54* ConcD*(c1o1+c3o1*( -vx2+vx3)+c9o2*( -vx2+vx3)*( -vx2+vx3)-cu_sq); - real feq27_TNE = c1o216*ConcD*(c1o1+c3o1*( vx1+vx2+vx3)+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq); - real feq27_BSW = c1o216*ConcD*(c1o1+c3o1*(-vx1-vx2-vx3)+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq); - real feq27_BNE = c1o216*ConcD*(c1o1+c3o1*( vx1+vx2-vx3)+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq); - real feq27_TSW = c1o216*ConcD*(c1o1+c3o1*(-vx1-vx2+vx3)+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq); - real feq27_TSE = c1o216*ConcD*(c1o1+c3o1*( vx1-vx2+vx3)+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq); - real feq27_BNW = c1o216*ConcD*(c1o1+c3o1*(-vx1+vx2-vx3)+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq); - real feq27_BSE = c1o216*ConcD*(c1o1+c3o1*( vx1-vx2-vx3)+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq); - real feq27_TNW = c1o216*ConcD*(c1o1+c3o1*(-vx1+vx2+vx3)+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq); - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real TempD = temp[k]; - - //real feqW27_ZERO = c8over27* TempD*(one-cu_sq); - real feqW27_E = c2o27* TempD*(c1o1+c3o1*( vx1 )+c9o2*( vx1 )*( vx1 )-cu_sq); - real feqW27_W = c2o27* TempD*(c1o1+c3o1*(-vx1 )+c9o2*(-vx1 )*(-vx1 )-cu_sq); - real feqW27_N = c2o27* TempD*(c1o1+c3o1*( vx2 )+c9o2*( vx2 )*( vx2 )-cu_sq); - real feqW27_S = c2o27* TempD*(c1o1+c3o1*( -vx2 )+c9o2*( -vx2 )*( -vx2 )-cu_sq); - real feqW27_T = c2o27* TempD*(c1o1+c3o1*( vx3)+c9o2*( vx3)*( vx3)-cu_sq); - real feqW27_B = c2o27* TempD*(c1o1+c3o1*( -vx3)+c9o2*( -vx3)*( -vx3)-cu_sq); - real feqW27_NE = c1o54* TempD*(c1o1+c3o1*( vx1+vx2 )+c9o2*( vx1+vx2 )*( vx1+vx2 )-cu_sq); - real feqW27_SW = c1o54* TempD*(c1o1+c3o1*(-vx1-vx2 )+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq); - real feqW27_SE = c1o54* TempD*(c1o1+c3o1*( vx1-vx2 )+c9o2*( vx1-vx2 )*( vx1-vx2 )-cu_sq); - real feqW27_NW = c1o54* TempD*(c1o1+c3o1*(-vx1+vx2 )+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq); - real feqW27_TE = c1o54* TempD*(c1o1+c3o1*( vx1 +vx3)+c9o2*( vx1 +vx3)*( vx1 +vx3)-cu_sq); - real feqW27_BW = c1o54* TempD*(c1o1+c3o1*(-vx1 -vx3)+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq); - real feqW27_BE = c1o54* TempD*(c1o1+c3o1*( vx1 -vx3)+c9o2*( vx1 -vx3)*( vx1 -vx3)-cu_sq); - real feqW27_TW = c1o54* TempD*(c1o1+c3o1*(-vx1 +vx3)+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq); - real feqW27_TN = c1o54* TempD*(c1o1+c3o1*( vx2+vx3)+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq); - real feqW27_BS = c1o54* TempD*(c1o1+c3o1*( -vx2-vx3)+c9o2*( -vx2-vx3)*( -vx2-vx3)-cu_sq); - real feqW27_BN = c1o54* TempD*(c1o1+c3o1*( vx2-vx3)+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq); - real feqW27_TS = c1o54* TempD*(c1o1+c3o1*( -vx2+vx3)+c9o2*( -vx2+vx3)*( -vx2+vx3)-cu_sq); - real feqW27_TNE = c1o216*TempD*(c1o1+c3o1*( vx1+vx2+vx3)+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq); - real feqW27_BSW = c1o216*TempD*(c1o1+c3o1*(-vx1-vx2-vx3)+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq); - real feqW27_BNE = c1o216*TempD*(c1o1+c3o1*( vx1+vx2-vx3)+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq); - real feqW27_TSW = c1o216*TempD*(c1o1+c3o1*(-vx1-vx2+vx3)+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq); - real feqW27_TSE = c1o216*TempD*(c1o1+c3o1*( vx1-vx2+vx3)+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq); - real feqW27_BNW = c1o216*TempD*(c1o1+c3o1*(-vx1+vx2-vx3)+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq); - real feqW27_BSE = c1o216*TempD*(c1o1+c3o1*( vx1-vx2-vx3)+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq); - real feqW27_TNW = c1o216*TempD*(c1o1+c3o1*(-vx1+vx2+vx3)+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq); - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real omegaD = c3o1 - sqrt(c3o1); - //real Lam = -(c1o2-one/omegaD); - //real nue_d = Lam/three; - //real ae = zero; - //real ae = diffusivity/nue_d - one; - - - ////////////////////////////////////////////////////////////////////////// - if (isEvenTimestep==false) - { - D27.f[DIR_P00] = &DD27[DIR_P00 * numberOfLBnodes]; - D27.f[DIR_M00] = &DD27[DIR_M00 * numberOfLBnodes]; - D27.f[DIR_0P0] = &DD27[DIR_0P0 * numberOfLBnodes]; - D27.f[DIR_0M0] = &DD27[DIR_0M0 * numberOfLBnodes]; - D27.f[DIR_00P] = &DD27[DIR_00P * numberOfLBnodes]; - D27.f[DIR_00M] = &DD27[DIR_00M * numberOfLBnodes]; - D27.f[DIR_PP0] = &DD27[DIR_PP0 * numberOfLBnodes]; - D27.f[DIR_MM0] = &DD27[DIR_MM0 * numberOfLBnodes]; - D27.f[DIR_PM0] = &DD27[DIR_PM0 * numberOfLBnodes]; - D27.f[DIR_MP0] = &DD27[DIR_MP0 * numberOfLBnodes]; - D27.f[DIR_P0P] = &DD27[DIR_P0P * numberOfLBnodes]; - D27.f[DIR_M0M] = &DD27[DIR_M0M * numberOfLBnodes]; - D27.f[DIR_P0M] = &DD27[DIR_P0M * numberOfLBnodes]; - D27.f[DIR_M0P] = &DD27[DIR_M0P * numberOfLBnodes]; - D27.f[DIR_0PP] = &DD27[DIR_0PP * numberOfLBnodes]; - D27.f[DIR_0MM] = &DD27[DIR_0MM * numberOfLBnodes]; - D27.f[DIR_0PM] = &DD27[DIR_0PM * numberOfLBnodes]; - D27.f[DIR_0MP] = &DD27[DIR_0MP * numberOfLBnodes]; - D27.f[DIR_000] = &DD27[DIR_000 * numberOfLBnodes]; - D27.f[DIR_PPP] = &DD27[DIR_PPP * numberOfLBnodes]; - D27.f[DIR_MMP] = &DD27[DIR_MMP * numberOfLBnodes]; - D27.f[DIR_PMP] = &DD27[DIR_PMP * numberOfLBnodes]; - D27.f[DIR_MPP] = &DD27[DIR_MPP * numberOfLBnodes]; - D27.f[DIR_PPM] = &DD27[DIR_PPM * numberOfLBnodes]; - D27.f[DIR_MMM] = &DD27[DIR_MMM * numberOfLBnodes]; - D27.f[DIR_PMM] = &DD27[DIR_PMM * numberOfLBnodes]; - D27.f[DIR_MPM] = &DD27[DIR_MPM * numberOfLBnodes]; - } - else - { - D27.f[DIR_M00] = &DD27[DIR_P00 * numberOfLBnodes]; - D27.f[DIR_P00] = &DD27[DIR_M00 * numberOfLBnodes]; - D27.f[DIR_0M0] = &DD27[DIR_0P0 * numberOfLBnodes]; - D27.f[DIR_0P0] = &DD27[DIR_0M0 * numberOfLBnodes]; - D27.f[DIR_00M] = &DD27[DIR_00P * numberOfLBnodes]; - D27.f[DIR_00P] = &DD27[DIR_00M * numberOfLBnodes]; - D27.f[DIR_MM0] = &DD27[DIR_PP0 * numberOfLBnodes]; - D27.f[DIR_PP0] = &DD27[DIR_MM0 * numberOfLBnodes]; - D27.f[DIR_MP0] = &DD27[DIR_PM0 * numberOfLBnodes]; - D27.f[DIR_PM0] = &DD27[DIR_MP0 * numberOfLBnodes]; - D27.f[DIR_M0M] = &DD27[DIR_P0P * numberOfLBnodes]; - D27.f[DIR_P0P] = &DD27[DIR_M0M * numberOfLBnodes]; - D27.f[DIR_M0P] = &DD27[DIR_P0M * numberOfLBnodes]; - D27.f[DIR_P0M] = &DD27[DIR_M0P * numberOfLBnodes]; - D27.f[DIR_0MM] = &DD27[DIR_0PP * numberOfLBnodes]; - D27.f[DIR_0PP] = &DD27[DIR_0MM * numberOfLBnodes]; - D27.f[DIR_0MP] = &DD27[DIR_0PM * numberOfLBnodes]; - D27.f[DIR_0PM] = &DD27[DIR_0MP * numberOfLBnodes]; - D27.f[DIR_000] = &DD27[DIR_000 * numberOfLBnodes]; - D27.f[DIR_PPP] = &DD27[DIR_MMM * numberOfLBnodes]; - D27.f[DIR_MMP] = &DD27[DIR_PPM * numberOfLBnodes]; - D27.f[DIR_PMP] = &DD27[DIR_MPM * numberOfLBnodes]; - D27.f[DIR_MPP] = &DD27[DIR_PMM * numberOfLBnodes]; - D27.f[DIR_PPM] = &DD27[DIR_MMP * numberOfLBnodes]; - D27.f[DIR_MMM] = &DD27[DIR_PPP * numberOfLBnodes]; - D27.f[DIR_PMM] = &DD27[DIR_MPP * numberOfLBnodes]; - D27.f[DIR_MPM] = &DD27[DIR_PMP * numberOfLBnodes]; - } - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //Test - //(D.f[DIR_000])[k]=0.1f; - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real q; - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - q = q_dirE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_M00])[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[DIR_P00])[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[DIR_0M0])[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[DIR_0P0])[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[DIR_00M])[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[DIR_00P])[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[DIR_MM0])[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[DIR_PP0])[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[DIR_MP0])[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[DIR_PM0])[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[DIR_M0M])[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[DIR_P0P])[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[DIR_M0P])[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[DIR_P0M])[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[DIR_0MM])[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[DIR_0PP])[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[DIR_0MP])[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[DIR_0PM])[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[DIR_MMM])[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[DIR_PPP])[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[DIR_MMP])[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[DIR_PPM])[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[DIR_MPM])[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[DIR_PMP])[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[DIR_MPP])[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[DIR_PMM])[kbse]=(c2o1*feqW27_BSE-(f27_TNW*(q*omegaD-c1o1)-omegaD*feq27_TNW*(q-c1o1))/(omegaD-c1o1)+f27_BSE*q)/(q+c1o1); - } -} -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -////////////////////////////////////////////////////////////////////////////// -__global__ void QADVeloIncomp7( - real* DD, - real* DD7, - real* temp, - real* velo, - real diffusivity, - int* k_Q, - real* QQ, - unsigned int numberOfBCnodes, - real om1, - unsigned int* neighborX, - unsigned int* neighborY, - unsigned int* neighborZ, - unsigned long long numberOfLBnodes, - bool isEvenTimestep) -{ - //Distributions27 D; - //if (isEvenTimestep==true) - //{ - // D.f[DIR_P00] = &DD[DIR_P00 * size_Mat]; - // D.f[DIR_M00] = &DD[DIR_M00 * size_Mat]; - // D.f[DIR_0P0] = &DD[DIR_0P0 * size_Mat]; - // D.f[DIR_0M0] = &DD[DIR_0M0 * size_Mat]; - // D.f[DIR_00P] = &DD[DIR_00P * size_Mat]; - // D.f[DIR_00M] = &DD[DIR_00M * size_Mat]; - // D.f[DIR_PP0] = &DD[DIR_PP0 * size_Mat]; - // D.f[DIR_MM0] = &DD[DIR_MM0 * size_Mat]; - // D.f[DIR_PM0] = &DD[DIR_PM0 * size_Mat]; - // D.f[DIR_MP0] = &DD[DIR_MP0 * size_Mat]; - // D.f[DIR_P0P] = &DD[DIR_P0P * size_Mat]; - // D.f[DIR_M0M] = &DD[DIR_M0M * size_Mat]; - // D.f[DIR_P0M] = &DD[DIR_P0M * size_Mat]; - // D.f[DIR_M0P] = &DD[DIR_M0P * size_Mat]; - // D.f[DIR_0PP] = &DD[DIR_0PP * size_Mat]; - // D.f[DIR_0MM] = &DD[DIR_0MM * size_Mat]; - // D.f[DIR_0PM] = &DD[DIR_0PM * size_Mat]; - // D.f[DIR_0MP] = &DD[DIR_0MP * size_Mat]; - // D.f[DIR_000] = &DD[DIR_000 * size_Mat]; - // D.f[DIR_PPP] = &DD[DIR_PPP * size_Mat]; - // D.f[DIR_MMP] = &DD[DIR_MMP * size_Mat]; - // D.f[DIR_PMP] = &DD[DIR_PMP * size_Mat]; - // D.f[DIR_MPP] = &DD[DIR_MPP * size_Mat]; - // D.f[DIR_PPM] = &DD[DIR_PPM * size_Mat]; - // D.f[DIR_MMM] = &DD[DIR_MMM * size_Mat]; - // D.f[DIR_PMM] = &DD[DIR_PMM * size_Mat]; - // D.f[DIR_MPM] = &DD[DIR_MPM * size_Mat]; - //} - //else - //{ - // D.f[DIR_M00] = &DD[DIR_P00 * size_Mat]; - // D.f[DIR_P00] = &DD[DIR_M00 * size_Mat]; - // D.f[DIR_0M0] = &DD[DIR_0P0 * size_Mat]; - // D.f[DIR_0P0] = &DD[DIR_0M0 * size_Mat]; - // D.f[DIR_00M] = &DD[DIR_00P * size_Mat]; - // D.f[DIR_00P] = &DD[DIR_00M * size_Mat]; - // D.f[DIR_MM0] = &DD[DIR_PP0 * size_Mat]; - // D.f[DIR_PP0] = &DD[DIR_MM0 * size_Mat]; - // D.f[DIR_MP0] = &DD[DIR_PM0 * size_Mat]; - // D.f[DIR_PM0] = &DD[DIR_MP0 * size_Mat]; - // D.f[DIR_M0M] = &DD[DIR_P0P * size_Mat]; - // D.f[DIR_P0P] = &DD[DIR_M0M * size_Mat]; - // D.f[DIR_M0P] = &DD[DIR_P0M * size_Mat]; - // D.f[DIR_P0M] = &DD[DIR_M0P * size_Mat]; - // D.f[DIR_0MM] = &DD[DIR_0PP * size_Mat]; - // D.f[DIR_0PP] = &DD[DIR_0MM * size_Mat]; - // D.f[DIR_0MP] = &DD[DIR_0PM * size_Mat]; - // D.f[DIR_0PM] = &DD[DIR_0MP * size_Mat]; - // D.f[DIR_000] = &DD[DIR_000 * size_Mat]; - // D.f[DIR_PPP] = &DD[DIR_MMM * size_Mat]; - // D.f[DIR_MMP] = &DD[DIR_PPM * size_Mat]; - // D.f[DIR_PMP] = &DD[DIR_MPM * size_Mat]; - // D.f[DIR_MPP] = &DD[DIR_PMM * size_Mat]; - // D.f[DIR_PPM] = &DD[DIR_MMP * size_Mat]; - // D.f[DIR_MMM] = &DD[DIR_PPP * size_Mat]; - // D.f[DIR_PMM] = &DD[DIR_MPP * size_Mat]; - // D.f[DIR_MPM] = &DD[DIR_PMP * size_Mat]; - //} - - Distributions7 D7; - if (isEvenTimestep==true) - { - D7.f[0] = &DD7[0*numberOfLBnodes]; - D7.f[1] = &DD7[1*numberOfLBnodes]; - D7.f[2] = &DD7[2*numberOfLBnodes]; - D7.f[3] = &DD7[3*numberOfLBnodes]; - D7.f[4] = &DD7[4*numberOfLBnodes]; - D7.f[5] = &DD7[5*numberOfLBnodes]; - D7.f[6] = &DD7[6*numberOfLBnodes]; - } - else - { - D7.f[0] = &DD7[0*numberOfLBnodes]; - D7.f[2] = &DD7[1*numberOfLBnodes]; - D7.f[1] = &DD7[2*numberOfLBnodes]; - D7.f[4] = &DD7[3*numberOfLBnodes]; - D7.f[3] = &DD7[4*numberOfLBnodes]; - D7.f[6] = &DD7[5*numberOfLBnodes]; - D7.f[5] = &DD7[6*numberOfLBnodes]; - } - - - //////////////////////////////////////////////////////////////////////////////// - const unsigned x = threadIdx.x; // Globaler x-Index - const unsigned y = blockIdx.x; // Globaler y-Index - const unsigned z = blockIdx.y; // Globaler z-Index - - const unsigned nx = blockDim.x; - const unsigned ny = gridDim.x; - - const unsigned k = nx*(ny*z + y) + x; - ////////////////////////////////////////////////////////////////////////// - - if(k<numberOfBCnodes) - { - ////////////////////////////////////////////////////////////////////////////////// - real *q_dirE, *q_dirW, *q_dirN, *q_dirS, *q_dirT, *q_dirB; - - q_dirE = &QQ[DIR_P00 * numberOfBCnodes]; - q_dirW = &QQ[DIR_M00 * numberOfBCnodes]; - q_dirN = &QQ[DIR_0P0 * numberOfBCnodes]; - q_dirS = &QQ[DIR_0M0 * numberOfBCnodes]; - q_dirT = &QQ[DIR_00P * numberOfBCnodes]; - q_dirB = &QQ[DIR_00M * 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]; - //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 f_W = (D.f[DIR_P00])[ke ]; - //real f_E = (D.f[DIR_M00])[kw ]; - //real f_S = (D.f[DIR_0P0])[kn ]; - //real f_N = (D.f[DIR_0M0])[ks ]; - //real f_B = (D.f[DIR_00P])[kt ]; - //real f_T = (D.f[DIR_00M])[kb ]; - //real f_SW = (D.f[DIR_PP0])[kne ]; - //real f_NE = (D.f[DIR_MM0])[ksw ]; - //real f_NW = (D.f[DIR_PM0])[kse ]; - //real f_SE = (D.f[DIR_MP0])[knw ]; - //real f_BW = (D.f[DIR_P0P])[kte ]; - //real f_TE = (D.f[DIR_M0M])[kbw ]; - //real f_TW = (D.f[DIR_P0M])[kbe ]; - //real f_BE = (D.f[DIR_M0P])[ktw ]; - //real f_BS = (D.f[DIR_0PP])[ktn ]; - //real f_TN = (D.f[DIR_0MM])[kbs ]; - //real f_TS = (D.f[DIR_0PM])[kbn ]; - //real f_BN = (D.f[DIR_0MP])[kts ]; - //real f_BSW = (D.f[DIR_PPP])[ktne ]; - //real f_BNE = (D.f[DIR_MMP])[ktsw ]; - //real f_BNW = (D.f[DIR_PMP])[ktse ]; - //real f_BSE = (D.f[DIR_MPP])[ktnw ]; - //real f_TSW = (D.f[DIR_PPM])[kbne ]; - //real f_TNE = (D.f[DIR_MMM])[kbsw ]; - //real f_TNW = (D.f[DIR_PMM])[kbse ]; - //real f_TSE = (D.f[DIR_MPM])[kbnw ]; - //////////////////////////////////////////////////////////////////////////////// - //real vx1_Inflow = c0o1; - //real vx2_Inflow = velo[k]; - //real vx3_Inflow = c0o1; - //real ux_sq_Inflow = vx1_Inflow * vx1_Inflow; - //real uy_sq_Inflow = vx2_Inflow * vx2_Inflow; - //real uz_sq_Inflow = vx3_Inflow * vx3_Inflow; - //////////////////////////////////////////////////////////////////////////////// - //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)); - ////d�rrrrrty !!!!!!!!!!!!! - // real vx1 = ten * ((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 = ten * ((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 = ten * ((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 cu_sq =1.5f*(vx1*vx1+vx2*vx2+vx3*vx3); - //real ux_sq = vx1 * vx1; - //real uy_sq = vx2 * vx2; - //real uz_sq = vx3 * vx3; - - real f7_E,f7_W,f7_N,f7_S,f7_T,f7_B; - //real /*feq7_ZERO,*/feq7_E,feq7_W,feq7_N,feq7_S,feq7_T,feq7_B; - //real /*feqW7_ZERO,*/feqW7_E,feqW7_W,feqW7_N,feqW7_S,feqW7_T,feqW7_B; - real TempD = temp[k]; - - //f7_ZERO = (D7.f[0])[kzero]; - f7_W = (D7.f[1])[ke ]; - f7_E = (D7.f[2])[kw ]; - f7_S = (D7.f[3])[kn ]; - f7_N = (D7.f[4])[ks ]; - f7_B = (D7.f[5])[kt ]; - f7_T = (D7.f[6])[kb ]; - - //real ConcD = f7_ZERO + f7_E + f7_W + f7_N + f7_S + f7_T + f7_B; - - //////////////////////////////////////////////////////////////////////////////// - //BGK - //real omegaD = three - sqrt(three); - //real Lam = -(c1o2-one/omegaD); - //real nue_d = Lam/three; - ////real ae = zero; - //real ae = diffusivity/nue_d - one; - - ////feq7_ZERO = ConcD*(c1o3*(ae*(-three))-(ux_sq+uy_sq+uz_sq)); - //feq7_E = ConcD*(c1o6*(ae+one)+c1o2*(ux_sq)+vx1*c1o2); - //feq7_W = ConcD*(c1o6*(ae+one)+c1o2*(ux_sq)-vx1*c1o2); - //feq7_N = ConcD*(c1o6*(ae+one)+c1o2*(uy_sq)+vx2*c1o2); - //feq7_S = ConcD*(c1o6*(ae+one)+c1o2*(uy_sq)-vx2*c1o2); - //feq7_T = ConcD*(c1o6*(ae+one)+c1o2*(uz_sq)+vx3*c1o2); - //feq7_B = ConcD*(c1o6*(ae+one)+c1o2*(uz_sq)-vx3*c1o2); - - ////feq7_ZERO = TempD*(c1o3*(ae*(-three))-(ux_sq+uy_sq+uz_sq)); - //feqW7_E = TempD*(c1o6*(ae+one)+c1o2*(ux_sq_Inflow)+vx1_Inflow*c1o2); - //feqW7_W = TempD*(c1o6*(ae+one)+c1o2*(ux_sq_Inflow)-vx1_Inflow*c1o2); - //feqW7_N = TempD*(c1o6*(ae+one)+c1o2*(uy_sq_Inflow)+vx2_Inflow*c1o2); - //feqW7_S = TempD*(c1o6*(ae+one)+c1o2*(uy_sq_Inflow)-vx2_Inflow*c1o2); - //feqW7_T = TempD*(c1o6*(ae+one)+c1o2*(uz_sq_Inflow)+vx3_Inflow*c1o2); - //feqW7_B = TempD*(c1o6*(ae+one)+c1o2*(uz_sq_Inflow)-vx3_Inflow*c1o2); - - // //////////////////////////////////////////////////////////////////////////////// - ////TRT Yoshida Kernel - based on Ying - real cs2 = c1o4; - // real Lam = diffusivity/(one)/cs2; - // real omegaD = - one / (Lam + c1o2); - // real ae = zero; - // //////////////////////////////////////////////////////////////////////////////// - //real Mom000 = f7_ZERO + f7_W + f7_E + f7_N + f7_S + f7_T + f7_B; //1 - // real Mom100 = f7_E - f7_W; - // real Mom010 = f7_N - f7_S; - // real Mom001 = f7_T - f7_B; - // real Mom222 = six*f7_ZERO - f7_W - f7_E - f7_N - f7_S - f7_T - f7_B; - // real Mom200 = two*f7_W + two*f7_E - f7_N - f7_S - f7_T - f7_B; - // real Mom022 = f7_N + f7_S - f7_T - f7_B; - - // real Meq000 = ConcD; - // real Meq100 = ConcD*vx1; - // real Meq010 = ConcD*vx2; - // real Meq001 = ConcD*vx3; - // real Meq222 = c3o4*ConcD; - // real Meq200 = zero; - // real Meq022 = zero; - - // // relaxation TRT Yoshida - - // // odd - // Mom100 = omegaD * (Mom100-Meq100); - // Mom010 = omegaD * (Mom010-Meq010); - // Mom001 = omegaD * (Mom001-Meq001); - // - // // even - // Mom000 = -one*(Mom000-Meq000); - // Mom222 = -one*(Mom222-Meq222); - // Mom200 = -one*(Mom200-Meq200); - // Mom022 = -one*(Mom022-Meq022); - // - // //Back transformation to distributions - // f7_ZERO = f7_ZERO + c1o7*Mom000 + c1o7*Mom222; //1 - // f7_E = f7_E + c1o7*Mom000 + c1o2*Mom100 - c1o6*c1o7*Mom222 + c1o6*Mom200; //2 - // f7_W = f7_W + c1o7*Mom000 - c1o2*Mom100 - c1o6*c1o7*Mom222 + c1o6*Mom200; //3 - // f7_N = f7_N + c1o7*Mom000 + c1o2*Mom010 - c1o6*c1o7*Mom222 - c1o12*Mom200 + c1o4 *Mom022; //4 - // f7_S = f7_S + c1o7*Mom000 - c1o2*Mom010 - c1o6*c1o7*Mom222 - c1o12*Mom200 + c1o4 *Mom022; //5 - // f7_T = f7_T + c1o7*Mom000 + c1o2*Mom001 - c1o6*c1o7*Mom222 - c1o12*Mom200 - c1o4 *Mom022; //6 - // f7_B = f7_B + c1o7*Mom000 - c1o2*Mom001 - c1o6*c1o7*Mom222 - c1o12*Mom200 - c1o4 *Mom022; //7 - - - - - - ////////////////////////////////////////////////////////////////////////// - //pointertausch - if (isEvenTimestep==false) - { - D7.f[0] = &DD7[0*numberOfLBnodes]; - D7.f[1] = &DD7[1*numberOfLBnodes]; - D7.f[2] = &DD7[2*numberOfLBnodes]; - D7.f[3] = &DD7[3*numberOfLBnodes]; - D7.f[4] = &DD7[4*numberOfLBnodes]; - D7.f[5] = &DD7[5*numberOfLBnodes]; - D7.f[6] = &DD7[6*numberOfLBnodes]; - } - else - { - D7.f[0] = &DD7[0*numberOfLBnodes]; - D7.f[2] = &DD7[1*numberOfLBnodes]; - D7.f[1] = &DD7[2*numberOfLBnodes]; - D7.f[4] = &DD7[3*numberOfLBnodes]; - D7.f[3] = &DD7[4*numberOfLBnodes]; - D7.f[6] = &DD7[5*numberOfLBnodes]; - D7.f[5] = &DD7[6*numberOfLBnodes]; - } - - //////////////////////////////////////////////////////////////////////////// - ////mit Q's - //real /*feq,*/ q; - //q = q_dirE[k]; - //if (q>=zero && q<=one) - //{ - // //q=0.; - // (D7.f[2])[kw]=(two*feqW7_W-(f7_E*(q*omegaD-one)-omegaD*feq7_E*(q-one))/(omegaD-one)+f7_W*q)/(q+one);//f7_W - feq7_W + feqW7_E; - //} - - //q = q_dirW[k]; - //if (q>=zero && q<=one) - //{ - // //q=0.; - // (D7.f[1])[ke]=(two*feqW7_E-(f7_W*(q*omegaD-one)-omegaD*feq7_W*(q-one))/(omegaD-one)+f7_E*q)/(q+one);//f7_E - feq7_E + feqW7_W; - //} - - //q = q_dirN[k]; - //if (q>=zero && q<=one) - //{ - // //q=0.; - // (D7.f[4])[ks]=(two*feqW7_S-(f7_N*(q*omegaD-one)-omegaD*feq7_N*(q-one))/(omegaD-one)+f7_S*q)/(q+one);//f7_S - feq7_S + feqW7_N; - //} - - //q = q_dirS[k]; - //if (q>=zero && q<=one) - //{ - // //q=0.; - // (D7.f[3])[kn]=(two*feqW7_N-(f7_S*(q*omegaD-one)-omegaD*feq7_S*(q-one))/(omegaD-one)+f7_N*q)/(q+one);//f7_N - feq7_N + feqW7_S; - //} - - //q = q_dirT[k]; - //if (q>=zero && q<=one) - //{ - // //q=0.; - // (D7.f[6])[kb]=(two*feqW7_B-(f7_T*(q*omegaD-one)-omegaD*feq7_T*(q-one))/(omegaD-one)+f7_B*q)/(q+one);//f7_B - feq7_B + feqW7_T; - //} - - //q = q_dirB[k]; - //if (q>=zero && q<=one) - //{ - // //q=0.; - // (D7.f[5])[kt]=(two*feqW7_T-(f7_B*(q*omegaD-one)-omegaD*feq7_B*(q-one))/(omegaD-one)+f7_T*q)/(q+one);//f7_T - feq7_T + feqW7_B; - //} - - //////////////////////////////////////////////////////////////////////////// - ////ohne Q's - //real /*feq,*/ q; - //q = q_dirE[k]; - //if (q>=zero && q<=one) - //{ - // (D7.f[2])[kw]=f7_W - feq7_W + feqW7_E; - //} - - //q = q_dirW[k]; - //if (q>=zero && q<=one) - //{ - // (D7.f[1])[ke]=f7_E - feq7_E + feqW7_W; - //} - - //q = q_dirN[k]; - //if (q>=zero && q<=one) - //{ - // (D7.f[4])[ks]=f7_S - feq7_S + feqW7_N; - //} - - //q = q_dirS[k]; - //if (q>=zero && q<=one) - //{ - // (D7.f[3])[kn]=f7_N - feq7_N + feqW7_S; - //} - - //q = q_dirT[k]; - //if (q>=zero && q<=one) - //{ - // (D7.f[6])[kb]=f7_B - feq7_B + feqW7_T; - //} - - //q = q_dirB[k]; - //if (q>=zero && q<=one) - //{ - // (D7.f[5])[kt]=f7_T - feq7_T + feqW7_B; - //} - - ////////////////////////////////////////////////////////////////////////// - //ohne Q's aber mit TRT - real /*feq,*/ q; - q = q_dirE[k]; - if (q>=c0o1 && q<=c1o1) - { - (D7.f[2])[kw]= -f7_W + cs2 * TempD; - } - - q = q_dirW[k]; - if (q>=c0o1 && q<=c1o1) - { - (D7.f[1])[ke]= -f7_E + cs2 * TempD; - } - - q = q_dirN[k]; - if (q>=c0o1 && q<=c1o1) - { - (D7.f[4])[ks]= -f7_S + cs2 * TempD; - } - - q = q_dirS[k]; - if (q>=c0o1 && q<=c1o1) - { - (D7.f[3])[kn]= -f7_N + cs2 * TempD; - } - - q = q_dirT[k]; - if (q>=c0o1 && q<=c1o1) - { - (D7.f[6])[kb]= -f7_B + cs2 * TempD; - } - - q = q_dirB[k]; - if (q>=c0o1 && q<=c1o1) - { - (D7.f[5])[kt]= -f7_T + cs2 * TempD; - } - - } -} -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -////////////////////////////////////////////////////////////////////////////// -__global__ void QADVeloIncomp27( - real* DD, - real* DD27, - real* temp, - real* velo, - real diffusivity, - int* k_Q, - real* QQ, - unsigned int numberOfBCnodes, - real om1, - unsigned int* neighborX, - unsigned int* neighborY, - unsigned int* neighborZ, - unsigned long long numberOfLBnodes, - bool isEvenTimestep) -{ - Distributions27 D; - if (isEvenTimestep==true) - { - D.f[DIR_P00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_M00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_PMP * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_MPM * numberOfLBnodes]; - } - else - { - D.f[DIR_M00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_P00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_MPM * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_PMP * numberOfLBnodes]; - } - - Distributions27 D27; - if (isEvenTimestep==true) - { - D27.f[DIR_P00] = &DD27[DIR_P00 * numberOfLBnodes]; - D27.f[DIR_M00] = &DD27[DIR_M00 * numberOfLBnodes]; - D27.f[DIR_0P0] = &DD27[DIR_0P0 * numberOfLBnodes]; - D27.f[DIR_0M0] = &DD27[DIR_0M0 * numberOfLBnodes]; - D27.f[DIR_00P] = &DD27[DIR_00P * numberOfLBnodes]; - D27.f[DIR_00M] = &DD27[DIR_00M * numberOfLBnodes]; - D27.f[DIR_PP0] = &DD27[DIR_PP0 * numberOfLBnodes]; - D27.f[DIR_MM0] = &DD27[DIR_MM0 * numberOfLBnodes]; - D27.f[DIR_PM0] = &DD27[DIR_PM0 * numberOfLBnodes]; - D27.f[DIR_MP0] = &DD27[DIR_MP0 * numberOfLBnodes]; - D27.f[DIR_P0P] = &DD27[DIR_P0P * numberOfLBnodes]; - D27.f[DIR_M0M] = &DD27[DIR_M0M * numberOfLBnodes]; - D27.f[DIR_P0M] = &DD27[DIR_P0M * numberOfLBnodes]; - D27.f[DIR_M0P] = &DD27[DIR_M0P * numberOfLBnodes]; - D27.f[DIR_0PP] = &DD27[DIR_0PP * numberOfLBnodes]; - D27.f[DIR_0MM] = &DD27[DIR_0MM * numberOfLBnodes]; - D27.f[DIR_0PM] = &DD27[DIR_0PM * numberOfLBnodes]; - D27.f[DIR_0MP] = &DD27[DIR_0MP * numberOfLBnodes]; - D27.f[DIR_000] = &DD27[DIR_000 * numberOfLBnodes]; - D27.f[DIR_PPP] = &DD27[DIR_PPP * numberOfLBnodes]; - D27.f[DIR_MMP] = &DD27[DIR_MMP * numberOfLBnodes]; - D27.f[DIR_PMP] = &DD27[DIR_PMP * numberOfLBnodes]; - D27.f[DIR_MPP] = &DD27[DIR_MPP * numberOfLBnodes]; - D27.f[DIR_PPM] = &DD27[DIR_PPM * numberOfLBnodes]; - D27.f[DIR_MMM] = &DD27[DIR_MMM * numberOfLBnodes]; - D27.f[DIR_PMM] = &DD27[DIR_PMM * numberOfLBnodes]; - D27.f[DIR_MPM] = &DD27[DIR_MPM * numberOfLBnodes]; - } - else - { - D27.f[DIR_M00] = &DD27[DIR_P00 * numberOfLBnodes]; - D27.f[DIR_P00] = &DD27[DIR_M00 * numberOfLBnodes]; - D27.f[DIR_0M0] = &DD27[DIR_0P0 * numberOfLBnodes]; - D27.f[DIR_0P0] = &DD27[DIR_0M0 * numberOfLBnodes]; - D27.f[DIR_00M] = &DD27[DIR_00P * numberOfLBnodes]; - D27.f[DIR_00P] = &DD27[DIR_00M * numberOfLBnodes]; - D27.f[DIR_MM0] = &DD27[DIR_PP0 * numberOfLBnodes]; - D27.f[DIR_PP0] = &DD27[DIR_MM0 * numberOfLBnodes]; - D27.f[DIR_MP0] = &DD27[DIR_PM0 * numberOfLBnodes]; - D27.f[DIR_PM0] = &DD27[DIR_MP0 * numberOfLBnodes]; - D27.f[DIR_M0M] = &DD27[DIR_P0P * numberOfLBnodes]; - D27.f[DIR_P0P] = &DD27[DIR_M0M * numberOfLBnodes]; - D27.f[DIR_M0P] = &DD27[DIR_P0M * numberOfLBnodes]; - D27.f[DIR_P0M] = &DD27[DIR_M0P * numberOfLBnodes]; - D27.f[DIR_0MM] = &DD27[DIR_0PP * numberOfLBnodes]; - D27.f[DIR_0PP] = &DD27[DIR_0MM * numberOfLBnodes]; - D27.f[DIR_0MP] = &DD27[DIR_0PM * numberOfLBnodes]; - D27.f[DIR_0PM] = &DD27[DIR_0MP * numberOfLBnodes]; - D27.f[DIR_000] = &DD27[DIR_000 * numberOfLBnodes]; - D27.f[DIR_PPP] = &DD27[DIR_MMM * numberOfLBnodes]; - D27.f[DIR_MMP] = &DD27[DIR_PPM * numberOfLBnodes]; - D27.f[DIR_PMP] = &DD27[DIR_MPM * numberOfLBnodes]; - D27.f[DIR_MPP] = &DD27[DIR_PMM * numberOfLBnodes]; - D27.f[DIR_PPM] = &DD27[DIR_MMP * numberOfLBnodes]; - D27.f[DIR_MMM] = &DD27[DIR_PPP * numberOfLBnodes]; - D27.f[DIR_PMM] = &DD27[DIR_MPP * numberOfLBnodes]; - D27.f[DIR_MPM] = &DD27[DIR_PMP * numberOfLBnodes]; - } - //////////////////////////////////////////////////////////////////////////////// - const unsigned x = threadIdx.x; // Globaler x-Index - const unsigned y = blockIdx.x; // Globaler y-Index - const unsigned z = blockIdx.y; // Globaler z-Index - - const unsigned nx = blockDim.x; - const unsigned ny = gridDim.x; - - const unsigned k = nx*(ny*z + y) + x; - ////////////////////////////////////////////////////////////////////////// - - if(k<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[DIR_P00 * numberOfBCnodes]; - q_dirW = &QQ[DIR_M00 * numberOfBCnodes]; - q_dirN = &QQ[DIR_0P0 * numberOfBCnodes]; - q_dirS = &QQ[DIR_0M0 * numberOfBCnodes]; - q_dirT = &QQ[DIR_00P * numberOfBCnodes]; - q_dirB = &QQ[DIR_00M * numberOfBCnodes]; - q_dirNE = &QQ[DIR_PP0 * numberOfBCnodes]; - q_dirSW = &QQ[DIR_MM0 * numberOfBCnodes]; - q_dirSE = &QQ[DIR_PM0 * numberOfBCnodes]; - q_dirNW = &QQ[DIR_MP0 * numberOfBCnodes]; - q_dirTE = &QQ[DIR_P0P * numberOfBCnodes]; - q_dirBW = &QQ[DIR_M0M * numberOfBCnodes]; - q_dirBE = &QQ[DIR_P0M * numberOfBCnodes]; - q_dirTW = &QQ[DIR_M0P * numberOfBCnodes]; - q_dirTN = &QQ[DIR_0PP * numberOfBCnodes]; - q_dirBS = &QQ[DIR_0MM * numberOfBCnodes]; - q_dirBN = &QQ[DIR_0PM * numberOfBCnodes]; - q_dirTS = &QQ[DIR_0MP * numberOfBCnodes]; - q_dirTNE = &QQ[DIR_PPP * numberOfBCnodes]; - q_dirTSW = &QQ[DIR_MMP * numberOfBCnodes]; - q_dirTSE = &QQ[DIR_PMP * numberOfBCnodes]; - q_dirTNW = &QQ[DIR_MPP * numberOfBCnodes]; - q_dirBNE = &QQ[DIR_PPM * numberOfBCnodes]; - q_dirBSW = &QQ[DIR_MMM * numberOfBCnodes]; - q_dirBSE = &QQ[DIR_PMM * numberOfBCnodes]; - q_dirBNW = &QQ[DIR_MPM * 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]; - 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 f_W = (D.f[DIR_P00])[ke ]; - real f_E = (D.f[DIR_M00])[kw ]; - real f_S = (D.f[DIR_0P0])[kn ]; - real f_N = (D.f[DIR_0M0])[ks ]; - real f_B = (D.f[DIR_00P])[kt ]; - real f_T = (D.f[DIR_00M])[kb ]; - real f_SW = (D.f[DIR_PP0])[kne ]; - real f_NE = (D.f[DIR_MM0])[ksw ]; - real f_NW = (D.f[DIR_PM0])[kse ]; - real f_SE = (D.f[DIR_MP0])[knw ]; - real f_BW = (D.f[DIR_P0P])[kte ]; - real f_TE = (D.f[DIR_M0M])[kbw ]; - real f_TW = (D.f[DIR_P0M])[kbe ]; - real f_BE = (D.f[DIR_M0P])[ktw ]; - real f_BS = (D.f[DIR_0PP])[ktn ]; - real f_TN = (D.f[DIR_0MM])[kbs ]; - real f_TS = (D.f[DIR_0PM])[kbn ]; - real f_BN = (D.f[DIR_0MP])[kts ]; - //real f_ZERO = (D.f[DIR_000])[kzero]; - real f_BSW = (D.f[DIR_PPP])[ktne ]; - real f_BNE = (D.f[DIR_MMP])[ktsw ]; - real f_BNW = (D.f[DIR_PMP])[ktse ]; - real f_BSE = (D.f[DIR_MPP])[ktnw ]; - real f_TSW = (D.f[DIR_PPM])[kbne ]; - real f_TNE = (D.f[DIR_MMM])[kbsw ]; - real f_TNW = (D.f[DIR_PMM])[kbse ]; - real f_TSE = (D.f[DIR_MPM])[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[DIR_P00])[ke ]; - //real f27_E = (D27.f[DIR_M00])[kw ]; - //real f27_S = (D27.f[DIR_0P0])[kn ]; - //real f27_N = (D27.f[DIR_0M0])[ks ]; - //real f27_B = (D27.f[DIR_00P])[kt ]; - //real f27_T = (D27.f[DIR_00M])[kb ]; - //real f27_SW = (D27.f[DIR_PP0])[kne ]; - //real f27_NE = (D27.f[DIR_MM0])[ksw ]; - //real f27_NW = (D27.f[DIR_PM0])[kse ]; - //real f27_SE = (D27.f[DIR_MP0])[knw ]; - //real f27_BW = (D27.f[DIR_P0P])[kte ]; - //real f27_TE = (D27.f[DIR_M0M])[kbw ]; - //real f27_TW = (D27.f[DIR_P0M])[kbe ]; - //real f27_BE = (D27.f[DIR_M0P])[ktw ]; - //real f27_BS = (D27.f[DIR_0PP])[ktn ]; - //real f27_TN = (D27.f[DIR_0MM])[kbs ]; - //real f27_TS = (D27.f[DIR_0PM])[kbn ]; - //real f27_BN = (D27.f[DIR_0MP])[kts ]; - //real f27_ZERO = (D27.f[DIR_000])[kzero]; - //real f27_BSW = (D27.f[DIR_PPP])[ktne ]; - //real f27_BNE = (D27.f[DIR_MMP])[ktsw ]; - //real f27_BNW = (D27.f[DIR_PMP])[ktse ]; - //real f27_BSE = (D27.f[DIR_MPP])[ktnw ]; - //real f27_TSW = (D27.f[DIR_PPM])[kbne ]; - //real f27_TNE = (D27.f[DIR_MMM])[kbsw ]; - //real f27_TNW = (D27.f[DIR_PMM])[kbse ]; - //real f27_TSE = (D27.f[DIR_MPM])[kbnw ]; - //////////////////////////////////////////////////////////////////////////////// - real cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3); - //////////////////////////////////////////////////////////////////////////////// - //real ConcD = f27_TSE + f27_TNW + f27_TNE + f27_TSW + f27_BSE + f27_BNW + f27_BNE + f27_BSW + - // f27_BN + f27_TS + f27_TN + f27_BS + f27_BE + f27_TW + f27_TE + f27_BW + f27_SE + f27_NW + f27_NE + f27_SW + - // f27_T + f27_B + f27_N + f27_S + f27_E + f27_W + f27_ZERO; - - //real feq27_ZERO = c8over27* ConcD*(one-cu_sq); - //real feq27_E = c2o27* ConcD*(c1o1+c3o1*( vx1 )+c9o2*( vx1 )*( vx1 )-cu_sq); - //real feq27_W = c2o27* ConcD*(c1o1+c3o1*(-vx1 )+c9o2*(-vx1 )*(-vx1 )-cu_sq); - //real feq27_N = c2o27* ConcD*(c1o1+c3o1*( vx2 )+c9o2*( vx2 )*( vx2 )-cu_sq); - //real feq27_S = c2o27* ConcD*(c1o1+c3o1*( -vx2 )+c9o2*( -vx2 )*( -vx2 )-cu_sq); - //real feq27_T = c2o27* ConcD*(c1o1+c3o1*( vx3)+c9o2*( vx3)*( vx3)-cu_sq); - //real feq27_B = c2o27* ConcD*(c1o1+c3o1*( -vx3)+c9o2*( -vx3)*( -vx3)-cu_sq); - //real feq27_NE = c1o54* ConcD*(c1o1+c3o1*( vx1+vx2 )+c9o2*( vx1+vx2 )*( vx1+vx2 )-cu_sq); - //real feq27_SW = c1o54* ConcD*(c1o1+c3o1*(-vx1-vx2 )+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq); - //real feq27_SE = c1o54* ConcD*(c1o1+c3o1*( vx1-vx2 )+c9o2*( vx1-vx2 )*( vx1-vx2 )-cu_sq); - //real feq27_NW = c1o54* ConcD*(c1o1+c3o1*(-vx1+vx2 )+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq); - //real feq27_TE = c1o54* ConcD*(c1o1+c3o1*( vx1 +vx3)+c9o2*( vx1 +vx3)*( vx1 +vx3)-cu_sq); - //real feq27_BW = c1o54* ConcD*(c1o1+c3o1*(-vx1 -vx3)+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq); - //real feq27_BE = c1o54* ConcD*(c1o1+c3o1*( vx1 -vx3)+c9o2*( vx1 -vx3)*( vx1 -vx3)-cu_sq); - //real feq27_TW = c1o54* ConcD*(c1o1+c3o1*(-vx1 +vx3)+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq); - //real feq27_TN = c1o54* ConcD*(c1o1+c3o1*( vx2+vx3)+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq); - //real feq27_BS = c1o54* ConcD*(c1o1+c3o1*( -vx2-vx3)+c9o2*( -vx2-vx3)*( -vx2-vx3)-cu_sq); - //real feq27_BN = c1o54* ConcD*(c1o1+c3o1*( vx2-vx3)+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq); - //real feq27_TS = c1o54* ConcD*(c1o1+c3o1*( -vx2+vx3)+c9o2*( -vx2+vx3)*( -vx2+vx3)-cu_sq); - //real feq27_TNE = c1o216*ConcD*(c1o1+c3o1*( vx1+vx2+vx3)+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq); - //real feq27_BSW = c1o216*ConcD*(c1o1+c3o1*(-vx1-vx2-vx3)+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq); - //real feq27_BNE = c1o216*ConcD*(c1o1+c3o1*( vx1+vx2-vx3)+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq); - //real feq27_TSW = c1o216*ConcD*(c1o1+c3o1*(-vx1-vx2+vx3)+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq); - //real feq27_TSE = c1o216*ConcD*(c1o1+c3o1*( vx1-vx2+vx3)+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq); - //real feq27_BNW = c1o216*ConcD*(c1o1+c3o1*(-vx1+vx2-vx3)+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq); - //real feq27_BSE = c1o216*ConcD*(c1o1+c3o1*( vx1-vx2-vx3)+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq); - //real feq27_TNW = c1o216*ConcD*(c1o1+c3o1*(-vx1+vx2+vx3)+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq); - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real TempD = temp[k]; - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - // velocity inflow - vx1 = velo[k];//zero; - vx2 = c0o1;//velo[k]; - vx3 = c0o1; - - //real feqW27_ZERO = c8over27* TempD*(one-cu_sq); - real feqW27_E = c2o27* TempD*(c1o1+c3o1*( vx1 )+c9o2*( vx1 )*( vx1 )-cu_sq); - real feqW27_W = c2o27* TempD*(c1o1+c3o1*(-vx1 )+c9o2*(-vx1 )*(-vx1 )-cu_sq); - real feqW27_N = c2o27* TempD*(c1o1+c3o1*( vx2 )+c9o2*( vx2 )*( vx2 )-cu_sq); - real feqW27_S = c2o27* TempD*(c1o1+c3o1*( -vx2 )+c9o2*( -vx2 )*( -vx2 )-cu_sq); - real feqW27_T = c2o27* TempD*(c1o1+c3o1*( vx3)+c9o2*( vx3)*( vx3)-cu_sq); - real feqW27_B = c2o27* TempD*(c1o1+c3o1*( -vx3)+c9o2*( -vx3)*( -vx3)-cu_sq); - real feqW27_NE = c1o54* TempD*(c1o1+c3o1*( vx1+vx2 )+c9o2*( vx1+vx2 )*( vx1+vx2 )-cu_sq); - real feqW27_SW = c1o54* TempD*(c1o1+c3o1*(-vx1-vx2 )+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq); - real feqW27_SE = c1o54* TempD*(c1o1+c3o1*( vx1-vx2 )+c9o2*( vx1-vx2 )*( vx1-vx2 )-cu_sq); - real feqW27_NW = c1o54* TempD*(c1o1+c3o1*(-vx1+vx2 )+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq); - real feqW27_TE = c1o54* TempD*(c1o1+c3o1*( vx1 +vx3)+c9o2*( vx1 +vx3)*( vx1 +vx3)-cu_sq); - real feqW27_BW = c1o54* TempD*(c1o1+c3o1*(-vx1 -vx3)+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq); - real feqW27_BE = c1o54* TempD*(c1o1+c3o1*( vx1 -vx3)+c9o2*( vx1 -vx3)*( vx1 -vx3)-cu_sq); - real feqW27_TW = c1o54* TempD*(c1o1+c3o1*(-vx1 +vx3)+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq); - real feqW27_TN = c1o54* TempD*(c1o1+c3o1*( vx2+vx3)+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq); - real feqW27_BS = c1o54* TempD*(c1o1+c3o1*( -vx2-vx3)+c9o2*( -vx2-vx3)*( -vx2-vx3)-cu_sq); - real feqW27_BN = c1o54* TempD*(c1o1+c3o1*( vx2-vx3)+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq); - real feqW27_TS = c1o54* TempD*(c1o1+c3o1*( -vx2+vx3)+c9o2*( -vx2+vx3)*( -vx2+vx3)-cu_sq); - real feqW27_TNE = c1o216*TempD*(c1o1+c3o1*( vx1+vx2+vx3)+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq); - real feqW27_BSW = c1o216*TempD*(c1o1+c3o1*(-vx1-vx2-vx3)+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq); - real feqW27_BNE = c1o216*TempD*(c1o1+c3o1*( vx1+vx2-vx3)+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq); - real feqW27_TSW = c1o216*TempD*(c1o1+c3o1*(-vx1-vx2+vx3)+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq); - real feqW27_TSE = c1o216*TempD*(c1o1+c3o1*( vx1-vx2+vx3)+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq); - real feqW27_BNW = c1o216*TempD*(c1o1+c3o1*(-vx1+vx2-vx3)+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq); - real feqW27_BSE = c1o216*TempD*(c1o1+c3o1*( vx1-vx2-vx3)+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq); - real feqW27_TNW = c1o216*TempD*(c1o1+c3o1*(-vx1+vx2+vx3)+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq); - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real omegaD = c3o1 - sqrt(c3o1); - //real Lam = -(c1o2-one/omegaD); - //real nue_d = Lam/three; - //real ae = zero; - //real ae = diffusivity/nue_d - one; - - - ////////////////////////////////////////////////////////////////////////// - if (isEvenTimestep==false) - { - D27.f[DIR_P00] = &DD27[DIR_P00 * numberOfLBnodes]; - D27.f[DIR_M00] = &DD27[DIR_M00 * numberOfLBnodes]; - D27.f[DIR_0P0] = &DD27[DIR_0P0 * numberOfLBnodes]; - D27.f[DIR_0M0] = &DD27[DIR_0M0 * numberOfLBnodes]; - D27.f[DIR_00P] = &DD27[DIR_00P * numberOfLBnodes]; - D27.f[DIR_00M] = &DD27[DIR_00M * numberOfLBnodes]; - D27.f[DIR_PP0] = &DD27[DIR_PP0 * numberOfLBnodes]; - D27.f[DIR_MM0] = &DD27[DIR_MM0 * numberOfLBnodes]; - D27.f[DIR_PM0] = &DD27[DIR_PM0 * numberOfLBnodes]; - D27.f[DIR_MP0] = &DD27[DIR_MP0 * numberOfLBnodes]; - D27.f[DIR_P0P] = &DD27[DIR_P0P * numberOfLBnodes]; - D27.f[DIR_M0M] = &DD27[DIR_M0M * numberOfLBnodes]; - D27.f[DIR_P0M] = &DD27[DIR_P0M * numberOfLBnodes]; - D27.f[DIR_M0P] = &DD27[DIR_M0P * numberOfLBnodes]; - D27.f[DIR_0PP] = &DD27[DIR_0PP * numberOfLBnodes]; - D27.f[DIR_0MM] = &DD27[DIR_0MM * numberOfLBnodes]; - D27.f[DIR_0PM] = &DD27[DIR_0PM * numberOfLBnodes]; - D27.f[DIR_0MP] = &DD27[DIR_0MP * numberOfLBnodes]; - D27.f[DIR_000] = &DD27[DIR_000 * numberOfLBnodes]; - D27.f[DIR_PPP] = &DD27[DIR_PPP * numberOfLBnodes]; - D27.f[DIR_MMP] = &DD27[DIR_MMP * numberOfLBnodes]; - D27.f[DIR_PMP] = &DD27[DIR_PMP * numberOfLBnodes]; - D27.f[DIR_MPP] = &DD27[DIR_MPP * numberOfLBnodes]; - D27.f[DIR_PPM] = &DD27[DIR_PPM * numberOfLBnodes]; - D27.f[DIR_MMM] = &DD27[DIR_MMM * numberOfLBnodes]; - D27.f[DIR_PMM] = &DD27[DIR_PMM * numberOfLBnodes]; - D27.f[DIR_MPM] = &DD27[DIR_MPM * numberOfLBnodes]; - } - else - { - D27.f[DIR_M00] = &DD27[DIR_P00 * numberOfLBnodes]; - D27.f[DIR_P00] = &DD27[DIR_M00 * numberOfLBnodes]; - D27.f[DIR_0M0] = &DD27[DIR_0P0 * numberOfLBnodes]; - D27.f[DIR_0P0] = &DD27[DIR_0M0 * numberOfLBnodes]; - D27.f[DIR_00M] = &DD27[DIR_00P * numberOfLBnodes]; - D27.f[DIR_00P] = &DD27[DIR_00M * numberOfLBnodes]; - D27.f[DIR_MM0] = &DD27[DIR_PP0 * numberOfLBnodes]; - D27.f[DIR_PP0] = &DD27[DIR_MM0 * numberOfLBnodes]; - D27.f[DIR_MP0] = &DD27[DIR_PM0 * numberOfLBnodes]; - D27.f[DIR_PM0] = &DD27[DIR_MP0 * numberOfLBnodes]; - D27.f[DIR_M0M] = &DD27[DIR_P0P * numberOfLBnodes]; - D27.f[DIR_P0P] = &DD27[DIR_M0M * numberOfLBnodes]; - D27.f[DIR_M0P] = &DD27[DIR_P0M * numberOfLBnodes]; - D27.f[DIR_P0M] = &DD27[DIR_M0P * numberOfLBnodes]; - D27.f[DIR_0MM] = &DD27[DIR_0PP * numberOfLBnodes]; - D27.f[DIR_0PP] = &DD27[DIR_0MM * numberOfLBnodes]; - D27.f[DIR_0MP] = &DD27[DIR_0PM * numberOfLBnodes]; - D27.f[DIR_0PM] = &DD27[DIR_0MP * numberOfLBnodes]; - D27.f[DIR_000] = &DD27[DIR_000 * numberOfLBnodes]; - D27.f[DIR_PPP] = &DD27[DIR_MMM * numberOfLBnodes]; - D27.f[DIR_MMP] = &DD27[DIR_PPM * numberOfLBnodes]; - D27.f[DIR_PMP] = &DD27[DIR_MPM * numberOfLBnodes]; - D27.f[DIR_MPP] = &DD27[DIR_PMM * numberOfLBnodes]; - D27.f[DIR_PPM] = &DD27[DIR_MMP * numberOfLBnodes]; - D27.f[DIR_MMM] = &DD27[DIR_PPP * numberOfLBnodes]; - D27.f[DIR_PMM] = &DD27[DIR_MPP * numberOfLBnodes]; - D27.f[DIR_MPM] = &DD27[DIR_PMP * numberOfLBnodes]; - } - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //Test - //(D.f[DIR_000])[k]=c1o10; - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real q; - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - q = q_dirE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_M00])[kw ]= -feqW27_W + c2o1 * c2o27 * TempD; - q = q_dirW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_P00])[ke ]= -feqW27_E + c2o1 * c2o27 * TempD; - q = q_dirN[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_0M0])[ks ]= -feqW27_S + c2o1 * c2o27 * TempD; - q = q_dirS[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_0P0])[kn ]= -feqW27_N + c2o1 * c2o27 * TempD; - q = q_dirT[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_00M])[kb ]= -feqW27_B + c2o1 * c2o27 * TempD; - q = q_dirB[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_00P])[kt ]= -feqW27_T + c2o1 * c2o27 * TempD; - q = q_dirNE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_MM0])[ksw ]= -feqW27_SW + c2o1 * c1o54 * TempD; - q = q_dirSW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_PP0])[kne ]= -feqW27_NE + c2o1 * c1o54 * TempD; - q = q_dirSE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_MP0])[knw ]= -feqW27_NW + c2o1 * c1o54 * TempD; - q = q_dirNW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_PM0])[kse ]= -feqW27_SE + c2o1 * c1o54 * TempD; - q = q_dirTE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_M0M])[kbw ]= -feqW27_BW + c2o1 * c1o54 * TempD; - q = q_dirBW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_P0P])[kte ]= -feqW27_TE + c2o1 * c1o54 * TempD; - q = q_dirBE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_M0P])[ktw ]= -feqW27_TW + c2o1 * c1o54 * TempD; - q = q_dirTW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_P0M])[kbe ]= -feqW27_BE + c2o1 * c1o54 * TempD; - q = q_dirTN[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_0MM])[kbs ]= -feqW27_BS + c2o1 * c1o54 * TempD; - q = q_dirBS[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_0PP])[ktn ]= -feqW27_TN + c2o1 * c1o54 * TempD; - q = q_dirBN[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_0MP])[kts ]= -feqW27_TS + c2o1 * c1o54 * TempD; - q = q_dirTS[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_0PM])[kbn ]= -feqW27_BN + c2o1 * c1o54 * TempD; - q = q_dirTNE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_MMM])[kbsw]= -feqW27_BSW+ c2o1 * c1o216 * TempD; - q = q_dirBSW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_PPP])[ktne]= -feqW27_TNE+ c2o1 * c1o216 * TempD; - q = q_dirBNE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_MMP])[ktsw]= -feqW27_TSW+ c2o1 * c1o216 * TempD; - q = q_dirTSW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_PPM])[kbne]= -feqW27_BNE+ c2o1 * c1o216 * TempD; - q = q_dirTSE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_MPM])[kbnw]= -feqW27_BNW+ c2o1 * c1o216 * TempD; - q = q_dirBNW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_PMP])[ktse]= -feqW27_TSE+ c2o1 * c1o216 * TempD; - q = q_dirBSE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_MPP])[ktnw]= -feqW27_TNW+ c2o1 * c1o216 * TempD; - q = q_dirTNW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_PMM])[kbse]= -feqW27_BSE+ c2o1 * c1o216 * TempD; - //q = q_dirE[k]; if (q>=zero && q<=one) (D27.f[DIR_M00])[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[DIR_P00])[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[DIR_0M0])[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[DIR_0P0])[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[DIR_00M])[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[DIR_00P])[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[DIR_MM0])[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[DIR_PP0])[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[DIR_MP0])[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[DIR_PM0])[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[DIR_M0M])[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[DIR_P0P])[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[DIR_M0P])[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[DIR_P0M])[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[DIR_0MM])[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[DIR_0PP])[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[DIR_0MP])[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[DIR_0PM])[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[DIR_MMM])[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[DIR_PPP])[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[DIR_MMP])[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[DIR_PPM])[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[DIR_MPM])[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[DIR_PMP])[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[DIR_MPP])[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[DIR_PMM])[kbse]=(two*feqW27_BSE-(f27_TNW*(q*omegaD-one)-omegaD*feq27_TNW*(q-one))/(omegaD-one)+f27_BSE*q)/(q+one); - } -} -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -////////////////////////////////////////////////////////////////////////////// -__global__ void QADPressIncomp7( real* DD, - real* DD7, - real* temp, - real* velo, - real diffusivity, - int* k_Q, - real* QQ, - unsigned int numberOfBCnodes, - real om1, - unsigned int* neighborX, - unsigned int* neighborY, - unsigned int* neighborZ, - unsigned long long numberOfLBnodes, - bool isEvenTimestep) -{ - /* Distributions27 D; - if (isEvenTimestep==true) - { - D.f[DIR_P00] = &DD[DIR_P00 * size_Mat]; - D.f[DIR_M00] = &DD[DIR_M00 * size_Mat]; - D.f[DIR_0P0] = &DD[DIR_0P0 * size_Mat]; - D.f[DIR_0M0] = &DD[DIR_0M0 * size_Mat]; - D.f[DIR_00P] = &DD[DIR_00P * size_Mat]; - D.f[DIR_00M] = &DD[DIR_00M * size_Mat]; - D.f[DIR_PP0] = &DD[DIR_PP0 * size_Mat]; - D.f[DIR_MM0] = &DD[DIR_MM0 * size_Mat]; - D.f[DIR_PM0] = &DD[DIR_PM0 * size_Mat]; - D.f[DIR_MP0] = &DD[DIR_MP0 * size_Mat]; - D.f[DIR_P0P] = &DD[DIR_P0P * size_Mat]; - D.f[DIR_M0M] = &DD[DIR_M0M * size_Mat]; - D.f[DIR_P0M] = &DD[DIR_P0M * size_Mat]; - D.f[DIR_M0P] = &DD[DIR_M0P * size_Mat]; - D.f[DIR_0PP] = &DD[DIR_0PP * size_Mat]; - D.f[DIR_0MM] = &DD[DIR_0MM * size_Mat]; - D.f[DIR_0PM] = &DD[DIR_0PM * size_Mat]; - D.f[DIR_0MP] = &DD[DIR_0MP * size_Mat]; - D.f[DIR_000] = &DD[DIR_000 * size_Mat]; - D.f[DIR_PPP] = &DD[DIR_PPP * size_Mat]; - D.f[DIR_MMP] = &DD[DIR_MMP * size_Mat]; - D.f[DIR_PMP] = &DD[DIR_PMP * size_Mat]; - D.f[DIR_MPP] = &DD[DIR_MPP * size_Mat]; - D.f[DIR_PPM] = &DD[DIR_PPM * size_Mat]; - D.f[DIR_MMM] = &DD[DIR_MMM * size_Mat]; - D.f[DIR_PMM] = &DD[DIR_PMM * size_Mat]; - D.f[DIR_MPM] = &DD[DIR_MPM * size_Mat]; - } - else - { - D.f[DIR_M00] = &DD[DIR_P00 * size_Mat]; - D.f[DIR_P00] = &DD[DIR_M00 * size_Mat]; - D.f[DIR_0M0] = &DD[DIR_0P0 * size_Mat]; - D.f[DIR_0P0] = &DD[DIR_0M0 * size_Mat]; - D.f[DIR_00M] = &DD[DIR_00P * size_Mat]; - D.f[DIR_00P] = &DD[DIR_00M * size_Mat]; - D.f[DIR_MM0] = &DD[DIR_PP0 * size_Mat]; - D.f[DIR_PP0] = &DD[DIR_MM0 * size_Mat]; - D.f[DIR_MP0] = &DD[DIR_PM0 * size_Mat]; - D.f[DIR_PM0] = &DD[DIR_MP0 * size_Mat]; - D.f[DIR_M0M] = &DD[DIR_P0P * size_Mat]; - D.f[DIR_P0P] = &DD[DIR_M0M * size_Mat]; - D.f[DIR_M0P] = &DD[DIR_P0M * size_Mat]; - D.f[DIR_P0M] = &DD[DIR_M0P * size_Mat]; - D.f[DIR_0MM] = &DD[DIR_0PP * size_Mat]; - D.f[DIR_0PP] = &DD[DIR_0MM * size_Mat]; - D.f[DIR_0MP] = &DD[DIR_0PM * size_Mat]; - D.f[DIR_0PM] = &DD[DIR_0MP * size_Mat]; - D.f[DIR_000] = &DD[DIR_000 * size_Mat]; - D.f[DIR_PPP] = &DD[DIR_MMM * size_Mat]; - D.f[DIR_MMP] = &DD[DIR_PPM * size_Mat]; - D.f[DIR_PMP] = &DD[DIR_MPM * size_Mat]; - D.f[DIR_MPP] = &DD[DIR_PMM * size_Mat]; - D.f[DIR_PPM] = &DD[DIR_MMP * size_Mat]; - D.f[DIR_MMM] = &DD[DIR_PPP * size_Mat]; - D.f[DIR_PMM] = &DD[DIR_MPP * size_Mat]; - D.f[DIR_MPM] = &DD[DIR_PMP * size_Mat]; - }*/ - - Distributions7 D7; - if (isEvenTimestep==true) - { - D7.f[0] = &DD7[0*numberOfLBnodes]; - D7.f[1] = &DD7[1*numberOfLBnodes]; - D7.f[2] = &DD7[2*numberOfLBnodes]; - D7.f[3] = &DD7[3*numberOfLBnodes]; - D7.f[4] = &DD7[4*numberOfLBnodes]; - D7.f[5] = &DD7[5*numberOfLBnodes]; - D7.f[6] = &DD7[6*numberOfLBnodes]; - } - else - { - D7.f[0] = &DD7[0*numberOfLBnodes]; - D7.f[2] = &DD7[1*numberOfLBnodes]; - D7.f[1] = &DD7[2*numberOfLBnodes]; - D7.f[4] = &DD7[3*numberOfLBnodes]; - D7.f[3] = &DD7[4*numberOfLBnodes]; - D7.f[6] = &DD7[5*numberOfLBnodes]; - D7.f[5] = &DD7[6*numberOfLBnodes]; - } - - - //////////////////////////////////////////////////////////////////////////////// - const unsigned x = threadIdx.x; // Globaler x-Index - const unsigned y = blockIdx.x; // Globaler y-Index - const unsigned z = blockIdx.y; // Globaler z-Index - - const unsigned nx = blockDim.x; - const unsigned ny = gridDim.x; - - const unsigned k = nx*(ny*z + y) + x; - ////////////////////////////////////////////////////////////////////////// - - if(k<numberOfBCnodes) - { - ////////////////////////////////////////////////////////////////////////////////// - real *q_dirE, *q_dirW, *q_dirN, *q_dirS, *q_dirT, *q_dirB; - - q_dirE = &QQ[DIR_P00 * numberOfBCnodes]; - q_dirW = &QQ[DIR_M00 * numberOfBCnodes]; - q_dirN = &QQ[DIR_0P0 * numberOfBCnodes]; - q_dirS = &QQ[DIR_0M0 * numberOfBCnodes]; - q_dirT = &QQ[DIR_00P * numberOfBCnodes]; - q_dirB = &QQ[DIR_00M * 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]; - //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 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[DIR_P00])[ke ]; - f_E = (D.f[DIR_M00])[kw ]; - f_S = (D.f[DIR_0P0])[kn ]; - f_N = (D.f[DIR_0M0])[ks ]; - f_B = (D.f[DIR_00P])[kt ]; - f_T = (D.f[DIR_00M])[kb ]; - f_SW = (D.f[DIR_PP0])[kne ]; - f_NE = (D.f[DIR_MM0])[ksw ]; - f_NW = (D.f[DIR_PM0])[kse ]; - f_SE = (D.f[DIR_MP0])[knw ]; - f_BW = (D.f[DIR_P0P])[kte ]; - f_TE = (D.f[DIR_M0M])[kbw ]; - f_TW = (D.f[DIR_P0M])[kbe ]; - f_BE = (D.f[DIR_M0P])[ktw ]; - f_BS = (D.f[DIR_0PP])[ktn ]; - f_TN = (D.f[DIR_0MM])[kbs ]; - f_TS = (D.f[DIR_0PM])[kbn ]; - f_BN = (D.f[DIR_0MP])[kts ]; - f_BSW = (D.f[DIR_PPP])[ktne ]; - f_BNE = (D.f[DIR_MMP])[ktsw ]; - f_BNW = (D.f[DIR_PMP])[ktse ]; - f_BSE = (D.f[DIR_MPP])[ktnw ]; - f_TSW = (D.f[DIR_PPM])[kbne ]; - f_TNE = (D.f[DIR_MMM])[kbsw ]; - f_TNW = (D.f[DIR_PMM])[kbse ]; - f_TSE = (D.f[DIR_MPM])[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)); - ////d�rrrrrty !!!!!!!!!!!!! - // real vx1 = ten * ((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 = ten * ((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 = ten * ((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 cu_sq =1.5*(vx1*vx1+vx2*vx2+vx3*vx3); - //real ux_sq = vx1 * vx1; - //real uy_sq = vx2 * vx2; - //real uz_sq = vx3 * vx3; - ////////////////////////////////////////////////////////////////////////// - //BGK - //real omegaD = three - sqrt(three); - //real Lam = -(c1o2-one/omegaD); - //real nue_d = Lam/three; - ////real ae = zero; - //real ae = diffusivity/nue_d - one; - - real f7_ZERO,f7_E,f7_W,f7_N,f7_S,f7_T,f7_B; - //real /*feq7_ZERO,*/feq7_E,feq7_W,feq7_N,feq7_S,feq7_T,feq7_B; - //real /*feqW7_ZERO,*/feqW7_E,feqW7_W,feqW7_N,feqW7_S,feqW7_T,feqW7_B; - //real TempD = temp[k]; - - - f7_ZERO = (D7.f[0])[kzero]; - f7_W = (D7.f[1])[ke ]; - f7_E = (D7.f[2])[kw ]; - f7_S = (D7.f[3])[kn ]; - f7_N = (D7.f[4])[ks ]; - f7_B = (D7.f[5])[kt ]; - f7_T = (D7.f[6])[kb ]; - - real ConcD = f7_ZERO + f7_E + f7_W + f7_N + f7_S + f7_T + f7_B; - - ////feq7_ZERO = ConcD*(c1o3*(ae*(-3.0))-(ux_sq+uy_sq+uz_sq)); - //feq7_E = ConcD*(c1o6*(ae+one)+c1o2*(ux_sq)+vx1*c1o2); - //feq7_W = ConcD*(c1o6*(ae+one)+c1o2*(ux_sq)-vx1*c1o2); - //feq7_N = ConcD*(c1o6*(ae+one)+c1o2*(uy_sq)+vx2*c1o2); - //feq7_S = ConcD*(c1o6*(ae+one)+c1o2*(uy_sq)-vx2*c1o2); - //feq7_T = ConcD*(c1o6*(ae+one)+c1o2*(uz_sq)+vx3*c1o2); - //feq7_B = ConcD*(c1o6*(ae+one)+c1o2*(uz_sq)-vx3*c1o2); - - ////feq7_ZERO = TempD*(c1o3*(ae*(-3.0f))-(ux_sq+uy_sq+uz_sq)); - //feqW7_E = feq7_E;// TempD*(c1o6*(ae+one)+c1o2*(ux_sq_Inflow)+vx1_Inflow*c1o2); - //feqW7_W = feq7_W;// TempD*(c1o6*(ae+one)+c1o2*(ux_sq_Inflow)-vx1_Inflow*c1o2); - //feqW7_N = feq7_N;// TempD*(c1o6*(ae+one)+c1o2*(uy_sq_Inflow)+vx2_Inflow*c1o2); - //feqW7_S = feq7_S;// TempD*(c1o6*(ae+one)+c1o2*(uy_sq_Inflow)-vx2_Inflow*c1o2); - //feqW7_T = feq7_T;// TempD*(c1o6*(ae+one)+c1o2*(uz_sq_Inflow)+vx3_Inflow*c1o2); - //feqW7_B = feq7_B;// TempD*(c1o6*(ae+one)+c1o2*(uz_sq_Inflow)-vx3_Inflow*c1o2); - - ////////////////////////////////////////////////////////////////////////// - //TRT Yoshida Kernel - based on Ying - real cs2 = c1o4; - real Lam = diffusivity/(c1o1)/cs2; - //real omegaD = - c1o1 / (Lam + c1o2); - real nue_d = Lam/c3o1; - - ////////////////////////////////////////////////////////////////////////// - //pointertausch - if (isEvenTimestep==false) - { - D7.f[0] = &DD7[0*numberOfLBnodes]; - D7.f[1] = &DD7[1*numberOfLBnodes]; - D7.f[2] = &DD7[2*numberOfLBnodes]; - D7.f[3] = &DD7[3*numberOfLBnodes]; - D7.f[4] = &DD7[4*numberOfLBnodes]; - D7.f[5] = &DD7[5*numberOfLBnodes]; - D7.f[6] = &DD7[6*numberOfLBnodes]; - } - else - { - D7.f[0] = &DD7[0*numberOfLBnodes]; - D7.f[2] = &DD7[1*numberOfLBnodes]; - D7.f[1] = &DD7[2*numberOfLBnodes]; - D7.f[4] = &DD7[3*numberOfLBnodes]; - D7.f[3] = &DD7[4*numberOfLBnodes]; - D7.f[6] = &DD7[5*numberOfLBnodes]; - D7.f[5] = &DD7[6*numberOfLBnodes]; - } - - //////////////////////////////////////////////////////////////////////////// - ////mit Q's - //real /*feq,*/ q; - //q = q_dirE[k]; - //if (q>=zero && q<=one) - //{ - // //q=0.; - // (D7.f[2])[kw]=(two*feqW7_W-(f7_E*(q*omegaD-one)-omegaD*feq7_E*(q-one))/(omegaD-one)+f7_W*q)/(q+one);//f7_W - feq7_W + feqW7_E; - //} - - //q = q_dirW[k]; - //if (q>=zero && q<=one) - //{ - // //q=0.; - // (D7.f[1])[ke]=(two*feqW7_E-(f7_W*(q*omegaD-one)-omegaD*feq7_W*(q-one))/(omegaD-one)+f7_E*q)/(q+one);//f7_E - feq7_E + feqW7_W; - //} - - //q = q_dirN[k]; - //if (q>=zero && q<=one) - //{ - // //q=0.; - // (D7.f[4])[ks]=(two*feqW7_S-(f7_N*(q*omegaD-1.)-omegaD*feq7_N*(q-one))/(omegaD-one)+f7_S*q)/(q+one);//f7_S - feq7_S + feqW7_N; - //} - - //q = q_dirS[k]; - //if (q>=zero && q<=one) - //{ - // //q=0.; - // (D7.f[3])[kn]=(two*feqW7_N-(f7_S*(q*omegaD-one)-omegaD*feq7_S*(q-one))/(omegaD-one)+f7_N*q)/(q+one);//f7_N - feq7_N + feqW7_S; - //} - - //q = q_dirT[k]; - //if (q>=zero && q<=one) - //{ - // //q=0.; - // (D7.f[6])[kb]=(two*feqW7_B-(f7_T*(q*omegaD-1.)-omegaD*feq7_T*(q-one))/(omegaD-one)+f7_B*q)/(q+one);//f7_B - feq7_B + feqW7_T; - //} - - //q = q_dirB[k]; - //if (q>=zero && q<=one) - //{ - // //q=0.; - // (D7.f[5])[kt]=(two*feqW7_T-(f7_B*(q*omegaD-one)-omegaD*feq7_B*(q-one))/(omegaD-one)+f7_T*q)/(q+one);//f7_T - feq7_T + feqW7_B; - //} - - //////////////////////////////////////////////////////////////////////////// - ////ohne Q's - //real /*feq,*/ q; - //q = q_dirE[k]; - //if (q>=zero && q<=one) - //{ - // (D7.f[2])[kw]= 0.1;//test - // //(D7.f[2])[kw]=f7_W - feq7_W + feqW7_E; - //} - - //q = q_dirW[k]; - //if (q>=zero && q<=one) - //{ - // (D7.f[1])[ke]= 0.1;//test - // //(D7.f[1])[ke]=f7_E - feq7_E + feqW7_W; - //} - - //q = q_dirN[k]; - //if (q>=zero && q<=one) - //{ - // (D7.f[4])[ks]= 0.1;//test - // //(D7.f[4])[ks]=f7_S - feq7_S + feqW7_N; - //} - - //q = q_dirS[k]; - //if (q>=zero && q<=one) - //{ - // (D7.f[3])[kn]= 0.1;//test - // //(D7.f[3])[kn]=f7_N - feq7_N + feqW7_S; - //} - - //q = q_dirT[k]; - //if (q>=zero && q<=one) - //{ - // (D7.f[6])[kb]= 0.1;//test - // //(D7.f[6])[kb]=f7_B - feq7_B + feqW7_T; - //} - - //q = q_dirB[k]; - //if (q>=zero && q<=one) - //{ - // (D7.f[5])[kt]= 0.1;//test - // //(D7.f[5])[kt]=f7_T - feq7_T + feqW7_B; - //} - - - ////////////////////////////////////////////////////////////////////////// - //ohne Q's aber mit TRT - real /*feq,*/ q; - q = q_dirE[k]; - if (q>=c0o1 && q<=c1o1) - { - (D7.f[2])[kw]= f7_W + nue_d * ConcD; - } - - q = q_dirW[k]; - if (q>=c0o1 && q<=c1o1) - { - (D7.f[1])[ke]= f7_E + nue_d * ConcD; - } - - q = q_dirN[k]; - if (q>=c0o1 && q<=c1o1) - { - (D7.f[4])[ks]= f7_S + nue_d * ConcD; - } - - q = q_dirS[k]; - if (q>=c0o1 && q<=c1o1) - { - (D7.f[3])[kn]= f7_N + nue_d * ConcD; - } - - q = q_dirT[k]; - if (q>=c0o1 && q<=c1o1) - { - (D7.f[6])[kb]= f7_B + nue_d * ConcD; - } - - q = q_dirB[k]; - if (q>=c0o1 && q<=c1o1) - { - (D7.f[5])[kt]= f7_T + nue_d * ConcD; - } - - } -} -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -////////////////////////////////////////////////////////////////////////////// -__global__ void QADPressIncomp27( - real* DD, - real* DD27, - real* temp, - real* velo, - real diffusivity, - int* k_Q, - real* QQ, - unsigned int numberOfBCnodes, - real om1, - unsigned int* neighborX, - unsigned int* neighborY, - unsigned int* neighborZ, - unsigned long long numberOfLBnodes, - bool isEvenTimestep) -{ - Distributions27 D; - if (isEvenTimestep==true) - { - D.f[DIR_P00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_M00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_PMP * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_MPM * numberOfLBnodes]; - } - else - { - D.f[DIR_M00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_P00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_MPM * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_PMP * numberOfLBnodes]; - } - - Distributions27 D27; - if (isEvenTimestep==true) - { - D27.f[DIR_P00] = &DD27[DIR_P00 * numberOfLBnodes]; - D27.f[DIR_M00] = &DD27[DIR_M00 * numberOfLBnodes]; - D27.f[DIR_0P0] = &DD27[DIR_0P0 * numberOfLBnodes]; - D27.f[DIR_0M0] = &DD27[DIR_0M0 * numberOfLBnodes]; - D27.f[DIR_00P] = &DD27[DIR_00P * numberOfLBnodes]; - D27.f[DIR_00M] = &DD27[DIR_00M * numberOfLBnodes]; - D27.f[DIR_PP0] = &DD27[DIR_PP0 * numberOfLBnodes]; - D27.f[DIR_MM0] = &DD27[DIR_MM0 * numberOfLBnodes]; - D27.f[DIR_PM0] = &DD27[DIR_PM0 * numberOfLBnodes]; - D27.f[DIR_MP0] = &DD27[DIR_MP0 * numberOfLBnodes]; - D27.f[DIR_P0P] = &DD27[DIR_P0P * numberOfLBnodes]; - D27.f[DIR_M0M] = &DD27[DIR_M0M * numberOfLBnodes]; - D27.f[DIR_P0M] = &DD27[DIR_P0M * numberOfLBnodes]; - D27.f[DIR_M0P] = &DD27[DIR_M0P * numberOfLBnodes]; - D27.f[DIR_0PP] = &DD27[DIR_0PP * numberOfLBnodes]; - D27.f[DIR_0MM] = &DD27[DIR_0MM * numberOfLBnodes]; - D27.f[DIR_0PM] = &DD27[DIR_0PM * numberOfLBnodes]; - D27.f[DIR_0MP] = &DD27[DIR_0MP * numberOfLBnodes]; - D27.f[DIR_000] = &DD27[DIR_000 * numberOfLBnodes]; - D27.f[DIR_PPP] = &DD27[DIR_PPP * numberOfLBnodes]; - D27.f[DIR_MMP] = &DD27[DIR_MMP * numberOfLBnodes]; - D27.f[DIR_PMP] = &DD27[DIR_PMP * numberOfLBnodes]; - D27.f[DIR_MPP] = &DD27[DIR_MPP * numberOfLBnodes]; - D27.f[DIR_PPM] = &DD27[DIR_PPM * numberOfLBnodes]; - D27.f[DIR_MMM] = &DD27[DIR_MMM * numberOfLBnodes]; - D27.f[DIR_PMM] = &DD27[DIR_PMM * numberOfLBnodes]; - D27.f[DIR_MPM] = &DD27[DIR_MPM * numberOfLBnodes]; - } - else - { - D27.f[DIR_M00] = &DD27[DIR_P00 * numberOfLBnodes]; - D27.f[DIR_P00] = &DD27[DIR_M00 * numberOfLBnodes]; - D27.f[DIR_0M0] = &DD27[DIR_0P0 * numberOfLBnodes]; - D27.f[DIR_0P0] = &DD27[DIR_0M0 * numberOfLBnodes]; - D27.f[DIR_00M] = &DD27[DIR_00P * numberOfLBnodes]; - D27.f[DIR_00P] = &DD27[DIR_00M * numberOfLBnodes]; - D27.f[DIR_MM0] = &DD27[DIR_PP0 * numberOfLBnodes]; - D27.f[DIR_PP0] = &DD27[DIR_MM0 * numberOfLBnodes]; - D27.f[DIR_MP0] = &DD27[DIR_PM0 * numberOfLBnodes]; - D27.f[DIR_PM0] = &DD27[DIR_MP0 * numberOfLBnodes]; - D27.f[DIR_M0M] = &DD27[DIR_P0P * numberOfLBnodes]; - D27.f[DIR_P0P] = &DD27[DIR_M0M * numberOfLBnodes]; - D27.f[DIR_M0P] = &DD27[DIR_P0M * numberOfLBnodes]; - D27.f[DIR_P0M] = &DD27[DIR_M0P * numberOfLBnodes]; - D27.f[DIR_0MM] = &DD27[DIR_0PP * numberOfLBnodes]; - D27.f[DIR_0PP] = &DD27[DIR_0MM * numberOfLBnodes]; - D27.f[DIR_0MP] = &DD27[DIR_0PM * numberOfLBnodes]; - D27.f[DIR_0PM] = &DD27[DIR_0MP * numberOfLBnodes]; - D27.f[DIR_000] = &DD27[DIR_000 * numberOfLBnodes]; - D27.f[DIR_PPP] = &DD27[DIR_MMM * numberOfLBnodes]; - D27.f[DIR_MMP] = &DD27[DIR_PPM * numberOfLBnodes]; - D27.f[DIR_PMP] = &DD27[DIR_MPM * numberOfLBnodes]; - D27.f[DIR_MPP] = &DD27[DIR_PMM * numberOfLBnodes]; - D27.f[DIR_PPM] = &DD27[DIR_MMP * numberOfLBnodes]; - D27.f[DIR_MMM] = &DD27[DIR_PPP * numberOfLBnodes]; - D27.f[DIR_PMM] = &DD27[DIR_MPP * numberOfLBnodes]; - D27.f[DIR_MPM] = &DD27[DIR_PMP * numberOfLBnodes]; - } - //////////////////////////////////////////////////////////////////////////////// - const unsigned x = threadIdx.x; // Globaler x-Index - const unsigned y = blockIdx.x; // Globaler y-Index - const unsigned z = blockIdx.y; // Globaler z-Index - - const unsigned nx = blockDim.x; - const unsigned ny = gridDim.x; - - const unsigned k = nx*(ny*z + y) + x; - ////////////////////////////////////////////////////////////////////////// - - if(k < 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[DIR_P00 * numberOfBCnodes]; - q_dirW = &QQ[DIR_M00 * numberOfBCnodes]; - q_dirN = &QQ[DIR_0P0 * numberOfBCnodes]; - q_dirS = &QQ[DIR_0M0 * numberOfBCnodes]; - q_dirT = &QQ[DIR_00P * numberOfBCnodes]; - q_dirB = &QQ[DIR_00M * numberOfBCnodes]; - q_dirNE = &QQ[DIR_PP0 * numberOfBCnodes]; - q_dirSW = &QQ[DIR_MM0 * numberOfBCnodes]; - q_dirSE = &QQ[DIR_PM0 * numberOfBCnodes]; - q_dirNW = &QQ[DIR_MP0 * numberOfBCnodes]; - q_dirTE = &QQ[DIR_P0P * numberOfBCnodes]; - q_dirBW = &QQ[DIR_M0M * numberOfBCnodes]; - q_dirBE = &QQ[DIR_P0M * numberOfBCnodes]; - q_dirTW = &QQ[DIR_M0P * numberOfBCnodes]; - q_dirTN = &QQ[DIR_0PP * numberOfBCnodes]; - q_dirBS = &QQ[DIR_0MM * numberOfBCnodes]; - q_dirBN = &QQ[DIR_0PM * numberOfBCnodes]; - q_dirTS = &QQ[DIR_0MP * numberOfBCnodes]; - q_dirTNE = &QQ[DIR_PPP * numberOfBCnodes]; - q_dirTSW = &QQ[DIR_MMP * numberOfBCnodes]; - q_dirTSE = &QQ[DIR_PMP * numberOfBCnodes]; - q_dirTNW = &QQ[DIR_MPP * numberOfBCnodes]; - q_dirBNE = &QQ[DIR_PPM * numberOfBCnodes]; - q_dirBSW = &QQ[DIR_MMM * numberOfBCnodes]; - q_dirBSE = &QQ[DIR_PMM * numberOfBCnodes]; - q_dirBNW = &QQ[DIR_MPM * 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]; - 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 f_W = (D.f[DIR_P00])[ke ]; - real f_E = (D.f[DIR_M00])[kw ]; - real f_S = (D.f[DIR_0P0])[kn ]; - real f_N = (D.f[DIR_0M0])[ks ]; - real f_B = (D.f[DIR_00P])[kt ]; - real f_T = (D.f[DIR_00M])[kb ]; - real f_SW = (D.f[DIR_PP0])[kne ]; - real f_NE = (D.f[DIR_MM0])[ksw ]; - real f_NW = (D.f[DIR_PM0])[kse ]; - real f_SE = (D.f[DIR_MP0])[knw ]; - real f_BW = (D.f[DIR_P0P])[kte ]; - real f_TE = (D.f[DIR_M0M])[kbw ]; - real f_TW = (D.f[DIR_P0M])[kbe ]; - real f_BE = (D.f[DIR_M0P])[ktw ]; - real f_BS = (D.f[DIR_0PP])[ktn ]; - real f_TN = (D.f[DIR_0MM])[kbs ]; - real f_TS = (D.f[DIR_0PM])[kbn ]; - real f_BN = (D.f[DIR_0MP])[kts ]; - //real f_ZERO = (D.f[DIR_000])[kzero]; - real f_BSW = (D.f[DIR_PPP])[ktne ]; - real f_BNE = (D.f[DIR_MMP])[ktsw ]; - real f_BNW = (D.f[DIR_PMP])[ktse ]; - real f_BSE = (D.f[DIR_MPP])[ktnw ]; - real f_TSW = (D.f[DIR_PPM])[kbne ]; - real f_TNE = (D.f[DIR_MMM])[kbsw ]; - real f_TNW = (D.f[DIR_PMM])[kbse ]; - real f_TSE = (D.f[DIR_MPM])[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[DIR_P00])[ke ]; - //real f27_E = (D27.f[DIR_M00])[kw ]; - //real f27_S = (D27.f[DIR_0P0])[kn ]; - //real f27_N = (D27.f[DIR_0M0])[ks ]; - //real f27_B = (D27.f[DIR_00P])[kt ]; - //real f27_T = (D27.f[DIR_00M])[kb ]; - //real f27_SW = (D27.f[DIR_PP0])[kne ]; - //real f27_NE = (D27.f[DIR_MM0])[ksw ]; - //real f27_NW = (D27.f[DIR_PM0])[kse ]; - //real f27_SE = (D27.f[DIR_MP0])[knw ]; - //real f27_BW = (D27.f[DIR_P0P])[kte ]; - //real f27_TE = (D27.f[DIR_M0M])[kbw ]; - //real f27_TW = (D27.f[DIR_P0M])[kbe ]; - //real f27_BE = (D27.f[DIR_M0P])[ktw ]; - //real f27_BS = (D27.f[DIR_0PP])[ktn ]; - //real f27_TN = (D27.f[DIR_0MM])[kbs ]; - //real f27_TS = (D27.f[DIR_0PM])[kbn ]; - //real f27_BN = (D27.f[DIR_0MP])[kts ]; - //real f27_ZERO = (D27.f[DIR_000])[kzero]; - //real f27_BSW = (D27.f[DIR_PPP])[ktne ]; - //real f27_BNE = (D27.f[DIR_MMP])[ktsw ]; - //real f27_BNW = (D27.f[DIR_PMP])[ktse ]; - //real f27_BSE = (D27.f[DIR_MPP])[ktnw ]; - //real f27_TSW = (D27.f[DIR_PPM])[kbne ]; - //real f27_TNE = (D27.f[DIR_MMM])[kbsw ]; - //real f27_TNW = (D27.f[DIR_PMM])[kbse ]; - //real f27_TSE = (D27.f[DIR_MPM])[kbnw ]; - //////////////////////////////////////////////////////////////////////////////// - real cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3); - //////////////////////////////////////////////////////////////////////////////// - //real ConcD = f27_TSE + f27_TNW + f27_TNE + f27_TSW + f27_BSE + f27_BNW + f27_BNE + f27_BSW + - //f27_BN + f27_TS + f27_TN + f27_BS + f27_BE + f27_TW + f27_TE + f27_BW + f27_SE + f27_NW + f27_NE + f27_SW + - //f27_T + f27_B + f27_N + f27_S + f27_E + f27_W + f27_ZERO; - - //real feq27_ZERO = c8over27* ConcD*(one-cu_sq); - /*real feq27_E = c2o27* ConcD*(c1o1+c3o1*( vx1 )+c9o2*( vx1 )*( vx1 )-cu_sq); - real feq27_W = c2o27* ConcD*(c1o1+c3o1*(-vx1 )+c9o2*(-vx1 )*(-vx1 )-cu_sq); - real feq27_N = c2o27* ConcD*(c1o1+c3o1*( vx2 )+c9o2*( vx2 )*( vx2 )-cu_sq); - real feq27_S = c2o27* ConcD*(c1o1+c3o1*( -vx2 )+c9o2*( -vx2 )*( -vx2 )-cu_sq); - real feq27_T = c2o27* ConcD*(c1o1+c3o1*( vx3)+c9o2*( vx3)*( vx3)-cu_sq); - real feq27_B = c2o27* ConcD*(c1o1+c3o1*( -vx3)+c9o2*( -vx3)*( -vx3)-cu_sq); - real feq27_NE = c1o54* ConcD*(c1o1+c3o1*( vx1+vx2 )+c9o2*( vx1+vx2 )*( vx1+vx2 )-cu_sq); - real feq27_SW = c1o54* ConcD*(c1o1+c3o1*(-vx1-vx2 )+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq); - real feq27_SE = c1o54* ConcD*(c1o1+c3o1*( vx1-vx2 )+c9o2*( vx1-vx2 )*( vx1-vx2 )-cu_sq); - real feq27_NW = c1o54* ConcD*(c1o1+c3o1*(-vx1+vx2 )+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq); - real feq27_TE = c1o54* ConcD*(c1o1+c3o1*( vx1 +vx3)+c9o2*( vx1 +vx3)*( vx1 +vx3)-cu_sq); - real feq27_BW = c1o54* ConcD*(c1o1+c3o1*(-vx1 -vx3)+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq); - real feq27_BE = c1o54* ConcD*(c1o1+c3o1*( vx1 -vx3)+c9o2*( vx1 -vx3)*( vx1 -vx3)-cu_sq); - real feq27_TW = c1o54* ConcD*(c1o1+c3o1*(-vx1 +vx3)+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq); - real feq27_TN = c1o54* ConcD*(c1o1+c3o1*( vx2+vx3)+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq); - real feq27_BS = c1o54* ConcD*(c1o1+c3o1*( -vx2-vx3)+c9o2*( -vx2-vx3)*( -vx2-vx3)-cu_sq); - real feq27_BN = c1o54* ConcD*(c1o1+c3o1*( vx2-vx3)+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq); - real feq27_TS = c1o54* ConcD*(c1o1+c3o1*( -vx2+vx3)+c9o2*( -vx2+vx3)*( -vx2+vx3)-cu_sq); - real feq27_TNE = c1o216*ConcD*(c1o1+c3o1*( vx1+vx2+vx3)+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq); - real feq27_BSW = c1o216*ConcD*(c1o1+c3o1*(-vx1-vx2-vx3)+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq); - real feq27_BNE = c1o216*ConcD*(c1o1+c3o1*( vx1+vx2-vx3)+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq); - real feq27_TSW = c1o216*ConcD*(c1o1+c3o1*(-vx1-vx2+vx3)+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq); - real feq27_TSE = c1o216*ConcD*(c1o1+c3o1*( vx1-vx2+vx3)+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq); - real feq27_BNW = c1o216*ConcD*(c1o1+c3o1*(-vx1+vx2-vx3)+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq); - real feq27_BSE = c1o216*ConcD*(c1o1+c3o1*( vx1-vx2-vx3)+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq); - real feq27_TNW = c1o216*ConcD*(c1o1+c3o1*(-vx1+vx2+vx3)+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq);*/ - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real TempD = temp[k]; - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - // velocity inflow - //vx1 = zero; - //vx2 = zero; - //vx3 = velo[k]; - - //real feqW27_ZERO = c8over27* TempD*(one-cu_sq); - real feqW27_E = c2o27* TempD*(c1o1+c3o1*( vx1 )+c9o2*( vx1 )*( vx1 )-cu_sq); //feq27_E ;// - real feqW27_W = c2o27* TempD*(c1o1+c3o1*(-vx1 )+c9o2*(-vx1 )*(-vx1 )-cu_sq); //feq27_W ;// - real feqW27_N = c2o27* TempD*(c1o1+c3o1*( vx2 )+c9o2*( vx2 )*( vx2 )-cu_sq); //feq27_N ;// - real feqW27_S = c2o27* TempD*(c1o1+c3o1*( -vx2 )+c9o2*( -vx2 )*( -vx2 )-cu_sq); //feq27_S ;// - real feqW27_T = c2o27* TempD*(c1o1+c3o1*( vx3)+c9o2*( vx3)*( vx3)-cu_sq); //feq27_T ;// - real feqW27_B = c2o27* TempD*(c1o1+c3o1*( -vx3)+c9o2*( -vx3)*( -vx3)-cu_sq); //feq27_B ;// - real feqW27_NE = c1o54* TempD*(c1o1+c3o1*( vx1+vx2 )+c9o2*( vx1+vx2 )*( vx1+vx2 )-cu_sq); //feq27_NE ;// - real feqW27_SW = c1o54* TempD*(c1o1+c3o1*(-vx1-vx2 )+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq); //feq27_SW ;// - real feqW27_SE = c1o54* TempD*(c1o1+c3o1*( vx1-vx2 )+c9o2*( vx1-vx2 )*( vx1-vx2 )-cu_sq); //feq27_SE ;// - real feqW27_NW = c1o54* TempD*(c1o1+c3o1*(-vx1+vx2 )+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq); //feq27_NW ;// - real feqW27_TE = c1o54* TempD*(c1o1+c3o1*( vx1 +vx3)+c9o2*( vx1 +vx3)*( vx1 +vx3)-cu_sq); //feq27_TE ;// - real feqW27_BW = c1o54* TempD*(c1o1+c3o1*(-vx1 -vx3)+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq); //feq27_BW ;// - real feqW27_BE = c1o54* TempD*(c1o1+c3o1*( vx1 -vx3)+c9o2*( vx1 -vx3)*( vx1 -vx3)-cu_sq); //feq27_BE ;// - real feqW27_TW = c1o54* TempD*(c1o1+c3o1*(-vx1 +vx3)+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq); //feq27_TW ;// - real feqW27_TN = c1o54* TempD*(c1o1+c3o1*( vx2+vx3)+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq); //feq27_TN ;// - real feqW27_BS = c1o54* TempD*(c1o1+c3o1*( -vx2-vx3)+c9o2*( -vx2-vx3)*( -vx2-vx3)-cu_sq); //feq27_BS ;// - real feqW27_BN = c1o54* TempD*(c1o1+c3o1*( vx2-vx3)+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq); //feq27_BN ;// - real feqW27_TS = c1o54* TempD*(c1o1+c3o1*( -vx2+vx3)+c9o2*( -vx2+vx3)*( -vx2+vx3)-cu_sq); //feq27_TS ;// - real feqW27_TNE = c1o216*TempD*(c1o1+c3o1*( vx1+vx2+vx3)+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq); //feq27_TNE;// - real feqW27_BSW = c1o216*TempD*(c1o1+c3o1*(-vx1-vx2-vx3)+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq); //feq27_BSW;// - real feqW27_BNE = c1o216*TempD*(c1o1+c3o1*( vx1+vx2-vx3)+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq); //feq27_BNE;// - real feqW27_TSW = c1o216*TempD*(c1o1+c3o1*(-vx1-vx2+vx3)+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq); //feq27_TSW;// - real feqW27_TSE = c1o216*TempD*(c1o1+c3o1*( vx1-vx2+vx3)+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq); //feq27_TSE;// - real feqW27_BNW = c1o216*TempD*(c1o1+c3o1*(-vx1+vx2-vx3)+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq); //feq27_BNW;// - real feqW27_BSE = c1o216*TempD*(c1o1+c3o1*( vx1-vx2-vx3)+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq); //feq27_BSE;// - real feqW27_TNW = c1o216*TempD*(c1o1+c3o1*(-vx1+vx2+vx3)+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq); //feq27_TNW;// - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real omegaD = c3o1 - sqrt(c3o1); - //real Lam = -(c1o2-one/omegaD); - //real nue_d = Lam/three; - //real ae = zero; - //real ae = diffusivity/nue_d - one; - - - ////////////////////////////////////////////////////////////////////////// - if (isEvenTimestep==false) - { - D27.f[DIR_P00] = &DD27[DIR_P00 * numberOfLBnodes]; - D27.f[DIR_M00] = &DD27[DIR_M00 * numberOfLBnodes]; - D27.f[DIR_0P0] = &DD27[DIR_0P0 * numberOfLBnodes]; - D27.f[DIR_0M0] = &DD27[DIR_0M0 * numberOfLBnodes]; - D27.f[DIR_00P] = &DD27[DIR_00P * numberOfLBnodes]; - D27.f[DIR_00M] = &DD27[DIR_00M * numberOfLBnodes]; - D27.f[DIR_PP0] = &DD27[DIR_PP0 * numberOfLBnodes]; - D27.f[DIR_MM0] = &DD27[DIR_MM0 * numberOfLBnodes]; - D27.f[DIR_PM0] = &DD27[DIR_PM0 * numberOfLBnodes]; - D27.f[DIR_MP0] = &DD27[DIR_MP0 * numberOfLBnodes]; - D27.f[DIR_P0P] = &DD27[DIR_P0P * numberOfLBnodes]; - D27.f[DIR_M0M] = &DD27[DIR_M0M * numberOfLBnodes]; - D27.f[DIR_P0M] = &DD27[DIR_P0M * numberOfLBnodes]; - D27.f[DIR_M0P] = &DD27[DIR_M0P * numberOfLBnodes]; - D27.f[DIR_0PP] = &DD27[DIR_0PP * numberOfLBnodes]; - D27.f[DIR_0MM] = &DD27[DIR_0MM * numberOfLBnodes]; - D27.f[DIR_0PM] = &DD27[DIR_0PM * numberOfLBnodes]; - D27.f[DIR_0MP] = &DD27[DIR_0MP * numberOfLBnodes]; - D27.f[DIR_000] = &DD27[DIR_000 * numberOfLBnodes]; - D27.f[DIR_PPP] = &DD27[DIR_PPP * numberOfLBnodes]; - D27.f[DIR_MMP] = &DD27[DIR_MMP * numberOfLBnodes]; - D27.f[DIR_PMP] = &DD27[DIR_PMP * numberOfLBnodes]; - D27.f[DIR_MPP] = &DD27[DIR_MPP * numberOfLBnodes]; - D27.f[DIR_PPM] = &DD27[DIR_PPM * numberOfLBnodes]; - D27.f[DIR_MMM] = &DD27[DIR_MMM * numberOfLBnodes]; - D27.f[DIR_PMM] = &DD27[DIR_PMM * numberOfLBnodes]; - D27.f[DIR_MPM] = &DD27[DIR_MPM * numberOfLBnodes]; - } - else - { - D27.f[DIR_M00] = &DD27[DIR_P00 * numberOfLBnodes]; - D27.f[DIR_P00] = &DD27[DIR_M00 * numberOfLBnodes]; - D27.f[DIR_0M0] = &DD27[DIR_0P0 * numberOfLBnodes]; - D27.f[DIR_0P0] = &DD27[DIR_0M0 * numberOfLBnodes]; - D27.f[DIR_00M] = &DD27[DIR_00P * numberOfLBnodes]; - D27.f[DIR_00P] = &DD27[DIR_00M * numberOfLBnodes]; - D27.f[DIR_MM0] = &DD27[DIR_PP0 * numberOfLBnodes]; - D27.f[DIR_PP0] = &DD27[DIR_MM0 * numberOfLBnodes]; - D27.f[DIR_MP0] = &DD27[DIR_PM0 * numberOfLBnodes]; - D27.f[DIR_PM0] = &DD27[DIR_MP0 * numberOfLBnodes]; - D27.f[DIR_M0M] = &DD27[DIR_P0P * numberOfLBnodes]; - D27.f[DIR_P0P] = &DD27[DIR_M0M * numberOfLBnodes]; - D27.f[DIR_M0P] = &DD27[DIR_P0M * numberOfLBnodes]; - D27.f[DIR_P0M] = &DD27[DIR_M0P * numberOfLBnodes]; - D27.f[DIR_0MM] = &DD27[DIR_0PP * numberOfLBnodes]; - D27.f[DIR_0PP] = &DD27[DIR_0MM * numberOfLBnodes]; - D27.f[DIR_0MP] = &DD27[DIR_0PM * numberOfLBnodes]; - D27.f[DIR_0PM] = &DD27[DIR_0MP * numberOfLBnodes]; - D27.f[DIR_000] = &DD27[DIR_000 * numberOfLBnodes]; - D27.f[DIR_PPP] = &DD27[DIR_MMM * numberOfLBnodes]; - D27.f[DIR_MMP] = &DD27[DIR_PPM * numberOfLBnodes]; - D27.f[DIR_PMP] = &DD27[DIR_MPM * numberOfLBnodes]; - D27.f[DIR_MPP] = &DD27[DIR_PMM * numberOfLBnodes]; - D27.f[DIR_PPM] = &DD27[DIR_MMP * numberOfLBnodes]; - D27.f[DIR_MMM] = &DD27[DIR_PPP * numberOfLBnodes]; - D27.f[DIR_PMM] = &DD27[DIR_MPP * numberOfLBnodes]; - D27.f[DIR_MPM] = &DD27[DIR_PMP * numberOfLBnodes]; - } - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //Test - //(D.f[DIR_000])[k]=c1o10; - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real q; - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - q = q_dirE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_M00])[kw ]= -feqW27_W + c2o1 * c2o27 * TempD; - q = q_dirW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_P00])[ke ]= -feqW27_E + c2o1 * c2o27 * TempD; - q = q_dirN[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_0M0])[ks ]= -feqW27_S + c2o1 * c2o27 * TempD; - q = q_dirS[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_0P0])[kn ]= -feqW27_N + c2o1 * c2o27 * TempD; - q = q_dirT[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_00M])[kb ]= -feqW27_B + c2o1 * c2o27 * TempD; - q = q_dirB[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_00P])[kt ]= -feqW27_T + c2o1 * c2o27 * TempD; - q = q_dirNE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_MM0])[ksw ]= -feqW27_SW + c2o1 * c1o54 * TempD; - q = q_dirSW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_PP0])[kne ]= -feqW27_NE + c2o1 * c1o54 * TempD; - q = q_dirSE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_MP0])[knw ]= -feqW27_NW + c2o1 * c1o54 * TempD; - q = q_dirNW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_PM0])[kse ]= -feqW27_SE + c2o1 * c1o54 * TempD; - q = q_dirTE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_M0M])[kbw ]= -feqW27_BW + c2o1 * c1o54 * TempD; - q = q_dirBW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_P0P])[kte ]= -feqW27_TE + c2o1 * c1o54 * TempD; - q = q_dirBE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_M0P])[ktw ]= -feqW27_TW + c2o1 * c1o54 * TempD; - q = q_dirTW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_P0M])[kbe ]= -feqW27_BE + c2o1 * c1o54 * TempD; - q = q_dirTN[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_0MM])[kbs ]= -feqW27_BS + c2o1 * c1o54 * TempD; - q = q_dirBS[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_0PP])[ktn ]= -feqW27_TN + c2o1 * c1o54 * TempD; - q = q_dirBN[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_0MP])[kts ]= -feqW27_TS + c2o1 * c1o54 * TempD; - q = q_dirTS[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_0PM])[kbn ]= -feqW27_BN + c2o1 * c1o54 * TempD; - q = q_dirTNE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_MMM])[kbsw]= -feqW27_BSW+ c2o1 * c1o216 * TempD; - q = q_dirBSW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_PPP])[ktne]= -feqW27_TNE+ c2o1 * c1o216 * TempD; - q = q_dirBNE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_MMP])[ktsw]= -feqW27_TSW+ c2o1 * c1o216 * TempD; - q = q_dirTSW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_PPM])[kbne]= -feqW27_BNE+ c2o1 * c1o216 * TempD; - q = q_dirTSE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_MPM])[kbnw]= -feqW27_BNW+ c2o1 * c1o216 * TempD; - q = q_dirBNW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_PMP])[ktse]= -feqW27_TSE+ c2o1 * c1o216 * TempD; - q = q_dirBSE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_MPP])[ktnw]= -feqW27_TNW+ c2o1 * c1o216 * TempD; - q = q_dirTNW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[DIR_PMM])[kbse]= -feqW27_BSE+ c2o1 * c1o216 * TempD; - //q = q_dirE[k]; if (q>=zero && q<=one) (D27.f[DIR_M00])[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[DIR_P00])[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[DIR_0M0])[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[DIR_0P0])[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[DIR_00M])[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[DIR_00P])[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[DIR_MM0])[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[DIR_PP0])[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[DIR_MP0])[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[DIR_PM0])[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[DIR_M0M])[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[DIR_P0P])[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[DIR_M0P])[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[DIR_P0M])[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[DIR_0MM])[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[DIR_0PP])[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[DIR_0MP])[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[DIR_0PM])[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[DIR_MMM])[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[DIR_PPP])[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[DIR_MMP])[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[DIR_PPM])[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[DIR_MPM])[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[DIR_PMP])[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[DIR_MPP])[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[DIR_PMM])[kbse]=(two*feqW27_BSE-(f27_TNW*(q*omegaD-one)-omegaD*feq27_TNW*(q-one))/(omegaD-one)+f27_BSE*q)/(q+one); - } -} -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - - - - - - - - - - - -//////////////////////////////////////////////////////////////////////////////// -inline __device__ real calcDistributionBC_AD_interpol(real q, real weight, real v, real v_sq, real f, real finf, real omegaDiffusivity, real jTangential, real concentration) { - real feq = weight * concentration * (c1o1 + c3o1 * v + c9o2 * v * v * concentration - v_sq * concentration); - return (c1o1 - q) / (c1o1 + q) * ((f - feq * omegaDiffusivity) / (c1o1 - omegaDiffusivity)) + (q * (f + finf) - c6o1 * weight * (jTangential)) / (c1o1 + q); -} -//////////////////////////////////////////////////////////////////////////////// -inline __device__ real calcDistributionBC_AD(real q, real weight, real v, real v_sq, real f, real finf, real omegaDiffusivity, real jTangential, real concentration) { - return f - c6o1 * weight * jTangential; -} - - -// has to be excecuted before Fluid BCs -////////////////////////////////////////////////////////////////////////////// -__global__ void AD_SlipVelDeviceComp( - real *normalX, - real *normalY, - real *normalZ, - real *distributions, - real *distributionsAD, - int *QindexArray, - real *Qarrays, - uint numberOfBCnodes, - real omegaDiffusivity, - uint* neighborX, - uint* neighborY, - uint* neighborZ, - unsigned long long numberOfLBnodes, - bool isEvenTimestep) -{ - Distributions27 D; - if (isEvenTimestep) - { - D.f[DIR_P00] = &distributions[DIR_P00 * numberOfLBnodes]; - D.f[DIR_M00] = &distributions[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0P0] = &distributions[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0M0] = &distributions[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00P] = &distributions[DIR_00P * numberOfLBnodes]; - D.f[DIR_00M] = &distributions[DIR_00M * numberOfLBnodes]; - D.f[DIR_PP0] = &distributions[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_MM0] = &distributions[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &distributions[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &distributions[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_P0P] = &distributions[DIR_P0P * numberOfLBnodes]; - D.f[DIR_M0M] = &distributions[DIR_M0M * numberOfLBnodes]; - D.f[DIR_P0M] = &distributions[DIR_P0M * numberOfLBnodes]; - D.f[DIR_M0P] = &distributions[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0PP] = &distributions[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0MM] = &distributions[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0PM] = &distributions[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0MP] = &distributions[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &distributions[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &distributions[DIR_PPP * numberOfLBnodes]; - D.f[DIR_MMP] = &distributions[DIR_MMP * numberOfLBnodes]; - D.f[DIR_PMP] = &distributions[DIR_PMP * numberOfLBnodes]; - D.f[DIR_MPP] = &distributions[DIR_MPP * numberOfLBnodes]; - D.f[DIR_PPM] = &distributions[DIR_PPM * numberOfLBnodes]; - D.f[DIR_MMM] = &distributions[DIR_MMM * numberOfLBnodes]; - D.f[DIR_PMM] = &distributions[DIR_PMM * numberOfLBnodes]; - D.f[DIR_MPM] = &distributions[DIR_MPM * numberOfLBnodes]; - } - else - { - D.f[DIR_M00] = &distributions[DIR_P00 * numberOfLBnodes]; - D.f[DIR_P00] = &distributions[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0M0] = &distributions[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0P0] = &distributions[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00M] = &distributions[DIR_00P * numberOfLBnodes]; - D.f[DIR_00P] = &distributions[DIR_00M * numberOfLBnodes]; - D.f[DIR_MM0] = &distributions[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_PP0] = &distributions[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &distributions[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &distributions[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_M0M] = &distributions[DIR_P0P * numberOfLBnodes]; - D.f[DIR_P0P] = &distributions[DIR_M0M * numberOfLBnodes]; - D.f[DIR_M0P] = &distributions[DIR_P0M * numberOfLBnodes]; - D.f[DIR_P0M] = &distributions[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0MM] = &distributions[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0PP] = &distributions[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0MP] = &distributions[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0PM] = &distributions[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &distributions[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &distributions[DIR_MMM * numberOfLBnodes]; - D.f[DIR_MMP] = &distributions[DIR_PPM * numberOfLBnodes]; - D.f[DIR_PMP] = &distributions[DIR_MPM * numberOfLBnodes]; - D.f[DIR_MPP] = &distributions[DIR_PMM * numberOfLBnodes]; - D.f[DIR_PPM] = &distributions[DIR_MMP * numberOfLBnodes]; - D.f[DIR_MMM] = &distributions[DIR_PPP * numberOfLBnodes]; - D.f[DIR_PMM] = &distributions[DIR_MPP * numberOfLBnodes]; - D.f[DIR_MPM] = &distributions[DIR_PMP * numberOfLBnodes]; - } - //////////////////////////////////////////////////////////////////////////////// - Distributions27 DAD; - if (isEvenTimestep) - { - DAD.f[DIR_P00] = &distributionsAD[DIR_P00 * numberOfLBnodes]; - DAD.f[DIR_M00] = &distributionsAD[DIR_M00 * numberOfLBnodes]; - DAD.f[DIR_0P0] = &distributionsAD[DIR_0P0 * numberOfLBnodes]; - DAD.f[DIR_0M0] = &distributionsAD[DIR_0M0 * numberOfLBnodes]; - DAD.f[DIR_00P] = &distributionsAD[DIR_00P * numberOfLBnodes]; - DAD.f[DIR_00M] = &distributionsAD[DIR_00M * numberOfLBnodes]; - DAD.f[DIR_PP0] = &distributionsAD[DIR_PP0 * numberOfLBnodes]; - DAD.f[DIR_MM0] = &distributionsAD[DIR_MM0 * numberOfLBnodes]; - DAD.f[DIR_PM0] = &distributionsAD[DIR_PM0 * numberOfLBnodes]; - DAD.f[DIR_MP0] = &distributionsAD[DIR_MP0 * numberOfLBnodes]; - DAD.f[DIR_P0P] = &distributionsAD[DIR_P0P * numberOfLBnodes]; - DAD.f[DIR_M0M] = &distributionsAD[DIR_M0M * numberOfLBnodes]; - DAD.f[DIR_P0M] = &distributionsAD[DIR_P0M * numberOfLBnodes]; - DAD.f[DIR_M0P] = &distributionsAD[DIR_M0P * numberOfLBnodes]; - DAD.f[DIR_0PP] = &distributionsAD[DIR_0PP * numberOfLBnodes]; - DAD.f[DIR_0MM] = &distributionsAD[DIR_0MM * numberOfLBnodes]; - DAD.f[DIR_0PM] = &distributionsAD[DIR_0PM * numberOfLBnodes]; - DAD.f[DIR_0MP] = &distributionsAD[DIR_0MP * numberOfLBnodes]; - DAD.f[DIR_000] = &distributionsAD[DIR_000 * numberOfLBnodes]; - DAD.f[DIR_PPP] = &distributionsAD[DIR_PPP * numberOfLBnodes]; - DAD.f[DIR_MMP] = &distributionsAD[DIR_MMP * numberOfLBnodes]; - DAD.f[DIR_PMP] = &distributionsAD[DIR_PMP * numberOfLBnodes]; - DAD.f[DIR_MPP] = &distributionsAD[DIR_MPP * numberOfLBnodes]; - DAD.f[DIR_PPM] = &distributionsAD[DIR_PPM * numberOfLBnodes]; - DAD.f[DIR_MMM] = &distributionsAD[DIR_MMM * numberOfLBnodes]; - DAD.f[DIR_PMM] = &distributionsAD[DIR_PMM * numberOfLBnodes]; - DAD.f[DIR_MPM] = &distributionsAD[DIR_MPM * numberOfLBnodes]; - } - else - { - DAD.f[DIR_M00] = &distributionsAD[DIR_P00 * numberOfLBnodes]; - DAD.f[DIR_P00] = &distributionsAD[DIR_M00 * numberOfLBnodes]; - DAD.f[DIR_0M0] = &distributionsAD[DIR_0P0 * numberOfLBnodes]; - DAD.f[DIR_0P0] = &distributionsAD[DIR_0M0 * numberOfLBnodes]; - DAD.f[DIR_00M] = &distributionsAD[DIR_00P * numberOfLBnodes]; - DAD.f[DIR_00P] = &distributionsAD[DIR_00M * numberOfLBnodes]; - DAD.f[DIR_MM0] = &distributionsAD[DIR_PP0 * numberOfLBnodes]; - DAD.f[DIR_PP0] = &distributionsAD[DIR_MM0 * numberOfLBnodes]; - DAD.f[DIR_MP0] = &distributionsAD[DIR_PM0 * numberOfLBnodes]; - DAD.f[DIR_PM0] = &distributionsAD[DIR_MP0 * numberOfLBnodes]; - DAD.f[DIR_M0M] = &distributionsAD[DIR_P0P * numberOfLBnodes]; - DAD.f[DIR_P0P] = &distributionsAD[DIR_M0M * numberOfLBnodes]; - DAD.f[DIR_M0P] = &distributionsAD[DIR_P0M * numberOfLBnodes]; - DAD.f[DIR_P0M] = &distributionsAD[DIR_M0P * numberOfLBnodes]; - DAD.f[DIR_0MM] = &distributionsAD[DIR_0PP * numberOfLBnodes]; - DAD.f[DIR_0PP] = &distributionsAD[DIR_0MM * numberOfLBnodes]; - DAD.f[DIR_0MP] = &distributionsAD[DIR_0PM * numberOfLBnodes]; - DAD.f[DIR_0PM] = &distributionsAD[DIR_0MP * numberOfLBnodes]; - DAD.f[DIR_000] = &distributionsAD[DIR_000 * numberOfLBnodes]; - DAD.f[DIR_PPP] = &distributionsAD[DIR_MMM * numberOfLBnodes]; - DAD.f[DIR_MMP] = &distributionsAD[DIR_PPM * numberOfLBnodes]; - DAD.f[DIR_PMP] = &distributionsAD[DIR_MPM * numberOfLBnodes]; - DAD.f[DIR_MPP] = &distributionsAD[DIR_PMM * numberOfLBnodes]; - DAD.f[DIR_PPM] = &distributionsAD[DIR_MMP * numberOfLBnodes]; - DAD.f[DIR_MMM] = &distributionsAD[DIR_PPP * numberOfLBnodes]; - DAD.f[DIR_PMM] = &distributionsAD[DIR_MPP * numberOfLBnodes]; - DAD.f[DIR_MPM] = &distributionsAD[DIR_PMP * numberOfLBnodes]; - } - //////////////////////////////////////////////////////////////////////////////// - const unsigned x = threadIdx.x; // Globaler x-Index - const unsigned y = blockIdx.x; // Globaler y-Index - const unsigned z = blockIdx.y; // Globaler z-Index - - const unsigned nx = blockDim.x; - const unsigned ny = gridDim.x; - - const unsigned k = nx * (ny * z + y) + x; - ////////////////////////////////////////////////////////////////////////// - - if (k < numberOfBCnodes) - { - //////////////////////////////////////////////////////////////////////////////// - real NormX = normalX[k]; - real NormY = normalY[k]; - real NormZ = normalZ[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 = &Qarrays[DIR_P00 * numberOfBCnodes]; - q_dirW = &Qarrays[DIR_M00 * numberOfBCnodes]; - q_dirN = &Qarrays[DIR_0P0 * numberOfBCnodes]; - q_dirS = &Qarrays[DIR_0M0 * numberOfBCnodes]; - q_dirT = &Qarrays[DIR_00P * numberOfBCnodes]; - q_dirB = &Qarrays[DIR_00M * numberOfBCnodes]; - q_dirNE = &Qarrays[DIR_PP0 * numberOfBCnodes]; - q_dirSW = &Qarrays[DIR_MM0 * numberOfBCnodes]; - q_dirSE = &Qarrays[DIR_PM0 * numberOfBCnodes]; - q_dirNW = &Qarrays[DIR_MP0 * numberOfBCnodes]; - q_dirTE = &Qarrays[DIR_P0P * numberOfBCnodes]; - q_dirBW = &Qarrays[DIR_M0M * numberOfBCnodes]; - q_dirBE = &Qarrays[DIR_P0M * numberOfBCnodes]; - q_dirTW = &Qarrays[DIR_M0P * numberOfBCnodes]; - q_dirTN = &Qarrays[DIR_0PP * numberOfBCnodes]; - q_dirBS = &Qarrays[DIR_0MM * numberOfBCnodes]; - q_dirBN = &Qarrays[DIR_0PM * numberOfBCnodes]; - q_dirTS = &Qarrays[DIR_0MP * numberOfBCnodes]; - q_dirTNE = &Qarrays[DIR_PPP * numberOfBCnodes]; - q_dirTSW = &Qarrays[DIR_MMP * numberOfBCnodes]; - q_dirTSE = &Qarrays[DIR_PMP * numberOfBCnodes]; - q_dirTNW = &Qarrays[DIR_MPP * numberOfBCnodes]; - q_dirBNE = &Qarrays[DIR_PPM * numberOfBCnodes]; - q_dirBSW = &Qarrays[DIR_MMM * numberOfBCnodes]; - q_dirBSE = &Qarrays[DIR_PMM * numberOfBCnodes]; - q_dirBNW = &Qarrays[DIR_MPM * numberOfBCnodes]; - //////////////////////////////////////////////////////////////////////////////// - //index - unsigned int KQK = QindexArray[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 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[DIR_P00])[ke]; - f_E = (D.f[DIR_M00])[kw]; - f_S = (D.f[DIR_0P0])[kn]; - f_N = (D.f[DIR_0M0])[ks]; - f_B = (D.f[DIR_00P])[kt]; - f_T = (D.f[DIR_00M])[kb]; - f_SW = (D.f[DIR_PP0])[kne]; - f_NE = (D.f[DIR_MM0])[ksw]; - f_NW = (D.f[DIR_PM0])[kse]; - f_SE = (D.f[DIR_MP0])[knw]; - f_BW = (D.f[DIR_P0P])[kte]; - f_TE = (D.f[DIR_M0M])[kbw]; - f_TW = (D.f[DIR_P0M])[kbe]; - f_BE = (D.f[DIR_M0P])[ktw]; - f_BS = (D.f[DIR_0PP])[ktn]; - f_TN = (D.f[DIR_0MM])[kbs]; - f_TS = (D.f[DIR_0PM])[kbn]; - f_BN = (D.f[DIR_0MP])[kts]; - f_BSW = (D.f[DIR_PPP])[ktne]; - f_BNE = (D.f[DIR_MMP])[ktsw]; - f_BNW = (D.f[DIR_PMP])[ktse]; - f_BSE = (D.f[DIR_MPP])[ktnw]; - f_TSW = (D.f[DIR_PPM])[kbne]; - f_TNE = (D.f[DIR_MMM])[kbsw]; - f_TNW = (D.f[DIR_PMM])[kbse]; - f_TSE = (D.f[DIR_MPM])[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[DIR_000])[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); - - - 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 cu_sq = c3o2 * (vx1 * vx1 + vx2 * vx2 + vx3 * vx3) * (c1o1 + drho); - - //////////////////////////////////////////////////////////////////////////////// - f_W = (DAD.f[DIR_P00])[ke]; - f_E = (DAD.f[DIR_M00])[kw]; - f_S = (DAD.f[DIR_0P0])[kn]; - f_N = (DAD.f[DIR_0M0])[ks]; - f_B = (DAD.f[DIR_00P])[kt]; - f_T = (DAD.f[DIR_00M])[kb]; - f_SW = (DAD.f[DIR_PP0])[kne]; - f_NE = (DAD.f[DIR_MM0])[ksw]; - f_NW = (DAD.f[DIR_PM0])[kse]; - f_SE = (DAD.f[DIR_MP0])[knw]; - f_BW = (DAD.f[DIR_P0P])[kte]; - f_TE = (DAD.f[DIR_M0M])[kbw]; - f_TW = (DAD.f[DIR_P0M])[kbe]; - f_BE = (DAD.f[DIR_M0P])[ktw]; - f_BS = (DAD.f[DIR_0PP])[ktn]; - f_TN = (DAD.f[DIR_0MM])[kbs]; - f_TS = (DAD.f[DIR_0PM])[kbn]; - f_BN = (DAD.f[DIR_0MP])[kts]; - f_BSW = (DAD.f[DIR_PPP])[ktne]; - f_BNE = (DAD.f[DIR_MMP])[ktsw]; - f_BNW = (DAD.f[DIR_PMP])[ktse]; - f_BSE = (DAD.f[DIR_MPP])[ktnw]; - f_TSW = (DAD.f[DIR_PPM])[kbne]; - f_TNE = (DAD.f[DIR_MMM])[kbsw]; - f_TNW = (DAD.f[DIR_PMM])[kbse]; - f_TSE = (DAD.f[DIR_MPM])[kbnw]; - ////////////////////////////////////////////////////////////////////////// - if (!isEvenTimestep) - { - DAD.f[DIR_P00] = &distributionsAD[DIR_P00 * numberOfLBnodes]; - DAD.f[DIR_M00] = &distributionsAD[DIR_M00 * numberOfLBnodes]; - DAD.f[DIR_0P0] = &distributionsAD[DIR_0P0 * numberOfLBnodes]; - DAD.f[DIR_0M0] = &distributionsAD[DIR_0M0 * numberOfLBnodes]; - DAD.f[DIR_00P] = &distributionsAD[DIR_00P * numberOfLBnodes]; - DAD.f[DIR_00M] = &distributionsAD[DIR_00M * numberOfLBnodes]; - DAD.f[DIR_PP0] = &distributionsAD[DIR_PP0 * numberOfLBnodes]; - DAD.f[DIR_MM0] = &distributionsAD[DIR_MM0 * numberOfLBnodes]; - DAD.f[DIR_PM0] = &distributionsAD[DIR_PM0 * numberOfLBnodes]; - DAD.f[DIR_MP0] = &distributionsAD[DIR_MP0 * numberOfLBnodes]; - DAD.f[DIR_P0P] = &distributionsAD[DIR_P0P * numberOfLBnodes]; - DAD.f[DIR_M0M] = &distributionsAD[DIR_M0M * numberOfLBnodes]; - DAD.f[DIR_P0M] = &distributionsAD[DIR_P0M * numberOfLBnodes]; - DAD.f[DIR_M0P] = &distributionsAD[DIR_M0P * numberOfLBnodes]; - DAD.f[DIR_0PP] = &distributionsAD[DIR_0PP * numberOfLBnodes]; - DAD.f[DIR_0MM] = &distributionsAD[DIR_0MM * numberOfLBnodes]; - DAD.f[DIR_0PM] = &distributionsAD[DIR_0PM * numberOfLBnodes]; - DAD.f[DIR_0MP] = &distributionsAD[DIR_0MP * numberOfLBnodes]; - DAD.f[DIR_000] = &distributionsAD[DIR_000 * numberOfLBnodes]; - DAD.f[DIR_PPP] = &distributionsAD[DIR_PPP * numberOfLBnodes]; - DAD.f[DIR_MMP] = &distributionsAD[DIR_MMP * numberOfLBnodes]; - DAD.f[DIR_PMP] = &distributionsAD[DIR_PMP * numberOfLBnodes]; - DAD.f[DIR_MPP] = &distributionsAD[DIR_MPP * numberOfLBnodes]; - DAD.f[DIR_PPM] = &distributionsAD[DIR_PPM * numberOfLBnodes]; - DAD.f[DIR_MMM] = &distributionsAD[DIR_MMM * numberOfLBnodes]; - DAD.f[DIR_PMM] = &distributionsAD[DIR_PMM * numberOfLBnodes]; - DAD.f[DIR_MPM] = &distributionsAD[DIR_MPM * numberOfLBnodes]; - } - else - { - DAD.f[DIR_M00] = &distributionsAD[DIR_P00 * numberOfLBnodes]; - DAD.f[DIR_P00] = &distributionsAD[DIR_M00 * numberOfLBnodes]; - DAD.f[DIR_0M0] = &distributionsAD[DIR_0P0 * numberOfLBnodes]; - DAD.f[DIR_0P0] = &distributionsAD[DIR_0M0 * numberOfLBnodes]; - DAD.f[DIR_00M] = &distributionsAD[DIR_00P * numberOfLBnodes]; - DAD.f[DIR_00P] = &distributionsAD[DIR_00M * numberOfLBnodes]; - DAD.f[DIR_MM0] = &distributionsAD[DIR_PP0 * numberOfLBnodes]; - DAD.f[DIR_PP0] = &distributionsAD[DIR_MM0 * numberOfLBnodes]; - DAD.f[DIR_MP0] = &distributionsAD[DIR_PM0 * numberOfLBnodes]; - DAD.f[DIR_PM0] = &distributionsAD[DIR_MP0 * numberOfLBnodes]; - DAD.f[DIR_M0M] = &distributionsAD[DIR_P0P * numberOfLBnodes]; - DAD.f[DIR_P0P] = &distributionsAD[DIR_M0M * numberOfLBnodes]; - DAD.f[DIR_M0P] = &distributionsAD[DIR_P0M * numberOfLBnodes]; - DAD.f[DIR_P0M] = &distributionsAD[DIR_M0P * numberOfLBnodes]; - DAD.f[DIR_0MM] = &distributionsAD[DIR_0PP * numberOfLBnodes]; - DAD.f[DIR_0PP] = &distributionsAD[DIR_0MM * numberOfLBnodes]; - DAD.f[DIR_0MP] = &distributionsAD[DIR_0PM * numberOfLBnodes]; - DAD.f[DIR_0PM] = &distributionsAD[DIR_0MP * numberOfLBnodes]; - DAD.f[DIR_000] = &distributionsAD[DIR_000 * numberOfLBnodes]; - DAD.f[DIR_PPP] = &distributionsAD[DIR_MMM * numberOfLBnodes]; - DAD.f[DIR_MMP] = &distributionsAD[DIR_PPM * numberOfLBnodes]; - DAD.f[DIR_PMP] = &distributionsAD[DIR_MPM * numberOfLBnodes]; - DAD.f[DIR_MPP] = &distributionsAD[DIR_PMM * numberOfLBnodes]; - DAD.f[DIR_PPM] = &distributionsAD[DIR_MMP * numberOfLBnodes]; - DAD.f[DIR_MMM] = &distributionsAD[DIR_PPP * numberOfLBnodes]; - DAD.f[DIR_PMM] = &distributionsAD[DIR_MPP * numberOfLBnodes]; - DAD.f[DIR_MPM] = &distributionsAD[DIR_PMP * numberOfLBnodes]; - } - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - 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[DIR_000])[kzero]); - - real jx1 = - (((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)) - (vx1 * concentration); - - real jx2 = - ((-(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 * concentration); - - real jx3 = - (((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 * concentration); - - //jx1 *= (c2o1 - omegaDiffusivity) / (c2o1 - c2o1 * omegaDiffusivity); - //jx2 *= (c2o1 - omegaDiffusivity) / (c2o1 - c2o1 * omegaDiffusivity); - //jx3 *= (c2o1 - omegaDiffusivity) / (c2o1 - c2o1 * omegaDiffusivity); - - real NormJ = jx1 * NormX + jx2 * NormY + jx3 * NormZ; - - real jTan1 = jx1 - NormJ * NormX; - real jTan2 = jx2 - NormJ * NormY; - real jTan3 = jx3 - NormJ * NormZ; - - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - q = q_dirE[k]; if (q >= c0o1 && q <= c1o1) { (DAD.f[DIR_M00])[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[DIR_P00])[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[DIR_0M0])[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[DIR_0P0])[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[DIR_00M])[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[DIR_00P])[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[DIR_MM0])[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[DIR_PP0])[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[DIR_MP0])[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[DIR_PM0])[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[DIR_M0M])[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[DIR_P0P])[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[DIR_M0P])[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[DIR_P0M])[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[DIR_0MM])[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[DIR_0PP])[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[DIR_0MP])[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[DIR_0PM])[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[DIR_MMM])[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[DIR_PPP])[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[DIR_MMP])[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[DIR_PPM])[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[DIR_MPM])[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[DIR_PMP])[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[DIR_MPP])[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[DIR_PMM])[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 deleted file mode 100644 index 41a50e5dde7dd8e024721653f43652f2e4a17548..0000000000000000000000000000000000000000 --- a/src/gpu/VirtualFluids_GPU/GPU/CP27.cu +++ /dev/null @@ -1,146 +0,0 @@ -/* Device code */ -#include "LBM/LB.h" -#include "lbm/constants/D3Q27.h" -#include <basics/constants/NumericConstants.h> - -using namespace vf::basics::constant; -using namespace vf::lbm::dir; - -//////////////////////////////////////////////////////////////////////////////// -__global__ void CalcCP27(real* DD, - int* cpIndex, - int nonCp, - double *cpPress, - unsigned int* neighborX, - unsigned int* neighborY, - unsigned int* neighborZ, - unsigned long long numberOfLBnodes, - bool isEvenTimestep) -{ - Distributions27 D; - if (isEvenTimestep==true) - { - D.f[DIR_P00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_M00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_PMP * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_MPM * numberOfLBnodes]; - } - else - { - D.f[DIR_M00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_P00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_MPM * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_PMP * numberOfLBnodes]; - } - //////////////////////////////////////////////////////////////////////////////// - const unsigned x = threadIdx.x; // Globaler x-Index - const unsigned y = blockIdx.x; // Globaler y-Index - const unsigned z = blockIdx.y; // Globaler z-Index - - const unsigned nx = blockDim.x; - const unsigned ny = gridDim.x; - - const unsigned k = nx*(ny*z + y) + x; - ////////////////////////////////////////////////////////////////////////// - - if(k<nonCp) - { - //////////////////////////////////////////////////////////////////////////////// - //index - unsigned int KQK = cpIndex[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]; - //////////////////////////////////////////////////////////////////////////////// - double PressCP; - - PressCP = (D.f[DIR_P00])[ke ]+ (D.f[DIR_M00])[kw ]+ - (D.f[DIR_0P0])[kn ]+ (D.f[DIR_0M0])[ks ]+ - (D.f[DIR_00P])[kt ]+ (D.f[DIR_00M])[kb ]+ - (D.f[DIR_PP0])[kne ]+ (D.f[DIR_MM0])[ksw ]+ - (D.f[DIR_PM0])[kse ]+ (D.f[DIR_MP0])[knw ]+ - (D.f[DIR_P0P])[kte ]+ (D.f[DIR_M0M])[kbw ]+ - (D.f[DIR_P0M])[kbe ]+ (D.f[DIR_M0P])[ktw ]+ - (D.f[DIR_0PP])[ktn ]+ (D.f[DIR_0MM])[kbs ]+ - (D.f[DIR_0PM])[kbn ]+ (D.f[DIR_0MP])[kts ]+ - (D.f[DIR_000])[kzero]+ - (D.f[DIR_PPP])[ktne]+ (D.f[DIR_MMP])[ktsw]+ - (D.f[DIR_PMP])[ktse]+ (D.f[DIR_MPP])[ktnw]+ - (D.f[DIR_PPM])[kbne]+ (D.f[DIR_MMM])[kbsw]+ - (D.f[DIR_PMM])[kbse]+ (D.f[DIR_MPM])[kbnw]; - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - cpPress[k] = PressCP; - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - } -} - diff --git a/src/gpu/VirtualFluids_GPU/GPU/ExchangeData27.cu b/src/gpu/VirtualFluids_GPU/GPU/ExchangeData27.cu deleted file mode 100644 index 288ec7ff26bae5b7415e08f4d39aa8cd2ffa4a9b..0000000000000000000000000000000000000000 --- a/src/gpu/VirtualFluids_GPU/GPU/ExchangeData27.cu +++ /dev/null @@ -1,1072 +0,0 @@ -/* Device code */ -#include "LBM/LB.h" -#include "lbm/constants/D3Q27.h" -#include <basics/constants/NumericConstants.h> - -using namespace vf::basics::constant; -using namespace vf::lbm::dir; - -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -__global__ void getSendFsPost27(real* DD, - real* bufferFs, - int* sendIndex, - int buffmax, - unsigned int* neighborX, - unsigned int* neighborY, - unsigned int* neighborZ, - unsigned long long 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 - - const unsigned nx = blockDim.x; - const unsigned ny = gridDim.x; - - const unsigned k = nx*(ny*z + y) + x; - ////////////////////////////////////////////////////////////////////////// - - if(k<buffmax) - { - //////////////////////////////////////////////////////////////////////////////// - //set index - unsigned int kIndex = sendIndex[k]; - unsigned int kzero = kIndex; - unsigned int ke = kIndex; - unsigned int kw = neighborX[kIndex]; - unsigned int kn = kIndex; - unsigned int ks = neighborY[kIndex]; - unsigned int kt = kIndex; - unsigned int kb = neighborZ[kIndex]; - unsigned int ksw = neighborY[kw]; - unsigned int kne = kIndex; - unsigned int kse = ks; - unsigned int knw = kw; - unsigned int kbw = neighborZ[kw]; - unsigned int kte = kIndex; - unsigned int kbe = kb; - unsigned int ktw = kw; - unsigned int kbs = neighborZ[ks]; - unsigned int ktn = kIndex; - 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 = kIndex; - unsigned int kbsw = neighborZ[ksw]; - //////////////////////////////////////////////////////////////////////////////// - //set Pointer for Fs - Distributions27 D; - if (isEvenTimestep==true) - { - D.f[DIR_P00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_M00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_PMP * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_MPM * numberOfLBnodes]; - } - else - { - D.f[DIR_M00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_P00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_MPM * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_PMP * numberOfLBnodes]; - } - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //set Pointer for Buffer Fs - Distributions27 Dbuff; - Dbuff.f[DIR_P00] = &bufferFs[DIR_P00 * buffmax]; - Dbuff.f[DIR_M00] = &bufferFs[DIR_M00 * buffmax]; - Dbuff.f[DIR_0P0] = &bufferFs[DIR_0P0 * buffmax]; - Dbuff.f[DIR_0M0] = &bufferFs[DIR_0M0 * buffmax]; - Dbuff.f[DIR_00P] = &bufferFs[DIR_00P * buffmax]; - Dbuff.f[DIR_00M] = &bufferFs[DIR_00M * buffmax]; - Dbuff.f[DIR_PP0] = &bufferFs[DIR_PP0 * buffmax]; - Dbuff.f[DIR_MM0] = &bufferFs[DIR_MM0 * buffmax]; - Dbuff.f[DIR_PM0] = &bufferFs[DIR_PM0 * buffmax]; - Dbuff.f[DIR_MP0] = &bufferFs[DIR_MP0 * buffmax]; - Dbuff.f[DIR_P0P] = &bufferFs[DIR_P0P * buffmax]; - Dbuff.f[DIR_M0M] = &bufferFs[DIR_M0M * buffmax]; - Dbuff.f[DIR_P0M] = &bufferFs[DIR_P0M * buffmax]; - Dbuff.f[DIR_M0P] = &bufferFs[DIR_M0P * buffmax]; - Dbuff.f[DIR_0PP] = &bufferFs[DIR_0PP * buffmax]; - Dbuff.f[DIR_0MM] = &bufferFs[DIR_0MM * buffmax]; - Dbuff.f[DIR_0PM] = &bufferFs[DIR_0PM * buffmax]; - Dbuff.f[DIR_0MP] = &bufferFs[DIR_0MP * buffmax]; - Dbuff.f[DIR_000] = &bufferFs[DIR_000 * buffmax]; - Dbuff.f[DIR_PPP] = &bufferFs[DIR_PPP * buffmax]; - Dbuff.f[DIR_MMP] = &bufferFs[DIR_MMP * buffmax]; - Dbuff.f[DIR_PMP] = &bufferFs[DIR_PMP * buffmax]; - Dbuff.f[DIR_MPP] = &bufferFs[DIR_MPP * buffmax]; - Dbuff.f[DIR_PPM] = &bufferFs[DIR_PPM * buffmax]; - Dbuff.f[DIR_MMM] = &bufferFs[DIR_MMM * buffmax]; - Dbuff.f[DIR_PMM] = &bufferFs[DIR_PMM * buffmax]; - Dbuff.f[DIR_MPM] = &bufferFs[DIR_MPM * buffmax]; - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //copy to buffer - //(Dbuff.f[DIR_P00])[k] = (D.f[DIR_P00])[ke ]; - //(Dbuff.f[DIR_M00])[k] = (D.f[DIR_M00])[kw ]; - //(Dbuff.f[DIR_0P0])[k] = (D.f[DIR_0P0])[kn ]; - //(Dbuff.f[DIR_0M0])[k] = (D.f[DIR_0M0])[ks ]; - //(Dbuff.f[DIR_00P])[k] = (D.f[DIR_00P])[kt ]; - //(Dbuff.f[DIR_00M])[k] = (D.f[DIR_00M])[kb ]; - //(Dbuff.f[DIR_PP0])[k] = (D.f[DIR_PP0])[kne ]; - //(Dbuff.f[DIR_MM0])[k] = (D.f[DIR_MM0])[ksw ]; - //(Dbuff.f[DIR_PM0])[k] = (D.f[DIR_PM0])[kse ]; - //(Dbuff.f[DIR_MP0])[k] = (D.f[DIR_MP0])[knw ]; - //(Dbuff.f[DIR_P0P])[k] = (D.f[DIR_P0P])[kte ]; - //(Dbuff.f[DIR_M0M])[k] = (D.f[DIR_M0M])[kbw ]; - //(Dbuff.f[DIR_P0M])[k] = (D.f[DIR_P0M])[kbe ]; - //(Dbuff.f[DIR_M0P])[k] = (D.f[DIR_M0P])[ktw ]; - //(Dbuff.f[DIR_0PP])[k] = (D.f[DIR_0PP])[ktn ]; - //(Dbuff.f[DIR_0MM])[k] = (D.f[DIR_0MM])[kbs ]; - //(Dbuff.f[DIR_0PM])[k] = (D.f[DIR_0PM])[kbn ]; - //(Dbuff.f[DIR_0MP])[k] = (D.f[DIR_0MP])[kts ]; - //(Dbuff.f[DIR_000])[k] = (D.f[DIR_000])[kzero]; - //(Dbuff.f[DIR_PPP])[k] = (D.f[DIR_PPP])[ktne ]; - //(Dbuff.f[DIR_MMP])[k] = (D.f[DIR_MMP])[ktsw ]; - //(Dbuff.f[DIR_PMP])[k] = (D.f[DIR_PMP])[ktse ]; - //(Dbuff.f[DIR_MPP])[k] = (D.f[DIR_MPP])[ktnw ]; - //(Dbuff.f[DIR_PPM])[k] = (D.f[DIR_PPM])[kbne ]; - //(Dbuff.f[DIR_MMM])[k] = (D.f[DIR_MMM])[kbsw ]; - //(Dbuff.f[DIR_PMM])[k] = (D.f[DIR_PMM])[kbse ]; - //(Dbuff.f[DIR_MPM])[k] = (D.f[DIR_MPM])[kbnw ]; - (Dbuff.f[DIR_P00])[k] = (D.f[DIR_M00])[kw ]; - (Dbuff.f[DIR_M00])[k] = (D.f[DIR_P00])[ke ]; - (Dbuff.f[DIR_0P0])[k] = (D.f[DIR_0M0])[ks ]; - (Dbuff.f[DIR_0M0])[k] = (D.f[DIR_0P0])[kn ]; - (Dbuff.f[DIR_00P])[k] = (D.f[DIR_00M])[kb ]; - (Dbuff.f[DIR_00M])[k] = (D.f[DIR_00P])[kt ]; - (Dbuff.f[DIR_PP0])[k] = (D.f[DIR_MM0])[ksw ]; - (Dbuff.f[DIR_MM0])[k] = (D.f[DIR_PP0])[kne ]; - (Dbuff.f[DIR_PM0])[k] = (D.f[DIR_MP0])[knw ]; - (Dbuff.f[DIR_MP0])[k] = (D.f[DIR_PM0])[kse ]; - (Dbuff.f[DIR_P0P])[k] = (D.f[DIR_M0M])[kbw ]; - (Dbuff.f[DIR_M0M])[k] = (D.f[DIR_P0P])[kte ]; - (Dbuff.f[DIR_P0M])[k] = (D.f[DIR_M0P])[ktw ]; - (Dbuff.f[DIR_M0P])[k] = (D.f[DIR_P0M])[kbe ]; - (Dbuff.f[DIR_0PP])[k] = (D.f[DIR_0MM])[kbs ]; - (Dbuff.f[DIR_0MM])[k] = (D.f[DIR_0PP])[ktn ]; - (Dbuff.f[DIR_0PM])[k] = (D.f[DIR_0MP])[kts ]; - (Dbuff.f[DIR_0MP])[k] = (D.f[DIR_0PM])[kbn ]; - (Dbuff.f[DIR_000])[k] = (D.f[DIR_000])[kzero]; - (Dbuff.f[DIR_PPP])[k] = (D.f[DIR_MMM])[kbsw ]; - (Dbuff.f[DIR_MMP])[k] = (D.f[DIR_PPM])[kbne ]; - (Dbuff.f[DIR_PMP])[k] = (D.f[DIR_MPM])[kbnw ]; - (Dbuff.f[DIR_MPP])[k] = (D.f[DIR_PMM])[kbse ]; - (Dbuff.f[DIR_PPM])[k] = (D.f[DIR_MMP])[ktsw ]; - (Dbuff.f[DIR_MMM])[k] = (D.f[DIR_PPP])[ktne ]; - (Dbuff.f[DIR_PMM])[k] = (D.f[DIR_MPP])[ktnw ]; - (Dbuff.f[DIR_MPM])[k] = (D.f[DIR_PMP])[ktse ]; - } -} -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -__global__ void setRecvFsPost27(real* DD, - real* bufferFs, - int* recvIndex, - int buffmax, - unsigned int* neighborX, - unsigned int* neighborY, - unsigned int* neighborZ, - unsigned long long 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 - - const unsigned nx = blockDim.x; - const unsigned ny = gridDim.x; - - const unsigned k = nx*(ny*z + y) + x; - ////////////////////////////////////////////////////////////////////////// - - if(k<buffmax) - { - //////////////////////////////////////////////////////////////////////////////// - //set index - unsigned int kIndex = recvIndex[k]; - unsigned int kzero = kIndex; - unsigned int ke = kIndex; - unsigned int kw = neighborX[kIndex]; - unsigned int kn = kIndex; - unsigned int ks = neighborY[kIndex]; - unsigned int kt = kIndex; - unsigned int kb = neighborZ[kIndex]; - unsigned int ksw = neighborY[kw]; - unsigned int kne = kIndex; - unsigned int kse = ks; - unsigned int knw = kw; - unsigned int kbw = neighborZ[kw]; - unsigned int kte = kIndex; - unsigned int kbe = kb; - unsigned int ktw = kw; - unsigned int kbs = neighborZ[ks]; - unsigned int ktn = kIndex; - 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 = kIndex; - unsigned int kbsw = neighborZ[ksw]; - //////////////////////////////////////////////////////////////////////////////// - //set Pointer for Fs - Distributions27 D; - if (isEvenTimestep==true) - { - D.f[DIR_P00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_M00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_PMP * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_MPM * numberOfLBnodes]; - } - else - { - D.f[DIR_M00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_P00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_MPM * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_PMP * numberOfLBnodes]; - } - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //set Pointer for Buffer Fs - Distributions27 Dbuff; - Dbuff.f[DIR_P00] = &bufferFs[DIR_P00 * buffmax]; - Dbuff.f[DIR_M00] = &bufferFs[DIR_M00 * buffmax]; - Dbuff.f[DIR_0P0] = &bufferFs[DIR_0P0 * buffmax]; - Dbuff.f[DIR_0M0] = &bufferFs[DIR_0M0 * buffmax]; - Dbuff.f[DIR_00P] = &bufferFs[DIR_00P * buffmax]; - Dbuff.f[DIR_00M] = &bufferFs[DIR_00M * buffmax]; - Dbuff.f[DIR_PP0] = &bufferFs[DIR_PP0 * buffmax]; - Dbuff.f[DIR_MM0] = &bufferFs[DIR_MM0 * buffmax]; - Dbuff.f[DIR_PM0] = &bufferFs[DIR_PM0 * buffmax]; - Dbuff.f[DIR_MP0] = &bufferFs[DIR_MP0 * buffmax]; - Dbuff.f[DIR_P0P] = &bufferFs[DIR_P0P * buffmax]; - Dbuff.f[DIR_M0M] = &bufferFs[DIR_M0M * buffmax]; - Dbuff.f[DIR_P0M] = &bufferFs[DIR_P0M * buffmax]; - Dbuff.f[DIR_M0P] = &bufferFs[DIR_M0P * buffmax]; - Dbuff.f[DIR_0PP] = &bufferFs[DIR_0PP * buffmax]; - Dbuff.f[DIR_0MM] = &bufferFs[DIR_0MM * buffmax]; - Dbuff.f[DIR_0PM] = &bufferFs[DIR_0PM * buffmax]; - Dbuff.f[DIR_0MP] = &bufferFs[DIR_0MP * buffmax]; - Dbuff.f[DIR_000] = &bufferFs[DIR_000 * buffmax]; - Dbuff.f[DIR_PPP] = &bufferFs[DIR_PPP * buffmax]; - Dbuff.f[DIR_MMP] = &bufferFs[DIR_MMP * buffmax]; - Dbuff.f[DIR_PMP] = &bufferFs[DIR_PMP * buffmax]; - Dbuff.f[DIR_MPP] = &bufferFs[DIR_MPP * buffmax]; - Dbuff.f[DIR_PPM] = &bufferFs[DIR_PPM * buffmax]; - Dbuff.f[DIR_MMM] = &bufferFs[DIR_MMM * buffmax]; - Dbuff.f[DIR_PMM] = &bufferFs[DIR_PMM * buffmax]; - Dbuff.f[DIR_MPM] = &bufferFs[DIR_MPM * buffmax]; - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //copy from buffer - //(D.f[DIR_P00])[ke ] = (Dbuff.f[DIR_P00])[k]; - //(D.f[DIR_M00])[kw ] = (Dbuff.f[DIR_M00])[k]; - //(D.f[DIR_0P0])[kn ] = (Dbuff.f[DIR_0P0])[k]; - //(D.f[DIR_0M0])[ks ] = (Dbuff.f[DIR_0M0])[k]; - //(D.f[DIR_00P])[kt ] = (Dbuff.f[DIR_00P])[k]; - //(D.f[DIR_00M])[kb ] = (Dbuff.f[DIR_00M])[k]; - //(D.f[DIR_PP0])[kne ] = (Dbuff.f[DIR_PP0])[k]; - //(D.f[DIR_MM0])[ksw ] = (Dbuff.f[DIR_MM0])[k]; - //(D.f[DIR_PM0])[kse ] = (Dbuff.f[DIR_PM0])[k]; - //(D.f[DIR_MP0])[knw ] = (Dbuff.f[DIR_MP0])[k]; - //(D.f[DIR_P0P])[kte ] = (Dbuff.f[DIR_P0P])[k]; - //(D.f[DIR_M0M])[kbw ] = (Dbuff.f[DIR_M0M])[k]; - //(D.f[DIR_P0M])[kbe ] = (Dbuff.f[DIR_P0M])[k]; - //(D.f[DIR_M0P])[ktw ] = (Dbuff.f[DIR_M0P])[k]; - //(D.f[DIR_0PP])[ktn ] = (Dbuff.f[DIR_0PP])[k]; - //(D.f[DIR_0MM])[kbs ] = (Dbuff.f[DIR_0MM])[k]; - //(D.f[DIR_0PM])[kbn ] = (Dbuff.f[DIR_0PM])[k]; - //(D.f[DIR_0MP])[kts ] = (Dbuff.f[DIR_0MP])[k]; - //(D.f[DIR_000])[kzero] = (Dbuff.f[DIR_000])[k]; - //(D.f[DIR_PPP])[ktne ] = (Dbuff.f[DIR_PPP])[k]; - //(D.f[DIR_MMP])[ktsw ] = (Dbuff.f[DIR_MMP])[k]; - //(D.f[DIR_PMP])[ktse ] = (Dbuff.f[DIR_PMP])[k]; - //(D.f[DIR_MPP])[ktnw ] = (Dbuff.f[DIR_MPP])[k]; - //(D.f[DIR_PPM])[kbne ] = (Dbuff.f[DIR_PPM])[k]; - //(D.f[DIR_MMM])[kbsw ] = (Dbuff.f[DIR_MMM])[k]; - //(D.f[DIR_PMM])[kbse ] = (Dbuff.f[DIR_PMM])[k]; - //(D.f[DIR_MPM])[kbnw ] = (Dbuff.f[DIR_MPM])[k]; - (D.f[DIR_M00])[kw ] = (Dbuff.f[DIR_P00])[k]; - (D.f[DIR_P00])[ke ] = (Dbuff.f[DIR_M00])[k]; - (D.f[DIR_0M0])[ks ] = (Dbuff.f[DIR_0P0])[k]; - (D.f[DIR_0P0])[kn ] = (Dbuff.f[DIR_0M0])[k]; - (D.f[DIR_00M])[kb ] = (Dbuff.f[DIR_00P])[k]; - (D.f[DIR_00P])[kt ] = (Dbuff.f[DIR_00M])[k]; - (D.f[DIR_MM0])[ksw ] = (Dbuff.f[DIR_PP0])[k]; - (D.f[DIR_PP0])[kne ] = (Dbuff.f[DIR_MM0])[k]; - (D.f[DIR_MP0])[knw ] = (Dbuff.f[DIR_PM0])[k]; - (D.f[DIR_PM0])[kse ] = (Dbuff.f[DIR_MP0])[k]; - (D.f[DIR_M0M])[kbw ] = (Dbuff.f[DIR_P0P])[k]; - (D.f[DIR_P0P])[kte ] = (Dbuff.f[DIR_M0M])[k]; - (D.f[DIR_M0P])[ktw ] = (Dbuff.f[DIR_P0M])[k]; - (D.f[DIR_P0M])[kbe ] = (Dbuff.f[DIR_M0P])[k]; - (D.f[DIR_0MM])[kbs ] = (Dbuff.f[DIR_0PP])[k]; - (D.f[DIR_0PP])[ktn ] = (Dbuff.f[DIR_0MM])[k]; - (D.f[DIR_0MP])[kts ] = (Dbuff.f[DIR_0PM])[k]; - (D.f[DIR_0PM])[kbn ] = (Dbuff.f[DIR_0MP])[k]; - (D.f[DIR_000])[kzero] = (Dbuff.f[DIR_000])[k]; - (D.f[DIR_MMM])[kbsw ] = (Dbuff.f[DIR_PPP])[k]; - (D.f[DIR_PPM])[kbne ] = (Dbuff.f[DIR_MMP])[k]; - (D.f[DIR_MPM])[kbnw ] = (Dbuff.f[DIR_PMP])[k]; - (D.f[DIR_PMM])[kbse ] = (Dbuff.f[DIR_MPP])[k]; - (D.f[DIR_MMP])[ktsw ] = (Dbuff.f[DIR_PPM])[k]; - (D.f[DIR_PPP])[ktne ] = (Dbuff.f[DIR_MMM])[k]; - (D.f[DIR_MPP])[ktnw ] = (Dbuff.f[DIR_PMM])[k]; - (D.f[DIR_PMP])[ktse ] = (Dbuff.f[DIR_MPM])[k]; - } -} -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -__global__ void getSendFsPre27(real* DD, - real* bufferFs, - int* sendIndex, - int buffmax, - unsigned int* neighborX, - unsigned int* neighborY, - unsigned int* neighborZ, - unsigned long long 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 - - const unsigned nx = blockDim.x; - const unsigned ny = gridDim.x; - - const unsigned k = nx*(ny*z + y) + x; - ////////////////////////////////////////////////////////////////////////// - - if(k<buffmax) - { - //////////////////////////////////////////////////////////////////////////////// - //set index - unsigned int kIndex = sendIndex[k]; - unsigned int kzero = kIndex; - unsigned int ke = kIndex; - unsigned int kw = neighborX[kIndex]; - unsigned int kn = kIndex; - unsigned int ks = neighborY[kIndex]; - unsigned int kt = kIndex; - unsigned int kb = neighborZ[kIndex]; - unsigned int ksw = neighborY[kw]; - unsigned int kne = kIndex; - unsigned int kse = ks; - unsigned int knw = kw; - unsigned int kbw = neighborZ[kw]; - unsigned int kte = kIndex; - unsigned int kbe = kb; - unsigned int ktw = kw; - unsigned int kbs = neighborZ[ks]; - unsigned int ktn = kIndex; - 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 = kIndex; - unsigned int kbsw = neighborZ[ksw]; - //////////////////////////////////////////////////////////////////////////////// - //set Pointer for Fs - Distributions27 D; - if (isEvenTimestep==true) - { - D.f[DIR_P00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_M00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_PMP * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_MPM * numberOfLBnodes]; - } - else - { - D.f[DIR_M00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_P00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_MPM * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_PMP * numberOfLBnodes]; - } - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //set Pointer for Buffer Fs - Distributions27 Dbuff; - Dbuff.f[DIR_P00] = &bufferFs[DIR_P00 * buffmax]; - Dbuff.f[DIR_M00] = &bufferFs[DIR_M00 * buffmax]; - Dbuff.f[DIR_0P0] = &bufferFs[DIR_0P0 * buffmax]; - Dbuff.f[DIR_0M0] = &bufferFs[DIR_0M0 * buffmax]; - Dbuff.f[DIR_00P] = &bufferFs[DIR_00P * buffmax]; - Dbuff.f[DIR_00M] = &bufferFs[DIR_00M * buffmax]; - Dbuff.f[DIR_PP0] = &bufferFs[DIR_PP0 * buffmax]; - Dbuff.f[DIR_MM0] = &bufferFs[DIR_MM0 * buffmax]; - Dbuff.f[DIR_PM0] = &bufferFs[DIR_PM0 * buffmax]; - Dbuff.f[DIR_MP0] = &bufferFs[DIR_MP0 * buffmax]; - Dbuff.f[DIR_P0P] = &bufferFs[DIR_P0P * buffmax]; - Dbuff.f[DIR_M0M] = &bufferFs[DIR_M0M * buffmax]; - Dbuff.f[DIR_P0M] = &bufferFs[DIR_P0M * buffmax]; - Dbuff.f[DIR_M0P] = &bufferFs[DIR_M0P * buffmax]; - Dbuff.f[DIR_0PP] = &bufferFs[DIR_0PP * buffmax]; - Dbuff.f[DIR_0MM] = &bufferFs[DIR_0MM * buffmax]; - Dbuff.f[DIR_0PM] = &bufferFs[DIR_0PM * buffmax]; - Dbuff.f[DIR_0MP] = &bufferFs[DIR_0MP * buffmax]; - Dbuff.f[DIR_000] = &bufferFs[DIR_000 * buffmax]; - Dbuff.f[DIR_PPP] = &bufferFs[DIR_PPP * buffmax]; - Dbuff.f[DIR_MMP] = &bufferFs[DIR_MMP * buffmax]; - Dbuff.f[DIR_PMP] = &bufferFs[DIR_PMP * buffmax]; - Dbuff.f[DIR_MPP] = &bufferFs[DIR_MPP * buffmax]; - Dbuff.f[DIR_PPM] = &bufferFs[DIR_PPM * buffmax]; - Dbuff.f[DIR_MMM] = &bufferFs[DIR_MMM * buffmax]; - Dbuff.f[DIR_PMM] = &bufferFs[DIR_PMM * buffmax]; - Dbuff.f[DIR_MPM] = &bufferFs[DIR_MPM * buffmax]; - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //copy to buffer - (Dbuff.f[DIR_P00])[k] = (D.f[DIR_P00])[ke ]; - (Dbuff.f[DIR_M00])[k] = (D.f[DIR_M00])[kw ]; - (Dbuff.f[DIR_0P0])[k] = (D.f[DIR_0P0])[kn ]; - (Dbuff.f[DIR_0M0])[k] = (D.f[DIR_0M0])[ks ]; - (Dbuff.f[DIR_00P])[k] = (D.f[DIR_00P])[kt ]; - (Dbuff.f[DIR_00M])[k] = (D.f[DIR_00M])[kb ]; - (Dbuff.f[DIR_PP0])[k] = (D.f[DIR_PP0])[kne ]; - (Dbuff.f[DIR_MM0])[k] = (D.f[DIR_MM0])[ksw ]; - (Dbuff.f[DIR_PM0])[k] = (D.f[DIR_PM0])[kse ]; - (Dbuff.f[DIR_MP0])[k] = (D.f[DIR_MP0])[knw ]; - (Dbuff.f[DIR_P0P])[k] = (D.f[DIR_P0P])[kte ]; - (Dbuff.f[DIR_M0M])[k] = (D.f[DIR_M0M])[kbw ]; - (Dbuff.f[DIR_P0M])[k] = (D.f[DIR_P0M])[kbe ]; - (Dbuff.f[DIR_M0P])[k] = (D.f[DIR_M0P])[ktw ]; - (Dbuff.f[DIR_0PP])[k] = (D.f[DIR_0PP])[ktn ]; - (Dbuff.f[DIR_0MM])[k] = (D.f[DIR_0MM])[kbs ]; - (Dbuff.f[DIR_0PM])[k] = (D.f[DIR_0PM])[kbn ]; - (Dbuff.f[DIR_0MP])[k] = (D.f[DIR_0MP])[kts ]; - (Dbuff.f[DIR_000])[k] = (D.f[DIR_000])[kzero]; - (Dbuff.f[DIR_PPP])[k] = (D.f[DIR_PPP])[ktne ]; - (Dbuff.f[DIR_MMP])[k] = (D.f[DIR_MMP])[ktsw ]; - (Dbuff.f[DIR_PMP])[k] = (D.f[DIR_PMP])[ktse ]; - (Dbuff.f[DIR_MPP])[k] = (D.f[DIR_MPP])[ktnw ]; - (Dbuff.f[DIR_PPM])[k] = (D.f[DIR_PPM])[kbne ]; - (Dbuff.f[DIR_MMM])[k] = (D.f[DIR_MMM])[kbsw ]; - (Dbuff.f[DIR_PMM])[k] = (D.f[DIR_PMM])[kbse ]; - (Dbuff.f[DIR_MPM])[k] = (D.f[DIR_MPM])[kbnw ]; - } -} -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -__global__ void setRecvFsPre27(real* DD, - real* bufferFs, - int* recvIndex, - int buffmax, - unsigned int* neighborX, - unsigned int* neighborY, - unsigned int* neighborZ, - unsigned long long 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 - - const unsigned nx = blockDim.x; - const unsigned ny = gridDim.x; - - const unsigned k = nx*(ny*z + y) + x; - ////////////////////////////////////////////////////////////////////////// - - if(k<buffmax) - { - //////////////////////////////////////////////////////////////////////////////// - //set index - unsigned int kIndex = recvIndex[k]; - unsigned int kzero = kIndex; - unsigned int ke = kIndex; - unsigned int kw = neighborX[kIndex]; - unsigned int kn = kIndex; - unsigned int ks = neighborY[kIndex]; - unsigned int kt = kIndex; - unsigned int kb = neighborZ[kIndex]; - unsigned int ksw = neighborY[kw]; - unsigned int kne = kIndex; - unsigned int kse = ks; - unsigned int knw = kw; - unsigned int kbw = neighborZ[kw]; - unsigned int kte = kIndex; - unsigned int kbe = kb; - unsigned int ktw = kw; - unsigned int kbs = neighborZ[ks]; - unsigned int ktn = kIndex; - 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 = kIndex; - unsigned int kbsw = neighborZ[ksw]; - //////////////////////////////////////////////////////////////////////////////// - //set Pointer for Fs - Distributions27 D; - if (isEvenTimestep==true) - { - D.f[DIR_P00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_M00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_PMP * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_MPM * numberOfLBnodes]; - } - else - { - D.f[DIR_M00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_P00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_MPM * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_PMP * numberOfLBnodes]; - } - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //set Pointer for Buffer Fs - Distributions27 Dbuff; - Dbuff.f[DIR_P00] = &bufferFs[DIR_P00 * buffmax]; - Dbuff.f[DIR_M00] = &bufferFs[DIR_M00 * buffmax]; - Dbuff.f[DIR_0P0] = &bufferFs[DIR_0P0 * buffmax]; - Dbuff.f[DIR_0M0] = &bufferFs[DIR_0M0 * buffmax]; - Dbuff.f[DIR_00P] = &bufferFs[DIR_00P * buffmax]; - Dbuff.f[DIR_00M] = &bufferFs[DIR_00M * buffmax]; - Dbuff.f[DIR_PP0] = &bufferFs[DIR_PP0 * buffmax]; - Dbuff.f[DIR_MM0] = &bufferFs[DIR_MM0 * buffmax]; - Dbuff.f[DIR_PM0] = &bufferFs[DIR_PM0 * buffmax]; - Dbuff.f[DIR_MP0] = &bufferFs[DIR_MP0 * buffmax]; - Dbuff.f[DIR_P0P] = &bufferFs[DIR_P0P * buffmax]; - Dbuff.f[DIR_M0M] = &bufferFs[DIR_M0M * buffmax]; - Dbuff.f[DIR_P0M] = &bufferFs[DIR_P0M * buffmax]; - Dbuff.f[DIR_M0P] = &bufferFs[DIR_M0P * buffmax]; - Dbuff.f[DIR_0PP] = &bufferFs[DIR_0PP * buffmax]; - Dbuff.f[DIR_0MM] = &bufferFs[DIR_0MM * buffmax]; - Dbuff.f[DIR_0PM] = &bufferFs[DIR_0PM * buffmax]; - Dbuff.f[DIR_0MP] = &bufferFs[DIR_0MP * buffmax]; - Dbuff.f[DIR_000] = &bufferFs[DIR_000 * buffmax]; - Dbuff.f[DIR_PPP] = &bufferFs[DIR_PPP * buffmax]; - Dbuff.f[DIR_MMP] = &bufferFs[DIR_MMP * buffmax]; - Dbuff.f[DIR_PMP] = &bufferFs[DIR_PMP * buffmax]; - Dbuff.f[DIR_MPP] = &bufferFs[DIR_MPP * buffmax]; - Dbuff.f[DIR_PPM] = &bufferFs[DIR_PPM * buffmax]; - Dbuff.f[DIR_MMM] = &bufferFs[DIR_MMM * buffmax]; - Dbuff.f[DIR_PMM] = &bufferFs[DIR_PMM * buffmax]; - Dbuff.f[DIR_MPM] = &bufferFs[DIR_MPM * buffmax]; - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //copy from buffer - (D.f[DIR_P00])[ke ] = (Dbuff.f[DIR_P00])[k]; - (D.f[DIR_M00])[kw ] = (Dbuff.f[DIR_M00])[k]; - (D.f[DIR_0P0])[kn ] = (Dbuff.f[DIR_0P0])[k]; - (D.f[DIR_0M0])[ks ] = (Dbuff.f[DIR_0M0])[k]; - (D.f[DIR_00P])[kt ] = (Dbuff.f[DIR_00P])[k]; - (D.f[DIR_00M])[kb ] = (Dbuff.f[DIR_00M])[k]; - (D.f[DIR_PP0])[kne ] = (Dbuff.f[DIR_PP0])[k]; - (D.f[DIR_MM0])[ksw ] = (Dbuff.f[DIR_MM0])[k]; - (D.f[DIR_PM0])[kse ] = (Dbuff.f[DIR_PM0])[k]; - (D.f[DIR_MP0])[knw ] = (Dbuff.f[DIR_MP0])[k]; - (D.f[DIR_P0P])[kte ] = (Dbuff.f[DIR_P0P])[k]; - (D.f[DIR_M0M])[kbw ] = (Dbuff.f[DIR_M0M])[k]; - (D.f[DIR_P0M])[kbe ] = (Dbuff.f[DIR_P0M])[k]; - (D.f[DIR_M0P])[ktw ] = (Dbuff.f[DIR_M0P])[k]; - (D.f[DIR_0PP])[ktn ] = (Dbuff.f[DIR_0PP])[k]; - (D.f[DIR_0MM])[kbs ] = (Dbuff.f[DIR_0MM])[k]; - (D.f[DIR_0PM])[kbn ] = (Dbuff.f[DIR_0PM])[k]; - (D.f[DIR_0MP])[kts ] = (Dbuff.f[DIR_0MP])[k]; - (D.f[DIR_000])[kzero] = (Dbuff.f[DIR_000])[k]; - (D.f[DIR_PPP])[ktne ] = (Dbuff.f[DIR_PPP])[k]; - (D.f[DIR_MMP])[ktsw ] = (Dbuff.f[DIR_MMP])[k]; - (D.f[DIR_PMP])[ktse ] = (Dbuff.f[DIR_PMP])[k]; - (D.f[DIR_MPP])[ktnw ] = (Dbuff.f[DIR_MPP])[k]; - (D.f[DIR_PPM])[kbne ] = (Dbuff.f[DIR_PPM])[k]; - (D.f[DIR_MMM])[kbsw ] = (Dbuff.f[DIR_MMM])[k]; - (D.f[DIR_PMM])[kbse ] = (Dbuff.f[DIR_PMM])[k]; - (D.f[DIR_MPM])[kbnw ] = (Dbuff.f[DIR_MPM])[k]; - } -} -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -__global__ void getSendGsF3( - real* G6, - real* bufferGs, - int* sendIndex, - int buffmax, - unsigned int* neighborX, - unsigned int* neighborY, - unsigned int* neighborZ, - unsigned long long 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 - - const unsigned nx = blockDim.x; - const unsigned ny = gridDim.x; - - const unsigned k = nx*(ny*z + y) + x; - ////////////////////////////////////////////////////////////////////////// - - if (k < buffmax) - { - //////////////////////////////////////////////////////////////////////////////// - //set index - unsigned int kIndex = sendIndex[k]; - unsigned int kr = kIndex; - unsigned int kw = neighborX[kIndex]; - unsigned int ks = neighborY[kIndex]; - unsigned int kb = neighborZ[kIndex]; - //////////////////////////////////////////////////////////////////////////////// - //set Pointer for Gs - Distributions6 G; - if (isEvenTimestep) - { - G.g[DIR_P00] = &G6[DIR_P00 * numberOfLBnodes]; - G.g[DIR_M00] = &G6[DIR_M00 * numberOfLBnodes]; - G.g[DIR_0P0] = &G6[DIR_0P0 * numberOfLBnodes]; - G.g[DIR_0M0] = &G6[DIR_0M0 * numberOfLBnodes]; - G.g[DIR_00P] = &G6[DIR_00P * numberOfLBnodes]; - G.g[DIR_00M] = &G6[DIR_00M * numberOfLBnodes]; - } - else - { - G.g[DIR_M00] = &G6[DIR_P00 * numberOfLBnodes]; - G.g[DIR_P00] = &G6[DIR_M00 * numberOfLBnodes]; - G.g[DIR_0M0] = &G6[DIR_0P0 * numberOfLBnodes]; - G.g[DIR_0P0] = &G6[DIR_0M0 * numberOfLBnodes]; - G.g[DIR_00M] = &G6[DIR_00P * numberOfLBnodes]; - G.g[DIR_00P] = &G6[DIR_00M * numberOfLBnodes]; - } - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //set Pointer for Buffer Gs - Distributions6 Dbuff; - Dbuff.g[DIR_P00] = &bufferGs[DIR_P00 * buffmax]; - Dbuff.g[DIR_M00] = &bufferGs[DIR_M00 * buffmax]; - Dbuff.g[DIR_0P0] = &bufferGs[DIR_0P0 * buffmax]; - Dbuff.g[DIR_0M0] = &bufferGs[DIR_0M0 * buffmax]; - Dbuff.g[DIR_00P] = &bufferGs[DIR_00P * buffmax]; - Dbuff.g[DIR_00M] = &bufferGs[DIR_00M * buffmax]; - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //write Gs to buffer - (Dbuff.g[DIR_P00])[k] = (G.g[DIR_M00])[kw]; - (Dbuff.g[DIR_M00])[k] = (G.g[DIR_P00])[kr]; - (Dbuff.g[DIR_0P0])[k] = (G.g[DIR_0M0])[ks]; - (Dbuff.g[DIR_0M0])[k] = (G.g[DIR_0P0])[kr]; - (Dbuff.g[DIR_00P])[k] = (G.g[DIR_00M])[kb]; - (Dbuff.g[DIR_00M])[k] = (G.g[DIR_00P])[kr]; - } -} -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -__global__ void setRecvGsF3( - real* G6, - real* bufferGs, - int* recvIndex, - int buffmax, - unsigned int* neighborX, - unsigned int* neighborY, - unsigned int* neighborZ, - unsigned long long 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 - - const unsigned nx = blockDim.x; - const unsigned ny = gridDim.x; - - const unsigned k = nx*(ny*z + y) + x; - ////////////////////////////////////////////////////////////////////////// - - if (k < buffmax) - { - //////////////////////////////////////////////////////////////////////////////// - //set index - unsigned int kIndex = recvIndex[k]; - unsigned int kr = kIndex; - unsigned int kw = neighborX[kIndex]; - unsigned int ks = neighborY[kIndex]; - unsigned int kb = neighborZ[kIndex]; - //////////////////////////////////////////////////////////////////////////////// - //set Pointer for Gs - Distributions6 G; - if (isEvenTimestep) - { - G.g[DIR_P00] = &G6[DIR_P00 * numberOfLBnodes]; - G.g[DIR_M00] = &G6[DIR_M00 * numberOfLBnodes]; - G.g[DIR_0P0] = &G6[DIR_0P0 * numberOfLBnodes]; - G.g[DIR_0M0] = &G6[DIR_0M0 * numberOfLBnodes]; - G.g[DIR_00P] = &G6[DIR_00P * numberOfLBnodes]; - G.g[DIR_00M] = &G6[DIR_00M * numberOfLBnodes]; - } - else - { - G.g[DIR_M00] = &G6[DIR_P00 * numberOfLBnodes]; - G.g[DIR_P00] = &G6[DIR_M00 * numberOfLBnodes]; - G.g[DIR_0M0] = &G6[DIR_0P0 * numberOfLBnodes]; - G.g[DIR_0P0] = &G6[DIR_0M0 * numberOfLBnodes]; - G.g[DIR_00M] = &G6[DIR_00P * numberOfLBnodes]; - G.g[DIR_00P] = &G6[DIR_00M * numberOfLBnodes]; - } - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //set Pointer for Buffer Gs - Distributions6 Dbuff; - Dbuff.g[DIR_P00] = &bufferGs[DIR_P00 * buffmax]; - Dbuff.g[DIR_M00] = &bufferGs[DIR_M00 * buffmax]; - Dbuff.g[DIR_0P0] = &bufferGs[DIR_0P0 * buffmax]; - Dbuff.g[DIR_0M0] = &bufferGs[DIR_0M0 * buffmax]; - Dbuff.g[DIR_00P] = &bufferGs[DIR_00P * buffmax]; - Dbuff.g[DIR_00M] = &bufferGs[DIR_00M * buffmax]; - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //write buffer to Gs - (G.g[DIR_M00])[kw] = (Dbuff.g[DIR_P00])[k]; - (G.g[DIR_P00])[kr] = (Dbuff.g[DIR_M00])[k]; - (G.g[DIR_0M0])[ks] = (Dbuff.g[DIR_0P0])[k]; - (G.g[DIR_0P0])[kr] = (Dbuff.g[DIR_0M0])[k]; - (G.g[DIR_00M])[kb] = (Dbuff.g[DIR_00P])[k]; - (G.g[DIR_00P])[kr] = (Dbuff.g[DIR_00M])[k]; - } -} -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/src/gpu/VirtualFluids_GPU/GPU/NoSlipBCs27.cu b/src/gpu/VirtualFluids_GPU/GPU/NoSlipBCs27.cu deleted file mode 100644 index 0013ae977d41cb52ce163a53f2f1342d4d7b4c73..0000000000000000000000000000000000000000 --- a/src/gpu/VirtualFluids_GPU/GPU/NoSlipBCs27.cu +++ /dev/null @@ -1,2548 +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 NoSlipBCs27.cu -//! \ingroup GPU -//! \author Martin Schoenherr, Anna Wellmann -//====================================================================================== -#include "LBM/LB.h" -#include "lbm/constants/D3Q27.h" -#include <basics/constants/NumericConstants.h> -#include "LBM/GPUHelperFunctions/KernelUtilities.h" - -using namespace vf::basics::constant; -using namespace vf::lbm::dir; -using namespace vf::gpu; - -////////////////////////////////////////////////////////////////////////////// -__global__ void QDevice3rdMomentsComp27( - real* distributions, - int* subgridDistanceIndices, - real* subgridDistances, - unsigned int numberOfBCnodes, - real omega, - unsigned int* neighborX, - unsigned int* neighborY, - unsigned int* neighborZ, - unsigned long long numberOfLBnodes, - bool isEvenTimestep) -{ - Distributions27 D; - if (isEvenTimestep==true) - { - D.f[DIR_P00] = &distributions[DIR_P00 * numberOfLBnodes]; - D.f[DIR_M00] = &distributions[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0P0] = &distributions[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0M0] = &distributions[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00P] = &distributions[DIR_00P * numberOfLBnodes]; - D.f[DIR_00M] = &distributions[DIR_00M * numberOfLBnodes]; - D.f[DIR_PP0] = &distributions[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_MM0] = &distributions[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &distributions[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &distributions[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_P0P] = &distributions[DIR_P0P * numberOfLBnodes]; - D.f[DIR_M0M] = &distributions[DIR_M0M * numberOfLBnodes]; - D.f[DIR_P0M] = &distributions[DIR_P0M * numberOfLBnodes]; - D.f[DIR_M0P] = &distributions[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0PP] = &distributions[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0MM] = &distributions[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0PM] = &distributions[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0MP] = &distributions[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &distributions[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &distributions[DIR_PPP * numberOfLBnodes]; - D.f[DIR_MMP] = &distributions[DIR_MMP * numberOfLBnodes]; - D.f[DIR_PMP] = &distributions[DIR_PMP * numberOfLBnodes]; - D.f[DIR_MPP] = &distributions[DIR_MPP * numberOfLBnodes]; - D.f[DIR_PPM] = &distributions[DIR_PPM * numberOfLBnodes]; - D.f[DIR_MMM] = &distributions[DIR_MMM * numberOfLBnodes]; - D.f[DIR_PMM] = &distributions[DIR_PMM * numberOfLBnodes]; - D.f[DIR_MPM] = &distributions[DIR_MPM * numberOfLBnodes]; - } - else - { - D.f[DIR_M00] = &distributions[DIR_P00 * numberOfLBnodes]; - D.f[DIR_P00] = &distributions[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0M0] = &distributions[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0P0] = &distributions[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00M] = &distributions[DIR_00P * numberOfLBnodes]; - D.f[DIR_00P] = &distributions[DIR_00M * numberOfLBnodes]; - D.f[DIR_MM0] = &distributions[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_PP0] = &distributions[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &distributions[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &distributions[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_M0M] = &distributions[DIR_P0P * numberOfLBnodes]; - D.f[DIR_P0P] = &distributions[DIR_M0M * numberOfLBnodes]; - D.f[DIR_M0P] = &distributions[DIR_P0M * numberOfLBnodes]; - D.f[DIR_P0M] = &distributions[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0MM] = &distributions[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0PP] = &distributions[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0MP] = &distributions[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0PM] = &distributions[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &distributions[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &distributions[DIR_MMM * numberOfLBnodes]; - D.f[DIR_MMP] = &distributions[DIR_PPM * numberOfLBnodes]; - D.f[DIR_PMP] = &distributions[DIR_MPM * numberOfLBnodes]; - D.f[DIR_MPP] = &distributions[DIR_PMM * numberOfLBnodes]; - D.f[DIR_PPM] = &distributions[DIR_MMP * numberOfLBnodes]; - D.f[DIR_MMM] = &distributions[DIR_PPP * numberOfLBnodes]; - D.f[DIR_PMM] = &distributions[DIR_MPP * numberOfLBnodes]; - D.f[DIR_MPM] = &distributions[DIR_PMP * numberOfLBnodes]; - } - //////////////////////////////////////////////////////////////////////////////// - const unsigned x = threadIdx.x; // Globaler x-Index - const unsigned y = blockIdx.x; // Globaler y-Index - const unsigned z = blockIdx.y; // Globaler z-Index - - const unsigned nx = blockDim.x; - const unsigned ny = gridDim.x; - - const unsigned k = nx*(ny*z + y) + x; - ////////////////////////////////////////////////////////////////////////// - - if(k < 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 = &subgridDistances[DIR_P00 * numberOfBCnodes]; - q_dirW = &subgridDistances[DIR_M00 * numberOfBCnodes]; - q_dirN = &subgridDistances[DIR_0P0 * numberOfBCnodes]; - q_dirS = &subgridDistances[DIR_0M0 * numberOfBCnodes]; - q_dirT = &subgridDistances[DIR_00P * numberOfBCnodes]; - q_dirB = &subgridDistances[DIR_00M * numberOfBCnodes]; - q_dirNE = &subgridDistances[DIR_PP0 * numberOfBCnodes]; - q_dirSW = &subgridDistances[DIR_MM0 * numberOfBCnodes]; - q_dirSE = &subgridDistances[DIR_PM0 * numberOfBCnodes]; - q_dirNW = &subgridDistances[DIR_MP0 * numberOfBCnodes]; - q_dirTE = &subgridDistances[DIR_P0P * numberOfBCnodes]; - q_dirBW = &subgridDistances[DIR_M0M * numberOfBCnodes]; - q_dirBE = &subgridDistances[DIR_P0M * numberOfBCnodes]; - q_dirTW = &subgridDistances[DIR_M0P * numberOfBCnodes]; - q_dirTN = &subgridDistances[DIR_0PP * numberOfBCnodes]; - q_dirBS = &subgridDistances[DIR_0MM * numberOfBCnodes]; - q_dirBN = &subgridDistances[DIR_0PM * numberOfBCnodes]; - q_dirTS = &subgridDistances[DIR_0MP * numberOfBCnodes]; - q_dirTNE = &subgridDistances[DIR_PPP * numberOfBCnodes]; - q_dirTSW = &subgridDistances[DIR_MMP * numberOfBCnodes]; - q_dirTSE = &subgridDistances[DIR_PMP * numberOfBCnodes]; - q_dirTNW = &subgridDistances[DIR_MPP * numberOfBCnodes]; - q_dirBNE = &subgridDistances[DIR_PPM * numberOfBCnodes]; - q_dirBSW = &subgridDistances[DIR_MMM * numberOfBCnodes]; - q_dirBSE = &subgridDistances[DIR_PMM * numberOfBCnodes]; - q_dirBNW = &subgridDistances[DIR_MPM * numberOfBCnodes]; - //////////////////////////////////////////////////////////////////////////////// - //index - unsigned int numberOfNodesK = subgridDistanceIndices[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]; - unsigned int ksw = neighborY[kw]; - unsigned int kne = numberOfNodesK; - unsigned int kse = ks; - unsigned int knw = kw; - unsigned int kbw = neighborZ[kw]; - unsigned int kte = numberOfNodesK; - unsigned int kbe = kb; - unsigned int ktw = kw; - unsigned int kbs = neighborZ[ks]; - unsigned int ktn = numberOfNodesK; - 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 = numberOfNodesK; - 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[DIR_P00])[ke ]; - f_E = (D.f[DIR_M00])[kw ]; - f_S = (D.f[DIR_0P0])[kn ]; - f_N = (D.f[DIR_0M0])[ks ]; - f_B = (D.f[DIR_00P])[kt ]; - f_T = (D.f[DIR_00M])[kb ]; - f_SW = (D.f[DIR_PP0])[kne ]; - f_NE = (D.f[DIR_MM0])[ksw ]; - f_NW = (D.f[DIR_PM0])[kse ]; - f_SE = (D.f[DIR_MP0])[knw ]; - f_BW = (D.f[DIR_P0P])[kte ]; - f_TE = (D.f[DIR_M0M])[kbw ]; - f_TW = (D.f[DIR_P0M])[kbe ]; - f_BE = (D.f[DIR_M0P])[ktw ]; - f_BS = (D.f[DIR_0PP])[ktn ]; - f_TN = (D.f[DIR_0MM])[kbs ]; - f_TS = (D.f[DIR_0PM])[kbn ]; - f_BN = (D.f[DIR_0MP])[kts ]; - f_BSW = (D.f[DIR_PPP])[ktne ]; - f_BNE = (D.f[DIR_MMP])[ktsw ]; - f_BNW = (D.f[DIR_PMP])[ktse ]; - f_BSE = (D.f[DIR_MPP])[ktnw ]; - f_TSW = (D.f[DIR_PPM])[kbne ]; - f_TNE = (D.f[DIR_MMM])[kbsw ]; - f_TNW = (D.f[DIR_PMM])[kbse ]; - f_TSE = (D.f[DIR_MPM])[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[DIR_000])[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); - - - 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 cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3) * (c1o1 + drho); - - ////////////////////////////////////////////////////////////////////////// - if (isEvenTimestep==false) - { - D.f[DIR_P00] = &distributions[DIR_P00 * numberOfLBnodes]; - D.f[DIR_M00] = &distributions[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0P0] = &distributions[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0M0] = &distributions[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00P] = &distributions[DIR_00P * numberOfLBnodes]; - D.f[DIR_00M] = &distributions[DIR_00M * numberOfLBnodes]; - D.f[DIR_PP0] = &distributions[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_MM0] = &distributions[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &distributions[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &distributions[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_P0P] = &distributions[DIR_P0P * numberOfLBnodes]; - D.f[DIR_M0M] = &distributions[DIR_M0M * numberOfLBnodes]; - D.f[DIR_P0M] = &distributions[DIR_P0M * numberOfLBnodes]; - D.f[DIR_M0P] = &distributions[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0PP] = &distributions[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0MM] = &distributions[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0PM] = &distributions[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0MP] = &distributions[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &distributions[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &distributions[DIR_PPP * numberOfLBnodes]; - D.f[DIR_MMP] = &distributions[DIR_MMP * numberOfLBnodes]; - D.f[DIR_PMP] = &distributions[DIR_PMP * numberOfLBnodes]; - D.f[DIR_MPP] = &distributions[DIR_MPP * numberOfLBnodes]; - D.f[DIR_PPM] = &distributions[DIR_PPM * numberOfLBnodes]; - D.f[DIR_MMM] = &distributions[DIR_MMM * numberOfLBnodes]; - D.f[DIR_PMM] = &distributions[DIR_PMM * numberOfLBnodes]; - D.f[DIR_MPM] = &distributions[DIR_MPM * numberOfLBnodes]; - } - else - { - D.f[DIR_M00] = &distributions[DIR_P00 * numberOfLBnodes]; - D.f[DIR_P00] = &distributions[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0M0] = &distributions[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0P0] = &distributions[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00M] = &distributions[DIR_00P * numberOfLBnodes]; - D.f[DIR_00P] = &distributions[DIR_00M * numberOfLBnodes]; - D.f[DIR_MM0] = &distributions[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_PP0] = &distributions[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &distributions[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &distributions[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_M0M] = &distributions[DIR_P0P * numberOfLBnodes]; - D.f[DIR_P0P] = &distributions[DIR_M0M * numberOfLBnodes]; - D.f[DIR_M0P] = &distributions[DIR_P0M * numberOfLBnodes]; - D.f[DIR_P0M] = &distributions[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0MM] = &distributions[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0PP] = &distributions[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0MP] = &distributions[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0PM] = &distributions[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &distributions[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &distributions[DIR_MMM * numberOfLBnodes]; - D.f[DIR_MMP] = &distributions[DIR_PPM * numberOfLBnodes]; - D.f[DIR_PMP] = &distributions[DIR_MPM * numberOfLBnodes]; - D.f[DIR_MPP] = &distributions[DIR_PMM * numberOfLBnodes]; - D.f[DIR_PPM] = &distributions[DIR_MMP * numberOfLBnodes]; - D.f[DIR_MMM] = &distributions[DIR_PPP * numberOfLBnodes]; - D.f[DIR_PMM] = &distributions[DIR_MPP * numberOfLBnodes]; - D.f[DIR_MPM] = &distributions[DIR_PMP * numberOfLBnodes]; - } - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //Test - //(D.f[DIR_000])[k]=c1o10; - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - //ToDo anders klammern !!!!!! - - q = q_dirE[k]; - if (q>=c0o1 && q<=c1o1) - { - m3 = f_E - f_W - c2o1 * drho * c2o27 * (c3o1*( vx1 )); - feq=c2o27* (drho/*+three*( vx1 )*/+c9o2*( vx1 )*( vx1 ) * (c1o1 + drho)-cu_sq); - (D.f[DIR_M00])[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[DIR_M00])[kw]=zero; - } - - q = q_dirW[k]; - if (q>=c0o1 && q<=c1o1) - { - m3 = f_W - f_E - c2o1 * drho * c2o27 * (c3o1*(-vx1 )); - feq=c2o27* (drho/*+three*(-vx1 )*/+c9o2*(-vx1 )*(-vx1 ) * (c1o1 + drho)-cu_sq); - (D.f[DIR_P00])[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[DIR_P00])[ke]=zero; - } - - q = q_dirN[k]; - if (q>=c0o1 && q<=c1o1) - { - m3 = f_N - f_S - c2o1 * drho * c2o27 * (c3o1*( vx2 )); - feq=c2o27* (drho/*+three*( vx2 )*/+c9o2*( vx2 )*( vx2 ) * (c1o1 + drho)-cu_sq); - (D.f[DIR_0M0])[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[DIR_0M0])[ks]=zero; - } - - q = q_dirS[k]; - if (q>=c0o1 && q<=c1o1) - { - m3 = f_S - f_N - c2o1 * drho * c2o27 * (c3o1*( -vx2 )); - feq=c2o27* (drho/*+three*( -vx2 )*/+c9o2*( -vx2 )*( -vx2 ) * (c1o1 + drho)-cu_sq); - (D.f[DIR_0P0])[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[DIR_0P0])[kn]=zero; - } - - q = q_dirT[k]; - if (q>=c0o1 && q<=c1o1) - { - m3 = f_T - f_B - c2o1 * drho * c2o27 * (c3o1*( vx3)); - feq=c2o27* (drho/*+three*( vx3)*/+c9o2*( vx3)*( vx3) * (c1o1 + drho)-cu_sq); - (D.f[DIR_00M])[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[DIR_00M])[kb]=one; - } - - q = q_dirB[k]; - if (q>=c0o1 && q<=c1o1) - { - m3 = f_B - f_T - c2o1 * drho * c2o27 * (c3o1*( -vx3)); - feq=c2o27* (drho/*+three*( -vx3)*/+c9o2*( -vx3)*( -vx3) * (c1o1 + drho)-cu_sq); - (D.f[DIR_00P])[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[DIR_00P])[kt]=zero; - } - - q = q_dirNE[k]; - if (q>=c0o1 && q<=c1o1) - { - 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[DIR_MM0])[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[DIR_MM0])[ksw]=zero; - } - - q = q_dirSW[k]; - if (q>=c0o1 && q<=c1o1) - { - 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[DIR_PP0])[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[DIR_PP0])[kne]=zero; - } - - q = q_dirSE[k]; - if (q>=c0o1 && q<=c1o1) - { - 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[DIR_MP0])[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[DIR_MP0])[knw]=zero; - } - - q = q_dirNW[k]; - if (q>=c0o1 && q<=c1o1) - { - 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[DIR_PM0])[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[DIR_PM0])[kse]=zero; - } - - q = q_dirTE[k]; - if (q>=c0o1 && q<=c1o1) - { - 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[DIR_M0M])[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[DIR_M0M])[kbw]=zero; - } - - q = q_dirBW[k]; - if (q>=c0o1 && q<=c1o1) - { - 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[DIR_P0P])[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[DIR_P0P])[kte]=zero; - } - - q = q_dirBE[k]; - if (q>=c0o1 && q<=c1o1) - { - 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[DIR_M0P])[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[DIR_M0P])[ktw]=zero; - } - - q = q_dirTW[k]; - if (q>=c0o1 && q<=c1o1) - { - 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[DIR_P0M])[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[DIR_P0M])[kbe]=zero; - } - - q = q_dirTN[k]; - if (q>=c0o1 && q<=c1o1) - { - 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[DIR_0MM])[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[DIR_0MM])[kbs]=zero; - } - - q = q_dirBS[k]; - if (q>=c0o1 && q<=c1o1) - { - 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[DIR_0PP])[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[DIR_0PP])[ktn]=zero; - } - - q = q_dirBN[k]; - if (q>=c0o1 && q<=c1o1) - { - 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[DIR_0MP])[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[DIR_0MP])[kts]=zero; - } - - q = q_dirTS[k]; - if (q>=c0o1 && q<=c1o1) - { - 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[DIR_0PM])[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[DIR_0PM])[kbn]=zero; - } - - q = q_dirTNE[k]; - if (q>=c0o1 && q<=c1o1) - { - 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[DIR_MMM])[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[DIR_MMM])[kbsw]=zero; - } - - q = q_dirBSW[k]; - if (q>=c0o1 && q<=c1o1) - { - 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[DIR_PPP])[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[DIR_PPP])[ktne]=zero; - } - - q = q_dirBNE[k]; - if (q>=c0o1 && q<=c1o1) - { - 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[DIR_MMP])[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[DIR_MMP])[ktsw]=zero; - } - - q = q_dirTSW[k]; - if (q>=c0o1 && q<=c1o1) - { - 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[DIR_PPM])[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[DIR_PPM])[kbne]=zero; - } - - q = q_dirTSE[k]; - if (q>=c0o1 && q<=c1o1) - { - 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[DIR_MPM])[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[DIR_MPM])[kbnw]=zero; - } - - q = q_dirBNW[k]; - if (q>=c0o1 && q<=c1o1) - { - 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[DIR_PMP])[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[DIR_PMP])[ktse]=zero; - } - - q = q_dirBSE[k]; - if (q>=c0o1 && q<=c1o1) - { - 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[DIR_MPP])[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[DIR_MPP])[ktnw]=zero; - } - - q = q_dirTNW[k]; - if (q>=c0o1 && q<=c1o1) - { - 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[DIR_PMM])[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[DIR_PMM])[kbse]=zero; - } - } -} -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -////////////////////////////////////////////////////////////////////////////// -__global__ void QDeviceIncompHighNu27( - real* DD, - int* k_Q, - real* QQ, - unsigned int numberOfBCnodes, - real om1, - unsigned int* neighborX, - unsigned int* neighborY, - unsigned int* neighborZ, - unsigned long long numberOfLBnodes, - bool isEvenTimestep) -{ - Distributions27 D; - if (isEvenTimestep==true) - { - D.f[DIR_P00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_M00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_PMP * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_MPM * numberOfLBnodes]; - } - else - { - D.f[DIR_M00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_P00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_MPM * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_PMP * numberOfLBnodes]; - } - //////////////////////////////////////////////////////////////////////////////// - const unsigned x = threadIdx.x; // Globaler x-Index - const unsigned y = blockIdx.x; // Globaler y-Index - const unsigned z = blockIdx.y; // Globaler z-Index - - const unsigned nx = blockDim.x; - const unsigned ny = gridDim.x; - - const unsigned k = nx*(ny*z + y) + x; - ////////////////////////////////////////////////////////////////////////// - - if(k<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[DIR_P00 * numberOfBCnodes]; - q_dirW = &QQ[DIR_M00 * numberOfBCnodes]; - q_dirN = &QQ[DIR_0P0 * numberOfBCnodes]; - q_dirS = &QQ[DIR_0M0 * numberOfBCnodes]; - q_dirT = &QQ[DIR_00P * numberOfBCnodes]; - q_dirB = &QQ[DIR_00M * numberOfBCnodes]; - q_dirNE = &QQ[DIR_PP0 * numberOfBCnodes]; - q_dirSW = &QQ[DIR_MM0 * numberOfBCnodes]; - q_dirSE = &QQ[DIR_PM0 * numberOfBCnodes]; - q_dirNW = &QQ[DIR_MP0 * numberOfBCnodes]; - q_dirTE = &QQ[DIR_P0P * numberOfBCnodes]; - q_dirBW = &QQ[DIR_M0M * numberOfBCnodes]; - q_dirBE = &QQ[DIR_P0M * numberOfBCnodes]; - q_dirTW = &QQ[DIR_M0P * numberOfBCnodes]; - q_dirTN = &QQ[DIR_0PP * numberOfBCnodes]; - q_dirBS = &QQ[DIR_0MM * numberOfBCnodes]; - q_dirBN = &QQ[DIR_0PM * numberOfBCnodes]; - q_dirTS = &QQ[DIR_0MP * numberOfBCnodes]; - q_dirTNE = &QQ[DIR_PPP * numberOfBCnodes]; - q_dirTSW = &QQ[DIR_MMP * numberOfBCnodes]; - q_dirTSE = &QQ[DIR_PMP * numberOfBCnodes]; - q_dirTNW = &QQ[DIR_MPP * numberOfBCnodes]; - q_dirBNE = &QQ[DIR_PPM * numberOfBCnodes]; - q_dirBSW = &QQ[DIR_MMM * numberOfBCnodes]; - q_dirBSE = &QQ[DIR_PMM * numberOfBCnodes]; - q_dirBNW = &QQ[DIR_MPM * 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]; - unsigned int ksw = neighborY[kw]; - unsigned int kne = numberOfNodesK; - unsigned int kse = ks; - unsigned int knw = kw; - unsigned int kbw = neighborZ[kw]; - unsigned int kte = numberOfNodesK; - unsigned int kbe = kb; - unsigned int ktw = kw; - unsigned int kbs = neighborZ[ks]; - unsigned int ktn = numberOfNodesK; - 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 = numberOfNodesK; - 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_E = (D.f[DIR_P00])[ke ]; - f_W = (D.f[DIR_M00])[kw ]; - f_N = (D.f[DIR_0P0])[kn ]; - f_S = (D.f[DIR_0M0])[ks ]; - f_T = (D.f[DIR_00P])[kt ]; - f_B = (D.f[DIR_00M])[kb ]; - f_NE = (D.f[DIR_PP0])[kne ]; - f_SW = (D.f[DIR_MM0])[ksw ]; - f_SE = (D.f[DIR_PM0])[kse ]; - f_NW = (D.f[DIR_MP0])[knw ]; - f_TE = (D.f[DIR_P0P])[kte ]; - f_BW = (D.f[DIR_M0M])[kbw ]; - f_BE = (D.f[DIR_P0M])[kbe ]; - f_TW = (D.f[DIR_M0P])[ktw ]; - f_TN = (D.f[DIR_0PP])[ktn ]; - f_BS = (D.f[DIR_0MM])[kbs ]; - f_BN = (D.f[DIR_0PM])[kbn ]; - f_TS = (D.f[DIR_0MP])[kts ]; - f_TNE = (D.f[DIR_PPP])[ktne ]; - f_TSW = (D.f[DIR_MMP])[ktsw ]; - f_TSE = (D.f[DIR_PMP])[ktse ]; - f_TNW = (D.f[DIR_MPP])[ktnw ]; - f_BNE = (D.f[DIR_PPM])[kbne ]; - f_BSW = (D.f[DIR_MMM])[kbsw ]; - f_BSE = (D.f[DIR_PMM])[kbse ]; - f_BNW = (D.f[DIR_MPM])[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[DIR_000])[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));// / (one + 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));// / (one + 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));// / (one + drho); - - real cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3);// * (one + drho); - - ////////////////////////////////////////////////////////////////////////// - if (isEvenTimestep==false) - { - D.f[DIR_P00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_M00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_PMP * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_MPM * numberOfLBnodes]; - } - else - { - D.f[DIR_M00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_P00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_MPM * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_PMP * numberOfLBnodes]; - } - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //Test - //(D.f[DIR_000])[k]=c1o10; - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real VeloX = c0o1; - real VeloY = c0o1; - real VeloZ = c0o1; - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - //ToDo anders klammern !!!!!! - - q = q_dirE[k]; - if (q>=c0o1 && q<=c1o1) - { - feq=c2o27* (drho/*+three*( vx1 )*/+c9o2*( vx1 )*( vx1 ) /** (one + drho)*/-cu_sq); - (D.f[DIR_M00])[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[DIR_P00])[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[DIR_0M0])[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[DIR_0P0])[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[DIR_00M])[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[DIR_00P])[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[DIR_MM0])[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[DIR_PP0])[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[DIR_MP0])[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[DIR_PM0])[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[DIR_M0M])[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[DIR_P0P])[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[DIR_M0P])[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[DIR_P0M])[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[DIR_0MM])[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[DIR_0PP])[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[DIR_0MP])[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[DIR_0PM])[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[DIR_MMM])[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[DIR_PPP])[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[DIR_MMP])[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[DIR_PPM])[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[DIR_MPM])[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[DIR_PMP])[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[DIR_MPP])[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[DIR_PMM])[kbse]=((c1o1 - q) * f_TNW + q * ((f_TNW + f_BSE) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o216*(-VeloX+VeloY+VeloZ)) / (q + c1o1) ; - } - } -} -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -////////////////////////////////////////////////////////////////////////////// -__global__ void QDeviceCompHighNu27( - real* DD, - int* k_Q, - real* QQ, - unsigned int numberOfBCnodes, - real om1, - unsigned int* neighborX, - unsigned int* neighborY, - unsigned int* neighborZ, - unsigned long long numberOfLBnodes, - bool isEvenTimestep) -{ - Distributions27 D; - if (isEvenTimestep==true) - { - D.f[DIR_P00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_M00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_PMP * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_MPM * numberOfLBnodes]; - } - else - { - D.f[DIR_M00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_P00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_MPM * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_PMP * numberOfLBnodes]; - } - //////////////////////////////////////////////////////////////////////////////// - const unsigned x = threadIdx.x; // Globaler x-Index - const unsigned y = blockIdx.x; // Globaler y-Index - const unsigned z = blockIdx.y; // Globaler z-Index - - const unsigned nx = blockDim.x; - const unsigned ny = gridDim.x; - - const unsigned k = nx*(ny*z + y) + x; - ////////////////////////////////////////////////////////////////////////// - - if(k<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[DIR_P00 * numberOfBCnodes]; - q_dirW = &QQ[DIR_M00 * numberOfBCnodes]; - q_dirN = &QQ[DIR_0P0 * numberOfBCnodes]; - q_dirS = &QQ[DIR_0M0 * numberOfBCnodes]; - q_dirT = &QQ[DIR_00P * numberOfBCnodes]; - q_dirB = &QQ[DIR_00M * numberOfBCnodes]; - q_dirNE = &QQ[DIR_PP0 * numberOfBCnodes]; - q_dirSW = &QQ[DIR_MM0 * numberOfBCnodes]; - q_dirSE = &QQ[DIR_PM0 * numberOfBCnodes]; - q_dirNW = &QQ[DIR_MP0 * numberOfBCnodes]; - q_dirTE = &QQ[DIR_P0P * numberOfBCnodes]; - q_dirBW = &QQ[DIR_M0M * numberOfBCnodes]; - q_dirBE = &QQ[DIR_P0M * numberOfBCnodes]; - q_dirTW = &QQ[DIR_M0P * numberOfBCnodes]; - q_dirTN = &QQ[DIR_0PP * numberOfBCnodes]; - q_dirBS = &QQ[DIR_0MM * numberOfBCnodes]; - q_dirBN = &QQ[DIR_0PM * numberOfBCnodes]; - q_dirTS = &QQ[DIR_0MP * numberOfBCnodes]; - q_dirTNE = &QQ[DIR_PPP * numberOfBCnodes]; - q_dirTSW = &QQ[DIR_MMP * numberOfBCnodes]; - q_dirTSE = &QQ[DIR_PMP * numberOfBCnodes]; - q_dirTNW = &QQ[DIR_MPP * numberOfBCnodes]; - q_dirBNE = &QQ[DIR_PPM * numberOfBCnodes]; - q_dirBSW = &QQ[DIR_MMM * numberOfBCnodes]; - q_dirBSE = &QQ[DIR_PMM * numberOfBCnodes]; - q_dirBNW = &QQ[DIR_MPM * 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]; - unsigned int ksw = neighborY[kw]; - unsigned int kne = numberOfNodesK; - unsigned int kse = ks; - unsigned int knw = kw; - unsigned int kbw = neighborZ[kw]; - unsigned int kte = numberOfNodesK; - unsigned int kbe = kb; - unsigned int ktw = kw; - unsigned int kbs = neighborZ[ks]; - unsigned int ktn = numberOfNodesK; - 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 = numberOfNodesK; - 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_E = (D.f[DIR_P00])[ke ]; - f_W = (D.f[DIR_M00])[kw ]; - f_N = (D.f[DIR_0P0])[kn ]; - f_S = (D.f[DIR_0M0])[ks ]; - f_T = (D.f[DIR_00P])[kt ]; - f_B = (D.f[DIR_00M])[kb ]; - f_NE = (D.f[DIR_PP0])[kne ]; - f_SW = (D.f[DIR_MM0])[ksw ]; - f_SE = (D.f[DIR_PM0])[kse ]; - f_NW = (D.f[DIR_MP0])[knw ]; - f_TE = (D.f[DIR_P0P])[kte ]; - f_BW = (D.f[DIR_M0M])[kbw ]; - f_BE = (D.f[DIR_P0M])[kbe ]; - f_TW = (D.f[DIR_M0P])[ktw ]; - f_TN = (D.f[DIR_0PP])[ktn ]; - f_BS = (D.f[DIR_0MM])[kbs ]; - f_BN = (D.f[DIR_0PM])[kbn ]; - f_TS = (D.f[DIR_0MP])[kts ]; - f_TNE = (D.f[DIR_PPP])[ktne ]; - f_TSW = (D.f[DIR_MMP])[ktsw ]; - f_TSE = (D.f[DIR_PMP])[ktse ]; - f_TNW = (D.f[DIR_MPP])[ktnw ]; - f_BNE = (D.f[DIR_PPM])[kbne ]; - f_BSW = (D.f[DIR_MMM])[kbsw ]; - f_BSE = (D.f[DIR_PMM])[kbse ]; - f_BNW = (D.f[DIR_MPM])[kbnw ]; - //f_W = (D.f[DIR_P00])[ke ]; - //f_E = (D.f[DIR_M00])[kw ]; - //f_S = (D.f[DIR_0P0])[kn ]; - //f_N = (D.f[DIR_0M0])[ks ]; - //f_B = (D.f[DIR_00P])[kt ]; - //f_T = (D.f[DIR_00M])[kb ]; - //f_SW = (D.f[DIR_PP0])[kne ]; - //f_NE = (D.f[DIR_MM0])[ksw ]; - //f_NW = (D.f[DIR_PM0])[kse ]; - //f_SE = (D.f[DIR_MP0])[knw ]; - //f_BW = (D.f[DIR_P0P])[kte ]; - //f_TE = (D.f[DIR_M0M])[kbw ]; - //f_TW = (D.f[DIR_P0M])[kbe ]; - //f_BE = (D.f[DIR_M0P])[ktw ]; - //f_BS = (D.f[DIR_0PP])[ktn ]; - //f_TN = (D.f[DIR_0MM])[kbs ]; - //f_TS = (D.f[DIR_0PM])[kbn ]; - //f_BN = (D.f[DIR_0MP])[kts ]; - //f_BSW = (D.f[DIR_PPP])[ktne ]; - //f_BNE = (D.f[DIR_MMP])[ktsw ]; - //f_BNW = (D.f[DIR_PMP])[ktse ]; - //f_BSE = (D.f[DIR_MPP])[ktnw ]; - //f_TSW = (D.f[DIR_PPM])[kbne ]; - //f_TNE = (D.f[DIR_MMM])[kbsw ]; - //f_TNW = (D.f[DIR_PMM])[kbse ]; - //f_TSE = (D.f[DIR_MPM])[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[DIR_000])[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); - - - 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 cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3) * (c1o1 + drho); - - ////////////////////////////////////////////////////////////////////////// - if (isEvenTimestep==false) - { - D.f[DIR_P00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_M00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_PMP * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_MPM * numberOfLBnodes]; - } - else - { - D.f[DIR_M00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_P00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_MPM * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_PMP * numberOfLBnodes]; - } - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //Test - //(D.f[DIR_000])[k]=c1o10; - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real VeloX = c0o1; - real VeloY = c0o1; - real VeloZ = c0o1; - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - //ToDo anders klammern !!!!!! - - q = q_dirE[k]; - if (q>=c0o1 && q<=c1o1) - { - feq=c2o27* (drho/*+three*( vx1 )*/+c9o2*( vx1 )*( vx1 ) * (c1o1 + drho)-cu_sq); - (D.f[DIR_M00])[kw]=((c1o1 - q) * f_E + q * ((f_E + f_W) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c2o27*( VeloX )) / (q + c1o1) ; - //(D.f[DIR_M00])[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[DIR_M00])[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[DIR_P00])[ke]=((c1o1 - q) * f_W + q * ((f_W + f_E) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c2o27*(-VeloX )) / (q + c1o1) ; - //(D.f[DIR_P00])[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[DIR_P00])[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[DIR_0M0])[ks]=((c1o1 - q) * f_N + q * ((f_N + f_S) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c2o27*( VeloY )) / (q + c1o1) ; - //(D.f[DIR_0M0])[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[DIR_0M0])[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[DIR_0P0])[kn]=((c1o1 - q) * f_S + q * ((f_S + f_N) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c2o27*(-VeloY )) / (q + c1o1) ; - //(D.f[DIR_0P0])[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[DIR_0P0])[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[DIR_00M])[kb]=((c1o1 - q) * f_T + q * ((f_T + f_B) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c2o27*( VeloZ )) / (q + c1o1) ; - //(D.f[DIR_00M])[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[DIR_00M])[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[DIR_00P])[kt]=((c1o1 - q) * f_B + q * ((f_B + f_T) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c2o27*(-VeloZ )) / (q + c1o1) ; - //(D.f[DIR_00P])[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[DIR_00P])[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[DIR_MM0])[ksw]=((c1o1 - q) * f_NE + q * ((f_NE + f_SW) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*( VeloX+VeloY)) / (q + c1o1) ; - //(D.f[DIR_MM0])[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[DIR_MM0])[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[DIR_PP0])[kne]=((c1o1 - q) * f_SW + q * ((f_SW + f_NE) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*(-VeloX-VeloY)) / (q + c1o1) ; - //(D.f[DIR_PP0])[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[DIR_PP0])[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[DIR_MP0])[knw]=((c1o1 - q) * f_SE + q * ((f_SE + f_NW) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*( VeloX-VeloY)) / (q + c1o1) ; - //(D.f[DIR_MP0])[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[DIR_MP0])[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[DIR_PM0])[kse]=((c1o1 - q) * f_NW + q * ((f_NW + f_SE) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*(-VeloX+VeloY)) / (q + c1o1) ; - //(D.f[DIR_PM0])[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[DIR_PM0])[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[DIR_M0M])[kbw]=((c1o1 - q) * f_TE + q * ((f_TE + f_BW) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*( VeloX+VeloZ)) / (q + c1o1) ; - //(D.f[DIR_M0M])[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[DIR_M0M])[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[DIR_P0P])[kte]=((c1o1 - q) * f_BW + q * ((f_BW + f_TE) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*(-VeloX-VeloZ)) / (q + c1o1) ; - //(D.f[DIR_P0P])[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[DIR_P0P])[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[DIR_M0P])[ktw]=((c1o1 - q) * f_BE + q * ((f_BE + f_TW) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*( VeloX-VeloZ)) / (q + c1o1) ; - //(D.f[DIR_M0P])[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[DIR_M0P])[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[DIR_P0M])[kbe]=((c1o1 - q) * f_TW + q * ((f_TW + f_BE) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*(-VeloX+VeloZ)) / (q + c1o1) ; - //(D.f[DIR_P0M])[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[DIR_P0M])[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[DIR_0MM])[kbs]=((c1o1 - q) * f_TN + q * ((f_TN + f_BS) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*( VeloY+VeloZ)) / (q + c1o1) ; - //(D.f[DIR_0MM])[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[DIR_0MM])[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[DIR_0PP])[ktn]=((c1o1 - q) * f_BS + q * ((f_BS + f_TN) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*(-VeloY-VeloZ)) / (q + c1o1) ; - //(D.f[DIR_0PP])[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[DIR_0PP])[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[DIR_0MP])[kts]=((c1o1 - q) * f_BN + q * ((f_BN + f_TS) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*( VeloY-VeloZ)) / (q + c1o1) ; - //(D.f[DIR_0MP])[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[DIR_0MP])[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[DIR_0PM])[kbn]=((c1o1 - q) * f_TS + q * ((f_TS + f_BN) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*(-VeloY+VeloZ)) / (q + c1o1) ; - //(D.f[DIR_0PM])[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[DIR_0PM])[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[DIR_MMM])[kbsw]=((c1o1 - q) * f_TNE + q * ((f_TNE + f_BSW) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o216*( VeloX+VeloY+VeloZ)) / (q + c1o1) ; - //(D.f[DIR_MMM])[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[DIR_MMM])[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[DIR_PPP])[ktne]=((c1o1 - q) * f_BSW + q * ((f_BSW + f_TNE) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o216*(-VeloX-VeloY-VeloZ)) / (q + c1o1) ; - //(D.f[DIR_PPP])[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[DIR_PPP])[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[DIR_MMP])[ktsw]=((c1o1 - q) * f_BNE + q * ((f_BNE + f_TSW) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o216*( VeloX+VeloY-VeloZ)) / (q + c1o1) ; - //(D.f[DIR_MMP])[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[DIR_MMP])[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[DIR_PPM])[kbne]=((c1o1 - q) * f_TSW + q * ((f_TSW + f_BNE) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o216*(-VeloX-VeloY+VeloZ)) / (q + c1o1) ; - //(D.f[DIR_PPM])[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[DIR_PPM])[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[DIR_MPM])[kbnw]=((c1o1 - q) * f_TSE + q * ((f_TSE + f_BNW) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o216*( VeloX-VeloY+VeloZ)) / (q + c1o1) ; - //(D.f[DIR_MPM])[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[DIR_MPM])[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[DIR_PMP])[ktse]=((c1o1 - q) * f_BNW + q * ((f_BNW + f_TSE) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o216*(-VeloX+VeloY-VeloZ)) / (q + c1o1) ; - //(D.f[DIR_PMP])[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[DIR_PMP])[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[DIR_MPP])[ktnw]=((c1o1 - q) * f_BSE + q * ((f_BSE + f_TNW) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o216*( VeloX-VeloY-VeloZ)) / (q + c1o1) ; - //(D.f[DIR_MPP])[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[DIR_MPP])[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[DIR_PMM])[kbse]=((c1o1 - q) * f_TNW + q * ((f_TNW + f_BSE) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o216*(-VeloX+VeloY+VeloZ)) / (q + c1o1) ; - //(D.f[DIR_PMM])[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[DIR_PMM])[kbse]=zero; - } - } -} -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -////////////////////////////////////////////////////////////////////////////// -__global__ void QDeviceComp27( - real* distributions, - int* subgridDistanceIndices, - real* subgridDistances, - unsigned int numberOfBCnodes, - real omega, - unsigned int* neighborX, - unsigned int* neighborY, - unsigned int* neighborZ, - unsigned long long numberOfLBnodes, - bool isEvenTimestep) -{ - ////////////////////////////////////////////////////////////////////////// - //! The no-slip boundary condition is executed in the following steps - //! - //////////////////////////////////////////////////////////////////////////////// - //! - Get node index coordinates from threadIdx, blockIdx, blockDim and gridDim. - //! - const unsigned nodeIndex = getNodeIndex(); - - if(nodeIndex < 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); - - //////////////////////////////////////////////////////////////////////////////// - //! - Set local subgrid distances (q's) - //! - SubgridDistances27 subgridD; - getPointersToSubgridDistances(subgridD, subgridDistances, numberOfBCnodes); - - //////////////////////////////////////////////////////////////////////////////// - //! - Set neighbor indices (necessary for indirect addressing) - //! - unsigned int indexOfBCnode = subgridDistanceIndices[nodeIndex]; - 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 = indexOfBCnode; - unsigned int kse = ks; - unsigned int knw = kw; - unsigned int kbw = neighborZ[kw]; - unsigned int kte = indexOfBCnode; - unsigned int kbe = kb; - unsigned int ktw = kw; - unsigned int kbs = neighborZ[ks]; - unsigned int ktn = indexOfBCnode; - 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 = indexOfBCnode; - unsigned int kbsw = neighborZ[ksw]; - - //////////////////////////////////////////////////////////////////////////////// - //! - Set local distributions - //! - real f_W = (dist.f[DIR_P00])[ke ]; - real f_E = (dist.f[DIR_M00])[kw ]; - real f_S = (dist.f[DIR_0P0])[kn ]; - real f_N = (dist.f[DIR_0M0])[ks ]; - real f_B = (dist.f[DIR_00P])[kt ]; - real f_T = (dist.f[DIR_00M])[kb ]; - real f_SW = (dist.f[DIR_PP0])[kne ]; - real f_NE = (dist.f[DIR_MM0])[ksw ]; - real f_NW = (dist.f[DIR_PM0])[kse ]; - real f_SE = (dist.f[DIR_MP0])[knw ]; - real f_BW = (dist.f[DIR_P0P])[kte ]; - real f_TE = (dist.f[DIR_M0M])[kbw ]; - real f_TW = (dist.f[DIR_P0M])[kbe ]; - real f_BE = (dist.f[DIR_M0P])[ktw ]; - real f_BS = (dist.f[DIR_0PP])[ktn ]; - real f_TN = (dist.f[DIR_0MM])[kbs ]; - real f_TS = (dist.f[DIR_0PM])[kbn ]; - real f_BN = (dist.f[DIR_0MP])[kts ]; - real f_BSW = (dist.f[DIR_PPP])[ktne ]; - real f_BNE = (dist.f[DIR_MMP])[ktsw ]; - real f_BNW = (dist.f[DIR_PMP])[ktse ]; - real f_BSE = (dist.f[DIR_MPP])[ktnw ]; - real f_TSW = (dist.f[DIR_PPM])[kbne ]; - real f_TNE = (dist.f[DIR_MMM])[kbsw ]; - real f_TNW = (dist.f[DIR_PMM])[kbse ]; - real f_TSE = (dist.f[DIR_MPM])[kbnw ]; - - //////////////////////////////////////////////////////////////////////////////// - //! - 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[DIR_000])[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); - - 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); - - //////////////////////////////////////////////////////////////////////////////// - //! - Update distributions with subgrid distance (q) between zero and one - real feq, q, velocityLB; - q = (subgridD.q[DIR_P00])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) // only update distribution for q between zero and one - { - velocityLB = vx1; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c2o27); - (dist.f[DIR_M00])[kw] = getInterpolatedDistributionForNoSlipBC(q, f_E, f_W, feq, omega); - } - - q = (subgridD.q[DIR_M00])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) - { - velocityLB = -vx1; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c2o27); - (dist.f[DIR_P00])[ke] = getInterpolatedDistributionForNoSlipBC(q, f_W, f_E, feq, omega); - } - - q = (subgridD.q[DIR_0P0])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) - { - velocityLB = vx2; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c2o27); - (dist.f[DIR_0M0])[ks] = getInterpolatedDistributionForNoSlipBC(q, f_N, f_S, feq, omega); - } - - q = (subgridD.q[DIR_0M0])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) - { - velocityLB = -vx2; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c2o27); - (dist.f[DIR_0P0])[kn] = getInterpolatedDistributionForNoSlipBC(q, f_S, f_N, feq, omega); - } - - q = (subgridD.q[DIR_00P])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) - { - velocityLB = vx3; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c2o27); - (dist.f[DIR_00M])[kb] = getInterpolatedDistributionForNoSlipBC(q, f_T, f_B, feq, omega); - } - - q = (subgridD.q[DIR_00M])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) - { - velocityLB = -vx3; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c2o27); - (dist.f[DIR_00P])[kt] = getInterpolatedDistributionForNoSlipBC(q, f_B, f_T, feq, omega); - } - - q = (subgridD.q[DIR_PP0])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) - { - velocityLB = vx1 + vx2; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); - (dist.f[DIR_MM0])[ksw] = getInterpolatedDistributionForNoSlipBC(q, f_NE, f_SW, feq, omega); - } - - q = (subgridD.q[DIR_MM0])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) - { - velocityLB = -vx1 - vx2; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); - (dist.f[DIR_PP0])[kne] = getInterpolatedDistributionForNoSlipBC(q, f_SW, f_NE, feq, omega); - } - - q = (subgridD.q[DIR_PM0])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) - { - velocityLB = vx1 - vx2; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); - (dist.f[DIR_MP0])[knw] = getInterpolatedDistributionForNoSlipBC(q, f_SE, f_NW, feq, omega); - } - - q = (subgridD.q[DIR_MP0])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) - { - velocityLB = -vx1 + vx2; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); - (dist.f[DIR_PM0])[kse] = getInterpolatedDistributionForNoSlipBC(q, f_NW, f_SE, feq, omega); - } - - q = (subgridD.q[DIR_P0P])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) - { - velocityLB = vx1 + vx3; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); - (dist.f[DIR_M0M])[kbw] = getInterpolatedDistributionForNoSlipBC(q, f_TE, f_BW, feq, omega); - } - - q = (subgridD.q[DIR_M0M])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) - { - velocityLB = -vx1 - vx3; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); - (dist.f[DIR_P0P])[kte] = getInterpolatedDistributionForNoSlipBC(q, f_BW, f_TE, feq, omega); - } - - q = (subgridD.q[DIR_P0M])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) - { - velocityLB = vx1 - vx3; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); - (dist.f[DIR_M0P])[ktw] = getInterpolatedDistributionForNoSlipBC(q, f_BE, f_TW, feq, omega); - } - - q = (subgridD.q[DIR_M0P])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) - { - velocityLB = -vx1 + vx3; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); - (dist.f[DIR_P0M])[kbe] = getInterpolatedDistributionForNoSlipBC(q, f_TW, f_BE, feq, omega); - } - - q = (subgridD.q[DIR_0PP])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) - { - velocityLB = vx2 + vx3; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); - (dist.f[DIR_0MM])[kbs] = getInterpolatedDistributionForNoSlipBC(q, f_TN, f_BS, feq, omega); - } - - q = (subgridD.q[DIR_0MM])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) - { - velocityLB = -vx2 - vx3; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); - (dist.f[DIR_0PP])[ktn] = getInterpolatedDistributionForNoSlipBC(q, f_BS, f_TN, feq, omega); - } - - q = (subgridD.q[DIR_0PM])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) - { - velocityLB = vx2 - vx3; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); - (dist.f[DIR_0MP])[kts] = getInterpolatedDistributionForNoSlipBC(q, f_BN, f_TS, feq, omega); - } - - q = (subgridD.q[DIR_0MP])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) - { - velocityLB = -vx2 + vx3; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); - (dist.f[DIR_0PM])[kbn] = getInterpolatedDistributionForNoSlipBC(q, f_TS, f_BN, feq, omega); - } - - q = (subgridD.q[DIR_PPP])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) - { - velocityLB = vx1 + vx2 + vx3; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); - (dist.f[DIR_MMM])[kbsw] = getInterpolatedDistributionForNoSlipBC(q, f_TNE, f_BSW, feq, omega); - } - - q = (subgridD.q[DIR_MMM])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) - { - velocityLB = -vx1 - vx2 - vx3; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); - (dist.f[DIR_PPP])[ktne] = getInterpolatedDistributionForNoSlipBC(q, f_BSW, f_TNE, feq, omega); - } - - q = (subgridD.q[DIR_PPM])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) - { - velocityLB = vx1 + vx2 - vx3; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); - (dist.f[DIR_MMP])[ktsw] = getInterpolatedDistributionForNoSlipBC(q, f_BNE, f_TSW, feq, omega); - } - - q = (subgridD.q[DIR_MMP])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) - { - velocityLB = -vx1 - vx2 + vx3; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); - (dist.f[DIR_PPM])[kbne] = getInterpolatedDistributionForNoSlipBC(q, f_TSW, f_BNE, feq, omega); - } - - q = (subgridD.q[DIR_PMP])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) - { - velocityLB = vx1 - vx2 + vx3; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); - (dist.f[DIR_MPM])[kbnw] = getInterpolatedDistributionForNoSlipBC(q, f_TSE, f_BNW, feq, omega); - } - - q = (subgridD.q[DIR_MPM])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) - { - velocityLB = -vx1 + vx2 - vx3; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); - (dist.f[DIR_PMP])[ktse] = getInterpolatedDistributionForNoSlipBC(q, f_BNW, f_TSE, feq, omega); - } - - q = (subgridD.q[DIR_PMM])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) - { - velocityLB = vx1 - vx2 - vx3; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); - (dist.f[DIR_MPP])[ktnw] = getInterpolatedDistributionForNoSlipBC(q, f_BSE, f_TNW, feq, omega); - } - - q = (subgridD.q[DIR_MPP])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) - { - velocityLB = -vx1 + vx2 + vx3; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); - (dist.f[DIR_PMM])[kbse] = getInterpolatedDistributionForNoSlipBC(q, f_TNW, f_BSE, feq, omega); - } - } -} -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -////////////////////////////////////////////////////////////////////////////// -__global__ void QDevice27( - real* distributions, - int* subgridDistanceIndices, - real* subgridDistances, - unsigned int numberOfBCnodes, - real omega, - unsigned int* neighborX, - unsigned int* neighborY, - unsigned int* neighborZ, - unsigned long long numberOfLBnodes, - bool isEvenTimestep) -{ - ////////////////////////////////////////////////////////////////////////// - //! The no-slip boundary condition is executed in the following steps - //! - //////////////////////////////////////////////////////////////////////////////// - //! - Get node index coordinates from threadIdx, blockIdx, blockDim and gridDim. - //! - const unsigned nodeIndex = getNodeIndex(); - - ////////////////////////////////////////////////////////////////////////// - //! - Run for all indices in size of boundary condition (numberOfBCnodes) - //! - if(nodeIndex < 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); - - //////////////////////////////////////////////////////////////////////////////// - //! - Set local subgrid distances (q's) - //! - SubgridDistances27 subgridD; - getPointersToSubgridDistances(subgridD, subgridDistances, numberOfBCnodes); - - //////////////////////////////////////////////////////////////////////////////// - //! - Set neighbor indices (necessary for indirect addressing) - //! - unsigned int indexOfBCnode = subgridDistanceIndices[nodeIndex]; - 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 = indexOfBCnode; - unsigned int kse = ks; - unsigned int knw = kw; - unsigned int kbw = neighborZ[kw]; - unsigned int kte = indexOfBCnode; - unsigned int kbe = kb; - unsigned int ktw = kw; - unsigned int kbs = neighborZ[ks]; - unsigned int ktn = indexOfBCnode; - 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 = indexOfBCnode; - unsigned int kbsw = neighborZ[ksw]; - - //////////////////////////////////////////////////////////////////////////////// - //! - Set local distributions - //! - real f_W = (dist.f[DIR_P00])[ke ]; - real f_E = (dist.f[DIR_M00])[kw ]; - real f_S = (dist.f[DIR_0P0])[kn ]; - real f_N = (dist.f[DIR_0M0])[ks ]; - real f_B = (dist.f[DIR_00P])[kt ]; - real f_T = (dist.f[DIR_00M])[kb ]; - real f_SW = (dist.f[DIR_PP0])[kne ]; - real f_NE = (dist.f[DIR_MM0])[ksw ]; - real f_NW = (dist.f[DIR_PM0])[kse ]; - real f_SE = (dist.f[DIR_MP0])[knw ]; - real f_BW = (dist.f[DIR_P0P])[kte ]; - real f_TE = (dist.f[DIR_M0M])[kbw ]; - real f_TW = (dist.f[DIR_P0M])[kbe ]; - real f_BE = (dist.f[DIR_M0P])[ktw ]; - real f_BS = (dist.f[DIR_0PP])[ktn ]; - real f_TN = (dist.f[DIR_0MM])[kbs ]; - real f_TS = (dist.f[DIR_0PM])[kbn ]; - real f_BN = (dist.f[DIR_0MP])[kts ]; - real f_BSW = (dist.f[DIR_PPP])[ktne ]; - real f_BNE = (dist.f[DIR_MMP])[ktsw ]; - real f_BNW = (dist.f[DIR_PMP])[ktse ]; - real f_BSE = (dist.f[DIR_MPP])[ktnw ]; - real f_TSW = (dist.f[DIR_PPM])[kbne ]; - real f_TNE = (dist.f[DIR_MMM])[kbsw ]; - real f_TNW = (dist.f[DIR_PMM])[kbse ]; - real f_TSE = (dist.f[DIR_MPM])[kbnw ]; - - //////////////////////////////////////////////////////////////////////////////// - //! - 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[DIR_000])[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)); - - 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)); - - 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)); - - real cu_sq = c3o2 * (vx1 * vx1 + vx2 * vx2 + vx3 * vx3); - - //////////////////////////////////////////////////////////////////////////////// - //! - 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[DIR_P00])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) // only update distribution for q between zero and one - { - velocityLB = vx1; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c2o27); - (dist.f[DIR_M00])[kw] = getInterpolatedDistributionForNoSlipBC(q, f_E, f_W, feq, omega); - } - - q = (subgridD.q[DIR_M00])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) - { - velocityLB = -vx1; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c2o27); - (dist.f[DIR_P00])[ke] = getInterpolatedDistributionForNoSlipBC(q, f_W, f_E, feq, omega); - } - - q = (subgridD.q[DIR_0P0])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) - { - velocityLB = vx2; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c2o27); - (dist.f[DIR_0M0])[ks] = getInterpolatedDistributionForNoSlipBC(q, f_N, f_S, feq, omega); - } - - q = (subgridD.q[DIR_0M0])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) - { - velocityLB = -vx2; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c2o27); - (dist.f[DIR_0P0])[kn] = getInterpolatedDistributionForNoSlipBC(q, f_S, f_N, feq, omega); - } - - q = (subgridD.q[DIR_00P])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) - { - velocityLB = vx3; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c2o27); - (dist.f[DIR_00M])[kb] = getInterpolatedDistributionForNoSlipBC(q, f_T, f_B, feq, omega); - } - - q = (subgridD.q[DIR_00M])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) - { - velocityLB = -vx3; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c2o27); - (dist.f[DIR_00P])[kt] = getInterpolatedDistributionForNoSlipBC(q, f_B, f_T, feq, omega); - } - - q = (subgridD.q[DIR_PP0])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) - { - velocityLB = vx1 + vx2; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); - (dist.f[DIR_MM0])[ksw] = getInterpolatedDistributionForNoSlipBC(q, f_NE, f_SW, feq, omega); - } - - q = (subgridD.q[DIR_MM0])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) - { - velocityLB = -vx1 - vx2; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); - (dist.f[DIR_PP0])[kne] = getInterpolatedDistributionForNoSlipBC(q, f_SW, f_NE, feq, omega); - } - - q = (subgridD.q[DIR_PM0])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) - { - velocityLB = vx1 - vx2; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); - (dist.f[DIR_MP0])[knw] = getInterpolatedDistributionForNoSlipBC(q, f_SE, f_NW, feq, omega); - } - - q = (subgridD.q[DIR_MP0])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) - { - velocityLB = -vx1 + vx2; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); - (dist.f[DIR_PM0])[kse] = getInterpolatedDistributionForNoSlipBC(q, f_NW, f_SE, feq, omega); - } - - q = (subgridD.q[DIR_P0P])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) - { - velocityLB = vx1 + vx3; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); - (dist.f[DIR_M0M])[kbw] = getInterpolatedDistributionForNoSlipBC(q, f_TE, f_BW, feq, omega); - } - - q = (subgridD.q[DIR_M0M])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) - { - velocityLB = -vx1 - vx3; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); - (dist.f[DIR_P0P])[kte] = getInterpolatedDistributionForNoSlipBC(q, f_BW, f_TE, feq, omega); - } - - q = (subgridD.q[DIR_P0M])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) - { - velocityLB = vx1 - vx3; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); - (dist.f[DIR_M0P])[ktw] = getInterpolatedDistributionForNoSlipBC(q, f_BE, f_TW, feq, omega); - } - - q = (subgridD.q[DIR_M0P])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) - { - velocityLB = -vx1 + vx3; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); - (dist.f[DIR_P0M])[kbe] = getInterpolatedDistributionForNoSlipBC(q, f_TW, f_BE, feq, omega); - } - - q = (subgridD.q[DIR_0PP])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) - { - velocityLB = vx2 + vx3; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); - (dist.f[DIR_0MM])[kbs] = getInterpolatedDistributionForNoSlipBC(q, f_TN, f_BS, feq, omega); - } - - q = (subgridD.q[DIR_0MM])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) - { - velocityLB = -vx2 - vx3; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); - (dist.f[DIR_0PP])[ktn] = getInterpolatedDistributionForNoSlipBC(q, f_BS, f_TN, feq, omega); - } - - q = (subgridD.q[DIR_0PM])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) - { - velocityLB = vx2 - vx3; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); - (dist.f[DIR_0MP])[kts] = getInterpolatedDistributionForNoSlipBC(q, f_BN, f_TS, feq, omega); - } - - q = (subgridD.q[DIR_0MP])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) - { - velocityLB = -vx2 + vx3; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); - (dist.f[DIR_0PM])[kbn] = getInterpolatedDistributionForNoSlipBC(q, f_TS, f_BN, feq, omega); - } - - q = (subgridD.q[DIR_PPP])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) - { - velocityLB = vx1 + vx2 + vx3; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); - (dist.f[DIR_MMM])[kbsw] = getInterpolatedDistributionForNoSlipBC(q, f_TNE, f_BSW, feq, omega); - } - - q = (subgridD.q[DIR_MMM])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) - { - velocityLB = -vx1 - vx2 - vx3; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); - (dist.f[DIR_PPP])[ktne] = getInterpolatedDistributionForNoSlipBC(q, f_BSW, f_TNE, feq, omega); - } - - q = (subgridD.q[DIR_PPM])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) - { - velocityLB = vx1 + vx2 - vx3; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); - (dist.f[DIR_MMP])[ktsw] = getInterpolatedDistributionForNoSlipBC(q, f_BNE, f_TSW, feq, omega); - } - - q = (subgridD.q[DIR_MMP])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) - { - velocityLB = -vx1 - vx2 + vx3; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); - (dist.f[DIR_PPM])[kbne] = getInterpolatedDistributionForNoSlipBC(q, f_TSW, f_BNE, feq, omega); - } - - q = (subgridD.q[DIR_PMP])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) - { - velocityLB = vx1 - vx2 + vx3; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); - (dist.f[DIR_MPM])[kbnw] = getInterpolatedDistributionForNoSlipBC(q, f_TSE, f_BNW, feq, omega); - } - - q = (subgridD.q[DIR_MPM])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) - { - velocityLB = -vx1 + vx2 - vx3; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); - (dist.f[DIR_PMP])[ktse] = getInterpolatedDistributionForNoSlipBC(q, f_BNW, f_TSE, feq, omega); - } - - q = (subgridD.q[DIR_PMM])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) - { - velocityLB = vx1 - vx2 - vx3; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); - (dist.f[DIR_MPP])[ktnw] = getInterpolatedDistributionForNoSlipBC(q, f_BSE, f_TNW, feq, omega); - } - - q = (subgridD.q[DIR_MPP])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) - { - velocityLB = -vx1 + vx2 + vx3; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); - (dist.f[DIR_PMM])[kbse] = getInterpolatedDistributionForNoSlipBC(q, f_TNW, f_BSE, feq, omega); - } - } -} -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -////////////////////////////////////////////////////////////////////////////// -__global__ void BBDevice27( - real* distributions, - int* subgridDistanceIndices, - real* subgridDistances, - unsigned int numberOfBCnodes, - unsigned int* neighborX, - unsigned int* neighborY, - unsigned int* neighborZ, - unsigned long long numberOfLBnodes, - bool isEvenTimestep) -{ - ////////////////////////////////////////////////////////////////////////// - //! The no-slip boundary condition is executed in the following steps - //! - //////////////////////////////////////////////////////////////////////////////// - //! - Get node index coordinates from threadIdx, blockIdx, blockDim and gridDim. - //! - const unsigned nodeIndex = getNodeIndex(); - - ////////////////////////////////////////////////////////////////////////// - // run for all indices in size of boundary condition (numberOfBCnodes) - if(nodeIndex < 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); - - //////////////////////////////////////////////////////////////////////////////// - //! - Set local subgrid distances (q's) - //! - SubgridDistances27 subgridD; - getPointersToSubgridDistances(subgridD, subgridDistances, numberOfBCnodes); - - //////////////////////////////////////////////////////////////////////////////// - //! - Set neighbor indices (necessary for indirect addressing) - //! - unsigned int indexOfBCnode = subgridDistanceIndices[nodeIndex]; - 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 = indexOfBCnode; - unsigned int kse = ks; - unsigned int knw = kw; - unsigned int kbw = neighborZ[kw]; - unsigned int kte = indexOfBCnode; - unsigned int kbe = kb; - unsigned int ktw = kw; - unsigned int kbs = neighborZ[ks]; - unsigned int ktn = indexOfBCnode; - 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 = indexOfBCnode; - unsigned int kbsw = neighborZ[ksw]; - - //////////////////////////////////////////////////////////////////////////////// - //! - Set local distributions - //! - real f_W = (dist.f[DIR_P00])[ke ]; - real f_E = (dist.f[DIR_M00])[kw ]; - real f_S = (dist.f[DIR_0P0])[kn ]; - real f_N = (dist.f[DIR_0M0])[ks ]; - real f_B = (dist.f[DIR_00P])[kt ]; - real f_T = (dist.f[DIR_00M])[kb ]; - real f_SW = (dist.f[DIR_PP0])[kne ]; - real f_NE = (dist.f[DIR_MM0])[ksw ]; - real f_NW = (dist.f[DIR_PM0])[kse ]; - real f_SE = (dist.f[DIR_MP0])[knw ]; - real f_BW = (dist.f[DIR_P0P])[kte ]; - real f_TE = (dist.f[DIR_M0M])[kbw ]; - real f_TW = (dist.f[DIR_P0M])[kbe ]; - real f_BE = (dist.f[DIR_M0P])[ktw ]; - real f_BS = (dist.f[DIR_0PP])[ktn ]; - real f_TN = (dist.f[DIR_0MM])[kbs ]; - real f_TS = (dist.f[DIR_0PM])[kbn ]; - real f_BN = (dist.f[DIR_0MP])[kts ]; - real f_BSW = (dist.f[DIR_PPP])[ktne ]; - real f_BNE = (dist.f[DIR_MMP])[ktsw ]; - real f_BNW = (dist.f[DIR_PMP])[ktse ]; - real f_BSE = (dist.f[DIR_MPP])[ktnw ]; - real f_TSW = (dist.f[DIR_PPM])[kbne ]; - real f_TNE = (dist.f[DIR_MMM])[kbsw ]; - real f_TNW = (dist.f[DIR_PMM])[kbse ]; - real f_TSE = (dist.f[DIR_MPM])[kbnw ]; - - //////////////////////////////////////////////////////////////////////////////// - //! - 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[DIR_P00])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[DIR_M00])[kw ]=f_E ; - q = (subgridD.q[DIR_M00])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[DIR_P00])[ke ]=f_W ; - q = (subgridD.q[DIR_0P0])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[DIR_0M0])[ks ]=f_N ; - q = (subgridD.q[DIR_0M0])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[DIR_0P0])[kn ]=f_S ; - q = (subgridD.q[DIR_00P])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[DIR_00M])[kb ]=f_T ; - q = (subgridD.q[DIR_00M])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[DIR_00P])[kt ]=f_B ; - q = (subgridD.q[DIR_PP0])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[DIR_MM0])[ksw ]=f_NE ; - q = (subgridD.q[DIR_MM0])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[DIR_PP0])[kne ]=f_SW ; - q = (subgridD.q[DIR_PM0])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[DIR_MP0])[knw ]=f_SE ; - q = (subgridD.q[DIR_MP0])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[DIR_PM0])[kse ]=f_NW ; - q = (subgridD.q[DIR_P0P])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[DIR_M0M])[kbw ]=f_TE ; - q = (subgridD.q[DIR_M0M])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[DIR_P0P])[kte ]=f_BW ; - q = (subgridD.q[DIR_P0M])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[DIR_M0P])[ktw ]=f_BE ; - q = (subgridD.q[DIR_M0P])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[DIR_P0M])[kbe ]=f_TW ; - q = (subgridD.q[DIR_0PP])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[DIR_0MM])[kbs ]=f_TN ; - q = (subgridD.q[DIR_0MM])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[DIR_0PP])[ktn ]=f_BS ; - q = (subgridD.q[DIR_0PM])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[DIR_0MP])[kts ]=f_BN ; - q = (subgridD.q[DIR_0MP])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[DIR_0PM])[kbn ]=f_TS ; - q = (subgridD.q[DIR_PPP])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[DIR_MMM])[kbsw]=f_TNE; - q = (subgridD.q[DIR_MMM])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[DIR_PPP])[ktne]=f_BSW; - q = (subgridD.q[DIR_PPM])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[DIR_MMP])[ktsw]=f_BNE; - q = (subgridD.q[DIR_MMP])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[DIR_PPM])[kbne]=f_TSW; - q = (subgridD.q[DIR_PMP])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[DIR_MPM])[kbnw]=f_TSE; - q = (subgridD.q[DIR_MPM])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[DIR_PMP])[ktse]=f_BNW; - q = (subgridD.q[DIR_PMM])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[DIR_MPP])[ktnw]=f_BSE; - q = (subgridD.q[DIR_MPP])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[DIR_PMM])[kbse]=f_TNW; - } -} -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - diff --git a/src/gpu/VirtualFluids_GPU/GPU/PressBCs27.cu b/src/gpu/VirtualFluids_GPU/GPU/PressBCs27.cu deleted file mode 100644 index e0ea3c05251e995c55c2b980327059dfa7fd4069..0000000000000000000000000000000000000000 --- a/src/gpu/VirtualFluids_GPU/GPU/PressBCs27.cu +++ /dev/null @@ -1,5294 +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 PressBCs27.cu -//! \ingroup GPU -//! \author Martin Schoenherr, Anna Wellmann -//====================================================================================== -#include "LBM/LB.h" -#include "lbm/constants/D3Q27.h" -#include "basics/constants/NumericConstants.h" -#include "lbm/MacroscopicQuantities.h" -#include "LBM/GPUHelperFunctions/KernelUtilities.h" - -using namespace vf::basics::constant; -using namespace vf::lbm::dir; -using namespace vf::gpu; - -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -__global__ void QInflowScaleByPressDevice27( - real* rhoBC, - real* DD, - int* k_Q, - int* k_N, - int numberOfBCnodes, - real om1, - unsigned int* neighborX, - unsigned int* neighborY, - unsigned int* neighborZ, - unsigned long long numberOfLBnodes, - bool isEvenTimestep) -{ - //////////////////////////////////////////////////////////////////////////////// - const unsigned x = threadIdx.x; // Globaler x-Index - const unsigned y = blockIdx.x; // Globaler y-Index - const unsigned z = blockIdx.y; // Globaler z-Index - - const unsigned nx = blockDim.x; - const unsigned ny = gridDim.x; - - const unsigned k = nx*(ny*z + y) + x; - ////////////////////////////////////////////////////////////////////////// - - if(k<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]; - 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]; - //////////////////////////////////////////////////////////////////////////////// - //index1 - unsigned int K1QK = k_N[k]; - unsigned int k1zero= K1QK; - unsigned int k1e = K1QK; - unsigned int k1w = neighborX[K1QK]; - unsigned int k1n = K1QK; - unsigned int k1s = neighborY[K1QK]; - unsigned int k1t = K1QK; - unsigned int k1b = neighborZ[K1QK]; - unsigned int k1sw = neighborY[k1w]; - unsigned int k1ne = K1QK; - unsigned int k1se = k1s; - unsigned int k1nw = k1w; - unsigned int k1bw = neighborZ[k1w]; - unsigned int k1te = K1QK; - unsigned int k1be = k1b; - unsigned int k1tw = k1w; - unsigned int k1bs = neighborZ[k1s]; - unsigned int k1tn = K1QK; - unsigned int k1bn = k1b; - unsigned int k1ts = k1s; - unsigned int k1tse = k1s; - unsigned int k1bnw = k1bw; - unsigned int k1tnw = k1w; - unsigned int k1bse = k1bs; - unsigned int k1tsw = k1sw; - unsigned int k1bne = k1b; - unsigned int k1tne = K1QK; - unsigned int k1bsw = neighborZ[k1sw]; - //////////////////////////////////////////////////////////////////////////////// - Distributions27 D; - if (isEvenTimestep==true) - { - D.f[DIR_P00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_M00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_PMP * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_MPM * numberOfLBnodes]; - } - else - { - D.f[DIR_M00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_P00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_MPM * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_PMP * numberOfLBnodes]; - } - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real f1_E = (D.f[DIR_P00])[k1e ]; - real f1_W = (D.f[DIR_M00])[k1w ]; - real f1_N = (D.f[DIR_0P0])[k1n ]; - real f1_S = (D.f[DIR_0M0])[k1s ]; - real f1_T = (D.f[DIR_00P])[k1t ]; - real f1_B = (D.f[DIR_00M])[k1b ]; - real f1_NE = (D.f[DIR_PP0])[k1ne ]; - real f1_SW = (D.f[DIR_MM0])[k1sw ]; - real f1_SE = (D.f[DIR_PM0])[k1se ]; - real f1_NW = (D.f[DIR_MP0])[k1nw ]; - real f1_TE = (D.f[DIR_P0P])[k1te ]; - real f1_BW = (D.f[DIR_M0M])[k1bw ]; - real f1_BE = (D.f[DIR_P0M])[k1be ]; - real f1_TW = (D.f[DIR_M0P])[k1tw ]; - real f1_TN = (D.f[DIR_0PP])[k1tn ]; - real f1_BS = (D.f[DIR_0MM])[k1bs ]; - real f1_BN = (D.f[DIR_0PM])[k1bn ]; - real f1_TS = (D.f[DIR_0MP])[k1ts ]; - //real f1_ZERO = (D.f[DIR_000])[k1zero]; - real f1_TNE = (D.f[DIR_PPP])[k1tne ]; - real f1_TSW = (D.f[DIR_MMP])[k1tsw ]; - real f1_TSE = (D.f[DIR_PMP])[k1tse ]; - real f1_TNW = (D.f[DIR_MPP])[k1tnw ]; - real f1_BNE = (D.f[DIR_PPM])[k1bne ]; - real f1_BSW = (D.f[DIR_MMM])[k1bsw ]; - real f1_BSE = (D.f[DIR_PMM])[k1bse ]; - real f1_BNW = (D.f[DIR_MPM])[k1bnw ]; - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real f_E = (D.f[DIR_P00])[ke ]; - real f_W = (D.f[DIR_M00])[kw ]; - real f_N = (D.f[DIR_0P0])[kn ]; - real f_S = (D.f[DIR_0M0])[ks ]; - real f_T = (D.f[DIR_00P])[kt ]; - real f_B = (D.f[DIR_00M])[kb ]; - real f_NE = (D.f[DIR_PP0])[kne ]; - real f_SW = (D.f[DIR_MM0])[ksw ]; - real f_SE = (D.f[DIR_PM0])[kse ]; - real f_NW = (D.f[DIR_MP0])[knw ]; - real f_TE = (D.f[DIR_P0P])[kte ]; - real f_BW = (D.f[DIR_M0M])[kbw ]; - real f_BE = (D.f[DIR_P0M])[kbe ]; - real f_TW = (D.f[DIR_M0P])[ktw ]; - real f_TN = (D.f[DIR_0PP])[ktn ]; - real f_BS = (D.f[DIR_0MM])[kbs ]; - real f_BN = (D.f[DIR_0PM])[kbn ]; - real f_TS = (D.f[DIR_0MP])[kts ]; - //real f_ZERO = (D.f[DIR_000])[kzero]; - real f_TNE = (D.f[DIR_PPP])[ktne ]; - real f_TSW = (D.f[DIR_MMP])[ktsw ]; - real f_TSE = (D.f[DIR_PMP])[ktse ]; - real f_TNW = (D.f[DIR_MPP])[ktnw ]; - real f_BNE = (D.f[DIR_PPM])[kbne ]; - real f_BSW = (D.f[DIR_MMM])[kbsw ]; - real f_BSE = (D.f[DIR_PMM])[kbse ]; - real f_BNW = (D.f[DIR_MPM])[kbnw ]; - ////////////////////////////////////////////////////////////////////////// - // real vx1, vx2, vx3; - real drho, drho1; - ////////////////////////////////////////////////////////////////////////// - //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[DIR_000])[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[DIR_000])[kzero]); - ////////////////////////////////////////////////////////////////////////// - //Schallgeschwindigkeit - real cs = c1o1 / sqrtf(c3o1); - ////////////////////////////////////////////////////////////////////////// - real rhoInterpol = drho1 * cs + (c1o1 - cs) * drho; - //real diffRho = (rhoBC[k] + one) / (rhoInterpol + one); - real diffRhoToAdd = rhoBC[k] - rhoInterpol; - ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //no velocity - ////////////////////////////////////////// - f_E = f1_E * cs + (c1o1 - cs) * f_E ; - f_W = f1_W * cs + (c1o1 - cs) * f_W ; - f_N = f1_N * cs + (c1o1 - cs) * f_N ; - f_S = f1_S * cs + (c1o1 - cs) * f_S ; - f_T = f1_T * cs + (c1o1 - cs) * f_T ; - f_B = f1_B * cs + (c1o1 - cs) * f_B ; - f_NE = f1_NE * cs + (c1o1 - cs) * f_NE ; - f_SW = f1_SW * cs + (c1o1 - cs) * f_SW ; - f_SE = f1_SE * cs + (c1o1 - cs) * f_SE ; - f_NW = f1_NW * cs + (c1o1 - cs) * f_NW ; - f_TE = f1_TE * cs + (c1o1 - cs) * f_TE ; - f_BW = f1_BW * cs + (c1o1 - cs) * f_BW ; - f_BE = f1_BE * cs + (c1o1 - cs) * f_BE ; - f_TW = f1_TW * cs + (c1o1 - cs) * f_TW ; - f_TN = f1_TN * cs + (c1o1 - cs) * f_TN ; - f_BS = f1_BS * cs + (c1o1 - cs) * f_BS ; - f_BN = f1_BN * cs + (c1o1 - cs) * f_BN ; - f_TS = f1_TS * cs + (c1o1 - cs) * f_TS ; - f_TNE = f1_TNE * cs + (c1o1 - cs) * f_TNE ; - f_TSW = f1_TSW * cs + (c1o1 - cs) * f_TSW ; - f_TSE = f1_TSE * cs + (c1o1 - cs) * f_TSE ; - f_TNW = f1_TNW * cs + (c1o1 - cs) * f_TNW ; - f_BNE = f1_BNE * cs + (c1o1 - cs) * f_BNE ; - f_BSW = f1_BSW * cs + (c1o1 - cs) * f_BSW ; - f_BSE = f1_BSE * cs + (c1o1 - cs) * f_BSE ; - f_BNW = f1_BNW * cs + (c1o1 - cs) * f_BNW ; - ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //scale by press - ////////////////////////////////////////// - //f_E = (f_E + c2over27 ) * diffRho - c2over27 ; - // f_W = (f_W + c2over27 ) * diffRho - c2over27 ; - // f_N = (f_N + c2over27 ) * diffRho - c2over27 ; - // f_S = (f_S + c2over27 ) * diffRho - c2over27 ; - // f_T = (f_T + c2over27 ) * diffRho - c2over27 ; - // f_B = (f_B + c2over27 ) * diffRho - c2over27 ; - //f_NE = (f_NE + c1over54 ) * diffRho - c1over54 ; - // f_SW = (f_SW + c1over54 ) * diffRho - c1over54 ; - // f_SE = (f_SE + c1over54 ) * diffRho - c1over54 ; - // f_NW = (f_NW + c1over54 ) * diffRho - c1over54 ; - // f_TE = (f_TE + c1over54 ) * diffRho - c1over54 ; - // f_BW = (f_BW + c1over54 ) * diffRho - c1over54 ; - // f_BE = (f_BE + c1over54 ) * diffRho - c1over54 ; - // f_TW = (f_TW + c1over54 ) * diffRho - c1over54 ; - // f_TN = (f_TN + c1over54 ) * diffRho - c1over54 ; - // f_BS = (f_BS + c1over54 ) * diffRho - c1over54 ; - // f_BN = (f_BN + c1over54 ) * diffRho - c1over54 ; - // f_TS = (f_TS + c1over54 ) * diffRho - c1over54 ; - // f_TNE = (f_TNE + c1over216) * diffRho - c1over216; - // f_TSW = (f_TSW + c1over216) * diffRho - c1over216; - // f_TSE = (f_TSE + c1over216) * diffRho - c1over216; - // f_TNW = (f_TNW + c1over216) * diffRho - c1over216; - // f_BNE = (f_BNE + c1over216) * diffRho - c1over216; - // f_BSW = (f_BSW + c1over216) * diffRho - c1over216; - // f_BSE = (f_BSE + c1over216) * diffRho - c1over216; - // f_BNW = (f_BNW + c1over216) * diffRho - c1over216; - ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - // add press - ////////////////////////////////////////// - f_E = (f_E + c2o27 * diffRhoToAdd); - f_W = (f_W + c2o27 * diffRhoToAdd); - f_N = (f_N + c2o27 * diffRhoToAdd); - f_S = (f_S + c2o27 * diffRhoToAdd); - f_T = (f_T + c2o27 * diffRhoToAdd); - f_B = (f_B + c2o27 * diffRhoToAdd); - f_NE = (f_NE + c1o54 * diffRhoToAdd); - f_SW = (f_SW + c1o54 * diffRhoToAdd); - f_SE = (f_SE + c1o54 * diffRhoToAdd); - f_NW = (f_NW + c1o54 * diffRhoToAdd); - f_TE = (f_TE + c1o54 * diffRhoToAdd); - f_BW = (f_BW + c1o54 * diffRhoToAdd); - f_BE = (f_BE + c1o54 * diffRhoToAdd); - f_TW = (f_TW + c1o54 * diffRhoToAdd); - f_TN = (f_TN + c1o54 * diffRhoToAdd); - f_BS = (f_BS + c1o54 * diffRhoToAdd); - f_BN = (f_BN + c1o54 * diffRhoToAdd); - f_TS = (f_TS + c1o54 * diffRhoToAdd); - f_TNE = (f_TNE + c1o216 * diffRhoToAdd); - f_TSW = (f_TSW + c1o216 * diffRhoToAdd); - f_TSE = (f_TSE + c1o216 * diffRhoToAdd); - f_TNW = (f_TNW + c1o216 * diffRhoToAdd); - f_BNE = (f_BNE + c1o216 * diffRhoToAdd); - f_BSW = (f_BSW + c1o216 * diffRhoToAdd); - f_BSE = (f_BSE + c1o216 * diffRhoToAdd); - f_BNW = (f_BNW + c1o216 * diffRhoToAdd); - ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - ////////////////////////////////////////////////////////////////////////// - if (isEvenTimestep==false) - { - D.f[DIR_P00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_M00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_PMP * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_MPM * numberOfLBnodes]; - } - else - { - D.f[DIR_M00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_P00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_MPM * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_PMP * numberOfLBnodes]; - } - ////////////////////////////////////////////////////////////////////////// - //__syncthreads(); - // -X - //(D.f[DIR_P00])[ke ] = f_E ; - //(D.f[DIR_PM0])[kse ] = f_SE ; - //(D.f[DIR_PP0])[kne ] = f_NE ; - //(D.f[DIR_P0M])[kbe ] = f_BE ; - //(D.f[DIR_P0P])[kte ] = f_TE ; - //(D.f[DIR_PMP])[ktse ] = f_TSE ; - //(D.f[DIR_PPP])[ktne ] = f_TNE ; - //(D.f[DIR_PMM])[kbse ] = f_BSE ; - //(D.f[DIR_PPM])[kbne ] = f_BNE ; - // X - (D.f[DIR_M00])[kw ] = f_W ; - (D.f[DIR_MM0])[ksw ] = f_SW ; - (D.f[DIR_MP0])[knw ] = f_NW ; - (D.f[DIR_M0M])[kbw ] = f_BW ; - (D.f[DIR_M0P])[ktw ] = f_TW ; - (D.f[DIR_MMP])[ktsw ] = f_TSW ; - (D.f[DIR_MPP])[ktnw ] = f_TNW ; - (D.f[DIR_MMM])[kbsw ] = f_BSW ; - (D.f[DIR_MPM])[kbnw ] = f_BNW ; - // Y - //(D.f[DIR_0M0])[ks ] = f_S ; - //(D.f[DIR_PM0])[kse ] = f_SE ; - //(D.f[DIR_MM0])[ksw ] = f_SW ; - //(D.f[DIR_0MP])[kts ] = f_TS ; - //(D.f[DIR_0MM])[kbs ] = f_BS ; - //(D.f[DIR_PMP])[ktse ] = f_TSE ; - //(D.f[DIR_MMP])[ktsw ] = f_TSW ; - //(D.f[DIR_PMM])[kbse ] = f_BSE ; - //(D.f[DIR_MMM])[kbsw ] = f_BSW ; - // Z - //(D.f[DIR_00M])[kb ] = f_B ; - //(D.f[DIR_P0M])[kbe ] = f_BE ; - //(D.f[DIR_M0M])[kbw ] = f_BW ; - //(D.f[DIR_0PM])[kbn ] = f_BN ; - //(D.f[DIR_0MM])[kbs ] = f_BS ; - //(D.f[DIR_PPM])[kbne ] = f_BNE ; - //(D.f[DIR_MPM])[kbnw ] = f_BNW ; - //(D.f[DIR_PMM])[kbse ] = f_BSE ; - //(D.f[DIR_MMM])[kbsw ] = f_BSW ; - ////////////////////////////////////////////////////////////////////////// - } -} -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -__global__ void QPressDeviceIncompNEQ27( - real* rhoBC, - real* DD, - int* k_Q, - int* k_N, - int numberOfBCnodes, - real om1, - unsigned int* neighborX, - unsigned int* neighborY, - unsigned int* neighborZ, - unsigned long long numberOfLBnodes, - bool isEvenTimestep) -{ - //////////////////////////////////////////////////////////////////////////////// - const unsigned x = threadIdx.x; // Globaler x-Index - const unsigned y = blockIdx.x; // Globaler y-Index - const unsigned z = blockIdx.y; // Globaler z-Index - - const unsigned nx = blockDim.x; - const unsigned ny = gridDim.x; - - const unsigned k = nx*(ny*z + y) + x; - ////////////////////////////////////////////////////////////////////////// - - if(k<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]; - 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]; - //////////////////////////////////////////////////////////////////////////////// - //index1 - unsigned int K1QK = k_N[k]; - unsigned int k1zero= K1QK; - unsigned int k1e = K1QK; - unsigned int k1w = neighborX[K1QK]; - unsigned int k1n = K1QK; - unsigned int k1s = neighborY[K1QK]; - unsigned int k1t = K1QK; - unsigned int k1b = neighborZ[K1QK]; - unsigned int k1sw = neighborY[k1w]; - unsigned int k1ne = K1QK; - unsigned int k1se = k1s; - unsigned int k1nw = k1w; - unsigned int k1bw = neighborZ[k1w]; - unsigned int k1te = K1QK; - unsigned int k1be = k1b; - unsigned int k1tw = k1w; - unsigned int k1bs = neighborZ[k1s]; - unsigned int k1tn = K1QK; - unsigned int k1bn = k1b; - unsigned int k1ts = k1s; - unsigned int k1tse = k1s; - unsigned int k1bnw = k1bw; - unsigned int k1tnw = k1w; - unsigned int k1bse = k1bs; - unsigned int k1tsw = k1sw; - unsigned int k1bne = k1b; - unsigned int k1tne = K1QK; - unsigned int k1bsw = neighborZ[k1sw]; - //////////////////////////////////////////////////////////////////////////////// - Distributions27 D; - if (isEvenTimestep==true) //// ACHTUNG PREColl !!!!!!!!!!!!!! - { - D.f[DIR_P00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_M00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_PMP * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_MPM * numberOfLBnodes]; - } - else - { - D.f[DIR_M00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_P00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_MPM * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_PMP * numberOfLBnodes]; - } - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - 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[DIR_P00])[k1e ]; - f1_E = (D.f[DIR_M00])[k1w ]; - f1_S = (D.f[DIR_0P0])[k1n ]; - f1_N = (D.f[DIR_0M0])[k1s ]; - f1_B = (D.f[DIR_00P])[k1t ]; - f1_T = (D.f[DIR_00M])[k1b ]; - f1_SW = (D.f[DIR_PP0])[k1ne ]; - f1_NE = (D.f[DIR_MM0])[k1sw ]; - f1_NW = (D.f[DIR_PM0])[k1se ]; - f1_SE = (D.f[DIR_MP0])[k1nw ]; - f1_BW = (D.f[DIR_P0P])[k1te ]; - f1_TE = (D.f[DIR_M0M])[k1bw ]; - f1_TW = (D.f[DIR_P0M])[k1be ]; - f1_BE = (D.f[DIR_M0P])[k1tw ]; - f1_BS = (D.f[DIR_0PP])[k1tn ]; - f1_TN = (D.f[DIR_0MM])[k1bs ]; - f1_TS = (D.f[DIR_0PM])[k1bn ]; - f1_BN = (D.f[DIR_0MP])[k1ts ]; - f1_ZERO = (D.f[DIR_000])[k1zero]; - f1_BSW = (D.f[DIR_PPP])[k1tne ]; - f1_BNE = (D.f[DIR_MMP])[k1tsw ]; - f1_BNW = (D.f[DIR_PMP])[k1tse ]; - f1_BSE = (D.f[DIR_MPP])[k1tnw ]; - f1_TSW = (D.f[DIR_PPM])[k1bne ]; - f1_TNE = (D.f[DIR_MMM])[k1bsw ]; - f1_TNW = (D.f[DIR_PMM])[k1bse ]; - f1_TSE = (D.f[DIR_MPM])[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); - - - 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 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 cusq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3); - - 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)); - f1_N -= c2o27* (drho1+(drho1+c1o1)*(c3o1*( vx2 )+c9o2*( vx2 )*( vx2 )-cusq)); - f1_S -= c2o27* (drho1+(drho1+c1o1)*(c3o1*( -vx2 )+c9o2*( -vx2 )*( -vx2 )-cusq)); - f1_T -= c2o27* (drho1+(drho1+c1o1)*(c3o1*( vx3)+c9o2*( vx3)*( vx3)-cusq)); - f1_B -= c2o27* (drho1+(drho1+c1o1)*(c3o1*( -vx3)+c9o2*( -vx3)*( -vx3)-cusq)); - f1_NE -= c1o54* (drho1+(drho1+c1o1)*(c3o1*( vx1+vx2 )+c9o2*( vx1+vx2 )*( vx1+vx2 )-cusq)); - f1_SW -= c1o54* (drho1+(drho1+c1o1)*(c3o1*(-vx1-vx2 )+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cusq)); - f1_SE -= c1o54* (drho1+(drho1+c1o1)*(c3o1*( vx1-vx2 )+c9o2*( vx1-vx2 )*( vx1-vx2 )-cusq)); - f1_NW -= c1o54* (drho1+(drho1+c1o1)*(c3o1*(-vx1+vx2 )+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cusq)); - f1_TE -= c1o54* (drho1+(drho1+c1o1)*(c3o1*( vx1 +vx3)+c9o2*( vx1 +vx3)*( vx1 +vx3)-cusq)); - f1_BW -= c1o54* (drho1+(drho1+c1o1)*(c3o1*(-vx1 -vx3)+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cusq)); - f1_BE -= c1o54* (drho1+(drho1+c1o1)*(c3o1*( vx1 -vx3)+c9o2*( vx1 -vx3)*( vx1 -vx3)-cusq)); - f1_TW -= c1o54* (drho1+(drho1+c1o1)*(c3o1*(-vx1 +vx3)+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cusq)); - f1_TN -= c1o54* (drho1+(drho1+c1o1)*(c3o1*( vx2+vx3)+c9o2*( vx2+vx3)*( vx2+vx3)-cusq)); - f1_BS -= c1o54* (drho1+(drho1+c1o1)*(c3o1*( -vx2-vx3)+c9o2*( -vx2-vx3)*( -vx2-vx3)-cusq)); - f1_BN -= c1o54* (drho1+(drho1+c1o1)*(c3o1*( vx2-vx3)+c9o2*( vx2-vx3)*( vx2-vx3)-cusq)); - f1_TS -= c1o54* (drho1+(drho1+c1o1)*(c3o1*( -vx2+vx3)+c9o2*( -vx2+vx3)*( -vx2+vx3)-cusq)); - f1_TNE -= c1o216*(drho1+(drho1+c1o1)*(c3o1*( vx1+vx2+vx3)+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cusq)); - f1_BSW -= c1o216*(drho1+(drho1+c1o1)*(c3o1*(-vx1-vx2-vx3)+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cusq)); - f1_BNE -= c1o216*(drho1+(drho1+c1o1)*(c3o1*( vx1+vx2-vx3)+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cusq)); - f1_TSW -= c1o216*(drho1+(drho1+c1o1)*(c3o1*(-vx1-vx2+vx3)+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cusq)); - f1_TSE -= c1o216*(drho1+(drho1+c1o1)*(c3o1*( vx1-vx2+vx3)+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cusq)); - 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]; - - //if(vx1 < zero){ - // vx1 *= 0.9; - //} - //if(vx2 < zero){ - // vx2 *= c1o10;//0.9; - //} - - 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)); - f1_N += c2o27* (drho1+(drho1+c1o1)*(c3o1*( vx2 )+c9o2*( vx2 )*( vx2 )-cusq)); - f1_S += c2o27* (drho1+(drho1+c1o1)*(c3o1*( -vx2 )+c9o2*( -vx2 )*( -vx2 )-cusq)); - f1_T += c2o27* (drho1+(drho1+c1o1)*(c3o1*( vx3)+c9o2*( vx3)*( vx3)-cusq)); - f1_B += c2o27* (drho1+(drho1+c1o1)*(c3o1*( -vx3)+c9o2*( -vx3)*( -vx3)-cusq)); - f1_NE += c1o54* (drho1+(drho1+c1o1)*(c3o1*( vx1+vx2 )+c9o2*( vx1+vx2 )*( vx1+vx2 )-cusq)); - f1_SW += c1o54* (drho1+(drho1+c1o1)*(c3o1*(-vx1-vx2 )+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cusq)); - f1_SE += c1o54* (drho1+(drho1+c1o1)*(c3o1*( vx1-vx2 )+c9o2*( vx1-vx2 )*( vx1-vx2 )-cusq)); - f1_NW += c1o54* (drho1+(drho1+c1o1)*(c3o1*(-vx1+vx2 )+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cusq)); - f1_TE += c1o54* (drho1+(drho1+c1o1)*(c3o1*( vx1 +vx3)+c9o2*( vx1 +vx3)*( vx1 +vx3)-cusq)); - f1_BW += c1o54* (drho1+(drho1+c1o1)*(c3o1*(-vx1 -vx3)+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cusq)); - f1_BE += c1o54* (drho1+(drho1+c1o1)*(c3o1*( vx1 -vx3)+c9o2*( vx1 -vx3)*( vx1 -vx3)-cusq)); - f1_TW += c1o54* (drho1+(drho1+c1o1)*(c3o1*(-vx1 +vx3)+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cusq)); - f1_TN += c1o54* (drho1+(drho1+c1o1)*(c3o1*( vx2+vx3)+c9o2*( vx2+vx3)*( vx2+vx3)-cusq)); - f1_BS += c1o54* (drho1+(drho1+c1o1)*(c3o1*( -vx2-vx3)+c9o2*( -vx2-vx3)*( -vx2-vx3)-cusq)); - f1_BN += c1o54* (drho1+(drho1+c1o1)*(c3o1*( vx2-vx3)+c9o2*( vx2-vx3)*( vx2-vx3)-cusq)); - f1_TS += c1o54* (drho1+(drho1+c1o1)*(c3o1*( -vx2+vx3)+c9o2*( -vx2+vx3)*( -vx2+vx3)-cusq)); - f1_TNE += c1o216*(drho1+(drho1+c1o1)*(c3o1*( vx1+vx2+vx3)+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cusq)); - f1_BSW += c1o216*(drho1+(drho1+c1o1)*(c3o1*(-vx1-vx2-vx3)+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cusq)); - f1_BNE += c1o216*(drho1+(drho1+c1o1)*(c3o1*( vx1+vx2-vx3)+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cusq)); - f1_TSW += c1o216*(drho1+(drho1+c1o1)*(c3o1*(-vx1-vx2+vx3)+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cusq)); - f1_TSE += c1o216*(drho1+(drho1+c1o1)*(c3o1*( vx1-vx2+vx3)+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cusq)); - 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 = (drho1 + rhoBC[k])/2.f; - //drho1 = drho1 - rhoBC[k]; - ////////////////////////////////////////////////////////////////////////// - - __syncthreads(); - - (D.f[DIR_P00])[ke ] = f1_W ; - (D.f[DIR_M00])[kw ] = f1_E ; - (D.f[DIR_0P0])[kn ] = f1_S ; - (D.f[DIR_0M0])[ks ] = f1_N ; - (D.f[DIR_00P])[kt ] = f1_B ; - (D.f[DIR_00M])[kb ] = f1_T ; - (D.f[DIR_PP0])[kne ] = f1_SW ; - (D.f[DIR_MM0])[ksw ] = f1_NE ; - (D.f[DIR_PM0])[kse ] = f1_NW ; - (D.f[DIR_MP0])[knw ] = f1_SE ; - (D.f[DIR_P0P])[kte ] = f1_BW ; - (D.f[DIR_M0M])[kbw ] = f1_TE ; - (D.f[DIR_P0M])[kbe ] = f1_TW ; - (D.f[DIR_M0P])[ktw ] = f1_BE ; - (D.f[DIR_0PP])[ktn ] = f1_BS ; - (D.f[DIR_0MM])[kbs ] = f1_TN ; - (D.f[DIR_0PM])[kbn ] = f1_TS ; - (D.f[DIR_0MP])[kts ] = f1_BN ; - (D.f[DIR_000])[kzero] = f1_ZERO; - (D.f[DIR_PPP])[ktne ] = f1_BSW ; - (D.f[DIR_MMP])[ktsw ] = f1_BNE ; - (D.f[DIR_PMP])[ktse ] = f1_BNW ; - (D.f[DIR_MPP])[ktnw ] = f1_BSE ; - (D.f[DIR_PPM])[kbne ] = f1_TSW ; - (D.f[DIR_MMM])[kbsw ] = f1_TNE ; - (D.f[DIR_PMM])[kbse ] = f1_TNW ; - (D.f[DIR_MPM])[kbnw ] = f1_TSE ; - } -} -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -__global__ void QPressDeviceNEQ27( - real* rhoBC, - real* distributions, - int* bcNodeIndices, - int* bcNeighborIndices, - int numberOfBCnodes, - real omega1, - unsigned int* neighborX, - unsigned int* neighborY, - unsigned int* neighborZ, - unsigned long long numberOfLBnodes, - bool isEvenTimestep) -{ - //////////////////////////////////////////////////////////////////////////////// - //! The pressure boundary condition is executed in the following steps - //! - - //////////////////////////////////////////////////////////////////////////////// - //! - Get node index coordinates from threadIdx, blockIdx, blockDim and gridDim. - //! - const unsigned nodeIndex = getNodeIndex(); - - //////////////////////////////////////////////////////////////////////////////// - //! - Run for all indices in size of boundary condition (numberOfBCnodes) - //! - if(nodeIndex < 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); - - //////////////////////////////////////////////////////////////////////////////// - //! - Set local pressure - //! - real rhoBClocal = rhoBC[nodeIndex]; - - //////////////////////////////////////////////////////////////////////////////// - //! - Set neighbor indices (necessary for indirect addressing) - //! - unsigned int KQK = bcNodeIndices[nodeIndex]; - 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 neighbor indices (necessary for indirect addressing) for neighboring node - //! - unsigned int K1QK = bcNeighborIndices[nodeIndex]; - unsigned int k1zero= K1QK; - unsigned int k1e = K1QK; - unsigned int k1w = neighborX[K1QK]; - unsigned int k1n = K1QK; - unsigned int k1s = neighborY[K1QK]; - unsigned int k1t = K1QK; - unsigned int k1b = neighborZ[K1QK]; - unsigned int k1sw = neighborY[k1w]; - unsigned int k1ne = K1QK; - unsigned int k1se = k1s; - unsigned int k1nw = k1w; - unsigned int k1bw = neighborZ[k1w]; - unsigned int k1te = K1QK; - unsigned int k1be = k1b; - unsigned int k1tw = k1w; - unsigned int k1bs = neighborZ[k1s]; - unsigned int k1tn = K1QK; - unsigned int k1bn = k1b; - unsigned int k1ts = k1s; - unsigned int k1tse = k1s; - unsigned int k1bnw = k1bw; - unsigned int k1tnw = k1w; - unsigned int k1bse = k1bs; - unsigned int k1tsw = k1sw; - unsigned int k1bne = k1b; - unsigned int k1tne = K1QK; - unsigned int k1bsw = neighborZ[k1sw]; - - //////////////////////////////////////////////////////////////////////////////// - //! - Set local distributions for neighboring node - //! - real f1_W = (dist.f[DIR_P00])[k1e ]; - real f1_E = (dist.f[DIR_M00])[k1w ]; - real f1_S = (dist.f[DIR_0P0])[k1n ]; - real f1_N = (dist.f[DIR_0M0])[k1s ]; - real f1_B = (dist.f[DIR_00P])[k1t ]; - real f1_T = (dist.f[DIR_00M])[k1b ]; - real f1_SW = (dist.f[DIR_PP0])[k1ne ]; - real f1_NE = (dist.f[DIR_MM0])[k1sw ]; - real f1_NW = (dist.f[DIR_PM0])[k1se ]; - real f1_SE = (dist.f[DIR_MP0])[k1nw ]; - real f1_BW = (dist.f[DIR_P0P])[k1te ]; - real f1_TE = (dist.f[DIR_M0M])[k1bw ]; - real f1_TW = (dist.f[DIR_P0M])[k1be ]; - real f1_BE = (dist.f[DIR_M0P])[k1tw ]; - real f1_BS = (dist.f[DIR_0PP])[k1tn ]; - real f1_TN = (dist.f[DIR_0MM])[k1bs ]; - real f1_TS = (dist.f[DIR_0PM])[k1bn ]; - real f1_BN = (dist.f[DIR_0MP])[k1ts ]; - real f1_ZERO = (dist.f[DIR_000])[k1zero]; - real f1_BSW = (dist.f[DIR_PPP])[k1tne ]; - real f1_BNE = (dist.f[DIR_MMP])[k1tsw ]; - real f1_BNW = (dist.f[DIR_PMP])[k1tse ]; - real f1_BSE = (dist.f[DIR_MPP])[k1tnw ]; - real f1_TSW = (dist.f[DIR_PPM])[k1bne ]; - real f1_TNE = (dist.f[DIR_MMM])[k1bsw ]; - real f1_TNW = (dist.f[DIR_PMM])[k1bse ]; - real f1_TSE = (dist.f[DIR_MPM])[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[DIR_000])[kzero]); - - 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 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); - - 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); - - //////////////////////////////////////////////////////////////////////////////// - //! 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)); - f1_N -= c2o27* (drho1+(drho1+c1o1)*(c3o1*( vx2 )+c9o2*( vx2 )*( vx2 )-cusq)); - f1_S -= c2o27* (drho1+(drho1+c1o1)*(c3o1*( -vx2 )+c9o2*( -vx2 )*( -vx2 )-cusq)); - f1_T -= c2o27* (drho1+(drho1+c1o1)*(c3o1*( vx3)+c9o2*( vx3)*( vx3)-cusq)); - f1_B -= c2o27* (drho1+(drho1+c1o1)*(c3o1*( -vx3)+c9o2*( -vx3)*( -vx3)-cusq)); - f1_NE -= c1o54* (drho1+(drho1+c1o1)*(c3o1*( vx1+vx2 )+c9o2*( vx1+vx2 )*( vx1+vx2 )-cusq)); - f1_SW -= c1o54* (drho1+(drho1+c1o1)*(c3o1*(-vx1-vx2 )+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cusq)); - f1_SE -= c1o54* (drho1+(drho1+c1o1)*(c3o1*( vx1-vx2 )+c9o2*( vx1-vx2 )*( vx1-vx2 )-cusq)); - f1_NW -= c1o54* (drho1+(drho1+c1o1)*(c3o1*(-vx1+vx2 )+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cusq)); - f1_TE -= c1o54* (drho1+(drho1+c1o1)*(c3o1*( vx1 +vx3)+c9o2*( vx1 +vx3)*( vx1 +vx3)-cusq)); - f1_BW -= c1o54* (drho1+(drho1+c1o1)*(c3o1*(-vx1 -vx3)+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cusq)); - f1_BE -= c1o54* (drho1+(drho1+c1o1)*(c3o1*( vx1 -vx3)+c9o2*( vx1 -vx3)*( vx1 -vx3)-cusq)); - f1_TW -= c1o54* (drho1+(drho1+c1o1)*(c3o1*(-vx1 +vx3)+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cusq)); - f1_TN -= c1o54* (drho1+(drho1+c1o1)*(c3o1*( vx2+vx3)+c9o2*( vx2+vx3)*( vx2+vx3)-cusq)); - f1_BS -= c1o54* (drho1+(drho1+c1o1)*(c3o1*( -vx2-vx3)+c9o2*( -vx2-vx3)*( -vx2-vx3)-cusq)); - f1_BN -= c1o54* (drho1+(drho1+c1o1)*(c3o1*( vx2-vx3)+c9o2*( vx2-vx3)*( vx2-vx3)-cusq)); - f1_TS -= c1o54* (drho1+(drho1+c1o1)*(c3o1*( -vx2+vx3)+c9o2*( -vx2+vx3)*( -vx2+vx3)-cusq)); - f1_TNE -= c1o216*(drho1+(drho1+c1o1)*(c3o1*( vx1+vx2+vx3)+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cusq)); - f1_BSW -= c1o216*(drho1+(drho1+c1o1)*(c3o1*(-vx1-vx2-vx3)+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cusq)); - f1_BNE -= c1o216*(drho1+(drho1+c1o1)*(c3o1*( vx1+vx2-vx3)+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cusq)); - f1_TSW -= c1o216*(drho1+(drho1+c1o1)*(c3o1*(-vx1-vx2+vx3)+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cusq)); - f1_TSE -= c1o216*(drho1+(drho1+c1o1)*(c3o1*( vx1-vx2+vx3)+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cusq)); - 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)); - - //////////////////////////////////////////////////////////////////////////////// - //! 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)); - f1_N += c2o27* (drho1+(drho1+c1o1)*(c3o1*( vx2 )+c9o2*( vx2 )*( vx2 )-cusq)); - f1_S += c2o27* (drho1+(drho1+c1o1)*(c3o1*( -vx2 )+c9o2*( -vx2 )*( -vx2 )-cusq)); - f1_T += c2o27* (drho1+(drho1+c1o1)*(c3o1*( vx3)+c9o2*( vx3)*( vx3)-cusq)); - f1_B += c2o27* (drho1+(drho1+c1o1)*(c3o1*( -vx3)+c9o2*( -vx3)*( -vx3)-cusq)); - f1_NE += c1o54* (drho1+(drho1+c1o1)*(c3o1*( vx1+vx2 )+c9o2*( vx1+vx2 )*( vx1+vx2 )-cusq)); - f1_SW += c1o54* (drho1+(drho1+c1o1)*(c3o1*(-vx1-vx2 )+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cusq)); - f1_SE += c1o54* (drho1+(drho1+c1o1)*(c3o1*( vx1-vx2 )+c9o2*( vx1-vx2 )*( vx1-vx2 )-cusq)); - f1_NW += c1o54* (drho1+(drho1+c1o1)*(c3o1*(-vx1+vx2 )+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cusq)); - f1_TE += c1o54* (drho1+(drho1+c1o1)*(c3o1*( vx1 +vx3)+c9o2*( vx1 +vx3)*( vx1 +vx3)-cusq)); - f1_BW += c1o54* (drho1+(drho1+c1o1)*(c3o1*(-vx1 -vx3)+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cusq)); - f1_BE += c1o54* (drho1+(drho1+c1o1)*(c3o1*( vx1 -vx3)+c9o2*( vx1 -vx3)*( vx1 -vx3)-cusq)); - f1_TW += c1o54* (drho1+(drho1+c1o1)*(c3o1*(-vx1 +vx3)+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cusq)); - f1_TN += c1o54* (drho1+(drho1+c1o1)*(c3o1*( vx2+vx3)+c9o2*( vx2+vx3)*( vx2+vx3)-cusq)); - f1_BS += c1o54* (drho1+(drho1+c1o1)*(c3o1*( -vx2-vx3)+c9o2*( -vx2-vx3)*( -vx2-vx3)-cusq)); - f1_BN += c1o54* (drho1+(drho1+c1o1)*(c3o1*( vx2-vx3)+c9o2*( vx2-vx3)*( vx2-vx3)-cusq)); - f1_TS += c1o54* (drho1+(drho1+c1o1)*(c3o1*( -vx2+vx3)+c9o2*( -vx2+vx3)*( -vx2+vx3)-cusq)); - f1_TNE += c1o216*(drho1+(drho1+c1o1)*(c3o1*( vx1+vx2+vx3)+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cusq)); - f1_BSW += c1o216*(drho1+(drho1+c1o1)*(c3o1*(-vx1-vx2-vx3)+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cusq)); - f1_BNE += c1o216*(drho1+(drho1+c1o1)*(c3o1*( vx1+vx2-vx3)+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cusq)); - f1_TSW += c1o216*(drho1+(drho1+c1o1)*(c3o1*(-vx1-vx2+vx3)+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cusq)); - f1_TSE += c1o216*(drho1+(drho1+c1o1)*(c3o1*( vx1-vx2+vx3)+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cusq)); - 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)); - - ////////////////////////////////////////////////////////////////////////// - - __syncthreads(); - - //////////////////////////////////////////////////////////////////////////////// - //! write the new distributions to the bc nodes - //! - (dist.f[DIR_P00])[ke ] = f1_W ; - (dist.f[DIR_M00])[kw ] = f1_E ; - (dist.f[DIR_0P0])[kn ] = f1_S ; - (dist.f[DIR_0M0])[ks ] = f1_N ; - (dist.f[DIR_00P])[kt ] = f1_B ; - (dist.f[DIR_00M])[kb ] = f1_T ; - (dist.f[DIR_PP0])[kne ] = f1_SW ; - (dist.f[DIR_MM0])[ksw ] = f1_NE ; - (dist.f[DIR_PM0])[kse ] = f1_NW ; - (dist.f[DIR_MP0])[knw ] = f1_SE ; - (dist.f[DIR_P0P])[kte ] = f1_BW ; - (dist.f[DIR_M0M])[kbw ] = f1_TE ; - (dist.f[DIR_P0M])[kbe ] = f1_TW ; - (dist.f[DIR_M0P])[ktw ] = f1_BE ; - (dist.f[DIR_0PP])[ktn ] = f1_BS ; - (dist.f[DIR_0MM])[kbs ] = f1_TN ; - (dist.f[DIR_0PM])[kbn ] = f1_TS ; - (dist.f[DIR_0MP])[kts ] = f1_BN ; - (dist.f[DIR_000])[kzero] = f1_ZERO; - (dist.f[DIR_PPP])[ktne ] = f1_BSW ; - (dist.f[DIR_MMP])[ktsw ] = f1_BNE ; - (dist.f[DIR_PMP])[ktse ] = f1_BNW ; - (dist.f[DIR_MPP])[ktnw ] = f1_BSE ; - (dist.f[DIR_PPM])[kbne ] = f1_TSW ; - (dist.f[DIR_MMM])[kbsw ] = f1_TNE ; - (dist.f[DIR_PMM])[kbse ] = f1_TNW ; - (dist.f[DIR_MPM])[kbnw ] = f1_TSE ; - } -} -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//////////////////////////////////////////////////////////////////////////////// -__global__ void LB_BC_Press_East27( - int nx, - int ny, - int tz, - unsigned int* bcMatD, - unsigned int* neighborX, - unsigned int* neighborY, - unsigned int* neighborZ, - real* DD, - unsigned long long numberOfLBnodes, - bool isEvenTimestep) -{ - //thread-index - int ty = blockIdx.x; - int tx = threadIdx.x; - - int k, k1, nxny; // Zugriff auf arrays im device - - int x = tx + STARTOFFX; // Globaler x-Index - int y = ty + STARTOFFY; // Globaler y-Index - int z = tz + STARTOFFZ; // Globaler z-Index - - k = nx*(ny*z + y) + x; - nxny = nx*ny; - k1 = k-nxny; - - if( bcMatD[k] == GEO_PRESS && bcMatD[k1] == GEO_FLUID) - { - Distributions27 D; - if (isEvenTimestep==true) - { - D.f[DIR_P00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_M00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_PMP * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_MPM * numberOfLBnodes]; - } - else - { - D.f[DIR_M00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_P00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_MPM * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_PMP * numberOfLBnodes]; - } - //////////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - //index - unsigned int kzero= k; - unsigned int ke = k; - unsigned int kw = neighborX[k]; - unsigned int kn = k; - unsigned int ks = neighborY[k]; - unsigned int kt = k; - unsigned int kb = neighborZ[k]; - unsigned int ksw = neighborY[kw]; - unsigned int kne = k; - unsigned int kse = ks; - unsigned int knw = kw; - unsigned int kbw = neighborZ[kw]; - unsigned int kte = k; - unsigned int kbe = kb; - unsigned int ktw = kw; - unsigned int kbs = neighborZ[ks]; - unsigned int ktn = k; - 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 = k; - unsigned int kbsw = neighborZ[ksw]; - //unsigned int kzero= k; - //unsigned int ke = k; - //unsigned int kw = k + 1; - //unsigned int kn = k; - //unsigned int ks = k + nx; - //unsigned int kt = k; - //unsigned int kb = k + nxny; - //unsigned int ksw = k + nx + 1; - //unsigned int kne = k; - //unsigned int kse = k + nx; - //unsigned int knw = k + 1; - //unsigned int kbw = k + nxny + 1; - //unsigned int kte = k; - //unsigned int kbe = k + nxny; - //unsigned int ktw = k + 1; - //unsigned int kbs = k + nxny + nx; - //unsigned int ktn = k; - //unsigned int kbn = k + nxny; - //unsigned int kts = k + nx; - //unsigned int ktse = k + nx; - //unsigned int kbnw = k + nxny + 1; - //unsigned int ktnw = k + 1; - //unsigned int kbse = k + nxny + nx; - //unsigned int ktsw = k + nx + 1; - //unsigned int kbne = k + nxny; - //unsigned int ktne = k; - //unsigned int kbsw = k + nxny + nx + 1; - //////////////////////////////////////////////////////////////////////////////// - //index1 - unsigned int k1zero= k1; - unsigned int k1e = k1; - unsigned int k1w = neighborX[k1]; - unsigned int k1n = k1; - unsigned int k1s = neighborY[k1]; - unsigned int k1t = k1; - unsigned int k1b = neighborZ[k1]; - unsigned int k1sw = neighborY[k1w]; - unsigned int k1ne = k1; - unsigned int k1se = k1s; - unsigned int k1nw = k1w; - unsigned int k1bw = neighborZ[k1w]; - unsigned int k1te = k1; - unsigned int k1be = k1b; - unsigned int k1tw = k1w; - unsigned int k1bs = neighborZ[k1s]; - unsigned int k1tn = k1; - unsigned int k1bn = k1b; - unsigned int k1ts = k1s; - unsigned int k1tse = k1s; - unsigned int k1bnw = k1bw; - unsigned int k1tnw = k1w; - unsigned int k1bse = k1bs; - unsigned int k1tsw = k1sw; - unsigned int k1bne = k1b; - unsigned int k1tne = k1; - unsigned int k1bsw = neighborZ[k1sw]; - //unsigned int k1zero= k1; - //unsigned int k1e = k1; - //unsigned int k1w = k1 + 1; - //unsigned int k1n = k1; - //unsigned int k1s = k1 + nx; - //unsigned int k1t = k1; - //unsigned int k1b = k1 + nxny; - //unsigned int k1sw = k1 + nx + 1; - //unsigned int k1ne = k1; - //unsigned int k1se = k1 + nx; - //unsigned int k1nw = k1 + 1; - //unsigned int k1bw = k1 + nxny + 1; - //unsigned int k1te = k1; - //unsigned int k1be = k1 + nxny; - //unsigned int k1tw = k1 + 1; - //unsigned int k1bs = k1 + nxny + nx; - //unsigned int k1tn = k1; - //unsigned int k1bn = k1 + nxny; - //unsigned int k1ts = k1 + nx; - //unsigned int k1tse = k1 + nx; - //unsigned int k1bnw = k1 + nxny + 1; - //unsigned int k1tnw = k1 + 1; - //unsigned int k1bse = k1 + nxny + nx; - //unsigned int k1tsw = k1 + nx + 1; - //unsigned int k1bne = k1 + nxny; - //unsigned int k1tne = k1; - //unsigned int k1bsw = k1 + nxny + nx + 1; - //////////////////////////////////////////////////////////////////////////////// - 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[DIR_P00])[k1e ]; - f1_E = (D.f[DIR_M00])[k1w ]; - f1_S = (D.f[DIR_0P0])[k1n ]; - f1_N = (D.f[DIR_0M0])[k1s ]; - f1_B = (D.f[DIR_00P])[k1t ]; - f1_T = (D.f[DIR_00M])[k1b ]; - f1_SW = (D.f[DIR_PP0])[k1ne ]; - f1_NE = (D.f[DIR_MM0])[k1sw ]; - f1_NW = (D.f[DIR_PM0])[k1se ]; - f1_SE = (D.f[DIR_MP0])[k1nw ]; - f1_BW = (D.f[DIR_P0P])[k1te ]; - f1_TE = (D.f[DIR_M0M])[k1bw ]; - f1_TW = (D.f[DIR_P0M])[k1be ]; - f1_BE = (D.f[DIR_M0P])[k1tw ]; - f1_BS = (D.f[DIR_0PP])[k1tn ]; - f1_TN = (D.f[DIR_0MM])[k1bs ]; - f1_TS = (D.f[DIR_0PM])[k1bn ]; - f1_BN = (D.f[DIR_0MP])[k1ts ]; - f1_ZERO = (D.f[DIR_000])[k1zero]; - f1_BSW = (D.f[DIR_PPP])[k1tne ]; - f1_BNE = (D.f[DIR_MMP])[k1tsw ]; - f1_BNW = (D.f[DIR_PMP])[k1tse ]; - f1_BSE = (D.f[DIR_MPP])[k1tnw ]; - f1_TSW = (D.f[DIR_PPM])[k1bne ]; - f1_TNE = (D.f[DIR_MMM])[k1bsw ]; - f1_TNW = (D.f[DIR_PMM])[k1bse ]; - f1_TSE = (D.f[DIR_MPM])[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[DIR_P00])[ke ] = f1_W -c2o27*drho1; - (D.f[DIR_M00])[kw ] = f1_E -c2o27*drho1; - (D.f[DIR_0P0])[kn ] = f1_S -c2o27*drho1; - (D.f[DIR_0M0])[ks ] = f1_N -c2o27*drho1; - (D.f[DIR_00P])[kt ] = f1_B -c2o27*drho1; - (D.f[DIR_00M])[kb ] = f1_T -c2o27*drho1; - (D.f[DIR_PP0])[kne ] = f1_SW -c1o54*drho1; - (D.f[DIR_MM0])[ksw ] = f1_NE -c1o54*drho1; - (D.f[DIR_PM0])[kse ] = f1_NW -c1o54*drho1; - (D.f[DIR_MP0])[knw ] = f1_SE -c1o54*drho1; - (D.f[DIR_P0P])[kte ] = f1_BW -c1o54*drho1; - (D.f[DIR_M0M])[kbw ] = f1_TE -c1o54*drho1; - (D.f[DIR_P0M])[kbe ] = f1_TW -c1o54*drho1; - (D.f[DIR_M0P])[ktw ] = f1_BE -c1o54*drho1; - (D.f[DIR_0PP])[ktn ] = f1_BS -c1o54*drho1; - (D.f[DIR_0MM])[kbs ] = f1_TN -c1o54*drho1; - (D.f[DIR_0PM])[kbn ] = f1_TS -c1o54*drho1; - (D.f[DIR_0MP])[kts ] = f1_BN -c1o54*drho1; - (D.f[DIR_000])[kzero] = f1_ZERO-c8o27*drho1; - (D.f[DIR_PPP])[ktne ] = f1_BSW -c1o216*drho1; - (D.f[DIR_MMP])[ktsw ] = f1_BNE -c1o216*drho1; - (D.f[DIR_PMP])[ktse ] = f1_BNW -c1o216*drho1; - (D.f[DIR_MPP])[ktnw ] = f1_BSE -c1o216*drho1; - (D.f[DIR_PPM])[kbne ] = f1_TSW -c1o216*drho1; - (D.f[DIR_MMM])[kbsw ] = f1_TNE -c1o216*drho1; - (D.f[DIR_PMM])[kbse ] = f1_TNW -c1o216*drho1; - (D.f[DIR_MPM])[kbnw ] = f1_TSE -c1o216*drho1; - } - __syncthreads(); -} -////////////////////////////////////////////////////////////////////////////// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -////////////////////////////////////////////////////////////////////////////// -__global__ void QPressDevice27( - real* rhoBC, - real* DD, - int* k_Q, - real* QQ, - unsigned int numberOfBCnodes, - real om1, - unsigned int* neighborX, - unsigned int* neighborY, - unsigned int* neighborZ, - unsigned long long numberOfLBnodes, - bool isEvenTimestep) -{ - Distributions27 D; - if (isEvenTimestep==true) - { - D.f[DIR_P00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_M00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_PMP * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_MPM * numberOfLBnodes]; - } - else - { - D.f[DIR_M00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_P00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_MPM * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_PMP * numberOfLBnodes]; - } - //////////////////////////////////////////////////////////////////////////////// - const unsigned x = threadIdx.x; // Globaler x-Index - const unsigned y = blockIdx.x; // Globaler y-Index - const unsigned z = blockIdx.y; // Globaler z-Index - - const unsigned nx = blockDim.x; - const unsigned ny = gridDim.x; - - const unsigned k = nx*(ny*z + y) + x; - ////////////////////////////////////////////////////////////////////////// - - if(k<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[DIR_P00 * numberOfBCnodes]; - q_dirW = &QQ[DIR_M00 * numberOfBCnodes]; - q_dirN = &QQ[DIR_0P0 * numberOfBCnodes]; - q_dirS = &QQ[DIR_0M0 * numberOfBCnodes]; - q_dirT = &QQ[DIR_00P * numberOfBCnodes]; - q_dirB = &QQ[DIR_00M * numberOfBCnodes]; - q_dirNE = &QQ[DIR_PP0 * numberOfBCnodes]; - q_dirSW = &QQ[DIR_MM0 * numberOfBCnodes]; - q_dirSE = &QQ[DIR_PM0 * numberOfBCnodes]; - q_dirNW = &QQ[DIR_MP0 * numberOfBCnodes]; - q_dirTE = &QQ[DIR_P0P * numberOfBCnodes]; - q_dirBW = &QQ[DIR_M0M * numberOfBCnodes]; - q_dirBE = &QQ[DIR_P0M * numberOfBCnodes]; - q_dirTW = &QQ[DIR_M0P * numberOfBCnodes]; - q_dirTN = &QQ[DIR_0PP * numberOfBCnodes]; - q_dirBS = &QQ[DIR_0MM * numberOfBCnodes]; - q_dirBN = &QQ[DIR_0PM * numberOfBCnodes]; - q_dirTS = &QQ[DIR_0MP * numberOfBCnodes]; - q_dirTNE = &QQ[DIR_PPP * numberOfBCnodes]; - q_dirTSW = &QQ[DIR_MMP * numberOfBCnodes]; - q_dirTSE = &QQ[DIR_PMP * numberOfBCnodes]; - q_dirTNW = &QQ[DIR_MPP * numberOfBCnodes]; - q_dirBNE = &QQ[DIR_PPM * numberOfBCnodes]; - q_dirBSW = &QQ[DIR_MMM * numberOfBCnodes]; - q_dirBSE = &QQ[DIR_PMM * numberOfBCnodes]; - q_dirBNW = &QQ[DIR_MPM * 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]; - 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 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[DIR_P00])[ke ]; - f_E = (D.f[DIR_M00])[kw ]; - f_S = (D.f[DIR_0P0])[kn ]; - f_N = (D.f[DIR_0M0])[ks ]; - f_B = (D.f[DIR_00P])[kt ]; - f_T = (D.f[DIR_00M])[kb ]; - f_SW = (D.f[DIR_PP0])[kne ]; - f_NE = (D.f[DIR_MM0])[ksw ]; - f_NW = (D.f[DIR_PM0])[kse ]; - f_SE = (D.f[DIR_MP0])[knw ]; - f_BW = (D.f[DIR_P0P])[kte ]; - f_TE = (D.f[DIR_M0M])[kbw ]; - f_TW = (D.f[DIR_P0M])[kbe ]; - f_BE = (D.f[DIR_M0P])[ktw ]; - f_BS = (D.f[DIR_0PP])[ktn ]; - f_TN = (D.f[DIR_0MM])[kbs ]; - f_TS = (D.f[DIR_0PM])[kbn ]; - f_BN = (D.f[DIR_0MP])[kts ]; - f_BSW = (D.f[DIR_PPP])[ktne ]; - f_BNE = (D.f[DIR_MMP])[ktsw ]; - f_BNW = (D.f[DIR_PMP])[ktse ]; - f_BSE = (D.f[DIR_MPP])[ktnw ]; - f_TSW = (D.f[DIR_PPM])[kbne ]; - f_TNE = (D.f[DIR_MMM])[kbsw ]; - f_TNW = (D.f[DIR_PMM])[kbse ]; - f_TSE = (D.f[DIR_MPM])[kbnw ]; - //////////////////////////////////////////////////////////////////////////////// - real q, vx1, vx2, vx3, drho; - 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); - - - 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); - - 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); - ////////////////////////////////////////////////////////////////////////// - //////////////////////////////////////////////////////////////////////////////// - drho = rhoBC[k]; - //deltaRho = (rhoBC[k] + one) / (deltaRho + one); - //////////////////////////////////////////////////////////////////////////////// - if (isEvenTimestep==false) - { - D.f[DIR_P00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_M00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_PMP * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_MPM * numberOfLBnodes]; - } - else - { - D.f[DIR_M00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_P00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_MPM * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_PMP * numberOfLBnodes]; - } - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - q = q_dirE[k]; - if (q>=c0o1 && q<=c1o1) - { - (D.f[DIR_M00])[kw]=c2o27* (drho+c3o1*(-vx1 )+c9o2*(-vx1 )*(-vx1 )-cu_sq); - //(D.f[DIR_P00])[ke]=c2over27* (drho+three*( vx1 )+c9over2*( vx1 )*( vx1 )-cu_sq); - } - - q = q_dirW[k]; - if (q>=c0o1 && q<=c1o1) - { - (D.f[DIR_P00])[ke]=c2o27* (drho+c3o1*( vx1 )+c9o2*( vx1 )*( vx1 )-cu_sq); - //(D.f[DIR_M00])[kw]=c2over27* (drho+three*(-vx1 )+c9over2*(-vx1 )*(-vx1 )-cu_sq); - } - - q = q_dirN[k]; - if (q>=c0o1 && q<=c1o1) - { - (D.f[DIR_0M0])[ks]=c2o27* (drho+c3o1*( -vx2 )+c9o2*( -vx2 )*( -vx2 )-cu_sq); - //(D.f[DIR_0P0])[kn]=c2over27* (drho+three*( vx2 )+c9over2*( vx2 )*( vx2 )-cu_sq); - } - - q = q_dirS[k]; - if (q>=c0o1 && q<=c1o1) - { - (D.f[DIR_0P0])[kn]=c2o27* (drho+c3o1*( vx2 )+c9o2*( vx2 )*( vx2 )-cu_sq); - //(D.f[DIR_0M0])[ks]=c2over27* (drho+three*( -vx2 )+c9over2*( -vx2 )*( -vx2 )-cu_sq); - } - - q = q_dirT[k]; - if (q>=c0o1 && q<=c1o1) - { - (D.f[DIR_00M])[kb]=c2o27* (drho+c3o1*( -vx3)+c9o2*( -vx3)*( -vx3)-cu_sq); - //(D.f[DIR_00P])[kt]=c2over27* (drho+three*( vx3)+c9over2*( vx3)*( vx3)-cu_sq); - } - - q = q_dirB[k]; - if (q>=c0o1 && q<=c1o1) - { - (D.f[DIR_00P])[kt]=c2o27* (drho+c3o1*( vx3)+c9o2*( vx3)*( vx3)-cu_sq); - //(D.f[DIR_00M])[kb]=c2over27* (drho+three*( -vx3)+c9over2*( -vx3)*( -vx3)-cu_sq); - } - - q = q_dirNE[k]; - if (q>=c0o1 && q<=c1o1) - { - (D.f[DIR_MM0])[ksw]=c1o54* (drho+c3o1*(-vx1-vx2 )+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq); - //(D.f[DIR_PP0])[kne]=c1over54* (drho+three*( vx1+vx2 )+c9over2*( vx1+vx2 )*( vx1+vx2 )-cu_sq); - } - - q = q_dirSW[k]; - if (q>=c0o1 && q<=c1o1) - { - (D.f[DIR_PP0])[kne]=c1o54* (drho+c3o1*( vx1+vx2 )+c9o2*( vx1+vx2 )*( vx1+vx2 )-cu_sq); - //(D.f[DIR_MM0])[ksw]=c1over54* (drho+three*(-vx1-vx2 )+c9over2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq); - } - - q = q_dirSE[k]; - if (q>=c0o1 && q<=c1o1) - { - (D.f[DIR_MP0])[knw]=c1o54* (drho+c3o1*(-vx1+vx2 )+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq); - //(D.f[DIR_PM0])[kse]=c1over54* (drho+three*( vx1-vx2 )+c9over2*( vx1-vx2 )*( vx1-vx2 )-cu_sq); - } - - q = q_dirNW[k]; - if (q>=c0o1 && q<=c1o1) - { - (D.f[DIR_PM0])[kse]=c1o54* (drho+c3o1*( vx1-vx2 )+c9o2*( vx1-vx2 )*( vx1-vx2 )-cu_sq); - //(D.f[DIR_MP0])[knw]=c1over54* (drho+three*(-vx1+vx2 )+c9over2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq); - } - - q = q_dirTE[k]; - if (q>=c0o1 && q<=c1o1) - { - (D.f[DIR_M0M])[kbw]=c1o54* (drho+c3o1*(-vx1 -vx3)+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq); - //(D.f[DIR_P0P])[kte]=c1over54* (drho+three*( vx1 +vx3)+c9over2*( vx1 +vx3)*( vx1 +vx3)-cu_sq); - } - - q = q_dirBW[k]; - if (q>=c0o1 && q<=c1o1) - { - (D.f[DIR_P0P])[kte]=c1o54* (drho+c3o1*( vx1 +vx3)+c9o2*( vx1 +vx3)*( vx1 +vx3)-cu_sq); - //(D.f[DIR_M0M])[kbw]=c1over54* (drho+three*(-vx1 -vx3)+c9over2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq); - } - - q = q_dirBE[k]; - if (q>=c0o1 && q<=c1o1) - { - (D.f[DIR_M0P])[ktw]=c1o54* (drho+c3o1*(-vx1 +vx3)+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq); - //(D.f[DIR_P0M])[kbe]=c1over54* (drho+three*( vx1 -vx3)+c9over2*( vx1 -vx3)*( vx1 -vx3)-cu_sq); - } - - q = q_dirTW[k]; - if (q>=c0o1 && q<=c1o1) - { - (D.f[DIR_P0M])[kbe]=c1o54* (drho+c3o1*( vx1 -vx3)+c9o2*( vx1 -vx3)*( vx1 -vx3)-cu_sq); - //(D.f[DIR_M0P])[ktw]=c1over54* (drho+three*(-vx1 +vx3)+c9over2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq); - } - - q = q_dirTN[k]; - if (q>=c0o1 && q<=c1o1) - { - (D.f[DIR_0MM])[kbs]=c1o54* (drho+c3o1*( -vx2-vx3)+c9o2*( -vx2-vx3)*( -vx2-vx3)-cu_sq); - //(D.f[DIR_0PP])[ktn]=c1over54* (drho+three*( vx2+vx3)+c9over2*( vx2+vx3)*( vx2+vx3)-cu_sq); - } - - q = q_dirBS[k]; - if (q>=c0o1 && q<=c1o1) - { - (D.f[DIR_0PP])[ktn]=c1o54* (drho+c3o1*( vx2+vx3)+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq); - //(D.f[DIR_0MM])[kbs]=c1over54* (drho+three*( -vx2-vx3)+c9over2*( -vx2-vx3)*( -vx2-vx3)-cu_sq); - } - - q = q_dirBN[k]; - if (q>=c0o1 && q<=c1o1) - { - (D.f[DIR_0MP])[kts]=c1o54* (drho+c3o1*( -vx2+vx3)+c9o2*( -vx2+vx3)*( -vx2+vx3)-cu_sq); - //(D.f[DIR_0PM])[kbn]=c1over54* (drho+three*( vx2-vx3)+c9over2*( vx2-vx3)*( vx2-vx3)-cu_sq); - } - - q = q_dirTS[k]; - if (q>=c0o1 && q<=c1o1) - { - (D.f[DIR_0PM])[kbn]=c1o54* (drho+c3o1*( vx2-vx3)+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq); - //(D.f[DIR_0MP])[kts]=c1over54* (drho+three*( -vx2+vx3)+c9over2*( -vx2+vx3)*( -vx2+vx3)-cu_sq); - } - - q = q_dirTNE[k]; - if (q>=c0o1 && q<=c1o1) - { - (D.f[DIR_MMM])[kbsw]=c1o216*(drho+c3o1*(-vx1-vx2-vx3)+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq); - //(D.f[DIR_PPP])[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[DIR_PPP])[ktne]=c1o216*(drho+c3o1*( vx1+vx2+vx3)+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq); - //(D.f[DIR_MMM])[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[DIR_MMP])[ktsw]=c1o216*(drho+c3o1*(-vx1-vx2+vx3)+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq); - //(D.f[DIR_PPM])[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[DIR_PPM])[kbne]=c1o216*(drho+c3o1*( vx1+vx2-vx3)+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq); - //(D.f[DIR_MMP])[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[DIR_MPM])[kbnw]=c1o216*(drho+c3o1*(-vx1+vx2-vx3)+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq); - //(D.f[DIR_PMP])[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[DIR_PMP])[ktse]=c1o216*(drho+c3o1*( vx1-vx2+vx3)+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq); - //(D.f[DIR_MPM])[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[DIR_MPP])[ktnw]=c1o216*(drho+c3o1*(-vx1+vx2+vx3)+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq); - //(D.f[DIR_PMM])[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[DIR_PMM])[kbse]=c1o216*(drho+c3o1*( vx1-vx2-vx3)+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq); - //(D.f[DIR_MPP])[ktnw]=c1over216*(drho+three*(-vx1+vx2+vx3)+c9over2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq); - } - } -} -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -////////////////////////////////////////////////////////////////////////////// -__global__ void QPressDeviceAntiBB27( - real* rhoBC, - real* vx, - real* vy, - real* vz, - real* DD, - int* k_Q, - real* QQ, - int numberOfBCnodes, - real om1, - unsigned int* neighborX, - unsigned int* neighborY, - unsigned int* neighborZ, - unsigned long long numberOfLBnodes, - bool isEvenTimestep) -{ - Distributions27 D; - if (isEvenTimestep==true) - { - D.f[DIR_P00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_M00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_PMP * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_MPM * numberOfLBnodes]; - } - else - { - D.f[DIR_M00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_P00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_MPM * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_PMP * numberOfLBnodes]; - } - //////////////////////////////////////////////////////////////////////////////// - const unsigned x = threadIdx.x; // Globaler x-Index - const unsigned y = blockIdx.x; // Globaler y-Index - const unsigned z = blockIdx.y; // Globaler z-Index - - const unsigned nx = blockDim.x; - const unsigned ny = gridDim.x; - - const unsigned k = nx*(ny*z + y) + x; - ////////////////////////////////////////////////////////////////////////// - - if(k<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[DIR_P00 * numberOfBCnodes]; - q_dirW = &QQ[DIR_M00 * numberOfBCnodes]; - q_dirN = &QQ[DIR_0P0 * numberOfBCnodes]; - q_dirS = &QQ[DIR_0M0 * numberOfBCnodes]; - q_dirT = &QQ[DIR_00P * numberOfBCnodes]; - q_dirB = &QQ[DIR_00M * numberOfBCnodes]; - q_dirNE = &QQ[DIR_PP0 * numberOfBCnodes]; - q_dirSW = &QQ[DIR_MM0 * numberOfBCnodes]; - q_dirSE = &QQ[DIR_PM0 * numberOfBCnodes]; - q_dirNW = &QQ[DIR_MP0 * numberOfBCnodes]; - q_dirTE = &QQ[DIR_P0P * numberOfBCnodes]; - q_dirBW = &QQ[DIR_M0M * numberOfBCnodes]; - q_dirBE = &QQ[DIR_P0M * numberOfBCnodes]; - q_dirTW = &QQ[DIR_M0P * numberOfBCnodes]; - q_dirTN = &QQ[DIR_0PP * numberOfBCnodes]; - q_dirBS = &QQ[DIR_0MM * numberOfBCnodes]; - q_dirBN = &QQ[DIR_0PM * numberOfBCnodes]; - q_dirTS = &QQ[DIR_0MP * numberOfBCnodes]; - q_dirTNE = &QQ[DIR_PPP * numberOfBCnodes]; - q_dirTSW = &QQ[DIR_MMP * numberOfBCnodes]; - q_dirTSE = &QQ[DIR_PMP * numberOfBCnodes]; - q_dirTNW = &QQ[DIR_MPP * numberOfBCnodes]; - q_dirBNE = &QQ[DIR_PPM * numberOfBCnodes]; - q_dirBSW = &QQ[DIR_MMM * numberOfBCnodes]; - q_dirBSE = &QQ[DIR_PMM * numberOfBCnodes]; - q_dirBNW = &QQ[DIR_MPM * 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]; - 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 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[DIR_P00])[ke ]; - f_E = (D.f[DIR_M00])[kw ]; - f_S = (D.f[DIR_0P0])[kn ]; - f_N = (D.f[DIR_0M0])[ks ]; - f_B = (D.f[DIR_00P])[kt ]; - f_T = (D.f[DIR_00M])[kb ]; - f_SW = (D.f[DIR_PP0])[kne ]; - f_NE = (D.f[DIR_MM0])[ksw ]; - f_NW = (D.f[DIR_PM0])[kse ]; - f_SE = (D.f[DIR_MP0])[knw ]; - f_BW = (D.f[DIR_P0P])[kte ]; - f_TE = (D.f[DIR_M0M])[kbw ]; - f_TW = (D.f[DIR_P0M])[kbe ]; - f_BE = (D.f[DIR_M0P])[ktw ]; - f_BS = (D.f[DIR_0PP])[ktn ]; - f_TN = (D.f[DIR_0MM])[kbs ]; - f_TS = (D.f[DIR_0PM])[kbn ]; - f_BN = (D.f[DIR_0MP])[kts ]; - f_BSW = (D.f[DIR_PPP])[ktne ]; - f_BNE = (D.f[DIR_MMP])[ktsw ]; - f_BNW = (D.f[DIR_PMP])[ktse ]; - f_BSE = (D.f[DIR_MPP])[ktnw ]; - f_TSW = (D.f[DIR_PPM])[kbne ]; - f_TNE = (D.f[DIR_MMM])[kbsw ]; - f_TNW = (D.f[DIR_PMM])[kbse ]; - f_TSE = (D.f[DIR_MPM])[kbnw ]; - f_ZERO = (D.f[DIR_000])[kzero]; - //////////////////////////////////////////////////////////////////////////////// - //real vx1, vx2, vx3, drho; - //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); - - - //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); - - //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); - ////////////////////////////////////////////////////////////////////////// - real drho = f_ZERO+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; - drho = drho - rhoBC[k]; - drho *= 0.01f; - //////////////////////////////////////////////////////////////////////////////// - real q; - //deltaRho = (rhoBC[k] + one) / (deltaRho + one); - //////////////////////////////////////////////////////////////////////////////// - if (isEvenTimestep==false) - { - D.f[DIR_P00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_M00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_PMP * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_MPM * numberOfLBnodes]; - } - else - { - D.f[DIR_M00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_P00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_MPM * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_PMP * numberOfLBnodes]; - } - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - q = q_dirE[k]; - if (q>=c0o1 && q<=c1o1) - { - (D.f[DIR_M00])[kw]=f_W-c2o27*drho; - } - - q = q_dirW[k]; - if (q>=c0o1 && q<=c1o1) - { - (D.f[DIR_P00])[ke]=f_E-c2o27*drho; - } - - q = q_dirN[k]; - if (q>=c0o1 && q<=c1o1) - { - (D.f[DIR_0M0])[ks]=f_S-c2o27*drho; - } - - q = q_dirS[k]; - if (q>=c0o1 && q<=c1o1) - { - (D.f[DIR_0P0])[kn]=f_N-c2o27*drho; - } - - q = q_dirT[k]; - if (q>=c0o1 && q<=c1o1) - { - (D.f[DIR_00M])[kb]=f_B-c2o27*drho; - } - - q = q_dirB[k]; - if (q>=c0o1 && q<=c1o1) - { - (D.f[DIR_00P])[kt]=f_T-c2o27*drho; - } - - q = q_dirNE[k]; - if (q>=c0o1 && q<=c1o1) - { - (D.f[DIR_MM0])[ksw]=f_SW-c1o54*drho; - } - - q = q_dirSW[k]; - if (q>=c0o1 && q<=c1o1) - { - (D.f[DIR_PP0])[kne]=f_NE-c1o54*drho; - } - - q = q_dirSE[k]; - if (q>=c0o1 && q<=c1o1) - { - (D.f[DIR_MP0])[knw]=f_NW-c1o54*drho; - } - - q = q_dirNW[k]; - if (q>=c0o1 && q<=c1o1) - { - (D.f[DIR_PM0])[kse]=f_SE-c1o54*drho; - } - - q = q_dirTE[k]; - if (q>=c0o1 && q<=c1o1) - { - (D.f[DIR_M0M])[kbw]=f_BW-c1o54*drho; - } - - q = q_dirBW[k]; - if (q>=c0o1 && q<=c1o1) - { - (D.f[DIR_P0P])[kte]=f_TE-c1o54*drho; - } - - q = q_dirBE[k]; - if (q>=c0o1 && q<=c1o1) - { - (D.f[DIR_M0P])[ktw]=f_TW-c1o54*drho; - } - - q = q_dirTW[k]; - if (q>=c0o1 && q<=c1o1) - { - (D.f[DIR_P0M])[kbe]=f_BE-c1o54*drho; - } - - q = q_dirTN[k]; - if (q>=c0o1 && q<=c1o1) - { - (D.f[DIR_0MM])[kbs]=f_BS-c1o54*drho; - } - - q = q_dirBS[k]; - if (q>=c0o1 && q<=c1o1) - { - (D.f[DIR_0PP])[ktn]=f_TN-c1o54*drho; - } - - q = q_dirBN[k]; - if (q>=c0o1 && q<=c1o1) - { - (D.f[DIR_0MP])[kts]=f_TS-c1o54*drho; - } - - q = q_dirTS[k]; - if (q>=c0o1 && q<=c1o1) - { - (D.f[DIR_0PM])[kbn]=f_BN-c1o54*drho; - } - - q = q_dirTNE[k]; - if (q>=c0o1 && q<=c1o1) - { - (D.f[DIR_MMM])[kbsw]=f_BSW-c1o216*drho; - } - - q = q_dirBSW[k]; - if (q>=c0o1 && q<=c1o1) - { - (D.f[DIR_PPP])[ktne]=f_TNE-c1o216*drho; - } - - q = q_dirBNE[k]; - if (q>=c0o1 && q<=c1o1) - { - (D.f[DIR_MMP])[ktsw]=f_TSW-c1o216*drho; - } - - q = q_dirTSW[k]; - if (q>=c0o1 && q<=c1o1) - { - (D.f[DIR_PPM])[kbne]=f_BNE-c1o216*drho; - } - - q = q_dirTSE[k]; - if (q>=c0o1 && q<=c1o1) - { - (D.f[DIR_MPM])[kbnw]=f_BNW-c1o216*drho; - } - - q = q_dirBNW[k]; - if (q>=c0o1 && q<=c1o1) - { - (D.f[DIR_PMP])[ktse]=f_TSE-c1o216*drho; - } - - q = q_dirBSE[k]; - if (q>=c0o1 && q<=c1o1) - { - (D.f[DIR_MPP])[ktnw]=f_TNW-c1o216*drho; - } - - q = q_dirTNW[k]; - if (q>=c0o1 && q<=c1o1) - { - (D.f[DIR_PMM])[kbse]=f_BSE-c1o216*drho; - } - } -} -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -////////////////////////////////////////////////////////////////////////////// -__global__ void QPressDeviceFixBackflow27( - real* rhoBC, - real* DD, - int* k_Q, - int numberOfBCnodes, - real om1, - unsigned int* neighborX, - unsigned int* neighborY, - unsigned int* neighborZ, - unsigned long long 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 - - const unsigned nx = blockDim.x; - const unsigned ny = gridDim.x; - - const unsigned k = nx*(ny*z + y) + x; - ////////////////////////////////////////////////////////////////////////// - - if(k<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]; - 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 deltaRho; - //////////////////////////////////////////////////////////////////////////////// - deltaRho = rhoBC[k]; - //////////////////////////////////////////////////////////////////////////////// - Distributions27 D; - if (isEvenTimestep==false) - { - D.f[DIR_P00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_M00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_PMP * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_MPM * numberOfLBnodes]; - } - else - { - D.f[DIR_M00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_P00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_MPM * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_PMP * numberOfLBnodes]; - } - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - (D.f[DIR_M00])[kw] = c2o27 * deltaRho; - (D.f[DIR_P00])[ke] = c2o27 * deltaRho; - (D.f[DIR_0M0])[ks] = c2o27 * deltaRho; - (D.f[DIR_0P0])[kn] = c2o27 * deltaRho; - (D.f[DIR_00M])[kb] = c2o27 * deltaRho; - (D.f[DIR_00P])[kt] = c2o27 * deltaRho; - (D.f[DIR_MM0])[ksw] = c1o54 * deltaRho; - (D.f[DIR_PP0])[kne] = c1o54 * deltaRho; - (D.f[DIR_MP0])[knw] = c1o54 * deltaRho; - (D.f[DIR_PM0])[kse] = c1o54 * deltaRho; - (D.f[DIR_M0M])[kbw] = c1o54 * deltaRho; - (D.f[DIR_P0P])[kte] = c1o54 * deltaRho; - (D.f[DIR_M0P])[ktw] = c1o54 * deltaRho; - (D.f[DIR_P0M])[kbe] = c1o54 * deltaRho; - (D.f[DIR_0MM])[kbs] = c1o54 * deltaRho; - (D.f[DIR_0PP])[ktn] = c1o54 * deltaRho; - (D.f[DIR_0MP])[kts] = c1o54 * deltaRho; - (D.f[DIR_0PM])[kbn] = c1o54 * deltaRho; - (D.f[DIR_MMM])[kbsw] = c1o216 * deltaRho; - (D.f[DIR_PPP])[ktne] = c1o216 * deltaRho; - (D.f[DIR_MMP])[ktsw] = c1o216 * deltaRho; - (D.f[DIR_PPM])[kbne] = c1o216 * deltaRho; - (D.f[DIR_MPM])[kbnw] = c1o216 * deltaRho; - (D.f[DIR_PMP])[ktse] = c1o216 * deltaRho; - (D.f[DIR_MPP])[ktnw] = c1o216 * deltaRho; - (D.f[DIR_PMM])[kbse] = c1o216 * deltaRho; - (D.f[DIR_000])[kzero] = c8o27 * deltaRho; - } -} -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -////////////////////////////////////////////////////////////////////////////// -__global__ void QPressDeviceDirDepBot27( - real* rhoBC, - real* DD, - int* k_Q, - int numberOfBCnodes, - real om1, - unsigned int* neighborX, - unsigned int* neighborY, - unsigned int* neighborZ, - unsigned long long 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 - - const unsigned nx = blockDim.x; - const unsigned ny = gridDim.x; - - const unsigned k = nx*(ny*z + y) + x; - ////////////////////////////////////////////////////////////////////////// - - if(k<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]; - 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 rho; - //////////////////////////////////////////////////////////////////////////////// - rho = rhoBC[k]; - //////////////////////////////////////////////////////////////////////////////// - Distributions27 D; - if (isEvenTimestep==false) - { - D.f[DIR_P00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_M00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_PMP * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_MPM * numberOfLBnodes]; - } - else - { - D.f[DIR_M00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_P00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_MPM * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_PMP * numberOfLBnodes]; - } - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - 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[DIR_P00])[ke ]; - f_W = (D.f[DIR_M00])[kw ]; - f_N = (D.f[DIR_0P0])[kn ]; - f_S = (D.f[DIR_0M0])[ks ]; - f_T = (D.f[DIR_00P])[kt ]; - f_NE = (D.f[DIR_PP0])[kne ]; - f_SW = (D.f[DIR_MM0])[ksw ]; - f_SE = (D.f[DIR_PM0])[kse ]; - f_NW = (D.f[DIR_MP0])[knw ]; - f_TE = (D.f[DIR_P0P])[kte ]; - f_TW = (D.f[DIR_M0P])[ktw ]; - f_TN = (D.f[DIR_0PP])[ktn ]; - f_TS = (D.f[DIR_0MP])[kts ]; - f_ZERO = (D.f[DIR_000])[kzero]; - f_TNE = (D.f[DIR_PPP])[ktne ]; - f_TSW = (D.f[DIR_MMP])[ktsw ]; - f_TSE = (D.f[DIR_PMP])[ktse ]; - f_TNW = (D.f[DIR_MPP])[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; - //f_BW = ( two*rho+ f_SW- four*f_TSW+ f_W- four*f_TW+ f_NW- four*f_TNW- two*f_S- four*f_TS- two*f_ZERO-four*f_T- two*f_N- four*f_TN- five*f_SE- four*f_TSE-five*f_E+fourteen*f_TE- five*f_NE- four*f_TNE)/eighteen; - //f_BE = ( two*rho- five*f_SW- four*f_TSW-five*f_W+fourteen*f_TW- five*f_NW- four*f_TNW- two*f_S- four*f_TS- two*f_ZERO-four*f_T- two*f_N- four*f_TN+ f_SE- four*f_TSE+ f_E- four*f_TE+ f_NE- four*f_TNE)/eighteen; - //f_BS = ( two*rho+ f_SW- four*f_TSW- two*f_W- four*f_TW- five*f_NW- four*f_TNW+ f_S- four*f_TS- two*f_ZERO-four*f_T-five*f_N+fourteen*f_TN+ f_SE- four*f_TSE- two*f_E- four*f_TE- five*f_NE- four*f_TNE)/eighteen; - //f_BN = ( two*rho- five*f_SW- four*f_TSW- two*f_W- four*f_TW+ f_NW- four*f_TNW-five*f_S+fourteen*f_TS- two*f_ZERO-four*f_T+ f_N- four*f_TN- five*f_SE- four*f_TSE- two*f_E- four*f_TE+ f_NE- four*f_TNE)/eighteen; - //f_BSW = ( two*rho+ four*f_SW- four*f_TSW+ f_W- four*f_TW- two*f_NW- four*f_TNW+ f_S- four*f_TS- two*f_ZERO-four*f_T-five*f_N- four*f_TN- two*f_SE- four*f_TSE-five*f_E- four*f_TE-eight*f_NE+sixtyeight*f_TNE)/seventytwo; - //f_BNE = ( two*rho-eight*f_SW+sixtyeight*f_TSW-five*f_W- four*f_TW- two*f_NW- four*f_TNW-five*f_S- four*f_TS- two*f_ZERO-four*f_T+ f_N- four*f_TN- two*f_SE- four*f_TSE+ f_E- four*f_TE+ four*f_NE- four*f_TNE)/seventytwo; - //f_BNW = ( two*rho- two*f_SW- four*f_TSW+ f_W- four*f_TW+ four*f_NW- four*f_TNW-five*f_S- four*f_TS- two*f_ZERO-four*f_T+ f_N- four*f_TN-eight*f_SE+sixtyeight*f_TSE-five*f_E- four*f_TE- two*f_NE- four*f_TNE)/seventytwo; - //f_BSE = ( two*rho- two*f_SW- four*f_TSW-five*f_W- four*f_TW-eight*f_NW+sixtyeight*f_TNW+ f_S- four*f_TS- two*f_ZERO-four*f_T-five*f_N- four*f_TN+ four*f_SE- four*f_TSE+ f_E- four*f_TE- two*f_NE- four*f_TNE)/seventytwo; - - //real drho = f_ZERO+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; - //real vx1 = (f_E -f_W +f_NE-f_SW+f_SE-f_NW+f_TE-f_BW+f_BE-f_TW+ f_TNE-f_TSW+f_TSE-f_TNW+ f_BNE-f_BSW+f_BSE-f_BNW); - //real vx2 = (f_N -f_S +f_NE-f_SW-f_SE+f_NW+f_TN-f_BS+f_BN-f_TS+ f_TNE-f_TSW-f_TSE+f_TNW+ f_BNE-f_BSW-f_BSE+f_BNW); - //real vx3 = (f_T -f_B +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); - - //real cusq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3); - - //(D.f[DIR_000])[kzero] = c8over27* (drho-cusq); - //(D.f[DIR_P00])[ke] = c2over27* (drho+three*( vx1 )+c9over2*( vx1 )*( vx1 )-cusq); - //(D.f[DIR_M00])[kw] = c2over27* (drho+three*(-vx1 )+c9over2*(-vx1 )*(-vx1 )-cusq); - //(D.f[DIR_0P0])[kn] = c2over27* (drho+three*( vx2 )+c9over2*( vx2 )*( vx2 )-cusq); - //(D.f[DIR_0M0])[ks] = c2over27* (drho+three*( -vx2 )+c9over2*( -vx2 )*( -vx2 )-cusq); - //(D.f[DIR_00P])[kt] = c2over27* (drho+three*( vx3)+c9over2*( vx3)*( vx3)-cusq); - //(D.f[DIR_00M])[kb] = c2over27* (drho+three*( -vx3)+c9over2*( -vx3)*( -vx3)-cusq); - //(D.f[DIR_PP0])[kne] = c1over54* (drho+three*( vx1+vx2 )+c9over2*( vx1+vx2 )*( vx1+vx2 )-cusq); - //(D.f[DIR_MM0])[ksw] = c1over54* (drho+three*(-vx1-vx2 )+c9over2*(-vx1-vx2 )*(-vx1-vx2 )-cusq); - //(D.f[DIR_PM0])[kse] = c1over54* (drho+three*( vx1-vx2 )+c9over2*( vx1-vx2 )*( vx1-vx2 )-cusq); - //(D.f[DIR_MP0])[knw] = c1over54* (drho+three*(-vx1+vx2 )+c9over2*(-vx1+vx2 )*(-vx1+vx2 )-cusq); - //(D.f[DIR_P0P])[kte] = c1over54* (drho+three*( vx1 +vx3)+c9over2*( vx1 +vx3)*( vx1 +vx3)-cusq); - //(D.f[DIR_M0M])[kbw] = c1over54* (drho+three*(-vx1 -vx3)+c9over2*(-vx1 -vx3)*(-vx1 -vx3)-cusq); - //(D.f[DIR_P0M])[kbe] = c1over54* (drho+three*( vx1 -vx3)+c9over2*( vx1 -vx3)*( vx1 -vx3)-cusq); - //(D.f[DIR_M0P])[ktw] = c1over54* (drho+three*(-vx1 +vx3)+c9over2*(-vx1 +vx3)*(-vx1 +vx3)-cusq); - //(D.f[DIR_0PP])[ktn] = c1over54* (drho+three*( vx2+vx3)+c9over2*( vx2+vx3)*( vx2+vx3)-cusq); - //(D.f[DIR_0MM])[kbs] = c1over54* (drho+three*( -vx2-vx3)+c9over2*( -vx2-vx3)*( -vx2-vx3)-cusq); - //(D.f[DIR_0PM])[kbn] = c1over54* (drho+three*( vx2-vx3)+c9over2*( vx2-vx3)*( vx2-vx3)-cusq); - //(D.f[DIR_0MP])[kts] = c1over54* (drho+three*( -vx2+vx3)+c9over2*( -vx2+vx3)*( -vx2+vx3)-cusq); - //(D.f[DIR_PPP])[ktne] = c1over216*(drho+three*( vx1+vx2+vx3)+c9over2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cusq); - //(D.f[DIR_MMM])[kbsw] = c1over216*(drho+three*(-vx1-vx2-vx3)+c9over2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cusq); - //(D.f[DIR_PPM])[kbne] = c1over216*(drho+three*( vx1+vx2-vx3)+c9over2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cusq); - //(D.f[DIR_MMP])[ktsw] = c1over216*(drho+three*(-vx1-vx2+vx3)+c9over2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cusq); - //(D.f[DIR_PMP])[ktse] = c1over216*(drho+three*( vx1-vx2+vx3)+c9over2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cusq); - //(D.f[DIR_MPM])[kbnw] = c1over216*(drho+three*(-vx1+vx2-vx3)+c9over2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cusq); - //(D.f[DIR_PMM])[kbse] = c1over216*(drho+three*( vx1-vx2-vx3)+c9over2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cusq); - //(D.f[DIR_MPP])[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[DIR_00M])[kb] = (f_T+c2o27)*(rho-drho+c1o1/c6o1)/(dTop+c1o1/c6o1)-c2o27; - (D.f[DIR_M0M])[kbw] = (f_TW+c1o54)*(rho-drho+c1o1/c6o1)/(dTop+c1o1/c6o1)-c1o54; - (D.f[DIR_P0M])[kbe] = (f_TE+c1o54)*(rho-drho+c1o1/c6o1)/(dTop+c1o1/c6o1)-c1o54; - (D.f[DIR_0MM])[kbs] = (f_TS+c1o54)*(rho-drho+c1o1/c6o1)/(dTop+c1o1/c6o1)-c1o54; - (D.f[DIR_0PM])[kbn] = (f_TN+c1o54)*(rho-drho+c1o1/c6o1)/(dTop+c1o1/c6o1)-c1o54; - (D.f[DIR_MMM])[kbsw] = (f_TSW+c1o216)*(rho-drho+c1o1/c6o1)/(dTop+c1o1/c6o1)-c1o216; - (D.f[DIR_PPM])[kbne] = (f_TNE+c1o216)*(rho-drho+c1o1/c6o1)/(dTop+c1o1/c6o1)-c1o216; - (D.f[DIR_MPM])[kbnw] = (f_TNW+c1o216)*(rho-drho+c1o1/c6o1)/(dTop+c1o1/c6o1)-c1o216; - (D.f[DIR_PMM])[kbse] = (f_TSE+c1o216)*(rho-drho+c1o1/c6o1)/(dTop+c1o1/c6o1)-c1o216; - } -} -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -__host__ __device__ real computeOutflowDistribution(const real* const &f, const real* const &f1, const int dir, const real cs) -{ - return f1[dir] * cs + (c1o1 - cs) * f[dir]; -} - -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -__global__ void QPressNoRhoDevice27( - real* rhoBC, - real* distributions, - int* k_Q, - int* k_N, - int numberOfBCnodes, - real om1, - unsigned int* neighborX, - unsigned int* neighborY, - unsigned int* neighborZ, - unsigned long long numberOfLBnodes, - bool isEvenTimestep, - int direction) -{ - //////////////////////////////////////////////////////////////////////////////// - //! - Get the node index coordinates from threadIdx, blockIdx, blockDim and gridDim. - //! - const unsigned nodeIndex = getNodeIndex(); - - ////////////////////////////////////////////////////////////////////////// - - if(nodeIndex >= numberOfBCnodes) return; - - //////////////////////////////////////////////////////////////////////////////// - //index - unsigned int KQK = k_Q[nodeIndex]; - // 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]; - //////////////////////////////////////////////////////////////////////////////// - //index1 - unsigned int K1QK = k_N[nodeIndex]; - //unsigned int k1zero= K1QK; - unsigned int k1e = K1QK; - unsigned int k1w = neighborX[K1QK]; - unsigned int k1n = K1QK; - unsigned int k1s = neighborY[K1QK]; - unsigned int k1t = K1QK; - unsigned int k1b = neighborZ[K1QK]; - unsigned int k1sw = neighborY[k1w]; - unsigned int k1ne = K1QK; - unsigned int k1se = k1s; - unsigned int k1nw = k1w; - unsigned int k1bw = neighborZ[k1w]; - unsigned int k1te = K1QK; - unsigned int k1be = k1b; - unsigned int k1tw = k1w; - unsigned int k1bs = neighborZ[k1s]; - unsigned int k1tn = K1QK; - unsigned int k1bn = k1b; - unsigned int k1ts = k1s; - unsigned int k1tse = k1s; - unsigned int k1bnw = k1bw; - unsigned int k1tnw = k1w; - unsigned int k1bse = k1bs; - unsigned int k1tsw = k1sw; - unsigned int k1bne = k1b; - unsigned int k1tne = K1QK; - unsigned int k1bsw = neighborZ[k1sw]; - //////////////////////////////////////////////////////////////////////////////// - Distributions27 dist; - getPointersToDistributions(dist, distributions, numberOfLBnodes, isEvenTimestep); - real f[27], f1[27]; - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - f1[DIR_P00] = (dist.f[DIR_P00])[k1e ]; - f1[DIR_M00] = (dist.f[DIR_M00])[k1w ]; - f1[DIR_0P0] = (dist.f[DIR_0P0])[k1n ]; - f1[DIR_0M0] = (dist.f[DIR_0M0])[k1s ]; - f1[DIR_00P] = (dist.f[DIR_00P])[k1t ]; - f1[DIR_00M] = (dist.f[DIR_00M])[k1b ]; - f1[DIR_PP0] = (dist.f[DIR_PP0])[k1ne ]; - f1[DIR_MM0] = (dist.f[DIR_MM0])[k1sw ]; - f1[DIR_PM0] = (dist.f[DIR_PM0])[k1se ]; - f1[DIR_MP0] = (dist.f[DIR_MP0])[k1nw ]; - f1[DIR_P0P] = (dist.f[DIR_P0P])[k1te ]; - f1[DIR_M0M] = (dist.f[DIR_M0M])[k1bw ]; - f1[DIR_P0M] = (dist.f[DIR_P0M])[k1be ]; - f1[DIR_M0P] = (dist.f[DIR_M0P])[k1tw ]; - f1[DIR_0PP] = (dist.f[DIR_0PP])[k1tn ]; - f1[DIR_0MM] = (dist.f[DIR_0MM])[k1bs ]; - f1[DIR_0PM] = (dist.f[DIR_0PM])[k1bn ]; - f1[DIR_0MP] = (dist.f[DIR_0MP])[k1ts ]; - // f1[DIR_000] = (dist.f[DIR_000])[k1zero]; - f1[DIR_PPP] = (dist.f[DIR_PPP])[k1tne ]; - f1[DIR_MMP] = (dist.f[DIR_MMP])[k1tsw ]; - f1[DIR_PMP] = (dist.f[DIR_PMP])[k1tse ]; - f1[DIR_MPP] = (dist.f[DIR_MPP])[k1tnw ]; - f1[DIR_PPM] = (dist.f[DIR_PPM])[k1bne ]; - f1[DIR_MMM] = (dist.f[DIR_MMM])[k1bsw ]; - f1[DIR_PMM] = (dist.f[DIR_PMM])[k1bse ]; - f1[DIR_MPM] = (dist.f[DIR_MPM])[k1bnw ]; - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - f[DIR_P00] = (dist.f[DIR_P00])[ke ]; - f[DIR_M00] = (dist.f[DIR_M00])[kw ]; - f[DIR_0P0] = (dist.f[DIR_0P0])[kn ]; - f[DIR_0M0] = (dist.f[DIR_0M0])[ks ]; - f[DIR_00P] = (dist.f[DIR_00P])[kt ]; - f[DIR_00M] = (dist.f[DIR_00M])[kb ]; - f[DIR_PP0] = (dist.f[DIR_PP0])[kne ]; - f[DIR_MM0] = (dist.f[DIR_MM0])[ksw ]; - f[DIR_PM0] = (dist.f[DIR_PM0])[kse ]; - f[DIR_MP0] = (dist.f[DIR_MP0])[knw ]; - f[DIR_P0P] = (dist.f[DIR_P0P])[kte ]; - f[DIR_M0M] = (dist.f[DIR_M0M])[kbw ]; - f[DIR_P0M] = (dist.f[DIR_P0M])[kbe ]; - f[DIR_M0P] = (dist.f[DIR_M0P])[ktw ]; - f[DIR_0PP] = (dist.f[DIR_0PP])[ktn ]; - f[DIR_0MM] = (dist.f[DIR_0MM])[kbs ]; - f[DIR_0PM] = (dist.f[DIR_0PM])[kbn ]; - f[DIR_0MP] = (dist.f[DIR_0MP])[kts ]; - // f[DIR_000] = (dist.f[DIR_000])[kzero]; - f[DIR_PPP] = (dist.f[DIR_PPP])[ktne ]; - f[DIR_MMP] = (dist.f[DIR_MMP])[ktsw ]; - f[DIR_PMP] = (dist.f[DIR_PMP])[ktse ]; - f[DIR_MPP] = (dist.f[DIR_MPP])[ktnw ]; - f[DIR_PPM] = (dist.f[DIR_PPM])[kbne ]; - f[DIR_MMM] = (dist.f[DIR_MMM])[kbsw ]; - f[DIR_PMM] = (dist.f[DIR_PMM])[kbse ]; - f[DIR_MPM] = (dist.f[DIR_MPM])[kbnw ]; - ////////////////////////////////////////////////////////////////////////// - - - real cs = c1o1 / sqrtf(c3o1); - - ////////////////////////////////////////////////////////////////////////// - getPointersToDistributions(dist, distributions, numberOfLBnodes, !isEvenTimestep); - switch(direction) - { - case MZZ: - (dist.f[DIR_P00])[ke ] = computeOutflowDistribution(f, f1, DIR_P00, cs); - (dist.f[DIR_PM0])[kse ] = computeOutflowDistribution(f, f1, DIR_PM0, cs); - (dist.f[DIR_PP0])[kne ] = computeOutflowDistribution(f, f1, DIR_PP0, cs); - (dist.f[DIR_P0M])[kbe ] = computeOutflowDistribution(f, f1, DIR_P0M, cs); - (dist.f[DIR_P0P])[kte ] = computeOutflowDistribution(f, f1, DIR_P0P, cs); - (dist.f[DIR_PMP])[ktse ] = computeOutflowDistribution(f, f1, DIR_PMP, cs); - (dist.f[DIR_PPP])[ktne ] = computeOutflowDistribution(f, f1, DIR_PPP, cs); - (dist.f[DIR_PMM])[kbse ] = computeOutflowDistribution(f, f1, DIR_PMM, cs); - (dist.f[DIR_PPM])[kbne ] = computeOutflowDistribution(f, f1, DIR_PPM, cs); - break; - - case PZZ: - (dist.f[DIR_M00])[kw ] = computeOutflowDistribution(f, f1, DIR_M00, cs); - (dist.f[DIR_MM0])[ksw ] = computeOutflowDistribution(f, f1, DIR_MM0, cs); - (dist.f[DIR_MP0])[knw ] = computeOutflowDistribution(f, f1, DIR_MP0, cs); - (dist.f[DIR_M0M])[kbw ] = computeOutflowDistribution(f, f1, DIR_M0M, cs); - (dist.f[DIR_M0P])[ktw ] = computeOutflowDistribution(f, f1, DIR_M0P, cs); - (dist.f[DIR_MMP])[ktsw ] = computeOutflowDistribution(f, f1, DIR_MMP, cs); - (dist.f[DIR_MPP])[ktnw ] = computeOutflowDistribution(f, f1, DIR_MPP, cs); - (dist.f[DIR_MMM])[kbsw ] = computeOutflowDistribution(f, f1, DIR_MMM, cs); - (dist.f[DIR_MPM])[kbnw ] = computeOutflowDistribution(f, f1, DIR_MPM, cs); - break; - - case ZMZ: - (dist.f[DIR_0P0])[kn ] = computeOutflowDistribution(f, f1, DIR_0P0, cs); - (dist.f[DIR_PP0])[kne ] = computeOutflowDistribution(f, f1, DIR_PP0, cs); - (dist.f[DIR_MP0])[knw ] = computeOutflowDistribution(f, f1, DIR_MP0, cs); - (dist.f[DIR_0PP])[ktn ] = computeOutflowDistribution(f, f1, DIR_0PP, cs); - (dist.f[DIR_0PM])[kbn ] = computeOutflowDistribution(f, f1, DIR_0PM, cs); - (dist.f[DIR_PPP])[ktne ] = computeOutflowDistribution(f, f1, DIR_PPP, cs); - (dist.f[DIR_MPP])[ktnw ] = computeOutflowDistribution(f, f1, DIR_MPP, cs); - (dist.f[DIR_PPM])[kbne ] = computeOutflowDistribution(f, f1, DIR_PPM, cs); - (dist.f[DIR_MPM])[kbnw ] = computeOutflowDistribution(f, f1, DIR_MPM, cs); - break; - - case ZPZ: - (dist.f[DIR_0M0])[ks ] = computeOutflowDistribution(f, f1, DIR_0M0, cs); - (dist.f[DIR_PM0])[kse ] = computeOutflowDistribution(f, f1, DIR_PM0, cs); - (dist.f[DIR_MM0])[ksw ] = computeOutflowDistribution(f, f1, DIR_MM0, cs); - (dist.f[DIR_0MP])[kts ] = computeOutflowDistribution(f, f1, DIR_0MP, cs); - (dist.f[DIR_0MM])[kbs ] = computeOutflowDistribution(f, f1, DIR_0MM, cs); - (dist.f[DIR_PMP])[ktse ] = computeOutflowDistribution(f, f1, DIR_PMP, cs); - (dist.f[DIR_MMP])[ktsw ] = computeOutflowDistribution(f, f1, DIR_MMP, cs); - (dist.f[DIR_PMM])[kbse ] = computeOutflowDistribution(f, f1, DIR_PMM, cs); - (dist.f[DIR_MMM])[kbsw ] = computeOutflowDistribution(f, f1, DIR_MMM, cs); - break; - - case ZZM: - (dist.f[DIR_00P])[kt ] = computeOutflowDistribution(f, f1, DIR_00P, cs); - (dist.f[DIR_P0P])[kte ] = computeOutflowDistribution(f, f1, DIR_P0P, cs); - (dist.f[DIR_M0P])[ktw ] = computeOutflowDistribution(f, f1, DIR_M0P, cs); - (dist.f[DIR_0PP])[ktn ] = computeOutflowDistribution(f, f1, DIR_0PP, cs); - (dist.f[DIR_0MP])[kts ] = computeOutflowDistribution(f, f1, DIR_0MP, cs); - (dist.f[DIR_PPP])[ktne ] = computeOutflowDistribution(f, f1, DIR_PPP, cs); - (dist.f[DIR_MPP])[ktnw ] = computeOutflowDistribution(f, f1, DIR_MPP, cs); - (dist.f[DIR_PMP])[ktse ] = computeOutflowDistribution(f, f1, DIR_PMP, cs); - (dist.f[DIR_MMP])[ktsw ] = computeOutflowDistribution(f, f1, DIR_MMP, cs); - break; - - case ZZP: - (dist.f[DIR_00M])[kb ] = computeOutflowDistribution(f, f1, DIR_00M, cs); - (dist.f[DIR_P0M])[kbe ] = computeOutflowDistribution(f, f1, DIR_P0M, cs); - (dist.f[DIR_M0M])[kbw ] = computeOutflowDistribution(f, f1, DIR_M0M, cs); - (dist.f[DIR_0PM])[kbn ] = computeOutflowDistribution(f, f1, DIR_0PM, cs); - (dist.f[DIR_0MM])[kbs ] = computeOutflowDistribution(f, f1, DIR_0MM, cs); - (dist.f[DIR_PPM])[kbne ] = computeOutflowDistribution(f, f1, DIR_PPM, cs); - (dist.f[DIR_MPM])[kbnw ] = computeOutflowDistribution(f, f1, DIR_MPM, cs); - (dist.f[DIR_PMM])[kbse ] = computeOutflowDistribution(f, f1, DIR_PMM, cs); - (dist.f[DIR_MMM])[kbsw ] = computeOutflowDistribution(f, f1, DIR_MMM, cs); - break; - default: - break; - } -} -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -__host__ __device__ real computeOutflowDistribution(const real* const &f, const real* const &f1, const int dir, const real rhoCorrection, const real cs, const real weight) -{ - return f1[dir ] * cs + (c1o1 - cs) * f[dir ] - weight *rhoCorrection; -} - -__global__ void QPressZeroRhoOutflowDevice27( - real* rhoBC, - real* distributions, - int* k_Q, - int* k_N, - int numberOfBCnodes, - real om1, - unsigned int* neighborX, - unsigned int* neighborY, - unsigned int* neighborZ, - unsigned long long numberOfLBnodes, - bool isEvenTimestep, - int direction, - real densityCorrectionFactor) -{ - //////////////////////////////////////////////////////////////////////////////// - //! - Get the node index coordinates from threadIdx, blockIdx, blockDim and gridDim. - //! - const unsigned nodeIndex = getNodeIndex(); - - ////////////////////////////////////////////////////////////////////////// - - if( nodeIndex >= numberOfBCnodes ) return; - - //////////////////////////////////////////////////////////////////////////////// - //index - - uint k_000 = k_Q[nodeIndex]; - uint k_M00 = neighborX[k_000]; - uint k_0M0 = neighborY[k_000]; - uint k_00M = neighborZ[k_000]; - uint k_MM0 = neighborY[k_M00]; - uint k_M0M = neighborZ[k_M00]; - uint k_0MM = neighborZ[k_0M0]; - uint k_MMM = neighborZ[k_MM0]; - - //////////////////////////////////////////////////////////////////////////////// - //index of neighbor - uint kN_000 = k_N[nodeIndex]; - uint kN_M00 = neighborX[k_000]; - uint kN_0M0 = neighborY[k_000]; - uint kN_00M = neighborZ[k_000]; - uint kN_MM0 = neighborY[k_M00]; - uint kN_M0M = neighborZ[k_M00]; - uint kN_0MM = neighborZ[k_0M0]; - uint kN_MMM = neighborZ[k_MM0]; - //////////////////////////////////////////////////////////////////////////////// - Distributions27 dist; - getPointersToDistributions(dist, distributions, numberOfLBnodes, isEvenTimestep); - real f[27], fN[27]; - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - f[DIR_000] = (dist.f[DIR_000])[k_000]; - f[DIR_P00] = (dist.f[DIR_P00])[k_000]; - f[DIR_M00] = (dist.f[DIR_M00])[k_M00]; - f[DIR_0P0] = (dist.f[DIR_0P0])[k_000]; - f[DIR_0M0] = (dist.f[DIR_0M0])[k_0M0]; - f[DIR_00P] = (dist.f[DIR_00P])[k_000]; - f[DIR_00M] = (dist.f[DIR_00M])[k_00M]; - f[DIR_PP0] = (dist.f[DIR_PP0])[k_000]; - f[DIR_MM0] = (dist.f[DIR_MM0])[k_MM0]; - f[DIR_PM0] = (dist.f[DIR_PM0])[k_0M0]; - f[DIR_MP0] = (dist.f[DIR_MP0])[k_M00]; - f[DIR_P0P] = (dist.f[DIR_P0P])[k_000]; - f[DIR_M0M] = (dist.f[DIR_M0M])[k_M0M]; - f[DIR_P0M] = (dist.f[DIR_P0M])[k_00M]; - f[DIR_M0P] = (dist.f[DIR_M0P])[k_M00]; - f[DIR_0PP] = (dist.f[DIR_0PP])[k_000]; - f[DIR_0MM] = (dist.f[DIR_0MM])[k_0MM]; - f[DIR_0PM] = (dist.f[DIR_0PM])[k_00M]; - f[DIR_0MP] = (dist.f[DIR_0MP])[k_0M0]; - f[DIR_PPP] = (dist.f[DIR_PPP])[k_000]; - f[DIR_MPP] = (dist.f[DIR_MPP])[k_M00]; - f[DIR_PMP] = (dist.f[DIR_PMP])[k_0M0]; - f[DIR_MMP] = (dist.f[DIR_MMP])[k_MM0]; - f[DIR_PPM] = (dist.f[DIR_PPM])[k_00M]; - f[DIR_MPM] = (dist.f[DIR_MPM])[k_M0M]; - f[DIR_PMM] = (dist.f[DIR_PMM])[k_0MM]; - f[DIR_MMM] = (dist.f[DIR_MMM])[k_MMM]; - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - fN[DIR_000] = (dist.f[DIR_000])[kN_000]; - fN[DIR_P00] = (dist.f[DIR_P00])[kN_000]; - fN[DIR_M00] = (dist.f[DIR_M00])[kN_M00]; - fN[DIR_0P0] = (dist.f[DIR_0P0])[kN_000]; - fN[DIR_0M0] = (dist.f[DIR_0M0])[kN_0M0]; - fN[DIR_00P] = (dist.f[DIR_00P])[kN_000]; - fN[DIR_00M] = (dist.f[DIR_00M])[kN_00M]; - fN[DIR_PP0] = (dist.f[DIR_PP0])[kN_000]; - fN[DIR_MM0] = (dist.f[DIR_MM0])[kN_MM0]; - fN[DIR_PM0] = (dist.f[DIR_PM0])[kN_0M0]; - fN[DIR_MP0] = (dist.f[DIR_MP0])[kN_M00]; - fN[DIR_P0P] = (dist.f[DIR_P0P])[kN_000]; - fN[DIR_M0M] = (dist.f[DIR_M0M])[kN_M0M]; - fN[DIR_P0M] = (dist.f[DIR_P0M])[kN_00M]; - fN[DIR_M0P] = (dist.f[DIR_M0P])[kN_M00]; - fN[DIR_0PP] = (dist.f[DIR_0PP])[kN_000]; - fN[DIR_0MM] = (dist.f[DIR_0MM])[kN_0MM]; - fN[DIR_0PM] = (dist.f[DIR_0PM])[kN_00M]; - fN[DIR_0MP] = (dist.f[DIR_0MP])[kN_0M0]; - fN[DIR_PPP] = (dist.f[DIR_PPP])[kN_000]; - fN[DIR_MPP] = (dist.f[DIR_MPP])[kN_M00]; - fN[DIR_PMP] = (dist.f[DIR_PMP])[kN_0M0]; - fN[DIR_MMP] = (dist.f[DIR_MMP])[kN_MM0]; - fN[DIR_PPM] = (dist.f[DIR_PPM])[kN_00M]; - fN[DIR_MPM] = (dist.f[DIR_MPM])[kN_M0M]; - fN[DIR_PMM] = (dist.f[DIR_PMM])[kN_0MM]; - fN[DIR_MMM] = (dist.f[DIR_MMM])[kN_MMM]; - ////////////////////////////////////////////////////////////////////////// - real drho = vf::lbm::getDensity(f); - - real rhoCorrection = densityCorrectionFactor*drho; - - real cs = c1o1 / sqrtf(c3o1); - - getPointersToDistributions(dist, distributions, numberOfLBnodes, !isEvenTimestep); - - switch(direction) - { - case MZZ: - (dist.f[DIR_P00])[k_000] = computeOutflowDistribution(f, fN, DIR_P00 , rhoCorrection, cs, c2o27); - (dist.f[DIR_PM0])[k_0M0] = computeOutflowDistribution(f, fN, DIR_PM0, rhoCorrection, cs, c1o54); - (dist.f[DIR_PP0])[k_000] = computeOutflowDistribution(f, fN, DIR_PP0, rhoCorrection, cs, c1o54); - (dist.f[DIR_P0M])[k_00M] = computeOutflowDistribution(f, fN, DIR_P0M, rhoCorrection, cs, c1o54); - (dist.f[DIR_P0P])[k_000] = computeOutflowDistribution(f, fN, DIR_P0P, rhoCorrection, cs, c1o54); - (dist.f[DIR_PMP])[k_0M0] = computeOutflowDistribution(f, fN, DIR_PMP, rhoCorrection, cs, c1o216); - (dist.f[DIR_PPP])[k_000] = computeOutflowDistribution(f, fN, DIR_PPP, rhoCorrection, cs, c1o216); - (dist.f[DIR_PMM])[k_0MM] = computeOutflowDistribution(f, fN, DIR_PMM, rhoCorrection, cs, c1o216); - (dist.f[DIR_PPM])[k_00M] = computeOutflowDistribution(f, fN, DIR_PPM, rhoCorrection, cs, c1o216); - break; - - case PZZ: - (dist.f[DIR_M00])[k_M00] = computeOutflowDistribution(f, fN, DIR_M00, rhoCorrection, cs, c2o27); - (dist.f[DIR_MM0])[k_MM0] = computeOutflowDistribution(f, fN, DIR_MM0, rhoCorrection, cs, c1o54); - (dist.f[DIR_MP0])[k_M00] = computeOutflowDistribution(f, fN, DIR_MP0, rhoCorrection, cs, c1o54); - (dist.f[DIR_M0M])[k_M0M] = computeOutflowDistribution(f, fN, DIR_M0M, rhoCorrection, cs, c1o54); - (dist.f[DIR_M0P])[k_M00] = computeOutflowDistribution(f, fN, DIR_M0P, rhoCorrection, cs, c1o54); - (dist.f[DIR_MMP])[k_MM0] = computeOutflowDistribution(f, fN, DIR_MMP, rhoCorrection, cs, c1o216); - (dist.f[DIR_MPP])[k_M00] = computeOutflowDistribution(f, fN, DIR_MPP, rhoCorrection, cs, c1o216); - (dist.f[DIR_MMM])[k_MMM] = computeOutflowDistribution(f, fN, DIR_MMM, rhoCorrection, cs, c1o216); - (dist.f[DIR_MPM])[k_M0M] = computeOutflowDistribution(f, fN, DIR_MPM, rhoCorrection, cs, c1o216); - break; - - case ZMZ: - (dist.f[DIR_0P0])[k_000] = computeOutflowDistribution(f, fN, DIR_0P0, rhoCorrection, cs, c2o27); - (dist.f[DIR_PP0])[k_000] = computeOutflowDistribution(f, fN, DIR_PP0, rhoCorrection, cs, c1o54); - (dist.f[DIR_MP0])[k_M00] = computeOutflowDistribution(f, fN, DIR_MP0, rhoCorrection, cs, c1o54); - (dist.f[DIR_0PP])[k_000] = computeOutflowDistribution(f, fN, DIR_0PP, rhoCorrection, cs, c1o54); - (dist.f[DIR_0PM])[k_00M] = computeOutflowDistribution(f, fN, DIR_0PM, rhoCorrection, cs, c1o54); - (dist.f[DIR_PPP])[k_000] = computeOutflowDistribution(f, fN, DIR_PPP, rhoCorrection, cs, c1o216); - (dist.f[DIR_MPP])[k_M00] = computeOutflowDistribution(f, fN, DIR_MPP, rhoCorrection, cs, c1o216); - (dist.f[DIR_PPM])[k_00M] = computeOutflowDistribution(f, fN, DIR_PPM, rhoCorrection, cs, c1o216); - (dist.f[DIR_MPM])[k_M0M] = computeOutflowDistribution(f, fN, DIR_MPM, rhoCorrection, cs, c1o216); - break; - - case ZPZ: - (dist.f[DIR_0M0])[k_0M0] =computeOutflowDistribution(f, fN, DIR_0M0, rhoCorrection, cs, c2o27); - (dist.f[DIR_PM0])[k_0M0] =computeOutflowDistribution(f, fN, DIR_PM0, rhoCorrection, cs, c1o54); - (dist.f[DIR_MM0])[k_MM0] =computeOutflowDistribution(f, fN, DIR_MM0, rhoCorrection, cs, c1o54); - (dist.f[DIR_0MP])[k_0M0] =computeOutflowDistribution(f, fN, DIR_0MP, rhoCorrection, cs, c1o54); - (dist.f[DIR_0MM])[k_0MM] =computeOutflowDistribution(f, fN, DIR_0MM, rhoCorrection, cs, c1o54); - (dist.f[DIR_PMP])[k_0M0] =computeOutflowDistribution(f, fN, DIR_PMP, rhoCorrection, cs, c1o216); - (dist.f[DIR_MMP])[k_MM0] =computeOutflowDistribution(f, fN, DIR_MMP, rhoCorrection, cs, c1o216); - (dist.f[DIR_PMM])[k_0MM] =computeOutflowDistribution(f, fN, DIR_PMM, rhoCorrection, cs, c1o216); - (dist.f[DIR_MMM])[k_MMM] =computeOutflowDistribution(f, fN, DIR_MMM, rhoCorrection, cs, c1o216); - break; - - case ZZM: - (dist.f[DIR_00P])[k_000] = computeOutflowDistribution(f, fN, DIR_00P, rhoCorrection, cs, c2o27); - (dist.f[DIR_P0P])[k_000] = computeOutflowDistribution(f, fN, DIR_P0P, rhoCorrection, cs, c1o54); - (dist.f[DIR_M0P])[k_M00] = computeOutflowDistribution(f, fN, DIR_M0P, rhoCorrection, cs, c1o54); - (dist.f[DIR_0PP])[k_000] = computeOutflowDistribution(f, fN, DIR_0PP, rhoCorrection, cs, c1o54); - (dist.f[DIR_0MP])[k_0M0] = computeOutflowDistribution(f, fN, DIR_0MP, rhoCorrection, cs, c1o54); - (dist.f[DIR_PPP])[k_000] = computeOutflowDistribution(f, fN, DIR_PPP, rhoCorrection, cs, c1o216); - (dist.f[DIR_MPP])[k_M00] = computeOutflowDistribution(f, fN, DIR_MPP, rhoCorrection, cs, c1o216); - (dist.f[DIR_PMP])[k_0M0] = computeOutflowDistribution(f, fN, DIR_PMP, rhoCorrection, cs, c1o216); - (dist.f[DIR_MMP])[k_MM0] = computeOutflowDistribution(f, fN, DIR_MMP, rhoCorrection, cs, c1o216); - break; - - case ZZP: - (dist.f[DIR_00M])[k_00M] = computeOutflowDistribution(f, fN, DIR_00M, rhoCorrection, cs, c2o27); - (dist.f[DIR_P0M])[k_00M] = computeOutflowDistribution(f, fN, DIR_P0M, rhoCorrection, cs, c1o54); - (dist.f[DIR_M0M])[k_M0M] = computeOutflowDistribution(f, fN, DIR_M0M, rhoCorrection, cs, c1o54); - (dist.f[DIR_0PM])[k_00M] = computeOutflowDistribution(f, fN, DIR_0PM, rhoCorrection, cs, c1o54); - (dist.f[DIR_0MM])[k_0MM] = computeOutflowDistribution(f, fN, DIR_0MM, rhoCorrection, cs, c1o54); - (dist.f[DIR_PPM])[k_00M] = computeOutflowDistribution(f, fN, DIR_PPM, rhoCorrection, cs, c1o216); - (dist.f[DIR_MPM])[k_M0M] = computeOutflowDistribution(f, fN, DIR_MPM, rhoCorrection, cs, c1o216); - (dist.f[DIR_PMM])[k_0MM] = computeOutflowDistribution(f, fN, DIR_PMM, rhoCorrection, cs, c1o216); - (dist.f[DIR_MMM])[k_MMM] = computeOutflowDistribution(f, fN, DIR_MMM, rhoCorrection, cs, c1o216); - break; - default: - break; - } -} -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -__global__ void QPressDeviceOld27( - real* rhoBC, - real* DD, - int* k_Q, - int* k_N, - int numberOfBCnodes, - real om1, - unsigned int* neighborX, - unsigned int* neighborY, - unsigned int* neighborZ, - unsigned long long numberOfLBnodes, - bool isEvenTimestep) -{ - //////////////////////////////////////////////////////////////////////////////// - const unsigned x = threadIdx.x; // Globaler x-Index - const unsigned y = blockIdx.x; // Globaler y-Index - const unsigned z = blockIdx.y; // Globaler z-Index - - const unsigned nx = blockDim.x; - const unsigned ny = gridDim.x; - - const unsigned k = nx*(ny*z + y) + x; - ////////////////////////////////////////////////////////////////////////// - - if(k<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]; - 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]; - //////////////////////////////////////////////////////////////////////////////// - //index1 - unsigned int K1QK = k_N[k]; - unsigned int k1zero= K1QK; - unsigned int k1e = K1QK; - unsigned int k1w = neighborX[K1QK]; - unsigned int k1n = K1QK; - unsigned int k1s = neighborY[K1QK]; - unsigned int k1t = K1QK; - unsigned int k1b = neighborZ[K1QK]; - unsigned int k1sw = neighborY[k1w]; - unsigned int k1ne = K1QK; - unsigned int k1se = k1s; - unsigned int k1nw = k1w; - unsigned int k1bw = neighborZ[k1w]; - unsigned int k1te = K1QK; - unsigned int k1be = k1b; - unsigned int k1tw = k1w; - unsigned int k1bs = neighborZ[k1s]; - unsigned int k1tn = K1QK; - unsigned int k1bn = k1b; - unsigned int k1ts = k1s; - unsigned int k1tse = k1s; - unsigned int k1bnw = k1bw; - unsigned int k1tnw = k1w; - unsigned int k1bse = k1bs; - unsigned int k1tsw = k1sw; - unsigned int k1bne = k1b; - unsigned int k1tne = K1QK; - unsigned int k1bsw = neighborZ[k1sw]; - //////////////////////////////////////////////////////////////////////////////// - Distributions27 D; - if (isEvenTimestep==false) - { - D.f[DIR_P00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_M00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_PMP * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_MPM * numberOfLBnodes]; - } - else - { - D.f[DIR_M00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_P00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_MPM * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_PMP * numberOfLBnodes]; - } - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - 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[DIR_P00])[k1e ]; - f1_E = (D.f[DIR_M00])[k1w ]; - f1_S = (D.f[DIR_0P0])[k1n ]; - f1_N = (D.f[DIR_0M0])[k1s ]; - f1_B = (D.f[DIR_00P])[k1t ]; - f1_T = (D.f[DIR_00M])[k1b ]; - f1_SW = (D.f[DIR_PP0])[k1ne ]; - f1_NE = (D.f[DIR_MM0])[k1sw ]; - f1_NW = (D.f[DIR_PM0])[k1se ]; - f1_SE = (D.f[DIR_MP0])[k1nw ]; - f1_BW = (D.f[DIR_P0P])[k1te ]; - f1_TE = (D.f[DIR_M0M])[k1bw ]; - f1_TW = (D.f[DIR_P0M])[k1be ]; - f1_BE = (D.f[DIR_M0P])[k1tw ]; - f1_BS = (D.f[DIR_0PP])[k1tn ]; - f1_TN = (D.f[DIR_0MM])[k1bs ]; - f1_TS = (D.f[DIR_0PM])[k1bn ]; - f1_BN = (D.f[DIR_0MP])[k1ts ]; - f1_ZERO = (D.f[DIR_000])[k1zero]; - f1_BSW = (D.f[DIR_PPP])[k1tne ]; - f1_BNE = (D.f[DIR_MMP])[k1tsw ]; - f1_BNW = (D.f[DIR_PMP])[k1tse ]; - f1_BSE = (D.f[DIR_MPP])[k1tnw ]; - f1_TSW = (D.f[DIR_PPM])[k1bne ]; - f1_TNE = (D.f[DIR_MMM])[k1bsw ]; - f1_TNW = (D.f[DIR_PMM])[k1bse ]; - f1_TSE = (D.f[DIR_MPM])[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; - - //drho1 = (drho1 + rhoBC[k])/2.f; - drho1 = drho1 - rhoBC[k]; - ////////////////////////////////////////////////////////////////////////// - - __syncthreads(); - - (D.f[DIR_P00])[ke ] = f1_W -c2o27*drho1; // c1o100; // zero; // - (D.f[DIR_M00])[kw ] = f1_E -c2o27*drho1; // c1o100; // zero; // - (D.f[DIR_0P0])[kn ] = f1_S -c2o27*drho1; // c1o100; // zero; // - (D.f[DIR_0M0])[ks ] = f1_N -c2o27*drho1; // c1o100; // zero; // - (D.f[DIR_00P])[kt ] = f1_B -c2o27*drho1; // c1o100; // zero; // - (D.f[DIR_00M])[kb ] = f1_T -c2o27*drho1; // c1o100; // zero; // - (D.f[DIR_PP0])[kne ] = f1_SW -c1o54*drho1; // c1o100; // zero; // - (D.f[DIR_MM0])[ksw ] = f1_NE -c1o54*drho1; // c1o100; // zero; // - (D.f[DIR_PM0])[kse ] = f1_NW -c1o54*drho1; // c1o100; // zero; // - (D.f[DIR_MP0])[knw ] = f1_SE -c1o54*drho1; // c1o100; // zero; // - (D.f[DIR_P0P])[kte ] = f1_BW -c1o54*drho1; // c1o100; // zero; // - (D.f[DIR_M0M])[kbw ] = f1_TE -c1o54*drho1; // c1o100; // zero; // - (D.f[DIR_P0M])[kbe ] = f1_TW -c1o54*drho1; // c1o100; // zero; // - (D.f[DIR_M0P])[ktw ] = f1_BE -c1o54*drho1; // c1o100; // zero; // - (D.f[DIR_0PP])[ktn ] = f1_BS -c1o54*drho1; // c1o100; // zero; // - (D.f[DIR_0MM])[kbs ] = f1_TN -c1o54*drho1; // c1o100; // zero; // - (D.f[DIR_0PM])[kbn ] = f1_TS -c1o54*drho1; // c1o100; // zero; // - (D.f[DIR_0MP])[kts ] = f1_BN -c1o54*drho1; // c1o100; // zero; // - (D.f[DIR_000])[kzero] = f1_ZERO-c8o27*drho1; // c1o100; // zero; // - (D.f[DIR_PPP])[ktne ] = f1_BSW -c1o216*drho1; // c1o100; // zero; // - (D.f[DIR_MMP])[ktsw ] = f1_BNE -c1o216*drho1; // c1o100; // zero; // - (D.f[DIR_PMP])[ktse ] = f1_BNW -c1o216*drho1; // c1o100; // zero; // - (D.f[DIR_MPP])[ktnw ] = f1_BSE -c1o216*drho1; // c1o100; // zero; // - (D.f[DIR_PPM])[kbne ] = f1_TSW -c1o216*drho1; // c1o100; // zero; // - (D.f[DIR_MMM])[kbsw ] = f1_TNE -c1o216*drho1; // c1o100; // zero; // - (D.f[DIR_PMM])[kbse ] = f1_TNW -c1o216*drho1; // c1o100; // zero; // - (D.f[DIR_MPM])[kbnw ] = f1_TSE -c1o216*drho1; // c1o100; // zero; // - } -} -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -__global__ void QPressDeviceEQZ27( - real* rhoBC, - real* DD, - int* k_Q, - int* k_N, - real* kTestRE, - int numberOfBCnodes, - real om1, - unsigned int* neighborX, - unsigned int* neighborY, - unsigned int* neighborZ, - unsigned long long 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 - - const unsigned nx = blockDim.x; - const unsigned ny = gridDim.x; - - const unsigned k = nx*(ny*z + y) + x; - ////////////////////////////////////////////////////////////////////////// - - if(k<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]; - 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]; - //////////////////////////////////////////////////////////////////////////////// - //index1 - unsigned int K1QK = k_N[k]; - unsigned int k1zero= K1QK; - unsigned int k1e = K1QK; - unsigned int k1w = neighborX[K1QK]; - unsigned int k1n = K1QK; - unsigned int k1s = neighborY[K1QK]; - unsigned int k1t = K1QK; - unsigned int k1b = neighborZ[K1QK]; - unsigned int k1sw = neighborY[k1w]; - unsigned int k1ne = K1QK; - unsigned int k1se = k1s; - unsigned int k1nw = k1w; - unsigned int k1bw = neighborZ[k1w]; - unsigned int k1te = K1QK; - unsigned int k1be = k1b; - unsigned int k1tw = k1w; - unsigned int k1bs = neighborZ[k1s]; - unsigned int k1tn = K1QK; - unsigned int k1bn = k1b; - unsigned int k1ts = k1s; - unsigned int k1tse = k1s; - unsigned int k1bnw = k1bw; - unsigned int k1tnw = k1w; - unsigned int k1bse = k1bs; - unsigned int k1tsw = k1sw; - unsigned int k1bne = k1b; - unsigned int k1tne = K1QK; - unsigned int k1bsw = neighborZ[k1sw]; - //////////////////////////////////////////////////////////////////////////////// - Distributions27 D; - if (isEvenTimestep==true) - { - D.f[DIR_P00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_M00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_PMP * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_MPM * numberOfLBnodes]; - } - else - { - D.f[DIR_M00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_P00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_MPM * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_PMP * numberOfLBnodes]; - } - //////////////////////////////////////////////////////////////////////////////// - // Distributions27 kDistTest; - // kDistTest.f[DIR_P00] = &kTestRE[DIR_P00 * numberOfBCnodes]; - // kDistTest.f[DIR_M00] = &kTestRE[DIR_M00 * numberOfBCnodes]; - // kDistTest.f[DIR_0P0] = &kTestRE[DIR_0P0 * numberOfBCnodes]; - // kDistTest.f[DIR_0M0] = &kTestRE[DIR_0M0 * numberOfBCnodes]; - // kDistTest.f[DIR_00P] = &kTestRE[DIR_00P * numberOfBCnodes]; - // kDistTest.f[DIR_00M] = &kTestRE[DIR_00M * numberOfBCnodes]; - // kDistTest.f[DIR_PP0] = &kTestRE[DIR_PP0 * numberOfBCnodes]; - // kDistTest.f[DIR_MM0] = &kTestRE[DIR_MM0 * numberOfBCnodes]; - // kDistTest.f[DIR_PM0] = &kTestRE[DIR_PM0 * numberOfBCnodes]; - // kDistTest.f[DIR_MP0] = &kTestRE[DIR_MP0 * numberOfBCnodes]; - // kDistTest.f[DIR_P0P] = &kTestRE[DIR_P0P * numberOfBCnodes]; - // kDistTest.f[DIR_M0M] = &kTestRE[DIR_M0M * numberOfBCnodes]; - // kDistTest.f[DIR_P0M] = &kTestRE[DIR_P0M * numberOfBCnodes]; - // kDistTest.f[DIR_M0P] = &kTestRE[DIR_M0P * numberOfBCnodes]; - // kDistTest.f[DIR_0PP] = &kTestRE[DIR_0PP * numberOfBCnodes]; - // kDistTest.f[DIR_0MM] = &kTestRE[DIR_0MM * numberOfBCnodes]; - // kDistTest.f[DIR_0PM] = &kTestRE[DIR_0PM * numberOfBCnodes]; - // kDistTest.f[DIR_0MP] = &kTestRE[DIR_0MP * numberOfBCnodes]; - // kDistTest.f[DIR_000] = &kTestRE[DIR_000 * numberOfBCnodes]; - // kDistTest.f[DIR_PPP] = &kTestRE[DIR_PPP * numberOfBCnodes]; - // kDistTest.f[DIR_MMP] = &kTestRE[DIR_MMP * numberOfBCnodes]; - // kDistTest.f[DIR_PMP] = &kTestRE[DIR_PMP * numberOfBCnodes]; - // kDistTest.f[DIR_MPP] = &kTestRE[DIR_MPP * numberOfBCnodes]; - // kDistTest.f[DIR_PPM] = &kTestRE[DIR_PPM * numberOfBCnodes]; - // kDistTest.f[DIR_MMM] = &kTestRE[DIR_MMM * numberOfBCnodes]; - // kDistTest.f[DIR_PMM] = &kTestRE[DIR_PMM * numberOfBCnodes]; - // kDistTest.f[DIR_MPM] = &kTestRE[DIR_MPM * 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[DIR_P00])[k1e ]; - // //f1_E = (D.f[DIR_M00])[k1w ]; - // //f1_S = (D.f[DIR_0P0])[k1n ]; - // //f1_N = (D.f[DIR_0M0])[k1s ]; - // //f1_B = (D.f[DIR_00P])[k1t ]; - // //f1_T = (D.f[DIR_00M])[k1b ]; - // //f1_SW = (D.f[DIR_PP0])[k1ne ]; - // //f1_NE = (D.f[DIR_MM0])[k1sw ]; - // //f1_NW = (D.f[DIR_PM0])[k1se ]; - // //f1_SE = (D.f[DIR_MP0])[k1nw ]; - // //f1_BW = (D.f[DIR_P0P])[k1te ]; - // //f1_TE = (D.f[DIR_M0M])[k1bw ]; - // //f1_TW = (D.f[DIR_P0M])[k1be ]; - // //f1_BE = (D.f[DIR_M0P])[k1tw ]; - // //f1_BS = (D.f[DIR_0PP])[k1tn ]; - // //f1_TN = (D.f[DIR_0MM])[k1bs ]; - // //f1_TS = (D.f[DIR_0PM])[k1bn ]; - // //f1_BN = (D.f[DIR_0MP])[k1ts ]; - // //f1_ZERO = (D.f[DIR_000])[k1zero]; - // //f1_BSW = (D.f[DIR_PPP])[k1tne ]; - // //f1_BNE = (D.f[DIR_MMP])[k1tsw ]; - // //f1_BNW = (D.f[DIR_PMP])[k1tse ]; - // //f1_BSE = (D.f[DIR_MPP])[k1tnw ]; - // //f1_TSW = (D.f[DIR_PPM])[k1bne ]; - // //f1_TNE = (D.f[DIR_MMM])[k1bsw ]; - // //f1_TNW = (D.f[DIR_PMM])[k1bse ]; - // //f1_TSE = (D.f[DIR_MPM])[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[DIR_P00])[k1e ]; - // f1_W = (D.f[DIR_M00])[k1w ]; - // f1_N = (D.f[DIR_0P0])[k1n ]; - // f1_S = (D.f[DIR_0M0])[k1s ]; - // f1_T = (D.f[DIR_00P])[k1t ]; - // f1_B = (D.f[DIR_00M])[k1b ]; - // f1_NE = (D.f[DIR_PP0])[k1ne ]; - // f1_SW = (D.f[DIR_MM0])[k1sw ]; - // f1_SE = (D.f[DIR_PM0])[k1se ]; - // f1_NW = (D.f[DIR_MP0])[k1nw ]; - // f1_TE = (D.f[DIR_P0P])[k1te ]; - // f1_BW = (D.f[DIR_M0M])[k1bw ]; - // f1_BE = (D.f[DIR_P0M])[k1be ]; - // f1_TW = (D.f[DIR_M0P])[k1tw ]; - // f1_TN = (D.f[DIR_0PP])[k1tn ]; - // f1_BS = (D.f[DIR_0MM])[k1bs ]; - // f1_BN = (D.f[DIR_0PM])[k1bn ]; - // f1_TS = (D.f[DIR_0MP])[k1ts ]; - // f1_ZERO = (D.f[DIR_000])[k1zero]; - // f1_TNE = (D.f[DIR_PPP])[k1tne ]; - // f1_TSW = (D.f[DIR_MMP])[k1tsw ]; - // f1_TSE = (D.f[DIR_PMP])[k1tse ]; - // f1_TNW = (D.f[DIR_MPP])[k1tnw ]; - // f1_BNE = (D.f[DIR_PPM])[k1bne ]; - // f1_BSW = (D.f[DIR_MMM])[k1bsw ]; - // f1_BSE = (D.f[DIR_PMM])[k1bse ]; - // f1_BNW = (D.f[DIR_MPM])[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_TNE-f1_BSW)+(f1_BSE-f1_TNW)+(f1_BNE-f1_TSW)+(f1_TSE-f1_BNW)) + (((f1_NE-f1_SW)+(f1_TE-f1_BW))+((f1_SE-f1_NW)+(f1_BE-f1_TW))) + (f1_E-f1_W)) / (one + drho1); - //real vx2 = (((f1_TNE-f1_BSW)+(f1_TNW-f1_BSE)+(f1_BNE-f1_TSW)+(f1_BNW-f1_TSE)) + (((f1_NE-f1_SW)+(f1_TN-f1_BS))+((f1_BN-f1_TS)+(f1_NW-f1_SE))) + (f1_N-f1_S)) / (one + drho1); - //real vx3 = (((f1_TNE-f1_BSW)+(f1_TNW-f1_BSE)+(f1_TSW-f1_BNE)+(f1_TSE-f1_BNW)) + (((f1_TE-f1_BW)+(f1_TN-f1_BS))+((f1_TW-f1_BE)+(f1_TS-f1_BN))) + (f1_T-f1_B)) / (one + drho1); - // ////////////////////////////////////////////////////////////////////////// - ////real omega = om1; - // real cusq = c3o2*(vx1*vx1+vx2*vx2+vx3*vx3); - // ////////////////////////////////////////////////////////////////////////// - ////T�st MK - ////if(vx1 < zero) vx1 = zero; - // ////////////////////////////////////////////////////////////////////////// - ////becomes higher with neighbor source and lower with local source - // //real fZERO = c8over27* (rhoBC[k]-(one + rhoBC[k])*(cusq)) ; - // //real fE = c2over27* (rhoBC[k]+(one + rhoBC[k])*(three*( vx1 )+c9over2*( vx1 )*( vx1 )-cusq)); - // //real fW = c2over27* (rhoBC[k]+(one + rhoBC[k])*(three*(-vx1 )+c9over2*(-vx1 )*(-vx1 )-cusq)); - // //real fN = c2over27* (rhoBC[k]+(one + rhoBC[k])*(three*( vx2 )+c9over2*( vx2 )*( vx2 )-cusq)); - // //real fS = c2over27* (rhoBC[k]+(one + rhoBC[k])*(three*( -vx2 )+c9over2*( -vx2 )*( -vx2 )-cusq)); - // //real fT = c2over27* (rhoBC[k]+(one + rhoBC[k])*(three*( vx3)+c9over2*( vx3)*( vx3)-cusq)); - // //real fB = c2over27* (rhoBC[k]+(one + rhoBC[k])*(three*( -vx3)+c9over2*( -vx3)*( -vx3)-cusq)); - // //real fNE = c1over54* (rhoBC[k]+(one + rhoBC[k])*(three*( vx1+vx2 )+c9over2*( vx1+vx2 )*( vx1+vx2 )-cusq)); - // //real fSW = c1over54* (rhoBC[k]+(one + rhoBC[k])*(three*(-vx1-vx2 )+c9over2*(-vx1-vx2 )*(-vx1-vx2 )-cusq)); - // //real fSE = c1over54* (rhoBC[k]+(one + rhoBC[k])*(three*( vx1-vx2 )+c9over2*( vx1-vx2 )*( vx1-vx2 )-cusq)); - // //real fNW = c1over54* (rhoBC[k]+(one + rhoBC[k])*(three*(-vx1+vx2 )+c9over2*(-vx1+vx2 )*(-vx1+vx2 )-cusq)); - // //real fTE = c1over54* (rhoBC[k]+(one + rhoBC[k])*(three*( vx1 +vx3)+c9over2*( vx1 +vx3)*( vx1 +vx3)-cusq)); - // //real fBW = c1over54* (rhoBC[k]+(one + rhoBC[k])*(three*(-vx1 -vx3)+c9over2*(-vx1 -vx3)*(-vx1 -vx3)-cusq)); - // //real fBE = c1over54* (rhoBC[k]+(one + rhoBC[k])*(three*( vx1 -vx3)+c9over2*( vx1 -vx3)*( vx1 -vx3)-cusq)); - // //real fTW = c1over54* (rhoBC[k]+(one + rhoBC[k])*(three*(-vx1 +vx3)+c9over2*(-vx1 +vx3)*(-vx1 +vx3)-cusq)); - // //real fTN = c1over54* (rhoBC[k]+(one + rhoBC[k])*(three*( vx2+vx3)+c9over2*( vx2+vx3)*( vx2+vx3)-cusq)); - // //real fBS = c1over54* (rhoBC[k]+(one + rhoBC[k])*(three*( -vx2-vx3)+c9over2*( -vx2-vx3)*( -vx2-vx3)-cusq)); - // //real fBN = c1over54* (rhoBC[k]+(one + rhoBC[k])*(three*( vx2-vx3)+c9over2*( vx2-vx3)*( vx2-vx3)-cusq)); - // //real fTS = c1over54* (rhoBC[k]+(one + rhoBC[k])*(three*( -vx2+vx3)+c9over2*( -vx2+vx3)*( -vx2+vx3)-cusq)); - // //real fTNE = c1over216* (rhoBC[k]+(one + rhoBC[k])*(three*( vx1+vx2+vx3)+c9over2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cusq)); - // //real fBSW = c1over216* (rhoBC[k]+(one + rhoBC[k])*(three*(-vx1-vx2-vx3)+c9over2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cusq)); - // //real fBNE = c1over216* (rhoBC[k]+(one + rhoBC[k])*(three*( vx1+vx2-vx3)+c9over2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cusq)); - // //real fTSW = c1over216* (rhoBC[k]+(one + rhoBC[k])*(three*(-vx1-vx2+vx3)+c9over2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cusq)); - // //real fTSE = c1over216* (rhoBC[k]+(one + rhoBC[k])*(three*( vx1-vx2+vx3)+c9over2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cusq)); - // //real fBNW = c1over216* (rhoBC[k]+(one + rhoBC[k])*(three*(-vx1+vx2-vx3)+c9over2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cusq)); - // //real fBSE = c1over216* (rhoBC[k]+(one + rhoBC[k])*(three*( vx1-vx2-vx3)+c9over2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cusq)); - // //real fTNW = c1over216* (rhoBC[k]+(one + rhoBC[k])*(three*(-vx1+vx2+vx3)+c9over2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cusq)); - // ////////////////////////////////////////////////////////////////////////// - //// based on VirtualFluids (kucher + fard) - // real fZERO = c8over27 * rhoBC[k] * (one - cusq); - // real fE = c2over27 * rhoBC[k] * (one + three * ( vx1 ) + c9over2 * ( vx1 ) * ( vx1 ) - cusq); - // real fW = c2over27 * rhoBC[k] * (one + three * (-vx1 ) + c9over2 * (-vx1 ) * (-vx1 ) - cusq); - // real fN = c2over27 * rhoBC[k] * (one + three * ( vx2 ) + c9over2 * ( vx2 ) * ( vx2 ) - cusq); - // real fS = c2over27 * rhoBC[k] * (one + three * ( -vx2 ) + c9over2 * ( -vx2 ) * ( -vx2 ) - cusq); - // real fT = c2over27 * rhoBC[k] * (one + three * ( vx3) + c9over2 * ( vx3) * ( vx3) - cusq); - // real fB = c2over27 * rhoBC[k] * (one + three * ( -vx3) + c9over2 * ( -vx3) * ( -vx3) - cusq); - // real fNE = c1over54 * rhoBC[k] * (one + three * ( vx1+vx2 ) + c9over2 * ( vx1+vx2 ) * ( vx1+vx2 ) - cusq); - // real fSW = c1over54 * rhoBC[k] * (one + three * (-vx1-vx2 ) + c9over2 * (-vx1-vx2 ) * (-vx1-vx2 ) - cusq); - // real fSE = c1over54 * rhoBC[k] * (one + three * ( vx1-vx2 ) + c9over2 * ( vx1-vx2 ) * ( vx1-vx2 ) - cusq); - // real fNW = c1over54 * rhoBC[k] * (one + three * (-vx1+vx2 ) + c9over2 * (-vx1+vx2 ) * (-vx1+vx2 ) - cusq); - // real fTE = c1over54 * rhoBC[k] * (one + three * ( vx1 +vx3) + c9over2 * ( vx1 +vx3) * ( vx1 +vx3) - cusq); - // real fBW = c1over54 * rhoBC[k] * (one + three * (-vx1 -vx3) + c9over2 * (-vx1 -vx3) * (-vx1 -vx3) - cusq); - // real fBE = c1over54 * rhoBC[k] * (one + three * ( vx1 -vx3) + c9over2 * ( vx1 -vx3) * ( vx1 -vx3) - cusq); - // real fTW = c1over54 * rhoBC[k] * (one + three * (-vx1 +vx3) + c9over2 * (-vx1 +vx3) * (-vx1 +vx3) - cusq); - // real fTN = c1over54 * rhoBC[k] * (one + three * ( vx2+vx3) + c9over2 * ( vx2+vx3) * ( vx2+vx3) - cusq); - // real fBS = c1over54 * rhoBC[k] * (one + three * ( -vx2-vx3) + c9over2 * ( -vx2-vx3) * ( -vx2-vx3) - cusq); - // real fBN = c1over54 * rhoBC[k] * (one + three * ( vx2-vx3) + c9over2 * ( vx2-vx3) * ( vx2-vx3) - cusq); - // real fTS = c1over54 * rhoBC[k] * (one + three * ( -vx2+vx3) + c9over2 * ( -vx2+vx3) * ( -vx2+vx3) - cusq); - // real fTNE = c1over216 * rhoBC[k] * (one + three * ( vx1+vx2+vx3) + c9over2 * ( vx1+vx2+vx3) * ( vx1+vx2+vx3) - cusq); - // real fBSW = c1over216 * rhoBC[k] * (one + three * (-vx1-vx2-vx3) + c9over2 * (-vx1-vx2-vx3) * (-vx1-vx2-vx3) - cusq); - // real fBNE = c1over216 * rhoBC[k] * (one + three * ( vx1+vx2-vx3) + c9over2 * ( vx1+vx2-vx3) * ( vx1+vx2-vx3) - cusq); - // real fTSW = c1over216 * rhoBC[k] * (one + three * (-vx1-vx2+vx3) + c9over2 * (-vx1-vx2+vx3) * (-vx1-vx2+vx3) - cusq); - // real fTSE = c1over216 * rhoBC[k] * (one + three * ( vx1-vx2+vx3) + c9over2 * ( vx1-vx2+vx3) * ( vx1-vx2+vx3) - cusq); - // real fBNW = c1over216 * rhoBC[k] * (one + three * (-vx1+vx2-vx3) + c9over2 * (-vx1+vx2-vx3) * (-vx1+vx2-vx3) - cusq); - // real fBSE = c1over216 * rhoBC[k] * (one + three * ( vx1-vx2-vx3) + c9over2 * ( vx1-vx2-vx3) * ( vx1-vx2-vx3) - cusq); - // real fTNW = c1over216 * rhoBC[k] * (one + three * (-vx1+vx2+vx3) + c9over2 * (-vx1+vx2+vx3) * (-vx1+vx2+vx3) - cusq); - //// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //////test - //// real fZERO = c8over27 * ((drho1 + rhoBC[k]) / two) * (one - cusq); - //// real fE = c2over27 * ((drho1 + rhoBC[k]) / two) * (one + three * ( vx1 ) + c9over2 * ( vx1 ) * ( vx1 ) - cusq); - //// real fW = c2over27 * ((drho1 + rhoBC[k]) / two) * (one + three * (-vx1 ) + c9over2 * (-vx1 ) * (-vx1 ) - cusq); - //// real fN = c2over27 * ((drho1 + rhoBC[k]) / two) * (one + three * ( vx2 ) + c9over2 * ( vx2 ) * ( vx2 ) - cusq); - //// real fS = c2over27 * ((drho1 + rhoBC[k]) / two) * (one + three * ( -vx2 ) + c9over2 * ( -vx2 ) * ( -vx2 ) - cusq); - //// real fT = c2over27 * ((drho1 + rhoBC[k]) / two) * (one + three * ( vx3) + c9over2 * ( vx3) * ( vx3) - cusq); - //// real fB = c2over27 * ((drho1 + rhoBC[k]) / two) * (one + three * ( -vx3) + c9over2 * ( -vx3) * ( -vx3) - cusq); - //// real fNE = c1over54 * ((drho1 + rhoBC[k]) / two) * (one + three * ( vx1+vx2 ) + c9over2 * ( vx1+vx2 ) * ( vx1+vx2 ) - cusq); - //// real fSW = c1over54 * ((drho1 + rhoBC[k]) / two) * (one + three * (-vx1-vx2 ) + c9over2 * (-vx1-vx2 ) * (-vx1-vx2 ) - cusq); - //// real fSE = c1over54 * ((drho1 + rhoBC[k]) / two) * (one + three * ( vx1-vx2 ) + c9over2 * ( vx1-vx2 ) * ( vx1-vx2 ) - cusq); - //// real fNW = c1over54 * ((drho1 + rhoBC[k]) / two) * (one + three * (-vx1+vx2 ) + c9over2 * (-vx1+vx2 ) * (-vx1+vx2 ) - cusq); - //// real fTE = c1over54 * ((drho1 + rhoBC[k]) / two) * (one + three * ( vx1 +vx3) + c9over2 * ( vx1 +vx3) * ( vx1 +vx3) - cusq); - //// real fBW = c1over54 * ((drho1 + rhoBC[k]) / two) * (one + three * (-vx1 -vx3) + c9over2 * (-vx1 -vx3) * (-vx1 -vx3) - cusq); - //// real fBE = c1over54 * ((drho1 + rhoBC[k]) / two) * (one + three * ( vx1 -vx3) + c9over2 * ( vx1 -vx3) * ( vx1 -vx3) - cusq); - //// real fTW = c1over54 * ((drho1 + rhoBC[k]) / two) * (one + three * (-vx1 +vx3) + c9over2 * (-vx1 +vx3) * (-vx1 +vx3) - cusq); - //// real fTN = c1over54 * ((drho1 + rhoBC[k]) / two) * (one + three * ( vx2+vx3) + c9over2 * ( vx2+vx3) * ( vx2+vx3) - cusq); - //// real fBS = c1over54 * ((drho1 + rhoBC[k]) / two) * (one + three * ( -vx2-vx3) + c9over2 * ( -vx2-vx3) * ( -vx2-vx3) - cusq); - //// real fBN = c1over54 * ((drho1 + rhoBC[k]) / two) * (one + three * ( vx2-vx3) + c9over2 * ( vx2-vx3) * ( vx2-vx3) - cusq); - //// real fTS = c1over54 * ((drho1 + rhoBC[k]) / two) * (one + three * ( -vx2+vx3) + c9over2 * ( -vx2+vx3) * ( -vx2+vx3) - cusq); - //// real fTNE = c1over216 * ((drho1 + rhoBC[k]) / two) * (one + three * ( vx1+vx2+vx3) + c9over2 * ( vx1+vx2+vx3) * ( vx1+vx2+vx3) - cusq); - //// real fBSW = c1over216 * ((drho1 + rhoBC[k]) / two) * (one + three * (-vx1-vx2-vx3) + c9over2 * (-vx1-vx2-vx3) * (-vx1-vx2-vx3) - cusq); - //// real fBNE = c1over216 * ((drho1 + rhoBC[k]) / two) * (one + three * ( vx1+vx2-vx3) + c9over2 * ( vx1+vx2-vx3) * ( vx1+vx2-vx3) - cusq); - //// real fTSW = c1over216 * ((drho1 + rhoBC[k]) / two) * (one + three * (-vx1-vx2+vx3) + c9over2 * (-vx1-vx2+vx3) * (-vx1-vx2+vx3) - cusq); - //// real fTSE = c1over216 * ((drho1 + rhoBC[k]) / two) * (one + three * ( vx1-vx2+vx3) + c9over2 * ( vx1-vx2+vx3) * ( vx1-vx2+vx3) - cusq); - //// real fBNW = c1over216 * ((drho1 + rhoBC[k]) / two) * (one + three * (-vx1+vx2-vx3) + c9over2 * (-vx1+vx2-vx3) * (-vx1+vx2-vx3) - cusq); - //// real fBSE = c1over216 * ((drho1 + rhoBC[k]) / two) * (one + three * ( vx1-vx2-vx3) + c9over2 * ( vx1-vx2-vx3) * ( vx1-vx2-vx3) - cusq); - //// real fTNW = c1over216 * ((drho1 + rhoBC[k]) / two) * (one + three * (-vx1+vx2+vx3) + c9over2 * (-vx1+vx2+vx3) * (-vx1+vx2+vx3) - cusq); - - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - // based on BGK Plus Comp - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //double mfabb = (D.f[DIR_P00])[k1e ]; - //double mfcbb = (D.f[DIR_M00])[k1w ]; - //double mfbab = (D.f[DIR_0P0])[k1n ]; - //double mfbcb = (D.f[DIR_0M0])[k1s ]; - //double mfbba = (D.f[DIR_00P])[k1t ]; - //double mfbbc = (D.f[DIR_00M])[k1b ]; - //double mfaab = (D.f[DIR_PP0])[k1ne ]; - //double mfccb = (D.f[DIR_MM0])[k1sw ]; - //double mfacb = (D.f[DIR_PM0])[k1se ]; - //double mfcab = (D.f[DIR_MP0])[k1nw ]; - //double mfaba = (D.f[DIR_P0P])[k1te ]; - //double mfcbc = (D.f[DIR_M0M])[k1bw ]; - //double mfabc = (D.f[DIR_P0M])[k1be ]; - //double mfcba = (D.f[DIR_M0P])[k1tw ]; - //double mfbaa = (D.f[DIR_0PP])[k1tn ]; - //double mfbcc = (D.f[DIR_0MM])[k1bs ]; - //double mfbac = (D.f[DIR_0PM])[k1bn ]; - //double mfbca = (D.f[DIR_0MP])[k1ts ]; - //double mfbbb = (D.f[DIR_000])[k1zero]; - //double mfaaa = (D.f[DIR_PPP])[k1tne ]; - //double mfcca = (D.f[DIR_MMP])[k1tsw ]; - //double mfaca = (D.f[DIR_PMP])[k1tse ]; - //double mfcaa = (D.f[DIR_MPP])[k1tnw ]; - //double mfaac = (D.f[DIR_PPM])[k1bne ]; - //double mfccc = (D.f[DIR_MMM])[k1bsw ]; - //double mfacc = (D.f[DIR_PMM])[k1bse ]; - //double mfcac = (D.f[DIR_MPM])[k1bnw ]; - real mfabb = (D.f[DIR_P00])[k1e ]; - real mfcbb = (D.f[DIR_M00])[k1w ]; - real mfbab = (D.f[DIR_0P0])[k1n ]; - real mfbcb = (D.f[DIR_0M0])[k1s ]; - real mfbba = (D.f[DIR_00P])[k1t ]; - real mfbbc = (D.f[DIR_00M])[k1b ]; - real mfaab = (D.f[DIR_PP0])[k1ne ]; - real mfccb = (D.f[DIR_MM0])[k1sw ]; - real mfacb = (D.f[DIR_PM0])[k1se ]; - real mfcab = (D.f[DIR_MP0])[k1nw ]; - real mfaba = (D.f[DIR_P0P])[k1te ]; - real mfcbc = (D.f[DIR_M0M])[k1bw ]; - real mfabc = (D.f[DIR_P0M])[k1be ]; - real mfcba = (D.f[DIR_M0P])[k1tw ]; - real mfbaa = (D.f[DIR_0PP])[k1tn ]; - real mfbcc = (D.f[DIR_0MM])[k1bs ]; - real mfbac = (D.f[DIR_0PM])[k1bn ]; - real mfbca = (D.f[DIR_0MP])[k1ts ]; - real mfbbb = (D.f[DIR_000])[k1zero]; - real mfaaa = (D.f[DIR_PPP])[k1tne ]; - real mfcca = (D.f[DIR_MMP])[k1tsw ]; - real mfaca = (D.f[DIR_PMP])[k1tse ]; - real mfcaa = (D.f[DIR_MPP])[k1tnw ]; - real mfaac = (D.f[DIR_PPM])[k1bne ]; - real mfccc = (D.f[DIR_MMM])[k1bsw ]; - real mfacc = (D.f[DIR_PMM])[k1bse ]; - real mfcac = (D.f[DIR_MPM])[k1bnw ]; - - //real mfcbb = (D.f[DIR_P00])[ke ]; - //real mfabb = (D.f[DIR_M00])[kw ]; - //real mfbcb = (D.f[DIR_0P0])[kn ]; - //real mfbab = (D.f[DIR_0M0])[ks ]; - //real mfbbc = (D.f[DIR_00P])[kt ]; - //real mfbba = (D.f[DIR_00M])[kb ]; - //real mfccb = (D.f[DIR_PP0])[kne ]; - //real mfaab = (D.f[DIR_MM0])[ksw ]; - //real mfcab = (D.f[DIR_PM0])[kse ]; - //real mfacb = (D.f[DIR_MP0])[knw ]; - //real mfcbc = (D.f[DIR_P0P])[kte ]; - //real mfaba = (D.f[DIR_M0M])[kbw ]; - //real mfcba = (D.f[DIR_P0M])[kbe ]; - //real mfabc = (D.f[DIR_M0P])[ktw ]; - //real mfbcc = (D.f[DIR_0PP])[ktn ]; - //real mfbaa = (D.f[DIR_0MM])[kbs ]; - //real mfbca = (D.f[DIR_0PM])[kbn ]; - //real mfbac = (D.f[DIR_0MP])[kts ]; - //real mfbbb = (D.f[DIR_000])[kzero]; - //real mfccc = (D.f[DIR_PPP])[ktne ]; - //real mfaac = (D.f[DIR_MMP])[ktsw ]; - //real mfcac = (D.f[DIR_PMP])[ktse ]; - //real mfacc = (D.f[DIR_MPP])[ktnw ]; - //real mfcca = (D.f[DIR_PPM])[kbne ]; - //real mfaaa = (D.f[DIR_MMM])[kbsw ]; - //real mfcaa = (D.f[DIR_PMM])[kbse ]; - //real mfaca = (D.f[DIR_MPM])[kbnw ]; - //////////////////////////////////////////////////////////////////////////////////// - //real rho = (((((mfccc+mfaaa) + (mfaca+mfcac)) + ((mfacc+mfcaa) + (mfaac+mfcca))) + - // (((mfbac+mfbca) + (mfbaa+mfbcc)) + ((mfabc+mfcba) + (mfaba+mfcbc)) + ((mfacb+mfcab) + (mfaab+mfccb))) + - // ((mfabb+mfcbb) + (mfbab+mfbcb)) + (mfbba+mfbbc)) + mfbbb) + one;//!!!!Achtung + one - //////////////////////////////////////////////////////////////////////////////////// - real rho = rhoBC[k]; - //////////////////////////////////////////////////////////////////////////////////// - real OoRho = c1o1 / (rho * 1.5f); - //////////////////////////////////////////////////////////////////////////////////// - real vvx = ((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfcaa-mfacc) + (mfcca-mfaac))) + - (((mfcba-mfabc) + (mfcbc-mfaba)) + ((mfcab-mfacb) + (mfccb-mfaab))) + - (mfcbb-mfabb)) * OoRho; - real vvy =((((mfccc-mfaaa) + (mfaca-mfcac)) + ((mfacc-mfcaa) + (mfcca-mfaac))) + - (((mfbca-mfbac) + (mfbcc-mfbaa)) + ((mfacb-mfcab) + (mfccb-mfaab))) + - (mfbcb-mfbab)) * OoRho; - real vvz =((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfacc-mfcaa) + (mfaac-mfcca))) + - (((mfbac-mfbca) + (mfbcc-mfbaa)) + ((mfabc-mfcba) + (mfcbc-mfaba))) + - (mfbbc-mfbba)) * OoRho; - ///////////////////////// - //Test Values - //double vvx = 0.016; - //double vvy = zero; - //double vvz = zero; - //////////////////////////////////////////////////////////////////////////////////////// - ////round off error test - //if(vvx!=zero){ - // (kDistTest.f[DIR_P00])[k] = mfabb; - // (kDistTest.f[DIR_M00])[k] = mfcbb; - // (kDistTest.f[DIR_0P0])[k] = mfbab; - // (kDistTest.f[DIR_0M0])[k] = mfbcb; - // (kDistTest.f[DIR_00P])[k] = mfbba; - // (kDistTest.f[DIR_00M])[k] = mfbbc; - // (kDistTest.f[DIR_PP0])[k] = mfaab; - // (kDistTest.f[DIR_MM0])[k] = mfccb; - // (kDistTest.f[DIR_PM0])[k] = mfacb; - // (kDistTest.f[DIR_MP0])[k] = mfcab; - // (kDistTest.f[DIR_P0P])[k] = mfaba; - // (kDistTest.f[DIR_M0M])[k] = mfcbc; - // (kDistTest.f[DIR_P0M])[k] = mfabc; - // (kDistTest.f[DIR_M0P])[k] = mfcba; - // (kDistTest.f[DIR_0PP])[k] = mfbaa; - // (kDistTest.f[DIR_0MM])[k] = mfbcc; - // (kDistTest.f[DIR_0PM])[k] = mfbac; - // (kDistTest.f[DIR_0MP])[k] = mfbca; - // (kDistTest.f[DIR_000])[k] = KQK; - // (kDistTest.f[DIR_PPP])[k] = mfaaa; - // (kDistTest.f[DIR_MMP])[k] = mfcca; - // (kDistTest.f[DIR_PMP])[k] = mfaca; - // (kDistTest.f[DIR_MPP])[k] = mfcaa; - // (kDistTest.f[DIR_PPM])[k] = mfaac; - // (kDistTest.f[DIR_MMM])[k] = mfccc; - // (kDistTest.f[DIR_PMM])[k] = mfacc; - // (kDistTest.f[DIR_MPM])[k] = mfcac; - //}else{ - // (kDistTest.f[DIR_P00])[k] = zero; - // (kDistTest.f[DIR_M00])[k] = zero; - // (kDistTest.f[DIR_0P0])[k] = zero; - // (kDistTest.f[DIR_0M0])[k] = zero; - // (kDistTest.f[DIR_00P])[k] = zero; - // (kDistTest.f[DIR_00M])[k] = zero; - // (kDistTest.f[DIR_PP0])[k] = zero; - // (kDistTest.f[DIR_MM0])[k] = zero; - // (kDistTest.f[DIR_PM0])[k] = zero; - // (kDistTest.f[DIR_MP0])[k] = zero; - // (kDistTest.f[DIR_P0P])[k] = zero; - // (kDistTest.f[DIR_M0M])[k] = zero; - // (kDistTest.f[DIR_P0M])[k] = zero; - // (kDistTest.f[DIR_M0P])[k] = zero; - // (kDistTest.f[DIR_0PP])[k] = zero; - // (kDistTest.f[DIR_0MM])[k] = zero; - // (kDistTest.f[DIR_0PM])[k] = zero; - // (kDistTest.f[DIR_0MP])[k] = zero; - // (kDistTest.f[DIR_000])[k] = zero; - // (kDistTest.f[DIR_PPP])[k] = zero; - // (kDistTest.f[DIR_MMP])[k] = zero; - // (kDistTest.f[DIR_PMP])[k] = zero; - // (kDistTest.f[DIR_MPP])[k] = zero; - // (kDistTest.f[DIR_PPM])[k] = zero; - // (kDistTest.f[DIR_MMM])[k] = zero; - // (kDistTest.f[DIR_PMM])[k] = zero; - // (kDistTest.f[DIR_MPM])[k] = zero; - //} - - ////////////////////////////////////////////////////////////////////////////////////// - //// first bad fix for negative x velocity - ////if(vvx > zero) vvx = zero; - ////////////////////////////////////////////////////////////////////////////////////// - ////// second bad fix for negative x velocity - ////if(vvx > zero){ - //// vvx = -vvx; - //// vvy = -vvy; - //// vvz = -vvz; - ////} - //////////////////////////////////////////////////////////////////////////////////// - double vx2 = vvx * vvx; - double vy2 = vvy * vvy; - double vz2 = vvz * vvz; - ////////////////////////////////////////////////////////////////////////////////// - //original - real XXb = -c2o3 + vx2; - real XXc = -c1o2 * (XXb + c1o1 + vvx); - real XXa = XXc + vvx; - real YYb = -c2o3 + vy2; - real YYc = -c1o2 * (YYb + c1o1 + vvy); - real YYa = YYc + vvy; - real ZZb = -c2o3 + vz2; - real ZZc = -c1o2 * (ZZb + c1o1 + vvz); - real ZZa = ZZc + vvz; - ////////////////////////////////////////////////////////////////////////////////// - //unkonditioniert - mfcbb = -(rhoBC[k] + c1o1) * XXc * YYb * ZZb - c2o27; - mfabb = -(rhoBC[k] + c1o1) * XXa * YYb * ZZb - c2o27; - mfbcb = -(rhoBC[k] + c1o1) * XXb * YYc * ZZb - c2o27; - mfbab = -(rhoBC[k] + c1o1) * XXb * YYa * ZZb - c2o27; - mfbbc = -(rhoBC[k] + c1o1) * XXb * YYb * ZZc - c2o27; - mfbba = -(rhoBC[k] + c1o1) * XXb * YYb * ZZa - c2o27; - mfccb = -(rhoBC[k] + c1o1) * XXc * YYc * ZZb - c1o54; - mfaab = -(rhoBC[k] + c1o1) * XXa * YYa * ZZb - c1o54; - mfcab = -(rhoBC[k] + c1o1) * XXc * YYa * ZZb - c1o54; - mfacb = -(rhoBC[k] + c1o1) * XXa * YYc * ZZb - c1o54; - mfcbc = -(rhoBC[k] + c1o1) * XXc * YYb * ZZc - c1o54; - mfaba = -(rhoBC[k] + c1o1) * XXa * YYb * ZZa - c1o54; - mfcba = -(rhoBC[k] + c1o1) * XXc * YYb * ZZa - c1o54; - mfabc = -(rhoBC[k] + c1o1) * XXa * YYb * ZZc - c1o54; - mfbcc = -(rhoBC[k] + c1o1) * XXb * YYc * ZZc - c1o54; - mfbaa = -(rhoBC[k] + c1o1) * XXb * YYa * ZZa - c1o54; - mfbca = -(rhoBC[k] + c1o1) * XXb * YYc * ZZa - c1o54; - mfbac = -(rhoBC[k] + c1o1) * XXb * YYa * ZZc - c1o54; - mfbbb = -(rhoBC[k] + c1o1) * XXb * YYb * ZZb - c8o27; - mfccc = -(rhoBC[k] + c1o1) * XXc * YYc * ZZc - c1o216; - mfaac = -(rhoBC[k] + c1o1) * XXa * YYa * ZZc - c1o216; - mfcac = -(rhoBC[k] + c1o1) * XXc * YYa * ZZc - c1o216; - mfacc = -(rhoBC[k] + c1o1) * XXa * YYc * ZZc - c1o216; - mfcca = -(rhoBC[k] + c1o1) * XXc * YYc * ZZa - c1o216; - mfaaa = -(rhoBC[k] + c1o1) * XXa * YYa * ZZa - c1o216; - mfcaa = -(rhoBC[k] + c1o1) * XXc * YYa * ZZa - c1o216; - mfaca = -(rhoBC[k] + c1o1) * XXa * YYc * ZZa - c1o216; - ////////////////////////////////////////////////////////// - ////konditioniert - //double OneOver216RhoPlusOne = c1over216*(rhoBC[k]+one); - //double OnoOver216Rho = c1over216*rhoBC[k]; - //mfcbb = OnoOver216Rho*sixteen + OneOver216RhoPlusOne*twelve*(-(two*vy2) - two*vz2 + three*vy2*vz2 + vvx*(-two + three*vy2)*(-two + three*vz2) + vx2*(-two + three*vy2)*(-two + three*vz2)); - //mfabb = OnoOver216Rho*sixteen - OneOver216RhoPlusOne*twelve*(two*vy2 + two*vz2 - three*vy2*vz2 + vvx*(-two + three*vy2)*(-two + three*vz2) + vx2*(-four + six*vy2 + six*vz2 - nine*vy2*vz2)); - //mfbcb = four*(-(four*OneOver216RhoPlusOne) + four*OnoOver216Rho + OneOver216RhoPlusOne*(-two + three*vx2)*(one + three*vvy + three*vy2)*(-two + three*vz2)); - //mfbab = four*(four*OnoOver216Rho - OneOver216RhoPlusOne*three*(vvy*(-two + three*vx2)*(-two + three*vz2) - one*vx2*(one + three*vy2)*(-two + three*vz2) + two*(-(two*vy2) + vz2 + three*vy2*vz2))); - //mfbbc = four*(-(four*OneOver216RhoPlusOne) + four*OnoOver216Rho + OneOver216RhoPlusOne*(-two + three*vx2)*(-two + three*vy2)*(one + three*vvz + three*vz2)); - //mfbba = four*(four*OnoOver216Rho - OneOver216RhoPlusOne*three*(vvz*(-two + three*vx2)*(-two + three*vy2) - one*vx2*(-two + three*vy2)*(one + three*vz2) + two*(vy2 - two*vz2 + three*vy2*vz2))); - //mfccb = -(two*(-(OnoOver216Rho*two) + OneOver216RhoPlusOne*three*(-(two*vx2) - two*vy2 - six*vx2*vy2 + vz2 + three*vx2*vz2 + three*vy2*vz2 + nine*vx2*vy2*vz2 + vvy*(one + three*vx2)*(-two + three*vz2) + vvx*(one + three*vvy + three*vy2)*(-two + three*vz2)))); - //mfaab = -(two*(-(OnoOver216Rho*two) + OneOver216RhoPlusOne*three*(-(two*vx2) - two*vy2 - six*vx2*vy2 + vz2 + three*vx2*vz2 + three*vy2*vz2 + nine*vx2*vy2*vz2 - one*vvy*(one + three*vx2)*(-two + three*vz2) + vvx*(-one + three*vvy - three*vy2)*(-two + three*vz2)))); - //mfcab = two*(OnoOver216Rho*two + OneOver216RhoPlusOne*three*(two*vx2 + two*vy2 + six*vx2*vy2 - one*vz2 - three*vx2*vz2 - three*vy2*vz2 - nine*vx2*vy2*vz2 + vvy*(one + three*vx2)*(-two + three*vz2) + vvx*(-one + three*vvy - three*vy2)*(-two + three*vz2))); - //mfacb = two*(OnoOver216Rho*two + OneOver216RhoPlusOne*three*(two*vx2 + two*vy2 + six*vx2*vy2 - one*vz2 - three*vx2*vz2 - three*vy2*vz2 - nine*vx2*vy2*vz2 - one*vvy*(one + three*vx2)*(-two + three*vz2) + vvx*(one + three*vvy + three*vy2)*(-two + three*vz2))); - //mfcbc = -(two*(-(OnoOver216Rho*two) + OneOver216RhoPlusOne*three*(-(two*vx2) + vy2 + three*vx2*vy2 + vvz*(one + three*vx2)*(-two + three*vy2) - two*vz2 - six*vx2*vz2 + three*vy2*vz2 + nine*vx2*vy2*vz2 + vvx*(-two + three*vy2)*(one + three*vvz + three*vz2)))); - //mfaba = -(two*(-(OnoOver216Rho*two) + OneOver216RhoPlusOne*three*(-(two*vx2) + vy2 + three*vx2*vy2 - one*vvz*(one + three*vx2)*(-two + three*vy2) - two*vz2 - six*vx2*vz2 + three*vy2*vz2 + nine*vx2*vy2*vz2 + vvx*(-two + three*vy2)*(-one + three*vvz - three*vz2)))); - //mfcba = two*(OnoOver216Rho*two + OneOver216RhoPlusOne*three*(two*vx2 - one*vy2 - three*vx2*vy2 + vvz*(one + three*vx2)*(-two + three*vy2) + two*vz2 + six*vx2*vz2 - three*vy2*vz2 - nine*vx2*vy2*vz2 + vvx*(-two + three*vy2)*(-one + three*vvz - three*vz2))); - //mfabc = two*(OnoOver216Rho*two + OneOver216RhoPlusOne*three*(two*vx2 - one*vy2 - three*vx2*vy2 - one*vvz*(one + three*vx2)*(-two + three*vy2) + two*vz2 + six*vx2*vz2 - three*vy2*vz2 - nine*vx2*vy2*vz2 + vvx*(-two + three*vy2)*(one + three*vvz + three*vz2))); - //mfbcc = -(two*(-(OnoOver216Rho*two) + OneOver216RhoPlusOne*three*(vx2 - two*vy2 + three*vx2*vy2 + vvz*(-two + three*vx2)*(one + three*vy2) - two*vz2 + three*vx2*vz2 - six*vy2*vz2 + nine*vx2*vy2*vz2 + vvy*(-two + three*vx2)*(one + three*vvz + three*vz2)))); - //mfbaa = -(two*(-(OnoOver216Rho*two) + OneOver216RhoPlusOne*three*(vx2 - two*vy2 + three*vx2*vy2 - one*vvz*(-two + three*vx2)*(one + three*vy2) - two*vz2 + three*vx2*vz2 - six*vy2*vz2 + nine*vx2*vy2*vz2 + vvy*(-two + three*vx2)*(-one + three*vvz - three*vz2)))); - //mfbca = two*(OnoOver216Rho*two + OneOver216RhoPlusOne*three*(-(one*vx2) + two*vy2 - three*vx2*vy2 + vvz*(-two + three*vx2)*(one + three*vy2) + two*vz2 - three*vx2*vz2 + six*vy2*vz2 - nine*vx2*vy2*vz2 + vvy*(-two + three*vx2)*(-one + three*vvz - three*vz2))); - //mfbac = two*(OnoOver216Rho*two + OneOver216RhoPlusOne*three*(-(one*vx2) + two*vy2 - three*vx2*vy2 - one*vvz*(-two + three*vx2)*(one + three*vy2) + two*vz2 - three*vx2*vz2 + six*vy2*vz2 - nine*vx2*vy2*vz2 + vvy*(-two + three*vx2)*(one + three*vvz + three*vz2))); - //mfbbb = eight*(eight*OnoOver216Rho + OneOver216RhoPlusOne*three*(four*vy2 + four*vz2 - six*vy2*vz2 + vx2*(-two + three*vy2)*(-two + three*vz2))); - //mfccc = OnoOver216Rho + OneOver216RhoPlusOne*three*(vvz + vx2 + three*vvz*vx2 + vy2 + three*vvz*vy2 + three*vx2*vy2 + nine*vvz*vx2*vy2 + vz2 + three*vx2*vz2 + three*vy2*vz2 + nine*vx2*vy2*vz2 + vvy*(one + three*vx2)*(one + three*vvz + three*vz2) + vvx*(one + three*vvy + three*vy2)*(one + three*vvz + three*vz2)); - //mfaac = OnoOver216Rho + OneOver216RhoPlusOne*three*(vvz + vx2 + three*vvz*vx2 + vy2 + three*vvz*vy2 + three*vx2*vy2 + nine*vvz*vx2*vy2 + vz2 + three*vx2*vz2 + three*vy2*vz2 + nine*vx2*vy2*vz2 - one*vvy*(one + three*vx2)*(one + three*vvz + three*vz2) + vvx*(-one + three*vvy - three*vy2)*(one + three*vvz + three*vz2)); - //mfcac = OnoOver216Rho + OneOver216RhoPlusOne*three*(vvz + vx2 + three*vvz*vx2 + vy2 + three*vvz*vy2 + three*vx2*vy2 + nine*vvz*vx2*vy2 + vz2 + three*vx2*vz2 + three*vy2*vz2 + nine*vx2*vy2*vz2 - one*vvy*(one + three*vx2)*(one + three*vvz + three*vz2) - one*vvx*(-one + three*vvy - three*vy2)*(one + three*vvz + three*vz2)); - //mfacc = OnoOver216Rho + OneOver216RhoPlusOne*three*(vvz + vx2 + three*vvz*vx2 + vy2 + three*vvz*vy2 + three*vx2*vy2 + nine*vvz*vx2*vy2 + vz2 + three*vx2*vz2 + three*vy2*vz2 + nine*vx2*vy2*vz2 + vvy*(one + three*vx2)*(one + three*vvz + three*vz2) - one*vvx*(one + three*vvy + three*vy2)*(one + three*vvz + three*vz2)); - //mfcca = OnoOver216Rho + OneOver216RhoPlusOne*three*(-(one*vvz) + vx2 - three*vvz*vx2 + vy2 - three*vvz*vy2 + three*vx2*vy2 - nine*vvz*vx2*vy2 + vz2 + three*vx2*vz2 + three*vy2*vz2 + nine*vx2*vy2*vz2 - one*vvy*(one + three*vx2)*(-one + three*vvz - three*vz2) - one*vvx*(one + three*vvy + three*vy2)*(-one + three*vvz - three*vz2)); - //mfaaa = OnoOver216Rho - OneOver216RhoPlusOne*three*(vvz - one*vx2 + three*vvz*vx2 - one*vy2 + three*vvz*vy2 - three*vx2*vy2 + nine*vvz*vx2*vy2 - one*vz2 - three*vx2*vz2 - three*vy2*vz2 - nine*vx2*vy2*vz2 - one*vvy*(one + three*vx2)*(-one + three*vvz - three*vz2) + vvx*(-one + three*vvy - three*vy2)*(-one + three*vvz - three*vz2)); - //mfcaa = OnoOver216Rho + OneOver216RhoPlusOne*three*(-(one*vvz) + vx2 - three*vvz*vx2 + vy2 - three*vvz*vy2 + three*vx2*vy2 - nine*vvz*vx2*vy2 + vz2 + three*vx2*vz2 + three*vy2*vz2 + nine*vx2*vy2*vz2 + vvy*(one + three*vx2)*(-one + three*vvz - three*vz2) + vvx*(-one + three*vvy - three*vy2)*(-one + three*vvz - three*vz2)); - //mfaca = OnoOver216Rho + OneOver216RhoPlusOne*three*(-(one*vvz) + vx2 - three*vvz*vx2 + vy2 - three*vvz*vy2 + three*vx2*vy2 - nine*vvz*vx2*vy2 + vz2 + three*vx2*vz2 + three*vy2*vz2 + nine*vx2*vy2*vz2 - one*vvy*(one + three*vx2)*(-one + three*vvz - three*vz2) + vvx*(one + three*vvy + three*vy2)*(-one + three*vvz - three*vz2)); - - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //if (isEvenTimestep==true) - //{ - // D.f[DIR_P00] = &DD[DIR_P00 * size_Mat]; - // D.f[DIR_M00] = &DD[DIR_M00 * size_Mat]; - // D.f[DIR_0P0] = &DD[DIR_0P0 * size_Mat]; - // D.f[DIR_0M0] = &DD[DIR_0M0 * size_Mat]; - // D.f[DIR_00P] = &DD[DIR_00P * size_Mat]; - // D.f[DIR_00M] = &DD[DIR_00M * size_Mat]; - // D.f[DIR_PP0] = &DD[DIR_PP0 * size_Mat]; - // D.f[DIR_MM0] = &DD[DIR_MM0 * size_Mat]; - // D.f[DIR_PM0] = &DD[DIR_PM0 * size_Mat]; - // D.f[DIR_MP0] = &DD[DIR_MP0 * size_Mat]; - // D.f[DIR_P0P] = &DD[DIR_P0P * size_Mat]; - // D.f[DIR_M0M] = &DD[DIR_M0M * size_Mat]; - // D.f[DIR_P0M] = &DD[DIR_P0M * size_Mat]; - // D.f[DIR_M0P] = &DD[DIR_M0P * size_Mat]; - // D.f[DIR_0PP] = &DD[DIR_0PP * size_Mat]; - // D.f[DIR_0MM] = &DD[DIR_0MM * size_Mat]; - // D.f[DIR_0PM] = &DD[DIR_0PM * size_Mat]; - // D.f[DIR_0MP] = &DD[DIR_0MP * size_Mat]; - // D.f[DIR_000] = &DD[DIR_000 * size_Mat]; - // D.f[DIR_PPP] = &DD[DIR_PPP * size_Mat]; - // D.f[DIR_MMP] = &DD[DIR_MMP * size_Mat]; - // D.f[DIR_PMP] = &DD[DIR_PMP * size_Mat]; - // D.f[DIR_MPP] = &DD[DIR_MPP * size_Mat]; - // D.f[DIR_PPM] = &DD[DIR_PPM * size_Mat]; - // D.f[DIR_MMM] = &DD[DIR_MMM * size_Mat]; - // D.f[DIR_PMM] = &DD[DIR_PMM * size_Mat]; - // D.f[DIR_MPM] = &DD[DIR_MPM * size_Mat]; - //} - //else - //{ - // D.f[DIR_M00] = &DD[DIR_P00 * size_Mat]; - // D.f[DIR_P00] = &DD[DIR_M00 * size_Mat]; - // D.f[DIR_0M0] = &DD[DIR_0P0 * size_Mat]; - // D.f[DIR_0P0] = &DD[DIR_0M0 * size_Mat]; - // D.f[DIR_00M] = &DD[DIR_00P * size_Mat]; - // D.f[DIR_00P] = &DD[DIR_00M * size_Mat]; - // D.f[DIR_MM0] = &DD[DIR_PP0 * size_Mat]; - // D.f[DIR_PP0] = &DD[DIR_MM0 * size_Mat]; - // D.f[DIR_MP0] = &DD[DIR_PM0 * size_Mat]; - // D.f[DIR_PM0] = &DD[DIR_MP0 * size_Mat]; - // D.f[DIR_M0M] = &DD[DIR_P0P * size_Mat]; - // D.f[DIR_P0P] = &DD[DIR_M0M * size_Mat]; - // D.f[DIR_M0P] = &DD[DIR_P0M * size_Mat]; - // D.f[DIR_P0M] = &DD[DIR_M0P * size_Mat]; - // D.f[DIR_0MM] = &DD[DIR_0PP * size_Mat]; - // D.f[DIR_0PP] = &DD[DIR_0MM * size_Mat]; - // D.f[DIR_0MP] = &DD[DIR_0PM * size_Mat]; - // D.f[DIR_0PM] = &DD[DIR_0MP * size_Mat]; - // D.f[DIR_000] = &DD[DIR_000 * size_Mat]; - // D.f[DIR_PPP] = &DD[DIR_MMM * size_Mat]; - // D.f[DIR_MMP] = &DD[DIR_PPM * size_Mat]; - // D.f[DIR_PMP] = &DD[DIR_MPM * size_Mat]; - // D.f[DIR_MPP] = &DD[DIR_PMM * size_Mat]; - // D.f[DIR_PPM] = &DD[DIR_MMP * size_Mat]; - // D.f[DIR_MMM] = &DD[DIR_PPP * size_Mat]; - // D.f[DIR_PMM] = &DD[DIR_MPP * size_Mat]; - // D.f[DIR_MPM] = &DD[DIR_PMP * size_Mat]; - //} - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //__syncthreads(); - - (D.f[DIR_P00])[ke ] = mfabb;//mfcbb; - (D.f[DIR_M00])[kw ] = mfcbb;//mfabb; - (D.f[DIR_0P0])[kn ] = mfbab;//mfbcb; - (D.f[DIR_0M0])[ks ] = mfbcb;//mfbab; - (D.f[DIR_00P])[kt ] = mfbba;//mfbbc; - (D.f[DIR_00M])[kb ] = mfbbc;//mfbba; - (D.f[DIR_PP0])[kne ] = mfaab;//mfccb; - (D.f[DIR_MM0])[ksw ] = mfccb;//mfaab; - (D.f[DIR_PM0])[kse ] = mfacb;//mfcab; - (D.f[DIR_MP0])[knw ] = mfcab;//mfacb; - (D.f[DIR_P0P])[kte ] = mfaba;//mfcbc; - (D.f[DIR_M0M])[kbw ] = mfcbc;//mfaba; - (D.f[DIR_P0M])[kbe ] = mfabc;//mfcba; - (D.f[DIR_M0P])[ktw ] = mfcba;//mfabc; - (D.f[DIR_0PP])[ktn ] = mfbaa;//mfbcc; - (D.f[DIR_0MM])[kbs ] = mfbcc;//mfbaa; - (D.f[DIR_0PM])[kbn ] = mfbac;//mfbca; - (D.f[DIR_0MP])[kts ] = mfbca;//mfbac; - (D.f[DIR_000])[kzero] = mfbbb;//mfbbb; - (D.f[DIR_PPP])[ktne ] = mfaaa;//mfccc; - (D.f[DIR_MMP])[ktsw ] = mfcca;//mfaac; - (D.f[DIR_PMP])[ktse ] = mfaca;//mfcac; - (D.f[DIR_MPP])[ktnw ] = mfcaa;//mfacc; - (D.f[DIR_PPM])[kbne ] = mfaac;//mfcca; - (D.f[DIR_MMM])[kbsw ] = mfccc;//mfaaa; - (D.f[DIR_PMM])[kbse ] = mfacc;//mfcaa; - (D.f[DIR_MPM])[kbnw ] = mfcac;//mfaca; - //(D.f[DIR_P00])[ke ] = mfcbb; - //(D.f[DIR_M00])[kw ] = mfabb; - //(D.f[DIR_0P0])[kn ] = mfbcb; - //(D.f[DIR_0M0])[ks ] = mfbab; - //(D.f[DIR_00P])[kt ] = mfbbc; - //(D.f[DIR_00M])[kb ] = mfbba; - //(D.f[DIR_PP0])[kne ] = mfccb; - //(D.f[DIR_MM0])[ksw ] = mfaab; - //(D.f[DIR_PM0])[kse ] = mfcab; - //(D.f[DIR_MP0])[knw ] = mfacb; - //(D.f[DIR_P0P])[kte ] = mfcbc; - //(D.f[DIR_M0M])[kbw ] = mfaba; - //(D.f[DIR_P0M])[kbe ] = mfcba; - //(D.f[DIR_M0P])[ktw ] = mfabc; - //(D.f[DIR_0PP])[ktn ] = mfbcc; - //(D.f[DIR_0MM])[kbs ] = mfbaa; - //(D.f[DIR_0PM])[kbn ] = mfbca; - //(D.f[DIR_0MP])[kts ] = mfbac; - //(D.f[DIR_000])[kzero] = mfbbb; - //(D.f[DIR_PPP])[ktne ] = mfccc; - //(D.f[DIR_MMP])[ktsw ] = mfaac; - //(D.f[DIR_PMP])[ktse ] = mfcac; - //(D.f[DIR_MPP])[ktnw ] = mfacc; - //(D.f[DIR_PPM])[kbne ] = mfcca; - //(D.f[DIR_MMM])[kbsw ] = mfaaa; - //(D.f[DIR_PMM])[kbse ] = mfcaa; - //(D.f[DIR_MPM])[kbnw ] = mfaca; - - //(D.f[DIR_P00])[ke ] = fE ; //f1_E ; //fW; //fE ; - //(D.f[DIR_M00])[kw ] = fW ; //f1_W ; //fE; //fW ; - //(D.f[DIR_0P0])[kn ] = fN ; //f1_N ; //fS; //fN ; - //(D.f[DIR_0M0])[ks ] = fS ; //f1_S ; //fN; //fS ; - //(D.f[DIR_00P])[kt ] = fT ; //f1_T ; //fB; //fT ; - //(D.f[DIR_00M])[kb ] = fB ; //f1_B ; //fT; //fB ; - //(D.f[DIR_PP0])[kne ] = fNE; //f1_NE; //fSW; //fNE; - //(D.f[DIR_MM0])[ksw ] = fSW; //f1_SW; //fNE; //fSW; - //(D.f[DIR_PM0])[kse ] = fSE; //f1_SE; //fNW; //fSE; - //(D.f[DIR_MP0])[knw ] = fNW; //f1_NW; //fSE; //fNW; - //(D.f[DIR_P0P])[kte ] = fTE; //f1_TE; //fBW; //fTE; - //(D.f[DIR_M0M])[kbw ] = fBW; //f1_BW; //fTE; //fBW; - //(D.f[DIR_P0M])[kbe ] = fBE; //f1_BE; //fTW; //fBE; - //(D.f[DIR_M0P])[ktw ] = fTW; //f1_TW; //fBE; //fTW; - //(D.f[DIR_0PP])[ktn ] = fTN; //f1_TN; //fBS; //fTN; - //(D.f[DIR_0MM])[kbs ] = fBS; //f1_BS; //fTN; //fBS; - //(D.f[DIR_0PM])[kbn ] = fBN; //f1_BN; //fTS; //fBN; - //(D.f[DIR_0MP])[kts ] = fTS; //f1_TS; //fBN; //fTS; - //(D.f[DIR_000])[kzero] = fZERO;//f1_ZERO; //fZERO; //fZERO; - //(D.f[DIR_PPP])[ktne ] = fTNE; //f1_TNE; //fBSW; //fTNE; - //(D.f[DIR_MMM])[kbsw ] = fBSW; //f1_BSW; //fTNE; //fBSW; - //(D.f[DIR_PPM])[kbne ] = fBNE; //f1_BNE; //fTSW; //fBNE; - //(D.f[DIR_MMP])[ktsw ] = fTSW; //f1_TSW; //fBNE; //fTSW; - //(D.f[DIR_PMP])[ktse ] = fTSE; //f1_TSE; //fBNW; //fTSE; - //(D.f[DIR_MPM])[kbnw ] = fBNW; //f1_BNW; //fTSE; //fBNW; - //(D.f[DIR_PMM])[kbse ] = fBSE; //f1_BSE; //fTNW; //fBSE; - //(D.f[DIR_MPP])[ktnw ] = fTNW; //f1_TNW; //fBSE; //fTNW; - } -} -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -__global__ void QPressDeviceZero27( - real* DD, - int* k_Q, - unsigned int numberOfBCnodes, - unsigned int* neighborX, - unsigned int* neighborY, - unsigned int* neighborZ, - unsigned long long 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 - - const unsigned nx = blockDim.x; - const unsigned ny = gridDim.x; - - const unsigned k = nx*(ny*z + y) + x; - ////////////////////////////////////////////////////////////////////////// - - if(k<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]; - 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]; - //////////////////////////////////////////////////////////////////////////////// - Distributions27 D; - if (isEvenTimestep==false) - { - D.f[DIR_P00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_M00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_PMP * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_MPM * numberOfLBnodes]; - } - else - { - D.f[DIR_M00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_P00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_MPM * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_PMP * numberOfLBnodes]; - } - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //__syncthreads(); - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - (D.f[DIR_P00])[ke ] =c0o1; - (D.f[DIR_M00])[kw ] =c0o1; - (D.f[DIR_0P0])[kn ] =c0o1; - (D.f[DIR_0M0])[ks ] =c0o1; - (D.f[DIR_00P])[kt ] =c0o1; - (D.f[DIR_00M])[kb ] =c0o1; - (D.f[DIR_PP0])[kne ] =c0o1; - (D.f[DIR_MM0])[ksw ] =c0o1; - (D.f[DIR_PM0])[kse ] =c0o1; - (D.f[DIR_MP0])[knw ] =c0o1; - (D.f[DIR_P0P])[kte ] =c0o1; - (D.f[DIR_M0M])[kbw ] =c0o1; - (D.f[DIR_P0M])[kbe ] =c0o1; - (D.f[DIR_M0P])[ktw ] =c0o1; - (D.f[DIR_0PP])[ktn ] =c0o1; - (D.f[DIR_0MM])[kbs ] =c0o1; - (D.f[DIR_0PM])[kbn ] =c0o1; - (D.f[DIR_0MP])[kts ] =c0o1; - (D.f[DIR_000])[kzero] =c0o1; - (D.f[DIR_PPP])[ktne ] =c0o1; - (D.f[DIR_MMP])[ktsw ] =c0o1; - (D.f[DIR_PMP])[ktse ] =c0o1; - (D.f[DIR_MPP])[ktnw ] =c0o1; - (D.f[DIR_PPM])[kbne ] =c0o1; - (D.f[DIR_MMM])[kbsw ] =c0o1; - (D.f[DIR_PMM])[kbse ] =c0o1; - (D.f[DIR_MPM])[kbnw ] =c0o1; - } -} -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -__global__ void QPressDeviceFake27( - real* rhoBC, - real* DD, - int* k_Q, - int* k_N, - int numberOfBCnodes, - real om1, - unsigned int* neighborX, - unsigned int* neighborY, - unsigned int* neighborZ, - unsigned long long numberOfLBnodes, - bool isEvenTimestep) -{ - //////////////////////////////////////////////////////////////////////////////// - const unsigned x = threadIdx.x; // Globaler x-Index - const unsigned y = blockIdx.x; // Globaler y-Index - const unsigned z = blockIdx.y; // Globaler z-Index - - const unsigned nx = blockDim.x; - const unsigned ny = gridDim.x; - - const unsigned k = nx*(ny*z + y) + x; - ////////////////////////////////////////////////////////////////////////// - - if(k<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]; - 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]; - //////////////////////////////////////////////////////////////////////////////// - //index1 - unsigned int K1QK = k_N[k]; - unsigned int k1zero= K1QK; - unsigned int k1e = K1QK; - unsigned int k1w = neighborX[K1QK]; - unsigned int k1n = K1QK; - unsigned int k1s = neighborY[K1QK]; - unsigned int k1t = K1QK; - unsigned int k1b = neighborZ[K1QK]; - unsigned int k1sw = neighborY[k1w]; - unsigned int k1ne = K1QK; - unsigned int k1se = k1s; - unsigned int k1nw = k1w; - unsigned int k1bw = neighborZ[k1w]; - unsigned int k1te = K1QK; - unsigned int k1be = k1b; - unsigned int k1tw = k1w; - unsigned int k1bs = neighborZ[k1s]; - unsigned int k1tn = K1QK; - unsigned int k1bn = k1b; - unsigned int k1ts = k1s; - unsigned int k1tse = k1s; - unsigned int k1bnw = k1bw; - unsigned int k1tnw = k1w; - unsigned int k1bse = k1bs; - unsigned int k1tsw = k1sw; - unsigned int k1bne = k1b; - unsigned int k1tne = K1QK; - unsigned int k1bsw = neighborZ[k1sw]; - //////////////////////////////////////////////////////////////////////////////// - Distributions27 D; - if (isEvenTimestep==false) - { - D.f[DIR_P00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_M00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_PMP * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_MPM * numberOfLBnodes]; - } - else - { - D.f[DIR_M00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_P00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_MPM * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_PMP * numberOfLBnodes]; - } - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - 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[DIR_P00])[k1e ]; - f1_E = (D.f[DIR_M00])[k1w ]; - f1_S = (D.f[DIR_0P0])[k1n ]; - f1_N = (D.f[DIR_0M0])[k1s ]; - f1_B = (D.f[DIR_00P])[k1t ]; - f1_T = (D.f[DIR_00M])[k1b ]; - f1_SW = (D.f[DIR_PP0])[k1ne ]; - f1_NE = (D.f[DIR_MM0])[k1sw ]; - f1_NW = (D.f[DIR_PM0])[k1se ]; - f1_SE = (D.f[DIR_MP0])[k1nw ]; - f1_BW = (D.f[DIR_P0P])[k1te ]; - f1_TE = (D.f[DIR_M0M])[k1bw ]; - f1_TW = (D.f[DIR_P0M])[k1be ]; - f1_BE = (D.f[DIR_M0P])[k1tw ]; - f1_BS = (D.f[DIR_0PP])[k1tn ]; - f1_TN = (D.f[DIR_0MM])[k1bs ]; - f1_TS = (D.f[DIR_0PM])[k1bn ]; - f1_BN = (D.f[DIR_0MP])[k1ts ]; - f1_ZERO = (D.f[DIR_000])[k1zero]; - f1_BSW = (D.f[DIR_PPP])[k1tne ]; - f1_BNE = (D.f[DIR_MMP])[k1tsw ]; - f1_BNW = (D.f[DIR_PMP])[k1tse ]; - f1_BSE = (D.f[DIR_MPP])[k1tnw ]; - f1_TSW = (D.f[DIR_PPM])[k1bne ]; - f1_TNE = (D.f[DIR_MMM])[k1bsw ]; - f1_TNW = (D.f[DIR_PMM])[k1bse ]; - f1_TSE = (D.f[DIR_MPM])[k1bnw ]; - - //////////////////////////////////////////////////////////////////////////////// - real vx1, vx2, vx3; - 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); - - - 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); - - 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 cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3); - ////////////////////////////////////////////////////////////////////////// - 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; - - //drho1 = (drho1 + rhoBC[k])/2.f; - drho1 = drho1 - rhoBC[k]; - - __syncthreads(); - - (D.f[DIR_P00])[ke ] = c2o27* (rhoBC[k]+c3o1*(-vx1 )+c9o2*(-vx1 )*(-vx1 )-cu_sq); - (D.f[DIR_M00])[kw ] = c2o27* (rhoBC[k]+c3o1*( vx1 )+c9o2*( vx1 )*( vx1 )-cu_sq); - (D.f[DIR_0P0])[kn ] = c2o27* (rhoBC[k]+c3o1*( -vx2 )+c9o2*( -vx2 )*( -vx2 )-cu_sq); - (D.f[DIR_0M0])[ks ] = c2o27* (rhoBC[k]+c3o1*( vx2 )+c9o2*( vx2 )*( vx2 )-cu_sq); - (D.f[DIR_00P])[kt ] = c2o27* (rhoBC[k]+c3o1*( -vx3)+c9o2*( -vx3)*( -vx3)-cu_sq); - (D.f[DIR_00M])[kb ] = c2o27* (rhoBC[k]+c3o1*( vx3)+c9o2*( vx3)*( vx3)-cu_sq); - (D.f[DIR_PP0])[kne ] = f1_SW -c1o54*drho1; // c1o100; // zero; // - (D.f[DIR_MM0])[ksw ] = f1_NE -c1o54*drho1; // c1o100; // zero; // - (D.f[DIR_PM0])[kse ] = f1_NW -c1o54*drho1; // c1o100; // zero; // - (D.f[DIR_MP0])[knw ] = f1_SE -c1o54*drho1; // c1o100; // zero; // - (D.f[DIR_P0P])[kte ] = f1_BW -c1o54*drho1; // c1o100; // zero; // - (D.f[DIR_M0M])[kbw ] = f1_TE -c1o54*drho1; // c1o100; // zero; // - (D.f[DIR_P0M])[kbe ] = f1_TW -c1o54*drho1; // c1o100; // zero; // - (D.f[DIR_M0P])[ktw ] = f1_BE -c1o54*drho1; // c1o100; // zero; // - (D.f[DIR_0PP])[ktn ] = f1_BS -c1o54*drho1; // c1o100; // zero; // - (D.f[DIR_0MM])[kbs ] = f1_TN -c1o54*drho1; // c1o100; // zero; // - (D.f[DIR_0PM])[kbn ] = f1_TS -c1o54*drho1; // c1o100; // zero; // - (D.f[DIR_0MP])[kts ] = f1_BN -c1o54*drho1; // c1o100; // zero; // - (D.f[DIR_000])[kzero] = f1_ZERO-c8o27*drho1; // c1o100; // zero; // - (D.f[DIR_PPP])[ktne ] = f1_BSW -c1o216*drho1; // c1o100; // zero; // - (D.f[DIR_MMP])[ktsw ] = f1_BNE -c1o216*drho1; // c1o100; // zero; // - (D.f[DIR_PMP])[ktse ] = f1_BNW -c1o216*drho1; // c1o100; // zero; // - (D.f[DIR_MPP])[ktnw ] = f1_BSE -c1o216*drho1; // c1o100; // zero; // - (D.f[DIR_PPM])[kbne ] = f1_TSW -c1o216*drho1; // c1o100; // zero; // - (D.f[DIR_MMM])[kbsw ] = f1_TNE -c1o216*drho1; // c1o100; // zero; // - (D.f[DIR_PMM])[kbse ] = f1_TNW -c1o216*drho1; // c1o100; // zero; // - (D.f[DIR_MPM])[kbnw ] = f1_TSE -c1o216*drho1; // c1o100; // zero; // - } -} -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -////////////////////////////////////////////////////////////////////////// -__global__ void QPressDevice27_IntBB( - real* rho, - real* DD, - int* k_Q, - real* QQ, - unsigned int numberOfBCnodes, - real om1, - unsigned int* neighborX, - unsigned int* neighborY, - unsigned int* neighborZ, - unsigned long long numberOfLBnodes, - bool isEvenTimestep) -{ - Distributions27 D; - if (isEvenTimestep==true) - { - D.f[DIR_P00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_M00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_PMP * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_MPM * numberOfLBnodes]; - } - else - { - D.f[DIR_M00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_P00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_MPM * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_PMP * numberOfLBnodes]; - } - //////////////////////////////////////////////////////////////////////////////// - const unsigned x = threadIdx.x; // Globaler x-Index - const unsigned y = blockIdx.x; // Globaler y-Index - const unsigned z = blockIdx.y; // Globaler z-Index - - const unsigned nx = blockDim.x; - const unsigned ny = gridDim.x; - - const unsigned k = nx*(ny*z + y) + x; - ////////////////////////////////////////////////////////////////////////// - - if(k < numberOfBCnodes) - { - //////////////////////////////////////////////////////////////////////////////// - //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) - //////////////////////////////////////////////////////////////////////////////// - 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[DIR_P00 * numberOfBCnodes]; - q_dirW = &QQ[DIR_M00 * numberOfBCnodes]; - q_dirN = &QQ[DIR_0P0 * numberOfBCnodes]; - q_dirS = &QQ[DIR_0M0 * numberOfBCnodes]; - q_dirT = &QQ[DIR_00P * numberOfBCnodes]; - q_dirB = &QQ[DIR_00M * numberOfBCnodes]; - q_dirNE = &QQ[DIR_PP0 * numberOfBCnodes]; - q_dirSW = &QQ[DIR_MM0 * numberOfBCnodes]; - q_dirSE = &QQ[DIR_PM0 * numberOfBCnodes]; - q_dirNW = &QQ[DIR_MP0 * numberOfBCnodes]; - q_dirTE = &QQ[DIR_P0P * numberOfBCnodes]; - q_dirBW = &QQ[DIR_M0M * numberOfBCnodes]; - q_dirBE = &QQ[DIR_P0M * numberOfBCnodes]; - q_dirTW = &QQ[DIR_M0P * numberOfBCnodes]; - q_dirTN = &QQ[DIR_0PP * numberOfBCnodes]; - q_dirBS = &QQ[DIR_0MM * numberOfBCnodes]; - q_dirBN = &QQ[DIR_0PM * numberOfBCnodes]; - q_dirTS = &QQ[DIR_0MP * numberOfBCnodes]; - q_dirTNE = &QQ[DIR_PPP * numberOfBCnodes]; - q_dirTSW = &QQ[DIR_MMP * numberOfBCnodes]; - q_dirTSE = &QQ[DIR_PMP * numberOfBCnodes]; - q_dirTNW = &QQ[DIR_MPP * numberOfBCnodes]; - q_dirBNE = &QQ[DIR_PPM * numberOfBCnodes]; - q_dirBSW = &QQ[DIR_MMM * numberOfBCnodes]; - q_dirBSE = &QQ[DIR_PMM * numberOfBCnodes]; - q_dirBNW = &QQ[DIR_MPM * 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]; - 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 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[DIR_P00])[ke ]; - f_E = (D.f[DIR_M00])[kw ]; - f_S = (D.f[DIR_0P0])[kn ]; - f_N = (D.f[DIR_0M0])[ks ]; - f_B = (D.f[DIR_00P])[kt ]; - f_T = (D.f[DIR_00M])[kb ]; - f_SW = (D.f[DIR_PP0])[kne ]; - f_NE = (D.f[DIR_MM0])[ksw ]; - f_NW = (D.f[DIR_PM0])[kse ]; - f_SE = (D.f[DIR_MP0])[knw ]; - f_BW = (D.f[DIR_P0P])[kte ]; - f_TE = (D.f[DIR_M0M])[kbw ]; - f_TW = (D.f[DIR_P0M])[kbe ]; - f_BE = (D.f[DIR_M0P])[ktw ]; - f_BS = (D.f[DIR_0PP])[ktn ]; - f_TN = (D.f[DIR_0MM])[kbs ]; - f_TS = (D.f[DIR_0PM])[kbn ]; - f_BN = (D.f[DIR_0MP])[kts ]; - f_BSW = (D.f[DIR_PPP])[ktne ]; - f_BNE = (D.f[DIR_MMP])[ktsw ]; - f_BNW = (D.f[DIR_PMP])[ktse ]; - f_BSE = (D.f[DIR_MPP])[ktnw ]; - f_TSW = (D.f[DIR_PPM])[kbne ]; - f_TNE = (D.f[DIR_MMM])[kbsw ]; - f_TNW = (D.f[DIR_PMM])[kbse ]; - f_TSE = (D.f[DIR_MPM])[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[DIR_000])[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); - - - 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 cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3); - - ////////////////////////////////////////////////////////////////////////// - if (isEvenTimestep==false) - { - D.f[DIR_P00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_M00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_PMP * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_MPM * numberOfLBnodes]; - } - else - { - D.f[DIR_M00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_P00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_MPM * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_PMP * numberOfLBnodes]; - } - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //Test - //(D.f[DIR_000])[k]=c1o10; - real rhoDiff = drho - rho[k]; - real VeloX = vx1; - real VeloY = vx2; - real VeloZ = vx3; - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - q = q_dirE[k]; - if (q>=c0o1 && q<=c1o1) - { - feq=c2o27* (drho+c9o2*( vx1 )*( vx1 )-cu_sq); - (D.f[DIR_M00])[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[DIR_P00])[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[DIR_0M0])[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[DIR_0P0])[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[DIR_00M])[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[DIR_00P])[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[DIR_MM0])[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[DIR_PP0])[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[DIR_MP0])[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[DIR_PM0])[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[DIR_M0M])[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[DIR_P0P])[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[DIR_M0P])[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[DIR_P0M])[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[DIR_0MM])[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[DIR_0PP])[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[DIR_0MP])[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[DIR_0PM])[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[DIR_MMM])[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[DIR_PPP])[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[DIR_MMP])[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[DIR_PPM])[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[DIR_MPM])[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[DIR_PMP])[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[DIR_MPP])[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[DIR_PMM])[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/SchlafferBCs27.cu b/src/gpu/VirtualFluids_GPU/GPU/SchlafferBCs27.cu deleted file mode 100644 index 70e938db5df2bae442034ce0303081e8b175e5f6..0000000000000000000000000000000000000000 --- a/src/gpu/VirtualFluids_GPU/GPU/SchlafferBCs27.cu +++ /dev/null @@ -1,590 +0,0 @@ -/* Device code */ -#include "LBM/LB.h" -#include "lbm/constants/D3Q27.h" -#include <basics/constants/NumericConstants.h> - -using namespace vf::basics::constant; -using namespace vf::lbm::dir; - -// TODO: https://git.rz.tu-bs.de/irmb/VirtualFluids_dev/-/issues/29 -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -__global__ void PressSchlaff27(real* rhoBC, - real* DD, - real* vx0, - real* vy0, - real* vz0, - real* deltaVz0, - int* k_Q, - int* k_N, - int numberOfBCnodes, - real om1, - unsigned int* neighborX, - unsigned int* neighborY, - unsigned int* neighborZ, - unsigned long long numberOfLBnodes, - bool isEvenTimestep) -{ - //////////////////////////////////////////////////////////////////////////////// - const unsigned x = threadIdx.x; // Globaler x-Index - const unsigned y = blockIdx.x; // Globaler y-Index - const unsigned z = blockIdx.y; // Globaler z-Index - - const unsigned nx = blockDim.x; - const unsigned ny = gridDim.x; - - const unsigned k = nx*(ny*z + y) + x; - ////////////////////////////////////////////////////////////////////////// - - if(k<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]; - 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]; - //////////////////////////////////////////////////////////////////////////////// - Distributions27 D; - if (isEvenTimestep==true) - { - D.f[DIR_P00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_M00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_PMP * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_MPM * numberOfLBnodes]; - } - else - { - D.f[DIR_M00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_P00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_MPM * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_PMP * numberOfLBnodes]; - } - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - 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[DIR_P00])[ke ]; - f1_W = (D.f[DIR_M00])[kw ]; - f1_N = (D.f[DIR_0P0])[kn ]; - f1_S = (D.f[DIR_0M0])[ks ]; - f1_T = (D.f[DIR_00P])[kt ]; - f1_B = (D.f[DIR_00M])[kb ]; - f1_NE = (D.f[DIR_PP0])[kne ]; - f1_SW = (D.f[DIR_MM0])[ksw ]; - f1_SE = (D.f[DIR_PM0])[kse ]; - f1_NW = (D.f[DIR_MP0])[knw ]; - f1_TE = (D.f[DIR_P0P])[kte ]; - f1_BW = (D.f[DIR_M0M])[kbw ]; - f1_BE = (D.f[DIR_P0M])[kbe ]; - f1_TW = (D.f[DIR_M0P])[ktw ]; - f1_TN = (D.f[DIR_0PP])[ktn ]; - f1_BS = (D.f[DIR_0MM])[kbs ]; - f1_BN = (D.f[DIR_0PM])[kbn ]; - f1_TS = (D.f[DIR_0MP])[kts ]; - f1_ZERO = (D.f[DIR_000])[kzero]; - f1_TNE = (D.f[DIR_PPP])[ktne ]; - f1_TSW = (D.f[DIR_MMP])[ktsw ]; - f1_TSE = (D.f[DIR_PMP])[ktse ]; - f1_TNW = (D.f[DIR_MPP])[ktnw ]; - f1_BNE = (D.f[DIR_PPM])[kbne ]; - f1_BSW = (D.f[DIR_MMM])[kbsw ]; - f1_BSE = (D.f[DIR_PMM])[kbse ]; - f1_BNW = (D.f[DIR_MPM])[kbnw ]; - ////////////////////////////////////////////////////////////////////////// - real cs = c1o1/sqrt(c3o1); - real csp1 = cs + c1o1; - real csp1Sq = (c1o1 + cs)*(c1o1 + cs); - real relFac = c21o20; // 0.9...1.0 - ////////////////////////////////////////////////////////////////////////// - // For adaption: - // Pressure limits with rho0 = 1: - // 2.2e-10 ~ 0.94 dB - // 6.2e-10 ~ 9.9 dB - // 6.2e-9 ~ 29.9 dB - // 2.0e-7 ~ 60.1 dB /Vel - // 2.0e-5 ~ 100.1 dB /press - const double dPlimit = Op0000002; - const double dRlimit = dPlimit * c3o1;// three = c1oCs2; - const double uSlimit = dRlimit * c1o1;// one = c1oRho0; - ////////////////////////////////////////////////////////////////////////// - real VX = vx0[k]; - real VY = vy0[k]; - real VZ = vz0[k]; - ////////////////////////////////////////////////////////////////////////// - - real temp = c2o1*(f1_TNE + f1_TSE + f1_TSW + f1_TNW) + c2o1*(f1_TE + f1_TW + f1_TN + f1_TS) + f1_NE + f1_SW + f1_SE + f1_NW + c2o1*f1_T + f1_E + f1_W + f1_N + f1_S + f1_ZERO; - - real vs_z = relFac * (VZ+cs) * ( csp1 - sqrt(csp1Sq + c2o1*VZ - c2o1*temp) ); //old = relFac * cs * ( csp1 - sqrt(csp1Sq + two*VZ - two*temp) ); - - // 3. Compute density of compensated velocity: - real tempDeltaV = deltaVz0[k]; - real rholoc = temp - c1o1 * (VZ + tempDeltaV + vs_z); - - // 4. Compute density deviation: - real drho = rholoc - rhoBC[k]; - - // 5. Adapt Speed: - real dv = tempDeltaV + vs_z; - - if( drho > dRlimit) { - VZ += dv + uSlimit; - tempDeltaV += uSlimit; - } - else if( drho < -dRlimit) { - VZ += dv - uSlimit; - tempDeltaV -= uSlimit; - } - else { - VZ += dv + drho; - tempDeltaV += drho; - } - - //VZ = vz0[k] + vs_z; - // 6. Set unknown distributions: - f1_B = f1_T - c4o9 * VZ; - f1_BW = f1_TE - c1o9 * (VX + VZ); - f1_BE = f1_TW + c1o9 * (VX - VZ); - f1_BS = f1_TN - c1o9 * (VY + VZ); - f1_BN = f1_TS + c1o9 * (VY - VZ); - f1_BSW = f1_TNE - c1o36 * (VX + VY + VZ); - f1_BNW = f1_TSE - c1o36 * (VX - VY + VZ); - f1_BNE = f1_TSW + c1o36 * (VX + VY - VZ); - f1_BSE = f1_TNW + c1o36 * (VX - VY - VZ); - - deltaVz0[k] = tempDeltaV; - - (D.f[DIR_00M])[kb ] = f1_B ; - (D.f[DIR_M0M])[kbw ] = f1_BW ; - (D.f[DIR_P0M])[kbe ] = f1_BE ; - (D.f[DIR_0MM])[kbs ] = f1_BS ; - (D.f[DIR_0PM])[kbn ] = f1_BN ; - (D.f[DIR_PPM])[kbne ] = f1_BNE ; - (D.f[DIR_MMM])[kbsw ] = f1_BSW ; - (D.f[DIR_PMM])[kbse ] = f1_BSE ; - (D.f[DIR_MPM])[kbnw ] = f1_BNW ; - } -} -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -// TODO: https://git.rz.tu-bs.de/irmb/VirtualFluids_dev/-/issues/29 -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -__global__ void VelSchlaff27( int t, - real* DD, - real* vz0, - real* deltaVz0, - int* k_Q, - int* k_N, - int numberOfBCnodes, - real om1, - unsigned int* neighborX, - unsigned int* neighborY, - unsigned int* neighborZ, - unsigned long long numberOfLBnodes, - bool isEvenTimestep) -{ - //////////////////////////////////////////////////////////////////////////////// - const unsigned x = threadIdx.x; // Globaler x-Index - const unsigned y = blockIdx.x; // Globaler y-Index - const unsigned z = blockIdx.y; // Globaler z-Index - - const unsigned nx = blockDim.x; - const unsigned ny = gridDim.x; - - const unsigned k = nx*(ny*z + y) + x; - ////////////////////////////////////////////////////////////////////////// - - if(k<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]; - 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]; - //////////////////////////////////////////////////////////////////////////////// - Distributions27 D; - if (isEvenTimestep==true) - { - D.f[DIR_P00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_M00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_PMP * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_MPM * numberOfLBnodes]; - } - else - { - D.f[DIR_M00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_P00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_MPM * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_PMP * numberOfLBnodes]; - } - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - 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[DIR_P00])[ke ]; - f1_W = (D.f[DIR_M00])[kw ]; - f1_N = (D.f[DIR_0P0])[kn ]; - f1_S = (D.f[DIR_0M0])[ks ]; - f1_T = (D.f[DIR_00P])[kt ]; - f1_B = (D.f[DIR_00M])[kb ]; - f1_NE = (D.f[DIR_PP0])[kne ]; - f1_SW = (D.f[DIR_MM0])[ksw ]; - f1_SE = (D.f[DIR_PM0])[kse ]; - f1_NW = (D.f[DIR_MP0])[knw ]; - f1_TE = (D.f[DIR_P0P])[kte ]; - f1_BW = (D.f[DIR_M0M])[kbw ]; - f1_BE = (D.f[DIR_P0M])[kbe ]; - f1_TW = (D.f[DIR_M0P])[ktw ]; - f1_TN = (D.f[DIR_0PP])[ktn ]; - f1_BS = (D.f[DIR_0MM])[kbs ]; - f1_BN = (D.f[DIR_0PM])[kbn ]; - f1_TS = (D.f[DIR_0MP])[kts ]; - f1_ZERO = (D.f[DIR_000])[kzero]; - f1_TNE = (D.f[DIR_PPP])[ktne ]; - f1_TSW = (D.f[DIR_MMP])[ktsw ]; - f1_TSE = (D.f[DIR_PMP])[ktse ]; - f1_TNW = (D.f[DIR_MPP])[ktnw ]; - f1_BNE = (D.f[DIR_PPM])[kbne ]; - f1_BSW = (D.f[DIR_MMM])[kbsw ]; - f1_BSE = (D.f[DIR_PMM])[kbse ]; - f1_BNW = (D.f[DIR_MPM])[kbnw ]; - //f1_W = (D.f[DIR_P00])[ke ]; - //f1_E = (D.f[DIR_M00])[kw ]; - //f1_S = (D.f[DIR_0P0])[kn ]; - //f1_N = (D.f[DIR_0M0])[ks ]; - //f1_B = (D.f[DIR_00P])[kt ]; - //f1_T = (D.f[DIR_00M])[kb ]; - //f1_SW = (D.f[DIR_PP0])[kne ]; - //f1_NE = (D.f[DIR_MM0])[ksw ]; - //f1_NW = (D.f[DIR_PM0])[kse ]; - //f1_SE = (D.f[DIR_MP0])[knw ]; - //f1_BW = (D.f[DIR_P0P])[kte ]; - //f1_TE = (D.f[DIR_M0M])[kbw ]; - //f1_TW = (D.f[DIR_P0M])[kbe ]; - //f1_BE = (D.f[DIR_M0P])[ktw ]; - //f1_BS = (D.f[DIR_0PP])[ktn ]; - //f1_TN = (D.f[DIR_0MM])[kbs ]; - //f1_TS = (D.f[DIR_0PM])[kbn ]; - //f1_BN = (D.f[DIR_0MP])[kts ]; - //f1_ZERO = (D.f[DIR_000])[kzero]; - //f1_BSW = (D.f[DIR_PPP])[ktne ]; - //f1_BNE = (D.f[DIR_MMP])[ktsw ]; - //f1_BNW = (D.f[DIR_PMP])[ktse ]; - //f1_BSE = (D.f[DIR_MPP])[ktnw ]; - //f1_TSW = (D.f[DIR_PPM])[kbne ]; - //f1_TNE = (D.f[DIR_MMM])[kbsw ]; - //f1_TNW = (D.f[DIR_PMM])[kbse ]; - //f1_TSE = (D.f[DIR_MPM])[kbnw ]; - ////////////////////////////////////////////////////////////////////////// - real cs = c1o1/sqrt(c3o1); - real csp1 = cs + c1o1; - real csp1Sq = (c1o1 + cs)*(c1o1 + cs); - real relFac = c19o20; // 0.9...1.0 - ////////////////////////////////////////////////////////////////////////// - // For adaption: - // Pressure limits with rho0 = 1: - // 2.2e-10 ~ 0.94 dB - // 6.2e-10 ~ 9.9 dB - // 6.2e-9 ~ 29.9 dB - // 2.0e-7 ~ 60.1 dB /Vel - // 2.0e-5 ~ 100.1 dB /press - real uSlimit = Op0000002; - ////////////////////////////////////////////////////////////////////////// - real VX = c0o1; - real VY = c0o1; - real VZ = vz0[k]; - ////////////////////////////////////////////////////////////////////////// - real temp = f1_ZERO + f1_E + f1_W + f1_N + f1_S + f1_NE + f1_SW + f1_SE + f1_NW + c2o1*(f1_B + f1_BE + f1_BW + f1_BN + f1_BS + f1_BNE + f1_BSE + f1_BSW + f1_BNW); - //real temp = f1_ZERO + f1_E + f1_W + f1_N + f1_S + f1_NE + f1_SW + f1_SE + f1_NW + two*(f1_T + f1_TE + f1_TW + f1_TN + f1_TS + f1_TNE + f1_TSE + f1_TSW + f1_TNW); - ////real temp2= c1mcsSq + two*VZ - two*temp; - real vs_z; - //if (t < 5) - //{ - // vs_z = zero; - //} - //else - //{ - vs_z = relFac * (cs-VZ) * ( sqrt(csp1Sq - c2o1*VZ - c2o1*temp) - csp1 ); //old = relFac * cs * ( sqrt(csp1Sq - two*VZ - two*temp) - csp1 ); - //} - - // 3. Adapt Speed: - real tempDeltaV = deltaVz0[k]; - real dv = tempDeltaV + vs_z; - - if( dv > uSlimit) { - VZ += dv - uSlimit; - tempDeltaV -= uSlimit; - } - else if( dv < -uSlimit) { - VZ += dv + uSlimit; - tempDeltaV += uSlimit; - } - else { - tempDeltaV = -vs_z; - } - - //VZ = vz0[k]+vs_z; - // 4. Set unknown distributions: - //f1_B = f1_T - c4o9 * VZ; - //f1_BW = f1_TE - c1o9 * (VX + VZ); - //f1_BE = f1_TW + c1o9 * (VX - VZ); - //f1_BS = f1_TN - c1o9 * (VY + VZ); - //f1_BN = f1_TS + c1o9 * (VY - VZ); - //f1_BSW = f1_TNE - c1o36 * (VX + VY + VZ); - //f1_BNW = f1_TSE - c1o36 * (VX - VY + VZ); - //f1_BNE = f1_TSW + c1o36 * (VX + VY - VZ); - //f1_BSE = f1_TNW + c1o36 * (VX - VY - VZ); - - f1_T = f1_B + c4o9 * VZ; - f1_TE = f1_BW + c1o9 * (VX + VZ); - f1_TW = f1_BE - c1o9 * (VX - VZ); - f1_TN = f1_BS + c1o9 * (VY + VZ); - f1_TS = f1_BN - c1o9 * (VY - VZ); - f1_TNE = f1_BSW + c1o36 * (VX + VY + VZ); - f1_TSE = f1_BNW + c1o36 * (VX - VY + VZ); - f1_TSW = f1_BNE - c1o36 * (VX + VY - VZ); - f1_TNW = f1_BSE - c1o36 * (VX - VY - VZ); - - deltaVz0[k] = tempDeltaV; - (D.f[DIR_00P])[kt ] = f1_T ; - (D.f[DIR_P0P])[kte ] = f1_TE ; - (D.f[DIR_M0P])[ktw ] = f1_TW ; - (D.f[DIR_0PP])[ktn ] = f1_TN ; - (D.f[DIR_0MP])[kts ] = f1_TS ; - (D.f[DIR_PPP])[ktne ] = f1_TNE; - (D.f[DIR_MMP])[ktsw ] = f1_TSW; - (D.f[DIR_PMP])[ktse ] = f1_TSE; - (D.f[DIR_MPP])[ktnw ] = f1_TNW; - - //(D.f[DIR_00M])[kb ] = f1_B ; - //(D.f[DIR_M0M])[kbw ] = f1_BW ; - //(D.f[DIR_P0M])[kbe ] = f1_BE ; - //(D.f[DIR_0MM])[kbs ] = f1_BS ; - //(D.f[DIR_0PM])[kbn ] = f1_BN ; - //(D.f[DIR_PPM])[kbne ] = f1_BNE ; - //(D.f[DIR_MMM])[kbsw ] = f1_BSW ; - //(D.f[DIR_PMM])[kbse ] = f1_BSE ; - //(D.f[DIR_MPM])[kbnw ] = f1_BNW ; - - - //(D.f[DIR_00P])[kt ] = f1_B ; - //(D.f[DIR_P0P])[kte ] = f1_BW ; - //(D.f[DIR_M0P])[ktw ] = f1_BE ; - //(D.f[DIR_0PP])[ktn ] = f1_BS ; - //(D.f[DIR_0MP])[kts ] = f1_BN ; - //(D.f[DIR_PPP])[ktne ] = f1_BSW; - //(D.f[DIR_MMP])[ktsw ] = f1_BNE; - //(D.f[DIR_PMP])[ktse ] = f1_BNW; - //(D.f[DIR_MPP])[ktnw ] = f1_BSE; - - //(D.f[DIR_P00])[ke ] = f1_W -c2over27*drho1; - //(D.f[DIR_M00])[kw ] = f1_E -c2over27*drho1; - //(D.f[DIR_0P0])[kn ] = f1_S -c2over27*drho1; - //(D.f[DIR_0M0])[ks ] = f1_N -c2over27*drho1; - //(D.f[DIR_00P])[kt ] = f1_B -c2over27*drho1; - //(D.f[DIR_00M])[kb ] = f1_T -c2over27*drho1; - //(D.f[DIR_PP0])[kne ] = f1_SW -c1over54*drho1; - //(D.f[DIR_MM0])[ksw ] = f1_NE -c1over54*drho1; - //(D.f[DIR_PM0])[kse ] = f1_NW -c1over54*drho1; - //(D.f[DIR_MP0])[knw ] = f1_SE -c1over54*drho1; - //(D.f[DIR_P0P])[kte ] = f1_BW -c1over54*drho1; - //(D.f[DIR_M0M])[kbw ] = f1_TE -c1over54*drho1; - //(D.f[DIR_P0M])[kbe ] = f1_TW -c1over54*drho1; - //(D.f[DIR_M0P])[ktw ] = f1_BE -c1over54*drho1; - //(D.f[DIR_0PP])[ktn ] = f1_BS -c1over54*drho1; - //(D.f[DIR_0MM])[kbs ] = f1_TN -c1over54*drho1; - //(D.f[DIR_0PM])[kbn ] = f1_TS -c1over54*drho1; - //(D.f[DIR_0MP])[kts ] = f1_BN -c1over54*drho1; - //(D.f[DIR_000])[kzero] = f1_ZERO-c8over27*drho1; - //(D.f[DIR_PPP])[ktne ] = f1_BSW -c1over216*drho1; - //(D.f[DIR_MMP])[ktsw ] = f1_BNE -c1over216*drho1; - //(D.f[DIR_PMP])[ktse ] = f1_BNW -c1over216*drho1; - //(D.f[DIR_MPP])[ktnw ] = f1_BSE -c1over216*drho1; - //(D.f[DIR_PPM])[kbne ] = f1_TSW -c1over216*drho1; - //(D.f[DIR_MMM])[kbsw ] = f1_TNE -c1over216*drho1; - //(D.f[DIR_PMM])[kbse ] = f1_TNW -c1over216*drho1; - //(D.f[DIR_MPM])[kbnw ] = f1_TSE -c1over216*drho1; - } -} -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - - - diff --git a/src/gpu/VirtualFluids_GPU/GPU/SetForcing27.cu b/src/gpu/VirtualFluids_GPU/GPU/SetForcing27.cu deleted file mode 100644 index d847d00193f68127927e2f3fa3fbf1eda7f9a736..0000000000000000000000000000000000000000 --- a/src/gpu/VirtualFluids_GPU/GPU/SetForcing27.cu +++ /dev/null @@ -1,174 +0,0 @@ -/* Device code */ -#include "LBM/LB.h" -#include "lbm/constants/D3Q27.h" -#include <basics/constants/NumericConstants.h> - -using namespace vf::basics::constant; -using namespace vf::lbm::dir; - -//////////////////////////////////////////////////////////////////////////////// -__global__ void GetVeloforForcing27( real* DD, - int* bcIndex, - int nonAtBC, - real* Vx, - real* Vy, - real* Vz, - unsigned int* neighborX, - unsigned int* neighborY, - unsigned int* neighborZ, - unsigned long long numberOfLBnodes, - bool isEvenTimestep) -{ - Distributions27 D; - if (isEvenTimestep==false) - { - D.f[DIR_P00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_M00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_PMP * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_MPM * numberOfLBnodes]; - } - else - { - D.f[DIR_M00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_P00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_MPM * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_PMP * numberOfLBnodes]; - } - //////////////////////////////////////////////////////////////////////////////// - const unsigned x = threadIdx.x; // Globaler x-Index - const unsigned y = blockIdx.x; // Globaler y-Index - const unsigned z = blockIdx.y; // Globaler z-Index - - const unsigned nx = blockDim.x; - const unsigned ny = gridDim.x; - - const unsigned k = nx*(ny*z + y) + x; - ////////////////////////////////////////////////////////////////////////// - if(k < nonAtBC) - { - //////////////////////////////////////////////////////////////////////////////// - //index - unsigned int KQK = bcIndex[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 mfcbb = (D.f[DIR_P00])[ke ]; - real mfabb = (D.f[DIR_M00])[kw ]; - real mfbcb = (D.f[DIR_0P0])[kn ]; - real mfbab = (D.f[DIR_0M0])[ks ]; - real mfbbc = (D.f[DIR_00P])[kt ]; - real mfbba = (D.f[DIR_00M])[kb ]; - real mfccb = (D.f[DIR_PP0])[kne ]; - real mfaab = (D.f[DIR_MM0])[ksw ]; - real mfcab = (D.f[DIR_PM0])[kse ]; - real mfacb = (D.f[DIR_MP0])[knw ]; - real mfcbc = (D.f[DIR_P0P])[kte ]; - real mfaba = (D.f[DIR_M0M])[kbw ]; - real mfcba = (D.f[DIR_P0M])[kbe ]; - real mfabc = (D.f[DIR_M0P])[ktw ]; - real mfbcc = (D.f[DIR_0PP])[ktn ]; - real mfbaa = (D.f[DIR_0MM])[kbs ]; - real mfbca = (D.f[DIR_0PM])[kbn ]; - real mfbac = (D.f[DIR_0MP])[kts ]; - real mfbbb = (D.f[DIR_000])[kzero]; - real mfccc = (D.f[DIR_PPP])[ktne ]; - real mfaac = (D.f[DIR_MMP])[ktsw ]; - real mfcac = (D.f[DIR_PMP])[ktse ]; - real mfacc = (D.f[DIR_MPP])[ktnw ]; - real mfcca = (D.f[DIR_PPM])[kbne ]; - real mfaaa = (D.f[DIR_MMM])[kbsw ]; - real mfcaa = (D.f[DIR_PMM])[kbse ]; - real mfaca = (D.f[DIR_MPM])[kbnw ]; - //////////////////////////////////////////////////////////////////////////////////// - real rho = (mfccc+mfaaa + mfaca+mfcac + mfacc+mfcaa + mfaac+mfcca + - mfbac+mfbca + mfbaa+mfbcc + mfabc+mfcba + mfaba+mfcbc + mfacb+mfcab + mfaab+mfccb + - mfabb+mfcbb + mfbab+mfbcb + mfbba+mfbbc + mfbbb + c1o1);//!!!!Achtung + one - //////////////////////////////////////////////////////////////////////////////////// - real vx =((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfcaa-mfacc) + (mfcca-mfaac))) + - (((mfcba-mfabc) + (mfcbc-mfaba)) + ((mfcab-mfacb) + (mfccb-mfaab))) + - (mfcbb-mfabb))/ rho; - real vy =((((mfccc-mfaaa) + (mfaca-mfcac)) + ((mfacc-mfcaa) + (mfcca-mfaac))) + - (((mfbca-mfbac) + (mfbcc-mfbaa)) + ((mfacb-mfcab) + (mfccb-mfaab))) + - (mfbcb-mfbab)) / rho; - real vz =((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfacc-mfcaa) + (mfaac-mfcca))) + - (((mfbac-mfbca) + (mfbcc-mfbaa)) + ((mfabc-mfcba) + (mfcbc-mfaba))) + - (mfbbc-mfbba)) / rho; - //////////////////////////////////////////////////////////////////////////////////// - Vx[k] = vx; - Vy[k] = vy; - Vz[k] = vz; - //////////////////////////////////////////////////////////////////////////////////// - } -} - diff --git a/src/gpu/VirtualFluids_GPU/GPU/ThinWallBCs27.cu b/src/gpu/VirtualFluids_GPU/GPU/ThinWallBCs27.cu deleted file mode 100644 index f76b31c768553aed46fd640d9cdace8ba753b6b8..0000000000000000000000000000000000000000 --- a/src/gpu/VirtualFluids_GPU/GPU/ThinWallBCs27.cu +++ /dev/null @@ -1,1137 +0,0 @@ -// _ ___ __ __________ _ __ ______________ __ -// | | / (_)____/ /___ ______ _/ / ____/ /_ __(_)___/ /____ / ___/ __ / / / / -// | | / / / ___/ __/ / / / __ `/ / /_ / / / / / / __ / ___/ / /___/ /_/ / / / / -// | |/ / / / / /_/ /_/ / /_/ / / __/ / / /_/ / / /_/ (__ ) / /_) / ____/ /__/ / -// |___/_/_/ \__/\__,_/\__,_/_/_/ /_/\__,_/_/\__,_/____/ \____/_/ \_____/ -// -////////////////////////////////////////////////////////////////////////// - -/* Device code */ -#include "LBM/LB.h" -#include "lbm/constants/D3Q27.h" -#include <basics/constants/NumericConstants.h> - -using namespace vf::basics::constant; -using namespace vf::lbm::dir; - -///////////////////////////////////////////////////////////////////////// -__global__ void QVelDeviceCompThinWallsPartOne27( - real* vx, - real* vy, - real* vz, - real* DD, - int* k_Q, - real* QQ, - uint numberOfBCnodes, - real om1, - uint* neighborX, - uint* neighborY, - uint* neighborZ, - unsigned long long numberOfLBnodes, - bool isEvenTimestep) -{ - Distributions27 D; - if (isEvenTimestep==true) - { - D.f[DIR_P00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_M00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_PMP * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_MPM * numberOfLBnodes]; - } - else - { - D.f[DIR_M00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_P00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_MPM * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_PMP * numberOfLBnodes]; - } - //////////////////////////////////////////////////////////////////////////////// - const unsigned x = threadIdx.x; // Globaler x-Index - const unsigned y = blockIdx.x; // Globaler y-Index - const unsigned z = blockIdx.y; // Globaler z-Index - - const unsigned nx = blockDim.x; - const unsigned ny = gridDim.x; - - const unsigned k = nx*(ny*z + y) + x; - ////////////////////////////////////////////////////////////////////////// - - if(k<numberOfBCnodes) - { - //////////////////////////////////////////////////////////////////////////////// - real VeloX = vx[k]; - real VeloY = vy[k]; - real VeloZ = vz[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[DIR_P00 * numberOfBCnodes]; - q_dirW = &QQ[DIR_M00 * numberOfBCnodes]; - q_dirN = &QQ[DIR_0P0 * numberOfBCnodes]; - q_dirS = &QQ[DIR_0M0 * numberOfBCnodes]; - q_dirT = &QQ[DIR_00P * numberOfBCnodes]; - q_dirB = &QQ[DIR_00M * numberOfBCnodes]; - q_dirNE = &QQ[DIR_PP0 * numberOfBCnodes]; - q_dirSW = &QQ[DIR_MM0 * numberOfBCnodes]; - q_dirSE = &QQ[DIR_PM0 * numberOfBCnodes]; - q_dirNW = &QQ[DIR_MP0 * numberOfBCnodes]; - q_dirTE = &QQ[DIR_P0P * numberOfBCnodes]; - q_dirBW = &QQ[DIR_M0M * numberOfBCnodes]; - q_dirBE = &QQ[DIR_P0M * numberOfBCnodes]; - q_dirTW = &QQ[DIR_M0P * numberOfBCnodes]; - q_dirTN = &QQ[DIR_0PP * numberOfBCnodes]; - q_dirBS = &QQ[DIR_0MM * numberOfBCnodes]; - q_dirBN = &QQ[DIR_0PM * numberOfBCnodes]; - q_dirTS = &QQ[DIR_0MP * numberOfBCnodes]; - q_dirTNE = &QQ[DIR_PPP * numberOfBCnodes]; - q_dirTSW = &QQ[DIR_MMP * numberOfBCnodes]; - q_dirTSE = &QQ[DIR_PMP * numberOfBCnodes]; - q_dirTNW = &QQ[DIR_MPP * numberOfBCnodes]; - q_dirBNE = &QQ[DIR_PPM * numberOfBCnodes]; - q_dirBSW = &QQ[DIR_MMM * numberOfBCnodes]; - q_dirBSE = &QQ[DIR_PMM * numberOfBCnodes]; - q_dirBNW = &QQ[DIR_MPM * numberOfBCnodes]; - //////////////////////////////////////////////////////////////////////////////// - //index - uint KQK = k_Q[k]; - uint kzero= KQK; - uint ke = KQK; - uint kw = neighborX[KQK]; - uint kn = KQK; - uint ks = neighborY[KQK]; - uint kt = KQK; - uint kb = neighborZ[KQK]; - uint ksw = neighborY[kw]; - uint kne = KQK; - uint kse = ks; - uint knw = kw; - uint kbw = neighborZ[kw]; - uint kte = KQK; - uint kbe = kb; - uint ktw = kw; - uint kbs = neighborZ[ks]; - uint ktn = KQK; - 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 = KQK; - uint 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[DIR_P00])[ke ]; - f_E = (D.f[DIR_M00])[kw ]; - f_S = (D.f[DIR_0P0])[kn ]; - f_N = (D.f[DIR_0M0])[ks ]; - f_B = (D.f[DIR_00P])[kt ]; - f_T = (D.f[DIR_00M])[kb ]; - f_SW = (D.f[DIR_PP0])[kne ]; - f_NE = (D.f[DIR_MM0])[ksw ]; - f_NW = (D.f[DIR_PM0])[kse ]; - f_SE = (D.f[DIR_MP0])[knw ]; - f_BW = (D.f[DIR_P0P])[kte ]; - f_TE = (D.f[DIR_M0M])[kbw ]; - f_TW = (D.f[DIR_P0M])[kbe ]; - f_BE = (D.f[DIR_M0P])[ktw ]; - f_BS = (D.f[DIR_0PP])[ktn ]; - f_TN = (D.f[DIR_0MM])[kbs ]; - f_TS = (D.f[DIR_0PM])[kbn ]; - f_BN = (D.f[DIR_0MP])[kts ]; - f_BSW = (D.f[DIR_PPP])[ktne ]; - f_BNE = (D.f[DIR_MMP])[ktsw ]; - f_BNW = (D.f[DIR_PMP])[ktse ]; - f_BSE = (D.f[DIR_MPP])[ktnw ]; - f_TSW = (D.f[DIR_PPM])[kbne ]; - f_TNE = (D.f[DIR_MMM])[kbsw ]; - f_TNW = (D.f[DIR_PMM])[kbse ]; - f_TSE = (D.f[DIR_MPM])[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[DIR_000])[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); - - - 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 cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3) * (c1o1 + drho); - - ////////////////////////////////////////////////////////////////////////// - - q = q_dirE[k]; - if (q>=c0o1 && q<=c1o1) - { - feq=c2o27* (drho + c9o2 * ( vx1 )*( vx1 ) * (c1o1 + drho)-cu_sq); - (D.f[DIR_M00])[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[DIR_P00])[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[DIR_0M0])[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[DIR_0P0])[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[DIR_00M])[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[DIR_00P])[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[DIR_MM0])[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[DIR_PP0])[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[DIR_MP0])[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[DIR_PM0])[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[DIR_M0M])[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[DIR_P0P])[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[DIR_M0P])[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[DIR_P0M])[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[DIR_0MM])[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[DIR_0PP])[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[DIR_0MP])[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[DIR_0PM])[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[DIR_MMM])[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[DIR_PPP])[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[DIR_MMP])[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[DIR_PPM])[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[DIR_MPM])[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[DIR_PMP])[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[DIR_MPP])[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[DIR_PMM])[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); - } - } -} -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -////////////////////////////////////////////////////////////////////////////// -__global__ void QDeviceCompThinWallsPartOne27( - real* DD, - int* k_Q, - real* QQ, - unsigned int numberOfBCnodes, - real om1, - unsigned int* neighborX, - unsigned int* neighborY, - unsigned int* neighborZ, - unsigned long long numberOfLBnodes, - bool isEvenTimestep) -{ - Distributions27 D; - if (isEvenTimestep == true) - { - D.f[DIR_P00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_M00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_PMP * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_MPM * numberOfLBnodes]; - } - else - { - D.f[DIR_M00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_P00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_MPM * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_PMP * numberOfLBnodes]; - } - //////////////////////////////////////////////////////////////////////////////// - const unsigned x = threadIdx.x; // Globaler x-Index - const unsigned y = blockIdx.x; // Globaler y-Index - const unsigned z = blockIdx.y; // Globaler z-Index - - const unsigned nx = blockDim.x; - const unsigned ny = gridDim.x; - - const unsigned k = nx*(ny*z + y) + x; - ////////////////////////////////////////////////////////////////////////// - - if (k < 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[DIR_P00 * numberOfBCnodes]; - q_dirW = &QQ[DIR_M00 * numberOfBCnodes]; - q_dirN = &QQ[DIR_0P0 * numberOfBCnodes]; - q_dirS = &QQ[DIR_0M0 * numberOfBCnodes]; - q_dirT = &QQ[DIR_00P * numberOfBCnodes]; - q_dirB = &QQ[DIR_00M * numberOfBCnodes]; - q_dirNE = &QQ[DIR_PP0 * numberOfBCnodes]; - q_dirSW = &QQ[DIR_MM0 * numberOfBCnodes]; - q_dirSE = &QQ[DIR_PM0 * numberOfBCnodes]; - q_dirNW = &QQ[DIR_MP0 * numberOfBCnodes]; - q_dirTE = &QQ[DIR_P0P * numberOfBCnodes]; - q_dirBW = &QQ[DIR_M0M * numberOfBCnodes]; - q_dirBE = &QQ[DIR_P0M * numberOfBCnodes]; - q_dirTW = &QQ[DIR_M0P * numberOfBCnodes]; - q_dirTN = &QQ[DIR_0PP * numberOfBCnodes]; - q_dirBS = &QQ[DIR_0MM * numberOfBCnodes]; - q_dirBN = &QQ[DIR_0PM * numberOfBCnodes]; - q_dirTS = &QQ[DIR_0MP * numberOfBCnodes]; - q_dirTNE = &QQ[DIR_PPP * numberOfBCnodes]; - q_dirTSW = &QQ[DIR_MMP * numberOfBCnodes]; - q_dirTSE = &QQ[DIR_PMP * numberOfBCnodes]; - q_dirTNW = &QQ[DIR_MPP * numberOfBCnodes]; - q_dirBNE = &QQ[DIR_PPM * numberOfBCnodes]; - q_dirBSW = &QQ[DIR_MMM * numberOfBCnodes]; - q_dirBSE = &QQ[DIR_PMM * numberOfBCnodes]; - q_dirBNW = &QQ[DIR_MPM * 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]; - 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 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[DIR_P00])[ke]; - f_E = (D.f[DIR_M00])[kw]; - f_S = (D.f[DIR_0P0])[kn]; - f_N = (D.f[DIR_0M0])[ks]; - f_B = (D.f[DIR_00P])[kt]; - f_T = (D.f[DIR_00M])[kb]; - f_SW = (D.f[DIR_PP0])[kne]; - f_NE = (D.f[DIR_MM0])[ksw]; - f_NW = (D.f[DIR_PM0])[kse]; - f_SE = (D.f[DIR_MP0])[knw]; - f_BW = (D.f[DIR_P0P])[kte]; - f_TE = (D.f[DIR_M0M])[kbw]; - f_TW = (D.f[DIR_P0M])[kbe]; - f_BE = (D.f[DIR_M0P])[ktw]; - f_BS = (D.f[DIR_0PP])[ktn]; - f_TN = (D.f[DIR_0MM])[kbs]; - f_TS = (D.f[DIR_0PM])[kbn]; - f_BN = (D.f[DIR_0MP])[kts]; - f_BSW = (D.f[DIR_PPP])[ktne]; - f_BNE = (D.f[DIR_MMP])[ktsw]; - f_BNW = (D.f[DIR_PMP])[ktse]; - f_BSE = (D.f[DIR_MPP])[ktnw]; - f_TSW = (D.f[DIR_PPM])[kbne]; - f_TNE = (D.f[DIR_MMM])[kbsw]; - f_TNW = (D.f[DIR_PMM])[kbse]; - f_TSE = (D.f[DIR_MPM])[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[DIR_000])[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); - - - 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 cu_sq = c3o2*(vx1*vx1 + vx2*vx2 + vx3*vx3) * (c1o1 + drho); - //////////////////////////////////////////////////////////////////////////////// - - q = q_dirE[k]; - if (q >= c0o1 && q <= c1o1) - { - feq = c2o27* (drho + c9o2*(vx1)*(vx1) * (c1o1 + drho) - cu_sq); - (D.f[DIR_M00])[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[DIR_P00])[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[DIR_0M0])[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[DIR_0P0])[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[DIR_00M])[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[DIR_00P])[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[DIR_MM0])[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[DIR_PP0])[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[DIR_MP0])[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[DIR_PM0])[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[DIR_M0M])[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[DIR_P0P])[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[DIR_M0P])[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[DIR_P0M])[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[DIR_0MM])[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[DIR_0PP])[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[DIR_0MP])[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[DIR_0PM])[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[DIR_MMM])[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[DIR_PPP])[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[DIR_MMP])[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[DIR_PPM])[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[DIR_MPM])[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[DIR_PMP])[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[DIR_MPP])[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[DIR_PMM])[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); - } - } -} -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -////////////////////////////////////////////////////////////////////////////// -__global__ void QThinWallsPartTwo27( - real* DD, - int* k_Q, - real* QQ, - uint numberOfBCnodes, - uint* geom, - uint* neighborX, - uint* neighborY, - uint* neighborZ, - uint* neighborWSB, - unsigned long long 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 - - const unsigned nx = blockDim.x; - const unsigned ny = gridDim.x; - - const unsigned k = nx*(ny*z + y) + x; - ////////////////////////////////////////////////////////////////////////// - - if(k<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[DIR_P00 * numberOfBCnodes]; - q_dirW = &QQ[DIR_M00 * numberOfBCnodes]; - q_dirN = &QQ[DIR_0P0 * numberOfBCnodes]; - q_dirS = &QQ[DIR_0M0 * numberOfBCnodes]; - q_dirT = &QQ[DIR_00P * numberOfBCnodes]; - q_dirB = &QQ[DIR_00M * numberOfBCnodes]; - q_dirNE = &QQ[DIR_PP0 * numberOfBCnodes]; - q_dirSW = &QQ[DIR_MM0 * numberOfBCnodes]; - q_dirSE = &QQ[DIR_PM0 * numberOfBCnodes]; - q_dirNW = &QQ[DIR_MP0 * numberOfBCnodes]; - q_dirTE = &QQ[DIR_P0P * numberOfBCnodes]; - q_dirBW = &QQ[DIR_M0M * numberOfBCnodes]; - q_dirBE = &QQ[DIR_P0M * numberOfBCnodes]; - q_dirTW = &QQ[DIR_M0P * numberOfBCnodes]; - q_dirTN = &QQ[DIR_0PP * numberOfBCnodes]; - q_dirBS = &QQ[DIR_0MM * numberOfBCnodes]; - q_dirBN = &QQ[DIR_0PM * numberOfBCnodes]; - q_dirTS = &QQ[DIR_0MP * numberOfBCnodes]; - q_dirTNE = &QQ[DIR_PPP * numberOfBCnodes]; - q_dirTSW = &QQ[DIR_MMP * numberOfBCnodes]; - q_dirTSE = &QQ[DIR_PMP * numberOfBCnodes]; - q_dirTNW = &QQ[DIR_MPP * numberOfBCnodes]; - q_dirBNE = &QQ[DIR_PPM * numberOfBCnodes]; - q_dirBSW = &QQ[DIR_MMM * numberOfBCnodes]; - q_dirBSE = &QQ[DIR_PMM * numberOfBCnodes]; - q_dirBNW = &QQ[DIR_MPM * numberOfBCnodes]; - //////////////////////////////////////////////////////////////////////////////// - //index - uint KQK = k_Q[k]; - //uint kzero= KQK; - uint ke = KQK; - uint kw = neighborX[KQK]; - uint kn = KQK; - uint ks = neighborY[KQK]; - uint kt = KQK; - uint kb = neighborZ[KQK]; - uint ksw = neighborY[kw]; - uint kne = KQK; - uint kse = ks; - uint knw = kw; - uint kbw = neighborZ[kw]; - uint kte = KQK; - uint kbe = kb; - uint ktw = kw; - uint kbs = neighborZ[ks]; - uint ktn = KQK; - 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 = KQK; - uint kbsw = neighborZ[ksw]; - //////////////////////////////////////////////////////////////////////////////// - //anti ET intermediate steps - uint kmmm = neighborWSB[KQK]; // -1 -1 -1 - uint k0mm = neighborX[kmmm]; // 0 -1 -1 - uint km0m = neighborY[kmmm]; // -1 0 -1 - uint kmm0 = neighborZ[kmmm]; // -1 -1 0 - uint k0m0 = neighborX[kmm0]; // 0 -1 0 - uint km00 = neighborY[kmm0]; // -1 0 0 - ///////////////////////////////////////////////// - //final indices for anti ET - uint kpmm = neighborX[k0mm]; // 1 -1 -1 - uint kmpm = neighborY[km0m]; // -1 1 -1 - uint kmmp = neighborZ[kmm0]; // -1 -1 1 - uint kmp0 = neighborY[km00]; // -1 1 0 - uint km0p = neighborZ[km00]; // -1 0 1 - uint k0mp = neighborZ[k0m0]; // 0 -1 1 - //////////////////////////////////////////////////////////////////////////////// - Distributions27 D, DN; - if (isEvenTimestep == true) - { - D.f[DIR_P00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_M00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_PMP * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_MPM * numberOfLBnodes]; - } - else - { - D.f[DIR_M00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_P00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_MPM * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_PMP * numberOfLBnodes]; - } - if (isEvenTimestep==false) - { - DN.f[DIR_P00] = &DD[DIR_P00 * numberOfLBnodes]; - DN.f[DIR_M00] = &DD[DIR_M00 * numberOfLBnodes]; - DN.f[DIR_0P0] = &DD[DIR_0P0 * numberOfLBnodes]; - DN.f[DIR_0M0] = &DD[DIR_0M0 * numberOfLBnodes]; - DN.f[DIR_00P] = &DD[DIR_00P * numberOfLBnodes]; - DN.f[DIR_00M] = &DD[DIR_00M * numberOfLBnodes]; - DN.f[DIR_PP0] = &DD[DIR_PP0 * numberOfLBnodes]; - DN.f[DIR_MM0] = &DD[DIR_MM0 * numberOfLBnodes]; - DN.f[DIR_PM0] = &DD[DIR_PM0 * numberOfLBnodes]; - DN.f[DIR_MP0] = &DD[DIR_MP0 * numberOfLBnodes]; - DN.f[DIR_P0P] = &DD[DIR_P0P * numberOfLBnodes]; - DN.f[DIR_M0M] = &DD[DIR_M0M * numberOfLBnodes]; - DN.f[DIR_P0M] = &DD[DIR_P0M * numberOfLBnodes]; - DN.f[DIR_M0P] = &DD[DIR_M0P * numberOfLBnodes]; - DN.f[DIR_0PP] = &DD[DIR_0PP * numberOfLBnodes]; - DN.f[DIR_0MM] = &DD[DIR_0MM * numberOfLBnodes]; - DN.f[DIR_0PM] = &DD[DIR_0PM * numberOfLBnodes]; - DN.f[DIR_0MP] = &DD[DIR_0MP * numberOfLBnodes]; - DN.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - DN.f[DIR_PPP] = &DD[DIR_PPP * numberOfLBnodes]; - DN.f[DIR_MMP] = &DD[DIR_MMP * numberOfLBnodes]; - DN.f[DIR_PMP] = &DD[DIR_PMP * numberOfLBnodes]; - DN.f[DIR_MPP] = &DD[DIR_MPP * numberOfLBnodes]; - DN.f[DIR_PPM] = &DD[DIR_PPM * numberOfLBnodes]; - DN.f[DIR_MMM] = &DD[DIR_MMM * numberOfLBnodes]; - DN.f[DIR_PMM] = &DD[DIR_PMM * numberOfLBnodes]; - DN.f[DIR_MPM] = &DD[DIR_MPM * numberOfLBnodes]; - } - else - { - DN.f[DIR_M00] = &DD[DIR_P00 * numberOfLBnodes]; - DN.f[DIR_P00] = &DD[DIR_M00 * numberOfLBnodes]; - DN.f[DIR_0M0] = &DD[DIR_0P0 * numberOfLBnodes]; - DN.f[DIR_0P0] = &DD[DIR_0M0 * numberOfLBnodes]; - DN.f[DIR_00M] = &DD[DIR_00P * numberOfLBnodes]; - DN.f[DIR_00P] = &DD[DIR_00M * numberOfLBnodes]; - DN.f[DIR_MM0] = &DD[DIR_PP0 * numberOfLBnodes]; - DN.f[DIR_PP0] = &DD[DIR_MM0 * numberOfLBnodes]; - DN.f[DIR_MP0] = &DD[DIR_PM0 * numberOfLBnodes]; - DN.f[DIR_PM0] = &DD[DIR_MP0 * numberOfLBnodes]; - DN.f[DIR_M0M] = &DD[DIR_P0P * numberOfLBnodes]; - DN.f[DIR_P0P] = &DD[DIR_M0M * numberOfLBnodes]; - DN.f[DIR_M0P] = &DD[DIR_P0M * numberOfLBnodes]; - DN.f[DIR_P0M] = &DD[DIR_M0P * numberOfLBnodes]; - DN.f[DIR_0MM] = &DD[DIR_0PP * numberOfLBnodes]; - DN.f[DIR_0PP] = &DD[DIR_0MM * numberOfLBnodes]; - DN.f[DIR_0MP] = &DD[DIR_0PM * numberOfLBnodes]; - DN.f[DIR_0PM] = &DD[DIR_0MP * numberOfLBnodes]; - DN.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - DN.f[DIR_PPP] = &DD[DIR_MMM * numberOfLBnodes]; - DN.f[DIR_MMP] = &DD[DIR_PPM * numberOfLBnodes]; - DN.f[DIR_PMP] = &DD[DIR_MPM * numberOfLBnodes]; - DN.f[DIR_MPP] = &DD[DIR_PMM * numberOfLBnodes]; - DN.f[DIR_PPM] = &DD[DIR_MMP * numberOfLBnodes]; - DN.f[DIR_MMM] = &DD[DIR_PPP * numberOfLBnodes]; - DN.f[DIR_PMM] = &DD[DIR_MPP * numberOfLBnodes]; - DN.f[DIR_MPM] = &DD[DIR_PMP * numberOfLBnodes]; - } - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //directions allways exchange - //(-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) - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //directions exchange if solid neighbor - //( 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[DIR_M00])[kw ]; (DN.f[DIR_M00])[kw ]=(D.f[DIR_M00])[kw ]; (D.f[DIR_M00])[kw ]=tmp;}} - q = q_dirW[k]; if (q>=c0o1 && q<=c1o1){ {tmp = (DN.f[DIR_P00])[ke ]; (DN.f[DIR_P00])[ke ]=(D.f[DIR_P00])[ke ]; (D.f[DIR_P00])[ke ]=tmp;}} - q = q_dirN[k]; if (q>=c0o1 && q<=c1o1){ if (geom[ks ] < GEO_FLUID){tmp = (DN.f[DIR_0M0])[ks ]; (DN.f[DIR_0M0])[ks ]=(D.f[DIR_0M0])[ks ]; (D.f[DIR_0M0])[ks ]=tmp;}} - q = q_dirS[k]; if (q>=c0o1 && q<=c1o1){ {tmp = (DN.f[DIR_0P0])[kn ]; (DN.f[DIR_0P0])[kn ]=(D.f[DIR_0P0])[kn ]; (D.f[DIR_0P0])[kn ]=tmp;}} - q = q_dirT[k]; if (q>=c0o1 && q<=c1o1){ if (geom[kb ] < GEO_FLUID){tmp = (DN.f[DIR_00M])[kb ]; (DN.f[DIR_00M])[kb ]=(D.f[DIR_00M])[kb ]; (D.f[DIR_00M])[kb ]=tmp;}} - q = q_dirB[k]; if (q>=c0o1 && q<=c1o1){ {tmp = (DN.f[DIR_00P])[kt ]; (DN.f[DIR_00P])[kt ]=(D.f[DIR_00P])[kt ]; (D.f[DIR_00P])[kt ]=tmp;}} - q = q_dirNE[k]; if (q>=c0o1 && q<=c1o1){ if (geom[ksw ] < GEO_FLUID){tmp = (DN.f[DIR_MM0])[ksw ]; (DN.f[DIR_MM0])[ksw ]=(D.f[DIR_MM0])[ksw ]; (D.f[DIR_MM0])[ksw ]=tmp;}} - q = q_dirSW[k]; if (q>=c0o1 && q<=c1o1){ {tmp = (DN.f[DIR_PP0])[kne ]; (DN.f[DIR_PP0])[kne ]=(D.f[DIR_PP0])[kne ]; (D.f[DIR_PP0])[kne ]=tmp;}} - q = q_dirSE[k]; if (q>=c0o1 && q<=c1o1){ {tmp = (DN.f[DIR_MP0])[knw ]; (DN.f[DIR_MP0])[knw ]=(D.f[DIR_MP0])[knw ]; (D.f[DIR_MP0])[knw ]=tmp;}} - q = q_dirNW[k]; if (q>=c0o1 && q<=c1o1){ if (geom[kmp0] < GEO_FLUID){tmp = (DN.f[DIR_PM0])[kse ]; (DN.f[DIR_PM0])[kse ]=(D.f[DIR_PM0])[kse ]; (D.f[DIR_PM0])[kse ]=tmp;}} - q = q_dirTE[k]; if (q>=c0o1 && q<=c1o1){ if (geom[kbw ] < GEO_FLUID){tmp = (DN.f[DIR_M0M])[kbw ]; (DN.f[DIR_M0M])[kbw ]=(D.f[DIR_M0M])[kbw ]; (D.f[DIR_M0M])[kbw ]=tmp;}} - q = q_dirBW[k]; if (q>=c0o1 && q<=c1o1){ {tmp = (DN.f[DIR_P0P])[kte ]; (DN.f[DIR_P0P])[kte ]=(D.f[DIR_P0P])[kte ]; (D.f[DIR_P0P])[kte ]=tmp;}} - q = q_dirBE[k]; if (q>=c0o1 && q<=c1o1){ {tmp = (DN.f[DIR_M0P])[ktw ]; (DN.f[DIR_M0P])[ktw ]=(D.f[DIR_M0P])[ktw ]; (D.f[DIR_M0P])[ktw ]=tmp;}} - q = q_dirTW[k]; if (q>=c0o1 && q<=c1o1){ if (geom[km0p] < GEO_FLUID){tmp = (DN.f[DIR_P0M])[kbe ]; (DN.f[DIR_P0M])[kbe ]=(D.f[DIR_P0M])[kbe ]; (D.f[DIR_P0M])[kbe ]=tmp;}} - q = q_dirTN[k]; if (q>=c0o1 && q<=c1o1){ if (geom[kbs ] < GEO_FLUID){tmp = (DN.f[DIR_0MM])[kbs ]; (DN.f[DIR_0MM])[kbs ]=(D.f[DIR_0MM])[kbs ]; (D.f[DIR_0MM])[kbs ]=tmp;}} - q = q_dirBS[k]; if (q>=c0o1 && q<=c1o1){ {tmp = (DN.f[DIR_0PP])[ktn ]; (DN.f[DIR_0PP])[ktn ]=(D.f[DIR_0PP])[ktn ]; (D.f[DIR_0PP])[ktn ]=tmp;}} - q = q_dirBN[k]; if (q>=c0o1 && q<=c1o1){ {tmp = (DN.f[DIR_0MP])[kts ]; (DN.f[DIR_0MP])[kts ]=(D.f[DIR_0MP])[kts ]; (D.f[DIR_0MP])[kts ]=tmp;}} - q = q_dirTS[k]; if (q>=c0o1 && q<=c1o1){ if (geom[k0mp] < GEO_FLUID){tmp = (DN.f[DIR_0PM])[kbn ]; (DN.f[DIR_0PM])[kbn ]=(D.f[DIR_0PM])[kbn ]; (D.f[DIR_0PM])[kbn ]=tmp;}} - q = q_dirTNE[k]; if (q>=c0o1 && q<=c1o1){ if (geom[kbsw] < GEO_FLUID){tmp = (DN.f[DIR_MMM])[kbsw]; (DN.f[DIR_MMM])[kbsw]=(D.f[DIR_MMM])[kbsw]; (D.f[DIR_MMM])[kbsw]=tmp;}} - q = q_dirBSW[k]; if (q>=c0o1 && q<=c1o1){ {tmp = (DN.f[DIR_PPP])[ktne]; (DN.f[DIR_PPP])[ktne]=(D.f[DIR_PPP])[ktne]; (D.f[DIR_PPP])[ktne]=tmp;}} - q = q_dirBNE[k]; if (q>=c0o1 && q<=c1o1){ {tmp = (DN.f[DIR_MMP])[ktsw]; (DN.f[DIR_MMP])[ktsw]=(D.f[DIR_MMP])[ktsw]; (D.f[DIR_MMP])[ktsw]=tmp;}} - q = q_dirTSW[k]; if (q>=c0o1 && q<=c1o1){ if (geom[kmmp] < GEO_FLUID){tmp = (DN.f[DIR_PPM])[kbne]; (DN.f[DIR_PPM])[kbne]=(D.f[DIR_PPM])[kbne]; (D.f[DIR_PPM])[kbne]=tmp;}} - q = q_dirTSE[k]; if (q>=c0o1 && q<=c1o1){ {tmp = (DN.f[DIR_MPM])[kbnw]; (DN.f[DIR_MPM])[kbnw]=(D.f[DIR_MPM])[kbnw]; (D.f[DIR_MPM])[kbnw]=tmp;}} - q = q_dirBNW[k]; if (q>=c0o1 && q<=c1o1){ if (geom[kmpm] < GEO_FLUID){tmp = (DN.f[DIR_PMP])[ktse]; (DN.f[DIR_PMP])[ktse]=(D.f[DIR_PMP])[ktse]; (D.f[DIR_PMP])[ktse]=tmp;}} - q = q_dirBSE[k]; if (q>=c0o1 && q<=c1o1){ if (geom[kpmm] < GEO_FLUID){tmp = (DN.f[DIR_MPP])[ktnw]; (DN.f[DIR_MPP])[ktnw]=(D.f[DIR_MPP])[ktnw]; (D.f[DIR_MPP])[ktnw]=tmp;}} - q = q_dirTNW[k]; if (q>=c0o1 && q<=c1o1){ {tmp = (DN.f[DIR_PMM])[kbse]; (DN.f[DIR_PMM])[kbse]=(D.f[DIR_PMM])[kbse]; (D.f[DIR_PMM])[kbse]=tmp;}} - } -} -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/src/gpu/VirtualFluids_GPU/GPU/VelocityBCs27.cu b/src/gpu/VirtualFluids_GPU/GPU/VelocityBCs27.cu deleted file mode 100644 index 6207c98f9290520199e3cd9c31294ef5520b1798..0000000000000000000000000000000000000000 --- a/src/gpu/VirtualFluids_GPU/GPU/VelocityBCs27.cu +++ /dev/null @@ -1,5844 +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 VelocityBCs27.cu -//! \ingroup GPU -//! \author Martin Schoenherr, Anna Wellmann -//====================================================================================== -#include "LBM/LB.h" -#include "lbm/constants/D3Q27.h" -#include "basics/constants/NumericConstants.h" -#include "LBM/GPUHelperFunctions/KernelUtilities.h" - -using namespace vf::basics::constant; -using namespace vf::lbm::dir; -using namespace vf::gpu; - -////////////////////////////////////////////////////////////////////////////// -__global__ void QVelDeviceCompPlusSlip27( - real* vx, - real* vy, - real* vz, - real* DD, - int* k_Q, - real* QQ, - unsigned int numberOfBCnodes, - real om1, - unsigned int* neighborX, - unsigned int* neighborY, - unsigned int* neighborZ, - unsigned long long numberOfLBnodes, - bool isEvenTimestep) -{ - Distributions27 D; - if (isEvenTimestep==true) - { - D.f[DIR_P00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_M00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_PMP * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_MPM * numberOfLBnodes]; - } - else - { - D.f[DIR_M00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_P00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_MPM * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_PMP * numberOfLBnodes]; - } - //////////////////////////////////////////////////////////////////////////////// - const unsigned x = threadIdx.x; // Globaler x-Index - const unsigned y = blockIdx.x; // Globaler y-Index - const unsigned z = blockIdx.y; // Globaler z-Index - - const unsigned nx = blockDim.x; - const unsigned ny = gridDim.x; - - const unsigned k = nx*(ny*z + y) + x; - ////////////////////////////////////////////////////////////////////////// - - if (k < numberOfBCnodes) - { - //////////////////////////////////////////////////////////////////////////////// - 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) - //////////////////////////////////////////////////////////////////////////////// - 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[DIR_P00 * numberOfBCnodes]; - q_dirW = &QQ[DIR_M00 * numberOfBCnodes]; - q_dirN = &QQ[DIR_0P0 * numberOfBCnodes]; - q_dirS = &QQ[DIR_0M0 * numberOfBCnodes]; - q_dirT = &QQ[DIR_00P * numberOfBCnodes]; - q_dirB = &QQ[DIR_00M * numberOfBCnodes]; - q_dirNE = &QQ[DIR_PP0 * numberOfBCnodes]; - q_dirSW = &QQ[DIR_MM0 * numberOfBCnodes]; - q_dirSE = &QQ[DIR_PM0 * numberOfBCnodes]; - q_dirNW = &QQ[DIR_MP0 * numberOfBCnodes]; - q_dirTE = &QQ[DIR_P0P * numberOfBCnodes]; - q_dirBW = &QQ[DIR_M0M * numberOfBCnodes]; - q_dirBE = &QQ[DIR_P0M * numberOfBCnodes]; - q_dirTW = &QQ[DIR_M0P * numberOfBCnodes]; - q_dirTN = &QQ[DIR_0PP * numberOfBCnodes]; - q_dirBS = &QQ[DIR_0MM * numberOfBCnodes]; - q_dirBN = &QQ[DIR_0PM * numberOfBCnodes]; - q_dirTS = &QQ[DIR_0MP * numberOfBCnodes]; - q_dirTNE = &QQ[DIR_PPP * numberOfBCnodes]; - q_dirTSW = &QQ[DIR_MMP * numberOfBCnodes]; - q_dirTSE = &QQ[DIR_PMP * numberOfBCnodes]; - q_dirTNW = &QQ[DIR_MPP * numberOfBCnodes]; - q_dirBNE = &QQ[DIR_PPM * numberOfBCnodes]; - q_dirBSW = &QQ[DIR_MMM * numberOfBCnodes]; - q_dirBSE = &QQ[DIR_PMM * numberOfBCnodes]; - q_dirBNW = &QQ[DIR_MPM * 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]; - 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 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[DIR_P00])[ke]; - f_E = (D.f[DIR_M00])[kw]; - f_S = (D.f[DIR_0P0])[kn]; - f_N = (D.f[DIR_0M0])[ks]; - f_B = (D.f[DIR_00P])[kt]; - f_T = (D.f[DIR_00M])[kb]; - f_SW = (D.f[DIR_PP0])[kne]; - f_NE = (D.f[DIR_MM0])[ksw]; - f_NW = (D.f[DIR_PM0])[kse]; - f_SE = (D.f[DIR_MP0])[knw]; - f_BW = (D.f[DIR_P0P])[kte]; - f_TE = (D.f[DIR_M0M])[kbw]; - f_TW = (D.f[DIR_P0M])[kbe]; - f_BE = (D.f[DIR_M0P])[ktw]; - f_BS = (D.f[DIR_0PP])[ktn]; - f_TN = (D.f[DIR_0MM])[kbs]; - f_TS = (D.f[DIR_0PM])[kbn]; - f_BN = (D.f[DIR_0MP])[kts]; - f_BSW = (D.f[DIR_PPP])[ktne]; - f_BNE = (D.f[DIR_MMP])[ktsw]; - f_BNW = (D.f[DIR_PMP])[ktse]; - f_BSE = (D.f[DIR_MPP])[ktnw]; - f_TSW = (D.f[DIR_PPM])[kbne]; - f_TNE = (D.f[DIR_MMM])[kbsw]; - f_TNW = (D.f[DIR_PMM])[kbse]; - f_TSE = (D.f[DIR_MPM])[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[DIR_000])[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); - - - 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 cu_sq = c3o2*(vx1*vx1 + vx2*vx2 + vx3*vx3) * (c1o1 + drho); - - ////////////////////////////////////////////////////////////////////////// - if (isEvenTimestep == false) - { - D.f[DIR_P00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_M00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_PMP * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_MPM * numberOfLBnodes]; - } - else - { - D.f[DIR_M00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_P00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_MPM * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_PMP * numberOfLBnodes]; - } - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //Test - //(D.f[DIR_000])[k]=c1o10; - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - //ToDo anders Klammern - - /////To Slip Or Not To Slip? - // We assume slip BC if |vec(V_BC)|=1. To avoid problems we take V_BC*V_BC>0.99 (c99o100) - if (VeloX*VeloX + VeloY*VeloY + VeloZ*VeloZ > c99o100) - { - // vt=v-(n \dot v) *n - // n=(VeloX,VeloY,VeloZ) a misuse of the velocity variable! - real normalV = VeloX*vx1 + VeloY*vx2 + VeloZ*vx3; - vx1 = vx1 - normalV*VeloX; - vx2 = vx2 - normalV*VeloY; - vx3 = vx3 - normalV*VeloZ; - } - //////////////// - - q = q_dirE[k]; - if (q>=c0o1 && q<=c1o1) - { - feq=c2o27* (drho/*+three*( vx1 )*/+c9o2*( vx1 )*( vx1 ) * (c1o1 + drho)-cu_sq); - (D.f[DIR_M00])[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[DIR_M00])[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[DIR_P00])[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[DIR_P00])[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[DIR_0M0])[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[DIR_0M0])[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[DIR_0P0])[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[DIR_0P0])[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[DIR_00M])[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[DIR_00M])[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[DIR_00P])[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[DIR_00P])[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[DIR_MM0])[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[DIR_MM0])[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[DIR_PP0])[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[DIR_PP0])[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[DIR_MP0])[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[DIR_MP0])[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[DIR_PM0])[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[DIR_PM0])[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[DIR_M0M])[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[DIR_M0M])[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[DIR_P0P])[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[DIR_P0P])[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[DIR_M0P])[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[DIR_M0P])[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[DIR_P0M])[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[DIR_P0M])[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[DIR_0MM])[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[DIR_0MM])[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[DIR_0PP])[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[DIR_0PP])[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[DIR_0MP])[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[DIR_0MP])[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[DIR_0PM])[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[DIR_0PM])[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[DIR_MMM])[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[DIR_MMM])[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[DIR_PPP])[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[DIR_PPP])[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[DIR_MMP])[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[DIR_MMP])[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[DIR_PPM])[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[DIR_PPM])[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[DIR_MPM])[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[DIR_MPM])[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[DIR_PMP])[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[DIR_PMP])[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[DIR_MPP])[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[DIR_MPP])[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[DIR_PMM])[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[DIR_PMM])[kbse]=zero; - } - } -} -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -__global__ void QVeloDeviceEQ27( - real* VeloX, - real* VeloY, - real* VeloZ, - real* DD, - int* k_Q, - int numberOfBCnodes, - real om1, - unsigned int* neighborX, - unsigned int* neighborY, - unsigned int* neighborZ, - unsigned long long numberOfLBnodes, - bool isEvenTimestep) -{ - //////////////////////////////////////////////////////////////////////////////// - const unsigned x = threadIdx.x; // Globaler x-Index - const unsigned y = blockIdx.x; // Globaler y-Index - const unsigned z = blockIdx.y; // Globaler z-Index - - const unsigned nx = blockDim.x; - const unsigned ny = gridDim.x; - - const unsigned k = nx*(ny*z + y) + x; - ////////////////////////////////////////////////////////////////////////// - - if(k<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]; - 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]; - //////////////////////////////////////////////////////////////////////////////// - Distributions27 D; - if (isEvenTimestep==true) - { - D.f[DIR_P00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_M00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_PMP * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_MPM * numberOfLBnodes]; - } - else - { - D.f[DIR_M00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_P00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_MPM * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_PMP * numberOfLBnodes]; - } - - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - // based on BGK Plus Comp - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real mfcbb = (D.f[DIR_P00])[ke ]; - real mfabb = (D.f[DIR_M00])[kw ]; - real mfbcb = (D.f[DIR_0P0])[kn ]; - real mfbab = (D.f[DIR_0M0])[ks ]; - real mfbbc = (D.f[DIR_00P])[kt ]; - real mfbba = (D.f[DIR_00M])[kb ]; - real mfccb = (D.f[DIR_PP0])[kne ]; - real mfaab = (D.f[DIR_MM0])[ksw ]; - real mfcab = (D.f[DIR_PM0])[kse ]; - real mfacb = (D.f[DIR_MP0])[knw ]; - real mfcbc = (D.f[DIR_P0P])[kte ]; - real mfaba = (D.f[DIR_M0M])[kbw ]; - real mfcba = (D.f[DIR_P0M])[kbe ]; - real mfabc = (D.f[DIR_M0P])[ktw ]; - real mfbcc = (D.f[DIR_0PP])[ktn ]; - real mfbaa = (D.f[DIR_0MM])[kbs ]; - real mfbca = (D.f[DIR_0PM])[kbn ]; - real mfbac = (D.f[DIR_0MP])[kts ]; - real mfbbb = (D.f[DIR_000])[kzero]; - real mfccc = (D.f[DIR_PPP])[ktne ]; - real mfaac = (D.f[DIR_MMP])[ktsw ]; - real mfcac = (D.f[DIR_PMP])[ktse ]; - real mfacc = (D.f[DIR_MPP])[ktnw ]; - real mfcca = (D.f[DIR_PPM])[kbne ]; - real mfaaa = (D.f[DIR_MMM])[kbsw ]; - real mfcaa = (D.f[DIR_PMM])[kbse ]; - real mfaca = (D.f[DIR_MPM])[kbnw ]; - //////////////////////////////////////////////////////////////////////////////////// - real rho = (mfccc+mfaaa + mfaca+mfcac + mfacc+mfcaa + mfaac+mfcca + - mfbac+mfbca + mfbaa+mfbcc + mfabc+mfcba + mfaba+mfcbc + mfacb+mfcab + mfaab+mfccb + - mfabb+mfcbb + mfbab+mfbcb + mfbba+mfbbc + mfbbb + c1o1);//!!!!Achtung + one - //////////////////////////////////////////////////////////////////////////////////// - real vvx = ((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfcaa-mfacc) + (mfcca-mfaac))) + - (((mfcba-mfabc) + (mfcbc-mfaba)) + ((mfcab-mfacb) + (mfccb-mfaab))) + - (mfcbb-mfabb)) / rho; - real vvy =((((mfccc-mfaaa) + (mfaca-mfcac)) + ((mfacc-mfcaa) + (mfcca-mfaac))) + - (((mfbca-mfbac) + (mfbcc-mfbaa)) + ((mfacb-mfcab) + (mfccb-mfaab))) + - (mfbcb-mfbab)) / rho; - real vvz =((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfacc-mfcaa) + (mfaac-mfcca))) + - (((mfbac-mfbca) + (mfbcc-mfbaa)) + ((mfabc-mfcba) + (mfcbc-mfaba))) + - (mfbbc-mfbba)) / rho; - //////////////////////////////////////////////////////////////////////////////////// - if(VeloX[k]!=c0o1) vvx = VeloX[k]; - if(VeloY[k]!=c0o1) vvy = VeloY[k]; - if(VeloZ[k]!=c0o1) vvz = VeloZ[k]; - //////////////////////////////////////////////////////////////////////////////////// - real vx2 = vvx * vvx; - real vy2 = vvy * vvy; - real vz2 = vvz * vvz; - //////////////////////////////////////////////////////////////////////////////////// - real XXb = -c2o3 + vx2; - real XXc = -c1o2 * (XXb + c1o1 + vvx); - real XXa = XXc + vvx; - real YYb = -c2o3 + vy2; - real YYc = -c1o2 * (YYb + c1o1 + vvy); - real YYa = YYc + vvy; - real ZZb = -c2o3 + vz2; - real ZZc = -c1o2 * (ZZb + c1o1 + vvz); - real ZZa = ZZc + vvz; - //////////////////////////////////////////////////////////////////////////////////// - mfcbb = -rho * XXc * YYb * ZZb - c2o27 ; - mfabb = -rho * XXa * YYb * ZZb - c2o27 ; - mfbcb = -rho * XXb * YYc * ZZb - c2o27 ; - mfbab = -rho * XXb * YYa * ZZb - c2o27 ; - mfbbc = -rho * XXb * YYb * ZZc - c2o27 ; - mfbba = -rho * XXb * YYb * ZZa - c2o27 ; - mfccb = -rho * XXc * YYc * ZZb - c1o54 ; - mfaab = -rho * XXa * YYa * ZZb - c1o54 ; - mfcab = -rho * XXc * YYa * ZZb - c1o54 ; - mfacb = -rho * XXa * YYc * ZZb - c1o54 ; - mfcbc = -rho * XXc * YYb * ZZc - c1o54 ; - mfaba = -rho * XXa * YYb * ZZa - c1o54 ; - mfcba = -rho * XXc * YYb * ZZa - c1o54 ; - mfabc = -rho * XXa * YYb * ZZc - c1o54 ; - mfbcc = -rho * XXb * YYc * ZZc - c1o54 ; - mfbaa = -rho * XXb * YYa * ZZa - c1o54 ; - mfbca = -rho * XXb * YYc * ZZa - c1o54 ; - mfbac = -rho * XXb * YYa * ZZc - c1o54 ; - mfbbb = -rho * XXb * YYb * ZZb - c8o27 ; - mfccc = -rho * XXc * YYc * ZZc - c1o216; - mfaac = -rho * XXa * YYa * ZZc - c1o216; - mfcac = -rho * XXc * YYa * ZZc - c1o216; - mfacc = -rho * XXa * YYc * ZZc - c1o216; - mfcca = -rho * XXc * YYc * ZZa - c1o216; - mfaaa = -rho * XXa * YYa * ZZa - c1o216; - mfcaa = -rho * XXc * YYa * ZZa - c1o216; - mfaca = -rho * XXa * YYc * ZZa - c1o216; - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - (D.f[DIR_P00])[ke ] = mfabb;//mfcbb; - (D.f[DIR_M00])[kw ] = mfcbb;//mfabb; - (D.f[DIR_0P0])[kn ] = mfbab;//mfbcb; - (D.f[DIR_0M0])[ks ] = mfbcb;//mfbab; - (D.f[DIR_00P])[kt ] = mfbba;//mfbbc; - (D.f[DIR_00M])[kb ] = mfbbc;//mfbba; - (D.f[DIR_PP0])[kne ] = mfaab;//mfccb; - (D.f[DIR_MM0])[ksw ] = mfccb;//mfaab; - (D.f[DIR_PM0])[kse ] = mfacb;//mfcab; - (D.f[DIR_MP0])[knw ] = mfcab;//mfacb; - (D.f[DIR_P0P])[kte ] = mfaba;//mfcbc; - (D.f[DIR_M0M])[kbw ] = mfcbc;//mfaba; - (D.f[DIR_P0M])[kbe ] = mfabc;//mfcba; - (D.f[DIR_M0P])[ktw ] = mfcba;//mfabc; - (D.f[DIR_0PP])[ktn ] = mfbaa;//mfbcc; - (D.f[DIR_0MM])[kbs ] = mfbcc;//mfbaa; - (D.f[DIR_0PM])[kbn ] = mfbac;//mfbca; - (D.f[DIR_0MP])[kts ] = mfbca;//mfbac; - (D.f[DIR_000])[kzero] = mfbbb;//mfbbb; - (D.f[DIR_PPP])[ktne ] = mfaaa;//mfccc; - (D.f[DIR_MMP])[ktsw ] = mfcca;//mfaac; - (D.f[DIR_PMP])[ktse ] = mfaca;//mfcac; - (D.f[DIR_MPP])[ktnw ] = mfcaa;//mfacc; - (D.f[DIR_PPM])[kbne ] = mfaac;//mfcca; - (D.f[DIR_MMM])[kbsw ] = mfccc;//mfaaa; - (D.f[DIR_PMM])[kbse ] = mfacc;//mfcaa; - (D.f[DIR_MPM])[kbnw ] = mfcac;//mfaca; - } -} -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -////////////////////////////////////////////////////////////////////////////// -__global__ void QVelDeviceIncompHighNu27( - real* vx, - real* vy, - real* vz, - real* DD, - int* k_Q, - real* QQ, - unsigned int numberOfBCnodes, - real om1, - unsigned int* neighborX, - unsigned int* neighborY, - unsigned int* neighborZ, - unsigned long long numberOfLBnodes, - bool isEvenTimestep) -{ - Distributions27 D; - if (isEvenTimestep==true) - { - D.f[DIR_P00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_M00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_PMP * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_MPM * numberOfLBnodes]; - } - else - { - D.f[DIR_M00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_P00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_MPM * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_PMP * numberOfLBnodes]; - } - //////////////////////////////////////////////////////////////////////////////// - const unsigned x = threadIdx.x; // Globaler x-Index - const unsigned y = blockIdx.x; // Globaler y-Index - const unsigned z = blockIdx.y; // Globaler z-Index - - const unsigned nx = blockDim.x; - const unsigned ny = gridDim.x; - - const unsigned k = nx*(ny*z + y) + x; - ////////////////////////////////////////////////////////////////////////// - - if(k<numberOfBCnodes) - { - //////////////////////////////////////////////////////////////////////////////// - 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) - //////////////////////////////////////////////////////////////////////////////// - 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[DIR_P00 * numberOfBCnodes]; - q_dirW = &QQ[DIR_M00 * numberOfBCnodes]; - q_dirN = &QQ[DIR_0P0 * numberOfBCnodes]; - q_dirS = &QQ[DIR_0M0 * numberOfBCnodes]; - q_dirT = &QQ[DIR_00P * numberOfBCnodes]; - q_dirB = &QQ[DIR_00M * numberOfBCnodes]; - q_dirNE = &QQ[DIR_PP0 * numberOfBCnodes]; - q_dirSW = &QQ[DIR_MM0 * numberOfBCnodes]; - q_dirSE = &QQ[DIR_PM0 * numberOfBCnodes]; - q_dirNW = &QQ[DIR_MP0 * numberOfBCnodes]; - q_dirTE = &QQ[DIR_P0P * numberOfBCnodes]; - q_dirBW = &QQ[DIR_M0M * numberOfBCnodes]; - q_dirBE = &QQ[DIR_P0M * numberOfBCnodes]; - q_dirTW = &QQ[DIR_M0P * numberOfBCnodes]; - q_dirTN = &QQ[DIR_0PP * numberOfBCnodes]; - q_dirBS = &QQ[DIR_0MM * numberOfBCnodes]; - q_dirBN = &QQ[DIR_0PM * numberOfBCnodes]; - q_dirTS = &QQ[DIR_0MP * numberOfBCnodes]; - q_dirTNE = &QQ[DIR_PPP * numberOfBCnodes]; - q_dirTSW = &QQ[DIR_MMP * numberOfBCnodes]; - q_dirTSE = &QQ[DIR_PMP * numberOfBCnodes]; - q_dirTNW = &QQ[DIR_MPP * numberOfBCnodes]; - q_dirBNE = &QQ[DIR_PPM * numberOfBCnodes]; - q_dirBSW = &QQ[DIR_MMM * numberOfBCnodes]; - q_dirBSE = &QQ[DIR_PMM * numberOfBCnodes]; - q_dirBNW = &QQ[DIR_MPM * 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]; - 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 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[DIR_P00])[ke ]; - f_W = (D.f[DIR_M00])[kw ]; - f_N = (D.f[DIR_0P0])[kn ]; - f_S = (D.f[DIR_0M0])[ks ]; - f_T = (D.f[DIR_00P])[kt ]; - f_B = (D.f[DIR_00M])[kb ]; - f_NE = (D.f[DIR_PP0])[kne ]; - f_SW = (D.f[DIR_MM0])[ksw ]; - f_SE = (D.f[DIR_PM0])[kse ]; - f_NW = (D.f[DIR_MP0])[knw ]; - f_TE = (D.f[DIR_P0P])[kte ]; - f_BW = (D.f[DIR_M0M])[kbw ]; - f_BE = (D.f[DIR_P0M])[kbe ]; - f_TW = (D.f[DIR_M0P])[ktw ]; - f_TN = (D.f[DIR_0PP])[ktn ]; - f_BS = (D.f[DIR_0MM])[kbs ]; - f_BN = (D.f[DIR_0PM])[kbn ]; - f_TS = (D.f[DIR_0MP])[kts ]; - f_TNE = (D.f[DIR_PPP])[ktne ]; - f_TSW = (D.f[DIR_MMP])[ktsw ]; - f_TSE = (D.f[DIR_PMP])[ktse ]; - f_TNW = (D.f[DIR_MPP])[ktnw ]; - f_BNE = (D.f[DIR_PPM])[kbne ]; - f_BSW = (D.f[DIR_MMM])[kbsw ]; - f_BSE = (D.f[DIR_PMM])[kbse ]; - f_BNW = (D.f[DIR_MPM])[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[DIR_000])[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));// / (one + 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));// / (one + 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));// / (one + drho); - - real cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3);// * (one + drho); - - ////////////////////////////////////////////////////////////////////////// - if (isEvenTimestep==false) - { - D.f[DIR_P00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_M00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_PMP * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_MPM * numberOfLBnodes]; - } - else - { - D.f[DIR_M00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_P00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_MPM * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_PMP * numberOfLBnodes]; - } - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //Test - //(D.f[DIR_000])[k]=c1o10; - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - //ToDo anders Klammern - - q = q_dirE[k]; - if (q>=c0o1 && q<=c1o1) - { - feq=c2o27* (drho/*+three*( vx1 )*/+c9o2*( vx1 )*( vx1 ) /** (one + drho)*/-cu_sq); - (D.f[DIR_M00])[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[DIR_P00])[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[DIR_0M0])[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[DIR_0P0])[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[DIR_00M])[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[DIR_00P])[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[DIR_MM0])[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[DIR_PP0])[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[DIR_MP0])[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[DIR_PM0])[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[DIR_M0M])[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[DIR_P0P])[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[DIR_M0P])[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[DIR_P0M])[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[DIR_0MM])[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[DIR_0PP])[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[DIR_0MP])[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[DIR_0PM])[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[DIR_MMM])[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[DIR_PPP])[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[DIR_MMP])[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[DIR_PPM])[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[DIR_MPM])[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[DIR_PMP])[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[DIR_MPP])[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[DIR_PMM])[kbse]=((c1o1 - q) * f_TNW + q * ((f_TNW + f_BSE) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o216*(-VeloX+VeloY+VeloZ)) / (q + c1o1) ; - } - } -} -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -////////////////////////////////////////////////////////////////////////////// -__global__ void QVelDeviceCompHighNu27( - real* vx, - real* vy, - real* vz, - real* DD, - int* k_Q, - real* QQ, - unsigned int numberOfBCnodes, - real om1, - unsigned int* neighborX, - unsigned int* neighborY, - unsigned int* neighborZ, - unsigned long long numberOfLBnodes, - bool isEvenTimestep) -{ - Distributions27 D; - if (isEvenTimestep==true) - { - D.f[DIR_P00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_M00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_PMP * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_MPM * numberOfLBnodes]; - } - else - { - D.f[DIR_M00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_P00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_MPM * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_PMP * numberOfLBnodes]; - } - //////////////////////////////////////////////////////////////////////////////// - const unsigned x = threadIdx.x; // Globaler x-Index - const unsigned y = blockIdx.x; // Globaler y-Index - const unsigned z = blockIdx.y; // Globaler z-Index - - const unsigned nx = blockDim.x; - const unsigned ny = gridDim.x; - - const unsigned k = nx*(ny*z + y) + x; - ////////////////////////////////////////////////////////////////////////// - - if(k<numberOfBCnodes) - { - //////////////////////////////////////////////////////////////////////////////// - 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) - //////////////////////////////////////////////////////////////////////////////// - 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[DIR_P00 * numberOfBCnodes]; - q_dirW = &QQ[DIR_M00 * numberOfBCnodes]; - q_dirN = &QQ[DIR_0P0 * numberOfBCnodes]; - q_dirS = &QQ[DIR_0M0 * numberOfBCnodes]; - q_dirT = &QQ[DIR_00P * numberOfBCnodes]; - q_dirB = &QQ[DIR_00M * numberOfBCnodes]; - q_dirNE = &QQ[DIR_PP0 * numberOfBCnodes]; - q_dirSW = &QQ[DIR_MM0 * numberOfBCnodes]; - q_dirSE = &QQ[DIR_PM0 * numberOfBCnodes]; - q_dirNW = &QQ[DIR_MP0 * numberOfBCnodes]; - q_dirTE = &QQ[DIR_P0P * numberOfBCnodes]; - q_dirBW = &QQ[DIR_M0M * numberOfBCnodes]; - q_dirBE = &QQ[DIR_P0M * numberOfBCnodes]; - q_dirTW = &QQ[DIR_M0P * numberOfBCnodes]; - q_dirTN = &QQ[DIR_0PP * numberOfBCnodes]; - q_dirBS = &QQ[DIR_0MM * numberOfBCnodes]; - q_dirBN = &QQ[DIR_0PM * numberOfBCnodes]; - q_dirTS = &QQ[DIR_0MP * numberOfBCnodes]; - q_dirTNE = &QQ[DIR_PPP * numberOfBCnodes]; - q_dirTSW = &QQ[DIR_MMP * numberOfBCnodes]; - q_dirTSE = &QQ[DIR_PMP * numberOfBCnodes]; - q_dirTNW = &QQ[DIR_MPP * numberOfBCnodes]; - q_dirBNE = &QQ[DIR_PPM * numberOfBCnodes]; - q_dirBSW = &QQ[DIR_MMM * numberOfBCnodes]; - q_dirBSE = &QQ[DIR_PMM * numberOfBCnodes]; - q_dirBNW = &QQ[DIR_MPM * 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]; - 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 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[DIR_P00])[ke ]; - f_W = (D.f[DIR_M00])[kw ]; - f_N = (D.f[DIR_0P0])[kn ]; - f_S = (D.f[DIR_0M0])[ks ]; - f_T = (D.f[DIR_00P])[kt ]; - f_B = (D.f[DIR_00M])[kb ]; - f_NE = (D.f[DIR_PP0])[kne ]; - f_SW = (D.f[DIR_MM0])[ksw ]; - f_SE = (D.f[DIR_PM0])[kse ]; - f_NW = (D.f[DIR_MP0])[knw ]; - f_TE = (D.f[DIR_P0P])[kte ]; - f_BW = (D.f[DIR_M0M])[kbw ]; - f_BE = (D.f[DIR_P0M])[kbe ]; - f_TW = (D.f[DIR_M0P])[ktw ]; - f_TN = (D.f[DIR_0PP])[ktn ]; - f_BS = (D.f[DIR_0MM])[kbs ]; - f_BN = (D.f[DIR_0PM])[kbn ]; - f_TS = (D.f[DIR_0MP])[kts ]; - f_TNE = (D.f[DIR_PPP])[ktne ]; - f_TSW = (D.f[DIR_MMP])[ktsw ]; - f_TSE = (D.f[DIR_PMP])[ktse ]; - f_TNW = (D.f[DIR_MPP])[ktnw ]; - f_BNE = (D.f[DIR_PPM])[kbne ]; - f_BSW = (D.f[DIR_MMM])[kbsw ]; - f_BSE = (D.f[DIR_PMM])[kbse ]; - f_BNW = (D.f[DIR_MPM])[kbnw ]; - //f_W = (D.f[DIR_P00])[ke ]; - //f_E = (D.f[DIR_M00])[kw ]; - //f_S = (D.f[DIR_0P0])[kn ]; - //f_N = (D.f[DIR_0M0])[ks ]; - //f_B = (D.f[DIR_00P])[kt ]; - //f_T = (D.f[DIR_00M])[kb ]; - //f_SW = (D.f[DIR_PP0])[kne ]; - //f_NE = (D.f[DIR_MM0])[ksw ]; - //f_NW = (D.f[DIR_PM0])[kse ]; - //f_SE = (D.f[DIR_MP0])[knw ]; - //f_BW = (D.f[DIR_P0P])[kte ]; - //f_TE = (D.f[DIR_M0M])[kbw ]; - //f_TW = (D.f[DIR_P0M])[kbe ]; - //f_BE = (D.f[DIR_M0P])[ktw ]; - //f_BS = (D.f[DIR_0PP])[ktn ]; - //f_TN = (D.f[DIR_0MM])[kbs ]; - //f_TS = (D.f[DIR_0PM])[kbn ]; - //f_BN = (D.f[DIR_0MP])[kts ]; - //f_BSW = (D.f[DIR_PPP])[ktne ]; - //f_BNE = (D.f[DIR_MMP])[ktsw ]; - //f_BNW = (D.f[DIR_PMP])[ktse ]; - //f_BSE = (D.f[DIR_MPP])[ktnw ]; - //f_TSW = (D.f[DIR_PPM])[kbne ]; - //f_TNE = (D.f[DIR_MMM])[kbsw ]; - //f_TNW = (D.f[DIR_PMM])[kbse ]; - //f_TSE = (D.f[DIR_MPM])[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[DIR_000])[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); - - - 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 cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3) * (c1o1 + drho); - - ////////////////////////////////////////////////////////////////////////// - if (isEvenTimestep==false) - { - D.f[DIR_P00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_M00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_PMP * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_MPM * numberOfLBnodes]; - } - else - { - D.f[DIR_M00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_P00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_MPM * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_PMP * numberOfLBnodes]; - } - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //Test - //(D.f[DIR_000])[k]=c1o10; - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - //ToDo anders Klammern - - q = q_dirE[k]; - if (q>=c0o1 && q<=c1o1) - { - feq=c2o27* (drho/*+three*( vx1 )*/+c9o2*( vx1 )*( vx1 ) * (c1o1 + drho)-cu_sq); - (D.f[DIR_M00])[kw]=((c1o1 - q) * f_E + q * ((f_E + f_W) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c2o27*( VeloX )) / (q + c1o1) ; - //(D.f[DIR_M00])[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[DIR_M00])[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[DIR_P00])[ke]=((c1o1 - q) * f_W + q * ((f_W + f_E) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c2o27*(-VeloX )) / (q + c1o1) ; - //(D.f[DIR_P00])[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[DIR_P00])[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[DIR_0M0])[ks]=((c1o1 - q) * f_N + q * ((f_N + f_S) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c2o27*( VeloY )) / (q + c1o1) ; - //(D.f[DIR_0M0])[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[DIR_0M0])[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[DIR_0P0])[kn]=((c1o1 - q) * f_S + q * ((f_S + f_N) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c2o27*(-VeloY )) / (q + c1o1) ; - //(D.f[DIR_0P0])[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[DIR_0P0])[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[DIR_00M])[kb]=((c1o1 - q) * f_T + q * ((f_T + f_B) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c2o27*( VeloZ )) / (q + c1o1) ; - //(D.f[DIR_00M])[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[DIR_00M])[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[DIR_00P])[kt]=((c1o1 - q) * f_B + q * ((f_B + f_T) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c2o27*(-VeloZ )) / (q + c1o1) ; - //(D.f[DIR_00P])[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[DIR_00P])[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[DIR_MM0])[ksw]=((c1o1 - q) * f_NE + q * ((f_NE + f_SW) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*( VeloX+VeloY)) / (q + c1o1) ; - //(D.f[DIR_MM0])[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[DIR_MM0])[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[DIR_PP0])[kne]=((c1o1 - q) * f_SW + q * ((f_SW + f_NE) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*(-VeloX-VeloY)) / (q + c1o1) ; - //(D.f[DIR_PP0])[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[DIR_PP0])[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[DIR_MP0])[knw]=((c1o1 - q) * f_SE + q * ((f_SE + f_NW) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*( VeloX-VeloY)) / (q + c1o1) ; - //(D.f[DIR_MP0])[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[DIR_MP0])[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[DIR_PM0])[kse]=((c1o1 - q) * f_NW + q * ((f_NW + f_SE) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*(-VeloX+VeloY)) / (q + c1o1) ; - //(D.f[DIR_PM0])[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[DIR_PM0])[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[DIR_M0M])[kbw]=((c1o1 - q) * f_TE + q * ((f_TE + f_BW) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*( VeloX+VeloZ)) / (q + c1o1) ; - //(D.f[DIR_M0M])[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[DIR_M0M])[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[DIR_P0P])[kte]=((c1o1 - q) * f_BW + q * ((f_BW + f_TE) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*(-VeloX-VeloZ)) / (q + c1o1) ; - //(D.f[DIR_P0P])[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[DIR_P0P])[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[DIR_M0P])[ktw]=((c1o1 - q) * f_BE + q * ((f_BE + f_TW) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*( VeloX-VeloZ)) / (q + c1o1) ; - //(D.f[DIR_M0P])[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[DIR_M0P])[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[DIR_P0M])[kbe]=((c1o1 - q) * f_TW + q * ((f_TW + f_BE) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*(-VeloX+VeloZ)) / (q + c1o1) ; - //(D.f[DIR_P0M])[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[DIR_P0M])[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[DIR_0MM])[kbs]=((c1o1 - q) * f_TN + q * ((f_TN + f_BS) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*( VeloY+VeloZ)) / (q + c1o1) ; - //(D.f[DIR_0MM])[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[DIR_0MM])[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[DIR_0PP])[ktn]=((c1o1 - q) * f_BS + q * ((f_BS + f_TN) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*(-VeloY-VeloZ)) / (q + c1o1) ; - //(D.f[DIR_0PP])[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[DIR_0PP])[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[DIR_0MP])[kts]=((c1o1 - q) * f_BN + q * ((f_BN + f_TS) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*( VeloY-VeloZ)) / (q + c1o1) ; - //(D.f[DIR_0MP])[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[DIR_0MP])[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[DIR_0PM])[kbn]=((c1o1 - q) * f_TS + q * ((f_TS + f_BN) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*(-VeloY+VeloZ)) / (q + c1o1) ; - //(D.f[DIR_0PM])[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[DIR_0PM])[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[DIR_MMM])[kbsw]=((c1o1 - q) * f_TNE + q * ((f_TNE + f_BSW) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o216*( VeloX+VeloY+VeloZ)) / (q + c1o1) ; - //(D.f[DIR_MMM])[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[DIR_MMM])[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[DIR_PPP])[ktne]=((c1o1 - q) * f_BSW + q * ((f_BSW + f_TNE) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o216*(-VeloX-VeloY-VeloZ)) / (q + c1o1) ; - //(D.f[DIR_PPP])[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[DIR_PPP])[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[DIR_MMP])[ktsw]=((c1o1 - q) * f_BNE + q * ((f_BNE + f_TSW) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o216*( VeloX+VeloY-VeloZ)) / (q + c1o1) ; - //(D.f[DIR_MMP])[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[DIR_MMP])[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[DIR_PPM])[kbne]=((c1o1 - q) * f_TSW + q * ((f_TSW + f_BNE) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o216*(-VeloX-VeloY+VeloZ)) / (q + c1o1) ; - //(D.f[DIR_PPM])[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[DIR_PPM])[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[DIR_MPM])[kbnw]=((c1o1 - q) * f_TSE + q * ((f_TSE + f_BNW) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o216*( VeloX-VeloY+VeloZ)) / (q + c1o1) ; - //(D.f[DIR_MPM])[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[DIR_MPM])[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[DIR_PMP])[ktse]=((c1o1 - q) * f_BNW + q * ((f_BNW + f_TSE) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o216*(-VeloX+VeloY-VeloZ)) / (q + c1o1) ; - //(D.f[DIR_PMP])[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[DIR_PMP])[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[DIR_MPP])[ktnw]=((c1o1 - q) * f_BSE + q * ((f_BSE + f_TNW) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o216*( VeloX-VeloY-VeloZ)) / (q + c1o1) ; - //(D.f[DIR_MPP])[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[DIR_MPP])[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[DIR_PMM])[kbse]=((c1o1 - q) * f_TNW + q * ((f_TNW + f_BSE) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o216*(-VeloX+VeloY+VeloZ)) / (q + c1o1) ; - //(D.f[DIR_PMM])[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[DIR_PMM])[kbse]=zero; - } - } -} -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -////////////////////////////////////////////////////////////////////////////// -__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 long long numberOfLBnodes, - bool isEvenTimestep) -{ - ////////////////////////////////////////////////////////////////////////// - //! The velocity boundary condition is executed in the following steps - //! - //////////////////////////////////////////////////////////////////////////////// - //! - Get node index coordinates from threadIdx, blockIdx, blockDim and gridDim. - //! - const unsigned nodeIndex = getNodeIndex(); - - ////////////////////////////////////////////////////////////////////////// - //! - Run for all indices in size of boundary condition (numberOfBCnodes) - //! - if(nodeIndex < 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); - - //////////////////////////////////////////////////////////////////////////////// - //! - Set local velocities - //! - real VeloX = velocityX[nodeIndex]; - real VeloY = velocityY[nodeIndex]; - real VeloZ = velocityZ[nodeIndex]; - - - //////////////////////////////////////////////////////////////////////////////// - //! - Set local subgrid distances (q's) - //! - SubgridDistances27 subgridD; - getPointersToSubgridDistances(subgridD, subgridDistances, numberOfBCnodes); - - //////////////////////////////////////////////////////////////////////////////// - //! - Set neighbor indices (necessary for indirect addressing) - //! - unsigned int KQK = subgridDistanceIndices[nodeIndex]; - 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 distributions - //! - real f_W = (dist.f[DIR_P00])[ke ]; - real f_E = (dist.f[DIR_M00])[kw ]; - real f_S = (dist.f[DIR_0P0])[kn ]; - real f_N = (dist.f[DIR_0M0])[ks ]; - real f_B = (dist.f[DIR_00P])[kt ]; - real f_T = (dist.f[DIR_00M])[kb ]; - real f_SW = (dist.f[DIR_PP0])[kne ]; - real f_NE = (dist.f[DIR_MM0])[ksw ]; - real f_NW = (dist.f[DIR_PM0])[kse ]; - real f_SE = (dist.f[DIR_MP0])[knw ]; - real f_BW = (dist.f[DIR_P0P])[kte ]; - real f_TE = (dist.f[DIR_M0M])[kbw ]; - real f_TW = (dist.f[DIR_P0M])[kbe ]; - real f_BE = (dist.f[DIR_M0P])[ktw ]; - real f_BS = (dist.f[DIR_0PP])[ktn ]; - real f_TN = (dist.f[DIR_0MM])[kbs ]; - real f_TS = (dist.f[DIR_0PM])[kbn ]; - real f_BN = (dist.f[DIR_0MP])[kts ]; - real f_BSW = (dist.f[DIR_PPP])[ktne ]; - real f_BNE = (dist.f[DIR_MMP])[ktsw ]; - real f_BNW = (dist.f[DIR_PMP])[ktse ]; - real f_BSE = (dist.f[DIR_MPP])[ktnw ]; - real f_TSW = (dist.f[DIR_PPM])[kbne ]; - real f_TNE = (dist.f[DIR_MMM])[kbsw ]; - real f_TNW = (dist.f[DIR_PMM])[kbse ]; - real f_TSE = (dist.f[DIR_MPM])[kbnw ]; - - //////////////////////////////////////////////////////////////////////////////// - //! - 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[DIR_000])[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); - - 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, distribution, numberOfLBnodes, !isEvenTimestep); - - //////////////////////////////////////////////////////////////////////////////// - //! - Update distributions with subgrid distance (q) between zero and one - real feq, q, velocityLB, velocityBC; - q = (subgridD.q[DIR_P00])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) // only update distribution for q between zero and one - { - velocityLB = vx1; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c2o27); - velocityBC = VeloX; - (dist.f[DIR_M00])[kw] = getInterpolatedDistributionForVeloWithPressureBC(q, f_E, f_W, feq, omega, drho, velocityBC, c2o27); - } - - q = (subgridD.q[DIR_M00])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) - { - velocityLB = -vx1; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c2o27); - velocityBC = -VeloX; - (dist.f[DIR_P00])[ke] = getInterpolatedDistributionForVeloWithPressureBC(q, f_W, f_E, feq, omega, drho, velocityBC, c2o27); - } - - q = (subgridD.q[DIR_0P0])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) - { - velocityLB = vx2; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c2o27); - velocityBC = VeloY; - (dist.f[DIR_0M0])[ks] = getInterpolatedDistributionForVeloWithPressureBC(q, f_N, f_S, feq, omega, drho, velocityBC, c2o27); - } - - q = (subgridD.q[DIR_0M0])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) - { - velocityLB = -vx2; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c2o27); - velocityBC = -VeloY; - (dist.f[DIR_0P0])[kn] = getInterpolatedDistributionForVeloWithPressureBC(q, f_S, f_N, feq, omega, drho, velocityBC, c2o27); - } - - q = (subgridD.q[DIR_00P])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) - { - velocityLB = vx3; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c2o27); - velocityBC = VeloZ; - (dist.f[DIR_00M])[kb] = getInterpolatedDistributionForVeloWithPressureBC(q, f_T, f_B, feq, omega, drho, velocityBC, c2o27); - } - - q = (subgridD.q[DIR_00M])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) - { - velocityLB = -vx3; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c2o27); - velocityBC = -VeloZ; - (dist.f[DIR_00P])[kt] = getInterpolatedDistributionForVeloWithPressureBC(q, f_B, f_T, feq, omega, drho, velocityBC, c2o27); - } - - q = (subgridD.q[DIR_PP0])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) - { - velocityLB = vx1 + vx2; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); - velocityBC = VeloX + VeloY; - (dist.f[DIR_MM0])[ksw] = getInterpolatedDistributionForVeloWithPressureBC(q, f_NE, f_SW, feq, omega, drho, velocityBC, c1o54); - } - - q = (subgridD.q[DIR_MM0])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) - { - velocityLB = -vx1 - vx2; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); - velocityBC = -VeloX - VeloY; - (dist.f[DIR_PP0])[kne] = getInterpolatedDistributionForVeloWithPressureBC(q, f_SW, f_NE, feq, omega, drho, velocityBC, c1o54); - } - - q = (subgridD.q[DIR_PM0])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) - { - velocityLB = vx1 - vx2; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); - velocityBC = VeloX - VeloY; - (dist.f[DIR_MP0])[knw] = getInterpolatedDistributionForVeloWithPressureBC(q, f_SE, f_NW, feq, omega, drho, velocityBC, c1o54); - } - - q = (subgridD.q[DIR_MP0])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) - { - velocityLB = -vx1 + vx2; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); - velocityBC = -VeloX + VeloY; - (dist.f[DIR_PM0])[kse] = getInterpolatedDistributionForVeloWithPressureBC(q, f_NW, f_SE, feq, omega, drho, velocityBC, c1o54); - } - - q = (subgridD.q[DIR_P0P])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) - { - velocityLB = vx1 + vx3; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); - velocityBC = VeloX + VeloZ; - (dist.f[DIR_M0M])[kbw] = getInterpolatedDistributionForVeloWithPressureBC(q, f_TE, f_BW, feq, omega, drho, velocityBC, c1o54); - } - - q = (subgridD.q[DIR_M0M])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) - { - velocityLB = -vx1 - vx3; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); - velocityBC = -VeloX - VeloZ; - (dist.f[DIR_P0P])[kte] = getInterpolatedDistributionForVeloWithPressureBC(q, f_BW, f_TE, feq, omega, drho, velocityBC, c1o54); - } - - q = (subgridD.q[DIR_P0M])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) - { - velocityLB = vx1 - vx3; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); - velocityBC = VeloX - VeloZ; - (dist.f[DIR_M0P])[ktw] = getInterpolatedDistributionForVeloWithPressureBC(q, f_BE, f_TW, feq, omega, drho, velocityBC, c1o54); - } - - q = (subgridD.q[DIR_M0P])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) - { - velocityLB = -vx1 + vx3; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); - velocityBC = -VeloX + VeloZ; - (dist.f[DIR_P0M])[kbe] = getInterpolatedDistributionForVeloWithPressureBC(q, f_TW, f_BE, feq, omega, drho, velocityBC, c1o54); - } - - q = (subgridD.q[DIR_0PP])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) - { - velocityLB = vx2 + vx3; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); - velocityBC = VeloY + VeloZ; - (dist.f[DIR_0MM])[kbs] = getInterpolatedDistributionForVeloWithPressureBC(q, f_TN, f_BS, feq, omega, drho, velocityBC, c1o54); - } - - q = (subgridD.q[DIR_0MM])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) - { - velocityLB = -vx2 - vx3; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); - velocityBC = -VeloY - VeloZ; - (dist.f[DIR_0PP])[ktn] = getInterpolatedDistributionForVeloWithPressureBC(q, f_BS, f_TN, feq, omega, drho, velocityBC, c1o54); - } - - q = (subgridD.q[DIR_0PM])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) - { - velocityLB = vx2 - vx3; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); - velocityBC = VeloY - VeloZ; - (dist.f[DIR_0MP])[kts] = getInterpolatedDistributionForVeloWithPressureBC(q, f_BN, f_TS, feq, omega, drho, velocityBC, c1o54); - } - - q = (subgridD.q[DIR_0MP])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) - { - velocityLB = -vx2 + vx3; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); - velocityBC = -VeloY + VeloZ; - (dist.f[DIR_0PM])[kbn] = getInterpolatedDistributionForVeloWithPressureBC(q, f_TS, f_BN, feq, omega, drho, velocityBC, c1o54); - } - - q = (subgridD.q[DIR_PPP])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) - { - velocityLB = vx1 + vx2 + vx3; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); - velocityBC = VeloX + VeloY + VeloZ; - (dist.f[DIR_MMM])[kbsw] = getInterpolatedDistributionForVeloWithPressureBC(q, f_TNE, f_BSW, feq, omega, drho, velocityBC, c1o216); - } - - q = (subgridD.q[DIR_MMM])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) - { - velocityLB = -vx1 - vx2 - vx3; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); - velocityBC = -VeloX - VeloY - VeloZ; - (dist.f[DIR_PPP])[ktne] = getInterpolatedDistributionForVeloWithPressureBC(q, f_BSW, f_TNE, feq, omega, drho, velocityBC, c1o216); - } - - q = (subgridD.q[DIR_PPM])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) - { - velocityLB = vx1 + vx2 - vx3; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); - velocityBC = VeloX + VeloY - VeloZ; - (dist.f[DIR_MMP])[ktsw] = getInterpolatedDistributionForVeloWithPressureBC(q, f_BNE, f_TSW, feq, omega, drho, velocityBC, c1o216); - } - - q = (subgridD.q[DIR_MMP])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) - { - velocityLB = -vx1 - vx2 + vx3; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); - velocityBC = -VeloX - VeloY + VeloZ; - (dist.f[DIR_PPM])[kbne] = getInterpolatedDistributionForVeloWithPressureBC(q, f_TSW, f_BNE, feq, omega, drho, velocityBC, c1o216); - } - - q = (subgridD.q[DIR_PMP])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) - { - velocityLB = vx1 - vx2 + vx3; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); - velocityBC = VeloX - VeloY + VeloZ; - (dist.f[DIR_MPM])[kbnw] = getInterpolatedDistributionForVeloWithPressureBC(q, f_TSE, f_BNW, feq, omega, drho, velocityBC, c1o216); - } - - q = (subgridD.q[DIR_MPM])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) - { - velocityLB = -vx1 + vx2 - vx3; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); - velocityBC = -VeloX + VeloY - VeloZ; - (dist.f[DIR_PMP])[ktse] = getInterpolatedDistributionForVeloWithPressureBC(q, f_BNW, f_TSE, feq, omega, drho, velocityBC, c1o216); - } - - q = (subgridD.q[DIR_PMM])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) - { - velocityLB = vx1 - vx2 - vx3; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); - velocityBC = VeloX - VeloY - VeloZ; - (dist.f[DIR_MPP])[ktnw] = getInterpolatedDistributionForVeloWithPressureBC(q, f_BSE, f_TNW, feq, omega, drho, velocityBC, c1o216); - } - - q = (subgridD.q[DIR_MPP])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) - { - velocityLB = -vx1 + vx2 + vx3; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); - velocityBC = -VeloX + VeloY + VeloZ; - (dist.f[DIR_PMM])[kbse] = getInterpolatedDistributionForVeloWithPressureBC(q, f_TNW, f_BSE, feq, omega, drho, velocityBC, c1o216); - } - } -} -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -////////////////////////////////////////////////////////////////////////////// -__global__ void QVelDeviceCompZeroPress1h27( - int inx, - int iny, - real* vx, - real* vy, - real* vz, - real* DD, - int* k_Q, - real* QQ, - unsigned int numberOfBCnodes, - real om1, - real Phi, - real angularVelocity, - unsigned int* neighborX, - unsigned int* neighborY, - unsigned int* neighborZ, - real* coordX, - real* coordY, - real* coordZ, - unsigned long long numberOfLBnodes, - bool isEvenTimestep) -{ - Distributions27 D; - if (isEvenTimestep==true) - { - D.f[DIR_P00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_M00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_PMP * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_MPM * numberOfLBnodes]; - } - else - { - D.f[DIR_M00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_P00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_MPM * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_PMP * numberOfLBnodes]; - } - //////////////////////////////////////////////////////////////////////////////// - const unsigned x = threadIdx.x; // Globaler x-Index - const unsigned y = blockIdx.x; // Globaler y-Index - const unsigned z = blockIdx.y; // Globaler z-Index - - const unsigned nx = blockDim.x; - const unsigned ny = gridDim.x; - - const unsigned k = nx*(ny*z + y) + x; - ////////////////////////////////////////////////////////////////////////// - - if(k<numberOfBCnodes) - { - //////////////////////////////////////////////////////////////////////////////// - //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) - //////////////////////////////////////////////////////////////////////////////// - real VeloX = cosf(Phi)*vx[k] - sinf(Phi)*vy[k]; - real VeloY = sinf(Phi)*vx[k] + cosf(Phi)*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) - //////////////////////////////////////////////////////////////////////////////////// - //Ship - real coord0X = 281.125f;//7.5f; - real coord0Y = 388.125f;//7.5f; - real ux = - angularVelocity * (coordY[k_Q[k]] - coord0Y); - real uy = angularVelocity * (coordX[k_Q[k]] - coord0X); - real VeloXpur=VeloX; - real VeloYpur=VeloY; - VeloX-=ux; - VeloY-=uy; - //////////////////////////////////////////////////////////////////////////////// - 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[DIR_P00 * numberOfBCnodes]; - q_dirW = &QQ[DIR_M00 * numberOfBCnodes]; - q_dirN = &QQ[DIR_0P0 * numberOfBCnodes]; - q_dirS = &QQ[DIR_0M0 * numberOfBCnodes]; - q_dirT = &QQ[DIR_00P * numberOfBCnodes]; - q_dirB = &QQ[DIR_00M * numberOfBCnodes]; - q_dirNE = &QQ[DIR_PP0 * numberOfBCnodes]; - q_dirSW = &QQ[DIR_MM0 * numberOfBCnodes]; - q_dirSE = &QQ[DIR_PM0 * numberOfBCnodes]; - q_dirNW = &QQ[DIR_MP0 * numberOfBCnodes]; - q_dirTE = &QQ[DIR_P0P * numberOfBCnodes]; - q_dirBW = &QQ[DIR_M0M * numberOfBCnodes]; - q_dirBE = &QQ[DIR_P0M * numberOfBCnodes]; - q_dirTW = &QQ[DIR_M0P * numberOfBCnodes]; - q_dirTN = &QQ[DIR_0PP * numberOfBCnodes]; - q_dirBS = &QQ[DIR_0MM * numberOfBCnodes]; - q_dirBN = &QQ[DIR_0PM * numberOfBCnodes]; - q_dirTS = &QQ[DIR_0MP * numberOfBCnodes]; - q_dirTNE = &QQ[DIR_PPP * numberOfBCnodes]; - q_dirTSW = &QQ[DIR_MMP * numberOfBCnodes]; - q_dirTSE = &QQ[DIR_PMP * numberOfBCnodes]; - q_dirTNW = &QQ[DIR_MPP * numberOfBCnodes]; - q_dirBNE = &QQ[DIR_PPM * numberOfBCnodes]; - q_dirBSW = &QQ[DIR_MMM * numberOfBCnodes]; - q_dirBSE = &QQ[DIR_PMM * numberOfBCnodes]; - q_dirBNW = &QQ[DIR_MPM * 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]; - 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]; - ////////////////////////////////////////////////////////////////////////// - if (isEvenTimestep==false) - { - D.f[DIR_P00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_M00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_PMP * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_MPM * numberOfLBnodes]; - } - else - { - D.f[DIR_M00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_P00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_MPM * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_PMP * numberOfLBnodes]; - } - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real vx1, vx2, vx3, drho, feq, q, cu_sq; - ///////// equilibrium BC - cu_sq=c3o2*(VeloX*VeloX +VeloY*VeloY); - VeloXpur*=-c1o1; - VeloYpur*=-c1o1; - vx1=VeloX; - vx2=VeloY; - vx3=c0o1; - drho=c0o1; - - q = q_dirE[k]; - if (q>=c0o1 && q<=c1o1) - { - feq=c2o27* (drho+c3o1*( VeloXpur )+c9o2*( vx1 )*( vx1 ) * (c1o1 + drho)-cu_sq); - (D.f[DIR_M00])[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[DIR_P00])[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[DIR_0M0])[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[DIR_0P0])[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[DIR_00M])[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[DIR_00P])[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[DIR_MM0])[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[DIR_PP0])[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[DIR_MP0])[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[DIR_PM0])[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[DIR_M0M])[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[DIR_P0P])[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[DIR_M0P])[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[DIR_P0M])[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[DIR_0MM])[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[DIR_0PP])[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[DIR_0MP])[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[DIR_0PM])[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[DIR_MMM])[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[DIR_PPP])[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[DIR_MMP])[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[DIR_PPM])[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[DIR_MPM])[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[DIR_PMP])[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[DIR_MPP])[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[DIR_PMM])[kbse]= feq - c1o216 * drho; - } - } -} -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -////////////////////////////////////////////////////////////////////////////// -__global__ void LB_BC_Vel_West_27( - int nx, - int ny, - int nz, - int itz, - unsigned int* bcMatD, - unsigned int* neighborX, - unsigned int* neighborY, - unsigned int* neighborZ, - real* DD, - unsigned long long numberOfLBnodes, - bool isEvenTimestep, - real u0x, - unsigned int grid_nx, - unsigned int grid_ny, - real om) -{ - //thread-index - unsigned int ity = blockIdx.x; - unsigned int itx = threadIdx.x; - - unsigned int k, nxny; // Zugriff auf arrays im device - - unsigned int x = itx + STARTOFFX; // Globaler x-Index - unsigned int y = ity + STARTOFFY; // Globaler y-Index - unsigned int z = itz + STARTOFFZ; // Globaler z-Index - - k = nx*(ny*z + y) + x; - nxny = nx*ny; - unsigned int k1 = k+nxny; - - if( bcMatD[k] == GEO_VELO ) - { - Distributions27 D; - if (isEvenTimestep==true) - { - D.f[DIR_P00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_M00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_PMP * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_MPM * numberOfLBnodes]; - } - else - { - D.f[DIR_M00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_P00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_MPM * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_PMP * numberOfLBnodes]; - } - - //////////////////////////////////////////////////////////////////////////////// - //index - unsigned int kzero= k; - unsigned int ke = k; - unsigned int kw = neighborX[k]; - unsigned int kn = k; - unsigned int ks = neighborY[k]; - unsigned int kt = k; - unsigned int kb = neighborZ[k]; - unsigned int ksw = neighborY[kw]; - unsigned int kne = k; - unsigned int kse = ks; - unsigned int knw = kw; - unsigned int kbw = neighborZ[kw]; - unsigned int kte = k; - unsigned int kbe = kb; - unsigned int ktw = kw; - unsigned int kbs = neighborZ[ks]; - unsigned int ktn = k; - 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 = k; - unsigned int kbsw = neighborZ[ksw]; - //unsigned int kzero= k; - //unsigned int ke = k; - //unsigned int kw = k + 1; - //unsigned int kn = k; - //unsigned int ks = k + nx; - //unsigned int kt = k; - //unsigned int kb = k + nxny; - //unsigned int ksw = k + nx + 1; - //unsigned int kne = k; - //unsigned int kse = k + nx; - //unsigned int knw = k + 1; - //unsigned int kbw = k + nxny + 1; - //unsigned int kte = k; - //unsigned int kbe = k + nxny; - //unsigned int ktw = k + 1; - //unsigned int kbs = k + nxny + nx; - //unsigned int ktn = k; - //unsigned int kbn = k + nxny; - //unsigned int kts = k + nx; - //unsigned int ktse = k + nx; - //unsigned int kbnw = k + nxny + 1; - //unsigned int ktnw = k + 1; - //unsigned int kbse = k + nxny + nx; - //unsigned int ktsw = k + nx + 1; - //unsigned int kbne = k + nxny; - //unsigned int ktne = k; - //unsigned int kbsw = k + nxny + nx + 1; - //////////////////////////////////////////////////////////////////////////////// - //index1 - unsigned int k1zero= k1; - unsigned int k1e = k1; - unsigned int k1w = neighborX[k1]; - unsigned int k1n = k1; - unsigned int k1s = neighborY[k1]; - unsigned int k1t = k1; - unsigned int k1b = neighborZ[k1]; - unsigned int k1sw = neighborY[k1w]; - unsigned int k1ne = k1; - unsigned int k1se = k1s; - unsigned int k1nw = k1w; - unsigned int k1bw = neighborZ[k1w]; - unsigned int k1te = k1; - unsigned int k1be = k1b; - unsigned int k1tw = k1w; - unsigned int k1bs = neighborZ[k1s]; - unsigned int k1tn = k1; - unsigned int k1bn = k1b; - unsigned int k1ts = k1s; - unsigned int k1tse = k1s; - unsigned int k1bnw = k1bw; - unsigned int k1tnw = k1w; - unsigned int k1bse = k1bs; - unsigned int k1tsw = k1sw; - unsigned int k1bne = k1b; - unsigned int k1tne = k1; - unsigned int k1bsw = neighborZ[k1sw]; - //unsigned int k1zero= k1; - //unsigned int k1e = k1; - //unsigned int k1w = k1 + 1; - //unsigned int k1n = k1; - //unsigned int k1s = k1 + nx; - //unsigned int k1t = k1; - //unsigned int k1b = k1 + nxny; - //unsigned int k1sw = k1 + nx + 1; - //unsigned int k1ne = k1; - //unsigned int k1se = k1 + nx; - //unsigned int k1nw = k1 + 1; - //unsigned int k1bw = k1 + nxny + 1; - //unsigned int k1te = k1; - //unsigned int k1be = k1 + nxny; - //unsigned int k1tw = k1 + 1; - //unsigned int k1bs = k1 + nxny + nx; - //unsigned int k1tn = k1; - //unsigned int k1bn = k1 + nxny; - //unsigned int k1ts = k1 + nx; - //unsigned int k1tse = k1 + nx; - //unsigned int k1bnw = k1 + nxny + 1; - //unsigned int k1tnw = k1 + 1; - //unsigned int k1bse = k1 + nxny + nx; - //unsigned int k1tsw = k1 + nx + 1; - //unsigned int k1bne = k1 + nxny; - //unsigned int k1tne = k1; - //unsigned int k1bsw = k1 + nxny + nx + 1; - //////////////////////////////////////////////////////////////////////////////// - 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[DIR_P00])[k1e ]; - f1_E = (D.f[DIR_M00])[k1w ]; - f1_S = (D.f[DIR_0P0])[k1n ]; - f1_N = (D.f[DIR_0M0])[k1s ]; - f1_B = (D.f[DIR_00P])[k1t ]; - f1_T = (D.f[DIR_00M])[k1b ]; - f1_SW = (D.f[DIR_PP0])[k1ne ]; - f1_NE = (D.f[DIR_MM0])[k1sw ]; - f1_NW = (D.f[DIR_PM0])[k1se ]; - f1_SE = (D.f[DIR_MP0])[k1nw ]; - f1_BW = (D.f[DIR_P0P])[k1te ]; - f1_TE = (D.f[DIR_M0M])[k1bw ]; - f1_TW = (D.f[DIR_P0M])[k1be ]; - f1_BE = (D.f[DIR_M0P])[k1tw ]; - f1_BS = (D.f[DIR_0PP])[k1tn ]; - f1_TN = (D.f[DIR_0MM])[k1bs ]; - f1_TS = (D.f[DIR_0PM])[k1bn ]; - f1_BN = (D.f[DIR_0MP])[k1ts ]; - f1_ZERO = (D.f[DIR_000])[k1zero]; - f1_BSW = (D.f[DIR_PPP])[k1tne ]; - f1_BNE = (D.f[DIR_MMP])[k1tsw ]; - f1_BNW = (D.f[DIR_PMP])[k1tse ]; - f1_BSE = (D.f[DIR_MPP])[k1tnw ]; - f1_TSW = (D.f[DIR_PPM])[k1bne ]; - f1_TNE = (D.f[DIR_MMM])[k1bsw ]; - f1_TNW = (D.f[DIR_PMM])[k1bse ]; - f1_TSE = (D.f[DIR_MPM])[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(); - - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real drho = drho1; - real vx1 = c0o1; - real vx2 = c0o1; - real vx3 = u0x; - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - real cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3); - - (D.f[DIR_000])[kzero] = c8o27* (drho-cu_sq); - (D.f[DIR_P00])[ke ] = c2o27* (drho+c3o1*( vx1 )+c9o2*( vx1 )*( vx1 )-cu_sq); - (D.f[DIR_M00])[kw ] = c2o27* (drho+c3o1*(-vx1 )+c9o2*(-vx1 )*(-vx1 )-cu_sq); - (D.f[DIR_0P0])[kn ] = c2o27* (drho+c3o1*( vx2 )+c9o2*( vx2 )*( vx2 )-cu_sq); - (D.f[DIR_0M0])[ks ] = c2o27* (drho+c3o1*( -vx2 )+c9o2*( -vx2 )*( -vx2 )-cu_sq); - (D.f[DIR_00P])[kt ] = c2o27* (drho+c3o1*( vx3)+c9o2*( vx3)*( vx3)-cu_sq); - (D.f[DIR_00M])[kb ] = c2o27* (drho+c3o1*( -vx3)+c9o2*( -vx3)*( -vx3)-cu_sq); - (D.f[DIR_PP0])[kne ] = c1o54* (drho+c3o1*( vx1+vx2 )+c9o2*( vx1+vx2 )*( vx1+vx2 )-cu_sq); - (D.f[DIR_MM0])[ksw ] = c1o54* (drho+c3o1*(-vx1-vx2 )+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq); - (D.f[DIR_PM0])[kse ] = c1o54* (drho+c3o1*( vx1-vx2 )+c9o2*( vx1-vx2 )*( vx1-vx2 )-cu_sq); - (D.f[DIR_MP0])[knw ] = c1o54* (drho+c3o1*(-vx1+vx2 )+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq); - (D.f[DIR_P0P])[kte ] = c1o54* (drho+c3o1*( vx1 +vx3)+c9o2*( vx1 +vx3)*( vx1 +vx3)-cu_sq); - (D.f[DIR_M0M])[kbw ] = c1o54* (drho+c3o1*(-vx1 -vx3)+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq); - (D.f[DIR_P0M])[kbe ] = c1o54* (drho+c3o1*( vx1 -vx3)+c9o2*( vx1 -vx3)*( vx1 -vx3)-cu_sq); - (D.f[DIR_M0P])[ktw ] = c1o54* (drho+c3o1*(-vx1 +vx3)+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq); - (D.f[DIR_0PP])[ktn ] = c1o54* (drho+c3o1*( vx2+vx3)+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq); - (D.f[DIR_0MM])[kbs ] = c1o54* (drho+c3o1*( -vx2-vx3)+c9o2*( -vx2-vx3)*( -vx2-vx3)-cu_sq); - (D.f[DIR_0PM])[kbn ] = c1o54* (drho+c3o1*( vx2-vx3)+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq); - (D.f[DIR_0MP])[kts ] = c1o54* (drho+c3o1*( -vx2+vx3)+c9o2*( -vx2+vx3)*( -vx2+vx3)-cu_sq); - (D.f[DIR_PPP])[ktne ] = c1o216*(drho+c3o1*( vx1+vx2+vx3)+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq); - (D.f[DIR_MMM])[kbsw ] = c1o216*(drho+c3o1*(-vx1-vx2-vx3)+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq); - (D.f[DIR_PPM])[kbne ] = c1o216*(drho+c3o1*( vx1+vx2-vx3)+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq); - (D.f[DIR_MMP])[ktsw ] = c1o216*(drho+c3o1*(-vx1-vx2+vx3)+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq); - (D.f[DIR_PMP])[ktse ] = c1o216*(drho+c3o1*( vx1-vx2+vx3)+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq); - (D.f[DIR_MPM])[kbnw ] = c1o216*(drho+c3o1*(-vx1+vx2-vx3)+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq); - (D.f[DIR_PMM])[kbse ] = c1o216*(drho+c3o1*( vx1-vx2-vx3)+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq); - (D.f[DIR_MPP])[ktnw ] = c1o216*(drho+c3o1*(-vx1+vx2+vx3)+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq); - } - __syncthreads(); -} -////////////////////////////////////////////////////////////////////////////// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -////////////////////////////////////////////////////////////////////////////// -__global__ void QVelDevPlainBB27( - real* velocityX, - real* velocityY, - real* velocityZ, - real* distributions, - int* subgridDistanceIndices, - real* subgridDistances, - uint numberOfBCnodes, - uint* neighborX, - uint* neighborY, - uint* neighborZ, - unsigned long long numberOfLBnodes, - bool isEvenTimestep) -{ - ////////////////////////////////////////////////////////////////////////// - //! The velocity boundary condition is executed in the following steps - //! - //////////////////////////////////////////////////////////////////////////////// - //! - Get node index coordinates from threadIdx, blockIdx, blockDim and gridDim. - //! - const unsigned nodeIndex = getNodeIndex(); - - ////////////////////////////////////////////////////////////////////////// - // run for all indices in size of boundary condition (numberOfBCnodes) - if(nodeIndex < 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); - - //////////////////////////////////////////////////////////////////////////////// - //! - Set local velocities - //! - real VeloX = velocityX[nodeIndex]; - real VeloY = velocityY[nodeIndex]; - real VeloZ = velocityZ[nodeIndex]; - - //////////////////////////////////////////////////////////////////////////////// - //! - Set local subgrid distances (q's) - //! - SubgridDistances27 subgridD; - getPointersToSubgridDistances(subgridD, subgridDistances, numberOfBCnodes); - - //////////////////////////////////////////////////////////////////////////////// - //! - Set neighbor indices (necessary for indirect addressing) - //! - uint indexOfBCnode = subgridDistanceIndices[nodeIndex]; - 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]; - - //////////////////////////////////////////////////////////////////////////////// - //! - Set local distributions - //! - real f_W = (dist.f[DIR_P00])[ke ]; - real f_E = (dist.f[DIR_M00])[kw ]; - real f_S = (dist.f[DIR_0P0])[kn ]; - real f_N = (dist.f[DIR_0M0])[ks ]; - real f_B = (dist.f[DIR_00P])[kt ]; - real f_T = (dist.f[DIR_00M])[kb ]; - real f_SW = (dist.f[DIR_PP0])[kne ]; - real f_NE = (dist.f[DIR_MM0])[ksw ]; - real f_NW = (dist.f[DIR_PM0])[kse ]; - real f_SE = (dist.f[DIR_MP0])[knw ]; - real f_BW = (dist.f[DIR_P0P])[kte ]; - real f_TE = (dist.f[DIR_M0M])[kbw ]; - real f_TW = (dist.f[DIR_P0M])[kbe ]; - real f_BE = (dist.f[DIR_M0P])[ktw ]; - real f_BS = (dist.f[DIR_0PP])[ktn ]; - real f_TN = (dist.f[DIR_0MM])[kbs ]; - real f_TS = (dist.f[DIR_0PM])[kbn ]; - real f_BN = (dist.f[DIR_0MP])[kts ]; - real f_BSW = (dist.f[DIR_PPP])[ktne ]; - real f_BNE = (dist.f[DIR_MMP])[ktsw ]; - real f_BNW = (dist.f[DIR_PMP])[ktse ]; - real f_BSE = (dist.f[DIR_MPP])[ktnw ]; - real f_TSW = (dist.f[DIR_PPM])[kbne ]; - real f_TNE = (dist.f[DIR_MMM])[kbsw ]; - real f_TNW = (dist.f[DIR_PMM])[kbse ]; - real f_TSE = (dist.f[DIR_MPM])[kbnw ]; - - //////////////////////////////////////////////////////////////////////////////// - //! - 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[DIR_P00])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[DIR_M00])[kw ]=f_E + c4o9 * (-VeloX); - q = (subgridD.q[DIR_M00])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[DIR_P00])[ke ]=f_W + c4o9 * ( VeloX); - q = (subgridD.q[DIR_0P0])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[DIR_0M0])[ks ]=f_N + c4o9 * (-VeloY); - q = (subgridD.q[DIR_0M0])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[DIR_0P0])[kn ]=f_S + c4o9 * ( VeloY); - q = (subgridD.q[DIR_00P])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[DIR_00M])[kb ]=f_T + c4o9 * (-VeloZ); - q = (subgridD.q[DIR_00M])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[DIR_00P])[kt ]=f_B + c4o9 * ( VeloZ); - q = (subgridD.q[DIR_PP0])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[DIR_MM0])[ksw ]=f_NE + c1o9 * (-VeloX - VeloY); - q = (subgridD.q[DIR_MM0])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[DIR_PP0])[kne ]=f_SW + c1o9 * ( VeloX + VeloY); - q = (subgridD.q[DIR_PM0])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[DIR_MP0])[knw ]=f_SE + c1o9 * (-VeloX + VeloY); - q = (subgridD.q[DIR_MP0])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[DIR_PM0])[kse ]=f_NW + c1o9 * ( VeloX - VeloY); - q = (subgridD.q[DIR_P0P])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[DIR_M0M])[kbw ]=f_TE + c1o9 * (-VeloX - VeloZ); - q = (subgridD.q[DIR_M0M])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[DIR_P0P])[kte ]=f_BW + c1o9 * ( VeloX + VeloZ); - q = (subgridD.q[DIR_P0M])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[DIR_M0P])[ktw ]=f_BE + c1o9 * (-VeloX + VeloZ); - q = (subgridD.q[DIR_M0P])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[DIR_P0M])[kbe ]=f_TW + c1o9 * ( VeloX - VeloZ); - q = (subgridD.q[DIR_0PP])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[DIR_0MM])[kbs ]=f_TN + c1o9 * (-VeloY - VeloZ); - q = (subgridD.q[DIR_0MM])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[DIR_0PP])[ktn ]=f_BS + c1o9 * ( VeloY + VeloZ); - q = (subgridD.q[DIR_0PM])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[DIR_0MP])[kts ]=f_BN + c1o9 * (-VeloY + VeloZ); - q = (subgridD.q[DIR_0MP])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[DIR_0PM])[kbn ]=f_TS + c1o9 * ( VeloY - VeloZ); - q = (subgridD.q[DIR_PPP])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[DIR_MMM])[kbsw]=f_TNE + c1o36 * (-VeloX - VeloY - VeloZ); - q = (subgridD.q[DIR_MMM])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[DIR_PPP])[ktne]=f_BSW + c1o36 * ( VeloX + VeloY + VeloZ); - q = (subgridD.q[DIR_PPM])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[DIR_MMP])[ktsw]=f_BNE + c1o36 * (-VeloX - VeloY + VeloZ); - q = (subgridD.q[DIR_MMP])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[DIR_PPM])[kbne]=f_TSW + c1o36 * ( VeloX + VeloY - VeloZ); - q = (subgridD.q[DIR_PMP])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[DIR_MPM])[kbnw]=f_TSE + c1o36 * (-VeloX + VeloY - VeloZ); - q = (subgridD.q[DIR_MPM])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[DIR_PMP])[ktse]=f_BNW + c1o36 * ( VeloX - VeloY + VeloZ); - q = (subgridD.q[DIR_PMM])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[DIR_MPP])[ktnw]=f_BSE + c1o36 * (-VeloX + VeloY + VeloZ); - q = (subgridD.q[DIR_MPP])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[DIR_PMM])[kbse]=f_TNW + c1o36 * ( VeloX - VeloY - VeloZ); - } -} -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -////////////////////////////////////////////////////////////////////////////// -__global__ void QVelDevCouette27( - real* vx, - real* vy, - real* vz, - real* DD, - int* k_Q, - real* QQ, - unsigned int numberOfBCnodes, - real om1, - unsigned int* neighborX, - unsigned int* neighborY, - unsigned int* neighborZ, - unsigned long long numberOfLBnodes, - bool isEvenTimestep) -{ - Distributions27 D; - if (isEvenTimestep==true) - { - D.f[DIR_P00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_M00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_PMP * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_MPM * numberOfLBnodes]; - } - else - { - D.f[DIR_M00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_P00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_MPM * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_PMP * numberOfLBnodes]; - } - //////////////////////////////////////////////////////////////////////////////// - const unsigned x = threadIdx.x; // Globaler x-Index - const unsigned y = blockIdx.x; // Globaler y-Index - const unsigned z = blockIdx.y; // Globaler z-Index - - const unsigned nx = blockDim.x; - const unsigned ny = gridDim.x; - - const unsigned k = nx*(ny*z + y) + x; - ////////////////////////////////////////////////////////////////////////// - - if(k<numberOfBCnodes) - { - //////////////////////////////////////////////////////////////////////////////// - real VeloX = vx[k]; - real VeloY = vy[k]; - real VeloZ = vz[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[DIR_P00 * numberOfBCnodes]; - q_dirW = &QQ[DIR_M00 * numberOfBCnodes]; - q_dirN = &QQ[DIR_0P0 * numberOfBCnodes]; - q_dirS = &QQ[DIR_0M0 * numberOfBCnodes]; - q_dirT = &QQ[DIR_00P * numberOfBCnodes]; - q_dirB = &QQ[DIR_00M * numberOfBCnodes]; - q_dirNE = &QQ[DIR_PP0 * numberOfBCnodes]; - q_dirSW = &QQ[DIR_MM0 * numberOfBCnodes]; - q_dirSE = &QQ[DIR_PM0 * numberOfBCnodes]; - q_dirNW = &QQ[DIR_MP0 * numberOfBCnodes]; - q_dirTE = &QQ[DIR_P0P * numberOfBCnodes]; - q_dirBW = &QQ[DIR_M0M * numberOfBCnodes]; - q_dirBE = &QQ[DIR_P0M * numberOfBCnodes]; - q_dirTW = &QQ[DIR_M0P * numberOfBCnodes]; - q_dirTN = &QQ[DIR_0PP * numberOfBCnodes]; - q_dirBS = &QQ[DIR_0MM * numberOfBCnodes]; - q_dirBN = &QQ[DIR_0PM * numberOfBCnodes]; - q_dirTS = &QQ[DIR_0MP * numberOfBCnodes]; - q_dirTNE = &QQ[DIR_PPP * numberOfBCnodes]; - q_dirTSW = &QQ[DIR_MMP * numberOfBCnodes]; - q_dirTSE = &QQ[DIR_PMP * numberOfBCnodes]; - q_dirTNW = &QQ[DIR_MPP * numberOfBCnodes]; - q_dirBNE = &QQ[DIR_PPM * numberOfBCnodes]; - q_dirBSW = &QQ[DIR_MMM * numberOfBCnodes]; - q_dirBSE = &QQ[DIR_PMM * numberOfBCnodes]; - q_dirBNW = &QQ[DIR_MPM * 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]; - 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 f_W = (D.f[DIR_P00])[ke ]; - real f_E = (D.f[DIR_M00])[kw ]; - real f_S = (D.f[DIR_0P0])[kn ]; - real f_N = (D.f[DIR_0M0])[ks ]; - real f_B = (D.f[DIR_00P])[kt ]; - real f_T = (D.f[DIR_00M])[kb ]; - real f_SW = (D.f[DIR_PP0])[kne ]; - real f_NE = (D.f[DIR_MM0])[ksw ]; - real f_NW = (D.f[DIR_PM0])[kse ]; - real f_SE = (D.f[DIR_MP0])[knw ]; - real f_BW = (D.f[DIR_P0P])[kte ]; - real f_TE = (D.f[DIR_M0M])[kbw ]; - real f_TW = (D.f[DIR_P0M])[kbe ]; - real f_BE = (D.f[DIR_M0P])[ktw ]; - real f_BS = (D.f[DIR_0PP])[ktn ]; - real f_TN = (D.f[DIR_0MM])[kbs ]; - real f_TS = (D.f[DIR_0PM])[kbn ]; - real f_BN = (D.f[DIR_0MP])[kts ]; - real f_BSW = (D.f[DIR_PPP])[ktne ]; - real f_BNE = (D.f[DIR_MMP])[ktsw ]; - real f_BNW = (D.f[DIR_PMP])[ktse ]; - real f_BSE = (D.f[DIR_MPP])[ktnw ]; - real f_TSW = (D.f[DIR_PPM])[kbne ]; - real f_TNE = (D.f[DIR_MMM])[kbsw ]; - real f_TNW = (D.f[DIR_PMM])[kbse ]; - real f_TSE = (D.f[DIR_MPM])[kbnw ]; - //////////////////////////////////////////////////////////////////////////////// - - //////////////////////////////////////////////////////////////////////////////// - if (isEvenTimestep==false) - { - D.f[DIR_P00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_M00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_PMP * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_MPM * numberOfLBnodes]; - } - else - { - D.f[DIR_M00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_P00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_MPM * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_PMP * numberOfLBnodes]; - } - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - /////// FlowDirection Y !!!!!!!!!! /////////////////////////////////// - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //calculate velocity - //real vx1 = ((f_TNE-f_BSW)+(f_BSE-f_TNW)+(f_BNE-f_TSW)+(f_TSE-f_BNW)) + (((f_NE-f_SW)+(f_TE-f_BW))+((f_SE-f_NW)+(f_BE-f_TW))) + (f_E-f_W); - real vx2 = ((f_TNE-f_BSW)+(f_TNW-f_BSE)+(f_BNE-f_TSW)+(f_BNW-f_TSE)) + (((f_NE-f_SW)+(f_TN-f_BS))+((f_BN-f_TS)+(f_NW-f_SE))) + (f_N-f_S); - //real vx3 = ((f_TNE-f_BSW)+(f_TNW-f_BSE)+(f_TSW-f_BNE)+(f_TSE-f_BNW)) + (((f_TE-f_BW)+(f_TN-f_BS))+((f_TW-f_BE)+(f_TS-f_BN))) + (f_T-f_B); - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //constant - real on=c0o1;//c1o2;//one; - real ms=-c6o1; - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //2nd order moment - real kxxMyyFromfcNEQ = c0o1;//-c3o2 * (f_BW+f_W+f_TW-f_BS-f_S-f_TS-f_BN-f_N-f_TN+f_BE+f_E+f_TE-(vx1*vx1-vx2*vx2)); //all DIR_P00+DIR_M00 minus all DIR_0P0+DIR_0M0 (no combinations of xy left) - - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //set distributions - real q; - q = q_dirE[k]; if (q>=c0o1 && q<=c1o1) (D.f[DIR_M00])[kw ]=f_E + ms*c2o27 * VeloX; - q = q_dirW[k]; if (q>=c0o1 && q<=c1o1) (D.f[DIR_P00])[ke ]=f_W - ms*c2o27 * VeloX; - q = q_dirN[k]; if (q>=c0o1 && q<=c1o1) (D.f[DIR_0M0])[ks ]=f_N + ms*c2o27 * VeloY; - q = q_dirS[k]; if (q>=c0o1 && q<=c1o1) (D.f[DIR_0P0])[kn ]=f_S - ms*c2o27 * VeloY; - q = q_dirT[k]; if (q>=c0o1 && q<=c1o1) (D.f[DIR_00M])[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[DIR_00P])[kt ]=f_B - ms*c2o27 * VeloZ; - q = q_dirNE[k]; if (q>=c0o1 && q<=c1o1) (D.f[DIR_MM0])[ksw ]=f_NE + ms*c1o54 * VeloX + ms*c1o54 * VeloY; - q = q_dirSW[k]; if (q>=c0o1 && q<=c1o1) (D.f[DIR_PP0])[kne ]=f_SW - ms*c1o54 * VeloX - ms*c1o54 * VeloY; - q = q_dirSE[k]; if (q>=c0o1 && q<=c1o1) (D.f[DIR_MP0])[knw ]=f_SE + ms*c1o54 * VeloX - ms*c1o54 * VeloY; - q = q_dirNW[k]; if (q>=c0o1 && q<=c1o1) (D.f[DIR_PM0])[kse ]=f_NW - ms*c1o54 * VeloX + ms*c1o54 * VeloY; - q = q_dirTE[k]; if (q>=c0o1 && q<=c1o1) (D.f[DIR_M0M])[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[DIR_P0P])[kte ]=f_BW - ms*c1o54 * VeloX - ms*c1o54 * VeloZ; - q = q_dirBE[k]; if (q>=c0o1 && q<=c1o1) (D.f[DIR_M0P])[ktw ]=f_BE + ms*c1o54 * VeloX - ms*c1o54 * VeloZ; - q = q_dirTW[k]; if (q>=c0o1 && q<=c1o1) (D.f[DIR_P0M])[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[DIR_0MM])[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[DIR_0PP])[ktn ]=f_BS - ms*c1o54 * VeloY - ms*c1o54 * VeloZ; - q = q_dirBN[k]; if (q>=c0o1 && q<=c1o1) (D.f[DIR_0MP])[kts ]=f_BN + ms*c1o54 * VeloY - ms*c1o54 * VeloZ; - q = q_dirTS[k]; if (q>=c0o1 && q<=c1o1) (D.f[DIR_0PM])[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[DIR_MMM])[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[DIR_PPP])[ktne]=f_BSW - ms*c1o216 * VeloX - ms*c1o216 * VeloY - ms*c1o216 * VeloZ; - q = q_dirBNE[k]; if (q>=c0o1 && q<=c1o1) (D.f[DIR_MMP])[ktsw]=f_BNE + ms*c1o216 * VeloX + ms*c1o216 * VeloY - ms*c1o216 * VeloZ; - q = q_dirTSW[k]; if (q>=c0o1 && q<=c1o1) (D.f[DIR_PPM])[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[DIR_MPM])[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[DIR_PMP])[ktse]=f_BNW - ms*c1o216 * VeloX + ms*c1o216 * VeloY - ms*c1o216 * VeloZ; - q = q_dirBSE[k]; if (q>=c0o1 && q<=c1o1) (D.f[DIR_MPP])[ktnw]=f_BSE + ms*c1o216 * VeloX - ms*c1o216 * VeloY - ms*c1o216 * VeloZ; - q = q_dirTNW[k]; if (q>=c0o1 && q<=c1o1) (D.f[DIR_PMM])[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[DIR_M00])[kw ]=f_E + ms*c2over27 * VeloX; - // q = q_dirW[k]; if (q>=zero && q<=one) (D.f[DIR_P00])[ke ]=f_W - ms*c2over27 * VeloX; - // q = q_dirN[k]; if (q>=zero && q<=one) (D.f[DIR_0M0])[ks ]=f_N + ms*c2over27 * VeloY; - // q = q_dirS[k]; if (q>=zero && q<=one) (D.f[DIR_0P0])[kn ]=f_S - ms*c2over27 * VeloY; - //q = q_dirT[k]; if (q>=zero && q<=one) (D.f[DIR_00M])[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[DIR_00P])[kt ]=f_B - ms*c2over27 * VeloZ; - // q = q_dirNE[k]; if (q>=zero && q<=one) (D.f[DIR_MM0])[ksw ]=f_NE + ms*c1over54 * VeloX + ms*c1over54 * VeloY; - //q = q_dirSW[k]; if (q>=zero && q<=one) (D.f[DIR_PP0])[kne ]=f_SW - ms*c1over54 * VeloX - ms*c1over54 * VeloY; - //q = q_dirSE[k]; if (q>=zero && q<=one) (D.f[DIR_MP0])[knw ]=f_SE + ms*c1over54 * VeloX - ms*c1over54 * VeloY; - //q = q_dirNW[k]; if (q>=zero && q<=one) (D.f[DIR_PM0])[kse ]=f_NW - ms*c1over54 * VeloX + ms*c1over54 * VeloY; - //q = q_dirTE[k]; if (q>=zero && q<=one) (D.f[DIR_M0M])[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[DIR_P0P])[kte ]=f_BW - ms*c1over54 * VeloX - ms*c1over54 * VeloZ; - //q = q_dirBE[k]; if (q>=zero && q<=one) (D.f[DIR_M0P])[ktw ]=f_BE + ms*c1over54 * VeloX - ms*c1over54 * VeloZ; - //q = q_dirTW[k]; if (q>=zero && q<=one) (D.f[DIR_P0M])[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[DIR_0MM])[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[DIR_0PP])[ktn ]=f_BS - ms*c1over54 * VeloY - ms*c1over54 * VeloZ; - //q = q_dirBN[k]; if (q>=zero && q<=one) (D.f[DIR_0MP])[kts ]=f_BN + ms*c1over54 * VeloY - ms*c1over54 * VeloZ; - //q = q_dirTS[k]; if (q>=zero && q<=one) (D.f[DIR_0PM])[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[DIR_MMM])[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[DIR_PPP])[ktne]=f_BSW - ms*c1over216 * VeloX - ms*c1over216 * VeloY - ms*c1over216 * VeloZ; - // q = q_dirBNE[k]; if (q>=zero && q<=one) (D.f[DIR_MMP])[ktsw]=f_BNE + ms*c1over216 * VeloX + ms*c1over216 * VeloY - ms*c1over216 * VeloZ; - // q = q_dirTSW[k]; if (q>=zero && q<=one) (D.f[DIR_PPM])[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[DIR_MPM])[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[DIR_PMP])[ktse]=f_BNW - ms*c1over216 * VeloX + ms*c1over216 * VeloY - ms*c1over216 * VeloZ; - // q = q_dirBSE[k]; if (q>=zero && q<=one) (D.f[DIR_MPP])[ktnw]=f_BSE + ms*c1over216 * VeloX - ms*c1over216 * VeloY - ms*c1over216 * VeloZ; - // q = q_dirTNW[k]; if (q>=zero && q<=one) (D.f[DIR_PMM])[kbse]=f_TNW - ms*c1over216 * VeloX + ms*c1over216 * VeloY + ms*c1over216 * VeloZ + c1o2*c1o36*((two*VeloY-vx2)*(two*VeloY-vx2)-vx2*vx2)*on; - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - } -} -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -////////////////////////////////////////////////////////////////////////////// -__global__ void QVelDev1h27( - int inx, - int iny, - real* vx, - real* vy, - real* vz, - real* DD, - int* k_Q, - real* QQ, - unsigned int numberOfBCnodes, - real om1, - real Phi, - real angularVelocity, - unsigned int* neighborX, - unsigned int* neighborY, - unsigned int* neighborZ, - real* coordX, - real* coordY, - real* coordZ, - unsigned long long numberOfLBnodes, - bool isEvenTimestep) -{ - Distributions27 D; - if (isEvenTimestep==true) - { - D.f[DIR_P00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_M00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_PMP * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_MPM * numberOfLBnodes]; - } - else - { - D.f[DIR_M00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_P00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_MPM * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_PMP * numberOfLBnodes]; - } - //////////////////////////////////////////////////////////////////////////////// - const unsigned x = threadIdx.x; // Globaler x-Index - const unsigned y = blockIdx.x; // Globaler y-Index - const unsigned z = blockIdx.y; // Globaler z-Index - - const unsigned nx = blockDim.x; - const unsigned ny = gridDim.x; - - const unsigned k = nx*(ny*z + y) + x; - ////////////////////////////////////////////////////////////////////////// - - if(k<numberOfBCnodes) - { - //////////////////////////////////////////////////////////////////////////////// - real VeloX = cosf(Phi)*vx[k] - sinf(Phi)*vy[k]; - real VeloY = sinf(Phi)*vx[k] + cosf(Phi)*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) - //////////////////////////////////////////////////////////////////////////////////// - //Ship - real coord0X = 281.125f;//7.5f; - real coord0Y = 388.125f;//7.5f; - real ux = - angularVelocity * (coordY[k_Q[k]] - coord0Y); - real uy = angularVelocity * (coordX[k_Q[k]] - coord0X); - real VeloXpur=VeloX; - real VeloYpur=VeloY; - VeloX-=ux; - VeloY-=uy; - //////////////////////////////////////////////////////////////////////////////// - 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[DIR_P00 * numberOfBCnodes]; - q_dirW = &QQ[DIR_M00 * numberOfBCnodes]; - q_dirN = &QQ[DIR_0P0 * numberOfBCnodes]; - q_dirS = &QQ[DIR_0M0 * numberOfBCnodes]; - q_dirT = &QQ[DIR_00P * numberOfBCnodes]; - q_dirB = &QQ[DIR_00M * numberOfBCnodes]; - q_dirNE = &QQ[DIR_PP0 * numberOfBCnodes]; - q_dirSW = &QQ[DIR_MM0 * numberOfBCnodes]; - q_dirSE = &QQ[DIR_PM0 * numberOfBCnodes]; - q_dirNW = &QQ[DIR_MP0 * numberOfBCnodes]; - q_dirTE = &QQ[DIR_P0P * numberOfBCnodes]; - q_dirBW = &QQ[DIR_M0M * numberOfBCnodes]; - q_dirBE = &QQ[DIR_P0M * numberOfBCnodes]; - q_dirTW = &QQ[DIR_M0P * numberOfBCnodes]; - q_dirTN = &QQ[DIR_0PP * numberOfBCnodes]; - q_dirBS = &QQ[DIR_0MM * numberOfBCnodes]; - q_dirBN = &QQ[DIR_0PM * numberOfBCnodes]; - q_dirTS = &QQ[DIR_0MP * numberOfBCnodes]; - q_dirTNE = &QQ[DIR_PPP * numberOfBCnodes]; - q_dirTSW = &QQ[DIR_MMP * numberOfBCnodes]; - q_dirTSE = &QQ[DIR_PMP * numberOfBCnodes]; - q_dirTNW = &QQ[DIR_MPP * numberOfBCnodes]; - q_dirBNE = &QQ[DIR_PPM * numberOfBCnodes]; - q_dirBSW = &QQ[DIR_MMM * numberOfBCnodes]; - q_dirBSE = &QQ[DIR_PMM * numberOfBCnodes]; - q_dirBNW = &QQ[DIR_MPM * 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]; - 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]; - //unsigned int nxny = nx*ny; - //unsigned int kzero= KQK; - //unsigned int ke = KQK; - //unsigned int kw = KQK + 1; - //unsigned int kn = KQK; - //unsigned int ks = KQK + nx; - //unsigned int kt = KQK; - //unsigned int kb = KQK + nxny; - //unsigned int ksw = KQK + nx + 1; - //unsigned int kne = KQK; - //unsigned int kse = KQK + nx; - //unsigned int knw = KQK + 1; - //unsigned int kbw = KQK + nxny + 1; - //unsigned int kte = KQK; - //unsigned int kbe = KQK + nxny; - //unsigned int ktw = KQK + 1; - //unsigned int kbs = KQK + nxny + nx; - //unsigned int ktn = KQK; - //unsigned int kbn = KQK + nxny; - //unsigned int kts = KQK + nx; - //unsigned int ktse = KQK + nx; - //unsigned int kbnw = KQK + nxny + 1; - //unsigned int ktnw = KQK + 1; - //unsigned int kbse = KQK + nxny + nx; - //unsigned int ktsw = KQK + nx + 1; - //unsigned int kbne = KQK + nxny; - //unsigned int ktne = KQK; - //unsigned int kbsw = KQK + nxny + nx + 1; - //////////////////////////////////////////////////////////////////////////////// - //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[DIR_P00])[ke ]; - //f_E = (D.f[DIR_M00])[kw ]; - //f_S = (D.f[DIR_0P0])[kn ]; - //f_N = (D.f[DIR_0M0])[ks ]; - //f_B = (D.f[DIR_00P])[kt ]; - //f_T = (D.f[DIR_00M])[kb ]; - //f_SW = (D.f[DIR_PP0])[kne ]; - //f_NE = (D.f[DIR_MM0])[ksw ]; - //f_NW = (D.f[DIR_PM0])[kse ]; - //f_SE = (D.f[DIR_MP0])[knw ]; - //f_BW = (D.f[DIR_P0P])[kte ]; - //f_TE = (D.f[DIR_M0M])[kbw ]; - //f_TW = (D.f[DIR_P0M])[kbe ]; - //f_BE = (D.f[DIR_M0P])[ktw ]; - //f_BS = (D.f[DIR_0PP])[ktn ]; - //f_TN = (D.f[DIR_0MM])[kbs ]; - //f_TS = (D.f[DIR_0PM])[kbn ]; - //f_BN = (D.f[DIR_0MP])[kts ]; - //f_BSW = (D.f[DIR_PPP])[ktne ]; - //f_BNE = (D.f[DIR_MMP])[ktsw ]; - //f_BNW = (D.f[DIR_PMP])[ktse ]; - //f_BSE = (D.f[DIR_MPP])[ktnw ]; - //f_TSW = (D.f[DIR_PPM])[kbne ]; - //f_TNE = (D.f[DIR_MMM])[kbsw ]; - //f_TNW = (D.f[DIR_PMM])[kbse ]; - //f_TSE = (D.f[DIR_MPM])[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[DIR_000])[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); - - - //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); - - //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); - - //cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3); - - ////////////////////////////////////////////////////////////////////////// - if (isEvenTimestep==false) - { - D.f[DIR_P00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_M00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_PMP * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_MPM * numberOfLBnodes]; - } - else - { - D.f[DIR_M00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_P00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_MPM * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_PMP * numberOfLBnodes]; - } - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //Test - //(D.f[DIR_000])[k]=c1o10; - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - //ToDo anders Klammern - - //q = q_dirE[k]; - //if (q>=zero && q<=one) - //{ - // feq=c2over27* (drho/*+three*( vx1 )*/+c9over2*( vx1 )*( vx1 )-cu_sq); - // (D.f[DIR_M00])[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[DIR_M00])[kw]=zero; - //} - - //q = q_dirW[k]; - //if (q>=zero && q<=one) - //{ - // feq=c2over27* (drho/*+three*(-vx1 )*/+c9over2*(-vx1 )*(-vx1 )-cu_sq); - // (D.f[DIR_P00])[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[DIR_P00])[ke]=zero; - //} - - //q = q_dirN[k]; - //if (q>=zero && q<=one) - //{ - // feq=c2over27* (drho/*+three*( vx2 )*/+c9over2*( vx2 )*( vx2 )-cu_sq); - // (D.f[DIR_0M0])[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[DIR_0M0])[ks]=zero; - //} - - //q = q_dirS[k]; - //if (q>=zero && q<=one) - //{ - // feq=c2over27* (drho/*+three*( -vx2 )*/+c9over2*( -vx2 )*( -vx2 )-cu_sq); - // (D.f[DIR_0P0])[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[DIR_0P0])[kn]=zero; - //} - - //q = q_dirT[k]; - //if (q>=zero && q<=one) - //{ - // feq=c2over27* (drho/*+three*( vx3)*/+c9over2*( vx3)*( vx3)-cu_sq); - // (D.f[DIR_00M])[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[DIR_00M])[kb]=one; - //} - - //q = q_dirB[k]; - //if (q>=zero && q<=one) - //{ - // feq=c2over27* (drho/*+three*( -vx3)*/+c9over2*( -vx3)*( -vx3)-cu_sq); - // (D.f[DIR_00P])[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[DIR_00P])[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[DIR_MM0])[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[DIR_MM0])[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[DIR_PP0])[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[DIR_PP0])[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[DIR_MP0])[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[DIR_MP0])[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[DIR_PM0])[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[DIR_PM0])[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[DIR_M0M])[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[DIR_M0M])[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[DIR_P0P])[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[DIR_P0P])[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[DIR_M0P])[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[DIR_M0P])[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[DIR_P0M])[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[DIR_P0M])[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[DIR_0MM])[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[DIR_0MM])[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[DIR_0PP])[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[DIR_0PP])[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[DIR_0MP])[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[DIR_0MP])[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[DIR_0PM])[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[DIR_0PM])[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[DIR_MMM])[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[DIR_MMM])[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[DIR_PPP])[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[DIR_PPP])[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[DIR_MMP])[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[DIR_MMP])[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[DIR_PPM])[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[DIR_PPM])[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[DIR_MPM])[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[DIR_MPM])[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[DIR_PMP])[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[DIR_PMP])[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[DIR_MPP])[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[DIR_MPP])[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[DIR_PMM])[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[DIR_PMM])[kbse]=zero; - //} - - ///////// equilibrium BC - cu_sq=c3o2*(VeloX*VeloX +VeloY*VeloY); - VeloXpur*=-c1o1; - VeloYpur*=-c1o1; - vx3=c0o1; - drho=c0o1; - q = q_dirE[k]; - if (q>=c0o1 && q<=c1o1) - { - feq=c2o27* (drho+c3o1*( VeloXpur )+c9o2*( VeloX )*( VeloX )-cu_sq); - (D.f[DIR_M00])[kw]=feq; - //(D.f[DIR_M00])[kw]=zero; - } - - q = q_dirW[k]; - if (q>=c0o1 && q<=c1o1) - { - feq=c2o27* (drho+c3o1*(-VeloXpur )+c9o2*(-VeloX )*(-VeloX )-cu_sq); - (D.f[DIR_P00])[ke]=feq; - //(D.f[DIR_P00])[ke]=zero; - } - - q = q_dirN[k]; - if (q>=c0o1 && q<=c1o1) - { - feq=c2o27* (drho+c3o1*( VeloYpur )+c9o2*( VeloY )*( VeloY )-cu_sq); - (D.f[DIR_0M0])[ks]=feq; - //(D.f[DIR_0M0])[ks]=zero; - } - - q = q_dirS[k]; - if (q>=c0o1 && q<=c1o1) - { - feq=c2o27* (drho+c3o1*( -VeloYpur )+c9o2*( -VeloY )*( -VeloY )-cu_sq); - (D.f[DIR_0P0])[kn]=feq; - //(D.f[DIR_0P0])[kn]=zero; - } - - q = q_dirT[k]; - if (q>=c0o1 && q<=c1o1) - { - feq=c2o27* (drho+c3o1*( vx3)+c9o2*( vx3)*( vx3)-cu_sq); - (D.f[DIR_00M])[kb]=feq; - //(D.f[DIR_00M])[kb]=one; - } - - q = q_dirB[k]; - if (q>=c0o1 && q<=c1o1) - { - feq=c2o27* (drho+c3o1*( -vx3)+c9o2*( -vx3)*( -vx3)-cu_sq); - (D.f[DIR_00P])[kt]=feq; - //(D.f[DIR_00P])[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[DIR_MM0])[ksw]=feq; - //(D.f[DIR_MM0])[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[DIR_PP0])[kne]=feq; - //(D.f[DIR_PP0])[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[DIR_MP0])[knw]=feq; - //(D.f[DIR_MP0])[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[DIR_PM0])[kse]=feq; - //(D.f[DIR_PM0])[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[DIR_M0M])[kbw]=feq; - //(D.f[DIR_M0M])[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[DIR_P0P])[kte]=feq; - //(D.f[DIR_P0P])[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[DIR_M0P])[ktw]=feq; - //(D.f[DIR_M0P])[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[DIR_P0M])[kbe]=feq; - //(D.f[DIR_P0M])[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[DIR_0MM])[kbs]=feq; - //(D.f[DIR_0MM])[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[DIR_0PP])[ktn]=feq; - //(D.f[DIR_0PP])[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[DIR_0MP])[kts]=feq; - //(D.f[DIR_0MP])[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[DIR_0PM])[kbn]=feq; - //(D.f[DIR_0PM])[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[DIR_MMM])[kbsw]=feq; - //(D.f[DIR_MMM])[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[DIR_PPP])[ktne]=feq; - //(D.f[DIR_PPP])[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[DIR_MMP])[ktsw]=feq; - //(D.f[DIR_MMP])[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[DIR_PPM])[kbne]=feq; - //(D.f[DIR_PPM])[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[DIR_MPM])[kbnw]=feq; - //(D.f[DIR_MPM])[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[DIR_PMP])[ktse]=feq; - //(D.f[DIR_PMP])[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[DIR_MPP])[ktnw]=feq; - //(D.f[DIR_MPP])[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[DIR_PMM])[kbse]=feq; - //(D.f[DIR_PMM])[kbse]=zero; - } - - } -} -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -////////////////////////////////////////////////////////////////////////////// -__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 long long numberOfLBnodes, - bool isEvenTimestep) -{ - ////////////////////////////////////////////////////////////////////////// - //! The velocity boundary condition is executed in the following steps - //! - //////////////////////////////////////////////////////////////////////////////// - //! - Get node index coordinates from threadIdx, blockIdx, blockDim and gridDim. - //! - const unsigned nodeIndex = getNodeIndex(); - - ////////////////////////////////////////////////////////////////////////// - //! - Run for all indices in size of boundary condition (numberOfBCnodes) - //! - if(nodeIndex < 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); - - //////////////////////////////////////////////////////////////////////////////// - //! - Set local velocities - //! - real VeloX = velocityX[nodeIndex]; - real VeloY = velocityY[nodeIndex]; - real VeloZ = velocityZ[nodeIndex]; - - //////////////////////////////////////////////////////////////////////////////// - //! - Set local subgrid distances (q's) - //! - SubgridDistances27 subgridD; - getPointersToSubgridDistances(subgridD, subgridDistances, numberOfBCnodes); - - //////////////////////////////////////////////////////////////////////////////// - //! - Set neighbor indices (necessary for indirect addressing) - //! - unsigned int indexOfBCnode = subgridDistanceIndices[nodeIndex]; - 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 = indexOfBCnode; - unsigned int kse = ks; - unsigned int knw = kw; - unsigned int kbw = neighborZ[kw]; - unsigned int kte = indexOfBCnode; - unsigned int kbe = kb; - unsigned int ktw = kw; - unsigned int kbs = neighborZ[ks]; - unsigned int ktn = indexOfBCnode; - 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 = indexOfBCnode; - unsigned int kbsw = neighborZ[ksw]; - - //////////////////////////////////////////////////////////////////////////////// - //! - Set local distributions - //! - real f_W = (dist.f[DIR_P00])[ke ]; - real f_E = (dist.f[DIR_M00])[kw ]; - real f_S = (dist.f[DIR_0P0])[kn ]; - real f_N = (dist.f[DIR_0M0])[ks ]; - real f_B = (dist.f[DIR_00P])[kt ]; - real f_T = (dist.f[DIR_00M])[kb ]; - real f_SW = (dist.f[DIR_PP0])[kne ]; - real f_NE = (dist.f[DIR_MM0])[ksw ]; - real f_NW = (dist.f[DIR_PM0])[kse ]; - real f_SE = (dist.f[DIR_MP0])[knw ]; - real f_BW = (dist.f[DIR_P0P])[kte ]; - real f_TE = (dist.f[DIR_M0M])[kbw ]; - real f_TW = (dist.f[DIR_P0M])[kbe ]; - real f_BE = (dist.f[DIR_M0P])[ktw ]; - real f_BS = (dist.f[DIR_0PP])[ktn ]; - real f_TN = (dist.f[DIR_0MM])[kbs ]; - real f_TS = (dist.f[DIR_0PM])[kbn ]; - real f_BN = (dist.f[DIR_0MP])[kts ]; - real f_BSW = (dist.f[DIR_PPP])[ktne ]; - real f_BNE = (dist.f[DIR_MMP])[ktsw ]; - real f_BNW = (dist.f[DIR_PMP])[ktse ]; - real f_BSE = (dist.f[DIR_MPP])[ktnw ]; - real f_TSW = (dist.f[DIR_PPM])[kbne ]; - real f_TNE = (dist.f[DIR_MMM])[kbsw ]; - real f_TNW = (dist.f[DIR_PMM])[kbse ]; - real f_TSE = (dist.f[DIR_MPM])[kbnw ]; - - //////////////////////////////////////////////////////////////////////////////// - //! - 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[DIR_000])[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); - - 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); - - //////////////////////////////////////////////////////////////////////////////// - //! - Update distributions with subgrid distance (q) between zero and one - //! - real feq, q, velocityLB, velocityBC; - q = (subgridD.q[DIR_P00])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) // only update distribution for q between zero and one - { - velocityLB = vx1; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c2o27); - velocityBC = VeloX; - (dist.f[DIR_M00])[kw] = getInterpolatedDistributionForVeloBC(q, f_E, f_W, feq, omega, velocityBC, c2o27); - } - - q = (subgridD.q[DIR_M00])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) - { - velocityLB = -vx1; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c2o27); - velocityBC = -VeloX; - (dist.f[DIR_P00])[ke] = getInterpolatedDistributionForVeloBC(q, f_W, f_E, feq, omega, velocityBC, c2o27); - } - - q = (subgridD.q[DIR_0P0])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) - { - velocityLB = vx2; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c2o27); - velocityBC = VeloY; - (dist.f[DIR_0M0])[ks] = getInterpolatedDistributionForVeloBC(q, f_N, f_S, feq, omega, velocityBC, c2o27); - } - - q = (subgridD.q[DIR_0M0])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) - { - velocityLB = -vx2; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c2o27); - velocityBC = -VeloY; - (dist.f[DIR_0P0])[kn] = getInterpolatedDistributionForVeloBC(q, f_S, f_N, feq, omega, velocityBC, c2o27); - } - - q = (subgridD.q[DIR_00P])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) - { - velocityLB = vx3; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c2o27); - velocityBC = VeloZ; - (dist.f[DIR_00M])[kb] = getInterpolatedDistributionForVeloBC(q, f_T, f_B, feq, omega, velocityBC, c2o27); - } - - q = (subgridD.q[DIR_00M])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) - { - velocityLB = -vx3; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c2o27); - velocityBC = -VeloZ; - (dist.f[DIR_00P])[kt] = getInterpolatedDistributionForVeloBC(q, f_B, f_T, feq, omega, velocityBC, c2o27); - } - - q = (subgridD.q[DIR_PP0])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) - { - velocityLB = vx1 + vx2; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); - velocityBC = VeloX + VeloY; - (dist.f[DIR_MM0])[ksw] = getInterpolatedDistributionForVeloBC(q, f_NE, f_SW, feq, omega, velocityBC, c1o54); - } - - q = (subgridD.q[DIR_MM0])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) - { - velocityLB = -vx1 - vx2; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); - velocityBC = -VeloX - VeloY; - (dist.f[DIR_PP0])[kne] = getInterpolatedDistributionForVeloBC(q, f_SW, f_NE, feq, omega, velocityBC, c1o54); - } - - q = (subgridD.q[DIR_PM0])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) - { - velocityLB = vx1 - vx2; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); - velocityBC = VeloX - VeloY; - (dist.f[DIR_MP0])[knw] = getInterpolatedDistributionForVeloBC(q, f_SE, f_NW, feq, omega, velocityBC, c1o54); - } - - q = (subgridD.q[DIR_MP0])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) - { - velocityLB = -vx1 + vx2; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); - velocityBC = -VeloX + VeloY; - (dist.f[DIR_PM0])[kse] = getInterpolatedDistributionForVeloBC(q, f_NW, f_SE, feq, omega, velocityBC, c1o54); - } - - q = (subgridD.q[DIR_P0P])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) - { - velocityLB = vx1 + vx3; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); - velocityBC = VeloX + VeloZ; - (dist.f[DIR_M0M])[kbw] = getInterpolatedDistributionForVeloBC(q, f_TE, f_BW, feq, omega, velocityBC, c1o54); - } - - q = (subgridD.q[DIR_M0M])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) - { - velocityLB = -vx1 - vx3; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); - velocityBC = -VeloX - VeloZ; - (dist.f[DIR_P0P])[kte] = getInterpolatedDistributionForVeloBC(q, f_BW, f_TE, feq, omega, velocityBC, c1o54); - } - - q = (subgridD.q[DIR_P0M])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) - { - velocityLB = vx1 - vx3; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); - velocityBC = VeloX - VeloZ; - (dist.f[DIR_M0P])[ktw] = getInterpolatedDistributionForVeloBC(q, f_BE, f_TW, feq, omega, velocityBC, c1o54); - } - - q = (subgridD.q[DIR_M0P])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) - { - velocityLB = -vx1 + vx3; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); - velocityBC = -VeloX + VeloZ; - (dist.f[DIR_P0M])[kbe] = getInterpolatedDistributionForVeloBC(q, f_TW, f_BE, feq, omega, velocityBC, c1o54); - } - - q = (subgridD.q[DIR_0PP])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) - { - velocityLB = vx2 + vx3; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); - velocityBC = VeloY + VeloZ; - (dist.f[DIR_0MM])[kbs] = getInterpolatedDistributionForVeloBC(q, f_TN, f_BS, feq, omega, velocityBC, c1o54); - } - - q = (subgridD.q[DIR_0MM])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) - { - velocityLB = -vx2 - vx3; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); - velocityBC = -VeloY - VeloZ; - (dist.f[DIR_0PP])[ktn] = getInterpolatedDistributionForVeloBC(q, f_BS, f_TN, feq, omega, velocityBC, c1o54); - } - - q = (subgridD.q[DIR_0PM])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) - { - velocityLB = vx2 - vx3; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); - velocityBC = VeloY - VeloZ; - (dist.f[DIR_0MP])[kts] = getInterpolatedDistributionForVeloBC(q, f_BN, f_TS, feq, omega, velocityBC, c1o54); - } - - q = (subgridD.q[DIR_0MP])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) - { - velocityLB = -vx2 + vx3; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); - velocityBC = -VeloY + VeloZ; - (dist.f[DIR_0PM])[kbn] = getInterpolatedDistributionForVeloBC(q, f_TS, f_BN, feq, omega, velocityBC, c1o54); - } - - q = (subgridD.q[DIR_PPP])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) - { - velocityLB = vx1 + vx2 + vx3; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); - velocityBC = VeloX + VeloY + VeloZ; - (dist.f[DIR_MMM])[kbsw] = getInterpolatedDistributionForVeloBC(q, f_TNE, f_BSW, feq, omega, velocityBC, c1o216); - } - - q = (subgridD.q[DIR_MMM])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) - { - velocityLB = -vx1 - vx2 - vx3; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); - velocityBC = -VeloX - VeloY - VeloZ; - (dist.f[DIR_PPP])[ktne] = getInterpolatedDistributionForVeloBC(q, f_BSW, f_TNE, feq, omega, velocityBC, c1o216); - } - - q = (subgridD.q[DIR_PPM])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) - { - velocityLB = vx1 + vx2 - vx3; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); - velocityBC = VeloX + VeloY - VeloZ; - (dist.f[DIR_MMP])[ktsw] = getInterpolatedDistributionForVeloBC(q, f_BNE, f_TSW, feq, omega, velocityBC, c1o216); - } - - q = (subgridD.q[DIR_MMP])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) - { - velocityLB = -vx1 - vx2 + vx3; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); - velocityBC = -VeloX - VeloY + VeloZ; - (dist.f[DIR_PPM])[kbne] = getInterpolatedDistributionForVeloBC(q, f_TSW, f_BNE, feq, omega, velocityBC, c1o216); - } - - q = (subgridD.q[DIR_PMP])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) - { - velocityLB = vx1 - vx2 + vx3; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); - velocityBC = VeloX - VeloY + VeloZ; - (dist.f[DIR_MPM])[kbnw] = getInterpolatedDistributionForVeloBC(q, f_TSE, f_BNW, feq, omega, velocityBC, c1o216); - } - - q = (subgridD.q[DIR_MPM])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) - { - velocityLB = -vx1 + vx2 - vx3; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); - velocityBC = -VeloX + VeloY - VeloZ; - (dist.f[DIR_PMP])[ktse] = getInterpolatedDistributionForVeloBC(q, f_BNW, f_TSE, feq, omega, velocityBC, c1o216); - } - - q = (subgridD.q[DIR_PMM])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) - { - velocityLB = vx1 - vx2 - vx3; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); - velocityBC = VeloX - VeloY - VeloZ; - (dist.f[DIR_MPP])[ktnw] = getInterpolatedDistributionForVeloBC(q, f_BSE, f_TNW, feq, omega, velocityBC, c1o216); - } - - q = (subgridD.q[DIR_MPP])[nodeIndex]; - if (q>=c0o1 && q<=c1o1) - { - velocityLB = -vx1 + vx2 + vx3; - feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); - velocityBC = -VeloX + VeloY + VeloZ; - (dist.f[DIR_PMM])[kbse] = getInterpolatedDistributionForVeloBC(q, f_TNW, f_BSE, feq, omega, velocityBC, c1o216); - } - } -} -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -////////////////////////////////////////////////////////////////////////////// -__global__ void QVelDevice27( - int inx, - int iny, - real* vx, - real* vy, - real* vz, - real* DD, - int* k_Q, - real* QQ, - unsigned int numberOfBCnodes, - real om1, - unsigned int* neighborX, - unsigned int* neighborY, - unsigned int* neighborZ, - unsigned long long numberOfLBnodes, - bool isEvenTimestep) -{ - Distributions27 D; - if (isEvenTimestep==true) - { - D.f[DIR_P00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_M00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_PMP * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_MPM * numberOfLBnodes]; - } - else - { - D.f[DIR_M00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_P00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_MPM * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_PMP * numberOfLBnodes]; - } - //////////////////////////////////////////////////////////////////////////////// - const unsigned x = threadIdx.x; // Globaler x-Index - const unsigned y = blockIdx.x; // Globaler y-Index - const unsigned z = blockIdx.y; // Globaler z-Index - - const unsigned nx = blockDim.x; - const unsigned ny = gridDim.x; - - const unsigned k = nx*(ny*z + y) + x; - ////////////////////////////////////////////////////////////////////////// - - if(k<numberOfBCnodes) - { - //////////////////////////////////////////////////////////////////////////////// - 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) - //////////////////////////////////////////////////////////////////////////////// - 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[DIR_P00 * numberOfBCnodes]; - q_dirW = &QQ[DIR_M00 * numberOfBCnodes]; - q_dirN = &QQ[DIR_0P0 * numberOfBCnodes]; - q_dirS = &QQ[DIR_0M0 * numberOfBCnodes]; - q_dirT = &QQ[DIR_00P * numberOfBCnodes]; - q_dirB = &QQ[DIR_00M * numberOfBCnodes]; - q_dirNE = &QQ[DIR_PP0 * numberOfBCnodes]; - q_dirSW = &QQ[DIR_MM0 * numberOfBCnodes]; - q_dirSE = &QQ[DIR_PM0 * numberOfBCnodes]; - q_dirNW = &QQ[DIR_MP0 * numberOfBCnodes]; - q_dirTE = &QQ[DIR_P0P * numberOfBCnodes]; - q_dirBW = &QQ[DIR_M0M * numberOfBCnodes]; - q_dirBE = &QQ[DIR_P0M * numberOfBCnodes]; - q_dirTW = &QQ[DIR_M0P * numberOfBCnodes]; - q_dirTN = &QQ[DIR_0PP * numberOfBCnodes]; - q_dirBS = &QQ[DIR_0MM * numberOfBCnodes]; - q_dirBN = &QQ[DIR_0PM * numberOfBCnodes]; - q_dirTS = &QQ[DIR_0MP * numberOfBCnodes]; - q_dirTNE = &QQ[DIR_PPP * numberOfBCnodes]; - q_dirTSW = &QQ[DIR_MMP * numberOfBCnodes]; - q_dirTSE = &QQ[DIR_PMP * numberOfBCnodes]; - q_dirTNW = &QQ[DIR_MPP * numberOfBCnodes]; - q_dirBNE = &QQ[DIR_PPM * numberOfBCnodes]; - q_dirBSW = &QQ[DIR_MMM * numberOfBCnodes]; - q_dirBSE = &QQ[DIR_PMM * numberOfBCnodes]; - q_dirBNW = &QQ[DIR_MPM * 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]; - 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]; - //unsigned int nxny = nx*ny; - //unsigned int kzero= KQK; - //unsigned int ke = KQK; - //unsigned int kw = KQK + 1; - //unsigned int kn = KQK; - //unsigned int ks = KQK + nx; - //unsigned int kt = KQK; - //unsigned int kb = KQK + nxny; - //unsigned int ksw = KQK + nx + 1; - //unsigned int kne = KQK; - //unsigned int kse = KQK + nx; - //unsigned int knw = KQK + 1; - //unsigned int kbw = KQK + nxny + 1; - //unsigned int kte = KQK; - //unsigned int kbe = KQK + nxny; - //unsigned int ktw = KQK + 1; - //unsigned int kbs = KQK + nxny + nx; - //unsigned int ktn = KQK; - //unsigned int kbn = KQK + nxny; - //unsigned int kts = KQK + nx; - //unsigned int ktse = KQK + nx; - //unsigned int kbnw = KQK + nxny + 1; - //unsigned int ktnw = KQK + 1; - //unsigned int kbse = KQK + nxny + nx; - //unsigned int ktsw = KQK + nx + 1; - //unsigned int kbne = KQK + nxny; - //unsigned int ktne = KQK; - //unsigned int kbsw = KQK + nxny + nx + 1; - //////////////////////////////////////////////////////////////////////////////// - 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[DIR_P00])[ke ]; - f_E = (D.f[DIR_M00])[kw ]; - f_S = (D.f[DIR_0P0])[kn ]; - f_N = (D.f[DIR_0M0])[ks ]; - f_B = (D.f[DIR_00P])[kt ]; - f_T = (D.f[DIR_00M])[kb ]; - f_SW = (D.f[DIR_PP0])[kne ]; - f_NE = (D.f[DIR_MM0])[ksw ]; - f_NW = (D.f[DIR_PM0])[kse ]; - f_SE = (D.f[DIR_MP0])[knw ]; - f_BW = (D.f[DIR_P0P])[kte ]; - f_TE = (D.f[DIR_M0M])[kbw ]; - f_TW = (D.f[DIR_P0M])[kbe ]; - f_BE = (D.f[DIR_M0P])[ktw ]; - f_BS = (D.f[DIR_0PP])[ktn ]; - f_TN = (D.f[DIR_0MM])[kbs ]; - f_TS = (D.f[DIR_0PM])[kbn ]; - f_BN = (D.f[DIR_0MP])[kts ]; - f_BSW = (D.f[DIR_PPP])[ktne ]; - f_BNE = (D.f[DIR_MMP])[ktsw ]; - f_BNW = (D.f[DIR_PMP])[ktse ]; - f_BSE = (D.f[DIR_MPP])[ktnw ]; - f_TSW = (D.f[DIR_PPM])[kbne ]; - f_TNE = (D.f[DIR_MMM])[kbsw ]; - f_TNW = (D.f[DIR_PMM])[kbse ]; - f_TSE = (D.f[DIR_MPM])[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[DIR_000])[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); - - - 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); - - 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); - - ////////////////////////////////////////////////////////////////////////// - if (isEvenTimestep==false) - { - D.f[DIR_P00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_M00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_PMP * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_MPM * numberOfLBnodes]; - } - else - { - D.f[DIR_M00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_P00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_MPM * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_PMP * numberOfLBnodes]; - } - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //Test - //(D.f[DIR_000])[k]=c1o10; - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - //ToDo anders Klammern - - q = q_dirE[k]; - if (q>=c0o1 && q<=c1o1) - { - feq=c2o27* (drho/*+three*( vx1 )*/+c9o2*( vx1 )*( vx1 )-cu_sq); - (D.f[DIR_M00])[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[DIR_M00])[kw]=zero; - } - - q = q_dirW[k]; - if (q>=c0o1 && q<=c1o1) - { - feq=c2o27* (drho/*+three*(-vx1 )*/+c9o2*(-vx1 )*(-vx1 )-cu_sq); - (D.f[DIR_P00])[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[DIR_P00])[ke]=zero; - } - - q = q_dirN[k]; - if (q>=c0o1 && q<=c1o1) - { - feq=c2o27* (drho/*+three*( vx2 )*/+c9o2*( vx2 )*( vx2 )-cu_sq); - (D.f[DIR_0M0])[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[DIR_0M0])[ks]=zero; - } - - q = q_dirS[k]; - if (q>=c0o1 && q<=c1o1) - { - feq=c2o27* (drho/*+three*( -vx2 )*/+c9o2*( -vx2 )*( -vx2 )-cu_sq); - (D.f[DIR_0P0])[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[DIR_0P0])[kn]=zero; - } - - q = q_dirT[k]; - if (q>=c0o1 && q<=c1o1) - { - feq=c2o27* (drho/*+three*( vx3)*/+c9o2*( vx3)*( vx3)-cu_sq); - (D.f[DIR_00M])[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[DIR_00M])[kb]=one; - } - - q = q_dirB[k]; - if (q>=c0o1 && q<=c1o1) - { - feq=c2o27* (drho/*+three*( -vx3)*/+c9o2*( -vx3)*( -vx3)-cu_sq); - (D.f[DIR_00P])[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[DIR_00P])[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[DIR_MM0])[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[DIR_MM0])[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[DIR_PP0])[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[DIR_PP0])[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[DIR_MP0])[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[DIR_MP0])[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[DIR_PM0])[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[DIR_PM0])[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[DIR_M0M])[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[DIR_M0M])[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[DIR_P0P])[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[DIR_P0P])[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[DIR_M0P])[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[DIR_M0P])[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[DIR_P0M])[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[DIR_P0M])[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[DIR_0MM])[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[DIR_0MM])[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[DIR_0PP])[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[DIR_0PP])[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[DIR_0MP])[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[DIR_0MP])[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[DIR_0PM])[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[DIR_0PM])[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[DIR_MMM])[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[DIR_MMM])[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[DIR_PPP])[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[DIR_PPP])[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[DIR_MMP])[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[DIR_MMP])[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[DIR_PPM])[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[DIR_PPM])[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[DIR_MPM])[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[DIR_MPM])[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[DIR_PMP])[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[DIR_PMP])[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[DIR_MPP])[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[DIR_MPP])[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[DIR_PMM])[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[DIR_PMM])[kbse]=zero; - } - } -} -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//////////////////////////////////////////////////////////////////////////////// -__global__ void PropellerBC( - unsigned int* neighborX, - unsigned int* neighborY, - unsigned int* neighborZ, - real* rho, - real* ux, - real* uy, - real* uz, - int* k_Q, - unsigned int size_Prop, - unsigned long long numberOfLBnodes, - unsigned int* bcMatD, - real* DD, - bool EvenOrOdd) -{ - //////////////////////////////////////////////////////////////////////////////// - const unsigned x = threadIdx.x; // Globaler x-Index - const unsigned y = blockIdx.x; // Globaler y-Index - const unsigned z = blockIdx.y; // Globaler z-Index - - const unsigned nx = blockDim.x; - const unsigned ny = gridDim.x; - - const unsigned k = nx*(ny*z + y) + x; - ////////////////////////////////////////////////////////////////////////// - - if(k<size_Prop) - { - //////////////////////////////////////////////////////////////////////////////// - Distributions27 D; - if (EvenOrOdd==true) - { - D.f[DIR_P00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_M00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_PMP * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_MPM * numberOfLBnodes]; - } - else - { - D.f[DIR_M00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_P00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_PMP * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_MPM * numberOfLBnodes]; - } - ////////////////////////////////////////////////////////////////////////// - unsigned int KQK = k_Q[k]; - unsigned int BC = bcMatD[KQK]; - if( (BC != GEO_SOLID) && (BC != GEO_VOID)) - { - ////////////////////////////////////////////////////////////////////////// - real vx1 = ux[k]; - real vx2 = uy[k]; - real vx3 = uz[k]; - //real vx1 = -c1o100; - //real vx2 = zero; - //real vx3 = zero; - ////////////////////////////////////////////////////////////////////////// - //index - ////////////////////////////////////////////////////////////////////////// - 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 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[DIR_000])[kzero]; - f_E = (D.f[DIR_P00])[ke ]; - f_W = (D.f[DIR_M00])[kw ]; - f_N = (D.f[DIR_0P0])[kn ]; - f_S = (D.f[DIR_0M0])[ks ]; - f_T = (D.f[DIR_00P])[kt ]; - f_B = (D.f[DIR_00M])[kb ]; - f_NE = (D.f[DIR_PP0])[kne ]; - f_SW = (D.f[DIR_MM0])[ksw ]; - f_SE = (D.f[DIR_PM0])[kse ]; - f_NW = (D.f[DIR_MP0])[knw ]; - f_TE = (D.f[DIR_P0P])[kte ]; - f_BW = (D.f[DIR_M0M])[kbw ]; - f_BE = (D.f[DIR_P0M])[kbe ]; - f_TW = (D.f[DIR_M0P])[ktw ]; - f_TN = (D.f[DIR_0PP])[ktn ]; - f_BS = (D.f[DIR_0MM])[kbs ]; - f_BN = (D.f[DIR_0PM])[kbn ]; - f_TS = (D.f[DIR_0MP])[kts ]; - f_TNE = (D.f[DIR_PPP])[ktne ]; - f_BSW = (D.f[DIR_MMM])[kbsw ]; - f_BNE = (D.f[DIR_PPM])[kbne ]; - f_TSW = (D.f[DIR_MMP])[ktsw ]; - f_TSE = (D.f[DIR_PMP])[ktse ]; - f_BNW = (D.f[DIR_MPM])[kbnw ]; - f_BSE = (D.f[DIR_PMM])[kbse ]; - f_TNW = (D.f[DIR_MPP])[ktnw ]; - //f_W = (D.f[DIR_P00])[ke ]; - //f_E = (D.f[DIR_M00])[kw ]; - //f_S = (D.f[DIR_0P0])[kn ]; - //f_N = (D.f[DIR_0M0])[ks ]; - //f_B = (D.f[DIR_00P])[kt ]; - //f_T = (D.f[DIR_00M])[kb ]; - //f_SW = (D.f[DIR_PP0])[kne ]; - //f_NE = (D.f[DIR_MM0])[ksw ]; - //f_NW = (D.f[DIR_PM0])[kse ]; - //f_SE = (D.f[DIR_MP0])[knw ]; - //f_BW = (D.f[DIR_P0P])[kte ]; - //f_TE = (D.f[DIR_M0M])[kbw ]; - //f_TW = (D.f[DIR_P0M])[kbe ]; - //f_BE = (D.f[DIR_M0P])[ktw ]; - //f_BS = (D.f[DIR_0PP])[ktn ]; - //f_TN = (D.f[DIR_0MM])[kbs ]; - //f_TS = (D.f[DIR_0PM])[kbn ]; - //f_BN = (D.f[DIR_0MP])[kts ]; - //f_BSW = (D.f[DIR_PPP])[ktne ]; - //f_TNE = (D.f[DIR_MMM])[kbsw ]; - //f_TSW = (D.f[DIR_PPM])[kbne ]; - //f_BNE = (D.f[DIR_MMP])[ktsw ]; - //f_BNW = (D.f[DIR_PMP])[ktse ]; - //f_TSE = (D.f[DIR_MPM])[kbnw ]; - //f_TNW = (D.f[DIR_PMM])[kbse ]; - //f_BSE = (D.f[DIR_MPP])[ktnw ]; - ////////////////////////////////////////////////////////////////////////////////// - real vxo1, vxo2, vxo3, drho; - drho = /*zero;*/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 + f_ZERO; - - vxo1 = (((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); - - - vxo2 = ((-(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); - - vxo3 = (((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 cusq=c3o2*(vxo1*vxo1+vxo2*vxo2+vxo3*vxo3); - //vx1 = vx1 * two - vxo1; - //vx2 = vx2 * two - vxo2; - //vx3 = vx3 * two - vxo3; - real cusq2=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3); - - //f_ZERO = ((one+drho) * ( c8over27 *(one+(-cusq2)))) - c8over27; - //f_E = ((one+drho) * ( c2over27 *(one+three*( vx1 )+c9over2*( vx1 )*( vx1 )-cusq2))) - c2over27 ; - //f_W = ((one+drho) * ( c2over27 *(one+three*(-vx1 )+c9over2*(-vx1 )*(-vx1 )-cusq2))) - c2over27 ; - //f_N = ((one+drho) * ( c2over27 *(one+three*( vx2 )+c9over2*( vx2 )*( vx2 )-cusq2))) - c2over27 ; - //f_S = ((one+drho) * ( c2over27 *(one+three*( -vx2 )+c9over2*( -vx2 )*( -vx2 )-cusq2))) - c2over27 ; - //f_T = ((one+drho) * ( c2over27 *(one+three*( vx3)+c9over2*( vx3)*( vx3)-cusq2))) - c2over27 ; - //f_B = ((one+drho) * ( c2over27 *(one+three*( -vx3)+c9over2*( -vx3)*( -vx3)-cusq2))) - c2over27 ; - //f_NE = ((one+drho) * ( c1over54 *(one+three*( vx1+vx2 )+c9over2*( vx1+vx2 )*( vx1+vx2 )-cusq2))) - c1over54 ; - //f_SW = ((one+drho) * ( c1over54 *(one+three*(-vx1-vx2 )+c9over2*(-vx1-vx2 )*(-vx1-vx2 )-cusq2))) - c1over54 ; - //f_SE = ((one+drho) * ( c1over54 *(one+three*( vx1-vx2 )+c9over2*( vx1-vx2 )*( vx1-vx2 )-cusq2))) - c1over54 ; - //f_NW = ((one+drho) * ( c1over54 *(one+three*(-vx1+vx2 )+c9over2*(-vx1+vx2 )*(-vx1+vx2 )-cusq2))) - c1over54 ; - //f_TE = ((one+drho) * ( c1over54 *(one+three*( vx1 +vx3)+c9over2*( vx1 +vx3)*( vx1 +vx3)-cusq2))) - c1over54 ; - //f_BW = ((one+drho) * ( c1over54 *(one+three*(-vx1 -vx3)+c9over2*(-vx1 -vx3)*(-vx1 -vx3)-cusq2))) - c1over54 ; - //f_BE = ((one+drho) * ( c1over54 *(one+three*( vx1 -vx3)+c9over2*( vx1 -vx3)*( vx1 -vx3)-cusq2))) - c1over54 ; - //f_TW = ((one+drho) * ( c1over54 *(one+three*(-vx1 +vx3)+c9over2*(-vx1 +vx3)*(-vx1 +vx3)-cusq2))) - c1over54 ; - //f_TN = ((one+drho) * ( c1over54 *(one+three*( vx2+vx3)+c9over2*( vx2+vx3)*( vx2+vx3)-cusq2))) - c1over54 ; - //f_BS = ((one+drho) * ( c1over54 *(one+three*( -vx2-vx3)+c9over2*( -vx2-vx3)*( -vx2-vx3)-cusq2))) - c1over54 ; - //f_BN = ((one+drho) * ( c1over54 *(one+three*( vx2-vx3)+c9over2*( vx2-vx3)*( vx2-vx3)-cusq2))) - c1over54 ; - //f_TS = ((one+drho) * ( c1over54 *(one+three*( -vx2+vx3)+c9over2*( -vx2+vx3)*( -vx2+vx3)-cusq2))) - c1over54 ; - //f_TNE = ((one+drho) * ( c1over216*(one+three*( vx1+vx2+vx3)+c9over2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cusq2))) - c1over216; - //f_BSW = ((one+drho) * ( c1over216*(one+three*(-vx1-vx2-vx3)+c9over2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cusq2))) - c1over216; - //f_BNE = ((one+drho) * ( c1over216*(one+three*( vx1+vx2-vx3)+c9over2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cusq2))) - c1over216; - //f_TSW = ((one+drho) * ( c1over216*(one+three*(-vx1-vx2+vx3)+c9over2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cusq2))) - c1over216; - //f_TSE = ((one+drho) * ( c1over216*(one+three*( vx1-vx2+vx3)+c9over2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cusq2))) - c1over216; - //f_BNW = ((one+drho) * ( c1over216*(one+three*(-vx1+vx2-vx3)+c9over2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cusq2))) - c1over216; - //f_BSE = ((one+drho) * ( c1over216*(one+three*( vx1-vx2-vx3)+c9over2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cusq2))) - c1over216; - //f_TNW = ((one+drho) * ( c1over216*(one+three*(-vx1+vx2+vx3)+c9over2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cusq2))) - c1over216; - f_ZERO = f_ZERO + ((c1o1+drho) * (- c8o27* (-cusq) + c8o27* (-cusq2))); - f_E = f_E + ((c1o1+drho) * (- c2o27* (c3o1*( vxo1 )+c9o2*( vxo1 )*( vxo1 )-cusq) + c2o27* (c3o1*( vx1 )+c9o2*( vx1 )*( vx1 )-cusq2))); - f_W = f_W + ((c1o1+drho) * (- c2o27* (c3o1*(-vxo1 )+c9o2*(-vxo1 )*(-vxo1 )-cusq) + c2o27* (c3o1*(-vx1 )+c9o2*(-vx1 )*(-vx1 )-cusq2))); - f_N = f_N + ((c1o1+drho) * (- c2o27* (c3o1*( vxo2 )+c9o2*( vxo2 )*( vxo2 )-cusq) + c2o27* (c3o1*( vx2 )+c9o2*( vx2 )*( vx2 )-cusq2))); - f_S = f_S + ((c1o1+drho) * (- c2o27* (c3o1*( -vxo2 )+c9o2*( -vxo2 )*( -vxo2 )-cusq) + c2o27* (c3o1*( -vx2 )+c9o2*( -vx2 )*( -vx2 )-cusq2))); - f_T = f_T + ((c1o1+drho) * (- c2o27* (c3o1*( vxo3)+c9o2*( vxo3)*( vxo3)-cusq) + c2o27* (c3o1*( vx3)+c9o2*( vx3)*( vx3)-cusq2))); - f_B = f_B + ((c1o1+drho) * (- c2o27* (c3o1*( -vxo3)+c9o2*( -vxo3)*( -vxo3)-cusq) + c2o27* (c3o1*( -vx3)+c9o2*( -vx3)*( -vx3)-cusq2))); - f_NE = f_NE + ((c1o1+drho) * (- c1o54* (c3o1*( vxo1+vxo2 )+c9o2*( vxo1+vxo2 )*( vxo1+vxo2 )-cusq) + c1o54* (c3o1*( vx1+vx2 )+c9o2*( vx1+vx2 )*( vx1+vx2 )-cusq2))); - f_SW = f_SW + ((c1o1+drho) * (- c1o54* (c3o1*(-vxo1-vxo2 )+c9o2*(-vxo1-vxo2 )*(-vxo1-vxo2 )-cusq) + c1o54* (c3o1*(-vx1-vx2 )+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cusq2))); - f_SE = f_SE + ((c1o1+drho) * (- c1o54* (c3o1*( vxo1-vxo2 )+c9o2*( vxo1-vxo2 )*( vxo1-vxo2 )-cusq) + c1o54* (c3o1*( vx1-vx2 )+c9o2*( vx1-vx2 )*( vx1-vx2 )-cusq2))); - f_NW = f_NW + ((c1o1+drho) * (- c1o54* (c3o1*(-vxo1+vxo2 )+c9o2*(-vxo1+vxo2 )*(-vxo1+vxo2 )-cusq) + c1o54* (c3o1*(-vx1+vx2 )+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cusq2))); - f_TE = f_TE + ((c1o1+drho) * (- c1o54* (c3o1*( vxo1 +vxo3)+c9o2*( vxo1 +vxo3)*( vxo1 +vxo3)-cusq) + c1o54* (c3o1*( vx1 +vx3)+c9o2*( vx1 +vx3)*( vx1 +vx3)-cusq2))); - f_BW = f_BW + ((c1o1+drho) * (- c1o54* (c3o1*(-vxo1 -vxo3)+c9o2*(-vxo1 -vxo3)*(-vxo1 -vxo3)-cusq) + c1o54* (c3o1*(-vx1 -vx3)+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cusq2))); - f_BE = f_BE + ((c1o1+drho) * (- c1o54* (c3o1*( vxo1 -vxo3)+c9o2*( vxo1 -vxo3)*( vxo1 -vxo3)-cusq) + c1o54* (c3o1*( vx1 -vx3)+c9o2*( vx1 -vx3)*( vx1 -vx3)-cusq2))); - f_TW = f_TW + ((c1o1+drho) * (- c1o54* (c3o1*(-vxo1 +vxo3)+c9o2*(-vxo1 +vxo3)*(-vxo1 +vxo3)-cusq) + c1o54* (c3o1*(-vx1 +vx3)+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cusq2))); - f_TN = f_TN + ((c1o1+drho) * (- c1o54* (c3o1*( vxo2+vxo3)+c9o2*( vxo2+vxo3)*( vxo2+vxo3)-cusq) + c1o54* (c3o1*( vx2+vx3)+c9o2*( vx2+vx3)*( vx2+vx3)-cusq2))); - f_BS = f_BS + ((c1o1+drho) * (- c1o54* (c3o1*( -vxo2-vxo3)+c9o2*( -vxo2-vxo3)*( -vxo2-vxo3)-cusq) + c1o54* (c3o1*( -vx2-vx3)+c9o2*( -vx2-vx3)*( -vx2-vx3)-cusq2))); - f_BN = f_BN + ((c1o1+drho) * (- c1o54* (c3o1*( vxo2-vxo3)+c9o2*( vxo2-vxo3)*( vxo2-vxo3)-cusq) + c1o54* (c3o1*( vx2-vx3)+c9o2*( vx2-vx3)*( vx2-vx3)-cusq2))); - f_TS = f_TS + ((c1o1+drho) * (- c1o54* (c3o1*( -vxo2+vxo3)+c9o2*( -vxo2+vxo3)*( -vxo2+vxo3)-cusq) + c1o54* (c3o1*( -vx2+vx3)+c9o2*( -vx2+vx3)*( -vx2+vx3)-cusq2))); - f_TNE = f_TNE + ((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_BSW = f_BSW + ((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_BNE = f_BNE + ((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_TSW = f_TSW + ((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_TSE = f_TSE + ((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_BNW = f_BNW + ((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_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[DIR_000])[kzero] = f_ZERO; - (D.f[DIR_P00])[ke ] = f_E ; // f_W ;// - (D.f[DIR_M00])[kw ] = f_W ; // f_E ;// - (D.f[DIR_0P0])[kn ] = f_N ; // f_S ;// - (D.f[DIR_0M0])[ks ] = f_S ; // f_N ;// - (D.f[DIR_00P])[kt ] = f_T ; // f_B ;// - (D.f[DIR_00M])[kb ] = f_B ; // f_T ;// - (D.f[DIR_PP0])[kne ] = f_NE ; // f_SW ;// - (D.f[DIR_MM0])[ksw ] = f_SW ; // f_NE ;// - (D.f[DIR_PM0])[kse ] = f_SE ; // f_NW ;// - (D.f[DIR_MP0])[knw ] = f_NW ; // f_SE ;// - (D.f[DIR_P0P])[kte ] = f_TE ; // f_BW ;// - (D.f[DIR_M0M])[kbw ] = f_BW ; // f_TE ;// - (D.f[DIR_P0M])[kbe ] = f_BE ; // f_TW ;// - (D.f[DIR_M0P])[ktw ] = f_TW ; // f_BE ;// - (D.f[DIR_0PP])[ktn ] = f_TN ; // f_BS ;// - (D.f[DIR_0MM])[kbs ] = f_BS ; // f_TN ;// - (D.f[DIR_0PM])[kbn ] = f_BN ; // f_TS ;// - (D.f[DIR_0MP])[kts ] = f_TS ; // f_BN ;// - (D.f[DIR_PPP])[ktne ] = f_TNE ; // f_BSW ;// - (D.f[DIR_MMM])[kbsw ] = f_BSW ; // f_BNE ;// - (D.f[DIR_PPM])[kbne ] = f_BNE ; // f_BNW ;// - (D.f[DIR_MMP])[ktsw ] = f_TSW ; // f_BSE ;// - (D.f[DIR_PMP])[ktse ] = f_TSE ; // f_TSW ;// - (D.f[DIR_MPM])[kbnw ] = f_BNW ; // f_TNE ;// - (D.f[DIR_PMM])[kbse ] = f_BSE ; // f_TNW ;// - (D.f[DIR_MPP])[ktnw ] = f_TNW ; // f_TSE ;// - - ////////////////////////////////////////////////////////////////////////// - ////(D.f[DIR_000])[kzero] = c8over27* (drho-cu_sq); - //(D.f[DIR_P00])[ke ] = three*c2over27* ( vx1 ); //six - //(D.f[DIR_M00])[kw ] = three*c2over27* (-vx1 ); //six - //(D.f[DIR_0P0])[kn ] = three*c2over27* ( vx2 ); //six - //(D.f[DIR_0M0])[ks ] = three*c2over27* ( -vx2 ); //six - //(D.f[DIR_00P])[kt ] = three*c2over27* ( vx3); //six - //(D.f[DIR_00M])[kb ] = three*c2over27* ( -vx3); //six - //(D.f[DIR_PP0])[kne ] = three*c1over54* ( vx1+vx2 ); //six - //(D.f[DIR_MM0])[ksw ] = three*c1over54* (-vx1-vx2 ); //six - //(D.f[DIR_PM0])[kse ] = three*c1over54* ( vx1-vx2 ); //six - //(D.f[DIR_MP0])[knw ] = three*c1over54* (-vx1+vx2 ); //six - //(D.f[DIR_P0P])[kte ] = three*c1over54* ( vx1 +vx3); //six - //(D.f[DIR_M0M])[kbw ] = three*c1over54* (-vx1 -vx3); //six - //(D.f[DIR_P0M])[kbe ] = three*c1over54* ( vx1 -vx3); //six - //(D.f[DIR_M0P])[ktw ] = three*c1over54* (-vx1 +vx3); //six - //(D.f[DIR_0PP])[ktn ] = three*c1over54* ( vx2+vx3); //six - //(D.f[DIR_0MM])[kbs ] = three*c1over54* ( -vx2-vx3); //six - //(D.f[DIR_0PM])[kbn ] = three*c1over54* ( vx2-vx3); //six - //(D.f[DIR_0MP])[kts ] = three*c1over54* ( -vx2+vx3); //six - //(D.f[DIR_PPP])[ktne ] = three*c1over216*( vx1+vx2+vx3); //six - //(D.f[DIR_MMM])[kbsw ] = three*c1over216*(-vx1-vx2-vx3); //six - //(D.f[DIR_PPM])[kbne ] = three*c1over216*( vx1+vx2-vx3); //six - //(D.f[DIR_MMP])[ktsw ] = three*c1over216*(-vx1-vx2+vx3); //six - //(D.f[DIR_PMP])[ktse ] = three*c1over216*( vx1-vx2+vx3); //six - //(D.f[DIR_MPM])[kbnw ] = three*c1over216*(-vx1+vx2-vx3); //six - //(D.f[DIR_PMM])[kbse ] = three*c1over216*( vx1-vx2-vx3); //six - //(D.f[DIR_MPP])[ktnw ] = three*c1over216*(-vx1+vx2+vx3); //six - //(D.f[DIR_000])[kzero] = c8over27* (drho-cu_sq); - //(D.f[DIR_P00])[ke ] = c2over27* (drho+three*( vx1 )+c9over2*( vx1 )*( vx1 )-cu_sq); - //(D.f[DIR_M00])[kw ] = c2over27* (drho+three*(-vx1 )+c9over2*(-vx1 )*(-vx1 )-cu_sq); - //(D.f[DIR_0P0])[kn ] = c2over27* (drho+three*( vx2 )+c9over2*( vx2 )*( vx2 )-cu_sq); - //(D.f[DIR_0M0])[ks ] = c2over27* (drho+three*( -vx2 )+c9over2*( -vx2 )*( -vx2 )-cu_sq); - //(D.f[DIR_00P])[kt ] = c2over27* (drho+three*( vx3)+c9over2*( vx3)*( vx3)-cu_sq); - //(D.f[DIR_00M])[kb ] = c2over27* (drho+three*( -vx3)+c9over2*( -vx3)*( -vx3)-cu_sq); - //(D.f[DIR_PP0])[kne ] = c1over54* (drho+three*( vx1+vx2 )+c9over2*( vx1+vx2 )*( vx1+vx2 )-cu_sq); - //(D.f[DIR_MM0])[ksw ] = c1over54* (drho+three*(-vx1-vx2 )+c9over2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq); - //(D.f[DIR_PM0])[kse ] = c1over54* (drho+three*( vx1-vx2 )+c9over2*( vx1-vx2 )*( vx1-vx2 )-cu_sq); - //(D.f[DIR_MP0])[knw ] = c1over54* (drho+three*(-vx1+vx2 )+c9over2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq); - //(D.f[DIR_P0P])[kte ] = c1over54* (drho+three*( vx1 +vx3)+c9over2*( vx1 +vx3)*( vx1 +vx3)-cu_sq); - //(D.f[DIR_M0M])[kbw ] = c1over54* (drho+three*(-vx1 -vx3)+c9over2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq); - //(D.f[DIR_P0M])[kbe ] = c1over54* (drho+three*( vx1 -vx3)+c9over2*( vx1 -vx3)*( vx1 -vx3)-cu_sq); - //(D.f[DIR_M0P])[ktw ] = c1over54* (drho+three*(-vx1 +vx3)+c9over2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq); - //(D.f[DIR_0PP])[ktn ] = c1over54* (drho+three*( vx2+vx3)+c9over2*( vx2+vx3)*( vx2+vx3)-cu_sq); - //(D.f[DIR_0MM])[kbs ] = c1over54* (drho+three*( -vx2-vx3)+c9over2*( -vx2-vx3)*( -vx2-vx3)-cu_sq); - //(D.f[DIR_0PM])[kbn ] = c1over54* (drho+three*( vx2-vx3)+c9over2*( vx2-vx3)*( vx2-vx3)-cu_sq); - //(D.f[DIR_0MP])[kts ] = c1over54* (drho+three*( -vx2+vx3)+c9over2*( -vx2+vx3)*( -vx2+vx3)-cu_sq); - //(D.f[DIR_PPP])[ktne ] = c1over216*(drho+three*( vx1+vx2+vx3)+c9over2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq); - //(D.f[DIR_MMM])[kbsw ] = c1over216*(drho+three*(-vx1-vx2-vx3)+c9over2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq); - //(D.f[DIR_PPM])[kbne ] = c1over216*(drho+three*( vx1+vx2-vx3)+c9over2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq); - //(D.f[DIR_MMP])[ktsw ] = c1over216*(drho+three*(-vx1-vx2+vx3)+c9over2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq); - //(D.f[DIR_PMP])[ktse ] = c1over216*(drho+three*( vx1-vx2+vx3)+c9over2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq); - //(D.f[DIR_MPM])[kbnw ] = c1over216*(drho+three*(-vx1+vx2-vx3)+c9over2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq); - //(D.f[DIR_PMM])[kbse ] = c1over216*(drho+three*( vx1-vx2-vx3)+c9over2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq); - //(D.f[DIR_MPP])[ktnw ] = c1over216*(drho+three*(-vx1+vx2+vx3)+c9over2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq); - } - } -} -////////////////////////////////////////////////////////////////////////// - - diff --git a/src/gpu/VirtualFluids_GPU/GPU/WallFunction.cu b/src/gpu/VirtualFluids_GPU/GPU/WallFunction.cu deleted file mode 100644 index 6de196e1788494b20c24a73cb9ec02a360f868ea..0000000000000000000000000000000000000000 --- a/src/gpu/VirtualFluids_GPU/GPU/WallFunction.cu +++ /dev/null @@ -1,520 +0,0 @@ -/* Device code */ -#include "LBM/LB.h" -#include "lbm/constants/D3Q27.h" -#include <basics/constants/NumericConstants.h> - -using namespace vf::basics::constant; -using namespace vf::lbm::dir; - - -////////////////////////////////////////////////////////////////////////////// -__global__ void WallFunction27( - real* vx, - real* vy, - real* vz, - real* DD, - int* k_Q, - real* QQ, - unsigned int numberOfBCnodes, - real om1, - unsigned int* neighborX, - unsigned int* neighborY, - unsigned int* neighborZ, - unsigned long long numberOfLBnodes, - bool isEvenTimestep) -{ - Distributions27 D; - if (isEvenTimestep==true) - { - D.f[DIR_P00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_M00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_PMP * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_MPM * numberOfLBnodes]; - } - else - { - D.f[DIR_M00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_P00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_MPM * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_PMP * numberOfLBnodes]; - } - //////////////////////////////////////////////////////////////////////////////// - const unsigned x = threadIdx.x; // Globaler x-Index - const unsigned y = blockIdx.x; // Globaler y-Index - const unsigned z = blockIdx.y; // Globaler z-Index - - const unsigned nx = blockDim.x; - const unsigned ny = gridDim.x; - - const unsigned k = nx*(ny*z + y) + x; - ////////////////////////////////////////////////////////////////////////// - - if(k<numberOfBCnodes) - { - //////////////////////////////////////////////////////////////////////////////// - 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) - //////////////////////////////////////////////////////////////////////////////// - //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[DIR_P00 * numberOfBCnodes]; - //q_dirW = &QQ[DIR_M00 * numberOfBCnodes]; - //q_dirN = &QQ[DIR_0P0 * numberOfBCnodes]; - //q_dirS = &QQ[DIR_0M0 * numberOfBCnodes]; - //q_dirT = &QQ[DIR_00P * numberOfBCnodes]; - //q_dirB = &QQ[DIR_00M * numberOfBCnodes]; - //q_dirNE = &QQ[DIR_PP0 * numberOfBCnodes]; - //q_dirSW = &QQ[DIR_MM0 * numberOfBCnodes]; - //q_dirSE = &QQ[DIR_PM0 * numberOfBCnodes]; - //q_dirNW = &QQ[DIR_MP0 * numberOfBCnodes]; - //q_dirTE = &QQ[DIR_P0P * numberOfBCnodes]; - //q_dirBW = &QQ[DIR_M0M * numberOfBCnodes]; - //q_dirBE = &QQ[DIR_P0M * numberOfBCnodes]; - //q_dirTW = &QQ[DIR_M0P * numberOfBCnodes]; - //q_dirTN = &QQ[DIR_0PP * numberOfBCnodes]; - //q_dirBS = &QQ[DIR_0MM * numberOfBCnodes]; - //q_dirBN = &QQ[DIR_0PM * numberOfBCnodes]; - //q_dirTS = &QQ[DIR_0MP * numberOfBCnodes]; - //q_dirTNE = &QQ[DIR_PPP * numberOfBCnodes]; - //q_dirTSW = &QQ[DIR_MMP * numberOfBCnodes]; - //q_dirTSE = &QQ[DIR_PMP * numberOfBCnodes]; - //q_dirTNW = &QQ[DIR_MPP * numberOfBCnodes]; - //q_dirBNE = &QQ[DIR_PPM * numberOfBCnodes]; - //q_dirBSW = &QQ[DIR_MMM * numberOfBCnodes]; - //q_dirBSE = &QQ[DIR_PMM * numberOfBCnodes]; - //q_dirBNW = &QQ[DIR_MPM * 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]; - 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 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[DIR_P00])[ke ]; - f_E = (D.f[DIR_M00])[kw ]; - f_S = (D.f[DIR_0P0])[kn ]; - f_N = (D.f[DIR_0M0])[ks ]; - f_B = (D.f[DIR_00P])[kt ]; - f_T = (D.f[DIR_00M])[kb ]; - f_SW = (D.f[DIR_PP0])[kne ]; - f_NE = (D.f[DIR_MM0])[ksw ]; - f_NW = (D.f[DIR_PM0])[kse ]; - f_SE = (D.f[DIR_MP0])[knw ]; - f_BW = (D.f[DIR_P0P])[kte ]; - f_TE = (D.f[DIR_M0M])[kbw ]; - f_TW = (D.f[DIR_P0M])[kbe ]; - f_BE = (D.f[DIR_M0P])[ktw ]; - f_BS = (D.f[DIR_0PP])[ktn ]; - f_TN = (D.f[DIR_0MM])[kbs ]; - f_TS = (D.f[DIR_0PM])[kbn ]; - f_BN = (D.f[DIR_0MP])[kts ]; - f_BSW = (D.f[DIR_PPP])[ktne ]; - f_BNE = (D.f[DIR_MMP])[ktsw ]; - f_BNW = (D.f[DIR_PMP])[ktse ]; - f_BSE = (D.f[DIR_MPP])[ktnw ]; - f_TSW = (D.f[DIR_PPM])[kbne ]; - f_TNE = (D.f[DIR_MMM])[kbsw ]; - f_TNW = (D.f[DIR_PMM])[kbse ]; - f_TSE = (D.f[DIR_MPM])[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[DIR_000])[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); - - - // 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 cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3) * (one + drho); - - real nu = c1o3 * (c1o1 / om1 - c1o2); - real qw = c1o1; - real uTau = sqrt(nu * (vx1 - VeloX) / qw); - - if (abs(uTau)/nu>11){ - uTau = vx1 * 0.41 / (log10(9.8 * uTau * qw / nu)); - - - - vx[k] = vx1 - uTau * uTau * qw / nu; - vx[k] = (vx[k]> 0.05) ? 0.05 : ((vx[k]< -0.05) ? -0.05 : vx[k] ); - } - else{ vx[k]=c0o1; } - //vy[k] = 0.01; //Test...muss wieder raus - //vz[k] = 0.01; //Test...muss wieder raus - - // ////////////////////////////////////////////////////////////////////////// - // if (isEvenTimestep==false) - // { - // D.f[DIR_P00] = &DD[DIR_P00 * size_Mat]; - // D.f[DIR_M00] = &DD[DIR_M00 * size_Mat]; - // D.f[DIR_0P0] = &DD[DIR_0P0 * size_Mat]; - // D.f[DIR_0M0] = &DD[DIR_0M0 * size_Mat]; - // D.f[DIR_00P] = &DD[DIR_00P * size_Mat]; - // D.f[DIR_00M] = &DD[DIR_00M * size_Mat]; - // D.f[DIR_PP0] = &DD[DIR_PP0 * size_Mat]; - // D.f[DIR_MM0] = &DD[DIR_MM0 * size_Mat]; - // D.f[DIR_PM0] = &DD[DIR_PM0 * size_Mat]; - // D.f[DIR_MP0] = &DD[DIR_MP0 * size_Mat]; - // D.f[DIR_P0P] = &DD[DIR_P0P * size_Mat]; - // D.f[DIR_M0M] = &DD[DIR_M0M * size_Mat]; - // D.f[DIR_P0M] = &DD[DIR_P0M * size_Mat]; - // D.f[DIR_M0P] = &DD[DIR_M0P * size_Mat]; - // D.f[DIR_0PP] = &DD[DIR_0PP * size_Mat]; - // D.f[DIR_0MM] = &DD[DIR_0MM * size_Mat]; - // D.f[DIR_0PM] = &DD[DIR_0PM * size_Mat]; - // D.f[DIR_0MP] = &DD[DIR_0MP * size_Mat]; - // D.f[DIR_000] = &DD[DIR_000 * size_Mat]; - // D.f[DIR_PPP] = &DD[DIR_PPP * size_Mat]; - // D.f[DIR_MMP] = &DD[DIR_MMP * size_Mat]; - // D.f[DIR_PMP] = &DD[DIR_PMP * size_Mat]; - // D.f[DIR_MPP] = &DD[DIR_MPP * size_Mat]; - // D.f[DIR_PPM] = &DD[DIR_PPM * size_Mat]; - // D.f[DIR_MMM] = &DD[DIR_MMM * size_Mat]; - // D.f[DIR_PMM] = &DD[DIR_PMM * size_Mat]; - // D.f[DIR_MPM] = &DD[DIR_MPM * size_Mat]; - // } - // else - // { - // D.f[DIR_M00] = &DD[DIR_P00 * size_Mat]; - // D.f[DIR_P00] = &DD[DIR_M00 * size_Mat]; - // D.f[DIR_0M0] = &DD[DIR_0P0 * size_Mat]; - // D.f[DIR_0P0] = &DD[DIR_0M0 * size_Mat]; - // D.f[DIR_00M] = &DD[DIR_00P * size_Mat]; - // D.f[DIR_00P] = &DD[DIR_00M * size_Mat]; - // D.f[DIR_MM0] = &DD[DIR_PP0 * size_Mat]; - // D.f[DIR_PP0] = &DD[DIR_MM0 * size_Mat]; - // D.f[DIR_MP0] = &DD[DIR_PM0 * size_Mat]; - // D.f[DIR_PM0] = &DD[DIR_MP0 * size_Mat]; - // D.f[DIR_M0M] = &DD[DIR_P0P * size_Mat]; - // D.f[DIR_P0P] = &DD[DIR_M0M * size_Mat]; - // D.f[DIR_M0P] = &DD[DIR_P0M * size_Mat]; - // D.f[DIR_P0M] = &DD[DIR_M0P * size_Mat]; - // D.f[DIR_0MM] = &DD[DIR_0PP * size_Mat]; - // D.f[DIR_0PP] = &DD[DIR_0MM * size_Mat]; - // D.f[DIR_0MP] = &DD[DIR_0PM * size_Mat]; - // D.f[DIR_0PM] = &DD[DIR_0MP * size_Mat]; - // D.f[DIR_000] = &DD[DIR_000 * size_Mat]; - // D.f[DIR_PPP] = &DD[DIR_MMM * size_Mat]; - // D.f[DIR_MMP] = &DD[DIR_PPM * size_Mat]; - // D.f[DIR_PMP] = &DD[DIR_MPM * size_Mat]; - // D.f[DIR_MPP] = &DD[DIR_PMM * size_Mat]; - // D.f[DIR_PPM] = &DD[DIR_MMP * size_Mat]; - // D.f[DIR_MMM] = &DD[DIR_PPP * size_Mat]; - // D.f[DIR_PMM] = &DD[DIR_MPP * size_Mat]; - // D.f[DIR_MPM] = &DD[DIR_PMP * size_Mat]; - // } - // //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - // //Test - // //(D.f[DIR_000])[k]=c1o10; - // //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - ////ToDo anders Klammern - - // q = q_dirE[k]; - // if (q>=zero && q<=one) - // { - // feq=c2over27* (drho/*+three*( vx1 )*/+c9over2*( vx1 )*( vx1 ) * (one + drho)-cu_sq); - // (D.f[DIR_M00])[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[DIR_M00])[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[DIR_P00])[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[DIR_P00])[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[DIR_0M0])[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[DIR_0M0])[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[DIR_0P0])[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[DIR_0P0])[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[DIR_00M])[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[DIR_00M])[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[DIR_00P])[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[DIR_00P])[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[DIR_MM0])[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[DIR_MM0])[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[DIR_PP0])[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[DIR_PP0])[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[DIR_MP0])[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[DIR_MP0])[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[DIR_PM0])[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[DIR_PM0])[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[DIR_M0M])[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[DIR_M0M])[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[DIR_P0P])[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[DIR_P0P])[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[DIR_M0P])[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[DIR_M0P])[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[DIR_P0M])[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[DIR_P0M])[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[DIR_0MM])[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[DIR_0MM])[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[DIR_0PP])[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[DIR_0PP])[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[DIR_0MP])[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[DIR_0MP])[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[DIR_0PM])[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[DIR_0PM])[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[DIR_MMM])[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[DIR_MMM])[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[DIR_PPP])[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[DIR_PPP])[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[DIR_MMP])[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[DIR_MMP])[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[DIR_PPM])[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[DIR_PPM])[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[DIR_MPM])[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[DIR_MPM])[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[DIR_PMP])[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[DIR_PMP])[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[DIR_MPP])[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[DIR_MPP])[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[DIR_PMM])[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[DIR_PMM])[kbse]=zero; - // } - } -} -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - - - - - - - diff --git a/src/gpu/VirtualFluids_GPU/Kernel/ADKernel.h b/src/gpu/VirtualFluids_GPU/Kernel/ADKernel.h deleted file mode 100644 index 583ef78aa459c580bb2249e4dbf920ce39e8bbb3..0000000000000000000000000000000000000000 --- a/src/gpu/VirtualFluids_GPU/Kernel/ADKernel.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef ADV_DIFF_KERNEL_H -#define ADV_DIFF_KERNEL_H - -#include "Kernel/KernelImp.h" - -class ADKernel : public KernelImp -{ - virtual void run() = 0; -}; -#endif \ No newline at end of file diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/FluidFlowCompStrategy.cpp b/src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/FluidFlowCompStrategy.cpp deleted file mode 100644 index 39a8bac0c116370f1f2c90e91469f87a2ed6b35e..0000000000000000000000000000000000000000 --- a/src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/FluidFlowCompStrategy.cpp +++ /dev/null @@ -1,24 +0,0 @@ -#include "FluidFlowCompStrategy.h" - -#include "Parameter/Parameter.h" - -std::shared_ptr<FluidFlowCompStrategy> FluidFlowCompStrategy::getInstance() -{ - static std::shared_ptr<FluidFlowCompStrategy> uniqueInstance; - if (!uniqueInstance) - uniqueInstance = std::shared_ptr<FluidFlowCompStrategy>(new FluidFlowCompStrategy()); - return uniqueInstance; -} - -bool FluidFlowCompStrategy::checkParameter(std::shared_ptr<Parameter> para) -{ - if (para->getUseWale()) - return false; - else if (!para->getCompOn()) - return false; - else - return true; -} - -FluidFlowCompStrategy::FluidFlowCompStrategy() { -} diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/FluidFlowCompStrategy.h b/src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/FluidFlowCompStrategy.h deleted file mode 100644 index c9a6675bd7a4b82442c55b23bac6f9b49b811938..0000000000000000000000000000000000000000 --- a/src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/FluidFlowCompStrategy.h +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef FLUID_FLOW_COMP_STRATEGY_H -#define FLUID_FLOW_COMP_STRATEGY_H - -#include "Kernel/Utilities/CheckParameterStrategy/CheckParameterStrategy.h" - - -class FluidFlowCompStrategy : public CheckParameterStrategy -{ -public: - static std::shared_ptr<FluidFlowCompStrategy> getInstance(); - - bool checkParameter(std::shared_ptr<Parameter> para); - -private: - FluidFlowCompStrategy(); - -}; -#endif diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Incompressible/FluidFlow/FluidFlowIncompStrategy.cpp b/src/gpu/VirtualFluids_GPU/Kernel/Incompressible/FluidFlow/FluidFlowIncompStrategy.cpp deleted file mode 100644 index 2da393a2d71cfcfe78ab2c3eef3c6989f584335d..0000000000000000000000000000000000000000 --- a/src/gpu/VirtualFluids_GPU/Kernel/Incompressible/FluidFlow/FluidFlowIncompStrategy.cpp +++ /dev/null @@ -1,24 +0,0 @@ -#include "FluidFlowIncompStrategy.h" - -#include "Parameter/Parameter.h" - -std::shared_ptr<FluidFlowIncompStrategy> FluidFlowIncompStrategy::getInstance() -{ - static std::shared_ptr<FluidFlowIncompStrategy> uniqueInstance; - if (!uniqueInstance) - uniqueInstance = std::shared_ptr<FluidFlowIncompStrategy>(new FluidFlowIncompStrategy()); - return uniqueInstance; -} - -bool FluidFlowIncompStrategy::checkParameter(std::shared_ptr<Parameter> para) -{ - if (para->getUseWale()) - return false; - else if (para->getCompOn()) - return false; - else - return true; -} - -FluidFlowIncompStrategy::FluidFlowIncompStrategy() { -} diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Incompressible/FluidFlow/FluidFlowIncompStrategy.h b/src/gpu/VirtualFluids_GPU/Kernel/Incompressible/FluidFlow/FluidFlowIncompStrategy.h deleted file mode 100644 index fd578319e163fff08290d5bd5cd3caf859c094ce..0000000000000000000000000000000000000000 --- a/src/gpu/VirtualFluids_GPU/Kernel/Incompressible/FluidFlow/FluidFlowIncompStrategy.h +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef FLUID_FLOW_INCOMP_STRATEGY_H -#define FLUID_FLOW_INCOMP_STRATEGY_H - -#include "Kernel/Utilities/CheckParameterStrategy/CheckParameterStrategy.h" - - -class FluidFlowIncompStrategy : public CheckParameterStrategy -{ -public: - static std::shared_ptr<FluidFlowIncompStrategy> getInstance(); - - bool checkParameter(std::shared_ptr<Parameter> para); - -private: - FluidFlowIncompStrategy(); - -}; -#endif \ No newline at end of file diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/AdvectionDiffusion/Compressible/Mod27/ADComp27/ADComp27.cu b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/AdvectionDiffusion/Compressible/Mod27/ADComp27/ADComp27.cu deleted file mode 100644 index 21ad7202a62a685bc18b8a0c44e093e487e8eb84..0000000000000000000000000000000000000000 --- a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/AdvectionDiffusion/Compressible/Mod27/ADComp27/ADComp27.cu +++ /dev/null @@ -1,40 +0,0 @@ -#include "ADComp27.h" - -#include "ADComp27_Device.cuh" -#include "Parameter/Parameter.h" -#include <cuda_helper/CudaGrid.h> - -std::shared_ptr<ADComp27> ADComp27::getNewInstance(std::shared_ptr<Parameter> para, int level) -{ - return std::shared_ptr<ADComp27>(new ADComp27(para, level)); -} - -void ADComp27::run() -{ - vf::cuda::CudaGrid grid = vf::cuda::CudaGrid(para->getParD(level)->numberofthreads, para->getParD(level)->numberOfNodes); - - LB_KERNEL_AD_COMP_27<<< grid.grid, grid.threads >>>( - para->getParD(level)->diffusivity, - para->getParD(level)->typeOfGridNode, - para->getParD(level)->neighborX, - para->getParD(level)->neighborY, - para->getParD(level)->neighborZ, - para->getParD(level)->distributions.f[0], - para->getParD(level)->distributionsAD.f[0], - para->getParD(level)->numberOfNodes, - para->getParD(level)->isEvenTimestep); - getLastCudaError("LB_KERNEL_AD_COMP_27 execution failed"); -} - -ADComp27::ADComp27(std::shared_ptr<Parameter> para, int level) -{ - this->para = para; - this->level = level; - - myPreProcessorTypes.push_back(InitCompAD27); - -} - -ADComp27::ADComp27() -{ -} diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/AdvectionDiffusion/Compressible/Mod27/ADComp27/ADComp27.h b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/AdvectionDiffusion/Compressible/Mod27/ADComp27/ADComp27.h deleted file mode 100644 index d1b182dd535fdb4789d1c1b80cbb4bfdd46b22df..0000000000000000000000000000000000000000 --- a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/AdvectionDiffusion/Compressible/Mod27/ADComp27/ADComp27.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifndef AD_COMP_27_H -#define AD_COMP_27_H - -#include "Kernel/ADKernel.h" - -class ADComp27 : public ADKernel -{ -public: - static std::shared_ptr<ADComp27> getNewInstance(std::shared_ptr< Parameter> para, int level); - void run(); - -private: - ADComp27(); - ADComp27(std::shared_ptr< Parameter> para, int level); -}; -#endif \ No newline at end of file diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/AdvectionDiffusion/Compressible/Mod27/ADMod27CompStrategy.cpp b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/AdvectionDiffusion/Compressible/Mod27/ADMod27CompStrategy.cpp deleted file mode 100644 index 61cf7d07bf1bcdad33bee81d8145cc90d7d4c05f..0000000000000000000000000000000000000000 --- a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/AdvectionDiffusion/Compressible/Mod27/ADMod27CompStrategy.cpp +++ /dev/null @@ -1,29 +0,0 @@ -#include "ADMod27CompStrategy.h" - -#include "Parameter/Parameter.h" - -std::shared_ptr<ADMod27CompStrategy> ADMod27CompStrategy::getInstance() -{ - std::shared_ptr<ADMod27CompStrategy> uniqueInstance; - if(!uniqueInstance) - uniqueInstance = std::shared_ptr<ADMod27CompStrategy>(new ADMod27CompStrategy()); - return uniqueInstance; -} - -bool ADMod27CompStrategy::checkParameter(std::shared_ptr<Parameter> para) -{ - if (para->getUseWale()) - return false; - else if (!para->getCompOn()) - return false; - else if (!para->getDiffOn()) - return false; - else if (para->getDiffMod() == 7) - return false; - else - return true; -} - -ADMod27CompStrategy::ADMod27CompStrategy() -{ -} diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/AdvectionDiffusion/Compressible/Mod27/ADMod27CompStrategy.h b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/AdvectionDiffusion/Compressible/Mod27/ADMod27CompStrategy.h deleted file mode 100644 index 1cdf8e04383c1087b493aa2dd4bf8c68cec7db8a..0000000000000000000000000000000000000000 --- a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/AdvectionDiffusion/Compressible/Mod27/ADMod27CompStrategy.h +++ /dev/null @@ -1,17 +0,0 @@ -#ifndef AD_MOD27_COMP_STRATEGY_H -#define AD_MOD27_COMP_STRATEGY_H - -#include "Kernel/Utilities/CheckParameterStrategy/CheckParameterStrategy.h" - -class ADMod27CompStrategy : public CheckParameterStrategy -{ -public: - static std::shared_ptr<ADMod27CompStrategy> getInstance(); - - bool checkParameter(std::shared_ptr<Parameter> para); - -private: - ADMod27CompStrategy(); - -}; -#endif \ No newline at end of file diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/AdvectionDiffusion/Compressible/Mod7/ADComp7/ADComp7.cu b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/AdvectionDiffusion/Compressible/Mod7/ADComp7/ADComp7.cu deleted file mode 100644 index fa6d378353aa5058f1b58979a517e8490d7d3916..0000000000000000000000000000000000000000 --- a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/AdvectionDiffusion/Compressible/Mod7/ADComp7/ADComp7.cu +++ /dev/null @@ -1,40 +0,0 @@ -#include "ADComp7.h" - -#include "ADComp7_Device.cuh" -#include "Parameter/Parameter.h" -#include <cuda_helper/CudaGrid.h> - -std::shared_ptr<ADComp7> ADComp7::getNewInstance(std::shared_ptr<Parameter> para, int level) -{ - return std::shared_ptr<ADComp7>(new ADComp7(para, level)); -} - -void ADComp7::run() -{ - vf::cuda::CudaGrid grid = vf::cuda::CudaGrid(para->getParD(level)->numberofthreads, para->getParD(level)->numberOfNodes); - - LB_Kernel_AD_Comp_7<<< grid.grid, grid.threads >>>( - para->getParD(level)->diffusivity, - para->getParD(level)->typeOfGridNode, - para->getParD(level)->neighborX, - para->getParD(level)->neighborY, - para->getParD(level)->neighborZ, - para->getParD(level)->distributions.f[0], - para->getParD(level)->distributionsAD7.f[0], - para->getParD(level)->numberOfNodes, - para->getParD(level)->isEvenTimestep); - getLastCudaError("LB_Kernel_AD_Comp_7 execution failed"); -} - -ADComp7::ADComp7(std::shared_ptr<Parameter> para, int level) -{ - this->para = para; - this->level = level; - - myPreProcessorTypes.push_back(InitCompAD7); - -} - -ADComp7::ADComp7() -{ -} diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/AdvectionDiffusion/Compressible/Mod7/ADComp7/ADComp7.h b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/AdvectionDiffusion/Compressible/Mod7/ADComp7/ADComp7.h deleted file mode 100644 index afabfd27f28ecb5be61d6e279bd0eb9d30990449..0000000000000000000000000000000000000000 --- a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/AdvectionDiffusion/Compressible/Mod7/ADComp7/ADComp7.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifndef AD_COMP_7_H -#define AD_COMP_7_H - -#include "Kernel/ADKernel.h" - -class ADComp7 : public ADKernel -{ -public: - static std::shared_ptr<ADComp7> getNewInstance(std::shared_ptr< Parameter> para, int level); - void run(); - -private: - ADComp7(); - ADComp7(std::shared_ptr< Parameter> para, int level); -}; -#endif \ No newline at end of file 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 deleted file mode 100644 index 075063bc6c3d260376256bd46f5669fae658a7a0..0000000000000000000000000000000000000000 --- a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/AdvectionDiffusion/Compressible/Mod7/ADComp7/ADComp7_Device.cu +++ /dev/null @@ -1,222 +0,0 @@ -#include "LBM/LB.h" -#include "lbm/constants/D3Q27.h" -#include <basics/constants/NumericConstants.h> - -using namespace vf::basics::constant; -using namespace vf::lbm::dir; - -#include "math.h" - -__global__ void LB_Kernel_AD_Comp_7(real diffusivity, - unsigned int* bcMatD, - unsigned int* neighborX, - unsigned int* neighborY, - unsigned int* neighborZ, - real* DDStart, - real* DD7, - int size_Mat, - bool EvenOrOdd) -{ - //////////////////////////////////////////////////////////////////////////////// - const unsigned x = threadIdx.x; // Globaler x-Index - const unsigned y = blockIdx.x; // Globaler y-Index - const unsigned z = blockIdx.y; // Globaler z-Index - - const unsigned nx = blockDim.x; - const unsigned ny = gridDim.x; - - const unsigned k = nx*(ny*z + y) + x; - ////////////////////////////////////////////////////////////////////////// - - if (k<size_Mat) - { - //////////////////////////////////////////////////////////////////////////////// - unsigned int BC; - BC = bcMatD[k]; - - if ((BC != GEO_SOLID) && (BC != GEO_VOID)) - { - Distributions27 D; - if (EvenOrOdd == true) - { - D.f[DIR_P00] = &DDStart[DIR_P00 * size_Mat]; - D.f[DIR_M00] = &DDStart[DIR_M00 * size_Mat]; - D.f[DIR_0P0] = &DDStart[DIR_0P0 * size_Mat]; - D.f[DIR_0M0] = &DDStart[DIR_0M0 * size_Mat]; - D.f[DIR_00P] = &DDStart[DIR_00P * size_Mat]; - D.f[DIR_00M] = &DDStart[DIR_00M * size_Mat]; - D.f[DIR_PP0] = &DDStart[DIR_PP0 * size_Mat]; - D.f[DIR_MM0] = &DDStart[DIR_MM0 * size_Mat]; - D.f[DIR_PM0] = &DDStart[DIR_PM0 * size_Mat]; - D.f[DIR_MP0] = &DDStart[DIR_MP0 * size_Mat]; - D.f[DIR_P0P] = &DDStart[DIR_P0P * size_Mat]; - D.f[DIR_M0M] = &DDStart[DIR_M0M * size_Mat]; - D.f[DIR_P0M] = &DDStart[DIR_P0M * size_Mat]; - D.f[DIR_M0P] = &DDStart[DIR_M0P * size_Mat]; - D.f[DIR_0PP] = &DDStart[DIR_0PP * size_Mat]; - D.f[DIR_0MM] = &DDStart[DIR_0MM * size_Mat]; - D.f[DIR_0PM] = &DDStart[DIR_0PM * size_Mat]; - D.f[DIR_0MP] = &DDStart[DIR_0MP * size_Mat]; - D.f[DIR_000] = &DDStart[DIR_000 * size_Mat]; - D.f[DIR_PPP] = &DDStart[DIR_PPP * size_Mat]; - D.f[DIR_MMP] = &DDStart[DIR_MMP * size_Mat]; - D.f[DIR_PMP] = &DDStart[DIR_PMP * size_Mat]; - D.f[DIR_MPP] = &DDStart[DIR_MPP * size_Mat]; - D.f[DIR_PPM] = &DDStart[DIR_PPM * size_Mat]; - D.f[DIR_MMM] = &DDStart[DIR_MMM * size_Mat]; - D.f[DIR_PMM] = &DDStart[DIR_PMM * size_Mat]; - D.f[DIR_MPM] = &DDStart[DIR_MPM * size_Mat]; - } - else - { - D.f[DIR_M00] = &DDStart[DIR_P00 * size_Mat]; - D.f[DIR_P00] = &DDStart[DIR_M00 * size_Mat]; - D.f[DIR_0M0] = &DDStart[DIR_0P0 * size_Mat]; - D.f[DIR_0P0] = &DDStart[DIR_0M0 * size_Mat]; - D.f[DIR_00M] = &DDStart[DIR_00P * size_Mat]; - D.f[DIR_00P] = &DDStart[DIR_00M * size_Mat]; - D.f[DIR_MM0] = &DDStart[DIR_PP0 * size_Mat]; - D.f[DIR_PP0] = &DDStart[DIR_MM0 * size_Mat]; - D.f[DIR_MP0] = &DDStart[DIR_PM0 * size_Mat]; - D.f[DIR_PM0] = &DDStart[DIR_MP0 * size_Mat]; - D.f[DIR_M0M] = &DDStart[DIR_P0P * size_Mat]; - D.f[DIR_P0P] = &DDStart[DIR_M0M * size_Mat]; - D.f[DIR_M0P] = &DDStart[DIR_P0M * size_Mat]; - D.f[DIR_P0M] = &DDStart[DIR_M0P * size_Mat]; - D.f[DIR_0MM] = &DDStart[DIR_0PP * size_Mat]; - D.f[DIR_0PP] = &DDStart[DIR_0MM * size_Mat]; - D.f[DIR_0MP] = &DDStart[DIR_0PM * size_Mat]; - D.f[DIR_0PM] = &DDStart[DIR_0MP * size_Mat]; - D.f[DIR_000] = &DDStart[DIR_000 * size_Mat]; - D.f[DIR_MMM] = &DDStart[DIR_PPP * size_Mat]; - D.f[DIR_PPM] = &DDStart[DIR_MMP * size_Mat]; - D.f[DIR_MPM] = &DDStart[DIR_PMP * size_Mat]; - D.f[DIR_PMM] = &DDStart[DIR_MPP * size_Mat]; - D.f[DIR_MMP] = &DDStart[DIR_PPM * size_Mat]; - D.f[DIR_PPP] = &DDStart[DIR_MMM * size_Mat]; - D.f[DIR_MPP] = &DDStart[DIR_PMM * size_Mat]; - D.f[DIR_PMP] = &DDStart[DIR_MPM * size_Mat]; - } - - Distributions7 D7; - if (EvenOrOdd == true) - { - D7.f[0] = &DD7[0 * size_Mat]; - D7.f[1] = &DD7[1 * size_Mat]; - D7.f[2] = &DD7[2 * size_Mat]; - D7.f[3] = &DD7[3 * size_Mat]; - D7.f[4] = &DD7[4 * size_Mat]; - D7.f[5] = &DD7[5 * size_Mat]; - D7.f[6] = &DD7[6 * size_Mat]; - } - else - { - D7.f[0] = &DD7[0 * size_Mat]; - D7.f[2] = &DD7[1 * size_Mat]; - D7.f[1] = &DD7[2 * size_Mat]; - D7.f[4] = &DD7[3 * size_Mat]; - D7.f[3] = &DD7[4 * size_Mat]; - D7.f[6] = &DD7[5 * size_Mat]; - D7.f[5] = &DD7[6 * size_Mat]; - } - - //////////////////////////////////////////////////////////////////////////////// - //index - unsigned int kw = neighborX[k]; - unsigned int ks = neighborY[k]; - unsigned int kb = neighborZ[k]; - unsigned int ksw = neighborY[kw]; - unsigned int kbw = neighborZ[kw]; - unsigned int kbs = neighborZ[ks]; - unsigned int kbsw = neighborZ[ksw]; - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real fW = (D.f[DIR_P00])[k];//ke - real fE = (D.f[DIR_M00])[kw]; - real fS = (D.f[DIR_0P0])[k];//kn - real fN = (D.f[DIR_0M0])[ks]; - real fB = (D.f[DIR_00P])[k];//kt - real fT = (D.f[DIR_00M])[kb]; - real fSW = (D.f[DIR_PP0])[k];//kne - real fNE = (D.f[DIR_MM0])[ksw]; - real fNW = (D.f[DIR_PM0])[ks];//kse - real fSE = (D.f[DIR_MP0])[kw];//knw - real fBW = (D.f[DIR_P0P])[k];//kte - real fTE = (D.f[DIR_M0M])[kbw]; - real fTW = (D.f[DIR_P0M])[kb];//kbe - real fBE = (D.f[DIR_M0P])[kw];//ktw - real fBS = (D.f[DIR_0PP])[k];//ktn - real fTN = (D.f[DIR_0MM])[kbs]; - real fTS = (D.f[DIR_0PM])[kb];//kbn - real fBN = (D.f[DIR_0MP])[ks];//kts - real fZERO = (D.f[DIR_000])[k];//kzero - real fBSW = (D.f[DIR_PPP])[k];//ktne - real fBNE = (D.f[DIR_MMP])[ksw];//ktsw - real fBNW = (D.f[DIR_PMP])[ks];//ktse - real fBSE = (D.f[DIR_MPP])[kw];//ktnw - real fTSW = (D.f[DIR_PPM])[kb];//kbne - real fTNE = (D.f[DIR_MMM])[kbsw]; - real fTNW = (D.f[DIR_PMM])[kbs];//kbse - real fTSE = (D.f[DIR_MPM])[kbw];//kbnw - //real fE = (D.f[DIR_P00])[k ];//ke - //real fW = (D.f[DIR_M00])[kw ]; - //real fN = (D.f[DIR_0P0])[k ];//kn - //real fS = (D.f[DIR_0M0])[ks ]; - //real fT = (D.f[DIR_00P])[k ];//kt - //real fB = (D.f[DIR_00M])[kb ]; - //real fNE = (D.f[DIR_PP0])[k ];//kne - //real fSW = (D.f[DIR_MM0])[ksw]; - //real fSE = (D.f[DIR_PM0])[ks ];//kse - //real fNW = (D.f[DIR_MP0])[kw ];//knw - //real fTE = (D.f[DIR_P0P])[k ];//kte - //real fBW = (D.f[DIR_M0M])[kbw]; - //real fBE = (D.f[DIR_P0M])[kb ];//kbe - //real fTW = (D.f[DIR_M0P])[kw ];//ktw - //real fTN = (D.f[DIR_0PP])[k ];//ktn - //real fBS = (D.f[DIR_0MM])[kbs]; - //real fBN = (D.f[DIR_0PM])[kb ];//kbn - //real fTS = (D.f[DIR_0MP])[ks ];//kts - //real fZERO = (D.f[DIR_000])[k ];//kzero - //real fTNE = (D.f[DIR_PPP])[k ];//ktne - //real fTSW = (D.f[DIR_MMP])[ksw];//ktsw - //real fTSE = (D.f[DIR_PMP])[ks ];//ktse - //real fTNW = (D.f[DIR_MPP])[kw ];//ktnw - //real fBNE = (D.f[DIR_PPM])[kb ];//kbne - //real fBSW = (D.f[DIR_MMM])[kbsw]; - //real fBSE = (D.f[DIR_PMM])[kbs];//kbse - //real fBNW = (D.f[DIR_MPM])[kbw];//kbnw - //////////////////////////////////////////////////////////////////////////////// - real f7ZERO = (D7.f[0])[k]; - real f7E = (D7.f[1])[k]; - real f7W = (D7.f[2])[kw]; - real f7N = (D7.f[3])[k]; - real f7S = (D7.f[4])[ks]; - real f7T = (D7.f[5])[k]; - real f7B = (D7.f[6])[kb]; - //////////////////////////////////////////////////////////////////////////////// - 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; - real OORho = c1o1 / rho; - real vx = OORho*((fTNE - fBSW) + (fBNE - fTSW) + (fTSE - fBNW) + (fBSE - fTNW) + (fNE - fSW) + (fSE - fNW) + (fTE - fBW) + (fBE - fTW) + (fE - fW)); - real vy = OORho*((fTNE - fBSW) + (fBNE - fTSW) + (fBNW - fTSE) + (fTNW - fBSE) + (fNE - fSW) + (fNW - fSE) + (fTN - fBS) + (fBN - fTS) + (fN - fS)); - real vz = OORho*((fTNE - fBSW) + (fTSW - fBNE) + (fTSE - fBNW) + (fTNW - fBSE) + (fTE - fBW) + (fTW - fBE) + (fTN - fBS) + (fTS - fBN) + (fT - fB)); - //////////////////////////////////////////////////////////////////////////////// - real omegaD = -c3o1 + sqrt(c3o1); - real Lam = -(c1o2 + c1o1 / omegaD); - real nue_d = Lam / c3o1; - real ae = diffusivity / nue_d - c1o1; - real ux_sq = vx * vx; - real uy_sq = vy * vy; - real uz_sq = vz * vz; - - real ConcD = f7ZERO + f7E + f7W + f7N + f7S + f7T + f7B; - - (D7.f[0])[k] = f7ZERO*(c1o1 + omegaD) - omegaD*ConcD*(c1o3*(ae*(-c3o1)) - (ux_sq + uy_sq + uz_sq)); - (D7.f[2])[kw] = f7E *(c1o1 + omegaD) - omegaD*ConcD*(c1o6*(ae + c1o1) + c1o2*(ux_sq)+vx*c1o2); - (D7.f[1])[k] = f7W *(c1o1 + omegaD) - omegaD*ConcD*(c1o6*(ae + c1o1) + c1o2*(ux_sq)-vx*c1o2); - (D7.f[4])[ks] = f7N *(c1o1 + omegaD) - omegaD*ConcD*(c1o6*(ae + c1o1) + c1o2*(uy_sq)+vy*c1o2); - (D7.f[3])[k] = f7S *(c1o1 + omegaD) - omegaD*ConcD*(c1o6*(ae + c1o1) + c1o2*(uy_sq)-vy*c1o2); - (D7.f[6])[kb] = f7T *(c1o1 + omegaD) - omegaD*ConcD*(c1o6*(ae + c1o1) + c1o2*(uz_sq)+vz*c1o2); - (D7.f[5])[k] = f7B *(c1o1 + omegaD) - omegaD*ConcD*(c1o6*(ae + c1o1) + c1o2*(uz_sq)-vz*c1o2); - } - } -} \ No newline at end of file diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/AdvectionDiffusion/Compressible/Mod7/ADMod7CompStrategy.cpp b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/AdvectionDiffusion/Compressible/Mod7/ADMod7CompStrategy.cpp deleted file mode 100644 index fc852c02d8a705802bd0040d43091753aa3678c8..0000000000000000000000000000000000000000 --- a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/AdvectionDiffusion/Compressible/Mod7/ADMod7CompStrategy.cpp +++ /dev/null @@ -1,29 +0,0 @@ -#include "ADMod7CompStrategy.h" - -#include "Parameter/Parameter.h" - -std::shared_ptr<ADMod7CompStrategy> ADMod7CompStrategy::getInstance() -{ - static std::shared_ptr<ADMod7CompStrategy> uniqueInstance; - if(!uniqueInstance) - uniqueInstance = std::shared_ptr<ADMod7CompStrategy>(new ADMod7CompStrategy()); - return uniqueInstance; -} - -bool ADMod7CompStrategy::checkParameter(std::shared_ptr<Parameter> para) -{ - if (para->getUseWale()) - return false; - else if (!para->getCompOn()) - return false; - else if (!para->getDiffOn()) - return false; - else if (para->getDiffMod() == 27) - return false; - else - return true; -} - -ADMod7CompStrategy::ADMod7CompStrategy() -{ -} diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/AdvectionDiffusion/Compressible/Mod7/ADMod7CompStrategy.h b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/AdvectionDiffusion/Compressible/Mod7/ADMod7CompStrategy.h deleted file mode 100644 index 4c2059b20468ea6189700d7685aaef1aaf3499fc..0000000000000000000000000000000000000000 --- a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/AdvectionDiffusion/Compressible/Mod7/ADMod7CompStrategy.h +++ /dev/null @@ -1,17 +0,0 @@ -#ifndef AD_MOD7_COMP_STRATEGY_H -#define AD_MOD7_COMP_STRATEGY_H - -#include "Kernel/Utilities/CheckParameterStrategy/CheckParameterStrategy.h" - -class ADMod7CompStrategy : public CheckParameterStrategy -{ -public: - static std::shared_ptr<ADMod7CompStrategy> getInstance(); - - bool checkParameter(std::shared_ptr<Parameter> para); - -private: - ADMod7CompStrategy(); - -}; -#endif \ No newline at end of file diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/AdvectionDiffusion/Incompressible/Mod27/ADIncomp27/ADIncomp27.cu b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/AdvectionDiffusion/Incompressible/Mod27/ADIncomp27/ADIncomp27.cu deleted file mode 100644 index 22782ddf6aebb6b860c3dc1e2b1a384223931085..0000000000000000000000000000000000000000 --- a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/AdvectionDiffusion/Incompressible/Mod27/ADIncomp27/ADIncomp27.cu +++ /dev/null @@ -1,40 +0,0 @@ -#include "ADIncomp27.h" - -#include "ADIncomp27_Device.cuh" -#include "Parameter/Parameter.h" -#include <cuda_helper/CudaGrid.h> - -std::shared_ptr<ADIncomp27> ADIncomp27::getNewInstance(std::shared_ptr<Parameter> para, int level) -{ - return std::shared_ptr<ADIncomp27>(new ADIncomp27(para, level)); -} - -void ADIncomp27::run() -{ - vf::cuda::CudaGrid grid = vf::cuda::CudaGrid(para->getParD(level)->numberofthreads, para->getParD(level)->numberOfNodes); - - LB_Kernel_AD_Incomp_27<<< grid.grid, grid.threads >>>( - para->getParD(level)->diffusivity, - para->getParD(level)->typeOfGridNode, - para->getParD(level)->neighborX, - para->getParD(level)->neighborY, - para->getParD(level)->neighborZ, - para->getParD(level)->distributions.f[0], - para->getParD(level)->distributionsAD.f[0], - para->getParD(level)->numberOfNodes, - para->getParD(level)->isEvenTimestep); - getLastCudaError("LB_Kernel_AD_Incomp_27 execution failed"); -} - -ADIncomp27::ADIncomp27(std::shared_ptr<Parameter> para, int level) -{ - this->para = para; - this->level = level; - - myPreProcessorTypes.push_back(InitIncompAD27); - -} - -ADIncomp27::ADIncomp27() -{ -} diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/AdvectionDiffusion/Incompressible/Mod27/ADIncomp27/ADIncomp27.h b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/AdvectionDiffusion/Incompressible/Mod27/ADIncomp27/ADIncomp27.h deleted file mode 100644 index 3993539153b2536910a68d99f9ea4c787116bcd3..0000000000000000000000000000000000000000 --- a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/AdvectionDiffusion/Incompressible/Mod27/ADIncomp27/ADIncomp27.h +++ /dev/null @@ -1,17 +0,0 @@ -#ifndef AD_INCOMP_27_H -#define AD_INCOMP_27_H - -#include "Kernel/ADKernel.h" - - -class ADIncomp27 : public ADKernel -{ -public: - static std::shared_ptr<ADIncomp27> getNewInstance(std::shared_ptr<Parameter> para, int level); - void run(); - -private: - ADIncomp27(); - ADIncomp27(std::shared_ptr< Parameter> para, int level); -}; -#endif \ No newline at end of file diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/AdvectionDiffusion/Incompressible/Mod27/ADMod27IncompStrategy.cpp b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/AdvectionDiffusion/Incompressible/Mod27/ADMod27IncompStrategy.cpp deleted file mode 100644 index 84e8e947d498381b8b080abe2b355ee485713d33..0000000000000000000000000000000000000000 --- a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/AdvectionDiffusion/Incompressible/Mod27/ADMod27IncompStrategy.cpp +++ /dev/null @@ -1,29 +0,0 @@ -#include "ADMod27IncompStrategy.h" - -#include "Parameter/Parameter.h" - -std::shared_ptr<ADMod27IncompStrategy> ADMod27IncompStrategy::getInstance() -{ - static std::shared_ptr<ADMod27IncompStrategy> uniqueInstance; - if (!uniqueInstance) - uniqueInstance = std::shared_ptr<ADMod27IncompStrategy>(new ADMod27IncompStrategy()); - return uniqueInstance; -} - -bool ADMod27IncompStrategy::checkParameter(std::shared_ptr<Parameter> para) -{ - if (para->getUseWale()) - return false; - else if (para->getCompOn()) - return false; - else if (!para->getDiffOn()) - return false; - else if (para->getDiffMod() == 7) - return false; - else - return true; -} - -ADMod27IncompStrategy::ADMod27IncompStrategy() -{ -} diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/AdvectionDiffusion/Incompressible/Mod27/ADMod27IncompStrategy.h b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/AdvectionDiffusion/Incompressible/Mod27/ADMod27IncompStrategy.h deleted file mode 100644 index ed518041a58832f9c1efc0a39cb566cf9f4cf920..0000000000000000000000000000000000000000 --- a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/AdvectionDiffusion/Incompressible/Mod27/ADMod27IncompStrategy.h +++ /dev/null @@ -1,17 +0,0 @@ -#ifndef AD_MOD27_INCOMP_STRATEGY_H -#define AD_MOD27_INCOMP_STRATEGY_H - -#include "Kernel/Utilities/CheckParameterStrategy/CheckParameterStrategy.h" - -class ADMod27IncompStrategy : public CheckParameterStrategy -{ -public: - static std::shared_ptr<ADMod27IncompStrategy> getInstance(); - - bool checkParameter(std::shared_ptr<Parameter> para); - -private: - ADMod27IncompStrategy(); - -}; -#endif \ No newline at end of file diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/AdvectionDiffusion/Incompressible/Mod7/ADIncomp7/ADIncomp7.cu b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/AdvectionDiffusion/Incompressible/Mod7/ADIncomp7/ADIncomp7.cu deleted file mode 100644 index 613491dcfc4e124fed2826f5439ae7a2b99544b7..0000000000000000000000000000000000000000 --- a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/AdvectionDiffusion/Incompressible/Mod7/ADIncomp7/ADIncomp7.cu +++ /dev/null @@ -1,40 +0,0 @@ -#include "ADIncomp7.h" - -#include "ADIncomp7_Device.cuh" -#include "Parameter/Parameter.h" -#include <cuda_helper/CudaGrid.h> - -std::shared_ptr<ADIncomp7> ADIncomp7::getNewInstance(std::shared_ptr<Parameter> para, int level) -{ - return std::shared_ptr<ADIncomp7>(new ADIncomp7(para, level)); -} - -void ADIncomp7::run() -{ - vf::cuda::CudaGrid grid = vf::cuda::CudaGrid(para->getParD(level)->numberofthreads, para->getParD(level)->numberOfNodes); - - LB_Kernel_AD_Incomp_7<<< grid.grid, grid.threads >>>( - para->getParD(level)->diffusivity, - para->getParD(level)->typeOfGridNode, - para->getParD(level)->neighborX, - para->getParD(level)->neighborY, - para->getParD(level)->neighborZ, - para->getParD(level)->distributions.f[0], - para->getParD(level)->distributionsAD7.f[0], - para->getParD(level)->numberOfNodes, - para->getParD(level)->isEvenTimestep); - getLastCudaError("LB_Kernel_AD_Incomp_7 execution failed"); -} - -ADIncomp7::ADIncomp7(std::shared_ptr<Parameter> para, int level) -{ - this->para = para; - this->level = level; - - myPreProcessorTypes.push_back(InitIncompAD7); - -} - -ADIncomp7::ADIncomp7() -{ -} diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/AdvectionDiffusion/Incompressible/Mod7/ADIncomp7/ADIncomp7.h b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/AdvectionDiffusion/Incompressible/Mod7/ADIncomp7/ADIncomp7.h deleted file mode 100644 index 825bc12ff7ea20ef17b2b41e7e60f8f026b4b6bb..0000000000000000000000000000000000000000 --- a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/AdvectionDiffusion/Incompressible/Mod7/ADIncomp7/ADIncomp7.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifndef AD_INCOMP_7_H -#define AD_INCOMP_7_H - -#include "Kernel/ADKernel.h" - -class ADIncomp7 : public ADKernel -{ -public: - static std::shared_ptr<ADIncomp7> getNewInstance(std::shared_ptr< Parameter> para, int level); - void run(); - -private: - ADIncomp7(); - ADIncomp7(std::shared_ptr< Parameter> para, int level); -}; -#endif \ No newline at end of file diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/AdvectionDiffusion/Incompressible/Mod7/ADMod7IncompStrategy.cpp b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/AdvectionDiffusion/Incompressible/Mod7/ADMod7IncompStrategy.cpp deleted file mode 100644 index 0bae92b80f046970bc9287bd84727bdf38a59a09..0000000000000000000000000000000000000000 --- a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/AdvectionDiffusion/Incompressible/Mod7/ADMod7IncompStrategy.cpp +++ /dev/null @@ -1,29 +0,0 @@ -#include "ADMod7IncompStrategy.h" - -#include "Parameter/Parameter.h" - -std::shared_ptr<ADMod7IncompStrategy> ADMod7IncompStrategy::getInstance() -{ - static std::shared_ptr<ADMod7IncompStrategy> uniqueInstance; - if(!uniqueInstance) - uniqueInstance = std::shared_ptr<ADMod7IncompStrategy>(new ADMod7IncompStrategy()); - return uniqueInstance; -} - -bool ADMod7IncompStrategy::checkParameter(std::shared_ptr<Parameter> para) -{ - if (para->getUseWale()) - return false; - else if (para->getCompOn()) - return false; - else if (!para->getDiffOn()) - return false; - else if (para->getDiffMod() == 27) - return false; - else - return true; -} - -ADMod7IncompStrategy::ADMod7IncompStrategy() -{ -} \ No newline at end of file diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/AdvectionDiffusion/Incompressible/Mod7/ADMod7IncompStrategy.h b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/AdvectionDiffusion/Incompressible/Mod7/ADMod7IncompStrategy.h deleted file mode 100644 index 1d01b7b1c2a65e07b17377cfd2c4000583c2fc33..0000000000000000000000000000000000000000 --- a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/AdvectionDiffusion/Incompressible/Mod7/ADMod7IncompStrategy.h +++ /dev/null @@ -1,17 +0,0 @@ -#ifndef AD_MOD7_INCOMP_STRATEGY_H -#define AD_MOD7_INCOMP_STRATEGY_H - -#include "Kernel/Utilities/CheckParameterStrategy/CheckParameterStrategy.h" - -class ADMod7IncompStrategy : public CheckParameterStrategy -{ -public: - static std::shared_ptr<ADMod7IncompStrategy> getInstance(); - - bool checkParameter(std::shared_ptr<Parameter> para); - -private: - ADMod7IncompStrategy(); - -}; -#endif \ No newline at end of file diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/PorousMediaKernels/FluidFlow/Compressible/CumulantOne/PMCumulantOneCompSP27.h b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/PorousMediaKernels/FluidFlow/Compressible/CumulantOne/PMCumulantOneCompSP27.h deleted file mode 100644 index d5130b88728cfdd70fad18e180d578733609487f..0000000000000000000000000000000000000000 --- a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/PorousMediaKernels/FluidFlow/Compressible/CumulantOne/PMCumulantOneCompSP27.h +++ /dev/null @@ -1,21 +0,0 @@ -#ifndef PM_CUMULANT_ONE_COMP_SP27_H -#define PM_CUMULANT_ONE_COMP_SP27_H - -#include "Kernel/KernelImp.h" - -class PorousMedia; - -class PMCumulantOneCompSP27 : public KernelImp -{ -public: - static std::shared_ptr<PMCumulantOneCompSP27> getNewInstance(std::shared_ptr< Parameter> para, std::vector<std::shared_ptr<PorousMedia>> pm, int level); - void run(); - -private: - PMCumulantOneCompSP27(); - PMCumulantOneCompSP27(std::shared_ptr< Parameter> para, std::vector<std::shared_ptr<PorousMedia>> pm, int level); - - std::vector<std::shared_ptr<PorousMedia>> pm; -}; - -#endif \ No newline at end of file diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/PorousMediaKernels/FluidFlow/Compressible/PMFluidFlowCompStrategy.cpp b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/PorousMediaKernels/FluidFlow/Compressible/PMFluidFlowCompStrategy.cpp deleted file mode 100644 index 553800d738bb5ed56f17a0e0bba181961b8e31bf..0000000000000000000000000000000000000000 --- a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/PorousMediaKernels/FluidFlow/Compressible/PMFluidFlowCompStrategy.cpp +++ /dev/null @@ -1,26 +0,0 @@ -#include "PMFluidFlowCompStrategy.h" - -#include "Parameter/Parameter.h" - -std::shared_ptr<PMFluidFlowCompStrategy> PMFluidFlowCompStrategy::getInstance() -{ - static std::shared_ptr<PMFluidFlowCompStrategy> uniqueInstance; - if (!uniqueInstance) - uniqueInstance = std::shared_ptr<PMFluidFlowCompStrategy>(new PMFluidFlowCompStrategy()); - return uniqueInstance; -} - -bool PMFluidFlowCompStrategy::checkParameter(std::shared_ptr<Parameter> para) -{ - if (para->getUseWale()) - return false; - else if (!para->getCompOn()) - return false; - else if (!para->getSimulatePorousMedia()) - return false; - else - return true; -} - -PMFluidFlowCompStrategy::PMFluidFlowCompStrategy(){ -} diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/PorousMediaKernels/FluidFlow/Compressible/PMFluidFlowCompStrategy.h b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/PorousMediaKernels/FluidFlow/Compressible/PMFluidFlowCompStrategy.h deleted file mode 100644 index c56dda07a724a506439b159d3824533bcc8e441f..0000000000000000000000000000000000000000 --- a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/PorousMediaKernels/FluidFlow/Compressible/PMFluidFlowCompStrategy.h +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef PM_FLUID_FLOW_COMP_STRATEGY_H -#define PM_FLUID_FLOW_COMP_STRATEGY_H - -#include "Kernel/Utilities/CheckParameterStrategy/CheckParameterStrategy.h" - - -class PMFluidFlowCompStrategy : public CheckParameterStrategy -{ -public: - static std::shared_ptr<PMFluidFlowCompStrategy> getInstance(); - - bool checkParameter(std::shared_ptr<Parameter> para); - -private: - PMFluidFlowCompStrategy(); - -}; -#endif \ No newline at end of file diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/WaleKernels/FluidFlow/Compressible/CumulantK15/WaleCumulantK15Comp.h b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/WaleKernels/FluidFlow/Compressible/CumulantK15/WaleCumulantK15Comp.h deleted file mode 100644 index b669c8d5ae7d69a2009d4d3db82196827a4e676a..0000000000000000000000000000000000000000 --- a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/WaleKernels/FluidFlow/Compressible/CumulantK15/WaleCumulantK15Comp.h +++ /dev/null @@ -1,17 +0,0 @@ -#ifndef WALE_CUMULANT_K15_COMP_H -#define WALE_CUMULANT_K15_COMP_H - -#include "Kernel/KernelImp.h" - -class WaleCumulantK15Comp : public KernelImp -{ -public: - static std::shared_ptr<WaleCumulantK15Comp> getNewInstance(std::shared_ptr< Parameter> para, int level); - void run(); - -private: - WaleCumulantK15Comp(); - WaleCumulantK15Comp(std::shared_ptr< Parameter> para, int level); - -}; -#endif \ No newline at end of file diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/WaleKernels/FluidFlow/Compressible/CumulantK15BySoniMalav/WaleBySoniMalavCumulantK15Comp.h b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/WaleKernels/FluidFlow/Compressible/CumulantK15BySoniMalav/WaleBySoniMalavCumulantK15Comp.h deleted file mode 100644 index e1890f45d94df8814d03e6bb484ecbb6c312a6e6..0000000000000000000000000000000000000000 --- a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/WaleKernels/FluidFlow/Compressible/CumulantK15BySoniMalav/WaleBySoniMalavCumulantK15Comp.h +++ /dev/null @@ -1,17 +0,0 @@ -#ifndef WALE_CUMULANT_K15_COMP_BY_SONI_MALAV_H -#define WALE_CUMULANT_K15_COMP_BY_SONI_MALAV_H - -#include "Kernel/KernelImp.h" - -class WaleBySoniMalavCumulantK15Comp : public KernelImp -{ -public: - static std::shared_ptr<WaleBySoniMalavCumulantK15Comp> getNewInstance(std::shared_ptr< Parameter> para, int level); - void run(); - -private: - WaleBySoniMalavCumulantK15Comp(); - WaleBySoniMalavCumulantK15Comp(std::shared_ptr< Parameter> para, int level); - -}; -#endif \ No newline at end of file diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/WaleKernels/FluidFlow/Compressible/CumulantK17/WaleCumulantK17Comp.h b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/WaleKernels/FluidFlow/Compressible/CumulantK17/WaleCumulantK17Comp.h deleted file mode 100644 index 61e431b0f7017c0d9a0c0bbcc7d963a5c05bcbe9..0000000000000000000000000000000000000000 --- a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/WaleKernels/FluidFlow/Compressible/CumulantK17/WaleCumulantK17Comp.h +++ /dev/null @@ -1,17 +0,0 @@ -#ifndef WALE_CUMULANT_AA2016_COMP_SP27_H -#define WALE_CUMULANT_AA2016_COMP_SP27_H - -#include "Kernel/KernelImp.h" - -class WaleCumulantK17Comp : public KernelImp -{ -public: - static std::shared_ptr<WaleCumulantK17Comp> getNewInstance(std::shared_ptr< Parameter> para, int level); - void run(); - -private: - WaleCumulantK17Comp(); - WaleCumulantK17Comp(std::shared_ptr< Parameter> para, int level); - -}; -#endif \ No newline at end of file diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/WaleKernels/FluidFlow/Compressible/CumulantK17Debug/WaleCumulantK17DebugComp.h b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/WaleKernels/FluidFlow/Compressible/CumulantK17Debug/WaleCumulantK17DebugComp.h deleted file mode 100644 index 042cadecd7ed142383ffed01d0ebe140a68a3e0c..0000000000000000000000000000000000000000 --- a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/WaleKernels/FluidFlow/Compressible/CumulantK17Debug/WaleCumulantK17DebugComp.h +++ /dev/null @@ -1,17 +0,0 @@ -#ifndef WALE_CUMULANT_AA2016_DEBUG_COMP_SP27_H -#define WALE_CUMULANT_AA2016_DEBUG_COMP_SP27_H - -#include "Kernel/KernelImp.h" - -class WaleCumulantK17DebugComp : public KernelImp -{ -public: - static std::shared_ptr<WaleCumulantK17DebugComp> getNewInstance(std::shared_ptr< Parameter> para, int level); - void run(); - -private: - WaleCumulantK17DebugComp(); - WaleCumulantK17DebugComp(std::shared_ptr< Parameter> para, int level); - -}; -#endif \ No newline at end of file diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/WaleKernels/FluidFlow/Compressible/WaleFluidFlowCompStrategy.cpp b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/WaleKernels/FluidFlow/Compressible/WaleFluidFlowCompStrategy.cpp deleted file mode 100644 index b2099ddb12e07f38214728871f8fda9391195555..0000000000000000000000000000000000000000 --- a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/WaleKernels/FluidFlow/Compressible/WaleFluidFlowCompStrategy.cpp +++ /dev/null @@ -1,24 +0,0 @@ -#include "WaleFluidFlowCompStrategy.h" - -#include "Parameter/Parameter.h" - -std::shared_ptr<WaleFluidFlowCompStrategy> WaleFluidFlowCompStrategy::getInstance() -{ - static std::shared_ptr<WaleFluidFlowCompStrategy> uniqueInstance; - if (!uniqueInstance) - uniqueInstance = std::shared_ptr<WaleFluidFlowCompStrategy>(new WaleFluidFlowCompStrategy()); - return uniqueInstance; -} - -bool WaleFluidFlowCompStrategy::checkParameter(std::shared_ptr<Parameter> para) -{ - if (!para->getUseWale()) - return false; - else if (!para->getCompOn()) - return false; - else - return true; -} - -WaleFluidFlowCompStrategy::WaleFluidFlowCompStrategy() { -} diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/WaleKernels/FluidFlow/Compressible/WaleFluidFlowCompStrategy.h b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/WaleKernels/FluidFlow/Compressible/WaleFluidFlowCompStrategy.h deleted file mode 100644 index 7de7bd81754149d86a531e655a8a071ea64e31c8..0000000000000000000000000000000000000000 --- a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/WaleKernels/FluidFlow/Compressible/WaleFluidFlowCompStrategy.h +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef WALE_FLUID_FLOW_COMP_STRATEGY_H -#define WALE_FLUID_FLOW_COMP_STRATEGY_H - -#include "Kernel/Utilities/CheckParameterStrategy/CheckParameterStrategy.h" - - -class WaleFluidFlowCompStrategy : public CheckParameterStrategy -{ -public: - static std::shared_ptr<WaleFluidFlowCompStrategy> getInstance(); - - bool checkParameter(std::shared_ptr<Parameter> para); - -private: - WaleFluidFlowCompStrategy(); - -}; -#endif \ No newline at end of file diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Utilities/CheckParameterStrategy/CheckParameterStrategy.h b/src/gpu/VirtualFluids_GPU/Kernel/Utilities/CheckParameterStrategy/CheckParameterStrategy.h deleted file mode 100644 index 63e69c57cfd7b0d9138672a3a27de3c918b48297..0000000000000000000000000000000000000000 --- a/src/gpu/VirtualFluids_GPU/Kernel/Utilities/CheckParameterStrategy/CheckParameterStrategy.h +++ /dev/null @@ -1,14 +0,0 @@ -#ifndef CHECK_PARAMETER_STRATEGY_H -#define CHECK_PARAMETER_STRATEGY_H - -#include <memory> - -class Parameter; - -class CheckParameterStrategy -{ -public: - virtual ~CheckParameterStrategy() = default; - virtual bool checkParameter(std::shared_ptr<Parameter> para) = 0; -}; -#endif diff --git a/src/gpu/VirtualFluids_GPU/LBM/GPUHelperFunctions/KernelUtilities.h b/src/gpu/VirtualFluids_GPU/LBM/GPUHelperFunctions/KernelUtilities.h deleted file mode 100644 index 2403a7acd9153bf2a1b9aad4d19c5f8d5fa60766..0000000000000000000000000000000000000000 --- a/src/gpu/VirtualFluids_GPU/LBM/GPUHelperFunctions/KernelUtilities.h +++ /dev/null @@ -1,396 +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 KernelUtilities.h -//! \ingroup LBM/GPUHelperFunctions -//! \author Martin Schoenherr, Anna Wellmann, Soeren Peters -//======================================================================================= -#ifndef GPU_DISTRIBUTION_HELPER_H -#define GPU_DISTRIBUTION_HELPER_H - -#include "LBM/LB.h" - -#include <array> -#include <cassert> -#include <optional> - -#include <cuda_runtime.h> - -#include <lbm/constants/D3Q27.h> - -#include <basics/constants/NumericConstants.h> - -using namespace vf::basics::constant; -using namespace vf::lbm::dir; - -namespace vf::gpu -{ - -inline real getForceFactor(int level) -{ - real factor = c1o1; - for (size_t i = 1; i <= level; i++) { - factor *= c2o1; - } - factor = 1 / factor; - return factor; -} - -__inline__ __device__ __host__ void getPointersToDistributions(Distributions27 &dist, real *distributionArray, const unsigned long long numberOfLBnodes, const bool isEvenTimestep) -{ - if (isEvenTimestep) { - dist.f[DIR_000] = &distributionArray[DIR_000 * numberOfLBnodes]; - dist.f[DIR_P00] = &distributionArray[DIR_P00 * numberOfLBnodes]; - dist.f[DIR_M00] = &distributionArray[DIR_M00 * numberOfLBnodes]; - dist.f[DIR_0P0] = &distributionArray[DIR_0P0 * numberOfLBnodes]; - dist.f[DIR_0M0] = &distributionArray[DIR_0M0 * numberOfLBnodes]; - dist.f[DIR_00P] = &distributionArray[DIR_00P * numberOfLBnodes]; - dist.f[DIR_00M] = &distributionArray[DIR_00M * numberOfLBnodes]; - dist.f[DIR_PP0] = &distributionArray[DIR_PP0 * numberOfLBnodes]; - dist.f[DIR_MM0] = &distributionArray[DIR_MM0 * numberOfLBnodes]; - dist.f[DIR_PM0] = &distributionArray[DIR_PM0 * numberOfLBnodes]; - dist.f[DIR_MP0] = &distributionArray[DIR_MP0 * numberOfLBnodes]; - dist.f[DIR_P0P] = &distributionArray[DIR_P0P * numberOfLBnodes]; - dist.f[DIR_M0M] = &distributionArray[DIR_M0M * numberOfLBnodes]; - dist.f[DIR_P0M] = &distributionArray[DIR_P0M * numberOfLBnodes]; - dist.f[DIR_M0P] = &distributionArray[DIR_M0P * numberOfLBnodes]; - dist.f[DIR_0PP] = &distributionArray[DIR_0PP * numberOfLBnodes]; - dist.f[DIR_0MM] = &distributionArray[DIR_0MM * numberOfLBnodes]; - dist.f[DIR_0PM] = &distributionArray[DIR_0PM * numberOfLBnodes]; - dist.f[DIR_0MP] = &distributionArray[DIR_0MP * numberOfLBnodes]; - dist.f[DIR_PPP] = &distributionArray[DIR_PPP * numberOfLBnodes]; - dist.f[DIR_MMP] = &distributionArray[DIR_MMP * numberOfLBnodes]; - dist.f[DIR_PMP] = &distributionArray[DIR_PMP * numberOfLBnodes]; - dist.f[DIR_MPP] = &distributionArray[DIR_MPP * numberOfLBnodes]; - dist.f[DIR_PPM] = &distributionArray[DIR_PPM * numberOfLBnodes]; - dist.f[DIR_MMM] = &distributionArray[DIR_MMM * numberOfLBnodes]; - dist.f[DIR_PMM] = &distributionArray[DIR_PMM * numberOfLBnodes]; - dist.f[DIR_MPM] = &distributionArray[DIR_MPM * numberOfLBnodes]; - } else { - dist.f[DIR_M00] = &distributionArray[DIR_P00 * numberOfLBnodes]; - dist.f[DIR_P00] = &distributionArray[DIR_M00 * numberOfLBnodes]; - dist.f[DIR_0M0] = &distributionArray[DIR_0P0 * numberOfLBnodes]; - dist.f[DIR_0P0] = &distributionArray[DIR_0M0 * numberOfLBnodes]; - dist.f[DIR_00M] = &distributionArray[DIR_00P * numberOfLBnodes]; - dist.f[DIR_00P] = &distributionArray[DIR_00M * numberOfLBnodes]; - dist.f[DIR_MM0] = &distributionArray[DIR_PP0 * numberOfLBnodes]; - dist.f[DIR_PP0] = &distributionArray[DIR_MM0 * numberOfLBnodes]; - dist.f[DIR_MP0] = &distributionArray[DIR_PM0 * numberOfLBnodes]; - dist.f[DIR_PM0] = &distributionArray[DIR_MP0 * numberOfLBnodes]; - dist.f[DIR_M0M] = &distributionArray[DIR_P0P * numberOfLBnodes]; - dist.f[DIR_P0P] = &distributionArray[DIR_M0M * numberOfLBnodes]; - dist.f[DIR_M0P] = &distributionArray[DIR_P0M * numberOfLBnodes]; - dist.f[DIR_P0M] = &distributionArray[DIR_M0P * numberOfLBnodes]; - dist.f[DIR_0MM] = &distributionArray[DIR_0PP * numberOfLBnodes]; - dist.f[DIR_0PP] = &distributionArray[DIR_0MM * numberOfLBnodes]; - dist.f[DIR_0MP] = &distributionArray[DIR_0PM * numberOfLBnodes]; - dist.f[DIR_0PM] = &distributionArray[DIR_0MP * numberOfLBnodes]; - dist.f[DIR_000] = &distributionArray[DIR_000 * numberOfLBnodes]; - dist.f[DIR_PPP] = &distributionArray[DIR_MMM * numberOfLBnodes]; - dist.f[DIR_MMP] = &distributionArray[DIR_PPM * numberOfLBnodes]; - dist.f[DIR_PMP] = &distributionArray[DIR_MPM * numberOfLBnodes]; - dist.f[DIR_MPP] = &distributionArray[DIR_PMM * numberOfLBnodes]; - dist.f[DIR_PPM] = &distributionArray[DIR_MMP * numberOfLBnodes]; - dist.f[DIR_MMM] = &distributionArray[DIR_PPP * numberOfLBnodes]; - dist.f[DIR_PMM] = &distributionArray[DIR_MPP * numberOfLBnodes]; - dist.f[DIR_MPM] = &distributionArray[DIR_PMP * numberOfLBnodes]; - } -} - -/** -* Getting references to the 27 directions. -* @params distributions 1D real* array containing all data (number of elements = 27 * matrix_size) -* @params matrix_size number of discretizations nodes -* @params isEvenTimestep: stored data dependent on timestep is based on the esoteric twist algorithm -* @return a data struct containing the addresses to the 27 directions within the 1D distribution array -*/ -__inline__ __device__ __host__ DistributionReferences27 getDistributionReferences27(real* distributions, const unsigned long long numberOfLBnodes, const bool isEvenTimestep){ - DistributionReferences27 distribution_references; - getPointersToDistributions(distribution_references, distributions, numberOfLBnodes, isEvenTimestep); - return distribution_references; -} - -__inline__ __device__ void getPointersToSubgridDistances(SubgridDistances27& subgridD, real* subgridDistances, const unsigned int numberOfSubgridIndices) -{ - subgridD.q[DIR_P00] = &subgridDistances[DIR_P00 * numberOfSubgridIndices]; - subgridD.q[DIR_M00] = &subgridDistances[DIR_M00 * numberOfSubgridIndices]; - subgridD.q[DIR_0P0] = &subgridDistances[DIR_0P0 * numberOfSubgridIndices]; - subgridD.q[DIR_0M0] = &subgridDistances[DIR_0M0 * numberOfSubgridIndices]; - subgridD.q[DIR_00P] = &subgridDistances[DIR_00P * numberOfSubgridIndices]; - subgridD.q[DIR_00M] = &subgridDistances[DIR_00M * numberOfSubgridIndices]; - subgridD.q[DIR_PP0] = &subgridDistances[DIR_PP0 * numberOfSubgridIndices]; - subgridD.q[DIR_MM0] = &subgridDistances[DIR_MM0 * numberOfSubgridIndices]; - subgridD.q[DIR_PM0] = &subgridDistances[DIR_PM0 * numberOfSubgridIndices]; - subgridD.q[DIR_MP0] = &subgridDistances[DIR_MP0 * numberOfSubgridIndices]; - subgridD.q[DIR_P0P] = &subgridDistances[DIR_P0P * numberOfSubgridIndices]; - subgridD.q[DIR_M0M] = &subgridDistances[DIR_M0M * numberOfSubgridIndices]; - subgridD.q[DIR_P0M] = &subgridDistances[DIR_P0M * numberOfSubgridIndices]; - subgridD.q[DIR_M0P] = &subgridDistances[DIR_M0P * numberOfSubgridIndices]; - subgridD.q[DIR_0PP] = &subgridDistances[DIR_0PP * numberOfSubgridIndices]; - subgridD.q[DIR_0MM] = &subgridDistances[DIR_0MM * numberOfSubgridIndices]; - subgridD.q[DIR_0PM] = &subgridDistances[DIR_0PM * numberOfSubgridIndices]; - subgridD.q[DIR_0MP] = &subgridDistances[DIR_0MP * numberOfSubgridIndices]; - subgridD.q[DIR_000] = &subgridDistances[DIR_000 * numberOfSubgridIndices]; - subgridD.q[DIR_PPP] = &subgridDistances[DIR_PPP * numberOfSubgridIndices]; - subgridD.q[DIR_MMP] = &subgridDistances[DIR_MMP * numberOfSubgridIndices]; - subgridD.q[DIR_PMP] = &subgridDistances[DIR_PMP * numberOfSubgridIndices]; - subgridD.q[DIR_MPP] = &subgridDistances[DIR_MPP * numberOfSubgridIndices]; - subgridD.q[DIR_PPM] = &subgridDistances[DIR_PPM * numberOfSubgridIndices]; - subgridD.q[DIR_MMM] = &subgridDistances[DIR_MMM * numberOfSubgridIndices]; - subgridD.q[DIR_PMM] = &subgridDistances[DIR_PMM * numberOfSubgridIndices]; - subgridD.q[DIR_MPM] = &subgridDistances[DIR_MPM * 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 getBounceBackDistributionForVeloBC( const real& f, - const real& velocity, const real weight) -{ - - return f - (c6o1 * weight * velocity); -} - -__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 getInterpolatedDistributionForNoSlipWithPressureBC(const real& q, const real& f, const real& fInverse, const real& feq, - const real& omega, const real& drho, const real weight) -{ - - return (c1o1-q) / (c1o1+q) * (f - fInverse + (f + fInverse - c2o1 * feq * omega) / (c1o1 - omega)) * c1o2 - + (q * (f + fInverse)) / (c1o1 + q) - weight * drho; -} - - -__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; -} - -__inline__ __device__ unsigned int getNodeIndex() -{ - // get node index from CUDA threadIdx, blockIdx, blockDim and gridDim. - const unsigned x = threadIdx.x; - const unsigned y = blockIdx.x; - const unsigned z = blockIdx.y; - - const unsigned nx = blockDim.x; - const unsigned ny = gridDim.x; - - return nx * (ny * z + y) + x; -} - -__inline__ __device__ bool isValidFluidNode(uint nodeType) -{ - return (nodeType == GEO_FLUID || nodeType == GEO_PM_0 || nodeType == GEO_PM_1 || nodeType == GEO_PM_2); -} - - -struct ListIndices -{ - __device__ ListIndices() {} - __device__ ListIndices(const unsigned int k, const unsigned int* neighborX, const unsigned int* neighborY, const unsigned int* neighborZ) - { - k_000 = k; - k_M00 = neighborX[k_000]; - k_0M0 = neighborY[k_000]; - k_00M = neighborZ[k_000]; - k_MM0 = neighborY[k_M00]; - k_M0M = neighborZ[k_M00]; - k_0MM = neighborZ[k_0M0]; - k_MMM = neighborZ[k_MM0]; - } - - unsigned int k_000 { 0 }; - unsigned int k_M00 { 0 }; - unsigned int k_0M0 { 0 }; - unsigned int k_00M { 0 }; - unsigned int k_MM0 { 0 }; - unsigned int k_M0M { 0 }; - unsigned int k_0MM { 0 }; - unsigned int k_MMM { 0 }; -}; - - -//////////////////////////////////////////////////////////////////////////////////// -//! - Read distributions: style of reading and writing the distributions from/to -//! 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> -__device__ __inline__ void read(real *f, const Distributions27 &dist, const ListIndices &indices) -{ - f[DIR_000] = (dist.f[DIR_000])[indices.k_000]; - f[DIR_P00] = (dist.f[DIR_P00])[indices.k_000]; - f[DIR_M00] = (dist.f[DIR_M00])[indices.k_M00]; - f[DIR_0P0] = (dist.f[DIR_0P0])[indices.k_000]; - f[DIR_0M0] = (dist.f[DIR_0M0])[indices.k_0M0]; - f[DIR_00P] = (dist.f[DIR_00P])[indices.k_000]; - f[DIR_00M] = (dist.f[DIR_00M])[indices.k_00M]; - f[DIR_PP0] = (dist.f[DIR_PP0])[indices.k_000]; - f[DIR_MM0] = (dist.f[DIR_MM0])[indices.k_MM0]; - f[DIR_PM0] = (dist.f[DIR_PM0])[indices.k_0M0]; - f[DIR_MP0] = (dist.f[DIR_MP0])[indices.k_M00]; - f[DIR_P0P] = (dist.f[DIR_P0P])[indices.k_000]; - f[DIR_M0M] = (dist.f[DIR_M0M])[indices.k_M0M]; - f[DIR_P0M] = (dist.f[DIR_P0M])[indices.k_00M]; - f[DIR_M0P] = (dist.f[DIR_M0P])[indices.k_M00]; - f[DIR_0PP] = (dist.f[DIR_0PP])[indices.k_000]; - f[DIR_0MM] = (dist.f[DIR_0MM])[indices.k_0MM]; - f[DIR_0PM] = (dist.f[DIR_0PM])[indices.k_00M]; - f[DIR_0MP] = (dist.f[DIR_0MP])[indices.k_0M0]; - f[DIR_PPP] = (dist.f[DIR_PPP])[indices.k_000]; - f[DIR_MPP] = (dist.f[DIR_MPP])[indices.k_M00]; - f[DIR_PMP] = (dist.f[DIR_PMP])[indices.k_0M0]; - f[DIR_MMP] = (dist.f[DIR_MMP])[indices.k_MM0]; - f[DIR_PPM] = (dist.f[DIR_PPM])[indices.k_00M]; - f[DIR_MPM] = (dist.f[DIR_MPM])[indices.k_M0M]; - f[DIR_PMM] = (dist.f[DIR_PMM])[indices.k_0MM]; - f[DIR_MMM] = (dist.f[DIR_MMM])[indices.k_MMM]; -} - -__device__ __inline__ void readInverse(real *f, const Distributions27 &dist, const ListIndices &indices) -{ - f[DIR_000] = (dist.f[DIR_000])[indices.k_000]; - f[DIR_P00] = (dist.f[DIR_P00])[indices.k_000]; - f[DIR_M00] = (dist.f[DIR_M00])[indices.k_M00]; - f[DIR_0P0] = (dist.f[DIR_0P0])[indices.k_000]; - f[DIR_0M0] = (dist.f[DIR_0M0])[indices.k_0M0]; - f[DIR_00P] = (dist.f[DIR_00P])[indices.k_000]; - f[DIR_00M] = (dist.f[DIR_00M])[indices.k_00M]; - f[DIR_PP0] = (dist.f[DIR_PP0])[indices.k_000]; - f[DIR_MM0] = (dist.f[DIR_MM0])[indices.k_MM0]; - f[DIR_PM0] = (dist.f[DIR_PM0])[indices.k_0M0]; - f[DIR_MP0] = (dist.f[DIR_MP0])[indices.k_M00]; - f[DIR_P0P] = (dist.f[DIR_P0P])[indices.k_000]; - f[DIR_M0M] = (dist.f[DIR_M0M])[indices.k_M0M]; - f[DIR_P0M] = (dist.f[DIR_P0M])[indices.k_00M]; - f[DIR_M0P] = (dist.f[DIR_M0P])[indices.k_M00]; - f[DIR_0PP] = (dist.f[DIR_0PP])[indices.k_000]; - f[DIR_0MM] = (dist.f[DIR_0MM])[indices.k_0MM]; - f[DIR_0PM] = (dist.f[DIR_0PM])[indices.k_00M]; - f[DIR_0MP] = (dist.f[DIR_0MP])[indices.k_0M0]; - f[DIR_PPP] = (dist.f[DIR_PPP])[indices.k_000]; - f[DIR_MPP] = (dist.f[DIR_MPP])[indices.k_M00]; - f[DIR_PMP] = (dist.f[DIR_PMP])[indices.k_0M0]; - f[DIR_MMP] = (dist.f[DIR_MMP])[indices.k_MM0]; - f[DIR_PPM] = (dist.f[DIR_PPM])[indices.k_00M]; - f[DIR_MPM] = (dist.f[DIR_MPM])[indices.k_M0M]; - f[DIR_PMM] = (dist.f[DIR_PMM])[indices.k_0MM]; - f[DIR_MMM] = (dist.f[DIR_MMM])[indices.k_MMM]; -} - - -//////////////////////////////////////////////////////////////////////////////////// -//! - Write distributions: style of reading and writing the distributions from/to -//! 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> -__inline__ __device__ void write(Distributions27& destination, const ListIndices& indices, const real* f) -{ - (destination.f[DIR_000])[indices.k_000] = f[DIR_000]; - (destination.f[DIR_P00])[indices.k_000] = f[DIR_P00]; - (destination.f[DIR_M00])[indices.k_M00] = f[DIR_M00]; - (destination.f[DIR_0P0])[indices.k_000] = f[DIR_0P0]; - (destination.f[DIR_0M0])[indices.k_0M0] = f[DIR_0M0]; - (destination.f[DIR_00P])[indices.k_000] = f[DIR_00P]; - (destination.f[DIR_00M])[indices.k_00M] = f[DIR_00M]; - (destination.f[DIR_PP0])[indices.k_000] = f[DIR_PP0]; - (destination.f[DIR_MM0])[indices.k_MM0] = f[DIR_MM0]; - (destination.f[DIR_PM0])[indices.k_0M0] = f[DIR_PM0]; - (destination.f[DIR_MP0])[indices.k_M00] = f[DIR_MP0]; - (destination.f[DIR_P0P])[indices.k_000] = f[DIR_P0P]; - (destination.f[DIR_M0M])[indices.k_M0M] = f[DIR_M0M]; - (destination.f[DIR_P0M])[indices.k_00M] = f[DIR_P0M]; - (destination.f[DIR_M0P])[indices.k_M00] = f[DIR_M0P]; - (destination.f[DIR_0PP])[indices.k_000] = f[DIR_0PP]; - (destination.f[DIR_0MM])[indices.k_0MM] = f[DIR_0MM]; - (destination.f[DIR_0PM])[indices.k_00M] = f[DIR_0PM]; - (destination.f[DIR_0MP])[indices.k_0M0] = f[DIR_0MP]; - (destination.f[DIR_PPP])[indices.k_000] = f[DIR_PPP]; - (destination.f[DIR_MPP])[indices.k_M00] = f[DIR_MPP]; - (destination.f[DIR_PMP])[indices.k_0M0] = f[DIR_PMP]; - (destination.f[DIR_MMP])[indices.k_MM0] = f[DIR_MMP]; - (destination.f[DIR_PPM])[indices.k_00M] = f[DIR_PPM]; - (destination.f[DIR_MPM])[indices.k_M0M] = f[DIR_MPM]; - (destination.f[DIR_PMM])[indices.k_0MM] = f[DIR_PMM]; - (destination.f[DIR_MMM])[indices.k_MMM] = f[DIR_MMM]; -} - -__inline__ __device__ void writeInverse(Distributions27& destination, const ListIndices& indices, const real* f) -{ - (destination.f[DIR_000])[indices.k_000] = f[DIR_000]; - (destination.f[DIR_P00])[indices.k_000] = f[DIR_M00]; - (destination.f[DIR_M00])[indices.k_M00] = f[DIR_P00]; - (destination.f[DIR_0P0])[indices.k_000] = f[DIR_0M0]; - (destination.f[DIR_0M0])[indices.k_0M0] = f[DIR_0P0]; - (destination.f[DIR_00P])[indices.k_000] = f[DIR_00M]; - (destination.f[DIR_00M])[indices.k_00M] = f[DIR_00P]; - (destination.f[DIR_PP0])[indices.k_000] = f[DIR_MM0]; - (destination.f[DIR_MM0])[indices.k_MM0] = f[DIR_PP0]; - (destination.f[DIR_PM0])[indices.k_0M0] = f[DIR_MP0]; - (destination.f[DIR_MP0])[indices.k_M00] = f[DIR_PM0]; - (destination.f[DIR_P0P])[indices.k_000] = f[DIR_M0M]; - (destination.f[DIR_M0M])[indices.k_M0M] = f[DIR_P0P]; - (destination.f[DIR_P0M])[indices.k_00M] = f[DIR_M0P]; - (destination.f[DIR_M0P])[indices.k_M00] = f[DIR_P0M]; - (destination.f[DIR_0PP])[indices.k_000] = f[DIR_0MM]; - (destination.f[DIR_0MM])[indices.k_0MM] = f[DIR_0PP]; - (destination.f[DIR_0PM])[indices.k_00M] = f[DIR_0MP]; - (destination.f[DIR_0MP])[indices.k_0M0] = f[DIR_0PM]; - (destination.f[DIR_PPP])[indices.k_000] = f[DIR_MMM]; - (destination.f[DIR_MPP])[indices.k_M00] = f[DIR_PMM]; - (destination.f[DIR_PMP])[indices.k_0M0] = f[DIR_MPM]; - (destination.f[DIR_MMP])[indices.k_MM0] = f[DIR_PPM]; - (destination.f[DIR_PPM])[indices.k_00M] = f[DIR_MMP]; - (destination.f[DIR_MPM])[indices.k_M0M] = f[DIR_PMP]; - (destination.f[DIR_PMM])[indices.k_0MM] = f[DIR_MPP]; - (destination.f[DIR_MMM])[indices.k_MMM] = f[DIR_PPP]; -} - -} - -#endif diff --git a/src/gpu/VirtualFluids_GPU/LBM/GPUHelperFunctions/KernelUtilitiesTests.cpp b/src/gpu/VirtualFluids_GPU/LBM/GPUHelperFunctions/KernelUtilitiesTests.cpp deleted file mode 100644 index 87f7979bedd8995b075c2adf164a68c1a5b95022..0000000000000000000000000000000000000000 --- a/src/gpu/VirtualFluids_GPU/LBM/GPUHelperFunctions/KernelUtilitiesTests.cpp +++ /dev/null @@ -1,87 +0,0 @@ -#include <gmock/gmock.h> - -#include <basics/tests/testUtilities.h> - -#include "KernelUtilities.h" - -#include <lbm/constants/D3Q27.h> - -using namespace vf::lbm::dir; - -TEST(DistributionHelperTests, getPointerToDistribution_WhenEvenTimeStep_ShouldBeEqualToInput) -{ - real distributions_in[27]; - for (int i = 0; i < 27; i++) - distributions_in[i] = i; - const uint size_Mat = 1; - const bool isEvenTimeStep = true; - - Distributions27 distribution_out = vf::gpu::getDistributionReferences27(distributions_in, size_Mat, isEvenTimeStep); - - EXPECT_THAT(*distribution_out.f[DIR_P00], RealEq(distributions_in[DIR_P00])); - EXPECT_THAT(*distribution_out.f[DIR_M00], RealEq(distributions_in[DIR_M00])); - EXPECT_THAT(*distribution_out.f[DIR_0P0], RealEq(distributions_in[DIR_0P0])); - EXPECT_THAT(*distribution_out.f[DIR_0M0], RealEq(distributions_in[DIR_0M0])); - EXPECT_THAT(*distribution_out.f[DIR_00P], RealEq(distributions_in[DIR_00P])); - EXPECT_THAT(*distribution_out.f[DIR_00M], RealEq(distributions_in[DIR_00M])); - EXPECT_THAT(*distribution_out.f[DIR_PP0], RealEq(distributions_in[DIR_PP0])); - EXPECT_THAT(*distribution_out.f[DIR_MM0], RealEq(distributions_in[DIR_MM0])); - EXPECT_THAT(*distribution_out.f[DIR_PM0], RealEq(distributions_in[DIR_PM0])); - EXPECT_THAT(*distribution_out.f[DIR_MP0], RealEq(distributions_in[DIR_MP0])); - EXPECT_THAT(*distribution_out.f[DIR_P0P], RealEq(distributions_in[DIR_P0P])); - EXPECT_THAT(*distribution_out.f[DIR_M0M], RealEq(distributions_in[DIR_M0M])); - EXPECT_THAT(*distribution_out.f[DIR_P0M], RealEq(distributions_in[DIR_P0M])); - EXPECT_THAT(*distribution_out.f[DIR_M0P], RealEq(distributions_in[DIR_M0P])); - EXPECT_THAT(*distribution_out.f[DIR_0PP], RealEq(distributions_in[DIR_0PP])); - EXPECT_THAT(*distribution_out.f[DIR_0MM], RealEq(distributions_in[DIR_0MM])); - EXPECT_THAT(*distribution_out.f[DIR_0PM], RealEq(distributions_in[DIR_0PM])); - EXPECT_THAT(*distribution_out.f[DIR_0MP], RealEq(distributions_in[DIR_0MP])); - EXPECT_THAT(*distribution_out.f[DIR_000], RealEq(distributions_in[DIR_000])); - EXPECT_THAT(*distribution_out.f[DIR_PPP], RealEq(distributions_in[DIR_PPP])); - EXPECT_THAT(*distribution_out.f[DIR_MMP], RealEq(distributions_in[DIR_MMP])); - EXPECT_THAT(*distribution_out.f[DIR_PMP], RealEq(distributions_in[DIR_PMP])); - EXPECT_THAT(*distribution_out.f[DIR_MPP], RealEq(distributions_in[DIR_MPP])); - EXPECT_THAT(*distribution_out.f[DIR_PPM], RealEq(distributions_in[DIR_PPM])); - EXPECT_THAT(*distribution_out.f[DIR_MMM], RealEq(distributions_in[DIR_MMM])); - EXPECT_THAT(*distribution_out.f[DIR_PMM], RealEq(distributions_in[DIR_PMM])); - EXPECT_THAT(*distribution_out.f[DIR_MPM], RealEq(distributions_in[DIR_MPM])); -} - -TEST(DistributionHelperTests, getPointerToDistribution_WhenOddTimeStep_ShouldBeSwapped) -{ - real distributions_in[27]; - for (int i = 0; i < 27; i++) - distributions_in[i] = i; - const int size_Mat = 1; - const bool isEvenTimeStep = false; - - Distributions27 distribution_out = vf::gpu::getDistributionReferences27(distributions_in, size_Mat, isEvenTimeStep); - - EXPECT_THAT(*distribution_out.f[DIR_M00], RealEq(distributions_in[DIR_P00])); - EXPECT_THAT(*distribution_out.f[DIR_P00], RealEq(distributions_in[DIR_M00])); - EXPECT_THAT(*distribution_out.f[DIR_0M0], RealEq(distributions_in[DIR_0P0])); - EXPECT_THAT(*distribution_out.f[DIR_0P0], RealEq(distributions_in[DIR_0M0])); - EXPECT_THAT(*distribution_out.f[DIR_00M], RealEq(distributions_in[DIR_00P])); - EXPECT_THAT(*distribution_out.f[DIR_00P], RealEq(distributions_in[DIR_00M])); - EXPECT_THAT(*distribution_out.f[DIR_MM0], RealEq(distributions_in[DIR_PP0])); - EXPECT_THAT(*distribution_out.f[DIR_PP0], RealEq(distributions_in[DIR_MM0])); - EXPECT_THAT(*distribution_out.f[DIR_MP0], RealEq(distributions_in[DIR_PM0])); - EXPECT_THAT(*distribution_out.f[DIR_PM0], RealEq(distributions_in[DIR_MP0])); - EXPECT_THAT(*distribution_out.f[DIR_M0M], RealEq(distributions_in[DIR_P0P])); - EXPECT_THAT(*distribution_out.f[DIR_P0P], RealEq(distributions_in[DIR_M0M])); - EXPECT_THAT(*distribution_out.f[DIR_M0P], RealEq(distributions_in[DIR_P0M])); - EXPECT_THAT(*distribution_out.f[DIR_P0M], RealEq(distributions_in[DIR_M0P])); - EXPECT_THAT(*distribution_out.f[DIR_0MM], RealEq(distributions_in[DIR_0PP])); - EXPECT_THAT(*distribution_out.f[DIR_0PP], RealEq(distributions_in[DIR_0MM])); - EXPECT_THAT(*distribution_out.f[DIR_0MP], RealEq(distributions_in[DIR_0PM])); - EXPECT_THAT(*distribution_out.f[DIR_0PM], RealEq(distributions_in[DIR_0MP])); - EXPECT_THAT(*distribution_out.f[DIR_000], RealEq(distributions_in[DIR_000])); - EXPECT_THAT(*distribution_out.f[DIR_MMM], RealEq(distributions_in[DIR_PPP])); - EXPECT_THAT(*distribution_out.f[DIR_PPM], RealEq(distributions_in[DIR_MMP])); - EXPECT_THAT(*distribution_out.f[DIR_MPM], RealEq(distributions_in[DIR_PMP])); - EXPECT_THAT(*distribution_out.f[DIR_PMM], RealEq(distributions_in[DIR_MPP])); - EXPECT_THAT(*distribution_out.f[DIR_MMP], RealEq(distributions_in[DIR_PPM])); - EXPECT_THAT(*distribution_out.f[DIR_PPP], RealEq(distributions_in[DIR_MMM])); - EXPECT_THAT(*distribution_out.f[DIR_MPP], RealEq(distributions_in[DIR_PMM])); - EXPECT_THAT(*distribution_out.f[DIR_PMP], RealEq(distributions_in[DIR_MPM])); -} diff --git a/src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorStrategy/InitCompAD27/InitCompAD27_Device.cu b/src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorStrategy/InitCompAD27/InitCompAD27_Device.cu deleted file mode 100644 index 8fc9de61cfc20c5111a70ad544a9a26c5b3ea7b4..0000000000000000000000000000000000000000 --- a/src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorStrategy/InitCompAD27/InitCompAD27_Device.cu +++ /dev/null @@ -1,200 +0,0 @@ -#include "LBM/LB.h" -#include "lbm/constants/D3Q27.h" -#include <basics/constants/NumericConstants.h> - -using namespace vf::basics::constant; -using namespace vf::lbm::dir; - - -__global__ void LB_Init_Comp_AD_27(unsigned int* neighborX, - unsigned int* neighborY, - unsigned int* neighborZ, - unsigned int* geoD, - real* Conc, - real* ux, - real* uy, - real* uz, - unsigned int size_Mat, - real* DD27, - bool EvenOrOdd) -{ - //////////////////////////////////////////////////////////////////////////////// - const unsigned x = threadIdx.x; // Globaler x-Index - const unsigned y = blockIdx.x; // Globaler y-Index - const unsigned z = blockIdx.y; // Globaler z-Index - - const unsigned nx = blockDim.x; - const unsigned ny = gridDim.x; - - const unsigned k = nx*(ny*z + y) + x; - ////////////////////////////////////////////////////////////////////////// - - if (k<size_Mat) - { - //////////////////////////////////////////////////////////////////////////////// - unsigned int BC; - BC = geoD[k]; - - if (BC != GEO_SOLID && BC != GEO_VOID) - { - Distributions27 D27; - if (EvenOrOdd == true) - { - D27.f[DIR_P00] = &DD27[DIR_P00 *size_Mat]; - D27.f[DIR_M00] = &DD27[DIR_M00 *size_Mat]; - D27.f[DIR_0P0] = &DD27[DIR_0P0 *size_Mat]; - D27.f[DIR_0M0] = &DD27[DIR_0M0 *size_Mat]; - D27.f[DIR_00P] = &DD27[DIR_00P *size_Mat]; - D27.f[DIR_00M] = &DD27[DIR_00M *size_Mat]; - D27.f[DIR_PP0] = &DD27[DIR_PP0 *size_Mat]; - D27.f[DIR_MM0] = &DD27[DIR_MM0 *size_Mat]; - D27.f[DIR_PM0] = &DD27[DIR_PM0 *size_Mat]; - D27.f[DIR_MP0] = &DD27[DIR_MP0 *size_Mat]; - D27.f[DIR_P0P] = &DD27[DIR_P0P *size_Mat]; - D27.f[DIR_M0M] = &DD27[DIR_M0M *size_Mat]; - D27.f[DIR_P0M] = &DD27[DIR_P0M *size_Mat]; - D27.f[DIR_M0P] = &DD27[DIR_M0P *size_Mat]; - D27.f[DIR_0PP] = &DD27[DIR_0PP *size_Mat]; - D27.f[DIR_0MM] = &DD27[DIR_0MM *size_Mat]; - D27.f[DIR_0PM] = &DD27[DIR_0PM *size_Mat]; - D27.f[DIR_0MP] = &DD27[DIR_0MP *size_Mat]; - D27.f[DIR_000] = &DD27[DIR_000*size_Mat]; - D27.f[DIR_PPP] = &DD27[DIR_PPP *size_Mat]; - D27.f[DIR_MMP] = &DD27[DIR_MMP *size_Mat]; - D27.f[DIR_PMP] = &DD27[DIR_PMP *size_Mat]; - D27.f[DIR_MPP] = &DD27[DIR_MPP *size_Mat]; - D27.f[DIR_PPM] = &DD27[DIR_PPM *size_Mat]; - D27.f[DIR_MMM] = &DD27[DIR_MMM *size_Mat]; - D27.f[DIR_PMM]= &DD27[DIR_PMM *size_Mat]; - D27.f[DIR_MPM]= &DD27[DIR_MPM *size_Mat]; - } - else - { - D27.f[DIR_M00] = &DD27[DIR_P00 *size_Mat]; - D27.f[DIR_P00] = &DD27[DIR_M00 *size_Mat]; - D27.f[DIR_0M0] = &DD27[DIR_0P0 *size_Mat]; - D27.f[DIR_0P0] = &DD27[DIR_0M0 *size_Mat]; - D27.f[DIR_00M] = &DD27[DIR_00P *size_Mat]; - D27.f[DIR_00P] = &DD27[DIR_00M *size_Mat]; - D27.f[DIR_MM0] = &DD27[DIR_PP0 *size_Mat]; - D27.f[DIR_PP0] = &DD27[DIR_MM0 *size_Mat]; - D27.f[DIR_MP0] = &DD27[DIR_PM0 *size_Mat]; - D27.f[DIR_PM0] = &DD27[DIR_MP0 *size_Mat]; - D27.f[DIR_M0M] = &DD27[DIR_P0P *size_Mat]; - D27.f[DIR_P0P] = &DD27[DIR_M0M *size_Mat]; - D27.f[DIR_M0P] = &DD27[DIR_P0M *size_Mat]; - D27.f[DIR_P0M] = &DD27[DIR_M0P *size_Mat]; - D27.f[DIR_0MM] = &DD27[DIR_0PP *size_Mat]; - D27.f[DIR_0PP] = &DD27[DIR_0MM *size_Mat]; - D27.f[DIR_0MP] = &DD27[DIR_0PM *size_Mat]; - D27.f[DIR_0PM] = &DD27[DIR_0MP *size_Mat]; - D27.f[DIR_000] = &DD27[DIR_000*size_Mat]; - D27.f[DIR_MMM] = &DD27[DIR_PPP *size_Mat]; - D27.f[DIR_PPM] = &DD27[DIR_MMP *size_Mat]; - D27.f[DIR_MPM]= &DD27[DIR_PMP *size_Mat]; - D27.f[DIR_PMM]= &DD27[DIR_MPP *size_Mat]; - D27.f[DIR_MMP] = &DD27[DIR_PPM *size_Mat]; - D27.f[DIR_PPP] = &DD27[DIR_MMM *size_Mat]; - D27.f[DIR_MPP] = &DD27[DIR_PMM *size_Mat]; - D27.f[DIR_PMP] = &DD27[DIR_MPM *size_Mat]; - } - ////////////////////////////////////////////////////////////////////////// - real ConcD = Conc[k]; - real vx1 = ux[k]; - real vx2 = uy[k]; - real vx3 = uz[k]; - //real lambdaD = -three + sqrt(three); - //real Diffusivity = c1o20; - //real Lam = -(c1o2+one/lambdaD); - //real nue_d = Lam/three; - //real ae = Diffusivity/nue_d - one; - //real ux_sq = vx1 * vx1; - //real uy_sq = vx2 * vx2; - //real uz_sq = vx3 * vx3; - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //D3Q7 - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //index - //unsigned int kzero= k; - //unsigned int ke = k; - //unsigned int kw = neighborX[k]; - //unsigned int kn = k; - //unsigned int ks = neighborY[k]; - //unsigned int kt = k; - //unsigned int kb = neighborZ[k]; - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //(D7.f[0])[kzero] = ConcD*(c1o3*(ae*(-three))-(ux_sq+uy_sq+uz_sq)); - //(D7.f[1])[ke ] = ConcD*(c1o6*(ae+one)+c1o2*(ux_sq)+vx1*c1o2); - //(D7.f[2])[kw ] = ConcD*(c1o6*(ae+one)+c1o2*(ux_sq)-vx1*c1o2); - //(D7.f[3])[kn ] = ConcD*(c1o6*(ae+one)+c1o2*(uy_sq)+vx2*c1o2); - //(D7.f[4])[ks ] = ConcD*(c1o6*(ae+one)+c1o2*(uy_sq)-vx2*c1o2); - //(D7.f[5])[kt ] = ConcD*(c1o6*(ae+one)+c1o2*(uz_sq)+vx3*c1o2); - //(D7.f[6])[kb ] = ConcD*(c1o6*(ae+one)+c1o2*(uz_sq)-vx3*c1o2); - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //D3Q27 - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //index - unsigned int kzero = k; - unsigned int ke = k; - unsigned int kw = neighborX[k]; - unsigned int kn = k; - unsigned int ks = neighborY[k]; - unsigned int kt = k; - unsigned int kb = neighborZ[k]; - unsigned int ksw = neighborY[kw]; - unsigned int kne = k; - unsigned int kse = ks; - unsigned int knw = kw; - unsigned int kbw = neighborZ[kw]; - unsigned int kte = k; - unsigned int kbe = kb; - unsigned int ktw = kw; - unsigned int kbs = neighborZ[ks]; - unsigned int ktn = k; - 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 = k; - unsigned int kbsw = neighborZ[ksw]; - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real cu_sq = c3o2*(vx1*vx1 + vx2*vx2 + vx3*vx3); - - (D27.f[DIR_000])[kzero] = c8o27* ConcD*(c1o1 - cu_sq); - (D27.f[DIR_P00])[ke] = c2o27* ConcD*(c1o1 + c3o1*(vx1)+c9o2*(vx1)*(vx1)-cu_sq); - (D27.f[DIR_M00])[kw] = c2o27* ConcD*(c1o1 + c3o1*(-vx1) + c9o2*(-vx1)*(-vx1) - cu_sq); - (D27.f[DIR_0P0])[kn] = c2o27* ConcD*(c1o1 + c3o1*(vx2)+c9o2*(vx2)*(vx2)-cu_sq); - (D27.f[DIR_0M0])[ks] = c2o27* ConcD*(c1o1 + c3o1*(-vx2) + c9o2*(-vx2)*(-vx2) - cu_sq); - (D27.f[DIR_00P])[kt] = c2o27* ConcD*(c1o1 + c3o1*(vx3)+c9o2*(vx3)*(vx3)-cu_sq); - (D27.f[DIR_00M])[kb] = c2o27* ConcD*(c1o1 + c3o1*(-vx3) + c9o2*(-vx3)*(-vx3) - cu_sq); - (D27.f[DIR_PP0])[kne] = c1o54* ConcD*(c1o1 + c3o1*(vx1 + vx2) + c9o2*(vx1 + vx2)*(vx1 + vx2) - cu_sq); - (D27.f[DIR_MM0])[ksw] = c1o54* ConcD*(c1o1 + c3o1*(-vx1 - vx2) + c9o2*(-vx1 - vx2)*(-vx1 - vx2) - cu_sq); - (D27.f[DIR_PM0])[kse] = c1o54* ConcD*(c1o1 + c3o1*(vx1 - vx2) + c9o2*(vx1 - vx2)*(vx1 - vx2) - cu_sq); - (D27.f[DIR_MP0])[knw] = c1o54* ConcD*(c1o1 + c3o1*(-vx1 + vx2) + c9o2*(-vx1 + vx2)*(-vx1 + vx2) - cu_sq); - (D27.f[DIR_P0P])[kte] = c1o54* ConcD*(c1o1 + c3o1*(vx1 + vx3) + c9o2*(vx1 + vx3)*(vx1 + vx3) - cu_sq); - (D27.f[DIR_M0M])[kbw] = c1o54* ConcD*(c1o1 + c3o1*(-vx1 - vx3) + c9o2*(-vx1 - vx3)*(-vx1 - vx3) - cu_sq); - (D27.f[DIR_P0M])[kbe] = c1o54* ConcD*(c1o1 + c3o1*(vx1 - vx3) + c9o2*(vx1 - vx3)*(vx1 - vx3) - cu_sq); - (D27.f[DIR_M0P])[ktw] = c1o54* ConcD*(c1o1 + c3o1*(-vx1 + vx3) + c9o2*(-vx1 + vx3)*(-vx1 + vx3) - cu_sq); - (D27.f[DIR_0PP])[ktn] = c1o54* ConcD*(c1o1 + c3o1*(vx2 + vx3) + c9o2*(vx2 + vx3)*(vx2 + vx3) - cu_sq); - (D27.f[DIR_0MM])[kbs] = c1o54* ConcD*(c1o1 + c3o1*(-vx2 - vx3) + c9o2*(-vx2 - vx3)*(-vx2 - vx3) - cu_sq); - (D27.f[DIR_0PM])[kbn] = c1o54* ConcD*(c1o1 + c3o1*(vx2 - vx3) + c9o2*(vx2 - vx3)*(vx2 - vx3) - cu_sq); - (D27.f[DIR_0MP])[kts] = c1o54* ConcD*(c1o1 + c3o1*(-vx2 + vx3) + c9o2*(-vx2 + vx3)*(-vx2 + vx3) - cu_sq); - (D27.f[DIR_PPP])[ktne] = c1o216*ConcD*(c1o1 + c3o1*(vx1 + vx2 + vx3) + c9o2*(vx1 + vx2 + vx3)*(vx1 + vx2 + vx3) - cu_sq); - (D27.f[DIR_MMM])[kbsw] = c1o216*ConcD*(c1o1 + c3o1*(-vx1 - vx2 - vx3) + c9o2*(-vx1 - vx2 - vx3)*(-vx1 - vx2 - vx3) - cu_sq); - (D27.f[DIR_PPM])[kbne] = c1o216*ConcD*(c1o1 + c3o1*(vx1 + vx2 - vx3) + c9o2*(vx1 + vx2 - vx3)*(vx1 + vx2 - vx3) - cu_sq); - (D27.f[DIR_MMP])[ktsw] = c1o216*ConcD*(c1o1 + c3o1*(-vx1 - vx2 + vx3) + c9o2*(-vx1 - vx2 + vx3)*(-vx1 - vx2 + vx3) - cu_sq); - (D27.f[DIR_PMP])[ktse] = c1o216*ConcD*(c1o1 + c3o1*(vx1 - vx2 + vx3) + c9o2*(vx1 - vx2 + vx3)*(vx1 - vx2 + vx3) - cu_sq); - (D27.f[DIR_MPM])[kbnw] = c1o216*ConcD*(c1o1 + c3o1*(-vx1 + vx2 - vx3) + c9o2*(-vx1 + vx2 - vx3)*(-vx1 + vx2 - vx3) - cu_sq); - (D27.f[DIR_PMM])[kbse] = c1o216*ConcD*(c1o1 + c3o1*(vx1 - vx2 - vx3) + c9o2*(vx1 - vx2 - vx3)*(vx1 - vx2 - vx3) - cu_sq); - (D27.f[DIR_MPP])[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/InitCompSP27/InitCompSP27_Device.cu b/src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorStrategy/InitCompSP27/InitCompSP27_Device.cu deleted file mode 100644 index 109ea18edf183b65106ce6ed86fea05d6b005d90..0000000000000000000000000000000000000000 --- a/src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorStrategy/InitCompSP27/InitCompSP27_Device.cu +++ /dev/null @@ -1,466 +0,0 @@ -#include "LBM/LB.h" -#include "lbm/constants/D3Q27.h" -#include <basics/constants/NumericConstants.h> - -using namespace vf::basics::constant; -using namespace vf::lbm::dir; -#include "math.h" - -#include <stdio.h> - -__global__ void LB_Init_Comp_SP_27(unsigned int* neighborX, - unsigned int* neighborY, - unsigned int* neighborZ, - unsigned int* geoD, - real* rho, - real* ux, - real* uy, - real* uz, - unsigned int size_Mat, - real* DD, - bool EvenOrOdd) -{ - //////////////////////////////////////////////////////////////////////////////// - const unsigned x = threadIdx.x; // Globaler x-Index - const unsigned y = blockIdx.x; // Globaler y-Index - const unsigned z = blockIdx.y; // Globaler z-Index - - const unsigned nx = blockDim.x; - const unsigned ny = gridDim.x; - - const unsigned k = nx*(ny*z + y) + x; - ////////////////////////////////////////////////////////////////////////// - - if(k<size_Mat) - { - //////////////////////////////////////////////////////////////////////////////// - unsigned int BC; - BC = geoD[k]; - - if( BC != GEO_SOLID && BC != GEO_VOID) - { - Distributions27 D; - if (EvenOrOdd==true) - { - D.f[DIR_P00 ] = &DD[DIR_P00 *size_Mat]; - D.f[DIR_M00 ] = &DD[DIR_M00 *size_Mat]; - D.f[DIR_0P0 ] = &DD[DIR_0P0 *size_Mat]; - D.f[DIR_0M0 ] = &DD[DIR_0M0 *size_Mat]; - D.f[DIR_00P ] = &DD[DIR_00P *size_Mat]; - D.f[DIR_00M ] = &DD[DIR_00M *size_Mat]; - D.f[DIR_PP0 ] = &DD[DIR_PP0 *size_Mat]; - D.f[DIR_MM0 ] = &DD[DIR_MM0 *size_Mat]; - D.f[DIR_PM0 ] = &DD[DIR_PM0 *size_Mat]; - D.f[DIR_MP0 ] = &DD[DIR_MP0 *size_Mat]; - D.f[DIR_P0P ] = &DD[DIR_P0P *size_Mat]; - D.f[DIR_M0M ] = &DD[DIR_M0M *size_Mat]; - D.f[DIR_P0M ] = &DD[DIR_P0M *size_Mat]; - D.f[DIR_M0P ] = &DD[DIR_M0P *size_Mat]; - D.f[DIR_0PP ] = &DD[DIR_0PP *size_Mat]; - D.f[DIR_0MM ] = &DD[DIR_0MM *size_Mat]; - D.f[DIR_0PM ] = &DD[DIR_0PM *size_Mat]; - D.f[DIR_0MP ] = &DD[DIR_0MP *size_Mat]; - D.f[DIR_000] = &DD[DIR_000*size_Mat]; - D.f[DIR_PPP ] = &DD[DIR_PPP *size_Mat]; - D.f[DIR_MMP ] = &DD[DIR_MMP *size_Mat]; - D.f[DIR_PMP ] = &DD[DIR_PMP *size_Mat]; - D.f[DIR_MPP ] = &DD[DIR_MPP *size_Mat]; - D.f[DIR_PPM ] = &DD[DIR_PPM *size_Mat]; - D.f[DIR_MMM ] = &DD[DIR_MMM *size_Mat]; - D.f[DIR_PMM ] = &DD[DIR_PMM *size_Mat]; - D.f[DIR_MPM ] = &DD[DIR_MPM *size_Mat]; - } - else - { - D.f[DIR_M00 ] = &DD[DIR_P00 *size_Mat]; - D.f[DIR_P00 ] = &DD[DIR_M00 *size_Mat]; - D.f[DIR_0M0 ] = &DD[DIR_0P0 *size_Mat]; - D.f[DIR_0P0 ] = &DD[DIR_0M0 *size_Mat]; - D.f[DIR_00M ] = &DD[DIR_00P *size_Mat]; - D.f[DIR_00P ] = &DD[DIR_00M *size_Mat]; - D.f[DIR_MM0 ] = &DD[DIR_PP0 *size_Mat]; - D.f[DIR_PP0 ] = &DD[DIR_MM0 *size_Mat]; - D.f[DIR_MP0 ] = &DD[DIR_PM0 *size_Mat]; - D.f[DIR_PM0 ] = &DD[DIR_MP0 *size_Mat]; - D.f[DIR_M0M ] = &DD[DIR_P0P *size_Mat]; - D.f[DIR_P0P ] = &DD[DIR_M0M *size_Mat]; - D.f[DIR_M0P ] = &DD[DIR_P0M *size_Mat]; - D.f[DIR_P0M ] = &DD[DIR_M0P *size_Mat]; - D.f[DIR_0MM ] = &DD[DIR_0PP *size_Mat]; - D.f[DIR_0PP ] = &DD[DIR_0MM *size_Mat]; - D.f[DIR_0MP ] = &DD[DIR_0PM *size_Mat]; - D.f[DIR_0PM ] = &DD[DIR_0MP *size_Mat]; - D.f[DIR_000] = &DD[DIR_000*size_Mat]; - D.f[DIR_MMM ] = &DD[DIR_PPP *size_Mat]; - D.f[DIR_PPM ] = &DD[DIR_MMP *size_Mat]; - D.f[DIR_MPM ] = &DD[DIR_PMP *size_Mat]; - D.f[DIR_PMM ] = &DD[DIR_MPP *size_Mat]; - D.f[DIR_MMP ] = &DD[DIR_PPM *size_Mat]; - D.f[DIR_PPP ] = &DD[DIR_MMM *size_Mat]; - D.f[DIR_MPP ] = &DD[DIR_PMM *size_Mat]; - D.f[DIR_PMP ] = &DD[DIR_MPM *size_Mat]; - } - ////////////////////////////////////////////////////////////////////////// - real drho = rho[k];//0.0f;// - real vx1 = ux[k]; //0.0f;// - real vx2 = uy[k]; //0.0f;// - real vx3 = uz[k]; //0.0f;// - ////////////////////////////////////////////////////////////////////////// - //index - ////////////////////////////////////////////////////////////////////////// - unsigned int kzero= k; - unsigned int ke = k; - unsigned int kw = neighborX[k]; - unsigned int kn = k; - unsigned int ks = neighborY[k]; - unsigned int kt = k; - unsigned int kb = neighborZ[k]; - unsigned int ksw = neighborY[kw]; - unsigned int kne = k; - unsigned int kse = ks; - unsigned int knw = kw; - unsigned int kbw = neighborZ[kw]; - unsigned int kte = k; - unsigned int kbe = kb; - unsigned int ktw = kw; - unsigned int kbs = neighborZ[ks]; - unsigned int ktn = k; - 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 = k; - unsigned int kbsw = neighborZ[ksw]; - ////////////////////////////////////////////////////////////////////////// - real cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3); - - (D.f[DIR_000])[kzero] = c8o27* (drho-cu_sq*(c1o1+drho)); - (D.f[DIR_P00 ])[ke ] = c2o27* (drho+ (c1o1+drho) * (c3o1*( vx1 )+c9o2*( vx1 )*( vx1 )-cu_sq)); - (D.f[DIR_M00 ])[kw ] = c2o27* (drho+ (c1o1+drho) * (c3o1*(-vx1 )+c9o2*(-vx1 )*(-vx1 )-cu_sq)); - (D.f[DIR_0P0 ])[kn ] = c2o27* (drho+ (c1o1+drho) * (c3o1*( vx2 )+c9o2*( vx2 )*( vx2 )-cu_sq)); - (D.f[DIR_0M0 ])[ks ] = c2o27* (drho+ (c1o1+drho) * (c3o1*( -vx2 )+c9o2*( -vx2 )*( -vx2 )-cu_sq)); - (D.f[DIR_00P ])[kt ] = c2o27* (drho+ (c1o1+drho) * (c3o1*( vx3)+c9o2*( vx3)*( vx3)-cu_sq)); - (D.f[DIR_00M ])[kb ] = c2o27* (drho+ (c1o1+drho) * (c3o1*( -vx3)+c9o2*( -vx3)*( -vx3)-cu_sq)); - (D.f[DIR_PP0 ])[kne ] = c1o54* (drho+ (c1o1+drho) * (c3o1*( vx1+vx2 )+c9o2*( vx1+vx2 )*( vx1+vx2 )-cu_sq)); - (D.f[DIR_MM0 ])[ksw ] = c1o54* (drho+ (c1o1+drho) * (c3o1*(-vx1-vx2 )+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq)); - (D.f[DIR_PM0 ])[kse ] = c1o54* (drho+ (c1o1+drho) * (c3o1*( vx1-vx2 )+c9o2*( vx1-vx2 )*( vx1-vx2 )-cu_sq)); - (D.f[DIR_MP0 ])[knw ] = c1o54* (drho+ (c1o1+drho) * (c3o1*(-vx1+vx2 )+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq)); - (D.f[DIR_P0P ])[kte ] = c1o54* (drho+ (c1o1+drho) * (c3o1*( vx1 +vx3)+c9o2*( vx1 +vx3)*( vx1 +vx3)-cu_sq)); - (D.f[DIR_M0M ])[kbw ] = c1o54* (drho+ (c1o1+drho) * (c3o1*(-vx1 -vx3)+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq)); - (D.f[DIR_P0M ])[kbe ] = c1o54* (drho+ (c1o1+drho) * (c3o1*( vx1 -vx3)+c9o2*( vx1 -vx3)*( vx1 -vx3)-cu_sq)); - (D.f[DIR_M0P ])[ktw ] = c1o54* (drho+ (c1o1+drho) * (c3o1*(-vx1 +vx3)+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq)); - (D.f[DIR_0PP ])[ktn ] = c1o54* (drho+ (c1o1+drho) * (c3o1*( vx2+vx3)+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq)); - (D.f[DIR_0MM ])[kbs ] = c1o54* (drho+ (c1o1+drho) * (c3o1*( -vx2-vx3)+c9o2*( -vx2-vx3)*( -vx2-vx3)-cu_sq)); - (D.f[DIR_0PM ])[kbn ] = c1o54* (drho+ (c1o1+drho) * (c3o1*( vx2-vx3)+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq)); - (D.f[DIR_0MP ])[kts ] = c1o54* (drho+ (c1o1+drho) * (c3o1*( -vx2+vx3)+c9o2*( -vx2+vx3)*( -vx2+vx3)-cu_sq)); - (D.f[DIR_PPP ])[ktne ] = c1o216*(drho+ (c1o1+drho) * (c3o1*( vx1+vx2+vx3)+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq)); - (D.f[DIR_MMM ])[kbsw ] = c1o216*(drho+ (c1o1+drho) * (c3o1*(-vx1-vx2-vx3)+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq)); - (D.f[DIR_PPM ])[kbne ] = c1o216*(drho+ (c1o1+drho) * (c3o1*( vx1+vx2-vx3)+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq)); - (D.f[DIR_MMP ])[ktsw ] = c1o216*(drho+ (c1o1+drho) * (c3o1*(-vx1-vx2+vx3)+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq)); - (D.f[DIR_PMP ])[ktse ] = c1o216*(drho+ (c1o1+drho) * (c3o1*( vx1-vx2+vx3)+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq)); - (D.f[DIR_MPM ])[kbnw ] = c1o216*(drho+ (c1o1+drho) * (c3o1*(-vx1+vx2-vx3)+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq)); - (D.f[DIR_PMM ])[kbse ] = c1o216*(drho+ (c1o1+drho) * (c3o1*( vx1-vx2-vx3)+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq)); - (D.f[DIR_MPP ])[ktnw ] = c1o216*(drho+ (c1o1+drho) * (c3o1*(-vx1+vx2+vx3)+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq)); - } - } -} - - - - - - - - - - -//////////////////////////////////////////////////////////////////////////////// -__global__ void LB_Init_Comp_Neq_SP_27( unsigned int* neighborX, - unsigned int* neighborY, - unsigned int* neighborZ, - unsigned int* neighborWSB, - unsigned int* geoD, - real* rho, - real* ux, - real* uy, - real* uz, - unsigned int size_Mat, - real* DD, - real omega, - bool EvenOrOdd) -{ - //////////////////////////////////////////////////////////////////////////////// - const unsigned x = threadIdx.x; // Globaler x-Index - const unsigned y = blockIdx.x; // Globaler y-Index - const unsigned z = blockIdx.y; // Globaler z-Index - - const unsigned nx = blockDim.x; - const unsigned ny = gridDim.x; - - const unsigned k = nx*(ny*z + y) + x; - ////////////////////////////////////////////////////////////////////////// - - if(k<size_Mat) - { - //////////////////////////////////////////////////////////////////////////////// - unsigned int BC; - BC = geoD[k]; - - if( BC != GEO_SOLID && BC != GEO_VOID) - { - Distributions27 D; - if (EvenOrOdd==true) - { - D.f[DIR_P00 ] = &DD[DIR_P00 *size_Mat]; - D.f[DIR_M00 ] = &DD[DIR_M00 *size_Mat]; - D.f[DIR_0P0 ] = &DD[DIR_0P0 *size_Mat]; - D.f[DIR_0M0 ] = &DD[DIR_0M0 *size_Mat]; - D.f[DIR_00P ] = &DD[DIR_00P *size_Mat]; - D.f[DIR_00M ] = &DD[DIR_00M *size_Mat]; - D.f[DIR_PP0 ] = &DD[DIR_PP0 *size_Mat]; - D.f[DIR_MM0 ] = &DD[DIR_MM0 *size_Mat]; - D.f[DIR_PM0 ] = &DD[DIR_PM0 *size_Mat]; - D.f[DIR_MP0 ] = &DD[DIR_MP0 *size_Mat]; - D.f[DIR_P0P ] = &DD[DIR_P0P *size_Mat]; - D.f[DIR_M0M ] = &DD[DIR_M0M *size_Mat]; - D.f[DIR_P0M ] = &DD[DIR_P0M *size_Mat]; - D.f[DIR_M0P ] = &DD[DIR_M0P *size_Mat]; - D.f[DIR_0PP ] = &DD[DIR_0PP *size_Mat]; - D.f[DIR_0MM ] = &DD[DIR_0MM *size_Mat]; - D.f[DIR_0PM ] = &DD[DIR_0PM *size_Mat]; - D.f[DIR_0MP ] = &DD[DIR_0MP *size_Mat]; - D.f[DIR_000] = &DD[DIR_000*size_Mat]; - D.f[DIR_PPP ] = &DD[DIR_PPP *size_Mat]; - D.f[DIR_MMP ] = &DD[DIR_MMP *size_Mat]; - D.f[DIR_PMP ] = &DD[DIR_PMP *size_Mat]; - D.f[DIR_MPP ] = &DD[DIR_MPP *size_Mat]; - D.f[DIR_PPM ] = &DD[DIR_PPM *size_Mat]; - D.f[DIR_MMM ] = &DD[DIR_MMM *size_Mat]; - D.f[DIR_PMM ] = &DD[DIR_PMM *size_Mat]; - D.f[DIR_MPM ] = &DD[DIR_MPM *size_Mat]; - } - else - { - D.f[DIR_M00 ] = &DD[DIR_P00 *size_Mat]; - D.f[DIR_P00 ] = &DD[DIR_M00 *size_Mat]; - D.f[DIR_0M0 ] = &DD[DIR_0P0 *size_Mat]; - D.f[DIR_0P0 ] = &DD[DIR_0M0 *size_Mat]; - D.f[DIR_00M ] = &DD[DIR_00P *size_Mat]; - D.f[DIR_00P ] = &DD[DIR_00M *size_Mat]; - D.f[DIR_MM0 ] = &DD[DIR_PP0 *size_Mat]; - D.f[DIR_PP0 ] = &DD[DIR_MM0 *size_Mat]; - D.f[DIR_MP0 ] = &DD[DIR_PM0 *size_Mat]; - D.f[DIR_PM0 ] = &DD[DIR_MP0 *size_Mat]; - D.f[DIR_M0M ] = &DD[DIR_P0P *size_Mat]; - D.f[DIR_P0P ] = &DD[DIR_M0M *size_Mat]; - D.f[DIR_M0P ] = &DD[DIR_P0M *size_Mat]; - D.f[DIR_P0M ] = &DD[DIR_M0P *size_Mat]; - D.f[DIR_0MM ] = &DD[DIR_0PP *size_Mat]; - D.f[DIR_0PP ] = &DD[DIR_0MM *size_Mat]; - D.f[DIR_0MP ] = &DD[DIR_0PM *size_Mat]; - D.f[DIR_0PM ] = &DD[DIR_0MP *size_Mat]; - D.f[DIR_000] = &DD[DIR_000*size_Mat]; - D.f[DIR_MMM ] = &DD[DIR_PPP *size_Mat]; - D.f[DIR_PPM ] = &DD[DIR_MMP *size_Mat]; - D.f[DIR_MPM ] = &DD[DIR_PMP *size_Mat]; - D.f[DIR_PMM ] = &DD[DIR_MPP *size_Mat]; - D.f[DIR_MMP ] = &DD[DIR_PPM *size_Mat]; - D.f[DIR_PPP ] = &DD[DIR_MMM *size_Mat]; - D.f[DIR_MPP ] = &DD[DIR_PMM *size_Mat]; - D.f[DIR_PMP ] = &DD[DIR_MPM *size_Mat]; - } - ////////////////////////////////////////////////////////////////////////// - real drho = rho[k];//0.0f;// - real vx1 = ux[k]; //0.0f;// - real vx2 = uy[k]; //0.0f;// - real vx3 = uz[k]; //0.0f;// - ////////////////////////////////////////////////////////////////////////// - //index - ////////////////////////////////////////////////////////////////////////// - unsigned int kzero= k; - unsigned int ke = k; - unsigned int kw = neighborX[k]; - unsigned int kn = k; - unsigned int ks = neighborY[k]; - unsigned int kt = k; - unsigned int kb = neighborZ[k]; - unsigned int ksw = neighborY[kw]; - unsigned int kne = k; - unsigned int kse = ks; - unsigned int knw = kw; - unsigned int kbw = neighborZ[kw]; - unsigned int kte = k; - unsigned int kbe = kb; - unsigned int ktw = kw; - unsigned int kbs = neighborZ[ks]; - unsigned int ktn = k; - 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 = k; - unsigned int kbsw = neighborZ[ksw]; - ////////////////////////////////////////////////////////////////////////////// - //neighbor index - uint kPx = neighborX[k]; - uint kPy = neighborY[k]; - uint kPz = neighborZ[k]; - uint kMxyz = neighborWSB[k]; - uint kMx = neighborZ[neighborY[kMxyz]]; - uint kMy = neighborZ[neighborX[kMxyz]]; - uint kMz = neighborY[neighborX[kMxyz]]; - ////////////////////////////////////////////////////////////////////////// - //getVeloX// - real vx1NeighborPx = ux[kPx]; - real vx1NeighborMx = ux[kMx]; - real vx1NeighborPy = ux[kPy]; - real vx1NeighborMy = ux[kMy]; - real vx1NeighborPz = ux[kPz]; - real vx1NeighborMz = ux[kMz]; - //getVeloY// - real vx2NeighborPx = uy[kPx]; - real vx2NeighborMx = uy[kMx]; - real vx2NeighborPy = uy[kPy]; - real vx2NeighborMy = uy[kMy]; - real vx2NeighborPz = uy[kPz]; - real vx2NeighborMz = uy[kMz]; - //getVeloZ// - real vx3NeighborPx = uz[kPx]; - real vx3NeighborMx = uz[kMx]; - real vx3NeighborPy = uz[kPy]; - real vx3NeighborMy = uz[kMy]; - real vx3NeighborPz = uz[kPz]; - real vx3NeighborMz = uz[kMz]; - ////////////////////////////////////////////////////////////////////////// - - real dvx1dx = (vx1NeighborPx - vx1NeighborMx) / c2o1; - real dvx1dy = (vx1NeighborPy - vx1NeighborMy) / c2o1; - real dvx1dz = (vx1NeighborPz - vx1NeighborMz) / c2o1; - - real dvx2dx = (vx2NeighborPx - vx2NeighborMx) / c2o1; - real dvx2dy = (vx2NeighborPy - vx2NeighborMy) / c2o1; - real dvx2dz = (vx2NeighborPz - vx2NeighborMz) / c2o1; - - real dvx3dx = (vx3NeighborPx - vx3NeighborMx) / c2o1; - real dvx3dy = (vx3NeighborPy - vx3NeighborMy) / c2o1; - real dvx3dz = (vx3NeighborPz - vx3NeighborMz) / c2o1; - - ////////////////////////////////////////////////////////////////////////// - - // the following code is copy and pasted from VirtualFluidsVisitors/InitDistributionsBlockVisitor.cpp - // i.e. Konstantins code - - real ax = dvx1dx; - real ay = dvx1dy; - real az = dvx1dz; - - real bx = dvx2dx; - real by = dvx2dy; - real bz = dvx2dz; - - real cx = dvx3dx; - real cy = dvx3dy; - real cz = dvx3dz; - - real eps_new = c1o1; - real op = c1o1; - real o = omega; - - real f_E = eps_new *((5.*ax*o + 5.*by*o + 5.*cz*o - 8.*ax*op + 4.*by*op + 4.*cz*op)/(54.*o*op)); - - real f_N = f_E + eps_new *((2.*(ax - by))/(9.*o)); - real f_T = f_E + eps_new *((2.*(ax - cz))/(9.*o)); - real f_NE = eps_new *(-(5.*cz*o + 3.*(ay + bx)*op - 2.*cz*op + ax*(5.*o + op) + by*(5.*o + op))/(54.*o*op)); - real f_SE = f_NE + eps_new *(( ay + bx )/(9.*o)); - real f_TE = eps_new *(-(5.*cz*o + by*(5.*o - 2.*op) + 3.*(az + cx)*op + cz*op + ax*(5.*o + op))/(54.*o*op)); - real f_BE = f_TE + eps_new *(( az + cx )/(9.*o)); - real f_TN = eps_new *(-(5.*ax*o + 5.*by*o + 5.*cz*o - 2.*ax*op + by*op + 3.*bz*op + 3.*cy*op + cz*op)/(54.*o*op)); - real f_BN = f_TN + eps_new *(( bz + cy )/(9.*o)); - real f_ZERO = eps_new *((5.*(ax + by + cz))/(9.*op)); - real f_TNE = eps_new *(-(ay + az + bx + bz + cx + cy)/(72.*o)); - real f_TSW = - f_TNE - eps_new *((ay + bx)/(36.*o)); - real f_TSE = - f_TNE - eps_new *((az + cx)/(36.*o)); - real f_TNW = - f_TNE - eps_new *((bz + cy)/(36.*o)); - - ////////////////////////////////////////////////////////////////////////// - real cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3); - - (D.f[DIR_000])[kzero] = c8o27* (drho-cu_sq*(c1o1+drho)); - (D.f[DIR_P00 ])[ke ] = c2o27* (drho+ (c1o1+drho) * (c3o1*( vx1 )+c9o2*( vx1 )*( vx1 )-cu_sq)); - (D.f[DIR_M00 ])[kw ] = c2o27* (drho+ (c1o1+drho) * (c3o1*(-vx1 )+c9o2*(-vx1 )*(-vx1 )-cu_sq)); - (D.f[DIR_0P0 ])[kn ] = c2o27* (drho+ (c1o1+drho) * (c3o1*( vx2 )+c9o2*( vx2 )*( vx2 )-cu_sq)); - (D.f[DIR_0M0 ])[ks ] = c2o27* (drho+ (c1o1+drho) * (c3o1*( -vx2 )+c9o2*( -vx2 )*( -vx2 )-cu_sq)); - (D.f[DIR_00P ])[kt ] = c2o27* (drho+ (c1o1+drho) * (c3o1*( vx3)+c9o2*( vx3)*( vx3)-cu_sq)); - (D.f[DIR_00M ])[kb ] = c2o27* (drho+ (c1o1+drho) * (c3o1*( -vx3)+c9o2*( -vx3)*( -vx3)-cu_sq)); - (D.f[DIR_PP0 ])[kne ] = c1o54* (drho+ (c1o1+drho) * (c3o1*( vx1+vx2 )+c9o2*( vx1+vx2 )*( vx1+vx2 )-cu_sq)); - (D.f[DIR_MM0 ])[ksw ] = c1o54* (drho+ (c1o1+drho) * (c3o1*(-vx1-vx2 )+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq)); - (D.f[DIR_PM0 ])[kse ] = c1o54* (drho+ (c1o1+drho) * (c3o1*( vx1-vx2 )+c9o2*( vx1-vx2 )*( vx1-vx2 )-cu_sq)); - (D.f[DIR_MP0 ])[knw ] = c1o54* (drho+ (c1o1+drho) * (c3o1*(-vx1+vx2 )+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq)); - (D.f[DIR_P0P ])[kte ] = c1o54* (drho+ (c1o1+drho) * (c3o1*( vx1 +vx3)+c9o2*( vx1 +vx3)*( vx1 +vx3)-cu_sq)); - (D.f[DIR_M0M ])[kbw ] = c1o54* (drho+ (c1o1+drho) * (c3o1*(-vx1 -vx3)+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq)); - (D.f[DIR_P0M ])[kbe ] = c1o54* (drho+ (c1o1+drho) * (c3o1*( vx1 -vx3)+c9o2*( vx1 -vx3)*( vx1 -vx3)-cu_sq)); - (D.f[DIR_M0P ])[ktw ] = c1o54* (drho+ (c1o1+drho) * (c3o1*(-vx1 +vx3)+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq)); - (D.f[DIR_0PP ])[ktn ] = c1o54* (drho+ (c1o1+drho) * (c3o1*( vx2+vx3)+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq)); - (D.f[DIR_0MM ])[kbs ] = c1o54* (drho+ (c1o1+drho) * (c3o1*( -vx2-vx3)+c9o2*( -vx2-vx3)*( -vx2-vx3)-cu_sq)); - (D.f[DIR_0PM ])[kbn ] = c1o54* (drho+ (c1o1+drho) * (c3o1*( vx2-vx3)+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq)); - (D.f[DIR_0MP ])[kts ] = c1o54* (drho+ (c1o1+drho) * (c3o1*( -vx2+vx3)+c9o2*( -vx2+vx3)*( -vx2+vx3)-cu_sq)); - (D.f[DIR_PPP ])[ktne ] = c1o216*(drho+ (c1o1+drho) * (c3o1*( vx1+vx2+vx3)+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq)); - (D.f[DIR_MMM ])[kbsw ] = c1o216*(drho+ (c1o1+drho) * (c3o1*(-vx1-vx2-vx3)+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq)); - (D.f[DIR_PPM ])[kbne ] = c1o216*(drho+ (c1o1+drho) * (c3o1*( vx1+vx2-vx3)+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq)); - (D.f[DIR_MMP ])[ktsw ] = c1o216*(drho+ (c1o1+drho) * (c3o1*(-vx1-vx2+vx3)+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq)); - (D.f[DIR_PMP ])[ktse ] = c1o216*(drho+ (c1o1+drho) * (c3o1*( vx1-vx2+vx3)+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq)); - (D.f[DIR_MPM ])[kbnw ] = c1o216*(drho+ (c1o1+drho) * (c3o1*(-vx1+vx2-vx3)+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq)); - (D.f[DIR_PMM ])[kbse ] = c1o216*(drho+ (c1o1+drho) * (c3o1*( vx1-vx2-vx3)+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq)); - (D.f[DIR_MPP ])[ktnw ] = c1o216*(drho+ (c1o1+drho) * (c3o1*(-vx1+vx2+vx3)+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq)); - - ////////////////////////////////////////////////////////////////////////// - - (D.f[DIR_000])[kzero] += (c1o1+drho) * f_ZERO; - (D.f[DIR_P00 ])[ke ] += (c1o1+drho) * f_E ; - (D.f[DIR_M00 ])[kw ] += (c1o1+drho) * f_E ; - (D.f[DIR_0P0 ])[kn ] += (c1o1+drho) * f_N ; - (D.f[DIR_0M0 ])[ks ] += (c1o1+drho) * f_N ; - (D.f[DIR_00P ])[kt ] += (c1o1+drho) * f_T ; - (D.f[DIR_00M ])[kb ] += (c1o1+drho) * f_T ; - (D.f[DIR_PP0 ])[kne ] += (c1o1+drho) * f_NE ; - (D.f[DIR_MM0 ])[ksw ] += (c1o1+drho) * f_NE ; - (D.f[DIR_PM0 ])[kse ] += (c1o1+drho) * f_SE ; - (D.f[DIR_MP0 ])[knw ] += (c1o1+drho) * f_SE ; - (D.f[DIR_P0P ])[kte ] += (c1o1+drho) * f_TE ; - (D.f[DIR_M0M ])[kbw ] += (c1o1+drho) * f_TE ; - (D.f[DIR_P0M ])[kbe ] += (c1o1+drho) * f_BE ; - (D.f[DIR_M0P ])[ktw ] += (c1o1+drho) * f_BE ; - (D.f[DIR_0PP ])[ktn ] += (c1o1+drho) * f_TN ; - (D.f[DIR_0MM ])[kbs ] += (c1o1+drho) * f_TN ; - (D.f[DIR_0PM ])[kbn ] += (c1o1+drho) * f_BN ; - (D.f[DIR_0MP ])[kts ] += (c1o1+drho) * f_BN ; - (D.f[DIR_PPP ])[ktne ] += (c1o1+drho) * f_TNE ; - (D.f[DIR_MMM ])[kbsw ] += (c1o1+drho) * f_TNE ; - (D.f[DIR_PPM ])[kbne ] += (c1o1+drho) * f_TSW ; - (D.f[DIR_MMP ])[ktsw ] += (c1o1+drho) * f_TSW ; - (D.f[DIR_PMP ])[ktse ] += (c1o1+drho) * f_TSE ; - (D.f[DIR_MPM ])[kbnw ] += (c1o1+drho) * f_TSE ; - (D.f[DIR_PMM ])[kbse ] += (c1o1+drho) * f_TNW ; - (D.f[DIR_MPP ])[ktnw ] += (c1o1+drho) * f_TNW ; - - ////////////////////////////////////////////////////////////////////////// - } - else - { - ////////////////////////////////////////////////////////////////////////// - Distributions27 D; - D.f[DIR_000] = &DD[DIR_000*size_Mat]; - ////////////////////////////////////////////////////////////////////////// - (D.f[DIR_000])[k] = c96o1; - ////////////////////////////////////////////////////////////////////////// - } - } -} \ 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 deleted file mode 100644 index 869169c525bf7f64a2c1ac9e1cf2d9678efdb28b..0000000000000000000000000000000000000000 --- a/src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorStrategy/InitIncompAD27/InitIncompAD27_Device.cu +++ /dev/null @@ -1,173 +0,0 @@ -#include "LBM/LB.h" -#include "lbm/constants/D3Q27.h" -#include <basics/constants/NumericConstants.h> - -using namespace vf::basics::constant; -using namespace vf::lbm::dir; -#include "math.h" - -__global__ void LB_Init_Incomp_AD_27(unsigned int* neighborX, - unsigned int* neighborY, - unsigned int* neighborZ, - unsigned int* geoD, - real* Conc, - real* ux, - real* uy, - real* uz, - unsigned int size_Mat, - real* DD27, - bool EvenOrOdd) -{ - //////////////////////////////////////////////////////////////////////////////// - const unsigned x = threadIdx.x; // Globaler x-Index - const unsigned y = blockIdx.x; // Globaler y-Index - const unsigned z = blockIdx.y; // Globaler z-Index - - const unsigned nx = blockDim.x; - const unsigned ny = gridDim.x; - - const unsigned k = nx*(ny*z + y) + x; - ////////////////////////////////////////////////////////////////////////// - - if(k<size_Mat) - { - //////////////////////////////////////////////////////////////////////////////// - unsigned int BC; - BC = geoD[k]; - - if( BC != GEO_SOLID && BC != GEO_VOID) - { - Distributions27 D27; - if (EvenOrOdd==true) - { - D27.f[DIR_P00 ] = &DD27[DIR_P00 *size_Mat]; - D27.f[DIR_M00 ] = &DD27[DIR_M00 *size_Mat]; - D27.f[DIR_0P0 ] = &DD27[DIR_0P0 *size_Mat]; - D27.f[DIR_0M0 ] = &DD27[DIR_0M0 *size_Mat]; - D27.f[DIR_00P ] = &DD27[DIR_00P *size_Mat]; - D27.f[DIR_00M ] = &DD27[DIR_00M *size_Mat]; - D27.f[DIR_PP0 ] = &DD27[DIR_PP0 *size_Mat]; - D27.f[DIR_MM0 ] = &DD27[DIR_MM0 *size_Mat]; - D27.f[DIR_PM0 ] = &DD27[DIR_PM0 *size_Mat]; - D27.f[DIR_MP0 ] = &DD27[DIR_MP0 *size_Mat]; - D27.f[DIR_P0P ] = &DD27[DIR_P0P *size_Mat]; - D27.f[DIR_M0M ] = &DD27[DIR_M0M *size_Mat]; - D27.f[DIR_P0M ] = &DD27[DIR_P0M *size_Mat]; - D27.f[DIR_M0P ] = &DD27[DIR_M0P *size_Mat]; - D27.f[DIR_0PP ] = &DD27[DIR_0PP *size_Mat]; - D27.f[DIR_0MM ] = &DD27[DIR_0MM *size_Mat]; - D27.f[DIR_0PM ] = &DD27[DIR_0PM *size_Mat]; - D27.f[DIR_0MP ] = &DD27[DIR_0MP *size_Mat]; - D27.f[DIR_000] = &DD27[DIR_000*size_Mat]; - D27.f[DIR_PPP ] = &DD27[DIR_PPP *size_Mat]; - D27.f[DIR_MMP ] = &DD27[DIR_MMP *size_Mat]; - D27.f[DIR_PMP ] = &DD27[DIR_PMP *size_Mat]; - D27.f[DIR_MPP ] = &DD27[DIR_MPP *size_Mat]; - D27.f[DIR_PPM ] = &DD27[DIR_PPM *size_Mat]; - D27.f[DIR_MMM ] = &DD27[DIR_MMM *size_Mat]; - D27.f[DIR_PMM ] = &DD27[DIR_PMM *size_Mat]; - D27.f[DIR_MPM ] = &DD27[DIR_MPM *size_Mat]; - } - else - { - D27.f[DIR_M00 ] = &DD27[DIR_P00 *size_Mat]; - D27.f[DIR_P00 ] = &DD27[DIR_M00 *size_Mat]; - D27.f[DIR_0M0 ] = &DD27[DIR_0P0 *size_Mat]; - D27.f[DIR_0P0 ] = &DD27[DIR_0M0 *size_Mat]; - D27.f[DIR_00M ] = &DD27[DIR_00P *size_Mat]; - D27.f[DIR_00P ] = &DD27[DIR_00M *size_Mat]; - D27.f[DIR_MM0 ] = &DD27[DIR_PP0 *size_Mat]; - D27.f[DIR_PP0 ] = &DD27[DIR_MM0 *size_Mat]; - D27.f[DIR_MP0 ] = &DD27[DIR_PM0 *size_Mat]; - D27.f[DIR_PM0 ] = &DD27[DIR_MP0 *size_Mat]; - D27.f[DIR_M0M ] = &DD27[DIR_P0P *size_Mat]; - D27.f[DIR_P0P ] = &DD27[DIR_M0M *size_Mat]; - D27.f[DIR_M0P ] = &DD27[DIR_P0M *size_Mat]; - D27.f[DIR_P0M ] = &DD27[DIR_M0P *size_Mat]; - D27.f[DIR_0MM ] = &DD27[DIR_0PP *size_Mat]; - D27.f[DIR_0PP ] = &DD27[DIR_0MM *size_Mat]; - D27.f[DIR_0MP ] = &DD27[DIR_0PM *size_Mat]; - D27.f[DIR_0PM ] = &DD27[DIR_0MP *size_Mat]; - D27.f[DIR_000] = &DD27[DIR_000*size_Mat]; - D27.f[DIR_MMM ] = &DD27[DIR_PPP *size_Mat]; - D27.f[DIR_PPM ] = &DD27[DIR_MMP *size_Mat]; - D27.f[DIR_MPM ] = &DD27[DIR_PMP *size_Mat]; - D27.f[DIR_PMM ] = &DD27[DIR_MPP *size_Mat]; - D27.f[DIR_MMP ] = &DD27[DIR_PPM *size_Mat]; - D27.f[DIR_PPP ] = &DD27[DIR_MMM *size_Mat]; - D27.f[DIR_MPP ] = &DD27[DIR_PMM *size_Mat]; - D27.f[DIR_PMP ] = &DD27[DIR_MPM *size_Mat]; - } - ////////////////////////////////////////////////////////////////////////// - real ConcD = Conc[k]; - real vx1 = ux[k]; - real vx2 = uy[k]; - real vx3 = uz[k]; - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - - - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //D3Q27 - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //index - unsigned int kzero= k; - unsigned int ke = k; - unsigned int kw = neighborX[k]; - unsigned int kn = k; - unsigned int ks = neighborY[k]; - unsigned int kt = k; - unsigned int kb = neighborZ[k]; - unsigned int ksw = neighborY[kw]; - unsigned int kne = k; - unsigned int kse = ks; - unsigned int knw = kw; - unsigned int kbw = neighborZ[kw]; - unsigned int kte = k; - unsigned int kbe = kb; - unsigned int ktw = kw; - unsigned int kbs = neighborZ[ks]; - unsigned int ktn = k; - 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 = k; - unsigned int kbsw = neighborZ[ksw]; - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3); - - (D27.f[DIR_000])[kzero] = c8o27* ConcD*(c1o1-cu_sq); - (D27.f[DIR_P00 ])[ke ] = c2o27* ConcD*(c1o1+c3o1*( vx1 )+c9o2*( vx1 )*( vx1 )-cu_sq); - (D27.f[DIR_M00 ])[kw ] = c2o27* ConcD*(c1o1+c3o1*(-vx1 )+c9o2*(-vx1 )*(-vx1 )-cu_sq); - (D27.f[DIR_0P0 ])[kn ] = c2o27* ConcD*(c1o1+c3o1*( vx2 )+c9o2*( vx2 )*( vx2 )-cu_sq); - (D27.f[DIR_0M0 ])[ks ] = c2o27* ConcD*(c1o1+c3o1*( -vx2 )+c9o2*( -vx2 )*( -vx2 )-cu_sq); - (D27.f[DIR_00P ])[kt ] = c2o27* ConcD*(c1o1+c3o1*( vx3)+c9o2*( vx3)*( vx3)-cu_sq); - (D27.f[DIR_00M ])[kb ] = c2o27* ConcD*(c1o1+c3o1*( -vx3)+c9o2*( -vx3)*( -vx3)-cu_sq); - (D27.f[DIR_PP0 ])[kne ] = c1o54* ConcD*(c1o1+c3o1*( vx1+vx2 )+c9o2*( vx1+vx2 )*( vx1+vx2 )-cu_sq); - (D27.f[DIR_MM0 ])[ksw ] = c1o54* ConcD*(c1o1+c3o1*(-vx1-vx2 )+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq); - (D27.f[DIR_PM0 ])[kse ] = c1o54* ConcD*(c1o1+c3o1*( vx1-vx2 )+c9o2*( vx1-vx2 )*( vx1-vx2 )-cu_sq); - (D27.f[DIR_MP0 ])[knw ] = c1o54* ConcD*(c1o1+c3o1*(-vx1+vx2 )+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq); - (D27.f[DIR_P0P ])[kte ] = c1o54* ConcD*(c1o1+c3o1*( vx1 +vx3)+c9o2*( vx1 +vx3)*( vx1 +vx3)-cu_sq); - (D27.f[DIR_M0M ])[kbw ] = c1o54* ConcD*(c1o1+c3o1*(-vx1 -vx3)+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq); - (D27.f[DIR_P0M ])[kbe ] = c1o54* ConcD*(c1o1+c3o1*( vx1 -vx3)+c9o2*( vx1 -vx3)*( vx1 -vx3)-cu_sq); - (D27.f[DIR_M0P ])[ktw ] = c1o54* ConcD*(c1o1+c3o1*(-vx1 +vx3)+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq); - (D27.f[DIR_0PP ])[ktn ] = c1o54* ConcD*(c1o1+c3o1*( vx2+vx3)+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq); - (D27.f[DIR_0MM ])[kbs ] = c1o54* ConcD*(c1o1+c3o1*( -vx2-vx3)+c9o2*( -vx2-vx3)*( -vx2-vx3)-cu_sq); - (D27.f[DIR_0PM ])[kbn ] = c1o54* ConcD*(c1o1+c3o1*( vx2-vx3)+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq); - (D27.f[DIR_0MP ])[kts ] = c1o54* ConcD*(c1o1+c3o1*( -vx2+vx3)+c9o2*( -vx2+vx3)*( -vx2+vx3)-cu_sq); - (D27.f[DIR_PPP ])[ktne ] = c1o216*ConcD*(c1o1+c3o1*( vx1+vx2+vx3)+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq); - (D27.f[DIR_MMM ])[kbsw ] = c1o216*ConcD*(c1o1+c3o1*(-vx1-vx2-vx3)+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq); - (D27.f[DIR_PPM ])[kbne ] = c1o216*ConcD*(c1o1+c3o1*( vx1+vx2-vx3)+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq); - (D27.f[DIR_MMP ])[ktsw ] = c1o216*ConcD*(c1o1+c3o1*(-vx1-vx2+vx3)+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq); - (D27.f[DIR_PMP ])[ktse ] = c1o216*ConcD*(c1o1+c3o1*( vx1-vx2+vx3)+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq); - (D27.f[DIR_MPM ])[kbnw ] = c1o216*ConcD*(c1o1+c3o1*(-vx1+vx2-vx3)+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq); - (D27.f[DIR_PMM ])[kbse ] = c1o216*ConcD*(c1o1+c3o1*( vx1-vx2-vx3)+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq); - (D27.f[DIR_MPP ])[ktnw ] = c1o216*ConcD*(c1o1+c3o1*(-vx1+vx2+vx3)+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq); - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - } - } -} \ No newline at end of file diff --git a/src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorStrategy/InitSP27/InitSP27_Device.cu b/src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorStrategy/InitSP27/InitSP27_Device.cu deleted file mode 100644 index 87abb17176942594280fae7b7592f31303ba746d..0000000000000000000000000000000000000000 --- a/src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorStrategy/InitSP27/InitSP27_Device.cu +++ /dev/null @@ -1,177 +0,0 @@ -#include "LBM/LB.h" -#include "lbm/constants/D3Q27.h" -#include <basics/constants/NumericConstants.h> - -using namespace vf::basics::constant; -using namespace vf::lbm::dir; -#include "math.h" - -__global__ void LB_Init_SP_27(unsigned int* neighborX, - unsigned int* neighborY, - unsigned int* neighborZ, - unsigned int* geoD, - real* rho, - real* ux, - real* uy, - real* uz, - unsigned int size_Mat, - real* DD, - bool EvenOrOdd) -{ - //////////////////////////////////////////////////////////////////////////////// - const unsigned x = threadIdx.x; // Globaler x-Index - const unsigned y = blockIdx.x; // Globaler y-Index - const unsigned z = blockIdx.y; // Globaler z-Index - - const unsigned nx = blockDim.x; - const unsigned ny = gridDim.x; - - const unsigned k = nx*(ny*z + y) + x; - ////////////////////////////////////////////////////////////////////////// - - if(k<size_Mat) - { - //////////////////////////////////////////////////////////////////////////////// - unsigned int BC; - BC = geoD[k]; - - if( BC != GEO_SOLID && BC != GEO_VOID) - { - Distributions27 D; - if (EvenOrOdd==true) - { - D.f[DIR_P00 ] = &DD[DIR_P00 *size_Mat]; - D.f[DIR_M00 ] = &DD[DIR_M00 *size_Mat]; - D.f[DIR_0P0 ] = &DD[DIR_0P0 *size_Mat]; - D.f[DIR_0M0 ] = &DD[DIR_0M0 *size_Mat]; - D.f[DIR_00P ] = &DD[DIR_00P *size_Mat]; - D.f[DIR_00M ] = &DD[DIR_00M *size_Mat]; - D.f[DIR_PP0 ] = &DD[DIR_PP0 *size_Mat]; - D.f[DIR_MM0 ] = &DD[DIR_MM0 *size_Mat]; - D.f[DIR_PM0 ] = &DD[DIR_PM0 *size_Mat]; - D.f[DIR_MP0 ] = &DD[DIR_MP0 *size_Mat]; - D.f[DIR_P0P ] = &DD[DIR_P0P *size_Mat]; - D.f[DIR_M0M ] = &DD[DIR_M0M *size_Mat]; - D.f[DIR_P0M ] = &DD[DIR_P0M *size_Mat]; - D.f[DIR_M0P ] = &DD[DIR_M0P *size_Mat]; - D.f[DIR_0PP ] = &DD[DIR_0PP *size_Mat]; - D.f[DIR_0MM ] = &DD[DIR_0MM *size_Mat]; - D.f[DIR_0PM ] = &DD[DIR_0PM *size_Mat]; - D.f[DIR_0MP ] = &DD[DIR_0MP *size_Mat]; - D.f[DIR_000] = &DD[DIR_000*size_Mat]; - D.f[DIR_PPP ] = &DD[DIR_PPP *size_Mat]; - D.f[DIR_MMP ] = &DD[DIR_MMP *size_Mat]; - D.f[DIR_PMP ] = &DD[DIR_PMP *size_Mat]; - D.f[DIR_MPP ] = &DD[DIR_MPP *size_Mat]; - D.f[DIR_PPM ] = &DD[DIR_PPM *size_Mat]; - D.f[DIR_MMM ] = &DD[DIR_MMM *size_Mat]; - D.f[DIR_PMM ] = &DD[DIR_PMM *size_Mat]; - D.f[DIR_MPM ] = &DD[DIR_MPM *size_Mat]; - } - else - { - D.f[DIR_M00 ] = &DD[DIR_P00 *size_Mat]; - D.f[DIR_P00 ] = &DD[DIR_M00 *size_Mat]; - D.f[DIR_0M0 ] = &DD[DIR_0P0 *size_Mat]; - D.f[DIR_0P0 ] = &DD[DIR_0M0 *size_Mat]; - D.f[DIR_00M ] = &DD[DIR_00P *size_Mat]; - D.f[DIR_00P ] = &DD[DIR_00M *size_Mat]; - D.f[DIR_MM0 ] = &DD[DIR_PP0 *size_Mat]; - D.f[DIR_PP0 ] = &DD[DIR_MM0 *size_Mat]; - D.f[DIR_MP0 ] = &DD[DIR_PM0 *size_Mat]; - D.f[DIR_PM0 ] = &DD[DIR_MP0 *size_Mat]; - D.f[DIR_M0M ] = &DD[DIR_P0P *size_Mat]; - D.f[DIR_P0P ] = &DD[DIR_M0M *size_Mat]; - D.f[DIR_M0P ] = &DD[DIR_P0M *size_Mat]; - D.f[DIR_P0M ] = &DD[DIR_M0P *size_Mat]; - D.f[DIR_0MM ] = &DD[DIR_0PP *size_Mat]; - D.f[DIR_0PP ] = &DD[DIR_0MM *size_Mat]; - D.f[DIR_0MP ] = &DD[DIR_0PM *size_Mat]; - D.f[DIR_0PM ] = &DD[DIR_0MP *size_Mat]; - D.f[DIR_000] = &DD[DIR_000*size_Mat]; - D.f[DIR_MMM ] = &DD[DIR_PPP *size_Mat]; - D.f[DIR_PPM ] = &DD[DIR_MMP *size_Mat]; - D.f[DIR_MPM ] = &DD[DIR_PMP *size_Mat]; - D.f[DIR_PMM ] = &DD[DIR_MPP *size_Mat]; - D.f[DIR_MMP ] = &DD[DIR_PPM *size_Mat]; - D.f[DIR_PPP ] = &DD[DIR_MMM *size_Mat]; - D.f[DIR_MPP ] = &DD[DIR_PMM *size_Mat]; - D.f[DIR_PMP ] = &DD[DIR_MPM *size_Mat]; - } - ////////////////////////////////////////////////////////////////////////// - real drho = rho[k];//0.0f;// - real vx1 = ux[k]; //0.0f;// - real vx2 = uy[k]; //0.0f;// - real vx3 = uz[k]; //0.0f;// - ////////////////////////////////////////////////////////////////////////// - //index - ////////////////////////////////////////////////////////////////////////// - unsigned int kzero= k; - unsigned int ke = k; - unsigned int kw = neighborX[k]; - unsigned int kn = k; - unsigned int ks = neighborY[k]; - unsigned int kt = k; - unsigned int kb = neighborZ[k]; - unsigned int ksw = neighborY[kw]; - unsigned int kne = k; - unsigned int kse = ks; - unsigned int knw = kw; - unsigned int kbw = neighborZ[kw]; - unsigned int kte = k; - unsigned int kbe = kb; - unsigned int ktw = kw; - unsigned int kbs = neighborZ[ks]; - unsigned int ktn = k; - 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 = k; - unsigned int kbsw = neighborZ[ksw]; - ////////////////////////////////////////////////////////////////////////// - real cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3); - - (D.f[DIR_000])[kzero] = c8o27* (drho-cu_sq); - (D.f[DIR_P00 ])[ke ] = c2o27* (drho+c3o1*( vx1 )+c9o2*( vx1 )*( vx1 )-cu_sq); - (D.f[DIR_M00 ])[kw ] = c2o27* (drho+c3o1*(-vx1 )+c9o2*(-vx1 )*(-vx1 )-cu_sq); - (D.f[DIR_0P0 ])[kn ] = c2o27* (drho+c3o1*( vx2 )+c9o2*( vx2 )*( vx2 )-cu_sq); - (D.f[DIR_0M0 ])[ks ] = c2o27* (drho+c3o1*( -vx2 )+c9o2*( -vx2 )*( -vx2 )-cu_sq); - (D.f[DIR_00P ])[kt ] = c2o27* (drho+c3o1*( vx3)+c9o2*( vx3)*( vx3)-cu_sq); - (D.f[DIR_00M ])[kb ] = c2o27* (drho+c3o1*( -vx3)+c9o2*( -vx3)*( -vx3)-cu_sq); - (D.f[DIR_PP0 ])[kne ] = c1o54* (drho+c3o1*( vx1+vx2 )+c9o2*( vx1+vx2 )*( vx1+vx2 )-cu_sq); - (D.f[DIR_MM0 ])[ksw ] = c1o54* (drho+c3o1*(-vx1-vx2 )+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq); - (D.f[DIR_PM0 ])[kse ] = c1o54* (drho+c3o1*( vx1-vx2 )+c9o2*( vx1-vx2 )*( vx1-vx2 )-cu_sq); - (D.f[DIR_MP0 ])[knw ] = c1o54* (drho+c3o1*(-vx1+vx2 )+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq); - (D.f[DIR_P0P ])[kte ] = c1o54* (drho+c3o1*( vx1 +vx3)+c9o2*( vx1 +vx3)*( vx1 +vx3)-cu_sq); - (D.f[DIR_M0M ])[kbw ] = c1o54* (drho+c3o1*(-vx1 -vx3)+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq); - (D.f[DIR_P0M ])[kbe ] = c1o54* (drho+c3o1*( vx1 -vx3)+c9o2*( vx1 -vx3)*( vx1 -vx3)-cu_sq); - (D.f[DIR_M0P ])[ktw ] = c1o54* (drho+c3o1*(-vx1 +vx3)+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq); - (D.f[DIR_0PP ])[ktn ] = c1o54* (drho+c3o1*( vx2+vx3)+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq); - (D.f[DIR_0MM ])[kbs ] = c1o54* (drho+c3o1*( -vx2-vx3)+c9o2*( -vx2-vx3)*( -vx2-vx3)-cu_sq); - (D.f[DIR_0PM ])[kbn ] = c1o54* (drho+c3o1*( vx2-vx3)+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq); - (D.f[DIR_0MP ])[kts ] = c1o54* (drho+c3o1*( -vx2+vx3)+c9o2*( -vx2+vx3)*( -vx2+vx3)-cu_sq); - (D.f[DIR_PPP ])[ktne ] = c1o216*(drho+c3o1*( vx1+vx2+vx3)+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq); - (D.f[DIR_MMM ])[kbsw ] = c1o216*(drho+c3o1*(-vx1-vx2-vx3)+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq); - (D.f[DIR_PPM ])[kbne ] = c1o216*(drho+c3o1*( vx1+vx2-vx3)+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq); - (D.f[DIR_MMP ])[ktsw ] = c1o216*(drho+c3o1*(-vx1-vx2+vx3)+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq); - (D.f[DIR_PMP ])[ktse ] = c1o216*(drho+c3o1*( vx1-vx2+vx3)+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq); - (D.f[DIR_MPM ])[kbnw ] = c1o216*(drho+c3o1*(-vx1+vx2-vx3)+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq); - (D.f[DIR_PMM ])[kbse ] = c1o216*(drho+c3o1*( vx1-vx2-vx3)+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq); - (D.f[DIR_MPP ])[ktnw ] = c1o216*(drho+c3o1*(-vx1+vx2+vx3)+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq); - } - else - { - ////////////////////////////////////////////////////////////////////////// - Distributions27 D; - D.f[DIR_000] = &DD[DIR_000*size_Mat]; - ////////////////////////////////////////////////////////////////////////// - (D.f[DIR_000])[k] = c96o1; - ////////////////////////////////////////////////////////////////////////// - } - } -} \ No newline at end of file diff --git a/src/gpu/VirtualFluids_GPU/Utilities/FindNeighbors.h b/src/gpu/VirtualFluids_GPU/Utilities/FindNeighbors.h deleted file mode 100644 index 2ecbed5fd6c4b84b92c05953a4c96ecdc3b988de..0000000000000000000000000000000000000000 --- a/src/gpu/VirtualFluids_GPU/Utilities/FindNeighbors.h +++ /dev/null @@ -1,33 +0,0 @@ -#ifndef FIND_NEIGHBORS_H -#define FIND_NEIGHBORS_H - -#include "Parameter/Parameter.h" -#include "lbm/constants/D3Q27.h" - -using namespace vf::lbm::dir; - -// Only use for fluid nodes! -inline uint getNeighborIndex(LBMSimulationParameter *parH, const uint position, const int direction) -{ - uint nodeIndex = position; - - if (mapForPointerChasing.at(direction).counterInverse != 0) { - nodeIndex = parH->neighborInverse[nodeIndex]; - } - - for (uint x = 0; x < mapForPointerChasing.at(direction).counterX; x++) { - nodeIndex = parH->neighborX[nodeIndex]; - } - - for (uint y = 0; y < mapForPointerChasing.at(direction).counterY; y++) { - nodeIndex = parH->neighborY[nodeIndex]; - } - - for (uint z = 0; z < mapForPointerChasing.at(direction).counterZ; z++) { - nodeIndex = parH->neighborZ[nodeIndex]; - } - - return nodeIndex; -} - -#endif diff --git a/src/gpu/VirtualFluids_GPU/CMakeLists.txt b/src/gpu/core/CMakeLists.txt similarity index 70% rename from src/gpu/VirtualFluids_GPU/CMakeLists.txt rename to src/gpu/core/CMakeLists.txt index 686aa1bb79c6b7adb5e066a25492aae84f3d9025..7fa94c2b16aa35d11d926fecefa700466a8c5ebb 100644 --- a/src/gpu/VirtualFluids_GPU/CMakeLists.txt +++ b/src/gpu/core/CMakeLists.txt @@ -1,25 +1,25 @@ -project(VirtualFluids_GPU LANGUAGES CUDA CXX) +project(gpu_core LANGUAGES CUDA CXX) -vf_add_library(PUBLIC_LINK basics lbm parallel PRIVATE_LINK GridGenerator cuda_helper) +vf_add_library(NAME gpu_core PUBLIC_LINK basics lbm parallel logger PRIVATE_LINK GridGenerator cuda_helper) #SET(TPN_WIN32 "/EHsc") #https://stackoverflow.com/questions/6832666/lnk2019-when-including-asio-headers-solution-generated-with-cmake #https://stackoverflow.com/questions/27442885/syntax-error-with-stdnumeric-limitsmax -set_target_properties(VirtualFluids_GPU PROPERTIES CUDA_SEPARABLE_COMPILATION ON POSITION_INDEPENDENT_CODE ON) +set_target_properties(gpu_core PROPERTIES CUDA_SEPARABLE_COMPILATION ON POSITION_INDEPENDENT_CODE ON) if(MSVC) - set_target_properties(VirtualFluids_GPU PROPERTIES CUDA_RESOLVE_DEVICE_SYMBOLS ON) + set_target_properties(gpu_core PROPERTIES CUDA_RESOLVE_DEVICE_SYMBOLS ON) endif() -vf_add_tests() +vf_add_tests(NAME gpu_core) if(BUILD_VF_UNIT_TESTS) - # set_target_properties(VirtualFluids_GPUTests PROPERTIES CUDA_SEPARABLE_COMPILATION ON) - target_include_directories(VirtualFluids_GPUTests PRIVATE "${VF_THIRD_DIR}/cuda_samples/") - target_include_directories(VirtualFluids_GPUTests PRIVATE "${VF_ROOT_DIR}/src/gpu/GridGenerator/") + # set_target_properties(gpu_coreTests PROPERTIES CUDA_SEPARABLE_COMPILATION ON) + target_include_directories(gpu_coreTests PRIVATE "${VF_THIRD_DIR}/cuda_samples/") + target_include_directories(gpu_coreTests PRIVATE "${VF_ROOT_DIR}/src/gpu/GridGenerator/") set_source_files_properties(Communication/ExchangeData27Test.cpp PROPERTIES LANGUAGE CUDA) set_source_files_properties(Factories/BoundaryConditionFactoryTest.cpp PROPERTIES LANGUAGE CUDA) set_source_files_properties(DataStructureInitializer/GridReaderGenerator/GridGeneratorTest.cpp PROPERTIES LANGUAGE CUDA) diff --git a/src/gpu/VirtualFluids_GPU/Calculation/Calc2ndMoments.cpp b/src/gpu/core/Calculation/Calc2ndMoments.cpp similarity index 100% rename from src/gpu/VirtualFluids_GPU/Calculation/Calc2ndMoments.cpp rename to src/gpu/core/Calculation/Calc2ndMoments.cpp diff --git a/src/gpu/VirtualFluids_GPU/Calculation/Calc2ndMoments.h b/src/gpu/core/Calculation/Calc2ndMoments.h similarity index 100% rename from src/gpu/VirtualFluids_GPU/Calculation/Calc2ndMoments.h rename to src/gpu/core/Calculation/Calc2ndMoments.h diff --git a/src/gpu/VirtualFluids_GPU/Calculation/CalcMedian.cpp b/src/gpu/core/Calculation/CalcMedian.cpp similarity index 100% rename from src/gpu/VirtualFluids_GPU/Calculation/CalcMedian.cpp rename to src/gpu/core/Calculation/CalcMedian.cpp diff --git a/src/gpu/VirtualFluids_GPU/Calculation/CalcMedian.h b/src/gpu/core/Calculation/CalcMedian.h similarity index 100% rename from src/gpu/VirtualFluids_GPU/Calculation/CalcMedian.h rename to src/gpu/core/Calculation/CalcMedian.h diff --git a/src/gpu/VirtualFluids_GPU/Calculation/CalcTurbulenceIntensity.cpp b/src/gpu/core/Calculation/CalcTurbulenceIntensity.cpp similarity index 100% rename from src/gpu/VirtualFluids_GPU/Calculation/CalcTurbulenceIntensity.cpp rename to src/gpu/core/Calculation/CalcTurbulenceIntensity.cpp diff --git a/src/gpu/VirtualFluids_GPU/Calculation/CalcTurbulenceIntensity.h b/src/gpu/core/Calculation/CalcTurbulenceIntensity.h similarity index 100% rename from src/gpu/VirtualFluids_GPU/Calculation/CalcTurbulenceIntensity.h rename to src/gpu/core/Calculation/CalcTurbulenceIntensity.h diff --git a/src/gpu/VirtualFluids_GPU/Calculation/CollisionStrategy.h b/src/gpu/core/Calculation/CollisionStrategy.h similarity index 100% rename from src/gpu/VirtualFluids_GPU/Calculation/CollisionStrategy.h rename to src/gpu/core/Calculation/CollisionStrategy.h diff --git a/src/gpu/VirtualFluids_GPU/Calculation/CollisisionStrategy.cpp b/src/gpu/core/Calculation/CollisisionStrategy.cpp similarity index 100% rename from src/gpu/VirtualFluids_GPU/Calculation/CollisisionStrategy.cpp rename to src/gpu/core/Calculation/CollisisionStrategy.cpp diff --git a/src/gpu/VirtualFluids_GPU/Calculation/Cp.cpp b/src/gpu/core/Calculation/Cp.cpp similarity index 100% rename from src/gpu/VirtualFluids_GPU/Calculation/Cp.cpp rename to src/gpu/core/Calculation/Cp.cpp diff --git a/src/gpu/VirtualFluids_GPU/Calculation/Cp.h b/src/gpu/core/Calculation/Cp.h similarity index 100% rename from src/gpu/VirtualFluids_GPU/Calculation/Cp.h rename to src/gpu/core/Calculation/Cp.h diff --git a/src/gpu/VirtualFluids_GPU/Calculation/DragLift.cpp b/src/gpu/core/Calculation/DragLift.cpp similarity index 100% rename from src/gpu/VirtualFluids_GPU/Calculation/DragLift.cpp rename to src/gpu/core/Calculation/DragLift.cpp diff --git a/src/gpu/VirtualFluids_GPU/Calculation/DragLift.h b/src/gpu/core/Calculation/DragLift.h similarity index 100% rename from src/gpu/VirtualFluids_GPU/Calculation/DragLift.h rename to src/gpu/core/Calculation/DragLift.h diff --git a/src/gpu/VirtualFluids_GPU/Calculation/ForceCalculations.cpp b/src/gpu/core/Calculation/ForceCalculations.cpp similarity index 100% rename from src/gpu/VirtualFluids_GPU/Calculation/ForceCalculations.cpp rename to src/gpu/core/Calculation/ForceCalculations.cpp diff --git a/src/gpu/VirtualFluids_GPU/Calculation/ForceCalculations.h b/src/gpu/core/Calculation/ForceCalculations.h similarity index 100% rename from src/gpu/VirtualFluids_GPU/Calculation/ForceCalculations.h rename to src/gpu/core/Calculation/ForceCalculations.h diff --git a/src/gpu/VirtualFluids_GPU/Calculation/PlaneCalculations.cpp b/src/gpu/core/Calculation/PlaneCalculations.cpp similarity index 97% rename from src/gpu/VirtualFluids_GPU/Calculation/PlaneCalculations.cpp rename to src/gpu/core/Calculation/PlaneCalculations.cpp index 6557a2a0730c14cc1b26097c5025827128d3a1ce..48896c9e1f809552092d10f538f0b184e523d3b8 100644 --- a/src/gpu/VirtualFluids_GPU/Calculation/PlaneCalculations.cpp +++ b/src/gpu/core/Calculation/PlaneCalculations.cpp @@ -23,13 +23,13 @@ void setSizeOfPlane(Parameter* para, int lev, unsigned int z) for (unsigned int i=1; i<para->getParH(lev)->gridNX + 2 * STARTOFFX - 1; i++) { mm[0]= para->getParH(lev)->nx*(para->getParH(lev)->ny*k + j) + i; - mm[1]= mm[0] -1; //DIR_M00 - mm[2]= mm[0] -para->getParH(lev)->nx-1; //DIR_MM0 - mm[3]= mm[0] -para->getParH(lev)->nx; //DIR_0M0 - mm[4]= mm[0]-(para->getParH(lev)->nx*para->getParH(lev)->ny); //DIR_00M - mm[5]= mm[0]-(para->getParH(lev)->nx*para->getParH(lev)->ny) -1; //DIR_M0M - mm[6]= mm[0]-(para->getParH(lev)->nx*para->getParH(lev)->ny)-para->getParH(lev)->nx; //DIR_0MM - mm[7]= mm[0]-(para->getParH(lev)->nx*para->getParH(lev)->ny)-para->getParH(lev)->nx-1; //DIR_MMM + mm[1]= mm[0] -1; //dM00 + mm[2]= mm[0] -para->getParH(lev)->nx-1; //dMM0 + mm[3]= mm[0] -para->getParH(lev)->nx; //d0M0 + mm[4]= mm[0]-(para->getParH(lev)->nx*para->getParH(lev)->ny); //d00M + mm[5]= mm[0]-(para->getParH(lev)->nx*para->getParH(lev)->ny) -1; //dM0M + mm[6]= mm[0]-(para->getParH(lev)->nx*para->getParH(lev)->ny)-para->getParH(lev)->nx; //d0MM + mm[7]= mm[0]-(para->getParH(lev)->nx*para->getParH(lev)->ny)-para->getParH(lev)->nx-1; //dMMM if ( para->getParH(lev)->geo[mm[0]] != GEO_VOID || para->getParH(lev)->geo[mm[1]] != GEO_VOID || diff --git a/src/gpu/VirtualFluids_GPU/Calculation/PlaneCalculations.h b/src/gpu/core/Calculation/PlaneCalculations.h similarity index 100% rename from src/gpu/VirtualFluids_GPU/Calculation/PlaneCalculations.h rename to src/gpu/core/Calculation/PlaneCalculations.h diff --git a/src/gpu/VirtualFluids_GPU/Calculation/PorousMedia.cpp b/src/gpu/core/Calculation/PorousMedia.cpp similarity index 100% rename from src/gpu/VirtualFluids_GPU/Calculation/PorousMedia.cpp rename to src/gpu/core/Calculation/PorousMedia.cpp diff --git a/src/gpu/VirtualFluids_GPU/Calculation/PorousMedia.h b/src/gpu/core/Calculation/PorousMedia.h similarity index 100% rename from src/gpu/VirtualFluids_GPU/Calculation/PorousMedia.h rename to src/gpu/core/Calculation/PorousMedia.h diff --git a/src/gpu/VirtualFluids_GPU/Calculation/RefinementStrategy.cpp b/src/gpu/core/Calculation/RefinementStrategy.cpp similarity index 100% rename from src/gpu/VirtualFluids_GPU/Calculation/RefinementStrategy.cpp rename to src/gpu/core/Calculation/RefinementStrategy.cpp diff --git a/src/gpu/VirtualFluids_GPU/Calculation/RefinementStrategy.h b/src/gpu/core/Calculation/RefinementStrategy.h similarity index 100% rename from src/gpu/VirtualFluids_GPU/Calculation/RefinementStrategy.h rename to src/gpu/core/Calculation/RefinementStrategy.h diff --git a/src/gpu/VirtualFluids_GPU/Calculation/UpdateGrid27.cpp b/src/gpu/core/Calculation/UpdateGrid27.cpp similarity index 100% rename from src/gpu/VirtualFluids_GPU/Calculation/UpdateGrid27.cpp rename to src/gpu/core/Calculation/UpdateGrid27.cpp diff --git a/src/gpu/VirtualFluids_GPU/Calculation/UpdateGrid27.h b/src/gpu/core/Calculation/UpdateGrid27.h similarity index 100% rename from src/gpu/VirtualFluids_GPU/Calculation/UpdateGrid27.h rename to src/gpu/core/Calculation/UpdateGrid27.h diff --git a/src/gpu/VirtualFluids_GPU/Communication/ExchangeData27.cpp b/src/gpu/core/Communication/ExchangeData27.cpp similarity index 100% rename from src/gpu/VirtualFluids_GPU/Communication/ExchangeData27.cpp rename to src/gpu/core/Communication/ExchangeData27.cpp diff --git a/src/gpu/VirtualFluids_GPU/Communication/ExchangeData27.h b/src/gpu/core/Communication/ExchangeData27.h similarity index 100% rename from src/gpu/VirtualFluids_GPU/Communication/ExchangeData27.h rename to src/gpu/core/Communication/ExchangeData27.h diff --git a/src/gpu/VirtualFluids_GPU/Communication/ExchangeData27Test.cpp b/src/gpu/core/Communication/ExchangeData27Test.cpp similarity index 99% rename from src/gpu/VirtualFluids_GPU/Communication/ExchangeData27Test.cpp rename to src/gpu/core/Communication/ExchangeData27Test.cpp index 473e8c1a5424cf7ddd05f6ed0a534814a3971dc6..c1d03928ec05f1b38920aa5a4b006418a3c6fe9b 100644 --- a/src/gpu/VirtualFluids_GPU/Communication/ExchangeData27Test.cpp +++ b/src/gpu/core/Communication/ExchangeData27Test.cpp @@ -3,7 +3,7 @@ #include <filesystem> #include "ExchangeData27.h" -#include "gpu/VirtualFluids_GPU/LBM/LB.h" +#include "gpu/core/LBM/LB.h" #include <basics/config/ConfigurationFile.h> diff --git a/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridProvider.cpp b/src/gpu/core/DataStructureInitializer/GridProvider.cpp similarity index 100% rename from src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridProvider.cpp rename to src/gpu/core/DataStructureInitializer/GridProvider.cpp diff --git a/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridProvider.h b/src/gpu/core/DataStructureInitializer/GridProvider.h similarity index 95% rename from src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridProvider.h rename to src/gpu/core/DataStructureInitializer/GridProvider.h index 28d2f39e8b469f83672c6cbce162e867686d14ed..78451b14d231342a57b8881de99c3925e066ef4d 100644 --- a/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridProvider.h +++ b/src/gpu/core/DataStructureInitializer/GridProvider.h @@ -6,8 +6,8 @@ #include <memory> #include "LBM/LB.h" -#include "PointerDefinitions.h" -#include "VirtualFluids_GPU_export.h" +#include <basics/PointerDefinitions.h> + #include "gpu/GridGenerator/io/SimulationFileWriter/SimulationFileWriter.h" namespace vf::parallel { @@ -18,7 +18,7 @@ class Parameter; class GridBuilder; class CudaMemoryManager; -class VIRTUALFLUIDS_GPU_EXPORT GridProvider +class GridProvider { public: static std::shared_ptr<GridProvider> makeGridGenerator(std::shared_ptr<GridBuilder> builder, std::shared_ptr<Parameter> para, std::shared_ptr<CudaMemoryManager> cudaMemoryManager, vf::parallel::Communicator& communicator); diff --git a/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/BoundaryQs.cpp b/src/gpu/core/DataStructureInitializer/GridReaderFiles/BoundaryQs.cpp similarity index 100% rename from src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/BoundaryQs.cpp rename to src/gpu/core/DataStructureInitializer/GridReaderFiles/BoundaryQs.cpp diff --git a/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/BoundaryQs.h b/src/gpu/core/DataStructureInitializer/GridReaderFiles/BoundaryQs.h similarity index 100% rename from src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/BoundaryQs.h rename to src/gpu/core/DataStructureInitializer/GridReaderFiles/BoundaryQs.h diff --git a/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/BoundaryValues.cpp b/src/gpu/core/DataStructureInitializer/GridReaderFiles/BoundaryValues.cpp similarity index 100% rename from src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/BoundaryValues.cpp rename to src/gpu/core/DataStructureInitializer/GridReaderFiles/BoundaryValues.cpp diff --git a/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/BoundaryValues.h b/src/gpu/core/DataStructureInitializer/GridReaderFiles/BoundaryValues.h similarity index 100% rename from src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/BoundaryValues.h rename to src/gpu/core/DataStructureInitializer/GridReaderFiles/BoundaryValues.h diff --git a/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/CoordNeighborGeoV.cpp b/src/gpu/core/DataStructureInitializer/GridReaderFiles/CoordNeighborGeoV.cpp similarity index 100% rename from src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/CoordNeighborGeoV.cpp rename to src/gpu/core/DataStructureInitializer/GridReaderFiles/CoordNeighborGeoV.cpp diff --git a/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/CoordNeighborGeoV.h b/src/gpu/core/DataStructureInitializer/GridReaderFiles/CoordNeighborGeoV.h similarity index 100% rename from src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/CoordNeighborGeoV.h rename to src/gpu/core/DataStructureInitializer/GridReaderFiles/CoordNeighborGeoV.h diff --git a/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/GridReader.cpp b/src/gpu/core/DataStructureInitializer/GridReaderFiles/GridReader.cpp similarity index 96% rename from src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/GridReader.cpp rename to src/gpu/core/DataStructureInitializer/GridReaderFiles/GridReader.cpp index 000e97e9a14e51d140dfa30cb325d2a04cd83f50..ead8794bf7994cee875e66953f5255d2ba1fb7d0 100644 --- a/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/GridReader.cpp +++ b/src/gpu/core/DataStructureInitializer/GridReaderFiles/GridReader.cpp @@ -648,9 +648,9 @@ void GridReader::modifyQElement(std::shared_ptr<BoundaryQs> boundaryQ, unsigned { QforBoundaryConditions Q; real* QQ = para->getParH(level)->geometryBC.q27[0]; - Q.q27[vf::lbm::dir::DIR_000] = &QQ[vf::lbm::dir::DIR_000 * para->getParH(level)->geometryBC.numberOfBCnodes]; + Q.q27[vf::lbm::dir::d000] = &QQ[vf::lbm::dir::d000 * para->getParH(level)->geometryBC.numberOfBCnodes]; for (unsigned int i = 0; i < boundaryQ->getSize(level); i++) - Q.q27[vf::lbm::dir::DIR_000][i] = 0.0f; + Q.q27[vf::lbm::dir::d000][i] = 0.0f; } /*------------------------------------------------------------------------------------------------*/ @@ -721,33 +721,33 @@ void GridReader::initalGridInformations() void GridReader::setQ27Size(QforBoundaryConditions &Q, real* QQ, unsigned int sizeQ) const { - Q.q27[DIR_P00] = &QQ[DIR_P00 *sizeQ]; - Q.q27[DIR_M00] = &QQ[DIR_M00 *sizeQ]; - Q.q27[DIR_0P0] = &QQ[DIR_0P0 *sizeQ]; - Q.q27[DIR_0M0] = &QQ[DIR_0M0 *sizeQ]; - Q.q27[DIR_00P] = &QQ[DIR_00P *sizeQ]; - Q.q27[DIR_00M] = &QQ[DIR_00M *sizeQ]; - Q.q27[DIR_PP0] = &QQ[DIR_PP0 *sizeQ]; - Q.q27[DIR_MM0] = &QQ[DIR_MM0 *sizeQ]; - Q.q27[DIR_PM0] = &QQ[DIR_PM0 *sizeQ]; - Q.q27[DIR_MP0] = &QQ[DIR_MP0 *sizeQ]; - Q.q27[DIR_P0P] = &QQ[DIR_P0P *sizeQ]; - Q.q27[DIR_M0M] = &QQ[DIR_M0M *sizeQ]; - Q.q27[DIR_P0M] = &QQ[DIR_P0M *sizeQ]; - Q.q27[DIR_M0P] = &QQ[DIR_M0P *sizeQ]; - Q.q27[DIR_0PP] = &QQ[DIR_0PP *sizeQ]; - Q.q27[DIR_0MM] = &QQ[DIR_0MM *sizeQ]; - Q.q27[DIR_0PM] = &QQ[DIR_0PM *sizeQ]; - Q.q27[DIR_0MP] = &QQ[DIR_0MP *sizeQ]; - Q.q27[DIR_000] = &QQ[DIR_000*sizeQ]; - Q.q27[DIR_PPP] = &QQ[DIR_PPP *sizeQ]; - Q.q27[DIR_MMP] = &QQ[DIR_MMP *sizeQ]; - Q.q27[DIR_PMP] = &QQ[DIR_PMP *sizeQ]; - Q.q27[DIR_MPP] = &QQ[DIR_MPP *sizeQ]; - Q.q27[DIR_PPM] = &QQ[DIR_PPM *sizeQ]; - Q.q27[DIR_MMM] = &QQ[DIR_MMM *sizeQ]; - Q.q27[DIR_PMM] = &QQ[DIR_PMM *sizeQ]; - Q.q27[DIR_MPM] = &QQ[DIR_MPM *sizeQ]; + Q.q27[dP00] = &QQ[dP00 *sizeQ]; + Q.q27[dM00] = &QQ[dM00 *sizeQ]; + Q.q27[d0P0] = &QQ[d0P0 *sizeQ]; + Q.q27[d0M0] = &QQ[d0M0 *sizeQ]; + Q.q27[d00P] = &QQ[d00P *sizeQ]; + Q.q27[d00M] = &QQ[d00M *sizeQ]; + Q.q27[dPP0] = &QQ[dPP0 *sizeQ]; + Q.q27[dMM0] = &QQ[dMM0 *sizeQ]; + Q.q27[dPM0] = &QQ[dPM0 *sizeQ]; + Q.q27[dMP0] = &QQ[dMP0 *sizeQ]; + Q.q27[dP0P] = &QQ[dP0P *sizeQ]; + Q.q27[dM0M] = &QQ[dM0M *sizeQ]; + Q.q27[dP0M] = &QQ[dP0M *sizeQ]; + Q.q27[dM0P] = &QQ[dM0P *sizeQ]; + Q.q27[d0PP] = &QQ[d0PP *sizeQ]; + Q.q27[d0MM] = &QQ[d0MM *sizeQ]; + Q.q27[d0PM] = &QQ[d0PM *sizeQ]; + Q.q27[d0MP] = &QQ[d0MP *sizeQ]; + Q.q27[d000] = &QQ[d000*sizeQ]; + Q.q27[dPPP] = &QQ[dPPP *sizeQ]; + Q.q27[dMMP] = &QQ[dMMP *sizeQ]; + Q.q27[dPMP] = &QQ[dPMP *sizeQ]; + Q.q27[dMPP] = &QQ[dMPP *sizeQ]; + Q.q27[dPPM] = &QQ[dPPM *sizeQ]; + Q.q27[dMMM] = &QQ[dMMM *sizeQ]; + Q.q27[dPMM] = &QQ[dPMM *sizeQ]; + Q.q27[dMPM] = &QQ[dMPM *sizeQ]; } void GridReader::setSizeNoSlip(std::shared_ptr<BoundaryQs> boundaryQ, unsigned int level) const diff --git a/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/GridReader.h b/src/gpu/core/DataStructureInitializer/GridReaderFiles/GridReader.h similarity index 97% rename from src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/GridReader.h rename to src/gpu/core/DataStructureInitializer/GridReaderFiles/GridReader.h index d244e76569fe213978086ab412725e4450da66e4..84e3ad17989bd3d0bd9ffcd9ed36d87a8a7b494b 100644 --- a/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/GridReader.h +++ b/src/gpu/core/DataStructureInitializer/GridReaderFiles/GridReader.h @@ -9,14 +9,14 @@ #include "LBM/LB.h" -//#include "VirtualFluids_GPU_export.h" +// class Parameter; class BoundaryValues; class BoundaryQs; class CoordNeighborGeoV; -class VIRTUALFLUIDS_GPU_EXPORT GridReader : public GridProvider +class GridReader : public GridProvider { private: bool binaer; diff --git a/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/MeasuredPoints.cpp b/src/gpu/core/DataStructureInitializer/GridReaderFiles/MeasuredPoints.cpp similarity index 100% rename from src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/MeasuredPoints.cpp rename to src/gpu/core/DataStructureInitializer/GridReaderFiles/MeasuredPoints.cpp diff --git a/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/MeasuredPoints.h b/src/gpu/core/DataStructureInitializer/GridReaderFiles/MeasuredPoints.h similarity index 100% rename from src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/MeasuredPoints.h rename to src/gpu/core/DataStructureInitializer/GridReaderFiles/MeasuredPoints.h diff --git a/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/OffsetScale.cpp b/src/gpu/core/DataStructureInitializer/GridReaderFiles/OffsetScale.cpp similarity index 100% rename from src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/OffsetScale.cpp rename to src/gpu/core/DataStructureInitializer/GridReaderFiles/OffsetScale.cpp diff --git a/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/OffsetScale.h b/src/gpu/core/DataStructureInitializer/GridReaderFiles/OffsetScale.h similarity index 100% rename from src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/OffsetScale.h rename to src/gpu/core/DataStructureInitializer/GridReaderFiles/OffsetScale.h diff --git a/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/GridGenerator.cpp b/src/gpu/core/DataStructureInitializer/GridReaderGenerator/GridGenerator.cpp similarity index 97% rename from src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/GridGenerator.cpp rename to src/gpu/core/DataStructureInitializer/GridReaderGenerator/GridGenerator.cpp index d8166c0374ec9b170b13120000ba757072e0bd16..cef51f3e0ed1ff3acb675f0423cec8b06af742f2 100644 --- a/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/GridGenerator.cpp +++ b/src/gpu/core/DataStructureInitializer/GridReaderGenerator/GridGenerator.cpp @@ -1138,7 +1138,7 @@ void GridGenerator::allocArrays_BoundaryQs() ////////////////////////////////////////////////////////////////// for (int node_i = 0; node_i < numberOfGeometryNodes; node_i++) { - Q.q27[DIR_000][node_i] = 0.0f; + Q.q27[d000][node_i] = 0.0f; } //for(int test = 0; test < 3; test++) //{ @@ -1358,31 +1358,31 @@ std::string GridGenerator::checkNeighbor(int level, real x, real y, real z, int } void GridGenerator::getPointersToBoundaryConditions(QforBoundaryConditions& boundaryConditionStruct, real* subgridDistances, const unsigned int numberOfBCnodes){ - boundaryConditionStruct.q27[DIR_P00] = &subgridDistances[DIR_P00 * numberOfBCnodes]; - boundaryConditionStruct.q27[DIR_M00] = &subgridDistances[DIR_M00 * numberOfBCnodes]; - boundaryConditionStruct.q27[DIR_0P0] = &subgridDistances[DIR_0P0 * numberOfBCnodes]; - boundaryConditionStruct.q27[DIR_0M0] = &subgridDistances[DIR_0M0 * numberOfBCnodes]; - boundaryConditionStruct.q27[DIR_00P] = &subgridDistances[DIR_00P * numberOfBCnodes]; - boundaryConditionStruct.q27[DIR_00M] = &subgridDistances[DIR_00M * numberOfBCnodes]; - boundaryConditionStruct.q27[DIR_PP0] = &subgridDistances[DIR_PP0 * numberOfBCnodes]; - boundaryConditionStruct.q27[DIR_MM0] = &subgridDistances[DIR_MM0 * numberOfBCnodes]; - boundaryConditionStruct.q27[DIR_PM0] = &subgridDistances[DIR_PM0 * numberOfBCnodes]; - boundaryConditionStruct.q27[DIR_MP0] = &subgridDistances[DIR_MP0 * numberOfBCnodes]; - boundaryConditionStruct.q27[DIR_P0P] = &subgridDistances[DIR_P0P * numberOfBCnodes]; - boundaryConditionStruct.q27[DIR_M0M] = &subgridDistances[DIR_M0M * numberOfBCnodes]; - boundaryConditionStruct.q27[DIR_P0M] = &subgridDistances[DIR_P0M * numberOfBCnodes]; - boundaryConditionStruct.q27[DIR_M0P] = &subgridDistances[DIR_M0P * numberOfBCnodes]; - boundaryConditionStruct.q27[DIR_0PP] = &subgridDistances[DIR_0PP * numberOfBCnodes]; - boundaryConditionStruct.q27[DIR_0MM] = &subgridDistances[DIR_0MM * numberOfBCnodes]; - boundaryConditionStruct.q27[DIR_0PM] = &subgridDistances[DIR_0PM * numberOfBCnodes]; - boundaryConditionStruct.q27[DIR_0MP] = &subgridDistances[DIR_0MP * numberOfBCnodes]; - boundaryConditionStruct.q27[DIR_000] = &subgridDistances[DIR_000 * numberOfBCnodes]; - boundaryConditionStruct.q27[DIR_PPP] = &subgridDistances[DIR_PPP * numberOfBCnodes]; - boundaryConditionStruct.q27[DIR_MMP] = &subgridDistances[DIR_MMP * numberOfBCnodes]; - boundaryConditionStruct.q27[DIR_PMP] = &subgridDistances[DIR_PMP * numberOfBCnodes]; - boundaryConditionStruct.q27[DIR_MPP] = &subgridDistances[DIR_MPP * numberOfBCnodes]; - boundaryConditionStruct.q27[DIR_PPM] = &subgridDistances[DIR_PPM * numberOfBCnodes]; - boundaryConditionStruct.q27[DIR_MMM] = &subgridDistances[DIR_MMM * numberOfBCnodes]; - boundaryConditionStruct.q27[DIR_PMM] = &subgridDistances[DIR_PMM * numberOfBCnodes]; - boundaryConditionStruct.q27[DIR_MPM] = &subgridDistances[DIR_MPM * numberOfBCnodes]; + boundaryConditionStruct.q27[dP00] = &subgridDistances[dP00 * numberOfBCnodes]; + boundaryConditionStruct.q27[dM00] = &subgridDistances[dM00 * numberOfBCnodes]; + boundaryConditionStruct.q27[d0P0] = &subgridDistances[d0P0 * numberOfBCnodes]; + boundaryConditionStruct.q27[d0M0] = &subgridDistances[d0M0 * numberOfBCnodes]; + boundaryConditionStruct.q27[d00P] = &subgridDistances[d00P * numberOfBCnodes]; + boundaryConditionStruct.q27[d00M] = &subgridDistances[d00M * numberOfBCnodes]; + boundaryConditionStruct.q27[dPP0] = &subgridDistances[dPP0 * numberOfBCnodes]; + boundaryConditionStruct.q27[dMM0] = &subgridDistances[dMM0 * numberOfBCnodes]; + boundaryConditionStruct.q27[dPM0] = &subgridDistances[dPM0 * numberOfBCnodes]; + boundaryConditionStruct.q27[dMP0] = &subgridDistances[dMP0 * numberOfBCnodes]; + boundaryConditionStruct.q27[dP0P] = &subgridDistances[dP0P * numberOfBCnodes]; + boundaryConditionStruct.q27[dM0M] = &subgridDistances[dM0M * numberOfBCnodes]; + boundaryConditionStruct.q27[dP0M] = &subgridDistances[dP0M * numberOfBCnodes]; + boundaryConditionStruct.q27[dM0P] = &subgridDistances[dM0P * numberOfBCnodes]; + boundaryConditionStruct.q27[d0PP] = &subgridDistances[d0PP * numberOfBCnodes]; + boundaryConditionStruct.q27[d0MM] = &subgridDistances[d0MM * numberOfBCnodes]; + boundaryConditionStruct.q27[d0PM] = &subgridDistances[d0PM * numberOfBCnodes]; + boundaryConditionStruct.q27[d0MP] = &subgridDistances[d0MP * numberOfBCnodes]; + boundaryConditionStruct.q27[d000] = &subgridDistances[d000 * numberOfBCnodes]; + boundaryConditionStruct.q27[dPPP] = &subgridDistances[dPPP * numberOfBCnodes]; + boundaryConditionStruct.q27[dMMP] = &subgridDistances[dMMP * numberOfBCnodes]; + boundaryConditionStruct.q27[dPMP] = &subgridDistances[dPMP * numberOfBCnodes]; + boundaryConditionStruct.q27[dMPP] = &subgridDistances[dMPP * numberOfBCnodes]; + boundaryConditionStruct.q27[dPPM] = &subgridDistances[dPPM * numberOfBCnodes]; + boundaryConditionStruct.q27[dMMM] = &subgridDistances[dMMM * numberOfBCnodes]; + boundaryConditionStruct.q27[dPMM] = &subgridDistances[dPMM * numberOfBCnodes]; + boundaryConditionStruct.q27[dMPM] = &subgridDistances[dMPM * numberOfBCnodes]; } diff --git a/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/GridGenerator.h b/src/gpu/core/DataStructureInitializer/GridReaderGenerator/GridGenerator.h similarity index 97% rename from src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/GridGenerator.h rename to src/gpu/core/DataStructureInitializer/GridReaderGenerator/GridGenerator.h index 9c0d50a06e587c2776c63d164f1d46c4ac910eab..9b1eafb431a88029f75af68706f80d493737128d 100644 --- a/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/GridGenerator.h +++ b/src/gpu/core/DataStructureInitializer/GridReaderGenerator/GridGenerator.h @@ -67,7 +67,7 @@ private: const uint mpiProcessID; public: - VIRTUALFLUIDS_GPU_EXPORT GridGenerator(std::shared_ptr<GridBuilder> builder, std::shared_ptr<Parameter> para, std::shared_ptr<CudaMemoryManager> cudaMemoryManager, vf::parallel::Communicator& communicator); + GridGenerator(std::shared_ptr<GridBuilder> builder, std::shared_ptr<Parameter> para, std::shared_ptr<CudaMemoryManager> cudaMemoryManager, vf::parallel::Communicator& communicator); ~GridGenerator() override; //! \brief overwrites the default IndexRearrangementForStreams void setIndexRearrangementForStreams(std::unique_ptr<IndexRearrangementForStreams>&& indexRearrangement); diff --git a/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/GridGeneratorTest.cpp b/src/gpu/core/DataStructureInitializer/GridReaderGenerator/GridGeneratorTest.cpp similarity index 99% rename from src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/GridGeneratorTest.cpp rename to src/gpu/core/DataStructureInitializer/GridReaderGenerator/GridGeneratorTest.cpp index 8fc0f78d1f964339258dbeae1658445bc4547e4f..fbacf99d460fe64a83aa5aec0db4b43600d00941 100644 --- a/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/GridGeneratorTest.cpp +++ b/src/gpu/core/DataStructureInitializer/GridReaderGenerator/GridGeneratorTest.cpp @@ -1,7 +1,7 @@ #include "GridGenerator.h" #include <gmock/gmock.h> -#include "DataTypes.h" +#include <basics/DataTypes.h> #include "GPU/CudaMemoryManager.h" #include "IndexRearrangementForStreams.h" #include "NullCommunicator.h" diff --git a/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/IndexRearrangementForStreams.cpp b/src/gpu/core/DataStructureInitializer/GridReaderGenerator/IndexRearrangementForStreams.cpp similarity index 100% rename from src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/IndexRearrangementForStreams.cpp rename to src/gpu/core/DataStructureInitializer/GridReaderGenerator/IndexRearrangementForStreams.cpp diff --git a/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/IndexRearrangementForStreams.h b/src/gpu/core/DataStructureInitializer/GridReaderGenerator/IndexRearrangementForStreams.h similarity index 100% rename from src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/IndexRearrangementForStreams.h rename to src/gpu/core/DataStructureInitializer/GridReaderGenerator/IndexRearrangementForStreams.h diff --git a/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/IndexRearrangementForStreamsTest.cpp b/src/gpu/core/DataStructureInitializer/GridReaderGenerator/IndexRearrangementForStreamsTest.cpp similarity index 100% rename from src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/IndexRearrangementForStreamsTest.cpp rename to src/gpu/core/DataStructureInitializer/GridReaderGenerator/IndexRearrangementForStreamsTest.cpp diff --git a/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/InterpolationCellGrouper.cpp b/src/gpu/core/DataStructureInitializer/GridReaderGenerator/InterpolationCellGrouper.cpp similarity index 100% rename from src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/InterpolationCellGrouper.cpp rename to src/gpu/core/DataStructureInitializer/GridReaderGenerator/InterpolationCellGrouper.cpp diff --git a/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/InterpolationCellGrouper.h b/src/gpu/core/DataStructureInitializer/GridReaderGenerator/InterpolationCellGrouper.h similarity index 100% rename from src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/InterpolationCellGrouper.h rename to src/gpu/core/DataStructureInitializer/GridReaderGenerator/InterpolationCellGrouper.h diff --git a/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/InterpolationCellGrouperTest.cpp b/src/gpu/core/DataStructureInitializer/GridReaderGenerator/InterpolationCellGrouperTest.cpp similarity index 100% rename from src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/InterpolationCellGrouperTest.cpp rename to src/gpu/core/DataStructureInitializer/GridReaderGenerator/InterpolationCellGrouperTest.cpp diff --git a/src/gpu/VirtualFluids_GPU/Factories/BoundaryConditionFactory.cpp b/src/gpu/core/Factories/BoundaryConditionFactory.cpp similarity index 100% rename from src/gpu/VirtualFluids_GPU/Factories/BoundaryConditionFactory.cpp rename to src/gpu/core/Factories/BoundaryConditionFactory.cpp diff --git a/src/gpu/VirtualFluids_GPU/Factories/BoundaryConditionFactory.h b/src/gpu/core/Factories/BoundaryConditionFactory.h similarity index 100% rename from src/gpu/VirtualFluids_GPU/Factories/BoundaryConditionFactory.h rename to src/gpu/core/Factories/BoundaryConditionFactory.h diff --git a/src/gpu/VirtualFluids_GPU/Factories/BoundaryConditionFactoryTest.cpp b/src/gpu/core/Factories/BoundaryConditionFactoryTest.cpp similarity index 100% rename from src/gpu/VirtualFluids_GPU/Factories/BoundaryConditionFactoryTest.cpp rename to src/gpu/core/Factories/BoundaryConditionFactoryTest.cpp diff --git a/src/gpu/VirtualFluids_GPU/Factories/GridScalingFactory.cpp b/src/gpu/core/Factories/GridScalingFactory.cpp similarity index 100% rename from src/gpu/VirtualFluids_GPU/Factories/GridScalingFactory.cpp rename to src/gpu/core/Factories/GridScalingFactory.cpp diff --git a/src/gpu/VirtualFluids_GPU/Factories/GridScalingFactory.h b/src/gpu/core/Factories/GridScalingFactory.h similarity index 100% rename from src/gpu/VirtualFluids_GPU/Factories/GridScalingFactory.h rename to src/gpu/core/Factories/GridScalingFactory.h diff --git a/src/gpu/VirtualFluids_GPU/FindInterface/FindInterface.cpp b/src/gpu/core/FindInterface/FindInterface.cpp similarity index 100% rename from src/gpu/VirtualFluids_GPU/FindInterface/FindInterface.cpp rename to src/gpu/core/FindInterface/FindInterface.cpp diff --git a/src/gpu/VirtualFluids_GPU/FindInterface/FindInterface.h b/src/gpu/core/FindInterface/FindInterface.h similarity index 100% rename from src/gpu/VirtualFluids_GPU/FindInterface/FindInterface.h rename to src/gpu/core/FindInterface/FindInterface.h diff --git a/src/gpu/VirtualFluids_GPU/FindQ/DefineBCs.cpp b/src/gpu/core/FindQ/DefineBCs.cpp similarity index 100% rename from src/gpu/VirtualFluids_GPU/FindQ/DefineBCs.cpp rename to src/gpu/core/FindQ/DefineBCs.cpp diff --git a/src/gpu/VirtualFluids_GPU/FindQ/DefineBCs.h b/src/gpu/core/FindQ/DefineBCs.h similarity index 100% rename from src/gpu/VirtualFluids_GPU/FindQ/DefineBCs.h rename to src/gpu/core/FindQ/DefineBCs.h diff --git a/src/gpu/VirtualFluids_GPU/FindQ/FindQ.cpp b/src/gpu/core/FindQ/FindQ.cpp similarity index 59% rename from src/gpu/VirtualFluids_GPU/FindQ/FindQ.cpp rename to src/gpu/core/FindQ/FindQ.cpp index bc12456ceb632b3249d8757fe23c811aad6ec541..a961fdf71e2f518c8cb41c0d57fe9c87616ec7d4 100644 --- a/src/gpu/VirtualFluids_GPU/FindQ/FindQ.cpp +++ b/src/gpu/core/FindQ/FindQ.cpp @@ -14,7 +14,7 @@ void findQ(Parameter* para, int lev) VF_LOG_CRITICAL("findQ() is deprecated! - see comment above for more information"); //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - ////////////// DIR_P00 DIR_M00 DIR_0P0 DIR_0M0 DIR_00P DIR_00M DIR_PP0 DIR_MM0 DIR_PM0 DIR_MP0 DIR_P0P DIR_M0M DIR_P0M DIR_M0P DIR_0PP DIR_0MM DIR_0PM DIR_0MP ZERO DIR_PPP DIR_PPM DIR_PMP DIR_PMM DIR_MPP DIR_MPM DIR_MMP DIR_MMM //////////////////////// + ////////////// dP00 dM00 d0P0 d0M0 d00P d00M dPP0 dMM0 dPM0 dMP0 dP0P dM0M dP0M dM0P d0PP d0MM d0PM d0MP ZERO dPPP dPPM dPMP dPMM dMPP dMPM dMMP dMMM //////////////////////// 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}; @@ -41,33 +41,33 @@ void findQ(Parameter* para, int lev) //real radius = nny / 5.f;//2.56f; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// QforBoundaryConditions Q; - Q.q27[DIR_P00 ] = &QQ[DIR_P00 *sizeQ]; - Q.q27[DIR_M00 ] = &QQ[DIR_M00 *sizeQ]; - Q.q27[DIR_0P0 ] = &QQ[DIR_0P0 *sizeQ]; - Q.q27[DIR_0M0 ] = &QQ[DIR_0M0 *sizeQ]; - Q.q27[DIR_00P ] = &QQ[DIR_00P *sizeQ]; - Q.q27[DIR_00M ] = &QQ[DIR_00M *sizeQ]; - Q.q27[DIR_PP0 ] = &QQ[DIR_PP0 *sizeQ]; - Q.q27[DIR_MM0 ] = &QQ[DIR_MM0 *sizeQ]; - Q.q27[DIR_PM0 ] = &QQ[DIR_PM0 *sizeQ]; - Q.q27[DIR_MP0 ] = &QQ[DIR_MP0 *sizeQ]; - Q.q27[DIR_P0P ] = &QQ[DIR_P0P *sizeQ]; - Q.q27[DIR_M0M ] = &QQ[DIR_M0M *sizeQ]; - Q.q27[DIR_P0M ] = &QQ[DIR_P0M *sizeQ]; - Q.q27[DIR_M0P ] = &QQ[DIR_M0P *sizeQ]; - Q.q27[DIR_0PP ] = &QQ[DIR_0PP *sizeQ]; - Q.q27[DIR_0MM ] = &QQ[DIR_0MM *sizeQ]; - Q.q27[DIR_0PM ] = &QQ[DIR_0PM *sizeQ]; - Q.q27[DIR_0MP ] = &QQ[DIR_0MP *sizeQ]; - Q.q27[DIR_000] = &QQ[DIR_000*sizeQ]; - Q.q27[DIR_PPP ] = &QQ[DIR_PPP *sizeQ]; - Q.q27[DIR_MMP ] = &QQ[DIR_MMP *sizeQ]; - Q.q27[DIR_PMP ] = &QQ[DIR_PMP *sizeQ]; - Q.q27[DIR_MPP ] = &QQ[DIR_MPP *sizeQ]; - Q.q27[DIR_PPM ] = &QQ[DIR_PPM *sizeQ]; - Q.q27[DIR_MMM ] = &QQ[DIR_MMM *sizeQ]; - Q.q27[DIR_PMM ] = &QQ[DIR_PMM *sizeQ]; - Q.q27[DIR_MPM ] = &QQ[DIR_MPM *sizeQ]; + Q.q27[dP00 ] = &QQ[dP00 *sizeQ]; + Q.q27[dM00 ] = &QQ[dM00 *sizeQ]; + Q.q27[d0P0 ] = &QQ[d0P0 *sizeQ]; + Q.q27[d0M0 ] = &QQ[d0M0 *sizeQ]; + Q.q27[d00P ] = &QQ[d00P *sizeQ]; + Q.q27[d00M ] = &QQ[d00M *sizeQ]; + Q.q27[dPP0 ] = &QQ[dPP0 *sizeQ]; + Q.q27[dMM0 ] = &QQ[dMM0 *sizeQ]; + Q.q27[dPM0 ] = &QQ[dPM0 *sizeQ]; + Q.q27[dMP0 ] = &QQ[dMP0 *sizeQ]; + Q.q27[dP0P ] = &QQ[dP0P *sizeQ]; + Q.q27[dM0M ] = &QQ[dM0M *sizeQ]; + Q.q27[dP0M ] = &QQ[dP0M *sizeQ]; + Q.q27[dM0P ] = &QQ[dM0P *sizeQ]; + Q.q27[d0PP ] = &QQ[d0PP *sizeQ]; + Q.q27[d0MM ] = &QQ[d0MM *sizeQ]; + Q.q27[d0PM ] = &QQ[d0PM *sizeQ]; + Q.q27[d0MP ] = &QQ[d0MP *sizeQ]; + Q.q27[d000] = &QQ[d000*sizeQ]; + Q.q27[dPPP ] = &QQ[dPPP *sizeQ]; + Q.q27[dMMP ] = &QQ[dMMP *sizeQ]; + Q.q27[dPMP ] = &QQ[dPMP *sizeQ]; + Q.q27[dMPP ] = &QQ[dMPP *sizeQ]; + Q.q27[dPPM ] = &QQ[dPPM *sizeQ]; + Q.q27[dMMM ] = &QQ[dMMM *sizeQ]; + Q.q27[dPMM ] = &QQ[dPMM *sizeQ]; + Q.q27[dMPM ] = &QQ[dMPM *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 @@ -97,89 +97,89 @@ void findQ(Parameter* para, int lev) { QIN.k[QIN.numberOfBCnodes] = kk[m]; - //Q.q27[DIR_P00 ][QIN.numberOfBCnodes] = -1.f; - //Q.q27[DIR_M00 ][QIN.numberOfBCnodes] = -1.f; - //Q.q27[DIR_0P0 ][QIN.numberOfBCnodes] = 0.f; - //Q.q27[DIR_0M0 ][QIN.numberOfBCnodes] = -1.f; - //Q.q27[DIR_00P ][QIN.numberOfBCnodes] = -1.f; - //Q.q27[DIR_00M ][QIN.numberOfBCnodes] = -1.f; - //Q.q27[DIR_PP0 ][QIN.numberOfBCnodes] = 0.f; - //Q.q27[DIR_MM0 ][QIN.numberOfBCnodes] = -1.f; - //Q.q27[DIR_PM0 ][QIN.numberOfBCnodes] = -1.f; - //Q.q27[DIR_MP0 ][QIN.numberOfBCnodes] = 0.f; - //Q.q27[DIR_P0P ][QIN.numberOfBCnodes] = -1.f; - //Q.q27[DIR_M0M ][QIN.numberOfBCnodes] = -1.f; - //Q.q27[DIR_P0M ][QIN.numberOfBCnodes] = -1.f; - //Q.q27[DIR_M0P ][QIN.numberOfBCnodes] = -1.f; - //Q.q27[DIR_0PP ][QIN.numberOfBCnodes] = 0.f; - //Q.q27[DIR_0MM ][QIN.numberOfBCnodes] = -1.f; - //Q.q27[DIR_0PM ][QIN.numberOfBCnodes] = 0.f; - //Q.q27[DIR_0MP ][QIN.numberOfBCnodes] = -1.f; - //Q.q27[DIR_000][QIN.numberOfBCnodes] = -1.f; - //Q.q27[DIR_PPP ][QIN.numberOfBCnodes] = 0.f; - //Q.q27[DIR_MMP ][QIN.numberOfBCnodes] = -1.f; - //Q.q27[DIR_PMP ][QIN.numberOfBCnodes] = -1.f; - //Q.q27[DIR_MPP ][QIN.numberOfBCnodes] = 0.f; - //Q.q27[DIR_PPM ][QIN.numberOfBCnodes] = 0.f; - //Q.q27[DIR_MMM ][QIN.numberOfBCnodes] = -1.f; - //Q.q27[DIR_PMM ][QIN.numberOfBCnodes] = -1.f; - //Q.q27[DIR_MPM ][QIN.numberOfBCnodes] = 0.f; - - //Q.q27[DIR_P00 ][QIN.numberOfBCnodes] = ON[DIR_M00 ]; - //Q.q27[DIR_M00 ][QIN.numberOfBCnodes] = ON[DIR_P00 ]; - //Q.q27[DIR_0P0 ][QIN.numberOfBCnodes] = ON[DIR_0M0 ]; - //Q.q27[DIR_0M0 ][QIN.numberOfBCnodes] = ON[DIR_0P0 ]; - //Q.q27[DIR_00P ][QIN.numberOfBCnodes] = ON[DIR_00M ]; - //Q.q27[DIR_00M ][QIN.numberOfBCnodes] = ON[DIR_00P ]; - //Q.q27[DIR_PP0 ][QIN.numberOfBCnodes] = ON[DIR_MM0 ]; - //Q.q27[DIR_MM0 ][QIN.numberOfBCnodes] = ON[DIR_PP0 ]; - //Q.q27[DIR_PM0 ][QIN.numberOfBCnodes] = ON[DIR_MP0 ]; - //Q.q27[DIR_MP0 ][QIN.numberOfBCnodes] = ON[DIR_PM0 ]; - //Q.q27[DIR_P0P ][QIN.numberOfBCnodes] = ON[DIR_M0M ]; - //Q.q27[DIR_M0M ][QIN.numberOfBCnodes] = ON[DIR_P0P ]; - //Q.q27[DIR_P0M ][QIN.numberOfBCnodes] = ON[DIR_M0P ]; - //Q.q27[DIR_M0P ][QIN.numberOfBCnodes] = ON[DIR_P0M ]; - //Q.q27[DIR_0PP ][QIN.numberOfBCnodes] = ON[DIR_0MM ]; - //Q.q27[DIR_0MM ][QIN.numberOfBCnodes] = ON[DIR_0PP ]; - //Q.q27[DIR_0PM ][QIN.numberOfBCnodes] = ON[DIR_0MP ]; - //Q.q27[DIR_0MP ][QIN.numberOfBCnodes] = ON[DIR_0PM ]; - //Q.q27[DIR_000][QIN.numberOfBCnodes] = ON[DIR_000]; - //Q.q27[DIR_PPP ][QIN.numberOfBCnodes] = ON[DIR_MMM ]; - //Q.q27[DIR_MMP ][QIN.numberOfBCnodes] = ON[DIR_PPM ]; - //Q.q27[DIR_PMP ][QIN.numberOfBCnodes] = ON[DIR_MPM ]; - //Q.q27[DIR_MPP ][QIN.numberOfBCnodes] = ON[DIR_PMM ]; - //Q.q27[DIR_PPM ][QIN.numberOfBCnodes] = ON[DIR_MMP ]; - //Q.q27[DIR_MMM ][QIN.numberOfBCnodes] = ON[DIR_PPP ]; - //Q.q27[DIR_PMM ][QIN.numberOfBCnodes] = ON[DIR_MPP ]; - //Q.q27[DIR_MPM ][QIN.numberOfBCnodes] = ON[DIR_PMP ]; - - Q.q27[DIR_P00 ][QIN.numberOfBCnodes] = ON[DIR_P00 ]; - Q.q27[DIR_M00 ][QIN.numberOfBCnodes] = ON[DIR_M00 ]; - Q.q27[DIR_0P0 ][QIN.numberOfBCnodes] = ON[DIR_0P0 ]; - Q.q27[DIR_0M0 ][QIN.numberOfBCnodes] = ON[DIR_0M0 ]; - Q.q27[DIR_00P ][QIN.numberOfBCnodes] = ON[DIR_00P ]; - Q.q27[DIR_00M ][QIN.numberOfBCnodes] = ON[DIR_00M ]; - Q.q27[DIR_PP0 ][QIN.numberOfBCnodes] = ON[DIR_PP0 ]; - Q.q27[DIR_MM0 ][QIN.numberOfBCnodes] = ON[DIR_MM0 ]; - Q.q27[DIR_PM0 ][QIN.numberOfBCnodes] = ON[DIR_PM0 ]; - Q.q27[DIR_MP0 ][QIN.numberOfBCnodes] = ON[DIR_MP0 ]; - Q.q27[DIR_P0P ][QIN.numberOfBCnodes] = ON[DIR_P0P ]; - Q.q27[DIR_M0M ][QIN.numberOfBCnodes] = ON[DIR_M0M ]; - Q.q27[DIR_P0M ][QIN.numberOfBCnodes] = ON[DIR_P0M ]; - Q.q27[DIR_M0P ][QIN.numberOfBCnodes] = ON[DIR_M0P ]; - Q.q27[DIR_0PP ][QIN.numberOfBCnodes] = ON[DIR_0PP ]; - Q.q27[DIR_0MM ][QIN.numberOfBCnodes] = ON[DIR_0MM ]; - Q.q27[DIR_0PM ][QIN.numberOfBCnodes] = ON[DIR_0PM ]; - Q.q27[DIR_0MP ][QIN.numberOfBCnodes] = ON[DIR_0MP ]; - Q.q27[DIR_000][QIN.numberOfBCnodes] = ON[DIR_000]; - Q.q27[DIR_PPP ][QIN.numberOfBCnodes] = ON[DIR_PPP ]; - Q.q27[DIR_MMP ][QIN.numberOfBCnodes] = ON[DIR_MMP ]; - Q.q27[DIR_PMP ][QIN.numberOfBCnodes] = ON[DIR_PMP ]; - Q.q27[DIR_MPP ][QIN.numberOfBCnodes] = ON[DIR_MPP ]; - Q.q27[DIR_PPM ][QIN.numberOfBCnodes] = ON[DIR_PPM ]; - Q.q27[DIR_MMM ][QIN.numberOfBCnodes] = ON[DIR_MMM ]; - Q.q27[DIR_PMM ][QIN.numberOfBCnodes] = ON[DIR_PMM ]; - Q.q27[DIR_MPM ][QIN.numberOfBCnodes] = ON[DIR_MPM ]; + //Q.q27[dP00 ][QIN.numberOfBCnodes] = -1.f; + //Q.q27[dM00 ][QIN.numberOfBCnodes] = -1.f; + //Q.q27[d0P0 ][QIN.numberOfBCnodes] = 0.f; + //Q.q27[d0M0 ][QIN.numberOfBCnodes] = -1.f; + //Q.q27[d00P ][QIN.numberOfBCnodes] = -1.f; + //Q.q27[d00M ][QIN.numberOfBCnodes] = -1.f; + //Q.q27[dPP0 ][QIN.numberOfBCnodes] = 0.f; + //Q.q27[dMM0 ][QIN.numberOfBCnodes] = -1.f; + //Q.q27[dPM0 ][QIN.numberOfBCnodes] = -1.f; + //Q.q27[dMP0 ][QIN.numberOfBCnodes] = 0.f; + //Q.q27[dP0P ][QIN.numberOfBCnodes] = -1.f; + //Q.q27[dM0M ][QIN.numberOfBCnodes] = -1.f; + //Q.q27[dP0M ][QIN.numberOfBCnodes] = -1.f; + //Q.q27[dM0P ][QIN.numberOfBCnodes] = -1.f; + //Q.q27[d0PP ][QIN.numberOfBCnodes] = 0.f; + //Q.q27[d0MM ][QIN.numberOfBCnodes] = -1.f; + //Q.q27[d0PM ][QIN.numberOfBCnodes] = 0.f; + //Q.q27[d0MP ][QIN.numberOfBCnodes] = -1.f; + //Q.q27[d000][QIN.numberOfBCnodes] = -1.f; + //Q.q27[dPPP ][QIN.numberOfBCnodes] = 0.f; + //Q.q27[dMMP ][QIN.numberOfBCnodes] = -1.f; + //Q.q27[dPMP ][QIN.numberOfBCnodes] = -1.f; + //Q.q27[dMPP ][QIN.numberOfBCnodes] = 0.f; + //Q.q27[dPPM ][QIN.numberOfBCnodes] = 0.f; + //Q.q27[dMMM ][QIN.numberOfBCnodes] = -1.f; + //Q.q27[dPMM ][QIN.numberOfBCnodes] = -1.f; + //Q.q27[dMPM ][QIN.numberOfBCnodes] = 0.f; + + //Q.q27[dP00 ][QIN.numberOfBCnodes] = ON[dM00 ]; + //Q.q27[dM00 ][QIN.numberOfBCnodes] = ON[dP00 ]; + //Q.q27[d0P0 ][QIN.numberOfBCnodes] = ON[d0M0 ]; + //Q.q27[d0M0 ][QIN.numberOfBCnodes] = ON[d0P0 ]; + //Q.q27[d00P ][QIN.numberOfBCnodes] = ON[d00M ]; + //Q.q27[d00M ][QIN.numberOfBCnodes] = ON[d00P ]; + //Q.q27[dPP0 ][QIN.numberOfBCnodes] = ON[dMM0 ]; + //Q.q27[dMM0 ][QIN.numberOfBCnodes] = ON[dPP0 ]; + //Q.q27[dPM0 ][QIN.numberOfBCnodes] = ON[dMP0 ]; + //Q.q27[dMP0 ][QIN.numberOfBCnodes] = ON[dPM0 ]; + //Q.q27[dP0P ][QIN.numberOfBCnodes] = ON[dM0M ]; + //Q.q27[dM0M ][QIN.numberOfBCnodes] = ON[dP0P ]; + //Q.q27[dP0M ][QIN.numberOfBCnodes] = ON[dM0P ]; + //Q.q27[dM0P ][QIN.numberOfBCnodes] = ON[dP0M ]; + //Q.q27[d0PP ][QIN.numberOfBCnodes] = ON[d0MM ]; + //Q.q27[d0MM ][QIN.numberOfBCnodes] = ON[d0PP ]; + //Q.q27[d0PM ][QIN.numberOfBCnodes] = ON[d0MP ]; + //Q.q27[d0MP ][QIN.numberOfBCnodes] = ON[d0PM ]; + //Q.q27[d000][QIN.numberOfBCnodes] = ON[d000]; + //Q.q27[dPPP ][QIN.numberOfBCnodes] = ON[dMMM ]; + //Q.q27[dMMP ][QIN.numberOfBCnodes] = ON[dPPM ]; + //Q.q27[dPMP ][QIN.numberOfBCnodes] = ON[dMPM ]; + //Q.q27[dMPP ][QIN.numberOfBCnodes] = ON[dPMM ]; + //Q.q27[dPPM ][QIN.numberOfBCnodes] = ON[dMMP ]; + //Q.q27[dMMM ][QIN.numberOfBCnodes] = ON[dPPP ]; + //Q.q27[dPMM ][QIN.numberOfBCnodes] = ON[dMPP ]; + //Q.q27[dMPM ][QIN.numberOfBCnodes] = ON[dPMP ]; + + Q.q27[dP00 ][QIN.numberOfBCnodes] = ON[dP00 ]; + Q.q27[dM00 ][QIN.numberOfBCnodes] = ON[dM00 ]; + Q.q27[d0P0 ][QIN.numberOfBCnodes] = ON[d0P0 ]; + Q.q27[d0M0 ][QIN.numberOfBCnodes] = ON[d0M0 ]; + Q.q27[d00P ][QIN.numberOfBCnodes] = ON[d00P ]; + Q.q27[d00M ][QIN.numberOfBCnodes] = ON[d00M ]; + Q.q27[dPP0 ][QIN.numberOfBCnodes] = ON[dPP0 ]; + Q.q27[dMM0 ][QIN.numberOfBCnodes] = ON[dMM0 ]; + Q.q27[dPM0 ][QIN.numberOfBCnodes] = ON[dPM0 ]; + Q.q27[dMP0 ][QIN.numberOfBCnodes] = ON[dMP0 ]; + Q.q27[dP0P ][QIN.numberOfBCnodes] = ON[dP0P ]; + Q.q27[dM0M ][QIN.numberOfBCnodes] = ON[dM0M ]; + Q.q27[dP0M ][QIN.numberOfBCnodes] = ON[dP0M ]; + Q.q27[dM0P ][QIN.numberOfBCnodes] = ON[dM0P ]; + Q.q27[d0PP ][QIN.numberOfBCnodes] = ON[d0PP ]; + Q.q27[d0MM ][QIN.numberOfBCnodes] = ON[d0MM ]; + Q.q27[d0PM ][QIN.numberOfBCnodes] = ON[d0PM ]; + Q.q27[d0MP ][QIN.numberOfBCnodes] = ON[d0MP ]; + Q.q27[d000][QIN.numberOfBCnodes] = ON[d000]; + Q.q27[dPPP ][QIN.numberOfBCnodes] = ON[dPPP ]; + Q.q27[dMMP ][QIN.numberOfBCnodes] = ON[dMMP ]; + Q.q27[dPMP ][QIN.numberOfBCnodes] = ON[dPMP ]; + Q.q27[dMPP ][QIN.numberOfBCnodes] = ON[dMPP ]; + Q.q27[dPPM ][QIN.numberOfBCnodes] = ON[dPPM ]; + Q.q27[dMMM ][QIN.numberOfBCnodes] = ON[dMMM ]; + Q.q27[dPMM ][QIN.numberOfBCnodes] = ON[dPMM ]; + Q.q27[dMPM ][QIN.numberOfBCnodes] = ON[dMPM ]; QIN.numberOfBCnodes++; } @@ -199,7 +199,7 @@ void findKforQ(Parameter* para, int lev) VF_LOG_CRITICAL("findKforQ() is deprecated! - see comment above for more information"); //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - ////////////// DIR_P00 DIR_M00 DIR_0P0 DIR_0M0 DIR_00P DIR_00M DIR_PP0 DIR_MM0 DIR_PM0 DIR_MP0 DIR_P0P DIR_M0M DIR_P0M DIR_M0P DIR_0PP DIR_0MM DIR_0PM DIR_0MP ZERO DIR_PPP DIR_PPM DIR_PMP DIR_PMM DIR_MPP DIR_MPM DIR_MMP DIR_MMM //////////////////////// + ////////////// dP00 dM00 d0P0 d0M0 d00P d00M dPP0 dMM0 dPM0 dMP0 dP0P dM0M dP0M dM0P d0PP d0MM d0PM d0MP ZERO dPPP dPPM dPMP dPMM dMPP dMPM dMMP dMMM //////////////////////// 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}; @@ -247,33 +247,33 @@ 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[DIR_P00 ] = &QQ[DIR_P00 *sizeQ]; - Q.q27[DIR_M00 ] = &QQ[DIR_M00 *sizeQ]; - Q.q27[DIR_0P0 ] = &QQ[DIR_0P0 *sizeQ]; - Q.q27[DIR_0M0 ] = &QQ[DIR_0M0 *sizeQ]; - Q.q27[DIR_00P ] = &QQ[DIR_00P *sizeQ]; - Q.q27[DIR_00M ] = &QQ[DIR_00M *sizeQ]; - Q.q27[DIR_PP0 ] = &QQ[DIR_PP0 *sizeQ]; - Q.q27[DIR_MM0 ] = &QQ[DIR_MM0 *sizeQ]; - Q.q27[DIR_PM0 ] = &QQ[DIR_PM0 *sizeQ]; - Q.q27[DIR_MP0 ] = &QQ[DIR_MP0 *sizeQ]; - Q.q27[DIR_P0P ] = &QQ[DIR_P0P *sizeQ]; - Q.q27[DIR_M0M ] = &QQ[DIR_M0M *sizeQ]; - Q.q27[DIR_P0M ] = &QQ[DIR_P0M *sizeQ]; - Q.q27[DIR_M0P ] = &QQ[DIR_M0P *sizeQ]; - Q.q27[DIR_0PP ] = &QQ[DIR_0PP *sizeQ]; - Q.q27[DIR_0MM ] = &QQ[DIR_0MM *sizeQ]; - Q.q27[DIR_0PM ] = &QQ[DIR_0PM *sizeQ]; - Q.q27[DIR_0MP ] = &QQ[DIR_0MP *sizeQ]; - Q.q27[DIR_000] = &QQ[DIR_000*sizeQ]; - Q.q27[DIR_PPP ] = &QQ[DIR_PPP *sizeQ]; - Q.q27[DIR_MMP ] = &QQ[DIR_MMP *sizeQ]; - Q.q27[DIR_PMP ] = &QQ[DIR_PMP *sizeQ]; - Q.q27[DIR_MPP ] = &QQ[DIR_MPP *sizeQ]; - Q.q27[DIR_PPM ] = &QQ[DIR_PPM *sizeQ]; - Q.q27[DIR_MMM ] = &QQ[DIR_MMM *sizeQ]; - Q.q27[DIR_PMM ] = &QQ[DIR_PMM *sizeQ]; - Q.q27[DIR_MPM ] = &QQ[DIR_MPM *sizeQ]; + Q.q27[dP00 ] = &QQ[dP00 *sizeQ]; + Q.q27[dM00 ] = &QQ[dM00 *sizeQ]; + Q.q27[d0P0 ] = &QQ[d0P0 *sizeQ]; + Q.q27[d0M0 ] = &QQ[d0M0 *sizeQ]; + Q.q27[d00P ] = &QQ[d00P *sizeQ]; + Q.q27[d00M ] = &QQ[d00M *sizeQ]; + Q.q27[dPP0 ] = &QQ[dPP0 *sizeQ]; + Q.q27[dMM0 ] = &QQ[dMM0 *sizeQ]; + Q.q27[dPM0 ] = &QQ[dPM0 *sizeQ]; + Q.q27[dMP0 ] = &QQ[dMP0 *sizeQ]; + Q.q27[dP0P ] = &QQ[dP0P *sizeQ]; + Q.q27[dM0M ] = &QQ[dM0M *sizeQ]; + Q.q27[dP0M ] = &QQ[dP0M *sizeQ]; + Q.q27[dM0P ] = &QQ[dM0P *sizeQ]; + Q.q27[d0PP ] = &QQ[d0PP *sizeQ]; + Q.q27[d0MM ] = &QQ[d0MM *sizeQ]; + Q.q27[d0PM ] = &QQ[d0PM *sizeQ]; + Q.q27[d0MP ] = &QQ[d0MP *sizeQ]; + Q.q27[d000] = &QQ[d000*sizeQ]; + Q.q27[dPPP ] = &QQ[dPPP *sizeQ]; + Q.q27[dMMP ] = &QQ[dMMP *sizeQ]; + Q.q27[dPMP ] = &QQ[dPMP *sizeQ]; + Q.q27[dMPP ] = &QQ[dMPP *sizeQ]; + Q.q27[dPPM ] = &QQ[dPPM *sizeQ]; + Q.q27[dMMM ] = &QQ[dMMM *sizeQ]; + Q.q27[dPMM ] = &QQ[dPMM *sizeQ]; + Q.q27[dMPM ] = &QQ[dMPM *sizeQ]; // ! CAUTION ! Do not use this function! // As the order of the distributions was changed in July 2022, this does not work anymore. @@ -282,7 +282,7 @@ void findQ_MG( int nx, int ny, unsigned int nnx, unsigned int nny, unsigned int VF_LOG_CRITICAL("findQ_MG() is deprecated! - see comment above for more information"); //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - ////////////// DIR_P00 DIR_M00 DIR_0P0 DIR_0M0 DIR_00P DIR_00M DIR_PP0 DIR_MM0 DIR_PM0 DIR_MP0 DIR_P0P DIR_M0M DIR_P0M DIR_M0P DIR_0PP DIR_0MM DIR_0PM DIR_0MP ZERO DIR_PPP DIR_PPM DIR_PMP DIR_PMM DIR_MPP DIR_MPM DIR_MMP DIR_MMM //////////////////////// + ////////////// dP00 dM00 d0P0 d0M0 d00P d00M dPP0 dMM0 dPM0 dMP0 dP0P dM0M dP0M dM0P d0PP d0MM d0PM d0MP ZERO dPPP dPPM dPMP dPMM dMPP dMPM dMMP dMMM //////////////////////// 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}; @@ -327,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[DIR_P00 ][QIN.numberOfBCnodes] = ON[DIR_P00 ]; - Q.q27[DIR_M00 ][QIN.numberOfBCnodes] = ON[DIR_M00 ]; - Q.q27[DIR_0P0 ][QIN.numberOfBCnodes] = ON[DIR_0P0 ]; - Q.q27[DIR_0M0 ][QIN.numberOfBCnodes] = ON[DIR_0M0 ]; - Q.q27[DIR_00P ][QIN.numberOfBCnodes] = ON[DIR_00P ]; - Q.q27[DIR_00M ][QIN.numberOfBCnodes] = ON[DIR_00M ]; - Q.q27[DIR_PP0 ][QIN.numberOfBCnodes] = ON[DIR_PP0 ]; - Q.q27[DIR_MM0 ][QIN.numberOfBCnodes] = ON[DIR_MM0 ]; - Q.q27[DIR_PM0 ][QIN.numberOfBCnodes] = ON[DIR_PM0 ]; - Q.q27[DIR_MP0 ][QIN.numberOfBCnodes] = ON[DIR_MP0 ]; - Q.q27[DIR_P0P ][QIN.numberOfBCnodes] = ON[DIR_P0P ]; - Q.q27[DIR_M0M ][QIN.numberOfBCnodes] = ON[DIR_M0M ]; - Q.q27[DIR_P0M ][QIN.numberOfBCnodes] = ON[DIR_P0M ]; - Q.q27[DIR_M0P ][QIN.numberOfBCnodes] = ON[DIR_M0P ]; - Q.q27[DIR_0PP ][QIN.numberOfBCnodes] = ON[DIR_0PP ]; - Q.q27[DIR_0MM ][QIN.numberOfBCnodes] = ON[DIR_0MM ]; - Q.q27[DIR_0PM ][QIN.numberOfBCnodes] = ON[DIR_0PM ]; - Q.q27[DIR_0MP ][QIN.numberOfBCnodes] = ON[DIR_0MP ]; - Q.q27[DIR_000][QIN.numberOfBCnodes] = ON[DIR_000]; - Q.q27[DIR_PPP ][QIN.numberOfBCnodes] = ON[DIR_PPP ]; - Q.q27[DIR_MMP ][QIN.numberOfBCnodes] = ON[DIR_MMP ]; - Q.q27[DIR_PMP ][QIN.numberOfBCnodes] = ON[DIR_PMP ]; - Q.q27[DIR_MPP ][QIN.numberOfBCnodes] = ON[DIR_MPP ]; - Q.q27[DIR_PPM ][QIN.numberOfBCnodes] = ON[DIR_PPM ]; - Q.q27[DIR_MMM ][QIN.numberOfBCnodes] = ON[DIR_MMM ]; - Q.q27[DIR_PMM ][QIN.numberOfBCnodes] = ON[DIR_PMM ]; - Q.q27[DIR_MPM ][QIN.numberOfBCnodes] = ON[DIR_MPM ]; + Q.q27[dP00 ][QIN.numberOfBCnodes] = ON[dP00 ]; + Q.q27[dM00 ][QIN.numberOfBCnodes] = ON[dM00 ]; + Q.q27[d0P0 ][QIN.numberOfBCnodes] = ON[d0P0 ]; + Q.q27[d0M0 ][QIN.numberOfBCnodes] = ON[d0M0 ]; + Q.q27[d00P ][QIN.numberOfBCnodes] = ON[d00P ]; + Q.q27[d00M ][QIN.numberOfBCnodes] = ON[d00M ]; + Q.q27[dPP0 ][QIN.numberOfBCnodes] = ON[dPP0 ]; + Q.q27[dMM0 ][QIN.numberOfBCnodes] = ON[dMM0 ]; + Q.q27[dPM0 ][QIN.numberOfBCnodes] = ON[dPM0 ]; + Q.q27[dMP0 ][QIN.numberOfBCnodes] = ON[dMP0 ]; + Q.q27[dP0P ][QIN.numberOfBCnodes] = ON[dP0P ]; + Q.q27[dM0M ][QIN.numberOfBCnodes] = ON[dM0M ]; + Q.q27[dP0M ][QIN.numberOfBCnodes] = ON[dP0M ]; + Q.q27[dM0P ][QIN.numberOfBCnodes] = ON[dM0P ]; + Q.q27[d0PP ][QIN.numberOfBCnodes] = ON[d0PP ]; + Q.q27[d0MM ][QIN.numberOfBCnodes] = ON[d0MM ]; + Q.q27[d0PM ][QIN.numberOfBCnodes] = ON[d0PM ]; + Q.q27[d0MP ][QIN.numberOfBCnodes] = ON[d0MP ]; + Q.q27[d000][QIN.numberOfBCnodes] = ON[d000]; + Q.q27[dPPP ][QIN.numberOfBCnodes] = ON[dPPP ]; + Q.q27[dMMP ][QIN.numberOfBCnodes] = ON[dMMP ]; + Q.q27[dPMP ][QIN.numberOfBCnodes] = ON[dPMP ]; + Q.q27[dMPP ][QIN.numberOfBCnodes] = ON[dMPP ]; + Q.q27[dPPM ][QIN.numberOfBCnodes] = ON[dPPM ]; + Q.q27[dMMM ][QIN.numberOfBCnodes] = ON[dMMM ]; + Q.q27[dPMM ][QIN.numberOfBCnodes] = ON[dPMM ]; + Q.q27[dMPM ][QIN.numberOfBCnodes] = ON[dMPM ]; QIN.numberOfBCnodes++; } @@ -373,7 +373,7 @@ void findKforQ_MG(int nx, int ny, unsigned int nnx, unsigned int nny, unsigned i VF_LOG_CRITICAL("findKforQ_MG() is deprecated! - see comment above for more information"); //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - ////////////// DIR_P00 DIR_M00 DIR_0P0 DIR_0M0 DIR_00P DIR_00M DIR_PP0 DIR_MM0 DIR_PM0 DIR_MP0 DIR_P0P DIR_M0M DIR_P0M DIR_M0P DIR_0PP DIR_0MM DIR_0PM DIR_0MP ZERO DIR_PPP DIR_PPM DIR_PMP DIR_PMM DIR_MPP DIR_MPM DIR_MMP DIR_MMM //////////////////////// + ////////////// dP00 dM00 d0P0 d0M0 d00P d00M dPP0 dMM0 dPM0 dMP0 dP0P dM0M dP0M dM0P d0PP d0MM d0PM d0MP ZERO dPPP dPPM dPMP dPMM dMPP dMPM dMMP dMMM //////////////////////// 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}; @@ -448,33 +448,33 @@ void findQInflow(Parameter* para) QIN.numberOfBCnodes = 0; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// QforBoundaryConditions Q; - Q.q27[DIR_P00 ] = &QQ[DIR_P00 *sizeQ]; - Q.q27[DIR_M00 ] = &QQ[DIR_M00 *sizeQ]; - Q.q27[DIR_0P0 ] = &QQ[DIR_0P0 *sizeQ]; - Q.q27[DIR_0M0 ] = &QQ[DIR_0M0 *sizeQ]; - Q.q27[DIR_00P ] = &QQ[DIR_00P *sizeQ]; - Q.q27[DIR_00M ] = &QQ[DIR_00M *sizeQ]; - Q.q27[DIR_PP0 ] = &QQ[DIR_PP0 *sizeQ]; - Q.q27[DIR_MM0 ] = &QQ[DIR_MM0 *sizeQ]; - Q.q27[DIR_PM0 ] = &QQ[DIR_PM0 *sizeQ]; - Q.q27[DIR_MP0 ] = &QQ[DIR_MP0 *sizeQ]; - Q.q27[DIR_P0P ] = &QQ[DIR_P0P *sizeQ]; - Q.q27[DIR_M0M ] = &QQ[DIR_M0M *sizeQ]; - Q.q27[DIR_P0M ] = &QQ[DIR_P0M *sizeQ]; - Q.q27[DIR_M0P ] = &QQ[DIR_M0P *sizeQ]; - Q.q27[DIR_0PP ] = &QQ[DIR_0PP *sizeQ]; - Q.q27[DIR_0MM ] = &QQ[DIR_0MM *sizeQ]; - Q.q27[DIR_0PM ] = &QQ[DIR_0PM *sizeQ]; - Q.q27[DIR_0MP ] = &QQ[DIR_0MP *sizeQ]; - Q.q27[DIR_000] = &QQ[DIR_000*sizeQ]; - Q.q27[DIR_PPP ] = &QQ[DIR_PPP *sizeQ]; - Q.q27[DIR_MMP ] = &QQ[DIR_MMP *sizeQ]; - Q.q27[DIR_PMP ] = &QQ[DIR_PMP *sizeQ]; - Q.q27[DIR_MPP ] = &QQ[DIR_MPP *sizeQ]; - Q.q27[DIR_PPM ] = &QQ[DIR_PPM *sizeQ]; - Q.q27[DIR_MMM ] = &QQ[DIR_MMM *sizeQ]; - Q.q27[DIR_PMM ] = &QQ[DIR_PMM *sizeQ]; - Q.q27[DIR_MPM ] = &QQ[DIR_MPM *sizeQ]; + Q.q27[dP00 ] = &QQ[dP00 *sizeQ]; + Q.q27[dM00 ] = &QQ[dM00 *sizeQ]; + Q.q27[d0P0 ] = &QQ[d0P0 *sizeQ]; + Q.q27[d0M0 ] = &QQ[d0M0 *sizeQ]; + Q.q27[d00P ] = &QQ[d00P *sizeQ]; + Q.q27[d00M ] = &QQ[d00M *sizeQ]; + Q.q27[dPP0 ] = &QQ[dPP0 *sizeQ]; + Q.q27[dMM0 ] = &QQ[dMM0 *sizeQ]; + Q.q27[dPM0 ] = &QQ[dPM0 *sizeQ]; + Q.q27[dMP0 ] = &QQ[dMP0 *sizeQ]; + Q.q27[dP0P ] = &QQ[dP0P *sizeQ]; + Q.q27[dM0M ] = &QQ[dM0M *sizeQ]; + Q.q27[dP0M ] = &QQ[dP0M *sizeQ]; + Q.q27[dM0P ] = &QQ[dM0P *sizeQ]; + Q.q27[d0PP ] = &QQ[d0PP *sizeQ]; + Q.q27[d0MM ] = &QQ[d0MM *sizeQ]; + Q.q27[d0PM ] = &QQ[d0PM *sizeQ]; + Q.q27[d0MP ] = &QQ[d0MP *sizeQ]; + Q.q27[d000] = &QQ[d000*sizeQ]; + Q.q27[dPPP ] = &QQ[dPPP *sizeQ]; + Q.q27[dMMP ] = &QQ[dMMP *sizeQ]; + Q.q27[dPMP ] = &QQ[dPMP *sizeQ]; + Q.q27[dMPP ] = &QQ[dMPP *sizeQ]; + Q.q27[dPPM ] = &QQ[dPPM *sizeQ]; + Q.q27[dMMM ] = &QQ[dMMM *sizeQ]; + Q.q27[dPMM ] = &QQ[dPMM *sizeQ]; + Q.q27[dMPM ] = &QQ[dMPM *sizeQ]; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //unsigned int li = ((nnx+STARTOFFX-2)-(STARTOFFX+1)-1); //unsigned int lj = ((nny+STARTOFFY-2)-(STARTOFFY+1)-1); @@ -497,33 +497,33 @@ 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[DIR_P00 ][QIN.numberOfBCnodes] = (real)-1.f; - //Q.q27[DIR_M00 ][QIN.numberOfBCnodes] = (real)-1.f; - //Q.q27[DIR_0P0 ][QIN.numberOfBCnodes] = (real)-1.f; - //Q.q27[DIR_0M0 ][QIN.numberOfBCnodes] = (real)-1.f; - //Q.q27[DIR_00P ][QIN.numberOfBCnodes] = (real)-1.f; - //Q.q27[DIR_00M ][QIN.numberOfBCnodes] = (real)1.f; - //Q.q27[DIR_PP0 ][QIN.numberOfBCnodes] = (real)-1.f; - //Q.q27[DIR_MM0 ][QIN.numberOfBCnodes] = (real)-1.f; - //Q.q27[DIR_PM0 ][QIN.numberOfBCnodes] = (real)-1.f; - //Q.q27[DIR_MP0 ][QIN.numberOfBCnodes] = (real)-1.f; - //Q.q27[DIR_P0P ][QIN.numberOfBCnodes] = (real)-1.f; - //Q.q27[DIR_M0M ][QIN.numberOfBCnodes] = (real)1.f; - //Q.q27[DIR_P0M ][QIN.numberOfBCnodes] = (real)1.f; - //Q.q27[DIR_M0P ][QIN.numberOfBCnodes] = (real)-1.f; - //Q.q27[DIR_0PP ][QIN.numberOfBCnodes] = (real)-1.f; - //Q.q27[DIR_0MM ][QIN.numberOfBCnodes] = (real)1.f; - //Q.q27[DIR_0PM ][QIN.numberOfBCnodes] = (real)1.f; - //Q.q27[DIR_0MP ][QIN.numberOfBCnodes] = (real)-1.f; - //Q.q27[DIR_000][QIN.numberOfBCnodes] = (real)-1.f; - //Q.q27[DIR_PPP ][QIN.numberOfBCnodes] = (real)-1.f; - //Q.q27[DIR_MMP ][QIN.numberOfBCnodes] = (real)-1.f; - //Q.q27[DIR_PMP ][QIN.numberOfBCnodes] = (real)-1.f; - //Q.q27[DIR_MPP ][QIN.numberOfBCnodes] = (real)-1.f; - //Q.q27[DIR_PPM ][QIN.numberOfBCnodes] = (real)1.f; - //Q.q27[DIR_MMM ][QIN.numberOfBCnodes] = (real)1.f; - //Q.q27[DIR_PMM ][QIN.numberOfBCnodes] = (real)1.f; - //Q.q27[DIR_MPM ][QIN.numberOfBCnodes] = (real)1.f; + //Q.q27[dP00 ][QIN.numberOfBCnodes] = (real)-1.f; + //Q.q27[dM00 ][QIN.numberOfBCnodes] = (real)-1.f; + //Q.q27[d0P0 ][QIN.numberOfBCnodes] = (real)-1.f; + //Q.q27[d0M0 ][QIN.numberOfBCnodes] = (real)-1.f; + //Q.q27[d00P ][QIN.numberOfBCnodes] = (real)-1.f; + //Q.q27[d00M ][QIN.numberOfBCnodes] = (real)1.f; + //Q.q27[dPP0 ][QIN.numberOfBCnodes] = (real)-1.f; + //Q.q27[dMM0 ][QIN.numberOfBCnodes] = (real)-1.f; + //Q.q27[dPM0 ][QIN.numberOfBCnodes] = (real)-1.f; + //Q.q27[dMP0 ][QIN.numberOfBCnodes] = (real)-1.f; + //Q.q27[dP0P ][QIN.numberOfBCnodes] = (real)-1.f; + //Q.q27[dM0M ][QIN.numberOfBCnodes] = (real)1.f; + //Q.q27[dP0M ][QIN.numberOfBCnodes] = (real)1.f; + //Q.q27[dM0P ][QIN.numberOfBCnodes] = (real)-1.f; + //Q.q27[d0PP ][QIN.numberOfBCnodes] = (real)-1.f; + //Q.q27[d0MM ][QIN.numberOfBCnodes] = (real)1.f; + //Q.q27[d0PM ][QIN.numberOfBCnodes] = (real)1.f; + //Q.q27[d0MP ][QIN.numberOfBCnodes] = (real)-1.f; + //Q.q27[d000][QIN.numberOfBCnodes] = (real)-1.f; + //Q.q27[dPPP ][QIN.numberOfBCnodes] = (real)-1.f; + //Q.q27[dMMP ][QIN.numberOfBCnodes] = (real)-1.f; + //Q.q27[dPMP ][QIN.numberOfBCnodes] = (real)-1.f; + //Q.q27[dMPP ][QIN.numberOfBCnodes] = (real)-1.f; + //Q.q27[dPPM ][QIN.numberOfBCnodes] = (real)1.f; + //Q.q27[dMMM ][QIN.numberOfBCnodes] = (real)1.f; + //Q.q27[dPMM ][QIN.numberOfBCnodes] = (real)1.f; + //Q.q27[dMPM ][QIN.numberOfBCnodes] = (real)1.f; ////////////////////////////////////////////////////////////////////////// @@ -531,33 +531,33 @@ void findQInflow(Parameter* para) // 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[DIR_P00 ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[DIR_M00 ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[DIR_0P0 ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[DIR_0M0 ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[DIR_00P ][QIN.numberOfBCnodes] = (real)1.f; - Q.q27[DIR_00M ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[DIR_PP0 ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[DIR_MM0 ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[DIR_PM0 ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[DIR_MP0 ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[DIR_P0P ][QIN.numberOfBCnodes] = (real)1.f; - Q.q27[DIR_M0M ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[DIR_P0M ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[DIR_M0P ][QIN.numberOfBCnodes] = (real)1.f; - Q.q27[DIR_0PP ][QIN.numberOfBCnodes] = (real)1.f; - Q.q27[DIR_0MM ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[DIR_0PM ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[DIR_0MP ][QIN.numberOfBCnodes] = (real)1.f; - Q.q27[DIR_000][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[DIR_PPP ][QIN.numberOfBCnodes] = (real)1.f; - Q.q27[DIR_MMP ][QIN.numberOfBCnodes] = (real)1.f; - Q.q27[DIR_PMP ][QIN.numberOfBCnodes] = (real)1.f; - Q.q27[DIR_MPP ][QIN.numberOfBCnodes] = (real)1.f; - Q.q27[DIR_PPM ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[DIR_MMM ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[DIR_PMM ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[DIR_MPM ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[dP00 ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[dM00 ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[d0P0 ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[d0M0 ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[d00P ][QIN.numberOfBCnodes] = (real)1.f; + Q.q27[d00M ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[dPP0 ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[dMM0 ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[dPM0 ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[dMP0 ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[dP0P ][QIN.numberOfBCnodes] = (real)1.f; + Q.q27[dM0M ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[dP0M ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[dM0P ][QIN.numberOfBCnodes] = (real)1.f; + Q.q27[d0PP ][QIN.numberOfBCnodes] = (real)1.f; + Q.q27[d0MM ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[d0PM ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[d0MP ][QIN.numberOfBCnodes] = (real)1.f; + Q.q27[d000][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[dPPP ][QIN.numberOfBCnodes] = (real)1.f; + Q.q27[dMMP ][QIN.numberOfBCnodes] = (real)1.f; + Q.q27[dPMP ][QIN.numberOfBCnodes] = (real)1.f; + Q.q27[dMPP ][QIN.numberOfBCnodes] = (real)1.f; + Q.q27[dPPM ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[dMMM ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[dPMM ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[dMPM ][QIN.numberOfBCnodes] = (real)-1.f; ////////////////////////////////////////////////////////////////////////// QIN.numberOfBCnodes++; } @@ -588,33 +588,33 @@ void findQInflow(Parameter* para) // vy[QIN.numberOfBCnodes] = 0.f; // vz[QIN.numberOfBCnodes] = u0; - // Q.q27[DIR_P00 ][QIN.numberOfBCnodes] = ON[DIR_P00 ]; - // Q.q27[DIR_M00 ][QIN.numberOfBCnodes] = ON[DIR_M00 ]; - // Q.q27[DIR_0P0 ][QIN.numberOfBCnodes] = ON[DIR_0P0 ]; - // Q.q27[DIR_0M0 ][QIN.numberOfBCnodes] = ON[DIR_0M0 ]; - // Q.q27[DIR_00P ][QIN.numberOfBCnodes] = ON[DIR_00P ]; - // Q.q27[DIR_00M ][QIN.numberOfBCnodes] = ON[DIR_00M ]; - // Q.q27[DIR_PP0 ][QIN.numberOfBCnodes] = ON[DIR_PP0 ]; - // Q.q27[DIR_MM0 ][QIN.numberOfBCnodes] = ON[DIR_MM0 ]; - // Q.q27[DIR_PM0 ][QIN.numberOfBCnodes] = ON[DIR_PM0 ]; - // Q.q27[DIR_MP0 ][QIN.numberOfBCnodes] = ON[DIR_MP0 ]; - // Q.q27[DIR_P0P ][QIN.numberOfBCnodes] = ON[DIR_P0P ]; - // Q.q27[DIR_M0M ][QIN.numberOfBCnodes] = ON[DIR_M0M ]; - // Q.q27[DIR_P0M ][QIN.numberOfBCnodes] = ON[DIR_P0M ]; - // Q.q27[DIR_M0P ][QIN.numberOfBCnodes] = ON[DIR_M0P ]; - // Q.q27[DIR_0PP ][QIN.numberOfBCnodes] = ON[DIR_0PP ]; - // Q.q27[DIR_0MM ][QIN.numberOfBCnodes] = ON[DIR_0MM ]; - // Q.q27[DIR_0PM ][QIN.numberOfBCnodes] = ON[DIR_0PM ]; - // Q.q27[DIR_0MP ][QIN.numberOfBCnodes] = ON[DIR_0MP ]; - // Q.q27[DIR_000][QIN.numberOfBCnodes] = ON[DIR_000]; - // Q.q27[DIR_PPP ][QIN.numberOfBCnodes] = ON[DIR_PPP ]; - // Q.q27[DIR_MMP ][QIN.numberOfBCnodes] = ON[DIR_MMP ]; - // Q.q27[DIR_PMP ][QIN.numberOfBCnodes] = ON[DIR_PMP ]; - // Q.q27[DIR_MPP ][QIN.numberOfBCnodes] = ON[DIR_MPP ]; - // Q.q27[DIR_PPM ][QIN.numberOfBCnodes] = ON[DIR_PPM ]; - // Q.q27[DIR_MMM ][QIN.numberOfBCnodes] = ON[DIR_MMM ]; - // Q.q27[DIR_PMM ][QIN.numberOfBCnodes] = ON[DIR_PMM ]; - // Q.q27[DIR_MPM ][QIN.numberOfBCnodes] = ON[DIR_MPM ]; + // Q.q27[dP00 ][QIN.numberOfBCnodes] = ON[dP00 ]; + // Q.q27[dM00 ][QIN.numberOfBCnodes] = ON[dM00 ]; + // Q.q27[d0P0 ][QIN.numberOfBCnodes] = ON[d0P0 ]; + // Q.q27[d0M0 ][QIN.numberOfBCnodes] = ON[d0M0 ]; + // Q.q27[d00P ][QIN.numberOfBCnodes] = ON[d00P ]; + // Q.q27[d00M ][QIN.numberOfBCnodes] = ON[d00M ]; + // Q.q27[dPP0 ][QIN.numberOfBCnodes] = ON[dPP0 ]; + // Q.q27[dMM0 ][QIN.numberOfBCnodes] = ON[dMM0 ]; + // Q.q27[dPM0 ][QIN.numberOfBCnodes] = ON[dPM0 ]; + // Q.q27[dMP0 ][QIN.numberOfBCnodes] = ON[dMP0 ]; + // Q.q27[dP0P ][QIN.numberOfBCnodes] = ON[dP0P ]; + // Q.q27[dM0M ][QIN.numberOfBCnodes] = ON[dM0M ]; + // Q.q27[dP0M ][QIN.numberOfBCnodes] = ON[dP0M ]; + // Q.q27[dM0P ][QIN.numberOfBCnodes] = ON[dM0P ]; + // Q.q27[d0PP ][QIN.numberOfBCnodes] = ON[d0PP ]; + // Q.q27[d0MM ][QIN.numberOfBCnodes] = ON[d0MM ]; + // Q.q27[d0PM ][QIN.numberOfBCnodes] = ON[d0PM ]; + // Q.q27[d0MP ][QIN.numberOfBCnodes] = ON[d0MP ]; + // Q.q27[d000][QIN.numberOfBCnodes] = ON[d000]; + // Q.q27[dPPP ][QIN.numberOfBCnodes] = ON[dPPP ]; + // Q.q27[dMMP ][QIN.numberOfBCnodes] = ON[dMMP ]; + // Q.q27[dPMP ][QIN.numberOfBCnodes] = ON[dPMP ]; + // Q.q27[dMPP ][QIN.numberOfBCnodes] = ON[dMPP ]; + // Q.q27[dPPM ][QIN.numberOfBCnodes] = ON[dPPM ]; + // Q.q27[dMMM ][QIN.numberOfBCnodes] = ON[dMMM ]; + // Q.q27[dPMM ][QIN.numberOfBCnodes] = ON[dPMM ]; + // Q.q27[dMPM ][QIN.numberOfBCnodes] = ON[dMPM ]; // QIN.numberOfBCnodes++; // } @@ -647,33 +647,33 @@ void findQInflow(Parameter* para) // vy[QIN.numberOfBCnodes] = 0.f; // vz[QIN.numberOfBCnodes] = 0.f;//u0; - // Q.q27[DIR_P00 ][QIN.numberOfBCnodes] = ON[DIR_P00 ]; - // Q.q27[DIR_M00 ][QIN.numberOfBCnodes] = ON[DIR_M00 ]; - // Q.q27[DIR_0P0 ][QIN.numberOfBCnodes] = ON[DIR_0P0 ]; - // Q.q27[DIR_0M0 ][QIN.numberOfBCnodes] = ON[DIR_0M0 ]; - // Q.q27[DIR_00P ][QIN.numberOfBCnodes] = ON[DIR_00P ]; - // Q.q27[DIR_00M ][QIN.numberOfBCnodes] = ON[DIR_00M ]; - // Q.q27[DIR_PP0 ][QIN.numberOfBCnodes] = ON[DIR_PP0 ]; - // Q.q27[DIR_MM0 ][QIN.numberOfBCnodes] = ON[DIR_MM0 ]; - // Q.q27[DIR_PM0 ][QIN.numberOfBCnodes] = ON[DIR_PM0 ]; - // Q.q27[DIR_MP0 ][QIN.numberOfBCnodes] = ON[DIR_MP0 ]; - // Q.q27[DIR_P0P ][QIN.numberOfBCnodes] = ON[DIR_P0P ]; - // Q.q27[DIR_M0M ][QIN.numberOfBCnodes] = ON[DIR_M0M ]; - // Q.q27[DIR_P0M ][QIN.numberOfBCnodes] = ON[DIR_P0M ]; - // Q.q27[DIR_M0P ][QIN.numberOfBCnodes] = ON[DIR_M0P ]; - // Q.q27[DIR_0PP ][QIN.numberOfBCnodes] = ON[DIR_0PP ]; - // Q.q27[DIR_0MM ][QIN.numberOfBCnodes] = ON[DIR_0MM ]; - // Q.q27[DIR_0PM ][QIN.numberOfBCnodes] = ON[DIR_0PM ]; - // Q.q27[DIR_0MP ][QIN.numberOfBCnodes] = ON[DIR_0MP ]; - // Q.q27[DIR_000][QIN.numberOfBCnodes] = ON[DIR_000]; - // Q.q27[DIR_PPP ][QIN.numberOfBCnodes] = ON[DIR_PPP ]; - // Q.q27[DIR_MMP ][QIN.numberOfBCnodes] = ON[DIR_MMP ]; - // Q.q27[DIR_PMP ][QIN.numberOfBCnodes] = ON[DIR_PMP ]; - // Q.q27[DIR_MPP ][QIN.numberOfBCnodes] = ON[DIR_MPP ]; - // Q.q27[DIR_PPM ][QIN.numberOfBCnodes] = ON[DIR_PPM ]; - // Q.q27[DIR_MMM ][QIN.numberOfBCnodes] = ON[DIR_MMM ]; - // Q.q27[DIR_PMM ][QIN.numberOfBCnodes] = ON[DIR_PMM ]; - // Q.q27[DIR_MPM ][QIN.numberOfBCnodes] = ON[DIR_MPM ]; + // Q.q27[dP00 ][QIN.numberOfBCnodes] = ON[dP00 ]; + // Q.q27[dM00 ][QIN.numberOfBCnodes] = ON[dM00 ]; + // Q.q27[d0P0 ][QIN.numberOfBCnodes] = ON[d0P0 ]; + // Q.q27[d0M0 ][QIN.numberOfBCnodes] = ON[d0M0 ]; + // Q.q27[d00P ][QIN.numberOfBCnodes] = ON[d00P ]; + // Q.q27[d00M ][QIN.numberOfBCnodes] = ON[d00M ]; + // Q.q27[dPP0 ][QIN.numberOfBCnodes] = ON[dPP0 ]; + // Q.q27[dMM0 ][QIN.numberOfBCnodes] = ON[dMM0 ]; + // Q.q27[dPM0 ][QIN.numberOfBCnodes] = ON[dPM0 ]; + // Q.q27[dMP0 ][QIN.numberOfBCnodes] = ON[dMP0 ]; + // Q.q27[dP0P ][QIN.numberOfBCnodes] = ON[dP0P ]; + // Q.q27[dM0M ][QIN.numberOfBCnodes] = ON[dM0M ]; + // Q.q27[dP0M ][QIN.numberOfBCnodes] = ON[dP0M ]; + // Q.q27[dM0P ][QIN.numberOfBCnodes] = ON[dM0P ]; + // Q.q27[d0PP ][QIN.numberOfBCnodes] = ON[d0PP ]; + // Q.q27[d0MM ][QIN.numberOfBCnodes] = ON[d0MM ]; + // Q.q27[d0PM ][QIN.numberOfBCnodes] = ON[d0PM ]; + // Q.q27[d0MP ][QIN.numberOfBCnodes] = ON[d0MP ]; + // Q.q27[d000][QIN.numberOfBCnodes] = ON[d000]; + // Q.q27[dPPP ][QIN.numberOfBCnodes] = ON[dPPP ]; + // Q.q27[dMMP ][QIN.numberOfBCnodes] = ON[dMMP ]; + // Q.q27[dPMP ][QIN.numberOfBCnodes] = ON[dPMP ]; + // Q.q27[dMPP ][QIN.numberOfBCnodes] = ON[dMPP ]; + // Q.q27[dPPM ][QIN.numberOfBCnodes] = ON[dPPM ]; + // Q.q27[dMMM ][QIN.numberOfBCnodes] = ON[dMMM ]; + // Q.q27[dPMM ][QIN.numberOfBCnodes] = ON[dPMM ]; + // Q.q27[dMPM ][QIN.numberOfBCnodes] = ON[dMPM ]; // QIN.numberOfBCnodes++; // } @@ -692,7 +692,7 @@ void findKforQInflow(Parameter* para) VF_LOG_CRITICAL("findKforQInflow() is deprecated! - see comment above for more information"); //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - ////////////// DIR_P00 DIR_M00 DIR_0P0 DIR_0M0 DIR_00P DIR_00M DIR_PP0 DIR_MM0 DIR_PM0 DIR_MP0 DIR_P0P DIR_M0M DIR_P0M DIR_M0P DIR_0PP DIR_0MM DIR_0PM DIR_0MP ZERO DIR_PPP DIR_PPM DIR_PMP DIR_PMM DIR_MPP DIR_MPM DIR_MMP DIR_MMM //////////////////////// + ////////////// dP00 dM00 d0P0 d0M0 d00P d00M dPP0 dMM0 dPM0 dMP0 dP0P dM0M dP0M dM0P d0PP d0MM d0PM d0MP ZERO dPPP dPPM dPMP dPMM dMPP dMPM dMMP dMMM //////////////////////// //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}; @@ -780,7 +780,7 @@ void findQOutflow(Parameter* para) VF_LOG_CRITICAL("findQOutflow() is deprecated! - see comment above for more information"); //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - ////////////// DIR_P00 DIR_M00 DIR_0P0 DIR_0M0 DIR_00P DIR_00M DIR_PP0 DIR_MM0 DIR_PM0 DIR_MP0 DIR_P0P DIR_M0M DIR_P0M DIR_M0P DIR_0PP DIR_0MM DIR_0PM DIR_0MP ZERO DIR_PPP DIR_PPM DIR_PMP DIR_PMM DIR_MPP DIR_MPM DIR_MMP DIR_MMM //////////////////////// + ////////////// dP00 dM00 d0P0 d0M0 d00P d00M dPP0 dMM0 dPM0 dMP0 dP0P dM0M dP0M dM0P d0PP d0MM d0PM d0MP ZERO dPPP dPPM dPMP dPMM dMPP dMPM dMMP dMMM //////////////////////// //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}; @@ -814,33 +814,33 @@ void findQOutflow(Parameter* para) QIN.numberOfBCnodes = 0; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// QforBoundaryConditions Q; - Q.q27[DIR_P00 ] = &QQ[DIR_P00 *sizeQ]; - Q.q27[DIR_M00 ] = &QQ[DIR_M00 *sizeQ]; - Q.q27[DIR_0P0 ] = &QQ[DIR_0P0 *sizeQ]; - Q.q27[DIR_0M0 ] = &QQ[DIR_0M0 *sizeQ]; - Q.q27[DIR_00P ] = &QQ[DIR_00P *sizeQ]; - Q.q27[DIR_00M ] = &QQ[DIR_00M *sizeQ]; - Q.q27[DIR_PP0 ] = &QQ[DIR_PP0 *sizeQ]; - Q.q27[DIR_MM0 ] = &QQ[DIR_MM0 *sizeQ]; - Q.q27[DIR_PM0 ] = &QQ[DIR_PM0 *sizeQ]; - Q.q27[DIR_MP0 ] = &QQ[DIR_MP0 *sizeQ]; - Q.q27[DIR_P0P ] = &QQ[DIR_P0P *sizeQ]; - Q.q27[DIR_M0M ] = &QQ[DIR_M0M *sizeQ]; - Q.q27[DIR_P0M ] = &QQ[DIR_P0M *sizeQ]; - Q.q27[DIR_M0P ] = &QQ[DIR_M0P *sizeQ]; - Q.q27[DIR_0PP ] = &QQ[DIR_0PP *sizeQ]; - Q.q27[DIR_0MM ] = &QQ[DIR_0MM *sizeQ]; - Q.q27[DIR_0PM ] = &QQ[DIR_0PM *sizeQ]; - Q.q27[DIR_0MP ] = &QQ[DIR_0MP *sizeQ]; - Q.q27[DIR_000] = &QQ[DIR_000*sizeQ]; - Q.q27[DIR_PPP ] = &QQ[DIR_PPP *sizeQ]; - Q.q27[DIR_MMP ] = &QQ[DIR_MMP *sizeQ]; - Q.q27[DIR_PMP ] = &QQ[DIR_PMP *sizeQ]; - Q.q27[DIR_MPP ] = &QQ[DIR_MPP *sizeQ]; - Q.q27[DIR_PPM ] = &QQ[DIR_PPM *sizeQ]; - Q.q27[DIR_MMM ] = &QQ[DIR_MMM *sizeQ]; - Q.q27[DIR_PMM ] = &QQ[DIR_PMM *sizeQ]; - Q.q27[DIR_MPM ] = &QQ[DIR_MPM *sizeQ]; + Q.q27[dP00 ] = &QQ[dP00 *sizeQ]; + Q.q27[dM00 ] = &QQ[dM00 *sizeQ]; + Q.q27[d0P0 ] = &QQ[d0P0 *sizeQ]; + Q.q27[d0M0 ] = &QQ[d0M0 *sizeQ]; + Q.q27[d00P ] = &QQ[d00P *sizeQ]; + Q.q27[d00M ] = &QQ[d00M *sizeQ]; + Q.q27[dPP0 ] = &QQ[dPP0 *sizeQ]; + Q.q27[dMM0 ] = &QQ[dMM0 *sizeQ]; + Q.q27[dPM0 ] = &QQ[dPM0 *sizeQ]; + Q.q27[dMP0 ] = &QQ[dMP0 *sizeQ]; + Q.q27[dP0P ] = &QQ[dP0P *sizeQ]; + Q.q27[dM0M ] = &QQ[dM0M *sizeQ]; + Q.q27[dP0M ] = &QQ[dP0M *sizeQ]; + Q.q27[dM0P ] = &QQ[dM0P *sizeQ]; + Q.q27[d0PP ] = &QQ[d0PP *sizeQ]; + Q.q27[d0MM ] = &QQ[d0MM *sizeQ]; + Q.q27[d0PM ] = &QQ[d0PM *sizeQ]; + Q.q27[d0MP ] = &QQ[d0MP *sizeQ]; + Q.q27[d000] = &QQ[d000*sizeQ]; + Q.q27[dPPP ] = &QQ[dPPP *sizeQ]; + Q.q27[dMMP ] = &QQ[dMMP *sizeQ]; + Q.q27[dPMP ] = &QQ[dPMP *sizeQ]; + Q.q27[dMPP ] = &QQ[dMPP *sizeQ]; + Q.q27[dPPM ] = &QQ[dPPM *sizeQ]; + Q.q27[dMMM ] = &QQ[dMMM *sizeQ]; + Q.q27[dPMM ] = &QQ[dPMM *sizeQ]; + Q.q27[dMPM ] = &QQ[dMPM *sizeQ]; //unsigned int li = ((nnx+STARTOFFX-2)-(STARTOFFX+1)-1); @@ -862,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[DIR_P00 ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[DIR_M00 ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[DIR_0P0 ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[DIR_0M0 ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[DIR_00P ][QIN.numberOfBCnodes] = (real)1.f; - Q.q27[DIR_00M ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[DIR_PP0 ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[DIR_MM0 ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[DIR_PM0 ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[DIR_MP0 ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[DIR_P0P ][QIN.numberOfBCnodes] = (real)1.f; - Q.q27[DIR_M0M ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[DIR_P0M ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[DIR_M0P ][QIN.numberOfBCnodes] = (real)1.f; - Q.q27[DIR_0PP ][QIN.numberOfBCnodes] = (real)1.f; - Q.q27[DIR_0MM ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[DIR_0PM ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[DIR_0MP ][QIN.numberOfBCnodes] = (real)1.f; - Q.q27[DIR_000][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[DIR_PPP ][QIN.numberOfBCnodes] = (real)1.f; - Q.q27[DIR_MMP ][QIN.numberOfBCnodes] = (real)1.f; - Q.q27[DIR_PMP ][QIN.numberOfBCnodes] = (real)1.f; - Q.q27[DIR_MPP ][QIN.numberOfBCnodes] = (real)1.f; - Q.q27[DIR_PPM ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[DIR_MMM ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[DIR_PMM ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[DIR_MPM ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[dP00 ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[dM00 ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[d0P0 ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[d0M0 ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[d00P ][QIN.numberOfBCnodes] = (real)1.f; + Q.q27[d00M ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[dPP0 ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[dMM0 ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[dPM0 ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[dMP0 ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[dP0P ][QIN.numberOfBCnodes] = (real)1.f; + Q.q27[dM0M ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[dP0M ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[dM0P ][QIN.numberOfBCnodes] = (real)1.f; + Q.q27[d0PP ][QIN.numberOfBCnodes] = (real)1.f; + Q.q27[d0MM ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[d0PM ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[d0MP ][QIN.numberOfBCnodes] = (real)1.f; + Q.q27[d000][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[dPPP ][QIN.numberOfBCnodes] = (real)1.f; + Q.q27[dMMP ][QIN.numberOfBCnodes] = (real)1.f; + Q.q27[dPMP ][QIN.numberOfBCnodes] = (real)1.f; + Q.q27[dMPP ][QIN.numberOfBCnodes] = (real)1.f; + Q.q27[dPPM ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[dMMM ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[dPMM ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[dMPM ][QIN.numberOfBCnodes] = (real)-1.f; QIN.numberOfBCnodes++; } } @@ -912,7 +912,7 @@ void findKforQOutflow(Parameter* para) VF_LOG_CRITICAL("findKforQOutflow() is deprecated! - see comment above for more information"); //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - ////////////// DIR_P00 DIR_M00 DIR_0P0 DIR_0M0 DIR_00P DIR_00M DIR_PP0 DIR_MM0 DIR_PM0 DIR_MP0 DIR_P0P DIR_M0M DIR_P0M DIR_M0P DIR_0PP DIR_0MM DIR_0PM DIR_0MP ZERO DIR_PPP DIR_PPM DIR_PMP DIR_PMM DIR_MPP DIR_MPM DIR_MMP DIR_MMM //////////////////////// + ////////////// dP00 dM00 d0P0 d0M0 d00P d00M dPP0 dMM0 dPM0 dMP0 dP0P dM0M dP0M dM0P d0PP d0MM d0PM d0MP ZERO dPPP dPPM dPMP dPMM dMPP dMPM dMMP dMMM //////////////////////// //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}; @@ -976,36 +976,36 @@ void findKforQOutflow(Parameter* para) // unsigned int sizeQW, real* vxW, real* vyW, real* vzW, real*deltaVW, real* QQW, QforBoundaryConditions &QWin) //{ // QforBoundaryConditions QN; -// QN.q27[DIR_P00 ] = &QQN[DIR_P00 *sizeQN]; -// QN.q27[DIR_M00 ] = &QQN[DIR_M00 *sizeQN]; -// QN.q27[DIR_0P0 ] = &QQN[DIR_0P0 *sizeQN]; -// QN.q27[DIR_0M0 ] = &QQN[DIR_0M0 *sizeQN]; -// QN.q27[DIR_00P ] = &QQN[DIR_00P *sizeQN]; -// QN.q27[DIR_00M ] = &QQN[DIR_00M *sizeQN]; -// QN.q27[DIR_PP0 ] = &QQN[DIR_PP0 *sizeQN]; -// QN.q27[DIR_MM0 ] = &QQN[DIR_MM0 *sizeQN]; -// QN.q27[DIR_PM0 ] = &QQN[DIR_PM0 *sizeQN]; -// QN.q27[DIR_MP0 ] = &QQN[DIR_MP0 *sizeQN]; -// QN.q27[DIR_P0P ] = &QQN[DIR_P0P *sizeQN]; -// QN.q27[DIR_M0M ] = &QQN[DIR_M0M *sizeQN]; -// QN.q27[DIR_P0M ] = &QQN[DIR_P0M *sizeQN]; -// QN.q27[DIR_M0P ] = &QQN[DIR_M0P *sizeQN]; -// QN.q27[DIR_0PP ] = &QQN[DIR_0PP *sizeQN]; -// QN.q27[DIR_0MM ] = &QQN[DIR_0MM *sizeQN]; -// QN.q27[DIR_0PM ] = &QQN[DIR_0PM *sizeQN]; -// QN.q27[DIR_0MP ] = &QQN[DIR_0MP *sizeQN]; -// QN.q27[DIR_000] = &QQN[DIR_000*sizeQN]; -// QN.q27[DIR_PPP ] = &QQN[DIR_PPP *sizeQN]; -// QN.q27[DIR_MMP ] = &QQN[DIR_MMP *sizeQN]; -// QN.q27[DIR_PMP ] = &QQN[DIR_PMP *sizeQN]; -// QN.q27[DIR_MPP ] = &QQN[DIR_MPP *sizeQN]; -// QN.q27[DIR_PPM ] = &QQN[DIR_PPM *sizeQN]; -// QN.q27[DIR_MMM ] = &QQN[DIR_MMM *sizeQN]; -// QN.q27[DIR_PMM ] = &QQN[DIR_PMM *sizeQN]; -// QN.q27[DIR_MPM ] = &QQN[DIR_MPM *sizeQN]; +// QN.q27[dP00 ] = &QQN[dP00 *sizeQN]; +// QN.q27[dM00 ] = &QQN[dM00 *sizeQN]; +// QN.q27[d0P0 ] = &QQN[d0P0 *sizeQN]; +// QN.q27[d0M0 ] = &QQN[d0M0 *sizeQN]; +// QN.q27[d00P ] = &QQN[d00P *sizeQN]; +// QN.q27[d00M ] = &QQN[d00M *sizeQN]; +// QN.q27[dPP0 ] = &QQN[dPP0 *sizeQN]; +// QN.q27[dMM0 ] = &QQN[dMM0 *sizeQN]; +// QN.q27[dPM0 ] = &QQN[dPM0 *sizeQN]; +// QN.q27[dMP0 ] = &QQN[dMP0 *sizeQN]; +// QN.q27[dP0P ] = &QQN[dP0P *sizeQN]; +// QN.q27[dM0M ] = &QQN[dM0M *sizeQN]; +// QN.q27[dP0M ] = &QQN[dP0M *sizeQN]; +// QN.q27[dM0P ] = &QQN[dM0P *sizeQN]; +// QN.q27[d0PP ] = &QQN[d0PP *sizeQN]; +// QN.q27[d0MM ] = &QQN[d0MM *sizeQN]; +// QN.q27[d0PM ] = &QQN[d0PM *sizeQN]; +// QN.q27[d0MP ] = &QQN[d0MP *sizeQN]; +// QN.q27[d000] = &QQN[d000*sizeQN]; +// QN.q27[dPPP ] = &QQN[dPPP *sizeQN]; +// QN.q27[dMMP ] = &QQN[dMMP *sizeQN]; +// QN.q27[dPMP ] = &QQN[dPMP *sizeQN]; +// QN.q27[dMPP ] = &QQN[dMPP *sizeQN]; +// QN.q27[dPPM ] = &QQN[dPPM *sizeQN]; +// QN.q27[dMMM ] = &QQN[dMMM *sizeQN]; +// QN.q27[dPMM ] = &QQN[dPMM *sizeQN]; +// QN.q27[dMPM ] = &QQN[dMPM *sizeQN]; // // //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// ////////////// DIR_P00 DIR_M00 DIR_0P0 DIR_0M0 DIR_00P DIR_00M DIR_PP0 DIR_MM0 DIR_PM0 DIR_MP0 DIR_P0P DIR_M0M DIR_P0M DIR_M0P DIR_0PP DIR_0MM DIR_0PM DIR_0MP ZERO DIR_PPP DIR_PPM DIR_PMP DIR_PMM DIR_MPP DIR_MPM DIR_MMP DIR_MMM //////////////////////// +// ////////////// dP00 dM00 d0P0 d0M0 d00P d00M dPP0 dMM0 dPM0 dMP0 dP0P dM0M dP0M dM0P d0PP d0MM d0PM d0MP ZERO dPPP dPPM dPMP dPMM dMPP dMPM dMMP dMMM //////////////////////// // 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}; @@ -1018,7 +1018,7 @@ void findKforQOutflow(Parameter* para) // QforBoundaryConditions &QN, QforBoundaryConditions &QS, QforBoundaryConditions &QE, QforBoundaryConditions &QW) //{ // //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// ////////////// DIR_P00 DIR_M00 DIR_0P0 DIR_0M0 DIR_00P DIR_00M DIR_PP0 DIR_MM0 DIR_PM0 DIR_MP0 DIR_P0P DIR_M0M DIR_P0M DIR_M0P DIR_0PP DIR_0MM DIR_0PM DIR_0MP ZERO DIR_PPP DIR_PPM DIR_PMP DIR_PMM DIR_MPP DIR_MPM DIR_MMP DIR_MMM //////////////////////// +// ////////////// dP00 dM00 d0P0 d0M0 d00P d00M dPP0 dMM0 dPM0 dMP0 dP0P dM0M dP0M dM0P d0PP d0MM d0PM d0MP ZERO dPPP dPPM dPMP dPMM dMPP dMPM dMMP dMMM //////////////////////// // 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}; @@ -1069,7 +1069,7 @@ void findQPressX0(Parameter* para, int lev) VF_LOG_CRITICAL("findKforQPressX0() is deprecated! - see comment above for more information"); //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - ////////////// DIR_P00 DIR_M00 DIR_0P0 DIR_0M0 DIR_00P DIR_00M DIR_PP0 DIR_MM0 DIR_PM0 DIR_MP0 DIR_P0P DIR_M0M DIR_P0M DIR_M0P DIR_0PP DIR_0MM DIR_0PM DIR_0MP ZERO DIR_PPP DIR_PPM DIR_PMP DIR_PMM DIR_MPP DIR_MPM DIR_MMP DIR_MMM //////////////////////// + ////////////// dP00 dM00 d0P0 d0M0 d00P d00M dPP0 dMM0 dPM0 dMP0 dP0P dM0M dP0M dM0P d0PP d0MM d0PM d0MP ZERO dPPP dPPM dPMP dPMM dMPP dMPM dMMP dMMM //////////////////////// //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}; @@ -1096,33 +1096,33 @@ void findQPressX0(Parameter* para, int lev) QIN.numberOfBCnodes = 0; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// QforBoundaryConditions Q; - Q.q27[DIR_P00 ] = &QQ[DIR_P00 *sizeQ]; - Q.q27[DIR_M00 ] = &QQ[DIR_M00 *sizeQ]; - Q.q27[DIR_0P0 ] = &QQ[DIR_0P0 *sizeQ]; - Q.q27[DIR_0M0 ] = &QQ[DIR_0M0 *sizeQ]; - Q.q27[DIR_00P ] = &QQ[DIR_00P *sizeQ]; - Q.q27[DIR_00M ] = &QQ[DIR_00M *sizeQ]; - Q.q27[DIR_PP0 ] = &QQ[DIR_PP0 *sizeQ]; - Q.q27[DIR_MM0 ] = &QQ[DIR_MM0 *sizeQ]; - Q.q27[DIR_PM0 ] = &QQ[DIR_PM0 *sizeQ]; - Q.q27[DIR_MP0 ] = &QQ[DIR_MP0 *sizeQ]; - Q.q27[DIR_P0P ] = &QQ[DIR_P0P *sizeQ]; - Q.q27[DIR_M0M ] = &QQ[DIR_M0M *sizeQ]; - Q.q27[DIR_P0M ] = &QQ[DIR_P0M *sizeQ]; - Q.q27[DIR_M0P ] = &QQ[DIR_M0P *sizeQ]; - Q.q27[DIR_0PP ] = &QQ[DIR_0PP *sizeQ]; - Q.q27[DIR_0MM ] = &QQ[DIR_0MM *sizeQ]; - Q.q27[DIR_0PM ] = &QQ[DIR_0PM *sizeQ]; - Q.q27[DIR_0MP ] = &QQ[DIR_0MP *sizeQ]; - Q.q27[DIR_000] = &QQ[DIR_000*sizeQ]; - Q.q27[DIR_PPP ] = &QQ[DIR_PPP *sizeQ]; - Q.q27[DIR_MMP ] = &QQ[DIR_MMP *sizeQ]; - Q.q27[DIR_PMP ] = &QQ[DIR_PMP *sizeQ]; - Q.q27[DIR_MPP ] = &QQ[DIR_MPP *sizeQ]; - Q.q27[DIR_PPM ] = &QQ[DIR_PPM *sizeQ]; - Q.q27[DIR_MMM ] = &QQ[DIR_MMM *sizeQ]; - Q.q27[DIR_PMM ] = &QQ[DIR_PMM *sizeQ]; - Q.q27[DIR_MPM ] = &QQ[DIR_MPM *sizeQ]; + Q.q27[dP00 ] = &QQ[dP00 *sizeQ]; + Q.q27[dM00 ] = &QQ[dM00 *sizeQ]; + Q.q27[d0P0 ] = &QQ[d0P0 *sizeQ]; + Q.q27[d0M0 ] = &QQ[d0M0 *sizeQ]; + Q.q27[d00P ] = &QQ[d00P *sizeQ]; + Q.q27[d00M ] = &QQ[d00M *sizeQ]; + Q.q27[dPP0 ] = &QQ[dPP0 *sizeQ]; + Q.q27[dMM0 ] = &QQ[dMM0 *sizeQ]; + Q.q27[dPM0 ] = &QQ[dPM0 *sizeQ]; + Q.q27[dMP0 ] = &QQ[dMP0 *sizeQ]; + Q.q27[dP0P ] = &QQ[dP0P *sizeQ]; + Q.q27[dM0M ] = &QQ[dM0M *sizeQ]; + Q.q27[dP0M ] = &QQ[dP0M *sizeQ]; + Q.q27[dM0P ] = &QQ[dM0P *sizeQ]; + Q.q27[d0PP ] = &QQ[d0PP *sizeQ]; + Q.q27[d0MM ] = &QQ[d0MM *sizeQ]; + Q.q27[d0PM ] = &QQ[d0PM *sizeQ]; + Q.q27[d0MP ] = &QQ[d0MP *sizeQ]; + Q.q27[d000] = &QQ[d000*sizeQ]; + Q.q27[dPPP ] = &QQ[dPPP *sizeQ]; + Q.q27[dMMP ] = &QQ[dMMP *sizeQ]; + Q.q27[dPMP ] = &QQ[dPMP *sizeQ]; + Q.q27[dMPP ] = &QQ[dMPP *sizeQ]; + Q.q27[dPPM ] = &QQ[dPPM *sizeQ]; + Q.q27[dMMM ] = &QQ[dMMM *sizeQ]; + Q.q27[dPMM ] = &QQ[dPMM *sizeQ]; + Q.q27[dMPM ] = &QQ[dMPM *sizeQ]; //unsigned int li = ((nnx+STARTOFFX-2)-(STARTOFFX+1)-1); @@ -1145,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[DIR_P00 ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[DIR_M00 ][QIN.numberOfBCnodes] = (real)1.f; - Q.q27[DIR_0P0 ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[DIR_0M0 ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[DIR_00P ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[DIR_00M ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[DIR_PP0 ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[DIR_MM0 ][QIN.numberOfBCnodes] = (real)1.f; - Q.q27[DIR_PM0 ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[DIR_MP0 ][QIN.numberOfBCnodes] = (real)1.f; - Q.q27[DIR_P0P ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[DIR_M0M ][QIN.numberOfBCnodes] = (real)1.f; - Q.q27[DIR_P0M ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[DIR_M0P ][QIN.numberOfBCnodes] = (real)1.f; - Q.q27[DIR_0PP ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[DIR_0MM ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[DIR_0PM ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[DIR_0MP ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[DIR_000][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[DIR_PPP ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[DIR_MMP ][QIN.numberOfBCnodes] = (real)1.f; - Q.q27[DIR_PMP ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[DIR_MPP ][QIN.numberOfBCnodes] = (real)1.f; - Q.q27[DIR_PPM ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[DIR_MMM ][QIN.numberOfBCnodes] = (real)1.f; - Q.q27[DIR_PMM ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[DIR_MPM ][QIN.numberOfBCnodes] = (real)1.f; + Q.q27[dP00 ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[dM00 ][QIN.numberOfBCnodes] = (real)1.f; + Q.q27[d0P0 ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[d0M0 ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[d00P ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[d00M ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[dPP0 ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[dMM0 ][QIN.numberOfBCnodes] = (real)1.f; + Q.q27[dPM0 ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[dMP0 ][QIN.numberOfBCnodes] = (real)1.f; + Q.q27[dP0P ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[dM0M ][QIN.numberOfBCnodes] = (real)1.f; + Q.q27[dP0M ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[dM0P ][QIN.numberOfBCnodes] = (real)1.f; + Q.q27[d0PP ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[d0MM ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[d0PM ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[d0MP ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[d000][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[dPPP ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[dMMP ][QIN.numberOfBCnodes] = (real)1.f; + Q.q27[dPMP ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[dMPP ][QIN.numberOfBCnodes] = (real)1.f; + Q.q27[dPPM ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[dMMM ][QIN.numberOfBCnodes] = (real)1.f; + Q.q27[dPMM ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[dMPM ][QIN.numberOfBCnodes] = (real)1.f; QIN.numberOfBCnodes++; } } @@ -1187,7 +1187,7 @@ void findKforQPressX0(Parameter* para, int lev) VF_LOG_CRITICAL("findKforQPressX0() is deprecated! - see comment above for more information"); //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - ////////////// DIR_P00 DIR_M00 DIR_0P0 DIR_0M0 DIR_00P DIR_00M DIR_PP0 DIR_MM0 DIR_PM0 DIR_MP0 DIR_P0P DIR_M0M DIR_P0M DIR_M0P DIR_0PP DIR_0MM DIR_0PM DIR_0MP ZERO DIR_PPP DIR_PPM DIR_PMP DIR_PMM DIR_MPP DIR_MPM DIR_MMP DIR_MMM //////////////////////// + ////////////// dP00 dM00 d0P0 d0M0 d00P d00M dPP0 dMM0 dPM0 dMP0 dP0P dM0M dP0M dM0P d0PP d0MM d0PM d0MP ZERO dPPP dPPM dPMP dPMM dMPP dMPM dMMP dMMM //////////////////////// //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}; @@ -1245,7 +1245,7 @@ void findQPressX1(Parameter* para, int lev) VF_LOG_CRITICAL("findQPressX1() is deprecated! - see comment above for more information"); //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - ////////////// DIR_P00 DIR_M00 DIR_0P0 DIR_0M0 DIR_00P DIR_00M DIR_PP0 DIR_MM0 DIR_PM0 DIR_MP0 DIR_P0P DIR_M0M DIR_P0M DIR_M0P DIR_0PP DIR_0MM DIR_0PM DIR_0MP ZERO DIR_PPP DIR_PPM DIR_PMP DIR_PMM DIR_MPP DIR_MPM DIR_MMP DIR_MMM //////////////////////// + ////////////// dP00 dM00 d0P0 d0M0 d00P d00M dPP0 dMM0 dPM0 dMP0 dP0P dM0M dP0M dM0P d0PP d0MM d0PM d0MP ZERO dPPP dPPM dPMP dPMM dMPP dMPM dMMP dMMM //////////////////////// //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}; @@ -1272,33 +1272,33 @@ void findQPressX1(Parameter* para, int lev) QIN.numberOfBCnodes = 0; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// QforBoundaryConditions Q; - Q.q27[DIR_P00 ] = &QQ[DIR_P00 *sizeQ]; - Q.q27[DIR_M00 ] = &QQ[DIR_M00 *sizeQ]; - Q.q27[DIR_0P0 ] = &QQ[DIR_0P0 *sizeQ]; - Q.q27[DIR_0M0 ] = &QQ[DIR_0M0 *sizeQ]; - Q.q27[DIR_00P ] = &QQ[DIR_00P *sizeQ]; - Q.q27[DIR_00M ] = &QQ[DIR_00M *sizeQ]; - Q.q27[DIR_PP0 ] = &QQ[DIR_PP0 *sizeQ]; - Q.q27[DIR_MM0 ] = &QQ[DIR_MM0 *sizeQ]; - Q.q27[DIR_PM0 ] = &QQ[DIR_PM0 *sizeQ]; - Q.q27[DIR_MP0 ] = &QQ[DIR_MP0 *sizeQ]; - Q.q27[DIR_P0P ] = &QQ[DIR_P0P *sizeQ]; - Q.q27[DIR_M0M ] = &QQ[DIR_M0M *sizeQ]; - Q.q27[DIR_P0M ] = &QQ[DIR_P0M *sizeQ]; - Q.q27[DIR_M0P ] = &QQ[DIR_M0P *sizeQ]; - Q.q27[DIR_0PP ] = &QQ[DIR_0PP *sizeQ]; - Q.q27[DIR_0MM ] = &QQ[DIR_0MM *sizeQ]; - Q.q27[DIR_0PM ] = &QQ[DIR_0PM *sizeQ]; - Q.q27[DIR_0MP ] = &QQ[DIR_0MP *sizeQ]; - Q.q27[DIR_000] = &QQ[DIR_000*sizeQ]; - Q.q27[DIR_PPP ] = &QQ[DIR_PPP *sizeQ]; - Q.q27[DIR_MMP ] = &QQ[DIR_MMP *sizeQ]; - Q.q27[DIR_PMP ] = &QQ[DIR_PMP *sizeQ]; - Q.q27[DIR_MPP ] = &QQ[DIR_MPP *sizeQ]; - Q.q27[DIR_PPM ] = &QQ[DIR_PPM *sizeQ]; - Q.q27[DIR_MMM ] = &QQ[DIR_MMM *sizeQ]; - Q.q27[DIR_PMM ] = &QQ[DIR_PMM *sizeQ]; - Q.q27[DIR_MPM ] = &QQ[DIR_MPM *sizeQ]; + Q.q27[dP00 ] = &QQ[dP00 *sizeQ]; + Q.q27[dM00 ] = &QQ[dM00 *sizeQ]; + Q.q27[d0P0 ] = &QQ[d0P0 *sizeQ]; + Q.q27[d0M0 ] = &QQ[d0M0 *sizeQ]; + Q.q27[d00P ] = &QQ[d00P *sizeQ]; + Q.q27[d00M ] = &QQ[d00M *sizeQ]; + Q.q27[dPP0 ] = &QQ[dPP0 *sizeQ]; + Q.q27[dMM0 ] = &QQ[dMM0 *sizeQ]; + Q.q27[dPM0 ] = &QQ[dPM0 *sizeQ]; + Q.q27[dMP0 ] = &QQ[dMP0 *sizeQ]; + Q.q27[dP0P ] = &QQ[dP0P *sizeQ]; + Q.q27[dM0M ] = &QQ[dM0M *sizeQ]; + Q.q27[dP0M ] = &QQ[dP0M *sizeQ]; + Q.q27[dM0P ] = &QQ[dM0P *sizeQ]; + Q.q27[d0PP ] = &QQ[d0PP *sizeQ]; + Q.q27[d0MM ] = &QQ[d0MM *sizeQ]; + Q.q27[d0PM ] = &QQ[d0PM *sizeQ]; + Q.q27[d0MP ] = &QQ[d0MP *sizeQ]; + Q.q27[d000] = &QQ[d000*sizeQ]; + Q.q27[dPPP ] = &QQ[dPPP *sizeQ]; + Q.q27[dMMP ] = &QQ[dMMP *sizeQ]; + Q.q27[dPMP ] = &QQ[dPMP *sizeQ]; + Q.q27[dMPP ] = &QQ[dMPP *sizeQ]; + Q.q27[dPPM ] = &QQ[dPPM *sizeQ]; + Q.q27[dMMM ] = &QQ[dMMM *sizeQ]; + Q.q27[dPMM ] = &QQ[dPMM *sizeQ]; + Q.q27[dMPM ] = &QQ[dMPM *sizeQ]; //unsigned int li = ((nnx+STARTOFFX-2)-(STARTOFFX+1)-1); @@ -1321,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[DIR_P00 ][QIN.numberOfBCnodes] = (real)1.f; - Q.q27[DIR_M00 ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[DIR_0P0 ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[DIR_0M0 ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[DIR_00P ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[DIR_00M ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[DIR_PP0 ][QIN.numberOfBCnodes] = (real)1.f; - Q.q27[DIR_MM0 ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[DIR_PM0 ][QIN.numberOfBCnodes] = (real)1.f; - Q.q27[DIR_MP0 ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[DIR_P0P ][QIN.numberOfBCnodes] = (real)1.f; - Q.q27[DIR_M0M ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[DIR_P0M ][QIN.numberOfBCnodes] = (real)1.f; - Q.q27[DIR_M0P ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[DIR_0PP ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[DIR_0MM ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[DIR_0PM ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[DIR_0MP ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[DIR_000][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[DIR_PPP ][QIN.numberOfBCnodes] = (real)1.f; - Q.q27[DIR_MMP ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[DIR_PMP ][QIN.numberOfBCnodes] = (real)1.f; - Q.q27[DIR_MPP ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[DIR_PPM ][QIN.numberOfBCnodes] = (real)1.f; - Q.q27[DIR_MMM ][QIN.numberOfBCnodes] = (real)-1.f; - Q.q27[DIR_PMM ][QIN.numberOfBCnodes] = (real)1.f; - Q.q27[DIR_MPM ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[dP00 ][QIN.numberOfBCnodes] = (real)1.f; + Q.q27[dM00 ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[d0P0 ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[d0M0 ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[d00P ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[d00M ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[dPP0 ][QIN.numberOfBCnodes] = (real)1.f; + Q.q27[dMM0 ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[dPM0 ][QIN.numberOfBCnodes] = (real)1.f; + Q.q27[dMP0 ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[dP0P ][QIN.numberOfBCnodes] = (real)1.f; + Q.q27[dM0M ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[dP0M ][QIN.numberOfBCnodes] = (real)1.f; + Q.q27[dM0P ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[d0PP ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[d0MM ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[d0PM ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[d0MP ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[d000][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[dPPP ][QIN.numberOfBCnodes] = (real)1.f; + Q.q27[dMMP ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[dPMP ][QIN.numberOfBCnodes] = (real)1.f; + Q.q27[dMPP ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[dPPM ][QIN.numberOfBCnodes] = (real)1.f; + Q.q27[dMMM ][QIN.numberOfBCnodes] = (real)-1.f; + Q.q27[dPMM ][QIN.numberOfBCnodes] = (real)1.f; + Q.q27[dMPM ][QIN.numberOfBCnodes] = (real)-1.f; QIN.numberOfBCnodes++; } } @@ -1363,7 +1363,7 @@ void findKforQPressX1(Parameter* para, int lev) VF_LOG_CRITICAL("findKforQPressX1() is deprecated! - see comment above for more information"); //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - ////////////// DIR_P00 DIR_M00 DIR_0P0 DIR_0M0 DIR_00P DIR_00M DIR_PP0 DIR_MM0 DIR_PM0 DIR_MP0 DIR_P0P DIR_M0M DIR_P0M DIR_M0P DIR_0PP DIR_0MM DIR_0PM DIR_0MP ZERO DIR_PPP DIR_PPM DIR_PMP DIR_PMM DIR_MPP DIR_MPM DIR_MMP DIR_MMM //////////////////////// + ////////////// dP00 dM00 d0P0 d0M0 d00P d00M dPP0 dMM0 dPM0 dMP0 dP0P dM0M dP0M dM0P d0PP d0MM d0PM d0MP ZERO dPPP dPPM dPMP dPMM dMPP dMPM dMMP dMMM //////////////////////// //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}; diff --git a/src/gpu/VirtualFluids_GPU/FindQ/FindQ.h b/src/gpu/core/FindQ/FindQ.h similarity index 100% rename from src/gpu/VirtualFluids_GPU/FindQ/FindQ.h rename to src/gpu/core/FindQ/FindQ.h diff --git a/src/gpu/VirtualFluids_GPU/GPU/AdvectionDiffusion27chim.cu b/src/gpu/core/GPU/AdvectionDiffusion27chim.cu similarity index 59% rename from src/gpu/VirtualFluids_GPU/GPU/AdvectionDiffusion27chim.cu rename to src/gpu/core/GPU/AdvectionDiffusion27chim.cu index a22e7f6e842fcfb4474e009975eb65f1920513a9..d1b502f46e39e8c1aa82fbb78b2ac805291c71cb 100644 --- a/src/gpu/VirtualFluids_GPU/GPU/AdvectionDiffusion27chim.cu +++ b/src/gpu/core/GPU/AdvectionDiffusion27chim.cu @@ -109,125 +109,125 @@ __global__ void Factorized_Central_Moments_Advection_Diffusion_Device_Kernel( Distributions27 dist; if (isEvenTimestep) { - dist.f[DIR_P00] = &distributions[DIR_P00 * numberOfLBnodes]; - dist.f[DIR_M00] = &distributions[DIR_M00 * numberOfLBnodes]; - dist.f[DIR_0P0] = &distributions[DIR_0P0 * numberOfLBnodes]; - dist.f[DIR_0M0] = &distributions[DIR_0M0 * numberOfLBnodes]; - dist.f[DIR_00P] = &distributions[DIR_00P * numberOfLBnodes]; - dist.f[DIR_00M] = &distributions[DIR_00M * numberOfLBnodes]; - dist.f[DIR_PP0] = &distributions[DIR_PP0 * numberOfLBnodes]; - dist.f[DIR_MM0] = &distributions[DIR_MM0 * numberOfLBnodes]; - dist.f[DIR_PM0] = &distributions[DIR_PM0 * numberOfLBnodes]; - dist.f[DIR_MP0] = &distributions[DIR_MP0 * numberOfLBnodes]; - dist.f[DIR_P0P] = &distributions[DIR_P0P * numberOfLBnodes]; - dist.f[DIR_M0M] = &distributions[DIR_M0M * numberOfLBnodes]; - dist.f[DIR_P0M] = &distributions[DIR_P0M * numberOfLBnodes]; - dist.f[DIR_M0P] = &distributions[DIR_M0P * numberOfLBnodes]; - dist.f[DIR_0PP] = &distributions[DIR_0PP * numberOfLBnodes]; - dist.f[DIR_0MM] = &distributions[DIR_0MM * numberOfLBnodes]; - dist.f[DIR_0PM] = &distributions[DIR_0PM * numberOfLBnodes]; - dist.f[DIR_0MP] = &distributions[DIR_0MP * numberOfLBnodes]; - dist.f[DIR_000] = &distributions[DIR_000 * numberOfLBnodes]; - dist.f[DIR_PPP] = &distributions[DIR_PPP * numberOfLBnodes]; - dist.f[DIR_MMP] = &distributions[DIR_MMP * numberOfLBnodes]; - dist.f[DIR_PMP] = &distributions[DIR_PMP * numberOfLBnodes]; - dist.f[DIR_MPP] = &distributions[DIR_MPP * numberOfLBnodes]; - dist.f[DIR_PPM] = &distributions[DIR_PPM * numberOfLBnodes]; - dist.f[DIR_MMM] = &distributions[DIR_MMM * numberOfLBnodes]; - dist.f[DIR_PMM] = &distributions[DIR_PMM * numberOfLBnodes]; - dist.f[DIR_MPM] = &distributions[DIR_MPM * numberOfLBnodes]; + dist.f[dP00] = &distributions[dP00 * numberOfLBnodes]; + dist.f[dM00] = &distributions[dM00 * numberOfLBnodes]; + dist.f[d0P0] = &distributions[d0P0 * numberOfLBnodes]; + dist.f[d0M0] = &distributions[d0M0 * numberOfLBnodes]; + dist.f[d00P] = &distributions[d00P * numberOfLBnodes]; + dist.f[d00M] = &distributions[d00M * numberOfLBnodes]; + dist.f[dPP0] = &distributions[dPP0 * numberOfLBnodes]; + dist.f[dMM0] = &distributions[dMM0 * numberOfLBnodes]; + dist.f[dPM0] = &distributions[dPM0 * numberOfLBnodes]; + dist.f[dMP0] = &distributions[dMP0 * numberOfLBnodes]; + dist.f[dP0P] = &distributions[dP0P * numberOfLBnodes]; + dist.f[dM0M] = &distributions[dM0M * numberOfLBnodes]; + dist.f[dP0M] = &distributions[dP0M * numberOfLBnodes]; + dist.f[dM0P] = &distributions[dM0P * numberOfLBnodes]; + dist.f[d0PP] = &distributions[d0PP * numberOfLBnodes]; + dist.f[d0MM] = &distributions[d0MM * numberOfLBnodes]; + dist.f[d0PM] = &distributions[d0PM * numberOfLBnodes]; + dist.f[d0MP] = &distributions[d0MP * numberOfLBnodes]; + dist.f[d000] = &distributions[d000 * numberOfLBnodes]; + dist.f[dPPP] = &distributions[dPPP * numberOfLBnodes]; + dist.f[dMMP] = &distributions[dMMP * numberOfLBnodes]; + dist.f[dPMP] = &distributions[dPMP * numberOfLBnodes]; + dist.f[dMPP] = &distributions[dMPP * numberOfLBnodes]; + dist.f[dPPM] = &distributions[dPPM * numberOfLBnodes]; + dist.f[dMMM] = &distributions[dMMM * numberOfLBnodes]; + dist.f[dPMM] = &distributions[dPMM * numberOfLBnodes]; + dist.f[dMPM] = &distributions[dMPM * numberOfLBnodes]; } else { - dist.f[DIR_M00] = &distributions[DIR_P00 * numberOfLBnodes]; - dist.f[DIR_P00] = &distributions[DIR_M00 * numberOfLBnodes]; - dist.f[DIR_0M0] = &distributions[DIR_0P0 * numberOfLBnodes]; - dist.f[DIR_0P0] = &distributions[DIR_0M0 * numberOfLBnodes]; - dist.f[DIR_00M] = &distributions[DIR_00P * numberOfLBnodes]; - dist.f[DIR_00P] = &distributions[DIR_00M * numberOfLBnodes]; - dist.f[DIR_MM0] = &distributions[DIR_PP0 * numberOfLBnodes]; - dist.f[DIR_PP0] = &distributions[DIR_MM0 * numberOfLBnodes]; - dist.f[DIR_MP0] = &distributions[DIR_PM0 * numberOfLBnodes]; - dist.f[DIR_PM0] = &distributions[DIR_MP0 * numberOfLBnodes]; - dist.f[DIR_M0M] = &distributions[DIR_P0P * numberOfLBnodes]; - dist.f[DIR_P0P] = &distributions[DIR_M0M * numberOfLBnodes]; - dist.f[DIR_M0P] = &distributions[DIR_P0M * numberOfLBnodes]; - dist.f[DIR_P0M] = &distributions[DIR_M0P * numberOfLBnodes]; - dist.f[DIR_0MM] = &distributions[DIR_0PP * numberOfLBnodes]; - dist.f[DIR_0PP] = &distributions[DIR_0MM * numberOfLBnodes]; - dist.f[DIR_0MP] = &distributions[DIR_0PM * numberOfLBnodes]; - dist.f[DIR_0PM] = &distributions[DIR_0MP * numberOfLBnodes]; - dist.f[DIR_000] = &distributions[DIR_000 * numberOfLBnodes]; - dist.f[DIR_MMM] = &distributions[DIR_PPP * numberOfLBnodes]; - dist.f[DIR_PPM] = &distributions[DIR_MMP * numberOfLBnodes]; - dist.f[DIR_MPM] = &distributions[DIR_PMP * numberOfLBnodes]; - dist.f[DIR_PMM] = &distributions[DIR_MPP * numberOfLBnodes]; - dist.f[DIR_MMP] = &distributions[DIR_PPM * numberOfLBnodes]; - dist.f[DIR_PPP] = &distributions[DIR_MMM * numberOfLBnodes]; - dist.f[DIR_MPP] = &distributions[DIR_PMM * numberOfLBnodes]; - dist.f[DIR_PMP] = &distributions[DIR_MPM * numberOfLBnodes]; + dist.f[dM00] = &distributions[dP00 * numberOfLBnodes]; + dist.f[dP00] = &distributions[dM00 * numberOfLBnodes]; + dist.f[d0M0] = &distributions[d0P0 * numberOfLBnodes]; + dist.f[d0P0] = &distributions[d0M0 * numberOfLBnodes]; + dist.f[d00M] = &distributions[d00P * numberOfLBnodes]; + dist.f[d00P] = &distributions[d00M * numberOfLBnodes]; + dist.f[dMM0] = &distributions[dPP0 * numberOfLBnodes]; + dist.f[dPP0] = &distributions[dMM0 * numberOfLBnodes]; + dist.f[dMP0] = &distributions[dPM0 * numberOfLBnodes]; + dist.f[dPM0] = &distributions[dMP0 * numberOfLBnodes]; + dist.f[dM0M] = &distributions[dP0P * numberOfLBnodes]; + dist.f[dP0P] = &distributions[dM0M * numberOfLBnodes]; + dist.f[dM0P] = &distributions[dP0M * numberOfLBnodes]; + dist.f[dP0M] = &distributions[dM0P * numberOfLBnodes]; + dist.f[d0MM] = &distributions[d0PP * numberOfLBnodes]; + dist.f[d0PP] = &distributions[d0MM * numberOfLBnodes]; + dist.f[d0MP] = &distributions[d0PM * numberOfLBnodes]; + dist.f[d0PM] = &distributions[d0MP * numberOfLBnodes]; + dist.f[d000] = &distributions[d000 * numberOfLBnodes]; + dist.f[dMMM] = &distributions[dPPP * numberOfLBnodes]; + dist.f[dPPM] = &distributions[dMMP * numberOfLBnodes]; + dist.f[dMPM] = &distributions[dPMP * numberOfLBnodes]; + dist.f[dPMM] = &distributions[dMPP * numberOfLBnodes]; + dist.f[dMMP] = &distributions[dPPM * numberOfLBnodes]; + dist.f[dPPP] = &distributions[dMMM * numberOfLBnodes]; + dist.f[dMPP] = &distributions[dPMM * numberOfLBnodes]; + dist.f[dPMP] = &distributions[dMPM * numberOfLBnodes]; } //////////////////////////////////////////////////////////////////////////////// Distributions27 distAD; if (isEvenTimestep) { - distAD.f[DIR_P00] = &distributionsAD[DIR_P00 * numberOfLBnodes]; - distAD.f[DIR_M00] = &distributionsAD[DIR_M00 * numberOfLBnodes]; - distAD.f[DIR_0P0] = &distributionsAD[DIR_0P0 * numberOfLBnodes]; - distAD.f[DIR_0M0] = &distributionsAD[DIR_0M0 * numberOfLBnodes]; - distAD.f[DIR_00P] = &distributionsAD[DIR_00P * numberOfLBnodes]; - distAD.f[DIR_00M] = &distributionsAD[DIR_00M * numberOfLBnodes]; - distAD.f[DIR_PP0] = &distributionsAD[DIR_PP0 * numberOfLBnodes]; - distAD.f[DIR_MM0] = &distributionsAD[DIR_MM0 * numberOfLBnodes]; - distAD.f[DIR_PM0] = &distributionsAD[DIR_PM0 * numberOfLBnodes]; - distAD.f[DIR_MP0] = &distributionsAD[DIR_MP0 * numberOfLBnodes]; - distAD.f[DIR_P0P] = &distributionsAD[DIR_P0P * numberOfLBnodes]; - distAD.f[DIR_M0M] = &distributionsAD[DIR_M0M * numberOfLBnodes]; - distAD.f[DIR_P0M] = &distributionsAD[DIR_P0M * numberOfLBnodes]; - distAD.f[DIR_M0P] = &distributionsAD[DIR_M0P * numberOfLBnodes]; - distAD.f[DIR_0PP] = &distributionsAD[DIR_0PP * numberOfLBnodes]; - distAD.f[DIR_0MM] = &distributionsAD[DIR_0MM * numberOfLBnodes]; - distAD.f[DIR_0PM] = &distributionsAD[DIR_0PM * numberOfLBnodes]; - distAD.f[DIR_0MP] = &distributionsAD[DIR_0MP * numberOfLBnodes]; - distAD.f[DIR_000] = &distributionsAD[DIR_000 * numberOfLBnodes]; - distAD.f[DIR_PPP] = &distributionsAD[DIR_PPP * numberOfLBnodes]; - distAD.f[DIR_MMP] = &distributionsAD[DIR_MMP * numberOfLBnodes]; - distAD.f[DIR_PMP] = &distributionsAD[DIR_PMP * numberOfLBnodes]; - distAD.f[DIR_MPP] = &distributionsAD[DIR_MPP * numberOfLBnodes]; - distAD.f[DIR_PPM] = &distributionsAD[DIR_PPM * numberOfLBnodes]; - distAD.f[DIR_MMM] = &distributionsAD[DIR_MMM * numberOfLBnodes]; - distAD.f[DIR_PMM] = &distributionsAD[DIR_PMM * numberOfLBnodes]; - distAD.f[DIR_MPM] = &distributionsAD[DIR_MPM * numberOfLBnodes]; + distAD.f[dP00] = &distributionsAD[dP00 * numberOfLBnodes]; + distAD.f[dM00] = &distributionsAD[dM00 * numberOfLBnodes]; + distAD.f[d0P0] = &distributionsAD[d0P0 * numberOfLBnodes]; + distAD.f[d0M0] = &distributionsAD[d0M0 * numberOfLBnodes]; + distAD.f[d00P] = &distributionsAD[d00P * numberOfLBnodes]; + distAD.f[d00M] = &distributionsAD[d00M * numberOfLBnodes]; + distAD.f[dPP0] = &distributionsAD[dPP0 * numberOfLBnodes]; + distAD.f[dMM0] = &distributionsAD[dMM0 * numberOfLBnodes]; + distAD.f[dPM0] = &distributionsAD[dPM0 * numberOfLBnodes]; + distAD.f[dMP0] = &distributionsAD[dMP0 * numberOfLBnodes]; + distAD.f[dP0P] = &distributionsAD[dP0P * numberOfLBnodes]; + distAD.f[dM0M] = &distributionsAD[dM0M * numberOfLBnodes]; + distAD.f[dP0M] = &distributionsAD[dP0M * numberOfLBnodes]; + distAD.f[dM0P] = &distributionsAD[dM0P * numberOfLBnodes]; + distAD.f[d0PP] = &distributionsAD[d0PP * numberOfLBnodes]; + distAD.f[d0MM] = &distributionsAD[d0MM * numberOfLBnodes]; + distAD.f[d0PM] = &distributionsAD[d0PM * numberOfLBnodes]; + distAD.f[d0MP] = &distributionsAD[d0MP * numberOfLBnodes]; + distAD.f[d000] = &distributionsAD[d000 * numberOfLBnodes]; + distAD.f[dPPP] = &distributionsAD[dPPP * numberOfLBnodes]; + distAD.f[dMMP] = &distributionsAD[dMMP * numberOfLBnodes]; + distAD.f[dPMP] = &distributionsAD[dPMP * numberOfLBnodes]; + distAD.f[dMPP] = &distributionsAD[dMPP * numberOfLBnodes]; + distAD.f[dPPM] = &distributionsAD[dPPM * numberOfLBnodes]; + distAD.f[dMMM] = &distributionsAD[dMMM * numberOfLBnodes]; + distAD.f[dPMM] = &distributionsAD[dPMM * numberOfLBnodes]; + distAD.f[dMPM] = &distributionsAD[dMPM * numberOfLBnodes]; } else { - distAD.f[DIR_M00] = &distributionsAD[DIR_P00 * numberOfLBnodes]; - distAD.f[DIR_P00] = &distributionsAD[DIR_M00 * numberOfLBnodes]; - distAD.f[DIR_0M0] = &distributionsAD[DIR_0P0 * numberOfLBnodes]; - distAD.f[DIR_0P0] = &distributionsAD[DIR_0M0 * numberOfLBnodes]; - distAD.f[DIR_00M] = &distributionsAD[DIR_00P * numberOfLBnodes]; - distAD.f[DIR_00P] = &distributionsAD[DIR_00M * numberOfLBnodes]; - distAD.f[DIR_MM0] = &distributionsAD[DIR_PP0 * numberOfLBnodes]; - distAD.f[DIR_PP0] = &distributionsAD[DIR_MM0 * numberOfLBnodes]; - distAD.f[DIR_MP0] = &distributionsAD[DIR_PM0 * numberOfLBnodes]; - distAD.f[DIR_PM0] = &distributionsAD[DIR_MP0 * numberOfLBnodes]; - distAD.f[DIR_M0M] = &distributionsAD[DIR_P0P * numberOfLBnodes]; - distAD.f[DIR_P0P] = &distributionsAD[DIR_M0M * numberOfLBnodes]; - distAD.f[DIR_M0P] = &distributionsAD[DIR_P0M * numberOfLBnodes]; - distAD.f[DIR_P0M] = &distributionsAD[DIR_M0P * numberOfLBnodes]; - distAD.f[DIR_0MM] = &distributionsAD[DIR_0PP * numberOfLBnodes]; - distAD.f[DIR_0PP] = &distributionsAD[DIR_0MM * numberOfLBnodes]; - distAD.f[DIR_0MP] = &distributionsAD[DIR_0PM * numberOfLBnodes]; - distAD.f[DIR_0PM] = &distributionsAD[DIR_0MP * numberOfLBnodes]; - distAD.f[DIR_000] = &distributionsAD[DIR_000 * numberOfLBnodes]; - distAD.f[DIR_MMM] = &distributionsAD[DIR_PPP * numberOfLBnodes]; - distAD.f[DIR_PPM] = &distributionsAD[DIR_MMP * numberOfLBnodes]; - distAD.f[DIR_MPM] = &distributionsAD[DIR_PMP * numberOfLBnodes]; - distAD.f[DIR_PMM] = &distributionsAD[DIR_MPP * numberOfLBnodes]; - distAD.f[DIR_MMP] = &distributionsAD[DIR_PPM * numberOfLBnodes]; - distAD.f[DIR_PPP] = &distributionsAD[DIR_MMM * numberOfLBnodes]; - distAD.f[DIR_MPP] = &distributionsAD[DIR_PMM * numberOfLBnodes]; - distAD.f[DIR_PMP] = &distributionsAD[DIR_MPM * numberOfLBnodes]; + distAD.f[dM00] = &distributionsAD[dP00 * numberOfLBnodes]; + distAD.f[dP00] = &distributionsAD[dM00 * numberOfLBnodes]; + distAD.f[d0M0] = &distributionsAD[d0P0 * numberOfLBnodes]; + distAD.f[d0P0] = &distributionsAD[d0M0 * numberOfLBnodes]; + distAD.f[d00M] = &distributionsAD[d00P * numberOfLBnodes]; + distAD.f[d00P] = &distributionsAD[d00M * numberOfLBnodes]; + distAD.f[dMM0] = &distributionsAD[dPP0 * numberOfLBnodes]; + distAD.f[dPP0] = &distributionsAD[dMM0 * numberOfLBnodes]; + distAD.f[dMP0] = &distributionsAD[dPM0 * numberOfLBnodes]; + distAD.f[dPM0] = &distributionsAD[dMP0 * numberOfLBnodes]; + distAD.f[dM0M] = &distributionsAD[dP0P * numberOfLBnodes]; + distAD.f[dP0P] = &distributionsAD[dM0M * numberOfLBnodes]; + distAD.f[dM0P] = &distributionsAD[dP0M * numberOfLBnodes]; + distAD.f[dP0M] = &distributionsAD[dM0P * numberOfLBnodes]; + distAD.f[d0MM] = &distributionsAD[d0PP * numberOfLBnodes]; + distAD.f[d0PP] = &distributionsAD[d0MM * numberOfLBnodes]; + distAD.f[d0MP] = &distributionsAD[d0PM * numberOfLBnodes]; + distAD.f[d0PM] = &distributionsAD[d0MP * numberOfLBnodes]; + distAD.f[d000] = &distributionsAD[d000 * numberOfLBnodes]; + distAD.f[dMMM] = &distributionsAD[dPPP * numberOfLBnodes]; + distAD.f[dPPM] = &distributionsAD[dMMP * numberOfLBnodes]; + distAD.f[dMPM] = &distributionsAD[dPMP * numberOfLBnodes]; + distAD.f[dPMM] = &distributionsAD[dMPP * numberOfLBnodes]; + distAD.f[dMMP] = &distributionsAD[dPPM * numberOfLBnodes]; + distAD.f[dPPP] = &distributionsAD[dMMM * numberOfLBnodes]; + distAD.f[dMPP] = &distributionsAD[dPMM * numberOfLBnodes]; + distAD.f[dPMP] = &distributionsAD[dMPM * numberOfLBnodes]; } //////////////////////////////////////////////////////////////////////////////// //! - Set neighbor indices (necessary for indirect addressing) @@ -241,63 +241,63 @@ __global__ void Factorized_Central_Moments_Advection_Diffusion_Device_Kernel( //////////////////////////////////////////////////////////////////////////////////// //! - Set local distributions Fluid //! - real fcbb = (dist.f[DIR_P00])[k]; - real fabb = (dist.f[DIR_M00])[kw]; - real fbcb = (dist.f[DIR_0P0])[k]; - real fbab = (dist.f[DIR_0M0])[ks]; - real fbbc = (dist.f[DIR_00P])[k]; - real fbba = (dist.f[DIR_00M])[kb]; - real fccb = (dist.f[DIR_PP0])[k]; - real faab = (dist.f[DIR_MM0])[ksw]; - real fcab = (dist.f[DIR_PM0])[ks]; - real facb = (dist.f[DIR_MP0])[kw]; - real fcbc = (dist.f[DIR_P0P])[k]; - real faba = (dist.f[DIR_M0M])[kbw]; - real fcba = (dist.f[DIR_P0M])[kb]; - real fabc = (dist.f[DIR_M0P])[kw]; - real fbcc = (dist.f[DIR_0PP])[k]; - real fbaa = (dist.f[DIR_0MM])[kbs]; - real fbca = (dist.f[DIR_0PM])[kb]; - real fbac = (dist.f[DIR_0MP])[ks]; - real fbbb = (dist.f[DIR_000])[k]; - real fccc = (dist.f[DIR_PPP])[k]; - real faac = (dist.f[DIR_MMP])[ksw]; - real fcac = (dist.f[DIR_PMP])[ks]; - real facc = (dist.f[DIR_MPP])[kw]; - real fcca = (dist.f[DIR_PPM])[kb]; - real faaa = (dist.f[DIR_MMM])[kbsw]; - real fcaa = (dist.f[DIR_PMM])[kbs]; - real faca = (dist.f[DIR_MPM])[kbw]; + real fcbb = (dist.f[dP00])[k]; + real fabb = (dist.f[dM00])[kw]; + real fbcb = (dist.f[d0P0])[k]; + real fbab = (dist.f[d0M0])[ks]; + real fbbc = (dist.f[d00P])[k]; + real fbba = (dist.f[d00M])[kb]; + real fccb = (dist.f[dPP0])[k]; + real faab = (dist.f[dMM0])[ksw]; + real fcab = (dist.f[dPM0])[ks]; + real facb = (dist.f[dMP0])[kw]; + real fcbc = (dist.f[dP0P])[k]; + real faba = (dist.f[dM0M])[kbw]; + real fcba = (dist.f[dP0M])[kb]; + real fabc = (dist.f[dM0P])[kw]; + real fbcc = (dist.f[d0PP])[k]; + real fbaa = (dist.f[d0MM])[kbs]; + real fbca = (dist.f[d0PM])[kb]; + real fbac = (dist.f[d0MP])[ks]; + real fbbb = (dist.f[d000])[k]; + real fccc = (dist.f[dPPP])[k]; + real faac = (dist.f[dMMP])[ksw]; + real fcac = (dist.f[dPMP])[ks]; + real facc = (dist.f[dMPP])[kw]; + real fcca = (dist.f[dPPM])[kb]; + real faaa = (dist.f[dMMM])[kbsw]; + real fcaa = (dist.f[dPMM])[kbs]; + real faca = (dist.f[dMPM])[kbw]; //////////////////////////////////////////////////////////////////////////////////// //! - Set local distributions Advection Diffusion //! - real mfcbb = (distAD.f[DIR_P00])[k]; - real mfabb = (distAD.f[DIR_M00])[kw]; - real mfbcb = (distAD.f[DIR_0P0])[k]; - real mfbab = (distAD.f[DIR_0M0])[ks]; - real mfbbc = (distAD.f[DIR_00P])[k]; - real mfbba = (distAD.f[DIR_00M])[kb]; - real mfccb = (distAD.f[DIR_PP0])[k]; - real mfaab = (distAD.f[DIR_MM0])[ksw]; - real mfcab = (distAD.f[DIR_PM0])[ks]; - real mfacb = (distAD.f[DIR_MP0])[kw]; - real mfcbc = (distAD.f[DIR_P0P])[k]; - real mfaba = (distAD.f[DIR_M0M])[kbw]; - real mfcba = (distAD.f[DIR_P0M])[kb]; - real mfabc = (distAD.f[DIR_M0P])[kw]; - real mfbcc = (distAD.f[DIR_0PP])[k]; - real mfbaa = (distAD.f[DIR_0MM])[kbs]; - real mfbca = (distAD.f[DIR_0PM])[kb]; - real mfbac = (distAD.f[DIR_0MP])[ks]; - real mfbbb = (distAD.f[DIR_000])[k]; - real mfccc = (distAD.f[DIR_PPP])[k]; - real mfaac = (distAD.f[DIR_MMP])[ksw]; - real mfcac = (distAD.f[DIR_PMP])[ks]; - real mfacc = (distAD.f[DIR_MPP])[kw]; - real mfcca = (distAD.f[DIR_PPM])[kb]; - real mfaaa = (distAD.f[DIR_MMM])[kbsw]; - real mfcaa = (distAD.f[DIR_PMM])[kbs]; - real mfaca = (distAD.f[DIR_MPM])[kbw]; + real mfcbb = (distAD.f[dP00])[k]; + real mfabb = (distAD.f[dM00])[kw]; + real mfbcb = (distAD.f[d0P0])[k]; + real mfbab = (distAD.f[d0M0])[ks]; + real mfbbc = (distAD.f[d00P])[k]; + real mfbba = (distAD.f[d00M])[kb]; + real mfccb = (distAD.f[dPP0])[k]; + real mfaab = (distAD.f[dMM0])[ksw]; + real mfcab = (distAD.f[dPM0])[ks]; + real mfacb = (distAD.f[dMP0])[kw]; + real mfcbc = (distAD.f[dP0P])[k]; + real mfaba = (distAD.f[dM0M])[kbw]; + real mfcba = (distAD.f[dP0M])[kb]; + real mfabc = (distAD.f[dM0P])[kw]; + real mfbcc = (distAD.f[d0PP])[k]; + real mfbaa = (distAD.f[d0MM])[kbs]; + real mfbca = (distAD.f[d0PM])[kb]; + real mfbac = (distAD.f[d0MP])[ks]; + real mfbbb = (distAD.f[d000])[k]; + real mfccc = (distAD.f[dPPP])[k]; + real mfaac = (distAD.f[dMMP])[ksw]; + real mfcac = (distAD.f[dPMP])[ks]; + real mfacc = (distAD.f[dMPP])[kw]; + real mfcca = (distAD.f[dPPM])[kb]; + real mfaaa = (distAD.f[dMMM])[kbsw]; + real mfcaa = (distAD.f[dPMM])[kbs]; + real mfaca = (distAD.f[dMPM])[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 @@ __global__ void Factorized_Central_Moments_Advection_Diffusion_Device_Kernel( //! 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[DIR_P00])[k ] = mfabb; - (distAD.f[DIR_M00])[kw ] = mfcbb; - (distAD.f[DIR_0P0])[k ] = mfbab; - (distAD.f[DIR_0M0])[ks ] = mfbcb; - (distAD.f[DIR_00P])[k ] = mfbba; - (distAD.f[DIR_00M])[kb ] = mfbbc; - (distAD.f[DIR_PP0])[k ] = mfaab; - (distAD.f[DIR_MM0])[ksw ] = mfccb; - (distAD.f[DIR_PM0])[ks ] = mfacb; - (distAD.f[DIR_MP0])[kw ] = mfcab; - (distAD.f[DIR_P0P])[k ] = mfaba; - (distAD.f[DIR_M0M])[kbw ] = mfcbc; - (distAD.f[DIR_P0M])[kb ] = mfabc; - (distAD.f[DIR_M0P])[kw ] = mfcba; - (distAD.f[DIR_0PP])[k ] = mfbaa; - (distAD.f[DIR_0MM])[kbs ] = mfbcc; - (distAD.f[DIR_0PM])[kb ] = mfbac; - (distAD.f[DIR_0MP])[ks ] = mfbca; - (distAD.f[DIR_000])[k ] = mfbbb; - (distAD.f[DIR_PPP])[k ] = mfaaa; - (distAD.f[DIR_PMP])[ks ] = mfaca; - (distAD.f[DIR_PPM])[kb ] = mfaac; - (distAD.f[DIR_PMM])[kbs ] = mfacc; - (distAD.f[DIR_MPP])[kw ] = mfcaa; - (distAD.f[DIR_MMP])[ksw ] = mfcca; - (distAD.f[DIR_MPM])[kbw ] = mfcac; - (distAD.f[DIR_MMM])[kbsw] = mfccc; + (distAD.f[dP00])[k ] = mfabb; + (distAD.f[dM00])[kw ] = mfcbb; + (distAD.f[d0P0])[k ] = mfbab; + (distAD.f[d0M0])[ks ] = mfbcb; + (distAD.f[d00P])[k ] = mfbba; + (distAD.f[d00M])[kb ] = mfbbc; + (distAD.f[dPP0])[k ] = mfaab; + (distAD.f[dMM0])[ksw ] = mfccb; + (distAD.f[dPM0])[ks ] = mfacb; + (distAD.f[dMP0])[kw ] = mfcab; + (distAD.f[dP0P])[k ] = mfaba; + (distAD.f[dM0M])[kbw ] = mfcbc; + (distAD.f[dP0M])[kb ] = mfabc; + (distAD.f[dM0P])[kw ] = mfcba; + (distAD.f[d0PP])[k ] = mfbaa; + (distAD.f[d0MM])[kbs ] = mfbcc; + (distAD.f[d0PM])[kb ] = mfbac; + (distAD.f[d0MP])[ks ] = mfbca; + (distAD.f[d000])[k ] = mfbbb; + (distAD.f[dPPP])[k ] = mfaaa; + (distAD.f[dPMP])[ks ] = mfaca; + (distAD.f[dPPM])[kb ] = mfaac; + (distAD.f[dPMM])[kbs ] = mfacc; + (distAD.f[dMPP])[kw ] = mfcaa; + (distAD.f[dMMP])[ksw ] = mfcca; + (distAD.f[dMPM])[kbw ] = mfcac; + (distAD.f[dMMM])[kbsw] = mfccc; } } //////////////////////////////////////////////////////////////////////////////// diff --git a/src/gpu/core/GPU/AdvectionDiffusionBCs27.cu b/src/gpu/core/GPU/AdvectionDiffusionBCs27.cu new file mode 100644 index 0000000000000000000000000000000000000000..7d1bccaddbfd51a413c6833d0e4122e8447764c2 --- /dev/null +++ b/src/gpu/core/GPU/AdvectionDiffusionBCs27.cu @@ -0,0 +1,7147 @@ +/* Device code */ +#include "LBM/LB.h" +#include "lbm/constants/D3Q27.h" + +#include <basics/constants/NumericConstants.h> + +using namespace vf::basics::constant; +using namespace vf::lbm::dir; + +////////////////////////////////////////////////////////////////////////////// +__global__ void QADPress7( real* DD, + real* DD7, + real* temp, + real* velo, + real diffusivity, + int* k_Q, + real* QQ, + unsigned int numberOfBCnodes, + real om1, + unsigned int* neighborX, + unsigned int* neighborY, + unsigned int* neighborZ, + unsigned long long numberOfLBnodes, + bool isEvenTimestep) +{ + Distributions27 D; + if (isEvenTimestep==true) + { + D.f[dP00] = &DD[dP00 * numberOfLBnodes]; + D.f[dM00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00P] = &DD[d00P * numberOfLBnodes]; + D.f[d00M] = &DD[d00M * numberOfLBnodes]; + D.f[dPP0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dMM0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dP0P] = &DD[dP0P * numberOfLBnodes]; + D.f[dM0M] = &DD[dM0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dP0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dM0P * numberOfLBnodes]; + D.f[d0PP] = &DD[d0PP * numberOfLBnodes]; + D.f[d0MM] = &DD[d0MM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0PM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dPPP * numberOfLBnodes]; + D.f[dMMP] = &DD[dMMP * numberOfLBnodes]; + D.f[dPMP] = &DD[dPMP * numberOfLBnodes]; + D.f[dMPP] = &DD[dMPP * numberOfLBnodes]; + D.f[dPPM] = &DD[dPPM * numberOfLBnodes]; + D.f[dMMM] = &DD[dMMM * numberOfLBnodes]; + D.f[dPMM] = &DD[dPMM * numberOfLBnodes]; + D.f[dMPM] = &DD[dMPM * numberOfLBnodes]; + } + else + { + D.f[dM00] = &DD[dP00 * numberOfLBnodes]; + D.f[dP00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00M] = &DD[d00P * numberOfLBnodes]; + D.f[d00P] = &DD[d00M * numberOfLBnodes]; + D.f[dMM0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dPP0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dM0M] = &DD[dP0P * numberOfLBnodes]; + D.f[dP0P] = &DD[dM0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dP0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dM0P * numberOfLBnodes]; + D.f[d0MM] = &DD[d0PP * numberOfLBnodes]; + D.f[d0PP] = &DD[d0MM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0PM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dMMM * numberOfLBnodes]; + D.f[dMMP] = &DD[dPPM * numberOfLBnodes]; + D.f[dPMP] = &DD[dMPM * numberOfLBnodes]; + D.f[dMPP] = &DD[dPMM * numberOfLBnodes]; + D.f[dPPM] = &DD[dMMP * numberOfLBnodes]; + D.f[dMMM] = &DD[dPPP * numberOfLBnodes]; + D.f[dPMM] = &DD[dMPP * numberOfLBnodes]; + D.f[dMPM] = &DD[dPMP * numberOfLBnodes]; + } + + Distributions7 D7; + if (isEvenTimestep==true) + { + D7.f[0] = &DD7[0*numberOfLBnodes]; + D7.f[1] = &DD7[1*numberOfLBnodes]; + D7.f[2] = &DD7[2*numberOfLBnodes]; + D7.f[3] = &DD7[3*numberOfLBnodes]; + D7.f[4] = &DD7[4*numberOfLBnodes]; + D7.f[5] = &DD7[5*numberOfLBnodes]; + D7.f[6] = &DD7[6*numberOfLBnodes]; + } + else + { + D7.f[0] = &DD7[0*numberOfLBnodes]; + D7.f[2] = &DD7[1*numberOfLBnodes]; + D7.f[1] = &DD7[2*numberOfLBnodes]; + D7.f[4] = &DD7[3*numberOfLBnodes]; + D7.f[3] = &DD7[4*numberOfLBnodes]; + D7.f[6] = &DD7[5*numberOfLBnodes]; + D7.f[5] = &DD7[6*numberOfLBnodes]; + } + + + //////////////////////////////////////////////////////////////////////////////// + const unsigned x = threadIdx.x; // Globaler x-Index + const unsigned y = blockIdx.x; // Globaler y-Index + const unsigned z = blockIdx.y; // Globaler z-Index + + const unsigned nx = blockDim.x; + const unsigned ny = gridDim.x; + + const unsigned k = nx*(ny*z + y) + x; + ////////////////////////////////////////////////////////////////////////// + + if(k<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[dP00 * numberOfBCnodes]; + q_dirW = &QQ[dM00 * numberOfBCnodes]; + q_dirN = &QQ[d0P0 * numberOfBCnodes]; + q_dirS = &QQ[d0M0 * numberOfBCnodes]; + q_dirT = &QQ[d00P * numberOfBCnodes]; + q_dirB = &QQ[d00M * numberOfBCnodes]; + //q_dirNE = &QQ[dPP0 * numberOfBCnodes]; + //q_dirSW = &QQ[dMM0 * numberOfBCnodes]; + //q_dirSE = &QQ[dPM0 * numberOfBCnodes]; + //q_dirNW = &QQ[dMP0 * numberOfBCnodes]; + //q_dirTE = &QQ[dP0P * numberOfBCnodes]; + //q_dirBW = &QQ[dM0M * numberOfBCnodes]; + //q_dirBE = &QQ[dP0M * numberOfBCnodes]; + //q_dirTW = &QQ[dM0P * numberOfBCnodes]; + //q_dirTN = &QQ[d0PP * numberOfBCnodes]; + //q_dirBS = &QQ[d0MM * numberOfBCnodes]; + //q_dirBN = &QQ[d0PM * numberOfBCnodes]; + //q_dirTS = &QQ[d0MP * numberOfBCnodes]; + //q_dirTNE = &QQ[dPPP * numberOfBCnodes]; + //q_dirTSW = &QQ[dMMP * numberOfBCnodes]; + //q_dirTSE = &QQ[dPMP * numberOfBCnodes]; + //q_dirTNW = &QQ[dMPP * numberOfBCnodes]; + //q_dirBNE = &QQ[dPPM * numberOfBCnodes]; + //q_dirBSW = &QQ[dMMM * numberOfBCnodes]; + //q_dirBSE = &QQ[dPMM * numberOfBCnodes]; + //q_dirBNW = &QQ[dMPM * 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]; + 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 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[dP00])[ke ]; + f_E = (D.f[dM00])[kw ]; + f_S = (D.f[d0P0])[kn ]; + f_N = (D.f[d0M0])[ks ]; + f_B = (D.f[d00P])[kt ]; + f_T = (D.f[d00M])[kb ]; + f_SW = (D.f[dPP0])[kne ]; + f_NE = (D.f[dMM0])[ksw ]; + f_NW = (D.f[dPM0])[kse ]; + f_SE = (D.f[dMP0])[knw ]; + f_BW = (D.f[dP0P])[kte ]; + f_TE = (D.f[dM0M])[kbw ]; + f_TW = (D.f[dP0M])[kbe ]; + f_BE = (D.f[dM0P])[ktw ]; + f_BS = (D.f[d0PP])[ktn ]; + f_TN = (D.f[d0MM])[kbs ]; + f_TS = (D.f[d0PM])[kbn ]; + f_BN = (D.f[d0MP])[kts ]; + f_BSW = (D.f[dPPP])[ktne ]; + f_BNE = (D.f[dMMP])[ktsw ]; + f_BNW = (D.f[dPMP])[ktse ]; + f_BSE = (D.f[dMPP])[ktnw ]; + f_TSW = (D.f[dPPM])[kbne ]; + f_TNE = (D.f[dMMM])[kbsw ]; + f_TNW = (D.f[dPMM])[kbse ]; + f_TSE = (D.f[dMPM])[kbnw ]; + //////////////////////////////////////////////////////////////////////////////// + /*real drho*/; + //real vx1_Inflow = zero; + //real vx2_Inflow = zero; + //real vx3_Inflow = velo[k]; + //real ux_sq_Inflow = vx1_Inflow * vx1_Inflow; + //real uy_sq_Inflow = vx2_Inflow * vx2_Inflow; + //real uz_sq_Inflow = vx3_Inflow * vx3_Inflow; + + + //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[d000])[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); + + //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); + + //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); + + 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[d000])[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)); + real 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)); + real 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 cu_sq =1.5*(vx1*vx1+vx2*vx2+vx3*vx3); + real ux_sq = vx1 * vx1; + real uy_sq = vx2 * vx2; + real uz_sq = vx3 * vx3; + real omegaD = c3o1 - sqrt(c3o1); + real Lam = -(c1o2-c1o1/omegaD); + real nue_d = Lam/c3o1; + //real ae = zero; + real ae = diffusivity/nue_d - c1o1; + + real f7_ZERO,f7_E,f7_W,f7_N,f7_S,f7_T,f7_B; + real /*feq7_ZERO,*/feq7_E,feq7_W,feq7_N,feq7_S,feq7_T,feq7_B; + real /*feqW7_ZERO,*/feqW7_E,feqW7_W,feqW7_N,feqW7_S,feqW7_T,feqW7_B; + //real TempD = temp[k]; + + + f7_ZERO = (D7.f[0])[kzero]; + f7_W = (D7.f[1])[ke ]; + f7_E = (D7.f[2])[kw ]; + f7_S = (D7.f[3])[kn ]; + f7_N = (D7.f[4])[ks ]; + f7_B = (D7.f[5])[kt ]; + f7_T = (D7.f[6])[kb ]; + + real ConcD = f7_ZERO + f7_E + f7_W + f7_N + f7_S + f7_T + f7_B; + + //feq7_ZERO = ConcD*(c1o3*(ae*(-3.0))-(ux_sq+uy_sq+uz_sq)); + feq7_E = ConcD*(c1o6*(ae+c1o1)+c1o2*(ux_sq)+vx1*c1o2); + feq7_W = ConcD*(c1o6*(ae+c1o1)+c1o2*(ux_sq)-vx1*c1o2); + feq7_N = ConcD*(c1o6*(ae+c1o1)+c1o2*(uy_sq)+vx2*c1o2); + feq7_S = ConcD*(c1o6*(ae+c1o1)+c1o2*(uy_sq)-vx2*c1o2); + feq7_T = ConcD*(c1o6*(ae+c1o1)+c1o2*(uz_sq)+vx3*c1o2); + feq7_B = ConcD*(c1o6*(ae+c1o1)+c1o2*(uz_sq)-vx3*c1o2); + + //feq7_ZERO = TempD*(c1o3*(ae*(-3.0f))-(ux_sq+uy_sq+uz_sq)); + feqW7_E = feq7_E;// TempD*(c1o6*(ae+one)+c1o2*(ux_sq_Inflow)+vx1_Inflow*c1o2); + feqW7_W = feq7_W;// TempD*(c1o6*(ae+one)+c1o2*(ux_sq_Inflow)-vx1_Inflow*c1o2); + feqW7_N = feq7_N;// TempD*(c1o6*(ae+one)+c1o2*(uy_sq_Inflow)+vx2_Inflow*c1o2); + feqW7_S = feq7_S;// TempD*(c1o6*(ae+one)+c1o2*(uy_sq_Inflow)-vx2_Inflow*c1o2); + feqW7_T = feq7_T;// TempD*(c1o6*(ae+one)+c1o2*(uz_sq_Inflow)+vx3_Inflow*c1o2); + feqW7_B = feq7_B;// TempD*(c1o6*(ae+one)+c1o2*(uz_sq_Inflow)-vx3_Inflow*c1o2); + + ////////////////////////////////////////////////////////////////////////// + //pointertausch + if (isEvenTimestep==false) + { + D7.f[0] = &DD7[0*numberOfLBnodes]; + D7.f[1] = &DD7[1*numberOfLBnodes]; + D7.f[2] = &DD7[2*numberOfLBnodes]; + D7.f[3] = &DD7[3*numberOfLBnodes]; + D7.f[4] = &DD7[4*numberOfLBnodes]; + D7.f[5] = &DD7[5*numberOfLBnodes]; + D7.f[6] = &DD7[6*numberOfLBnodes]; + } + else + { + D7.f[0] = &DD7[0*numberOfLBnodes]; + D7.f[2] = &DD7[1*numberOfLBnodes]; + D7.f[1] = &DD7[2*numberOfLBnodes]; + D7.f[4] = &DD7[3*numberOfLBnodes]; + D7.f[3] = &DD7[4*numberOfLBnodes]; + D7.f[6] = &DD7[5*numberOfLBnodes]; + D7.f[5] = &DD7[6*numberOfLBnodes]; + } + + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //Test + //(D.f[d000])[k]=0.1f; + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //(D7.f[1])[ke ] = f7_E - feq7_E + feqW7_W; //dP00 + //(D7.f[2])[kw ] = f7_W - feq7_W + feqW7_E; //dM00 + //(D7.f[3])[kn ] = f7_N - feq7_N + feqW7_S; //d0P0 + //(D7.f[4])[ks ] = f7_S - feq7_S + feqW7_N; //d0M0 + //(D7.f[5])[kt ] = f7_T - feq7_T + feqW7_B; //d00P + //(D7.f[6])[kb ] = f7_B - feq7_B + feqW7_T; //d00M + + ////////////////////////////////////////////////////////////////////////// + //mit Q's + real /*feq,*/ q; + q = q_dirE[k]; + if (q>=c0o1 && q<=c1o1) + { + //q=0.; + (D7.f[2])[kw]=(c2o1*feqW7_W-(f7_E*(q*omegaD-c1o1)-omegaD*feq7_E*(q-c1o1))/(omegaD-c1o1)+f7_W*q)/(q+c1o1);//f7_W - feq7_W + feqW7_E; + } + + q = q_dirW[k]; + if (q>=c0o1 && q<=c1o1) + { + //q=0.; + (D7.f[1])[ke]=(c2o1*feqW7_E-(f7_W*(q*omegaD-c1o1)-omegaD*feq7_W*(q-c1o1))/(omegaD-c1o1)+f7_E*q)/(q+c1o1);//f7_E - feq7_E + feqW7_W; + } + + q = q_dirN[k]; + if (q>=c0o1 && q<=c1o1) + { + //q=0.; + (D7.f[4])[ks]=(c2o1*feqW7_S-(f7_N*(q*omegaD-1.)-omegaD*feq7_N*(q-c1o1))/(omegaD-c1o1)+f7_S*q)/(q+c1o1);//f7_S - feq7_S + feqW7_N; + } + + q = q_dirS[k]; + if (q>=c0o1 && q<=c1o1) + { + //q=0.; + (D7.f[3])[kn]=(c2o1*feqW7_N-(f7_S*(q*omegaD-c1o1)-omegaD*feq7_S*(q-c1o1))/(omegaD-c1o1)+f7_N*q)/(q+c1o1);//f7_N - feq7_N + feqW7_S; + } + + q = q_dirT[k]; + if (q>=c0o1 && q<=c1o1) + { + //q=0.; + (D7.f[6])[kb]=(c2o1*feqW7_B-(f7_T*(q*omegaD-1.)-omegaD*feq7_T*(q-c1o1))/(omegaD-c1o1)+f7_B*q)/(q+c1o1);//f7_B - feq7_B + feqW7_T; + } + + q = q_dirB[k]; + if (q>=c0o1 && q<=c1o1) + { + //q=0.; + (D7.f[5])[kt]=(c2o1*feqW7_T-(f7_B*(q*omegaD-c1o1)-omegaD*feq7_B*(q-c1o1))/(omegaD-c1o1)+f7_T*q)/(q+c1o1);//f7_T - feq7_T + feqW7_B; + } + + //////////////////////////////////////////////////////////////////////////// + ////ohne Q's + //real /*feq,*/ q; + //q = q_dirE[k]; + //if (q>=zero && q<=one) + //{ + // (D7.f[2])[kw]=f7_W - feq7_W + feqW7_E; + //} + + //q = q_dirW[k]; + //if (q>=zero && q<=one) + //{ + // (D7.f[1])[ke]=f7_E - feq7_E + feqW7_W; + //} + + //q = q_dirN[k]; + //if (q>=zero && q<=one) + //{ + // (D7.f[4])[ks]=f7_S - feq7_S + feqW7_N; + //} + + //q = q_dirS[k]; + //if (q>=zero && q<=one) + //{ + // (D7.f[3])[kn]=f7_N - feq7_N + feqW7_S; + //} + + //q = q_dirT[k]; + //if (q>=zero && q<=one) + //{ + // (D7.f[6])[kb]=f7_B - feq7_B + feqW7_T; + //} + + //q = q_dirB[k]; + //if (q>=zero && q<=one) + //{ + // (D7.f[5])[kt]=f7_T - feq7_T + feqW7_B; + //} + } +} +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +////////////////////////////////////////////////////////////////////////////// +__global__ void QADPress27( real* DD, + real* DD27, + real* temp, + real* velo, + real diffusivity, + int* k_Q, + real* QQ, + unsigned int numberOfBCnodes, + real om1, + unsigned int* neighborX, + unsigned int* neighborY, + unsigned int* neighborZ, + unsigned long long numberOfLBnodes, + bool isEvenTimestep) +{ + Distributions27 D; + if (isEvenTimestep==true) + { + D.f[dP00] = &DD[dP00 * numberOfLBnodes]; + D.f[dM00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00P] = &DD[d00P * numberOfLBnodes]; + D.f[d00M] = &DD[d00M * numberOfLBnodes]; + D.f[dPP0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dMM0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dP0P] = &DD[dP0P * numberOfLBnodes]; + D.f[dM0M] = &DD[dM0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dP0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dM0P * numberOfLBnodes]; + D.f[d0PP] = &DD[d0PP * numberOfLBnodes]; + D.f[d0MM] = &DD[d0MM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0PM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dPPP * numberOfLBnodes]; + D.f[dMMP] = &DD[dMMP * numberOfLBnodes]; + D.f[dPMP] = &DD[dPMP * numberOfLBnodes]; + D.f[dMPP] = &DD[dMPP * numberOfLBnodes]; + D.f[dPPM] = &DD[dPPM * numberOfLBnodes]; + D.f[dMMM] = &DD[dMMM * numberOfLBnodes]; + D.f[dPMM] = &DD[dPMM * numberOfLBnodes]; + D.f[dMPM] = &DD[dMPM * numberOfLBnodes]; + } + else + { + D.f[dM00] = &DD[dP00 * numberOfLBnodes]; + D.f[dP00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00M] = &DD[d00P * numberOfLBnodes]; + D.f[d00P] = &DD[d00M * numberOfLBnodes]; + D.f[dMM0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dPP0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dM0M] = &DD[dP0P * numberOfLBnodes]; + D.f[dP0P] = &DD[dM0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dP0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dM0P * numberOfLBnodes]; + D.f[d0MM] = &DD[d0PP * numberOfLBnodes]; + D.f[d0PP] = &DD[d0MM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0PM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dMMM * numberOfLBnodes]; + D.f[dMMP] = &DD[dPPM * numberOfLBnodes]; + D.f[dPMP] = &DD[dMPM * numberOfLBnodes]; + D.f[dMPP] = &DD[dPMM * numberOfLBnodes]; + D.f[dPPM] = &DD[dMMP * numberOfLBnodes]; + D.f[dMMM] = &DD[dPPP * numberOfLBnodes]; + D.f[dPMM] = &DD[dMPP * numberOfLBnodes]; + D.f[dMPM] = &DD[dPMP * numberOfLBnodes]; + } + + Distributions27 D27; + if (isEvenTimestep==true) + { + D27.f[dP00] = &DD27[dP00 * numberOfLBnodes]; + D27.f[dM00] = &DD27[dM00 * numberOfLBnodes]; + D27.f[d0P0] = &DD27[d0P0 * numberOfLBnodes]; + D27.f[d0M0] = &DD27[d0M0 * numberOfLBnodes]; + D27.f[d00P] = &DD27[d00P * numberOfLBnodes]; + D27.f[d00M] = &DD27[d00M * numberOfLBnodes]; + D27.f[dPP0] = &DD27[dPP0 * numberOfLBnodes]; + D27.f[dMM0] = &DD27[dMM0 * numberOfLBnodes]; + D27.f[dPM0] = &DD27[dPM0 * numberOfLBnodes]; + D27.f[dMP0] = &DD27[dMP0 * numberOfLBnodes]; + D27.f[dP0P] = &DD27[dP0P * numberOfLBnodes]; + D27.f[dM0M] = &DD27[dM0M * numberOfLBnodes]; + D27.f[dP0M] = &DD27[dP0M * numberOfLBnodes]; + D27.f[dM0P] = &DD27[dM0P * numberOfLBnodes]; + D27.f[d0PP] = &DD27[d0PP * numberOfLBnodes]; + D27.f[d0MM] = &DD27[d0MM * numberOfLBnodes]; + D27.f[d0PM] = &DD27[d0PM * numberOfLBnodes]; + D27.f[d0MP] = &DD27[d0MP * numberOfLBnodes]; + D27.f[d000] = &DD27[d000 * numberOfLBnodes]; + D27.f[dPPP] = &DD27[dPPP * numberOfLBnodes]; + D27.f[dMMP] = &DD27[dMMP * numberOfLBnodes]; + D27.f[dPMP] = &DD27[dPMP * numberOfLBnodes]; + D27.f[dMPP] = &DD27[dMPP * numberOfLBnodes]; + D27.f[dPPM] = &DD27[dPPM * numberOfLBnodes]; + D27.f[dMMM] = &DD27[dMMM * numberOfLBnodes]; + D27.f[dPMM] = &DD27[dPMM * numberOfLBnodes]; + D27.f[dMPM] = &DD27[dMPM * numberOfLBnodes]; + } + else + { + D27.f[dM00] = &DD27[dP00 * numberOfLBnodes]; + D27.f[dP00] = &DD27[dM00 * numberOfLBnodes]; + D27.f[d0M0] = &DD27[d0P0 * numberOfLBnodes]; + D27.f[d0P0] = &DD27[d0M0 * numberOfLBnodes]; + D27.f[d00M] = &DD27[d00P * numberOfLBnodes]; + D27.f[d00P] = &DD27[d00M * numberOfLBnodes]; + D27.f[dMM0] = &DD27[dPP0 * numberOfLBnodes]; + D27.f[dPP0] = &DD27[dMM0 * numberOfLBnodes]; + D27.f[dMP0] = &DD27[dPM0 * numberOfLBnodes]; + D27.f[dPM0] = &DD27[dMP0 * numberOfLBnodes]; + D27.f[dM0M] = &DD27[dP0P * numberOfLBnodes]; + D27.f[dP0P] = &DD27[dM0M * numberOfLBnodes]; + D27.f[dM0P] = &DD27[dP0M * numberOfLBnodes]; + D27.f[dP0M] = &DD27[dM0P * numberOfLBnodes]; + D27.f[d0MM] = &DD27[d0PP * numberOfLBnodes]; + D27.f[d0PP] = &DD27[d0MM * numberOfLBnodes]; + D27.f[d0MP] = &DD27[d0PM * numberOfLBnodes]; + D27.f[d0PM] = &DD27[d0MP * numberOfLBnodes]; + D27.f[d000] = &DD27[d000 * numberOfLBnodes]; + D27.f[dPPP] = &DD27[dMMM * numberOfLBnodes]; + D27.f[dMMP] = &DD27[dPPM * numberOfLBnodes]; + D27.f[dPMP] = &DD27[dMPM * numberOfLBnodes]; + D27.f[dMPP] = &DD27[dPMM * numberOfLBnodes]; + D27.f[dPPM] = &DD27[dMMP * numberOfLBnodes]; + D27.f[dMMM] = &DD27[dPPP * numberOfLBnodes]; + D27.f[dPMM] = &DD27[dMPP * numberOfLBnodes]; + D27.f[dMPM] = &DD27[dPMP * numberOfLBnodes]; + } + //////////////////////////////////////////////////////////////////////////////// + const unsigned x = threadIdx.x; // Globaler x-Index + const unsigned y = blockIdx.x; // Globaler y-Index + const unsigned z = blockIdx.y; // Globaler z-Index + + const unsigned nx = blockDim.x; + const unsigned ny = gridDim.x; + + const unsigned k = nx*(ny*z + y) + x; + ////////////////////////////////////////////////////////////////////////// + + if(k<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[dP00 * numberOfBCnodes]; + q_dirW = &QQ[dM00 * numberOfBCnodes]; + q_dirN = &QQ[d0P0 * numberOfBCnodes]; + q_dirS = &QQ[d0M0 * numberOfBCnodes]; + q_dirT = &QQ[d00P * numberOfBCnodes]; + q_dirB = &QQ[d00M * numberOfBCnodes]; + q_dirNE = &QQ[dPP0 * numberOfBCnodes]; + q_dirSW = &QQ[dMM0 * numberOfBCnodes]; + q_dirSE = &QQ[dPM0 * numberOfBCnodes]; + q_dirNW = &QQ[dMP0 * numberOfBCnodes]; + q_dirTE = &QQ[dP0P * numberOfBCnodes]; + q_dirBW = &QQ[dM0M * numberOfBCnodes]; + q_dirBE = &QQ[dP0M * numberOfBCnodes]; + q_dirTW = &QQ[dM0P * numberOfBCnodes]; + q_dirTN = &QQ[d0PP * numberOfBCnodes]; + q_dirBS = &QQ[d0MM * numberOfBCnodes]; + q_dirBN = &QQ[d0PM * numberOfBCnodes]; + q_dirTS = &QQ[d0MP * numberOfBCnodes]; + q_dirTNE = &QQ[dPPP * numberOfBCnodes]; + q_dirTSW = &QQ[dMMP * numberOfBCnodes]; + q_dirTSE = &QQ[dPMP * numberOfBCnodes]; + q_dirTNW = &QQ[dMPP * numberOfBCnodes]; + q_dirBNE = &QQ[dPPM * numberOfBCnodes]; + q_dirBSW = &QQ[dMMM * numberOfBCnodes]; + q_dirBSE = &QQ[dPMM * numberOfBCnodes]; + q_dirBNW = &QQ[dMPM * 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]; + 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 f_W = (D.f[dP00])[ke ]; + real f_E = (D.f[dM00])[kw ]; + real f_S = (D.f[d0P0])[kn ]; + real f_N = (D.f[d0M0])[ks ]; + real f_B = (D.f[d00P])[kt ]; + real f_T = (D.f[d00M])[kb ]; + real f_SW = (D.f[dPP0])[kne ]; + real f_NE = (D.f[dMM0])[ksw ]; + real f_NW = (D.f[dPM0])[kse ]; + real f_SE = (D.f[dMP0])[knw ]; + real f_BW = (D.f[dP0P])[kte ]; + real f_TE = (D.f[dM0M])[kbw ]; + real f_TW = (D.f[dP0M])[kbe ]; + real f_BE = (D.f[dM0P])[ktw ]; + real f_BS = (D.f[d0PP])[ktn ]; + real f_TN = (D.f[d0MM])[kbs ]; + real f_TS = (D.f[d0PM])[kbn ]; + real f_BN = (D.f[d0MP])[kts ]; + real f_ZERO = (D.f[d000])[kzero]; + real f_BSW = (D.f[dPPP])[ktne ]; + real f_BNE = (D.f[dMMP])[ktsw ]; + real f_BNW = (D.f[dPMP])[ktse ]; + real f_BSE = (D.f[dMPP])[ktnw ]; + real f_TSW = (D.f[dPPM])[kbne ]; + real f_TNE = (D.f[dMMM])[kbsw ]; + real f_TNW = (D.f[dPMM])[kbse ]; + real f_TSE = (D.f[dMPM])[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 + f_ZERO; + + //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); + + + //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); + + //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)+ f_ZERO; + 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)); + 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[dP00])[ke ]; + real f27_E = (D27.f[dM00])[kw ]; + real f27_S = (D27.f[d0P0])[kn ]; + real f27_N = (D27.f[d0M0])[ks ]; + real f27_B = (D27.f[d00P])[kt ]; + real f27_T = (D27.f[d00M])[kb ]; + real f27_SW = (D27.f[dPP0])[kne ]; + real f27_NE = (D27.f[dMM0])[ksw ]; + real f27_NW = (D27.f[dPM0])[kse ]; + real f27_SE = (D27.f[dMP0])[knw ]; + real f27_BW = (D27.f[dP0P])[kte ]; + real f27_TE = (D27.f[dM0M])[kbw ]; + real f27_TW = (D27.f[dP0M])[kbe ]; + real f27_BE = (D27.f[dM0P])[ktw ]; + real f27_BS = (D27.f[d0PP])[ktn ]; + real f27_TN = (D27.f[d0MM])[kbs ]; + real f27_TS = (D27.f[d0PM])[kbn ]; + real f27_BN = (D27.f[d0MP])[kts ]; + real f27_ZERO = (D27.f[d000])[kzero]; + real f27_BSW = (D27.f[dPPP])[ktne ]; + real f27_BNE = (D27.f[dMMP])[ktsw ]; + real f27_BNW = (D27.f[dPMP])[ktse ]; + real f27_BSE = (D27.f[dMPP])[ktnw ]; + real f27_TSW = (D27.f[dPPM])[kbne ]; + real f27_TNE = (D27.f[dMMM])[kbsw ]; + real f27_TNW = (D27.f[dPMM])[kbse ]; + real f27_TSE = (D27.f[dMPM])[kbnw ]; + //////////////////////////////////////////////////////////////////////////////// + real cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3); + //////////////////////////////////////////////////////////////////////////////// + real ConcD = f27_TSE + f27_TNW + f27_TNE + f27_TSW + f27_BSE + f27_BNW + f27_BNE + f27_BSW + + f27_BN + f27_TS + f27_TN + f27_BS + f27_BE + f27_TW + f27_TE + f27_BW + f27_SE + f27_NW + f27_NE + f27_SW + + f27_T + f27_B + f27_N + f27_S + f27_E + f27_W + f27_ZERO; + + ////real feq27_ZERO = c8over27* ConcD*(one-cu_sq); + //real feq27_E = c2over27* (ConcD+(one+ConcD)*(three*( vx1 )+c9over2*( vx1 )*( vx1 )-cu_sq)); + //real feq27_W = c2over27* (ConcD+(one+ConcD)*(three*(-vx1 )+c9over2*(-vx1 )*(-vx1 )-cu_sq)); + //real feq27_N = c2over27* (ConcD+(one+ConcD)*(three*( vx2 )+c9over2*( vx2 )*( vx2 )-cu_sq)); + //real feq27_S = c2over27* (ConcD+(one+ConcD)*(three*( -vx2 )+c9over2*( -vx2 )*( -vx2 )-cu_sq)); + //real feq27_T = c2over27* (ConcD+(one+ConcD)*(three*( vx3)+c9over2*( vx3)*( vx3)-cu_sq)); + //real feq27_B = c2over27* (ConcD+(one+ConcD)*(three*( -vx3)+c9over2*( -vx3)*( -vx3)-cu_sq)); + //real feq27_NE = c1over54* (ConcD+(one+ConcD)*(three*( vx1+vx2 )+c9over2*( vx1+vx2 )*( vx1+vx2 )-cu_sq)); + //real feq27_SW = c1over54* (ConcD+(one+ConcD)*(three*(-vx1-vx2 )+c9over2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq)); + //real feq27_SE = c1over54* (ConcD+(one+ConcD)*(three*( vx1-vx2 )+c9over2*( vx1-vx2 )*( vx1-vx2 )-cu_sq)); + //real feq27_NW = c1over54* (ConcD+(one+ConcD)*(three*(-vx1+vx2 )+c9over2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq)); + //real feq27_TE = c1over54* (ConcD+(one+ConcD)*(three*( vx1 +vx3)+c9over2*( vx1 +vx3)*( vx1 +vx3)-cu_sq)); + //real feq27_BW = c1over54* (ConcD+(one+ConcD)*(three*(-vx1 -vx3)+c9over2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq)); + //real feq27_BE = c1over54* (ConcD+(one+ConcD)*(three*( vx1 -vx3)+c9over2*( vx1 -vx3)*( vx1 -vx3)-cu_sq)); + //real feq27_TW = c1over54* (ConcD+(one+ConcD)*(three*(-vx1 +vx3)+c9over2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq)); + //real feq27_TN = c1over54* (ConcD+(one+ConcD)*(three*( vx2+vx3)+c9over2*( vx2+vx3)*( vx2+vx3)-cu_sq)); + //real feq27_BS = c1over54* (ConcD+(one+ConcD)*(three*( -vx2-vx3)+c9over2*( -vx2-vx3)*( -vx2-vx3)-cu_sq)); + //real feq27_BN = c1over54* (ConcD+(one+ConcD)*(three*( vx2-vx3)+c9over2*( vx2-vx3)*( vx2-vx3)-cu_sq)); + //real feq27_TS = c1over54* (ConcD+(one+ConcD)*(three*( -vx2+vx3)+c9over2*( -vx2+vx3)*( -vx2+vx3)-cu_sq)); + //real feq27_TNE = c1over216*(ConcD+(one+ConcD)*(three*( vx1+vx2+vx3)+c9over2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq)); + //real feq27_BSW = c1over216*(ConcD+(one+ConcD)*(three*(-vx1-vx2-vx3)+c9over2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq)); + //real feq27_BNE = c1over216*(ConcD+(one+ConcD)*(three*( vx1+vx2-vx3)+c9over2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq)); + //real feq27_TSW = c1over216*(ConcD+(one+ConcD)*(three*(-vx1-vx2+vx3)+c9over2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq)); + //real feq27_TSE = c1over216*(ConcD+(one+ConcD)*(three*( vx1-vx2+vx3)+c9over2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq)); + //real feq27_BNW = c1over216*(ConcD+(one+ConcD)*(three*(-vx1+vx2-vx3)+c9over2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq)); + //real feq27_BSE = c1over216*(ConcD+(one+ConcD)*(three*( vx1-vx2-vx3)+c9over2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq)); + //real feq27_TNW = c1over216*(ConcD+(one+ConcD)*(three*(-vx1+vx2+vx3)+c9over2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq)); + // + real feq27_E = c2o27* ConcD*(c1o1+c3o1*( vx1 )+c9o2*( vx1 )*( vx1 )-cu_sq); + real feq27_W = c2o27* ConcD*(c1o1+c3o1*(-vx1 )+c9o2*(-vx1 )*(-vx1 )-cu_sq); + real feq27_N = c2o27* ConcD*(c1o1+c3o1*( vx2 )+c9o2*( vx2 )*( vx2 )-cu_sq); + real feq27_S = c2o27* ConcD*(c1o1+c3o1*( -vx2 )+c9o2*( -vx2 )*( -vx2 )-cu_sq); + real feq27_T = c2o27* ConcD*(c1o1+c3o1*( vx3)+c9o2*( vx3)*( vx3)-cu_sq); + real feq27_B = c2o27* ConcD*(c1o1+c3o1*( -vx3)+c9o2*( -vx3)*( -vx3)-cu_sq); + real feq27_NE = c1o54* ConcD*(c1o1+c3o1*( vx1+vx2 )+c9o2*( vx1+vx2 )*( vx1+vx2 )-cu_sq); + real feq27_SW = c1o54* ConcD*(c1o1+c3o1*(-vx1-vx2 )+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq); + real feq27_SE = c1o54* ConcD*(c1o1+c3o1*( vx1-vx2 )+c9o2*( vx1-vx2 )*( vx1-vx2 )-cu_sq); + real feq27_NW = c1o54* ConcD*(c1o1+c3o1*(-vx1+vx2 )+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq); + real feq27_TE = c1o54* ConcD*(c1o1+c3o1*( vx1 +vx3)+c9o2*( vx1 +vx3)*( vx1 +vx3)-cu_sq); + real feq27_BW = c1o54* ConcD*(c1o1+c3o1*(-vx1 -vx3)+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq); + real feq27_BE = c1o54* ConcD*(c1o1+c3o1*( vx1 -vx3)+c9o2*( vx1 -vx3)*( vx1 -vx3)-cu_sq); + real feq27_TW = c1o54* ConcD*(c1o1+c3o1*(-vx1 +vx3)+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq); + real feq27_TN = c1o54* ConcD*(c1o1+c3o1*( vx2+vx3)+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq); + real feq27_BS = c1o54* ConcD*(c1o1+c3o1*( -vx2-vx3)+c9o2*( -vx2-vx3)*( -vx2-vx3)-cu_sq); + real feq27_BN = c1o54* ConcD*(c1o1+c3o1*( vx2-vx3)+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq); + real feq27_TS = c1o54* ConcD*(c1o1+c3o1*( -vx2+vx3)+c9o2*( -vx2+vx3)*( -vx2+vx3)-cu_sq); + real feq27_TNE = c1o216*ConcD*(c1o1+c3o1*( vx1+vx2+vx3)+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq); + real feq27_BSW = c1o216*ConcD*(c1o1+c3o1*(-vx1-vx2-vx3)+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq); + real feq27_BNE = c1o216*ConcD*(c1o1+c3o1*( vx1+vx2-vx3)+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq); + real feq27_TSW = c1o216*ConcD*(c1o1+c3o1*(-vx1-vx2+vx3)+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq); + real feq27_TSE = c1o216*ConcD*(c1o1+c3o1*( vx1-vx2+vx3)+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq); + real feq27_BNW = c1o216*ConcD*(c1o1+c3o1*(-vx1+vx2-vx3)+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq); + real feq27_BSE = c1o216*ConcD*(c1o1+c3o1*( vx1-vx2-vx3)+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq); + real feq27_TNW = c1o216*ConcD*(c1o1+c3o1*(-vx1+vx2+vx3)+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq); + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //real TempD = temp[k]; + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // velocity inflow + //vx1 = zero; + //vx2 = zero; + //vx3 = velo[k]; + + //real feqW27_ZERO = c8over27* TempD*(one-cu_sq); + real feqW27_E = feq27_E ;// c2over27* TempD*(one+three*( vx1 )+c9over2*( vx1 )*( vx1 )-cu_sq); + real feqW27_W = feq27_W ;// c2over27* TempD*(one+three*(-vx1 )+c9over2*(-vx1 )*(-vx1 )-cu_sq); + real feqW27_N = feq27_N ;// c2over27* TempD*(one+three*( vx2 )+c9over2*( vx2 )*( vx2 )-cu_sq); + real feqW27_S = feq27_S ;// c2over27* TempD*(one+three*( -vx2 )+c9over2*( -vx2 )*( -vx2 )-cu_sq); + real feqW27_T = feq27_T ;// c2over27* TempD*(one+three*( vx3)+c9over2*( vx3)*( vx3)-cu_sq); + real feqW27_B = feq27_B ;// c2over27* TempD*(one+three*( -vx3)+c9over2*( -vx3)*( -vx3)-cu_sq); + real feqW27_NE = feq27_NE ;// c1over54* TempD*(one+three*( vx1+vx2 )+c9over2*( vx1+vx2 )*( vx1+vx2 )-cu_sq); + real feqW27_SW = feq27_SW ;// c1over54* TempD*(one+three*(-vx1-vx2 )+c9over2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq); + real feqW27_SE = feq27_SE ;// c1over54* TempD*(one+three*( vx1-vx2 )+c9over2*( vx1-vx2 )*( vx1-vx2 )-cu_sq); + real feqW27_NW = feq27_NW ;// c1over54* TempD*(one+three*(-vx1+vx2 )+c9over2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq); + real feqW27_TE = feq27_TE ;// c1over54* TempD*(one+three*( vx1 +vx3)+c9over2*( vx1 +vx3)*( vx1 +vx3)-cu_sq); + real feqW27_BW = feq27_BW ;// c1over54* TempD*(one+three*(-vx1 -vx3)+c9over2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq); + real feqW27_BE = feq27_BE ;// c1over54* TempD*(one+three*( vx1 -vx3)+c9over2*( vx1 -vx3)*( vx1 -vx3)-cu_sq); + real feqW27_TW = feq27_TW ;// c1over54* TempD*(one+three*(-vx1 +vx3)+c9over2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq); + real feqW27_TN = feq27_TN ;// c1over54* TempD*(one+three*( vx2+vx3)+c9over2*( vx2+vx3)*( vx2+vx3)-cu_sq); + real feqW27_BS = feq27_BS ;// c1over54* TempD*(one+three*( -vx2-vx3)+c9over2*( -vx2-vx3)*( -vx2-vx3)-cu_sq); + real feqW27_BN = feq27_BN ;// c1over54* TempD*(one+three*( vx2-vx3)+c9over2*( vx2-vx3)*( vx2-vx3)-cu_sq); + real feqW27_TS = feq27_TS ;// c1over54* TempD*(one+three*( -vx2+vx3)+c9over2*( -vx2+vx3)*( -vx2+vx3)-cu_sq); + real feqW27_TNE = feq27_TNE;// c1over216*TempD*(one+three*( vx1+vx2+vx3)+c9over2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq); + real feqW27_BSW = feq27_BSW;// c1over216*TempD*(one+three*(-vx1-vx2-vx3)+c9over2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq); + real feqW27_BNE = feq27_BNE;// c1over216*TempD*(one+three*( vx1+vx2-vx3)+c9over2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq); + real feqW27_TSW = feq27_TSW;// c1over216*TempD*(one+three*(-vx1-vx2+vx3)+c9over2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq); + real feqW27_TSE = feq27_TSE;// c1over216*TempD*(one+three*( vx1-vx2+vx3)+c9over2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq); + real feqW27_BNW = feq27_BNW;// c1over216*TempD*(one+three*(-vx1+vx2-vx3)+c9over2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq); + real feqW27_BSE = feq27_BSE;// c1over216*TempD*(one+three*( vx1-vx2-vx3)+c9over2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq); + real feqW27_TNW = feq27_TNW;// c1over216*TempD*(one+three*(-vx1+vx2+vx3)+c9over2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq); + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + real omegaD = c3o1 - sqrt(c3o1); + //real Lam = -(c1o2-one/omegaD); + //real nue_d = Lam/three; + //real ae = zero; + //real ae = diffusivity/nue_d - one; + + + ////////////////////////////////////////////////////////////////////////// + if (isEvenTimestep==false) + { + D27.f[dP00] = &DD27[dP00 * numberOfLBnodes]; + D27.f[dM00] = &DD27[dM00 * numberOfLBnodes]; + D27.f[d0P0] = &DD27[d0P0 * numberOfLBnodes]; + D27.f[d0M0] = &DD27[d0M0 * numberOfLBnodes]; + D27.f[d00P] = &DD27[d00P * numberOfLBnodes]; + D27.f[d00M] = &DD27[d00M * numberOfLBnodes]; + D27.f[dPP0] = &DD27[dPP0 * numberOfLBnodes]; + D27.f[dMM0] = &DD27[dMM0 * numberOfLBnodes]; + D27.f[dPM0] = &DD27[dPM0 * numberOfLBnodes]; + D27.f[dMP0] = &DD27[dMP0 * numberOfLBnodes]; + D27.f[dP0P] = &DD27[dP0P * numberOfLBnodes]; + D27.f[dM0M] = &DD27[dM0M * numberOfLBnodes]; + D27.f[dP0M] = &DD27[dP0M * numberOfLBnodes]; + D27.f[dM0P] = &DD27[dM0P * numberOfLBnodes]; + D27.f[d0PP] = &DD27[d0PP * numberOfLBnodes]; + D27.f[d0MM] = &DD27[d0MM * numberOfLBnodes]; + D27.f[d0PM] = &DD27[d0PM * numberOfLBnodes]; + D27.f[d0MP] = &DD27[d0MP * numberOfLBnodes]; + D27.f[d000] = &DD27[d000 * numberOfLBnodes]; + D27.f[dPPP] = &DD27[dPPP * numberOfLBnodes]; + D27.f[dMMP] = &DD27[dMMP * numberOfLBnodes]; + D27.f[dPMP] = &DD27[dPMP * numberOfLBnodes]; + D27.f[dMPP] = &DD27[dMPP * numberOfLBnodes]; + D27.f[dPPM] = &DD27[dPPM * numberOfLBnodes]; + D27.f[dMMM] = &DD27[dMMM * numberOfLBnodes]; + D27.f[dPMM] = &DD27[dPMM * numberOfLBnodes]; + D27.f[dMPM] = &DD27[dMPM * numberOfLBnodes]; + } + else + { + D27.f[dM00] = &DD27[dP00 * numberOfLBnodes]; + D27.f[dP00] = &DD27[dM00 * numberOfLBnodes]; + D27.f[d0M0] = &DD27[d0P0 * numberOfLBnodes]; + D27.f[d0P0] = &DD27[d0M0 * numberOfLBnodes]; + D27.f[d00M] = &DD27[d00P * numberOfLBnodes]; + D27.f[d00P] = &DD27[d00M * numberOfLBnodes]; + D27.f[dMM0] = &DD27[dPP0 * numberOfLBnodes]; + D27.f[dPP0] = &DD27[dMM0 * numberOfLBnodes]; + D27.f[dMP0] = &DD27[dPM0 * numberOfLBnodes]; + D27.f[dPM0] = &DD27[dMP0 * numberOfLBnodes]; + D27.f[dM0M] = &DD27[dP0P * numberOfLBnodes]; + D27.f[dP0P] = &DD27[dM0M * numberOfLBnodes]; + D27.f[dM0P] = &DD27[dP0M * numberOfLBnodes]; + D27.f[dP0M] = &DD27[dM0P * numberOfLBnodes]; + D27.f[d0MM] = &DD27[d0PP * numberOfLBnodes]; + D27.f[d0PP] = &DD27[d0MM * numberOfLBnodes]; + D27.f[d0MP] = &DD27[d0PM * numberOfLBnodes]; + D27.f[d0PM] = &DD27[d0MP * numberOfLBnodes]; + D27.f[d000] = &DD27[d000 * numberOfLBnodes]; + D27.f[dPPP] = &DD27[dMMM * numberOfLBnodes]; + D27.f[dMMP] = &DD27[dPPM * numberOfLBnodes]; + D27.f[dPMP] = &DD27[dMPM * numberOfLBnodes]; + D27.f[dMPP] = &DD27[dPMM * numberOfLBnodes]; + D27.f[dPPM] = &DD27[dMMP * numberOfLBnodes]; + D27.f[dMMM] = &DD27[dPPP * numberOfLBnodes]; + D27.f[dPMM] = &DD27[dMPP * numberOfLBnodes]; + D27.f[dMPM] = &DD27[dPMP * numberOfLBnodes]; + } + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //Test + //(D.f[d000])[k]=c1o10; + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + q = q_dirE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dM00])[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[dP00])[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[d0M0])[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[d0P0])[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[d00M])[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[d00P])[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[dMM0])[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[dPP0])[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[dMP0])[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[dPM0])[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[dM0M])[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[dP0P])[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[dM0P])[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[dP0M])[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[d0MM])[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[d0PP])[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[d0MP])[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[d0PM])[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[dMMM])[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[dPPP])[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[dMMP])[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[dPPM])[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[dMPM])[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[dPMP])[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[dMPP])[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[dPMM])[kbse]=(c2o1*feqW27_BSE-(f27_TNW*(q*omegaD-c1o1)-omegaD*feq27_TNW*(q-c1o1))/(omegaD-c1o1)+f27_BSE*q)/(q+c1o1); + } +} +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +////////////////////////////////////////////////////////////////////////////// +__global__ void QADPressNEQNeighbor27( + real* DD, + real* DD27, + int* k_Q, + int* k_N, + int numberOfBCnodes, + unsigned int* neighborX, + unsigned int* neighborY, + unsigned int* neighborZ, + unsigned long long numberOfLBnodes, + bool isEvenTimestep + ) +{ + Distributions27 D; + if (isEvenTimestep == true) + { + D.f[dP00] = &DD[dP00 * numberOfLBnodes]; + D.f[dM00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00P] = &DD[d00P * numberOfLBnodes]; + D.f[d00M] = &DD[d00M * numberOfLBnodes]; + D.f[dPP0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dMM0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dP0P] = &DD[dP0P * numberOfLBnodes]; + D.f[dM0M] = &DD[dM0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dP0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dM0P * numberOfLBnodes]; + D.f[d0PP] = &DD[d0PP * numberOfLBnodes]; + D.f[d0MM] = &DD[d0MM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0PM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dPPP * numberOfLBnodes]; + D.f[dMMP] = &DD[dMMP * numberOfLBnodes]; + D.f[dPMP] = &DD[dPMP * numberOfLBnodes]; + D.f[dMPP] = &DD[dMPP * numberOfLBnodes]; + D.f[dPPM] = &DD[dPPM * numberOfLBnodes]; + D.f[dMMM] = &DD[dMMM * numberOfLBnodes]; + D.f[dPMM] = &DD[dPMM * numberOfLBnodes]; + D.f[dMPM] = &DD[dMPM * numberOfLBnodes]; + } + else + { + D.f[dM00] = &DD[dP00 * numberOfLBnodes]; + D.f[dP00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00M] = &DD[d00P * numberOfLBnodes]; + D.f[d00P] = &DD[d00M * numberOfLBnodes]; + D.f[dMM0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dPP0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dM0M] = &DD[dP0P * numberOfLBnodes]; + D.f[dP0P] = &DD[dM0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dP0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dM0P * numberOfLBnodes]; + D.f[d0MM] = &DD[d0PP * numberOfLBnodes]; + D.f[d0PP] = &DD[d0MM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0PM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dMMM * numberOfLBnodes]; + D.f[dMMP] = &DD[dPPM * numberOfLBnodes]; + D.f[dPMP] = &DD[dMPM * numberOfLBnodes]; + D.f[dMPP] = &DD[dPMM * numberOfLBnodes]; + D.f[dPPM] = &DD[dMMP * numberOfLBnodes]; + D.f[dMMM] = &DD[dPPP * numberOfLBnodes]; + D.f[dPMM] = &DD[dMPP * numberOfLBnodes]; + D.f[dMPM] = &DD[dPMP * numberOfLBnodes]; + } + + Distributions27 D27; + if (isEvenTimestep == true) + { + D27.f[dP00] = &DD27[dP00 * numberOfLBnodes]; + D27.f[dM00] = &DD27[dM00 * numberOfLBnodes]; + D27.f[d0P0] = &DD27[d0P0 * numberOfLBnodes]; + D27.f[d0M0] = &DD27[d0M0 * numberOfLBnodes]; + D27.f[d00P] = &DD27[d00P * numberOfLBnodes]; + D27.f[d00M] = &DD27[d00M * numberOfLBnodes]; + D27.f[dPP0] = &DD27[dPP0 * numberOfLBnodes]; + D27.f[dMM0] = &DD27[dMM0 * numberOfLBnodes]; + D27.f[dPM0] = &DD27[dPM0 * numberOfLBnodes]; + D27.f[dMP0] = &DD27[dMP0 * numberOfLBnodes]; + D27.f[dP0P] = &DD27[dP0P * numberOfLBnodes]; + D27.f[dM0M] = &DD27[dM0M * numberOfLBnodes]; + D27.f[dP0M] = &DD27[dP0M * numberOfLBnodes]; + D27.f[dM0P] = &DD27[dM0P * numberOfLBnodes]; + D27.f[d0PP] = &DD27[d0PP * numberOfLBnodes]; + D27.f[d0MM] = &DD27[d0MM * numberOfLBnodes]; + D27.f[d0PM] = &DD27[d0PM * numberOfLBnodes]; + D27.f[d0MP] = &DD27[d0MP * numberOfLBnodes]; + D27.f[d000] = &DD27[d000 * numberOfLBnodes]; + D27.f[dPPP] = &DD27[dPPP * numberOfLBnodes]; + D27.f[dMMP] = &DD27[dMMP * numberOfLBnodes]; + D27.f[dPMP] = &DD27[dPMP * numberOfLBnodes]; + D27.f[dMPP] = &DD27[dMPP * numberOfLBnodes]; + D27.f[dPPM] = &DD27[dPPM * numberOfLBnodes]; + D27.f[dMMM] = &DD27[dMMM * numberOfLBnodes]; + D27.f[dPMM] = &DD27[dPMM * numberOfLBnodes]; + D27.f[dMPM] = &DD27[dMPM * numberOfLBnodes]; + } + else + { + D27.f[dM00] = &DD27[dP00 * numberOfLBnodes]; + D27.f[dP00] = &DD27[dM00 * numberOfLBnodes]; + D27.f[d0M0] = &DD27[d0P0 * numberOfLBnodes]; + D27.f[d0P0] = &DD27[d0M0 * numberOfLBnodes]; + D27.f[d00M] = &DD27[d00P * numberOfLBnodes]; + D27.f[d00P] = &DD27[d00M * numberOfLBnodes]; + D27.f[dMM0] = &DD27[dPP0 * numberOfLBnodes]; + D27.f[dPP0] = &DD27[dMM0 * numberOfLBnodes]; + D27.f[dMP0] = &DD27[dPM0 * numberOfLBnodes]; + D27.f[dPM0] = &DD27[dMP0 * numberOfLBnodes]; + D27.f[dM0M] = &DD27[dP0P * numberOfLBnodes]; + D27.f[dP0P] = &DD27[dM0M * numberOfLBnodes]; + D27.f[dM0P] = &DD27[dP0M * numberOfLBnodes]; + D27.f[dP0M] = &DD27[dM0P * numberOfLBnodes]; + D27.f[d0MM] = &DD27[d0PP * numberOfLBnodes]; + D27.f[d0PP] = &DD27[d0MM * numberOfLBnodes]; + D27.f[d0MP] = &DD27[d0PM * numberOfLBnodes]; + D27.f[d0PM] = &DD27[d0MP * numberOfLBnodes]; + D27.f[d000] = &DD27[d000 * numberOfLBnodes]; + D27.f[dPPP] = &DD27[dMMM * numberOfLBnodes]; + D27.f[dMMP] = &DD27[dPPM * numberOfLBnodes]; + D27.f[dPMP] = &DD27[dMPM * numberOfLBnodes]; + D27.f[dMPP] = &DD27[dPMM * numberOfLBnodes]; + D27.f[dPPM] = &DD27[dMMP * numberOfLBnodes]; + D27.f[dMMM] = &DD27[dPPP * numberOfLBnodes]; + D27.f[dPMM] = &DD27[dMPP * numberOfLBnodes]; + D27.f[dMPM] = &DD27[dPMP * numberOfLBnodes]; + } + //////////////////////////////////////////////////////////////////////////////// + const unsigned x = threadIdx.x; // Globaler x-Index + const unsigned y = blockIdx.x; // Globaler y-Index + const unsigned z = blockIdx.y; // Globaler z-Index + + const unsigned nx = blockDim.x; + const unsigned ny = gridDim.x; + + const unsigned k = nx*(ny*z + y) + x; + ////////////////////////////////////////////////////////////////////////// + + if (k < numberOfBCnodes) + { + //////////////////////////////////////////////////////////////////////////////// + //Fluid - BC Nodes + //////////////////////////////////////////////////////////////////////////////// + //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]; + //////////////////////////////////////////////////////////////////////////////// + //distributions + real f_W = (D.f[dP00])[ke]; + real f_E = (D.f[dM00])[kw]; + real f_S = (D.f[d0P0])[kn]; + real f_N = (D.f[d0M0])[ks]; + real f_B = (D.f[d00P])[kt]; + real f_T = (D.f[d00M])[kb]; + real f_SW = (D.f[dPP0])[kne]; + real f_NE = (D.f[dMM0])[ksw]; + real f_NW = (D.f[dPM0])[kse]; + real f_SE = (D.f[dMP0])[knw]; + real f_BW = (D.f[dP0P])[kte]; + real f_TE = (D.f[dM0M])[kbw]; + real f_TW = (D.f[dP0M])[kbe]; + real f_BE = (D.f[dM0P])[ktw]; + real f_BS = (D.f[d0PP])[ktn]; + real f_TN = (D.f[d0MM])[kbs]; + real f_TS = (D.f[d0PM])[kbn]; + real f_BN = (D.f[d0MP])[kts]; + real f_ZERO = (D.f[d000])[kzero]; + real f_BSW = (D.f[dPPP])[ktne]; + real f_BNE = (D.f[dMMP])[ktsw]; + real f_BNW = (D.f[dPMP])[ktse]; + real f_BSE = (D.f[dMPP])[ktnw]; + real f_TSW = (D.f[dPPM])[kbne]; + real f_TNE = (D.f[dMMM])[kbsw]; + real f_TNW = (D.f[dPMM])[kbse]; + real f_TSE = (D.f[dMPM])[kbnw]; + //////////////////////////////////////////////////////////////////////////////// + //macroscopic values + 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 ) + f_ZERO; + 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)); + real 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)); + real 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)); + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //AD - BC Nodes + //////////////////////////////////////////////////////////////////////////////// + //distributions + real f27_W = (D27.f[dP00])[ke]; + real f27_E = (D27.f[dM00])[kw]; + real f27_S = (D27.f[d0P0])[kn]; + real f27_N = (D27.f[d0M0])[ks]; + real f27_B = (D27.f[d00P])[kt]; + real f27_T = (D27.f[d00M])[kb]; + real f27_SW = (D27.f[dPP0])[kne]; + real f27_NE = (D27.f[dMM0])[ksw]; + real f27_NW = (D27.f[dPM0])[kse]; + real f27_SE = (D27.f[dMP0])[knw]; + real f27_BW = (D27.f[dP0P])[kte]; + real f27_TE = (D27.f[dM0M])[kbw]; + real f27_TW = (D27.f[dP0M])[kbe]; + real f27_BE = (D27.f[dM0P])[ktw]; + real f27_BS = (D27.f[d0PP])[ktn]; + real f27_TN = (D27.f[d0MM])[kbs]; + real f27_TS = (D27.f[d0PM])[kbn]; + real f27_BN = (D27.f[d0MP])[kts]; + real f27_ZERO = (D27.f[d000])[kzero]; + real f27_BSW = (D27.f[dPPP])[ktne]; + real f27_BNE = (D27.f[dMMP])[ktsw]; + real f27_BNW = (D27.f[dPMP])[ktse]; + real f27_BSE = (D27.f[dMPP])[ktnw]; + real f27_TSW = (D27.f[dPPM])[kbne]; + real f27_TNE = (D27.f[dMMM])[kbsw]; + real f27_TNW = (D27.f[dPMM])[kbse]; + real f27_TSE = (D27.f[dMPM])[kbnw]; + //////////////////////////////////////////////////////////////////////////////// + real cusq = c3o2*(vx1*vx1 + vx2*vx2 + vx3*vx3); + //////////////////////////////////////////////////////////////////////////////// + //concentration + real ConcD = + (f27_TNE + f27_BSW) + (f27_TSW + f27_BNE) + (f27_TSE + f27_BNW) + (f27_TNW + f27_BSE) + + (f27_NE + f27_SW ) + (f27_NW + f27_SE ) + (f27_TE + f27_BW ) + (f27_BE + f27_TW ) + + (f27_TN + f27_BS ) + (f27_BN + f27_TS ) + + (f27_E + f27_W ) + (f27_N + f27_S ) + (f27_T + f27_B ) + f27_ZERO; + //////////////////////////////////////////////////////////////////////////////// + //calculate non-equilibrium + f27_ZERO -= c8o27* (ConcD-(ConcD+c1o1)*cusq); + f27_E -= c2o27* (ConcD+(ConcD+c1o1)*(c3o1*( vx1 )+c9o2*( vx1 )*( vx1 )-cusq)); + f27_W -= c2o27* (ConcD+(ConcD+c1o1)*(c3o1*(-vx1 )+c9o2*(-vx1 )*(-vx1 )-cusq)); + f27_N -= c2o27* (ConcD+(ConcD+c1o1)*(c3o1*( vx2 )+c9o2*( vx2 )*( vx2 )-cusq)); + f27_S -= c2o27* (ConcD+(ConcD+c1o1)*(c3o1*( -vx2 )+c9o2*( -vx2 )*( -vx2 )-cusq)); + f27_T -= c2o27* (ConcD+(ConcD+c1o1)*(c3o1*( vx3)+c9o2*( vx3)*( vx3)-cusq)); + f27_B -= c2o27* (ConcD+(ConcD+c1o1)*(c3o1*( -vx3)+c9o2*( -vx3)*( -vx3)-cusq)); + f27_NE -= c1o54* (ConcD+(ConcD+c1o1)*(c3o1*( vx1+vx2 )+c9o2*( vx1+vx2 )*( vx1+vx2 )-cusq)); + f27_SW -= c1o54* (ConcD+(ConcD+c1o1)*(c3o1*(-vx1-vx2 )+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cusq)); + f27_SE -= c1o54* (ConcD+(ConcD+c1o1)*(c3o1*( vx1-vx2 )+c9o2*( vx1-vx2 )*( vx1-vx2 )-cusq)); + f27_NW -= c1o54* (ConcD+(ConcD+c1o1)*(c3o1*(-vx1+vx2 )+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cusq)); + f27_TE -= c1o54* (ConcD+(ConcD+c1o1)*(c3o1*( vx1 +vx3)+c9o2*( vx1 +vx3)*( vx1 +vx3)-cusq)); + f27_BW -= c1o54* (ConcD+(ConcD+c1o1)*(c3o1*(-vx1 -vx3)+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cusq)); + f27_BE -= c1o54* (ConcD+(ConcD+c1o1)*(c3o1*( vx1 -vx3)+c9o2*( vx1 -vx3)*( vx1 -vx3)-cusq)); + f27_TW -= c1o54* (ConcD+(ConcD+c1o1)*(c3o1*(-vx1 +vx3)+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cusq)); + f27_TN -= c1o54* (ConcD+(ConcD+c1o1)*(c3o1*( vx2+vx3)+c9o2*( vx2+vx3)*( vx2+vx3)-cusq)); + f27_BS -= c1o54* (ConcD+(ConcD+c1o1)*(c3o1*( -vx2-vx3)+c9o2*( -vx2-vx3)*( -vx2-vx3)-cusq)); + f27_BN -= c1o54* (ConcD+(ConcD+c1o1)*(c3o1*( vx2-vx3)+c9o2*( vx2-vx3)*( vx2-vx3)-cusq)); + f27_TS -= c1o54* (ConcD+(ConcD+c1o1)*(c3o1*( -vx2+vx3)+c9o2*( -vx2+vx3)*( -vx2+vx3)-cusq)); + f27_TNE -= c1o216*(ConcD+(ConcD+c1o1)*(c3o1*( vx1+vx2+vx3)+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cusq)); + f27_BSW -= c1o216*(ConcD+(ConcD+c1o1)*(c3o1*(-vx1-vx2-vx3)+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cusq)); + f27_BNE -= c1o216*(ConcD+(ConcD+c1o1)*(c3o1*( vx1+vx2-vx3)+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cusq)); + f27_TSW -= c1o216*(ConcD+(ConcD+c1o1)*(c3o1*(-vx1-vx2+vx3)+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cusq)); + f27_TSE -= c1o216*(ConcD+(ConcD+c1o1)*(c3o1*( vx1-vx2+vx3)+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cusq)); + f27_BNW -= c1o216*(ConcD+(ConcD+c1o1)*(c3o1*(-vx1+vx2-vx3)+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cusq)); + f27_BSE -= c1o216*(ConcD+(ConcD+c1o1)*(c3o1*( vx1-vx2-vx3)+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cusq)); + f27_TNW -= c1o216*(ConcD+(ConcD+c1o1)*(c3o1*(-vx1+vx2+vx3)+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cusq)); + //////////////////////////////////////////////////////////////////////////////// + ConcD = c0o1; + //////////////////////////////////////////////////////////////////////////////// + //add BC equilibrium + f27_ZERO += c8o27* (ConcD-(ConcD+c1o1)*cusq); + f27_E += c2o27* (ConcD+(ConcD+c1o1)*(c3o1*( vx1 )+c9o2*( vx1 )*( vx1 )-cusq)); + f27_W += c2o27* (ConcD+(ConcD+c1o1)*(c3o1*(-vx1 )+c9o2*(-vx1 )*(-vx1 )-cusq)); + f27_N += c2o27* (ConcD+(ConcD+c1o1)*(c3o1*( vx2 )+c9o2*( vx2 )*( vx2 )-cusq)); + f27_S += c2o27* (ConcD+(ConcD+c1o1)*(c3o1*( -vx2 )+c9o2*( -vx2 )*( -vx2 )-cusq)); + f27_T += c2o27* (ConcD+(ConcD+c1o1)*(c3o1*( vx3)+c9o2*( vx3)*( vx3)-cusq)); + f27_B += c2o27* (ConcD+(ConcD+c1o1)*(c3o1*( -vx3)+c9o2*( -vx3)*( -vx3)-cusq)); + f27_NE += c1o54* (ConcD+(ConcD+c1o1)*(c3o1*( vx1+vx2 )+c9o2*( vx1+vx2 )*( vx1+vx2 )-cusq)); + f27_SW += c1o54* (ConcD+(ConcD+c1o1)*(c3o1*(-vx1-vx2 )+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cusq)); + f27_SE += c1o54* (ConcD+(ConcD+c1o1)*(c3o1*( vx1-vx2 )+c9o2*( vx1-vx2 )*( vx1-vx2 )-cusq)); + f27_NW += c1o54* (ConcD+(ConcD+c1o1)*(c3o1*(-vx1+vx2 )+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cusq)); + f27_TE += c1o54* (ConcD+(ConcD+c1o1)*(c3o1*( vx1 +vx3)+c9o2*( vx1 +vx3)*( vx1 +vx3)-cusq)); + f27_BW += c1o54* (ConcD+(ConcD+c1o1)*(c3o1*(-vx1 -vx3)+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cusq)); + f27_BE += c1o54* (ConcD+(ConcD+c1o1)*(c3o1*( vx1 -vx3)+c9o2*( vx1 -vx3)*( vx1 -vx3)-cusq)); + f27_TW += c1o54* (ConcD+(ConcD+c1o1)*(c3o1*(-vx1 +vx3)+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cusq)); + f27_TN += c1o54* (ConcD+(ConcD+c1o1)*(c3o1*( vx2+vx3)+c9o2*( vx2+vx3)*( vx2+vx3)-cusq)); + f27_BS += c1o54* (ConcD+(ConcD+c1o1)*(c3o1*( -vx2-vx3)+c9o2*( -vx2-vx3)*( -vx2-vx3)-cusq)); + f27_BN += c1o54* (ConcD+(ConcD+c1o1)*(c3o1*( vx2-vx3)+c9o2*( vx2-vx3)*( vx2-vx3)-cusq)); + f27_TS += c1o54* (ConcD+(ConcD+c1o1)*(c3o1*( -vx2+vx3)+c9o2*( -vx2+vx3)*( -vx2+vx3)-cusq)); + f27_TNE += c1o216*(ConcD+(ConcD+c1o1)*(c3o1*( vx1+vx2+vx3)+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cusq)); + f27_BSW += c1o216*(ConcD+(ConcD+c1o1)*(c3o1*(-vx1-vx2-vx3)+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cusq)); + f27_BNE += c1o216*(ConcD+(ConcD+c1o1)*(c3o1*( vx1+vx2-vx3)+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cusq)); + f27_TSW += c1o216*(ConcD+(ConcD+c1o1)*(c3o1*(-vx1-vx2+vx3)+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cusq)); + f27_TSE += c1o216*(ConcD+(ConcD+c1o1)*(c3o1*( vx1-vx2+vx3)+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cusq)); + f27_BNW += c1o216*(ConcD+(ConcD+c1o1)*(c3o1*(-vx1+vx2-vx3)+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cusq)); + f27_BSE += c1o216*(ConcD+(ConcD+c1o1)*(c3o1*( vx1-vx2-vx3)+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cusq)); + f27_TNW += c1o216*(ConcD+(ConcD+c1o1)*(c3o1*(-vx1+vx2+vx3)+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cusq)); + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + __syncthreads(); + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //Neighbors of BC Nodes + //////////////////////////////////////////////////////////////////////////////// + //index neighbor + unsigned int KNQK = k_N[k]; + unsigned int kNzero = KNQK; + unsigned int kNe = KNQK; + unsigned int kNw = neighborX[KNQK]; + unsigned int kNn = KNQK; + unsigned int kNs = neighborY[KNQK]; + unsigned int kNt = KNQK; + unsigned int kNb = neighborZ[KNQK]; + unsigned int kNsw = neighborY[kNw]; + unsigned int kNne = KNQK; + unsigned int kNse = kNs; + unsigned int kNnw = kNw; + unsigned int kNbw = neighborZ[kNw]; + unsigned int kNte = KNQK; + unsigned int kNbe = kNb; + unsigned int kNtw = kNw; + unsigned int kNbs = neighborZ[kNs]; + unsigned int kNtn = KNQK; + unsigned int kNbn = kNb; + unsigned int kNts = kNs; + unsigned int kNtse = kNs; + unsigned int kNbnw = kNbw; + unsigned int kNtnw = kNw; + unsigned int kNbse = kNbs; + unsigned int kNtsw = kNsw; + unsigned int kNbne = kNb; + unsigned int kNtne = KNQK; + unsigned int kNbsw = neighborZ[kNsw]; + //////////////////////////////////////////////////////////////////////////////// + //update distributions at neighbor nodes + (D27.f[dP00])[kNe ] = f27_W ; + (D27.f[dM00])[kNw ] = f27_E ; + (D27.f[d0P0])[kNn ] = f27_S ; + (D27.f[d0M0])[kNs ] = f27_N ; + (D27.f[d00P])[kNt ] = f27_B ; + (D27.f[d00M])[kNb ] = f27_T ; + (D27.f[dPP0])[kNne ] = f27_SW ; + (D27.f[dMM0])[kNsw ] = f27_NE ; + (D27.f[dPM0])[kNse ] = f27_NW ; + (D27.f[dMP0])[kNnw ] = f27_SE ; + (D27.f[dP0P])[kNte ] = f27_BW ; + (D27.f[dM0M])[kNbw ] = f27_TE ; + (D27.f[dP0M])[kNbe ] = f27_TW ; + (D27.f[dM0P])[kNtw ] = f27_BE ; + (D27.f[d0PP])[kNtn ] = f27_BS ; + (D27.f[d0MM])[kNbs ] = f27_TN ; + (D27.f[d0PM])[kNbn ] = f27_TS ; + (D27.f[d0MP])[kNts ] = f27_BN ; + (D27.f[d000])[kNzero] = f27_ZERO; + (D27.f[dPPP])[kNtne ] = f27_BSW ; + (D27.f[dMMP])[kNtsw ] = f27_BNE ; + (D27.f[dPMP])[kNtse ] = f27_BNW ; + (D27.f[dMPP])[kNtnw ] = f27_BSE ; + (D27.f[dPPM])[kNbne ] = f27_TSW ; + (D27.f[dMMM])[kNbsw ] = f27_TNE ; + (D27.f[dPMM])[kNbse ] = f27_TNW ; + (D27.f[dMPM])[kNbnw ] = f27_TSE ; + } +} +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +////////////////////////////////////////////////////////////////////////////// +__global__ void QADVel7( real* DD, + real* DD7, + real* temp, + real* velo, + real diffusivity, + int* k_Q, + real* QQ, + unsigned int numberOfBCnodes, + real om1, + unsigned int* neighborX, + unsigned int* neighborY, + unsigned int* neighborZ, + unsigned long long numberOfLBnodes, + bool isEvenTimestep) +{ + Distributions27 D; + if (isEvenTimestep==true) + { + D.f[dP00] = &DD[dP00 * numberOfLBnodes]; + D.f[dM00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00P] = &DD[d00P * numberOfLBnodes]; + D.f[d00M] = &DD[d00M * numberOfLBnodes]; + D.f[dPP0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dMM0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dP0P] = &DD[dP0P * numberOfLBnodes]; + D.f[dM0M] = &DD[dM0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dP0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dM0P * numberOfLBnodes]; + D.f[d0PP] = &DD[d0PP * numberOfLBnodes]; + D.f[d0MM] = &DD[d0MM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0PM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dPPP * numberOfLBnodes]; + D.f[dMMP] = &DD[dMMP * numberOfLBnodes]; + D.f[dPMP] = &DD[dPMP * numberOfLBnodes]; + D.f[dMPP] = &DD[dMPP * numberOfLBnodes]; + D.f[dPPM] = &DD[dPPM * numberOfLBnodes]; + D.f[dMMM] = &DD[dMMM * numberOfLBnodes]; + D.f[dPMM] = &DD[dPMM * numberOfLBnodes]; + D.f[dMPM] = &DD[dMPM * numberOfLBnodes]; + } + else + { + D.f[dM00] = &DD[dP00 * numberOfLBnodes]; + D.f[dP00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00M] = &DD[d00P * numberOfLBnodes]; + D.f[d00P] = &DD[d00M * numberOfLBnodes]; + D.f[dMM0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dPP0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dM0M] = &DD[dP0P * numberOfLBnodes]; + D.f[dP0P] = &DD[dM0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dP0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dM0P * numberOfLBnodes]; + D.f[d0MM] = &DD[d0PP * numberOfLBnodes]; + D.f[d0PP] = &DD[d0MM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0PM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dMMM * numberOfLBnodes]; + D.f[dMMP] = &DD[dPPM * numberOfLBnodes]; + D.f[dPMP] = &DD[dMPM * numberOfLBnodes]; + D.f[dMPP] = &DD[dPMM * numberOfLBnodes]; + D.f[dPPM] = &DD[dMMP * numberOfLBnodes]; + D.f[dMMM] = &DD[dPPP * numberOfLBnodes]; + D.f[dPMM] = &DD[dMPP * numberOfLBnodes]; + D.f[dMPM] = &DD[dPMP * numberOfLBnodes]; + } + + Distributions7 D7; + if (isEvenTimestep==true) + { + D7.f[0] = &DD7[0*numberOfLBnodes]; + D7.f[1] = &DD7[1*numberOfLBnodes]; + D7.f[2] = &DD7[2*numberOfLBnodes]; + D7.f[3] = &DD7[3*numberOfLBnodes]; + D7.f[4] = &DD7[4*numberOfLBnodes]; + D7.f[5] = &DD7[5*numberOfLBnodes]; + D7.f[6] = &DD7[6*numberOfLBnodes]; + } + else + { + D7.f[0] = &DD7[0*numberOfLBnodes]; + D7.f[2] = &DD7[1*numberOfLBnodes]; + D7.f[1] = &DD7[2*numberOfLBnodes]; + D7.f[4] = &DD7[3*numberOfLBnodes]; + D7.f[3] = &DD7[4*numberOfLBnodes]; + D7.f[6] = &DD7[5*numberOfLBnodes]; + D7.f[5] = &DD7[6*numberOfLBnodes]; + } + + + //////////////////////////////////////////////////////////////////////////////// + const unsigned x = threadIdx.x; // Globaler x-Index + const unsigned y = blockIdx.x; // Globaler y-Index + const unsigned z = blockIdx.y; // Globaler z-Index + + const unsigned nx = blockDim.x; + const unsigned ny = gridDim.x; + + const unsigned k = nx*(ny*z + y) + x; + ////////////////////////////////////////////////////////////////////////// + + if(k<numberOfBCnodes) + { + ////////////////////////////////////////////////////////////////////////////////// + real *q_dirE, *q_dirW, *q_dirN, *q_dirS, *q_dirT, *q_dirB;//, + + q_dirE = &QQ[dP00 * numberOfBCnodes]; + q_dirW = &QQ[dM00 * numberOfBCnodes]; + q_dirN = &QQ[d0P0 * numberOfBCnodes]; + q_dirS = &QQ[d0M0 * numberOfBCnodes]; + q_dirT = &QQ[d00P * numberOfBCnodes]; + q_dirB = &QQ[d00M * 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]; + 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 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[dP00])[ke ]; + f_E = (D.f[dM00])[kw ]; + f_S = (D.f[d0P0])[kn ]; + f_N = (D.f[d0M0])[ks ]; + f_B = (D.f[d00P])[kt ]; + f_T = (D.f[d00M])[kb ]; + f_SW = (D.f[dPP0])[kne ]; + f_NE = (D.f[dMM0])[ksw ]; + f_NW = (D.f[dPM0])[kse ]; + f_SE = (D.f[dMP0])[knw ]; + f_BW = (D.f[dP0P])[kte ]; + f_TE = (D.f[dM0M])[kbw ]; + f_TW = (D.f[dP0M])[kbe ]; + f_BE = (D.f[dM0P])[ktw ]; + f_BS = (D.f[d0PP])[ktn ]; + f_TN = (D.f[d0MM])[kbs ]; + f_TS = (D.f[d0PM])[kbn ]; + f_BN = (D.f[d0MP])[kts ]; + f_BSW = (D.f[dPPP])[ktne ]; + f_BNE = (D.f[dMMP])[ktsw ]; + f_BNW = (D.f[dPMP])[ktse ]; + f_BSE = (D.f[dMPP])[ktnw ]; + f_TSW = (D.f[dPPM])[kbne ]; + f_TNE = (D.f[dMMM])[kbsw ]; + f_TNW = (D.f[dPMM])[kbse ]; + f_TSE = (D.f[dMPM])[kbnw ]; + //////////////////////////////////////////////////////////////////////////////// + /*real drho*/; + real vx1_Inflow = c0o1; + real vx2_Inflow = c0o1; + real vx3_Inflow = velo[k]; + real ux_sq_Inflow = vx1_Inflow * vx1_Inflow; + real uy_sq_Inflow = vx2_Inflow * vx2_Inflow; + real uz_sq_Inflow = vx3_Inflow * vx3_Inflow; + + + ////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[d000])[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); + + //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); + + //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); + + 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[d000])[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)); + real 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)); + real 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 cu_sq =1.5f*(vx1*vx1+vx2*vx2+vx3*vx3); + real ux_sq = vx1 * vx1; + real uy_sq = vx2 * vx2; + real uz_sq = vx3 * vx3; + real omegaD = c3o1 - sqrt(c3o1); + real Lam = -(c1o2-c1o1/omegaD); + real nue_d = Lam/c3o1; + //real ae = zero; + real ae = diffusivity/nue_d - c1o1; + + real f7_ZERO,f7_E,f7_W,f7_N,f7_S,f7_T,f7_B; + real /*feq7_ZERO,*/feq7_E,feq7_W,feq7_N,feq7_S,feq7_T,feq7_B; + real /*feqW7_ZERO,*/feqW7_E,feqW7_W,feqW7_N,feqW7_S,feqW7_T,feqW7_B; + real TempD = temp[k]; + + + f7_ZERO = (D7.f[0])[kzero]; + f7_W = (D7.f[1])[ke ]; + f7_E = (D7.f[2])[kw ]; + f7_S = (D7.f[3])[kn ]; + f7_N = (D7.f[4])[ks ]; + f7_B = (D7.f[5])[kt ]; + f7_T = (D7.f[6])[kb ]; + + real ConcD = f7_ZERO + f7_E + f7_W + f7_N + f7_S + f7_T + f7_B; + + //feq7_ZERO = ConcD*(c1o3*(ae*(-three))-(ux_sq+uy_sq+uz_sq)); + feq7_E = ConcD*(c1o6*(ae+c1o1)+c1o2*(ux_sq)+vx1*c1o2); + feq7_W = ConcD*(c1o6*(ae+c1o1)+c1o2*(ux_sq)-vx1*c1o2); + feq7_N = ConcD*(c1o6*(ae+c1o1)+c1o2*(uy_sq)+vx2*c1o2); + feq7_S = ConcD*(c1o6*(ae+c1o1)+c1o2*(uy_sq)-vx2*c1o2); + feq7_T = ConcD*(c1o6*(ae+c1o1)+c1o2*(uz_sq)+vx3*c1o2); + feq7_B = ConcD*(c1o6*(ae+c1o1)+c1o2*(uz_sq)-vx3*c1o2); + + //feq7_ZERO = TempD*(c1o3*(ae*(-three))-(ux_sq+uy_sq+uz_sq)); + feqW7_E = TempD*(c1o6*(ae+c1o1)+c1o2*(ux_sq_Inflow)+vx1_Inflow*c1o2); + feqW7_W = TempD*(c1o6*(ae+c1o1)+c1o2*(ux_sq_Inflow)-vx1_Inflow*c1o2); + feqW7_N = TempD*(c1o6*(ae+c1o1)+c1o2*(uy_sq_Inflow)+vx2_Inflow*c1o2); + feqW7_S = TempD*(c1o6*(ae+c1o1)+c1o2*(uy_sq_Inflow)-vx2_Inflow*c1o2); + feqW7_T = TempD*(c1o6*(ae+c1o1)+c1o2*(uz_sq_Inflow)+vx3_Inflow*c1o2); + feqW7_B = TempD*(c1o6*(ae+c1o1)+c1o2*(uz_sq_Inflow)-vx3_Inflow*c1o2); + + ////////////////////////////////////////////////////////////////////////// + //pointertausch + if (isEvenTimestep==false) + { + D7.f[0] = &DD7[0*numberOfLBnodes]; + D7.f[1] = &DD7[1*numberOfLBnodes]; + D7.f[2] = &DD7[2*numberOfLBnodes]; + D7.f[3] = &DD7[3*numberOfLBnodes]; + D7.f[4] = &DD7[4*numberOfLBnodes]; + D7.f[5] = &DD7[5*numberOfLBnodes]; + D7.f[6] = &DD7[6*numberOfLBnodes]; + } + else + { + D7.f[0] = &DD7[0*numberOfLBnodes]; + D7.f[2] = &DD7[1*numberOfLBnodes]; + D7.f[1] = &DD7[2*numberOfLBnodes]; + D7.f[4] = &DD7[3*numberOfLBnodes]; + D7.f[3] = &DD7[4*numberOfLBnodes]; + D7.f[6] = &DD7[5*numberOfLBnodes]; + D7.f[5] = &DD7[6*numberOfLBnodes]; + } + + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //Test + //(D.f[d000])[k]=c1o10; + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //(D7.f[1])[ke ] = f7_E - feq7_E + feqW7_W; //dP00 + //(D7.f[2])[kw ] = f7_W - feq7_W + feqW7_E; //dM00 + //(D7.f[3])[kn ] = f7_N - feq7_N + feqW7_S; //d0P0 + //(D7.f[4])[ks ] = f7_S - feq7_S + feqW7_N; //d0M0 + //(D7.f[5])[kt ] = f7_T - feq7_T + feqW7_B; //d00P + //(D7.f[6])[kb ] = f7_B - feq7_B + feqW7_T; //d00M + + ////////////////////////////////////////////////////////////////////////// + //mit Q's + real /*feq,*/ q; + q = q_dirE[k]; + if (q>=c0o1 && q<=c1o1) + { + //q=0.; + (D7.f[2])[kw]=(c2o1*feqW7_W-(f7_E*(q*omegaD-c1o1)-omegaD*feq7_E*(q-c1o1))/(omegaD-c1o1)+f7_W*q)/(q+c1o1);//f7_W - feq7_W + feqW7_E; + } + + q = q_dirW[k]; + if (q>=c0o1 && q<=c1o1) + { + //q=0.; + (D7.f[1])[ke]=(c2o1*feqW7_E-(f7_W*(q*omegaD-c1o1)-omegaD*feq7_W*(q-c1o1))/(omegaD-c1o1)+f7_E*q)/(q+c1o1);//f7_E - feq7_E + feqW7_W; + } + + q = q_dirN[k]; + if (q>=c0o1 && q<=c1o1) + { + //q=0.; + (D7.f[4])[ks]=(c2o1*feqW7_S-(f7_N*(q*omegaD-c1o1)-omegaD*feq7_N*(q-c1o1))/(omegaD-c1o1)+f7_S*q)/(q+c1o1);//f7_S - feq7_S + feqW7_N; + } + + q = q_dirS[k]; + if (q>=c0o1 && q<=c1o1) + { + //q=0.; + (D7.f[3])[kn]=(c2o1*feqW7_N-(f7_S*(q*omegaD-c1o1)-omegaD*feq7_S*(q-c1o1))/(omegaD-c1o1)+f7_N*q)/(q+c1o1);//f7_N - feq7_N + feqW7_S; + } + + q = q_dirT[k]; + if (q>=c0o1 && q<=c1o1) + { + //q=0.; + (D7.f[6])[kb]=(c2o1*feqW7_B-(f7_T*(q*omegaD-c1o1)-omegaD*feq7_T*(q-c1o1))/(omegaD-c1o1)+f7_B*q)/(q+c1o1);//f7_B - feq7_B + feqW7_T; + } + + q = q_dirB[k]; + if (q>=c0o1 && q<=c1o1) + { + //q=0.; + (D7.f[5])[kt]=(c2o1*feqW7_T-(f7_B*(q*omegaD-c1o1)-omegaD*feq7_B*(q-c1o1))/(omegaD-c1o1)+f7_T*q)/(q+c1o1);//f7_T - feq7_T + feqW7_B; + } + + //////////////////////////////////////////////////////////////////////////// + ////ohne Q's + //real /*feq,*/ q; + //q = q_dirE[k]; + //if (q>=zero && q<=one) + //{ + // (D7.f[2])[kw]=f7_W - feq7_W + feqW7_E; + //} + + //q = q_dirW[k]; + //if (q>=zero && q<=one) + //{ + // (D7.f[1])[ke]=f7_E - feq7_E + feqW7_W; + //} + + //q = q_dirN[k]; + //if (q>=zero && q<=one) + //{ + // (D7.f[4])[ks]=f7_S - feq7_S + feqW7_N; + //} + + //q = q_dirS[k]; + //if (q>=zero && q<=one) + //{ + // (D7.f[3])[kn]=f7_N - feq7_N + feqW7_S; + //} + + //q = q_dirT[k]; + //if (q>=zero && q<=one) + //{ + // (D7.f[6])[kb]=f7_B - feq7_B + feqW7_T; + //} + + //q = q_dirB[k]; + //if (q>=zero && q<=one) + //{ + // (D7.f[5])[kt]=f7_T - feq7_T + feqW7_B; + //} + } +} +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +////////////////////////////////////////////////////////////////////////////// +__global__ void QADVel27(real* DD, + real* DD27, + real* temp, + real* velo, + real diffusivity, + int* k_Q, + real* QQ, + unsigned int numberOfBCnodes, + real om1, + unsigned int* neighborX, + unsigned int* neighborY, + unsigned int* neighborZ, + unsigned long long numberOfLBnodes, + bool isEvenTimestep) +{ + Distributions27 D; + if (isEvenTimestep==true) + { + D.f[dP00] = &DD[dP00 * numberOfLBnodes]; + D.f[dM00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00P] = &DD[d00P * numberOfLBnodes]; + D.f[d00M] = &DD[d00M * numberOfLBnodes]; + D.f[dPP0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dMM0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dP0P] = &DD[dP0P * numberOfLBnodes]; + D.f[dM0M] = &DD[dM0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dP0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dM0P * numberOfLBnodes]; + D.f[d0PP] = &DD[d0PP * numberOfLBnodes]; + D.f[d0MM] = &DD[d0MM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0PM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dPPP * numberOfLBnodes]; + D.f[dMMP] = &DD[dMMP * numberOfLBnodes]; + D.f[dPMP] = &DD[dPMP * numberOfLBnodes]; + D.f[dMPP] = &DD[dMPP * numberOfLBnodes]; + D.f[dPPM] = &DD[dPPM * numberOfLBnodes]; + D.f[dMMM] = &DD[dMMM * numberOfLBnodes]; + D.f[dPMM] = &DD[dPMM * numberOfLBnodes]; + D.f[dMPM] = &DD[dMPM * numberOfLBnodes]; + } + else + { + D.f[dM00] = &DD[dP00 * numberOfLBnodes]; + D.f[dP00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00M] = &DD[d00P * numberOfLBnodes]; + D.f[d00P] = &DD[d00M * numberOfLBnodes]; + D.f[dMM0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dPP0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dM0M] = &DD[dP0P * numberOfLBnodes]; + D.f[dP0P] = &DD[dM0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dP0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dM0P * numberOfLBnodes]; + D.f[d0MM] = &DD[d0PP * numberOfLBnodes]; + D.f[d0PP] = &DD[d0MM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0PM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dMMM * numberOfLBnodes]; + D.f[dMMP] = &DD[dPPM * numberOfLBnodes]; + D.f[dPMP] = &DD[dMPM * numberOfLBnodes]; + D.f[dMPP] = &DD[dPMM * numberOfLBnodes]; + D.f[dPPM] = &DD[dMMP * numberOfLBnodes]; + D.f[dMMM] = &DD[dPPP * numberOfLBnodes]; + D.f[dPMM] = &DD[dMPP * numberOfLBnodes]; + D.f[dMPM] = &DD[dPMP * numberOfLBnodes]; + } + + Distributions27 D27; + if (isEvenTimestep==true) + { + D27.f[dP00] = &DD27[dP00 * numberOfLBnodes]; + D27.f[dM00] = &DD27[dM00 * numberOfLBnodes]; + D27.f[d0P0] = &DD27[d0P0 * numberOfLBnodes]; + D27.f[d0M0] = &DD27[d0M0 * numberOfLBnodes]; + D27.f[d00P] = &DD27[d00P * numberOfLBnodes]; + D27.f[d00M] = &DD27[d00M * numberOfLBnodes]; + D27.f[dPP0] = &DD27[dPP0 * numberOfLBnodes]; + D27.f[dMM0] = &DD27[dMM0 * numberOfLBnodes]; + D27.f[dPM0] = &DD27[dPM0 * numberOfLBnodes]; + D27.f[dMP0] = &DD27[dMP0 * numberOfLBnodes]; + D27.f[dP0P] = &DD27[dP0P * numberOfLBnodes]; + D27.f[dM0M] = &DD27[dM0M * numberOfLBnodes]; + D27.f[dP0M] = &DD27[dP0M * numberOfLBnodes]; + D27.f[dM0P] = &DD27[dM0P * numberOfLBnodes]; + D27.f[d0PP] = &DD27[d0PP * numberOfLBnodes]; + D27.f[d0MM] = &DD27[d0MM * numberOfLBnodes]; + D27.f[d0PM] = &DD27[d0PM * numberOfLBnodes]; + D27.f[d0MP] = &DD27[d0MP * numberOfLBnodes]; + D27.f[d000] = &DD27[d000 * numberOfLBnodes]; + D27.f[dPPP] = &DD27[dPPP * numberOfLBnodes]; + D27.f[dMMP] = &DD27[dMMP * numberOfLBnodes]; + D27.f[dPMP] = &DD27[dPMP * numberOfLBnodes]; + D27.f[dMPP] = &DD27[dMPP * numberOfLBnodes]; + D27.f[dPPM] = &DD27[dPPM * numberOfLBnodes]; + D27.f[dMMM] = &DD27[dMMM * numberOfLBnodes]; + D27.f[dPMM] = &DD27[dPMM * numberOfLBnodes]; + D27.f[dMPM] = &DD27[dMPM * numberOfLBnodes]; + } + else + { + D27.f[dM00] = &DD27[dP00 * numberOfLBnodes]; + D27.f[dP00] = &DD27[dM00 * numberOfLBnodes]; + D27.f[d0M0] = &DD27[d0P0 * numberOfLBnodes]; + D27.f[d0P0] = &DD27[d0M0 * numberOfLBnodes]; + D27.f[d00M] = &DD27[d00P * numberOfLBnodes]; + D27.f[d00P] = &DD27[d00M * numberOfLBnodes]; + D27.f[dMM0] = &DD27[dPP0 * numberOfLBnodes]; + D27.f[dPP0] = &DD27[dMM0 * numberOfLBnodes]; + D27.f[dMP0] = &DD27[dPM0 * numberOfLBnodes]; + D27.f[dPM0] = &DD27[dMP0 * numberOfLBnodes]; + D27.f[dM0M] = &DD27[dP0P * numberOfLBnodes]; + D27.f[dP0P] = &DD27[dM0M * numberOfLBnodes]; + D27.f[dM0P] = &DD27[dP0M * numberOfLBnodes]; + D27.f[dP0M] = &DD27[dM0P * numberOfLBnodes]; + D27.f[d0MM] = &DD27[d0PP * numberOfLBnodes]; + D27.f[d0PP] = &DD27[d0MM * numberOfLBnodes]; + D27.f[d0MP] = &DD27[d0PM * numberOfLBnodes]; + D27.f[d0PM] = &DD27[d0MP * numberOfLBnodes]; + D27.f[d000] = &DD27[d000 * numberOfLBnodes]; + D27.f[dPPP] = &DD27[dMMM * numberOfLBnodes]; + D27.f[dMMP] = &DD27[dPPM * numberOfLBnodes]; + D27.f[dPMP] = &DD27[dMPM * numberOfLBnodes]; + D27.f[dMPP] = &DD27[dPMM * numberOfLBnodes]; + D27.f[dPPM] = &DD27[dMMP * numberOfLBnodes]; + D27.f[dMMM] = &DD27[dPPP * numberOfLBnodes]; + D27.f[dPMM] = &DD27[dMPP * numberOfLBnodes]; + D27.f[dMPM] = &DD27[dPMP * numberOfLBnodes]; + } + //////////////////////////////////////////////////////////////////////////////// + const unsigned x = threadIdx.x; // Globaler x-Index + const unsigned y = blockIdx.x; // Globaler y-Index + const unsigned z = blockIdx.y; // Globaler z-Index + + const unsigned nx = blockDim.x; + const unsigned ny = gridDim.x; + + const unsigned k = nx*(ny*z + y) + x; + ////////////////////////////////////////////////////////////////////////// + + if(k<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[dP00 * numberOfBCnodes]; + q_dirW = &QQ[dM00 * numberOfBCnodes]; + q_dirN = &QQ[d0P0 * numberOfBCnodes]; + q_dirS = &QQ[d0M0 * numberOfBCnodes]; + q_dirT = &QQ[d00P * numberOfBCnodes]; + q_dirB = &QQ[d00M * numberOfBCnodes]; + q_dirNE = &QQ[dPP0 * numberOfBCnodes]; + q_dirSW = &QQ[dMM0 * numberOfBCnodes]; + q_dirSE = &QQ[dPM0 * numberOfBCnodes]; + q_dirNW = &QQ[dMP0 * numberOfBCnodes]; + q_dirTE = &QQ[dP0P * numberOfBCnodes]; + q_dirBW = &QQ[dM0M * numberOfBCnodes]; + q_dirBE = &QQ[dP0M * numberOfBCnodes]; + q_dirTW = &QQ[dM0P * numberOfBCnodes]; + q_dirTN = &QQ[d0PP * numberOfBCnodes]; + q_dirBS = &QQ[d0MM * numberOfBCnodes]; + q_dirBN = &QQ[d0PM * numberOfBCnodes]; + q_dirTS = &QQ[d0MP * numberOfBCnodes]; + q_dirTNE = &QQ[dPPP * numberOfBCnodes]; + q_dirTSW = &QQ[dMMP * numberOfBCnodes]; + q_dirTSE = &QQ[dPMP * numberOfBCnodes]; + q_dirTNW = &QQ[dMPP * numberOfBCnodes]; + q_dirBNE = &QQ[dPPM * numberOfBCnodes]; + q_dirBSW = &QQ[dMMM * numberOfBCnodes]; + q_dirBSE = &QQ[dPMM * numberOfBCnodes]; + q_dirBNW = &QQ[dMPM * 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]; + 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 f_W = (D.f[dP00])[ke ]; + real f_E = (D.f[dM00])[kw ]; + real f_S = (D.f[d0P0])[kn ]; + real f_N = (D.f[d0M0])[ks ]; + real f_B = (D.f[d00P])[kt ]; + real f_T = (D.f[d00M])[kb ]; + real f_SW = (D.f[dPP0])[kne ]; + real f_NE = (D.f[dMM0])[ksw ]; + real f_NW = (D.f[dPM0])[kse ]; + real f_SE = (D.f[dMP0])[knw ]; + real f_BW = (D.f[dP0P])[kte ]; + real f_TE = (D.f[dM0M])[kbw ]; + real f_TW = (D.f[dP0M])[kbe ]; + real f_BE = (D.f[dM0P])[ktw ]; + real f_BS = (D.f[d0PP])[ktn ]; + real f_TN = (D.f[d0MM])[kbs ]; + real f_TS = (D.f[d0PM])[kbn ]; + real f_BN = (D.f[d0MP])[kts ]; + real f_ZERO = (D.f[d000])[kzero]; + real f_BSW = (D.f[dPPP])[ktne ]; + real f_BNE = (D.f[dMMP])[ktsw ]; + real f_BNW = (D.f[dPMP])[ktse ]; + real f_BSE = (D.f[dMPP])[ktnw ]; + real f_TSW = (D.f[dPPM])[kbne ]; + real f_TNE = (D.f[dMMM])[kbsw ]; + real f_TNW = (D.f[dPMM])[kbse ]; + real f_TSE = (D.f[dMPM])[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 + f_ZERO; + + //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); + + + //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); + + //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)+ f_ZERO; + 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)); + 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[dP00])[ke ]; + //real f27_E = (D27.f[dM00])[kw ]; + //real f27_S = (D27.f[d0P0])[kn ]; + //real f27_N = (D27.f[d0M0])[ks ]; + //real f27_B = (D27.f[d00P])[kt ]; + //real f27_T = (D27.f[d00M])[kb ]; + //real f27_SW = (D27.f[dPP0])[kne ]; + //real f27_NE = (D27.f[dMM0])[ksw ]; + //real f27_NW = (D27.f[dPM0])[kse ]; + //real f27_SE = (D27.f[dMP0])[knw ]; + //real f27_BW = (D27.f[dP0P])[kte ]; + //real f27_TE = (D27.f[dM0M])[kbw ]; + //real f27_TW = (D27.f[dP0M])[kbe ]; + //real f27_BE = (D27.f[dM0P])[ktw ]; + //real f27_BS = (D27.f[d0PP])[ktn ]; + //real f27_TN = (D27.f[d0MM])[kbs ]; + //real f27_TS = (D27.f[d0PM])[kbn ]; + //real f27_BN = (D27.f[d0MP])[kts ]; + //real f27_ZERO = (D27.f[d000])[kzero]; + //real f27_BSW = (D27.f[dPPP])[ktne ]; + //real f27_BNE = (D27.f[dMMP])[ktsw ]; + //real f27_BNW = (D27.f[dPMP])[ktse ]; + //real f27_BSE = (D27.f[dMPP])[ktnw ]; + //real f27_TSW = (D27.f[dPPM])[kbne ]; + //real f27_TNE = (D27.f[dMMM])[kbsw ]; + //real f27_TNW = (D27.f[dPMM])[kbse ]; + //real f27_TSE = (D27.f[dMPM])[kbnw ]; + //////////////////////////////////////////////////////////////////////////////// + real cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3); + //////////////////////////////////////////////////////////////////////////////// + //real ConcD = f27_TSE + f27_TNW + f27_TNE + f27_TSW + f27_BSE + f27_BNW + f27_BNE + f27_BSW + + // f27_BN + f27_TS + f27_TN + f27_BS + f27_BE + f27_TW + f27_TE + f27_BW + f27_SE + f27_NW + f27_NE + f27_SW + + // f27_T + f27_B + f27_N + f27_S + f27_E + f27_W + f27_ZERO; + + //real feq27_ZERO = c8over27* ConcD*(one-cu_sq); + //real feq27_E = c2o27* ConcD*(c1o1+c3o1*( vx1 )+c9o2*( vx1 )*( vx1 )-cu_sq); + //real feq27_W = c2o27* ConcD*(c1o1+c3o1*(-vx1 )+c9o2*(-vx1 )*(-vx1 )-cu_sq); + //real feq27_N = c2o27* ConcD*(c1o1+c3o1*( vx2 )+c9o2*( vx2 )*( vx2 )-cu_sq); + //real feq27_S = c2o27* ConcD*(c1o1+c3o1*( -vx2 )+c9o2*( -vx2 )*( -vx2 )-cu_sq); + //real feq27_T = c2o27* ConcD*(c1o1+c3o1*( vx3)+c9o2*( vx3)*( vx3)-cu_sq); + //real feq27_B = c2o27* ConcD*(c1o1+c3o1*( -vx3)+c9o2*( -vx3)*( -vx3)-cu_sq); + //real feq27_NE = c1o54* ConcD*(c1o1+c3o1*( vx1+vx2 )+c9o2*( vx1+vx2 )*( vx1+vx2 )-cu_sq); + //real feq27_SW = c1o54* ConcD*(c1o1+c3o1*(-vx1-vx2 )+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq); + //real feq27_SE = c1o54* ConcD*(c1o1+c3o1*( vx1-vx2 )+c9o2*( vx1-vx2 )*( vx1-vx2 )-cu_sq); + //real feq27_NW = c1o54* ConcD*(c1o1+c3o1*(-vx1+vx2 )+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq); + //real feq27_TE = c1o54* ConcD*(c1o1+c3o1*( vx1 +vx3)+c9o2*( vx1 +vx3)*( vx1 +vx3)-cu_sq); + //real feq27_BW = c1o54* ConcD*(c1o1+c3o1*(-vx1 -vx3)+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq); + //real feq27_BE = c1o54* ConcD*(c1o1+c3o1*( vx1 -vx3)+c9o2*( vx1 -vx3)*( vx1 -vx3)-cu_sq); + //real feq27_TW = c1o54* ConcD*(c1o1+c3o1*(-vx1 +vx3)+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq); + //real feq27_TN = c1o54* ConcD*(c1o1+c3o1*( vx2+vx3)+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq); + //real feq27_BS = c1o54* ConcD*(c1o1+c3o1*( -vx2-vx3)+c9o2*( -vx2-vx3)*( -vx2-vx3)-cu_sq); + //real feq27_BN = c1o54* ConcD*(c1o1+c3o1*( vx2-vx3)+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq); + //real feq27_TS = c1o54* ConcD*(c1o1+c3o1*( -vx2+vx3)+c9o2*( -vx2+vx3)*( -vx2+vx3)-cu_sq); + //real feq27_TNE = c1o216*ConcD*(c1o1+c3o1*( vx1+vx2+vx3)+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq); + //real feq27_BSW = c1o216*ConcD*(c1o1+c3o1*(-vx1-vx2-vx3)+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq); + //real feq27_BNE = c1o216*ConcD*(c1o1+c3o1*( vx1+vx2-vx3)+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq); + //real feq27_TSW = c1o216*ConcD*(c1o1+c3o1*(-vx1-vx2+vx3)+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq); + //real feq27_TSE = c1o216*ConcD*(c1o1+c3o1*( vx1-vx2+vx3)+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq); + //real feq27_BNW = c1o216*ConcD*(c1o1+c3o1*(-vx1+vx2-vx3)+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq); + //real feq27_BSE = c1o216*ConcD*(c1o1+c3o1*( vx1-vx2-vx3)+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq); + //real feq27_TNW = c1o216*ConcD*(c1o1+c3o1*(-vx1+vx2+vx3)+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq); + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + real TempD = temp[k]; + //real TempD = four; + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // velocity inflow + //vx1 = velo[k]; //zero; + //vx2 = zero; //velo[k];//zero;//velo[k]; + //vx3 = zero; + + ////real feqW27_ZERO = c8over27* TempD*(one-cu_sq); + //real feqW27_E = c2over27* (TempD+(one+TempD)*(three*( vx1 )+c9over2*( vx1 )*( vx1 )-cu_sq)); + //real feqW27_W = c2over27* (TempD+(one+TempD)*(three*(-vx1 )+c9over2*(-vx1 )*(-vx1 )-cu_sq)); + //real feqW27_N = c2over27* (TempD+(one+TempD)*(three*( vx2 )+c9over2*( vx2 )*( vx2 )-cu_sq)); + //real feqW27_S = c2over27* (TempD+(one+TempD)*(three*( -vx2 )+c9over2*( -vx2 )*( -vx2 )-cu_sq)); + //real feqW27_T = c2over27* (TempD+(one+TempD)*(three*( vx3)+c9over2*( vx3)*( vx3)-cu_sq)); + //real feqW27_B = c2over27* (TempD+(one+TempD)*(three*( -vx3)+c9over2*( -vx3)*( -vx3)-cu_sq)); + //real feqW27_NE = c1over54* (TempD+(one+TempD)*(three*( vx1+vx2 )+c9over2*( vx1+vx2 )*( vx1+vx2 )-cu_sq)); + //real feqW27_SW = c1over54* (TempD+(one+TempD)*(three*(-vx1-vx2 )+c9over2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq)); + //real feqW27_SE = c1over54* (TempD+(one+TempD)*(three*( vx1-vx2 )+c9over2*( vx1-vx2 )*( vx1-vx2 )-cu_sq)); + //real feqW27_NW = c1over54* (TempD+(one+TempD)*(three*(-vx1+vx2 )+c9over2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq)); + //real feqW27_TE = c1over54* (TempD+(one+TempD)*(three*( vx1 +vx3)+c9over2*( vx1 +vx3)*( vx1 +vx3)-cu_sq)); + //real feqW27_BW = c1over54* (TempD+(one+TempD)*(three*(-vx1 -vx3)+c9over2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq)); + //real feqW27_BE = c1over54* (TempD+(one+TempD)*(three*( vx1 -vx3)+c9over2*( vx1 -vx3)*( vx1 -vx3)-cu_sq)); + //real feqW27_TW = c1over54* (TempD+(one+TempD)*(three*(-vx1 +vx3)+c9over2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq)); + //real feqW27_TN = c1over54* (TempD+(one+TempD)*(three*( vx2+vx3)+c9over2*( vx2+vx3)*( vx2+vx3)-cu_sq)); + //real feqW27_BS = c1over54* (TempD+(one+TempD)*(three*( -vx2-vx3)+c9over2*( -vx2-vx3)*( -vx2-vx3)-cu_sq)); + //real feqW27_BN = c1over54* (TempD+(one+TempD)*(three*( vx2-vx3)+c9over2*( vx2-vx3)*( vx2-vx3)-cu_sq)); + //real feqW27_TS = c1over54* (TempD+(one+TempD)*(three*( -vx2+vx3)+c9over2*( -vx2+vx3)*( -vx2+vx3)-cu_sq)); + //real feqW27_TNE = c1over216*(TempD+(one+TempD)*(three*( vx1+vx2+vx3)+c9over2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq)); + //real feqW27_BSW = c1over216*(TempD+(one+TempD)*(three*(-vx1-vx2-vx3)+c9over2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq)); + //real feqW27_BNE = c1over216*(TempD+(one+TempD)*(three*( vx1+vx2-vx3)+c9over2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq)); + //real feqW27_TSW = c1over216*(TempD+(one+TempD)*(three*(-vx1-vx2+vx3)+c9over2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq)); + //real feqW27_TSE = c1over216*(TempD+(one+TempD)*(three*( vx1-vx2+vx3)+c9over2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq)); + //real feqW27_BNW = c1over216*(TempD+(one+TempD)*(three*(-vx1+vx2-vx3)+c9over2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq)); + //real feqW27_BSE = c1over216*(TempD+(one+TempD)*(three*( vx1-vx2-vx3)+c9over2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq)); + //real feqW27_TNW = c1over216*(TempD+(one+TempD)*(three*(-vx1+vx2+vx3)+c9over2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq)); + // + real feqW27_E = c2o27* TempD*(c1o1+c3o1*( vx1 )+c9o2*( vx1 )*( vx1 )-cu_sq); + real feqW27_W = c2o27* TempD*(c1o1+c3o1*(-vx1 )+c9o2*(-vx1 )*(-vx1 )-cu_sq); + real feqW27_N = c2o27* TempD*(c1o1+c3o1*( vx2 )+c9o2*( vx2 )*( vx2 )-cu_sq); + real feqW27_S = c2o27* TempD*(c1o1+c3o1*( -vx2 )+c9o2*( -vx2 )*( -vx2 )-cu_sq); + real feqW27_T = c2o27* TempD*(c1o1+c3o1*( vx3)+c9o2*( vx3)*( vx3)-cu_sq); + real feqW27_B = c2o27* TempD*(c1o1+c3o1*( -vx3)+c9o2*( -vx3)*( -vx3)-cu_sq); + real feqW27_NE = c1o54* TempD*(c1o1+c3o1*( vx1+vx2 )+c9o2*( vx1+vx2 )*( vx1+vx2 )-cu_sq); + real feqW27_SW = c1o54* TempD*(c1o1+c3o1*(-vx1-vx2 )+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq); + real feqW27_SE = c1o54* TempD*(c1o1+c3o1*( vx1-vx2 )+c9o2*( vx1-vx2 )*( vx1-vx2 )-cu_sq); + real feqW27_NW = c1o54* TempD*(c1o1+c3o1*(-vx1+vx2 )+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq); + real feqW27_TE = c1o54* TempD*(c1o1+c3o1*( vx1 +vx3)+c9o2*( vx1 +vx3)*( vx1 +vx3)-cu_sq); + real feqW27_BW = c1o54* TempD*(c1o1+c3o1*(-vx1 -vx3)+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq); + real feqW27_BE = c1o54* TempD*(c1o1+c3o1*( vx1 -vx3)+c9o2*( vx1 -vx3)*( vx1 -vx3)-cu_sq); + real feqW27_TW = c1o54* TempD*(c1o1+c3o1*(-vx1 +vx3)+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq); + real feqW27_TN = c1o54* TempD*(c1o1+c3o1*( vx2+vx3)+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq); + real feqW27_BS = c1o54* TempD*(c1o1+c3o1*( -vx2-vx3)+c9o2*( -vx2-vx3)*( -vx2-vx3)-cu_sq); + real feqW27_BN = c1o54* TempD*(c1o1+c3o1*( vx2-vx3)+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq); + real feqW27_TS = c1o54* TempD*(c1o1+c3o1*( -vx2+vx3)+c9o2*( -vx2+vx3)*( -vx2+vx3)-cu_sq); + real feqW27_TNE = c1o216*TempD*(c1o1+c3o1*( vx1+vx2+vx3)+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq); + real feqW27_BSW = c1o216*TempD*(c1o1+c3o1*(-vx1-vx2-vx3)+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq); + real feqW27_BNE = c1o216*TempD*(c1o1+c3o1*( vx1+vx2-vx3)+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq); + real feqW27_TSW = c1o216*TempD*(c1o1+c3o1*(-vx1-vx2+vx3)+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq); + real feqW27_TSE = c1o216*TempD*(c1o1+c3o1*( vx1-vx2+vx3)+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq); + real feqW27_BNW = c1o216*TempD*(c1o1+c3o1*(-vx1+vx2-vx3)+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq); + real feqW27_BSE = c1o216*TempD*(c1o1+c3o1*( vx1-vx2-vx3)+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq); + real feqW27_TNW = c1o216*TempD*(c1o1+c3o1*(-vx1+vx2+vx3)+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq); + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + real omegaD = c3o1 - sqrt(c3o1); + //real Lam = -(c1o2-one/omegaD); + //real nue_d = Lam/three; + //real ae = zero; + //real ae = diffusivity/nue_d - one; + + + ////////////////////////////////////////////////////////////////////////// + if (isEvenTimestep==false) + { + D27.f[dP00] = &DD27[dP00 * numberOfLBnodes]; + D27.f[dM00] = &DD27[dM00 * numberOfLBnodes]; + D27.f[d0P0] = &DD27[d0P0 * numberOfLBnodes]; + D27.f[d0M0] = &DD27[d0M0 * numberOfLBnodes]; + D27.f[d00P] = &DD27[d00P * numberOfLBnodes]; + D27.f[d00M] = &DD27[d00M * numberOfLBnodes]; + D27.f[dPP0] = &DD27[dPP0 * numberOfLBnodes]; + D27.f[dMM0] = &DD27[dMM0 * numberOfLBnodes]; + D27.f[dPM0] = &DD27[dPM0 * numberOfLBnodes]; + D27.f[dMP0] = &DD27[dMP0 * numberOfLBnodes]; + D27.f[dP0P] = &DD27[dP0P * numberOfLBnodes]; + D27.f[dM0M] = &DD27[dM0M * numberOfLBnodes]; + D27.f[dP0M] = &DD27[dP0M * numberOfLBnodes]; + D27.f[dM0P] = &DD27[dM0P * numberOfLBnodes]; + D27.f[d0PP] = &DD27[d0PP * numberOfLBnodes]; + D27.f[d0MM] = &DD27[d0MM * numberOfLBnodes]; + D27.f[d0PM] = &DD27[d0PM * numberOfLBnodes]; + D27.f[d0MP] = &DD27[d0MP * numberOfLBnodes]; + D27.f[d000] = &DD27[d000 * numberOfLBnodes]; + D27.f[dPPP] = &DD27[dPPP * numberOfLBnodes]; + D27.f[dMMP] = &DD27[dMMP * numberOfLBnodes]; + D27.f[dPMP] = &DD27[dPMP * numberOfLBnodes]; + D27.f[dMPP] = &DD27[dMPP * numberOfLBnodes]; + D27.f[dPPM] = &DD27[dPPM * numberOfLBnodes]; + D27.f[dMMM] = &DD27[dMMM * numberOfLBnodes]; + D27.f[dPMM] = &DD27[dPMM * numberOfLBnodes]; + D27.f[dMPM] = &DD27[dMPM * numberOfLBnodes]; + } + else + { + D27.f[dM00] = &DD27[dP00 * numberOfLBnodes]; + D27.f[dP00] = &DD27[dM00 * numberOfLBnodes]; + D27.f[d0M0] = &DD27[d0P0 * numberOfLBnodes]; + D27.f[d0P0] = &DD27[d0M0 * numberOfLBnodes]; + D27.f[d00M] = &DD27[d00P * numberOfLBnodes]; + D27.f[d00P] = &DD27[d00M * numberOfLBnodes]; + D27.f[dMM0] = &DD27[dPP0 * numberOfLBnodes]; + D27.f[dPP0] = &DD27[dMM0 * numberOfLBnodes]; + D27.f[dMP0] = &DD27[dPM0 * numberOfLBnodes]; + D27.f[dPM0] = &DD27[dMP0 * numberOfLBnodes]; + D27.f[dM0M] = &DD27[dP0P * numberOfLBnodes]; + D27.f[dP0P] = &DD27[dM0M * numberOfLBnodes]; + D27.f[dM0P] = &DD27[dP0M * numberOfLBnodes]; + D27.f[dP0M] = &DD27[dM0P * numberOfLBnodes]; + D27.f[d0MM] = &DD27[d0PP * numberOfLBnodes]; + D27.f[d0PP] = &DD27[d0MM * numberOfLBnodes]; + D27.f[d0MP] = &DD27[d0PM * numberOfLBnodes]; + D27.f[d0PM] = &DD27[d0MP * numberOfLBnodes]; + D27.f[d000] = &DD27[d000 * numberOfLBnodes]; + D27.f[dPPP] = &DD27[dMMM * numberOfLBnodes]; + D27.f[dMMP] = &DD27[dPPM * numberOfLBnodes]; + D27.f[dPMP] = &DD27[dMPM * numberOfLBnodes]; + D27.f[dMPP] = &DD27[dPMM * numberOfLBnodes]; + D27.f[dPPM] = &DD27[dMMP * numberOfLBnodes]; + D27.f[dMMM] = &DD27[dPPP * numberOfLBnodes]; + D27.f[dPMM] = &DD27[dMPP * numberOfLBnodes]; + D27.f[dMPM] = &DD27[dPMP * numberOfLBnodes]; + } + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //Test + //(D.f[d000])[k]=c1o10; + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //Test + //(D.f[d000])[k]=c1o10; + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //(D27.f[dM00])[kw ]= four; + //(D27.f[dP00])[ke ]= four; + //(D27.f[d0M0])[ks ]= four; + //(D27.f[d0P0])[kn ]= four; + //(D27.f[d00M])[kb ]= four; + //(D27.f[d00P])[kt ]= four; + //(D27.f[dMM0])[ksw ]= four; + //(D27.f[dPP0])[kne ]= four; + //(D27.f[dMP0])[knw ]= four; + //(D27.f[dPM0])[kse ]= four; + //(D27.f[dM0M])[kbw ]= four; + //(D27.f[dP0P])[kte ]= four; + //(D27.f[dM0P])[ktw ]= four; + //(D27.f[dP0M])[kbe ]= four; + //(D27.f[d0MM])[kbs ]= four; + //(D27.f[d0PP])[ktn ]= four; + //(D27.f[d0MP])[kts ]= four; + //(D27.f[d0PM])[kbn ]= four; + //(D27.f[dMMM])[kbsw]= four; + //(D27.f[dPPP])[ktne]= four; + //(D27.f[dMMP])[ktsw]= four; + //(D27.f[dPPM])[kbne]= four; + //(D27.f[dMPM])[kbnw]= four; + //(D27.f[dPMP])[ktse]= four; + //(D27.f[dMPP])[ktnw]= four; + //(D27.f[dPMM])[kbse]= four; + q = q_dirE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dM00])[kw ]= -feqW27_W + c2o1 * c2o27 * TempD; + q = q_dirW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dP00])[ke ]= -feqW27_E + c2o1 * c2o27 * TempD; + q = q_dirN[k]; if (q>=c0o1 && q<=c1o1) (D27.f[d0M0])[ks ]= -feqW27_S + c2o1 * c2o27 * TempD; + q = q_dirS[k]; if (q>=c0o1 && q<=c1o1) (D27.f[d0P0])[kn ]= -feqW27_N + c2o1 * c2o27 * TempD; + q = q_dirT[k]; if (q>=c0o1 && q<=c1o1) (D27.f[d00M])[kb ]= -feqW27_B + c2o1 * c2o27 * TempD; + q = q_dirB[k]; if (q>=c0o1 && q<=c1o1) (D27.f[d00P])[kt ]= -feqW27_T + c2o1 * c2o27 * TempD; + q = q_dirNE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dMM0])[ksw ]= -feqW27_SW + c2o1 * c1o54 * TempD; + q = q_dirSW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dPP0])[kne ]= -feqW27_NE + c2o1 * c1o54 * TempD; + q = q_dirSE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dMP0])[knw ]= -feqW27_NW + c2o1 * c1o54 * TempD; + q = q_dirNW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dPM0])[kse ]= -feqW27_SE + c2o1 * c1o54 * TempD; + q = q_dirTE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dM0M])[kbw ]= -feqW27_BW + c2o1 * c1o54 * TempD; + q = q_dirBW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dP0P])[kte ]= -feqW27_TE + c2o1 * c1o54 * TempD; + q = q_dirBE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dM0P])[ktw ]= -feqW27_TW + c2o1 * c1o54 * TempD; + q = q_dirTW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dP0M])[kbe ]= -feqW27_BE + c2o1 * c1o54 * TempD; + q = q_dirTN[k]; if (q>=c0o1 && q<=c1o1) (D27.f[d0MM])[kbs ]= -feqW27_BS + c2o1 * c1o54 * TempD; + q = q_dirBS[k]; if (q>=c0o1 && q<=c1o1) (D27.f[d0PP])[ktn ]= -feqW27_TN + c2o1 * c1o54 * TempD; + q = q_dirBN[k]; if (q>=c0o1 && q<=c1o1) (D27.f[d0MP])[kts ]= -feqW27_TS + c2o1 * c1o54 * TempD; + q = q_dirTS[k]; if (q>=c0o1 && q<=c1o1) (D27.f[d0PM])[kbn ]= -feqW27_BN + c2o1 * c1o54 * TempD; + q = q_dirTNE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dMMM])[kbsw]= -feqW27_BSW+ c2o1 * c1o216 * TempD; + q = q_dirBSW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dPPP])[ktne]= -feqW27_TNE+ c2o1 * c1o216 * TempD; + q = q_dirBNE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dMMP])[ktsw]= -feqW27_TSW+ c2o1 * c1o216 * TempD; + q = q_dirTSW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dPPM])[kbne]= -feqW27_BNE+ c2o1 * c1o216 * TempD; + q = q_dirTSE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dMPM])[kbnw]= -feqW27_BNW+ c2o1 * c1o216 * TempD; + q = q_dirBNW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dPMP])[ktse]= -feqW27_TSE+ c2o1 * c1o216 * TempD; + q = q_dirBSE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dMPP])[ktnw]= -feqW27_TNW+ c2o1 * c1o216 * TempD; + q = q_dirTNW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dPMM])[kbse]= -feqW27_BSE+ c2o1 * c1o216 * TempD; + //q = q_dirE[k]; if (q>=zero && q<=one) (D27.f[dM00])[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[dP00])[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[d0M0])[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[d0P0])[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[d00M])[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[d00P])[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[dMM0])[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[dPP0])[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[dMP0])[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[dPM0])[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[dM0M])[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[dP0P])[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[dM0P])[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[dP0M])[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[d0MM])[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[d0PP])[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[d0MP])[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[d0PM])[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[dMMM])[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[dPPP])[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[dMMP])[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[dPPM])[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[dMPM])[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[dPMP])[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[dMPP])[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[dPMM])[kbse]=(two*feqW27_BSE-(f27_TNW*(q*omegaD-one)-omegaD*feq27_TNW*(q-one))/(omegaD-one)+f27_BSE*q)/(q+one); + } +} +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +////////////////////////////////////////////////////////////////////////////// +__global__ void QAD7( real* DD, + real* DD7, + real* temp, + real diffusivity, + int* k_Q, + real* QQ, + unsigned int numberOfBCnodes, + real om1, + unsigned int* neighborX, + unsigned int* neighborY, + unsigned int* neighborZ, + unsigned long long numberOfLBnodes, + bool isEvenTimestep) +{ + Distributions27 D; + if (isEvenTimestep==true) + { + D.f[dP00] = &DD[dP00 * numberOfLBnodes]; + D.f[dM00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00P] = &DD[d00P * numberOfLBnodes]; + D.f[d00M] = &DD[d00M * numberOfLBnodes]; + D.f[dPP0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dMM0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dP0P] = &DD[dP0P * numberOfLBnodes]; + D.f[dM0M] = &DD[dM0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dP0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dM0P * numberOfLBnodes]; + D.f[d0PP] = &DD[d0PP * numberOfLBnodes]; + D.f[d0MM] = &DD[d0MM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0PM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dPPP * numberOfLBnodes]; + D.f[dMMP] = &DD[dMMP * numberOfLBnodes]; + D.f[dPMP] = &DD[dPMP * numberOfLBnodes]; + D.f[dMPP] = &DD[dMPP * numberOfLBnodes]; + D.f[dPPM] = &DD[dPPM * numberOfLBnodes]; + D.f[dMMM] = &DD[dMMM * numberOfLBnodes]; + D.f[dPMM] = &DD[dPMM * numberOfLBnodes]; + D.f[dMPM] = &DD[dMPM * numberOfLBnodes]; + } + else + { + D.f[dM00] = &DD[dP00 * numberOfLBnodes]; + D.f[dP00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00M] = &DD[d00P * numberOfLBnodes]; + D.f[d00P] = &DD[d00M * numberOfLBnodes]; + D.f[dMM0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dPP0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dM0M] = &DD[dP0P * numberOfLBnodes]; + D.f[dP0P] = &DD[dM0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dP0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dM0P * numberOfLBnodes]; + D.f[d0MM] = &DD[d0PP * numberOfLBnodes]; + D.f[d0PP] = &DD[d0MM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0PM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dMMM * numberOfLBnodes]; + D.f[dMMP] = &DD[dPPM * numberOfLBnodes]; + D.f[dPMP] = &DD[dMPM * numberOfLBnodes]; + D.f[dMPP] = &DD[dPMM * numberOfLBnodes]; + D.f[dPPM] = &DD[dMMP * numberOfLBnodes]; + D.f[dMMM] = &DD[dPPP * numberOfLBnodes]; + D.f[dPMM] = &DD[dMPP * numberOfLBnodes]; + D.f[dMPM] = &DD[dPMP * numberOfLBnodes]; + } + + Distributions7 D7; + if (isEvenTimestep==true) + { + D7.f[0] = &DD7[0*numberOfLBnodes]; + D7.f[1] = &DD7[1*numberOfLBnodes]; + D7.f[2] = &DD7[2*numberOfLBnodes]; + D7.f[3] = &DD7[3*numberOfLBnodes]; + D7.f[4] = &DD7[4*numberOfLBnodes]; + D7.f[5] = &DD7[5*numberOfLBnodes]; + D7.f[6] = &DD7[6*numberOfLBnodes]; + } + else + { + D7.f[0] = &DD7[0*numberOfLBnodes]; + D7.f[2] = &DD7[1*numberOfLBnodes]; + D7.f[1] = &DD7[2*numberOfLBnodes]; + D7.f[4] = &DD7[3*numberOfLBnodes]; + D7.f[3] = &DD7[4*numberOfLBnodes]; + D7.f[6] = &DD7[5*numberOfLBnodes]; + D7.f[5] = &DD7[6*numberOfLBnodes]; + } + + + //////////////////////////////////////////////////////////////////////////////// + const unsigned x = threadIdx.x; // Globaler x-Index + const unsigned y = blockIdx.x; // Globaler y-Index + const unsigned z = blockIdx.y; // Globaler z-Index + + const unsigned nx = blockDim.x; + const unsigned ny = gridDim.x; + + const unsigned k = nx*(ny*z + y) + x; + ////////////////////////////////////////////////////////////////////////// + + if(k<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[dP00 * numberOfBCnodes]; + q_dirW = &QQ[dM00 * numberOfBCnodes]; + q_dirN = &QQ[d0P0 * numberOfBCnodes]; + q_dirS = &QQ[d0M0 * numberOfBCnodes]; + q_dirT = &QQ[d00P * numberOfBCnodes]; + q_dirB = &QQ[d00M * numberOfBCnodes]; + //q_dirNE = &QQ[dPP0 * numberOfBCnodes]; + //q_dirSW = &QQ[dMM0 * numberOfBCnodes]; + //q_dirSE = &QQ[dPM0 * numberOfBCnodes]; + //q_dirNW = &QQ[dMP0 * numberOfBCnodes]; + //q_dirTE = &QQ[dP0P * numberOfBCnodes]; + //q_dirBW = &QQ[dM0M * numberOfBCnodes]; + //q_dirBE = &QQ[dP0M * numberOfBCnodes]; + //q_dirTW = &QQ[dM0P * numberOfBCnodes]; + //q_dirTN = &QQ[d0PP * numberOfBCnodes]; + //q_dirBS = &QQ[d0MM * numberOfBCnodes]; + //q_dirBN = &QQ[d0PM * numberOfBCnodes]; + //q_dirTS = &QQ[d0MP * numberOfBCnodes]; + //q_dirTNE = &QQ[dPPP * numberOfBCnodes]; + //q_dirTSW = &QQ[dMMP * numberOfBCnodes]; + //q_dirTSE = &QQ[dPMP * numberOfBCnodes]; + //q_dirTNW = &QQ[dMPP * numberOfBCnodes]; + //q_dirBNE = &QQ[dPPM * numberOfBCnodes]; + //q_dirBSW = &QQ[dMMM * numberOfBCnodes]; + //q_dirBSE = &QQ[dPMM * numberOfBCnodes]; + //q_dirBNW = &QQ[dMPM * 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]; + 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 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[dP00])[ke ]; + f_E = (D.f[dM00])[kw ]; + f_S = (D.f[d0P0])[kn ]; + f_N = (D.f[d0M0])[ks ]; + f_B = (D.f[d00P])[kt ]; + f_T = (D.f[d00M])[kb ]; + f_SW = (D.f[dPP0])[kne ]; + f_NE = (D.f[dMM0])[ksw ]; + f_NW = (D.f[dPM0])[kse ]; + f_SE = (D.f[dMP0])[knw ]; + f_BW = (D.f[dP0P])[kte ]; + f_TE = (D.f[dM0M])[kbw ]; + f_TW = (D.f[dP0M])[kbe ]; + f_BE = (D.f[dM0P])[ktw ]; + f_BS = (D.f[d0PP])[ktn ]; + f_TN = (D.f[d0MM])[kbs ]; + f_TS = (D.f[d0PM])[kbn ]; + f_BN = (D.f[d0MP])[kts ]; + f_BSW = (D.f[dPPP])[ktne ]; + f_BNE = (D.f[dMMP])[ktsw ]; + f_BNW = (D.f[dPMP])[ktse ]; + f_BSE = (D.f[dMPP])[ktnw ]; + f_TSW = (D.f[dPPM])[kbne ]; + f_TNE = (D.f[dMMM])[kbsw ]; + f_TNW = (D.f[dPMM])[kbse ]; + f_TSE = (D.f[dMPM])[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[d000])[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); + + + //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); + + //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[d000])[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)); + 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 cu_sq =c3o2*(vx1*vx1+vx2*vx2+vx3*vx3); + real ux_sq = vx1 * vx1; + real uy_sq = vx2 * vx2; + real uz_sq = vx3 * vx3; + real omegaD = c3o1 - sqrt(c3o1); + real Lam = -(c1o2-c1o1/omegaD); + real nue_d = Lam/c3o1; + //real ae = zero; + real ae = diffusivity/nue_d - c1o1; + + real f7_ZERO,f7_E,f7_W,f7_N,f7_S,f7_T,f7_B; + real /*feq7_ZERO,*/feq7_E,feq7_W,feq7_N,feq7_S,feq7_T,feq7_B; + real /*feqW7_ZERO,*/feqW7_E,feqW7_W,feqW7_N,feqW7_S,feqW7_T,feqW7_B; + real TempD = temp[k]; + + + f7_ZERO = (D7.f[0])[kzero]; + f7_W = (D7.f[1])[ke ]; + f7_E = (D7.f[2])[kw ]; + f7_S = (D7.f[3])[kn ]; + f7_N = (D7.f[4])[ks ]; + f7_B = (D7.f[5])[kt ]; + f7_T = (D7.f[6])[kb ]; + + real ConcD = f7_ZERO + f7_E + f7_W + f7_N + f7_S + f7_T + f7_B; + + //feq7_ZERO = ConcD*(c1o3*(ae*(-three))-(ux_sq+uy_sq+uz_sq)); + feq7_E = ConcD*(c1o6*(ae+c1o1)+c1o2*(ux_sq)+vx1*c1o2); + feq7_W = ConcD*(c1o6*(ae+c1o1)+c1o2*(ux_sq)-vx1*c1o2); + feq7_N = ConcD*(c1o6*(ae+c1o1)+c1o2*(uy_sq)+vx2*c1o2); + feq7_S = ConcD*(c1o6*(ae+c1o1)+c1o2*(uy_sq)-vx2*c1o2); + feq7_T = ConcD*(c1o6*(ae+c1o1)+c1o2*(uz_sq)+vx3*c1o2); + feq7_B = ConcD*(c1o6*(ae+c1o1)+c1o2*(uz_sq)-vx3*c1o2); + + //feq7_ZERO = TempD*(c1o3*(ae*(-three))-(ux_sq+uy_sq+uz_sq)); + feqW7_E = TempD*(c1o6*(ae+c1o1));//+c1o2*(ux_sq)+vx1*c1o2); + feqW7_W = TempD*(c1o6*(ae+c1o1));//+c1o2*(ux_sq)-vx1*c1o2); + feqW7_N = TempD*(c1o6*(ae+c1o1));//+c1o2*(uy_sq)+vx2*c1o2); + feqW7_S = TempD*(c1o6*(ae+c1o1));//+c1o2*(uy_sq)-vx2*c1o2); + feqW7_T = TempD*(c1o6*(ae+c1o1));//+c1o2*(uz_sq)+vx3*c1o2); + feqW7_B = TempD*(c1o6*(ae+c1o1));//+c1o2*(uz_sq)-vx3*c1o2); + + ////////////////////////////////////////////////////////////////////////// + //pointertausch + if (isEvenTimestep==false) + { + D7.f[0] = &DD7[0*numberOfLBnodes]; + D7.f[1] = &DD7[1*numberOfLBnodes]; + D7.f[2] = &DD7[2*numberOfLBnodes]; + D7.f[3] = &DD7[3*numberOfLBnodes]; + D7.f[4] = &DD7[4*numberOfLBnodes]; + D7.f[5] = &DD7[5*numberOfLBnodes]; + D7.f[6] = &DD7[6*numberOfLBnodes]; + } + else + { + D7.f[0] = &DD7[0*numberOfLBnodes]; + D7.f[2] = &DD7[1*numberOfLBnodes]; + D7.f[1] = &DD7[2*numberOfLBnodes]; + D7.f[4] = &DD7[3*numberOfLBnodes]; + D7.f[3] = &DD7[4*numberOfLBnodes]; + D7.f[6] = &DD7[5*numberOfLBnodes]; + D7.f[5] = &DD7[6*numberOfLBnodes]; + } + + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //Test + //(D.f[d000])[k]=c1o10; + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //(D7.f[1])[ke ] = f7_E - feq7_E + feqW7_W; //dP00 + //(D7.f[2])[kw ] = f7_W - feq7_W + feqW7_E; //dM00 + //(D7.f[3])[kn ] = f7_N - feq7_N + feqW7_S; //d0P0 + //(D7.f[4])[ks ] = f7_S - feq7_S + feqW7_N; //d0M0 + //(D7.f[5])[kt ] = f7_T - feq7_T + feqW7_B; //d00P + //(D7.f[6])[kb ] = f7_B - feq7_B + feqW7_T; //d00M + + //////////////////////////////////////////////////////////////////////////// + ////mit Q's + //real /*feq,*/ q; + //q = q_dirE[k]; + //if (q>=zero && q<=one) + //{ + // //q=zero; + // (D7.f[2])[kw]=(two*feqW7_W-(f7_E*(q*omegaD-one)-omegaD*feq7_E*(q-one))/(omegaD-one)+f7_W*q)/(q+one);//f7_W - feq7_W + feqW7_E; + //} + + //q = q_dirW[k]; + //if (q>=zero && q<=one) + //{ + // //q=zero; + // (D7.f[1])[ke]=(two*feqW7_E-(f7_W*(q*omegaD-one)-omegaD*feq7_W*(q-one))/(omegaD-one)+f7_E*q)/(q+one);//f7_E - feq7_E + feqW7_W; + //} + + //q = q_dirN[k]; + //if (q>=zero && q<=one) + //{ + // //q=zero; + // (D7.f[4])[ks]=(two*feqW7_S-(f7_N*(q*omegaD-one)-omegaD*feq7_N*(q-one))/(omegaD-one)+f7_S*q)/(q+one);//f7_S - feq7_S + feqW7_N; + //} + + //q = q_dirS[k]; + //if (q>=zero && q<=one) + //{ + // //q=zero; + // (D7.f[3])[kn]=(two*feqW7_N-(f7_S*(q*omegaD-one)-omegaD*feq7_S*(q-one))/(omegaD-one)+f7_N*q)/(q+one);//f7_N - feq7_N + feqW7_S; + //} + + //q = q_dirT[k]; + //if (q>=zero && q<=one) + //{ + // //q=zero; + // (D7.f[6])[kb]=(two*feqW7_B-(f7_T*(q*omegaD-one)-omegaD*feq7_T*(q-one))/(omegaD-one)+f7_B*q)/(q+one);//f7_B - feq7_B + feqW7_T; + //} + + //q = q_dirB[k]; + //if (q>=zero && q<=one) + //{ + // //q=zero; + // (D7.f[5])[kt]=(two*feqW7_T-(f7_B*(q*omegaD-one)-omegaD*feq7_B*(q-one))/(omegaD-one)+f7_T*q)/(q+one);//f7_T - feq7_T + feqW7_B; + //} + + ////////////////////////////////////////////////////////////////////////// + //ohne Q's + real /*feq,*/ q; + q = q_dirE[k]; + if (q>=c0o1 && q<=c1o1) + { + (D7.f[2])[kw]=f7_W - feq7_W + feqW7_E; + } + + q = q_dirW[k]; + if (q>=c0o1 && q<=c1o1) + { + (D7.f[1])[ke]=f7_E - feq7_E + feqW7_W; + } + + q = q_dirN[k]; + if (q>=c0o1 && q<=c1o1) + { + (D7.f[4])[ks]=f7_S - feq7_S + feqW7_N; + } + + q = q_dirS[k]; + if (q>=c0o1 && q<=c1o1) + { + (D7.f[3])[kn]=f7_N - feq7_N + feqW7_S; + } + + q = q_dirT[k]; + if (q>=c0o1 && q<=c1o1) + { + (D7.f[6])[kb]=f7_B - feq7_B + feqW7_T; + } + + q = q_dirB[k]; + if (q>=c0o1 && q<=c1o1) + { + (D7.f[5])[kt]=f7_T - feq7_T + feqW7_B; + } + } +} +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +////////////////////////////////////////////////////////////////////////////// +__global__ void QADDirichlet27( + real* DD, + real* DD27, + real* temp, + real diffusivity, + int* k_Q, + real* QQ, + unsigned int numberOfBCnodes, + real om1, + unsigned int* neighborX, + unsigned int* neighborY, + unsigned int* neighborZ, + unsigned long long numberOfLBnodes, + bool isEvenTimestep) +{ + Distributions27 D; + if (isEvenTimestep==true) + { + D.f[dP00] = &DD[dP00 * numberOfLBnodes]; + D.f[dM00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00P] = &DD[d00P * numberOfLBnodes]; + D.f[d00M] = &DD[d00M * numberOfLBnodes]; + D.f[dPP0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dMM0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dP0P] = &DD[dP0P * numberOfLBnodes]; + D.f[dM0M] = &DD[dM0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dP0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dM0P * numberOfLBnodes]; + D.f[d0PP] = &DD[d0PP * numberOfLBnodes]; + D.f[d0MM] = &DD[d0MM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0PM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dPPP * numberOfLBnodes]; + D.f[dMMP] = &DD[dMMP * numberOfLBnodes]; + D.f[dPMP] = &DD[dPMP * numberOfLBnodes]; + D.f[dMPP] = &DD[dMPP * numberOfLBnodes]; + D.f[dPPM] = &DD[dPPM * numberOfLBnodes]; + D.f[dMMM] = &DD[dMMM * numberOfLBnodes]; + D.f[dPMM] = &DD[dPMM * numberOfLBnodes]; + D.f[dMPM] = &DD[dMPM * numberOfLBnodes]; + } + else + { + D.f[dM00] = &DD[dP00 * numberOfLBnodes]; + D.f[dP00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00M] = &DD[d00P * numberOfLBnodes]; + D.f[d00P] = &DD[d00M * numberOfLBnodes]; + D.f[dMM0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dPP0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dM0M] = &DD[dP0P * numberOfLBnodes]; + D.f[dP0P] = &DD[dM0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dP0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dM0P * numberOfLBnodes]; + D.f[d0MM] = &DD[d0PP * numberOfLBnodes]; + D.f[d0PP] = &DD[d0MM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0PM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dMMM * numberOfLBnodes]; + D.f[dMMP] = &DD[dPPM * numberOfLBnodes]; + D.f[dPMP] = &DD[dMPM * numberOfLBnodes]; + D.f[dMPP] = &DD[dPMM * numberOfLBnodes]; + D.f[dPPM] = &DD[dMMP * numberOfLBnodes]; + D.f[dMMM] = &DD[dPPP * numberOfLBnodes]; + D.f[dPMM] = &DD[dMPP * numberOfLBnodes]; + D.f[dMPM] = &DD[dPMP * numberOfLBnodes]; + } + + Distributions27 D27; + if (isEvenTimestep==true) + { + D27.f[dP00] = &DD27[dP00 * numberOfLBnodes]; + D27.f[dM00] = &DD27[dM00 * numberOfLBnodes]; + D27.f[d0P0] = &DD27[d0P0 * numberOfLBnodes]; + D27.f[d0M0] = &DD27[d0M0 * numberOfLBnodes]; + D27.f[d00P] = &DD27[d00P * numberOfLBnodes]; + D27.f[d00M] = &DD27[d00M * numberOfLBnodes]; + D27.f[dPP0] = &DD27[dPP0 * numberOfLBnodes]; + D27.f[dMM0] = &DD27[dMM0 * numberOfLBnodes]; + D27.f[dPM0] = &DD27[dPM0 * numberOfLBnodes]; + D27.f[dMP0] = &DD27[dMP0 * numberOfLBnodes]; + D27.f[dP0P] = &DD27[dP0P * numberOfLBnodes]; + D27.f[dM0M] = &DD27[dM0M * numberOfLBnodes]; + D27.f[dP0M] = &DD27[dP0M * numberOfLBnodes]; + D27.f[dM0P] = &DD27[dM0P * numberOfLBnodes]; + D27.f[d0PP] = &DD27[d0PP * numberOfLBnodes]; + D27.f[d0MM] = &DD27[d0MM * numberOfLBnodes]; + D27.f[d0PM] = &DD27[d0PM * numberOfLBnodes]; + D27.f[d0MP] = &DD27[d0MP * numberOfLBnodes]; + D27.f[d000] = &DD27[d000 * numberOfLBnodes]; + D27.f[dPPP] = &DD27[dPPP * numberOfLBnodes]; + D27.f[dMMP] = &DD27[dMMP * numberOfLBnodes]; + D27.f[dPMP] = &DD27[dPMP * numberOfLBnodes]; + D27.f[dMPP] = &DD27[dMPP * numberOfLBnodes]; + D27.f[dPPM] = &DD27[dPPM * numberOfLBnodes]; + D27.f[dMMM] = &DD27[dMMM * numberOfLBnodes]; + D27.f[dPMM] = &DD27[dPMM * numberOfLBnodes]; + D27.f[dMPM] = &DD27[dMPM * numberOfLBnodes]; + } + else + { + D27.f[dM00] = &DD27[dP00 * numberOfLBnodes]; + D27.f[dP00] = &DD27[dM00 * numberOfLBnodes]; + D27.f[d0M0] = &DD27[d0P0 * numberOfLBnodes]; + D27.f[d0P0] = &DD27[d0M0 * numberOfLBnodes]; + D27.f[d00M] = &DD27[d00P * numberOfLBnodes]; + D27.f[d00P] = &DD27[d00M * numberOfLBnodes]; + D27.f[dMM0] = &DD27[dPP0 * numberOfLBnodes]; + D27.f[dPP0] = &DD27[dMM0 * numberOfLBnodes]; + D27.f[dMP0] = &DD27[dPM0 * numberOfLBnodes]; + D27.f[dPM0] = &DD27[dMP0 * numberOfLBnodes]; + D27.f[dM0M] = &DD27[dP0P * numberOfLBnodes]; + D27.f[dP0P] = &DD27[dM0M * numberOfLBnodes]; + D27.f[dM0P] = &DD27[dP0M * numberOfLBnodes]; + D27.f[dP0M] = &DD27[dM0P * numberOfLBnodes]; + D27.f[d0MM] = &DD27[d0PP * numberOfLBnodes]; + D27.f[d0PP] = &DD27[d0MM * numberOfLBnodes]; + D27.f[d0MP] = &DD27[d0PM * numberOfLBnodes]; + D27.f[d0PM] = &DD27[d0MP * numberOfLBnodes]; + D27.f[d000] = &DD27[d000 * numberOfLBnodes]; + D27.f[dPPP] = &DD27[dMMM * numberOfLBnodes]; + D27.f[dMMP] = &DD27[dPPM * numberOfLBnodes]; + D27.f[dPMP] = &DD27[dMPM * numberOfLBnodes]; + D27.f[dMPP] = &DD27[dPMM * numberOfLBnodes]; + D27.f[dPPM] = &DD27[dMMP * numberOfLBnodes]; + D27.f[dMMM] = &DD27[dPPP * numberOfLBnodes]; + D27.f[dPMM] = &DD27[dMPP * numberOfLBnodes]; + D27.f[dMPM] = &DD27[dPMP * numberOfLBnodes]; + } + //////////////////////////////////////////////////////////////////////////////// + const unsigned x = threadIdx.x; // Globaler x-Index + const unsigned y = blockIdx.x; // Globaler y-Index + const unsigned z = blockIdx.y; // Globaler z-Index + + const unsigned nx = blockDim.x; + const unsigned ny = gridDim.x; + + const unsigned k = nx*(ny*z + y) + x; + ////////////////////////////////////////////////////////////////////////// + + if(k<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[dP00 * numberOfBCnodes]; + q_dirW = &QQ[dM00 * numberOfBCnodes]; + q_dirN = &QQ[d0P0 * numberOfBCnodes]; + q_dirS = &QQ[d0M0 * numberOfBCnodes]; + q_dirT = &QQ[d00P * numberOfBCnodes]; + q_dirB = &QQ[d00M * numberOfBCnodes]; + q_dirNE = &QQ[dPP0 * numberOfBCnodes]; + q_dirSW = &QQ[dMM0 * numberOfBCnodes]; + q_dirSE = &QQ[dPM0 * numberOfBCnodes]; + q_dirNW = &QQ[dMP0 * numberOfBCnodes]; + q_dirTE = &QQ[dP0P * numberOfBCnodes]; + q_dirBW = &QQ[dM0M * numberOfBCnodes]; + q_dirBE = &QQ[dP0M * numberOfBCnodes]; + q_dirTW = &QQ[dM0P * numberOfBCnodes]; + q_dirTN = &QQ[d0PP * numberOfBCnodes]; + q_dirBS = &QQ[d0MM * numberOfBCnodes]; + q_dirBN = &QQ[d0PM * numberOfBCnodes]; + q_dirTS = &QQ[d0MP * numberOfBCnodes]; + q_dirTNE = &QQ[dPPP * numberOfBCnodes]; + q_dirTSW = &QQ[dMMP * numberOfBCnodes]; + q_dirTSE = &QQ[dPMP * numberOfBCnodes]; + q_dirTNW = &QQ[dMPP * numberOfBCnodes]; + q_dirBNE = &QQ[dPPM * numberOfBCnodes]; + q_dirBSW = &QQ[dMMM * numberOfBCnodes]; + q_dirBSE = &QQ[dPMM * numberOfBCnodes]; + q_dirBNW = &QQ[dMPM * 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]; + 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 f_W = (D.f[dP00])[ke ]; + real f_E = (D.f[dM00])[kw ]; + real f_S = (D.f[d0P0])[kn ]; + real f_N = (D.f[d0M0])[ks ]; + real f_B = (D.f[d00P])[kt ]; + real f_T = (D.f[d00M])[kb ]; + real f_SW = (D.f[dPP0])[kne ]; + real f_NE = (D.f[dMM0])[ksw ]; + real f_NW = (D.f[dPM0])[kse ]; + real f_SE = (D.f[dMP0])[knw ]; + real f_BW = (D.f[dP0P])[kte ]; + real f_TE = (D.f[dM0M])[kbw ]; + real f_TW = (D.f[dP0M])[kbe ]; + real f_BE = (D.f[dM0P])[ktw ]; + real f_BS = (D.f[d0PP])[ktn ]; + real f_TN = (D.f[d0MM])[kbs ]; + real f_TS = (D.f[d0PM])[kbn ]; + real f_BN = (D.f[d0MP])[kts ]; + real f_ZERO = (D.f[d000])[kzero]; + real f_BSW = (D.f[dPPP])[ktne ]; + real f_BNE = (D.f[dMMP])[ktsw ]; + real f_BNW = (D.f[dPMP])[ktse ]; + real f_BSE = (D.f[dMPP])[ktnw ]; + real f_TSW = (D.f[dPPM])[kbne ]; + real f_TNE = (D.f[dMMM])[kbsw ]; + real f_TNW = (D.f[dPMM])[kbse ]; + real f_TSE = (D.f[dMPM])[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 + f_ZERO; + + //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); + + + //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); + + //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)+f_ZERO; + 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)); + 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[dP00])[ke ]; + real f27_E = (D27.f[dM00])[kw ]; + real f27_S = (D27.f[d0P0])[kn ]; + real f27_N = (D27.f[d0M0])[ks ]; + real f27_B = (D27.f[d00P])[kt ]; + real f27_T = (D27.f[d00M])[kb ]; + real f27_SW = (D27.f[dPP0])[kne ]; + real f27_NE = (D27.f[dMM0])[ksw ]; + real f27_NW = (D27.f[dPM0])[kse ]; + real f27_SE = (D27.f[dMP0])[knw ]; + real f27_BW = (D27.f[dP0P])[kte ]; + real f27_TE = (D27.f[dM0M])[kbw ]; + real f27_TW = (D27.f[dP0M])[kbe ]; + real f27_BE = (D27.f[dM0P])[ktw ]; + real f27_BS = (D27.f[d0PP])[ktn ]; + real f27_TN = (D27.f[d0MM])[kbs ]; + real f27_TS = (D27.f[d0PM])[kbn ]; + real f27_BN = (D27.f[d0MP])[kts ]; + real f27_ZERO = (D27.f[d000])[kzero]; + real f27_BSW = (D27.f[dPPP])[ktne ]; + real f27_BNE = (D27.f[dMMP])[ktsw ]; + real f27_BNW = (D27.f[dPMP])[ktse ]; + real f27_BSE = (D27.f[dMPP])[ktnw ]; + real f27_TSW = (D27.f[dPPM])[kbne ]; + real f27_TNE = (D27.f[dMMM])[kbsw ]; + real f27_TNW = (D27.f[dPMM])[kbse ]; + real f27_TSE = (D27.f[dMPM])[kbnw ]; + //////////////////////////////////////////////////////////////////////////////// + real cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3); + //////////////////////////////////////////////////////////////////////////////// + real ConcD = f27_TSE + f27_TNW + f27_TNE + f27_TSW + f27_BSE + f27_BNW + f27_BNE + f27_BSW + + f27_BN + f27_TS + f27_TN + f27_BS + f27_BE + f27_TW + f27_TE + f27_BW + f27_SE + f27_NW + f27_NE + f27_SW + + f27_T + f27_B + f27_N + f27_S + f27_E + f27_W + f27_ZERO; + + //real feq27_ZERO = c8over27* ConcD*(one-cu_sq); + real feq27_E = c2o27* ConcD*(c1o1+c3o1*( vx1 )+c9o2*( vx1 )*( vx1 )-cu_sq); + real feq27_W = c2o27* ConcD*(c1o1+c3o1*(-vx1 )+c9o2*(-vx1 )*(-vx1 )-cu_sq); + real feq27_N = c2o27* ConcD*(c1o1+c3o1*( vx2 )+c9o2*( vx2 )*( vx2 )-cu_sq); + real feq27_S = c2o27* ConcD*(c1o1+c3o1*( -vx2 )+c9o2*( -vx2 )*( -vx2 )-cu_sq); + real feq27_T = c2o27* ConcD*(c1o1+c3o1*( vx3)+c9o2*( vx3)*( vx3)-cu_sq); + real feq27_B = c2o27* ConcD*(c1o1+c3o1*( -vx3)+c9o2*( -vx3)*( -vx3)-cu_sq); + real feq27_NE = c1o54* ConcD*(c1o1+c3o1*( vx1+vx2 )+c9o2*( vx1+vx2 )*( vx1+vx2 )-cu_sq); + real feq27_SW = c1o54* ConcD*(c1o1+c3o1*(-vx1-vx2 )+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq); + real feq27_SE = c1o54* ConcD*(c1o1+c3o1*( vx1-vx2 )+c9o2*( vx1-vx2 )*( vx1-vx2 )-cu_sq); + real feq27_NW = c1o54* ConcD*(c1o1+c3o1*(-vx1+vx2 )+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq); + real feq27_TE = c1o54* ConcD*(c1o1+c3o1*( vx1 +vx3)+c9o2*( vx1 +vx3)*( vx1 +vx3)-cu_sq); + real feq27_BW = c1o54* ConcD*(c1o1+c3o1*(-vx1 -vx3)+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq); + real feq27_BE = c1o54* ConcD*(c1o1+c3o1*( vx1 -vx3)+c9o2*( vx1 -vx3)*( vx1 -vx3)-cu_sq); + real feq27_TW = c1o54* ConcD*(c1o1+c3o1*(-vx1 +vx3)+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq); + real feq27_TN = c1o54* ConcD*(c1o1+c3o1*( vx2+vx3)+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq); + real feq27_BS = c1o54* ConcD*(c1o1+c3o1*( -vx2-vx3)+c9o2*( -vx2-vx3)*( -vx2-vx3)-cu_sq); + real feq27_BN = c1o54* ConcD*(c1o1+c3o1*( vx2-vx3)+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq); + real feq27_TS = c1o54* ConcD*(c1o1+c3o1*( -vx2+vx3)+c9o2*( -vx2+vx3)*( -vx2+vx3)-cu_sq); + real feq27_TNE = c1o216*ConcD*(c1o1+c3o1*( vx1+vx2+vx3)+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq); + real feq27_BSW = c1o216*ConcD*(c1o1+c3o1*(-vx1-vx2-vx3)+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq); + real feq27_BNE = c1o216*ConcD*(c1o1+c3o1*( vx1+vx2-vx3)+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq); + real feq27_TSW = c1o216*ConcD*(c1o1+c3o1*(-vx1-vx2+vx3)+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq); + real feq27_TSE = c1o216*ConcD*(c1o1+c3o1*( vx1-vx2+vx3)+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq); + real feq27_BNW = c1o216*ConcD*(c1o1+c3o1*(-vx1+vx2-vx3)+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq); + real feq27_BSE = c1o216*ConcD*(c1o1+c3o1*( vx1-vx2-vx3)+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq); + real feq27_TNW = c1o216*ConcD*(c1o1+c3o1*(-vx1+vx2+vx3)+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq); + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + real TempD = temp[k];//one;//temp[k]; + + //real feqW27_ZERO = c8over27* TempD*(one-cu_sq); + real feqW27_E = c2o27* TempD*(c1o1+c3o1*( vx1 )+c9o2*( vx1 )*( vx1 )-cu_sq); + real feqW27_W = c2o27* TempD*(c1o1+c3o1*(-vx1 )+c9o2*(-vx1 )*(-vx1 )-cu_sq); + real feqW27_N = c2o27* TempD*(c1o1+c3o1*( vx2 )+c9o2*( vx2 )*( vx2 )-cu_sq); + real feqW27_S = c2o27* TempD*(c1o1+c3o1*( -vx2 )+c9o2*( -vx2 )*( -vx2 )-cu_sq); + real feqW27_T = c2o27* TempD*(c1o1+c3o1*( vx3)+c9o2*( vx3)*( vx3)-cu_sq); + real feqW27_B = c2o27* TempD*(c1o1+c3o1*( -vx3)+c9o2*( -vx3)*( -vx3)-cu_sq); + real feqW27_NE = c1o54* TempD*(c1o1+c3o1*( vx1+vx2 )+c9o2*( vx1+vx2 )*( vx1+vx2 )-cu_sq); + real feqW27_SW = c1o54* TempD*(c1o1+c3o1*(-vx1-vx2 )+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq); + real feqW27_SE = c1o54* TempD*(c1o1+c3o1*( vx1-vx2 )+c9o2*( vx1-vx2 )*( vx1-vx2 )-cu_sq); + real feqW27_NW = c1o54* TempD*(c1o1+c3o1*(-vx1+vx2 )+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq); + real feqW27_TE = c1o54* TempD*(c1o1+c3o1*( vx1 +vx3)+c9o2*( vx1 +vx3)*( vx1 +vx3)-cu_sq); + real feqW27_BW = c1o54* TempD*(c1o1+c3o1*(-vx1 -vx3)+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq); + real feqW27_BE = c1o54* TempD*(c1o1+c3o1*( vx1 -vx3)+c9o2*( vx1 -vx3)*( vx1 -vx3)-cu_sq); + real feqW27_TW = c1o54* TempD*(c1o1+c3o1*(-vx1 +vx3)+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq); + real feqW27_TN = c1o54* TempD*(c1o1+c3o1*( vx2+vx3)+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq); + real feqW27_BS = c1o54* TempD*(c1o1+c3o1*( -vx2-vx3)+c9o2*( -vx2-vx3)*( -vx2-vx3)-cu_sq); + real feqW27_BN = c1o54* TempD*(c1o1+c3o1*( vx2-vx3)+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq); + real feqW27_TS = c1o54* TempD*(c1o1+c3o1*( -vx2+vx3)+c9o2*( -vx2+vx3)*( -vx2+vx3)-cu_sq); + real feqW27_TNE = c1o216*TempD*(c1o1+c3o1*( vx1+vx2+vx3)+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq); + real feqW27_BSW = c1o216*TempD*(c1o1+c3o1*(-vx1-vx2-vx3)+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq); + real feqW27_BNE = c1o216*TempD*(c1o1+c3o1*( vx1+vx2-vx3)+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq); + real feqW27_TSW = c1o216*TempD*(c1o1+c3o1*(-vx1-vx2+vx3)+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq); + real feqW27_TSE = c1o216*TempD*(c1o1+c3o1*( vx1-vx2+vx3)+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq); + real feqW27_BNW = c1o216*TempD*(c1o1+c3o1*(-vx1+vx2-vx3)+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq); + real feqW27_BSE = c1o216*TempD*(c1o1+c3o1*( vx1-vx2-vx3)+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq); + real feqW27_TNW = c1o216*TempD*(c1o1+c3o1*(-vx1+vx2+vx3)+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq); + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + real omegaD = c3o1 - sqrt(c3o1); + //real Lam = -(c1o2-one/omegaD); + //real nue_d = Lam/three; + //real ae = zero; + //real ae = diffusivity/nue_d - one; + + + ////////////////////////////////////////////////////////////////////////// + if (isEvenTimestep==false) + { + D27.f[dP00] = &DD27[dP00 * numberOfLBnodes]; + D27.f[dM00] = &DD27[dM00 * numberOfLBnodes]; + D27.f[d0P0] = &DD27[d0P0 * numberOfLBnodes]; + D27.f[d0M0] = &DD27[d0M0 * numberOfLBnodes]; + D27.f[d00P] = &DD27[d00P * numberOfLBnodes]; + D27.f[d00M] = &DD27[d00M * numberOfLBnodes]; + D27.f[dPP0] = &DD27[dPP0 * numberOfLBnodes]; + D27.f[dMM0] = &DD27[dMM0 * numberOfLBnodes]; + D27.f[dPM0] = &DD27[dPM0 * numberOfLBnodes]; + D27.f[dMP0] = &DD27[dMP0 * numberOfLBnodes]; + D27.f[dP0P] = &DD27[dP0P * numberOfLBnodes]; + D27.f[dM0M] = &DD27[dM0M * numberOfLBnodes]; + D27.f[dP0M] = &DD27[dP0M * numberOfLBnodes]; + D27.f[dM0P] = &DD27[dM0P * numberOfLBnodes]; + D27.f[d0PP] = &DD27[d0PP * numberOfLBnodes]; + D27.f[d0MM] = &DD27[d0MM * numberOfLBnodes]; + D27.f[d0PM] = &DD27[d0PM * numberOfLBnodes]; + D27.f[d0MP] = &DD27[d0MP * numberOfLBnodes]; + D27.f[d000] = &DD27[d000 * numberOfLBnodes]; + D27.f[dPPP] = &DD27[dPPP * numberOfLBnodes]; + D27.f[dMMP] = &DD27[dMMP * numberOfLBnodes]; + D27.f[dPMP] = &DD27[dPMP * numberOfLBnodes]; + D27.f[dMPP] = &DD27[dMPP * numberOfLBnodes]; + D27.f[dPPM] = &DD27[dPPM * numberOfLBnodes]; + D27.f[dMMM] = &DD27[dMMM * numberOfLBnodes]; + D27.f[dPMM] = &DD27[dPMM * numberOfLBnodes]; + D27.f[dMPM] = &DD27[dMPM * numberOfLBnodes]; + } + else + { + D27.f[dM00] = &DD27[dP00 * numberOfLBnodes]; + D27.f[dP00] = &DD27[dM00 * numberOfLBnodes]; + D27.f[d0M0] = &DD27[d0P0 * numberOfLBnodes]; + D27.f[d0P0] = &DD27[d0M0 * numberOfLBnodes]; + D27.f[d00M] = &DD27[d00P * numberOfLBnodes]; + D27.f[d00P] = &DD27[d00M * numberOfLBnodes]; + D27.f[dMM0] = &DD27[dPP0 * numberOfLBnodes]; + D27.f[dPP0] = &DD27[dMM0 * numberOfLBnodes]; + D27.f[dMP0] = &DD27[dPM0 * numberOfLBnodes]; + D27.f[dPM0] = &DD27[dMP0 * numberOfLBnodes]; + D27.f[dM0M] = &DD27[dP0P * numberOfLBnodes]; + D27.f[dP0P] = &DD27[dM0M * numberOfLBnodes]; + D27.f[dM0P] = &DD27[dP0M * numberOfLBnodes]; + D27.f[dP0M] = &DD27[dM0P * numberOfLBnodes]; + D27.f[d0MM] = &DD27[d0PP * numberOfLBnodes]; + D27.f[d0PP] = &DD27[d0MM * numberOfLBnodes]; + D27.f[d0MP] = &DD27[d0PM * numberOfLBnodes]; + D27.f[d0PM] = &DD27[d0MP * numberOfLBnodes]; + D27.f[d000] = &DD27[d000 * numberOfLBnodes]; + D27.f[dPPP] = &DD27[dMMM * numberOfLBnodes]; + D27.f[dMMP] = &DD27[dPPM * numberOfLBnodes]; + D27.f[dPMP] = &DD27[dMPM * numberOfLBnodes]; + D27.f[dMPP] = &DD27[dPMM * numberOfLBnodes]; + D27.f[dPPM] = &DD27[dMMP * numberOfLBnodes]; + D27.f[dMMM] = &DD27[dPPP * numberOfLBnodes]; + D27.f[dPMM] = &DD27[dMPP * numberOfLBnodes]; + D27.f[dMPM] = &DD27[dPMP * numberOfLBnodes]; + } + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //Test + //(D.f[d000])[k]=0.1f; + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + q = q_dirE[ ke ]; if (q>=c0o1 && q<=c1o1) (D27.f[dM00])[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[dP00])[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[d0M0])[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[d0P0])[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[d00M])[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[d00P])[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[dMM0])[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[dPP0])[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[dMP0])[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[dPM0])[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[dM0M])[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[dP0P])[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[dM0P])[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[dP0M])[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[d0MM])[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[d0PP])[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[d0MP])[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[d0PM])[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[dMMM])[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[dPPP])[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[dMMP])[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[dPPM])[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[dMPM])[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[dPMP])[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[dMPP])[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[dPMM])[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[dM00])[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[dP00])[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[d0M0])[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[d0P0])[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[d00M])[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[d00P])[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[dMM0])[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[dPP0])[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[dMP0])[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[dPM0])[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[dM0M])[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[dP0P])[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[dM0P])[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[dP0M])[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[d0MM])[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[d0PP])[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[d0MP])[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[d0PM])[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[dMMM])[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[dPPP])[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[dMMP])[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[dPPM])[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[dMPM])[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[dPMP])[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[dMPP])[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[dPMM])[kbse]=(two*feqW27_BSE-(f27_TNW*(q*omegaD-one)-omegaD*feq27_TNW*(q-one))/(omegaD-one)+f27_BSE*q)/(q+one); + } +} +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +////////////////////////////////////////////////////////////////////////////// +__global__ void QADBB27( real* DD, + real* DD27, + real* temp, + real diffusivity, + int* k_Q, + real* QQ, + unsigned int numberOfBCnodes, + real om1, + unsigned int* neighborX, + unsigned int* neighborY, + unsigned int* neighborZ, + unsigned long long numberOfLBnodes, + bool isEvenTimestep) +{ + //Distributions27 D; + //if (isEvenTimestep==true) + //{ + // D.f[dP00] = &DD[dP00 * size_Mat]; + // D.f[dM00] = &DD[dM00 * size_Mat]; + // D.f[d0P0] = &DD[d0P0 * size_Mat]; + // D.f[d0M0] = &DD[d0M0 * size_Mat]; + // D.f[d00P] = &DD[d00P * size_Mat]; + // D.f[d00M] = &DD[d00M * size_Mat]; + // D.f[dPP0] = &DD[dPP0 * size_Mat]; + // D.f[dMM0] = &DD[dMM0 * size_Mat]; + // D.f[dPM0] = &DD[dPM0 * size_Mat]; + // D.f[dMP0] = &DD[dMP0 * size_Mat]; + // D.f[dP0P] = &DD[dP0P * size_Mat]; + // D.f[dM0M] = &DD[dM0M * size_Mat]; + // D.f[dP0M] = &DD[dP0M * size_Mat]; + // D.f[dM0P] = &DD[dM0P * size_Mat]; + // D.f[d0PP] = &DD[d0PP * size_Mat]; + // D.f[d0MM] = &DD[d0MM * size_Mat]; + // D.f[d0PM] = &DD[d0PM * size_Mat]; + // D.f[d0MP] = &DD[d0MP * size_Mat]; + // D.f[d000] = &DD[d000 * size_Mat]; + // D.f[dPPP] = &DD[dPPP * size_Mat]; + // D.f[dMMP] = &DD[dMMP * size_Mat]; + // D.f[dPMP] = &DD[dPMP * size_Mat]; + // D.f[dMPP] = &DD[dMPP * size_Mat]; + // D.f[dPPM] = &DD[dPPM * size_Mat]; + // D.f[dMMM] = &DD[dMMM * size_Mat]; + // D.f[dPMM] = &DD[dPMM * size_Mat]; + // D.f[dMPM] = &DD[dMPM * size_Mat]; + //} + //else + //{ + // D.f[dM00] = &DD[dP00 * size_Mat]; + // D.f[dP00] = &DD[dM00 * size_Mat]; + // D.f[d0M0] = &DD[d0P0 * size_Mat]; + // D.f[d0P0] = &DD[d0M0 * size_Mat]; + // D.f[d00M] = &DD[d00P * size_Mat]; + // D.f[d00P] = &DD[d00M * size_Mat]; + // D.f[dMM0] = &DD[dPP0 * size_Mat]; + // D.f[dPP0] = &DD[dMM0 * size_Mat]; + // D.f[dMP0] = &DD[dPM0 * size_Mat]; + // D.f[dPM0] = &DD[dMP0 * size_Mat]; + // D.f[dM0M] = &DD[dP0P * size_Mat]; + // D.f[dP0P] = &DD[dM0M * size_Mat]; + // D.f[dM0P] = &DD[dP0M * size_Mat]; + // D.f[dP0M] = &DD[dM0P * size_Mat]; + // D.f[d0MM] = &DD[d0PP * size_Mat]; + // D.f[d0PP] = &DD[d0MM * size_Mat]; + // D.f[d0MP] = &DD[d0PM * size_Mat]; + // D.f[d0PM] = &DD[d0MP * size_Mat]; + // D.f[d000] = &DD[d000 * size_Mat]; + // D.f[dPPP] = &DD[dMMM * size_Mat]; + // D.f[dMMP] = &DD[dPPM * size_Mat]; + // D.f[dPMP] = &DD[dMPM * size_Mat]; + // D.f[dMPP] = &DD[dPMM * size_Mat]; + // D.f[dPPM] = &DD[dMMP * size_Mat]; + // D.f[dMMM] = &DD[dPPP * size_Mat]; + // D.f[dPMM] = &DD[dMPP * size_Mat]; + // D.f[dMPM] = &DD[dPMP * size_Mat]; + //} + + Distributions27 D27; + if (isEvenTimestep==true) + { + D27.f[dP00] = &DD27[dP00 * numberOfLBnodes]; + D27.f[dM00] = &DD27[dM00 * numberOfLBnodes]; + D27.f[d0P0] = &DD27[d0P0 * numberOfLBnodes]; + D27.f[d0M0] = &DD27[d0M0 * numberOfLBnodes]; + D27.f[d00P] = &DD27[d00P * numberOfLBnodes]; + D27.f[d00M] = &DD27[d00M * numberOfLBnodes]; + D27.f[dPP0] = &DD27[dPP0 * numberOfLBnodes]; + D27.f[dMM0] = &DD27[dMM0 * numberOfLBnodes]; + D27.f[dPM0] = &DD27[dPM0 * numberOfLBnodes]; + D27.f[dMP0] = &DD27[dMP0 * numberOfLBnodes]; + D27.f[dP0P] = &DD27[dP0P * numberOfLBnodes]; + D27.f[dM0M] = &DD27[dM0M * numberOfLBnodes]; + D27.f[dP0M] = &DD27[dP0M * numberOfLBnodes]; + D27.f[dM0P] = &DD27[dM0P * numberOfLBnodes]; + D27.f[d0PP] = &DD27[d0PP * numberOfLBnodes]; + D27.f[d0MM] = &DD27[d0MM * numberOfLBnodes]; + D27.f[d0PM] = &DD27[d0PM * numberOfLBnodes]; + D27.f[d0MP] = &DD27[d0MP * numberOfLBnodes]; + D27.f[d000] = &DD27[d000 * numberOfLBnodes]; + D27.f[dPPP] = &DD27[dPPP * numberOfLBnodes]; + D27.f[dMMP] = &DD27[dMMP * numberOfLBnodes]; + D27.f[dPMP] = &DD27[dPMP * numberOfLBnodes]; + D27.f[dMPP] = &DD27[dMPP * numberOfLBnodes]; + D27.f[dPPM] = &DD27[dPPM * numberOfLBnodes]; + D27.f[dMMM] = &DD27[dMMM * numberOfLBnodes]; + D27.f[dPMM] = &DD27[dPMM * numberOfLBnodes]; + D27.f[dMPM] = &DD27[dMPM * numberOfLBnodes]; + } + else + { + D27.f[dM00] = &DD27[dP00 * numberOfLBnodes]; + D27.f[dP00] = &DD27[dM00 * numberOfLBnodes]; + D27.f[d0M0] = &DD27[d0P0 * numberOfLBnodes]; + D27.f[d0P0] = &DD27[d0M0 * numberOfLBnodes]; + D27.f[d00M] = &DD27[d00P * numberOfLBnodes]; + D27.f[d00P] = &DD27[d00M * numberOfLBnodes]; + D27.f[dMM0] = &DD27[dPP0 * numberOfLBnodes]; + D27.f[dPP0] = &DD27[dMM0 * numberOfLBnodes]; + D27.f[dMP0] = &DD27[dPM0 * numberOfLBnodes]; + D27.f[dPM0] = &DD27[dMP0 * numberOfLBnodes]; + D27.f[dM0M] = &DD27[dP0P * numberOfLBnodes]; + D27.f[dP0P] = &DD27[dM0M * numberOfLBnodes]; + D27.f[dM0P] = &DD27[dP0M * numberOfLBnodes]; + D27.f[dP0M] = &DD27[dM0P * numberOfLBnodes]; + D27.f[d0MM] = &DD27[d0PP * numberOfLBnodes]; + D27.f[d0PP] = &DD27[d0MM * numberOfLBnodes]; + D27.f[d0MP] = &DD27[d0PM * numberOfLBnodes]; + D27.f[d0PM] = &DD27[d0MP * numberOfLBnodes]; + D27.f[d000] = &DD27[d000 * numberOfLBnodes]; + D27.f[dPPP] = &DD27[dMMM * numberOfLBnodes]; + D27.f[dMMP] = &DD27[dPPM * numberOfLBnodes]; + D27.f[dPMP] = &DD27[dMPM * numberOfLBnodes]; + D27.f[dMPP] = &DD27[dPMM * numberOfLBnodes]; + D27.f[dPPM] = &DD27[dMMP * numberOfLBnodes]; + D27.f[dMMM] = &DD27[dPPP * numberOfLBnodes]; + D27.f[dPMM] = &DD27[dMPP * numberOfLBnodes]; + D27.f[dMPM] = &DD27[dPMP * numberOfLBnodes]; + } + //////////////////////////////////////////////////////////////////////////////// + const unsigned x = threadIdx.x; // Globaler x-Index + const unsigned y = blockIdx.x; // Globaler y-Index + const unsigned z = blockIdx.y; // Globaler z-Index + + const unsigned nx = blockDim.x; + const unsigned ny = gridDim.x; + + const unsigned k = nx*(ny*z + y) + x; + ////////////////////////////////////////////////////////////////////////// + + if(k<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[dP00 * numberOfBCnodes]; + q_dirW = &QQ[dM00 * numberOfBCnodes]; + q_dirN = &QQ[d0P0 * numberOfBCnodes]; + q_dirS = &QQ[d0M0 * numberOfBCnodes]; + q_dirT = &QQ[d00P * numberOfBCnodes]; + q_dirB = &QQ[d00M * numberOfBCnodes]; + q_dirNE = &QQ[dPP0 * numberOfBCnodes]; + q_dirSW = &QQ[dMM0 * numberOfBCnodes]; + q_dirSE = &QQ[dPM0 * numberOfBCnodes]; + q_dirNW = &QQ[dMP0 * numberOfBCnodes]; + q_dirTE = &QQ[dP0P * numberOfBCnodes]; + q_dirBW = &QQ[dM0M * numberOfBCnodes]; + q_dirBE = &QQ[dP0M * numberOfBCnodes]; + q_dirTW = &QQ[dM0P * numberOfBCnodes]; + q_dirTN = &QQ[d0PP * numberOfBCnodes]; + q_dirBS = &QQ[d0MM * numberOfBCnodes]; + q_dirBN = &QQ[d0PM * numberOfBCnodes]; + q_dirTS = &QQ[d0MP * numberOfBCnodes]; + q_dirTNE = &QQ[dPPP * numberOfBCnodes]; + q_dirTSW = &QQ[dMMP * numberOfBCnodes]; + q_dirTSE = &QQ[dPMP * numberOfBCnodes]; + q_dirTNW = &QQ[dMPP * numberOfBCnodes]; + q_dirBNE = &QQ[dPPM * numberOfBCnodes]; + q_dirBSW = &QQ[dMMM * numberOfBCnodes]; + q_dirBSE = &QQ[dPMM * numberOfBCnodes]; + q_dirBNW = &QQ[dMPM * 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]; + 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 f_W = (D.f[dP00])[ke ]; + //real f_E = (D.f[dM00])[kw ]; + //real f_S = (D.f[d0P0])[kn ]; + //real f_N = (D.f[d0M0])[ks ]; + //real f_B = (D.f[d00P])[kt ]; + //real f_T = (D.f[d00M])[kb ]; + //real f_SW = (D.f[dPP0])[kne ]; + //real f_NE = (D.f[dMM0])[ksw ]; + //real f_NW = (D.f[dPM0])[kse ]; + //real f_SE = (D.f[dMP0])[knw ]; + //real f_BW = (D.f[dP0P])[kte ]; + //real f_TE = (D.f[dM0M])[kbw ]; + //real f_TW = (D.f[dP0M])[kbe ]; + //real f_BE = (D.f[dM0P])[ktw ]; + //real f_BS = (D.f[d0PP])[ktn ]; + //real f_TN = (D.f[d0MM])[kbs ]; + //real f_TS = (D.f[d0PM])[kbn ]; + //real f_BN = (D.f[d0MP])[kts ]; + //real f_ZERO = (D.f[d000])[kzero]; + //real f_BSW = (D.f[dPPP])[ktne ]; + //real f_BNE = (D.f[dMMP])[ktsw ]; + //real f_BNW = (D.f[dPMP])[ktse ]; + //real f_BSE = (D.f[dMPP])[ktnw ]; + //real f_TSW = (D.f[dPPM])[kbne ]; + //real f_TNE = (D.f[dMMM])[kbsw ]; + //real f_TNW = (D.f[dPMM])[kbse ]; + //real f_TSE = (D.f[dMPM])[kbnw ]; + //////////////////////////////////////////////////////////////////////////////// + //real vx1, vx2, vx3, /*drho, feq,*/ q; + real 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 + f_ZERO; + + //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); + + + //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); + + //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)+f_ZERO; + //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)); + //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[dP00])[ke ]; + real f27_E = (D27.f[dM00])[kw ]; + real f27_S = (D27.f[d0P0])[kn ]; + real f27_N = (D27.f[d0M0])[ks ]; + real f27_B = (D27.f[d00P])[kt ]; + real f27_T = (D27.f[d00M])[kb ]; + real f27_SW = (D27.f[dPP0])[kne ]; + real f27_NE = (D27.f[dMM0])[ksw ]; + real f27_NW = (D27.f[dPM0])[kse ]; + real f27_SE = (D27.f[dMP0])[knw ]; + real f27_BW = (D27.f[dP0P])[kte ]; + real f27_TE = (D27.f[dM0M])[kbw ]; + real f27_TW = (D27.f[dP0M])[kbe ]; + real f27_BE = (D27.f[dM0P])[ktw ]; + real f27_BS = (D27.f[d0PP])[ktn ]; + real f27_TN = (D27.f[d0MM])[kbs ]; + real f27_TS = (D27.f[d0PM])[kbn ]; + real f27_BN = (D27.f[d0MP])[kts ]; + //real f27_ZERO = (D27.f[d000])[kzero]; + real f27_BSW = (D27.f[dPPP])[ktne ]; + real f27_BNE = (D27.f[dMMP])[ktsw ]; + real f27_BNW = (D27.f[dPMP])[ktse ]; + real f27_BSE = (D27.f[dMPP])[ktnw ]; + real f27_TSW = (D27.f[dPPM])[kbne ]; + real f27_TNE = (D27.f[dMMM])[kbsw ]; + real f27_TNW = (D27.f[dPMM])[kbse ]; + real f27_TSE = (D27.f[dMPM])[kbnw ]; + //////////////////////////////////////////////////////////////////////////////// + //real cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3); + //////////////////////////////////////////////////////////////////////////////// + //real ConcD = f27_TSE + f27_TNW + f27_TNE + f27_TSW + f27_BSE + f27_BNW + f27_BNE + f27_BSW + + // f27_BN + f27_TS + f27_TN + f27_BS + f27_BE + f27_TW + f27_TE + f27_BW + f27_SE + f27_NW + f27_NE + f27_SW + + // f27_T + f27_B + f27_N + f27_S + f27_E + f27_W + f27_ZERO; + + //real feq27_ZERO = c8over27* ConcD*(one-cu_sq); + //real feq27_E = c2o27* ConcD*(c1o1+c3o1*( vx1 )+c9o2*( vx1 )*( vx1 )-cu_sq); + //real feq27_W = c2o27* ConcD*(c1o1+c3o1*(-vx1 )+c9o2*(-vx1 )*(-vx1 )-cu_sq); + //real feq27_N = c2o27* ConcD*(c1o1+c3o1*( vx2 )+c9o2*( vx2 )*( vx2 )-cu_sq); + //real feq27_S = c2o27* ConcD*(c1o1+c3o1*( -vx2 )+c9o2*( -vx2 )*( -vx2 )-cu_sq); + //real feq27_T = c2o27* ConcD*(c1o1+c3o1*( vx3)+c9o2*( vx3)*( vx3)-cu_sq); + //real feq27_B = c2o27* ConcD*(c1o1+c3o1*( -vx3)+c9o2*( -vx3)*( -vx3)-cu_sq); + //real feq27_NE = c1o54* ConcD*(c1o1+c3o1*( vx1+vx2 )+c9o2*( vx1+vx2 )*( vx1+vx2 )-cu_sq); + //real feq27_SW = c1o54* ConcD*(c1o1+c3o1*(-vx1-vx2 )+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq); + //real feq27_SE = c1o54* ConcD*(c1o1+c3o1*( vx1-vx2 )+c9o2*( vx1-vx2 )*( vx1-vx2 )-cu_sq); + //real feq27_NW = c1o54* ConcD*(c1o1+c3o1*(-vx1+vx2 )+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq); + //real feq27_TE = c1o54* ConcD*(c1o1+c3o1*( vx1 +vx3)+c9o2*( vx1 +vx3)*( vx1 +vx3)-cu_sq); + //real feq27_BW = c1o54* ConcD*(c1o1+c3o1*(-vx1 -vx3)+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq); + //real feq27_BE = c1o54* ConcD*(c1o1+c3o1*( vx1 -vx3)+c9o2*( vx1 -vx3)*( vx1 -vx3)-cu_sq); + //real feq27_TW = c1o54* ConcD*(c1o1+c3o1*(-vx1 +vx3)+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq); + //real feq27_TN = c1o54* ConcD*(c1o1+c3o1*( vx2+vx3)+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq); + //real feq27_BS = c1o54* ConcD*(c1o1+c3o1*( -vx2-vx3)+c9o2*( -vx2-vx3)*( -vx2-vx3)-cu_sq); + //real feq27_BN = c1o54* ConcD*(c1o1+c3o1*( vx2-vx3)+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq); + //real feq27_TS = c1o54* ConcD*(c1o1+c3o1*( -vx2+vx3)+c9o2*( -vx2+vx3)*( -vx2+vx3)-cu_sq); + //real feq27_TNE = c1o216*ConcD*(c1o1+c3o1*( vx1+vx2+vx3)+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq); + //real feq27_BSW = c1o216*ConcD*(c1o1+c3o1*(-vx1-vx2-vx3)+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq); + //real feq27_BNE = c1o216*ConcD*(c1o1+c3o1*( vx1+vx2-vx3)+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq); + //real feq27_TSW = c1o216*ConcD*(c1o1+c3o1*(-vx1-vx2+vx3)+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq); + //real feq27_TSE = c1o216*ConcD*(c1o1+c3o1*( vx1-vx2+vx3)+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq); + //real feq27_BNW = c1o216*ConcD*(c1o1+c3o1*(-vx1+vx2-vx3)+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq); + //real feq27_BSE = c1o216*ConcD*(c1o1+c3o1*( vx1-vx2-vx3)+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq); + //real feq27_TNW = c1o216*ConcD*(c1o1+c3o1*(-vx1+vx2+vx3)+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq); + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //real TempD = temp[k]; + + //real feqW27_ZERO = c8over27* TempD*(one-cu_sq); + //real feqW27_E = c2o27* TempD*(c1o1+c3o1*( vx1 )+c9o2*( vx1 )*( vx1 )-cu_sq); + //real feqW27_W = c2o27* TempD*(c1o1+c3o1*(-vx1 )+c9o2*(-vx1 )*(-vx1 )-cu_sq); + //real feqW27_N = c2o27* TempD*(c1o1+c3o1*( vx2 )+c9o2*( vx2 )*( vx2 )-cu_sq); + //real feqW27_S = c2o27* TempD*(c1o1+c3o1*( -vx2 )+c9o2*( -vx2 )*( -vx2 )-cu_sq); + //real feqW27_T = c2o27* TempD*(c1o1+c3o1*( vx3)+c9o2*( vx3)*( vx3)-cu_sq); + //real feqW27_B = c2o27* TempD*(c1o1+c3o1*( -vx3)+c9o2*( -vx3)*( -vx3)-cu_sq); + //real feqW27_NE = c1o54* TempD*(c1o1+c3o1*( vx1+vx2 )+c9o2*( vx1+vx2 )*( vx1+vx2 )-cu_sq); + //real feqW27_SW = c1o54* TempD*(c1o1+c3o1*(-vx1-vx2 )+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq); + //real feqW27_SE = c1o54* TempD*(c1o1+c3o1*( vx1-vx2 )+c9o2*( vx1-vx2 )*( vx1-vx2 )-cu_sq); + //real feqW27_NW = c1o54* TempD*(c1o1+c3o1*(-vx1+vx2 )+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq); + //real feqW27_TE = c1o54* TempD*(c1o1+c3o1*( vx1 +vx3)+c9o2*( vx1 +vx3)*( vx1 +vx3)-cu_sq); + //real feqW27_BW = c1o54* TempD*(c1o1+c3o1*(-vx1 -vx3)+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq); + //real feqW27_BE = c1o54* TempD*(c1o1+c3o1*( vx1 -vx3)+c9o2*( vx1 -vx3)*( vx1 -vx3)-cu_sq); + //real feqW27_TW = c1o54* TempD*(c1o1+c3o1*(-vx1 +vx3)+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq); + //real feqW27_TN = c1o54* TempD*(c1o1+c3o1*( vx2+vx3)+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq); + //real feqW27_BS = c1o54* TempD*(c1o1+c3o1*( -vx2-vx3)+c9o2*( -vx2-vx3)*( -vx2-vx3)-cu_sq); + //real feqW27_BN = c1o54* TempD*(c1o1+c3o1*( vx2-vx3)+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq); + //real feqW27_TS = c1o54* TempD*(c1o1+c3o1*( -vx2+vx3)+c9o2*( -vx2+vx3)*( -vx2+vx3)-cu_sq); + //real feqW27_TNE = c1o216*TempD*(c1o1+c3o1*( vx1+vx2+vx3)+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq); + //real feqW27_BSW = c1o216*TempD*(c1o1+c3o1*(-vx1-vx2-vx3)+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq); + //real feqW27_BNE = c1o216*TempD*(c1o1+c3o1*( vx1+vx2-vx3)+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq); + //real feqW27_TSW = c1o216*TempD*(c1o1+c3o1*(-vx1-vx2+vx3)+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq); + //real feqW27_TSE = c1o216*TempD*(c1o1+c3o1*( vx1-vx2+vx3)+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq); + //real feqW27_BNW = c1o216*TempD*(c1o1+c3o1*(-vx1+vx2-vx3)+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq); + //real feqW27_BSE = c1o216*TempD*(c1o1+c3o1*( vx1-vx2-vx3)+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq); + //real feqW27_TNW = c1o216*TempD*(c1o1+c3o1*(-vx1+vx2+vx3)+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq); + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + real omegaD = c3o1 - sqrt(c3o1); + //real Lam = -(c1o2-one/omegaD); + //real nue_d = Lam/three; + //real ae = zero; + //real ae = diffusivity/nue_d - one; + + + ////////////////////////////////////////////////////////////////////////// + if (isEvenTimestep==false) + { + D27.f[dP00] = &DD27[dP00 * numberOfLBnodes]; + D27.f[dM00] = &DD27[dM00 * numberOfLBnodes]; + D27.f[d0P0] = &DD27[d0P0 * numberOfLBnodes]; + D27.f[d0M0] = &DD27[d0M0 * numberOfLBnodes]; + D27.f[d00P] = &DD27[d00P * numberOfLBnodes]; + D27.f[d00M] = &DD27[d00M * numberOfLBnodes]; + D27.f[dPP0] = &DD27[dPP0 * numberOfLBnodes]; + D27.f[dMM0] = &DD27[dMM0 * numberOfLBnodes]; + D27.f[dPM0] = &DD27[dPM0 * numberOfLBnodes]; + D27.f[dMP0] = &DD27[dMP0 * numberOfLBnodes]; + D27.f[dP0P] = &DD27[dP0P * numberOfLBnodes]; + D27.f[dM0M] = &DD27[dM0M * numberOfLBnodes]; + D27.f[dP0M] = &DD27[dP0M * numberOfLBnodes]; + D27.f[dM0P] = &DD27[dM0P * numberOfLBnodes]; + D27.f[d0PP] = &DD27[d0PP * numberOfLBnodes]; + D27.f[d0MM] = &DD27[d0MM * numberOfLBnodes]; + D27.f[d0PM] = &DD27[d0PM * numberOfLBnodes]; + D27.f[d0MP] = &DD27[d0MP * numberOfLBnodes]; + D27.f[d000] = &DD27[d000 * numberOfLBnodes]; + D27.f[dPPP] = &DD27[dPPP * numberOfLBnodes]; + D27.f[dMMP] = &DD27[dMMP * numberOfLBnodes]; + D27.f[dPMP] = &DD27[dPMP * numberOfLBnodes]; + D27.f[dMPP] = &DD27[dMPP * numberOfLBnodes]; + D27.f[dPPM] = &DD27[dPPM * numberOfLBnodes]; + D27.f[dMMM] = &DD27[dMMM * numberOfLBnodes]; + D27.f[dPMM] = &DD27[dPMM * numberOfLBnodes]; + D27.f[dMPM] = &DD27[dMPM * numberOfLBnodes]; + } + else + { + D27.f[dM00] = &DD27[dP00 * numberOfLBnodes]; + D27.f[dP00] = &DD27[dM00 * numberOfLBnodes]; + D27.f[d0M0] = &DD27[d0P0 * numberOfLBnodes]; + D27.f[d0P0] = &DD27[d0M0 * numberOfLBnodes]; + D27.f[d00M] = &DD27[d00P * numberOfLBnodes]; + D27.f[d00P] = &DD27[d00M * numberOfLBnodes]; + D27.f[dMM0] = &DD27[dPP0 * numberOfLBnodes]; + D27.f[dPP0] = &DD27[dMM0 * numberOfLBnodes]; + D27.f[dMP0] = &DD27[dPM0 * numberOfLBnodes]; + D27.f[dPM0] = &DD27[dMP0 * numberOfLBnodes]; + D27.f[dM0M] = &DD27[dP0P * numberOfLBnodes]; + D27.f[dP0P] = &DD27[dM0M * numberOfLBnodes]; + D27.f[dM0P] = &DD27[dP0M * numberOfLBnodes]; + D27.f[dP0M] = &DD27[dM0P * numberOfLBnodes]; + D27.f[d0MM] = &DD27[d0PP * numberOfLBnodes]; + D27.f[d0PP] = &DD27[d0MM * numberOfLBnodes]; + D27.f[d0MP] = &DD27[d0PM * numberOfLBnodes]; + D27.f[d0PM] = &DD27[d0MP * numberOfLBnodes]; + D27.f[d000] = &DD27[d000 * numberOfLBnodes]; + D27.f[dPPP] = &DD27[dMMM * numberOfLBnodes]; + D27.f[dMMP] = &DD27[dPPM * numberOfLBnodes]; + D27.f[dPMP] = &DD27[dMPM * numberOfLBnodes]; + D27.f[dMPP] = &DD27[dPMM * numberOfLBnodes]; + D27.f[dPPM] = &DD27[dMMP * numberOfLBnodes]; + D27.f[dMMM] = &DD27[dPPP * numberOfLBnodes]; + D27.f[dPMM] = &DD27[dMPP * numberOfLBnodes]; + D27.f[dMPM] = &DD27[dPMP * numberOfLBnodes]; + } + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //Test + //(D.f[d000])[k]=0.1f; + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + q = q_dirE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dM00])[kw ]=f27_E ; + q = q_dirW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dP00])[ke ]=f27_W ; + q = q_dirN[k]; if (q>=c0o1 && q<=c1o1) (D27.f[d0M0])[ks ]=f27_N ; + q = q_dirS[k]; if (q>=c0o1 && q<=c1o1) (D27.f[d0P0])[kn ]=f27_S ; + q = q_dirT[k]; if (q>=c0o1 && q<=c1o1) (D27.f[d00M])[kb ]=f27_T ; + q = q_dirB[k]; if (q>=c0o1 && q<=c1o1) (D27.f[d00P])[kt ]=f27_B ; + q = q_dirNE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dMM0])[ksw ]=f27_NE ; + q = q_dirSW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dPP0])[kne ]=f27_SW ; + q = q_dirSE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dMP0])[knw ]=f27_SE ; + q = q_dirNW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dPM0])[kse ]=f27_NW ; + q = q_dirTE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dM0M])[kbw ]=f27_TE ; + q = q_dirBW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dP0P])[kte ]=f27_BW ; + q = q_dirBE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dM0P])[ktw ]=f27_BE ; + q = q_dirTW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dP0M])[kbe ]=f27_TW ; + q = q_dirTN[k]; if (q>=c0o1 && q<=c1o1) (D27.f[d0MM])[kbs ]=f27_TN ; + q = q_dirBS[k]; if (q>=c0o1 && q<=c1o1) (D27.f[d0PP])[ktn ]=f27_BS ; + q = q_dirBN[k]; if (q>=c0o1 && q<=c1o1) (D27.f[d0MP])[kts ]=f27_BN ; + q = q_dirTS[k]; if (q>=c0o1 && q<=c1o1) (D27.f[d0PM])[kbn ]=f27_TS ; + q = q_dirTNE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dMMM])[kbsw]=f27_TNE; + q = q_dirBSW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dPPP])[ktne]=f27_BSW; + q = q_dirBNE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dMMP])[ktsw]=f27_BNE; + q = q_dirTSW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dPPM])[kbne]=f27_TSW; + q = q_dirTSE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dMPM])[kbnw]=f27_TSE; + q = q_dirBNW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dPMP])[ktse]=f27_BNW; + q = q_dirBSE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dMPP])[ktnw]=f27_BSE; + q = q_dirTNW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dPMM])[kbse]=f27_TNW; + } +} +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +////// ////// +////// incomp ////// +////// ////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + + + +////////////////////////////////////////////////////////////////////////////// +__global__ void QNoSlipADincomp7( + real* DD, + real* DD7, + real* temp, + real diffusivity, + int* k_Q, + real* QQ, + unsigned int numberOfBCnodes, + real om1, + unsigned int* neighborX, + unsigned int* neighborY, + unsigned int* neighborZ, + unsigned long long numberOfLBnodes, + bool isEvenTimestep) +{ + //Distributions27 D; + //if (isEvenTimestep==true) + //{ + // D.f[dP00] = &DD[dP00 * size_Mat]; + // D.f[dM00] = &DD[dM00 * size_Mat]; + // D.f[d0P0] = &DD[d0P0 * size_Mat]; + // D.f[d0M0] = &DD[d0M0 * size_Mat]; + // D.f[d00P] = &DD[d00P * size_Mat]; + // D.f[d00M] = &DD[d00M * size_Mat]; + // D.f[dPP0] = &DD[dPP0 * size_Mat]; + // D.f[dMM0] = &DD[dMM0 * size_Mat]; + // D.f[dPM0] = &DD[dPM0 * size_Mat]; + // D.f[dMP0] = &DD[dMP0 * size_Mat]; + // D.f[dP0P] = &DD[dP0P * size_Mat]; + // D.f[dM0M] = &DD[dM0M * size_Mat]; + // D.f[dP0M] = &DD[dP0M * size_Mat]; + // D.f[dM0P] = &DD[dM0P * size_Mat]; + // D.f[d0PP] = &DD[d0PP * size_Mat]; + // D.f[d0MM] = &DD[d0MM * size_Mat]; + // D.f[d0PM] = &DD[d0PM * size_Mat]; + // D.f[d0MP] = &DD[d0MP * size_Mat]; + // D.f[d000] = &DD[d000 * size_Mat]; + // D.f[dPPP] = &DD[dPPP * size_Mat]; + // D.f[dMMP] = &DD[dMMP * size_Mat]; + // D.f[dPMP] = &DD[dPMP * size_Mat]; + // D.f[dMPP] = &DD[dMPP * size_Mat]; + // D.f[dPPM] = &DD[dPPM * size_Mat]; + // D.f[dMMM] = &DD[dMMM * size_Mat]; + // D.f[dPMM] = &DD[dPMM * size_Mat]; + // D.f[dMPM] = &DD[dMPM * size_Mat]; + //} + //else + //{ + // D.f[dM00] = &DD[dP00 * size_Mat]; + // D.f[dP00] = &DD[dM00 * size_Mat]; + // D.f[d0M0] = &DD[d0P0 * size_Mat]; + // D.f[d0P0] = &DD[d0M0 * size_Mat]; + // D.f[d00M] = &DD[d00P * size_Mat]; + // D.f[d00P] = &DD[d00M * size_Mat]; + // D.f[dMM0] = &DD[dPP0 * size_Mat]; + // D.f[dPP0] = &DD[dMM0 * size_Mat]; + // D.f[dMP0] = &DD[dPM0 * size_Mat]; + // D.f[dPM0] = &DD[dMP0 * size_Mat]; + // D.f[dM0M] = &DD[dP0P * size_Mat]; + // D.f[dP0P] = &DD[dM0M * size_Mat]; + // D.f[dM0P] = &DD[dP0M * size_Mat]; + // D.f[dP0M] = &DD[dM0P * size_Mat]; + // D.f[d0MM] = &DD[d0PP * size_Mat]; + // D.f[d0PP] = &DD[d0MM * size_Mat]; + // D.f[d0MP] = &DD[d0PM * size_Mat]; + // D.f[d0PM] = &DD[d0MP * size_Mat]; + // D.f[d000] = &DD[d000 * size_Mat]; + // D.f[dPPP] = &DD[dMMM * size_Mat]; + // D.f[dMMP] = &DD[dPPM * size_Mat]; + // D.f[dPMP] = &DD[dMPM * size_Mat]; + // D.f[dMPP] = &DD[dPMM * size_Mat]; + // D.f[dPPM] = &DD[dMMP * size_Mat]; + // D.f[dMMM] = &DD[dPPP * size_Mat]; + // D.f[dPMM] = &DD[dMPP * size_Mat]; + // D.f[dMPM] = &DD[dPMP * size_Mat]; + //} + + Distributions7 D7; + if (isEvenTimestep==true) + { + D7.f[0] = &DD7[0*numberOfLBnodes]; + D7.f[1] = &DD7[1*numberOfLBnodes]; + D7.f[2] = &DD7[2*numberOfLBnodes]; + D7.f[3] = &DD7[3*numberOfLBnodes]; + D7.f[4] = &DD7[4*numberOfLBnodes]; + D7.f[5] = &DD7[5*numberOfLBnodes]; + D7.f[6] = &DD7[6*numberOfLBnodes]; + } + else + { + D7.f[0] = &DD7[0*numberOfLBnodes]; + D7.f[2] = &DD7[1*numberOfLBnodes]; + D7.f[1] = &DD7[2*numberOfLBnodes]; + D7.f[4] = &DD7[3*numberOfLBnodes]; + D7.f[3] = &DD7[4*numberOfLBnodes]; + D7.f[6] = &DD7[5*numberOfLBnodes]; + D7.f[5] = &DD7[6*numberOfLBnodes]; + } + + + //////////////////////////////////////////////////////////////////////////////// + const unsigned x = threadIdx.x; // Globaler x-Index + const unsigned y = blockIdx.x; // Globaler y-Index + const unsigned z = blockIdx.y; // Globaler z-Index + + const unsigned nx = blockDim.x; + const unsigned ny = gridDim.x; + + const unsigned k = nx*(ny*z + y) + x; + ////////////////////////////////////////////////////////////////////////// + + if(k<numberOfBCnodes) + { + ////////////////////////////////////////////////////////////////////////////////// + real *q_dirE, *q_dirW, *q_dirN, *q_dirS, *q_dirT, *q_dirB; + + q_dirE = &QQ[dP00 * numberOfBCnodes]; + q_dirW = &QQ[dM00 * numberOfBCnodes]; + q_dirN = &QQ[d0P0 * numberOfBCnodes]; + q_dirS = &QQ[d0M0 * numberOfBCnodes]; + q_dirT = &QQ[d00P * numberOfBCnodes]; + q_dirB = &QQ[d00M * 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]; + //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 f_W = (D.f[dP00])[ke ]; + //real f_E = (D.f[dM00])[kw ]; + //real f_S = (D.f[d0P0])[kn ]; + //real f_N = (D.f[d0M0])[ks ]; + //real f_B = (D.f[d00P])[kt ]; + //real f_T = (D.f[d00M])[kb ]; + //real f_SW = (D.f[dPP0])[kne ]; + //real f_NE = (D.f[dMM0])[ksw ]; + //real f_NW = (D.f[dPM0])[kse ]; + //real f_SE = (D.f[dMP0])[knw ]; + //real f_BW = (D.f[dP0P])[kte ]; + //real f_TE = (D.f[dM0M])[kbw ]; + //real f_TW = (D.f[dP0M])[kbe ]; + //real f_BE = (D.f[dM0P])[ktw ]; + //real f_BS = (D.f[d0PP])[ktn ]; + //real f_TN = (D.f[d0MM])[kbs ]; + //real f_TS = (D.f[d0PM])[kbn ]; + //real f_BN = (D.f[d0MP])[kts ]; + //real f_BSW = (D.f[dPPP])[ktne ]; + //real f_BNE = (D.f[dMMP])[ktsw ]; + //real f_BNW = (D.f[dPMP])[ktse ]; + //real f_BSE = (D.f[dMPP])[ktnw ]; + //real f_TSW = (D.f[dPPM])[kbne ]; + //real f_TNE = (D.f[dMMM])[kbsw ]; + //real f_TNW = (D.f[dPMM])[kbse ]; + //real f_TSE = (D.f[dMPM])[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)); + ////d�rrrrrty !!!!!!!!!!!!! + // real vx1 = ten * ((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 = ten * ((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 = ten * ((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 cu_sq =c3o2*(vx1*vx1+vx2*vx2+vx3*vx3); + //real ux_sq = vx1 * vx1; + //real uy_sq = vx2 * vx2; + //real uz_sq = vx3 * vx3; + //////////////////////////////////////////////////////////////////////////////// + //BGK + //real omegaD = three - sqrt(three); + //real Lam = -(c1o2-one/omegaD); + //real nue_d = Lam/three; + //real ae = diffusivity/nue_d - one; //zero; + + real f7_E,f7_W,f7_N,f7_S,f7_T,f7_B; + //real /*feq7_ZERO,*/feq7_E,feq7_W,feq7_N,feq7_S,feq7_T,feq7_B; + //real /*feqW7_ZERO,*/feqW7_E,feqW7_W,feqW7_N,feqW7_S,feqW7_T,feqW7_B; + real TempD = temp[k]; + + + //f7_ZERO = (D7.f[0])[kzero]; + f7_W = (D7.f[1])[ke ]; + f7_E = (D7.f[2])[kw ]; + f7_S = (D7.f[3])[kn ]; + f7_N = (D7.f[4])[ks ]; + f7_B = (D7.f[5])[kt ]; + f7_T = (D7.f[6])[kb ]; + + //real ConcD = f7_ZERO + f7_E + f7_W + f7_N + f7_S + f7_T + f7_B; + + ////feq7_ZERO = ConcD*(c1o3*(ae*(-three))-(ux_sq+uy_sq+uz_sq)); + //feq7_E = ConcD*(c1o6*(ae+one)+c1o2*(ux_sq)+vx1*c1o2); + //feq7_W = ConcD*(c1o6*(ae+one)+c1o2*(ux_sq)-vx1*c1o2); + //feq7_N = ConcD*(c1o6*(ae+one)+c1o2*(uy_sq)+vx2*c1o2); + //feq7_S = ConcD*(c1o6*(ae+one)+c1o2*(uy_sq)-vx2*c1o2); + //feq7_T = ConcD*(c1o6*(ae+one)+c1o2*(uz_sq)+vx3*c1o2); + //feq7_B = ConcD*(c1o6*(ae+one)+c1o2*(uz_sq)-vx3*c1o2); + + ////feq7_ZERO = TempD*(c1o3*(ae*(-three))-(ux_sq+uy_sq+uz_sq)); + //feqW7_E = TempD*(c1o6*(ae+one));//+c1o2*(ux_sq)+vx1*c1o2); + //feqW7_W = TempD*(c1o6*(ae+one));//+c1o2*(ux_sq)-vx1*c1o2); + //feqW7_N = TempD*(c1o6*(ae+one));//+c1o2*(uy_sq)+vx2*c1o2); + //feqW7_S = TempD*(c1o6*(ae+one));//+c1o2*(uy_sq)-vx2*c1o2); + //feqW7_T = TempD*(c1o6*(ae+one));//+c1o2*(uz_sq)+vx3*c1o2); + //feqW7_B = TempD*(c1o6*(ae+one));//+c1o2*(uz_sq)-vx3*c1o2); + + //////////////////////////////////////////////////////////////////////////////// + //TRT + real cs2 = c1o4; + ////////////////////////////////////////////////////////////////////////// + //pointertausch + if (isEvenTimestep==false) + { + D7.f[0] = &DD7[0*numberOfLBnodes]; + D7.f[1] = &DD7[1*numberOfLBnodes]; + D7.f[2] = &DD7[2*numberOfLBnodes]; + D7.f[3] = &DD7[3*numberOfLBnodes]; + D7.f[4] = &DD7[4*numberOfLBnodes]; + D7.f[5] = &DD7[5*numberOfLBnodes]; + D7.f[6] = &DD7[6*numberOfLBnodes]; + } + else + { + D7.f[0] = &DD7[0*numberOfLBnodes]; + D7.f[2] = &DD7[1*numberOfLBnodes]; + D7.f[1] = &DD7[2*numberOfLBnodes]; + D7.f[4] = &DD7[3*numberOfLBnodes]; + D7.f[3] = &DD7[4*numberOfLBnodes]; + D7.f[6] = &DD7[5*numberOfLBnodes]; + D7.f[5] = &DD7[6*numberOfLBnodes]; + } + + //////////////////////////////////////////////////////////////////////////// + ////mit Q's + //real /*feq,*/ q; + //q = q_dirE[k]; + //if (q>=zero && q<=one) + //{ + // //q=zero; + // (D7.f[2])[kw]=(two*feqW7_W-(f7_E*(q*omegaD-one)-omegaD*feq7_E*(q-one))/(omegaD-one)+f7_W*q)/(q+one);//f7_W - feq7_W + feqW7_E; + //} + + //q = q_dirW[k]; + //if (q>=zero && q<=one) + //{ + // //q=zero; + // (D7.f[1])[ke]=(two*feqW7_E-(f7_W*(q*omegaD-one)-omegaD*feq7_W*(q-one))/(omegaD-one)+f7_E*q)/(q+one);//f7_E - feq7_E + feqW7_W; + //} + + //q = q_dirN[k]; + //if (q>=zero && q<=one) + //{ + // //q=zero; + // (D7.f[4])[ks]=(two*feqW7_S-(f7_N*(q*omegaD-one)-omegaD*feq7_N*(q-one))/(omegaD-one)+f7_S*q)/(q+one);//f7_S - feq7_S + feqW7_N; + //} + + //q = q_dirS[k]; + //if (q>=zero && q<=one) + //{ + // //q=zero; + // (D7.f[3])[kn]=(two*feqW7_N-(f7_S*(q*omegaD-one)-omegaD*feq7_S*(q-one))/(omegaD-one)+f7_N*q)/(q+one);//f7_N - feq7_N + feqW7_S; + //} + + //q = q_dirT[k]; + //if (q>=zero && q<=one) + //{ + // //q=zero; + // (D7.f[6])[kb]=(two*feqW7_B-(f7_T*(q*omegaD-one)-omegaD*feq7_T*(q-one))/(omegaD-one)+f7_B*q)/(q+one);//f7_B - feq7_B + feqW7_T; + //} + + //q = q_dirB[k]; + //if (q>=zero && q<=one) + //{ + // //q=zero; + // (D7.f[5])[kt]=(two*feqW7_T-(f7_B*(q*omegaD-one)-omegaD*feq7_B*(q-one))/(omegaD-one)+f7_T*q)/(q+one);//f7_T - feq7_T + feqW7_B; + //} + + //////////////////////////////////////////////////////////////////////////// + ////ohne Q's + //real /*feq,*/ q; + //q = q_dirE[k]; + //if (q>=zero && q<=one) + //{ + // (D7.f[2])[kw]=f7_W;// - feq7_W + feqW7_E; + //} + + //q = q_dirW[k]; + //if (q>=zero && q<=one) + //{ + // (D7.f[1])[ke]=f7_E;// - feq7_E + feqW7_W; + //} + + //q = q_dirN[k]; + //if (q>=zero && q<=one) + //{ + // (D7.f[4])[ks]=f7_S;// - feq7_S + feqW7_N; + //} + + //q = q_dirS[k]; + //if (q>=zero && q<=one) + //{ + // (D7.f[3])[kn]=f7_N;// - feq7_N + feqW7_S; + //} + + //q = q_dirT[k]; + //if (q>=zero && q<=one) + //{ + // (D7.f[6])[kb]=f7_B;// - feq7_B + feqW7_T; + //} + + //q = q_dirB[k]; + //if (q>=zero && q<=one) + //{ + // (D7.f[5])[kt]=f7_T;// - feq7_T + feqW7_B; + //} + + + ////////////////////////////////////////////////////////////////////////// + //ohne Q's aber mit TRT + real /*feq,*/ q; + q = q_dirE[k]; + if (q>=c0o1 && q<=c1o1) + { + (D7.f[2])[kw]= -f7_W + cs2 * TempD; + } + + q = q_dirW[k]; + if (q>=c0o1 && q<=c1o1) + { + (D7.f[1])[ke]= -f7_E + cs2 * TempD; + } + + q = q_dirN[k]; + if (q>=c0o1 && q<=c1o1) + { + (D7.f[4])[ks]= -f7_S + cs2 * TempD; + } + + q = q_dirS[k]; + if (q>=c0o1 && q<=c1o1) + { + (D7.f[3])[kn]= -f7_N + cs2 * TempD; + } + + q = q_dirT[k]; + if (q>=c0o1 && q<=c1o1) + { + (D7.f[6])[kb]= -f7_B + cs2 * TempD; + } + + q = q_dirB[k]; + if (q>=c0o1 && q<=c1o1) + { + (D7.f[5])[kt]= -f7_T + cs2 * TempD; + } + + } +} +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +////////////////////////////////////////////////////////////////////////////// +__global__ void QNoSlipADincomp27( + real* DD, + real* DD27, + real* temp, + real diffusivity, + int* k_Q, + real* QQ, + unsigned int numberOfBCnodes, + real om1, + unsigned int* neighborX, + unsigned int* neighborY, + unsigned int* neighborZ, + unsigned long long numberOfLBnodes, + bool isEvenTimestep) +{ + Distributions27 D; + if (isEvenTimestep==true) + { + D.f[dP00] = &DD[dP00 * numberOfLBnodes]; + D.f[dM00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00P] = &DD[d00P * numberOfLBnodes]; + D.f[d00M] = &DD[d00M * numberOfLBnodes]; + D.f[dPP0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dMM0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dP0P] = &DD[dP0P * numberOfLBnodes]; + D.f[dM0M] = &DD[dM0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dP0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dM0P * numberOfLBnodes]; + D.f[d0PP] = &DD[d0PP * numberOfLBnodes]; + D.f[d0MM] = &DD[d0MM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0PM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dPPP * numberOfLBnodes]; + D.f[dMMP] = &DD[dMMP * numberOfLBnodes]; + D.f[dPMP] = &DD[dPMP * numberOfLBnodes]; + D.f[dMPP] = &DD[dMPP * numberOfLBnodes]; + D.f[dPPM] = &DD[dPPM * numberOfLBnodes]; + D.f[dMMM] = &DD[dMMM * numberOfLBnodes]; + D.f[dPMM] = &DD[dPMM * numberOfLBnodes]; + D.f[dMPM] = &DD[dMPM * numberOfLBnodes]; + } + else + { + D.f[dM00] = &DD[dP00 * numberOfLBnodes]; + D.f[dP00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00M] = &DD[d00P * numberOfLBnodes]; + D.f[d00P] = &DD[d00M * numberOfLBnodes]; + D.f[dMM0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dPP0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dM0M] = &DD[dP0P * numberOfLBnodes]; + D.f[dP0P] = &DD[dM0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dP0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dM0P * numberOfLBnodes]; + D.f[d0MM] = &DD[d0PP * numberOfLBnodes]; + D.f[d0PP] = &DD[d0MM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0PM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dMMM * numberOfLBnodes]; + D.f[dMMP] = &DD[dPPM * numberOfLBnodes]; + D.f[dPMP] = &DD[dMPM * numberOfLBnodes]; + D.f[dMPP] = &DD[dPMM * numberOfLBnodes]; + D.f[dPPM] = &DD[dMMP * numberOfLBnodes]; + D.f[dMMM] = &DD[dPPP * numberOfLBnodes]; + D.f[dPMM] = &DD[dMPP * numberOfLBnodes]; + D.f[dMPM] = &DD[dPMP * numberOfLBnodes]; + } + + Distributions27 D27; + if (isEvenTimestep==true) + { + D27.f[dP00] = &DD27[dP00 * numberOfLBnodes]; + D27.f[dM00] = &DD27[dM00 * numberOfLBnodes]; + D27.f[d0P0] = &DD27[d0P0 * numberOfLBnodes]; + D27.f[d0M0] = &DD27[d0M0 * numberOfLBnodes]; + D27.f[d00P] = &DD27[d00P * numberOfLBnodes]; + D27.f[d00M] = &DD27[d00M * numberOfLBnodes]; + D27.f[dPP0] = &DD27[dPP0 * numberOfLBnodes]; + D27.f[dMM0] = &DD27[dMM0 * numberOfLBnodes]; + D27.f[dPM0] = &DD27[dPM0 * numberOfLBnodes]; + D27.f[dMP0] = &DD27[dMP0 * numberOfLBnodes]; + D27.f[dP0P] = &DD27[dP0P * numberOfLBnodes]; + D27.f[dM0M] = &DD27[dM0M * numberOfLBnodes]; + D27.f[dP0M] = &DD27[dP0M * numberOfLBnodes]; + D27.f[dM0P] = &DD27[dM0P * numberOfLBnodes]; + D27.f[d0PP] = &DD27[d0PP * numberOfLBnodes]; + D27.f[d0MM] = &DD27[d0MM * numberOfLBnodes]; + D27.f[d0PM] = &DD27[d0PM * numberOfLBnodes]; + D27.f[d0MP] = &DD27[d0MP * numberOfLBnodes]; + D27.f[d000] = &DD27[d000 * numberOfLBnodes]; + D27.f[dPPP] = &DD27[dPPP * numberOfLBnodes]; + D27.f[dMMP] = &DD27[dMMP * numberOfLBnodes]; + D27.f[dPMP] = &DD27[dPMP * numberOfLBnodes]; + D27.f[dMPP] = &DD27[dMPP * numberOfLBnodes]; + D27.f[dPPM] = &DD27[dPPM * numberOfLBnodes]; + D27.f[dMMM] = &DD27[dMMM * numberOfLBnodes]; + D27.f[dPMM] = &DD27[dPMM * numberOfLBnodes]; + D27.f[dMPM] = &DD27[dMPM * numberOfLBnodes]; + } + else + { + D27.f[dM00] = &DD27[dP00 * numberOfLBnodes]; + D27.f[dP00] = &DD27[dM00 * numberOfLBnodes]; + D27.f[d0M0] = &DD27[d0P0 * numberOfLBnodes]; + D27.f[d0P0] = &DD27[d0M0 * numberOfLBnodes]; + D27.f[d00M] = &DD27[d00P * numberOfLBnodes]; + D27.f[d00P] = &DD27[d00M * numberOfLBnodes]; + D27.f[dMM0] = &DD27[dPP0 * numberOfLBnodes]; + D27.f[dPP0] = &DD27[dMM0 * numberOfLBnodes]; + D27.f[dMP0] = &DD27[dPM0 * numberOfLBnodes]; + D27.f[dPM0] = &DD27[dMP0 * numberOfLBnodes]; + D27.f[dM0M] = &DD27[dP0P * numberOfLBnodes]; + D27.f[dP0P] = &DD27[dM0M * numberOfLBnodes]; + D27.f[dM0P] = &DD27[dP0M * numberOfLBnodes]; + D27.f[dP0M] = &DD27[dM0P * numberOfLBnodes]; + D27.f[d0MM] = &DD27[d0PP * numberOfLBnodes]; + D27.f[d0PP] = &DD27[d0MM * numberOfLBnodes]; + D27.f[d0MP] = &DD27[d0PM * numberOfLBnodes]; + D27.f[d0PM] = &DD27[d0MP * numberOfLBnodes]; + D27.f[d000] = &DD27[d000 * numberOfLBnodes]; + D27.f[dPPP] = &DD27[dMMM * numberOfLBnodes]; + D27.f[dMMP] = &DD27[dPPM * numberOfLBnodes]; + D27.f[dPMP] = &DD27[dMPM * numberOfLBnodes]; + D27.f[dMPP] = &DD27[dPMM * numberOfLBnodes]; + D27.f[dPPM] = &DD27[dMMP * numberOfLBnodes]; + D27.f[dMMM] = &DD27[dPPP * numberOfLBnodes]; + D27.f[dPMM] = &DD27[dMPP * numberOfLBnodes]; + D27.f[dMPM] = &DD27[dPMP * numberOfLBnodes]; + } + //////////////////////////////////////////////////////////////////////////////// + const unsigned x = threadIdx.x; // Globaler x-Index + const unsigned y = blockIdx.x; // Globaler y-Index + const unsigned z = blockIdx.y; // Globaler z-Index + + const unsigned nx = blockDim.x; + const unsigned ny = gridDim.x; + + const unsigned k = nx*(ny*z + y) + x; + ////////////////////////////////////////////////////////////////////////// + + if(k<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[dP00 * numberOfBCnodes]; + q_dirW = &QQ[dM00 * numberOfBCnodes]; + q_dirN = &QQ[d0P0 * numberOfBCnodes]; + q_dirS = &QQ[d0M0 * numberOfBCnodes]; + q_dirT = &QQ[d00P * numberOfBCnodes]; + q_dirB = &QQ[d00M * numberOfBCnodes]; + q_dirNE = &QQ[dPP0 * numberOfBCnodes]; + q_dirSW = &QQ[dMM0 * numberOfBCnodes]; + q_dirSE = &QQ[dPM0 * numberOfBCnodes]; + q_dirNW = &QQ[dMP0 * numberOfBCnodes]; + q_dirTE = &QQ[dP0P * numberOfBCnodes]; + q_dirBW = &QQ[dM0M * numberOfBCnodes]; + q_dirBE = &QQ[dP0M * numberOfBCnodes]; + q_dirTW = &QQ[dM0P * numberOfBCnodes]; + q_dirTN = &QQ[d0PP * numberOfBCnodes]; + q_dirBS = &QQ[d0MM * numberOfBCnodes]; + q_dirBN = &QQ[d0PM * numberOfBCnodes]; + q_dirTS = &QQ[d0MP * numberOfBCnodes]; + q_dirTNE = &QQ[dPPP * numberOfBCnodes]; + q_dirTSW = &QQ[dMMP * numberOfBCnodes]; + q_dirTSE = &QQ[dPMP * numberOfBCnodes]; + q_dirTNW = &QQ[dMPP * numberOfBCnodes]; + q_dirBNE = &QQ[dPPM * numberOfBCnodes]; + q_dirBSW = &QQ[dMMM * numberOfBCnodes]; + q_dirBSE = &QQ[dPMM * numberOfBCnodes]; + q_dirBNW = &QQ[dMPM * 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]; + 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 f_W = (D.f[dP00])[ke ]; + real f_E = (D.f[dM00])[kw ]; + real f_S = (D.f[d0P0])[kn ]; + real f_N = (D.f[d0M0])[ks ]; + real f_B = (D.f[d00P])[kt ]; + real f_T = (D.f[d00M])[kb ]; + real f_SW = (D.f[dPP0])[kne ]; + real f_NE = (D.f[dMM0])[ksw ]; + real f_NW = (D.f[dPM0])[kse ]; + real f_SE = (D.f[dMP0])[knw ]; + real f_BW = (D.f[dP0P])[kte ]; + real f_TE = (D.f[dM0M])[kbw ]; + real f_TW = (D.f[dP0M])[kbe ]; + real f_BE = (D.f[dM0P])[ktw ]; + real f_BS = (D.f[d0PP])[ktn ]; + real f_TN = (D.f[d0MM])[kbs ]; + real f_TS = (D.f[d0PM])[kbn ]; + real f_BN = (D.f[d0MP])[kts ]; + //real f_ZERO = (D.f[d000])[kzero]; + real f_BSW = (D.f[dPPP])[ktne ]; + real f_BNE = (D.f[dMMP])[ktsw ]; + real f_BNW = (D.f[dPMP])[ktse ]; + real f_BSE = (D.f[dMPP])[ktnw ]; + real f_TSW = (D.f[dPPM])[kbne ]; + real f_TNE = (D.f[dMMM])[kbsw ]; + real f_TNW = (D.f[dPMM])[kbse ]; + real f_TSE = (D.f[dMPM])[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[dP00])[ke ]; + real f27_E = (D27.f[dM00])[kw ]; + real f27_S = (D27.f[d0P0])[kn ]; + real f27_N = (D27.f[d0M0])[ks ]; + real f27_B = (D27.f[d00P])[kt ]; + real f27_T = (D27.f[d00M])[kb ]; + real f27_SW = (D27.f[dPP0])[kne ]; + real f27_NE = (D27.f[dMM0])[ksw ]; + real f27_NW = (D27.f[dPM0])[kse ]; + real f27_SE = (D27.f[dMP0])[knw ]; + real f27_BW = (D27.f[dP0P])[kte ]; + real f27_TE = (D27.f[dM0M])[kbw ]; + real f27_TW = (D27.f[dP0M])[kbe ]; + real f27_BE = (D27.f[dM0P])[ktw ]; + real f27_BS = (D27.f[d0PP])[ktn ]; + real f27_TN = (D27.f[d0MM])[kbs ]; + real f27_TS = (D27.f[d0PM])[kbn ]; + real f27_BN = (D27.f[d0MP])[kts ]; + real f27_ZERO = (D27.f[d000])[kzero]; + real f27_BSW = (D27.f[dPPP])[ktne ]; + real f27_BNE = (D27.f[dMMP])[ktsw ]; + real f27_BNW = (D27.f[dPMP])[ktse ]; + real f27_BSE = (D27.f[dMPP])[ktnw ]; + real f27_TSW = (D27.f[dPPM])[kbne ]; + real f27_TNE = (D27.f[dMMM])[kbsw ]; + real f27_TNW = (D27.f[dPMM])[kbse ]; + real f27_TSE = (D27.f[dMPM])[kbnw ]; + //////////////////////////////////////////////////////////////////////////////// + real cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3); + //////////////////////////////////////////////////////////////////////////////// + real ConcD = f27_TSE + f27_TNW + f27_TNE + f27_TSW + f27_BSE + f27_BNW + f27_BNE + f27_BSW + + f27_BN + f27_TS + f27_TN + f27_BS + f27_BE + f27_TW + f27_TE + f27_BW + f27_SE + f27_NW + f27_NE + f27_SW + + f27_T + f27_B + f27_N + f27_S + f27_E + f27_W + f27_ZERO; + + //real feq27_ZERO = c8over27* ConcD*(one-cu_sq); + real feq27_E = c2o27* ConcD*(c1o1+c3o1*( vx1 )+c9o2*( vx1 )*( vx1 )-cu_sq); + real feq27_W = c2o27* ConcD*(c1o1+c3o1*(-vx1 )+c9o2*(-vx1 )*(-vx1 )-cu_sq); + real feq27_N = c2o27* ConcD*(c1o1+c3o1*( vx2 )+c9o2*( vx2 )*( vx2 )-cu_sq); + real feq27_S = c2o27* ConcD*(c1o1+c3o1*( -vx2 )+c9o2*( -vx2 )*( -vx2 )-cu_sq); + real feq27_T = c2o27* ConcD*(c1o1+c3o1*( vx3)+c9o2*( vx3)*( vx3)-cu_sq); + real feq27_B = c2o27* ConcD*(c1o1+c3o1*( -vx3)+c9o2*( -vx3)*( -vx3)-cu_sq); + real feq27_NE = c1o54* ConcD*(c1o1+c3o1*( vx1+vx2 )+c9o2*( vx1+vx2 )*( vx1+vx2 )-cu_sq); + real feq27_SW = c1o54* ConcD*(c1o1+c3o1*(-vx1-vx2 )+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq); + real feq27_SE = c1o54* ConcD*(c1o1+c3o1*( vx1-vx2 )+c9o2*( vx1-vx2 )*( vx1-vx2 )-cu_sq); + real feq27_NW = c1o54* ConcD*(c1o1+c3o1*(-vx1+vx2 )+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq); + real feq27_TE = c1o54* ConcD*(c1o1+c3o1*( vx1 +vx3)+c9o2*( vx1 +vx3)*( vx1 +vx3)-cu_sq); + real feq27_BW = c1o54* ConcD*(c1o1+c3o1*(-vx1 -vx3)+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq); + real feq27_BE = c1o54* ConcD*(c1o1+c3o1*( vx1 -vx3)+c9o2*( vx1 -vx3)*( vx1 -vx3)-cu_sq); + real feq27_TW = c1o54* ConcD*(c1o1+c3o1*(-vx1 +vx3)+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq); + real feq27_TN = c1o54* ConcD*(c1o1+c3o1*( vx2+vx3)+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq); + real feq27_BS = c1o54* ConcD*(c1o1+c3o1*( -vx2-vx3)+c9o2*( -vx2-vx3)*( -vx2-vx3)-cu_sq); + real feq27_BN = c1o54* ConcD*(c1o1+c3o1*( vx2-vx3)+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq); + real feq27_TS = c1o54* ConcD*(c1o1+c3o1*( -vx2+vx3)+c9o2*( -vx2+vx3)*( -vx2+vx3)-cu_sq); + real feq27_TNE = c1o216*ConcD*(c1o1+c3o1*( vx1+vx2+vx3)+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq); + real feq27_BSW = c1o216*ConcD*(c1o1+c3o1*(-vx1-vx2-vx3)+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq); + real feq27_BNE = c1o216*ConcD*(c1o1+c3o1*( vx1+vx2-vx3)+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq); + real feq27_TSW = c1o216*ConcD*(c1o1+c3o1*(-vx1-vx2+vx3)+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq); + real feq27_TSE = c1o216*ConcD*(c1o1+c3o1*( vx1-vx2+vx3)+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq); + real feq27_BNW = c1o216*ConcD*(c1o1+c3o1*(-vx1+vx2-vx3)+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq); + real feq27_BSE = c1o216*ConcD*(c1o1+c3o1*( vx1-vx2-vx3)+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq); + real feq27_TNW = c1o216*ConcD*(c1o1+c3o1*(-vx1+vx2+vx3)+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq); + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + real TempD = temp[k]; + + //real feqW27_ZERO = c8over27* TempD*(one-cu_sq); + real feqW27_E = c2o27* TempD*(c1o1+c3o1*( vx1 )+c9o2*( vx1 )*( vx1 )-cu_sq); + real feqW27_W = c2o27* TempD*(c1o1+c3o1*(-vx1 )+c9o2*(-vx1 )*(-vx1 )-cu_sq); + real feqW27_N = c2o27* TempD*(c1o1+c3o1*( vx2 )+c9o2*( vx2 )*( vx2 )-cu_sq); + real feqW27_S = c2o27* TempD*(c1o1+c3o1*( -vx2 )+c9o2*( -vx2 )*( -vx2 )-cu_sq); + real feqW27_T = c2o27* TempD*(c1o1+c3o1*( vx3)+c9o2*( vx3)*( vx3)-cu_sq); + real feqW27_B = c2o27* TempD*(c1o1+c3o1*( -vx3)+c9o2*( -vx3)*( -vx3)-cu_sq); + real feqW27_NE = c1o54* TempD*(c1o1+c3o1*( vx1+vx2 )+c9o2*( vx1+vx2 )*( vx1+vx2 )-cu_sq); + real feqW27_SW = c1o54* TempD*(c1o1+c3o1*(-vx1-vx2 )+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq); + real feqW27_SE = c1o54* TempD*(c1o1+c3o1*( vx1-vx2 )+c9o2*( vx1-vx2 )*( vx1-vx2 )-cu_sq); + real feqW27_NW = c1o54* TempD*(c1o1+c3o1*(-vx1+vx2 )+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq); + real feqW27_TE = c1o54* TempD*(c1o1+c3o1*( vx1 +vx3)+c9o2*( vx1 +vx3)*( vx1 +vx3)-cu_sq); + real feqW27_BW = c1o54* TempD*(c1o1+c3o1*(-vx1 -vx3)+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq); + real feqW27_BE = c1o54* TempD*(c1o1+c3o1*( vx1 -vx3)+c9o2*( vx1 -vx3)*( vx1 -vx3)-cu_sq); + real feqW27_TW = c1o54* TempD*(c1o1+c3o1*(-vx1 +vx3)+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq); + real feqW27_TN = c1o54* TempD*(c1o1+c3o1*( vx2+vx3)+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq); + real feqW27_BS = c1o54* TempD*(c1o1+c3o1*( -vx2-vx3)+c9o2*( -vx2-vx3)*( -vx2-vx3)-cu_sq); + real feqW27_BN = c1o54* TempD*(c1o1+c3o1*( vx2-vx3)+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq); + real feqW27_TS = c1o54* TempD*(c1o1+c3o1*( -vx2+vx3)+c9o2*( -vx2+vx3)*( -vx2+vx3)-cu_sq); + real feqW27_TNE = c1o216*TempD*(c1o1+c3o1*( vx1+vx2+vx3)+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq); + real feqW27_BSW = c1o216*TempD*(c1o1+c3o1*(-vx1-vx2-vx3)+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq); + real feqW27_BNE = c1o216*TempD*(c1o1+c3o1*( vx1+vx2-vx3)+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq); + real feqW27_TSW = c1o216*TempD*(c1o1+c3o1*(-vx1-vx2+vx3)+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq); + real feqW27_TSE = c1o216*TempD*(c1o1+c3o1*( vx1-vx2+vx3)+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq); + real feqW27_BNW = c1o216*TempD*(c1o1+c3o1*(-vx1+vx2-vx3)+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq); + real feqW27_BSE = c1o216*TempD*(c1o1+c3o1*( vx1-vx2-vx3)+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq); + real feqW27_TNW = c1o216*TempD*(c1o1+c3o1*(-vx1+vx2+vx3)+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq); + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + real omegaD = c3o1 - sqrt(c3o1); + //real Lam = -(c1o2-one/omegaD); + //real nue_d = Lam/three; + //real ae = zero; + //real ae = diffusivity/nue_d - one; + + + ////////////////////////////////////////////////////////////////////////// + if (isEvenTimestep==false) + { + D27.f[dP00] = &DD27[dP00 * numberOfLBnodes]; + D27.f[dM00] = &DD27[dM00 * numberOfLBnodes]; + D27.f[d0P0] = &DD27[d0P0 * numberOfLBnodes]; + D27.f[d0M0] = &DD27[d0M0 * numberOfLBnodes]; + D27.f[d00P] = &DD27[d00P * numberOfLBnodes]; + D27.f[d00M] = &DD27[d00M * numberOfLBnodes]; + D27.f[dPP0] = &DD27[dPP0 * numberOfLBnodes]; + D27.f[dMM0] = &DD27[dMM0 * numberOfLBnodes]; + D27.f[dPM0] = &DD27[dPM0 * numberOfLBnodes]; + D27.f[dMP0] = &DD27[dMP0 * numberOfLBnodes]; + D27.f[dP0P] = &DD27[dP0P * numberOfLBnodes]; + D27.f[dM0M] = &DD27[dM0M * numberOfLBnodes]; + D27.f[dP0M] = &DD27[dP0M * numberOfLBnodes]; + D27.f[dM0P] = &DD27[dM0P * numberOfLBnodes]; + D27.f[d0PP] = &DD27[d0PP * numberOfLBnodes]; + D27.f[d0MM] = &DD27[d0MM * numberOfLBnodes]; + D27.f[d0PM] = &DD27[d0PM * numberOfLBnodes]; + D27.f[d0MP] = &DD27[d0MP * numberOfLBnodes]; + D27.f[d000] = &DD27[d000 * numberOfLBnodes]; + D27.f[dPPP] = &DD27[dPPP * numberOfLBnodes]; + D27.f[dMMP] = &DD27[dMMP * numberOfLBnodes]; + D27.f[dPMP] = &DD27[dPMP * numberOfLBnodes]; + D27.f[dMPP] = &DD27[dMPP * numberOfLBnodes]; + D27.f[dPPM] = &DD27[dPPM * numberOfLBnodes]; + D27.f[dMMM] = &DD27[dMMM * numberOfLBnodes]; + D27.f[dPMM] = &DD27[dPMM * numberOfLBnodes]; + D27.f[dMPM] = &DD27[dMPM * numberOfLBnodes]; + } + else + { + D27.f[dM00] = &DD27[dP00 * numberOfLBnodes]; + D27.f[dP00] = &DD27[dM00 * numberOfLBnodes]; + D27.f[d0M0] = &DD27[d0P0 * numberOfLBnodes]; + D27.f[d0P0] = &DD27[d0M0 * numberOfLBnodes]; + D27.f[d00M] = &DD27[d00P * numberOfLBnodes]; + D27.f[d00P] = &DD27[d00M * numberOfLBnodes]; + D27.f[dMM0] = &DD27[dPP0 * numberOfLBnodes]; + D27.f[dPP0] = &DD27[dMM0 * numberOfLBnodes]; + D27.f[dMP0] = &DD27[dPM0 * numberOfLBnodes]; + D27.f[dPM0] = &DD27[dMP0 * numberOfLBnodes]; + D27.f[dM0M] = &DD27[dP0P * numberOfLBnodes]; + D27.f[dP0P] = &DD27[dM0M * numberOfLBnodes]; + D27.f[dM0P] = &DD27[dP0M * numberOfLBnodes]; + D27.f[dP0M] = &DD27[dM0P * numberOfLBnodes]; + D27.f[d0MM] = &DD27[d0PP * numberOfLBnodes]; + D27.f[d0PP] = &DD27[d0MM * numberOfLBnodes]; + D27.f[d0MP] = &DD27[d0PM * numberOfLBnodes]; + D27.f[d0PM] = &DD27[d0MP * numberOfLBnodes]; + D27.f[d000] = &DD27[d000 * numberOfLBnodes]; + D27.f[dPPP] = &DD27[dMMM * numberOfLBnodes]; + D27.f[dMMP] = &DD27[dPPM * numberOfLBnodes]; + D27.f[dPMP] = &DD27[dMPM * numberOfLBnodes]; + D27.f[dMPP] = &DD27[dPMM * numberOfLBnodes]; + D27.f[dPPM] = &DD27[dMMP * numberOfLBnodes]; + D27.f[dMMM] = &DD27[dPPP * numberOfLBnodes]; + D27.f[dPMM] = &DD27[dMPP * numberOfLBnodes]; + D27.f[dMPM] = &DD27[dPMP * numberOfLBnodes]; + } + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //Test + //(D.f[d000])[k]=0.1f; + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + real q; + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + q = q_dirE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dM00])[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[dP00])[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[d0M0])[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[d0P0])[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[d00M])[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[d00P])[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[dMM0])[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[dPP0])[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[dMP0])[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[dPM0])[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[dM0M])[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[dP0P])[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[dM0P])[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[dP0M])[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[d0MM])[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[d0PP])[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[d0MP])[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[d0PM])[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[dMMM])[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[dPPP])[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[dMMP])[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[dPPM])[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[dMPM])[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[dPMP])[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[dMPP])[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[dPMM])[kbse]=(c2o1*feqW27_BSE-(f27_TNW*(q*omegaD-c1o1)-omegaD*feq27_TNW*(q-c1o1))/(omegaD-c1o1)+f27_BSE*q)/(q+c1o1); + } +} +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +////////////////////////////////////////////////////////////////////////////// +__global__ void QADVeloIncomp7( + real* DD, + real* DD7, + real* temp, + real* velo, + real diffusivity, + int* k_Q, + real* QQ, + unsigned int numberOfBCnodes, + real om1, + unsigned int* neighborX, + unsigned int* neighborY, + unsigned int* neighborZ, + unsigned long long numberOfLBnodes, + bool isEvenTimestep) +{ + //Distributions27 D; + //if (isEvenTimestep==true) + //{ + // D.f[dP00] = &DD[dP00 * size_Mat]; + // D.f[dM00] = &DD[dM00 * size_Mat]; + // D.f[d0P0] = &DD[d0P0 * size_Mat]; + // D.f[d0M0] = &DD[d0M0 * size_Mat]; + // D.f[d00P] = &DD[d00P * size_Mat]; + // D.f[d00M] = &DD[d00M * size_Mat]; + // D.f[dPP0] = &DD[dPP0 * size_Mat]; + // D.f[dMM0] = &DD[dMM0 * size_Mat]; + // D.f[dPM0] = &DD[dPM0 * size_Mat]; + // D.f[dMP0] = &DD[dMP0 * size_Mat]; + // D.f[dP0P] = &DD[dP0P * size_Mat]; + // D.f[dM0M] = &DD[dM0M * size_Mat]; + // D.f[dP0M] = &DD[dP0M * size_Mat]; + // D.f[dM0P] = &DD[dM0P * size_Mat]; + // D.f[d0PP] = &DD[d0PP * size_Mat]; + // D.f[d0MM] = &DD[d0MM * size_Mat]; + // D.f[d0PM] = &DD[d0PM * size_Mat]; + // D.f[d0MP] = &DD[d0MP * size_Mat]; + // D.f[d000] = &DD[d000 * size_Mat]; + // D.f[dPPP] = &DD[dPPP * size_Mat]; + // D.f[dMMP] = &DD[dMMP * size_Mat]; + // D.f[dPMP] = &DD[dPMP * size_Mat]; + // D.f[dMPP] = &DD[dMPP * size_Mat]; + // D.f[dPPM] = &DD[dPPM * size_Mat]; + // D.f[dMMM] = &DD[dMMM * size_Mat]; + // D.f[dPMM] = &DD[dPMM * size_Mat]; + // D.f[dMPM] = &DD[dMPM * size_Mat]; + //} + //else + //{ + // D.f[dM00] = &DD[dP00 * size_Mat]; + // D.f[dP00] = &DD[dM00 * size_Mat]; + // D.f[d0M0] = &DD[d0P0 * size_Mat]; + // D.f[d0P0] = &DD[d0M0 * size_Mat]; + // D.f[d00M] = &DD[d00P * size_Mat]; + // D.f[d00P] = &DD[d00M * size_Mat]; + // D.f[dMM0] = &DD[dPP0 * size_Mat]; + // D.f[dPP0] = &DD[dMM0 * size_Mat]; + // D.f[dMP0] = &DD[dPM0 * size_Mat]; + // D.f[dPM0] = &DD[dMP0 * size_Mat]; + // D.f[dM0M] = &DD[dP0P * size_Mat]; + // D.f[dP0P] = &DD[dM0M * size_Mat]; + // D.f[dM0P] = &DD[dP0M * size_Mat]; + // D.f[dP0M] = &DD[dM0P * size_Mat]; + // D.f[d0MM] = &DD[d0PP * size_Mat]; + // D.f[d0PP] = &DD[d0MM * size_Mat]; + // D.f[d0MP] = &DD[d0PM * size_Mat]; + // D.f[d0PM] = &DD[d0MP * size_Mat]; + // D.f[d000] = &DD[d000 * size_Mat]; + // D.f[dPPP] = &DD[dMMM * size_Mat]; + // D.f[dMMP] = &DD[dPPM * size_Mat]; + // D.f[dPMP] = &DD[dMPM * size_Mat]; + // D.f[dMPP] = &DD[dPMM * size_Mat]; + // D.f[dPPM] = &DD[dMMP * size_Mat]; + // D.f[dMMM] = &DD[dPPP * size_Mat]; + // D.f[dPMM] = &DD[dMPP * size_Mat]; + // D.f[dMPM] = &DD[dPMP * size_Mat]; + //} + + Distributions7 D7; + if (isEvenTimestep==true) + { + D7.f[0] = &DD7[0*numberOfLBnodes]; + D7.f[1] = &DD7[1*numberOfLBnodes]; + D7.f[2] = &DD7[2*numberOfLBnodes]; + D7.f[3] = &DD7[3*numberOfLBnodes]; + D7.f[4] = &DD7[4*numberOfLBnodes]; + D7.f[5] = &DD7[5*numberOfLBnodes]; + D7.f[6] = &DD7[6*numberOfLBnodes]; + } + else + { + D7.f[0] = &DD7[0*numberOfLBnodes]; + D7.f[2] = &DD7[1*numberOfLBnodes]; + D7.f[1] = &DD7[2*numberOfLBnodes]; + D7.f[4] = &DD7[3*numberOfLBnodes]; + D7.f[3] = &DD7[4*numberOfLBnodes]; + D7.f[6] = &DD7[5*numberOfLBnodes]; + D7.f[5] = &DD7[6*numberOfLBnodes]; + } + + + //////////////////////////////////////////////////////////////////////////////// + const unsigned x = threadIdx.x; // Globaler x-Index + const unsigned y = blockIdx.x; // Globaler y-Index + const unsigned z = blockIdx.y; // Globaler z-Index + + const unsigned nx = blockDim.x; + const unsigned ny = gridDim.x; + + const unsigned k = nx*(ny*z + y) + x; + ////////////////////////////////////////////////////////////////////////// + + if(k<numberOfBCnodes) + { + ////////////////////////////////////////////////////////////////////////////////// + real *q_dirE, *q_dirW, *q_dirN, *q_dirS, *q_dirT, *q_dirB; + + q_dirE = &QQ[dP00 * numberOfBCnodes]; + q_dirW = &QQ[dM00 * numberOfBCnodes]; + q_dirN = &QQ[d0P0 * numberOfBCnodes]; + q_dirS = &QQ[d0M0 * numberOfBCnodes]; + q_dirT = &QQ[d00P * numberOfBCnodes]; + q_dirB = &QQ[d00M * 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]; + //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 f_W = (D.f[dP00])[ke ]; + //real f_E = (D.f[dM00])[kw ]; + //real f_S = (D.f[d0P0])[kn ]; + //real f_N = (D.f[d0M0])[ks ]; + //real f_B = (D.f[d00P])[kt ]; + //real f_T = (D.f[d00M])[kb ]; + //real f_SW = (D.f[dPP0])[kne ]; + //real f_NE = (D.f[dMM0])[ksw ]; + //real f_NW = (D.f[dPM0])[kse ]; + //real f_SE = (D.f[dMP0])[knw ]; + //real f_BW = (D.f[dP0P])[kte ]; + //real f_TE = (D.f[dM0M])[kbw ]; + //real f_TW = (D.f[dP0M])[kbe ]; + //real f_BE = (D.f[dM0P])[ktw ]; + //real f_BS = (D.f[d0PP])[ktn ]; + //real f_TN = (D.f[d0MM])[kbs ]; + //real f_TS = (D.f[d0PM])[kbn ]; + //real f_BN = (D.f[d0MP])[kts ]; + //real f_BSW = (D.f[dPPP])[ktne ]; + //real f_BNE = (D.f[dMMP])[ktsw ]; + //real f_BNW = (D.f[dPMP])[ktse ]; + //real f_BSE = (D.f[dMPP])[ktnw ]; + //real f_TSW = (D.f[dPPM])[kbne ]; + //real f_TNE = (D.f[dMMM])[kbsw ]; + //real f_TNW = (D.f[dPMM])[kbse ]; + //real f_TSE = (D.f[dMPM])[kbnw ]; + //////////////////////////////////////////////////////////////////////////////// + //real vx1_Inflow = c0o1; + //real vx2_Inflow = velo[k]; + //real vx3_Inflow = c0o1; + //real ux_sq_Inflow = vx1_Inflow * vx1_Inflow; + //real uy_sq_Inflow = vx2_Inflow * vx2_Inflow; + //real uz_sq_Inflow = vx3_Inflow * vx3_Inflow; + //////////////////////////////////////////////////////////////////////////////// + //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)); + ////d�rrrrrty !!!!!!!!!!!!! + // real vx1 = ten * ((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 = ten * ((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 = ten * ((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 cu_sq =1.5f*(vx1*vx1+vx2*vx2+vx3*vx3); + //real ux_sq = vx1 * vx1; + //real uy_sq = vx2 * vx2; + //real uz_sq = vx3 * vx3; + + real f7_E,f7_W,f7_N,f7_S,f7_T,f7_B; + //real /*feq7_ZERO,*/feq7_E,feq7_W,feq7_N,feq7_S,feq7_T,feq7_B; + //real /*feqW7_ZERO,*/feqW7_E,feqW7_W,feqW7_N,feqW7_S,feqW7_T,feqW7_B; + real TempD = temp[k]; + + //f7_ZERO = (D7.f[0])[kzero]; + f7_W = (D7.f[1])[ke ]; + f7_E = (D7.f[2])[kw ]; + f7_S = (D7.f[3])[kn ]; + f7_N = (D7.f[4])[ks ]; + f7_B = (D7.f[5])[kt ]; + f7_T = (D7.f[6])[kb ]; + + //real ConcD = f7_ZERO + f7_E + f7_W + f7_N + f7_S + f7_T + f7_B; + + //////////////////////////////////////////////////////////////////////////////// + //BGK + //real omegaD = three - sqrt(three); + //real Lam = -(c1o2-one/omegaD); + //real nue_d = Lam/three; + ////real ae = zero; + //real ae = diffusivity/nue_d - one; + + ////feq7_ZERO = ConcD*(c1o3*(ae*(-three))-(ux_sq+uy_sq+uz_sq)); + //feq7_E = ConcD*(c1o6*(ae+one)+c1o2*(ux_sq)+vx1*c1o2); + //feq7_W = ConcD*(c1o6*(ae+one)+c1o2*(ux_sq)-vx1*c1o2); + //feq7_N = ConcD*(c1o6*(ae+one)+c1o2*(uy_sq)+vx2*c1o2); + //feq7_S = ConcD*(c1o6*(ae+one)+c1o2*(uy_sq)-vx2*c1o2); + //feq7_T = ConcD*(c1o6*(ae+one)+c1o2*(uz_sq)+vx3*c1o2); + //feq7_B = ConcD*(c1o6*(ae+one)+c1o2*(uz_sq)-vx3*c1o2); + + ////feq7_ZERO = TempD*(c1o3*(ae*(-three))-(ux_sq+uy_sq+uz_sq)); + //feqW7_E = TempD*(c1o6*(ae+one)+c1o2*(ux_sq_Inflow)+vx1_Inflow*c1o2); + //feqW7_W = TempD*(c1o6*(ae+one)+c1o2*(ux_sq_Inflow)-vx1_Inflow*c1o2); + //feqW7_N = TempD*(c1o6*(ae+one)+c1o2*(uy_sq_Inflow)+vx2_Inflow*c1o2); + //feqW7_S = TempD*(c1o6*(ae+one)+c1o2*(uy_sq_Inflow)-vx2_Inflow*c1o2); + //feqW7_T = TempD*(c1o6*(ae+one)+c1o2*(uz_sq_Inflow)+vx3_Inflow*c1o2); + //feqW7_B = TempD*(c1o6*(ae+one)+c1o2*(uz_sq_Inflow)-vx3_Inflow*c1o2); + + // //////////////////////////////////////////////////////////////////////////////// + ////TRT Yoshida Kernel - based on Ying + real cs2 = c1o4; + // real Lam = diffusivity/(one)/cs2; + // real omegaD = - one / (Lam + c1o2); + // real ae = zero; + // //////////////////////////////////////////////////////////////////////////////// + //real Mom000 = f7_ZERO + f7_W + f7_E + f7_N + f7_S + f7_T + f7_B; //1 + // real Mom100 = f7_E - f7_W; + // real Mom010 = f7_N - f7_S; + // real Mom001 = f7_T - f7_B; + // real Mom222 = six*f7_ZERO - f7_W - f7_E - f7_N - f7_S - f7_T - f7_B; + // real Mom200 = two*f7_W + two*f7_E - f7_N - f7_S - f7_T - f7_B; + // real Mom022 = f7_N + f7_S - f7_T - f7_B; + + // real Meq000 = ConcD; + // real Meq100 = ConcD*vx1; + // real Meq010 = ConcD*vx2; + // real Meq001 = ConcD*vx3; + // real Meq222 = c3o4*ConcD; + // real Meq200 = zero; + // real Meq022 = zero; + + // // relaxation TRT Yoshida + + // // odd + // Mom100 = omegaD * (Mom100-Meq100); + // Mom010 = omegaD * (Mom010-Meq010); + // Mom001 = omegaD * (Mom001-Meq001); + // + // // even + // Mom000 = -one*(Mom000-Meq000); + // Mom222 = -one*(Mom222-Meq222); + // Mom200 = -one*(Mom200-Meq200); + // Mom022 = -one*(Mom022-Meq022); + // + // //Back transformation to distributions + // f7_ZERO = f7_ZERO + c1o7*Mom000 + c1o7*Mom222; //1 + // f7_E = f7_E + c1o7*Mom000 + c1o2*Mom100 - c1o6*c1o7*Mom222 + c1o6*Mom200; //2 + // f7_W = f7_W + c1o7*Mom000 - c1o2*Mom100 - c1o6*c1o7*Mom222 + c1o6*Mom200; //3 + // f7_N = f7_N + c1o7*Mom000 + c1o2*Mom010 - c1o6*c1o7*Mom222 - c1o12*Mom200 + c1o4 *Mom022; //4 + // f7_S = f7_S + c1o7*Mom000 - c1o2*Mom010 - c1o6*c1o7*Mom222 - c1o12*Mom200 + c1o4 *Mom022; //5 + // f7_T = f7_T + c1o7*Mom000 + c1o2*Mom001 - c1o6*c1o7*Mom222 - c1o12*Mom200 - c1o4 *Mom022; //6 + // f7_B = f7_B + c1o7*Mom000 - c1o2*Mom001 - c1o6*c1o7*Mom222 - c1o12*Mom200 - c1o4 *Mom022; //7 + + + + + + ////////////////////////////////////////////////////////////////////////// + //pointertausch + if (isEvenTimestep==false) + { + D7.f[0] = &DD7[0*numberOfLBnodes]; + D7.f[1] = &DD7[1*numberOfLBnodes]; + D7.f[2] = &DD7[2*numberOfLBnodes]; + D7.f[3] = &DD7[3*numberOfLBnodes]; + D7.f[4] = &DD7[4*numberOfLBnodes]; + D7.f[5] = &DD7[5*numberOfLBnodes]; + D7.f[6] = &DD7[6*numberOfLBnodes]; + } + else + { + D7.f[0] = &DD7[0*numberOfLBnodes]; + D7.f[2] = &DD7[1*numberOfLBnodes]; + D7.f[1] = &DD7[2*numberOfLBnodes]; + D7.f[4] = &DD7[3*numberOfLBnodes]; + D7.f[3] = &DD7[4*numberOfLBnodes]; + D7.f[6] = &DD7[5*numberOfLBnodes]; + D7.f[5] = &DD7[6*numberOfLBnodes]; + } + + //////////////////////////////////////////////////////////////////////////// + ////mit Q's + //real /*feq,*/ q; + //q = q_dirE[k]; + //if (q>=zero && q<=one) + //{ + // //q=0.; + // (D7.f[2])[kw]=(two*feqW7_W-(f7_E*(q*omegaD-one)-omegaD*feq7_E*(q-one))/(omegaD-one)+f7_W*q)/(q+one);//f7_W - feq7_W + feqW7_E; + //} + + //q = q_dirW[k]; + //if (q>=zero && q<=one) + //{ + // //q=0.; + // (D7.f[1])[ke]=(two*feqW7_E-(f7_W*(q*omegaD-one)-omegaD*feq7_W*(q-one))/(omegaD-one)+f7_E*q)/(q+one);//f7_E - feq7_E + feqW7_W; + //} + + //q = q_dirN[k]; + //if (q>=zero && q<=one) + //{ + // //q=0.; + // (D7.f[4])[ks]=(two*feqW7_S-(f7_N*(q*omegaD-one)-omegaD*feq7_N*(q-one))/(omegaD-one)+f7_S*q)/(q+one);//f7_S - feq7_S + feqW7_N; + //} + + //q = q_dirS[k]; + //if (q>=zero && q<=one) + //{ + // //q=0.; + // (D7.f[3])[kn]=(two*feqW7_N-(f7_S*(q*omegaD-one)-omegaD*feq7_S*(q-one))/(omegaD-one)+f7_N*q)/(q+one);//f7_N - feq7_N + feqW7_S; + //} + + //q = q_dirT[k]; + //if (q>=zero && q<=one) + //{ + // //q=0.; + // (D7.f[6])[kb]=(two*feqW7_B-(f7_T*(q*omegaD-one)-omegaD*feq7_T*(q-one))/(omegaD-one)+f7_B*q)/(q+one);//f7_B - feq7_B + feqW7_T; + //} + + //q = q_dirB[k]; + //if (q>=zero && q<=one) + //{ + // //q=0.; + // (D7.f[5])[kt]=(two*feqW7_T-(f7_B*(q*omegaD-one)-omegaD*feq7_B*(q-one))/(omegaD-one)+f7_T*q)/(q+one);//f7_T - feq7_T + feqW7_B; + //} + + //////////////////////////////////////////////////////////////////////////// + ////ohne Q's + //real /*feq,*/ q; + //q = q_dirE[k]; + //if (q>=zero && q<=one) + //{ + // (D7.f[2])[kw]=f7_W - feq7_W + feqW7_E; + //} + + //q = q_dirW[k]; + //if (q>=zero && q<=one) + //{ + // (D7.f[1])[ke]=f7_E - feq7_E + feqW7_W; + //} + + //q = q_dirN[k]; + //if (q>=zero && q<=one) + //{ + // (D7.f[4])[ks]=f7_S - feq7_S + feqW7_N; + //} + + //q = q_dirS[k]; + //if (q>=zero && q<=one) + //{ + // (D7.f[3])[kn]=f7_N - feq7_N + feqW7_S; + //} + + //q = q_dirT[k]; + //if (q>=zero && q<=one) + //{ + // (D7.f[6])[kb]=f7_B - feq7_B + feqW7_T; + //} + + //q = q_dirB[k]; + //if (q>=zero && q<=one) + //{ + // (D7.f[5])[kt]=f7_T - feq7_T + feqW7_B; + //} + + ////////////////////////////////////////////////////////////////////////// + //ohne Q's aber mit TRT + real /*feq,*/ q; + q = q_dirE[k]; + if (q>=c0o1 && q<=c1o1) + { + (D7.f[2])[kw]= -f7_W + cs2 * TempD; + } + + q = q_dirW[k]; + if (q>=c0o1 && q<=c1o1) + { + (D7.f[1])[ke]= -f7_E + cs2 * TempD; + } + + q = q_dirN[k]; + if (q>=c0o1 && q<=c1o1) + { + (D7.f[4])[ks]= -f7_S + cs2 * TempD; + } + + q = q_dirS[k]; + if (q>=c0o1 && q<=c1o1) + { + (D7.f[3])[kn]= -f7_N + cs2 * TempD; + } + + q = q_dirT[k]; + if (q>=c0o1 && q<=c1o1) + { + (D7.f[6])[kb]= -f7_B + cs2 * TempD; + } + + q = q_dirB[k]; + if (q>=c0o1 && q<=c1o1) + { + (D7.f[5])[kt]= -f7_T + cs2 * TempD; + } + + } +} +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +////////////////////////////////////////////////////////////////////////////// +__global__ void QADVeloIncomp27( + real* DD, + real* DD27, + real* temp, + real* velo, + real diffusivity, + int* k_Q, + real* QQ, + unsigned int numberOfBCnodes, + real om1, + unsigned int* neighborX, + unsigned int* neighborY, + unsigned int* neighborZ, + unsigned long long numberOfLBnodes, + bool isEvenTimestep) +{ + Distributions27 D; + if (isEvenTimestep==true) + { + D.f[dP00] = &DD[dP00 * numberOfLBnodes]; + D.f[dM00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00P] = &DD[d00P * numberOfLBnodes]; + D.f[d00M] = &DD[d00M * numberOfLBnodes]; + D.f[dPP0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dMM0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dP0P] = &DD[dP0P * numberOfLBnodes]; + D.f[dM0M] = &DD[dM0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dP0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dM0P * numberOfLBnodes]; + D.f[d0PP] = &DD[d0PP * numberOfLBnodes]; + D.f[d0MM] = &DD[d0MM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0PM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dPPP * numberOfLBnodes]; + D.f[dMMP] = &DD[dMMP * numberOfLBnodes]; + D.f[dPMP] = &DD[dPMP * numberOfLBnodes]; + D.f[dMPP] = &DD[dMPP * numberOfLBnodes]; + D.f[dPPM] = &DD[dPPM * numberOfLBnodes]; + D.f[dMMM] = &DD[dMMM * numberOfLBnodes]; + D.f[dPMM] = &DD[dPMM * numberOfLBnodes]; + D.f[dMPM] = &DD[dMPM * numberOfLBnodes]; + } + else + { + D.f[dM00] = &DD[dP00 * numberOfLBnodes]; + D.f[dP00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00M] = &DD[d00P * numberOfLBnodes]; + D.f[d00P] = &DD[d00M * numberOfLBnodes]; + D.f[dMM0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dPP0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dM0M] = &DD[dP0P * numberOfLBnodes]; + D.f[dP0P] = &DD[dM0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dP0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dM0P * numberOfLBnodes]; + D.f[d0MM] = &DD[d0PP * numberOfLBnodes]; + D.f[d0PP] = &DD[d0MM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0PM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dMMM * numberOfLBnodes]; + D.f[dMMP] = &DD[dPPM * numberOfLBnodes]; + D.f[dPMP] = &DD[dMPM * numberOfLBnodes]; + D.f[dMPP] = &DD[dPMM * numberOfLBnodes]; + D.f[dPPM] = &DD[dMMP * numberOfLBnodes]; + D.f[dMMM] = &DD[dPPP * numberOfLBnodes]; + D.f[dPMM] = &DD[dMPP * numberOfLBnodes]; + D.f[dMPM] = &DD[dPMP * numberOfLBnodes]; + } + + Distributions27 D27; + if (isEvenTimestep==true) + { + D27.f[dP00] = &DD27[dP00 * numberOfLBnodes]; + D27.f[dM00] = &DD27[dM00 * numberOfLBnodes]; + D27.f[d0P0] = &DD27[d0P0 * numberOfLBnodes]; + D27.f[d0M0] = &DD27[d0M0 * numberOfLBnodes]; + D27.f[d00P] = &DD27[d00P * numberOfLBnodes]; + D27.f[d00M] = &DD27[d00M * numberOfLBnodes]; + D27.f[dPP0] = &DD27[dPP0 * numberOfLBnodes]; + D27.f[dMM0] = &DD27[dMM0 * numberOfLBnodes]; + D27.f[dPM0] = &DD27[dPM0 * numberOfLBnodes]; + D27.f[dMP0] = &DD27[dMP0 * numberOfLBnodes]; + D27.f[dP0P] = &DD27[dP0P * numberOfLBnodes]; + D27.f[dM0M] = &DD27[dM0M * numberOfLBnodes]; + D27.f[dP0M] = &DD27[dP0M * numberOfLBnodes]; + D27.f[dM0P] = &DD27[dM0P * numberOfLBnodes]; + D27.f[d0PP] = &DD27[d0PP * numberOfLBnodes]; + D27.f[d0MM] = &DD27[d0MM * numberOfLBnodes]; + D27.f[d0PM] = &DD27[d0PM * numberOfLBnodes]; + D27.f[d0MP] = &DD27[d0MP * numberOfLBnodes]; + D27.f[d000] = &DD27[d000 * numberOfLBnodes]; + D27.f[dPPP] = &DD27[dPPP * numberOfLBnodes]; + D27.f[dMMP] = &DD27[dMMP * numberOfLBnodes]; + D27.f[dPMP] = &DD27[dPMP * numberOfLBnodes]; + D27.f[dMPP] = &DD27[dMPP * numberOfLBnodes]; + D27.f[dPPM] = &DD27[dPPM * numberOfLBnodes]; + D27.f[dMMM] = &DD27[dMMM * numberOfLBnodes]; + D27.f[dPMM] = &DD27[dPMM * numberOfLBnodes]; + D27.f[dMPM] = &DD27[dMPM * numberOfLBnodes]; + } + else + { + D27.f[dM00] = &DD27[dP00 * numberOfLBnodes]; + D27.f[dP00] = &DD27[dM00 * numberOfLBnodes]; + D27.f[d0M0] = &DD27[d0P0 * numberOfLBnodes]; + D27.f[d0P0] = &DD27[d0M0 * numberOfLBnodes]; + D27.f[d00M] = &DD27[d00P * numberOfLBnodes]; + D27.f[d00P] = &DD27[d00M * numberOfLBnodes]; + D27.f[dMM0] = &DD27[dPP0 * numberOfLBnodes]; + D27.f[dPP0] = &DD27[dMM0 * numberOfLBnodes]; + D27.f[dMP0] = &DD27[dPM0 * numberOfLBnodes]; + D27.f[dPM0] = &DD27[dMP0 * numberOfLBnodes]; + D27.f[dM0M] = &DD27[dP0P * numberOfLBnodes]; + D27.f[dP0P] = &DD27[dM0M * numberOfLBnodes]; + D27.f[dM0P] = &DD27[dP0M * numberOfLBnodes]; + D27.f[dP0M] = &DD27[dM0P * numberOfLBnodes]; + D27.f[d0MM] = &DD27[d0PP * numberOfLBnodes]; + D27.f[d0PP] = &DD27[d0MM * numberOfLBnodes]; + D27.f[d0MP] = &DD27[d0PM * numberOfLBnodes]; + D27.f[d0PM] = &DD27[d0MP * numberOfLBnodes]; + D27.f[d000] = &DD27[d000 * numberOfLBnodes]; + D27.f[dPPP] = &DD27[dMMM * numberOfLBnodes]; + D27.f[dMMP] = &DD27[dPPM * numberOfLBnodes]; + D27.f[dPMP] = &DD27[dMPM * numberOfLBnodes]; + D27.f[dMPP] = &DD27[dPMM * numberOfLBnodes]; + D27.f[dPPM] = &DD27[dMMP * numberOfLBnodes]; + D27.f[dMMM] = &DD27[dPPP * numberOfLBnodes]; + D27.f[dPMM] = &DD27[dMPP * numberOfLBnodes]; + D27.f[dMPM] = &DD27[dPMP * numberOfLBnodes]; + } + //////////////////////////////////////////////////////////////////////////////// + const unsigned x = threadIdx.x; // Globaler x-Index + const unsigned y = blockIdx.x; // Globaler y-Index + const unsigned z = blockIdx.y; // Globaler z-Index + + const unsigned nx = blockDim.x; + const unsigned ny = gridDim.x; + + const unsigned k = nx*(ny*z + y) + x; + ////////////////////////////////////////////////////////////////////////// + + if(k<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[dP00 * numberOfBCnodes]; + q_dirW = &QQ[dM00 * numberOfBCnodes]; + q_dirN = &QQ[d0P0 * numberOfBCnodes]; + q_dirS = &QQ[d0M0 * numberOfBCnodes]; + q_dirT = &QQ[d00P * numberOfBCnodes]; + q_dirB = &QQ[d00M * numberOfBCnodes]; + q_dirNE = &QQ[dPP0 * numberOfBCnodes]; + q_dirSW = &QQ[dMM0 * numberOfBCnodes]; + q_dirSE = &QQ[dPM0 * numberOfBCnodes]; + q_dirNW = &QQ[dMP0 * numberOfBCnodes]; + q_dirTE = &QQ[dP0P * numberOfBCnodes]; + q_dirBW = &QQ[dM0M * numberOfBCnodes]; + q_dirBE = &QQ[dP0M * numberOfBCnodes]; + q_dirTW = &QQ[dM0P * numberOfBCnodes]; + q_dirTN = &QQ[d0PP * numberOfBCnodes]; + q_dirBS = &QQ[d0MM * numberOfBCnodes]; + q_dirBN = &QQ[d0PM * numberOfBCnodes]; + q_dirTS = &QQ[d0MP * numberOfBCnodes]; + q_dirTNE = &QQ[dPPP * numberOfBCnodes]; + q_dirTSW = &QQ[dMMP * numberOfBCnodes]; + q_dirTSE = &QQ[dPMP * numberOfBCnodes]; + q_dirTNW = &QQ[dMPP * numberOfBCnodes]; + q_dirBNE = &QQ[dPPM * numberOfBCnodes]; + q_dirBSW = &QQ[dMMM * numberOfBCnodes]; + q_dirBSE = &QQ[dPMM * numberOfBCnodes]; + q_dirBNW = &QQ[dMPM * 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]; + 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 f_W = (D.f[dP00])[ke ]; + real f_E = (D.f[dM00])[kw ]; + real f_S = (D.f[d0P0])[kn ]; + real f_N = (D.f[d0M0])[ks ]; + real f_B = (D.f[d00P])[kt ]; + real f_T = (D.f[d00M])[kb ]; + real f_SW = (D.f[dPP0])[kne ]; + real f_NE = (D.f[dMM0])[ksw ]; + real f_NW = (D.f[dPM0])[kse ]; + real f_SE = (D.f[dMP0])[knw ]; + real f_BW = (D.f[dP0P])[kte ]; + real f_TE = (D.f[dM0M])[kbw ]; + real f_TW = (D.f[dP0M])[kbe ]; + real f_BE = (D.f[dM0P])[ktw ]; + real f_BS = (D.f[d0PP])[ktn ]; + real f_TN = (D.f[d0MM])[kbs ]; + real f_TS = (D.f[d0PM])[kbn ]; + real f_BN = (D.f[d0MP])[kts ]; + //real f_ZERO = (D.f[d000])[kzero]; + real f_BSW = (D.f[dPPP])[ktne ]; + real f_BNE = (D.f[dMMP])[ktsw ]; + real f_BNW = (D.f[dPMP])[ktse ]; + real f_BSE = (D.f[dMPP])[ktnw ]; + real f_TSW = (D.f[dPPM])[kbne ]; + real f_TNE = (D.f[dMMM])[kbsw ]; + real f_TNW = (D.f[dPMM])[kbse ]; + real f_TSE = (D.f[dMPM])[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[dP00])[ke ]; + //real f27_E = (D27.f[dM00])[kw ]; + //real f27_S = (D27.f[d0P0])[kn ]; + //real f27_N = (D27.f[d0M0])[ks ]; + //real f27_B = (D27.f[d00P])[kt ]; + //real f27_T = (D27.f[d00M])[kb ]; + //real f27_SW = (D27.f[dPP0])[kne ]; + //real f27_NE = (D27.f[dMM0])[ksw ]; + //real f27_NW = (D27.f[dPM0])[kse ]; + //real f27_SE = (D27.f[dMP0])[knw ]; + //real f27_BW = (D27.f[dP0P])[kte ]; + //real f27_TE = (D27.f[dM0M])[kbw ]; + //real f27_TW = (D27.f[dP0M])[kbe ]; + //real f27_BE = (D27.f[dM0P])[ktw ]; + //real f27_BS = (D27.f[d0PP])[ktn ]; + //real f27_TN = (D27.f[d0MM])[kbs ]; + //real f27_TS = (D27.f[d0PM])[kbn ]; + //real f27_BN = (D27.f[d0MP])[kts ]; + //real f27_ZERO = (D27.f[d000])[kzero]; + //real f27_BSW = (D27.f[dPPP])[ktne ]; + //real f27_BNE = (D27.f[dMMP])[ktsw ]; + //real f27_BNW = (D27.f[dPMP])[ktse ]; + //real f27_BSE = (D27.f[dMPP])[ktnw ]; + //real f27_TSW = (D27.f[dPPM])[kbne ]; + //real f27_TNE = (D27.f[dMMM])[kbsw ]; + //real f27_TNW = (D27.f[dPMM])[kbse ]; + //real f27_TSE = (D27.f[dMPM])[kbnw ]; + //////////////////////////////////////////////////////////////////////////////// + real cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3); + //////////////////////////////////////////////////////////////////////////////// + //real ConcD = f27_TSE + f27_TNW + f27_TNE + f27_TSW + f27_BSE + f27_BNW + f27_BNE + f27_BSW + + // f27_BN + f27_TS + f27_TN + f27_BS + f27_BE + f27_TW + f27_TE + f27_BW + f27_SE + f27_NW + f27_NE + f27_SW + + // f27_T + f27_B + f27_N + f27_S + f27_E + f27_W + f27_ZERO; + + //real feq27_ZERO = c8over27* ConcD*(one-cu_sq); + //real feq27_E = c2o27* ConcD*(c1o1+c3o1*( vx1 )+c9o2*( vx1 )*( vx1 )-cu_sq); + //real feq27_W = c2o27* ConcD*(c1o1+c3o1*(-vx1 )+c9o2*(-vx1 )*(-vx1 )-cu_sq); + //real feq27_N = c2o27* ConcD*(c1o1+c3o1*( vx2 )+c9o2*( vx2 )*( vx2 )-cu_sq); + //real feq27_S = c2o27* ConcD*(c1o1+c3o1*( -vx2 )+c9o2*( -vx2 )*( -vx2 )-cu_sq); + //real feq27_T = c2o27* ConcD*(c1o1+c3o1*( vx3)+c9o2*( vx3)*( vx3)-cu_sq); + //real feq27_B = c2o27* ConcD*(c1o1+c3o1*( -vx3)+c9o2*( -vx3)*( -vx3)-cu_sq); + //real feq27_NE = c1o54* ConcD*(c1o1+c3o1*( vx1+vx2 )+c9o2*( vx1+vx2 )*( vx1+vx2 )-cu_sq); + //real feq27_SW = c1o54* ConcD*(c1o1+c3o1*(-vx1-vx2 )+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq); + //real feq27_SE = c1o54* ConcD*(c1o1+c3o1*( vx1-vx2 )+c9o2*( vx1-vx2 )*( vx1-vx2 )-cu_sq); + //real feq27_NW = c1o54* ConcD*(c1o1+c3o1*(-vx1+vx2 )+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq); + //real feq27_TE = c1o54* ConcD*(c1o1+c3o1*( vx1 +vx3)+c9o2*( vx1 +vx3)*( vx1 +vx3)-cu_sq); + //real feq27_BW = c1o54* ConcD*(c1o1+c3o1*(-vx1 -vx3)+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq); + //real feq27_BE = c1o54* ConcD*(c1o1+c3o1*( vx1 -vx3)+c9o2*( vx1 -vx3)*( vx1 -vx3)-cu_sq); + //real feq27_TW = c1o54* ConcD*(c1o1+c3o1*(-vx1 +vx3)+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq); + //real feq27_TN = c1o54* ConcD*(c1o1+c3o1*( vx2+vx3)+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq); + //real feq27_BS = c1o54* ConcD*(c1o1+c3o1*( -vx2-vx3)+c9o2*( -vx2-vx3)*( -vx2-vx3)-cu_sq); + //real feq27_BN = c1o54* ConcD*(c1o1+c3o1*( vx2-vx3)+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq); + //real feq27_TS = c1o54* ConcD*(c1o1+c3o1*( -vx2+vx3)+c9o2*( -vx2+vx3)*( -vx2+vx3)-cu_sq); + //real feq27_TNE = c1o216*ConcD*(c1o1+c3o1*( vx1+vx2+vx3)+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq); + //real feq27_BSW = c1o216*ConcD*(c1o1+c3o1*(-vx1-vx2-vx3)+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq); + //real feq27_BNE = c1o216*ConcD*(c1o1+c3o1*( vx1+vx2-vx3)+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq); + //real feq27_TSW = c1o216*ConcD*(c1o1+c3o1*(-vx1-vx2+vx3)+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq); + //real feq27_TSE = c1o216*ConcD*(c1o1+c3o1*( vx1-vx2+vx3)+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq); + //real feq27_BNW = c1o216*ConcD*(c1o1+c3o1*(-vx1+vx2-vx3)+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq); + //real feq27_BSE = c1o216*ConcD*(c1o1+c3o1*( vx1-vx2-vx3)+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq); + //real feq27_TNW = c1o216*ConcD*(c1o1+c3o1*(-vx1+vx2+vx3)+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq); + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + real TempD = temp[k]; + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // velocity inflow + vx1 = velo[k];//zero; + vx2 = c0o1;//velo[k]; + vx3 = c0o1; + + //real feqW27_ZERO = c8over27* TempD*(one-cu_sq); + real feqW27_E = c2o27* TempD*(c1o1+c3o1*( vx1 )+c9o2*( vx1 )*( vx1 )-cu_sq); + real feqW27_W = c2o27* TempD*(c1o1+c3o1*(-vx1 )+c9o2*(-vx1 )*(-vx1 )-cu_sq); + real feqW27_N = c2o27* TempD*(c1o1+c3o1*( vx2 )+c9o2*( vx2 )*( vx2 )-cu_sq); + real feqW27_S = c2o27* TempD*(c1o1+c3o1*( -vx2 )+c9o2*( -vx2 )*( -vx2 )-cu_sq); + real feqW27_T = c2o27* TempD*(c1o1+c3o1*( vx3)+c9o2*( vx3)*( vx3)-cu_sq); + real feqW27_B = c2o27* TempD*(c1o1+c3o1*( -vx3)+c9o2*( -vx3)*( -vx3)-cu_sq); + real feqW27_NE = c1o54* TempD*(c1o1+c3o1*( vx1+vx2 )+c9o2*( vx1+vx2 )*( vx1+vx2 )-cu_sq); + real feqW27_SW = c1o54* TempD*(c1o1+c3o1*(-vx1-vx2 )+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq); + real feqW27_SE = c1o54* TempD*(c1o1+c3o1*( vx1-vx2 )+c9o2*( vx1-vx2 )*( vx1-vx2 )-cu_sq); + real feqW27_NW = c1o54* TempD*(c1o1+c3o1*(-vx1+vx2 )+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq); + real feqW27_TE = c1o54* TempD*(c1o1+c3o1*( vx1 +vx3)+c9o2*( vx1 +vx3)*( vx1 +vx3)-cu_sq); + real feqW27_BW = c1o54* TempD*(c1o1+c3o1*(-vx1 -vx3)+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq); + real feqW27_BE = c1o54* TempD*(c1o1+c3o1*( vx1 -vx3)+c9o2*( vx1 -vx3)*( vx1 -vx3)-cu_sq); + real feqW27_TW = c1o54* TempD*(c1o1+c3o1*(-vx1 +vx3)+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq); + real feqW27_TN = c1o54* TempD*(c1o1+c3o1*( vx2+vx3)+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq); + real feqW27_BS = c1o54* TempD*(c1o1+c3o1*( -vx2-vx3)+c9o2*( -vx2-vx3)*( -vx2-vx3)-cu_sq); + real feqW27_BN = c1o54* TempD*(c1o1+c3o1*( vx2-vx3)+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq); + real feqW27_TS = c1o54* TempD*(c1o1+c3o1*( -vx2+vx3)+c9o2*( -vx2+vx3)*( -vx2+vx3)-cu_sq); + real feqW27_TNE = c1o216*TempD*(c1o1+c3o1*( vx1+vx2+vx3)+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq); + real feqW27_BSW = c1o216*TempD*(c1o1+c3o1*(-vx1-vx2-vx3)+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq); + real feqW27_BNE = c1o216*TempD*(c1o1+c3o1*( vx1+vx2-vx3)+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq); + real feqW27_TSW = c1o216*TempD*(c1o1+c3o1*(-vx1-vx2+vx3)+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq); + real feqW27_TSE = c1o216*TempD*(c1o1+c3o1*( vx1-vx2+vx3)+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq); + real feqW27_BNW = c1o216*TempD*(c1o1+c3o1*(-vx1+vx2-vx3)+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq); + real feqW27_BSE = c1o216*TempD*(c1o1+c3o1*( vx1-vx2-vx3)+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq); + real feqW27_TNW = c1o216*TempD*(c1o1+c3o1*(-vx1+vx2+vx3)+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq); + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + real omegaD = c3o1 - sqrt(c3o1); + //real Lam = -(c1o2-one/omegaD); + //real nue_d = Lam/three; + //real ae = zero; + //real ae = diffusivity/nue_d - one; + + + ////////////////////////////////////////////////////////////////////////// + if (isEvenTimestep==false) + { + D27.f[dP00] = &DD27[dP00 * numberOfLBnodes]; + D27.f[dM00] = &DD27[dM00 * numberOfLBnodes]; + D27.f[d0P0] = &DD27[d0P0 * numberOfLBnodes]; + D27.f[d0M0] = &DD27[d0M0 * numberOfLBnodes]; + D27.f[d00P] = &DD27[d00P * numberOfLBnodes]; + D27.f[d00M] = &DD27[d00M * numberOfLBnodes]; + D27.f[dPP0] = &DD27[dPP0 * numberOfLBnodes]; + D27.f[dMM0] = &DD27[dMM0 * numberOfLBnodes]; + D27.f[dPM0] = &DD27[dPM0 * numberOfLBnodes]; + D27.f[dMP0] = &DD27[dMP0 * numberOfLBnodes]; + D27.f[dP0P] = &DD27[dP0P * numberOfLBnodes]; + D27.f[dM0M] = &DD27[dM0M * numberOfLBnodes]; + D27.f[dP0M] = &DD27[dP0M * numberOfLBnodes]; + D27.f[dM0P] = &DD27[dM0P * numberOfLBnodes]; + D27.f[d0PP] = &DD27[d0PP * numberOfLBnodes]; + D27.f[d0MM] = &DD27[d0MM * numberOfLBnodes]; + D27.f[d0PM] = &DD27[d0PM * numberOfLBnodes]; + D27.f[d0MP] = &DD27[d0MP * numberOfLBnodes]; + D27.f[d000] = &DD27[d000 * numberOfLBnodes]; + D27.f[dPPP] = &DD27[dPPP * numberOfLBnodes]; + D27.f[dMMP] = &DD27[dMMP * numberOfLBnodes]; + D27.f[dPMP] = &DD27[dPMP * numberOfLBnodes]; + D27.f[dMPP] = &DD27[dMPP * numberOfLBnodes]; + D27.f[dPPM] = &DD27[dPPM * numberOfLBnodes]; + D27.f[dMMM] = &DD27[dMMM * numberOfLBnodes]; + D27.f[dPMM] = &DD27[dPMM * numberOfLBnodes]; + D27.f[dMPM] = &DD27[dMPM * numberOfLBnodes]; + } + else + { + D27.f[dM00] = &DD27[dP00 * numberOfLBnodes]; + D27.f[dP00] = &DD27[dM00 * numberOfLBnodes]; + D27.f[d0M0] = &DD27[d0P0 * numberOfLBnodes]; + D27.f[d0P0] = &DD27[d0M0 * numberOfLBnodes]; + D27.f[d00M] = &DD27[d00P * numberOfLBnodes]; + D27.f[d00P] = &DD27[d00M * numberOfLBnodes]; + D27.f[dMM0] = &DD27[dPP0 * numberOfLBnodes]; + D27.f[dPP0] = &DD27[dMM0 * numberOfLBnodes]; + D27.f[dMP0] = &DD27[dPM0 * numberOfLBnodes]; + D27.f[dPM0] = &DD27[dMP0 * numberOfLBnodes]; + D27.f[dM0M] = &DD27[dP0P * numberOfLBnodes]; + D27.f[dP0P] = &DD27[dM0M * numberOfLBnodes]; + D27.f[dM0P] = &DD27[dP0M * numberOfLBnodes]; + D27.f[dP0M] = &DD27[dM0P * numberOfLBnodes]; + D27.f[d0MM] = &DD27[d0PP * numberOfLBnodes]; + D27.f[d0PP] = &DD27[d0MM * numberOfLBnodes]; + D27.f[d0MP] = &DD27[d0PM * numberOfLBnodes]; + D27.f[d0PM] = &DD27[d0MP * numberOfLBnodes]; + D27.f[d000] = &DD27[d000 * numberOfLBnodes]; + D27.f[dPPP] = &DD27[dMMM * numberOfLBnodes]; + D27.f[dMMP] = &DD27[dPPM * numberOfLBnodes]; + D27.f[dPMP] = &DD27[dMPM * numberOfLBnodes]; + D27.f[dMPP] = &DD27[dPMM * numberOfLBnodes]; + D27.f[dPPM] = &DD27[dMMP * numberOfLBnodes]; + D27.f[dMMM] = &DD27[dPPP * numberOfLBnodes]; + D27.f[dPMM] = &DD27[dMPP * numberOfLBnodes]; + D27.f[dMPM] = &DD27[dPMP * numberOfLBnodes]; + } + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //Test + //(D.f[d000])[k]=c1o10; + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + real q; + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + q = q_dirE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dM00])[kw ]= -feqW27_W + c2o1 * c2o27 * TempD; + q = q_dirW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dP00])[ke ]= -feqW27_E + c2o1 * c2o27 * TempD; + q = q_dirN[k]; if (q>=c0o1 && q<=c1o1) (D27.f[d0M0])[ks ]= -feqW27_S + c2o1 * c2o27 * TempD; + q = q_dirS[k]; if (q>=c0o1 && q<=c1o1) (D27.f[d0P0])[kn ]= -feqW27_N + c2o1 * c2o27 * TempD; + q = q_dirT[k]; if (q>=c0o1 && q<=c1o1) (D27.f[d00M])[kb ]= -feqW27_B + c2o1 * c2o27 * TempD; + q = q_dirB[k]; if (q>=c0o1 && q<=c1o1) (D27.f[d00P])[kt ]= -feqW27_T + c2o1 * c2o27 * TempD; + q = q_dirNE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dMM0])[ksw ]= -feqW27_SW + c2o1 * c1o54 * TempD; + q = q_dirSW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dPP0])[kne ]= -feqW27_NE + c2o1 * c1o54 * TempD; + q = q_dirSE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dMP0])[knw ]= -feqW27_NW + c2o1 * c1o54 * TempD; + q = q_dirNW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dPM0])[kse ]= -feqW27_SE + c2o1 * c1o54 * TempD; + q = q_dirTE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dM0M])[kbw ]= -feqW27_BW + c2o1 * c1o54 * TempD; + q = q_dirBW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dP0P])[kte ]= -feqW27_TE + c2o1 * c1o54 * TempD; + q = q_dirBE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dM0P])[ktw ]= -feqW27_TW + c2o1 * c1o54 * TempD; + q = q_dirTW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dP0M])[kbe ]= -feqW27_BE + c2o1 * c1o54 * TempD; + q = q_dirTN[k]; if (q>=c0o1 && q<=c1o1) (D27.f[d0MM])[kbs ]= -feqW27_BS + c2o1 * c1o54 * TempD; + q = q_dirBS[k]; if (q>=c0o1 && q<=c1o1) (D27.f[d0PP])[ktn ]= -feqW27_TN + c2o1 * c1o54 * TempD; + q = q_dirBN[k]; if (q>=c0o1 && q<=c1o1) (D27.f[d0MP])[kts ]= -feqW27_TS + c2o1 * c1o54 * TempD; + q = q_dirTS[k]; if (q>=c0o1 && q<=c1o1) (D27.f[d0PM])[kbn ]= -feqW27_BN + c2o1 * c1o54 * TempD; + q = q_dirTNE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dMMM])[kbsw]= -feqW27_BSW+ c2o1 * c1o216 * TempD; + q = q_dirBSW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dPPP])[ktne]= -feqW27_TNE+ c2o1 * c1o216 * TempD; + q = q_dirBNE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dMMP])[ktsw]= -feqW27_TSW+ c2o1 * c1o216 * TempD; + q = q_dirTSW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dPPM])[kbne]= -feqW27_BNE+ c2o1 * c1o216 * TempD; + q = q_dirTSE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dMPM])[kbnw]= -feqW27_BNW+ c2o1 * c1o216 * TempD; + q = q_dirBNW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dPMP])[ktse]= -feqW27_TSE+ c2o1 * c1o216 * TempD; + q = q_dirBSE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dMPP])[ktnw]= -feqW27_TNW+ c2o1 * c1o216 * TempD; + q = q_dirTNW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dPMM])[kbse]= -feqW27_BSE+ c2o1 * c1o216 * TempD; + //q = q_dirE[k]; if (q>=zero && q<=one) (D27.f[dM00])[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[dP00])[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[d0M0])[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[d0P0])[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[d00M])[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[d00P])[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[dMM0])[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[dPP0])[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[dMP0])[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[dPM0])[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[dM0M])[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[dP0P])[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[dM0P])[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[dP0M])[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[d0MM])[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[d0PP])[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[d0MP])[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[d0PM])[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[dMMM])[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[dPPP])[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[dMMP])[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[dPPM])[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[dMPM])[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[dPMP])[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[dMPP])[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[dPMM])[kbse]=(two*feqW27_BSE-(f27_TNW*(q*omegaD-one)-omegaD*feq27_TNW*(q-one))/(omegaD-one)+f27_BSE*q)/(q+one); + } +} +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +////////////////////////////////////////////////////////////////////////////// +__global__ void QADPressIncomp7( real* DD, + real* DD7, + real* temp, + real* velo, + real diffusivity, + int* k_Q, + real* QQ, + unsigned int numberOfBCnodes, + real om1, + unsigned int* neighborX, + unsigned int* neighborY, + unsigned int* neighborZ, + unsigned long long numberOfLBnodes, + bool isEvenTimestep) +{ + /* Distributions27 D; + if (isEvenTimestep==true) + { + D.f[dP00] = &DD[dP00 * size_Mat]; + D.f[dM00] = &DD[dM00 * size_Mat]; + D.f[d0P0] = &DD[d0P0 * size_Mat]; + D.f[d0M0] = &DD[d0M0 * size_Mat]; + D.f[d00P] = &DD[d00P * size_Mat]; + D.f[d00M] = &DD[d00M * size_Mat]; + D.f[dPP0] = &DD[dPP0 * size_Mat]; + D.f[dMM0] = &DD[dMM0 * size_Mat]; + D.f[dPM0] = &DD[dPM0 * size_Mat]; + D.f[dMP0] = &DD[dMP0 * size_Mat]; + D.f[dP0P] = &DD[dP0P * size_Mat]; + D.f[dM0M] = &DD[dM0M * size_Mat]; + D.f[dP0M] = &DD[dP0M * size_Mat]; + D.f[dM0P] = &DD[dM0P * size_Mat]; + D.f[d0PP] = &DD[d0PP * size_Mat]; + D.f[d0MM] = &DD[d0MM * size_Mat]; + D.f[d0PM] = &DD[d0PM * size_Mat]; + D.f[d0MP] = &DD[d0MP * size_Mat]; + D.f[d000] = &DD[d000 * size_Mat]; + D.f[dPPP] = &DD[dPPP * size_Mat]; + D.f[dMMP] = &DD[dMMP * size_Mat]; + D.f[dPMP] = &DD[dPMP * size_Mat]; + D.f[dMPP] = &DD[dMPP * size_Mat]; + D.f[dPPM] = &DD[dPPM * size_Mat]; + D.f[dMMM] = &DD[dMMM * size_Mat]; + D.f[dPMM] = &DD[dPMM * size_Mat]; + D.f[dMPM] = &DD[dMPM * size_Mat]; + } + else + { + D.f[dM00] = &DD[dP00 * size_Mat]; + D.f[dP00] = &DD[dM00 * size_Mat]; + D.f[d0M0] = &DD[d0P0 * size_Mat]; + D.f[d0P0] = &DD[d0M0 * size_Mat]; + D.f[d00M] = &DD[d00P * size_Mat]; + D.f[d00P] = &DD[d00M * size_Mat]; + D.f[dMM0] = &DD[dPP0 * size_Mat]; + D.f[dPP0] = &DD[dMM0 * size_Mat]; + D.f[dMP0] = &DD[dPM0 * size_Mat]; + D.f[dPM0] = &DD[dMP0 * size_Mat]; + D.f[dM0M] = &DD[dP0P * size_Mat]; + D.f[dP0P] = &DD[dM0M * size_Mat]; + D.f[dM0P] = &DD[dP0M * size_Mat]; + D.f[dP0M] = &DD[dM0P * size_Mat]; + D.f[d0MM] = &DD[d0PP * size_Mat]; + D.f[d0PP] = &DD[d0MM * size_Mat]; + D.f[d0MP] = &DD[d0PM * size_Mat]; + D.f[d0PM] = &DD[d0MP * size_Mat]; + D.f[d000] = &DD[d000 * size_Mat]; + D.f[dPPP] = &DD[dMMM * size_Mat]; + D.f[dMMP] = &DD[dPPM * size_Mat]; + D.f[dPMP] = &DD[dMPM * size_Mat]; + D.f[dMPP] = &DD[dPMM * size_Mat]; + D.f[dPPM] = &DD[dMMP * size_Mat]; + D.f[dMMM] = &DD[dPPP * size_Mat]; + D.f[dPMM] = &DD[dMPP * size_Mat]; + D.f[dMPM] = &DD[dPMP * size_Mat]; + }*/ + + Distributions7 D7; + if (isEvenTimestep==true) + { + D7.f[0] = &DD7[0*numberOfLBnodes]; + D7.f[1] = &DD7[1*numberOfLBnodes]; + D7.f[2] = &DD7[2*numberOfLBnodes]; + D7.f[3] = &DD7[3*numberOfLBnodes]; + D7.f[4] = &DD7[4*numberOfLBnodes]; + D7.f[5] = &DD7[5*numberOfLBnodes]; + D7.f[6] = &DD7[6*numberOfLBnodes]; + } + else + { + D7.f[0] = &DD7[0*numberOfLBnodes]; + D7.f[2] = &DD7[1*numberOfLBnodes]; + D7.f[1] = &DD7[2*numberOfLBnodes]; + D7.f[4] = &DD7[3*numberOfLBnodes]; + D7.f[3] = &DD7[4*numberOfLBnodes]; + D7.f[6] = &DD7[5*numberOfLBnodes]; + D7.f[5] = &DD7[6*numberOfLBnodes]; + } + + + //////////////////////////////////////////////////////////////////////////////// + const unsigned x = threadIdx.x; // Globaler x-Index + const unsigned y = blockIdx.x; // Globaler y-Index + const unsigned z = blockIdx.y; // Globaler z-Index + + const unsigned nx = blockDim.x; + const unsigned ny = gridDim.x; + + const unsigned k = nx*(ny*z + y) + x; + ////////////////////////////////////////////////////////////////////////// + + if(k<numberOfBCnodes) + { + ////////////////////////////////////////////////////////////////////////////////// + real *q_dirE, *q_dirW, *q_dirN, *q_dirS, *q_dirT, *q_dirB; + + q_dirE = &QQ[dP00 * numberOfBCnodes]; + q_dirW = &QQ[dM00 * numberOfBCnodes]; + q_dirN = &QQ[d0P0 * numberOfBCnodes]; + q_dirS = &QQ[d0M0 * numberOfBCnodes]; + q_dirT = &QQ[d00P * numberOfBCnodes]; + q_dirB = &QQ[d00M * 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]; + //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 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[dP00])[ke ]; + f_E = (D.f[dM00])[kw ]; + f_S = (D.f[d0P0])[kn ]; + f_N = (D.f[d0M0])[ks ]; + f_B = (D.f[d00P])[kt ]; + f_T = (D.f[d00M])[kb ]; + f_SW = (D.f[dPP0])[kne ]; + f_NE = (D.f[dMM0])[ksw ]; + f_NW = (D.f[dPM0])[kse ]; + f_SE = (D.f[dMP0])[knw ]; + f_BW = (D.f[dP0P])[kte ]; + f_TE = (D.f[dM0M])[kbw ]; + f_TW = (D.f[dP0M])[kbe ]; + f_BE = (D.f[dM0P])[ktw ]; + f_BS = (D.f[d0PP])[ktn ]; + f_TN = (D.f[d0MM])[kbs ]; + f_TS = (D.f[d0PM])[kbn ]; + f_BN = (D.f[d0MP])[kts ]; + f_BSW = (D.f[dPPP])[ktne ]; + f_BNE = (D.f[dMMP])[ktsw ]; + f_BNW = (D.f[dPMP])[ktse ]; + f_BSE = (D.f[dMPP])[ktnw ]; + f_TSW = (D.f[dPPM])[kbne ]; + f_TNE = (D.f[dMMM])[kbsw ]; + f_TNW = (D.f[dPMM])[kbse ]; + f_TSE = (D.f[dMPM])[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)); + ////d�rrrrrty !!!!!!!!!!!!! + // real vx1 = ten * ((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 = ten * ((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 = ten * ((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 cu_sq =1.5*(vx1*vx1+vx2*vx2+vx3*vx3); + //real ux_sq = vx1 * vx1; + //real uy_sq = vx2 * vx2; + //real uz_sq = vx3 * vx3; + ////////////////////////////////////////////////////////////////////////// + //BGK + //real omegaD = three - sqrt(three); + //real Lam = -(c1o2-one/omegaD); + //real nue_d = Lam/three; + ////real ae = zero; + //real ae = diffusivity/nue_d - one; + + real f7_ZERO,f7_E,f7_W,f7_N,f7_S,f7_T,f7_B; + //real /*feq7_ZERO,*/feq7_E,feq7_W,feq7_N,feq7_S,feq7_T,feq7_B; + //real /*feqW7_ZERO,*/feqW7_E,feqW7_W,feqW7_N,feqW7_S,feqW7_T,feqW7_B; + //real TempD = temp[k]; + + + f7_ZERO = (D7.f[0])[kzero]; + f7_W = (D7.f[1])[ke ]; + f7_E = (D7.f[2])[kw ]; + f7_S = (D7.f[3])[kn ]; + f7_N = (D7.f[4])[ks ]; + f7_B = (D7.f[5])[kt ]; + f7_T = (D7.f[6])[kb ]; + + real ConcD = f7_ZERO + f7_E + f7_W + f7_N + f7_S + f7_T + f7_B; + + ////feq7_ZERO = ConcD*(c1o3*(ae*(-3.0))-(ux_sq+uy_sq+uz_sq)); + //feq7_E = ConcD*(c1o6*(ae+one)+c1o2*(ux_sq)+vx1*c1o2); + //feq7_W = ConcD*(c1o6*(ae+one)+c1o2*(ux_sq)-vx1*c1o2); + //feq7_N = ConcD*(c1o6*(ae+one)+c1o2*(uy_sq)+vx2*c1o2); + //feq7_S = ConcD*(c1o6*(ae+one)+c1o2*(uy_sq)-vx2*c1o2); + //feq7_T = ConcD*(c1o6*(ae+one)+c1o2*(uz_sq)+vx3*c1o2); + //feq7_B = ConcD*(c1o6*(ae+one)+c1o2*(uz_sq)-vx3*c1o2); + + ////feq7_ZERO = TempD*(c1o3*(ae*(-3.0f))-(ux_sq+uy_sq+uz_sq)); + //feqW7_E = feq7_E;// TempD*(c1o6*(ae+one)+c1o2*(ux_sq_Inflow)+vx1_Inflow*c1o2); + //feqW7_W = feq7_W;// TempD*(c1o6*(ae+one)+c1o2*(ux_sq_Inflow)-vx1_Inflow*c1o2); + //feqW7_N = feq7_N;// TempD*(c1o6*(ae+one)+c1o2*(uy_sq_Inflow)+vx2_Inflow*c1o2); + //feqW7_S = feq7_S;// TempD*(c1o6*(ae+one)+c1o2*(uy_sq_Inflow)-vx2_Inflow*c1o2); + //feqW7_T = feq7_T;// TempD*(c1o6*(ae+one)+c1o2*(uz_sq_Inflow)+vx3_Inflow*c1o2); + //feqW7_B = feq7_B;// TempD*(c1o6*(ae+one)+c1o2*(uz_sq_Inflow)-vx3_Inflow*c1o2); + + ////////////////////////////////////////////////////////////////////////// + //TRT Yoshida Kernel - based on Ying + real cs2 = c1o4; + real Lam = diffusivity/(c1o1)/cs2; + //real omegaD = - c1o1 / (Lam + c1o2); + real nue_d = Lam/c3o1; + + ////////////////////////////////////////////////////////////////////////// + //pointertausch + if (isEvenTimestep==false) + { + D7.f[0] = &DD7[0*numberOfLBnodes]; + D7.f[1] = &DD7[1*numberOfLBnodes]; + D7.f[2] = &DD7[2*numberOfLBnodes]; + D7.f[3] = &DD7[3*numberOfLBnodes]; + D7.f[4] = &DD7[4*numberOfLBnodes]; + D7.f[5] = &DD7[5*numberOfLBnodes]; + D7.f[6] = &DD7[6*numberOfLBnodes]; + } + else + { + D7.f[0] = &DD7[0*numberOfLBnodes]; + D7.f[2] = &DD7[1*numberOfLBnodes]; + D7.f[1] = &DD7[2*numberOfLBnodes]; + D7.f[4] = &DD7[3*numberOfLBnodes]; + D7.f[3] = &DD7[4*numberOfLBnodes]; + D7.f[6] = &DD7[5*numberOfLBnodes]; + D7.f[5] = &DD7[6*numberOfLBnodes]; + } + + //////////////////////////////////////////////////////////////////////////// + ////mit Q's + //real /*feq,*/ q; + //q = q_dirE[k]; + //if (q>=zero && q<=one) + //{ + // //q=0.; + // (D7.f[2])[kw]=(two*feqW7_W-(f7_E*(q*omegaD-one)-omegaD*feq7_E*(q-one))/(omegaD-one)+f7_W*q)/(q+one);//f7_W - feq7_W + feqW7_E; + //} + + //q = q_dirW[k]; + //if (q>=zero && q<=one) + //{ + // //q=0.; + // (D7.f[1])[ke]=(two*feqW7_E-(f7_W*(q*omegaD-one)-omegaD*feq7_W*(q-one))/(omegaD-one)+f7_E*q)/(q+one);//f7_E - feq7_E + feqW7_W; + //} + + //q = q_dirN[k]; + //if (q>=zero && q<=one) + //{ + // //q=0.; + // (D7.f[4])[ks]=(two*feqW7_S-(f7_N*(q*omegaD-1.)-omegaD*feq7_N*(q-one))/(omegaD-one)+f7_S*q)/(q+one);//f7_S - feq7_S + feqW7_N; + //} + + //q = q_dirS[k]; + //if (q>=zero && q<=one) + //{ + // //q=0.; + // (D7.f[3])[kn]=(two*feqW7_N-(f7_S*(q*omegaD-one)-omegaD*feq7_S*(q-one))/(omegaD-one)+f7_N*q)/(q+one);//f7_N - feq7_N + feqW7_S; + //} + + //q = q_dirT[k]; + //if (q>=zero && q<=one) + //{ + // //q=0.; + // (D7.f[6])[kb]=(two*feqW7_B-(f7_T*(q*omegaD-1.)-omegaD*feq7_T*(q-one))/(omegaD-one)+f7_B*q)/(q+one);//f7_B - feq7_B + feqW7_T; + //} + + //q = q_dirB[k]; + //if (q>=zero && q<=one) + //{ + // //q=0.; + // (D7.f[5])[kt]=(two*feqW7_T-(f7_B*(q*omegaD-one)-omegaD*feq7_B*(q-one))/(omegaD-one)+f7_T*q)/(q+one);//f7_T - feq7_T + feqW7_B; + //} + + //////////////////////////////////////////////////////////////////////////// + ////ohne Q's + //real /*feq,*/ q; + //q = q_dirE[k]; + //if (q>=zero && q<=one) + //{ + // (D7.f[2])[kw]= 0.1;//test + // //(D7.f[2])[kw]=f7_W - feq7_W + feqW7_E; + //} + + //q = q_dirW[k]; + //if (q>=zero && q<=one) + //{ + // (D7.f[1])[ke]= 0.1;//test + // //(D7.f[1])[ke]=f7_E - feq7_E + feqW7_W; + //} + + //q = q_dirN[k]; + //if (q>=zero && q<=one) + //{ + // (D7.f[4])[ks]= 0.1;//test + // //(D7.f[4])[ks]=f7_S - feq7_S + feqW7_N; + //} + + //q = q_dirS[k]; + //if (q>=zero && q<=one) + //{ + // (D7.f[3])[kn]= 0.1;//test + // //(D7.f[3])[kn]=f7_N - feq7_N + feqW7_S; + //} + + //q = q_dirT[k]; + //if (q>=zero && q<=one) + //{ + // (D7.f[6])[kb]= 0.1;//test + // //(D7.f[6])[kb]=f7_B - feq7_B + feqW7_T; + //} + + //q = q_dirB[k]; + //if (q>=zero && q<=one) + //{ + // (D7.f[5])[kt]= 0.1;//test + // //(D7.f[5])[kt]=f7_T - feq7_T + feqW7_B; + //} + + + ////////////////////////////////////////////////////////////////////////// + //ohne Q's aber mit TRT + real /*feq,*/ q; + q = q_dirE[k]; + if (q>=c0o1 && q<=c1o1) + { + (D7.f[2])[kw]= f7_W + nue_d * ConcD; + } + + q = q_dirW[k]; + if (q>=c0o1 && q<=c1o1) + { + (D7.f[1])[ke]= f7_E + nue_d * ConcD; + } + + q = q_dirN[k]; + if (q>=c0o1 && q<=c1o1) + { + (D7.f[4])[ks]= f7_S + nue_d * ConcD; + } + + q = q_dirS[k]; + if (q>=c0o1 && q<=c1o1) + { + (D7.f[3])[kn]= f7_N + nue_d * ConcD; + } + + q = q_dirT[k]; + if (q>=c0o1 && q<=c1o1) + { + (D7.f[6])[kb]= f7_B + nue_d * ConcD; + } + + q = q_dirB[k]; + if (q>=c0o1 && q<=c1o1) + { + (D7.f[5])[kt]= f7_T + nue_d * ConcD; + } + + } +} +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +////////////////////////////////////////////////////////////////////////////// +__global__ void QADPressIncomp27( + real* DD, + real* DD27, + real* temp, + real* velo, + real diffusivity, + int* k_Q, + real* QQ, + unsigned int numberOfBCnodes, + real om1, + unsigned int* neighborX, + unsigned int* neighborY, + unsigned int* neighborZ, + unsigned long long numberOfLBnodes, + bool isEvenTimestep) +{ + Distributions27 D; + if (isEvenTimestep==true) + { + D.f[dP00] = &DD[dP00 * numberOfLBnodes]; + D.f[dM00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00P] = &DD[d00P * numberOfLBnodes]; + D.f[d00M] = &DD[d00M * numberOfLBnodes]; + D.f[dPP0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dMM0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dP0P] = &DD[dP0P * numberOfLBnodes]; + D.f[dM0M] = &DD[dM0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dP0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dM0P * numberOfLBnodes]; + D.f[d0PP] = &DD[d0PP * numberOfLBnodes]; + D.f[d0MM] = &DD[d0MM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0PM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dPPP * numberOfLBnodes]; + D.f[dMMP] = &DD[dMMP * numberOfLBnodes]; + D.f[dPMP] = &DD[dPMP * numberOfLBnodes]; + D.f[dMPP] = &DD[dMPP * numberOfLBnodes]; + D.f[dPPM] = &DD[dPPM * numberOfLBnodes]; + D.f[dMMM] = &DD[dMMM * numberOfLBnodes]; + D.f[dPMM] = &DD[dPMM * numberOfLBnodes]; + D.f[dMPM] = &DD[dMPM * numberOfLBnodes]; + } + else + { + D.f[dM00] = &DD[dP00 * numberOfLBnodes]; + D.f[dP00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00M] = &DD[d00P * numberOfLBnodes]; + D.f[d00P] = &DD[d00M * numberOfLBnodes]; + D.f[dMM0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dPP0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dM0M] = &DD[dP0P * numberOfLBnodes]; + D.f[dP0P] = &DD[dM0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dP0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dM0P * numberOfLBnodes]; + D.f[d0MM] = &DD[d0PP * numberOfLBnodes]; + D.f[d0PP] = &DD[d0MM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0PM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dMMM * numberOfLBnodes]; + D.f[dMMP] = &DD[dPPM * numberOfLBnodes]; + D.f[dPMP] = &DD[dMPM * numberOfLBnodes]; + D.f[dMPP] = &DD[dPMM * numberOfLBnodes]; + D.f[dPPM] = &DD[dMMP * numberOfLBnodes]; + D.f[dMMM] = &DD[dPPP * numberOfLBnodes]; + D.f[dPMM] = &DD[dMPP * numberOfLBnodes]; + D.f[dMPM] = &DD[dPMP * numberOfLBnodes]; + } + + Distributions27 D27; + if (isEvenTimestep==true) + { + D27.f[dP00] = &DD27[dP00 * numberOfLBnodes]; + D27.f[dM00] = &DD27[dM00 * numberOfLBnodes]; + D27.f[d0P0] = &DD27[d0P0 * numberOfLBnodes]; + D27.f[d0M0] = &DD27[d0M0 * numberOfLBnodes]; + D27.f[d00P] = &DD27[d00P * numberOfLBnodes]; + D27.f[d00M] = &DD27[d00M * numberOfLBnodes]; + D27.f[dPP0] = &DD27[dPP0 * numberOfLBnodes]; + D27.f[dMM0] = &DD27[dMM0 * numberOfLBnodes]; + D27.f[dPM0] = &DD27[dPM0 * numberOfLBnodes]; + D27.f[dMP0] = &DD27[dMP0 * numberOfLBnodes]; + D27.f[dP0P] = &DD27[dP0P * numberOfLBnodes]; + D27.f[dM0M] = &DD27[dM0M * numberOfLBnodes]; + D27.f[dP0M] = &DD27[dP0M * numberOfLBnodes]; + D27.f[dM0P] = &DD27[dM0P * numberOfLBnodes]; + D27.f[d0PP] = &DD27[d0PP * numberOfLBnodes]; + D27.f[d0MM] = &DD27[d0MM * numberOfLBnodes]; + D27.f[d0PM] = &DD27[d0PM * numberOfLBnodes]; + D27.f[d0MP] = &DD27[d0MP * numberOfLBnodes]; + D27.f[d000] = &DD27[d000 * numberOfLBnodes]; + D27.f[dPPP] = &DD27[dPPP * numberOfLBnodes]; + D27.f[dMMP] = &DD27[dMMP * numberOfLBnodes]; + D27.f[dPMP] = &DD27[dPMP * numberOfLBnodes]; + D27.f[dMPP] = &DD27[dMPP * numberOfLBnodes]; + D27.f[dPPM] = &DD27[dPPM * numberOfLBnodes]; + D27.f[dMMM] = &DD27[dMMM * numberOfLBnodes]; + D27.f[dPMM] = &DD27[dPMM * numberOfLBnodes]; + D27.f[dMPM] = &DD27[dMPM * numberOfLBnodes]; + } + else + { + D27.f[dM00] = &DD27[dP00 * numberOfLBnodes]; + D27.f[dP00] = &DD27[dM00 * numberOfLBnodes]; + D27.f[d0M0] = &DD27[d0P0 * numberOfLBnodes]; + D27.f[d0P0] = &DD27[d0M0 * numberOfLBnodes]; + D27.f[d00M] = &DD27[d00P * numberOfLBnodes]; + D27.f[d00P] = &DD27[d00M * numberOfLBnodes]; + D27.f[dMM0] = &DD27[dPP0 * numberOfLBnodes]; + D27.f[dPP0] = &DD27[dMM0 * numberOfLBnodes]; + D27.f[dMP0] = &DD27[dPM0 * numberOfLBnodes]; + D27.f[dPM0] = &DD27[dMP0 * numberOfLBnodes]; + D27.f[dM0M] = &DD27[dP0P * numberOfLBnodes]; + D27.f[dP0P] = &DD27[dM0M * numberOfLBnodes]; + D27.f[dM0P] = &DD27[dP0M * numberOfLBnodes]; + D27.f[dP0M] = &DD27[dM0P * numberOfLBnodes]; + D27.f[d0MM] = &DD27[d0PP * numberOfLBnodes]; + D27.f[d0PP] = &DD27[d0MM * numberOfLBnodes]; + D27.f[d0MP] = &DD27[d0PM * numberOfLBnodes]; + D27.f[d0PM] = &DD27[d0MP * numberOfLBnodes]; + D27.f[d000] = &DD27[d000 * numberOfLBnodes]; + D27.f[dPPP] = &DD27[dMMM * numberOfLBnodes]; + D27.f[dMMP] = &DD27[dPPM * numberOfLBnodes]; + D27.f[dPMP] = &DD27[dMPM * numberOfLBnodes]; + D27.f[dMPP] = &DD27[dPMM * numberOfLBnodes]; + D27.f[dPPM] = &DD27[dMMP * numberOfLBnodes]; + D27.f[dMMM] = &DD27[dPPP * numberOfLBnodes]; + D27.f[dPMM] = &DD27[dMPP * numberOfLBnodes]; + D27.f[dMPM] = &DD27[dPMP * numberOfLBnodes]; + } + //////////////////////////////////////////////////////////////////////////////// + const unsigned x = threadIdx.x; // Globaler x-Index + const unsigned y = blockIdx.x; // Globaler y-Index + const unsigned z = blockIdx.y; // Globaler z-Index + + const unsigned nx = blockDim.x; + const unsigned ny = gridDim.x; + + const unsigned k = nx*(ny*z + y) + x; + ////////////////////////////////////////////////////////////////////////// + + if(k < 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[dP00 * numberOfBCnodes]; + q_dirW = &QQ[dM00 * numberOfBCnodes]; + q_dirN = &QQ[d0P0 * numberOfBCnodes]; + q_dirS = &QQ[d0M0 * numberOfBCnodes]; + q_dirT = &QQ[d00P * numberOfBCnodes]; + q_dirB = &QQ[d00M * numberOfBCnodes]; + q_dirNE = &QQ[dPP0 * numberOfBCnodes]; + q_dirSW = &QQ[dMM0 * numberOfBCnodes]; + q_dirSE = &QQ[dPM0 * numberOfBCnodes]; + q_dirNW = &QQ[dMP0 * numberOfBCnodes]; + q_dirTE = &QQ[dP0P * numberOfBCnodes]; + q_dirBW = &QQ[dM0M * numberOfBCnodes]; + q_dirBE = &QQ[dP0M * numberOfBCnodes]; + q_dirTW = &QQ[dM0P * numberOfBCnodes]; + q_dirTN = &QQ[d0PP * numberOfBCnodes]; + q_dirBS = &QQ[d0MM * numberOfBCnodes]; + q_dirBN = &QQ[d0PM * numberOfBCnodes]; + q_dirTS = &QQ[d0MP * numberOfBCnodes]; + q_dirTNE = &QQ[dPPP * numberOfBCnodes]; + q_dirTSW = &QQ[dMMP * numberOfBCnodes]; + q_dirTSE = &QQ[dPMP * numberOfBCnodes]; + q_dirTNW = &QQ[dMPP * numberOfBCnodes]; + q_dirBNE = &QQ[dPPM * numberOfBCnodes]; + q_dirBSW = &QQ[dMMM * numberOfBCnodes]; + q_dirBSE = &QQ[dPMM * numberOfBCnodes]; + q_dirBNW = &QQ[dMPM * 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]; + 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 f_W = (D.f[dP00])[ke ]; + real f_E = (D.f[dM00])[kw ]; + real f_S = (D.f[d0P0])[kn ]; + real f_N = (D.f[d0M0])[ks ]; + real f_B = (D.f[d00P])[kt ]; + real f_T = (D.f[d00M])[kb ]; + real f_SW = (D.f[dPP0])[kne ]; + real f_NE = (D.f[dMM0])[ksw ]; + real f_NW = (D.f[dPM0])[kse ]; + real f_SE = (D.f[dMP0])[knw ]; + real f_BW = (D.f[dP0P])[kte ]; + real f_TE = (D.f[dM0M])[kbw ]; + real f_TW = (D.f[dP0M])[kbe ]; + real f_BE = (D.f[dM0P])[ktw ]; + real f_BS = (D.f[d0PP])[ktn ]; + real f_TN = (D.f[d0MM])[kbs ]; + real f_TS = (D.f[d0PM])[kbn ]; + real f_BN = (D.f[d0MP])[kts ]; + //real f_ZERO = (D.f[d000])[kzero]; + real f_BSW = (D.f[dPPP])[ktne ]; + real f_BNE = (D.f[dMMP])[ktsw ]; + real f_BNW = (D.f[dPMP])[ktse ]; + real f_BSE = (D.f[dMPP])[ktnw ]; + real f_TSW = (D.f[dPPM])[kbne ]; + real f_TNE = (D.f[dMMM])[kbsw ]; + real f_TNW = (D.f[dPMM])[kbse ]; + real f_TSE = (D.f[dMPM])[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[dP00])[ke ]; + //real f27_E = (D27.f[dM00])[kw ]; + //real f27_S = (D27.f[d0P0])[kn ]; + //real f27_N = (D27.f[d0M0])[ks ]; + //real f27_B = (D27.f[d00P])[kt ]; + //real f27_T = (D27.f[d00M])[kb ]; + //real f27_SW = (D27.f[dPP0])[kne ]; + //real f27_NE = (D27.f[dMM0])[ksw ]; + //real f27_NW = (D27.f[dPM0])[kse ]; + //real f27_SE = (D27.f[dMP0])[knw ]; + //real f27_BW = (D27.f[dP0P])[kte ]; + //real f27_TE = (D27.f[dM0M])[kbw ]; + //real f27_TW = (D27.f[dP0M])[kbe ]; + //real f27_BE = (D27.f[dM0P])[ktw ]; + //real f27_BS = (D27.f[d0PP])[ktn ]; + //real f27_TN = (D27.f[d0MM])[kbs ]; + //real f27_TS = (D27.f[d0PM])[kbn ]; + //real f27_BN = (D27.f[d0MP])[kts ]; + //real f27_ZERO = (D27.f[d000])[kzero]; + //real f27_BSW = (D27.f[dPPP])[ktne ]; + //real f27_BNE = (D27.f[dMMP])[ktsw ]; + //real f27_BNW = (D27.f[dPMP])[ktse ]; + //real f27_BSE = (D27.f[dMPP])[ktnw ]; + //real f27_TSW = (D27.f[dPPM])[kbne ]; + //real f27_TNE = (D27.f[dMMM])[kbsw ]; + //real f27_TNW = (D27.f[dPMM])[kbse ]; + //real f27_TSE = (D27.f[dMPM])[kbnw ]; + //////////////////////////////////////////////////////////////////////////////// + real cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3); + //////////////////////////////////////////////////////////////////////////////// + //real ConcD = f27_TSE + f27_TNW + f27_TNE + f27_TSW + f27_BSE + f27_BNW + f27_BNE + f27_BSW + + //f27_BN + f27_TS + f27_TN + f27_BS + f27_BE + f27_TW + f27_TE + f27_BW + f27_SE + f27_NW + f27_NE + f27_SW + + //f27_T + f27_B + f27_N + f27_S + f27_E + f27_W + f27_ZERO; + + //real feq27_ZERO = c8over27* ConcD*(one-cu_sq); + /*real feq27_E = c2o27* ConcD*(c1o1+c3o1*( vx1 )+c9o2*( vx1 )*( vx1 )-cu_sq); + real feq27_W = c2o27* ConcD*(c1o1+c3o1*(-vx1 )+c9o2*(-vx1 )*(-vx1 )-cu_sq); + real feq27_N = c2o27* ConcD*(c1o1+c3o1*( vx2 )+c9o2*( vx2 )*( vx2 )-cu_sq); + real feq27_S = c2o27* ConcD*(c1o1+c3o1*( -vx2 )+c9o2*( -vx2 )*( -vx2 )-cu_sq); + real feq27_T = c2o27* ConcD*(c1o1+c3o1*( vx3)+c9o2*( vx3)*( vx3)-cu_sq); + real feq27_B = c2o27* ConcD*(c1o1+c3o1*( -vx3)+c9o2*( -vx3)*( -vx3)-cu_sq); + real feq27_NE = c1o54* ConcD*(c1o1+c3o1*( vx1+vx2 )+c9o2*( vx1+vx2 )*( vx1+vx2 )-cu_sq); + real feq27_SW = c1o54* ConcD*(c1o1+c3o1*(-vx1-vx2 )+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq); + real feq27_SE = c1o54* ConcD*(c1o1+c3o1*( vx1-vx2 )+c9o2*( vx1-vx2 )*( vx1-vx2 )-cu_sq); + real feq27_NW = c1o54* ConcD*(c1o1+c3o1*(-vx1+vx2 )+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq); + real feq27_TE = c1o54* ConcD*(c1o1+c3o1*( vx1 +vx3)+c9o2*( vx1 +vx3)*( vx1 +vx3)-cu_sq); + real feq27_BW = c1o54* ConcD*(c1o1+c3o1*(-vx1 -vx3)+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq); + real feq27_BE = c1o54* ConcD*(c1o1+c3o1*( vx1 -vx3)+c9o2*( vx1 -vx3)*( vx1 -vx3)-cu_sq); + real feq27_TW = c1o54* ConcD*(c1o1+c3o1*(-vx1 +vx3)+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq); + real feq27_TN = c1o54* ConcD*(c1o1+c3o1*( vx2+vx3)+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq); + real feq27_BS = c1o54* ConcD*(c1o1+c3o1*( -vx2-vx3)+c9o2*( -vx2-vx3)*( -vx2-vx3)-cu_sq); + real feq27_BN = c1o54* ConcD*(c1o1+c3o1*( vx2-vx3)+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq); + real feq27_TS = c1o54* ConcD*(c1o1+c3o1*( -vx2+vx3)+c9o2*( -vx2+vx3)*( -vx2+vx3)-cu_sq); + real feq27_TNE = c1o216*ConcD*(c1o1+c3o1*( vx1+vx2+vx3)+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq); + real feq27_BSW = c1o216*ConcD*(c1o1+c3o1*(-vx1-vx2-vx3)+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq); + real feq27_BNE = c1o216*ConcD*(c1o1+c3o1*( vx1+vx2-vx3)+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq); + real feq27_TSW = c1o216*ConcD*(c1o1+c3o1*(-vx1-vx2+vx3)+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq); + real feq27_TSE = c1o216*ConcD*(c1o1+c3o1*( vx1-vx2+vx3)+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq); + real feq27_BNW = c1o216*ConcD*(c1o1+c3o1*(-vx1+vx2-vx3)+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq); + real feq27_BSE = c1o216*ConcD*(c1o1+c3o1*( vx1-vx2-vx3)+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq); + real feq27_TNW = c1o216*ConcD*(c1o1+c3o1*(-vx1+vx2+vx3)+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq);*/ + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + real TempD = temp[k]; + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // velocity inflow + //vx1 = zero; + //vx2 = zero; + //vx3 = velo[k]; + + //real feqW27_ZERO = c8over27* TempD*(one-cu_sq); + real feqW27_E = c2o27* TempD*(c1o1+c3o1*( vx1 )+c9o2*( vx1 )*( vx1 )-cu_sq); //feq27_E ;// + real feqW27_W = c2o27* TempD*(c1o1+c3o1*(-vx1 )+c9o2*(-vx1 )*(-vx1 )-cu_sq); //feq27_W ;// + real feqW27_N = c2o27* TempD*(c1o1+c3o1*( vx2 )+c9o2*( vx2 )*( vx2 )-cu_sq); //feq27_N ;// + real feqW27_S = c2o27* TempD*(c1o1+c3o1*( -vx2 )+c9o2*( -vx2 )*( -vx2 )-cu_sq); //feq27_S ;// + real feqW27_T = c2o27* TempD*(c1o1+c3o1*( vx3)+c9o2*( vx3)*( vx3)-cu_sq); //feq27_T ;// + real feqW27_B = c2o27* TempD*(c1o1+c3o1*( -vx3)+c9o2*( -vx3)*( -vx3)-cu_sq); //feq27_B ;// + real feqW27_NE = c1o54* TempD*(c1o1+c3o1*( vx1+vx2 )+c9o2*( vx1+vx2 )*( vx1+vx2 )-cu_sq); //feq27_NE ;// + real feqW27_SW = c1o54* TempD*(c1o1+c3o1*(-vx1-vx2 )+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq); //feq27_SW ;// + real feqW27_SE = c1o54* TempD*(c1o1+c3o1*( vx1-vx2 )+c9o2*( vx1-vx2 )*( vx1-vx2 )-cu_sq); //feq27_SE ;// + real feqW27_NW = c1o54* TempD*(c1o1+c3o1*(-vx1+vx2 )+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq); //feq27_NW ;// + real feqW27_TE = c1o54* TempD*(c1o1+c3o1*( vx1 +vx3)+c9o2*( vx1 +vx3)*( vx1 +vx3)-cu_sq); //feq27_TE ;// + real feqW27_BW = c1o54* TempD*(c1o1+c3o1*(-vx1 -vx3)+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq); //feq27_BW ;// + real feqW27_BE = c1o54* TempD*(c1o1+c3o1*( vx1 -vx3)+c9o2*( vx1 -vx3)*( vx1 -vx3)-cu_sq); //feq27_BE ;// + real feqW27_TW = c1o54* TempD*(c1o1+c3o1*(-vx1 +vx3)+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq); //feq27_TW ;// + real feqW27_TN = c1o54* TempD*(c1o1+c3o1*( vx2+vx3)+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq); //feq27_TN ;// + real feqW27_BS = c1o54* TempD*(c1o1+c3o1*( -vx2-vx3)+c9o2*( -vx2-vx3)*( -vx2-vx3)-cu_sq); //feq27_BS ;// + real feqW27_BN = c1o54* TempD*(c1o1+c3o1*( vx2-vx3)+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq); //feq27_BN ;// + real feqW27_TS = c1o54* TempD*(c1o1+c3o1*( -vx2+vx3)+c9o2*( -vx2+vx3)*( -vx2+vx3)-cu_sq); //feq27_TS ;// + real feqW27_TNE = c1o216*TempD*(c1o1+c3o1*( vx1+vx2+vx3)+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq); //feq27_TNE;// + real feqW27_BSW = c1o216*TempD*(c1o1+c3o1*(-vx1-vx2-vx3)+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq); //feq27_BSW;// + real feqW27_BNE = c1o216*TempD*(c1o1+c3o1*( vx1+vx2-vx3)+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq); //feq27_BNE;// + real feqW27_TSW = c1o216*TempD*(c1o1+c3o1*(-vx1-vx2+vx3)+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq); //feq27_TSW;// + real feqW27_TSE = c1o216*TempD*(c1o1+c3o1*( vx1-vx2+vx3)+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq); //feq27_TSE;// + real feqW27_BNW = c1o216*TempD*(c1o1+c3o1*(-vx1+vx2-vx3)+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq); //feq27_BNW;// + real feqW27_BSE = c1o216*TempD*(c1o1+c3o1*( vx1-vx2-vx3)+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq); //feq27_BSE;// + real feqW27_TNW = c1o216*TempD*(c1o1+c3o1*(-vx1+vx2+vx3)+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq); //feq27_TNW;// + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + real omegaD = c3o1 - sqrt(c3o1); + //real Lam = -(c1o2-one/omegaD); + //real nue_d = Lam/three; + //real ae = zero; + //real ae = diffusivity/nue_d - one; + + + ////////////////////////////////////////////////////////////////////////// + if (isEvenTimestep==false) + { + D27.f[dP00] = &DD27[dP00 * numberOfLBnodes]; + D27.f[dM00] = &DD27[dM00 * numberOfLBnodes]; + D27.f[d0P0] = &DD27[d0P0 * numberOfLBnodes]; + D27.f[d0M0] = &DD27[d0M0 * numberOfLBnodes]; + D27.f[d00P] = &DD27[d00P * numberOfLBnodes]; + D27.f[d00M] = &DD27[d00M * numberOfLBnodes]; + D27.f[dPP0] = &DD27[dPP0 * numberOfLBnodes]; + D27.f[dMM0] = &DD27[dMM0 * numberOfLBnodes]; + D27.f[dPM0] = &DD27[dPM0 * numberOfLBnodes]; + D27.f[dMP0] = &DD27[dMP0 * numberOfLBnodes]; + D27.f[dP0P] = &DD27[dP0P * numberOfLBnodes]; + D27.f[dM0M] = &DD27[dM0M * numberOfLBnodes]; + D27.f[dP0M] = &DD27[dP0M * numberOfLBnodes]; + D27.f[dM0P] = &DD27[dM0P * numberOfLBnodes]; + D27.f[d0PP] = &DD27[d0PP * numberOfLBnodes]; + D27.f[d0MM] = &DD27[d0MM * numberOfLBnodes]; + D27.f[d0PM] = &DD27[d0PM * numberOfLBnodes]; + D27.f[d0MP] = &DD27[d0MP * numberOfLBnodes]; + D27.f[d000] = &DD27[d000 * numberOfLBnodes]; + D27.f[dPPP] = &DD27[dPPP * numberOfLBnodes]; + D27.f[dMMP] = &DD27[dMMP * numberOfLBnodes]; + D27.f[dPMP] = &DD27[dPMP * numberOfLBnodes]; + D27.f[dMPP] = &DD27[dMPP * numberOfLBnodes]; + D27.f[dPPM] = &DD27[dPPM * numberOfLBnodes]; + D27.f[dMMM] = &DD27[dMMM * numberOfLBnodes]; + D27.f[dPMM] = &DD27[dPMM * numberOfLBnodes]; + D27.f[dMPM] = &DD27[dMPM * numberOfLBnodes]; + } + else + { + D27.f[dM00] = &DD27[dP00 * numberOfLBnodes]; + D27.f[dP00] = &DD27[dM00 * numberOfLBnodes]; + D27.f[d0M0] = &DD27[d0P0 * numberOfLBnodes]; + D27.f[d0P0] = &DD27[d0M0 * numberOfLBnodes]; + D27.f[d00M] = &DD27[d00P * numberOfLBnodes]; + D27.f[d00P] = &DD27[d00M * numberOfLBnodes]; + D27.f[dMM0] = &DD27[dPP0 * numberOfLBnodes]; + D27.f[dPP0] = &DD27[dMM0 * numberOfLBnodes]; + D27.f[dMP0] = &DD27[dPM0 * numberOfLBnodes]; + D27.f[dPM0] = &DD27[dMP0 * numberOfLBnodes]; + D27.f[dM0M] = &DD27[dP0P * numberOfLBnodes]; + D27.f[dP0P] = &DD27[dM0M * numberOfLBnodes]; + D27.f[dM0P] = &DD27[dP0M * numberOfLBnodes]; + D27.f[dP0M] = &DD27[dM0P * numberOfLBnodes]; + D27.f[d0MM] = &DD27[d0PP * numberOfLBnodes]; + D27.f[d0PP] = &DD27[d0MM * numberOfLBnodes]; + D27.f[d0MP] = &DD27[d0PM * numberOfLBnodes]; + D27.f[d0PM] = &DD27[d0MP * numberOfLBnodes]; + D27.f[d000] = &DD27[d000 * numberOfLBnodes]; + D27.f[dPPP] = &DD27[dMMM * numberOfLBnodes]; + D27.f[dMMP] = &DD27[dPPM * numberOfLBnodes]; + D27.f[dPMP] = &DD27[dMPM * numberOfLBnodes]; + D27.f[dMPP] = &DD27[dPMM * numberOfLBnodes]; + D27.f[dPPM] = &DD27[dMMP * numberOfLBnodes]; + D27.f[dMMM] = &DD27[dPPP * numberOfLBnodes]; + D27.f[dPMM] = &DD27[dMPP * numberOfLBnodes]; + D27.f[dMPM] = &DD27[dPMP * numberOfLBnodes]; + } + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //Test + //(D.f[d000])[k]=c1o10; + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + real q; + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + q = q_dirE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dM00])[kw ]= -feqW27_W + c2o1 * c2o27 * TempD; + q = q_dirW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dP00])[ke ]= -feqW27_E + c2o1 * c2o27 * TempD; + q = q_dirN[k]; if (q>=c0o1 && q<=c1o1) (D27.f[d0M0])[ks ]= -feqW27_S + c2o1 * c2o27 * TempD; + q = q_dirS[k]; if (q>=c0o1 && q<=c1o1) (D27.f[d0P0])[kn ]= -feqW27_N + c2o1 * c2o27 * TempD; + q = q_dirT[k]; if (q>=c0o1 && q<=c1o1) (D27.f[d00M])[kb ]= -feqW27_B + c2o1 * c2o27 * TempD; + q = q_dirB[k]; if (q>=c0o1 && q<=c1o1) (D27.f[d00P])[kt ]= -feqW27_T + c2o1 * c2o27 * TempD; + q = q_dirNE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dMM0])[ksw ]= -feqW27_SW + c2o1 * c1o54 * TempD; + q = q_dirSW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dPP0])[kne ]= -feqW27_NE + c2o1 * c1o54 * TempD; + q = q_dirSE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dMP0])[knw ]= -feqW27_NW + c2o1 * c1o54 * TempD; + q = q_dirNW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dPM0])[kse ]= -feqW27_SE + c2o1 * c1o54 * TempD; + q = q_dirTE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dM0M])[kbw ]= -feqW27_BW + c2o1 * c1o54 * TempD; + q = q_dirBW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dP0P])[kte ]= -feqW27_TE + c2o1 * c1o54 * TempD; + q = q_dirBE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dM0P])[ktw ]= -feqW27_TW + c2o1 * c1o54 * TempD; + q = q_dirTW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dP0M])[kbe ]= -feqW27_BE + c2o1 * c1o54 * TempD; + q = q_dirTN[k]; if (q>=c0o1 && q<=c1o1) (D27.f[d0MM])[kbs ]= -feqW27_BS + c2o1 * c1o54 * TempD; + q = q_dirBS[k]; if (q>=c0o1 && q<=c1o1) (D27.f[d0PP])[ktn ]= -feqW27_TN + c2o1 * c1o54 * TempD; + q = q_dirBN[k]; if (q>=c0o1 && q<=c1o1) (D27.f[d0MP])[kts ]= -feqW27_TS + c2o1 * c1o54 * TempD; + q = q_dirTS[k]; if (q>=c0o1 && q<=c1o1) (D27.f[d0PM])[kbn ]= -feqW27_BN + c2o1 * c1o54 * TempD; + q = q_dirTNE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dMMM])[kbsw]= -feqW27_BSW+ c2o1 * c1o216 * TempD; + q = q_dirBSW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dPPP])[ktne]= -feqW27_TNE+ c2o1 * c1o216 * TempD; + q = q_dirBNE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dMMP])[ktsw]= -feqW27_TSW+ c2o1 * c1o216 * TempD; + q = q_dirTSW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dPPM])[kbne]= -feqW27_BNE+ c2o1 * c1o216 * TempD; + q = q_dirTSE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dMPM])[kbnw]= -feqW27_BNW+ c2o1 * c1o216 * TempD; + q = q_dirBNW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dPMP])[ktse]= -feqW27_TSE+ c2o1 * c1o216 * TempD; + q = q_dirBSE[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dMPP])[ktnw]= -feqW27_TNW+ c2o1 * c1o216 * TempD; + q = q_dirTNW[k]; if (q>=c0o1 && q<=c1o1) (D27.f[dPMM])[kbse]= -feqW27_BSE+ c2o1 * c1o216 * TempD; + //q = q_dirE[k]; if (q>=zero && q<=one) (D27.f[dM00])[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[dP00])[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[d0M0])[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[d0P0])[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[d00M])[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[d00P])[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[dMM0])[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[dPP0])[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[dMP0])[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[dPM0])[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[dM0M])[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[dP0P])[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[dM0P])[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[dP0M])[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[d0MM])[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[d0PP])[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[d0MP])[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[d0PM])[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[dMMM])[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[dPPP])[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[dMMP])[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[dPPM])[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[dMPM])[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[dPMP])[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[dMPP])[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[dPMM])[kbse]=(two*feqW27_BSE-(f27_TNW*(q*omegaD-one)-omegaD*feq27_TNW*(q-one))/(omegaD-one)+f27_BSE*q)/(q+one); + } +} +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + + + + + + + + + + + + +//////////////////////////////////////////////////////////////////////////////// +inline __device__ real calcDistributionBC_AD_interpol(real q, real weight, real v, real v_sq, real f, real finf, real omegaDiffusivity, real jTangential, real concentration) { + real feq = weight * concentration * (c1o1 + c3o1 * v + c9o2 * v * v * concentration - v_sq * concentration); + return (c1o1 - q) / (c1o1 + q) * ((f - feq * omegaDiffusivity) / (c1o1 - omegaDiffusivity)) + (q * (f + finf) - c6o1 * weight * (jTangential)) / (c1o1 + q); +} +//////////////////////////////////////////////////////////////////////////////// +inline __device__ real calcDistributionBC_AD(real q, real weight, real v, real v_sq, real f, real finf, real omegaDiffusivity, real jTangential, real concentration) { + return f - c6o1 * weight * jTangential; +} + + +// has to be excecuted before Fluid BCs +////////////////////////////////////////////////////////////////////////////// +__global__ void AD_SlipVelDeviceComp( + real *normalX, + real *normalY, + real *normalZ, + real *distributions, + real *distributionsAD, + int *QindexArray, + real *Qarrays, + uint numberOfBCnodes, + real omegaDiffusivity, + uint* neighborX, + uint* neighborY, + uint* neighborZ, + unsigned long long numberOfLBnodes, + bool isEvenTimestep) +{ + Distributions27 D; + if (isEvenTimestep) + { + D.f[dP00] = &distributions[dP00 * numberOfLBnodes]; + D.f[dM00] = &distributions[dM00 * numberOfLBnodes]; + D.f[d0P0] = &distributions[d0P0 * numberOfLBnodes]; + D.f[d0M0] = &distributions[d0M0 * numberOfLBnodes]; + D.f[d00P] = &distributions[d00P * numberOfLBnodes]; + D.f[d00M] = &distributions[d00M * numberOfLBnodes]; + D.f[dPP0] = &distributions[dPP0 * numberOfLBnodes]; + D.f[dMM0] = &distributions[dMM0 * numberOfLBnodes]; + D.f[dPM0] = &distributions[dPM0 * numberOfLBnodes]; + D.f[dMP0] = &distributions[dMP0 * numberOfLBnodes]; + D.f[dP0P] = &distributions[dP0P * numberOfLBnodes]; + D.f[dM0M] = &distributions[dM0M * numberOfLBnodes]; + D.f[dP0M] = &distributions[dP0M * numberOfLBnodes]; + D.f[dM0P] = &distributions[dM0P * numberOfLBnodes]; + D.f[d0PP] = &distributions[d0PP * numberOfLBnodes]; + D.f[d0MM] = &distributions[d0MM * numberOfLBnodes]; + D.f[d0PM] = &distributions[d0PM * numberOfLBnodes]; + D.f[d0MP] = &distributions[d0MP * numberOfLBnodes]; + D.f[d000] = &distributions[d000 * numberOfLBnodes]; + D.f[dPPP] = &distributions[dPPP * numberOfLBnodes]; + D.f[dMMP] = &distributions[dMMP * numberOfLBnodes]; + D.f[dPMP] = &distributions[dPMP * numberOfLBnodes]; + D.f[dMPP] = &distributions[dMPP * numberOfLBnodes]; + D.f[dPPM] = &distributions[dPPM * numberOfLBnodes]; + D.f[dMMM] = &distributions[dMMM * numberOfLBnodes]; + D.f[dPMM] = &distributions[dPMM * numberOfLBnodes]; + D.f[dMPM] = &distributions[dMPM * numberOfLBnodes]; + } + else + { + D.f[dM00] = &distributions[dP00 * numberOfLBnodes]; + D.f[dP00] = &distributions[dM00 * numberOfLBnodes]; + D.f[d0M0] = &distributions[d0P0 * numberOfLBnodes]; + D.f[d0P0] = &distributions[d0M0 * numberOfLBnodes]; + D.f[d00M] = &distributions[d00P * numberOfLBnodes]; + D.f[d00P] = &distributions[d00M * numberOfLBnodes]; + D.f[dMM0] = &distributions[dPP0 * numberOfLBnodes]; + D.f[dPP0] = &distributions[dMM0 * numberOfLBnodes]; + D.f[dMP0] = &distributions[dPM0 * numberOfLBnodes]; + D.f[dPM0] = &distributions[dMP0 * numberOfLBnodes]; + D.f[dM0M] = &distributions[dP0P * numberOfLBnodes]; + D.f[dP0P] = &distributions[dM0M * numberOfLBnodes]; + D.f[dM0P] = &distributions[dP0M * numberOfLBnodes]; + D.f[dP0M] = &distributions[dM0P * numberOfLBnodes]; + D.f[d0MM] = &distributions[d0PP * numberOfLBnodes]; + D.f[d0PP] = &distributions[d0MM * numberOfLBnodes]; + D.f[d0MP] = &distributions[d0PM * numberOfLBnodes]; + D.f[d0PM] = &distributions[d0MP * numberOfLBnodes]; + D.f[d000] = &distributions[d000 * numberOfLBnodes]; + D.f[dPPP] = &distributions[dMMM * numberOfLBnodes]; + D.f[dMMP] = &distributions[dPPM * numberOfLBnodes]; + D.f[dPMP] = &distributions[dMPM * numberOfLBnodes]; + D.f[dMPP] = &distributions[dPMM * numberOfLBnodes]; + D.f[dPPM] = &distributions[dMMP * numberOfLBnodes]; + D.f[dMMM] = &distributions[dPPP * numberOfLBnodes]; + D.f[dPMM] = &distributions[dMPP * numberOfLBnodes]; + D.f[dMPM] = &distributions[dPMP * numberOfLBnodes]; + } + //////////////////////////////////////////////////////////////////////////////// + Distributions27 DAD; + if (isEvenTimestep) + { + DAD.f[dP00] = &distributionsAD[dP00 * numberOfLBnodes]; + DAD.f[dM00] = &distributionsAD[dM00 * numberOfLBnodes]; + DAD.f[d0P0] = &distributionsAD[d0P0 * numberOfLBnodes]; + DAD.f[d0M0] = &distributionsAD[d0M0 * numberOfLBnodes]; + DAD.f[d00P] = &distributionsAD[d00P * numberOfLBnodes]; + DAD.f[d00M] = &distributionsAD[d00M * numberOfLBnodes]; + DAD.f[dPP0] = &distributionsAD[dPP0 * numberOfLBnodes]; + DAD.f[dMM0] = &distributionsAD[dMM0 * numberOfLBnodes]; + DAD.f[dPM0] = &distributionsAD[dPM0 * numberOfLBnodes]; + DAD.f[dMP0] = &distributionsAD[dMP0 * numberOfLBnodes]; + DAD.f[dP0P] = &distributionsAD[dP0P * numberOfLBnodes]; + DAD.f[dM0M] = &distributionsAD[dM0M * numberOfLBnodes]; + DAD.f[dP0M] = &distributionsAD[dP0M * numberOfLBnodes]; + DAD.f[dM0P] = &distributionsAD[dM0P * numberOfLBnodes]; + DAD.f[d0PP] = &distributionsAD[d0PP * numberOfLBnodes]; + DAD.f[d0MM] = &distributionsAD[d0MM * numberOfLBnodes]; + DAD.f[d0PM] = &distributionsAD[d0PM * numberOfLBnodes]; + DAD.f[d0MP] = &distributionsAD[d0MP * numberOfLBnodes]; + DAD.f[d000] = &distributionsAD[d000 * numberOfLBnodes]; + DAD.f[dPPP] = &distributionsAD[dPPP * numberOfLBnodes]; + DAD.f[dMMP] = &distributionsAD[dMMP * numberOfLBnodes]; + DAD.f[dPMP] = &distributionsAD[dPMP * numberOfLBnodes]; + DAD.f[dMPP] = &distributionsAD[dMPP * numberOfLBnodes]; + DAD.f[dPPM] = &distributionsAD[dPPM * numberOfLBnodes]; + DAD.f[dMMM] = &distributionsAD[dMMM * numberOfLBnodes]; + DAD.f[dPMM] = &distributionsAD[dPMM * numberOfLBnodes]; + DAD.f[dMPM] = &distributionsAD[dMPM * numberOfLBnodes]; + } + else + { + DAD.f[dM00] = &distributionsAD[dP00 * numberOfLBnodes]; + DAD.f[dP00] = &distributionsAD[dM00 * numberOfLBnodes]; + DAD.f[d0M0] = &distributionsAD[d0P0 * numberOfLBnodes]; + DAD.f[d0P0] = &distributionsAD[d0M0 * numberOfLBnodes]; + DAD.f[d00M] = &distributionsAD[d00P * numberOfLBnodes]; + DAD.f[d00P] = &distributionsAD[d00M * numberOfLBnodes]; + DAD.f[dMM0] = &distributionsAD[dPP0 * numberOfLBnodes]; + DAD.f[dPP0] = &distributionsAD[dMM0 * numberOfLBnodes]; + DAD.f[dMP0] = &distributionsAD[dPM0 * numberOfLBnodes]; + DAD.f[dPM0] = &distributionsAD[dMP0 * numberOfLBnodes]; + DAD.f[dM0M] = &distributionsAD[dP0P * numberOfLBnodes]; + DAD.f[dP0P] = &distributionsAD[dM0M * numberOfLBnodes]; + DAD.f[dM0P] = &distributionsAD[dP0M * numberOfLBnodes]; + DAD.f[dP0M] = &distributionsAD[dM0P * numberOfLBnodes]; + DAD.f[d0MM] = &distributionsAD[d0PP * numberOfLBnodes]; + DAD.f[d0PP] = &distributionsAD[d0MM * numberOfLBnodes]; + DAD.f[d0MP] = &distributionsAD[d0PM * numberOfLBnodes]; + DAD.f[d0PM] = &distributionsAD[d0MP * numberOfLBnodes]; + DAD.f[d000] = &distributionsAD[d000 * numberOfLBnodes]; + DAD.f[dPPP] = &distributionsAD[dMMM * numberOfLBnodes]; + DAD.f[dMMP] = &distributionsAD[dPPM * numberOfLBnodes]; + DAD.f[dPMP] = &distributionsAD[dMPM * numberOfLBnodes]; + DAD.f[dMPP] = &distributionsAD[dPMM * numberOfLBnodes]; + DAD.f[dPPM] = &distributionsAD[dMMP * numberOfLBnodes]; + DAD.f[dMMM] = &distributionsAD[dPPP * numberOfLBnodes]; + DAD.f[dPMM] = &distributionsAD[dMPP * numberOfLBnodes]; + DAD.f[dMPM] = &distributionsAD[dPMP * numberOfLBnodes]; + } + //////////////////////////////////////////////////////////////////////////////// + const unsigned x = threadIdx.x; // Globaler x-Index + const unsigned y = blockIdx.x; // Globaler y-Index + const unsigned z = blockIdx.y; // Globaler z-Index + + const unsigned nx = blockDim.x; + const unsigned ny = gridDim.x; + + const unsigned k = nx * (ny * z + y) + x; + ////////////////////////////////////////////////////////////////////////// + + if (k < numberOfBCnodes) + { + //////////////////////////////////////////////////////////////////////////////// + real NormX = normalX[k]; + real NormY = normalY[k]; + real NormZ = normalZ[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 = &Qarrays[dP00 * numberOfBCnodes]; + q_dirW = &Qarrays[dM00 * numberOfBCnodes]; + q_dirN = &Qarrays[d0P0 * numberOfBCnodes]; + q_dirS = &Qarrays[d0M0 * numberOfBCnodes]; + q_dirT = &Qarrays[d00P * numberOfBCnodes]; + q_dirB = &Qarrays[d00M * numberOfBCnodes]; + q_dirNE = &Qarrays[dPP0 * numberOfBCnodes]; + q_dirSW = &Qarrays[dMM0 * numberOfBCnodes]; + q_dirSE = &Qarrays[dPM0 * numberOfBCnodes]; + q_dirNW = &Qarrays[dMP0 * numberOfBCnodes]; + q_dirTE = &Qarrays[dP0P * numberOfBCnodes]; + q_dirBW = &Qarrays[dM0M * numberOfBCnodes]; + q_dirBE = &Qarrays[dP0M * numberOfBCnodes]; + q_dirTW = &Qarrays[dM0P * numberOfBCnodes]; + q_dirTN = &Qarrays[d0PP * numberOfBCnodes]; + q_dirBS = &Qarrays[d0MM * numberOfBCnodes]; + q_dirBN = &Qarrays[d0PM * numberOfBCnodes]; + q_dirTS = &Qarrays[d0MP * numberOfBCnodes]; + q_dirTNE = &Qarrays[dPPP * numberOfBCnodes]; + q_dirTSW = &Qarrays[dMMP * numberOfBCnodes]; + q_dirTSE = &Qarrays[dPMP * numberOfBCnodes]; + q_dirTNW = &Qarrays[dMPP * numberOfBCnodes]; + q_dirBNE = &Qarrays[dPPM * numberOfBCnodes]; + q_dirBSW = &Qarrays[dMMM * numberOfBCnodes]; + q_dirBSE = &Qarrays[dPMM * numberOfBCnodes]; + q_dirBNW = &Qarrays[dMPM * numberOfBCnodes]; + //////////////////////////////////////////////////////////////////////////////// + //index + unsigned int KQK = QindexArray[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 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[dP00])[ke]; + f_E = (D.f[dM00])[kw]; + f_S = (D.f[d0P0])[kn]; + f_N = (D.f[d0M0])[ks]; + f_B = (D.f[d00P])[kt]; + f_T = (D.f[d00M])[kb]; + f_SW = (D.f[dPP0])[kne]; + f_NE = (D.f[dMM0])[ksw]; + f_NW = (D.f[dPM0])[kse]; + f_SE = (D.f[dMP0])[knw]; + f_BW = (D.f[dP0P])[kte]; + f_TE = (D.f[dM0M])[kbw]; + f_TW = (D.f[dP0M])[kbe]; + f_BE = (D.f[dM0P])[ktw]; + f_BS = (D.f[d0PP])[ktn]; + f_TN = (D.f[d0MM])[kbs]; + f_TS = (D.f[d0PM])[kbn]; + f_BN = (D.f[d0MP])[kts]; + f_BSW = (D.f[dPPP])[ktne]; + f_BNE = (D.f[dMMP])[ktsw]; + f_BNW = (D.f[dPMP])[ktse]; + f_BSE = (D.f[dMPP])[ktnw]; + f_TSW = (D.f[dPPM])[kbne]; + f_TNE = (D.f[dMMM])[kbsw]; + f_TNW = (D.f[dPMM])[kbse]; + f_TSE = (D.f[dMPM])[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[d000])[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); + + + 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 cu_sq = c3o2 * (vx1 * vx1 + vx2 * vx2 + vx3 * vx3) * (c1o1 + drho); + + //////////////////////////////////////////////////////////////////////////////// + f_W = (DAD.f[dP00])[ke]; + f_E = (DAD.f[dM00])[kw]; + f_S = (DAD.f[d0P0])[kn]; + f_N = (DAD.f[d0M0])[ks]; + f_B = (DAD.f[d00P])[kt]; + f_T = (DAD.f[d00M])[kb]; + f_SW = (DAD.f[dPP0])[kne]; + f_NE = (DAD.f[dMM0])[ksw]; + f_NW = (DAD.f[dPM0])[kse]; + f_SE = (DAD.f[dMP0])[knw]; + f_BW = (DAD.f[dP0P])[kte]; + f_TE = (DAD.f[dM0M])[kbw]; + f_TW = (DAD.f[dP0M])[kbe]; + f_BE = (DAD.f[dM0P])[ktw]; + f_BS = (DAD.f[d0PP])[ktn]; + f_TN = (DAD.f[d0MM])[kbs]; + f_TS = (DAD.f[d0PM])[kbn]; + f_BN = (DAD.f[d0MP])[kts]; + f_BSW = (DAD.f[dPPP])[ktne]; + f_BNE = (DAD.f[dMMP])[ktsw]; + f_BNW = (DAD.f[dPMP])[ktse]; + f_BSE = (DAD.f[dMPP])[ktnw]; + f_TSW = (DAD.f[dPPM])[kbne]; + f_TNE = (DAD.f[dMMM])[kbsw]; + f_TNW = (DAD.f[dPMM])[kbse]; + f_TSE = (DAD.f[dMPM])[kbnw]; + ////////////////////////////////////////////////////////////////////////// + if (!isEvenTimestep) + { + DAD.f[dP00] = &distributionsAD[dP00 * numberOfLBnodes]; + DAD.f[dM00] = &distributionsAD[dM00 * numberOfLBnodes]; + DAD.f[d0P0] = &distributionsAD[d0P0 * numberOfLBnodes]; + DAD.f[d0M0] = &distributionsAD[d0M0 * numberOfLBnodes]; + DAD.f[d00P] = &distributionsAD[d00P * numberOfLBnodes]; + DAD.f[d00M] = &distributionsAD[d00M * numberOfLBnodes]; + DAD.f[dPP0] = &distributionsAD[dPP0 * numberOfLBnodes]; + DAD.f[dMM0] = &distributionsAD[dMM0 * numberOfLBnodes]; + DAD.f[dPM0] = &distributionsAD[dPM0 * numberOfLBnodes]; + DAD.f[dMP0] = &distributionsAD[dMP0 * numberOfLBnodes]; + DAD.f[dP0P] = &distributionsAD[dP0P * numberOfLBnodes]; + DAD.f[dM0M] = &distributionsAD[dM0M * numberOfLBnodes]; + DAD.f[dP0M] = &distributionsAD[dP0M * numberOfLBnodes]; + DAD.f[dM0P] = &distributionsAD[dM0P * numberOfLBnodes]; + DAD.f[d0PP] = &distributionsAD[d0PP * numberOfLBnodes]; + DAD.f[d0MM] = &distributionsAD[d0MM * numberOfLBnodes]; + DAD.f[d0PM] = &distributionsAD[d0PM * numberOfLBnodes]; + DAD.f[d0MP] = &distributionsAD[d0MP * numberOfLBnodes]; + DAD.f[d000] = &distributionsAD[d000 * numberOfLBnodes]; + DAD.f[dPPP] = &distributionsAD[dPPP * numberOfLBnodes]; + DAD.f[dMMP] = &distributionsAD[dMMP * numberOfLBnodes]; + DAD.f[dPMP] = &distributionsAD[dPMP * numberOfLBnodes]; + DAD.f[dMPP] = &distributionsAD[dMPP * numberOfLBnodes]; + DAD.f[dPPM] = &distributionsAD[dPPM * numberOfLBnodes]; + DAD.f[dMMM] = &distributionsAD[dMMM * numberOfLBnodes]; + DAD.f[dPMM] = &distributionsAD[dPMM * numberOfLBnodes]; + DAD.f[dMPM] = &distributionsAD[dMPM * numberOfLBnodes]; + } + else + { + DAD.f[dM00] = &distributionsAD[dP00 * numberOfLBnodes]; + DAD.f[dP00] = &distributionsAD[dM00 * numberOfLBnodes]; + DAD.f[d0M0] = &distributionsAD[d0P0 * numberOfLBnodes]; + DAD.f[d0P0] = &distributionsAD[d0M0 * numberOfLBnodes]; + DAD.f[d00M] = &distributionsAD[d00P * numberOfLBnodes]; + DAD.f[d00P] = &distributionsAD[d00M * numberOfLBnodes]; + DAD.f[dMM0] = &distributionsAD[dPP0 * numberOfLBnodes]; + DAD.f[dPP0] = &distributionsAD[dMM0 * numberOfLBnodes]; + DAD.f[dMP0] = &distributionsAD[dPM0 * numberOfLBnodes]; + DAD.f[dPM0] = &distributionsAD[dMP0 * numberOfLBnodes]; + DAD.f[dM0M] = &distributionsAD[dP0P * numberOfLBnodes]; + DAD.f[dP0P] = &distributionsAD[dM0M * numberOfLBnodes]; + DAD.f[dM0P] = &distributionsAD[dP0M * numberOfLBnodes]; + DAD.f[dP0M] = &distributionsAD[dM0P * numberOfLBnodes]; + DAD.f[d0MM] = &distributionsAD[d0PP * numberOfLBnodes]; + DAD.f[d0PP] = &distributionsAD[d0MM * numberOfLBnodes]; + DAD.f[d0MP] = &distributionsAD[d0PM * numberOfLBnodes]; + DAD.f[d0PM] = &distributionsAD[d0MP * numberOfLBnodes]; + DAD.f[d000] = &distributionsAD[d000 * numberOfLBnodes]; + DAD.f[dPPP] = &distributionsAD[dMMM * numberOfLBnodes]; + DAD.f[dMMP] = &distributionsAD[dPPM * numberOfLBnodes]; + DAD.f[dPMP] = &distributionsAD[dMPM * numberOfLBnodes]; + DAD.f[dMPP] = &distributionsAD[dPMM * numberOfLBnodes]; + DAD.f[dPPM] = &distributionsAD[dMMP * numberOfLBnodes]; + DAD.f[dMMM] = &distributionsAD[dPPP * numberOfLBnodes]; + DAD.f[dPMM] = &distributionsAD[dMPP * numberOfLBnodes]; + DAD.f[dMPM] = &distributionsAD[dPMP * numberOfLBnodes]; + } + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + 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[d000])[kzero]); + + real jx1 = + (((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)) - (vx1 * concentration); + + real jx2 = + ((-(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 * concentration); + + real jx3 = + (((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 * concentration); + + //jx1 *= (c2o1 - omegaDiffusivity) / (c2o1 - c2o1 * omegaDiffusivity); + //jx2 *= (c2o1 - omegaDiffusivity) / (c2o1 - c2o1 * omegaDiffusivity); + //jx3 *= (c2o1 - omegaDiffusivity) / (c2o1 - c2o1 * omegaDiffusivity); + + real NormJ = jx1 * NormX + jx2 * NormY + jx3 * NormZ; + + real jTan1 = jx1 - NormJ * NormX; + real jTan2 = jx2 - NormJ * NormY; + real jTan3 = jx3 - NormJ * NormZ; + + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + q = q_dirE[k]; if (q >= c0o1 && q <= c1o1) { (DAD.f[dM00])[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[dP00])[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[d0M0])[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[d0P0])[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[d00M])[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[d00P])[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[dMM0])[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[dPP0])[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[dMP0])[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[dPM0])[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[dM0M])[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[dP0P])[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[dM0P])[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[dP0M])[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[d0MM])[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[d0PP])[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[d0MP])[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[d0PM])[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[dMMM])[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[dPPP])[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[dMMP])[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[dPPM])[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[dMPM])[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[dPMP])[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[dMPP])[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[dPMM])[kbse] = calcDistributionBC_AD(q, c1o216, -vx1+vx2+vx3, cu_sq, f_TNW, f_BSE, omegaDiffusivity, -jTan1+jTan2+jTan3, concentration); } + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + } +} +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/src/gpu/core/GPU/CP27.cu b/src/gpu/core/GPU/CP27.cu new file mode 100644 index 0000000000000000000000000000000000000000..55717462bc4fbcb75bb1d55c193e0d4ea222aac8 --- /dev/null +++ b/src/gpu/core/GPU/CP27.cu @@ -0,0 +1,146 @@ +/* Device code */ +#include "LBM/LB.h" +#include "lbm/constants/D3Q27.h" +#include <basics/constants/NumericConstants.h> + +using namespace vf::basics::constant; +using namespace vf::lbm::dir; + +//////////////////////////////////////////////////////////////////////////////// +__global__ void CalcCP27(real* DD, + int* cpIndex, + int nonCp, + double *cpPress, + unsigned int* neighborX, + unsigned int* neighborY, + unsigned int* neighborZ, + unsigned long long numberOfLBnodes, + bool isEvenTimestep) +{ + Distributions27 D; + if (isEvenTimestep==true) + { + D.f[dP00] = &DD[dP00 * numberOfLBnodes]; + D.f[dM00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00P] = &DD[d00P * numberOfLBnodes]; + D.f[d00M] = &DD[d00M * numberOfLBnodes]; + D.f[dPP0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dMM0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dP0P] = &DD[dP0P * numberOfLBnodes]; + D.f[dM0M] = &DD[dM0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dP0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dM0P * numberOfLBnodes]; + D.f[d0PP] = &DD[d0PP * numberOfLBnodes]; + D.f[d0MM] = &DD[d0MM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0PM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dPPP * numberOfLBnodes]; + D.f[dMMP] = &DD[dMMP * numberOfLBnodes]; + D.f[dPMP] = &DD[dPMP * numberOfLBnodes]; + D.f[dMPP] = &DD[dMPP * numberOfLBnodes]; + D.f[dPPM] = &DD[dPPM * numberOfLBnodes]; + D.f[dMMM] = &DD[dMMM * numberOfLBnodes]; + D.f[dPMM] = &DD[dPMM * numberOfLBnodes]; + D.f[dMPM] = &DD[dMPM * numberOfLBnodes]; + } + else + { + D.f[dM00] = &DD[dP00 * numberOfLBnodes]; + D.f[dP00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00M] = &DD[d00P * numberOfLBnodes]; + D.f[d00P] = &DD[d00M * numberOfLBnodes]; + D.f[dMM0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dPP0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dM0M] = &DD[dP0P * numberOfLBnodes]; + D.f[dP0P] = &DD[dM0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dP0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dM0P * numberOfLBnodes]; + D.f[d0MM] = &DD[d0PP * numberOfLBnodes]; + D.f[d0PP] = &DD[d0MM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0PM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dMMM * numberOfLBnodes]; + D.f[dMMP] = &DD[dPPM * numberOfLBnodes]; + D.f[dPMP] = &DD[dMPM * numberOfLBnodes]; + D.f[dMPP] = &DD[dPMM * numberOfLBnodes]; + D.f[dPPM] = &DD[dMMP * numberOfLBnodes]; + D.f[dMMM] = &DD[dPPP * numberOfLBnodes]; + D.f[dPMM] = &DD[dMPP * numberOfLBnodes]; + D.f[dMPM] = &DD[dPMP * numberOfLBnodes]; + } + //////////////////////////////////////////////////////////////////////////////// + const unsigned x = threadIdx.x; // Globaler x-Index + const unsigned y = blockIdx.x; // Globaler y-Index + const unsigned z = blockIdx.y; // Globaler z-Index + + const unsigned nx = blockDim.x; + const unsigned ny = gridDim.x; + + const unsigned k = nx*(ny*z + y) + x; + ////////////////////////////////////////////////////////////////////////// + + if(k<nonCp) + { + //////////////////////////////////////////////////////////////////////////////// + //index + unsigned int KQK = cpIndex[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]; + //////////////////////////////////////////////////////////////////////////////// + double PressCP; + + PressCP = (D.f[dP00])[ke ]+ (D.f[dM00])[kw ]+ + (D.f[d0P0])[kn ]+ (D.f[d0M0])[ks ]+ + (D.f[d00P])[kt ]+ (D.f[d00M])[kb ]+ + (D.f[dPP0])[kne ]+ (D.f[dMM0])[ksw ]+ + (D.f[dPM0])[kse ]+ (D.f[dMP0])[knw ]+ + (D.f[dP0P])[kte ]+ (D.f[dM0M])[kbw ]+ + (D.f[dP0M])[kbe ]+ (D.f[dM0P])[ktw ]+ + (D.f[d0PP])[ktn ]+ (D.f[d0MM])[kbs ]+ + (D.f[d0PM])[kbn ]+ (D.f[d0MP])[kts ]+ + (D.f[d000])[kzero]+ + (D.f[dPPP])[ktne]+ (D.f[dMMP])[ktsw]+ + (D.f[dPMP])[ktse]+ (D.f[dMPP])[ktnw]+ + (D.f[dPPM])[kbne]+ (D.f[dMMM])[kbsw]+ + (D.f[dPMM])[kbse]+ (D.f[dMPM])[kbnw]; + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + cpPress[k] = PressCP; + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + } +} + diff --git a/src/gpu/VirtualFluids_GPU/GPU/Calc2ndMoments27.cu b/src/gpu/core/GPU/Calc2ndMoments27.cu similarity index 71% rename from src/gpu/VirtualFluids_GPU/GPU/Calc2ndMoments27.cu rename to src/gpu/core/GPU/Calc2ndMoments27.cu index 15b8ecefee35463895d8bf5a48cc64868763bf93..edd48091e7429bc5e3221fc1bd8b8420f67f22da 100644 --- a/src/gpu/VirtualFluids_GPU/GPU/Calc2ndMoments27.cu +++ b/src/gpu/core/GPU/Calc2ndMoments27.cu @@ -23,63 +23,63 @@ __global__ void LBCalc2ndMomentsIncompSP27( real* kxyFromfcNEQ, Distributions27 D; if (isEvenTimestep==true) { - D.f[DIR_P00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_M00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_PMP * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_MPM * numberOfLBnodes]; + D.f[dP00] = &DD[dP00 * numberOfLBnodes]; + D.f[dM00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00P] = &DD[d00P * numberOfLBnodes]; + D.f[d00M] = &DD[d00M * numberOfLBnodes]; + D.f[dPP0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dMM0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dP0P] = &DD[dP0P * numberOfLBnodes]; + D.f[dM0M] = &DD[dM0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dP0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dM0P * numberOfLBnodes]; + D.f[d0PP] = &DD[d0PP * numberOfLBnodes]; + D.f[d0MM] = &DD[d0MM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0PM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dPPP * numberOfLBnodes]; + D.f[dMMP] = &DD[dMMP * numberOfLBnodes]; + D.f[dPMP] = &DD[dPMP * numberOfLBnodes]; + D.f[dMPP] = &DD[dMPP * numberOfLBnodes]; + D.f[dPPM] = &DD[dPPM * numberOfLBnodes]; + D.f[dMMM] = &DD[dMMM * numberOfLBnodes]; + D.f[dPMM] = &DD[dPMM * numberOfLBnodes]; + D.f[dMPM] = &DD[dMPM * numberOfLBnodes]; } else { - D.f[DIR_M00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_P00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_MPM * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_PMP * numberOfLBnodes]; + D.f[dM00] = &DD[dP00 * numberOfLBnodes]; + D.f[dP00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00M] = &DD[d00P * numberOfLBnodes]; + D.f[d00P] = &DD[d00M * numberOfLBnodes]; + D.f[dMM0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dPP0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dM0M] = &DD[dP0P * numberOfLBnodes]; + D.f[dP0P] = &DD[dM0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dP0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dM0P * numberOfLBnodes]; + D.f[d0MM] = &DD[d0PP * numberOfLBnodes]; + D.f[d0PP] = &DD[d0MM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0PM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dMMM * numberOfLBnodes]; + D.f[dMMP] = &DD[dPPM * numberOfLBnodes]; + D.f[dPMP] = &DD[dMPM * numberOfLBnodes]; + D.f[dMPP] = &DD[dPMM * numberOfLBnodes]; + D.f[dPPM] = &DD[dMMP * numberOfLBnodes]; + D.f[dMMM] = &DD[dPPP * numberOfLBnodes]; + D.f[dPMM] = &DD[dMPP * numberOfLBnodes]; + D.f[dMPM] = &DD[dPMP * numberOfLBnodes]; } //////////////////////////////////////////////////////////////////////////////// const unsigned x = threadIdx.x; // Globaler x-Index @@ -125,33 +125,33 @@ __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[DIR_P00])[ke ]; - f_W = (D.f[DIR_M00])[kw ]; - f_N = (D.f[DIR_0P0])[kn ]; - f_S = (D.f[DIR_0M0])[ks ]; - f_T = (D.f[DIR_00P])[kt ]; - f_B = (D.f[DIR_00M])[kb ]; - f_NE = (D.f[DIR_PP0])[kne ]; - f_SW = (D.f[DIR_MM0])[ksw ]; - f_SE = (D.f[DIR_PM0])[kse ]; - f_NW = (D.f[DIR_MP0])[knw ]; - f_TE = (D.f[DIR_P0P])[kte ]; - f_BW = (D.f[DIR_M0M])[kbw ]; - f_BE = (D.f[DIR_P0M])[kbe ]; - f_TW = (D.f[DIR_M0P])[ktw ]; - f_TN = (D.f[DIR_0PP])[ktn ]; - f_BS = (D.f[DIR_0MM])[kbs ]; - f_BN = (D.f[DIR_0PM])[kbn ]; - f_TS = (D.f[DIR_0MP])[kts ]; - //f_ZERO = (D.f[DIR_000])[kzero]; - f_TNE = (D.f[DIR_PPP])[ktne ]; - f_TSW = (D.f[DIR_MMP])[ktsw ]; - f_TSE = (D.f[DIR_PMP])[ktse ]; - f_TNW = (D.f[DIR_MPP])[ktnw ]; - f_BNE = (D.f[DIR_PPM])[kbne ]; - f_BSW = (D.f[DIR_MMM])[kbsw ]; - f_BSE = (D.f[DIR_PMM])[kbse ]; - f_BNW = (D.f[DIR_MPM])[kbnw ]; + f_E = (D.f[dP00])[ke ]; + f_W = (D.f[dM00])[kw ]; + f_N = (D.f[d0P0])[kn ]; + f_S = (D.f[d0M0])[ks ]; + f_T = (D.f[d00P])[kt ]; + f_B = (D.f[d00M])[kb ]; + f_NE = (D.f[dPP0])[kne ]; + f_SW = (D.f[dMM0])[ksw ]; + f_SE = (D.f[dPM0])[kse ]; + f_NW = (D.f[dMP0])[knw ]; + f_TE = (D.f[dP0P])[kte ]; + f_BW = (D.f[dM0M])[kbw ]; + f_BE = (D.f[dP0M])[kbe ]; + f_TW = (D.f[dM0P])[ktw ]; + f_TN = (D.f[d0PP])[ktn ]; + f_BS = (D.f[d0MM])[kbs ]; + f_BN = (D.f[d0PM])[kbn ]; + f_TS = (D.f[d0MP])[kts ]; + //f_ZERO = (D.f[d000])[kzero]; + f_TNE = (D.f[dPPP])[ktne ]; + f_TSW = (D.f[dMMP])[ktsw ]; + f_TSE = (D.f[dPMP])[ktse ]; + f_TNW = (D.f[dMPP])[ktnw ]; + f_BNE = (D.f[dPPM])[kbne ]; + f_BSW = (D.f[dMMM])[kbsw ]; + f_BSE = (D.f[dPMM])[kbse ]; + f_BNW = (D.f[dMPM])[kbnw ]; ////////////////////////////////////////////////////////////////////////// real vx1, vx2, vx3; kxyFromfcNEQ[k] = c0o1; @@ -168,8 +168,8 @@ __global__ void LBCalc2ndMomentsIncompSP27( real* kxyFromfcNEQ, kxyFromfcNEQ[k] = -c3o1 *(f_SW+f_BSW+f_TSW-f_NW-f_BNW-f_TNW-f_SE-f_BSE-f_TSE+f_NE+f_BNE+f_TNE-(vx1*vx2)); kyzFromfcNEQ[k] = -c3o1 *(f_BS+f_BSE+f_BSW-f_TS-f_TSE-f_TSW-f_BN-f_BNE-f_BNW+f_TN+f_TNE+f_TNW-(vx2*vx3)); kxzFromfcNEQ[k] = -c3o1 *(f_BW+f_BSW+f_BNW-f_TW-f_TSW-f_TNW-f_BE-f_BSE-f_BNE+f_TE+f_TSE+f_TNE-(vx1*vx3)); - kxxMyyFromfcNEQ[k] = -c3o2 * (f_BW+f_W+f_TW-f_BS-f_S-f_TS-f_BN-f_N-f_TN+f_BE+f_E+f_TE-(vx1*vx1-vx2*vx2)); //all DIR_P00+DIR_M00 minus all DIR_0P0+DIR_0M0 (no combinations of xy left) - kxxMzzFromfcNEQ[k] = -c3o2 * (f_SW+f_W+f_NW-f_BS-f_TS-f_B-f_T-f_BN-f_TN+f_SE+f_E+f_NE-(vx1*vx1-vx3*vx3)); //all DIR_P00+DIR_M00 minus all DIR_00P+DIR_00M (no combinations of xz left) + kxxMyyFromfcNEQ[k] = -c3o2 * (f_BW+f_W+f_TW-f_BS-f_S-f_TS-f_BN-f_N-f_TN+f_BE+f_E+f_TE-(vx1*vx1-vx2*vx2)); //all dP00+dM00 minus all d0P0+d0M0 (no combinations of xy left) + kxxMzzFromfcNEQ[k] = -c3o2 * (f_SW+f_W+f_NW-f_BS-f_TS-f_B-f_T-f_BN-f_TN+f_SE+f_E+f_NE-(vx1*vx1-vx3*vx3)); //all dP00+dM00 minus all d00P+d00M (no combinations of xz left) } } } @@ -222,63 +222,63 @@ __global__ void LBCalc2ndMomentsCompSP27(real* kxyFromfcNEQ, Distributions27 D; if (isEvenTimestep==true) { - D.f[DIR_P00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_M00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_PMP * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_MPM * numberOfLBnodes]; + D.f[dP00] = &DD[dP00 * numberOfLBnodes]; + D.f[dM00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00P] = &DD[d00P * numberOfLBnodes]; + D.f[d00M] = &DD[d00M * numberOfLBnodes]; + D.f[dPP0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dMM0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dP0P] = &DD[dP0P * numberOfLBnodes]; + D.f[dM0M] = &DD[dM0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dP0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dM0P * numberOfLBnodes]; + D.f[d0PP] = &DD[d0PP * numberOfLBnodes]; + D.f[d0MM] = &DD[d0MM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0PM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dPPP * numberOfLBnodes]; + D.f[dMMP] = &DD[dMMP * numberOfLBnodes]; + D.f[dPMP] = &DD[dPMP * numberOfLBnodes]; + D.f[dMPP] = &DD[dMPP * numberOfLBnodes]; + D.f[dPPM] = &DD[dPPM * numberOfLBnodes]; + D.f[dMMM] = &DD[dMMM * numberOfLBnodes]; + D.f[dPMM] = &DD[dPMM * numberOfLBnodes]; + D.f[dMPM] = &DD[dMPM * numberOfLBnodes]; } else { - D.f[DIR_M00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_P00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_MPM * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_PMP * numberOfLBnodes]; + D.f[dM00] = &DD[dP00 * numberOfLBnodes]; + D.f[dP00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00M] = &DD[d00P * numberOfLBnodes]; + D.f[d00P] = &DD[d00M * numberOfLBnodes]; + D.f[dMM0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dPP0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dM0M] = &DD[dP0P * numberOfLBnodes]; + D.f[dP0P] = &DD[dM0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dP0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dM0P * numberOfLBnodes]; + D.f[d0MM] = &DD[d0PP * numberOfLBnodes]; + D.f[d0PP] = &DD[d0MM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0PM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dMMM * numberOfLBnodes]; + D.f[dMMP] = &DD[dPPM * numberOfLBnodes]; + D.f[dPMP] = &DD[dMPM * numberOfLBnodes]; + D.f[dMPP] = &DD[dPMM * numberOfLBnodes]; + D.f[dPPM] = &DD[dMMP * numberOfLBnodes]; + D.f[dMMM] = &DD[dPPP * numberOfLBnodes]; + D.f[dPMM] = &DD[dMPP * numberOfLBnodes]; + D.f[dMPM] = &DD[dPMP * numberOfLBnodes]; } //////////////////////////////////////////////////////////////////////////////// const unsigned x = threadIdx.x; // Globaler x-Index @@ -325,33 +325,33 @@ __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[DIR_P00])[ke ]; - f_W = (D.f[DIR_M00])[kw ]; - f_N = (D.f[DIR_0P0])[kn ]; - f_S = (D.f[DIR_0M0])[ks ]; - f_T = (D.f[DIR_00P])[kt ]; - f_B = (D.f[DIR_00M])[kb ]; - f_NE = (D.f[DIR_PP0])[kne ]; - f_SW = (D.f[DIR_MM0])[ksw ]; - f_SE = (D.f[DIR_PM0])[kse ]; - f_NW = (D.f[DIR_MP0])[knw ]; - f_TE = (D.f[DIR_P0P])[kte ]; - f_BW = (D.f[DIR_M0M])[kbw ]; - f_BE = (D.f[DIR_P0M])[kbe ]; - f_TW = (D.f[DIR_M0P])[ktw ]; - f_TN = (D.f[DIR_0PP])[ktn ]; - f_BS = (D.f[DIR_0MM])[kbs ]; - f_BN = (D.f[DIR_0PM])[kbn ]; - f_TS = (D.f[DIR_0MP])[kts ]; - f_ZERO = (D.f[DIR_000])[kzero]; - f_TNE = (D.f[DIR_PPP])[ktne ]; - f_TSW = (D.f[DIR_MMP])[ktsw ]; - f_TSE = (D.f[DIR_PMP])[ktse ]; - f_TNW = (D.f[DIR_MPP])[ktnw ]; - f_BNE = (D.f[DIR_PPM])[kbne ]; - f_BSW = (D.f[DIR_MMM])[kbsw ]; - f_BSE = (D.f[DIR_PMM])[kbse ]; - f_BNW = (D.f[DIR_MPM])[kbnw ]; + f_E = (D.f[dP00])[ke ]; + f_W = (D.f[dM00])[kw ]; + f_N = (D.f[d0P0])[kn ]; + f_S = (D.f[d0M0])[ks ]; + f_T = (D.f[d00P])[kt ]; + f_B = (D.f[d00M])[kb ]; + f_NE = (D.f[dPP0])[kne ]; + f_SW = (D.f[dMM0])[ksw ]; + f_SE = (D.f[dPM0])[kse ]; + f_NW = (D.f[dMP0])[knw ]; + f_TE = (D.f[dP0P])[kte ]; + f_BW = (D.f[dM0M])[kbw ]; + f_BE = (D.f[dP0M])[kbe ]; + f_TW = (D.f[dM0P])[ktw ]; + f_TN = (D.f[d0PP])[ktn ]; + f_BS = (D.f[d0MM])[kbs ]; + f_BN = (D.f[d0PM])[kbn ]; + f_TS = (D.f[d0MP])[kts ]; + f_ZERO = (D.f[d000])[kzero]; + f_TNE = (D.f[dPPP])[ktne ]; + f_TSW = (D.f[dMMP])[ktsw ]; + f_TSE = (D.f[dPMP])[ktse ]; + f_TNW = (D.f[dMPP])[ktnw ]; + f_BNE = (D.f[dPPM])[kbne ]; + f_BSW = (D.f[dMMM])[kbsw ]; + f_BSE = (D.f[dPMM])[kbse ]; + f_BNW = (D.f[dMPM])[kbnw ]; ////////////////////////////////////////////////////////////////////////// real drho; real vx1, vx2, vx3, rho; @@ -373,8 +373,8 @@ __global__ void LBCalc2ndMomentsCompSP27(real* kxyFromfcNEQ, kxyFromfcNEQ[k] = -c3o1 *(f_SW+f_BSW+f_TSW-f_NW-f_BNW-f_TNW-f_SE-f_BSE-f_TSE+f_NE+f_BNE+f_TNE-(vx1*vx2)); kyzFromfcNEQ[k] = -c3o1 *(f_BS+f_BSE+f_BSW-f_TS-f_TSE-f_TSW-f_BN-f_BNE-f_BNW+f_TN+f_TNE+f_TNW-(vx2*vx3)); kxzFromfcNEQ[k] = -c3o1 *(f_BW+f_BSW+f_BNW-f_TW-f_TSW-f_TNW-f_BE-f_BSE-f_BNE+f_TE+f_TSE+f_TNE-(vx1*vx3)); - kxxMyyFromfcNEQ[k] = -c3o2 * (f_BW+f_W+f_TW-f_BS-f_S-f_TS-f_BN-f_N-f_TN+f_BE+f_E+f_TE-(vx1*vx1-vx2*vx2)); //all DIR_P00+DIR_M00 minus all DIR_0P0+DIR_0M0 (no combinations of xy left) - kxxMzzFromfcNEQ[k] = -c3o2 * (f_SW+f_W+f_NW-f_BS-f_TS-f_B-f_T-f_BN-f_TN+f_SE+f_E+f_NE-(vx1*vx1-vx3*vx3)); //all DIR_P00+DIR_M00 minus all DIR_00P+DIR_00M (no combinations of xz left) + kxxMyyFromfcNEQ[k] = -c3o2 * (f_BW+f_W+f_TW-f_BS-f_S-f_TS-f_BN-f_N-f_TN+f_BE+f_E+f_TE-(vx1*vx1-vx2*vx2)); //all dP00+dM00 minus all d0P0+d0M0 (no combinations of xy left) + kxxMzzFromfcNEQ[k] = -c3o2 * (f_SW+f_W+f_NW-f_BS-f_TS-f_B-f_T-f_BN-f_TN+f_SE+f_E+f_NE-(vx1*vx1-vx3*vx3)); //all dP00+dM00 minus all d00P+d00M (no combinations of xz left) } } } @@ -448,63 +448,63 @@ __global__ void LBCalc3rdMomentsIncompSP27( real* CUMbbb, Distributions27 D; if (EvenOrOdd==true) { - D.f[DIR_P00] = &DDStart[DIR_P00 * numberOfLBnodes]; - D.f[DIR_M00] = &DDStart[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0P0] = &DDStart[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0M0] = &DDStart[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00P] = &DDStart[DIR_00P * numberOfLBnodes]; - D.f[DIR_00M] = &DDStart[DIR_00M * numberOfLBnodes]; - D.f[DIR_PP0] = &DDStart[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_MM0] = &DDStart[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DDStart[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DDStart[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_P0P] = &DDStart[DIR_P0P * numberOfLBnodes]; - D.f[DIR_M0M] = &DDStart[DIR_M0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DDStart[DIR_P0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DDStart[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0PP] = &DDStart[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0MM] = &DDStart[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0PM] = &DDStart[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0MP] = &DDStart[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DDStart[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DDStart[DIR_PPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DDStart[DIR_MMP * numberOfLBnodes]; - D.f[DIR_PMP] = &DDStart[DIR_PMP * numberOfLBnodes]; - D.f[DIR_MPP] = &DDStart[DIR_MPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DDStart[DIR_PPM * numberOfLBnodes]; - D.f[DIR_MMM] = &DDStart[DIR_MMM * numberOfLBnodes]; - D.f[DIR_PMM] = &DDStart[DIR_PMM * numberOfLBnodes]; - D.f[DIR_MPM] = &DDStart[DIR_MPM * numberOfLBnodes]; + D.f[dP00] = &DDStart[dP00 * numberOfLBnodes]; + D.f[dM00] = &DDStart[dM00 * numberOfLBnodes]; + D.f[d0P0] = &DDStart[d0P0 * numberOfLBnodes]; + D.f[d0M0] = &DDStart[d0M0 * numberOfLBnodes]; + D.f[d00P] = &DDStart[d00P * numberOfLBnodes]; + D.f[d00M] = &DDStart[d00M * numberOfLBnodes]; + D.f[dPP0] = &DDStart[dPP0 * numberOfLBnodes]; + D.f[dMM0] = &DDStart[dMM0 * numberOfLBnodes]; + D.f[dPM0] = &DDStart[dPM0 * numberOfLBnodes]; + D.f[dMP0] = &DDStart[dMP0 * numberOfLBnodes]; + D.f[dP0P] = &DDStart[dP0P * numberOfLBnodes]; + D.f[dM0M] = &DDStart[dM0M * numberOfLBnodes]; + D.f[dP0M] = &DDStart[dP0M * numberOfLBnodes]; + D.f[dM0P] = &DDStart[dM0P * numberOfLBnodes]; + D.f[d0PP] = &DDStart[d0PP * numberOfLBnodes]; + D.f[d0MM] = &DDStart[d0MM * numberOfLBnodes]; + D.f[d0PM] = &DDStart[d0PM * numberOfLBnodes]; + D.f[d0MP] = &DDStart[d0MP * numberOfLBnodes]; + D.f[d000] = &DDStart[d000 * numberOfLBnodes]; + D.f[dPPP] = &DDStart[dPPP * numberOfLBnodes]; + D.f[dMMP] = &DDStart[dMMP * numberOfLBnodes]; + D.f[dPMP] = &DDStart[dPMP * numberOfLBnodes]; + D.f[dMPP] = &DDStart[dMPP * numberOfLBnodes]; + D.f[dPPM] = &DDStart[dPPM * numberOfLBnodes]; + D.f[dMMM] = &DDStart[dMMM * numberOfLBnodes]; + D.f[dPMM] = &DDStart[dPMM * numberOfLBnodes]; + D.f[dMPM] = &DDStart[dMPM * numberOfLBnodes]; } else { - D.f[DIR_M00] = &DDStart[DIR_P00 * numberOfLBnodes]; - D.f[DIR_P00] = &DDStart[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0M0] = &DDStart[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0P0] = &DDStart[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00M] = &DDStart[DIR_00P * numberOfLBnodes]; - D.f[DIR_00P] = &DDStart[DIR_00M * numberOfLBnodes]; - D.f[DIR_MM0] = &DDStart[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_PP0] = &DDStart[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DDStart[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DDStart[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_M0M] = &DDStart[DIR_P0P * numberOfLBnodes]; - D.f[DIR_P0P] = &DDStart[DIR_M0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DDStart[DIR_P0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DDStart[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0MM] = &DDStart[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0PP] = &DDStart[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0MP] = &DDStart[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0PM] = &DDStart[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DDStart[DIR_000 * numberOfLBnodes]; - D.f[DIR_MMM] = &DDStart[DIR_PPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DDStart[DIR_MMP * numberOfLBnodes]; - D.f[DIR_MPM] = &DDStart[DIR_PMP * numberOfLBnodes]; - D.f[DIR_PMM] = &DDStart[DIR_MPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DDStart[DIR_PPM * numberOfLBnodes]; - D.f[DIR_PPP] = &DDStart[DIR_MMM * numberOfLBnodes]; - D.f[DIR_MPP] = &DDStart[DIR_PMM * numberOfLBnodes]; - D.f[DIR_PMP] = &DDStart[DIR_MPM * numberOfLBnodes]; + D.f[dM00] = &DDStart[dP00 * numberOfLBnodes]; + D.f[dP00] = &DDStart[dM00 * numberOfLBnodes]; + D.f[d0M0] = &DDStart[d0P0 * numberOfLBnodes]; + D.f[d0P0] = &DDStart[d0M0 * numberOfLBnodes]; + D.f[d00M] = &DDStart[d00P * numberOfLBnodes]; + D.f[d00P] = &DDStart[d00M * numberOfLBnodes]; + D.f[dMM0] = &DDStart[dPP0 * numberOfLBnodes]; + D.f[dPP0] = &DDStart[dMM0 * numberOfLBnodes]; + D.f[dMP0] = &DDStart[dPM0 * numberOfLBnodes]; + D.f[dPM0] = &DDStart[dMP0 * numberOfLBnodes]; + D.f[dM0M] = &DDStart[dP0P * numberOfLBnodes]; + D.f[dP0P] = &DDStart[dM0M * numberOfLBnodes]; + D.f[dM0P] = &DDStart[dP0M * numberOfLBnodes]; + D.f[dP0M] = &DDStart[dM0P * numberOfLBnodes]; + D.f[d0MM] = &DDStart[d0PP * numberOfLBnodes]; + D.f[d0PP] = &DDStart[d0MM * numberOfLBnodes]; + D.f[d0MP] = &DDStart[d0PM * numberOfLBnodes]; + D.f[d0PM] = &DDStart[d0MP * numberOfLBnodes]; + D.f[d000] = &DDStart[d000 * numberOfLBnodes]; + D.f[dMMM] = &DDStart[dPPP * numberOfLBnodes]; + D.f[dPPM] = &DDStart[dMMP * numberOfLBnodes]; + D.f[dMPM] = &DDStart[dPMP * numberOfLBnodes]; + D.f[dPMM] = &DDStart[dMPP * numberOfLBnodes]; + D.f[dMMP] = &DDStart[dPPM * numberOfLBnodes]; + D.f[dPPP] = &DDStart[dMMM * numberOfLBnodes]; + D.f[dMPP] = &DDStart[dPMM * numberOfLBnodes]; + D.f[dPMP] = &DDStart[dMPM * numberOfLBnodes]; } //////////////////////////////////////////////////////////////////////////////// @@ -517,33 +517,33 @@ __global__ void LBCalc3rdMomentsIncompSP27( real* CUMbbb, unsigned int kbs = neighborZ[ks]; unsigned int kbsw = neighborZ[ksw]; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real mfcbb = (D.f[DIR_P00])[k ]; - real mfabb = (D.f[DIR_M00])[kw ]; - real mfbcb = (D.f[DIR_0P0])[k ]; - real mfbab = (D.f[DIR_0M0])[ks ]; - real mfbbc = (D.f[DIR_00P])[k ]; - real mfbba = (D.f[DIR_00M])[kb ]; - real mfccb = (D.f[DIR_PP0])[k ]; - real mfaab = (D.f[DIR_MM0])[ksw]; - real mfcab = (D.f[DIR_PM0])[ks ]; - real mfacb = (D.f[DIR_MP0])[kw ]; - real mfcbc = (D.f[DIR_P0P])[k ]; - real mfaba = (D.f[DIR_M0M])[kbw]; - real mfcba = (D.f[DIR_P0M])[kb ]; - real mfabc = (D.f[DIR_M0P])[kw ]; - real mfbcc = (D.f[DIR_0PP])[k ]; - real mfbaa = (D.f[DIR_0MM])[kbs]; - real mfbca = (D.f[DIR_0PM])[kb ]; - real mfbac = (D.f[DIR_0MP])[ks ]; - real mfbbb = (D.f[DIR_000])[k ]; - real mfccc = (D.f[DIR_PPP])[k ]; - real mfaac = (D.f[DIR_MMP])[ksw]; - real mfcac = (D.f[DIR_PMP])[ks ]; - real mfacc = (D.f[DIR_MPP])[kw ]; - real mfcca = (D.f[DIR_PPM])[kb ]; - real mfaaa = (D.f[DIR_MMM])[kbsw]; - real mfcaa = (D.f[DIR_PMM])[kbs]; - real mfaca = (D.f[DIR_MPM])[kbw]; + real mfcbb = (D.f[dP00])[k ]; + real mfabb = (D.f[dM00])[kw ]; + real mfbcb = (D.f[d0P0])[k ]; + real mfbab = (D.f[d0M0])[ks ]; + real mfbbc = (D.f[d00P])[k ]; + real mfbba = (D.f[d00M])[kb ]; + real mfccb = (D.f[dPP0])[k ]; + real mfaab = (D.f[dMM0])[ksw]; + real mfcab = (D.f[dPM0])[ks ]; + real mfacb = (D.f[dMP0])[kw ]; + real mfcbc = (D.f[dP0P])[k ]; + real mfaba = (D.f[dM0M])[kbw]; + real mfcba = (D.f[dP0M])[kb ]; + real mfabc = (D.f[dM0P])[kw ]; + real mfbcc = (D.f[d0PP])[k ]; + real mfbaa = (D.f[d0MM])[kbs]; + real mfbca = (D.f[d0PM])[kb ]; + real mfbac = (D.f[d0MP])[ks ]; + real mfbbb = (D.f[d000])[k ]; + real mfccc = (D.f[dPPP])[k ]; + real mfaac = (D.f[dMMP])[ksw]; + real mfcac = (D.f[dPMP])[ks ]; + real mfacc = (D.f[dMPP])[kw ]; + real mfcca = (D.f[dPPM])[kb ]; + real mfaaa = (D.f[dMMM])[kbsw]; + real mfcaa = (D.f[dPMM])[kbs]; + real mfaca = (D.f[dMPM])[kbw]; //////////////////////////////////////////////////////////////////////////////////// real vvx =((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfcaa-mfacc) + (mfcca-mfaac))) + (((mfcba-mfabc) + (mfcbc-mfaba)) + ((mfcab-mfacb) + (mfccb-mfaab))) + @@ -882,63 +882,63 @@ __global__ void LBCalc3rdMomentsCompSP27(real* CUMbbb, Distributions27 D; if (EvenOrOdd==true) { - D.f[DIR_P00] = &DDStart[DIR_P00 * numberOfLBnodes]; - D.f[DIR_M00] = &DDStart[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0P0] = &DDStart[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0M0] = &DDStart[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00P] = &DDStart[DIR_00P * numberOfLBnodes]; - D.f[DIR_00M] = &DDStart[DIR_00M * numberOfLBnodes]; - D.f[DIR_PP0] = &DDStart[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_MM0] = &DDStart[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DDStart[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DDStart[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_P0P] = &DDStart[DIR_P0P * numberOfLBnodes]; - D.f[DIR_M0M] = &DDStart[DIR_M0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DDStart[DIR_P0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DDStart[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0PP] = &DDStart[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0MM] = &DDStart[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0PM] = &DDStart[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0MP] = &DDStart[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DDStart[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DDStart[DIR_PPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DDStart[DIR_MMP * numberOfLBnodes]; - D.f[DIR_PMP] = &DDStart[DIR_PMP * numberOfLBnodes]; - D.f[DIR_MPP] = &DDStart[DIR_MPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DDStart[DIR_PPM * numberOfLBnodes]; - D.f[DIR_MMM] = &DDStart[DIR_MMM * numberOfLBnodes]; - D.f[DIR_PMM] = &DDStart[DIR_PMM * numberOfLBnodes]; - D.f[DIR_MPM] = &DDStart[DIR_MPM * numberOfLBnodes]; + D.f[dP00] = &DDStart[dP00 * numberOfLBnodes]; + D.f[dM00] = &DDStart[dM00 * numberOfLBnodes]; + D.f[d0P0] = &DDStart[d0P0 * numberOfLBnodes]; + D.f[d0M0] = &DDStart[d0M0 * numberOfLBnodes]; + D.f[d00P] = &DDStart[d00P * numberOfLBnodes]; + D.f[d00M] = &DDStart[d00M * numberOfLBnodes]; + D.f[dPP0] = &DDStart[dPP0 * numberOfLBnodes]; + D.f[dMM0] = &DDStart[dMM0 * numberOfLBnodes]; + D.f[dPM0] = &DDStart[dPM0 * numberOfLBnodes]; + D.f[dMP0] = &DDStart[dMP0 * numberOfLBnodes]; + D.f[dP0P] = &DDStart[dP0P * numberOfLBnodes]; + D.f[dM0M] = &DDStart[dM0M * numberOfLBnodes]; + D.f[dP0M] = &DDStart[dP0M * numberOfLBnodes]; + D.f[dM0P] = &DDStart[dM0P * numberOfLBnodes]; + D.f[d0PP] = &DDStart[d0PP * numberOfLBnodes]; + D.f[d0MM] = &DDStart[d0MM * numberOfLBnodes]; + D.f[d0PM] = &DDStart[d0PM * numberOfLBnodes]; + D.f[d0MP] = &DDStart[d0MP * numberOfLBnodes]; + D.f[d000] = &DDStart[d000 * numberOfLBnodes]; + D.f[dPPP] = &DDStart[dPPP * numberOfLBnodes]; + D.f[dMMP] = &DDStart[dMMP * numberOfLBnodes]; + D.f[dPMP] = &DDStart[dPMP * numberOfLBnodes]; + D.f[dMPP] = &DDStart[dMPP * numberOfLBnodes]; + D.f[dPPM] = &DDStart[dPPM * numberOfLBnodes]; + D.f[dMMM] = &DDStart[dMMM * numberOfLBnodes]; + D.f[dPMM] = &DDStart[dPMM * numberOfLBnodes]; + D.f[dMPM] = &DDStart[dMPM * numberOfLBnodes]; } else { - D.f[DIR_M00] = &DDStart[DIR_P00 * numberOfLBnodes]; - D.f[DIR_P00] = &DDStart[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0M0] = &DDStart[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0P0] = &DDStart[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00M] = &DDStart[DIR_00P * numberOfLBnodes]; - D.f[DIR_00P] = &DDStart[DIR_00M * numberOfLBnodes]; - D.f[DIR_MM0] = &DDStart[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_PP0] = &DDStart[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DDStart[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DDStart[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_M0M] = &DDStart[DIR_P0P * numberOfLBnodes]; - D.f[DIR_P0P] = &DDStart[DIR_M0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DDStart[DIR_P0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DDStart[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0MM] = &DDStart[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0PP] = &DDStart[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0MP] = &DDStart[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0PM] = &DDStart[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DDStart[DIR_000 * numberOfLBnodes]; - D.f[DIR_MMM] = &DDStart[DIR_PPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DDStart[DIR_MMP * numberOfLBnodes]; - D.f[DIR_MPM] = &DDStart[DIR_PMP * numberOfLBnodes]; - D.f[DIR_PMM] = &DDStart[DIR_MPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DDStart[DIR_PPM * numberOfLBnodes]; - D.f[DIR_PPP] = &DDStart[DIR_MMM * numberOfLBnodes]; - D.f[DIR_MPP] = &DDStart[DIR_PMM * numberOfLBnodes]; - D.f[DIR_PMP] = &DDStart[DIR_MPM * numberOfLBnodes]; + D.f[dM00] = &DDStart[dP00 * numberOfLBnodes]; + D.f[dP00] = &DDStart[dM00 * numberOfLBnodes]; + D.f[d0M0] = &DDStart[d0P0 * numberOfLBnodes]; + D.f[d0P0] = &DDStart[d0M0 * numberOfLBnodes]; + D.f[d00M] = &DDStart[d00P * numberOfLBnodes]; + D.f[d00P] = &DDStart[d00M * numberOfLBnodes]; + D.f[dMM0] = &DDStart[dPP0 * numberOfLBnodes]; + D.f[dPP0] = &DDStart[dMM0 * numberOfLBnodes]; + D.f[dMP0] = &DDStart[dPM0 * numberOfLBnodes]; + D.f[dPM0] = &DDStart[dMP0 * numberOfLBnodes]; + D.f[dM0M] = &DDStart[dP0P * numberOfLBnodes]; + D.f[dP0P] = &DDStart[dM0M * numberOfLBnodes]; + D.f[dM0P] = &DDStart[dP0M * numberOfLBnodes]; + D.f[dP0M] = &DDStart[dM0P * numberOfLBnodes]; + D.f[d0MM] = &DDStart[d0PP * numberOfLBnodes]; + D.f[d0PP] = &DDStart[d0MM * numberOfLBnodes]; + D.f[d0MP] = &DDStart[d0PM * numberOfLBnodes]; + D.f[d0PM] = &DDStart[d0MP * numberOfLBnodes]; + D.f[d000] = &DDStart[d000 * numberOfLBnodes]; + D.f[dMMM] = &DDStart[dPPP * numberOfLBnodes]; + D.f[dPPM] = &DDStart[dMMP * numberOfLBnodes]; + D.f[dMPM] = &DDStart[dPMP * numberOfLBnodes]; + D.f[dPMM] = &DDStart[dMPP * numberOfLBnodes]; + D.f[dMMP] = &DDStart[dPPM * numberOfLBnodes]; + D.f[dPPP] = &DDStart[dMMM * numberOfLBnodes]; + D.f[dMPP] = &DDStart[dPMM * numberOfLBnodes]; + D.f[dPMP] = &DDStart[dMPM * numberOfLBnodes]; } //////////////////////////////////////////////////////////////////////////////// @@ -951,33 +951,33 @@ __global__ void LBCalc3rdMomentsCompSP27(real* CUMbbb, unsigned int kbs = neighborZ[ks]; unsigned int kbsw = neighborZ[ksw]; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real mfcbb = (D.f[DIR_P00])[k ]; - real mfabb = (D.f[DIR_M00])[kw ]; - real mfbcb = (D.f[DIR_0P0])[k ]; - real mfbab = (D.f[DIR_0M0])[ks ]; - real mfbbc = (D.f[DIR_00P])[k ]; - real mfbba = (D.f[DIR_00M])[kb ]; - real mfccb = (D.f[DIR_PP0])[k ]; - real mfaab = (D.f[DIR_MM0])[ksw]; - real mfcab = (D.f[DIR_PM0])[ks ]; - real mfacb = (D.f[DIR_MP0])[kw ]; - real mfcbc = (D.f[DIR_P0P])[k ]; - real mfaba = (D.f[DIR_M0M])[kbw]; - real mfcba = (D.f[DIR_P0M])[kb ]; - real mfabc = (D.f[DIR_M0P])[kw ]; - real mfbcc = (D.f[DIR_0PP])[k ]; - real mfbaa = (D.f[DIR_0MM])[kbs]; - real mfbca = (D.f[DIR_0PM])[kb ]; - real mfbac = (D.f[DIR_0MP])[ks ]; - real mfbbb = (D.f[DIR_000])[k ]; - real mfccc = (D.f[DIR_PPP])[k ]; - real mfaac = (D.f[DIR_MMP])[ksw]; - real mfcac = (D.f[DIR_PMP])[ks ]; - real mfacc = (D.f[DIR_MPP])[kw ]; - real mfcca = (D.f[DIR_PPM])[kb ]; - real mfaaa = (D.f[DIR_MMM])[kbsw]; - real mfcaa = (D.f[DIR_PMM])[kbs]; - real mfaca = (D.f[DIR_MPM])[kbw]; + real mfcbb = (D.f[dP00])[k ]; + real mfabb = (D.f[dM00])[kw ]; + real mfbcb = (D.f[d0P0])[k ]; + real mfbab = (D.f[d0M0])[ks ]; + real mfbbc = (D.f[d00P])[k ]; + real mfbba = (D.f[d00M])[kb ]; + real mfccb = (D.f[dPP0])[k ]; + real mfaab = (D.f[dMM0])[ksw]; + real mfcab = (D.f[dPM0])[ks ]; + real mfacb = (D.f[dMP0])[kw ]; + real mfcbc = (D.f[dP0P])[k ]; + real mfaba = (D.f[dM0M])[kbw]; + real mfcba = (D.f[dP0M])[kb ]; + real mfabc = (D.f[dM0P])[kw ]; + real mfbcc = (D.f[d0PP])[k ]; + real mfbaa = (D.f[d0MM])[kbs]; + real mfbca = (D.f[d0PM])[kb ]; + real mfbac = (D.f[d0MP])[ks ]; + real mfbbb = (D.f[d000])[k ]; + real mfccc = (D.f[dPPP])[k ]; + real mfaac = (D.f[dMMP])[ksw]; + real mfcac = (D.f[dPMP])[ks ]; + real mfacc = (D.f[dMPP])[kw ]; + real mfcca = (D.f[dPPM])[kb ]; + real mfaaa = (D.f[dMMM])[kbsw]; + real mfcaa = (D.f[dPMM])[kbs]; + real mfaca = (D.f[dMPM])[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 @@ __global__ void LBCalcHigherMomentsIncompSP27( real* CUMcbb, Distributions27 D; if (EvenOrOdd==true) { - D.f[DIR_P00] = &DDStart[DIR_P00 * numberOfLBnodes]; - D.f[DIR_M00] = &DDStart[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0P0] = &DDStart[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0M0] = &DDStart[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00P] = &DDStart[DIR_00P * numberOfLBnodes]; - D.f[DIR_00M] = &DDStart[DIR_00M * numberOfLBnodes]; - D.f[DIR_PP0] = &DDStart[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_MM0] = &DDStart[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DDStart[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DDStart[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_P0P] = &DDStart[DIR_P0P * numberOfLBnodes]; - D.f[DIR_M0M] = &DDStart[DIR_M0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DDStart[DIR_P0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DDStart[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0PP] = &DDStart[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0MM] = &DDStart[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0PM] = &DDStart[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0MP] = &DDStart[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DDStart[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DDStart[DIR_PPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DDStart[DIR_MMP * numberOfLBnodes]; - D.f[DIR_PMP] = &DDStart[DIR_PMP * numberOfLBnodes]; - D.f[DIR_MPP] = &DDStart[DIR_MPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DDStart[DIR_PPM * numberOfLBnodes]; - D.f[DIR_MMM] = &DDStart[DIR_MMM * numberOfLBnodes]; - D.f[DIR_PMM] = &DDStart[DIR_PMM * numberOfLBnodes]; - D.f[DIR_MPM] = &DDStart[DIR_MPM * numberOfLBnodes]; + D.f[dP00] = &DDStart[dP00 * numberOfLBnodes]; + D.f[dM00] = &DDStart[dM00 * numberOfLBnodes]; + D.f[d0P0] = &DDStart[d0P0 * numberOfLBnodes]; + D.f[d0M0] = &DDStart[d0M0 * numberOfLBnodes]; + D.f[d00P] = &DDStart[d00P * numberOfLBnodes]; + D.f[d00M] = &DDStart[d00M * numberOfLBnodes]; + D.f[dPP0] = &DDStart[dPP0 * numberOfLBnodes]; + D.f[dMM0] = &DDStart[dMM0 * numberOfLBnodes]; + D.f[dPM0] = &DDStart[dPM0 * numberOfLBnodes]; + D.f[dMP0] = &DDStart[dMP0 * numberOfLBnodes]; + D.f[dP0P] = &DDStart[dP0P * numberOfLBnodes]; + D.f[dM0M] = &DDStart[dM0M * numberOfLBnodes]; + D.f[dP0M] = &DDStart[dP0M * numberOfLBnodes]; + D.f[dM0P] = &DDStart[dM0P * numberOfLBnodes]; + D.f[d0PP] = &DDStart[d0PP * numberOfLBnodes]; + D.f[d0MM] = &DDStart[d0MM * numberOfLBnodes]; + D.f[d0PM] = &DDStart[d0PM * numberOfLBnodes]; + D.f[d0MP] = &DDStart[d0MP * numberOfLBnodes]; + D.f[d000] = &DDStart[d000 * numberOfLBnodes]; + D.f[dPPP] = &DDStart[dPPP * numberOfLBnodes]; + D.f[dMMP] = &DDStart[dMMP * numberOfLBnodes]; + D.f[dPMP] = &DDStart[dPMP * numberOfLBnodes]; + D.f[dMPP] = &DDStart[dMPP * numberOfLBnodes]; + D.f[dPPM] = &DDStart[dPPM * numberOfLBnodes]; + D.f[dMMM] = &DDStart[dMMM * numberOfLBnodes]; + D.f[dPMM] = &DDStart[dPMM * numberOfLBnodes]; + D.f[dMPM] = &DDStart[dMPM * numberOfLBnodes]; } else { - D.f[DIR_M00] = &DDStart[DIR_P00 * numberOfLBnodes]; - D.f[DIR_P00] = &DDStart[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0M0] = &DDStart[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0P0] = &DDStart[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00M] = &DDStart[DIR_00P * numberOfLBnodes]; - D.f[DIR_00P] = &DDStart[DIR_00M * numberOfLBnodes]; - D.f[DIR_MM0] = &DDStart[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_PP0] = &DDStart[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DDStart[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DDStart[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_M0M] = &DDStart[DIR_P0P * numberOfLBnodes]; - D.f[DIR_P0P] = &DDStart[DIR_M0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DDStart[DIR_P0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DDStart[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0MM] = &DDStart[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0PP] = &DDStart[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0MP] = &DDStart[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0PM] = &DDStart[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DDStart[DIR_000 * numberOfLBnodes]; - D.f[DIR_MMM] = &DDStart[DIR_PPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DDStart[DIR_MMP * numberOfLBnodes]; - D.f[DIR_MPM] = &DDStart[DIR_PMP * numberOfLBnodes]; - D.f[DIR_PMM] = &DDStart[DIR_MPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DDStart[DIR_PPM * numberOfLBnodes]; - D.f[DIR_PPP] = &DDStart[DIR_MMM * numberOfLBnodes]; - D.f[DIR_MPP] = &DDStart[DIR_PMM * numberOfLBnodes]; - D.f[DIR_PMP] = &DDStart[DIR_MPM * numberOfLBnodes]; + D.f[dM00] = &DDStart[dP00 * numberOfLBnodes]; + D.f[dP00] = &DDStart[dM00 * numberOfLBnodes]; + D.f[d0M0] = &DDStart[d0P0 * numberOfLBnodes]; + D.f[d0P0] = &DDStart[d0M0 * numberOfLBnodes]; + D.f[d00M] = &DDStart[d00P * numberOfLBnodes]; + D.f[d00P] = &DDStart[d00M * numberOfLBnodes]; + D.f[dMM0] = &DDStart[dPP0 * numberOfLBnodes]; + D.f[dPP0] = &DDStart[dMM0 * numberOfLBnodes]; + D.f[dMP0] = &DDStart[dPM0 * numberOfLBnodes]; + D.f[dPM0] = &DDStart[dMP0 * numberOfLBnodes]; + D.f[dM0M] = &DDStart[dP0P * numberOfLBnodes]; + D.f[dP0P] = &DDStart[dM0M * numberOfLBnodes]; + D.f[dM0P] = &DDStart[dP0M * numberOfLBnodes]; + D.f[dP0M] = &DDStart[dM0P * numberOfLBnodes]; + D.f[d0MM] = &DDStart[d0PP * numberOfLBnodes]; + D.f[d0PP] = &DDStart[d0MM * numberOfLBnodes]; + D.f[d0MP] = &DDStart[d0PM * numberOfLBnodes]; + D.f[d0PM] = &DDStart[d0MP * numberOfLBnodes]; + D.f[d000] = &DDStart[d000 * numberOfLBnodes]; + D.f[dMMM] = &DDStart[dPPP * numberOfLBnodes]; + D.f[dPPM] = &DDStart[dMMP * numberOfLBnodes]; + D.f[dMPM] = &DDStart[dPMP * numberOfLBnodes]; + D.f[dPMM] = &DDStart[dMPP * numberOfLBnodes]; + D.f[dMMP] = &DDStart[dPPM * numberOfLBnodes]; + D.f[dPPP] = &DDStart[dMMM * numberOfLBnodes]; + D.f[dMPP] = &DDStart[dPMM * numberOfLBnodes]; + D.f[dPMP] = &DDStart[dMPM * numberOfLBnodes]; } //////////////////////////////////////////////////////////////////////////////// @@ -1392,33 +1392,33 @@ __global__ void LBCalcHigherMomentsIncompSP27( real* CUMcbb, unsigned int kbs = neighborZ[ks]; unsigned int kbsw = neighborZ[ksw]; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real mfcbb = (D.f[DIR_P00])[k ]; - real mfabb = (D.f[DIR_M00])[kw ]; - real mfbcb = (D.f[DIR_0P0])[k ]; - real mfbab = (D.f[DIR_0M0])[ks ]; - real mfbbc = (D.f[DIR_00P])[k ]; - real mfbba = (D.f[DIR_00M])[kb ]; - real mfccb = (D.f[DIR_PP0])[k ]; - real mfaab = (D.f[DIR_MM0])[ksw]; - real mfcab = (D.f[DIR_PM0])[ks ]; - real mfacb = (D.f[DIR_MP0])[kw ]; - real mfcbc = (D.f[DIR_P0P])[k ]; - real mfaba = (D.f[DIR_M0M])[kbw]; - real mfcba = (D.f[DIR_P0M])[kb ]; - real mfabc = (D.f[DIR_M0P])[kw ]; - real mfbcc = (D.f[DIR_0PP])[k ]; - real mfbaa = (D.f[DIR_0MM])[kbs]; - real mfbca = (D.f[DIR_0PM])[kb ]; - real mfbac = (D.f[DIR_0MP])[ks ]; - real mfbbb = (D.f[DIR_000])[k ]; - real mfccc = (D.f[DIR_PPP])[k ]; - real mfaac = (D.f[DIR_MMP])[ksw]; - real mfcac = (D.f[DIR_PMP])[ks ]; - real mfacc = (D.f[DIR_MPP])[kw ]; - real mfcca = (D.f[DIR_PPM])[kb ]; - real mfaaa = (D.f[DIR_MMM])[kbsw]; - real mfcaa = (D.f[DIR_PMM])[kbs]; - real mfaca = (D.f[DIR_MPM])[kbw]; + real mfcbb = (D.f[dP00])[k ]; + real mfabb = (D.f[dM00])[kw ]; + real mfbcb = (D.f[d0P0])[k ]; + real mfbab = (D.f[d0M0])[ks ]; + real mfbbc = (D.f[d00P])[k ]; + real mfbba = (D.f[d00M])[kb ]; + real mfccb = (D.f[dPP0])[k ]; + real mfaab = (D.f[dMM0])[ksw]; + real mfcab = (D.f[dPM0])[ks ]; + real mfacb = (D.f[dMP0])[kw ]; + real mfcbc = (D.f[dP0P])[k ]; + real mfaba = (D.f[dM0M])[kbw]; + real mfcba = (D.f[dP0M])[kb ]; + real mfabc = (D.f[dM0P])[kw ]; + real mfbcc = (D.f[d0PP])[k ]; + real mfbaa = (D.f[d0MM])[kbs]; + real mfbca = (D.f[d0PM])[kb ]; + real mfbac = (D.f[d0MP])[ks ]; + real mfbbb = (D.f[d000])[k ]; + real mfccc = (D.f[dPPP])[k ]; + real mfaac = (D.f[dMMP])[ksw]; + real mfcac = (D.f[dPMP])[ks ]; + real mfacc = (D.f[dMPP])[kw ]; + real mfcca = (D.f[dPPM])[kb ]; + real mfaaa = (D.f[dMMM])[kbsw]; + real mfcaa = (D.f[dPMM])[kbs]; + real mfaca = (D.f[dMPM])[kbw]; //////////////////////////////////////////////////////////////////////////////////// real vvx =((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfcaa-mfacc) + (mfcca-mfaac))) + (((mfcba-mfabc) + (mfcbc-mfaba)) + ((mfcab-mfacb) + (mfccb-mfaab))) + @@ -1777,63 +1777,63 @@ __global__ void LBCalcHigherMomentsCompSP27( real* CUMcbb, Distributions27 D; if (EvenOrOdd==true) { - D.f[DIR_P00] = &DDStart[DIR_P00 * numberOfLBnodes]; - D.f[DIR_M00] = &DDStart[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0P0] = &DDStart[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0M0] = &DDStart[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00P] = &DDStart[DIR_00P * numberOfLBnodes]; - D.f[DIR_00M] = &DDStart[DIR_00M * numberOfLBnodes]; - D.f[DIR_PP0] = &DDStart[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_MM0] = &DDStart[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DDStart[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DDStart[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_P0P] = &DDStart[DIR_P0P * numberOfLBnodes]; - D.f[DIR_M0M] = &DDStart[DIR_M0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DDStart[DIR_P0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DDStart[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0PP] = &DDStart[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0MM] = &DDStart[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0PM] = &DDStart[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0MP] = &DDStart[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DDStart[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DDStart[DIR_PPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DDStart[DIR_MMP * numberOfLBnodes]; - D.f[DIR_PMP] = &DDStart[DIR_PMP * numberOfLBnodes]; - D.f[DIR_MPP] = &DDStart[DIR_MPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DDStart[DIR_PPM * numberOfLBnodes]; - D.f[DIR_MMM] = &DDStart[DIR_MMM * numberOfLBnodes]; - D.f[DIR_PMM] = &DDStart[DIR_PMM * numberOfLBnodes]; - D.f[DIR_MPM] = &DDStart[DIR_MPM * numberOfLBnodes]; + D.f[dP00] = &DDStart[dP00 * numberOfLBnodes]; + D.f[dM00] = &DDStart[dM00 * numberOfLBnodes]; + D.f[d0P0] = &DDStart[d0P0 * numberOfLBnodes]; + D.f[d0M0] = &DDStart[d0M0 * numberOfLBnodes]; + D.f[d00P] = &DDStart[d00P * numberOfLBnodes]; + D.f[d00M] = &DDStart[d00M * numberOfLBnodes]; + D.f[dPP0] = &DDStart[dPP0 * numberOfLBnodes]; + D.f[dMM0] = &DDStart[dMM0 * numberOfLBnodes]; + D.f[dPM0] = &DDStart[dPM0 * numberOfLBnodes]; + D.f[dMP0] = &DDStart[dMP0 * numberOfLBnodes]; + D.f[dP0P] = &DDStart[dP0P * numberOfLBnodes]; + D.f[dM0M] = &DDStart[dM0M * numberOfLBnodes]; + D.f[dP0M] = &DDStart[dP0M * numberOfLBnodes]; + D.f[dM0P] = &DDStart[dM0P * numberOfLBnodes]; + D.f[d0PP] = &DDStart[d0PP * numberOfLBnodes]; + D.f[d0MM] = &DDStart[d0MM * numberOfLBnodes]; + D.f[d0PM] = &DDStart[d0PM * numberOfLBnodes]; + D.f[d0MP] = &DDStart[d0MP * numberOfLBnodes]; + D.f[d000] = &DDStart[d000 * numberOfLBnodes]; + D.f[dPPP] = &DDStart[dPPP * numberOfLBnodes]; + D.f[dMMP] = &DDStart[dMMP * numberOfLBnodes]; + D.f[dPMP] = &DDStart[dPMP * numberOfLBnodes]; + D.f[dMPP] = &DDStart[dMPP * numberOfLBnodes]; + D.f[dPPM] = &DDStart[dPPM * numberOfLBnodes]; + D.f[dMMM] = &DDStart[dMMM * numberOfLBnodes]; + D.f[dPMM] = &DDStart[dPMM * numberOfLBnodes]; + D.f[dMPM] = &DDStart[dMPM * numberOfLBnodes]; } else { - D.f[DIR_M00] = &DDStart[DIR_P00 * numberOfLBnodes]; - D.f[DIR_P00] = &DDStart[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0M0] = &DDStart[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0P0] = &DDStart[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00M] = &DDStart[DIR_00P * numberOfLBnodes]; - D.f[DIR_00P] = &DDStart[DIR_00M * numberOfLBnodes]; - D.f[DIR_MM0] = &DDStart[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_PP0] = &DDStart[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DDStart[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DDStart[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_M0M] = &DDStart[DIR_P0P * numberOfLBnodes]; - D.f[DIR_P0P] = &DDStart[DIR_M0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DDStart[DIR_P0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DDStart[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0MM] = &DDStart[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0PP] = &DDStart[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0MP] = &DDStart[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0PM] = &DDStart[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DDStart[DIR_000 * numberOfLBnodes]; - D.f[DIR_MMM] = &DDStart[DIR_PPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DDStart[DIR_MMP * numberOfLBnodes]; - D.f[DIR_MPM] = &DDStart[DIR_PMP * numberOfLBnodes]; - D.f[DIR_PMM] = &DDStart[DIR_MPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DDStart[DIR_PPM * numberOfLBnodes]; - D.f[DIR_PPP] = &DDStart[DIR_MMM * numberOfLBnodes]; - D.f[DIR_MPP] = &DDStart[DIR_PMM * numberOfLBnodes]; - D.f[DIR_PMP] = &DDStart[DIR_MPM * numberOfLBnodes]; + D.f[dM00] = &DDStart[dP00 * numberOfLBnodes]; + D.f[dP00] = &DDStart[dM00 * numberOfLBnodes]; + D.f[d0M0] = &DDStart[d0P0 * numberOfLBnodes]; + D.f[d0P0] = &DDStart[d0M0 * numberOfLBnodes]; + D.f[d00M] = &DDStart[d00P * numberOfLBnodes]; + D.f[d00P] = &DDStart[d00M * numberOfLBnodes]; + D.f[dMM0] = &DDStart[dPP0 * numberOfLBnodes]; + D.f[dPP0] = &DDStart[dMM0 * numberOfLBnodes]; + D.f[dMP0] = &DDStart[dPM0 * numberOfLBnodes]; + D.f[dPM0] = &DDStart[dMP0 * numberOfLBnodes]; + D.f[dM0M] = &DDStart[dP0P * numberOfLBnodes]; + D.f[dP0P] = &DDStart[dM0M * numberOfLBnodes]; + D.f[dM0P] = &DDStart[dP0M * numberOfLBnodes]; + D.f[dP0M] = &DDStart[dM0P * numberOfLBnodes]; + D.f[d0MM] = &DDStart[d0PP * numberOfLBnodes]; + D.f[d0PP] = &DDStart[d0MM * numberOfLBnodes]; + D.f[d0MP] = &DDStart[d0PM * numberOfLBnodes]; + D.f[d0PM] = &DDStart[d0MP * numberOfLBnodes]; + D.f[d000] = &DDStart[d000 * numberOfLBnodes]; + D.f[dMMM] = &DDStart[dPPP * numberOfLBnodes]; + D.f[dPPM] = &DDStart[dMMP * numberOfLBnodes]; + D.f[dMPM] = &DDStart[dPMP * numberOfLBnodes]; + D.f[dPMM] = &DDStart[dMPP * numberOfLBnodes]; + D.f[dMMP] = &DDStart[dPPM * numberOfLBnodes]; + D.f[dPPP] = &DDStart[dMMM * numberOfLBnodes]; + D.f[dMPP] = &DDStart[dPMM * numberOfLBnodes]; + D.f[dPMP] = &DDStart[dMPM * numberOfLBnodes]; } //////////////////////////////////////////////////////////////////////////////// @@ -1846,33 +1846,33 @@ __global__ void LBCalcHigherMomentsCompSP27( real* CUMcbb, unsigned int kbs = neighborZ[ks]; unsigned int kbsw = neighborZ[ksw]; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real mfcbb = (D.f[DIR_P00])[k ]; - real mfabb = (D.f[DIR_M00])[kw ]; - real mfbcb = (D.f[DIR_0P0])[k ]; - real mfbab = (D.f[DIR_0M0])[ks ]; - real mfbbc = (D.f[DIR_00P])[k ]; - real mfbba = (D.f[DIR_00M])[kb ]; - real mfccb = (D.f[DIR_PP0])[k ]; - real mfaab = (D.f[DIR_MM0])[ksw]; - real mfcab = (D.f[DIR_PM0])[ks ]; - real mfacb = (D.f[DIR_MP0])[kw ]; - real mfcbc = (D.f[DIR_P0P])[k ]; - real mfaba = (D.f[DIR_M0M])[kbw]; - real mfcba = (D.f[DIR_P0M])[kb ]; - real mfabc = (D.f[DIR_M0P])[kw ]; - real mfbcc = (D.f[DIR_0PP])[k ]; - real mfbaa = (D.f[DIR_0MM])[kbs]; - real mfbca = (D.f[DIR_0PM])[kb ]; - real mfbac = (D.f[DIR_0MP])[ks ]; - real mfbbb = (D.f[DIR_000])[k ]; - real mfccc = (D.f[DIR_PPP])[k ]; - real mfaac = (D.f[DIR_MMP])[ksw]; - real mfcac = (D.f[DIR_PMP])[ks ]; - real mfacc = (D.f[DIR_MPP])[kw ]; - real mfcca = (D.f[DIR_PPM])[kb ]; - real mfaaa = (D.f[DIR_MMM])[kbsw]; - real mfcaa = (D.f[DIR_PMM])[kbs]; - real mfaca = (D.f[DIR_MPM])[kbw]; + real mfcbb = (D.f[dP00])[k ]; + real mfabb = (D.f[dM00])[kw ]; + real mfbcb = (D.f[d0P0])[k ]; + real mfbab = (D.f[d0M0])[ks ]; + real mfbbc = (D.f[d00P])[k ]; + real mfbba = (D.f[d00M])[kb ]; + real mfccb = (D.f[dPP0])[k ]; + real mfaab = (D.f[dMM0])[ksw]; + real mfcab = (D.f[dPM0])[ks ]; + real mfacb = (D.f[dMP0])[kw ]; + real mfcbc = (D.f[dP0P])[k ]; + real mfaba = (D.f[dM0M])[kbw]; + real mfcba = (D.f[dP0M])[kb ]; + real mfabc = (D.f[dM0P])[kw ]; + real mfbcc = (D.f[d0PP])[k ]; + real mfbaa = (D.f[d0MM])[kbs]; + real mfbca = (D.f[d0PM])[kb ]; + real mfbac = (D.f[d0MP])[ks ]; + real mfbbb = (D.f[d000])[k ]; + real mfccc = (D.f[dPPP])[k ]; + real mfaac = (D.f[dMMP])[ksw]; + real mfcac = (D.f[dPMP])[ks ]; + real mfacc = (D.f[dMPP])[kw ]; + real mfcca = (D.f[dPPM])[kb ]; + real mfaaa = (D.f[dMMM])[kbsw]; + real mfcaa = (D.f[dPMM])[kbs]; + real mfaca = (D.f[dMPM])[kbw]; //////////////////////////////////////////////////////////////////////////////////// real drho = ((((mfccc+mfaaa) + (mfaca+mfcac)) + ((mfacc+mfcaa) + (mfaac+mfcca))) + (((mfbac+mfbca) + (mfbaa+mfbcc)) + ((mfabc+mfcba) + (mfaba+mfcbc)) + ((mfacb+mfcab) + (mfaab+mfccb))) + @@ -2131,12 +2131,12 @@ __global__ void LBCalcHigherMomentsCompSP27( real* CUMcbb, real OxxPyyPzz = c1o1; real omega = c1o1 / (c3o1*0.001 + c1o2); - real DIR_00M = (c4o1 * omega * OxxPyyPzz * (c9o1 * omega - c16o1) - c4o1 * omega * omega - c2o1 * OxxPyyPzz * OxxPyyPzz * (c2o1 + c9o1 * omega * (omega - c2o1))) / + real d00M = (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)); - CUMbcc[k] = mfbcc - ((mfaac * mfbca + mfaca * mfbac + c4o1 * mfabb * mfbbb + c2o1 * (mfbab * mfacb + mfbba * mfabc)) + c1o3 * (mfbca + mfbac)*(c1o1 + rho*c6o1*DIR_00M / (c2o1 + c3o1 * DIR_00M))) / rho; - CUMcbc[k] = mfcbc - ((mfaac * mfcba + mfcaa * mfabc + c4o1 * mfbab * mfbbb + c2o1 * (mfabb * mfcab + mfbba * mfbac)) + c1o3 * (mfcba + mfabc)*(c1o1 + rho*c6o1*DIR_00M / (c2o1 + c3o1 * DIR_00M))) / rho; - CUMccb[k] = mfccb - ((mfcaa * mfacb + mfaca * mfcab + c4o1 * mfbba * mfbbb + c2o1 * (mfbab * mfbca + mfabb * mfcba)) + c1o3 * (mfacb + mfcab)*(c1o1 + rho*c6o1*DIR_00M / (c2o1 + c3o1 * DIR_00M))) / rho; + CUMbcc[k] = mfbcc - ((mfaac * mfbca + mfaca * mfbac + c4o1 * mfabb * mfbbb + c2o1 * (mfbab * mfacb + mfbba * mfabc)) + c1o3 * (mfbca + mfbac)*(c1o1 + rho*c6o1*d00M / (c2o1 + c3o1 * d00M))) / rho; + CUMcbc[k] = mfcbc - ((mfaac * mfcba + mfcaa * mfabc + c4o1 * mfbab * mfbbb + c2o1 * (mfabb * mfcab + mfbba * mfbac)) + c1o3 * (mfcba + mfabc)*(c1o1 + rho*c6o1*d00M / (c2o1 + c3o1 * d00M))) / rho; + CUMccb[k] = mfccb - ((mfcaa * mfacb + mfaca * mfcab + c4o1 * mfbba * mfbbb + c2o1 * (mfbab * mfbca + mfabb * mfcba)) + c1o3 * (mfacb + mfcab)*(c1o1 + rho*c6o1*d00M / (c2o1 + c3o1 * d00M))) / rho; //////////////////////////////////////////////////////////////////////////////////// // Cumulants diff --git a/src/gpu/VirtualFluids_GPU/GPU/CalcConc27.cu b/src/gpu/core/GPU/CalcConc27.cu similarity index 53% rename from src/gpu/VirtualFluids_GPU/GPU/CalcConc27.cu rename to src/gpu/core/GPU/CalcConc27.cu index 0986a42b07351456f684ae5141d38245e5e17c57..724db55d580b69fba96c813fe843e05f3e575593 100644 --- a/src/gpu/VirtualFluids_GPU/GPU/CalcConc27.cu +++ b/src/gpu/core/GPU/CalcConc27.cu @@ -76,63 +76,63 @@ __global__ void CalcConc27( Distributions27 distAD; if (isEvenTimestep) { - distAD.f[DIR_P00] = &distributionsAD[DIR_P00 * numberOfLBnodes]; - distAD.f[DIR_M00] = &distributionsAD[DIR_M00 * numberOfLBnodes]; - distAD.f[DIR_0P0] = &distributionsAD[DIR_0P0 * numberOfLBnodes]; - distAD.f[DIR_0M0] = &distributionsAD[DIR_0M0 * numberOfLBnodes]; - distAD.f[DIR_00P] = &distributionsAD[DIR_00P * numberOfLBnodes]; - distAD.f[DIR_00M] = &distributionsAD[DIR_00M * numberOfLBnodes]; - distAD.f[DIR_PP0] = &distributionsAD[DIR_PP0 * numberOfLBnodes]; - distAD.f[DIR_MM0] = &distributionsAD[DIR_MM0 * numberOfLBnodes]; - distAD.f[DIR_PM0] = &distributionsAD[DIR_PM0 * numberOfLBnodes]; - distAD.f[DIR_MP0] = &distributionsAD[DIR_MP0 * numberOfLBnodes]; - distAD.f[DIR_P0P] = &distributionsAD[DIR_P0P * numberOfLBnodes]; - distAD.f[DIR_M0M] = &distributionsAD[DIR_M0M * numberOfLBnodes]; - distAD.f[DIR_P0M] = &distributionsAD[DIR_P0M * numberOfLBnodes]; - distAD.f[DIR_M0P] = &distributionsAD[DIR_M0P * numberOfLBnodes]; - distAD.f[DIR_0PP] = &distributionsAD[DIR_0PP * numberOfLBnodes]; - distAD.f[DIR_0MM] = &distributionsAD[DIR_0MM * numberOfLBnodes]; - distAD.f[DIR_0PM] = &distributionsAD[DIR_0PM * numberOfLBnodes]; - distAD.f[DIR_0MP] = &distributionsAD[DIR_0MP * numberOfLBnodes]; - distAD.f[DIR_000] = &distributionsAD[DIR_000 * numberOfLBnodes]; - distAD.f[DIR_PPP] = &distributionsAD[DIR_PPP * numberOfLBnodes]; - distAD.f[DIR_MMP] = &distributionsAD[DIR_MMP * numberOfLBnodes]; - distAD.f[DIR_PMP] = &distributionsAD[DIR_PMP * numberOfLBnodes]; - distAD.f[DIR_MPP] = &distributionsAD[DIR_MPP * numberOfLBnodes]; - distAD.f[DIR_PPM] = &distributionsAD[DIR_PPM * numberOfLBnodes]; - distAD.f[DIR_MMM] = &distributionsAD[DIR_MMM * numberOfLBnodes]; - distAD.f[DIR_PMM] = &distributionsAD[DIR_PMM * numberOfLBnodes]; - distAD.f[DIR_MPM] = &distributionsAD[DIR_MPM * numberOfLBnodes]; + distAD.f[dP00] = &distributionsAD[dP00 * numberOfLBnodes]; + distAD.f[dM00] = &distributionsAD[dM00 * numberOfLBnodes]; + distAD.f[d0P0] = &distributionsAD[d0P0 * numberOfLBnodes]; + distAD.f[d0M0] = &distributionsAD[d0M0 * numberOfLBnodes]; + distAD.f[d00P] = &distributionsAD[d00P * numberOfLBnodes]; + distAD.f[d00M] = &distributionsAD[d00M * numberOfLBnodes]; + distAD.f[dPP0] = &distributionsAD[dPP0 * numberOfLBnodes]; + distAD.f[dMM0] = &distributionsAD[dMM0 * numberOfLBnodes]; + distAD.f[dPM0] = &distributionsAD[dPM0 * numberOfLBnodes]; + distAD.f[dMP0] = &distributionsAD[dMP0 * numberOfLBnodes]; + distAD.f[dP0P] = &distributionsAD[dP0P * numberOfLBnodes]; + distAD.f[dM0M] = &distributionsAD[dM0M * numberOfLBnodes]; + distAD.f[dP0M] = &distributionsAD[dP0M * numberOfLBnodes]; + distAD.f[dM0P] = &distributionsAD[dM0P * numberOfLBnodes]; + distAD.f[d0PP] = &distributionsAD[d0PP * numberOfLBnodes]; + distAD.f[d0MM] = &distributionsAD[d0MM * numberOfLBnodes]; + distAD.f[d0PM] = &distributionsAD[d0PM * numberOfLBnodes]; + distAD.f[d0MP] = &distributionsAD[d0MP * numberOfLBnodes]; + distAD.f[d000] = &distributionsAD[d000 * numberOfLBnodes]; + distAD.f[dPPP] = &distributionsAD[dPPP * numberOfLBnodes]; + distAD.f[dMMP] = &distributionsAD[dMMP * numberOfLBnodes]; + distAD.f[dPMP] = &distributionsAD[dPMP * numberOfLBnodes]; + distAD.f[dMPP] = &distributionsAD[dMPP * numberOfLBnodes]; + distAD.f[dPPM] = &distributionsAD[dPPM * numberOfLBnodes]; + distAD.f[dMMM] = &distributionsAD[dMMM * numberOfLBnodes]; + distAD.f[dPMM] = &distributionsAD[dPMM * numberOfLBnodes]; + distAD.f[dMPM] = &distributionsAD[dMPM * numberOfLBnodes]; } else { - distAD.f[DIR_M00] = &distributionsAD[DIR_P00 * numberOfLBnodes]; - distAD.f[DIR_P00] = &distributionsAD[DIR_M00 * numberOfLBnodes]; - distAD.f[DIR_0M0] = &distributionsAD[DIR_0P0 * numberOfLBnodes]; - distAD.f[DIR_0P0] = &distributionsAD[DIR_0M0 * numberOfLBnodes]; - distAD.f[DIR_00M] = &distributionsAD[DIR_00P * numberOfLBnodes]; - distAD.f[DIR_00P] = &distributionsAD[DIR_00M * numberOfLBnodes]; - distAD.f[DIR_MM0] = &distributionsAD[DIR_PP0 * numberOfLBnodes]; - distAD.f[DIR_PP0] = &distributionsAD[DIR_MM0 * numberOfLBnodes]; - distAD.f[DIR_MP0] = &distributionsAD[DIR_PM0 * numberOfLBnodes]; - distAD.f[DIR_PM0] = &distributionsAD[DIR_MP0 * numberOfLBnodes]; - distAD.f[DIR_M0M] = &distributionsAD[DIR_P0P * numberOfLBnodes]; - distAD.f[DIR_P0P] = &distributionsAD[DIR_M0M * numberOfLBnodes]; - distAD.f[DIR_M0P] = &distributionsAD[DIR_P0M * numberOfLBnodes]; - distAD.f[DIR_P0M] = &distributionsAD[DIR_M0P * numberOfLBnodes]; - distAD.f[DIR_0MM] = &distributionsAD[DIR_0PP * numberOfLBnodes]; - distAD.f[DIR_0PP] = &distributionsAD[DIR_0MM * numberOfLBnodes]; - distAD.f[DIR_0MP] = &distributionsAD[DIR_0PM * numberOfLBnodes]; - distAD.f[DIR_0PM] = &distributionsAD[DIR_0MP * numberOfLBnodes]; - distAD.f[DIR_000] = &distributionsAD[DIR_000 * numberOfLBnodes]; - distAD.f[DIR_PPP] = &distributionsAD[DIR_MMM * numberOfLBnodes]; - distAD.f[DIR_MMP] = &distributionsAD[DIR_PPM * numberOfLBnodes]; - distAD.f[DIR_PMP] = &distributionsAD[DIR_MPM * numberOfLBnodes]; - distAD.f[DIR_MPP] = &distributionsAD[DIR_PMM * numberOfLBnodes]; - distAD.f[DIR_PPM] = &distributionsAD[DIR_MMP * numberOfLBnodes]; - distAD.f[DIR_MMM] = &distributionsAD[DIR_PPP * numberOfLBnodes]; - distAD.f[DIR_PMM] = &distributionsAD[DIR_MPP * numberOfLBnodes]; - distAD.f[DIR_MPM] = &distributionsAD[DIR_PMP * numberOfLBnodes]; + distAD.f[dM00] = &distributionsAD[dP00 * numberOfLBnodes]; + distAD.f[dP00] = &distributionsAD[dM00 * numberOfLBnodes]; + distAD.f[d0M0] = &distributionsAD[d0P0 * numberOfLBnodes]; + distAD.f[d0P0] = &distributionsAD[d0M0 * numberOfLBnodes]; + distAD.f[d00M] = &distributionsAD[d00P * numberOfLBnodes]; + distAD.f[d00P] = &distributionsAD[d00M * numberOfLBnodes]; + distAD.f[dMM0] = &distributionsAD[dPP0 * numberOfLBnodes]; + distAD.f[dPP0] = &distributionsAD[dMM0 * numberOfLBnodes]; + distAD.f[dMP0] = &distributionsAD[dPM0 * numberOfLBnodes]; + distAD.f[dPM0] = &distributionsAD[dMP0 * numberOfLBnodes]; + distAD.f[dM0M] = &distributionsAD[dP0P * numberOfLBnodes]; + distAD.f[dP0P] = &distributionsAD[dM0M * numberOfLBnodes]; + distAD.f[dM0P] = &distributionsAD[dP0M * numberOfLBnodes]; + distAD.f[dP0M] = &distributionsAD[dM0P * numberOfLBnodes]; + distAD.f[d0MM] = &distributionsAD[d0PP * numberOfLBnodes]; + distAD.f[d0PP] = &distributionsAD[d0MM * numberOfLBnodes]; + distAD.f[d0MP] = &distributionsAD[d0PM * numberOfLBnodes]; + distAD.f[d0PM] = &distributionsAD[d0MP * numberOfLBnodes]; + distAD.f[d000] = &distributionsAD[d000 * numberOfLBnodes]; + distAD.f[dPPP] = &distributionsAD[dMMM * numberOfLBnodes]; + distAD.f[dMMP] = &distributionsAD[dPPM * numberOfLBnodes]; + distAD.f[dPMP] = &distributionsAD[dMPM * numberOfLBnodes]; + distAD.f[dMPP] = &distributionsAD[dPMM * numberOfLBnodes]; + distAD.f[dPPM] = &distributionsAD[dMMP * numberOfLBnodes]; + distAD.f[dMMM] = &distributionsAD[dPPP * numberOfLBnodes]; + distAD.f[dPMM] = &distributionsAD[dMPP * numberOfLBnodes]; + distAD.f[dMPM] = &distributionsAD[dPMP * numberOfLBnodes]; } //////////////////////////////////////////////////////////////////////////////// //! - Set neighbor indices (necessary for indirect addressing) @@ -166,33 +166,33 @@ __global__ void CalcConc27( //////////////////////////////////////////////////////////////////////////////// //! - Set local distributions //! - real mfcbb = (distAD.f[DIR_P00])[ke ]; - real mfabb = (distAD.f[DIR_M00])[kw ]; - real mfbcb = (distAD.f[DIR_0P0])[kn ]; - real mfbab = (distAD.f[DIR_0M0])[ks ]; - real mfbbc = (distAD.f[DIR_00P])[kt ]; - real mfbba = (distAD.f[DIR_00M])[kb ]; - real mfccb = (distAD.f[DIR_PP0])[kne ]; - real mfaab = (distAD.f[DIR_MM0])[ksw ]; - real mfcab = (distAD.f[DIR_PM0])[kse ]; - real mfacb = (distAD.f[DIR_MP0])[knw ]; - real mfcbc = (distAD.f[DIR_P0P])[kte ]; - real mfaba = (distAD.f[DIR_M0M])[kbw ]; - real mfcba = (distAD.f[DIR_P0M])[kbe ]; - real mfabc = (distAD.f[DIR_M0P])[ktw ]; - real mfbcc = (distAD.f[DIR_0PP])[ktn ]; - real mfbaa = (distAD.f[DIR_0MM])[kbs ]; - real mfbca = (distAD.f[DIR_0PM])[kbn ]; - real mfbac = (distAD.f[DIR_0MP])[kts ]; - real mfbbb = (distAD.f[DIR_000])[k ]; - real mfccc = (distAD.f[DIR_PPP])[ktne]; - real mfaac = (distAD.f[DIR_MMP])[ktsw]; - real mfcac = (distAD.f[DIR_PMP])[ktse]; - real mfacc = (distAD.f[DIR_MPP])[ktnw]; - real mfcca = (distAD.f[DIR_PPM])[kbne]; - real mfaaa = (distAD.f[DIR_MMM])[kbsw]; - real mfcaa = (distAD.f[DIR_PMM])[kbse]; - real mfaca = (distAD.f[DIR_MPM])[kbnw]; + real mfcbb = (distAD.f[dP00])[ke ]; + real mfabb = (distAD.f[dM00])[kw ]; + real mfbcb = (distAD.f[d0P0])[kn ]; + real mfbab = (distAD.f[d0M0])[ks ]; + real mfbbc = (distAD.f[d00P])[kt ]; + real mfbba = (distAD.f[d00M])[kb ]; + real mfccb = (distAD.f[dPP0])[kne ]; + real mfaab = (distAD.f[dMM0])[ksw ]; + real mfcab = (distAD.f[dPM0])[kse ]; + real mfacb = (distAD.f[dMP0])[knw ]; + real mfcbc = (distAD.f[dP0P])[kte ]; + real mfaba = (distAD.f[dM0M])[kbw ]; + real mfcba = (distAD.f[dP0M])[kbe ]; + real mfabc = (distAD.f[dM0P])[ktw ]; + real mfbcc = (distAD.f[d0PP])[ktn ]; + real mfbaa = (distAD.f[d0MM])[kbs ]; + real mfbca = (distAD.f[d0PM])[kbn ]; + real mfbac = (distAD.f[d0MP])[kts ]; + real mfbbb = (distAD.f[d000])[k ]; + real mfccc = (distAD.f[dPPP])[ktne]; + real mfaac = (distAD.f[dMMP])[ktsw]; + real mfcac = (distAD.f[dPMP])[ktse]; + real mfacc = (distAD.f[dMPP])[ktnw]; + real mfcca = (distAD.f[dPPM])[kbne]; + real mfaaa = (distAD.f[dMMM])[kbsw]; + real mfcaa = (distAD.f[dPMM])[kbse]; + real mfaca = (distAD.f[dMPM])[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> @@ -327,63 +327,63 @@ __global__ void CalcConc7( real* Conc, // Distributions27 D27; // if (isEvenTimestep==true) // { -// D27.f[DIR_P00] = &DD27[DIR_P00 * size_Mat]; -// D27.f[DIR_M00] = &DD27[DIR_M00 * size_Mat]; -// D27.f[DIR_0P0] = &DD27[DIR_0P0 * size_Mat]; -// D27.f[DIR_0M0] = &DD27[DIR_0M0 * size_Mat]; -// D27.f[DIR_00P] = &DD27[DIR_00P * size_Mat]; -// D27.f[DIR_00M] = &DD27[DIR_00M * size_Mat]; -// D27.f[DIR_PP0] = &DD27[DIR_PP0 * size_Mat]; -// D27.f[DIR_MM0] = &DD27[DIR_MM0 * size_Mat]; -// D27.f[DIR_PM0] = &DD27[DIR_PM0 * size_Mat]; -// D27.f[DIR_MP0] = &DD27[DIR_MP0 * size_Mat]; -// D27.f[DIR_P0P] = &DD27[DIR_P0P * size_Mat]; -// D27.f[DIR_M0M] = &DD27[DIR_M0M * size_Mat]; -// D27.f[DIR_P0M] = &DD27[DIR_P0M * size_Mat]; -// D27.f[DIR_M0P] = &DD27[DIR_M0P * size_Mat]; -// D27.f[DIR_0PP] = &DD27[DIR_0PP * size_Mat]; -// D27.f[DIR_0MM] = &DD27[DIR_0MM * size_Mat]; -// D27.f[DIR_0PM] = &DD27[DIR_0PM * size_Mat]; -// D27.f[DIR_0MP] = &DD27[DIR_0MP * size_Mat]; -// D27.f[DIR_000] = &DD27[DIR_000 * size_Mat]; -// D27.f[DIR_PPP] = &DD27[DIR_PPP * size_Mat]; -// D27.f[DIR_MMP] = &DD27[DIR_MMP * size_Mat]; -// D27.f[DIR_PMP] = &DD27[DIR_PMP * size_Mat]; -// D27.f[DIR_MPP] = &DD27[DIR_MPP * size_Mat]; -// D27.f[DIR_PPM] = &DD27[DIR_PPM * size_Mat]; -// D27.f[DIR_MMM] = &DD27[DIR_MMM * size_Mat]; -// D27.f[DIR_PMM] = &DD27[DIR_PMM * size_Mat]; -// D27.f[DIR_MPM] = &DD27[DIR_MPM * size_Mat]; +// D27.f[dP00] = &DD27[dP00 * size_Mat]; +// D27.f[dM00] = &DD27[dM00 * size_Mat]; +// D27.f[d0P0] = &DD27[d0P0 * size_Mat]; +// D27.f[d0M0] = &DD27[d0M0 * size_Mat]; +// D27.f[d00P] = &DD27[d00P * size_Mat]; +// D27.f[d00M] = &DD27[d00M * size_Mat]; +// D27.f[dPP0] = &DD27[dPP0 * size_Mat]; +// D27.f[dMM0] = &DD27[dMM0 * size_Mat]; +// D27.f[dPM0] = &DD27[dPM0 * size_Mat]; +// D27.f[dMP0] = &DD27[dMP0 * size_Mat]; +// D27.f[dP0P] = &DD27[dP0P * size_Mat]; +// D27.f[dM0M] = &DD27[dM0M * size_Mat]; +// D27.f[dP0M] = &DD27[dP0M * size_Mat]; +// D27.f[dM0P] = &DD27[dM0P * size_Mat]; +// D27.f[d0PP] = &DD27[d0PP * size_Mat]; +// D27.f[d0MM] = &DD27[d0MM * size_Mat]; +// D27.f[d0PM] = &DD27[d0PM * size_Mat]; +// D27.f[d0MP] = &DD27[d0MP * size_Mat]; +// D27.f[d000] = &DD27[d000 * size_Mat]; +// D27.f[dPPP] = &DD27[dPPP * size_Mat]; +// D27.f[dMMP] = &DD27[dMMP * size_Mat]; +// D27.f[dPMP] = &DD27[dPMP * size_Mat]; +// D27.f[dMPP] = &DD27[dMPP * size_Mat]; +// D27.f[dPPM] = &DD27[dPPM * size_Mat]; +// D27.f[dMMM] = &DD27[dMMM * size_Mat]; +// D27.f[dPMM] = &DD27[dPMM * size_Mat]; +// D27.f[dMPM] = &DD27[dMPM * size_Mat]; // } // else // { -// D27.f[DIR_M00] = &DD27[DIR_P00 * size_Mat]; -// D27.f[DIR_P00] = &DD27[DIR_M00 * size_Mat]; -// D27.f[DIR_0M0] = &DD27[DIR_0P0 * size_Mat]; -// D27.f[DIR_0P0] = &DD27[DIR_0M0 * size_Mat]; -// D27.f[DIR_00M] = &DD27[DIR_00P * size_Mat]; -// D27.f[DIR_00P] = &DD27[DIR_00M * size_Mat]; -// D27.f[DIR_MM0] = &DD27[DIR_PP0 * size_Mat]; -// D27.f[DIR_PP0] = &DD27[DIR_MM0 * size_Mat]; -// D27.f[DIR_MP0] = &DD27[DIR_PM0 * size_Mat]; -// D27.f[DIR_PM0] = &DD27[DIR_MP0 * size_Mat]; -// D27.f[DIR_M0M] = &DD27[DIR_P0P * size_Mat]; -// D27.f[DIR_P0P] = &DD27[DIR_M0M * size_Mat]; -// D27.f[DIR_M0P] = &DD27[DIR_P0M * size_Mat]; -// D27.f[DIR_P0M] = &DD27[DIR_M0P * size_Mat]; -// D27.f[DIR_0MM] = &DD27[DIR_0PP * size_Mat]; -// D27.f[DIR_0PP] = &DD27[DIR_0MM * size_Mat]; -// D27.f[DIR_0MP] = &DD27[DIR_0PM * size_Mat]; -// D27.f[DIR_0PM] = &DD27[DIR_0MP * size_Mat]; -// D27.f[DIR_000] = &DD27[DIR_000 * size_Mat]; -// D27.f[DIR_MMM] = &DD27[DIR_PPP * size_Mat]; -// D27.f[DIR_PPM] = &DD27[DIR_MMP * size_Mat]; -// D27.f[DIR_MPM] = &DD27[DIR_PMP * size_Mat]; -// D27.f[DIR_PMM] = &DD27[DIR_MPP * size_Mat]; -// D27.f[DIR_MMP] = &DD27[DIR_PPM * size_Mat]; -// D27.f[DIR_PPP] = &DD27[DIR_MMM * size_Mat]; -// D27.f[DIR_MPP] = &DD27[DIR_PMM * size_Mat]; -// D27.f[DIR_PMP] = &DD27[DIR_MPM * size_Mat]; +// D27.f[dM00] = &DD27[dP00 * size_Mat]; +// D27.f[dP00] = &DD27[dM00 * size_Mat]; +// D27.f[d0M0] = &DD27[d0P0 * size_Mat]; +// D27.f[d0P0] = &DD27[d0M0 * size_Mat]; +// D27.f[d00M] = &DD27[d00P * size_Mat]; +// D27.f[d00P] = &DD27[d00M * size_Mat]; +// D27.f[dMM0] = &DD27[dPP0 * size_Mat]; +// D27.f[dPP0] = &DD27[dMM0 * size_Mat]; +// D27.f[dMP0] = &DD27[dPM0 * size_Mat]; +// D27.f[dPM0] = &DD27[dMP0 * size_Mat]; +// D27.f[dM0M] = &DD27[dP0P * size_Mat]; +// D27.f[dP0P] = &DD27[dM0M * size_Mat]; +// D27.f[dM0P] = &DD27[dP0M * size_Mat]; +// D27.f[dP0M] = &DD27[dM0P * size_Mat]; +// D27.f[d0MM] = &DD27[d0PP * size_Mat]; +// D27.f[d0PP] = &DD27[d0MM * size_Mat]; +// D27.f[d0MP] = &DD27[d0PM * size_Mat]; +// D27.f[d0PM] = &DD27[d0MP * size_Mat]; +// D27.f[d000] = &DD27[d000 * size_Mat]; +// D27.f[dMMM] = &DD27[dPPP * size_Mat]; +// D27.f[dPPM] = &DD27[dMMP * size_Mat]; +// D27.f[dMPM] = &DD27[dPMP * size_Mat]; +// D27.f[dPMM] = &DD27[dMPP * size_Mat]; +// D27.f[dMMP] = &DD27[dPPM * size_Mat]; +// D27.f[dPPP] = &DD27[dMMM * size_Mat]; +// D27.f[dMPP] = &DD27[dPMM * size_Mat]; +// D27.f[dPMP] = &DD27[dMPM * size_Mat]; // } // //////////////////////////////////////////////////////////////////////////////// // const unsigned x = threadIdx.x; // Globaler x-Index @@ -432,20 +432,20 @@ __global__ void CalcConc7( real* Conc, // if(geoD[k] == GEO_FLUID) // { -// Conc[k] = (D27.f[DIR_P00])[ke ]+ (D27.f[DIR_M00])[kw ]+ -// (D27.f[DIR_0P0])[kn ]+ (D27.f[DIR_0M0])[ks ]+ -// (D27.f[DIR_00P])[kt ]+ (D27.f[DIR_00M])[kb ]+ -// (D27.f[DIR_PP0])[kne ]+ (D27.f[DIR_MM0])[ksw ]+ -// (D27.f[DIR_PM0])[kse ]+ (D27.f[DIR_MP0])[knw ]+ -// (D27.f[DIR_P0P])[kte ]+ (D27.f[DIR_M0M])[kbw ]+ -// (D27.f[DIR_P0M])[kbe ]+ (D27.f[DIR_M0P])[ktw ]+ -// (D27.f[DIR_0PP])[ktn ]+ (D27.f[DIR_0MM])[kbs ]+ -// (D27.f[DIR_0PM])[kbn ]+ (D27.f[DIR_0MP])[kts ]+ -// (D27.f[DIR_000])[kzero]+ -// (D27.f[DIR_PPP])[ktne]+ (D27.f[DIR_MMP])[ktsw]+ -// (D27.f[DIR_PMP])[ktse]+ (D27.f[DIR_MPP])[ktnw]+ -// (D27.f[DIR_PPM])[kbne]+ (D27.f[DIR_MMM])[kbsw]+ -// (D27.f[DIR_PMM])[kbse]+ (D27.f[DIR_MPM])[kbnw]; +// Conc[k] = (D27.f[dP00])[ke ]+ (D27.f[dM00])[kw ]+ +// (D27.f[d0P0])[kn ]+ (D27.f[d0M0])[ks ]+ +// (D27.f[d00P])[kt ]+ (D27.f[d00M])[kb ]+ +// (D27.f[dPP0])[kne ]+ (D27.f[dMM0])[ksw ]+ +// (D27.f[dPM0])[kse ]+ (D27.f[dMP0])[knw ]+ +// (D27.f[dP0P])[kte ]+ (D27.f[dM0M])[kbw ]+ +// (D27.f[dP0M])[kbe ]+ (D27.f[dM0P])[ktw ]+ +// (D27.f[d0PP])[ktn ]+ (D27.f[d0MM])[kbs ]+ +// (D27.f[d0PM])[kbn ]+ (D27.f[d0MP])[kts ]+ +// (D27.f[d000])[kzero]+ +// (D27.f[dPPP])[ktne]+ (D27.f[dMMP])[ktsw]+ +// (D27.f[dPMP])[ktse]+ (D27.f[dMPP])[ktnw]+ +// (D27.f[dPPM])[kbne]+ (D27.f[dMMM])[kbsw]+ +// (D27.f[dPMM])[kbse]+ (D27.f[dMPM])[kbnw]; // } // } // } @@ -588,63 +588,63 @@ __global__ void GetPlaneConc27(real* Conc, Distributions27 D27; if (isEvenTimestep==true) { - D27.f[DIR_P00] = &DD27[DIR_P00 * numberOfLBnodes]; - D27.f[DIR_M00] = &DD27[DIR_M00 * numberOfLBnodes]; - D27.f[DIR_0P0] = &DD27[DIR_0P0 * numberOfLBnodes]; - D27.f[DIR_0M0] = &DD27[DIR_0M0 * numberOfLBnodes]; - D27.f[DIR_00P] = &DD27[DIR_00P * numberOfLBnodes]; - D27.f[DIR_00M] = &DD27[DIR_00M * numberOfLBnodes]; - D27.f[DIR_PP0] = &DD27[DIR_PP0 * numberOfLBnodes]; - D27.f[DIR_MM0] = &DD27[DIR_MM0 * numberOfLBnodes]; - D27.f[DIR_PM0] = &DD27[DIR_PM0 * numberOfLBnodes]; - D27.f[DIR_MP0] = &DD27[DIR_MP0 * numberOfLBnodes]; - D27.f[DIR_P0P] = &DD27[DIR_P0P * numberOfLBnodes]; - D27.f[DIR_M0M] = &DD27[DIR_M0M * numberOfLBnodes]; - D27.f[DIR_P0M] = &DD27[DIR_P0M * numberOfLBnodes]; - D27.f[DIR_M0P] = &DD27[DIR_M0P * numberOfLBnodes]; - D27.f[DIR_0PP] = &DD27[DIR_0PP * numberOfLBnodes]; - D27.f[DIR_0MM] = &DD27[DIR_0MM * numberOfLBnodes]; - D27.f[DIR_0PM] = &DD27[DIR_0PM * numberOfLBnodes]; - D27.f[DIR_0MP] = &DD27[DIR_0MP * numberOfLBnodes]; - D27.f[DIR_000] = &DD27[DIR_000 * numberOfLBnodes]; - D27.f[DIR_PPP] = &DD27[DIR_PPP * numberOfLBnodes]; - D27.f[DIR_MMP] = &DD27[DIR_MMP * numberOfLBnodes]; - D27.f[DIR_PMP] = &DD27[DIR_PMP * numberOfLBnodes]; - D27.f[DIR_MPP] = &DD27[DIR_MPP * numberOfLBnodes]; - D27.f[DIR_PPM] = &DD27[DIR_PPM * numberOfLBnodes]; - D27.f[DIR_MMM] = &DD27[DIR_MMM * numberOfLBnodes]; - D27.f[DIR_PMM] = &DD27[DIR_PMM * numberOfLBnodes]; - D27.f[DIR_MPM] = &DD27[DIR_MPM * numberOfLBnodes]; + D27.f[dP00] = &DD27[dP00 * numberOfLBnodes]; + D27.f[dM00] = &DD27[dM00 * numberOfLBnodes]; + D27.f[d0P0] = &DD27[d0P0 * numberOfLBnodes]; + D27.f[d0M0] = &DD27[d0M0 * numberOfLBnodes]; + D27.f[d00P] = &DD27[d00P * numberOfLBnodes]; + D27.f[d00M] = &DD27[d00M * numberOfLBnodes]; + D27.f[dPP0] = &DD27[dPP0 * numberOfLBnodes]; + D27.f[dMM0] = &DD27[dMM0 * numberOfLBnodes]; + D27.f[dPM0] = &DD27[dPM0 * numberOfLBnodes]; + D27.f[dMP0] = &DD27[dMP0 * numberOfLBnodes]; + D27.f[dP0P] = &DD27[dP0P * numberOfLBnodes]; + D27.f[dM0M] = &DD27[dM0M * numberOfLBnodes]; + D27.f[dP0M] = &DD27[dP0M * numberOfLBnodes]; + D27.f[dM0P] = &DD27[dM0P * numberOfLBnodes]; + D27.f[d0PP] = &DD27[d0PP * numberOfLBnodes]; + D27.f[d0MM] = &DD27[d0MM * numberOfLBnodes]; + D27.f[d0PM] = &DD27[d0PM * numberOfLBnodes]; + D27.f[d0MP] = &DD27[d0MP * numberOfLBnodes]; + D27.f[d000] = &DD27[d000 * numberOfLBnodes]; + D27.f[dPPP] = &DD27[dPPP * numberOfLBnodes]; + D27.f[dMMP] = &DD27[dMMP * numberOfLBnodes]; + D27.f[dPMP] = &DD27[dPMP * numberOfLBnodes]; + D27.f[dMPP] = &DD27[dMPP * numberOfLBnodes]; + D27.f[dPPM] = &DD27[dPPM * numberOfLBnodes]; + D27.f[dMMM] = &DD27[dMMM * numberOfLBnodes]; + D27.f[dPMM] = &DD27[dPMM * numberOfLBnodes]; + D27.f[dMPM] = &DD27[dMPM * numberOfLBnodes]; } else { - D27.f[DIR_M00] = &DD27[DIR_P00 * numberOfLBnodes]; - D27.f[DIR_P00] = &DD27[DIR_M00 * numberOfLBnodes]; - D27.f[DIR_0M0] = &DD27[DIR_0P0 * numberOfLBnodes]; - D27.f[DIR_0P0] = &DD27[DIR_0M0 * numberOfLBnodes]; - D27.f[DIR_00M] = &DD27[DIR_00P * numberOfLBnodes]; - D27.f[DIR_00P] = &DD27[DIR_00M * numberOfLBnodes]; - D27.f[DIR_MM0] = &DD27[DIR_PP0 * numberOfLBnodes]; - D27.f[DIR_PP0] = &DD27[DIR_MM0 * numberOfLBnodes]; - D27.f[DIR_MP0] = &DD27[DIR_PM0 * numberOfLBnodes]; - D27.f[DIR_PM0] = &DD27[DIR_MP0 * numberOfLBnodes]; - D27.f[DIR_M0M] = &DD27[DIR_P0P * numberOfLBnodes]; - D27.f[DIR_P0P] = &DD27[DIR_M0M * numberOfLBnodes]; - D27.f[DIR_M0P] = &DD27[DIR_P0M * numberOfLBnodes]; - D27.f[DIR_P0M] = &DD27[DIR_M0P * numberOfLBnodes]; - D27.f[DIR_0MM] = &DD27[DIR_0PP * numberOfLBnodes]; - D27.f[DIR_0PP] = &DD27[DIR_0MM * numberOfLBnodes]; - D27.f[DIR_0MP] = &DD27[DIR_0PM * numberOfLBnodes]; - D27.f[DIR_0PM] = &DD27[DIR_0MP * numberOfLBnodes]; - D27.f[DIR_000] = &DD27[DIR_000 * numberOfLBnodes]; - D27.f[DIR_MMM] = &DD27[DIR_PPP * numberOfLBnodes]; - D27.f[DIR_PPM] = &DD27[DIR_MMP * numberOfLBnodes]; - D27.f[DIR_MPM] = &DD27[DIR_PMP * numberOfLBnodes]; - D27.f[DIR_PMM] = &DD27[DIR_MPP * numberOfLBnodes]; - D27.f[DIR_MMP] = &DD27[DIR_PPM * numberOfLBnodes]; - D27.f[DIR_PPP] = &DD27[DIR_MMM * numberOfLBnodes]; - D27.f[DIR_MPP] = &DD27[DIR_PMM * numberOfLBnodes]; - D27.f[DIR_PMP] = &DD27[DIR_MPM * numberOfLBnodes]; + D27.f[dM00] = &DD27[dP00 * numberOfLBnodes]; + D27.f[dP00] = &DD27[dM00 * numberOfLBnodes]; + D27.f[d0M0] = &DD27[d0P0 * numberOfLBnodes]; + D27.f[d0P0] = &DD27[d0M0 * numberOfLBnodes]; + D27.f[d00M] = &DD27[d00P * numberOfLBnodes]; + D27.f[d00P] = &DD27[d00M * numberOfLBnodes]; + D27.f[dMM0] = &DD27[dPP0 * numberOfLBnodes]; + D27.f[dPP0] = &DD27[dMM0 * numberOfLBnodes]; + D27.f[dMP0] = &DD27[dPM0 * numberOfLBnodes]; + D27.f[dPM0] = &DD27[dMP0 * numberOfLBnodes]; + D27.f[dM0M] = &DD27[dP0P * numberOfLBnodes]; + D27.f[dP0P] = &DD27[dM0M * numberOfLBnodes]; + D27.f[dM0P] = &DD27[dP0M * numberOfLBnodes]; + D27.f[dP0M] = &DD27[dM0P * numberOfLBnodes]; + D27.f[d0MM] = &DD27[d0PP * numberOfLBnodes]; + D27.f[d0PP] = &DD27[d0MM * numberOfLBnodes]; + D27.f[d0MP] = &DD27[d0PM * numberOfLBnodes]; + D27.f[d0PM] = &DD27[d0MP * numberOfLBnodes]; + D27.f[d000] = &DD27[d000 * numberOfLBnodes]; + D27.f[dMMM] = &DD27[dPPP * numberOfLBnodes]; + D27.f[dPPM] = &DD27[dMMP * numberOfLBnodes]; + D27.f[dMPM] = &DD27[dPMP * numberOfLBnodes]; + D27.f[dPMM] = &DD27[dMPP * numberOfLBnodes]; + D27.f[dMMP] = &DD27[dPPM * numberOfLBnodes]; + D27.f[dPPP] = &DD27[dMMM * numberOfLBnodes]; + D27.f[dMPP] = &DD27[dPMM * numberOfLBnodes]; + D27.f[dPMP] = &DD27[dMPM * numberOfLBnodes]; } //////////////////////////////////////////////////////////////////////////////// const unsigned x = threadIdx.x; // Globaler x-Index @@ -693,20 +693,20 @@ __global__ void GetPlaneConc27(real* Conc, if(geoD[k] == GEO_FLUID) { - Conc[k] = (D27.f[DIR_P00])[ke ]+ (D27.f[DIR_M00])[kw ]+ - (D27.f[DIR_0P0])[kn ]+ (D27.f[DIR_0M0])[ks ]+ - (D27.f[DIR_00P])[kt ]+ (D27.f[DIR_00M])[kb ]+ - (D27.f[DIR_PP0])[kne ]+ (D27.f[DIR_MM0])[ksw ]+ - (D27.f[DIR_PM0])[kse ]+ (D27.f[DIR_MP0])[knw ]+ - (D27.f[DIR_P0P])[kte ]+ (D27.f[DIR_M0M])[kbw ]+ - (D27.f[DIR_P0M])[kbe ]+ (D27.f[DIR_M0P])[ktw ]+ - (D27.f[DIR_0PP])[ktn ]+ (D27.f[DIR_0MM])[kbs ]+ - (D27.f[DIR_0PM])[kbn ]+ (D27.f[DIR_0MP])[kts ]+ - (D27.f[DIR_000])[kzero]+ - (D27.f[DIR_PPP])[ktne]+ (D27.f[DIR_MMP])[ktsw]+ - (D27.f[DIR_PMP])[ktse]+ (D27.f[DIR_MPP])[ktnw]+ - (D27.f[DIR_PPM])[kbne]+ (D27.f[DIR_MMM])[kbsw]+ - (D27.f[DIR_PMM])[kbse]+ (D27.f[DIR_MPM])[kbnw]; + Conc[k] = (D27.f[dP00])[ke ]+ (D27.f[dM00])[kw ]+ + (D27.f[d0P0])[kn ]+ (D27.f[d0M0])[ks ]+ + (D27.f[d00P])[kt ]+ (D27.f[d00M])[kb ]+ + (D27.f[dPP0])[kne ]+ (D27.f[dMM0])[ksw ]+ + (D27.f[dPM0])[kse ]+ (D27.f[dMP0])[knw ]+ + (D27.f[dP0P])[kte ]+ (D27.f[dM0M])[kbw ]+ + (D27.f[dP0M])[kbe ]+ (D27.f[dM0P])[ktw ]+ + (D27.f[d0PP])[ktn ]+ (D27.f[d0MM])[kbs ]+ + (D27.f[d0PM])[kbn ]+ (D27.f[d0MP])[kts ]+ + (D27.f[d000])[kzero]+ + (D27.f[dPPP])[ktne]+ (D27.f[dMMP])[ktsw]+ + (D27.f[dPMP])[ktse]+ (D27.f[dMPP])[ktnw]+ + (D27.f[dPPM])[kbne]+ (D27.f[dMMM])[kbsw]+ + (D27.f[dPMM])[kbse]+ (D27.f[dMPM])[kbnw]; } } } \ No newline at end of file diff --git a/src/gpu/VirtualFluids_GPU/GPU/CalcMac27.cu b/src/gpu/core/GPU/CalcMac27.cu similarity index 66% rename from src/gpu/VirtualFluids_GPU/GPU/CalcMac27.cu rename to src/gpu/core/GPU/CalcMac27.cu index 2014649790e49773c0427a716b0efc4d30007a3c..9c9502d504301052e1b6e5a78c737dcb185304a7 100644 --- a/src/gpu/VirtualFluids_GPU/GPU/CalcMac27.cu +++ b/src/gpu/core/GPU/CalcMac27.cu @@ -88,7 +88,7 @@ __global__ void LBCalcMac27( vf::gpu::ListIndices listIndices(k, neighborX, neighborY, neighborZ); real distribution[27]; - vf::gpu::read(distribution, dist, listIndices); + vf::gpu::getPreCollisionDistribution(distribution, dist, listIndices); rhoD[k] = vf::lbm::getDensity(distribution); vxD[k] = vf::lbm::getIncompressibleVelocityX1(distribution); @@ -171,70 +171,70 @@ __global__ void LBCalcMacSP27( if(geoD[nodeIndex] == GEO_FLUID) { rhoD[nodeIndex] = - (dist.f[DIR_P00])[ke ]+ (dist.f[DIR_M00])[kw ]+ - (dist.f[DIR_0P0])[kn ]+ (dist.f[DIR_0M0])[ks ]+ - (dist.f[DIR_00P])[kt ]+ (dist.f[DIR_00M])[kb ]+ - (dist.f[DIR_PP0])[kne ]+ (dist.f[DIR_MM0])[ksw ]+ - (dist.f[DIR_PM0])[kse ]+ (dist.f[DIR_MP0])[knw ]+ - (dist.f[DIR_P0P])[kte ]+ (dist.f[DIR_M0M])[kbw ]+ - (dist.f[DIR_P0M])[kbe ]+ (dist.f[DIR_M0P])[ktw ]+ - (dist.f[DIR_0PP])[ktn ]+ (dist.f[DIR_0MM])[kbs ]+ - (dist.f[DIR_0PM])[kbn ]+ (dist.f[DIR_0MP])[kts ]+ - (dist.f[DIR_000])[kzero]+ - (dist.f[DIR_PPP])[ktne]+ (dist.f[DIR_MMP])[ktsw]+ - (dist.f[DIR_PMP])[ktse]+ (dist.f[DIR_MPP])[ktnw]+ - (dist.f[DIR_PPM])[kbne]+ (dist.f[DIR_MMM])[kbsw]+ - (dist.f[DIR_PMM])[kbse]+ (dist.f[DIR_MPM])[kbnw]; + (dist.f[dP00])[ke ]+ (dist.f[dM00])[kw ]+ + (dist.f[d0P0])[kn ]+ (dist.f[d0M0])[ks ]+ + (dist.f[d00P])[kt ]+ (dist.f[d00M])[kb ]+ + (dist.f[dPP0])[kne ]+ (dist.f[dMM0])[ksw ]+ + (dist.f[dPM0])[kse ]+ (dist.f[dMP0])[knw ]+ + (dist.f[dP0P])[kte ]+ (dist.f[dM0M])[kbw ]+ + (dist.f[dP0M])[kbe ]+ (dist.f[dM0P])[ktw ]+ + (dist.f[d0PP])[ktn ]+ (dist.f[d0MM])[kbs ]+ + (dist.f[d0PM])[kbn ]+ (dist.f[d0MP])[kts ]+ + (dist.f[d000])[kzero]+ + (dist.f[dPPP])[ktne]+ (dist.f[dMMP])[ktsw]+ + (dist.f[dPMP])[ktse]+ (dist.f[dMPP])[ktnw]+ + (dist.f[dPPM])[kbne]+ (dist.f[dMMM])[kbsw]+ + (dist.f[dPMM])[kbse]+ (dist.f[dMPM])[kbnw]; vxD[nodeIndex] = - (dist.f[DIR_P00])[ke ]- (dist.f[DIR_M00])[kw ]+ - (dist.f[DIR_PP0])[kne ]- (dist.f[DIR_MM0])[ksw ]+ - (dist.f[DIR_PM0])[kse ]- (dist.f[DIR_MP0])[knw ]+ - (dist.f[DIR_P0P])[kte ]- (dist.f[DIR_M0M])[kbw ]+ - (dist.f[DIR_P0M])[kbe ]- (dist.f[DIR_M0P])[ktw ]+ - (dist.f[DIR_PPP])[ktne]- (dist.f[DIR_MMP])[ktsw]+ - (dist.f[DIR_PMP])[ktse]- (dist.f[DIR_MPP])[ktnw]+ - (dist.f[DIR_PPM])[kbne]- (dist.f[DIR_MMM])[kbsw]+ - (dist.f[DIR_PMM])[kbse]- (dist.f[DIR_MPM])[kbnw]; + (dist.f[dP00])[ke ]- (dist.f[dM00])[kw ]+ + (dist.f[dPP0])[kne ]- (dist.f[dMM0])[ksw ]+ + (dist.f[dPM0])[kse ]- (dist.f[dMP0])[knw ]+ + (dist.f[dP0P])[kte ]- (dist.f[dM0M])[kbw ]+ + (dist.f[dP0M])[kbe ]- (dist.f[dM0P])[ktw ]+ + (dist.f[dPPP])[ktne]- (dist.f[dMMP])[ktsw]+ + (dist.f[dPMP])[ktse]- (dist.f[dMPP])[ktnw]+ + (dist.f[dPPM])[kbne]- (dist.f[dMMM])[kbsw]+ + (dist.f[dPMM])[kbse]- (dist.f[dMPM])[kbnw]; vyD[nodeIndex] = - (dist.f[DIR_0P0])[kn ]- (dist.f[DIR_0M0])[ks ]+ - (dist.f[DIR_PP0])[kne ]- (dist.f[DIR_MM0])[ksw ]- - (dist.f[DIR_PM0])[kse ]+ (dist.f[DIR_MP0])[knw ]+ - (dist.f[DIR_0PP])[ktn ]- (dist.f[DIR_0MM])[kbs ]+ - (dist.f[DIR_0PM])[kbn ]- (dist.f[DIR_0MP])[kts ]+ - (dist.f[DIR_PPP])[ktne]- (dist.f[DIR_MMP])[ktsw]- - (dist.f[DIR_PMP])[ktse]+ (dist.f[DIR_MPP])[ktnw]+ - (dist.f[DIR_PPM])[kbne]- (dist.f[DIR_MMM])[kbsw]- - (dist.f[DIR_PMM])[kbse]+ (dist.f[DIR_MPM])[kbnw]; + (dist.f[d0P0])[kn ]- (dist.f[d0M0])[ks ]+ + (dist.f[dPP0])[kne ]- (dist.f[dMM0])[ksw ]- + (dist.f[dPM0])[kse ]+ (dist.f[dMP0])[knw ]+ + (dist.f[d0PP])[ktn ]- (dist.f[d0MM])[kbs ]+ + (dist.f[d0PM])[kbn ]- (dist.f[d0MP])[kts ]+ + (dist.f[dPPP])[ktne]- (dist.f[dMMP])[ktsw]- + (dist.f[dPMP])[ktse]+ (dist.f[dMPP])[ktnw]+ + (dist.f[dPPM])[kbne]- (dist.f[dMMM])[kbsw]- + (dist.f[dPMM])[kbse]+ (dist.f[dMPM])[kbnw]; vzD[nodeIndex] = - (dist.f[DIR_00P])[kt ]- (dist.f[DIR_00M])[kb ]+ - (dist.f[DIR_P0P])[kte ]- (dist.f[DIR_M0M])[kbw ]- - (dist.f[DIR_P0M])[kbe ]+ (dist.f[DIR_M0P])[ktw ]+ - (dist.f[DIR_0PP])[ktn ]- (dist.f[DIR_0MM])[kbs ]- - (dist.f[DIR_0PM])[kbn ]+ (dist.f[DIR_0MP])[kts ]+ - (dist.f[DIR_PPP])[ktne]+ (dist.f[DIR_MMP])[ktsw]+ - (dist.f[DIR_PMP])[ktse]+ (dist.f[DIR_MPP])[ktnw]- - (dist.f[DIR_PPM])[kbne]- (dist.f[DIR_MMM])[kbsw]- - (dist.f[DIR_PMM])[kbse]- (dist.f[DIR_MPM])[kbnw]; + (dist.f[d00P])[kt ]- (dist.f[d00M])[kb ]+ + (dist.f[dP0P])[kte ]- (dist.f[dM0M])[kbw ]- + (dist.f[dP0M])[kbe ]+ (dist.f[dM0P])[ktw ]+ + (dist.f[d0PP])[ktn ]- (dist.f[d0MM])[kbs ]- + (dist.f[d0PM])[kbn ]+ (dist.f[d0MP])[kts ]+ + (dist.f[dPPP])[ktne]+ (dist.f[dMMP])[ktsw]+ + (dist.f[dPMP])[ktse]+ (dist.f[dMPP])[ktnw]- + (dist.f[dPPM])[kbne]- (dist.f[dMMM])[kbsw]- + (dist.f[dPMM])[kbse]- (dist.f[dMPM])[kbnw]; pressD[nodeIndex] = - ((dist.f[DIR_P00])[ke ]+ (dist.f[DIR_M00])[kw ]+ - (dist.f[DIR_0P0])[kn ]+ (dist.f[DIR_0M0])[ks ]+ - (dist.f[DIR_00P])[kt ]+ (dist.f[DIR_00M])[kb ]+ + ((dist.f[dP00])[ke ]+ (dist.f[dM00])[kw ]+ + (dist.f[d0P0])[kn ]+ (dist.f[d0M0])[ks ]+ + (dist.f[d00P])[kt ]+ (dist.f[d00M])[kb ]+ 2.f*( - (dist.f[DIR_PP0])[kne ]+ (dist.f[DIR_MM0])[ksw ]+ - (dist.f[DIR_PM0])[kse ]+ (dist.f[DIR_MP0])[knw ]+ - (dist.f[DIR_P0P])[kte ]+ (dist.f[DIR_M0M])[kbw ]+ - (dist.f[DIR_P0M])[kbe ]+ (dist.f[DIR_M0P])[ktw ]+ - (dist.f[DIR_0PP])[ktn ]+ (dist.f[DIR_0MM])[kbs ]+ - (dist.f[DIR_0PM])[kbn ]+ (dist.f[DIR_0MP])[kts ])+ + (dist.f[dPP0])[kne ]+ (dist.f[dMM0])[ksw ]+ + (dist.f[dPM0])[kse ]+ (dist.f[dMP0])[knw ]+ + (dist.f[dP0P])[kte ]+ (dist.f[dM0M])[kbw ]+ + (dist.f[dP0M])[kbe ]+ (dist.f[dM0P])[ktw ]+ + (dist.f[d0PP])[ktn ]+ (dist.f[d0MM])[kbs ]+ + (dist.f[d0PM])[kbn ]+ (dist.f[d0MP])[kts ])+ 3.f*( - (dist.f[DIR_PPP])[ktne]+ (dist.f[DIR_MMP])[ktsw]+ - (dist.f[DIR_PMP])[ktse]+ (dist.f[DIR_MPP])[ktnw]+ - (dist.f[DIR_PPM])[kbne]+ (dist.f[DIR_MMM])[kbsw]+ - (dist.f[DIR_PMM])[kbse]+ (dist.f[DIR_MPM])[kbnw])- + (dist.f[dPPP])[ktne]+ (dist.f[dMMP])[ktsw]+ + (dist.f[dPMP])[ktse]+ (dist.f[dMPP])[ktnw]+ + (dist.f[dPPM])[kbne]+ (dist.f[dMMM])[kbsw]+ + (dist.f[dPMM])[kbse]+ (dist.f[dMPM])[kbnw])- rhoD[nodeIndex]-(vxD[nodeIndex] * vxD[nodeIndex] + vyD[nodeIndex] * vyD[nodeIndex] + vzD[nodeIndex] * vzD[nodeIndex]) * (c1o1+c0o1*rhoD[nodeIndex])) * c1o2+rhoD[nodeIndex]; // times zero for incompressible case //achtung op hart gesetzt Annahme op = 1 ; ^^^^(1.0/op-0.5)=0.5 } @@ -465,74 +465,74 @@ __global__ void LBCalcMedSP27( if(geoD[nodeIndex] == GEO_FLUID) { rhoD[nodeIndex] = - (dist.f[DIR_P00])[ke ]+ (dist.f[DIR_M00])[kw ]+ - (dist.f[DIR_0P0])[kn ]+ (dist.f[DIR_0M0])[ks ]+ - (dist.f[DIR_00P])[kt ]+ (dist.f[DIR_00M])[kb ]+ - (dist.f[DIR_PP0])[kne ]+ (dist.f[DIR_MM0])[ksw ]+ - (dist.f[DIR_PM0])[kse ]+ (dist.f[DIR_MP0])[knw ]+ - (dist.f[DIR_P0P])[kte ]+ (dist.f[DIR_M0M])[kbw ]+ - (dist.f[DIR_P0M])[kbe ]+ (dist.f[DIR_M0P])[ktw ]+ - (dist.f[DIR_0PP])[ktn ]+ (dist.f[DIR_0MM])[kbs ]+ - (dist.f[DIR_0PM])[kbn ]+ (dist.f[DIR_0MP])[kts ]+ - (dist.f[DIR_000])[kzero]+ - (dist.f[DIR_PPP])[ktne]+ (dist.f[DIR_MMP])[ktsw]+ - (dist.f[DIR_PMP])[ktse]+ (dist.f[DIR_MPP])[ktnw]+ - (dist.f[DIR_PPM])[kbne]+ (dist.f[DIR_MMM])[kbsw]+ - (dist.f[DIR_PMM])[kbse]+ (dist.f[DIR_MPM])[kbnw]+ + (dist.f[dP00])[ke ]+ (dist.f[dM00])[kw ]+ + (dist.f[d0P0])[kn ]+ (dist.f[d0M0])[ks ]+ + (dist.f[d00P])[kt ]+ (dist.f[d00M])[kb ]+ + (dist.f[dPP0])[kne ]+ (dist.f[dMM0])[ksw ]+ + (dist.f[dPM0])[kse ]+ (dist.f[dMP0])[knw ]+ + (dist.f[dP0P])[kte ]+ (dist.f[dM0M])[kbw ]+ + (dist.f[dP0M])[kbe ]+ (dist.f[dM0P])[ktw ]+ + (dist.f[d0PP])[ktn ]+ (dist.f[d0MM])[kbs ]+ + (dist.f[d0PM])[kbn ]+ (dist.f[d0MP])[kts ]+ + (dist.f[d000])[kzero]+ + (dist.f[dPPP])[ktne]+ (dist.f[dMMP])[ktsw]+ + (dist.f[dPMP])[ktse]+ (dist.f[dMPP])[ktnw]+ + (dist.f[dPPM])[kbne]+ (dist.f[dMMM])[kbsw]+ + (dist.f[dPMM])[kbse]+ (dist.f[dMPM])[kbnw]+ RHO; vxD[nodeIndex] = - (dist.f[DIR_P00])[ke ]- (dist.f[DIR_M00])[kw ]+ - (dist.f[DIR_PP0])[kne ]- (dist.f[DIR_MM0])[ksw ]+ - (dist.f[DIR_PM0])[kse ]- (dist.f[DIR_MP0])[knw ]+ - (dist.f[DIR_P0P])[kte ]- (dist.f[DIR_M0M])[kbw ]+ - (dist.f[DIR_P0M])[kbe ]- (dist.f[DIR_M0P])[ktw ]+ - (dist.f[DIR_PPP])[ktne]- (dist.f[DIR_MMP])[ktsw]+ - (dist.f[DIR_PMP])[ktse]- (dist.f[DIR_MPP])[ktnw]+ - (dist.f[DIR_PPM])[kbne]- (dist.f[DIR_MMM])[kbsw]+ - (dist.f[DIR_PMM])[kbse]- (dist.f[DIR_MPM])[kbnw]+ + (dist.f[dP00])[ke ]- (dist.f[dM00])[kw ]+ + (dist.f[dPP0])[kne ]- (dist.f[dMM0])[ksw ]+ + (dist.f[dPM0])[kse ]- (dist.f[dMP0])[knw ]+ + (dist.f[dP0P])[kte ]- (dist.f[dM0M])[kbw ]+ + (dist.f[dP0M])[kbe ]- (dist.f[dM0P])[ktw ]+ + (dist.f[dPPP])[ktne]- (dist.f[dMMP])[ktsw]+ + (dist.f[dPMP])[ktse]- (dist.f[dMPP])[ktnw]+ + (dist.f[dPPM])[kbne]- (dist.f[dMMM])[kbsw]+ + (dist.f[dPMM])[kbse]- (dist.f[dMPM])[kbnw]+ VX; vyD[nodeIndex] = - (dist.f[DIR_0P0])[kn ]- (dist.f[DIR_0M0])[ks ]+ - (dist.f[DIR_PP0])[kne ]- (dist.f[DIR_MM0])[ksw ]- - (dist.f[DIR_PM0])[kse ]+ (dist.f[DIR_MP0])[knw ]+ - (dist.f[DIR_0PP])[ktn ]- (dist.f[DIR_0MM])[kbs ]+ - (dist.f[DIR_0PM])[kbn ]- (dist.f[DIR_0MP])[kts ]+ - (dist.f[DIR_PPP])[ktne]- (dist.f[DIR_MMP])[ktsw]- - (dist.f[DIR_PMP])[ktse]+ (dist.f[DIR_MPP])[ktnw]+ - (dist.f[DIR_PPM])[kbne]- (dist.f[DIR_MMM])[kbsw]- - (dist.f[DIR_PMM])[kbse]+ (dist.f[DIR_MPM])[kbnw]+ + (dist.f[d0P0])[kn ]- (dist.f[d0M0])[ks ]+ + (dist.f[dPP0])[kne ]- (dist.f[dMM0])[ksw ]- + (dist.f[dPM0])[kse ]+ (dist.f[dMP0])[knw ]+ + (dist.f[d0PP])[ktn ]- (dist.f[d0MM])[kbs ]+ + (dist.f[d0PM])[kbn ]- (dist.f[d0MP])[kts ]+ + (dist.f[dPPP])[ktne]- (dist.f[dMMP])[ktsw]- + (dist.f[dPMP])[ktse]+ (dist.f[dMPP])[ktnw]+ + (dist.f[dPPM])[kbne]- (dist.f[dMMM])[kbsw]- + (dist.f[dPMM])[kbse]+ (dist.f[dMPM])[kbnw]+ VY; vzD[nodeIndex] = - (dist.f[DIR_00P])[kt ]- (dist.f[DIR_00M])[kb ]+ - (dist.f[DIR_P0P])[kte ]- (dist.f[DIR_M0M])[kbw ]- - (dist.f[DIR_P0M])[kbe ]+ (dist.f[DIR_M0P])[ktw ]+ - (dist.f[DIR_0PP])[ktn ]- (dist.f[DIR_0MM])[kbs ]- - (dist.f[DIR_0PM])[kbn ]+ (dist.f[DIR_0MP])[kts ]+ - (dist.f[DIR_PPP])[ktne]+ (dist.f[DIR_MMP])[ktsw]+ - (dist.f[DIR_PMP])[ktse]+ (dist.f[DIR_MPP])[ktnw]- - (dist.f[DIR_PPM])[kbne]- (dist.f[DIR_MMM])[kbsw]- - (dist.f[DIR_PMM])[kbse]- (dist.f[DIR_MPM])[kbnw]+ + (dist.f[d00P])[kt ]- (dist.f[d00M])[kb ]+ + (dist.f[dP0P])[kte ]- (dist.f[dM0M])[kbw ]- + (dist.f[dP0M])[kbe ]+ (dist.f[dM0P])[ktw ]+ + (dist.f[d0PP])[ktn ]- (dist.f[d0MM])[kbs ]- + (dist.f[d0PM])[kbn ]+ (dist.f[d0MP])[kts ]+ + (dist.f[dPPP])[ktne]+ (dist.f[dMMP])[ktsw]+ + (dist.f[dPMP])[ktse]+ (dist.f[dMPP])[ktnw]- + (dist.f[dPPM])[kbne]- (dist.f[dMMM])[kbsw]- + (dist.f[dPMM])[kbse]- (dist.f[dMPM])[kbnw]+ VZ; pressD[nodeIndex] = - ((dist.f[DIR_P00])[ke ]+ (dist.f[DIR_M00])[kw ]+ - (dist.f[DIR_0P0])[kn ]+ (dist.f[DIR_0M0])[ks ]+ - (dist.f[DIR_00P])[kt ]+ (dist.f[DIR_00M])[kb ]+ + ((dist.f[dP00])[ke ]+ (dist.f[dM00])[kw ]+ + (dist.f[d0P0])[kn ]+ (dist.f[d0M0])[ks ]+ + (dist.f[d00P])[kt ]+ (dist.f[d00M])[kb ]+ c2o1*( - (dist.f[DIR_PP0])[kne ]+ (dist.f[DIR_MM0])[ksw ]+ - (dist.f[DIR_PM0])[kse ]+ (dist.f[DIR_MP0])[knw ]+ - (dist.f[DIR_P0P])[kte ]+ (dist.f[DIR_M0M])[kbw ]+ - (dist.f[DIR_P0M])[kbe ]+ (dist.f[DIR_M0P])[ktw ]+ - (dist.f[DIR_0PP])[ktn ]+ (dist.f[DIR_0MM])[kbs ]+ - (dist.f[DIR_0PM])[kbn ]+ (dist.f[DIR_0MP])[kts ])+ + (dist.f[dPP0])[kne ]+ (dist.f[dMM0])[ksw ]+ + (dist.f[dPM0])[kse ]+ (dist.f[dMP0])[knw ]+ + (dist.f[dP0P])[kte ]+ (dist.f[dM0M])[kbw ]+ + (dist.f[dP0M])[kbe ]+ (dist.f[dM0P])[ktw ]+ + (dist.f[d0PP])[ktn ]+ (dist.f[d0MM])[kbs ]+ + (dist.f[d0PM])[kbn ]+ (dist.f[d0MP])[kts ])+ c3o1*( - (dist.f[DIR_PPP])[ktne]+ (dist.f[DIR_MMP])[ktsw]+ - (dist.f[DIR_PMP])[ktse]+ (dist.f[DIR_MPP])[ktnw]+ - (dist.f[DIR_PPM])[kbne]+ (dist.f[DIR_MMM])[kbsw]+ - (dist.f[DIR_PMM])[kbse]+ (dist.f[DIR_MPM])[kbnw])- + (dist.f[dPPP])[ktne]+ (dist.f[dMMP])[ktsw]+ + (dist.f[dPMP])[ktse]+ (dist.f[dMPP])[ktnw]+ + (dist.f[dPPM])[kbne]+ (dist.f[dMMM])[kbsw]+ + (dist.f[dPMM])[kbse]+ (dist.f[dMPM])[kbnw])- rhoD[nodeIndex]-(vxD[nodeIndex] * vxD[nodeIndex] + vyD[nodeIndex] * vyD[nodeIndex] + vzD[nodeIndex] * vzD[nodeIndex]) * (c1o1+rhoD[nodeIndex])) * c1o2+rhoD[nodeIndex]+ PRESS; //achtung op hart gesetzt Annahme op = 1 ; ^^^^(1.0/op-0.5)=0.5 @@ -637,33 +637,33 @@ __global__ void LBCalcMedCompSP27( if(geoD[nodeIndex] == GEO_FLUID) { - real mfcbb = (dist.f[DIR_P00])[nodeIndex];//[ke ]; - real mfabb = (dist.f[DIR_M00])[kw];//[kw ]; - real mfbcb = (dist.f[DIR_0P0])[nodeIndex];//[kn ]; - real mfbab = (dist.f[DIR_0M0])[ks];//[ks ]; - real mfbbc = (dist.f[DIR_00P])[nodeIndex];//[kt ]; - real mfbba = (dist.f[DIR_00M])[kb];//[kb ]; - real mfccb = (dist.f[DIR_PP0])[nodeIndex];//[kne ]; - real mfaab = (dist.f[DIR_MM0])[ksw];//[ksw ]; - real mfcab = (dist.f[DIR_PM0])[ks];//[kse ]; - real mfacb = (dist.f[DIR_MP0])[kw];//[knw ]; - real mfcbc = (dist.f[DIR_P0P])[nodeIndex];//[kte ]; - real mfaba = (dist.f[DIR_M0M])[kbw];//[kbw ]; - real mfcba = (dist.f[DIR_P0M])[kb];//[kbe ]; - real mfabc = (dist.f[DIR_M0P])[kw];//[ktw ]; - real mfbcc = (dist.f[DIR_0PP])[nodeIndex];//[ktn ]; - real mfbaa = (dist.f[DIR_0MM])[kbs];//[kbs ]; - real mfbca = (dist.f[DIR_0PM])[kb];//[kbn ]; - real mfbac = (dist.f[DIR_0MP])[ks];//[kts ]; - real mfbbb = (dist.f[DIR_000])[nodeIndex];//[kzero]; - real mfccc = (dist.f[DIR_PPP])[nodeIndex];//[ktne ]; - real mfaac = (dist.f[DIR_MMP])[ksw];//[ktsw ]; - real mfcac = (dist.f[DIR_PMP])[ks];//[ktse ]; - real mfacc = (dist.f[DIR_MPP])[kw];//[ktnw ]; - real mfcca = (dist.f[DIR_PPM])[kb];//[kbne ]; - real mfaaa = (dist.f[DIR_MMM])[kbsw];//[kbsw ]; - real mfcaa = (dist.f[DIR_PMM])[kbs];//[kbse ]; - real mfaca = (dist.f[DIR_MPM])[kbw];//[kbnw ]; + real mfcbb = (dist.f[dP00])[nodeIndex];//[ke ]; + real mfabb = (dist.f[dM00])[kw];//[kw ]; + real mfbcb = (dist.f[d0P0])[nodeIndex];//[kn ]; + real mfbab = (dist.f[d0M0])[ks];//[ks ]; + real mfbbc = (dist.f[d00P])[nodeIndex];//[kt ]; + real mfbba = (dist.f[d00M])[kb];//[kb ]; + real mfccb = (dist.f[dPP0])[nodeIndex];//[kne ]; + real mfaab = (dist.f[dMM0])[ksw];//[ksw ]; + real mfcab = (dist.f[dPM0])[ks];//[kse ]; + real mfacb = (dist.f[dMP0])[kw];//[knw ]; + real mfcbc = (dist.f[dP0P])[nodeIndex];//[kte ]; + real mfaba = (dist.f[dM0M])[kbw];//[kbw ]; + real mfcba = (dist.f[dP0M])[kb];//[kbe ]; + real mfabc = (dist.f[dM0P])[kw];//[ktw ]; + real mfbcc = (dist.f[d0PP])[nodeIndex];//[ktn ]; + real mfbaa = (dist.f[d0MM])[kbs];//[kbs ]; + real mfbca = (dist.f[d0PM])[kb];//[kbn ]; + real mfbac = (dist.f[d0MP])[ks];//[kts ]; + real mfbbb = (dist.f[d000])[nodeIndex];//[kzero]; + real mfccc = (dist.f[dPPP])[nodeIndex];//[ktne ]; + real mfaac = (dist.f[dMMP])[ksw];//[ktsw ]; + real mfcac = (dist.f[dPMP])[ks];//[ktse ]; + real mfacc = (dist.f[dMPP])[kw];//[ktnw ]; + real mfcca = (dist.f[dPPM])[kb];//[kbne ]; + real mfaaa = (dist.f[dMMM])[kbsw];//[kbsw ]; + real mfcaa = (dist.f[dPMM])[kbs];//[kbse ]; + real mfaca = (dist.f[dMPM])[kbw];//[kbnw ]; //////////////////////////////////////////////////////////////////////////////////// real drho = ((((mfccc + mfaaa) + (mfaca + mfcac)) + ((mfacc + mfcaa) + (mfaac + mfcca))) + @@ -688,21 +688,21 @@ __global__ void LBCalcMedCompSP27( (mfbbc - mfbba)) / rho) + VZ; pressD[nodeIndex] = - ((dist.f[DIR_P00])[ke ]+ (dist.f[DIR_M00])[kw ]+ - (dist.f[DIR_0P0])[kn ]+ (dist.f[DIR_0M0])[ks ]+ - (dist.f[DIR_00P])[kt ]+ (dist.f[DIR_00M])[kb ]+ + ((dist.f[dP00])[ke ]+ (dist.f[dM00])[kw ]+ + (dist.f[d0P0])[kn ]+ (dist.f[d0M0])[ks ]+ + (dist.f[d00P])[kt ]+ (dist.f[d00M])[kb ]+ c2o1*( - (dist.f[DIR_PP0])[kne ]+ (dist.f[DIR_MM0])[ksw ]+ - (dist.f[DIR_PM0])[kse ]+ (dist.f[DIR_MP0])[knw ]+ - (dist.f[DIR_P0P])[kte ]+ (dist.f[DIR_M0M])[kbw ]+ - (dist.f[DIR_P0M])[kbe ]+ (dist.f[DIR_M0P])[ktw ]+ - (dist.f[DIR_0PP])[ktn ]+ (dist.f[DIR_0MM])[kbs ]+ - (dist.f[DIR_0PM])[kbn ]+ (dist.f[DIR_0MP])[kts ])+ + (dist.f[dPP0])[kne ]+ (dist.f[dMM0])[ksw ]+ + (dist.f[dPM0])[kse ]+ (dist.f[dMP0])[knw ]+ + (dist.f[dP0P])[kte ]+ (dist.f[dM0M])[kbw ]+ + (dist.f[dP0M])[kbe ]+ (dist.f[dM0P])[ktw ]+ + (dist.f[d0PP])[ktn ]+ (dist.f[d0MM])[kbs ]+ + (dist.f[d0PM])[kbn ]+ (dist.f[d0MP])[kts ])+ c3o1*( - (dist.f[DIR_PPP])[ktne]+ (dist.f[DIR_MMP])[ktsw]+ - (dist.f[DIR_PMP])[ktse]+ (dist.f[DIR_MPP])[ktnw]+ - (dist.f[DIR_PPM])[kbne]+ (dist.f[DIR_MMM])[kbsw]+ - (dist.f[DIR_PMM])[kbse]+ (dist.f[DIR_MPM])[kbnw])- + (dist.f[dPPP])[ktne]+ (dist.f[dMMP])[ktsw]+ + (dist.f[dPMP])[ktse]+ (dist.f[dMPP])[ktnw]+ + (dist.f[dPPM])[kbne]+ (dist.f[dMMM])[kbsw]+ + (dist.f[dPMM])[kbse]+ (dist.f[dMPM])[kbnw])- rhoD[nodeIndex]-(vxD[nodeIndex] * vxD[nodeIndex] + vyD[nodeIndex] * vyD[nodeIndex] + vzD[nodeIndex] * vzD[nodeIndex]) * (c1o1+rhoD[nodeIndex])) * c1o2+rhoD[nodeIndex]+ PRESS; //achtung op hart gesetzt Annahme op = 1 ; ^^^^(1.0/op-0.5)=0.5 @@ -812,33 +812,33 @@ __global__ void LBCalcMedCompAD27( if (geoD[nodeIndex] == GEO_FLUID) { - real mfcbb = (dist.f[DIR_P00])[nodeIndex];//[ke ]; - real mfabb = (dist.f[DIR_M00])[kw];//[kw ]; - real mfbcb = (dist.f[DIR_0P0])[nodeIndex];//[kn ]; - real mfbab = (dist.f[DIR_0M0])[ks];//[ks ]; - real mfbbc = (dist.f[DIR_00P])[nodeIndex];//[kt ]; - real mfbba = (dist.f[DIR_00M])[kb];//[kb ]; - real mfccb = (dist.f[DIR_PP0])[nodeIndex];//[kne ]; - real mfaab = (dist.f[DIR_MM0])[ksw];//[ksw ]; - real mfcab = (dist.f[DIR_PM0])[ks];//[kse ]; - real mfacb = (dist.f[DIR_MP0])[kw];//[knw ]; - real mfcbc = (dist.f[DIR_P0P])[nodeIndex];//[kte ]; - real mfaba = (dist.f[DIR_M0M])[kbw];//[kbw ]; - real mfcba = (dist.f[DIR_P0M])[kb];//[kbe ]; - real mfabc = (dist.f[DIR_M0P])[kw];//[ktw ]; - real mfbcc = (dist.f[DIR_0PP])[nodeIndex];//[ktn ]; - real mfbaa = (dist.f[DIR_0MM])[kbs];//[kbs ]; - real mfbca = (dist.f[DIR_0PM])[kb];//[kbn ]; - real mfbac = (dist.f[DIR_0MP])[ks];//[kts ]; - real mfbbb = (dist.f[DIR_000])[nodeIndex];//[kzero]; - real mfccc = (dist.f[DIR_PPP])[nodeIndex];//[ktne ]; - real mfaac = (dist.f[DIR_MMP])[ksw];//[ktsw ]; - real mfcac = (dist.f[DIR_PMP])[ks];//[ktse ]; - real mfacc = (dist.f[DIR_MPP])[kw];//[ktnw ]; - real mfcca = (dist.f[DIR_PPM])[kb];//[kbne ]; - real mfaaa = (dist.f[DIR_MMM])[kbsw];//[kbsw ]; - real mfcaa = (dist.f[DIR_PMM])[kbs];//[kbse ]; - real mfaca = (dist.f[DIR_MPM])[kbw];//[kbnw ]; + real mfcbb = (dist.f[dP00])[nodeIndex];//[ke ]; + real mfabb = (dist.f[dM00])[kw];//[kw ]; + real mfbcb = (dist.f[d0P0])[nodeIndex];//[kn ]; + real mfbab = (dist.f[d0M0])[ks];//[ks ]; + real mfbbc = (dist.f[d00P])[nodeIndex];//[kt ]; + real mfbba = (dist.f[d00M])[kb];//[kb ]; + real mfccb = (dist.f[dPP0])[nodeIndex];//[kne ]; + real mfaab = (dist.f[dMM0])[ksw];//[ksw ]; + real mfcab = (dist.f[dPM0])[ks];//[kse ]; + real mfacb = (dist.f[dMP0])[kw];//[knw ]; + real mfcbc = (dist.f[dP0P])[nodeIndex];//[kte ]; + real mfaba = (dist.f[dM0M])[kbw];//[kbw ]; + real mfcba = (dist.f[dP0M])[kb];//[kbe ]; + real mfabc = (dist.f[dM0P])[kw];//[ktw ]; + real mfbcc = (dist.f[d0PP])[nodeIndex];//[ktn ]; + real mfbaa = (dist.f[d0MM])[kbs];//[kbs ]; + real mfbca = (dist.f[d0PM])[kb];//[kbn ]; + real mfbac = (dist.f[d0MP])[ks];//[kts ]; + real mfbbb = (dist.f[d000])[nodeIndex];//[kzero]; + real mfccc = (dist.f[dPPP])[nodeIndex];//[ktne ]; + real mfaac = (dist.f[dMMP])[ksw];//[ktsw ]; + real mfcac = (dist.f[dPMP])[ks];//[ktse ]; + real mfacc = (dist.f[dMPP])[kw];//[ktnw ]; + real mfcca = (dist.f[dPPM])[kb];//[kbne ]; + real mfaaa = (dist.f[dMMM])[kbsw];//[kbsw ]; + real mfcaa = (dist.f[dPMM])[kbs];//[kbse ]; + real mfaca = (dist.f[dMPM])[kbw];//[kbnw ]; //////////////////////////////////////////////////////////////////////////////////// real drho = ((((mfccc + mfaaa) + (mfaca + mfcac)) + ((mfacc + mfcaa) + (mfaac + mfcca))) + @@ -865,52 +865,52 @@ __global__ void LBCalcMedCompAD27( (mfbbc - mfbba)) / rho) + VZ; pressD[nodeIndex] = - ((dist.f[DIR_P00])[ke] + (dist.f[DIR_M00])[kw] + - (dist.f[DIR_0P0])[kn] + (dist.f[DIR_0M0])[ks] + - (dist.f[DIR_00P])[kt] + (dist.f[DIR_00M])[kb] + + ((dist.f[dP00])[ke] + (dist.f[dM00])[kw] + + (dist.f[d0P0])[kn] + (dist.f[d0M0])[ks] + + (dist.f[d00P])[kt] + (dist.f[d00M])[kb] + c2o1*( - (dist.f[DIR_PP0])[kne] + (dist.f[DIR_MM0])[ksw] + - (dist.f[DIR_PM0])[kse] + (dist.f[DIR_MP0])[knw] + - (dist.f[DIR_P0P])[kte] + (dist.f[DIR_M0M])[kbw] + - (dist.f[DIR_P0M])[kbe] + (dist.f[DIR_M0P])[ktw] + - (dist.f[DIR_0PP])[ktn] + (dist.f[DIR_0MM])[kbs] + - (dist.f[DIR_0PM])[kbn] + (dist.f[DIR_0MP])[kts]) + + (dist.f[dPP0])[kne] + (dist.f[dMM0])[ksw] + + (dist.f[dPM0])[kse] + (dist.f[dMP0])[knw] + + (dist.f[dP0P])[kte] + (dist.f[dM0M])[kbw] + + (dist.f[dP0M])[kbe] + (dist.f[dM0P])[ktw] + + (dist.f[d0PP])[ktn] + (dist.f[d0MM])[kbs] + + (dist.f[d0PM])[kbn] + (dist.f[d0MP])[kts]) + c3o1*( - (dist.f[DIR_PPP])[ktne] + (dist.f[DIR_MMP])[ktsw] + - (dist.f[DIR_PMP])[ktse] + (dist.f[DIR_MPP])[ktnw] + - (dist.f[DIR_PPM])[kbne] + (dist.f[DIR_MMM])[kbsw] + - (dist.f[DIR_PMM])[kbse] + (dist.f[DIR_MPM])[kbnw]) - + (dist.f[dPPP])[ktne] + (dist.f[dMMP])[ktsw] + + (dist.f[dPMP])[ktse] + (dist.f[dMPP])[ktnw] + + (dist.f[dPPM])[kbne] + (dist.f[dMMM])[kbsw] + + (dist.f[dPMM])[kbse] + (dist.f[dMPM])[kbnw]) - rhoD[nodeIndex] - (vxD[nodeIndex] * vxD[nodeIndex] + vyD[nodeIndex] * vyD[nodeIndex] + vzD[nodeIndex] * vzD[nodeIndex]) * (c1o1 + rhoD[nodeIndex])) * c1o2 + rhoD[nodeIndex] + PRESS; //achtung op hart gesetzt Annahme op = 1 ; ^^^^(1.0/op-0.5)=0.5 ////////////////////////////////////////////////////////////////////////// - mfcbb = (distAD.f[DIR_P00])[nodeIndex ]; - mfabb = (distAD.f[DIR_M00])[kw ]; - mfbcb = (distAD.f[DIR_0P0])[nodeIndex ]; - mfbab = (distAD.f[DIR_0M0])[ks ]; - mfbbc = (distAD.f[DIR_00P])[nodeIndex ]; - mfbba = (distAD.f[DIR_00M])[kb ]; - mfccb = (distAD.f[DIR_PP0])[nodeIndex ]; - mfaab = (distAD.f[DIR_MM0])[ksw ]; - mfcab = (distAD.f[DIR_PM0])[ks ]; - mfacb = (distAD.f[DIR_MP0])[kw ]; - mfcbc = (distAD.f[DIR_P0P])[nodeIndex ]; - mfaba = (distAD.f[DIR_M0M])[kbw ]; - mfcba = (distAD.f[DIR_P0M])[kb ]; - mfabc = (distAD.f[DIR_M0P])[kw ]; - mfbcc = (distAD.f[DIR_0PP])[nodeIndex ]; - mfbaa = (distAD.f[DIR_0MM])[kbs ]; - mfbca = (distAD.f[DIR_0PM])[kb ]; - mfbac = (distAD.f[DIR_0MP])[ks ]; - mfbbb = (distAD.f[DIR_000])[nodeIndex ]; - mfccc = (distAD.f[DIR_PPP])[nodeIndex ]; - mfaac = (distAD.f[DIR_MMP])[ksw ]; - mfcac = (distAD.f[DIR_PMP])[ks ]; - mfacc = (distAD.f[DIR_MPP])[kw ]; - mfcca = (distAD.f[DIR_PPM])[kb ]; - mfaaa = (distAD.f[DIR_MMM])[kbsw]; - mfcaa = (distAD.f[DIR_PMM])[kbs ]; - mfaca = (distAD.f[DIR_MPM])[kbw ]; + mfcbb = (distAD.f[dP00])[nodeIndex ]; + mfabb = (distAD.f[dM00])[kw ]; + mfbcb = (distAD.f[d0P0])[nodeIndex ]; + mfbab = (distAD.f[d0M0])[ks ]; + mfbbc = (distAD.f[d00P])[nodeIndex ]; + mfbba = (distAD.f[d00M])[kb ]; + mfccb = (distAD.f[dPP0])[nodeIndex ]; + mfaab = (distAD.f[dMM0])[ksw ]; + mfcab = (distAD.f[dPM0])[ks ]; + mfacb = (distAD.f[dMP0])[kw ]; + mfcbc = (distAD.f[dP0P])[nodeIndex ]; + mfaba = (distAD.f[dM0M])[kbw ]; + mfcba = (distAD.f[dP0M])[kb ]; + mfabc = (distAD.f[dM0P])[kw ]; + mfbcc = (distAD.f[d0PP])[nodeIndex ]; + mfbaa = (distAD.f[d0MM])[kbs ]; + mfbca = (distAD.f[d0PM])[kb ]; + mfbac = (distAD.f[d0MP])[ks ]; + mfbbb = (distAD.f[d000])[nodeIndex ]; + mfccc = (distAD.f[dPPP])[nodeIndex ]; + mfaac = (distAD.f[dMMP])[ksw ]; + mfcac = (distAD.f[dPMP])[ks ]; + mfacc = (distAD.f[dMPP])[kw ]; + mfcca = (distAD.f[dPPM])[kb ]; + mfaaa = (distAD.f[dMMM])[kbsw]; + mfcaa = (distAD.f[dPMM])[kbs ]; + mfaca = (distAD.f[dMPM])[kbw ]; ////////////////////////////////////////////////////////////////////////// concD[nodeIndex] = ((((mfccc + mfaaa) + (mfaca + mfcac)) + ((mfacc + mfcaa) + (mfaac + mfcca))) + @@ -1176,50 +1176,50 @@ __global__ void LBCalcMeasurePoints( if(geoD[kzero] == GEO_FLUID) { - rhoMP[kMac]= (dist.f[DIR_P00])[ke ]+ (dist.f[DIR_M00])[kw ]+ - (dist.f[DIR_0P0])[kn ]+ (dist.f[DIR_0M0])[ks ]+ - (dist.f[DIR_00P])[kt ]+ (dist.f[DIR_00M])[kb ]+ - (dist.f[DIR_PP0])[kne ]+ (dist.f[DIR_MM0])[ksw ]+ - (dist.f[DIR_PM0])[kse ]+ (dist.f[DIR_MP0])[knw ]+ - (dist.f[DIR_P0P])[kte ]+ (dist.f[DIR_M0M])[kbw ]+ - (dist.f[DIR_P0M])[kbe ]+ (dist.f[DIR_M0P])[ktw ]+ - (dist.f[DIR_0PP])[ktn ]+ (dist.f[DIR_0MM])[kbs ]+ - (dist.f[DIR_0PM])[kbn ]+ (dist.f[DIR_0MP])[kts ]+ - (dist.f[DIR_000])[kzero]+ - (dist.f[DIR_PPP])[ktne]+ (dist.f[DIR_MMP])[ktsw]+ - (dist.f[DIR_PMP])[ktse]+ (dist.f[DIR_MPP])[ktnw]+ - (dist.f[DIR_PPM])[kbne]+ (dist.f[DIR_MMM])[kbsw]+ - (dist.f[DIR_PMM])[kbse]+ (dist.f[DIR_MPM])[kbnw]; + rhoMP[kMac]= (dist.f[dP00])[ke ]+ (dist.f[dM00])[kw ]+ + (dist.f[d0P0])[kn ]+ (dist.f[d0M0])[ks ]+ + (dist.f[d00P])[kt ]+ (dist.f[d00M])[kb ]+ + (dist.f[dPP0])[kne ]+ (dist.f[dMM0])[ksw ]+ + (dist.f[dPM0])[kse ]+ (dist.f[dMP0])[knw ]+ + (dist.f[dP0P])[kte ]+ (dist.f[dM0M])[kbw ]+ + (dist.f[dP0M])[kbe ]+ (dist.f[dM0P])[ktw ]+ + (dist.f[d0PP])[ktn ]+ (dist.f[d0MM])[kbs ]+ + (dist.f[d0PM])[kbn ]+ (dist.f[d0MP])[kts ]+ + (dist.f[d000])[kzero]+ + (dist.f[dPPP])[ktne]+ (dist.f[dMMP])[ktsw]+ + (dist.f[dPMP])[ktse]+ (dist.f[dMPP])[ktnw]+ + (dist.f[dPPM])[kbne]+ (dist.f[dMMM])[kbsw]+ + (dist.f[dPMM])[kbse]+ (dist.f[dMPM])[kbnw]; - vxMP[kMac] = (dist.f[DIR_P00])[ke ]- (dist.f[DIR_M00])[kw ]+ - (dist.f[DIR_PP0])[kne ]- (dist.f[DIR_MM0])[ksw ]+ - (dist.f[DIR_PM0])[kse ]- (dist.f[DIR_MP0])[knw ]+ - (dist.f[DIR_P0P])[kte ]- (dist.f[DIR_M0M])[kbw ]+ - (dist.f[DIR_P0M])[kbe ]- (dist.f[DIR_M0P])[ktw ]+ - (dist.f[DIR_PPP])[ktne]- (dist.f[DIR_MMP])[ktsw]+ - (dist.f[DIR_PMP])[ktse]- (dist.f[DIR_MPP])[ktnw]+ - (dist.f[DIR_PPM])[kbne]- (dist.f[DIR_MMM])[kbsw]+ - (dist.f[DIR_PMM])[kbse]- (dist.f[DIR_MPM])[kbnw]; + vxMP[kMac] = (dist.f[dP00])[ke ]- (dist.f[dM00])[kw ]+ + (dist.f[dPP0])[kne ]- (dist.f[dMM0])[ksw ]+ + (dist.f[dPM0])[kse ]- (dist.f[dMP0])[knw ]+ + (dist.f[dP0P])[kte ]- (dist.f[dM0M])[kbw ]+ + (dist.f[dP0M])[kbe ]- (dist.f[dM0P])[ktw ]+ + (dist.f[dPPP])[ktne]- (dist.f[dMMP])[ktsw]+ + (dist.f[dPMP])[ktse]- (dist.f[dMPP])[ktnw]+ + (dist.f[dPPM])[kbne]- (dist.f[dMMM])[kbsw]+ + (dist.f[dPMM])[kbse]- (dist.f[dMPM])[kbnw]; - vyMP[kMac] = (dist.f[DIR_0P0])[kn ]- (dist.f[DIR_0M0])[ks ]+ - (dist.f[DIR_PP0])[kne ]- (dist.f[DIR_MM0])[ksw ]- - (dist.f[DIR_PM0])[kse ]+ (dist.f[DIR_MP0])[knw ]+ - (dist.f[DIR_0PP])[ktn ]- (dist.f[DIR_0MM])[kbs ]+ - (dist.f[DIR_0PM])[kbn ]- (dist.f[DIR_0MP])[kts ]+ - (dist.f[DIR_PPP])[ktne]- (dist.f[DIR_MMP])[ktsw]- - (dist.f[DIR_PMP])[ktse]+ (dist.f[DIR_MPP])[ktnw]+ - (dist.f[DIR_PPM])[kbne]- (dist.f[DIR_MMM])[kbsw]- - (dist.f[DIR_PMM])[kbse]+ (dist.f[DIR_MPM])[kbnw]; + vyMP[kMac] = (dist.f[d0P0])[kn ]- (dist.f[d0M0])[ks ]+ + (dist.f[dPP0])[kne ]- (dist.f[dMM0])[ksw ]- + (dist.f[dPM0])[kse ]+ (dist.f[dMP0])[knw ]+ + (dist.f[d0PP])[ktn ]- (dist.f[d0MM])[kbs ]+ + (dist.f[d0PM])[kbn ]- (dist.f[d0MP])[kts ]+ + (dist.f[dPPP])[ktne]- (dist.f[dMMP])[ktsw]- + (dist.f[dPMP])[ktse]+ (dist.f[dMPP])[ktnw]+ + (dist.f[dPPM])[kbne]- (dist.f[dMMM])[kbsw]- + (dist.f[dPMM])[kbse]+ (dist.f[dMPM])[kbnw]; - vzMP[kMac] = (dist.f[DIR_00P])[kt ]- (dist.f[DIR_00M])[kb ]+ - (dist.f[DIR_P0P])[kte ]- (dist.f[DIR_M0M])[kbw ]- - (dist.f[DIR_P0M])[kbe ]+ (dist.f[DIR_M0P])[ktw ]+ - (dist.f[DIR_0PP])[ktn ]- (dist.f[DIR_0MM])[kbs ]- - (dist.f[DIR_0PM])[kbn ]+ (dist.f[DIR_0MP])[kts ]+ - (dist.f[DIR_PPP])[ktne]+ (dist.f[DIR_MMP])[ktsw]+ - (dist.f[DIR_PMP])[ktse]+ (dist.f[DIR_MPP])[ktnw]- - (dist.f[DIR_PPM])[kbne]- (dist.f[DIR_MMM])[kbsw]- - (dist.f[DIR_PMM])[kbse]- (dist.f[DIR_MPM])[kbnw]; + vzMP[kMac] = (dist.f[d00P])[kt ]- (dist.f[d00M])[kb ]+ + (dist.f[dP0P])[kte ]- (dist.f[dM0M])[kbw ]- + (dist.f[dP0M])[kbe ]+ (dist.f[dM0P])[ktw ]+ + (dist.f[d0PP])[ktn ]- (dist.f[d0MM])[kbs ]- + (dist.f[d0PM])[kbn ]+ (dist.f[d0MP])[kts ]+ + (dist.f[dPPP])[ktne]+ (dist.f[dMMP])[ktsw]+ + (dist.f[dPMP])[ktse]+ (dist.f[dMPP])[ktnw]- + (dist.f[dPPM])[kbne]- (dist.f[dMMM])[kbsw]- + (dist.f[dPMM])[kbse]- (dist.f[dMPM])[kbnw]; } } } diff --git a/src/gpu/VirtualFluids_GPU/GPU/Cascade27.cu b/src/gpu/core/GPU/Cascade27.cu similarity index 77% rename from src/gpu/VirtualFluids_GPU/GPU/Cascade27.cu rename to src/gpu/core/GPU/Cascade27.cu index e05a711015e372b3fc3169bf61bea9965ccf7c12..98d7c6676e6055fae67d5c1783421c3219a285ba 100644 --- a/src/gpu/VirtualFluids_GPU/GPU/Cascade27.cu +++ b/src/gpu/core/GPU/Cascade27.cu @@ -40,63 +40,63 @@ __global__ void LB_Kernel_Cascade_SP_27( real omega, Distributions27 D; if (EvenOrOdd==true) { - D.f[DIR_P00] = &DDStart[DIR_P00 * numberOfLBnodes]; - D.f[DIR_M00] = &DDStart[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0P0] = &DDStart[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0M0] = &DDStart[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00P] = &DDStart[DIR_00P * numberOfLBnodes]; - D.f[DIR_00M] = &DDStart[DIR_00M * numberOfLBnodes]; - D.f[DIR_PP0] = &DDStart[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_MM0] = &DDStart[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DDStart[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DDStart[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_P0P] = &DDStart[DIR_P0P * numberOfLBnodes]; - D.f[DIR_M0M] = &DDStart[DIR_M0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DDStart[DIR_P0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DDStart[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0PP] = &DDStart[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0MM] = &DDStart[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0PM] = &DDStart[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0MP] = &DDStart[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DDStart[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DDStart[DIR_PPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DDStart[DIR_MMP * numberOfLBnodes]; - D.f[DIR_PMP] = &DDStart[DIR_PMP * numberOfLBnodes]; - D.f[DIR_MPP] = &DDStart[DIR_MPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DDStart[DIR_PPM * numberOfLBnodes]; - D.f[DIR_MMM] = &DDStart[DIR_MMM * numberOfLBnodes]; - D.f[DIR_PMM] = &DDStart[DIR_PMM * numberOfLBnodes]; - D.f[DIR_MPM] = &DDStart[DIR_MPM * numberOfLBnodes]; + D.f[dP00] = &DDStart[dP00 * numberOfLBnodes]; + D.f[dM00] = &DDStart[dM00 * numberOfLBnodes]; + D.f[d0P0] = &DDStart[d0P0 * numberOfLBnodes]; + D.f[d0M0] = &DDStart[d0M0 * numberOfLBnodes]; + D.f[d00P] = &DDStart[d00P * numberOfLBnodes]; + D.f[d00M] = &DDStart[d00M * numberOfLBnodes]; + D.f[dPP0] = &DDStart[dPP0 * numberOfLBnodes]; + D.f[dMM0] = &DDStart[dMM0 * numberOfLBnodes]; + D.f[dPM0] = &DDStart[dPM0 * numberOfLBnodes]; + D.f[dMP0] = &DDStart[dMP0 * numberOfLBnodes]; + D.f[dP0P] = &DDStart[dP0P * numberOfLBnodes]; + D.f[dM0M] = &DDStart[dM0M * numberOfLBnodes]; + D.f[dP0M] = &DDStart[dP0M * numberOfLBnodes]; + D.f[dM0P] = &DDStart[dM0P * numberOfLBnodes]; + D.f[d0PP] = &DDStart[d0PP * numberOfLBnodes]; + D.f[d0MM] = &DDStart[d0MM * numberOfLBnodes]; + D.f[d0PM] = &DDStart[d0PM * numberOfLBnodes]; + D.f[d0MP] = &DDStart[d0MP * numberOfLBnodes]; + D.f[d000] = &DDStart[d000 * numberOfLBnodes]; + D.f[dPPP] = &DDStart[dPPP * numberOfLBnodes]; + D.f[dMMP] = &DDStart[dMMP * numberOfLBnodes]; + D.f[dPMP] = &DDStart[dPMP * numberOfLBnodes]; + D.f[dMPP] = &DDStart[dMPP * numberOfLBnodes]; + D.f[dPPM] = &DDStart[dPPM * numberOfLBnodes]; + D.f[dMMM] = &DDStart[dMMM * numberOfLBnodes]; + D.f[dPMM] = &DDStart[dPMM * numberOfLBnodes]; + D.f[dMPM] = &DDStart[dMPM * numberOfLBnodes]; } else { - D.f[DIR_M00] = &DDStart[DIR_P00 * numberOfLBnodes]; - D.f[DIR_P00] = &DDStart[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0M0] = &DDStart[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0P0] = &DDStart[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00M] = &DDStart[DIR_00P * numberOfLBnodes]; - D.f[DIR_00P] = &DDStart[DIR_00M * numberOfLBnodes]; - D.f[DIR_MM0] = &DDStart[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_PP0] = &DDStart[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DDStart[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DDStart[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_M0M] = &DDStart[DIR_P0P * numberOfLBnodes]; - D.f[DIR_P0P] = &DDStart[DIR_M0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DDStart[DIR_P0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DDStart[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0MM] = &DDStart[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0PP] = &DDStart[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0MP] = &DDStart[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0PM] = &DDStart[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DDStart[DIR_000 * numberOfLBnodes]; - D.f[DIR_MMM] = &DDStart[DIR_PPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DDStart[DIR_MMP * numberOfLBnodes]; - D.f[DIR_MPM] = &DDStart[DIR_PMP * numberOfLBnodes]; - D.f[DIR_PMM] = &DDStart[DIR_MPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DDStart[DIR_PPM * numberOfLBnodes]; - D.f[DIR_PPP] = &DDStart[DIR_MMM * numberOfLBnodes]; - D.f[DIR_MPP] = &DDStart[DIR_PMM * numberOfLBnodes]; - D.f[DIR_PMP] = &DDStart[DIR_MPM * numberOfLBnodes]; + D.f[dM00] = &DDStart[dP00 * numberOfLBnodes]; + D.f[dP00] = &DDStart[dM00 * numberOfLBnodes]; + D.f[d0M0] = &DDStart[d0P0 * numberOfLBnodes]; + D.f[d0P0] = &DDStart[d0M0 * numberOfLBnodes]; + D.f[d00M] = &DDStart[d00P * numberOfLBnodes]; + D.f[d00P] = &DDStart[d00M * numberOfLBnodes]; + D.f[dMM0] = &DDStart[dPP0 * numberOfLBnodes]; + D.f[dPP0] = &DDStart[dMM0 * numberOfLBnodes]; + D.f[dMP0] = &DDStart[dPM0 * numberOfLBnodes]; + D.f[dPM0] = &DDStart[dMP0 * numberOfLBnodes]; + D.f[dM0M] = &DDStart[dP0P * numberOfLBnodes]; + D.f[dP0P] = &DDStart[dM0M * numberOfLBnodes]; + D.f[dM0P] = &DDStart[dP0M * numberOfLBnodes]; + D.f[dP0M] = &DDStart[dM0P * numberOfLBnodes]; + D.f[d0MM] = &DDStart[d0PP * numberOfLBnodes]; + D.f[d0PP] = &DDStart[d0MM * numberOfLBnodes]; + D.f[d0MP] = &DDStart[d0PM * numberOfLBnodes]; + D.f[d0PM] = &DDStart[d0MP * numberOfLBnodes]; + D.f[d000] = &DDStart[d000 * numberOfLBnodes]; + D.f[dMMM] = &DDStart[dPPP * numberOfLBnodes]; + D.f[dPPM] = &DDStart[dMMP * numberOfLBnodes]; + D.f[dMPM] = &DDStart[dPMP * numberOfLBnodes]; + D.f[dPMM] = &DDStart[dMPP * numberOfLBnodes]; + D.f[dMMP] = &DDStart[dPPM * numberOfLBnodes]; + D.f[dPPP] = &DDStart[dMMM * numberOfLBnodes]; + D.f[dMPP] = &DDStart[dPMM * numberOfLBnodes]; + D.f[dPMP] = &DDStart[dMPM * numberOfLBnodes]; } //////////////////////////////////////////////////////////////////////////////// @@ -129,33 +129,33 @@ __global__ void LB_Kernel_Cascade_SP_27( real omega, //unsigned int ktne = k; unsigned int kbsw = neighborZ[ksw]; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real mfcbb = (D.f[DIR_P00])[k ];//[ke ];// + c2over27 ;(D.f[DIR_P00])[k ];//ke - real mfabb = (D.f[DIR_M00])[kw ];//[kw ];// + c2over27 ;(D.f[DIR_M00])[kw ]; - real mfbcb = (D.f[DIR_0P0])[k ];//[kn ];// + c2over27 ;(D.f[DIR_0P0])[k ];//kn - real mfbab = (D.f[DIR_0M0])[ks ];//[ks ];// + c2over27 ;(D.f[DIR_0M0])[ks ]; - real mfbbc = (D.f[DIR_00P])[k ];//[kt ];// + c2over27 ;(D.f[DIR_00P])[k ];//kt - real mfbba = (D.f[DIR_00M])[kb ];//[kb ];// + c2over27 ;(D.f[DIR_00M])[kb ]; - real mfccb = (D.f[DIR_PP0])[k ];//[kne ];// + c1over54 ;(D.f[DIR_PP0])[k ];//kne - real mfaab = (D.f[DIR_MM0])[ksw];//[ksw ];// + c1over54 ;(D.f[DIR_MM0])[ksw]; - real mfcab = (D.f[DIR_PM0])[ks ];//[kse ];// + c1over54 ;(D.f[DIR_PM0])[ks ];//kse - real mfacb = (D.f[DIR_MP0])[kw ];//[knw ];// + c1over54 ;(D.f[DIR_MP0])[kw ];//knw - real mfcbc = (D.f[DIR_P0P])[k ];//[kte ];// + c1over54 ;(D.f[DIR_P0P])[k ];//kte - real mfaba = (D.f[DIR_M0M])[kbw];//[kbw ];// + c1over54 ;(D.f[DIR_M0M])[kbw]; - real mfcba = (D.f[DIR_P0M])[kb ];//[kbe ];// + c1over54 ;(D.f[DIR_P0M])[kb ];//kbe - real mfabc = (D.f[DIR_M0P])[kw ];//[ktw ];// + c1over54 ;(D.f[DIR_M0P])[kw ];//ktw - real mfbcc = (D.f[DIR_0PP])[k ];//[ktn ];// + c1over54 ;(D.f[DIR_0PP])[k ];//ktn - real mfbaa = (D.f[DIR_0MM])[kbs];//[kbs ];// + c1over54 ;(D.f[DIR_0MM])[kbs]; - real mfbca = (D.f[DIR_0PM])[kb ];//[kbn ];// + c1over54 ;(D.f[DIR_0PM])[kb ];//kbn - real mfbac = (D.f[DIR_0MP])[ks ];//[kts ];// + c1over54 ;(D.f[DIR_0MP])[ks ];//kts - real mfbbb = (D.f[DIR_000])[k ];//[kzero];// + c8over27 ;(D.f[DIR_000])[k ];//kzero - real mfccc = (D.f[DIR_PPP])[k ];//[ktne ];// + c1over216;(D.f[DIR_PPP])[k ];//ktne - real mfaac = (D.f[DIR_MMP])[ksw];//[ktsw ];// + c1over216;(D.f[DIR_MMP])[ksw];//ktsw - real mfcac = (D.f[DIR_PMP])[ks ];//[ktse ];// + c1over216;(D.f[DIR_PMP])[ks ];//ktse - real mfacc = (D.f[DIR_MPP])[kw ];//[ktnw ];// + c1over216;(D.f[DIR_MPP])[kw ];//ktnw - real mfcca = (D.f[DIR_PPM])[kb ];//[kbne ];// + c1over216;(D.f[DIR_PPM])[kb ];//kbne - real mfaaa = (D.f[DIR_MMM])[kbsw];//[kbsw ];// + c1over216;(D.f[DIR_MMM])[kbsw]; - real mfcaa = (D.f[DIR_PMM])[kbs];//[kbse ];// + c1over216;(D.f[DIR_PMM])[kbs];//kbse - real mfaca = (D.f[DIR_MPM])[kbw];//[kbnw ];// + c1over216;(D.f[DIR_MPM])[kbw];//kbnw + real mfcbb = (D.f[dP00])[k ];//[ke ];// + c2over27 ;(D.f[dP00])[k ];//ke + real mfabb = (D.f[dM00])[kw ];//[kw ];// + c2over27 ;(D.f[dM00])[kw ]; + real mfbcb = (D.f[d0P0])[k ];//[kn ];// + c2over27 ;(D.f[d0P0])[k ];//kn + real mfbab = (D.f[d0M0])[ks ];//[ks ];// + c2over27 ;(D.f[d0M0])[ks ]; + real mfbbc = (D.f[d00P])[k ];//[kt ];// + c2over27 ;(D.f[d00P])[k ];//kt + real mfbba = (D.f[d00M])[kb ];//[kb ];// + c2over27 ;(D.f[d00M])[kb ]; + real mfccb = (D.f[dPP0])[k ];//[kne ];// + c1over54 ;(D.f[dPP0])[k ];//kne + real mfaab = (D.f[dMM0])[ksw];//[ksw ];// + c1over54 ;(D.f[dMM0])[ksw]; + real mfcab = (D.f[dPM0])[ks ];//[kse ];// + c1over54 ;(D.f[dPM0])[ks ];//kse + real mfacb = (D.f[dMP0])[kw ];//[knw ];// + c1over54 ;(D.f[dMP0])[kw ];//knw + real mfcbc = (D.f[dP0P])[k ];//[kte ];// + c1over54 ;(D.f[dP0P])[k ];//kte + real mfaba = (D.f[dM0M])[kbw];//[kbw ];// + c1over54 ;(D.f[dM0M])[kbw]; + real mfcba = (D.f[dP0M])[kb ];//[kbe ];// + c1over54 ;(D.f[dP0M])[kb ];//kbe + real mfabc = (D.f[dM0P])[kw ];//[ktw ];// + c1over54 ;(D.f[dM0P])[kw ];//ktw + real mfbcc = (D.f[d0PP])[k ];//[ktn ];// + c1over54 ;(D.f[d0PP])[k ];//ktn + real mfbaa = (D.f[d0MM])[kbs];//[kbs ];// + c1over54 ;(D.f[d0MM])[kbs]; + real mfbca = (D.f[d0PM])[kb ];//[kbn ];// + c1over54 ;(D.f[d0PM])[kb ];//kbn + real mfbac = (D.f[d0MP])[ks ];//[kts ];// + c1over54 ;(D.f[d0MP])[ks ];//kts + real mfbbb = (D.f[d000])[k ];//[kzero];// + c8over27 ;(D.f[d000])[k ];//kzero + real mfccc = (D.f[dPPP])[k ];//[ktne ];// + c1over216;(D.f[dPPP])[k ];//ktne + real mfaac = (D.f[dMMP])[ksw];//[ktsw ];// + c1over216;(D.f[dMMP])[ksw];//ktsw + real mfcac = (D.f[dPMP])[ks ];//[ktse ];// + c1over216;(D.f[dPMP])[ks ];//ktse + real mfacc = (D.f[dMPP])[kw ];//[ktnw ];// + c1over216;(D.f[dMPP])[kw ];//ktnw + real mfcca = (D.f[dPPM])[kb ];//[kbne ];// + c1over216;(D.f[dPPM])[kb ];//kbne + real mfaaa = (D.f[dMMM])[kbsw];//[kbsw ];// + c1over216;(D.f[dMMM])[kbsw]; + real mfcaa = (D.f[dPMM])[kbs];//[kbse ];// + c1over216;(D.f[dPMM])[kbs];//kbse + real mfaca = (D.f[dMPM])[kbw];//[kbnw ];// + c1over216;(D.f[dMPM])[kbw];//kbnw //////////////////////////////////////////////////////////////////////////////////// //slow //real oMdrho = one - ((((mfccc+mfaaa) + (mfaca+mfcac)) + ((mfacc+mfcaa) + (mfaac+mfcca))) + @@ -731,33 +731,33 @@ __global__ void LB_Kernel_Cascade_SP_27( real omega, //////////////////////////////////////////////////////////////////////////////////// - (D.f[ DIR_P00 ])[k ] = mfabb;//(D.f[ DIR_P00 ])[ke ] = mfabb;// - c2over27 ; (D.f[ DIR_P00 ])[k ] - (D.f[ DIR_M00 ])[kw ] = mfcbb;//(D.f[ DIR_M00 ])[kw ] = mfcbb;// - c2over27 ; (D.f[ DIR_M00 ])[kw ] - (D.f[ DIR_0P0 ])[k ] = mfbab;//(D.f[ DIR_0P0 ])[kn ] = mfbab;// - c2over27 ; (D.f[ DIR_0P0 ])[k ] - (D.f[ DIR_0M0 ])[ks ] = mfbcb;//(D.f[ DIR_0M0 ])[ks ] = mfbcb;// - c2over27 ; (D.f[ DIR_0M0 ])[ks ] - (D.f[ DIR_00P ])[k ] = mfbba;//(D.f[ DIR_00P ])[kt ] = mfbba;// - c2over27 ; (D.f[ DIR_00P ])[k ] - (D.f[ DIR_00M ])[kb ] = mfbbc;//(D.f[ DIR_00M ])[kb ] = mfbbc;// - c2over27 ; (D.f[ DIR_00M ])[kb ] - (D.f[ DIR_PP0 ])[k ] = mfaab;//(D.f[ DIR_PP0 ])[kne ] = mfaab;// - c1over54 ; (D.f[ DIR_PP0 ])[k ] - (D.f[ DIR_MM0 ])[ksw ] = mfccb;//(D.f[ DIR_MM0 ])[ksw ] = mfccb;// - c1over54 ; (D.f[ DIR_MM0 ])[ksw ] - (D.f[ DIR_PM0 ])[ks ] = mfacb;//(D.f[ DIR_PM0 ])[kse ] = mfacb;// - c1over54 ; (D.f[ DIR_PM0 ])[ks ] - (D.f[ DIR_MP0 ])[kw ] = mfcab;//(D.f[ DIR_MP0 ])[knw ] = mfcab;// - c1over54 ; (D.f[ DIR_MP0 ])[kw ] - (D.f[ DIR_P0P ])[k ] = mfaba;//(D.f[ DIR_P0P ])[kte ] = mfaba;// - c1over54 ; (D.f[ DIR_P0P ])[k ] - (D.f[ DIR_M0M ])[kbw ] = mfcbc;//(D.f[ DIR_M0M ])[kbw ] = mfcbc;// - c1over54 ; (D.f[ DIR_M0M ])[kbw ] - (D.f[ DIR_P0M ])[kb ] = mfabc;//(D.f[ DIR_P0M ])[kbe ] = mfabc;// - c1over54 ; (D.f[ DIR_P0M ])[kb ] - (D.f[ DIR_M0P ])[kw ] = mfcba;//(D.f[ DIR_M0P ])[ktw ] = mfcba;// - c1over54 ; (D.f[ DIR_M0P ])[kw ] - (D.f[ DIR_0PP ])[k ] = mfbaa;//(D.f[ DIR_0PP ])[ktn ] = mfbaa;// - c1over54 ; (D.f[ DIR_0PP ])[k ] - (D.f[ DIR_0MM ])[kbs ] = mfbcc;//(D.f[ DIR_0MM ])[kbs ] = mfbcc;// - c1over54 ; (D.f[ DIR_0MM ])[kbs ] - (D.f[ DIR_0PM ])[kb ] = mfbac;//(D.f[ DIR_0PM ])[kbn ] = mfbac;// - c1over54 ; (D.f[ DIR_0PM ])[kb ] - (D.f[ DIR_0MP ])[ks ] = mfbca;//(D.f[ DIR_0MP ])[kts ] = mfbca;// - c1over54 ; (D.f[ DIR_0MP ])[ks ] - (D.f[ DIR_000])[k ] = mfbbb;//(D.f[ DIR_000])[kzero] = mfbbb;// - c8over27 ; (D.f[ DIR_000])[k ] - (D.f[ DIR_PPP ])[k ] = mfaaa;//(D.f[ DIR_PPP ])[ktne ] = mfaaa;// - c1over216; (D.f[ DIR_PPP ])[k ] - (D.f[ DIR_PMP ])[ks ] = mfaca;//(D.f[ DIR_PMP ])[ktse ] = mfaca;// - c1over216; (D.f[ DIR_PMP ])[ks ] - (D.f[ DIR_PPM ])[kb ] = mfaac;//(D.f[ DIR_PPM ])[kbne ] = mfaac;// - c1over216; (D.f[ DIR_PPM ])[kb ] - (D.f[ DIR_PMM ])[kbs ] = mfacc;//(D.f[ DIR_PMM ])[kbse ] = mfacc;// - c1over216; (D.f[ DIR_PMM ])[kbs ] - (D.f[ DIR_MPP ])[kw ] = mfcaa;//(D.f[ DIR_MPP ])[ktnw ] = mfcaa;// - c1over216; (D.f[ DIR_MPP ])[kw ] - (D.f[ DIR_MMP ])[ksw ] = mfcca;//(D.f[ DIR_MMP ])[ktsw ] = mfcca;// - c1over216; (D.f[ DIR_MMP ])[ksw ] - (D.f[ DIR_MPM ])[kbw ] = mfcac;//(D.f[ DIR_MPM ])[kbnw ] = mfcac;// - c1over216; (D.f[ DIR_MPM ])[kbw ] - (D.f[ DIR_MMM ])[kbsw] = mfccc;//(D.f[ DIR_MMM ])[kbsw ] = mfccc;// - c1over216; (D.f[ DIR_MMM ])[kbsw] + (D.f[ dP00 ])[k ] = mfabb;//(D.f[ dP00 ])[ke ] = mfabb;// - c2over27 ; (D.f[ dP00 ])[k ] + (D.f[ dM00 ])[kw ] = mfcbb;//(D.f[ dM00 ])[kw ] = mfcbb;// - c2over27 ; (D.f[ dM00 ])[kw ] + (D.f[ d0P0 ])[k ] = mfbab;//(D.f[ d0P0 ])[kn ] = mfbab;// - c2over27 ; (D.f[ d0P0 ])[k ] + (D.f[ d0M0 ])[ks ] = mfbcb;//(D.f[ d0M0 ])[ks ] = mfbcb;// - c2over27 ; (D.f[ d0M0 ])[ks ] + (D.f[ d00P ])[k ] = mfbba;//(D.f[ d00P ])[kt ] = mfbba;// - c2over27 ; (D.f[ d00P ])[k ] + (D.f[ d00M ])[kb ] = mfbbc;//(D.f[ d00M ])[kb ] = mfbbc;// - c2over27 ; (D.f[ d00M ])[kb ] + (D.f[ dPP0 ])[k ] = mfaab;//(D.f[ dPP0 ])[kne ] = mfaab;// - c1over54 ; (D.f[ dPP0 ])[k ] + (D.f[ dMM0 ])[ksw ] = mfccb;//(D.f[ dMM0 ])[ksw ] = mfccb;// - c1over54 ; (D.f[ dMM0 ])[ksw ] + (D.f[ dPM0 ])[ks ] = mfacb;//(D.f[ dPM0 ])[kse ] = mfacb;// - c1over54 ; (D.f[ dPM0 ])[ks ] + (D.f[ dMP0 ])[kw ] = mfcab;//(D.f[ dMP0 ])[knw ] = mfcab;// - c1over54 ; (D.f[ dMP0 ])[kw ] + (D.f[ dP0P ])[k ] = mfaba;//(D.f[ dP0P ])[kte ] = mfaba;// - c1over54 ; (D.f[ dP0P ])[k ] + (D.f[ dM0M ])[kbw ] = mfcbc;//(D.f[ dM0M ])[kbw ] = mfcbc;// - c1over54 ; (D.f[ dM0M ])[kbw ] + (D.f[ dP0M ])[kb ] = mfabc;//(D.f[ dP0M ])[kbe ] = mfabc;// - c1over54 ; (D.f[ dP0M ])[kb ] + (D.f[ dM0P ])[kw ] = mfcba;//(D.f[ dM0P ])[ktw ] = mfcba;// - c1over54 ; (D.f[ dM0P ])[kw ] + (D.f[ d0PP ])[k ] = mfbaa;//(D.f[ d0PP ])[ktn ] = mfbaa;// - c1over54 ; (D.f[ d0PP ])[k ] + (D.f[ d0MM ])[kbs ] = mfbcc;//(D.f[ d0MM ])[kbs ] = mfbcc;// - c1over54 ; (D.f[ d0MM ])[kbs ] + (D.f[ d0PM ])[kb ] = mfbac;//(D.f[ d0PM ])[kbn ] = mfbac;// - c1over54 ; (D.f[ d0PM ])[kb ] + (D.f[ d0MP ])[ks ] = mfbca;//(D.f[ d0MP ])[kts ] = mfbca;// - c1over54 ; (D.f[ d0MP ])[ks ] + (D.f[ d000])[k ] = mfbbb;//(D.f[ d000])[kzero] = mfbbb;// - c8over27 ; (D.f[ d000])[k ] + (D.f[ dPPP ])[k ] = mfaaa;//(D.f[ dPPP ])[ktne ] = mfaaa;// - c1over216; (D.f[ dPPP ])[k ] + (D.f[ dPMP ])[ks ] = mfaca;//(D.f[ dPMP ])[ktse ] = mfaca;// - c1over216; (D.f[ dPMP ])[ks ] + (D.f[ dPPM ])[kb ] = mfaac;//(D.f[ dPPM ])[kbne ] = mfaac;// - c1over216; (D.f[ dPPM ])[kb ] + (D.f[ dPMM ])[kbs ] = mfacc;//(D.f[ dPMM ])[kbse ] = mfacc;// - c1over216; (D.f[ dPMM ])[kbs ] + (D.f[ dMPP ])[kw ] = mfcaa;//(D.f[ dMPP ])[ktnw ] = mfcaa;// - c1over216; (D.f[ dMPP ])[kw ] + (D.f[ dMMP ])[ksw ] = mfcca;//(D.f[ dMMP ])[ktsw ] = mfcca;// - c1over216; (D.f[ dMMP ])[ksw ] + (D.f[ dMPM ])[kbw ] = mfcac;//(D.f[ dMPM ])[kbnw ] = mfcac;// - c1over216; (D.f[ dMPM ])[kbw ] + (D.f[ dMMM ])[kbsw] = mfccc;//(D.f[ dMMM ])[kbsw ] = mfccc;// - c1over216; (D.f[ dMMM ])[kbsw] //////////////////////////////////////////////////////////////////////////////////// } } @@ -867,63 +867,63 @@ __global__ void LB_Kernel_Casc_Comp_SP_27( real omega, Distributions27 D; if (EvenOrOdd==true) { - D.f[DIR_P00] = &DDStart[DIR_P00 * numberOfLBnodes]; - D.f[DIR_M00] = &DDStart[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0P0] = &DDStart[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0M0] = &DDStart[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00P] = &DDStart[DIR_00P * numberOfLBnodes]; - D.f[DIR_00M] = &DDStart[DIR_00M * numberOfLBnodes]; - D.f[DIR_PP0] = &DDStart[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_MM0] = &DDStart[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DDStart[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DDStart[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_P0P] = &DDStart[DIR_P0P * numberOfLBnodes]; - D.f[DIR_M0M] = &DDStart[DIR_M0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DDStart[DIR_P0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DDStart[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0PP] = &DDStart[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0MM] = &DDStart[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0PM] = &DDStart[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0MP] = &DDStart[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DDStart[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DDStart[DIR_PPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DDStart[DIR_MMP * numberOfLBnodes]; - D.f[DIR_PMP] = &DDStart[DIR_PMP * numberOfLBnodes]; - D.f[DIR_MPP] = &DDStart[DIR_MPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DDStart[DIR_PPM * numberOfLBnodes]; - D.f[DIR_MMM] = &DDStart[DIR_MMM * numberOfLBnodes]; - D.f[DIR_PMM] = &DDStart[DIR_PMM * numberOfLBnodes]; - D.f[DIR_MPM] = &DDStart[DIR_MPM * numberOfLBnodes]; + D.f[dP00] = &DDStart[dP00 * numberOfLBnodes]; + D.f[dM00] = &DDStart[dM00 * numberOfLBnodes]; + D.f[d0P0] = &DDStart[d0P0 * numberOfLBnodes]; + D.f[d0M0] = &DDStart[d0M0 * numberOfLBnodes]; + D.f[d00P] = &DDStart[d00P * numberOfLBnodes]; + D.f[d00M] = &DDStart[d00M * numberOfLBnodes]; + D.f[dPP0] = &DDStart[dPP0 * numberOfLBnodes]; + D.f[dMM0] = &DDStart[dMM0 * numberOfLBnodes]; + D.f[dPM0] = &DDStart[dPM0 * numberOfLBnodes]; + D.f[dMP0] = &DDStart[dMP0 * numberOfLBnodes]; + D.f[dP0P] = &DDStart[dP0P * numberOfLBnodes]; + D.f[dM0M] = &DDStart[dM0M * numberOfLBnodes]; + D.f[dP0M] = &DDStart[dP0M * numberOfLBnodes]; + D.f[dM0P] = &DDStart[dM0P * numberOfLBnodes]; + D.f[d0PP] = &DDStart[d0PP * numberOfLBnodes]; + D.f[d0MM] = &DDStart[d0MM * numberOfLBnodes]; + D.f[d0PM] = &DDStart[d0PM * numberOfLBnodes]; + D.f[d0MP] = &DDStart[d0MP * numberOfLBnodes]; + D.f[d000] = &DDStart[d000 * numberOfLBnodes]; + D.f[dPPP] = &DDStart[dPPP * numberOfLBnodes]; + D.f[dMMP] = &DDStart[dMMP * numberOfLBnodes]; + D.f[dPMP] = &DDStart[dPMP * numberOfLBnodes]; + D.f[dMPP] = &DDStart[dMPP * numberOfLBnodes]; + D.f[dPPM] = &DDStart[dPPM * numberOfLBnodes]; + D.f[dMMM] = &DDStart[dMMM * numberOfLBnodes]; + D.f[dPMM] = &DDStart[dPMM * numberOfLBnodes]; + D.f[dMPM] = &DDStart[dMPM * numberOfLBnodes]; } else { - D.f[DIR_M00] = &DDStart[DIR_P00 * numberOfLBnodes]; - D.f[DIR_P00] = &DDStart[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0M0] = &DDStart[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0P0] = &DDStart[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00M] = &DDStart[DIR_00P * numberOfLBnodes]; - D.f[DIR_00P] = &DDStart[DIR_00M * numberOfLBnodes]; - D.f[DIR_MM0] = &DDStart[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_PP0] = &DDStart[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DDStart[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DDStart[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_M0M] = &DDStart[DIR_P0P * numberOfLBnodes]; - D.f[DIR_P0P] = &DDStart[DIR_M0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DDStart[DIR_P0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DDStart[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0MM] = &DDStart[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0PP] = &DDStart[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0MP] = &DDStart[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0PM] = &DDStart[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DDStart[DIR_000 * numberOfLBnodes]; - D.f[DIR_MMM] = &DDStart[DIR_PPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DDStart[DIR_MMP * numberOfLBnodes]; - D.f[DIR_MPM] = &DDStart[DIR_PMP * numberOfLBnodes]; - D.f[DIR_PMM] = &DDStart[DIR_MPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DDStart[DIR_PPM * numberOfLBnodes]; - D.f[DIR_PPP] = &DDStart[DIR_MMM * numberOfLBnodes]; - D.f[DIR_MPP] = &DDStart[DIR_PMM * numberOfLBnodes]; - D.f[DIR_PMP] = &DDStart[DIR_MPM * numberOfLBnodes]; + D.f[dM00] = &DDStart[dP00 * numberOfLBnodes]; + D.f[dP00] = &DDStart[dM00 * numberOfLBnodes]; + D.f[d0M0] = &DDStart[d0P0 * numberOfLBnodes]; + D.f[d0P0] = &DDStart[d0M0 * numberOfLBnodes]; + D.f[d00M] = &DDStart[d00P * numberOfLBnodes]; + D.f[d00P] = &DDStart[d00M * numberOfLBnodes]; + D.f[dMM0] = &DDStart[dPP0 * numberOfLBnodes]; + D.f[dPP0] = &DDStart[dMM0 * numberOfLBnodes]; + D.f[dMP0] = &DDStart[dPM0 * numberOfLBnodes]; + D.f[dPM0] = &DDStart[dMP0 * numberOfLBnodes]; + D.f[dM0M] = &DDStart[dP0P * numberOfLBnodes]; + D.f[dP0P] = &DDStart[dM0M * numberOfLBnodes]; + D.f[dM0P] = &DDStart[dP0M * numberOfLBnodes]; + D.f[dP0M] = &DDStart[dM0P * numberOfLBnodes]; + D.f[d0MM] = &DDStart[d0PP * numberOfLBnodes]; + D.f[d0PP] = &DDStart[d0MM * numberOfLBnodes]; + D.f[d0MP] = &DDStart[d0PM * numberOfLBnodes]; + D.f[d0PM] = &DDStart[d0MP * numberOfLBnodes]; + D.f[d000] = &DDStart[d000 * numberOfLBnodes]; + D.f[dMMM] = &DDStart[dPPP * numberOfLBnodes]; + D.f[dPPM] = &DDStart[dMMP * numberOfLBnodes]; + D.f[dMPM] = &DDStart[dPMP * numberOfLBnodes]; + D.f[dPMM] = &DDStart[dMPP * numberOfLBnodes]; + D.f[dMMP] = &DDStart[dPPM * numberOfLBnodes]; + D.f[dPPP] = &DDStart[dMMM * numberOfLBnodes]; + D.f[dMPP] = &DDStart[dPMM * numberOfLBnodes]; + D.f[dPMP] = &DDStart[dMPM * numberOfLBnodes]; } //////////////////////////////////////////////////////////////////////////////// @@ -956,33 +956,33 @@ __global__ void LB_Kernel_Casc_Comp_SP_27( real omega, unsigned int ktne = k; unsigned int kbsw = neighborZ[ksw]; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real f_E = (D.f[DIR_P00])[ke ];// + c2over27 ; - real f_W = (D.f[DIR_M00])[kw ];// + c2over27 ; - real f_N = (D.f[DIR_0P0])[kn ];// + c2over27 ; - real f_S = (D.f[DIR_0M0])[ks ];// + c2over27 ; - real f_F = (D.f[DIR_00P])[kt ];// + c2over27 ; - real f_B = (D.f[DIR_00M])[kb ];// + c2over27 ; - real f_NE = (D.f[DIR_PP0])[kne ];// + c1over54 ; - real f_SW = (D.f[DIR_MM0])[ksw ];// + c1over54 ; - real f_SE = (D.f[DIR_PM0])[kse ];// + c1over54 ; - real f_NW = (D.f[DIR_MP0])[knw ];// + c1over54 ; - real f_Ef = (D.f[DIR_P0P])[kte ];// + c1over54 ; - real f_Wb = (D.f[DIR_M0M])[kbw ];// + c1over54 ; - real f_Eb = (D.f[DIR_P0M])[kbe ];// + c1over54 ; - real f_Wf = (D.f[DIR_M0P])[ktw ];// + c1over54 ; - real f_Nf = (D.f[DIR_0PP])[ktn ];// + c1over54 ; - real f_Sb = (D.f[DIR_0MM])[kbs ];// + c1over54 ; - real f_Nb = (D.f[DIR_0PM])[kbn ];// + c1over54 ; - real f_Sf = (D.f[DIR_0MP])[kts ];// + c1over54 ; - real f_R = (D.f[DIR_000])[kzero];// + c8over27 ; - real f_Nef = (D.f[DIR_PPP])[ktne ];// + c1over216; - real f_Swf = (D.f[DIR_MMP])[ktsw ];// + c1over216; - real f_Sef = (D.f[DIR_PMP])[ktse ];// + c1over216; - real f_Nwf = (D.f[DIR_MPP])[ktnw ];// + c1over216; - real f_Neb = (D.f[DIR_PPM])[kbne ];// + c1over216; - real f_Swb = (D.f[DIR_MMM])[kbsw ];// + c1over216; - real f_Seb = (D.f[DIR_PMM])[kbse ];// + c1over216; - real f_Nwb = (D.f[DIR_MPM])[kbnw ];// + c1over216; + real f_E = (D.f[dP00])[ke ];// + c2over27 ; + real f_W = (D.f[dM00])[kw ];// + c2over27 ; + real f_N = (D.f[d0P0])[kn ];// + c2over27 ; + real f_S = (D.f[d0M0])[ks ];// + c2over27 ; + real f_F = (D.f[d00P])[kt ];// + c2over27 ; + real f_B = (D.f[d00M])[kb ];// + c2over27 ; + real f_NE = (D.f[dPP0])[kne ];// + c1over54 ; + real f_SW = (D.f[dMM0])[ksw ];// + c1over54 ; + real f_SE = (D.f[dPM0])[kse ];// + c1over54 ; + real f_NW = (D.f[dMP0])[knw ];// + c1over54 ; + real f_Ef = (D.f[dP0P])[kte ];// + c1over54 ; + real f_Wb = (D.f[dM0M])[kbw ];// + c1over54 ; + real f_Eb = (D.f[dP0M])[kbe ];// + c1over54 ; + real f_Wf = (D.f[dM0P])[ktw ];// + c1over54 ; + real f_Nf = (D.f[d0PP])[ktn ];// + c1over54 ; + real f_Sb = (D.f[d0MM])[kbs ];// + c1over54 ; + real f_Nb = (D.f[d0PM])[kbn ];// + c1over54 ; + real f_Sf = (D.f[d0MP])[kts ];// + c1over54 ; + real f_R = (D.f[d000])[kzero];// + c8over27 ; + real f_Nef = (D.f[dPPP])[ktne ];// + c1over216; + real f_Swf = (D.f[dMMP])[ktsw ];// + c1over216; + real f_Sef = (D.f[dPMP])[ktse ];// + c1over216; + real f_Nwf = (D.f[dMPP])[ktnw ];// + c1over216; + real f_Neb = (D.f[dPPM])[kbne ];// + c1over216; + real f_Swb = (D.f[dMMM])[kbsw ];// + c1over216; + real f_Seb = (D.f[dPMM])[kbse ];// + c1over216; + real f_Nwb = (D.f[dMPM])[kbnw ];// + c1over216; //////////////////////////////////////////////////////////////////////////////////// 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); @@ -1611,33 +1611,33 @@ __global__ void LB_Kernel_Casc_Comp_SP_27( real omega, //////////////////////////////////////////////////////////////////////////////////// - (D.f[ DIR_P00 ])[ke ] = mfabb;// - c2over27 ;// - (D.f[ DIR_M00 ])[kw ] = mfcbb;// - c2over27 ; - (D.f[ DIR_0P0 ])[kn ] = mfbab;// - c2over27 ; - (D.f[ DIR_0M0 ])[ks ] = mfbcb;// - c2over27 ; - (D.f[ DIR_00P ])[kt ] = mfbba;// - c2over27 ; - (D.f[ DIR_00M ])[kb ] = mfbbc;// - c2over27 ; - (D.f[ DIR_PP0 ])[kne ] = mfaab;// - c1over54 ; - (D.f[ DIR_MM0 ])[ksw ] = mfccb;// - c1over54 ; - (D.f[ DIR_PM0 ])[kse ] = mfacb;// - c1over54 ; - (D.f[ DIR_MP0 ])[knw ] = mfcab;// - c1over54 ; - (D.f[ DIR_P0P ])[kte ] = mfaba;// - c1over54 ; - (D.f[ DIR_M0M ])[kbw ] = mfcbc;// - c1over54 ; - (D.f[ DIR_P0M ])[kbe ] = mfabc;// - c1over54 ; - (D.f[ DIR_M0P ])[ktw ] = mfcba;// - c1over54 ; - (D.f[ DIR_0PP ])[ktn ] = mfbaa;// - c1over54 ; - (D.f[ DIR_0MM ])[kbs ] = mfbcc;// - c1over54 ; - (D.f[ DIR_0PM ])[kbn ] = mfbac;// - c1over54 ; - (D.f[ DIR_0MP ])[kts ] = mfbca;// - c1over54 ; - (D.f[ DIR_000])[kzero] = mfbbb;// - c8over27 ; - (D.f[ DIR_PPP ])[ktne ] = mfaaa;// - c1over216; - (D.f[ DIR_PMP ])[ktse ] = mfaca;// - c1over216; - (D.f[ DIR_PPM ])[kbne ] = mfaac;// - c1over216; - (D.f[ DIR_PMM ])[kbse ] = mfacc;// - c1over216; - (D.f[ DIR_MPP ])[ktnw ] = mfcaa;// - c1over216; - (D.f[ DIR_MMP ])[ktsw ] = mfcca;// - c1over216; - (D.f[ DIR_MPM ])[kbnw ] = mfcac;// - c1over216; - (D.f[ DIR_MMM ])[kbsw ] = mfccc;// - c1over216; + (D.f[ dP00 ])[ke ] = mfabb;// - c2over27 ;// + (D.f[ dM00 ])[kw ] = mfcbb;// - c2over27 ; + (D.f[ d0P0 ])[kn ] = mfbab;// - c2over27 ; + (D.f[ d0M0 ])[ks ] = mfbcb;// - c2over27 ; + (D.f[ d00P ])[kt ] = mfbba;// - c2over27 ; + (D.f[ d00M ])[kb ] = mfbbc;// - c2over27 ; + (D.f[ dPP0 ])[kne ] = mfaab;// - c1over54 ; + (D.f[ dMM0 ])[ksw ] = mfccb;// - c1over54 ; + (D.f[ dPM0 ])[kse ] = mfacb;// - c1over54 ; + (D.f[ dMP0 ])[knw ] = mfcab;// - c1over54 ; + (D.f[ dP0P ])[kte ] = mfaba;// - c1over54 ; + (D.f[ dM0M ])[kbw ] = mfcbc;// - c1over54 ; + (D.f[ dP0M ])[kbe ] = mfabc;// - c1over54 ; + (D.f[ dM0P ])[ktw ] = mfcba;// - c1over54 ; + (D.f[ d0PP ])[ktn ] = mfbaa;// - c1over54 ; + (D.f[ d0MM ])[kbs ] = mfbcc;// - c1over54 ; + (D.f[ d0PM ])[kbn ] = mfbac;// - c1over54 ; + (D.f[ d0MP ])[kts ] = mfbca;// - c1over54 ; + (D.f[ d000])[kzero] = mfbbb;// - c8over27 ; + (D.f[ dPPP ])[ktne ] = mfaaa;// - c1over216; + (D.f[ dPMP ])[ktse ] = mfaca;// - c1over216; + (D.f[ dPPM ])[kbne ] = mfaac;// - c1over216; + (D.f[ dPMM ])[kbse ] = mfacc;// - c1over216; + (D.f[ dMPP ])[ktnw ] = mfcaa;// - c1over216; + (D.f[ dMMP ])[ktsw ] = mfcca;// - c1over216; + (D.f[ dMPM ])[kbnw ] = mfcac;// - c1over216; + (D.f[ dMMM ])[kbsw ] = mfccc;// - c1over216; //////////////////////////////////////////////////////////////////////////////////// } } @@ -1714,63 +1714,63 @@ __global__ void LB_Kernel_Casc_SP_MS_OHM_27( real omega, Distributions27 D; if (EvenOrOdd==true) { - D.f[DIR_P00] = &DDStart[DIR_P00 * numberOfLBnodes]; - D.f[DIR_M00] = &DDStart[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0P0] = &DDStart[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0M0] = &DDStart[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00P] = &DDStart[DIR_00P * numberOfLBnodes]; - D.f[DIR_00M] = &DDStart[DIR_00M * numberOfLBnodes]; - D.f[DIR_PP0] = &DDStart[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_MM0] = &DDStart[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DDStart[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DDStart[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_P0P] = &DDStart[DIR_P0P * numberOfLBnodes]; - D.f[DIR_M0M] = &DDStart[DIR_M0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DDStart[DIR_P0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DDStart[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0PP] = &DDStart[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0MM] = &DDStart[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0PM] = &DDStart[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0MP] = &DDStart[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DDStart[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DDStart[DIR_PPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DDStart[DIR_MMP * numberOfLBnodes]; - D.f[DIR_PMP] = &DDStart[DIR_PMP * numberOfLBnodes]; - D.f[DIR_MPP] = &DDStart[DIR_MPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DDStart[DIR_PPM * numberOfLBnodes]; - D.f[DIR_MMM] = &DDStart[DIR_MMM * numberOfLBnodes]; - D.f[DIR_PMM] = &DDStart[DIR_PMM * numberOfLBnodes]; - D.f[DIR_MPM] = &DDStart[DIR_MPM * numberOfLBnodes]; + D.f[dP00] = &DDStart[dP00 * numberOfLBnodes]; + D.f[dM00] = &DDStart[dM00 * numberOfLBnodes]; + D.f[d0P0] = &DDStart[d0P0 * numberOfLBnodes]; + D.f[d0M0] = &DDStart[d0M0 * numberOfLBnodes]; + D.f[d00P] = &DDStart[d00P * numberOfLBnodes]; + D.f[d00M] = &DDStart[d00M * numberOfLBnodes]; + D.f[dPP0] = &DDStart[dPP0 * numberOfLBnodes]; + D.f[dMM0] = &DDStart[dMM0 * numberOfLBnodes]; + D.f[dPM0] = &DDStart[dPM0 * numberOfLBnodes]; + D.f[dMP0] = &DDStart[dMP0 * numberOfLBnodes]; + D.f[dP0P] = &DDStart[dP0P * numberOfLBnodes]; + D.f[dM0M] = &DDStart[dM0M * numberOfLBnodes]; + D.f[dP0M] = &DDStart[dP0M * numberOfLBnodes]; + D.f[dM0P] = &DDStart[dM0P * numberOfLBnodes]; + D.f[d0PP] = &DDStart[d0PP * numberOfLBnodes]; + D.f[d0MM] = &DDStart[d0MM * numberOfLBnodes]; + D.f[d0PM] = &DDStart[d0PM * numberOfLBnodes]; + D.f[d0MP] = &DDStart[d0MP * numberOfLBnodes]; + D.f[d000] = &DDStart[d000 * numberOfLBnodes]; + D.f[dPPP] = &DDStart[dPPP * numberOfLBnodes]; + D.f[dMMP] = &DDStart[dMMP * numberOfLBnodes]; + D.f[dPMP] = &DDStart[dPMP * numberOfLBnodes]; + D.f[dMPP] = &DDStart[dMPP * numberOfLBnodes]; + D.f[dPPM] = &DDStart[dPPM * numberOfLBnodes]; + D.f[dMMM] = &DDStart[dMMM * numberOfLBnodes]; + D.f[dPMM] = &DDStart[dPMM * numberOfLBnodes]; + D.f[dMPM] = &DDStart[dMPM * numberOfLBnodes]; } else { - D.f[DIR_M00] = &DDStart[DIR_P00 * numberOfLBnodes]; - D.f[DIR_P00] = &DDStart[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0M0] = &DDStart[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0P0] = &DDStart[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00M] = &DDStart[DIR_00P * numberOfLBnodes]; - D.f[DIR_00P] = &DDStart[DIR_00M * numberOfLBnodes]; - D.f[DIR_MM0] = &DDStart[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_PP0] = &DDStart[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DDStart[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DDStart[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_M0M] = &DDStart[DIR_P0P * numberOfLBnodes]; - D.f[DIR_P0P] = &DDStart[DIR_M0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DDStart[DIR_P0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DDStart[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0MM] = &DDStart[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0PP] = &DDStart[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0MP] = &DDStart[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0PM] = &DDStart[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DDStart[DIR_000 * numberOfLBnodes]; - D.f[DIR_MMM] = &DDStart[DIR_PPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DDStart[DIR_MMP * numberOfLBnodes]; - D.f[DIR_MPM] = &DDStart[DIR_PMP * numberOfLBnodes]; - D.f[DIR_PMM] = &DDStart[DIR_MPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DDStart[DIR_PPM * numberOfLBnodes]; - D.f[DIR_PPP] = &DDStart[DIR_MMM * numberOfLBnodes]; - D.f[DIR_MPP] = &DDStart[DIR_PMM * numberOfLBnodes]; - D.f[DIR_PMP] = &DDStart[DIR_MPM * numberOfLBnodes]; + D.f[dM00] = &DDStart[dP00 * numberOfLBnodes]; + D.f[dP00] = &DDStart[dM00 * numberOfLBnodes]; + D.f[d0M0] = &DDStart[d0P0 * numberOfLBnodes]; + D.f[d0P0] = &DDStart[d0M0 * numberOfLBnodes]; + D.f[d00M] = &DDStart[d00P * numberOfLBnodes]; + D.f[d00P] = &DDStart[d00M * numberOfLBnodes]; + D.f[dMM0] = &DDStart[dPP0 * numberOfLBnodes]; + D.f[dPP0] = &DDStart[dMM0 * numberOfLBnodes]; + D.f[dMP0] = &DDStart[dPM0 * numberOfLBnodes]; + D.f[dPM0] = &DDStart[dMP0 * numberOfLBnodes]; + D.f[dM0M] = &DDStart[dP0P * numberOfLBnodes]; + D.f[dP0P] = &DDStart[dM0M * numberOfLBnodes]; + D.f[dM0P] = &DDStart[dP0M * numberOfLBnodes]; + D.f[dP0M] = &DDStart[dM0P * numberOfLBnodes]; + D.f[d0MM] = &DDStart[d0PP * numberOfLBnodes]; + D.f[d0PP] = &DDStart[d0MM * numberOfLBnodes]; + D.f[d0MP] = &DDStart[d0PM * numberOfLBnodes]; + D.f[d0PM] = &DDStart[d0MP * numberOfLBnodes]; + D.f[d000] = &DDStart[d000 * numberOfLBnodes]; + D.f[dMMM] = &DDStart[dPPP * numberOfLBnodes]; + D.f[dPPM] = &DDStart[dMMP * numberOfLBnodes]; + D.f[dMPM] = &DDStart[dPMP * numberOfLBnodes]; + D.f[dPMM] = &DDStart[dMPP * numberOfLBnodes]; + D.f[dMMP] = &DDStart[dPPM * numberOfLBnodes]; + D.f[dPPP] = &DDStart[dMMM * numberOfLBnodes]; + D.f[dMPP] = &DDStart[dPMM * numberOfLBnodes]; + D.f[dPMP] = &DDStart[dMPM * numberOfLBnodes]; } //////////////////////////////////////////////////////////////////////////////// @@ -1803,33 +1803,33 @@ __global__ void LB_Kernel_Casc_SP_MS_OHM_27( real omega, //unsigned int ktne = k; unsigned int kbsw = neighborZ[ksw]; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real fE = (D.f[DIR_P00])[k ];//ke - real fW = (D.f[DIR_M00])[kw ]; - real fN = (D.f[DIR_0P0])[k ];//kn - real fS = (D.f[DIR_0M0])[ks ]; - real fT = (D.f[DIR_00P])[k ];//kt - real fB = (D.f[DIR_00M])[kb ]; - real fNE = (D.f[DIR_PP0])[k ];//kne - real fSW = (D.f[DIR_MM0])[ksw]; - real fSE = (D.f[DIR_PM0])[ks ];//kse - real fNW = (D.f[DIR_MP0])[kw ];//knw - real fTE = (D.f[DIR_P0P])[k ];//kte - real fBW = (D.f[DIR_M0M])[kbw]; - real fBE = (D.f[DIR_P0M])[kb ];//kbe - real fTW = (D.f[DIR_M0P])[kw ];//ktw - real fTN = (D.f[DIR_0PP])[k ];//ktn - real fBS = (D.f[DIR_0MM])[kbs]; - real fBN = (D.f[DIR_0PM])[kb ];//kbn - real fTS = (D.f[DIR_0MP])[ks ];//kts - real fZERO = (D.f[DIR_000])[k ];//kzero - real fTNE = (D.f[DIR_PPP])[k ];//ktne - real fTSW = (D.f[DIR_MMP])[ksw];//ktsw - real fTSE = (D.f[DIR_PMP])[ks ];//ktse - real fTNW = (D.f[DIR_MPP])[kw ];//ktnw - real fBNE = (D.f[DIR_PPM])[kb ];//kbne - real fBSW = (D.f[DIR_MMM])[kbsw]; - real fBSE = (D.f[DIR_PMM])[kbs];//kbse - real fBNW = (D.f[DIR_MPM])[kbw];//kbnw + real fE = (D.f[dP00])[k ];//ke + real fW = (D.f[dM00])[kw ]; + real fN = (D.f[d0P0])[k ];//kn + real fS = (D.f[d0M0])[ks ]; + real fT = (D.f[d00P])[k ];//kt + real fB = (D.f[d00M])[kb ]; + real fNE = (D.f[dPP0])[k ];//kne + real fSW = (D.f[dMM0])[ksw]; + real fSE = (D.f[dPM0])[ks ];//kse + real fNW = (D.f[dMP0])[kw ];//knw + real fTE = (D.f[dP0P])[k ];//kte + real fBW = (D.f[dM0M])[kbw]; + real fBE = (D.f[dP0M])[kb ];//kbe + real fTW = (D.f[dM0P])[kw ];//ktw + real fTN = (D.f[d0PP])[k ];//ktn + real fBS = (D.f[d0MM])[kbs]; + real fBN = (D.f[d0PM])[kb ];//kbn + real fTS = (D.f[d0MP])[ks ];//kts + real fZERO = (D.f[d000])[k ];//kzero + real fTNE = (D.f[dPPP])[k ];//ktne + real fTSW = (D.f[dMMP])[ksw];//ktsw + real fTSE = (D.f[dPMP])[ks ];//ktse + real fTNW = (D.f[dMPP])[kw ];//ktnw + real fBNE = (D.f[dPPM])[kb ];//kbne + real fBSW = (D.f[dMMM])[kbsw]; + real fBSE = (D.f[dPMM])[kbs];//kbse + real fBNW = (D.f[dMPM])[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; @@ -2185,92 +2185,92 @@ __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[ DIR_P00 ])[k ] = c1o2*rho*( mu200 - mu220 + mu222 - mu202 + mu120 - mu122 + mu102 - vx ); //ke - //(D.f[ DIR_M00 ])[kw ] = c1o2*rho*( mu200 - mu220 + mu222 - mu202 - mu120 + mu122 - mu102 + vx ); - //(D.f[ DIR_0P0 ])[k ] = c1o2*rho*( mu210 - mu220 + mu222 - mu212 + mu020 - mu022 + mu012 - vy ); //kn - //(D.f[ DIR_0M0 ])[ks ] = c1o2*rho*(-mu210 - mu220 + mu222 + mu212 + mu020 - mu022 - mu012 + vy ); - //(D.f[ DIR_00P ])[k ] = c1o2*rho*(-mu221 + mu222 + mu201 - mu202 + mu021 - mu022 + mu002 - vz ); //kt - //(D.f[ DIR_00M ])[kb ] = c1o2*rho*( mu221 + mu222 - mu201 - mu202 - mu021 - mu022 + mu002 + vz ); - //(D.f[ DIR_PP0 ])[k ] = c1o4*rho*(-mu210 + mu220 - mu222 + mu212 + mu110 - mu120 + mu122 - mu112); //kne - //(D.f[ DIR_MM0 ])[ksw ] = c1o4*rho*( mu210 + mu220 - mu222 - mu212 + mu110 + mu120 - mu122 - mu112); - //(D.f[ DIR_PM0 ])[ks ] = c1o4*rho*( mu210 + mu220 - mu222 - mu212 - mu110 - mu120 + mu122 + mu112); //kse - //(D.f[ DIR_MP0 ])[kw ] = c1o4*rho*(-mu210 + mu220 - mu222 + mu212 - mu110 + mu120 - mu122 + mu112); //knw - //(D.f[ DIR_P0P ])[k ] = c1o4*rho*( mu221 - mu222 - mu201 + mu202 - mu121 + mu122 + mu101 - mu102); //kte - //(D.f[ DIR_M0M ])[kbw ] = c1o4*rho*(-mu221 - mu222 + mu201 + mu202 - mu121 - mu122 + mu101 + mu102); - //(D.f[ DIR_P0M ])[kb ] = c1o4*rho*(-mu221 - mu222 + mu201 + mu202 + mu121 + mu122 - mu101 - mu102); //kbe - //(D.f[ DIR_M0P ])[kw ] = c1o4*rho*( mu221 - mu222 - mu201 + mu202 + mu121 - mu122 - mu101 + mu102); //ktw - //(D.f[ DIR_0PP ])[k ] = c1o4*rho*( mu221 - mu222 - mu211 + mu212 - mu021 + mu022 + mu011 - mu012); //ktn - //(D.f[ DIR_0MM ])[kbs ] = c1o4*rho*(-mu221 - mu222 - mu211 - mu212 + mu021 + mu022 + mu011 + mu012); - //(D.f[ DIR_0PM ])[kb ] = c1o4*rho*(-mu221 - mu222 + mu211 + mu212 + mu021 + mu022 - mu011 - mu012); //kbn - //(D.f[ DIR_0MP ])[ks ] = c1o4*rho*( mu221 - mu222 + mu211 - mu212 - mu021 + mu022 - mu011 + mu012); //kts - //(D.f[ DIR_000])[k ] = rho*(-mu200 + mu220 - mu222 + mu202 - mu020 + mu022 - mu002 )+rho0; //kzero - //(D.f[ DIR_PPP ])[k ] = c1o8*rho*(-mu221 + mu222 + mu211 - mu212 + mu121 - mu122 - mu111 + mu112); //ktne - //(D.f[ DIR_PMP ])[ks ] = c1o8*rho*(-mu221 + mu222 - mu211 + mu212 + mu121 - mu122 + mu111 - mu112); //ktse - //(D.f[ DIR_PPM ])[kb ] = c1o8*rho*( mu221 + mu222 - mu211 - mu212 - mu121 - mu122 + mu111 + mu112); //kbne - //(D.f[ DIR_PMM ])[kbs ] = c1o8*rho*( mu221 + mu222 + mu211 + mu212 - mu121 - mu122 - mu111 - mu112); //kbse - //(D.f[ DIR_MPP ])[kw ] = c1o8*rho*(-mu221 + mu222 + mu211 - mu212 - mu121 + mu122 + mu111 - mu112); //ktnw - //(D.f[ DIR_MMP ])[ksw ] = c1o8*rho*(-mu221 + mu222 - mu211 + mu212 - mu121 + mu122 - mu111 + mu112); //ktsw - //(D.f[ DIR_MPM ])[kbw ] = c1o8*rho*( mu221 + mu222 - mu211 - mu212 + mu121 + mu122 - mu111 - mu112); //kbnw - //(D.f[ DIR_MMM ])[kbsw] = c1o8*rho*( mu221 + mu222 + mu211 + mu212 + mu121 + mu122 + mu111 + mu112); - (D.f[ DIR_P00 ])[k ] = c1o2*rho*(+ mu222 + ( - mu220 - mu202 ) + ( + mu200 ) + ( - mu122) + ( + mu102 + mu120) + ( - vx ) ); //ke - (D.f[ DIR_M00 ])[kw ] = c1o2*rho*(+ mu222 + ( - mu220 - mu202 ) + ( + mu200 ) + ( + mu122) + ( - mu102 - mu120) + ( + vx ) ); - (D.f[ DIR_0P0 ])[k ] = c1o2*rho*(+ mu222 + ( - mu220 - mu022) + ( + mu020 ) + ( - mu212 ) + ( + mu012 + mu210 ) + ( - vy ) ); //kn - (D.f[ DIR_0M0 ])[ks ] = c1o2*rho*(+ mu222 + ( - mu220 - mu022) + ( + mu020 ) + ( + mu212 ) + ( - mu012 - mu210 ) + ( + vy ) ); - (D.f[ DIR_00P ])[k ] = c1o2*rho*(+ mu222 + ( - mu202 - mu022) + ( + mu002) + ( - mu221 ) + ( + mu201 + mu021 ) + ( - vz ) ); //kt - (D.f[ DIR_00M ])[kb ] = c1o2*rho*(+ mu222 + ( - mu202 - mu022) + ( + mu002) + ( + mu221 ) + ( - mu201 - mu021 ) + ( + vz ) ); - (D.f[ DIR_PP0 ])[k ] = c1o4*rho*(- mu222 + ( - mu112 + mu220 ) + (+ mu110 ) + ( + mu212 + mu122) + ( - mu210 - mu120) ); //kne - (D.f[ DIR_MM0 ])[ksw ] = c1o4*rho*(- mu222 + ( - mu112 + mu220 ) + (+ mu110 ) + ( - mu212 - mu122) + ( + mu210 + mu120) ); - (D.f[ DIR_PM0 ])[ks ] = c1o4*rho*(- mu222 + ( + mu112 + mu220 ) + (- mu110 ) + ( - mu212 + mu122) + ( + mu210 - mu120) ); //kse - (D.f[ DIR_MP0 ])[kw ] = c1o4*rho*(- mu222 + ( + mu112 + mu220 ) + (- mu110 ) + ( + mu212 - mu122) + ( - mu210 + mu120) ); //knw - (D.f[ DIR_P0P ])[k ] = c1o4*rho*(- mu222 + ( - mu121 + mu202 ) + ( + mu101 ) + ( + mu221 + mu122) + ( - mu201 - mu102 ) ); //kte - (D.f[ DIR_M0M ])[kbw ] = c1o4*rho*(- mu222 + ( - mu121 + mu202 ) + ( + mu101 ) + ( - mu221 - mu122) + ( + mu201 + mu102 ) ); - (D.f[ DIR_P0M ])[kb ] = c1o4*rho*(- mu222 + ( + mu121 + mu202 ) + ( - mu101 ) + ( - mu221 + mu122) + ( + mu201 - mu102 ) ); //kbe - (D.f[ DIR_M0P ])[kw ] = c1o4*rho*(- mu222 + ( + mu121 + mu202 ) + ( - mu101 ) + ( + mu221 - mu122) + ( - mu201 + mu102 ) ); //ktw - (D.f[ DIR_0PP ])[k ] = c1o4*rho*(- mu222 + (- mu211 + mu022) + ( + mu011 ) + ( + mu221 + mu212 ) + ( - mu021 - mu012 ) ); //ktn - (D.f[ DIR_0MM ])[kbs ] = c1o4*rho*(- mu222 + (- mu211 + mu022) + ( + mu011 ) + ( - mu221 - mu212 ) + ( + mu021 + mu012 ) ); - (D.f[ DIR_0PM ])[kb ] = c1o4*rho*(- mu222 + (+ mu211 + mu022) + ( - mu011 ) + ( - mu221 + mu212 ) + ( + mu021 - mu012 ) ); //kbn - (D.f[ DIR_0MP ])[ks ] = c1o4*rho*(- mu222 + (+ mu211 + mu022) + ( - mu011 ) + ( + mu221 - mu212 ) + ( - mu021 + mu012 ) ); //kts - (D.f[ DIR_000])[k ] = rho*(- mu222 + ( + mu220 + mu202 + mu022) + ( - mu200 - mu020 - mu002) )+rho0; //kzero - (D.f[ DIR_PPP ])[k ] = c1o8*rho*(+ mu222 + (+ mu211 + mu121 + mu112 ) + ( - mu221 - mu212 - mu122) + ( - mu111 ) ); //ktne - (D.f[ DIR_PMP ])[ks ] = c1o8*rho*(+ mu222 + (- mu211 + mu121 - mu112 ) + ( - mu221 + mu212 - mu122) + ( + mu111 ) ); //ktse - (D.f[ DIR_PPM ])[kb ] = c1o8*rho*(+ mu222 + (- mu211 - mu121 + mu112 ) + ( + mu221 - mu212 - mu122) + ( + mu111 ) ); //kbne - (D.f[ DIR_PMM ])[kbs ] = c1o8*rho*(+ mu222 + (+ mu211 - mu121 - mu112 ) + ( + mu221 + mu212 - mu122) + ( - mu111 ) ); //kbse - (D.f[ DIR_MPP ])[kw ] = c1o8*rho*(+ mu222 + (+ mu211 - mu121 - mu112 ) + ( - mu221 - mu212 + mu122) + ( + mu111 ) ); //ktnw - (D.f[ DIR_MMP ])[ksw ] = c1o8*rho*(+ mu222 + (- mu211 - mu121 + mu112 ) + ( - mu221 + mu212 + mu122) + ( - mu111 ) ); //ktsw - (D.f[ DIR_MPM ])[kbw ] = c1o8*rho*(+ mu222 + (- mu211 + mu121 - mu112 ) + ( + mu221 - mu212 + mu122) + ( - mu111 ) ); //kbnw - (D.f[ DIR_MMM ])[kbsw] = c1o8*rho*(+ mu222 + (+ mu211 + mu121 + mu112 ) + ( + mu221 + mu212 + mu122) + ( + mu111 ) ); + //(D.f[ dP00 ])[k ] = c1o2*rho*( mu200 - mu220 + mu222 - mu202 + mu120 - mu122 + mu102 - vx ); //ke + //(D.f[ dM00 ])[kw ] = c1o2*rho*( mu200 - mu220 + mu222 - mu202 - mu120 + mu122 - mu102 + vx ); + //(D.f[ d0P0 ])[k ] = c1o2*rho*( mu210 - mu220 + mu222 - mu212 + mu020 - mu022 + mu012 - vy ); //kn + //(D.f[ d0M0 ])[ks ] = c1o2*rho*(-mu210 - mu220 + mu222 + mu212 + mu020 - mu022 - mu012 + vy ); + //(D.f[ d00P ])[k ] = c1o2*rho*(-mu221 + mu222 + mu201 - mu202 + mu021 - mu022 + mu002 - vz ); //kt + //(D.f[ d00M ])[kb ] = c1o2*rho*( mu221 + mu222 - mu201 - mu202 - mu021 - mu022 + mu002 + vz ); + //(D.f[ dPP0 ])[k ] = c1o4*rho*(-mu210 + mu220 - mu222 + mu212 + mu110 - mu120 + mu122 - mu112); //kne + //(D.f[ dMM0 ])[ksw ] = c1o4*rho*( mu210 + mu220 - mu222 - mu212 + mu110 + mu120 - mu122 - mu112); + //(D.f[ dPM0 ])[ks ] = c1o4*rho*( mu210 + mu220 - mu222 - mu212 - mu110 - mu120 + mu122 + mu112); //kse + //(D.f[ dMP0 ])[kw ] = c1o4*rho*(-mu210 + mu220 - mu222 + mu212 - mu110 + mu120 - mu122 + mu112); //knw + //(D.f[ dP0P ])[k ] = c1o4*rho*( mu221 - mu222 - mu201 + mu202 - mu121 + mu122 + mu101 - mu102); //kte + //(D.f[ dM0M ])[kbw ] = c1o4*rho*(-mu221 - mu222 + mu201 + mu202 - mu121 - mu122 + mu101 + mu102); + //(D.f[ dP0M ])[kb ] = c1o4*rho*(-mu221 - mu222 + mu201 + mu202 + mu121 + mu122 - mu101 - mu102); //kbe + //(D.f[ dM0P ])[kw ] = c1o4*rho*( mu221 - mu222 - mu201 + mu202 + mu121 - mu122 - mu101 + mu102); //ktw + //(D.f[ d0PP ])[k ] = c1o4*rho*( mu221 - mu222 - mu211 + mu212 - mu021 + mu022 + mu011 - mu012); //ktn + //(D.f[ d0MM ])[kbs ] = c1o4*rho*(-mu221 - mu222 - mu211 - mu212 + mu021 + mu022 + mu011 + mu012); + //(D.f[ d0PM ])[kb ] = c1o4*rho*(-mu221 - mu222 + mu211 + mu212 + mu021 + mu022 - mu011 - mu012); //kbn + //(D.f[ d0MP ])[ks ] = c1o4*rho*( mu221 - mu222 + mu211 - mu212 - mu021 + mu022 - mu011 + mu012); //kts + //(D.f[ d000])[k ] = rho*(-mu200 + mu220 - mu222 + mu202 - mu020 + mu022 - mu002 )+rho0; //kzero + //(D.f[ dPPP ])[k ] = c1o8*rho*(-mu221 + mu222 + mu211 - mu212 + mu121 - mu122 - mu111 + mu112); //ktne + //(D.f[ dPMP ])[ks ] = c1o8*rho*(-mu221 + mu222 - mu211 + mu212 + mu121 - mu122 + mu111 - mu112); //ktse + //(D.f[ dPPM ])[kb ] = c1o8*rho*( mu221 + mu222 - mu211 - mu212 - mu121 - mu122 + mu111 + mu112); //kbne + //(D.f[ dPMM ])[kbs ] = c1o8*rho*( mu221 + mu222 + mu211 + mu212 - mu121 - mu122 - mu111 - mu112); //kbse + //(D.f[ dMPP ])[kw ] = c1o8*rho*(-mu221 + mu222 + mu211 - mu212 - mu121 + mu122 + mu111 - mu112); //ktnw + //(D.f[ dMMP ])[ksw ] = c1o8*rho*(-mu221 + mu222 - mu211 + mu212 - mu121 + mu122 - mu111 + mu112); //ktsw + //(D.f[ dMPM ])[kbw ] = c1o8*rho*( mu221 + mu222 - mu211 - mu212 + mu121 + mu122 - mu111 - mu112); //kbnw + //(D.f[ dMMM ])[kbsw] = c1o8*rho*( mu221 + mu222 + mu211 + mu212 + mu121 + mu122 + mu111 + mu112); + (D.f[ dP00 ])[k ] = c1o2*rho*(+ mu222 + ( - mu220 - mu202 ) + ( + mu200 ) + ( - mu122) + ( + mu102 + mu120) + ( - vx ) ); //ke + (D.f[ dM00 ])[kw ] = c1o2*rho*(+ mu222 + ( - mu220 - mu202 ) + ( + mu200 ) + ( + mu122) + ( - mu102 - mu120) + ( + vx ) ); + (D.f[ d0P0 ])[k ] = c1o2*rho*(+ mu222 + ( - mu220 - mu022) + ( + mu020 ) + ( - mu212 ) + ( + mu012 + mu210 ) + ( - vy ) ); //kn + (D.f[ d0M0 ])[ks ] = c1o2*rho*(+ mu222 + ( - mu220 - mu022) + ( + mu020 ) + ( + mu212 ) + ( - mu012 - mu210 ) + ( + vy ) ); + (D.f[ d00P ])[k ] = c1o2*rho*(+ mu222 + ( - mu202 - mu022) + ( + mu002) + ( - mu221 ) + ( + mu201 + mu021 ) + ( - vz ) ); //kt + (D.f[ d00M ])[kb ] = c1o2*rho*(+ mu222 + ( - mu202 - mu022) + ( + mu002) + ( + mu221 ) + ( - mu201 - mu021 ) + ( + vz ) ); + (D.f[ dPP0 ])[k ] = c1o4*rho*(- mu222 + ( - mu112 + mu220 ) + (+ mu110 ) + ( + mu212 + mu122) + ( - mu210 - mu120) ); //kne + (D.f[ dMM0 ])[ksw ] = c1o4*rho*(- mu222 + ( - mu112 + mu220 ) + (+ mu110 ) + ( - mu212 - mu122) + ( + mu210 + mu120) ); + (D.f[ dPM0 ])[ks ] = c1o4*rho*(- mu222 + ( + mu112 + mu220 ) + (- mu110 ) + ( - mu212 + mu122) + ( + mu210 - mu120) ); //kse + (D.f[ dMP0 ])[kw ] = c1o4*rho*(- mu222 + ( + mu112 + mu220 ) + (- mu110 ) + ( + mu212 - mu122) + ( - mu210 + mu120) ); //knw + (D.f[ dP0P ])[k ] = c1o4*rho*(- mu222 + ( - mu121 + mu202 ) + ( + mu101 ) + ( + mu221 + mu122) + ( - mu201 - mu102 ) ); //kte + (D.f[ dM0M ])[kbw ] = c1o4*rho*(- mu222 + ( - mu121 + mu202 ) + ( + mu101 ) + ( - mu221 - mu122) + ( + mu201 + mu102 ) ); + (D.f[ dP0M ])[kb ] = c1o4*rho*(- mu222 + ( + mu121 + mu202 ) + ( - mu101 ) + ( - mu221 + mu122) + ( + mu201 - mu102 ) ); //kbe + (D.f[ dM0P ])[kw ] = c1o4*rho*(- mu222 + ( + mu121 + mu202 ) + ( - mu101 ) + ( + mu221 - mu122) + ( - mu201 + mu102 ) ); //ktw + (D.f[ d0PP ])[k ] = c1o4*rho*(- mu222 + (- mu211 + mu022) + ( + mu011 ) + ( + mu221 + mu212 ) + ( - mu021 - mu012 ) ); //ktn + (D.f[ d0MM ])[kbs ] = c1o4*rho*(- mu222 + (- mu211 + mu022) + ( + mu011 ) + ( - mu221 - mu212 ) + ( + mu021 + mu012 ) ); + (D.f[ d0PM ])[kb ] = c1o4*rho*(- mu222 + (+ mu211 + mu022) + ( - mu011 ) + ( - mu221 + mu212 ) + ( + mu021 - mu012 ) ); //kbn + (D.f[ d0MP ])[ks ] = c1o4*rho*(- mu222 + (+ mu211 + mu022) + ( - mu011 ) + ( + mu221 - mu212 ) + ( - mu021 + mu012 ) ); //kts + (D.f[ d000])[k ] = rho*(- mu222 + ( + mu220 + mu202 + mu022) + ( - mu200 - mu020 - mu002) )+rho0; //kzero + (D.f[ dPPP ])[k ] = c1o8*rho*(+ mu222 + (+ mu211 + mu121 + mu112 ) + ( - mu221 - mu212 - mu122) + ( - mu111 ) ); //ktne + (D.f[ dPMP ])[ks ] = c1o8*rho*(+ mu222 + (- mu211 + mu121 - mu112 ) + ( - mu221 + mu212 - mu122) + ( + mu111 ) ); //ktse + (D.f[ dPPM ])[kb ] = c1o8*rho*(+ mu222 + (- mu211 - mu121 + mu112 ) + ( + mu221 - mu212 - mu122) + ( + mu111 ) ); //kbne + (D.f[ dPMM ])[kbs ] = c1o8*rho*(+ mu222 + (+ mu211 - mu121 - mu112 ) + ( + mu221 + mu212 - mu122) + ( - mu111 ) ); //kbse + (D.f[ dMPP ])[kw ] = c1o8*rho*(+ mu222 + (+ mu211 - mu121 - mu112 ) + ( - mu221 - mu212 + mu122) + ( + mu111 ) ); //ktnw + (D.f[ dMMP ])[ksw ] = c1o8*rho*(+ mu222 + (- mu211 - mu121 + mu112 ) + ( - mu221 + mu212 + mu122) + ( - mu111 ) ); //ktsw + (D.f[ dMPM ])[kbw ] = c1o8*rho*(+ mu222 + (- mu211 + mu121 - mu112 ) + ( + mu221 - mu212 + mu122) + ( - mu111 ) ); //kbnw + (D.f[ dMMM ])[kbsw] = c1o8*rho*(+ mu222 + (+ mu211 + mu121 + mu112 ) + ( + mu221 + mu212 + mu122) + ( + mu111 ) ); ////////////////////////////////////////////////////////////////////////// //BGK ////////////////////////////////////////////////////////////////////////// - //(D.f[ DIR_P00 ])[k ] = fW ; - //(D.f[ DIR_M00 ])[kw ] = fE ; - //(D.f[ DIR_0P0 ])[k ] = fS ; - //(D.f[ DIR_0M0 ])[ks ] = fN ; - //(D.f[ DIR_00P ])[k ] = fB ; - //(D.f[ DIR_00M ])[kb ] = fT ; - //(D.f[ DIR_PP0 ])[k ] = fSW ; - //(D.f[ DIR_MM0 ])[ksw ] = fNE ; - //(D.f[ DIR_PM0 ])[ks ] = fNW ; - //(D.f[ DIR_MP0 ])[kw ] = fSE ; - //(D.f[ DIR_P0P ])[k ] = fBW ; - //(D.f[ DIR_M0M ])[kbw ] = fTE ; - //(D.f[ DIR_P0M ])[kb ] = fTW ; - //(D.f[ DIR_M0P ])[kw ] = fBE ; - //(D.f[ DIR_0PP ])[k ] = fBS ; - //(D.f[ DIR_0MM ])[kbs ] = fTN ; - //(D.f[ DIR_0PM ])[kb ] = fTS ; - //(D.f[ DIR_0MP ])[ks ] = fBN ; - //(D.f[ DIR_000])[k ] = fZERO ; - //(D.f[ DIR_PPP ])[k ] = fBSW ; - //(D.f[ DIR_PMP ])[ks ] = fBNW ; - //(D.f[ DIR_PPM ])[kb ] = fTSW ; - //(D.f[ DIR_PMM ])[kbs ] = fTNW ; - //(D.f[ DIR_MPP ])[kw ] = fBSE ; - //(D.f[ DIR_MMP ])[ksw ] = fBNE ; - //(D.f[ DIR_MPM ])[kbw ] = fTSE ; - //(D.f[ DIR_MMM ])[kbsw] = fTNE ; + //(D.f[ dP00 ])[k ] = fW ; + //(D.f[ dM00 ])[kw ] = fE ; + //(D.f[ d0P0 ])[k ] = fS ; + //(D.f[ d0M0 ])[ks ] = fN ; + //(D.f[ d00P ])[k ] = fB ; + //(D.f[ d00M ])[kb ] = fT ; + //(D.f[ dPP0 ])[k ] = fSW ; + //(D.f[ dMM0 ])[ksw ] = fNE ; + //(D.f[ dPM0 ])[ks ] = fNW ; + //(D.f[ dMP0 ])[kw ] = fSE ; + //(D.f[ dP0P ])[k ] = fBW ; + //(D.f[ dM0M ])[kbw ] = fTE ; + //(D.f[ dP0M ])[kb ] = fTW ; + //(D.f[ dM0P ])[kw ] = fBE ; + //(D.f[ d0PP ])[k ] = fBS ; + //(D.f[ d0MM ])[kbs ] = fTN ; + //(D.f[ d0PM ])[kb ] = fTS ; + //(D.f[ d0MP ])[ks ] = fBN ; + //(D.f[ d000])[k ] = fZERO ; + //(D.f[ dPPP ])[k ] = fBSW ; + //(D.f[ dPMP ])[ks ] = fBNW ; + //(D.f[ dPPM ])[kb ] = fTSW ; + //(D.f[ dPMM ])[kbs ] = fTNW ; + //(D.f[ dMPP ])[kw ] = fBSE ; + //(D.f[ dMMP ])[ksw ] = fBNE ; + //(D.f[ dMPM ])[kbw ] = fTSE ; + //(D.f[ dMMM ])[kbsw] = fTNE ; } } } @@ -2346,63 +2346,63 @@ __global__ void LB_Kernel_Casc_SP_MS_27( real omega, Distributions27 D; if (EvenOrOdd==true) { - D.f[DIR_P00] = &DDStart[DIR_P00 * numberOfLBnodes]; - D.f[DIR_M00] = &DDStart[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0P0] = &DDStart[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0M0] = &DDStart[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00P] = &DDStart[DIR_00P * numberOfLBnodes]; - D.f[DIR_00M] = &DDStart[DIR_00M * numberOfLBnodes]; - D.f[DIR_PP0] = &DDStart[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_MM0] = &DDStart[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DDStart[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DDStart[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_P0P] = &DDStart[DIR_P0P * numberOfLBnodes]; - D.f[DIR_M0M] = &DDStart[DIR_M0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DDStart[DIR_P0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DDStart[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0PP] = &DDStart[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0MM] = &DDStart[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0PM] = &DDStart[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0MP] = &DDStart[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DDStart[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DDStart[DIR_PPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DDStart[DIR_MMP * numberOfLBnodes]; - D.f[DIR_PMP] = &DDStart[DIR_PMP * numberOfLBnodes]; - D.f[DIR_MPP] = &DDStart[DIR_MPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DDStart[DIR_PPM * numberOfLBnodes]; - D.f[DIR_MMM] = &DDStart[DIR_MMM * numberOfLBnodes]; - D.f[DIR_PMM] = &DDStart[DIR_PMM * numberOfLBnodes]; - D.f[DIR_MPM] = &DDStart[DIR_MPM * numberOfLBnodes]; + D.f[dP00] = &DDStart[dP00 * numberOfLBnodes]; + D.f[dM00] = &DDStart[dM00 * numberOfLBnodes]; + D.f[d0P0] = &DDStart[d0P0 * numberOfLBnodes]; + D.f[d0M0] = &DDStart[d0M0 * numberOfLBnodes]; + D.f[d00P] = &DDStart[d00P * numberOfLBnodes]; + D.f[d00M] = &DDStart[d00M * numberOfLBnodes]; + D.f[dPP0] = &DDStart[dPP0 * numberOfLBnodes]; + D.f[dMM0] = &DDStart[dMM0 * numberOfLBnodes]; + D.f[dPM0] = &DDStart[dPM0 * numberOfLBnodes]; + D.f[dMP0] = &DDStart[dMP0 * numberOfLBnodes]; + D.f[dP0P] = &DDStart[dP0P * numberOfLBnodes]; + D.f[dM0M] = &DDStart[dM0M * numberOfLBnodes]; + D.f[dP0M] = &DDStart[dP0M * numberOfLBnodes]; + D.f[dM0P] = &DDStart[dM0P * numberOfLBnodes]; + D.f[d0PP] = &DDStart[d0PP * numberOfLBnodes]; + D.f[d0MM] = &DDStart[d0MM * numberOfLBnodes]; + D.f[d0PM] = &DDStart[d0PM * numberOfLBnodes]; + D.f[d0MP] = &DDStart[d0MP * numberOfLBnodes]; + D.f[d000] = &DDStart[d000 * numberOfLBnodes]; + D.f[dPPP] = &DDStart[dPPP * numberOfLBnodes]; + D.f[dMMP] = &DDStart[dMMP * numberOfLBnodes]; + D.f[dPMP] = &DDStart[dPMP * numberOfLBnodes]; + D.f[dMPP] = &DDStart[dMPP * numberOfLBnodes]; + D.f[dPPM] = &DDStart[dPPM * numberOfLBnodes]; + D.f[dMMM] = &DDStart[dMMM * numberOfLBnodes]; + D.f[dPMM] = &DDStart[dPMM * numberOfLBnodes]; + D.f[dMPM] = &DDStart[dMPM * numberOfLBnodes]; } else { - D.f[DIR_M00] = &DDStart[DIR_P00 * numberOfLBnodes]; - D.f[DIR_P00] = &DDStart[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0M0] = &DDStart[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0P0] = &DDStart[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00M] = &DDStart[DIR_00P * numberOfLBnodes]; - D.f[DIR_00P] = &DDStart[DIR_00M * numberOfLBnodes]; - D.f[DIR_MM0] = &DDStart[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_PP0] = &DDStart[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DDStart[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DDStart[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_M0M] = &DDStart[DIR_P0P * numberOfLBnodes]; - D.f[DIR_P0P] = &DDStart[DIR_M0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DDStart[DIR_P0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DDStart[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0MM] = &DDStart[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0PP] = &DDStart[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0MP] = &DDStart[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0PM] = &DDStart[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DDStart[DIR_000 * numberOfLBnodes]; - D.f[DIR_MMM] = &DDStart[DIR_PPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DDStart[DIR_MMP * numberOfLBnodes]; - D.f[DIR_MPM] = &DDStart[DIR_PMP * numberOfLBnodes]; - D.f[DIR_PMM] = &DDStart[DIR_MPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DDStart[DIR_PPM * numberOfLBnodes]; - D.f[DIR_PPP] = &DDStart[DIR_MMM * numberOfLBnodes]; - D.f[DIR_MPP] = &DDStart[DIR_PMM * numberOfLBnodes]; - D.f[DIR_PMP] = &DDStart[DIR_MPM * numberOfLBnodes]; + D.f[dM00] = &DDStart[dP00 * numberOfLBnodes]; + D.f[dP00] = &DDStart[dM00 * numberOfLBnodes]; + D.f[d0M0] = &DDStart[d0P0 * numberOfLBnodes]; + D.f[d0P0] = &DDStart[d0M0 * numberOfLBnodes]; + D.f[d00M] = &DDStart[d00P * numberOfLBnodes]; + D.f[d00P] = &DDStart[d00M * numberOfLBnodes]; + D.f[dMM0] = &DDStart[dPP0 * numberOfLBnodes]; + D.f[dPP0] = &DDStart[dMM0 * numberOfLBnodes]; + D.f[dMP0] = &DDStart[dPM0 * numberOfLBnodes]; + D.f[dPM0] = &DDStart[dMP0 * numberOfLBnodes]; + D.f[dM0M] = &DDStart[dP0P * numberOfLBnodes]; + D.f[dP0P] = &DDStart[dM0M * numberOfLBnodes]; + D.f[dM0P] = &DDStart[dP0M * numberOfLBnodes]; + D.f[dP0M] = &DDStart[dM0P * numberOfLBnodes]; + D.f[d0MM] = &DDStart[d0PP * numberOfLBnodes]; + D.f[d0PP] = &DDStart[d0MM * numberOfLBnodes]; + D.f[d0MP] = &DDStart[d0PM * numberOfLBnodes]; + D.f[d0PM] = &DDStart[d0MP * numberOfLBnodes]; + D.f[d000] = &DDStart[d000 * numberOfLBnodes]; + D.f[dMMM] = &DDStart[dPPP * numberOfLBnodes]; + D.f[dPPM] = &DDStart[dMMP * numberOfLBnodes]; + D.f[dMPM] = &DDStart[dPMP * numberOfLBnodes]; + D.f[dPMM] = &DDStart[dMPP * numberOfLBnodes]; + D.f[dMMP] = &DDStart[dPPM * numberOfLBnodes]; + D.f[dPPP] = &DDStart[dMMM * numberOfLBnodes]; + D.f[dMPP] = &DDStart[dPMM * numberOfLBnodes]; + D.f[dPMP] = &DDStart[dMPM * numberOfLBnodes]; } //////////////////////////////////////////////////////////////////////////////// @@ -2435,33 +2435,33 @@ __global__ void LB_Kernel_Casc_SP_MS_27( real omega, //unsigned int ktne = k; unsigned int kbsw = neighborZ[ksw]; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real fE = (D.f[DIR_P00])[k ];//ke - real fW = (D.f[DIR_M00])[kw ]; - real fN = (D.f[DIR_0P0])[k ];//kn - real fS = (D.f[DIR_0M0])[ks ]; - real fT = (D.f[DIR_00P])[k ];//kt - real fB = (D.f[DIR_00M])[kb ]; - real fNE = (D.f[DIR_PP0])[k ];//kne - real fSW = (D.f[DIR_MM0])[ksw]; - real fSE = (D.f[DIR_PM0])[ks ];//kse - real fNW = (D.f[DIR_MP0])[kw ];//knw - real fTE = (D.f[DIR_P0P])[k ];//kte - real fBW = (D.f[DIR_M0M])[kbw]; - real fBE = (D.f[DIR_P0M])[kb ];//kbe - real fTW = (D.f[DIR_M0P])[kw ];//ktw - real fTN = (D.f[DIR_0PP])[k ];//ktn - real fBS = (D.f[DIR_0MM])[kbs]; - real fBN = (D.f[DIR_0PM])[kb ];//kbn - real fTS = (D.f[DIR_0MP])[ks ];//kts - real fZERO = (D.f[DIR_000])[k ];//kzero - real fTNE = (D.f[DIR_PPP])[k ];//ktne - real fTSW = (D.f[DIR_MMP])[ksw];//ktsw - real fTSE = (D.f[DIR_PMP])[ks ];//ktse - real fTNW = (D.f[DIR_MPP])[kw ];//ktnw - real fBNE = (D.f[DIR_PPM])[kb ];//kbne - real fBSW = (D.f[DIR_MMM])[kbsw]; - real fBSE = (D.f[DIR_PMM])[kbs];//kbse - real fBNW = (D.f[DIR_MPM])[kbw];//kbnw + real fE = (D.f[dP00])[k ];//ke + real fW = (D.f[dM00])[kw ]; + real fN = (D.f[d0P0])[k ];//kn + real fS = (D.f[d0M0])[ks ]; + real fT = (D.f[d00P])[k ];//kt + real fB = (D.f[d00M])[kb ]; + real fNE = (D.f[dPP0])[k ];//kne + real fSW = (D.f[dMM0])[ksw]; + real fSE = (D.f[dPM0])[ks ];//kse + real fNW = (D.f[dMP0])[kw ];//knw + real fTE = (D.f[dP0P])[k ];//kte + real fBW = (D.f[dM0M])[kbw]; + real fBE = (D.f[dP0M])[kb ];//kbe + real fTW = (D.f[dM0P])[kw ];//ktw + real fTN = (D.f[d0PP])[k ];//ktn + real fBS = (D.f[d0MM])[kbs]; + real fBN = (D.f[d0PM])[kb ];//kbn + real fTS = (D.f[d0MP])[ks ];//kts + real fZERO = (D.f[d000])[k ];//kzero + real fTNE = (D.f[dPPP])[k ];//ktne + real fTSW = (D.f[dMMP])[ksw];//ktsw + real fTSE = (D.f[dPMP])[ks ];//ktse + real fTNW = (D.f[dMPP])[kw ];//ktnw + real fBNE = (D.f[dPPM])[kb ];//kbne + real fBSW = (D.f[dMMM])[kbsw]; + real fBSE = (D.f[dPMM])[kbs];//kbse + real fBNW = (D.f[dMPM])[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; @@ -2737,65 +2737,65 @@ __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[ DIR_P00 ])[k ] = c1o2*rho*( mu200 - mu220 + mu222 - mu202 + mu120 - mu122 + mu102 - vx ); //ke - (D.f[ DIR_M00 ])[kw ] = c1o2*rho*( mu200 - mu220 + mu222 - mu202 - mu120 + mu122 - mu102 + vx ); - (D.f[ DIR_0P0 ])[k ] = c1o2*rho*( mu210 - mu220 + mu222 - mu212 + mu020 - mu022 + mu012 - vy ); //kn - (D.f[ DIR_0M0 ])[ks ] = c1o2*rho*(-mu210 - mu220 + mu222 + mu212 + mu020 - mu022 - mu012 + vy ); - (D.f[ DIR_00P ])[k ] = c1o2*rho*(-mu221 + mu222 + mu201 - mu202 + mu021 - mu022 + mu002 - vz ); //kt - (D.f[ DIR_00M ])[kb ] = c1o2*rho*( mu221 + mu222 - mu201 - mu202 - mu021 - mu022 + mu002 + vz ); - (D.f[ DIR_PP0 ])[k ] = c1o4*rho*(-mu210 + mu220 - mu222 + mu212 + mu110 - mu120 + mu122 - mu112); //kne - (D.f[ DIR_MM0 ])[ksw ] = c1o4*rho*( mu210 + mu220 - mu222 - mu212 + mu110 + mu120 - mu122 - mu112); - (D.f[ DIR_PM0 ])[ks ] = c1o4*rho*( mu210 + mu220 - mu222 - mu212 - mu110 - mu120 + mu122 + mu112); //kse - (D.f[ DIR_MP0 ])[kw ] = c1o4*rho*(-mu210 + mu220 - mu222 + mu212 - mu110 + mu120 - mu122 + mu112); //knw - (D.f[ DIR_P0P ])[k ] = c1o4*rho*( mu221 - mu222 - mu201 + mu202 - mu121 + mu122 + mu101 - mu102); //kte - (D.f[ DIR_M0M ])[kbw ] = c1o4*rho*(-mu221 - mu222 + mu201 + mu202 - mu121 - mu122 + mu101 + mu102); - (D.f[ DIR_P0M ])[kb ] = c1o4*rho*(-mu221 - mu222 + mu201 + mu202 + mu121 + mu122 - mu101 - mu102); //kbe - (D.f[ DIR_M0P ])[kw ] = c1o4*rho*( mu221 - mu222 - mu201 + mu202 + mu121 - mu122 - mu101 + mu102); //ktw - (D.f[ DIR_0PP ])[k ] = c1o4*rho*( mu221 - mu222 - mu211 + mu212 - mu021 + mu022 + mu011 - mu012); //ktn - (D.f[ DIR_0MM ])[kbs ] = c1o4*rho*(-mu221 - mu222 - mu211 - mu212 + mu021 + mu022 + mu011 + mu012); - (D.f[ DIR_0PM ])[kb ] = c1o4*rho*(-mu221 - mu222 + mu211 + mu212 + mu021 + mu022 - mu011 - mu012); //kbn - (D.f[ DIR_0MP ])[ks ] = c1o4*rho*( mu221 - mu222 + mu211 - mu212 - mu021 + mu022 - mu011 + mu012); //kts - (D.f[ DIR_000])[k ] = rho*(-mu200 + mu220 - mu222 + mu202 - mu020 + mu022 - mu002 )+rho0; //kzero - (D.f[ DIR_PPP ])[k ] = c1o8*rho*(-mu221 + mu222 + mu211 - mu212 + mu121 - mu122 - mu111 + mu112); //ktne - (D.f[ DIR_PMP ])[ks ] = c1o8*rho*(-mu221 + mu222 - mu211 + mu212 + mu121 - mu122 + mu111 - mu112); //ktse - (D.f[ DIR_PPM ])[kb ] = c1o8*rho*( mu221 + mu222 - mu211 - mu212 - mu121 - mu122 + mu111 + mu112); //kbne - (D.f[ DIR_PMM ])[kbs ] = c1o8*rho*( mu221 + mu222 + mu211 + mu212 - mu121 - mu122 - mu111 - mu112); //kbse - (D.f[ DIR_MPP ])[kw ] = c1o8*rho*(-mu221 + mu222 + mu211 - mu212 - mu121 + mu122 + mu111 - mu112); //ktnw - (D.f[ DIR_MMP ])[ksw ] = c1o8*rho*(-mu221 + mu222 - mu211 + mu212 - mu121 + mu122 - mu111 + mu112); //ktsw - (D.f[ DIR_MPM ])[kbw ] = c1o8*rho*( mu221 + mu222 - mu211 - mu212 + mu121 + mu122 - mu111 - mu112); //kbnw - (D.f[ DIR_MMM ])[kbsw] = c1o8*rho*( mu221 + mu222 + mu211 + mu212 + mu121 + mu122 + mu111 + mu112); + (D.f[ dP00 ])[k ] = c1o2*rho*( mu200 - mu220 + mu222 - mu202 + mu120 - mu122 + mu102 - vx ); //ke + (D.f[ dM00 ])[kw ] = c1o2*rho*( mu200 - mu220 + mu222 - mu202 - mu120 + mu122 - mu102 + vx ); + (D.f[ d0P0 ])[k ] = c1o2*rho*( mu210 - mu220 + mu222 - mu212 + mu020 - mu022 + mu012 - vy ); //kn + (D.f[ d0M0 ])[ks ] = c1o2*rho*(-mu210 - mu220 + mu222 + mu212 + mu020 - mu022 - mu012 + vy ); + (D.f[ d00P ])[k ] = c1o2*rho*(-mu221 + mu222 + mu201 - mu202 + mu021 - mu022 + mu002 - vz ); //kt + (D.f[ d00M ])[kb ] = c1o2*rho*( mu221 + mu222 - mu201 - mu202 - mu021 - mu022 + mu002 + vz ); + (D.f[ dPP0 ])[k ] = c1o4*rho*(-mu210 + mu220 - mu222 + mu212 + mu110 - mu120 + mu122 - mu112); //kne + (D.f[ dMM0 ])[ksw ] = c1o4*rho*( mu210 + mu220 - mu222 - mu212 + mu110 + mu120 - mu122 - mu112); + (D.f[ dPM0 ])[ks ] = c1o4*rho*( mu210 + mu220 - mu222 - mu212 - mu110 - mu120 + mu122 + mu112); //kse + (D.f[ dMP0 ])[kw ] = c1o4*rho*(-mu210 + mu220 - mu222 + mu212 - mu110 + mu120 - mu122 + mu112); //knw + (D.f[ dP0P ])[k ] = c1o4*rho*( mu221 - mu222 - mu201 + mu202 - mu121 + mu122 + mu101 - mu102); //kte + (D.f[ dM0M ])[kbw ] = c1o4*rho*(-mu221 - mu222 + mu201 + mu202 - mu121 - mu122 + mu101 + mu102); + (D.f[ dP0M ])[kb ] = c1o4*rho*(-mu221 - mu222 + mu201 + mu202 + mu121 + mu122 - mu101 - mu102); //kbe + (D.f[ dM0P ])[kw ] = c1o4*rho*( mu221 - mu222 - mu201 + mu202 + mu121 - mu122 - mu101 + mu102); //ktw + (D.f[ d0PP ])[k ] = c1o4*rho*( mu221 - mu222 - mu211 + mu212 - mu021 + mu022 + mu011 - mu012); //ktn + (D.f[ d0MM ])[kbs ] = c1o4*rho*(-mu221 - mu222 - mu211 - mu212 + mu021 + mu022 + mu011 + mu012); + (D.f[ d0PM ])[kb ] = c1o4*rho*(-mu221 - mu222 + mu211 + mu212 + mu021 + mu022 - mu011 - mu012); //kbn + (D.f[ d0MP ])[ks ] = c1o4*rho*( mu221 - mu222 + mu211 - mu212 - mu021 + mu022 - mu011 + mu012); //kts + (D.f[ d000])[k ] = rho*(-mu200 + mu220 - mu222 + mu202 - mu020 + mu022 - mu002 )+rho0; //kzero + (D.f[ dPPP ])[k ] = c1o8*rho*(-mu221 + mu222 + mu211 - mu212 + mu121 - mu122 - mu111 + mu112); //ktne + (D.f[ dPMP ])[ks ] = c1o8*rho*(-mu221 + mu222 - mu211 + mu212 + mu121 - mu122 + mu111 - mu112); //ktse + (D.f[ dPPM ])[kb ] = c1o8*rho*( mu221 + mu222 - mu211 - mu212 - mu121 - mu122 + mu111 + mu112); //kbne + (D.f[ dPMM ])[kbs ] = c1o8*rho*( mu221 + mu222 + mu211 + mu212 - mu121 - mu122 - mu111 - mu112); //kbse + (D.f[ dMPP ])[kw ] = c1o8*rho*(-mu221 + mu222 + mu211 - mu212 - mu121 + mu122 + mu111 - mu112); //ktnw + (D.f[ dMMP ])[ksw ] = c1o8*rho*(-mu221 + mu222 - mu211 + mu212 - mu121 + mu122 - mu111 + mu112); //ktsw + (D.f[ dMPM ])[kbw ] = c1o8*rho*( mu221 + mu222 - mu211 - mu212 + mu121 + mu122 - mu111 - mu112); //kbnw + (D.f[ dMMM ])[kbsw] = c1o8*rho*( mu221 + mu222 + mu211 + mu212 + mu121 + mu122 + mu111 + mu112); ////////////////////////////////////////////////////////////////////////// //BGK ////////////////////////////////////////////////////////////////////////// - //(D.f[ DIR_P00 ])[k ] = fW ; - //(D.f[ DIR_M00 ])[kw ] = fE ; - //(D.f[ DIR_0P0 ])[k ] = fS ; - //(D.f[ DIR_0M0 ])[ks ] = fN ; - //(D.f[ DIR_00P ])[k ] = fB ; - //(D.f[ DIR_00M ])[kb ] = fT ; - //(D.f[ DIR_PP0 ])[k ] = fSW ; - //(D.f[ DIR_MM0 ])[ksw ] = fNE ; - //(D.f[ DIR_PM0 ])[ks ] = fNW ; - //(D.f[ DIR_MP0 ])[kw ] = fSE ; - //(D.f[ DIR_P0P ])[k ] = fBW ; - //(D.f[ DIR_M0M ])[kbw ] = fTE ; - //(D.f[ DIR_P0M ])[kb ] = fTW ; - //(D.f[ DIR_M0P ])[kw ] = fBE ; - //(D.f[ DIR_0PP ])[k ] = fBS ; - //(D.f[ DIR_0MM ])[kbs ] = fTN ; - //(D.f[ DIR_0PM ])[kb ] = fTS ; - //(D.f[ DIR_0MP ])[ks ] = fBN ; - //(D.f[ DIR_000])[k ] = fZERO ; - //(D.f[ DIR_PPP ])[k ] = fBSW ; - //(D.f[ DIR_PMP ])[ks ] = fBNW ; - //(D.f[ DIR_PPM ])[kb ] = fTSW ; - //(D.f[ DIR_PMM ])[kbs ] = fTNW ; - //(D.f[ DIR_MPP ])[kw ] = fBSE ; - //(D.f[ DIR_MMP ])[ksw ] = fBNE ; - //(D.f[ DIR_MPM ])[kbw ] = fTSE ; - //(D.f[ DIR_MMM ])[kbsw] = fTNE ; + //(D.f[ dP00 ])[k ] = fW ; + //(D.f[ dM00 ])[kw ] = fE ; + //(D.f[ d0P0 ])[k ] = fS ; + //(D.f[ d0M0 ])[ks ] = fN ; + //(D.f[ d00P ])[k ] = fB ; + //(D.f[ d00M ])[kb ] = fT ; + //(D.f[ dPP0 ])[k ] = fSW ; + //(D.f[ dMM0 ])[ksw ] = fNE ; + //(D.f[ dPM0 ])[ks ] = fNW ; + //(D.f[ dMP0 ])[kw ] = fSE ; + //(D.f[ dP0P ])[k ] = fBW ; + //(D.f[ dM0M ])[kbw ] = fTE ; + //(D.f[ dP0M ])[kb ] = fTW ; + //(D.f[ dM0P ])[kw ] = fBE ; + //(D.f[ d0PP ])[k ] = fBS ; + //(D.f[ d0MM ])[kbs ] = fTN ; + //(D.f[ d0PM ])[kb ] = fTS ; + //(D.f[ d0MP ])[ks ] = fBN ; + //(D.f[ d000])[k ] = fZERO ; + //(D.f[ dPPP ])[k ] = fBSW ; + //(D.f[ dPMP ])[ks ] = fBNW ; + //(D.f[ dPPM ])[kb ] = fTSW ; + //(D.f[ dPMM ])[kbs ] = fTNW ; + //(D.f[ dMPP ])[kw ] = fBSE ; + //(D.f[ dMMP ])[ksw ] = fBNE ; + //(D.f[ dMPM ])[kbw ] = fTSE ; + //(D.f[ dMMM ])[kbsw] = fTNE ; } } } @@ -2871,63 +2871,63 @@ __global__ void LB_Kernel_Casc_SP_MS_Diff_27(real omega, Distributions27 D; if (EvenOrOdd==true) { - D.f[DIR_P00] = &DDStart[DIR_P00 * numberOfLBnodes]; - D.f[DIR_M00] = &DDStart[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0P0] = &DDStart[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0M0] = &DDStart[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00P] = &DDStart[DIR_00P * numberOfLBnodes]; - D.f[DIR_00M] = &DDStart[DIR_00M * numberOfLBnodes]; - D.f[DIR_PP0] = &DDStart[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_MM0] = &DDStart[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DDStart[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DDStart[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_P0P] = &DDStart[DIR_P0P * numberOfLBnodes]; - D.f[DIR_M0M] = &DDStart[DIR_M0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DDStart[DIR_P0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DDStart[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0PP] = &DDStart[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0MM] = &DDStart[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0PM] = &DDStart[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0MP] = &DDStart[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DDStart[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DDStart[DIR_PPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DDStart[DIR_MMP * numberOfLBnodes]; - D.f[DIR_PMP] = &DDStart[DIR_PMP * numberOfLBnodes]; - D.f[DIR_MPP] = &DDStart[DIR_MPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DDStart[DIR_PPM * numberOfLBnodes]; - D.f[DIR_MMM] = &DDStart[DIR_MMM * numberOfLBnodes]; - D.f[DIR_PMM] = &DDStart[DIR_PMM * numberOfLBnodes]; - D.f[DIR_MPM] = &DDStart[DIR_MPM * numberOfLBnodes]; + D.f[dP00] = &DDStart[dP00 * numberOfLBnodes]; + D.f[dM00] = &DDStart[dM00 * numberOfLBnodes]; + D.f[d0P0] = &DDStart[d0P0 * numberOfLBnodes]; + D.f[d0M0] = &DDStart[d0M0 * numberOfLBnodes]; + D.f[d00P] = &DDStart[d00P * numberOfLBnodes]; + D.f[d00M] = &DDStart[d00M * numberOfLBnodes]; + D.f[dPP0] = &DDStart[dPP0 * numberOfLBnodes]; + D.f[dMM0] = &DDStart[dMM0 * numberOfLBnodes]; + D.f[dPM0] = &DDStart[dPM0 * numberOfLBnodes]; + D.f[dMP0] = &DDStart[dMP0 * numberOfLBnodes]; + D.f[dP0P] = &DDStart[dP0P * numberOfLBnodes]; + D.f[dM0M] = &DDStart[dM0M * numberOfLBnodes]; + D.f[dP0M] = &DDStart[dP0M * numberOfLBnodes]; + D.f[dM0P] = &DDStart[dM0P * numberOfLBnodes]; + D.f[d0PP] = &DDStart[d0PP * numberOfLBnodes]; + D.f[d0MM] = &DDStart[d0MM * numberOfLBnodes]; + D.f[d0PM] = &DDStart[d0PM * numberOfLBnodes]; + D.f[d0MP] = &DDStart[d0MP * numberOfLBnodes]; + D.f[d000] = &DDStart[d000 * numberOfLBnodes]; + D.f[dPPP] = &DDStart[dPPP * numberOfLBnodes]; + D.f[dMMP] = &DDStart[dMMP * numberOfLBnodes]; + D.f[dPMP] = &DDStart[dPMP * numberOfLBnodes]; + D.f[dMPP] = &DDStart[dMPP * numberOfLBnodes]; + D.f[dPPM] = &DDStart[dPPM * numberOfLBnodes]; + D.f[dMMM] = &DDStart[dMMM * numberOfLBnodes]; + D.f[dPMM] = &DDStart[dPMM * numberOfLBnodes]; + D.f[dMPM] = &DDStart[dMPM * numberOfLBnodes]; } else { - D.f[DIR_M00] = &DDStart[DIR_P00 * numberOfLBnodes]; - D.f[DIR_P00] = &DDStart[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0M0] = &DDStart[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0P0] = &DDStart[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00M] = &DDStart[DIR_00P * numberOfLBnodes]; - D.f[DIR_00P] = &DDStart[DIR_00M * numberOfLBnodes]; - D.f[DIR_MM0] = &DDStart[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_PP0] = &DDStart[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DDStart[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DDStart[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_M0M] = &DDStart[DIR_P0P * numberOfLBnodes]; - D.f[DIR_P0P] = &DDStart[DIR_M0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DDStart[DIR_P0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DDStart[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0MM] = &DDStart[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0PP] = &DDStart[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0MP] = &DDStart[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0PM] = &DDStart[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DDStart[DIR_000 * numberOfLBnodes]; - D.f[DIR_MMM] = &DDStart[DIR_PPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DDStart[DIR_MMP * numberOfLBnodes]; - D.f[DIR_MPM] = &DDStart[DIR_PMP * numberOfLBnodes]; - D.f[DIR_PMM] = &DDStart[DIR_MPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DDStart[DIR_PPM * numberOfLBnodes]; - D.f[DIR_PPP] = &DDStart[DIR_MMM * numberOfLBnodes]; - D.f[DIR_MPP] = &DDStart[DIR_PMM * numberOfLBnodes]; - D.f[DIR_PMP] = &DDStart[DIR_MPM * numberOfLBnodes]; + D.f[dM00] = &DDStart[dP00 * numberOfLBnodes]; + D.f[dP00] = &DDStart[dM00 * numberOfLBnodes]; + D.f[d0M0] = &DDStart[d0P0 * numberOfLBnodes]; + D.f[d0P0] = &DDStart[d0M0 * numberOfLBnodes]; + D.f[d00M] = &DDStart[d00P * numberOfLBnodes]; + D.f[d00P] = &DDStart[d00M * numberOfLBnodes]; + D.f[dMM0] = &DDStart[dPP0 * numberOfLBnodes]; + D.f[dPP0] = &DDStart[dMM0 * numberOfLBnodes]; + D.f[dMP0] = &DDStart[dPM0 * numberOfLBnodes]; + D.f[dPM0] = &DDStart[dMP0 * numberOfLBnodes]; + D.f[dM0M] = &DDStart[dP0P * numberOfLBnodes]; + D.f[dP0P] = &DDStart[dM0M * numberOfLBnodes]; + D.f[dM0P] = &DDStart[dP0M * numberOfLBnodes]; + D.f[dP0M] = &DDStart[dM0P * numberOfLBnodes]; + D.f[d0MM] = &DDStart[d0PP * numberOfLBnodes]; + D.f[d0PP] = &DDStart[d0MM * numberOfLBnodes]; + D.f[d0MP] = &DDStart[d0PM * numberOfLBnodes]; + D.f[d0PM] = &DDStart[d0MP * numberOfLBnodes]; + D.f[d000] = &DDStart[d000 * numberOfLBnodes]; + D.f[dMMM] = &DDStart[dPPP * numberOfLBnodes]; + D.f[dPPM] = &DDStart[dMMP * numberOfLBnodes]; + D.f[dMPM] = &DDStart[dPMP * numberOfLBnodes]; + D.f[dPMM] = &DDStart[dMPP * numberOfLBnodes]; + D.f[dMMP] = &DDStart[dPPM * numberOfLBnodes]; + D.f[dPPP] = &DDStart[dMMM * numberOfLBnodes]; + D.f[dMPP] = &DDStart[dPMM * numberOfLBnodes]; + D.f[dPMP] = &DDStart[dMPM * numberOfLBnodes]; } //////////////////////////////////////////////////////////////////////////////// @@ -2960,33 +2960,33 @@ __global__ void LB_Kernel_Casc_SP_MS_Diff_27(real omega, //unsigned int ktne = k; unsigned int kbsw = neighborZ[ksw]; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real fE = (D.f[DIR_P00])[k ];//ke - real fW = (D.f[DIR_M00])[kw ]; - real fN = (D.f[DIR_0P0])[k ];//kn - real fS = (D.f[DIR_0M0])[ks ]; - real fT = (D.f[DIR_00P])[k ];//kt - real fB = (D.f[DIR_00M])[kb ]; - real fNE = (D.f[DIR_PP0])[k ];//kne - real fSW = (D.f[DIR_MM0])[ksw]; - real fSE = (D.f[DIR_PM0])[ks ];//kse - real fNW = (D.f[DIR_MP0])[kw ];//knw - real fTE = (D.f[DIR_P0P])[k ];//kte - real fBW = (D.f[DIR_M0M])[kbw]; - real fBE = (D.f[DIR_P0M])[kb ];//kbe - real fTW = (D.f[DIR_M0P])[kw ];//ktw - real fTN = (D.f[DIR_0PP])[k ];//ktn - real fBS = (D.f[DIR_0MM])[kbs]; - real fBN = (D.f[DIR_0PM])[kb ];//kbn - real fTS = (D.f[DIR_0MP])[ks ];//kts - real fZERO = (D.f[DIR_000])[k ];//kzero - real fTNE = (D.f[DIR_PPP])[k ];//ktne - real fTSW = (D.f[DIR_MMP])[ksw];//ktsw - real fTSE = (D.f[DIR_PMP])[ks ];//ktse - real fTNW = (D.f[DIR_MPP])[kw ];//ktnw - real fBNE = (D.f[DIR_PPM])[kb ];//kbne - real fBSW = (D.f[DIR_MMM])[kbsw]; - real fBSE = (D.f[DIR_PMM])[kbs];//kbse - real fBNW = (D.f[DIR_MPM])[kbw];//kbnw + real fE = (D.f[dP00])[k ];//ke + real fW = (D.f[dM00])[kw ]; + real fN = (D.f[d0P0])[k ];//kn + real fS = (D.f[d0M0])[ks ]; + real fT = (D.f[d00P])[k ];//kt + real fB = (D.f[d00M])[kb ]; + real fNE = (D.f[dPP0])[k ];//kne + real fSW = (D.f[dMM0])[ksw]; + real fSE = (D.f[dPM0])[ks ];//kse + real fNW = (D.f[dMP0])[kw ];//knw + real fTE = (D.f[dP0P])[k ];//kte + real fBW = (D.f[dM0M])[kbw]; + real fBE = (D.f[dP0M])[kb ];//kbe + real fTW = (D.f[dM0P])[kw ];//ktw + real fTN = (D.f[d0PP])[k ];//ktn + real fBS = (D.f[d0MM])[kbs]; + real fBN = (D.f[d0PM])[kb ];//kbn + real fTS = (D.f[d0MP])[ks ];//kts + real fZERO = (D.f[d000])[k ];//kzero + real fTNE = (D.f[dPPP])[k ];//ktne + real fTSW = (D.f[dMMP])[ksw];//ktsw + real fTSE = (D.f[dPMP])[ks ];//ktse + real fTNW = (D.f[dMPP])[kw ];//ktnw + real fBNE = (D.f[dPPM])[kb ];//kbne + real fBSW = (D.f[dMMM])[kbsw]; + real fBSE = (D.f[dPMM])[kbs];//kbse + real fBNW = (D.f[dMPM])[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; @@ -3259,65 +3259,65 @@ __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[ DIR_P00 ])[k ] = fW - c1o2*rho*( mu200 - mu220 + mu222 - mu202 + mu120 - mu122 + mu102 ); //ke - (D.f[ DIR_M00 ])[kw ] = fE - c1o2*rho*( mu200 - mu220 + mu222 - mu202 - mu120 + mu122 - mu102 ); - (D.f[ DIR_0P0 ])[k ] = fS - c1o2*rho*( mu210 - mu220 + mu222 - mu212 + mu020 - mu022 + mu012 ); //kn - (D.f[ DIR_0M0 ])[ks ] = fN - c1o2*rho*(-mu210 - mu220 + mu222 + mu212 + mu020 - mu022 - mu012 ); - (D.f[ DIR_00P ])[k ] = fB - c1o2*rho*(-mu221 + mu222 + mu201 - mu202 + mu021 - mu022 + mu002 ); //kt - (D.f[ DIR_00M ])[kb ] = fT - c1o2*rho*( mu221 + mu222 - mu201 - mu202 - mu021 - mu022 + mu002 ); - (D.f[ DIR_PP0 ])[k ] = fSW - c1o4*rho*(-mu210 + mu220 - mu222 + mu212 + mu110 - mu120 + mu122 - mu112); //kne - (D.f[ DIR_MM0 ])[ksw ] = fNE - c1o4*rho*( mu210 + mu220 - mu222 - mu212 + mu110 + mu120 - mu122 - mu112); - (D.f[ DIR_PM0 ])[ks ] = fNW - c1o4*rho*( mu210 + mu220 - mu222 - mu212 - mu110 - mu120 + mu122 + mu112); //kse - (D.f[ DIR_MP0 ])[kw ] = fSE - c1o4*rho*(-mu210 + mu220 - mu222 + mu212 - mu110 + mu120 - mu122 + mu112); //knw - (D.f[ DIR_P0P ])[k ] = fBW - c1o4*rho*( mu221 - mu222 - mu201 + mu202 - mu121 + mu122 + mu101 - mu102); //kte - (D.f[ DIR_M0M ])[kbw ] = fTE - c1o4*rho*(-mu221 - mu222 + mu201 + mu202 - mu121 - mu122 + mu101 + mu102); - (D.f[ DIR_P0M ])[kb ] = fTW - c1o4*rho*(-mu221 - mu222 + mu201 + mu202 + mu121 + mu122 - mu101 - mu102); //kbe - (D.f[ DIR_M0P ])[kw ] = fBE - c1o4*rho*( mu221 - mu222 - mu201 + mu202 + mu121 - mu122 - mu101 + mu102); //ktw - (D.f[ DIR_0PP ])[k ] = fBS - c1o4*rho*( mu221 - mu222 - mu211 + mu212 - mu021 + mu022 + mu011 - mu012); //ktn - (D.f[ DIR_0MM ])[kbs ] = fTN - c1o4*rho*(-mu221 - mu222 - mu211 - mu212 + mu021 + mu022 + mu011 + mu012); - (D.f[ DIR_0PM ])[kb ] = fTS - c1o4*rho*(-mu221 - mu222 + mu211 + mu212 + mu021 + mu022 - mu011 - mu012); //kbn - (D.f[ DIR_0MP ])[ks ] = fBN - c1o4*rho*( mu221 - mu222 + mu211 - mu212 - mu021 + mu022 - mu011 + mu012); //kts - (D.f[ DIR_000])[k ] = fZERO - rho*(-mu200 + mu220 - mu222 + mu202 - mu020 + mu022 - mu002 ); //kzero - (D.f[ DIR_PPP ])[k ] = fBSW - c1o8*rho*(-mu221 + mu222 + mu211 - mu212 + mu121 - mu122 - mu111 + mu112); //ktne - (D.f[ DIR_PMP ])[ks ] = fBNW - c1o8*rho*(-mu221 + mu222 - mu211 + mu212 + mu121 - mu122 + mu111 - mu112); //ktse - (D.f[ DIR_PPM ])[kb ] = fTSW - c1o8*rho*( mu221 + mu222 - mu211 - mu212 - mu121 - mu122 + mu111 + mu112); //kbne - (D.f[ DIR_PMM ])[kbs ] = fTNW - c1o8*rho*( mu221 + mu222 + mu211 + mu212 - mu121 - mu122 - mu111 - mu112); //kbse - (D.f[ DIR_MPP ])[kw ] = fBSE - c1o8*rho*(-mu221 + mu222 + mu211 - mu212 - mu121 + mu122 + mu111 - mu112); //ktnw - (D.f[ DIR_MMP ])[ksw ] = fBNE - c1o8*rho*(-mu221 + mu222 - mu211 + mu212 - mu121 + mu122 - mu111 + mu112); //ktsw - (D.f[ DIR_MPM ])[kbw ] = fTSE - c1o8*rho*( mu221 + mu222 - mu211 - mu212 + mu121 + mu122 - mu111 - mu112); //kbnw - (D.f[ DIR_MMM ])[kbsw] = fTNE - c1o8*rho*( mu221 + mu222 + mu211 + mu212 + mu121 + mu122 + mu111 + mu112); + (D.f[ dP00 ])[k ] = fW - c1o2*rho*( mu200 - mu220 + mu222 - mu202 + mu120 - mu122 + mu102 ); //ke + (D.f[ dM00 ])[kw ] = fE - c1o2*rho*( mu200 - mu220 + mu222 - mu202 - mu120 + mu122 - mu102 ); + (D.f[ d0P0 ])[k ] = fS - c1o2*rho*( mu210 - mu220 + mu222 - mu212 + mu020 - mu022 + mu012 ); //kn + (D.f[ d0M0 ])[ks ] = fN - c1o2*rho*(-mu210 - mu220 + mu222 + mu212 + mu020 - mu022 - mu012 ); + (D.f[ d00P ])[k ] = fB - c1o2*rho*(-mu221 + mu222 + mu201 - mu202 + mu021 - mu022 + mu002 ); //kt + (D.f[ d00M ])[kb ] = fT - c1o2*rho*( mu221 + mu222 - mu201 - mu202 - mu021 - mu022 + mu002 ); + (D.f[ dPP0 ])[k ] = fSW - c1o4*rho*(-mu210 + mu220 - mu222 + mu212 + mu110 - mu120 + mu122 - mu112); //kne + (D.f[ dMM0 ])[ksw ] = fNE - c1o4*rho*( mu210 + mu220 - mu222 - mu212 + mu110 + mu120 - mu122 - mu112); + (D.f[ dPM0 ])[ks ] = fNW - c1o4*rho*( mu210 + mu220 - mu222 - mu212 - mu110 - mu120 + mu122 + mu112); //kse + (D.f[ dMP0 ])[kw ] = fSE - c1o4*rho*(-mu210 + mu220 - mu222 + mu212 - mu110 + mu120 - mu122 + mu112); //knw + (D.f[ dP0P ])[k ] = fBW - c1o4*rho*( mu221 - mu222 - mu201 + mu202 - mu121 + mu122 + mu101 - mu102); //kte + (D.f[ dM0M ])[kbw ] = fTE - c1o4*rho*(-mu221 - mu222 + mu201 + mu202 - mu121 - mu122 + mu101 + mu102); + (D.f[ dP0M ])[kb ] = fTW - c1o4*rho*(-mu221 - mu222 + mu201 + mu202 + mu121 + mu122 - mu101 - mu102); //kbe + (D.f[ dM0P ])[kw ] = fBE - c1o4*rho*( mu221 - mu222 - mu201 + mu202 + mu121 - mu122 - mu101 + mu102); //ktw + (D.f[ d0PP ])[k ] = fBS - c1o4*rho*( mu221 - mu222 - mu211 + mu212 - mu021 + mu022 + mu011 - mu012); //ktn + (D.f[ d0MM ])[kbs ] = fTN - c1o4*rho*(-mu221 - mu222 - mu211 - mu212 + mu021 + mu022 + mu011 + mu012); + (D.f[ d0PM ])[kb ] = fTS - c1o4*rho*(-mu221 - mu222 + mu211 + mu212 + mu021 + mu022 - mu011 - mu012); //kbn + (D.f[ d0MP ])[ks ] = fBN - c1o4*rho*( mu221 - mu222 + mu211 - mu212 - mu021 + mu022 - mu011 + mu012); //kts + (D.f[ d000])[k ] = fZERO - rho*(-mu200 + mu220 - mu222 + mu202 - mu020 + mu022 - mu002 ); //kzero + (D.f[ dPPP ])[k ] = fBSW - c1o8*rho*(-mu221 + mu222 + mu211 - mu212 + mu121 - mu122 - mu111 + mu112); //ktne + (D.f[ dPMP ])[ks ] = fBNW - c1o8*rho*(-mu221 + mu222 - mu211 + mu212 + mu121 - mu122 + mu111 - mu112); //ktse + (D.f[ dPPM ])[kb ] = fTSW - c1o8*rho*( mu221 + mu222 - mu211 - mu212 - mu121 - mu122 + mu111 + mu112); //kbne + (D.f[ dPMM ])[kbs ] = fTNW - c1o8*rho*( mu221 + mu222 + mu211 + mu212 - mu121 - mu122 - mu111 - mu112); //kbse + (D.f[ dMPP ])[kw ] = fBSE - c1o8*rho*(-mu221 + mu222 + mu211 - mu212 - mu121 + mu122 + mu111 - mu112); //ktnw + (D.f[ dMMP ])[ksw ] = fBNE - c1o8*rho*(-mu221 + mu222 - mu211 + mu212 - mu121 + mu122 - mu111 + mu112); //ktsw + (D.f[ dMPM ])[kbw ] = fTSE - c1o8*rho*( mu221 + mu222 - mu211 - mu212 + mu121 + mu122 - mu111 - mu112); //kbnw + (D.f[ dMMM ])[kbsw] = fTNE - c1o8*rho*( mu221 + mu222 + mu211 + mu212 + mu121 + mu122 + mu111 + mu112); ////////////////////////////////////////////////////////////////////////// //BGK ////////////////////////////////////////////////////////////////////////// - //(D.f[ DIR_P00 ])[k ] = fW ; - //(D.f[ DIR_M00 ])[kw ] = fE ; - //(D.f[ DIR_0P0 ])[k ] = fS ; - //(D.f[ DIR_0M0 ])[ks ] = fN ; - //(D.f[ DIR_00P ])[k ] = fB ; - //(D.f[ DIR_00M ])[kb ] = fT ; - //(D.f[ DIR_PP0 ])[k ] = fSW ; - //(D.f[ DIR_MM0 ])[ksw ] = fNE ; - //(D.f[ DIR_PM0 ])[ks ] = fNW ; - //(D.f[ DIR_MP0 ])[kw ] = fSE ; - //(D.f[ DIR_P0P ])[k ] = fBW ; - //(D.f[ DIR_M0M ])[kbw ] = fTE ; - //(D.f[ DIR_P0M ])[kb ] = fTW ; - //(D.f[ DIR_M0P ])[kw ] = fBE ; - //(D.f[ DIR_0PP ])[k ] = fBS ; - //(D.f[ DIR_0MM ])[kbs ] = fTN ; - //(D.f[ DIR_0PM ])[kb ] = fTS ; - //(D.f[ DIR_0MP ])[ks ] = fBN ; - //(D.f[ DIR_000])[k ] = fZERO ; - //(D.f[ DIR_PPP ])[k ] = fBSW ; - //(D.f[ DIR_PMP ])[ks ] = fBNW ; - //(D.f[ DIR_PPM ])[kb ] = fTSW ; - //(D.f[ DIR_PMM ])[kbs ] = fTNW ; - //(D.f[ DIR_MPP ])[kw ] = fBSE ; - //(D.f[ DIR_MMP ])[ksw ] = fBNE ; - //(D.f[ DIR_MPM ])[kbw ] = fTSE ; - //(D.f[ DIR_MMM ])[kbsw] = fTNE ; + //(D.f[ dP00 ])[k ] = fW ; + //(D.f[ dM00 ])[kw ] = fE ; + //(D.f[ d0P0 ])[k ] = fS ; + //(D.f[ d0M0 ])[ks ] = fN ; + //(D.f[ d00P ])[k ] = fB ; + //(D.f[ d00M ])[kb ] = fT ; + //(D.f[ dPP0 ])[k ] = fSW ; + //(D.f[ dMM0 ])[ksw ] = fNE ; + //(D.f[ dPM0 ])[ks ] = fNW ; + //(D.f[ dMP0 ])[kw ] = fSE ; + //(D.f[ dP0P ])[k ] = fBW ; + //(D.f[ dM0M ])[kbw ] = fTE ; + //(D.f[ dP0M ])[kb ] = fTW ; + //(D.f[ dM0P ])[kw ] = fBE ; + //(D.f[ d0PP ])[k ] = fBS ; + //(D.f[ d0MM ])[kbs ] = fTN ; + //(D.f[ d0PM ])[kb ] = fTS ; + //(D.f[ d0MP ])[ks ] = fBN ; + //(D.f[ d000])[k ] = fZERO ; + //(D.f[ dPPP ])[k ] = fBSW ; + //(D.f[ dPMP ])[ks ] = fBNW ; + //(D.f[ dPPM ])[kb ] = fTSW ; + //(D.f[ dPMM ])[kbs ] = fTNW ; + //(D.f[ dMPP ])[kw ] = fBSE ; + //(D.f[ dMMP ])[ksw ] = fBNE ; + //(D.f[ dMPM ])[kbw ] = fTSE ; + //(D.f[ dMMM ])[kbsw] = fTNE ; } } } @@ -3393,63 +3393,63 @@ __global__ void LB_Kernel_Casc_SP_27( real omega, Distributions27 D; if (EvenOrOdd==true) { - D.f[DIR_P00] = &DDStart[DIR_P00 * numberOfLBnodes]; - D.f[DIR_M00] = &DDStart[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0P0] = &DDStart[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0M0] = &DDStart[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00P] = &DDStart[DIR_00P * numberOfLBnodes]; - D.f[DIR_00M] = &DDStart[DIR_00M * numberOfLBnodes]; - D.f[DIR_PP0] = &DDStart[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_MM0] = &DDStart[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DDStart[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DDStart[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_P0P] = &DDStart[DIR_P0P * numberOfLBnodes]; - D.f[DIR_M0M] = &DDStart[DIR_M0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DDStart[DIR_P0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DDStart[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0PP] = &DDStart[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0MM] = &DDStart[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0PM] = &DDStart[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0MP] = &DDStart[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DDStart[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DDStart[DIR_PPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DDStart[DIR_MMP * numberOfLBnodes]; - D.f[DIR_PMP] = &DDStart[DIR_PMP * numberOfLBnodes]; - D.f[DIR_MPP] = &DDStart[DIR_MPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DDStart[DIR_PPM * numberOfLBnodes]; - D.f[DIR_MMM] = &DDStart[DIR_MMM * numberOfLBnodes]; - D.f[DIR_PMM] = &DDStart[DIR_PMM * numberOfLBnodes]; - D.f[DIR_MPM] = &DDStart[DIR_MPM * numberOfLBnodes]; + D.f[dP00] = &DDStart[dP00 * numberOfLBnodes]; + D.f[dM00] = &DDStart[dM00 * numberOfLBnodes]; + D.f[d0P0] = &DDStart[d0P0 * numberOfLBnodes]; + D.f[d0M0] = &DDStart[d0M0 * numberOfLBnodes]; + D.f[d00P] = &DDStart[d00P * numberOfLBnodes]; + D.f[d00M] = &DDStart[d00M * numberOfLBnodes]; + D.f[dPP0] = &DDStart[dPP0 * numberOfLBnodes]; + D.f[dMM0] = &DDStart[dMM0 * numberOfLBnodes]; + D.f[dPM0] = &DDStart[dPM0 * numberOfLBnodes]; + D.f[dMP0] = &DDStart[dMP0 * numberOfLBnodes]; + D.f[dP0P] = &DDStart[dP0P * numberOfLBnodes]; + D.f[dM0M] = &DDStart[dM0M * numberOfLBnodes]; + D.f[dP0M] = &DDStart[dP0M * numberOfLBnodes]; + D.f[dM0P] = &DDStart[dM0P * numberOfLBnodes]; + D.f[d0PP] = &DDStart[d0PP * numberOfLBnodes]; + D.f[d0MM] = &DDStart[d0MM * numberOfLBnodes]; + D.f[d0PM] = &DDStart[d0PM * numberOfLBnodes]; + D.f[d0MP] = &DDStart[d0MP * numberOfLBnodes]; + D.f[d000] = &DDStart[d000 * numberOfLBnodes]; + D.f[dPPP] = &DDStart[dPPP * numberOfLBnodes]; + D.f[dMMP] = &DDStart[dMMP * numberOfLBnodes]; + D.f[dPMP] = &DDStart[dPMP * numberOfLBnodes]; + D.f[dMPP] = &DDStart[dMPP * numberOfLBnodes]; + D.f[dPPM] = &DDStart[dPPM * numberOfLBnodes]; + D.f[dMMM] = &DDStart[dMMM * numberOfLBnodes]; + D.f[dPMM] = &DDStart[dPMM * numberOfLBnodes]; + D.f[dMPM] = &DDStart[dMPM * numberOfLBnodes]; } else { - D.f[DIR_M00] = &DDStart[DIR_P00 * numberOfLBnodes]; - D.f[DIR_P00] = &DDStart[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0M0] = &DDStart[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0P0] = &DDStart[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00M] = &DDStart[DIR_00P * numberOfLBnodes]; - D.f[DIR_00P] = &DDStart[DIR_00M * numberOfLBnodes]; - D.f[DIR_MM0] = &DDStart[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_PP0] = &DDStart[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DDStart[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DDStart[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_M0M] = &DDStart[DIR_P0P * numberOfLBnodes]; - D.f[DIR_P0P] = &DDStart[DIR_M0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DDStart[DIR_P0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DDStart[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0MM] = &DDStart[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0PP] = &DDStart[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0MP] = &DDStart[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0PM] = &DDStart[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DDStart[DIR_000 * numberOfLBnodes]; - D.f[DIR_MMM] = &DDStart[DIR_PPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DDStart[DIR_MMP * numberOfLBnodes]; - D.f[DIR_MPM] = &DDStart[DIR_PMP * numberOfLBnodes]; - D.f[DIR_PMM] = &DDStart[DIR_MPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DDStart[DIR_PPM * numberOfLBnodes]; - D.f[DIR_PPP] = &DDStart[DIR_MMM * numberOfLBnodes]; - D.f[DIR_MPP] = &DDStart[DIR_PMM * numberOfLBnodes]; - D.f[DIR_PMP] = &DDStart[DIR_MPM * numberOfLBnodes]; + D.f[dM00] = &DDStart[dP00 * numberOfLBnodes]; + D.f[dP00] = &DDStart[dM00 * numberOfLBnodes]; + D.f[d0M0] = &DDStart[d0P0 * numberOfLBnodes]; + D.f[d0P0] = &DDStart[d0M0 * numberOfLBnodes]; + D.f[d00M] = &DDStart[d00P * numberOfLBnodes]; + D.f[d00P] = &DDStart[d00M * numberOfLBnodes]; + D.f[dMM0] = &DDStart[dPP0 * numberOfLBnodes]; + D.f[dPP0] = &DDStart[dMM0 * numberOfLBnodes]; + D.f[dMP0] = &DDStart[dPM0 * numberOfLBnodes]; + D.f[dPM0] = &DDStart[dMP0 * numberOfLBnodes]; + D.f[dM0M] = &DDStart[dP0P * numberOfLBnodes]; + D.f[dP0P] = &DDStart[dM0M * numberOfLBnodes]; + D.f[dM0P] = &DDStart[dP0M * numberOfLBnodes]; + D.f[dP0M] = &DDStart[dM0P * numberOfLBnodes]; + D.f[d0MM] = &DDStart[d0PP * numberOfLBnodes]; + D.f[d0PP] = &DDStart[d0MM * numberOfLBnodes]; + D.f[d0MP] = &DDStart[d0PM * numberOfLBnodes]; + D.f[d0PM] = &DDStart[d0MP * numberOfLBnodes]; + D.f[d000] = &DDStart[d000 * numberOfLBnodes]; + D.f[dMMM] = &DDStart[dPPP * numberOfLBnodes]; + D.f[dPPM] = &DDStart[dMMP * numberOfLBnodes]; + D.f[dMPM] = &DDStart[dPMP * numberOfLBnodes]; + D.f[dPMM] = &DDStart[dMPP * numberOfLBnodes]; + D.f[dMMP] = &DDStart[dPPM * numberOfLBnodes]; + D.f[dPPP] = &DDStart[dMMM * numberOfLBnodes]; + D.f[dMPP] = &DDStart[dPMM * numberOfLBnodes]; + D.f[dPMP] = &DDStart[dMPM * numberOfLBnodes]; } //////////////////////////////////////////////////////////////////////////////// @@ -3512,33 +3512,33 @@ __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[DIR_P00])[ke]+c2o27; - f_W = (D.f[DIR_M00])[kw]+c2o27; - f_N = (D.f[DIR_0P0])[kn]+c2o27; - f_S = (D.f[DIR_0M0])[ks]+c2o27; - f_T = (D.f[DIR_00P])[kt]+c2o27; - f_B = (D.f[DIR_00M])[kb]+c2o27; - f_NE = (D.f[DIR_PP0])[kne]+c1o54; - f_SW = (D.f[DIR_MM0])[ksw]+c1o54; - f_SE = (D.f[DIR_PM0])[kse]+c1o54; - f_NW = (D.f[DIR_MP0])[knw]+c1o54; - f_TE = (D.f[DIR_P0P])[kte]+c1o54; - f_BW = (D.f[DIR_M0M])[kbw]+c1o54; - f_BE = (D.f[DIR_P0M])[kbe]+c1o54; - f_TW = (D.f[DIR_M0P])[ktw]+c1o54; - f_TN = (D.f[DIR_0PP])[ktn]+c1o54; - f_BS = (D.f[DIR_0MM])[kbs]+c1o54; - f_BN = (D.f[DIR_0PM])[kbn]+c1o54; - f_TS = (D.f[DIR_0MP])[kts]+c1o54; - f_ZERO = (D.f[DIR_000])[kzero]+c8o27; - f_TNE = (D.f[DIR_PPP])[ktne]+c1o216; - f_TSW = (D.f[DIR_MMP])[ktsw]+c1o216; - f_TSE = (D.f[DIR_PMP])[ktse]+c1o216; - f_TNW = (D.f[DIR_MPP])[ktnw]+c1o216; - f_BNE = (D.f[DIR_PPM])[kbne]+c1o216; - f_BSW = (D.f[DIR_MMM])[kbsw]+c1o216; - f_BSE = (D.f[DIR_PMM])[kbse]+c1o216; - f_BNW = (D.f[DIR_MPM])[kbnw]+c1o216; + f_E = (D.f[dP00])[ke]+c2o27; + f_W = (D.f[dM00])[kw]+c2o27; + f_N = (D.f[d0P0])[kn]+c2o27; + f_S = (D.f[d0M0])[ks]+c2o27; + f_T = (D.f[d00P])[kt]+c2o27; + f_B = (D.f[d00M])[kb]+c2o27; + f_NE = (D.f[dPP0])[kne]+c1o54; + f_SW = (D.f[dMM0])[ksw]+c1o54; + f_SE = (D.f[dPM0])[kse]+c1o54; + f_NW = (D.f[dMP0])[knw]+c1o54; + f_TE = (D.f[dP0P])[kte]+c1o54; + f_BW = (D.f[dM0M])[kbw]+c1o54; + f_BE = (D.f[dP0M])[kbe]+c1o54; + f_TW = (D.f[dM0P])[ktw]+c1o54; + f_TN = (D.f[d0PP])[ktn]+c1o54; + f_BS = (D.f[d0MM])[kbs]+c1o54; + f_BN = (D.f[d0PM])[kbn]+c1o54; + f_TS = (D.f[d0MP])[kts]+c1o54; + f_ZERO = (D.f[d000])[kzero]+c8o27; + f_TNE = (D.f[dPPP])[ktne]+c1o216; + f_TSW = (D.f[dMMP])[ktsw]+c1o216; + f_TSE = (D.f[dPMP])[ktse]+c1o216; + f_TNW = (D.f[dMPP])[ktnw]+c1o216; + f_BNE = (D.f[dPPM])[kbne]+c1o216; + f_BSW = (D.f[dMMM])[kbsw]+c1o216; + f_BSE = (D.f[dPMM])[kbse]+c1o216; + f_BNW = (D.f[dMPM])[kbnw]+c1o216; //////////////////////////////////////////////////////////////////////////////// if( BC == GEO_FLUID || BC == GEO_VELO) @@ -3977,38 +3977,38 @@ __global__ void LB_Kernel_Casc_SP_27( real omega, } } - (D.f[ DIR_P00 ])[ke ] = f_W-c2o27; - (D.f[ DIR_M00 ])[kw ] = f_E-c2o27; - - (D.f[ DIR_0P0 ])[kn ] = f_S-c2o27; - (D.f[ DIR_0M0 ])[ks ] = f_N-c2o27; - (D.f[ DIR_00P ])[kt ] = f_B-c2o27; - (D.f[ DIR_00M ])[kb ] = f_T-c2o27; - - (D.f[ DIR_PP0 ])[kne] = f_SW-c1o54; - (D.f[ DIR_MM0 ])[ksw] = f_NE-c1o54; - (D.f[ DIR_PM0 ])[kse] = f_NW-c1o54; - (D.f[ DIR_MP0 ])[knw] = f_SE-c1o54; - (D.f[ DIR_P0P ])[kte] = f_BW-c1o54; - (D.f[ DIR_M0M ])[kbw] = f_TE-c1o54; - (D.f[ DIR_P0M ])[kbe] = f_TW-c1o54; - (D.f[ DIR_M0P ])[ktw] = f_BE-c1o54; - - (D.f[ DIR_0PP ])[ktn] = f_BS-c1o54; - (D.f[ DIR_0MM ])[kbs] = f_TN-c1o54; - (D.f[ DIR_0PM ])[kbn] = f_TS-c1o54; - (D.f[ DIR_0MP ])[kts] = f_BN-c1o54; - - (D.f[ DIR_000])[k] = f_ZERO-c8o27; - - (D.f[ DIR_PPP ])[ktne] = f_BSW-c1o216; - (D.f[ DIR_PMP ])[ktse] = f_BNW-c1o216; - (D.f[ DIR_PPM ])[kbne] = f_TSW-c1o216; - (D.f[ DIR_PMM ])[kbse] = f_TNW-c1o216; - (D.f[ DIR_MPP ])[ktnw] = f_BSE-c1o216; - (D.f[ DIR_MMP ])[ktsw] = f_BNE-c1o216; - (D.f[ DIR_MPM ])[kbnw] = f_TSE-c1o216; - (D.f[ DIR_MMM ])[kbsw] = f_TNE-c1o216; + (D.f[ dP00 ])[ke ] = f_W-c2o27; + (D.f[ dM00 ])[kw ] = f_E-c2o27; + + (D.f[ d0P0 ])[kn ] = f_S-c2o27; + (D.f[ d0M0 ])[ks ] = f_N-c2o27; + (D.f[ d00P ])[kt ] = f_B-c2o27; + (D.f[ d00M ])[kb ] = f_T-c2o27; + + (D.f[ dPP0 ])[kne] = f_SW-c1o54; + (D.f[ dMM0 ])[ksw] = f_NE-c1o54; + (D.f[ dPM0 ])[kse] = f_NW-c1o54; + (D.f[ dMP0 ])[knw] = f_SE-c1o54; + (D.f[ dP0P ])[kte] = f_BW-c1o54; + (D.f[ dM0M ])[kbw] = f_TE-c1o54; + (D.f[ dP0M ])[kbe] = f_TW-c1o54; + (D.f[ dM0P ])[ktw] = f_BE-c1o54; + + (D.f[ d0PP ])[ktn] = f_BS-c1o54; + (D.f[ d0MM ])[kbs] = f_TN-c1o54; + (D.f[ d0PM ])[kbn] = f_TS-c1o54; + (D.f[ d0MP ])[kts] = f_BN-c1o54; + + (D.f[ d000])[k] = f_ZERO-c8o27; + + (D.f[ dPPP ])[ktne] = f_BSW-c1o216; + (D.f[ dPMP ])[ktse] = f_BNW-c1o216; + (D.f[ dPPM ])[kbne] = f_TSW-c1o216; + (D.f[ dPMM ])[kbse] = f_TNW-c1o216; + (D.f[ dMPP ])[ktnw] = f_BSE-c1o216; + (D.f[ dMMP ])[ktsw] = f_BNE-c1o216; + (D.f[ dMPM ])[kbnw] = f_TSE-c1o216; + (D.f[ dMMM ])[kbsw] = f_TNE-c1o216; } __syncthreads(); } @@ -4089,63 +4089,63 @@ __global__ void LB_Kernel_Casc27(real omega, Distributions27 D; if (EvenOrOdd==true) { - D.f[DIR_P00] = &DDStart[DIR_P00 * numberOfLBnodes]; - D.f[DIR_M00] = &DDStart[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0P0] = &DDStart[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0M0] = &DDStart[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00P] = &DDStart[DIR_00P * numberOfLBnodes]; - D.f[DIR_00M] = &DDStart[DIR_00M * numberOfLBnodes]; - D.f[DIR_PP0] = &DDStart[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_MM0] = &DDStart[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DDStart[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DDStart[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_P0P] = &DDStart[DIR_P0P * numberOfLBnodes]; - D.f[DIR_M0M] = &DDStart[DIR_M0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DDStart[DIR_P0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DDStart[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0PP] = &DDStart[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0MM] = &DDStart[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0PM] = &DDStart[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0MP] = &DDStart[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DDStart[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DDStart[DIR_PPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DDStart[DIR_MMP * numberOfLBnodes]; - D.f[DIR_PMP] = &DDStart[DIR_PMP * numberOfLBnodes]; - D.f[DIR_MPP] = &DDStart[DIR_MPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DDStart[DIR_PPM * numberOfLBnodes]; - D.f[DIR_MMM] = &DDStart[DIR_MMM * numberOfLBnodes]; - D.f[DIR_PMM] = &DDStart[DIR_PMM * numberOfLBnodes]; - D.f[DIR_MPM] = &DDStart[DIR_MPM * numberOfLBnodes]; + D.f[dP00] = &DDStart[dP00 * numberOfLBnodes]; + D.f[dM00] = &DDStart[dM00 * numberOfLBnodes]; + D.f[d0P0] = &DDStart[d0P0 * numberOfLBnodes]; + D.f[d0M0] = &DDStart[d0M0 * numberOfLBnodes]; + D.f[d00P] = &DDStart[d00P * numberOfLBnodes]; + D.f[d00M] = &DDStart[d00M * numberOfLBnodes]; + D.f[dPP0] = &DDStart[dPP0 * numberOfLBnodes]; + D.f[dMM0] = &DDStart[dMM0 * numberOfLBnodes]; + D.f[dPM0] = &DDStart[dPM0 * numberOfLBnodes]; + D.f[dMP0] = &DDStart[dMP0 * numberOfLBnodes]; + D.f[dP0P] = &DDStart[dP0P * numberOfLBnodes]; + D.f[dM0M] = &DDStart[dM0M * numberOfLBnodes]; + D.f[dP0M] = &DDStart[dP0M * numberOfLBnodes]; + D.f[dM0P] = &DDStart[dM0P * numberOfLBnodes]; + D.f[d0PP] = &DDStart[d0PP * numberOfLBnodes]; + D.f[d0MM] = &DDStart[d0MM * numberOfLBnodes]; + D.f[d0PM] = &DDStart[d0PM * numberOfLBnodes]; + D.f[d0MP] = &DDStart[d0MP * numberOfLBnodes]; + D.f[d000] = &DDStart[d000 * numberOfLBnodes]; + D.f[dPPP] = &DDStart[dPPP * numberOfLBnodes]; + D.f[dMMP] = &DDStart[dMMP * numberOfLBnodes]; + D.f[dPMP] = &DDStart[dPMP * numberOfLBnodes]; + D.f[dMPP] = &DDStart[dMPP * numberOfLBnodes]; + D.f[dPPM] = &DDStart[dPPM * numberOfLBnodes]; + D.f[dMMM] = &DDStart[dMMM * numberOfLBnodes]; + D.f[dPMM] = &DDStart[dPMM * numberOfLBnodes]; + D.f[dMPM] = &DDStart[dMPM * numberOfLBnodes]; } else { - D.f[DIR_M00] = &DDStart[DIR_P00 * numberOfLBnodes]; - D.f[DIR_P00] = &DDStart[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0M0] = &DDStart[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0P0] = &DDStart[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00M] = &DDStart[DIR_00P * numberOfLBnodes]; - D.f[DIR_00P] = &DDStart[DIR_00M * numberOfLBnodes]; - D.f[DIR_MM0] = &DDStart[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_PP0] = &DDStart[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DDStart[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DDStart[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_M0M] = &DDStart[DIR_P0P * numberOfLBnodes]; - D.f[DIR_P0P] = &DDStart[DIR_M0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DDStart[DIR_P0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DDStart[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0MM] = &DDStart[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0PP] = &DDStart[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0MP] = &DDStart[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0PM] = &DDStart[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DDStart[DIR_000 * numberOfLBnodes]; - D.f[DIR_MMM] = &DDStart[DIR_PPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DDStart[DIR_MMP * numberOfLBnodes]; - D.f[DIR_MPM] = &DDStart[DIR_PMP * numberOfLBnodes]; - D.f[DIR_PMM] = &DDStart[DIR_MPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DDStart[DIR_PPM * numberOfLBnodes]; - D.f[DIR_PPP] = &DDStart[DIR_MMM * numberOfLBnodes]; - D.f[DIR_MPP] = &DDStart[DIR_PMM * numberOfLBnodes]; - D.f[DIR_PMP] = &DDStart[DIR_MPM * numberOfLBnodes]; + D.f[dM00] = &DDStart[dP00 * numberOfLBnodes]; + D.f[dP00] = &DDStart[dM00 * numberOfLBnodes]; + D.f[d0M0] = &DDStart[d0P0 * numberOfLBnodes]; + D.f[d0P0] = &DDStart[d0M0 * numberOfLBnodes]; + D.f[d00M] = &DDStart[d00P * numberOfLBnodes]; + D.f[d00P] = &DDStart[d00M * numberOfLBnodes]; + D.f[dMM0] = &DDStart[dPP0 * numberOfLBnodes]; + D.f[dPP0] = &DDStart[dMM0 * numberOfLBnodes]; + D.f[dMP0] = &DDStart[dPM0 * numberOfLBnodes]; + D.f[dPM0] = &DDStart[dMP0 * numberOfLBnodes]; + D.f[dM0M] = &DDStart[dP0P * numberOfLBnodes]; + D.f[dP0P] = &DDStart[dM0M * numberOfLBnodes]; + D.f[dM0P] = &DDStart[dP0M * numberOfLBnodes]; + D.f[dP0M] = &DDStart[dM0P * numberOfLBnodes]; + D.f[d0MM] = &DDStart[d0PP * numberOfLBnodes]; + D.f[d0PP] = &DDStart[d0MM * numberOfLBnodes]; + D.f[d0MP] = &DDStart[d0PM * numberOfLBnodes]; + D.f[d0PM] = &DDStart[d0MP * numberOfLBnodes]; + D.f[d000] = &DDStart[d000 * numberOfLBnodes]; + D.f[dMMM] = &DDStart[dPPP * numberOfLBnodes]; + D.f[dPPM] = &DDStart[dMMP * numberOfLBnodes]; + D.f[dMPM] = &DDStart[dPMP * numberOfLBnodes]; + D.f[dPMM] = &DDStart[dMPP * numberOfLBnodes]; + D.f[dMMP] = &DDStart[dPPM * numberOfLBnodes]; + D.f[dPPP] = &DDStart[dMMM * numberOfLBnodes]; + D.f[dMPP] = &DDStart[dPMM * numberOfLBnodes]; + D.f[dPMP] = &DDStart[dMPM * numberOfLBnodes]; } //////////////////////////////////////////////////////////////////////////////// @@ -4208,33 +4208,33 @@ __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[DIR_P00])[ke]+c2o27; - f_W = (D.f[DIR_M00])[kw]+c2o27; - f_N = (D.f[DIR_0P0])[kn]+c2o27; - f_S = (D.f[DIR_0M0])[ks]+c2o27; - f_T = (D.f[DIR_00P])[kt]+c2o27; - f_B = (D.f[DIR_00M])[kb]+c2o27; - f_NE = (D.f[DIR_PP0])[kne]+c1o54; - f_SW = (D.f[DIR_MM0])[ksw]+c1o54; - f_SE = (D.f[DIR_PM0])[kse]+c1o54; - f_NW = (D.f[DIR_MP0])[knw]+c1o54; - f_TE = (D.f[DIR_P0P])[kte]+c1o54; - f_BW = (D.f[DIR_M0M])[kbw]+c1o54; - f_BE = (D.f[DIR_P0M])[kbe]+c1o54; - f_TW = (D.f[DIR_M0P])[ktw]+c1o54; - f_TN = (D.f[DIR_0PP])[ktn]+c1o54; - f_BS = (D.f[DIR_0MM])[kbs]+c1o54; - f_BN = (D.f[DIR_0PM])[kbn]+c1o54; - f_TS = (D.f[DIR_0MP])[kts]+c1o54; - f_ZERO = (D.f[DIR_000])[kzero]+c8o27; - f_TNE = (D.f[DIR_PPP])[ktne]+c1o216; - f_TSW = (D.f[DIR_MMP])[ktsw]+c1o216; - f_TSE = (D.f[DIR_PMP])[ktse]+c1o216; - f_TNW = (D.f[DIR_MPP])[ktnw]+c1o216; - f_BNE = (D.f[DIR_PPM])[kbne]+c1o216; - f_BSW = (D.f[DIR_MMM])[kbsw]+c1o216; - f_BSE = (D.f[DIR_PMM])[kbse]+c1o216; - f_BNW = (D.f[DIR_MPM])[kbnw]+c1o216; + f_E = (D.f[dP00])[ke]+c2o27; + f_W = (D.f[dM00])[kw]+c2o27; + f_N = (D.f[d0P0])[kn]+c2o27; + f_S = (D.f[d0M0])[ks]+c2o27; + f_T = (D.f[d00P])[kt]+c2o27; + f_B = (D.f[d00M])[kb]+c2o27; + f_NE = (D.f[dPP0])[kne]+c1o54; + f_SW = (D.f[dMM0])[ksw]+c1o54; + f_SE = (D.f[dPM0])[kse]+c1o54; + f_NW = (D.f[dMP0])[knw]+c1o54; + f_TE = (D.f[dP0P])[kte]+c1o54; + f_BW = (D.f[dM0M])[kbw]+c1o54; + f_BE = (D.f[dP0M])[kbe]+c1o54; + f_TW = (D.f[dM0P])[ktw]+c1o54; + f_TN = (D.f[d0PP])[ktn]+c1o54; + f_BS = (D.f[d0MM])[kbs]+c1o54; + f_BN = (D.f[d0PM])[kbn]+c1o54; + f_TS = (D.f[d0MP])[kts]+c1o54; + f_ZERO = (D.f[d000])[kzero]+c8o27; + f_TNE = (D.f[dPPP])[ktne]+c1o216; + f_TSW = (D.f[dMMP])[ktsw]+c1o216; + f_TSE = (D.f[dPMP])[ktse]+c1o216; + f_TNW = (D.f[dMPP])[ktnw]+c1o216; + f_BNE = (D.f[dPPM])[kbne]+c1o216; + f_BSW = (D.f[dMMM])[kbsw]+c1o216; + f_BSE = (D.f[dPMM])[kbse]+c1o216; + f_BNW = (D.f[dMPM])[kbnw]+c1o216; //////////////////////////////////////////////////////////////////////////////// if( BC == GEO_FLUID || BC == GEO_VELO) @@ -4673,38 +4673,38 @@ __global__ void LB_Kernel_Casc27(real omega, } } - (D.f[ DIR_P00 ])[ke ] = f_W-c2o27; - (D.f[ DIR_M00 ])[kw ] = f_E-c2o27; - - (D.f[ DIR_0P0 ])[kn ] = f_S-c2o27; - (D.f[ DIR_0M0 ])[ks ] = f_N-c2o27; - (D.f[ DIR_00P ])[kt ] = f_B-c2o27; - (D.f[ DIR_00M ])[kb ] = f_T-c2o27; - - (D.f[ DIR_PP0 ])[kne] = f_SW-c1o54; - (D.f[ DIR_MM0 ])[ksw] = f_NE-c1o54; - (D.f[ DIR_PM0 ])[kse] = f_NW-c1o54; - (D.f[ DIR_MP0 ])[knw] = f_SE-c1o54; - (D.f[ DIR_P0P ])[kte] = f_BW-c1o54; - (D.f[ DIR_M0M ])[kbw] = f_TE-c1o54; - (D.f[ DIR_P0M ])[kbe] = f_TW-c1o54; - (D.f[ DIR_M0P ])[ktw] = f_BE-c1o54; - - (D.f[ DIR_0PP ])[ktn] = f_BS-c1o54; - (D.f[ DIR_0MM ])[kbs] = f_TN-c1o54; - (D.f[ DIR_0PM ])[kbn] = f_TS-c1o54; - (D.f[ DIR_0MP ])[kts] = f_BN-c1o54; - - (D.f[ DIR_000])[k] = f_ZERO-c8o27; - - (D.f[ DIR_PPP ])[ktne] = f_BSW-c1o216; - (D.f[ DIR_PMP ])[ktse] = f_BNW-c1o216; - (D.f[ DIR_PPM ])[kbne] = f_TSW-c1o216; - (D.f[ DIR_PMM ])[kbse] = f_TNW-c1o216; - (D.f[ DIR_MPP ])[ktnw] = f_BSE-c1o216; - (D.f[ DIR_MMP ])[ktsw] = f_BNE-c1o216; - (D.f[ DIR_MPM ])[kbnw] = f_TSE-c1o216; - (D.f[ DIR_MMM ])[kbsw] = f_TNE-c1o216; + (D.f[ dP00 ])[ke ] = f_W-c2o27; + (D.f[ dM00 ])[kw ] = f_E-c2o27; + + (D.f[ d0P0 ])[kn ] = f_S-c2o27; + (D.f[ d0M0 ])[ks ] = f_N-c2o27; + (D.f[ d00P ])[kt ] = f_B-c2o27; + (D.f[ d00M ])[kb ] = f_T-c2o27; + + (D.f[ dPP0 ])[kne] = f_SW-c1o54; + (D.f[ dMM0 ])[ksw] = f_NE-c1o54; + (D.f[ dPM0 ])[kse] = f_NW-c1o54; + (D.f[ dMP0 ])[knw] = f_SE-c1o54; + (D.f[ dP0P ])[kte] = f_BW-c1o54; + (D.f[ dM0M ])[kbw] = f_TE-c1o54; + (D.f[ dP0M ])[kbe] = f_TW-c1o54; + (D.f[ dM0P ])[ktw] = f_BE-c1o54; + + (D.f[ d0PP ])[ktn] = f_BS-c1o54; + (D.f[ d0MM ])[kbs] = f_TN-c1o54; + (D.f[ d0PM ])[kbn] = f_TS-c1o54; + (D.f[ d0MP ])[kts] = f_BN-c1o54; + + (D.f[ d000])[k] = f_ZERO-c8o27; + + (D.f[ dPPP ])[ktne] = f_BSW-c1o216; + (D.f[ dPMP ])[ktse] = f_BNW-c1o216; + (D.f[ dPPM ])[kbne] = f_TSW-c1o216; + (D.f[ dPMM ])[kbse] = f_TNW-c1o216; + (D.f[ dMPP ])[ktnw] = f_BSE-c1o216; + (D.f[ dMMP ])[ktsw] = f_BNE-c1o216; + (D.f[ dMPM ])[kbnw] = f_TSE-c1o216; + (D.f[ dMMM ])[kbsw] = f_TNE-c1o216; } __syncthreads(); } diff --git a/src/gpu/VirtualFluids_GPU/GPU/CudaMemoryManager.cpp b/src/gpu/core/GPU/CudaMemoryManager.cpp similarity index 100% rename from src/gpu/VirtualFluids_GPU/GPU/CudaMemoryManager.cpp rename to src/gpu/core/GPU/CudaMemoryManager.cpp diff --git a/src/gpu/VirtualFluids_GPU/GPU/CudaMemoryManager.h b/src/gpu/core/GPU/CudaMemoryManager.h similarity index 99% rename from src/gpu/VirtualFluids_GPU/GPU/CudaMemoryManager.h rename to src/gpu/core/GPU/CudaMemoryManager.h index c8c10eab1094e25dfafa4bc2fabeaa79885facad..8b3ec7fdfd3e7e6a155eecb84832833ae72636e9 100644 --- a/src/gpu/VirtualFluids_GPU/GPU/CudaMemoryManager.h +++ b/src/gpu/core/GPU/CudaMemoryManager.h @@ -4,8 +4,7 @@ #include <vector> #include <string> #include <memory> -#include "PointerDefinitions.h" -#include "VirtualFluids_GPU_export.h" +#include <basics/PointerDefinitions.h> #include "LBM/LB.h" #include "lbm/constants/D3Q27.h" @@ -31,7 +30,7 @@ class Probe; class VelocitySetter; class PrecursorWriter; -class VIRTUALFLUIDS_GPU_EXPORT CudaMemoryManager +class CudaMemoryManager { public: CudaMemoryManager(std::shared_ptr<Parameter> parameter); diff --git a/src/gpu/VirtualFluids_GPU/GPU/Cumulant27.cu b/src/gpu/core/GPU/Cumulant27.cu similarity index 84% rename from src/gpu/VirtualFluids_GPU/GPU/Cumulant27.cu rename to src/gpu/core/GPU/Cumulant27.cu index 59b24df1061af16e79ad35eeceb949e6326407fd..b496ce6252de5b325a775df19fba4703432052c0 100644 --- a/src/gpu/VirtualFluids_GPU/GPU/Cumulant27.cu +++ b/src/gpu/core/GPU/Cumulant27.cu @@ -48,63 +48,63 @@ __global__ void LB_Kernel_Kum_AA2016_Comp_Bulk_SP_27(real omega, Distributions27 D; if (EvenOrOdd==true) { - D.f[DIR_P00] = &DDStart[DIR_P00 * numberOfLBnodes]; - D.f[DIR_M00] = &DDStart[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0P0] = &DDStart[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0M0] = &DDStart[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00P] = &DDStart[DIR_00P * numberOfLBnodes]; - D.f[DIR_00M] = &DDStart[DIR_00M * numberOfLBnodes]; - D.f[DIR_PP0] = &DDStart[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_MM0] = &DDStart[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DDStart[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DDStart[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_P0P] = &DDStart[DIR_P0P * numberOfLBnodes]; - D.f[DIR_M0M] = &DDStart[DIR_M0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DDStart[DIR_P0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DDStart[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0PP] = &DDStart[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0MM] = &DDStart[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0PM] = &DDStart[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0MP] = &DDStart[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DDStart[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DDStart[DIR_PPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DDStart[DIR_MMP * numberOfLBnodes]; - D.f[DIR_PMP] = &DDStart[DIR_PMP * numberOfLBnodes]; - D.f[DIR_MPP] = &DDStart[DIR_MPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DDStart[DIR_PPM * numberOfLBnodes]; - D.f[DIR_MMM] = &DDStart[DIR_MMM * numberOfLBnodes]; - D.f[DIR_PMM] = &DDStart[DIR_PMM * numberOfLBnodes]; - D.f[DIR_MPM] = &DDStart[DIR_MPM * numberOfLBnodes]; + D.f[dP00] = &DDStart[dP00 * numberOfLBnodes]; + D.f[dM00] = &DDStart[dM00 * numberOfLBnodes]; + D.f[d0P0] = &DDStart[d0P0 * numberOfLBnodes]; + D.f[d0M0] = &DDStart[d0M0 * numberOfLBnodes]; + D.f[d00P] = &DDStart[d00P * numberOfLBnodes]; + D.f[d00M] = &DDStart[d00M * numberOfLBnodes]; + D.f[dPP0] = &DDStart[dPP0 * numberOfLBnodes]; + D.f[dMM0] = &DDStart[dMM0 * numberOfLBnodes]; + D.f[dPM0] = &DDStart[dPM0 * numberOfLBnodes]; + D.f[dMP0] = &DDStart[dMP0 * numberOfLBnodes]; + D.f[dP0P] = &DDStart[dP0P * numberOfLBnodes]; + D.f[dM0M] = &DDStart[dM0M * numberOfLBnodes]; + D.f[dP0M] = &DDStart[dP0M * numberOfLBnodes]; + D.f[dM0P] = &DDStart[dM0P * numberOfLBnodes]; + D.f[d0PP] = &DDStart[d0PP * numberOfLBnodes]; + D.f[d0MM] = &DDStart[d0MM * numberOfLBnodes]; + D.f[d0PM] = &DDStart[d0PM * numberOfLBnodes]; + D.f[d0MP] = &DDStart[d0MP * numberOfLBnodes]; + D.f[d000] = &DDStart[d000 * numberOfLBnodes]; + D.f[dPPP] = &DDStart[dPPP * numberOfLBnodes]; + D.f[dMMP] = &DDStart[dMMP * numberOfLBnodes]; + D.f[dPMP] = &DDStart[dPMP * numberOfLBnodes]; + D.f[dMPP] = &DDStart[dMPP * numberOfLBnodes]; + D.f[dPPM] = &DDStart[dPPM * numberOfLBnodes]; + D.f[dMMM] = &DDStart[dMMM * numberOfLBnodes]; + D.f[dPMM] = &DDStart[dPMM * numberOfLBnodes]; + D.f[dMPM] = &DDStart[dMPM * numberOfLBnodes]; } else { - D.f[DIR_M00] = &DDStart[DIR_P00 * numberOfLBnodes]; - D.f[DIR_P00] = &DDStart[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0M0] = &DDStart[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0P0] = &DDStart[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00M] = &DDStart[DIR_00P * numberOfLBnodes]; - D.f[DIR_00P] = &DDStart[DIR_00M * numberOfLBnodes]; - D.f[DIR_MM0] = &DDStart[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_PP0] = &DDStart[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DDStart[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DDStart[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_M0M] = &DDStart[DIR_P0P * numberOfLBnodes]; - D.f[DIR_P0P] = &DDStart[DIR_M0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DDStart[DIR_P0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DDStart[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0MM] = &DDStart[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0PP] = &DDStart[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0MP] = &DDStart[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0PM] = &DDStart[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DDStart[DIR_000 * numberOfLBnodes]; - D.f[DIR_MMM] = &DDStart[DIR_PPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DDStart[DIR_MMP * numberOfLBnodes]; - D.f[DIR_MPM] = &DDStart[DIR_PMP * numberOfLBnodes]; - D.f[DIR_PMM] = &DDStart[DIR_MPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DDStart[DIR_PPM * numberOfLBnodes]; - D.f[DIR_PPP] = &DDStart[DIR_MMM * numberOfLBnodes]; - D.f[DIR_MPP] = &DDStart[DIR_PMM * numberOfLBnodes]; - D.f[DIR_PMP] = &DDStart[DIR_MPM * numberOfLBnodes]; + D.f[dM00] = &DDStart[dP00 * numberOfLBnodes]; + D.f[dP00] = &DDStart[dM00 * numberOfLBnodes]; + D.f[d0M0] = &DDStart[d0P0 * numberOfLBnodes]; + D.f[d0P0] = &DDStart[d0M0 * numberOfLBnodes]; + D.f[d00M] = &DDStart[d00P * numberOfLBnodes]; + D.f[d00P] = &DDStart[d00M * numberOfLBnodes]; + D.f[dMM0] = &DDStart[dPP0 * numberOfLBnodes]; + D.f[dPP0] = &DDStart[dMM0 * numberOfLBnodes]; + D.f[dMP0] = &DDStart[dPM0 * numberOfLBnodes]; + D.f[dPM0] = &DDStart[dMP0 * numberOfLBnodes]; + D.f[dM0M] = &DDStart[dP0P * numberOfLBnodes]; + D.f[dP0P] = &DDStart[dM0M * numberOfLBnodes]; + D.f[dM0P] = &DDStart[dP0M * numberOfLBnodes]; + D.f[dP0M] = &DDStart[dM0P * numberOfLBnodes]; + D.f[d0MM] = &DDStart[d0PP * numberOfLBnodes]; + D.f[d0PP] = &DDStart[d0MM * numberOfLBnodes]; + D.f[d0MP] = &DDStart[d0PM * numberOfLBnodes]; + D.f[d0PM] = &DDStart[d0MP * numberOfLBnodes]; + D.f[d000] = &DDStart[d000 * numberOfLBnodes]; + D.f[dMMM] = &DDStart[dPPP * numberOfLBnodes]; + D.f[dPPM] = &DDStart[dMMP * numberOfLBnodes]; + D.f[dMPM] = &DDStart[dPMP * numberOfLBnodes]; + D.f[dPMM] = &DDStart[dMPP * numberOfLBnodes]; + D.f[dMMP] = &DDStart[dPPM * numberOfLBnodes]; + D.f[dPPP] = &DDStart[dMMM * numberOfLBnodes]; + D.f[dMPP] = &DDStart[dPMM * numberOfLBnodes]; + D.f[dPMP] = &DDStart[dMPM * numberOfLBnodes]; } //////////////////////////////////////////////////////////////////////////////// @@ -137,33 +137,33 @@ __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[DIR_P00])[k ];//[ke ];// + c2over27 ;(D.f[DIR_P00])[k ];//ke - real mfabb = (D.f[DIR_M00])[kw ];//[kw ];// + c2over27 ;(D.f[DIR_M00])[kw ]; - real mfbcb = (D.f[DIR_0P0])[k ];//[kn ];// + c2over27 ;(D.f[DIR_0P0])[k ];//kn - real mfbab = (D.f[DIR_0M0])[ks ];//[ks ];// + c2over27 ;(D.f[DIR_0M0])[ks ]; - real mfbbc = (D.f[DIR_00P])[k ];//[kt ];// + c2over27 ;(D.f[DIR_00P])[k ];//kt - real mfbba = (D.f[DIR_00M])[kb ];//[kb ];// + c2over27 ;(D.f[DIR_00M])[kb ]; - real mfccb = (D.f[DIR_PP0])[k ];//[kne ];// + c1over54 ;(D.f[DIR_PP0])[k ];//kne - real mfaab = (D.f[DIR_MM0])[ksw];//[ksw ];// + c1over54 ;(D.f[DIR_MM0])[ksw]; - real mfcab = (D.f[DIR_PM0])[ks ];//[kse ];// + c1over54 ;(D.f[DIR_PM0])[ks ];//kse - real mfacb = (D.f[DIR_MP0])[kw ];//[knw ];// + c1over54 ;(D.f[DIR_MP0])[kw ];//knw - real mfcbc = (D.f[DIR_P0P])[k ];//[kte ];// + c1over54 ;(D.f[DIR_P0P])[k ];//kte - real mfaba = (D.f[DIR_M0M])[kbw];//[kbw ];// + c1over54 ;(D.f[DIR_M0M])[kbw]; - real mfcba = (D.f[DIR_P0M])[kb ];//[kbe ];// + c1over54 ;(D.f[DIR_P0M])[kb ];//kbe - real mfabc = (D.f[DIR_M0P])[kw ];//[ktw ];// + c1over54 ;(D.f[DIR_M0P])[kw ];//ktw - real mfbcc = (D.f[DIR_0PP])[k ];//[ktn ];// + c1over54 ;(D.f[DIR_0PP])[k ];//ktn - real mfbaa = (D.f[DIR_0MM])[kbs];//[kbs ];// + c1over54 ;(D.f[DIR_0MM])[kbs]; - real mfbca = (D.f[DIR_0PM])[kb ];//[kbn ];// + c1over54 ;(D.f[DIR_0PM])[kb ];//kbn - real mfbac = (D.f[DIR_0MP])[ks ];//[kts ];// + c1over54 ;(D.f[DIR_0MP])[ks ];//kts - real mfbbb = (D.f[DIR_000])[k ];//[kzero];// + c8over27 ;(D.f[DIR_000])[k ];//kzero - real mfccc = (D.f[DIR_PPP])[k ];//[ktne ];// + c1over216;(D.f[DIR_PPP])[k ];//ktne - real mfaac = (D.f[DIR_MMP])[ksw];//[ktsw ];// + c1over216;(D.f[DIR_MMP])[ksw];//ktsw - real mfcac = (D.f[DIR_PMP])[ks ];//[ktse ];// + c1over216;(D.f[DIR_PMP])[ks ];//ktse - real mfacc = (D.f[DIR_MPP])[kw ];//[ktnw ];// + c1over216;(D.f[DIR_MPP])[kw ];//ktnw - real mfcca = (D.f[DIR_PPM])[kb ];//[kbne ];// + c1over216;(D.f[DIR_PPM])[kb ];//kbne - real mfaaa = (D.f[DIR_MMM])[kbsw];//[kbsw ];// + c1over216;(D.f[DIR_MMM])[kbsw]; - real mfcaa = (D.f[DIR_PMM])[kbs];//[kbse ];// + c1over216;(D.f[DIR_PMM])[kbs];//kbse - real mfaca = (D.f[DIR_MPM])[kbw];//[kbnw ];// + c1over216;(D.f[DIR_MPM])[kbw];//kbnw + real mfcbb = (D.f[dP00])[k ];//[ke ];// + c2over27 ;(D.f[dP00])[k ];//ke + real mfabb = (D.f[dM00])[kw ];//[kw ];// + c2over27 ;(D.f[dM00])[kw ]; + real mfbcb = (D.f[d0P0])[k ];//[kn ];// + c2over27 ;(D.f[d0P0])[k ];//kn + real mfbab = (D.f[d0M0])[ks ];//[ks ];// + c2over27 ;(D.f[d0M0])[ks ]; + real mfbbc = (D.f[d00P])[k ];//[kt ];// + c2over27 ;(D.f[d00P])[k ];//kt + real mfbba = (D.f[d00M])[kb ];//[kb ];// + c2over27 ;(D.f[d00M])[kb ]; + real mfccb = (D.f[dPP0])[k ];//[kne ];// + c1over54 ;(D.f[dPP0])[k ];//kne + real mfaab = (D.f[dMM0])[ksw];//[ksw ];// + c1over54 ;(D.f[dMM0])[ksw]; + real mfcab = (D.f[dPM0])[ks ];//[kse ];// + c1over54 ;(D.f[dPM0])[ks ];//kse + real mfacb = (D.f[dMP0])[kw ];//[knw ];// + c1over54 ;(D.f[dMP0])[kw ];//knw + real mfcbc = (D.f[dP0P])[k ];//[kte ];// + c1over54 ;(D.f[dP0P])[k ];//kte + real mfaba = (D.f[dM0M])[kbw];//[kbw ];// + c1over54 ;(D.f[dM0M])[kbw]; + real mfcba = (D.f[dP0M])[kb ];//[kbe ];// + c1over54 ;(D.f[dP0M])[kb ];//kbe + real mfabc = (D.f[dM0P])[kw ];//[ktw ];// + c1over54 ;(D.f[dM0P])[kw ];//ktw + real mfbcc = (D.f[d0PP])[k ];//[ktn ];// + c1over54 ;(D.f[d0PP])[k ];//ktn + real mfbaa = (D.f[d0MM])[kbs];//[kbs ];// + c1over54 ;(D.f[d0MM])[kbs]; + real mfbca = (D.f[d0PM])[kb ];//[kbn ];// + c1over54 ;(D.f[d0PM])[kb ];//kbn + real mfbac = (D.f[d0MP])[ks ];//[kts ];// + c1over54 ;(D.f[d0MP])[ks ];//kts + real mfbbb = (D.f[d000])[k ];//[kzero];// + c8over27 ;(D.f[d000])[k ];//kzero + real mfccc = (D.f[dPPP])[k ];//[ktne ];// + c1over216;(D.f[dPPP])[k ];//ktne + real mfaac = (D.f[dMMP])[ksw];//[ktsw ];// + c1over216;(D.f[dMMP])[ksw];//ktsw + real mfcac = (D.f[dPMP])[ks ];//[ktse ];// + c1over216;(D.f[dPMP])[ks ];//ktse + real mfacc = (D.f[dMPP])[kw ];//[ktnw ];// + c1over216;(D.f[dMPP])[kw ];//ktnw + real mfcca = (D.f[dPPM])[kb ];//[kbne ];// + c1over216;(D.f[dPPM])[kb ];//kbne + real mfaaa = (D.f[dMMM])[kbsw];//[kbsw ];// + c1over216;(D.f[dMMM])[kbsw]; + real mfcaa = (D.f[dPMM])[kbs];//[kbse ];// + c1over216;(D.f[dPMM])[kbs];//kbse + real mfaca = (D.f[dMPM])[kbw];//[kbnw ];// + c1over216;(D.f[dMPM])[kbw];//kbnw //////////////////////////////////////////////////////////////////////////////////// real drho = ((((mfccc+mfaaa) + (mfaca+mfcac)) + ((mfacc+mfcaa) + (mfaac+mfcca))) + (((mfbac+mfbca) + (mfbaa+mfbcc)) + ((mfabc+mfcba) + (mfaba+mfcbc)) + ((mfacb+mfcab) + (mfaab+mfccb))) + @@ -894,33 +894,33 @@ __global__ void LB_Kernel_Kum_AA2016_Comp_Bulk_SP_27(real omega, //////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////// - (D.f[ DIR_P00 ])[k ] = mfabb;//(D.f[ DIR_P00 ])[ke ] = mfabb;// - c2over27 ; (D.f[ DIR_P00 ])[k ] - (D.f[ DIR_M00 ])[kw ] = mfcbb;//(D.f[ DIR_M00 ])[kw ] = mfcbb;// - c2over27 ; (D.f[ DIR_M00 ])[kw ] - (D.f[ DIR_0P0 ])[k ] = mfbab;//(D.f[ DIR_0P0 ])[kn ] = mfbab;// - c2over27 ; (D.f[ DIR_0P0 ])[k ] - (D.f[ DIR_0M0 ])[ks ] = mfbcb;//(D.f[ DIR_0M0 ])[ks ] = mfbcb;// - c2over27 ; (D.f[ DIR_0M0 ])[ks ] - (D.f[ DIR_00P ])[k ] = mfbba;//(D.f[ DIR_00P ])[kt ] = mfbba;// - c2over27 ; (D.f[ DIR_00P ])[k ] - (D.f[ DIR_00M ])[kb ] = mfbbc;//(D.f[ DIR_00M ])[kb ] = mfbbc;// - c2over27 ; (D.f[ DIR_00M ])[kb ] - (D.f[ DIR_PP0 ])[k ] = mfaab;//(D.f[ DIR_PP0 ])[kne ] = mfaab;// - c1over54 ; (D.f[ DIR_PP0 ])[k ] - (D.f[ DIR_MM0 ])[ksw ] = mfccb;//(D.f[ DIR_MM0 ])[ksw ] = mfccb;// - c1over54 ; (D.f[ DIR_MM0 ])[ksw ] - (D.f[ DIR_PM0 ])[ks ] = mfacb;//(D.f[ DIR_PM0 ])[kse ] = mfacb;// - c1over54 ; (D.f[ DIR_PM0 ])[ks ] - (D.f[ DIR_MP0 ])[kw ] = mfcab;//(D.f[ DIR_MP0 ])[knw ] = mfcab;// - c1over54 ; (D.f[ DIR_MP0 ])[kw ] - (D.f[ DIR_P0P ])[k ] = mfaba;//(D.f[ DIR_P0P ])[kte ] = mfaba;// - c1over54 ; (D.f[ DIR_P0P ])[k ] - (D.f[ DIR_M0M ])[kbw ] = mfcbc;//(D.f[ DIR_M0M ])[kbw ] = mfcbc;// - c1over54 ; (D.f[ DIR_M0M ])[kbw ] - (D.f[ DIR_P0M ])[kb ] = mfabc;//(D.f[ DIR_P0M ])[kbe ] = mfabc;// - c1over54 ; (D.f[ DIR_P0M ])[kb ] - (D.f[ DIR_M0P ])[kw ] = mfcba;//(D.f[ DIR_M0P ])[ktw ] = mfcba;// - c1over54 ; (D.f[ DIR_M0P ])[kw ] - (D.f[ DIR_0PP ])[k ] = mfbaa;//(D.f[ DIR_0PP ])[ktn ] = mfbaa;// - c1over54 ; (D.f[ DIR_0PP ])[k ] - (D.f[ DIR_0MM ])[kbs ] = mfbcc;//(D.f[ DIR_0MM ])[kbs ] = mfbcc;// - c1over54 ; (D.f[ DIR_0MM ])[kbs ] - (D.f[ DIR_0PM ])[kb ] = mfbac;//(D.f[ DIR_0PM ])[kbn ] = mfbac;// - c1over54 ; (D.f[ DIR_0PM ])[kb ] - (D.f[ DIR_0MP ])[ks ] = mfbca;//(D.f[ DIR_0MP ])[kts ] = mfbca;// - c1over54 ; (D.f[ DIR_0MP ])[ks ] - (D.f[ DIR_000])[k ] = mfbbb;//(D.f[ DIR_000])[kzero] = mfbbb;// - c8over27 ; (D.f[ DIR_000])[k ] - (D.f[ DIR_PPP ])[k ] = mfaaa;//(D.f[ DIR_PPP ])[ktne ] = mfaaa;// - c1over216; (D.f[ DIR_PPP ])[k ] - (D.f[ DIR_PMP ])[ks ] = mfaca;//(D.f[ DIR_PMP ])[ktse ] = mfaca;// - c1over216; (D.f[ DIR_PMP ])[ks ] - (D.f[ DIR_PPM ])[kb ] = mfaac;//(D.f[ DIR_PPM ])[kbne ] = mfaac;// - c1over216; (D.f[ DIR_PPM ])[kb ] - (D.f[ DIR_PMM ])[kbs ] = mfacc;//(D.f[ DIR_PMM ])[kbse ] = mfacc;// - c1over216; (D.f[ DIR_PMM ])[kbs ] - (D.f[ DIR_MPP ])[kw ] = mfcaa;//(D.f[ DIR_MPP ])[ktnw ] = mfcaa;// - c1over216; (D.f[ DIR_MPP ])[kw ] - (D.f[ DIR_MMP ])[ksw ] = mfcca;//(D.f[ DIR_MMP ])[ktsw ] = mfcca;// - c1over216; (D.f[ DIR_MMP ])[ksw ] - (D.f[ DIR_MPM ])[kbw ] = mfcac;//(D.f[ DIR_MPM ])[kbnw ] = mfcac;// - c1over216; (D.f[ DIR_MPM ])[kbw ] - (D.f[ DIR_MMM ])[kbsw] = mfccc;//(D.f[ DIR_MMM ])[kbsw ] = mfccc;// - c1over216; (D.f[ DIR_MMM ])[kbsw] + (D.f[ dP00 ])[k ] = mfabb;//(D.f[ dP00 ])[ke ] = mfabb;// - c2over27 ; (D.f[ dP00 ])[k ] + (D.f[ dM00 ])[kw ] = mfcbb;//(D.f[ dM00 ])[kw ] = mfcbb;// - c2over27 ; (D.f[ dM00 ])[kw ] + (D.f[ d0P0 ])[k ] = mfbab;//(D.f[ d0P0 ])[kn ] = mfbab;// - c2over27 ; (D.f[ d0P0 ])[k ] + (D.f[ d0M0 ])[ks ] = mfbcb;//(D.f[ d0M0 ])[ks ] = mfbcb;// - c2over27 ; (D.f[ d0M0 ])[ks ] + (D.f[ d00P ])[k ] = mfbba;//(D.f[ d00P ])[kt ] = mfbba;// - c2over27 ; (D.f[ d00P ])[k ] + (D.f[ d00M ])[kb ] = mfbbc;//(D.f[ d00M ])[kb ] = mfbbc;// - c2over27 ; (D.f[ d00M ])[kb ] + (D.f[ dPP0 ])[k ] = mfaab;//(D.f[ dPP0 ])[kne ] = mfaab;// - c1over54 ; (D.f[ dPP0 ])[k ] + (D.f[ dMM0 ])[ksw ] = mfccb;//(D.f[ dMM0 ])[ksw ] = mfccb;// - c1over54 ; (D.f[ dMM0 ])[ksw ] + (D.f[ dPM0 ])[ks ] = mfacb;//(D.f[ dPM0 ])[kse ] = mfacb;// - c1over54 ; (D.f[ dPM0 ])[ks ] + (D.f[ dMP0 ])[kw ] = mfcab;//(D.f[ dMP0 ])[knw ] = mfcab;// - c1over54 ; (D.f[ dMP0 ])[kw ] + (D.f[ dP0P ])[k ] = mfaba;//(D.f[ dP0P ])[kte ] = mfaba;// - c1over54 ; (D.f[ dP0P ])[k ] + (D.f[ dM0M ])[kbw ] = mfcbc;//(D.f[ dM0M ])[kbw ] = mfcbc;// - c1over54 ; (D.f[ dM0M ])[kbw ] + (D.f[ dP0M ])[kb ] = mfabc;//(D.f[ dP0M ])[kbe ] = mfabc;// - c1over54 ; (D.f[ dP0M ])[kb ] + (D.f[ dM0P ])[kw ] = mfcba;//(D.f[ dM0P ])[ktw ] = mfcba;// - c1over54 ; (D.f[ dM0P ])[kw ] + (D.f[ d0PP ])[k ] = mfbaa;//(D.f[ d0PP ])[ktn ] = mfbaa;// - c1over54 ; (D.f[ d0PP ])[k ] + (D.f[ d0MM ])[kbs ] = mfbcc;//(D.f[ d0MM ])[kbs ] = mfbcc;// - c1over54 ; (D.f[ d0MM ])[kbs ] + (D.f[ d0PM ])[kb ] = mfbac;//(D.f[ d0PM ])[kbn ] = mfbac;// - c1over54 ; (D.f[ d0PM ])[kb ] + (D.f[ d0MP ])[ks ] = mfbca;//(D.f[ d0MP ])[kts ] = mfbca;// - c1over54 ; (D.f[ d0MP ])[ks ] + (D.f[ d000])[k ] = mfbbb;//(D.f[ d000])[kzero] = mfbbb;// - c8over27 ; (D.f[ d000])[k ] + (D.f[ dPPP ])[k ] = mfaaa;//(D.f[ dPPP ])[ktne ] = mfaaa;// - c1over216; (D.f[ dPPP ])[k ] + (D.f[ dPMP ])[ks ] = mfaca;//(D.f[ dPMP ])[ktse ] = mfaca;// - c1over216; (D.f[ dPMP ])[ks ] + (D.f[ dPPM ])[kb ] = mfaac;//(D.f[ dPPM ])[kbne ] = mfaac;// - c1over216; (D.f[ dPPM ])[kb ] + (D.f[ dPMM ])[kbs ] = mfacc;//(D.f[ dPMM ])[kbse ] = mfacc;// - c1over216; (D.f[ dPMM ])[kbs ] + (D.f[ dMPP ])[kw ] = mfcaa;//(D.f[ dMPP ])[ktnw ] = mfcaa;// - c1over216; (D.f[ dMPP ])[kw ] + (D.f[ dMMP ])[ksw ] = mfcca;//(D.f[ dMMP ])[ktsw ] = mfcca;// - c1over216; (D.f[ dMMP ])[ksw ] + (D.f[ dMPM ])[kbw ] = mfcac;//(D.f[ dMPM ])[kbnw ] = mfcac;// - c1over216; (D.f[ dMPM ])[kbw ] + (D.f[ dMMM ])[kbsw] = mfccc;//(D.f[ dMMM ])[kbsw ] = mfccc;// - c1over216; (D.f[ dMMM ])[kbsw] //////////////////////////////////////////////////////////////////////////////////// } } @@ -1000,63 +1000,63 @@ __global__ void LB_Kernel_Kum_IsoTest_SP_27( real omega, Distributions27 D; if (EvenOrOdd==true) { - D.f[DIR_P00] = &DDStart[DIR_P00 * numberOfLBnodes]; - D.f[DIR_M00] = &DDStart[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0P0] = &DDStart[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0M0] = &DDStart[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00P] = &DDStart[DIR_00P * numberOfLBnodes]; - D.f[DIR_00M] = &DDStart[DIR_00M * numberOfLBnodes]; - D.f[DIR_PP0] = &DDStart[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_MM0] = &DDStart[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DDStart[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DDStart[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_P0P] = &DDStart[DIR_P0P * numberOfLBnodes]; - D.f[DIR_M0M] = &DDStart[DIR_M0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DDStart[DIR_P0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DDStart[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0PP] = &DDStart[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0MM] = &DDStart[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0PM] = &DDStart[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0MP] = &DDStart[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DDStart[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DDStart[DIR_PPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DDStart[DIR_MMP * numberOfLBnodes]; - D.f[DIR_PMP] = &DDStart[DIR_PMP * numberOfLBnodes]; - D.f[DIR_MPP] = &DDStart[DIR_MPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DDStart[DIR_PPM * numberOfLBnodes]; - D.f[DIR_MMM] = &DDStart[DIR_MMM * numberOfLBnodes]; - D.f[DIR_PMM] = &DDStart[DIR_PMM * numberOfLBnodes]; - D.f[DIR_MPM] = &DDStart[DIR_MPM * numberOfLBnodes]; + D.f[dP00] = &DDStart[dP00 * numberOfLBnodes]; + D.f[dM00] = &DDStart[dM00 * numberOfLBnodes]; + D.f[d0P0] = &DDStart[d0P0 * numberOfLBnodes]; + D.f[d0M0] = &DDStart[d0M0 * numberOfLBnodes]; + D.f[d00P] = &DDStart[d00P * numberOfLBnodes]; + D.f[d00M] = &DDStart[d00M * numberOfLBnodes]; + D.f[dPP0] = &DDStart[dPP0 * numberOfLBnodes]; + D.f[dMM0] = &DDStart[dMM0 * numberOfLBnodes]; + D.f[dPM0] = &DDStart[dPM0 * numberOfLBnodes]; + D.f[dMP0] = &DDStart[dMP0 * numberOfLBnodes]; + D.f[dP0P] = &DDStart[dP0P * numberOfLBnodes]; + D.f[dM0M] = &DDStart[dM0M * numberOfLBnodes]; + D.f[dP0M] = &DDStart[dP0M * numberOfLBnodes]; + D.f[dM0P] = &DDStart[dM0P * numberOfLBnodes]; + D.f[d0PP] = &DDStart[d0PP * numberOfLBnodes]; + D.f[d0MM] = &DDStart[d0MM * numberOfLBnodes]; + D.f[d0PM] = &DDStart[d0PM * numberOfLBnodes]; + D.f[d0MP] = &DDStart[d0MP * numberOfLBnodes]; + D.f[d000] = &DDStart[d000 * numberOfLBnodes]; + D.f[dPPP] = &DDStart[dPPP * numberOfLBnodes]; + D.f[dMMP] = &DDStart[dMMP * numberOfLBnodes]; + D.f[dPMP] = &DDStart[dPMP * numberOfLBnodes]; + D.f[dMPP] = &DDStart[dMPP * numberOfLBnodes]; + D.f[dPPM] = &DDStart[dPPM * numberOfLBnodes]; + D.f[dMMM] = &DDStart[dMMM * numberOfLBnodes]; + D.f[dPMM] = &DDStart[dPMM * numberOfLBnodes]; + D.f[dMPM] = &DDStart[dMPM * numberOfLBnodes]; } else { - D.f[DIR_M00] = &DDStart[DIR_P00 * numberOfLBnodes]; - D.f[DIR_P00] = &DDStart[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0M0] = &DDStart[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0P0] = &DDStart[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00M] = &DDStart[DIR_00P * numberOfLBnodes]; - D.f[DIR_00P] = &DDStart[DIR_00M * numberOfLBnodes]; - D.f[DIR_MM0] = &DDStart[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_PP0] = &DDStart[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DDStart[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DDStart[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_M0M] = &DDStart[DIR_P0P * numberOfLBnodes]; - D.f[DIR_P0P] = &DDStart[DIR_M0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DDStart[DIR_P0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DDStart[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0MM] = &DDStart[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0PP] = &DDStart[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0MP] = &DDStart[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0PM] = &DDStart[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DDStart[DIR_000 * numberOfLBnodes]; - D.f[DIR_MMM] = &DDStart[DIR_PPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DDStart[DIR_MMP * numberOfLBnodes]; - D.f[DIR_MPM] = &DDStart[DIR_PMP * numberOfLBnodes]; - D.f[DIR_PMM] = &DDStart[DIR_MPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DDStart[DIR_PPM * numberOfLBnodes]; - D.f[DIR_PPP] = &DDStart[DIR_MMM * numberOfLBnodes]; - D.f[DIR_MPP] = &DDStart[DIR_PMM * numberOfLBnodes]; - D.f[DIR_PMP] = &DDStart[DIR_MPM * numberOfLBnodes]; + D.f[dM00] = &DDStart[dP00 * numberOfLBnodes]; + D.f[dP00] = &DDStart[dM00 * numberOfLBnodes]; + D.f[d0M0] = &DDStart[d0P0 * numberOfLBnodes]; + D.f[d0P0] = &DDStart[d0M0 * numberOfLBnodes]; + D.f[d00M] = &DDStart[d00P * numberOfLBnodes]; + D.f[d00P] = &DDStart[d00M * numberOfLBnodes]; + D.f[dMM0] = &DDStart[dPP0 * numberOfLBnodes]; + D.f[dPP0] = &DDStart[dMM0 * numberOfLBnodes]; + D.f[dMP0] = &DDStart[dPM0 * numberOfLBnodes]; + D.f[dPM0] = &DDStart[dMP0 * numberOfLBnodes]; + D.f[dM0M] = &DDStart[dP0P * numberOfLBnodes]; + D.f[dP0P] = &DDStart[dM0M * numberOfLBnodes]; + D.f[dM0P] = &DDStart[dP0M * numberOfLBnodes]; + D.f[dP0M] = &DDStart[dM0P * numberOfLBnodes]; + D.f[d0MM] = &DDStart[d0PP * numberOfLBnodes]; + D.f[d0PP] = &DDStart[d0MM * numberOfLBnodes]; + D.f[d0MP] = &DDStart[d0PM * numberOfLBnodes]; + D.f[d0PM] = &DDStart[d0MP * numberOfLBnodes]; + D.f[d000] = &DDStart[d000 * numberOfLBnodes]; + D.f[dMMM] = &DDStart[dPPP * numberOfLBnodes]; + D.f[dPPM] = &DDStart[dMMP * numberOfLBnodes]; + D.f[dMPM] = &DDStart[dPMP * numberOfLBnodes]; + D.f[dPMM] = &DDStart[dMPP * numberOfLBnodes]; + D.f[dMMP] = &DDStart[dPPM * numberOfLBnodes]; + D.f[dPPP] = &DDStart[dMMM * numberOfLBnodes]; + D.f[dMPP] = &DDStart[dPMM * numberOfLBnodes]; + D.f[dPMP] = &DDStart[dMPM * numberOfLBnodes]; } //////////////////////////////////////////////////////////////////////////////// @@ -1089,33 +1089,33 @@ __global__ void LB_Kernel_Kum_IsoTest_SP_27( real omega, //unsigned int ktne = k; unsigned int kbsw = neighborZ[ksw]; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real mfcbb = (D.f[DIR_P00])[k ];//[ke ];// + c2over27 ;(D.f[DIR_P00])[k ];//ke - real mfabb = (D.f[DIR_M00])[kw ];//[kw ];// + c2over27 ;(D.f[DIR_M00])[kw ]; - real mfbcb = (D.f[DIR_0P0])[k ];//[kn ];// + c2over27 ;(D.f[DIR_0P0])[k ];//kn - real mfbab = (D.f[DIR_0M0])[ks ];//[ks ];// + c2over27 ;(D.f[DIR_0M0])[ks ]; - real mfbbc = (D.f[DIR_00P])[k ];//[kt ];// + c2over27 ;(D.f[DIR_00P])[k ];//kt - real mfbba = (D.f[DIR_00M])[kb ];//[kb ];// + c2over27 ;(D.f[DIR_00M])[kb ]; - real mfccb = (D.f[DIR_PP0])[k ];//[kne ];// + c1over54 ;(D.f[DIR_PP0])[k ];//kne - real mfaab = (D.f[DIR_MM0])[ksw];//[ksw ];// + c1over54 ;(D.f[DIR_MM0])[ksw]; - real mfcab = (D.f[DIR_PM0])[ks ];//[kse ];// + c1over54 ;(D.f[DIR_PM0])[ks ];//kse - real mfacb = (D.f[DIR_MP0])[kw ];//[knw ];// + c1over54 ;(D.f[DIR_MP0])[kw ];//knw - real mfcbc = (D.f[DIR_P0P])[k ];//[kte ];// + c1over54 ;(D.f[DIR_P0P])[k ];//kte - real mfaba = (D.f[DIR_M0M])[kbw];//[kbw ];// + c1over54 ;(D.f[DIR_M0M])[kbw]; - real mfcba = (D.f[DIR_P0M])[kb ];//[kbe ];// + c1over54 ;(D.f[DIR_P0M])[kb ];//kbe - real mfabc = (D.f[DIR_M0P])[kw ];//[ktw ];// + c1over54 ;(D.f[DIR_M0P])[kw ];//ktw - real mfbcc = (D.f[DIR_0PP])[k ];//[ktn ];// + c1over54 ;(D.f[DIR_0PP])[k ];//ktn - real mfbaa = (D.f[DIR_0MM])[kbs];//[kbs ];// + c1over54 ;(D.f[DIR_0MM])[kbs]; - real mfbca = (D.f[DIR_0PM])[kb ];//[kbn ];// + c1over54 ;(D.f[DIR_0PM])[kb ];//kbn - real mfbac = (D.f[DIR_0MP])[ks ];//[kts ];// + c1over54 ;(D.f[DIR_0MP])[ks ];//kts - real mfbbb = (D.f[DIR_000])[k ];//[kzero];// + c8over27 ;(D.f[DIR_000])[k ];//kzero - real mfccc = (D.f[DIR_PPP])[k ];//[ktne ];// + c1over216;(D.f[DIR_PPP])[k ];//ktne - real mfaac = (D.f[DIR_MMP])[ksw];//[ktsw ];// + c1over216;(D.f[DIR_MMP])[ksw];//ktsw - real mfcac = (D.f[DIR_PMP])[ks ];//[ktse ];// + c1over216;(D.f[DIR_PMP])[ks ];//ktse - real mfacc = (D.f[DIR_MPP])[kw ];//[ktnw ];// + c1over216;(D.f[DIR_MPP])[kw ];//ktnw - real mfcca = (D.f[DIR_PPM])[kb ];//[kbne ];// + c1over216;(D.f[DIR_PPM])[kb ];//kbne - real mfaaa = (D.f[DIR_MMM])[kbsw];//[kbsw ];// + c1over216;(D.f[DIR_MMM])[kbsw]; - real mfcaa = (D.f[DIR_PMM])[kbs];//[kbse ];// + c1over216;(D.f[DIR_PMM])[kbs];//kbse - real mfaca = (D.f[DIR_MPM])[kbw];//[kbnw ];// + c1over216;(D.f[DIR_MPM])[kbw];//kbnw + real mfcbb = (D.f[dP00])[k ];//[ke ];// + c2over27 ;(D.f[dP00])[k ];//ke + real mfabb = (D.f[dM00])[kw ];//[kw ];// + c2over27 ;(D.f[dM00])[kw ]; + real mfbcb = (D.f[d0P0])[k ];//[kn ];// + c2over27 ;(D.f[d0P0])[k ];//kn + real mfbab = (D.f[d0M0])[ks ];//[ks ];// + c2over27 ;(D.f[d0M0])[ks ]; + real mfbbc = (D.f[d00P])[k ];//[kt ];// + c2over27 ;(D.f[d00P])[k ];//kt + real mfbba = (D.f[d00M])[kb ];//[kb ];// + c2over27 ;(D.f[d00M])[kb ]; + real mfccb = (D.f[dPP0])[k ];//[kne ];// + c1over54 ;(D.f[dPP0])[k ];//kne + real mfaab = (D.f[dMM0])[ksw];//[ksw ];// + c1over54 ;(D.f[dMM0])[ksw]; + real mfcab = (D.f[dPM0])[ks ];//[kse ];// + c1over54 ;(D.f[dPM0])[ks ];//kse + real mfacb = (D.f[dMP0])[kw ];//[knw ];// + c1over54 ;(D.f[dMP0])[kw ];//knw + real mfcbc = (D.f[dP0P])[k ];//[kte ];// + c1over54 ;(D.f[dP0P])[k ];//kte + real mfaba = (D.f[dM0M])[kbw];//[kbw ];// + c1over54 ;(D.f[dM0M])[kbw]; + real mfcba = (D.f[dP0M])[kb ];//[kbe ];// + c1over54 ;(D.f[dP0M])[kb ];//kbe + real mfabc = (D.f[dM0P])[kw ];//[ktw ];// + c1over54 ;(D.f[dM0P])[kw ];//ktw + real mfbcc = (D.f[d0PP])[k ];//[ktn ];// + c1over54 ;(D.f[d0PP])[k ];//ktn + real mfbaa = (D.f[d0MM])[kbs];//[kbs ];// + c1over54 ;(D.f[d0MM])[kbs]; + real mfbca = (D.f[d0PM])[kb ];//[kbn ];// + c1over54 ;(D.f[d0PM])[kb ];//kbn + real mfbac = (D.f[d0MP])[ks ];//[kts ];// + c1over54 ;(D.f[d0MP])[ks ];//kts + real mfbbb = (D.f[d000])[k ];//[kzero];// + c8over27 ;(D.f[d000])[k ];//kzero + real mfccc = (D.f[dPPP])[k ];//[ktne ];// + c1over216;(D.f[dPPP])[k ];//ktne + real mfaac = (D.f[dMMP])[ksw];//[ktsw ];// + c1over216;(D.f[dMMP])[ksw];//ktsw + real mfcac = (D.f[dPMP])[ks ];//[ktse ];// + c1over216;(D.f[dPMP])[ks ];//ktse + real mfacc = (D.f[dMPP])[kw ];//[ktnw ];// + c1over216;(D.f[dMPP])[kw ];//ktnw + real mfcca = (D.f[dPPM])[kb ];//[kbne ];// + c1over216;(D.f[dPPM])[kb ];//kbne + real mfaaa = (D.f[dMMM])[kbsw];//[kbsw ];// + c1over216;(D.f[dMMM])[kbsw]; + real mfcaa = (D.f[dPMM])[kbs];//[kbse ];// + c1over216;(D.f[dPMM])[kbs];//kbse + real mfaca = (D.f[dMPM])[kbw];//[kbnw ];// + c1over216;(D.f[dMPM])[kbw];//kbnw //////////////////////////////////////////////////////////////////////////////////// //slow //real oMdrho = one - ((((mfccc+mfaaa) + (mfaca+mfcac)) + ((mfacc+mfcaa) + (mfaac+mfcca))) + @@ -1933,33 +1933,33 @@ __global__ void LB_Kernel_Kum_IsoTest_SP_27( real omega, //////////////////////////////////////////////////////////////////////////////////// - (D.f[ DIR_P00 ])[k ] = mfabb;//(D.f[ DIR_P00 ])[ke ] = mfabb;// - c2over27 ; (D.f[ DIR_P00 ])[k ] - (D.f[ DIR_M00 ])[kw ] = mfcbb;//(D.f[ DIR_M00 ])[kw ] = mfcbb;// - c2over27 ; (D.f[ DIR_M00 ])[kw ] - (D.f[ DIR_0P0 ])[k ] = mfbab;//(D.f[ DIR_0P0 ])[kn ] = mfbab;// - c2over27 ; (D.f[ DIR_0P0 ])[k ] - (D.f[ DIR_0M0 ])[ks ] = mfbcb;//(D.f[ DIR_0M0 ])[ks ] = mfbcb;// - c2over27 ; (D.f[ DIR_0M0 ])[ks ] - (D.f[ DIR_00P ])[k ] = mfbba;//(D.f[ DIR_00P ])[kt ] = mfbba;// - c2over27 ; (D.f[ DIR_00P ])[k ] - (D.f[ DIR_00M ])[kb ] = mfbbc;//(D.f[ DIR_00M ])[kb ] = mfbbc;// - c2over27 ; (D.f[ DIR_00M ])[kb ] - (D.f[ DIR_PP0 ])[k ] = mfaab;//(D.f[ DIR_PP0 ])[kne ] = mfaab;// - c1over54 ; (D.f[ DIR_PP0 ])[k ] - (D.f[ DIR_MM0 ])[ksw ] = mfccb;//(D.f[ DIR_MM0 ])[ksw ] = mfccb;// - c1over54 ; (D.f[ DIR_MM0 ])[ksw ] - (D.f[ DIR_PM0 ])[ks ] = mfacb;//(D.f[ DIR_PM0 ])[kse ] = mfacb;// - c1over54 ; (D.f[ DIR_PM0 ])[ks ] - (D.f[ DIR_MP0 ])[kw ] = mfcab;//(D.f[ DIR_MP0 ])[knw ] = mfcab;// - c1over54 ; (D.f[ DIR_MP0 ])[kw ] - (D.f[ DIR_P0P ])[k ] = mfaba;//(D.f[ DIR_P0P ])[kte ] = mfaba;// - c1over54 ; (D.f[ DIR_P0P ])[k ] - (D.f[ DIR_M0M ])[kbw ] = mfcbc;//(D.f[ DIR_M0M ])[kbw ] = mfcbc;// - c1over54 ; (D.f[ DIR_M0M ])[kbw ] - (D.f[ DIR_P0M ])[kb ] = mfabc;//(D.f[ DIR_P0M ])[kbe ] = mfabc;// - c1over54 ; (D.f[ DIR_P0M ])[kb ] - (D.f[ DIR_M0P ])[kw ] = mfcba;//(D.f[ DIR_M0P ])[ktw ] = mfcba;// - c1over54 ; (D.f[ DIR_M0P ])[kw ] - (D.f[ DIR_0PP ])[k ] = mfbaa;//(D.f[ DIR_0PP ])[ktn ] = mfbaa;// - c1over54 ; (D.f[ DIR_0PP ])[k ] - (D.f[ DIR_0MM ])[kbs ] = mfbcc;//(D.f[ DIR_0MM ])[kbs ] = mfbcc;// - c1over54 ; (D.f[ DIR_0MM ])[kbs ] - (D.f[ DIR_0PM ])[kb ] = mfbac;//(D.f[ DIR_0PM ])[kbn ] = mfbac;// - c1over54 ; (D.f[ DIR_0PM ])[kb ] - (D.f[ DIR_0MP ])[ks ] = mfbca;//(D.f[ DIR_0MP ])[kts ] = mfbca;// - c1over54 ; (D.f[ DIR_0MP ])[ks ] - (D.f[ DIR_000])[k ] = mfbbb;//(D.f[ DIR_000])[kzero] = mfbbb;// - c8over27 ; (D.f[ DIR_000])[k ] - (D.f[ DIR_PPP ])[k ] = mfaaa;//(D.f[ DIR_PPP ])[ktne ] = mfaaa;// - c1over216; (D.f[ DIR_PPP ])[k ] - (D.f[ DIR_PMP ])[ks ] = mfaca;//(D.f[ DIR_PMP ])[ktse ] = mfaca;// - c1over216; (D.f[ DIR_PMP ])[ks ] - (D.f[ DIR_PPM ])[kb ] = mfaac;//(D.f[ DIR_PPM ])[kbne ] = mfaac;// - c1over216; (D.f[ DIR_PPM ])[kb ] - (D.f[ DIR_PMM ])[kbs ] = mfacc;//(D.f[ DIR_PMM ])[kbse ] = mfacc;// - c1over216; (D.f[ DIR_PMM ])[kbs ] - (D.f[ DIR_MPP ])[kw ] = mfcaa;//(D.f[ DIR_MPP ])[ktnw ] = mfcaa;// - c1over216; (D.f[ DIR_MPP ])[kw ] - (D.f[ DIR_MMP ])[ksw ] = mfcca;//(D.f[ DIR_MMP ])[ktsw ] = mfcca;// - c1over216; (D.f[ DIR_MMP ])[ksw ] - (D.f[ DIR_MPM ])[kbw ] = mfcac;//(D.f[ DIR_MPM ])[kbnw ] = mfcac;// - c1over216; (D.f[ DIR_MPM ])[kbw ] - (D.f[ DIR_MMM ])[kbsw] = mfccc;//(D.f[ DIR_MMM ])[kbsw ] = mfccc;// - c1over216; (D.f[ DIR_MMM ])[kbsw] + (D.f[ dP00 ])[k ] = mfabb;//(D.f[ dP00 ])[ke ] = mfabb;// - c2over27 ; (D.f[ dP00 ])[k ] + (D.f[ dM00 ])[kw ] = mfcbb;//(D.f[ dM00 ])[kw ] = mfcbb;// - c2over27 ; (D.f[ dM00 ])[kw ] + (D.f[ d0P0 ])[k ] = mfbab;//(D.f[ d0P0 ])[kn ] = mfbab;// - c2over27 ; (D.f[ d0P0 ])[k ] + (D.f[ d0M0 ])[ks ] = mfbcb;//(D.f[ d0M0 ])[ks ] = mfbcb;// - c2over27 ; (D.f[ d0M0 ])[ks ] + (D.f[ d00P ])[k ] = mfbba;//(D.f[ d00P ])[kt ] = mfbba;// - c2over27 ; (D.f[ d00P ])[k ] + (D.f[ d00M ])[kb ] = mfbbc;//(D.f[ d00M ])[kb ] = mfbbc;// - c2over27 ; (D.f[ d00M ])[kb ] + (D.f[ dPP0 ])[k ] = mfaab;//(D.f[ dPP0 ])[kne ] = mfaab;// - c1over54 ; (D.f[ dPP0 ])[k ] + (D.f[ dMM0 ])[ksw ] = mfccb;//(D.f[ dMM0 ])[ksw ] = mfccb;// - c1over54 ; (D.f[ dMM0 ])[ksw ] + (D.f[ dPM0 ])[ks ] = mfacb;//(D.f[ dPM0 ])[kse ] = mfacb;// - c1over54 ; (D.f[ dPM0 ])[ks ] + (D.f[ dMP0 ])[kw ] = mfcab;//(D.f[ dMP0 ])[knw ] = mfcab;// - c1over54 ; (D.f[ dMP0 ])[kw ] + (D.f[ dP0P ])[k ] = mfaba;//(D.f[ dP0P ])[kte ] = mfaba;// - c1over54 ; (D.f[ dP0P ])[k ] + (D.f[ dM0M ])[kbw ] = mfcbc;//(D.f[ dM0M ])[kbw ] = mfcbc;// - c1over54 ; (D.f[ dM0M ])[kbw ] + (D.f[ dP0M ])[kb ] = mfabc;//(D.f[ dP0M ])[kbe ] = mfabc;// - c1over54 ; (D.f[ dP0M ])[kb ] + (D.f[ dM0P ])[kw ] = mfcba;//(D.f[ dM0P ])[ktw ] = mfcba;// - c1over54 ; (D.f[ dM0P ])[kw ] + (D.f[ d0PP ])[k ] = mfbaa;//(D.f[ d0PP ])[ktn ] = mfbaa;// - c1over54 ; (D.f[ d0PP ])[k ] + (D.f[ d0MM ])[kbs ] = mfbcc;//(D.f[ d0MM ])[kbs ] = mfbcc;// - c1over54 ; (D.f[ d0MM ])[kbs ] + (D.f[ d0PM ])[kb ] = mfbac;//(D.f[ d0PM ])[kbn ] = mfbac;// - c1over54 ; (D.f[ d0PM ])[kb ] + (D.f[ d0MP ])[ks ] = mfbca;//(D.f[ d0MP ])[kts ] = mfbca;// - c1over54 ; (D.f[ d0MP ])[ks ] + (D.f[ d000])[k ] = mfbbb;//(D.f[ d000])[kzero] = mfbbb;// - c8over27 ; (D.f[ d000])[k ] + (D.f[ dPPP ])[k ] = mfaaa;//(D.f[ dPPP ])[ktne ] = mfaaa;// - c1over216; (D.f[ dPPP ])[k ] + (D.f[ dPMP ])[ks ] = mfaca;//(D.f[ dPMP ])[ktse ] = mfaca;// - c1over216; (D.f[ dPMP ])[ks ] + (D.f[ dPPM ])[kb ] = mfaac;//(D.f[ dPPM ])[kbne ] = mfaac;// - c1over216; (D.f[ dPPM ])[kb ] + (D.f[ dPMM ])[kbs ] = mfacc;//(D.f[ dPMM ])[kbse ] = mfacc;// - c1over216; (D.f[ dPMM ])[kbs ] + (D.f[ dMPP ])[kw ] = mfcaa;//(D.f[ dMPP ])[ktnw ] = mfcaa;// - c1over216; (D.f[ dMPP ])[kw ] + (D.f[ dMMP ])[ksw ] = mfcca;//(D.f[ dMMP ])[ktsw ] = mfcca;// - c1over216; (D.f[ dMMP ])[ksw ] + (D.f[ dMPM ])[kbw ] = mfcac;//(D.f[ dMPM ])[kbnw ] = mfcac;// - c1over216; (D.f[ dMPM ])[kbw ] + (D.f[ dMMM ])[kbsw] = mfccc;//(D.f[ dMMM ])[kbsw ] = mfccc;// - c1over216; (D.f[ dMMM ])[kbsw] //////////////////////////////////////////////////////////////////////////////////// } } @@ -2041,63 +2041,63 @@ __global__ void LB_Kernel_Kum_1h_SP_27( real omega, Distributions27 D; if (EvenOrOdd==true) { - D.f[DIR_P00] = &DDStart[DIR_P00 * numberOfLBnodes]; - D.f[DIR_M00] = &DDStart[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0P0] = &DDStart[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0M0] = &DDStart[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00P] = &DDStart[DIR_00P * numberOfLBnodes]; - D.f[DIR_00M] = &DDStart[DIR_00M * numberOfLBnodes]; - D.f[DIR_PP0] = &DDStart[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_MM0] = &DDStart[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DDStart[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DDStart[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_P0P] = &DDStart[DIR_P0P * numberOfLBnodes]; - D.f[DIR_M0M] = &DDStart[DIR_M0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DDStart[DIR_P0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DDStart[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0PP] = &DDStart[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0MM] = &DDStart[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0PM] = &DDStart[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0MP] = &DDStart[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DDStart[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DDStart[DIR_PPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DDStart[DIR_MMP * numberOfLBnodes]; - D.f[DIR_PMP] = &DDStart[DIR_PMP * numberOfLBnodes]; - D.f[DIR_MPP] = &DDStart[DIR_MPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DDStart[DIR_PPM * numberOfLBnodes]; - D.f[DIR_MMM] = &DDStart[DIR_MMM * numberOfLBnodes]; - D.f[DIR_PMM] = &DDStart[DIR_PMM * numberOfLBnodes]; - D.f[DIR_MPM] = &DDStart[DIR_MPM * numberOfLBnodes]; + D.f[dP00] = &DDStart[dP00 * numberOfLBnodes]; + D.f[dM00] = &DDStart[dM00 * numberOfLBnodes]; + D.f[d0P0] = &DDStart[d0P0 * numberOfLBnodes]; + D.f[d0M0] = &DDStart[d0M0 * numberOfLBnodes]; + D.f[d00P] = &DDStart[d00P * numberOfLBnodes]; + D.f[d00M] = &DDStart[d00M * numberOfLBnodes]; + D.f[dPP0] = &DDStart[dPP0 * numberOfLBnodes]; + D.f[dMM0] = &DDStart[dMM0 * numberOfLBnodes]; + D.f[dPM0] = &DDStart[dPM0 * numberOfLBnodes]; + D.f[dMP0] = &DDStart[dMP0 * numberOfLBnodes]; + D.f[dP0P] = &DDStart[dP0P * numberOfLBnodes]; + D.f[dM0M] = &DDStart[dM0M * numberOfLBnodes]; + D.f[dP0M] = &DDStart[dP0M * numberOfLBnodes]; + D.f[dM0P] = &DDStart[dM0P * numberOfLBnodes]; + D.f[d0PP] = &DDStart[d0PP * numberOfLBnodes]; + D.f[d0MM] = &DDStart[d0MM * numberOfLBnodes]; + D.f[d0PM] = &DDStart[d0PM * numberOfLBnodes]; + D.f[d0MP] = &DDStart[d0MP * numberOfLBnodes]; + D.f[d000] = &DDStart[d000 * numberOfLBnodes]; + D.f[dPPP] = &DDStart[dPPP * numberOfLBnodes]; + D.f[dMMP] = &DDStart[dMMP * numberOfLBnodes]; + D.f[dPMP] = &DDStart[dPMP * numberOfLBnodes]; + D.f[dMPP] = &DDStart[dMPP * numberOfLBnodes]; + D.f[dPPM] = &DDStart[dPPM * numberOfLBnodes]; + D.f[dMMM] = &DDStart[dMMM * numberOfLBnodes]; + D.f[dPMM] = &DDStart[dPMM * numberOfLBnodes]; + D.f[dMPM] = &DDStart[dMPM * numberOfLBnodes]; } else { - D.f[DIR_M00] = &DDStart[DIR_P00 * numberOfLBnodes]; - D.f[DIR_P00] = &DDStart[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0M0] = &DDStart[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0P0] = &DDStart[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00M] = &DDStart[DIR_00P * numberOfLBnodes]; - D.f[DIR_00P] = &DDStart[DIR_00M * numberOfLBnodes]; - D.f[DIR_MM0] = &DDStart[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_PP0] = &DDStart[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DDStart[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DDStart[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_M0M] = &DDStart[DIR_P0P * numberOfLBnodes]; - D.f[DIR_P0P] = &DDStart[DIR_M0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DDStart[DIR_P0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DDStart[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0MM] = &DDStart[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0PP] = &DDStart[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0MP] = &DDStart[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0PM] = &DDStart[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DDStart[DIR_000 * numberOfLBnodes]; - D.f[DIR_MMM] = &DDStart[DIR_PPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DDStart[DIR_MMP * numberOfLBnodes]; - D.f[DIR_MPM] = &DDStart[DIR_PMP * numberOfLBnodes]; - D.f[DIR_PMM] = &DDStart[DIR_MPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DDStart[DIR_PPM * numberOfLBnodes]; - D.f[DIR_PPP] = &DDStart[DIR_MMM * numberOfLBnodes]; - D.f[DIR_MPP] = &DDStart[DIR_PMM * numberOfLBnodes]; - D.f[DIR_PMP] = &DDStart[DIR_MPM * numberOfLBnodes]; + D.f[dM00] = &DDStart[dP00 * numberOfLBnodes]; + D.f[dP00] = &DDStart[dM00 * numberOfLBnodes]; + D.f[d0M0] = &DDStart[d0P0 * numberOfLBnodes]; + D.f[d0P0] = &DDStart[d0M0 * numberOfLBnodes]; + D.f[d00M] = &DDStart[d00P * numberOfLBnodes]; + D.f[d00P] = &DDStart[d00M * numberOfLBnodes]; + D.f[dMM0] = &DDStart[dPP0 * numberOfLBnodes]; + D.f[dPP0] = &DDStart[dMM0 * numberOfLBnodes]; + D.f[dMP0] = &DDStart[dPM0 * numberOfLBnodes]; + D.f[dPM0] = &DDStart[dMP0 * numberOfLBnodes]; + D.f[dM0M] = &DDStart[dP0P * numberOfLBnodes]; + D.f[dP0P] = &DDStart[dM0M * numberOfLBnodes]; + D.f[dM0P] = &DDStart[dP0M * numberOfLBnodes]; + D.f[dP0M] = &DDStart[dM0P * numberOfLBnodes]; + D.f[d0MM] = &DDStart[d0PP * numberOfLBnodes]; + D.f[d0PP] = &DDStart[d0MM * numberOfLBnodes]; + D.f[d0MP] = &DDStart[d0PM * numberOfLBnodes]; + D.f[d0PM] = &DDStart[d0MP * numberOfLBnodes]; + D.f[d000] = &DDStart[d000 * numberOfLBnodes]; + D.f[dMMM] = &DDStart[dPPP * numberOfLBnodes]; + D.f[dPPM] = &DDStart[dMMP * numberOfLBnodes]; + D.f[dMPM] = &DDStart[dPMP * numberOfLBnodes]; + D.f[dPMM] = &DDStart[dMPP * numberOfLBnodes]; + D.f[dMMP] = &DDStart[dPPM * numberOfLBnodes]; + D.f[dPPP] = &DDStart[dMMM * numberOfLBnodes]; + D.f[dMPP] = &DDStart[dPMM * numberOfLBnodes]; + D.f[dPMP] = &DDStart[dMPM * numberOfLBnodes]; } //////////////////////////////////////////////////////////////////////////////// @@ -2158,33 +2158,33 @@ __global__ void LB_Kernel_Kum_1h_SP_27( real omega, //unsigned int ktne = k; //unsigned int kbsw = neighborZ[ksw]; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real mfcbb = (D.f[DIR_P00])[k ];//[ke ];// + c2over27 ;(D.f[DIR_P00])[k ];//ke - real mfabb = (D.f[DIR_M00])[kw ];//[kw ];// + c2over27 ;(D.f[DIR_M00])[kw ]; - real mfbcb = (D.f[DIR_0P0])[k ];//[kn ];// + c2over27 ;(D.f[DIR_0P0])[k ];//kn - real mfbab = (D.f[DIR_0M0])[ks ];//[ks ];// + c2over27 ;(D.f[DIR_0M0])[ks ]; - real mfbbc = (D.f[DIR_00P])[k ];//[kt ];// + c2over27 ;(D.f[DIR_00P])[k ];//kt - real mfbba = (D.f[DIR_00M])[kb ];//[kb ];// + c2over27 ;(D.f[DIR_00M])[kb ]; - real mfccb = (D.f[DIR_PP0])[k ];//[kne ];// + c1over54 ;(D.f[DIR_PP0])[k ];//kne - real mfaab = (D.f[DIR_MM0])[ksw];//[ksw ];// + c1over54 ;(D.f[DIR_MM0])[ksw]; - real mfcab = (D.f[DIR_PM0])[ks ];//[kse ];// + c1over54 ;(D.f[DIR_PM0])[ks ];//kse - real mfacb = (D.f[DIR_MP0])[kw ];//[knw ];// + c1over54 ;(D.f[DIR_MP0])[kw ];//knw - real mfcbc = (D.f[DIR_P0P])[k ];//[kte ];// + c1over54 ;(D.f[DIR_P0P])[k ];//kte - real mfaba = (D.f[DIR_M0M])[kbw];//[kbw ];// + c1over54 ;(D.f[DIR_M0M])[kbw]; - real mfcba = (D.f[DIR_P0M])[kb ];//[kbe ];// + c1over54 ;(D.f[DIR_P0M])[kb ];//kbe - real mfabc = (D.f[DIR_M0P])[kw ];//[ktw ];// + c1over54 ;(D.f[DIR_M0P])[kw ];//ktw - real mfbcc = (D.f[DIR_0PP])[k ];//[ktn ];// + c1over54 ;(D.f[DIR_0PP])[k ];//ktn - real mfbaa = (D.f[DIR_0MM])[kbs];//[kbs ];// + c1over54 ;(D.f[DIR_0MM])[kbs]; - real mfbca = (D.f[DIR_0PM])[kb ];//[kbn ];// + c1over54 ;(D.f[DIR_0PM])[kb ];//kbn - real mfbac = (D.f[DIR_0MP])[ks ];//[kts ];// + c1over54 ;(D.f[DIR_0MP])[ks ];//kts - real mfbbb = (D.f[DIR_000])[k ];//[kzero];// + c8over27 ;(D.f[DIR_000])[k ];//kzero - real mfccc = (D.f[DIR_PPP])[k ];//[ktne ];// + c1over216;(D.f[DIR_PPP])[k ];//ktne - real mfaac = (D.f[DIR_MMP])[ksw];//[ktsw ];// + c1over216;(D.f[DIR_MMP])[ksw];//ktsw - real mfcac = (D.f[DIR_PMP])[ks ];//[ktse ];// + c1over216;(D.f[DIR_PMP])[ks ];//ktse - real mfacc = (D.f[DIR_MPP])[kw ];//[ktnw ];// + c1over216;(D.f[DIR_MPP])[kw ];//ktnw - real mfcca = (D.f[DIR_PPM])[kb ];//[kbne ];// + c1over216;(D.f[DIR_PPM])[kb ];//kbne - real mfaaa = (D.f[DIR_MMM])[kbsw];//[kbsw ];// + c1over216;(D.f[DIR_MMM])[kbsw]; - real mfcaa = (D.f[DIR_PMM])[kbs];//[kbse ];// + c1over216;(D.f[DIR_PMM])[kbs];//kbse - real mfaca = (D.f[DIR_MPM])[kbw];//[kbnw ];// + c1over216;(D.f[DIR_MPM])[kbw];//kbnw + real mfcbb = (D.f[dP00])[k ];//[ke ];// + c2over27 ;(D.f[dP00])[k ];//ke + real mfabb = (D.f[dM00])[kw ];//[kw ];// + c2over27 ;(D.f[dM00])[kw ]; + real mfbcb = (D.f[d0P0])[k ];//[kn ];// + c2over27 ;(D.f[d0P0])[k ];//kn + real mfbab = (D.f[d0M0])[ks ];//[ks ];// + c2over27 ;(D.f[d0M0])[ks ]; + real mfbbc = (D.f[d00P])[k ];//[kt ];// + c2over27 ;(D.f[d00P])[k ];//kt + real mfbba = (D.f[d00M])[kb ];//[kb ];// + c2over27 ;(D.f[d00M])[kb ]; + real mfccb = (D.f[dPP0])[k ];//[kne ];// + c1over54 ;(D.f[dPP0])[k ];//kne + real mfaab = (D.f[dMM0])[ksw];//[ksw ];// + c1over54 ;(D.f[dMM0])[ksw]; + real mfcab = (D.f[dPM0])[ks ];//[kse ];// + c1over54 ;(D.f[dPM0])[ks ];//kse + real mfacb = (D.f[dMP0])[kw ];//[knw ];// + c1over54 ;(D.f[dMP0])[kw ];//knw + real mfcbc = (D.f[dP0P])[k ];//[kte ];// + c1over54 ;(D.f[dP0P])[k ];//kte + real mfaba = (D.f[dM0M])[kbw];//[kbw ];// + c1over54 ;(D.f[dM0M])[kbw]; + real mfcba = (D.f[dP0M])[kb ];//[kbe ];// + c1over54 ;(D.f[dP0M])[kb ];//kbe + real mfabc = (D.f[dM0P])[kw ];//[ktw ];// + c1over54 ;(D.f[dM0P])[kw ];//ktw + real mfbcc = (D.f[d0PP])[k ];//[ktn ];// + c1over54 ;(D.f[d0PP])[k ];//ktn + real mfbaa = (D.f[d0MM])[kbs];//[kbs ];// + c1over54 ;(D.f[d0MM])[kbs]; + real mfbca = (D.f[d0PM])[kb ];//[kbn ];// + c1over54 ;(D.f[d0PM])[kb ];//kbn + real mfbac = (D.f[d0MP])[ks ];//[kts ];// + c1over54 ;(D.f[d0MP])[ks ];//kts + real mfbbb = (D.f[d000])[k ];//[kzero];// + c8over27 ;(D.f[d000])[k ];//kzero + real mfccc = (D.f[dPPP])[k ];//[ktne ];// + c1over216;(D.f[dPPP])[k ];//ktne + real mfaac = (D.f[dMMP])[ksw];//[ktsw ];// + c1over216;(D.f[dMMP])[ksw];//ktsw + real mfcac = (D.f[dPMP])[ks ];//[ktse ];// + c1over216;(D.f[dPMP])[ks ];//ktse + real mfacc = (D.f[dMPP])[kw ];//[ktnw ];// + c1over216;(D.f[dMPP])[kw ];//ktnw + real mfcca = (D.f[dPPM])[kb ];//[kbne ];// + c1over216;(D.f[dPPM])[kb ];//kbne + real mfaaa = (D.f[dMMM])[kbsw];//[kbsw ];// + c1over216;(D.f[dMMM])[kbsw]; + real mfcaa = (D.f[dPMM])[kbs];//[kbse ];// + c1over216;(D.f[dPMM])[kbs];//kbse + real mfaca = (D.f[dMPM])[kbw];//[kbnw ];// + c1over216;(D.f[dMPM])[kbw];//kbnw //////////////////////////////////////////////////////////////////////////////////// //Ship real coord0X = 281.125f;//7.5f; @@ -3160,33 +3160,33 @@ __global__ void LB_Kernel_Kum_1h_SP_27( real omega, //////////////////////////////////////////////////////////////////////////////////// - (D.f[ DIR_P00 ])[k ] = mfabb;//(D.f[ DIR_P00 ])[ke ] = mfabb;// - c2over27 ; (D.f[ DIR_P00 ])[k ] - (D.f[ DIR_M00 ])[kw ] = mfcbb;//(D.f[ DIR_M00 ])[kw ] = mfcbb;// - c2over27 ; (D.f[ DIR_M00 ])[kw ] - (D.f[ DIR_0P0 ])[k ] = mfbab;//(D.f[ DIR_0P0 ])[kn ] = mfbab;// - c2over27 ; (D.f[ DIR_0P0 ])[k ] - (D.f[ DIR_0M0 ])[ks ] = mfbcb;//(D.f[ DIR_0M0 ])[ks ] = mfbcb;// - c2over27 ; (D.f[ DIR_0M0 ])[ks ] - (D.f[ DIR_00P ])[k ] = mfbba;//(D.f[ DIR_00P ])[kt ] = mfbba;// - c2over27 ; (D.f[ DIR_00P ])[k ] - (D.f[ DIR_00M ])[kb ] = mfbbc;//(D.f[ DIR_00M ])[kb ] = mfbbc;// - c2over27 ; (D.f[ DIR_00M ])[kb ] - (D.f[ DIR_PP0 ])[k ] = mfaab;//(D.f[ DIR_PP0 ])[kne ] = mfaab;// - c1over54 ; (D.f[ DIR_PP0 ])[k ] - (D.f[ DIR_MM0 ])[ksw ] = mfccb;//(D.f[ DIR_MM0 ])[ksw ] = mfccb;// - c1over54 ; (D.f[ DIR_MM0 ])[ksw ] - (D.f[ DIR_PM0 ])[ks ] = mfacb;//(D.f[ DIR_PM0 ])[kse ] = mfacb;// - c1over54 ; (D.f[ DIR_PM0 ])[ks ] - (D.f[ DIR_MP0 ])[kw ] = mfcab;//(D.f[ DIR_MP0 ])[knw ] = mfcab;// - c1over54 ; (D.f[ DIR_MP0 ])[kw ] - (D.f[ DIR_P0P ])[k ] = mfaba;//(D.f[ DIR_P0P ])[kte ] = mfaba;// - c1over54 ; (D.f[ DIR_P0P ])[k ] - (D.f[ DIR_M0M ])[kbw ] = mfcbc;//(D.f[ DIR_M0M ])[kbw ] = mfcbc;// - c1over54 ; (D.f[ DIR_M0M ])[kbw ] - (D.f[ DIR_P0M ])[kb ] = mfabc;//(D.f[ DIR_P0M ])[kbe ] = mfabc;// - c1over54 ; (D.f[ DIR_P0M ])[kb ] - (D.f[ DIR_M0P ])[kw ] = mfcba;//(D.f[ DIR_M0P ])[ktw ] = mfcba;// - c1over54 ; (D.f[ DIR_M0P ])[kw ] - (D.f[ DIR_0PP ])[k ] = mfbaa;//(D.f[ DIR_0PP ])[ktn ] = mfbaa;// - c1over54 ; (D.f[ DIR_0PP ])[k ] - (D.f[ DIR_0MM ])[kbs ] = mfbcc;//(D.f[ DIR_0MM ])[kbs ] = mfbcc;// - c1over54 ; (D.f[ DIR_0MM ])[kbs ] - (D.f[ DIR_0PM ])[kb ] = mfbac;//(D.f[ DIR_0PM ])[kbn ] = mfbac;// - c1over54 ; (D.f[ DIR_0PM ])[kb ] - (D.f[ DIR_0MP ])[ks ] = mfbca;//(D.f[ DIR_0MP ])[kts ] = mfbca;// - c1over54 ; (D.f[ DIR_0MP ])[ks ] - (D.f[ DIR_000])[k ] = mfbbb;//(D.f[ DIR_000])[kzero] = mfbbb;// - c8over27 ; (D.f[ DIR_000])[k ] - (D.f[ DIR_PPP ])[k ] = mfaaa;//(D.f[ DIR_PPP ])[ktne ] = mfaaa;// - c1over216; (D.f[ DIR_PPP ])[k ] - (D.f[ DIR_PMP ])[ks ] = mfaca;//(D.f[ DIR_PMP ])[ktse ] = mfaca;// - c1over216; (D.f[ DIR_PMP ])[ks ] - (D.f[ DIR_PPM ])[kb ] = mfaac;//(D.f[ DIR_PPM ])[kbne ] = mfaac;// - c1over216; (D.f[ DIR_PPM ])[kb ] - (D.f[ DIR_PMM ])[kbs ] = mfacc;//(D.f[ DIR_PMM ])[kbse ] = mfacc;// - c1over216; (D.f[ DIR_PMM ])[kbs ] - (D.f[ DIR_MPP ])[kw ] = mfcaa;//(D.f[ DIR_MPP ])[ktnw ] = mfcaa;// - c1over216; (D.f[ DIR_MPP ])[kw ] - (D.f[ DIR_MMP ])[ksw ] = mfcca;//(D.f[ DIR_MMP ])[ktsw ] = mfcca;// - c1over216; (D.f[ DIR_MMP ])[ksw ] - (D.f[ DIR_MPM ])[kbw ] = mfcac;//(D.f[ DIR_MPM ])[kbnw ] = mfcac;// - c1over216; (D.f[ DIR_MPM ])[kbw ] - (D.f[ DIR_MMM ])[kbsw] = mfccc;//(D.f[ DIR_MMM ])[kbsw ] = mfccc;// - c1over216; (D.f[ DIR_MMM ])[kbsw] + (D.f[ dP00 ])[k ] = mfabb;//(D.f[ dP00 ])[ke ] = mfabb;// - c2over27 ; (D.f[ dP00 ])[k ] + (D.f[ dM00 ])[kw ] = mfcbb;//(D.f[ dM00 ])[kw ] = mfcbb;// - c2over27 ; (D.f[ dM00 ])[kw ] + (D.f[ d0P0 ])[k ] = mfbab;//(D.f[ d0P0 ])[kn ] = mfbab;// - c2over27 ; (D.f[ d0P0 ])[k ] + (D.f[ d0M0 ])[ks ] = mfbcb;//(D.f[ d0M0 ])[ks ] = mfbcb;// - c2over27 ; (D.f[ d0M0 ])[ks ] + (D.f[ d00P ])[k ] = mfbba;//(D.f[ d00P ])[kt ] = mfbba;// - c2over27 ; (D.f[ d00P ])[k ] + (D.f[ d00M ])[kb ] = mfbbc;//(D.f[ d00M ])[kb ] = mfbbc;// - c2over27 ; (D.f[ d00M ])[kb ] + (D.f[ dPP0 ])[k ] = mfaab;//(D.f[ dPP0 ])[kne ] = mfaab;// - c1over54 ; (D.f[ dPP0 ])[k ] + (D.f[ dMM0 ])[ksw ] = mfccb;//(D.f[ dMM0 ])[ksw ] = mfccb;// - c1over54 ; (D.f[ dMM0 ])[ksw ] + (D.f[ dPM0 ])[ks ] = mfacb;//(D.f[ dPM0 ])[kse ] = mfacb;// - c1over54 ; (D.f[ dPM0 ])[ks ] + (D.f[ dMP0 ])[kw ] = mfcab;//(D.f[ dMP0 ])[knw ] = mfcab;// - c1over54 ; (D.f[ dMP0 ])[kw ] + (D.f[ dP0P ])[k ] = mfaba;//(D.f[ dP0P ])[kte ] = mfaba;// - c1over54 ; (D.f[ dP0P ])[k ] + (D.f[ dM0M ])[kbw ] = mfcbc;//(D.f[ dM0M ])[kbw ] = mfcbc;// - c1over54 ; (D.f[ dM0M ])[kbw ] + (D.f[ dP0M ])[kb ] = mfabc;//(D.f[ dP0M ])[kbe ] = mfabc;// - c1over54 ; (D.f[ dP0M ])[kb ] + (D.f[ dM0P ])[kw ] = mfcba;//(D.f[ dM0P ])[ktw ] = mfcba;// - c1over54 ; (D.f[ dM0P ])[kw ] + (D.f[ d0PP ])[k ] = mfbaa;//(D.f[ d0PP ])[ktn ] = mfbaa;// - c1over54 ; (D.f[ d0PP ])[k ] + (D.f[ d0MM ])[kbs ] = mfbcc;//(D.f[ d0MM ])[kbs ] = mfbcc;// - c1over54 ; (D.f[ d0MM ])[kbs ] + (D.f[ d0PM ])[kb ] = mfbac;//(D.f[ d0PM ])[kbn ] = mfbac;// - c1over54 ; (D.f[ d0PM ])[kb ] + (D.f[ d0MP ])[ks ] = mfbca;//(D.f[ d0MP ])[kts ] = mfbca;// - c1over54 ; (D.f[ d0MP ])[ks ] + (D.f[ d000])[k ] = mfbbb;//(D.f[ d000])[kzero] = mfbbb;// - c8over27 ; (D.f[ d000])[k ] + (D.f[ dPPP ])[k ] = mfaaa;//(D.f[ dPPP ])[ktne ] = mfaaa;// - c1over216; (D.f[ dPPP ])[k ] + (D.f[ dPMP ])[ks ] = mfaca;//(D.f[ dPMP ])[ktse ] = mfaca;// - c1over216; (D.f[ dPMP ])[ks ] + (D.f[ dPPM ])[kb ] = mfaac;//(D.f[ dPPM ])[kbne ] = mfaac;// - c1over216; (D.f[ dPPM ])[kb ] + (D.f[ dPMM ])[kbs ] = mfacc;//(D.f[ dPMM ])[kbse ] = mfacc;// - c1over216; (D.f[ dPMM ])[kbs ] + (D.f[ dMPP ])[kw ] = mfcaa;//(D.f[ dMPP ])[ktnw ] = mfcaa;// - c1over216; (D.f[ dMPP ])[kw ] + (D.f[ dMMP ])[ksw ] = mfcca;//(D.f[ dMMP ])[ktsw ] = mfcca;// - c1over216; (D.f[ dMMP ])[ksw ] + (D.f[ dMPM ])[kbw ] = mfcac;//(D.f[ dMPM ])[kbnw ] = mfcac;// - c1over216; (D.f[ dMPM ])[kbw ] + (D.f[ dMMM ])[kbsw] = mfccc;//(D.f[ dMMM ])[kbsw ] = mfccc;// - c1over216; (D.f[ dMMM ])[kbsw] //////////////////////////////////////////////////////////////////////////////////// } } @@ -3263,63 +3263,63 @@ __global__ void LB_Kernel_Kum_New_SP_27( real omega, Distributions27 D; if (EvenOrOdd==true) { - D.f[DIR_P00] = &DDStart[DIR_P00 * numberOfLBnodes]; - D.f[DIR_M00] = &DDStart[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0P0] = &DDStart[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0M0] = &DDStart[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00P] = &DDStart[DIR_00P * numberOfLBnodes]; - D.f[DIR_00M] = &DDStart[DIR_00M * numberOfLBnodes]; - D.f[DIR_PP0] = &DDStart[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_MM0] = &DDStart[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DDStart[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DDStart[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_P0P] = &DDStart[DIR_P0P * numberOfLBnodes]; - D.f[DIR_M0M] = &DDStart[DIR_M0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DDStart[DIR_P0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DDStart[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0PP] = &DDStart[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0MM] = &DDStart[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0PM] = &DDStart[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0MP] = &DDStart[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DDStart[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DDStart[DIR_PPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DDStart[DIR_MMP * numberOfLBnodes]; - D.f[DIR_PMP] = &DDStart[DIR_PMP * numberOfLBnodes]; - D.f[DIR_MPP] = &DDStart[DIR_MPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DDStart[DIR_PPM * numberOfLBnodes]; - D.f[DIR_MMM] = &DDStart[DIR_MMM * numberOfLBnodes]; - D.f[DIR_PMM] = &DDStart[DIR_PMM * numberOfLBnodes]; - D.f[DIR_MPM] = &DDStart[DIR_MPM * numberOfLBnodes]; + D.f[dP00] = &DDStart[dP00 * numberOfLBnodes]; + D.f[dM00] = &DDStart[dM00 * numberOfLBnodes]; + D.f[d0P0] = &DDStart[d0P0 * numberOfLBnodes]; + D.f[d0M0] = &DDStart[d0M0 * numberOfLBnodes]; + D.f[d00P] = &DDStart[d00P * numberOfLBnodes]; + D.f[d00M] = &DDStart[d00M * numberOfLBnodes]; + D.f[dPP0] = &DDStart[dPP0 * numberOfLBnodes]; + D.f[dMM0] = &DDStart[dMM0 * numberOfLBnodes]; + D.f[dPM0] = &DDStart[dPM0 * numberOfLBnodes]; + D.f[dMP0] = &DDStart[dMP0 * numberOfLBnodes]; + D.f[dP0P] = &DDStart[dP0P * numberOfLBnodes]; + D.f[dM0M] = &DDStart[dM0M * numberOfLBnodes]; + D.f[dP0M] = &DDStart[dP0M * numberOfLBnodes]; + D.f[dM0P] = &DDStart[dM0P * numberOfLBnodes]; + D.f[d0PP] = &DDStart[d0PP * numberOfLBnodes]; + D.f[d0MM] = &DDStart[d0MM * numberOfLBnodes]; + D.f[d0PM] = &DDStart[d0PM * numberOfLBnodes]; + D.f[d0MP] = &DDStart[d0MP * numberOfLBnodes]; + D.f[d000] = &DDStart[d000 * numberOfLBnodes]; + D.f[dPPP] = &DDStart[dPPP * numberOfLBnodes]; + D.f[dMMP] = &DDStart[dMMP * numberOfLBnodes]; + D.f[dPMP] = &DDStart[dPMP * numberOfLBnodes]; + D.f[dMPP] = &DDStart[dMPP * numberOfLBnodes]; + D.f[dPPM] = &DDStart[dPPM * numberOfLBnodes]; + D.f[dMMM] = &DDStart[dMMM * numberOfLBnodes]; + D.f[dPMM] = &DDStart[dPMM * numberOfLBnodes]; + D.f[dMPM] = &DDStart[dMPM * numberOfLBnodes]; } else { - D.f[DIR_M00] = &DDStart[DIR_P00 * numberOfLBnodes]; - D.f[DIR_P00] = &DDStart[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0M0] = &DDStart[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0P0] = &DDStart[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00M] = &DDStart[DIR_00P * numberOfLBnodes]; - D.f[DIR_00P] = &DDStart[DIR_00M * numberOfLBnodes]; - D.f[DIR_MM0] = &DDStart[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_PP0] = &DDStart[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DDStart[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DDStart[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_M0M] = &DDStart[DIR_P0P * numberOfLBnodes]; - D.f[DIR_P0P] = &DDStart[DIR_M0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DDStart[DIR_P0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DDStart[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0MM] = &DDStart[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0PP] = &DDStart[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0MP] = &DDStart[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0PM] = &DDStart[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DDStart[DIR_000 * numberOfLBnodes]; - D.f[DIR_MMM] = &DDStart[DIR_PPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DDStart[DIR_MMP * numberOfLBnodes]; - D.f[DIR_MPM] = &DDStart[DIR_PMP * numberOfLBnodes]; - D.f[DIR_PMM] = &DDStart[DIR_MPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DDStart[DIR_PPM * numberOfLBnodes]; - D.f[DIR_PPP] = &DDStart[DIR_MMM * numberOfLBnodes]; - D.f[DIR_MPP] = &DDStart[DIR_PMM * numberOfLBnodes]; - D.f[DIR_PMP] = &DDStart[DIR_MPM * numberOfLBnodes]; + D.f[dM00] = &DDStart[dP00 * numberOfLBnodes]; + D.f[dP00] = &DDStart[dM00 * numberOfLBnodes]; + D.f[d0M0] = &DDStart[d0P0 * numberOfLBnodes]; + D.f[d0P0] = &DDStart[d0M0 * numberOfLBnodes]; + D.f[d00M] = &DDStart[d00P * numberOfLBnodes]; + D.f[d00P] = &DDStart[d00M * numberOfLBnodes]; + D.f[dMM0] = &DDStart[dPP0 * numberOfLBnodes]; + D.f[dPP0] = &DDStart[dMM0 * numberOfLBnodes]; + D.f[dMP0] = &DDStart[dPM0 * numberOfLBnodes]; + D.f[dPM0] = &DDStart[dMP0 * numberOfLBnodes]; + D.f[dM0M] = &DDStart[dP0P * numberOfLBnodes]; + D.f[dP0P] = &DDStart[dM0M * numberOfLBnodes]; + D.f[dM0P] = &DDStart[dP0M * numberOfLBnodes]; + D.f[dP0M] = &DDStart[dM0P * numberOfLBnodes]; + D.f[d0MM] = &DDStart[d0PP * numberOfLBnodes]; + D.f[d0PP] = &DDStart[d0MM * numberOfLBnodes]; + D.f[d0MP] = &DDStart[d0PM * numberOfLBnodes]; + D.f[d0PM] = &DDStart[d0MP * numberOfLBnodes]; + D.f[d000] = &DDStart[d000 * numberOfLBnodes]; + D.f[dMMM] = &DDStart[dPPP * numberOfLBnodes]; + D.f[dPPM] = &DDStart[dMMP * numberOfLBnodes]; + D.f[dMPM] = &DDStart[dPMP * numberOfLBnodes]; + D.f[dPMM] = &DDStart[dMPP * numberOfLBnodes]; + D.f[dMMP] = &DDStart[dPPM * numberOfLBnodes]; + D.f[dPPP] = &DDStart[dMMM * numberOfLBnodes]; + D.f[dMPP] = &DDStart[dPMM * numberOfLBnodes]; + D.f[dPMP] = &DDStart[dMPM * numberOfLBnodes]; } //////////////////////////////////////////////////////////////////////////////// @@ -3380,33 +3380,33 @@ __global__ void LB_Kernel_Kum_New_SP_27( real omega, //unsigned int ktne = k; //unsigned int kbsw = neighborZ[ksw]; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real mfcbb = (D.f[DIR_P00])[k ];//[ke ];// + c2over27 ;(D.f[DIR_P00])[k ];//ke - real mfabb = (D.f[DIR_M00])[kw ];//[kw ];// + c2over27 ;(D.f[DIR_M00])[kw ]; - real mfbcb = (D.f[DIR_0P0])[k ];//[kn ];// + c2over27 ;(D.f[DIR_0P0])[k ];//kn - real mfbab = (D.f[DIR_0M0])[ks ];//[ks ];// + c2over27 ;(D.f[DIR_0M0])[ks ]; - real mfbbc = (D.f[DIR_00P])[k ];//[kt ];// + c2over27 ;(D.f[DIR_00P])[k ];//kt - real mfbba = (D.f[DIR_00M])[kb ];//[kb ];// + c2over27 ;(D.f[DIR_00M])[kb ]; - real mfccb = (D.f[DIR_PP0])[k ];//[kne ];// + c1over54 ;(D.f[DIR_PP0])[k ];//kne - real mfaab = (D.f[DIR_MM0])[ksw];//[ksw ];// + c1over54 ;(D.f[DIR_MM0])[ksw]; - real mfcab = (D.f[DIR_PM0])[ks ];//[kse ];// + c1over54 ;(D.f[DIR_PM0])[ks ];//kse - real mfacb = (D.f[DIR_MP0])[kw ];//[knw ];// + c1over54 ;(D.f[DIR_MP0])[kw ];//knw - real mfcbc = (D.f[DIR_P0P])[k ];//[kte ];// + c1over54 ;(D.f[DIR_P0P])[k ];//kte - real mfaba = (D.f[DIR_M0M])[kbw];//[kbw ];// + c1over54 ;(D.f[DIR_M0M])[kbw]; - real mfcba = (D.f[DIR_P0M])[kb ];//[kbe ];// + c1over54 ;(D.f[DIR_P0M])[kb ];//kbe - real mfabc = (D.f[DIR_M0P])[kw ];//[ktw ];// + c1over54 ;(D.f[DIR_M0P])[kw ];//ktw - real mfbcc = (D.f[DIR_0PP])[k ];//[ktn ];// + c1over54 ;(D.f[DIR_0PP])[k ];//ktn - real mfbaa = (D.f[DIR_0MM])[kbs];//[kbs ];// + c1over54 ;(D.f[DIR_0MM])[kbs]; - real mfbca = (D.f[DIR_0PM])[kb ];//[kbn ];// + c1over54 ;(D.f[DIR_0PM])[kb ];//kbn - real mfbac = (D.f[DIR_0MP])[ks ];//[kts ];// + c1over54 ;(D.f[DIR_0MP])[ks ];//kts - real mfbbb = (D.f[DIR_000])[k ];//[kzero];// + c8over27 ;(D.f[DIR_000])[k ];//kzero - real mfccc = (D.f[DIR_PPP])[k ];//[ktne ];// + c1over216;(D.f[DIR_PPP])[k ];//ktne - real mfaac = (D.f[DIR_MMP])[ksw];//[ktsw ];// + c1over216;(D.f[DIR_MMP])[ksw];//ktsw - real mfcac = (D.f[DIR_PMP])[ks ];//[ktse ];// + c1over216;(D.f[DIR_PMP])[ks ];//ktse - real mfacc = (D.f[DIR_MPP])[kw ];//[ktnw ];// + c1over216;(D.f[DIR_MPP])[kw ];//ktnw - real mfcca = (D.f[DIR_PPM])[kb ];//[kbne ];// + c1over216;(D.f[DIR_PPM])[kb ];//kbne - real mfaaa = (D.f[DIR_MMM])[kbsw];//[kbsw ];// + c1over216;(D.f[DIR_MMM])[kbsw]; - real mfcaa = (D.f[DIR_PMM])[kbs];//[kbse ];// + c1over216;(D.f[DIR_PMM])[kbs];//kbse - real mfaca = (D.f[DIR_MPM])[kbw];//[kbnw ];// + c1over216;(D.f[DIR_MPM])[kbw];//kbnw + real mfcbb = (D.f[dP00])[k ];//[ke ];// + c2over27 ;(D.f[dP00])[k ];//ke + real mfabb = (D.f[dM00])[kw ];//[kw ];// + c2over27 ;(D.f[dM00])[kw ]; + real mfbcb = (D.f[d0P0])[k ];//[kn ];// + c2over27 ;(D.f[d0P0])[k ];//kn + real mfbab = (D.f[d0M0])[ks ];//[ks ];// + c2over27 ;(D.f[d0M0])[ks ]; + real mfbbc = (D.f[d00P])[k ];//[kt ];// + c2over27 ;(D.f[d00P])[k ];//kt + real mfbba = (D.f[d00M])[kb ];//[kb ];// + c2over27 ;(D.f[d00M])[kb ]; + real mfccb = (D.f[dPP0])[k ];//[kne ];// + c1over54 ;(D.f[dPP0])[k ];//kne + real mfaab = (D.f[dMM0])[ksw];//[ksw ];// + c1over54 ;(D.f[dMM0])[ksw]; + real mfcab = (D.f[dPM0])[ks ];//[kse ];// + c1over54 ;(D.f[dPM0])[ks ];//kse + real mfacb = (D.f[dMP0])[kw ];//[knw ];// + c1over54 ;(D.f[dMP0])[kw ];//knw + real mfcbc = (D.f[dP0P])[k ];//[kte ];// + c1over54 ;(D.f[dP0P])[k ];//kte + real mfaba = (D.f[dM0M])[kbw];//[kbw ];// + c1over54 ;(D.f[dM0M])[kbw]; + real mfcba = (D.f[dP0M])[kb ];//[kbe ];// + c1over54 ;(D.f[dP0M])[kb ];//kbe + real mfabc = (D.f[dM0P])[kw ];//[ktw ];// + c1over54 ;(D.f[dM0P])[kw ];//ktw + real mfbcc = (D.f[d0PP])[k ];//[ktn ];// + c1over54 ;(D.f[d0PP])[k ];//ktn + real mfbaa = (D.f[d0MM])[kbs];//[kbs ];// + c1over54 ;(D.f[d0MM])[kbs]; + real mfbca = (D.f[d0PM])[kb ];//[kbn ];// + c1over54 ;(D.f[d0PM])[kb ];//kbn + real mfbac = (D.f[d0MP])[ks ];//[kts ];// + c1over54 ;(D.f[d0MP])[ks ];//kts + real mfbbb = (D.f[d000])[k ];//[kzero];// + c8over27 ;(D.f[d000])[k ];//kzero + real mfccc = (D.f[dPPP])[k ];//[ktne ];// + c1over216;(D.f[dPPP])[k ];//ktne + real mfaac = (D.f[dMMP])[ksw];//[ktsw ];// + c1over216;(D.f[dMMP])[ksw];//ktsw + real mfcac = (D.f[dPMP])[ks ];//[ktse ];// + c1over216;(D.f[dPMP])[ks ];//ktse + real mfacc = (D.f[dMPP])[kw ];//[ktnw ];// + c1over216;(D.f[dMPP])[kw ];//ktnw + real mfcca = (D.f[dPPM])[kb ];//[kbne ];// + c1over216;(D.f[dPPM])[kb ];//kbne + real mfaaa = (D.f[dMMM])[kbsw];//[kbsw ];// + c1over216;(D.f[dMMM])[kbsw]; + real mfcaa = (D.f[dPMM])[kbs];//[kbse ];// + c1over216;(D.f[dPMM])[kbs];//kbse + real mfaca = (D.f[dMPM])[kbw];//[kbnw ];// + c1over216;(D.f[dMPM])[kbw];//kbnw //////////////////////////////////////////////////////////////////////////////////// //slow //real oMdrho = one - ((((mfccc+mfaaa) + (mfaca+mfcac)) + ((mfacc+mfcaa) + (mfaac+mfcca))) + @@ -4432,33 +4432,33 @@ __global__ void LB_Kernel_Kum_New_SP_27( real omega, //////////////////////////////////////////////////////////////////////////////////// - (D.f[ DIR_P00 ])[k ] = mfabb;//(D.f[ DIR_P00 ])[ke ] = mfabb;// - c2over27 ; (D.f[ DIR_P00 ])[k ] - (D.f[ DIR_M00 ])[kw ] = mfcbb;//(D.f[ DIR_M00 ])[kw ] = mfcbb;// - c2over27 ; (D.f[ DIR_M00 ])[kw ] - (D.f[ DIR_0P0 ])[k ] = mfbab;//(D.f[ DIR_0P0 ])[kn ] = mfbab;// - c2over27 ; (D.f[ DIR_0P0 ])[k ] - (D.f[ DIR_0M0 ])[ks ] = mfbcb;//(D.f[ DIR_0M0 ])[ks ] = mfbcb;// - c2over27 ; (D.f[ DIR_0M0 ])[ks ] - (D.f[ DIR_00P ])[k ] = mfbba;//(D.f[ DIR_00P ])[kt ] = mfbba;// - c2over27 ; (D.f[ DIR_00P ])[k ] - (D.f[ DIR_00M ])[kb ] = mfbbc;//(D.f[ DIR_00M ])[kb ] = mfbbc;// - c2over27 ; (D.f[ DIR_00M ])[kb ] - (D.f[ DIR_PP0 ])[k ] = mfaab;//(D.f[ DIR_PP0 ])[kne ] = mfaab;// - c1over54 ; (D.f[ DIR_PP0 ])[k ] - (D.f[ DIR_MM0 ])[ksw ] = mfccb;//(D.f[ DIR_MM0 ])[ksw ] = mfccb;// - c1over54 ; (D.f[ DIR_MM0 ])[ksw ] - (D.f[ DIR_PM0 ])[ks ] = mfacb;//(D.f[ DIR_PM0 ])[kse ] = mfacb;// - c1over54 ; (D.f[ DIR_PM0 ])[ks ] - (D.f[ DIR_MP0 ])[kw ] = mfcab;//(D.f[ DIR_MP0 ])[knw ] = mfcab;// - c1over54 ; (D.f[ DIR_MP0 ])[kw ] - (D.f[ DIR_P0P ])[k ] = mfaba;//(D.f[ DIR_P0P ])[kte ] = mfaba;// - c1over54 ; (D.f[ DIR_P0P ])[k ] - (D.f[ DIR_M0M ])[kbw ] = mfcbc;//(D.f[ DIR_M0M ])[kbw ] = mfcbc;// - c1over54 ; (D.f[ DIR_M0M ])[kbw ] - (D.f[ DIR_P0M ])[kb ] = mfabc;//(D.f[ DIR_P0M ])[kbe ] = mfabc;// - c1over54 ; (D.f[ DIR_P0M ])[kb ] - (D.f[ DIR_M0P ])[kw ] = mfcba;//(D.f[ DIR_M0P ])[ktw ] = mfcba;// - c1over54 ; (D.f[ DIR_M0P ])[kw ] - (D.f[ DIR_0PP ])[k ] = mfbaa;//(D.f[ DIR_0PP ])[ktn ] = mfbaa;// - c1over54 ; (D.f[ DIR_0PP ])[k ] - (D.f[ DIR_0MM ])[kbs ] = mfbcc;//(D.f[ DIR_0MM ])[kbs ] = mfbcc;// - c1over54 ; (D.f[ DIR_0MM ])[kbs ] - (D.f[ DIR_0PM ])[kb ] = mfbac;//(D.f[ DIR_0PM ])[kbn ] = mfbac;// - c1over54 ; (D.f[ DIR_0PM ])[kb ] - (D.f[ DIR_0MP ])[ks ] = mfbca;//(D.f[ DIR_0MP ])[kts ] = mfbca;// - c1over54 ; (D.f[ DIR_0MP ])[ks ] - (D.f[ DIR_000])[k ] = mfbbb;//(D.f[ DIR_000])[kzero] = mfbbb;// - c8over27 ; (D.f[ DIR_000])[k ] - (D.f[ DIR_PPP ])[k ] = mfaaa;//(D.f[ DIR_PPP ])[ktne ] = mfaaa;// - c1over216; (D.f[ DIR_PPP ])[k ] - (D.f[ DIR_PMP ])[ks ] = mfaca;//(D.f[ DIR_PMP ])[ktse ] = mfaca;// - c1over216; (D.f[ DIR_PMP ])[ks ] - (D.f[ DIR_PPM ])[kb ] = mfaac;//(D.f[ DIR_PPM ])[kbne ] = mfaac;// - c1over216; (D.f[ DIR_PPM ])[kb ] - (D.f[ DIR_PMM ])[kbs ] = mfacc;//(D.f[ DIR_PMM ])[kbse ] = mfacc;// - c1over216; (D.f[ DIR_PMM ])[kbs ] - (D.f[ DIR_MPP ])[kw ] = mfcaa;//(D.f[ DIR_MPP ])[ktnw ] = mfcaa;// - c1over216; (D.f[ DIR_MPP ])[kw ] - (D.f[ DIR_MMP ])[ksw ] = mfcca;//(D.f[ DIR_MMP ])[ktsw ] = mfcca;// - c1over216; (D.f[ DIR_MMP ])[ksw ] - (D.f[ DIR_MPM ])[kbw ] = mfcac;//(D.f[ DIR_MPM ])[kbnw ] = mfcac;// - c1over216; (D.f[ DIR_MPM ])[kbw ] - (D.f[ DIR_MMM ])[kbsw] = mfccc;//(D.f[ DIR_MMM ])[kbsw ] = mfccc;// - c1over216; (D.f[ DIR_MMM ])[kbsw] + (D.f[ dP00 ])[k ] = mfabb;//(D.f[ dP00 ])[ke ] = mfabb;// - c2over27 ; (D.f[ dP00 ])[k ] + (D.f[ dM00 ])[kw ] = mfcbb;//(D.f[ dM00 ])[kw ] = mfcbb;// - c2over27 ; (D.f[ dM00 ])[kw ] + (D.f[ d0P0 ])[k ] = mfbab;//(D.f[ d0P0 ])[kn ] = mfbab;// - c2over27 ; (D.f[ d0P0 ])[k ] + (D.f[ d0M0 ])[ks ] = mfbcb;//(D.f[ d0M0 ])[ks ] = mfbcb;// - c2over27 ; (D.f[ d0M0 ])[ks ] + (D.f[ d00P ])[k ] = mfbba;//(D.f[ d00P ])[kt ] = mfbba;// - c2over27 ; (D.f[ d00P ])[k ] + (D.f[ d00M ])[kb ] = mfbbc;//(D.f[ d00M ])[kb ] = mfbbc;// - c2over27 ; (D.f[ d00M ])[kb ] + (D.f[ dPP0 ])[k ] = mfaab;//(D.f[ dPP0 ])[kne ] = mfaab;// - c1over54 ; (D.f[ dPP0 ])[k ] + (D.f[ dMM0 ])[ksw ] = mfccb;//(D.f[ dMM0 ])[ksw ] = mfccb;// - c1over54 ; (D.f[ dMM0 ])[ksw ] + (D.f[ dPM0 ])[ks ] = mfacb;//(D.f[ dPM0 ])[kse ] = mfacb;// - c1over54 ; (D.f[ dPM0 ])[ks ] + (D.f[ dMP0 ])[kw ] = mfcab;//(D.f[ dMP0 ])[knw ] = mfcab;// - c1over54 ; (D.f[ dMP0 ])[kw ] + (D.f[ dP0P ])[k ] = mfaba;//(D.f[ dP0P ])[kte ] = mfaba;// - c1over54 ; (D.f[ dP0P ])[k ] + (D.f[ dM0M ])[kbw ] = mfcbc;//(D.f[ dM0M ])[kbw ] = mfcbc;// - c1over54 ; (D.f[ dM0M ])[kbw ] + (D.f[ dP0M ])[kb ] = mfabc;//(D.f[ dP0M ])[kbe ] = mfabc;// - c1over54 ; (D.f[ dP0M ])[kb ] + (D.f[ dM0P ])[kw ] = mfcba;//(D.f[ dM0P ])[ktw ] = mfcba;// - c1over54 ; (D.f[ dM0P ])[kw ] + (D.f[ d0PP ])[k ] = mfbaa;//(D.f[ d0PP ])[ktn ] = mfbaa;// - c1over54 ; (D.f[ d0PP ])[k ] + (D.f[ d0MM ])[kbs ] = mfbcc;//(D.f[ d0MM ])[kbs ] = mfbcc;// - c1over54 ; (D.f[ d0MM ])[kbs ] + (D.f[ d0PM ])[kb ] = mfbac;//(D.f[ d0PM ])[kbn ] = mfbac;// - c1over54 ; (D.f[ d0PM ])[kb ] + (D.f[ d0MP ])[ks ] = mfbca;//(D.f[ d0MP ])[kts ] = mfbca;// - c1over54 ; (D.f[ d0MP ])[ks ] + (D.f[ d000])[k ] = mfbbb;//(D.f[ d000])[kzero] = mfbbb;// - c8over27 ; (D.f[ d000])[k ] + (D.f[ dPPP ])[k ] = mfaaa;//(D.f[ dPPP ])[ktne ] = mfaaa;// - c1over216; (D.f[ dPPP ])[k ] + (D.f[ dPMP ])[ks ] = mfaca;//(D.f[ dPMP ])[ktse ] = mfaca;// - c1over216; (D.f[ dPMP ])[ks ] + (D.f[ dPPM ])[kb ] = mfaac;//(D.f[ dPPM ])[kbne ] = mfaac;// - c1over216; (D.f[ dPPM ])[kb ] + (D.f[ dPMM ])[kbs ] = mfacc;//(D.f[ dPMM ])[kbse ] = mfacc;// - c1over216; (D.f[ dPMM ])[kbs ] + (D.f[ dMPP ])[kw ] = mfcaa;//(D.f[ dMPP ])[ktnw ] = mfcaa;// - c1over216; (D.f[ dMPP ])[kw ] + (D.f[ dMMP ])[ksw ] = mfcca;//(D.f[ dMMP ])[ktsw ] = mfcca;// - c1over216; (D.f[ dMMP ])[ksw ] + (D.f[ dMPM ])[kbw ] = mfcac;//(D.f[ dMPM ])[kbnw ] = mfcac;// - c1over216; (D.f[ dMPM ])[kbw ] + (D.f[ dMMM ])[kbsw] = mfccc;//(D.f[ dMMM ])[kbsw ] = mfccc;// - c1over216; (D.f[ dMMM ])[kbsw] //////////////////////////////////////////////////////////////////////////////////// } } @@ -4535,63 +4535,63 @@ __global__ void LB_Kernel_Kum_Comp_SP_27( real omega, Distributions27 D; if (EvenOrOdd==true) { - D.f[DIR_P00] = &DDStart[DIR_P00 * numberOfLBnodes]; - D.f[DIR_M00] = &DDStart[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0P0] = &DDStart[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0M0] = &DDStart[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00P] = &DDStart[DIR_00P * numberOfLBnodes]; - D.f[DIR_00M] = &DDStart[DIR_00M * numberOfLBnodes]; - D.f[DIR_PP0] = &DDStart[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_MM0] = &DDStart[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DDStart[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DDStart[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_P0P] = &DDStart[DIR_P0P * numberOfLBnodes]; - D.f[DIR_M0M] = &DDStart[DIR_M0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DDStart[DIR_P0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DDStart[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0PP] = &DDStart[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0MM] = &DDStart[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0PM] = &DDStart[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0MP] = &DDStart[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DDStart[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DDStart[DIR_PPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DDStart[DIR_MMP * numberOfLBnodes]; - D.f[DIR_PMP] = &DDStart[DIR_PMP * numberOfLBnodes]; - D.f[DIR_MPP] = &DDStart[DIR_MPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DDStart[DIR_PPM * numberOfLBnodes]; - D.f[DIR_MMM] = &DDStart[DIR_MMM * numberOfLBnodes]; - D.f[DIR_PMM] = &DDStart[DIR_PMM * numberOfLBnodes]; - D.f[DIR_MPM] = &DDStart[DIR_MPM * numberOfLBnodes]; + D.f[dP00] = &DDStart[dP00 * numberOfLBnodes]; + D.f[dM00] = &DDStart[dM00 * numberOfLBnodes]; + D.f[d0P0] = &DDStart[d0P0 * numberOfLBnodes]; + D.f[d0M0] = &DDStart[d0M0 * numberOfLBnodes]; + D.f[d00P] = &DDStart[d00P * numberOfLBnodes]; + D.f[d00M] = &DDStart[d00M * numberOfLBnodes]; + D.f[dPP0] = &DDStart[dPP0 * numberOfLBnodes]; + D.f[dMM0] = &DDStart[dMM0 * numberOfLBnodes]; + D.f[dPM0] = &DDStart[dPM0 * numberOfLBnodes]; + D.f[dMP0] = &DDStart[dMP0 * numberOfLBnodes]; + D.f[dP0P] = &DDStart[dP0P * numberOfLBnodes]; + D.f[dM0M] = &DDStart[dM0M * numberOfLBnodes]; + D.f[dP0M] = &DDStart[dP0M * numberOfLBnodes]; + D.f[dM0P] = &DDStart[dM0P * numberOfLBnodes]; + D.f[d0PP] = &DDStart[d0PP * numberOfLBnodes]; + D.f[d0MM] = &DDStart[d0MM * numberOfLBnodes]; + D.f[d0PM] = &DDStart[d0PM * numberOfLBnodes]; + D.f[d0MP] = &DDStart[d0MP * numberOfLBnodes]; + D.f[d000] = &DDStart[d000 * numberOfLBnodes]; + D.f[dPPP] = &DDStart[dPPP * numberOfLBnodes]; + D.f[dMMP] = &DDStart[dMMP * numberOfLBnodes]; + D.f[dPMP] = &DDStart[dPMP * numberOfLBnodes]; + D.f[dMPP] = &DDStart[dMPP * numberOfLBnodes]; + D.f[dPPM] = &DDStart[dPPM * numberOfLBnodes]; + D.f[dMMM] = &DDStart[dMMM * numberOfLBnodes]; + D.f[dPMM] = &DDStart[dPMM * numberOfLBnodes]; + D.f[dMPM] = &DDStart[dMPM * numberOfLBnodes]; } else { - D.f[DIR_M00] = &DDStart[DIR_P00 * numberOfLBnodes]; - D.f[DIR_P00] = &DDStart[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0M0] = &DDStart[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0P0] = &DDStart[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00M] = &DDStart[DIR_00P * numberOfLBnodes]; - D.f[DIR_00P] = &DDStart[DIR_00M * numberOfLBnodes]; - D.f[DIR_MM0] = &DDStart[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_PP0] = &DDStart[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DDStart[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DDStart[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_M0M] = &DDStart[DIR_P0P * numberOfLBnodes]; - D.f[DIR_P0P] = &DDStart[DIR_M0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DDStart[DIR_P0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DDStart[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0MM] = &DDStart[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0PP] = &DDStart[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0MP] = &DDStart[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0PM] = &DDStart[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DDStart[DIR_000 * numberOfLBnodes]; - D.f[DIR_MMM] = &DDStart[DIR_PPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DDStart[DIR_MMP * numberOfLBnodes]; - D.f[DIR_MPM] = &DDStart[DIR_PMP * numberOfLBnodes]; - D.f[DIR_PMM] = &DDStart[DIR_MPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DDStart[DIR_PPM * numberOfLBnodes]; - D.f[DIR_PPP] = &DDStart[DIR_MMM * numberOfLBnodes]; - D.f[DIR_MPP] = &DDStart[DIR_PMM * numberOfLBnodes]; - D.f[DIR_PMP] = &DDStart[DIR_MPM * numberOfLBnodes]; + D.f[dM00] = &DDStart[dP00 * numberOfLBnodes]; + D.f[dP00] = &DDStart[dM00 * numberOfLBnodes]; + D.f[d0M0] = &DDStart[d0P0 * numberOfLBnodes]; + D.f[d0P0] = &DDStart[d0M0 * numberOfLBnodes]; + D.f[d00M] = &DDStart[d00P * numberOfLBnodes]; + D.f[d00P] = &DDStart[d00M * numberOfLBnodes]; + D.f[dMM0] = &DDStart[dPP0 * numberOfLBnodes]; + D.f[dPP0] = &DDStart[dMM0 * numberOfLBnodes]; + D.f[dMP0] = &DDStart[dPM0 * numberOfLBnodes]; + D.f[dPM0] = &DDStart[dMP0 * numberOfLBnodes]; + D.f[dM0M] = &DDStart[dP0P * numberOfLBnodes]; + D.f[dP0P] = &DDStart[dM0M * numberOfLBnodes]; + D.f[dM0P] = &DDStart[dP0M * numberOfLBnodes]; + D.f[dP0M] = &DDStart[dM0P * numberOfLBnodes]; + D.f[d0MM] = &DDStart[d0PP * numberOfLBnodes]; + D.f[d0PP] = &DDStart[d0MM * numberOfLBnodes]; + D.f[d0MP] = &DDStart[d0PM * numberOfLBnodes]; + D.f[d0PM] = &DDStart[d0MP * numberOfLBnodes]; + D.f[d000] = &DDStart[d000 * numberOfLBnodes]; + D.f[dMMM] = &DDStart[dPPP * numberOfLBnodes]; + D.f[dPPM] = &DDStart[dMMP * numberOfLBnodes]; + D.f[dMPM] = &DDStart[dPMP * numberOfLBnodes]; + D.f[dPMM] = &DDStart[dMPP * numberOfLBnodes]; + D.f[dMMP] = &DDStart[dPPM * numberOfLBnodes]; + D.f[dPPP] = &DDStart[dMMM * numberOfLBnodes]; + D.f[dMPP] = &DDStart[dPMM * numberOfLBnodes]; + D.f[dPMP] = &DDStart[dMPM * numberOfLBnodes]; } //////////////////////////////////////////////////////////////////////////////// @@ -4624,33 +4624,33 @@ __global__ void LB_Kernel_Kum_Comp_SP_27( real omega, unsigned int ktne = k; unsigned int kbsw = neighborZ[ksw]; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real f_E = (D.f[DIR_P00])[ke ];// + c2over27 ; - real f_W = (D.f[DIR_M00])[kw ];// + c2over27 ; - real f_N = (D.f[DIR_0P0])[kn ];// + c2over27 ; - real f_S = (D.f[DIR_0M0])[ks ];// + c2over27 ; - real f_T = (D.f[DIR_00P])[kt ];// + c2over27 ; - real f_B = (D.f[DIR_00M])[kb ];// + c2over27 ; - real f_NE = (D.f[DIR_PP0])[kne ];// + c1over54 ; - real f_SW = (D.f[DIR_MM0])[ksw ];// + c1over54 ; - real f_SE = (D.f[DIR_PM0])[kse ];// + c1over54 ; - real f_NW = (D.f[DIR_MP0])[knw ];// + c1over54 ; - real f_TE = (D.f[DIR_P0P])[kte ];// + c1over54 ; - real f_BW = (D.f[DIR_M0M])[kbw ];// + c1over54 ; - real f_BE = (D.f[DIR_P0M])[kbe ];// + c1over54 ; - real f_TW = (D.f[DIR_M0P])[ktw ];// + c1over54 ; - real f_TN = (D.f[DIR_0PP])[ktn ];// + c1over54 ; - real f_BS = (D.f[DIR_0MM])[kbs ];// + c1over54 ; - real f_BN = (D.f[DIR_0PM])[kbn ];// + c1over54 ; - real f_TS = (D.f[DIR_0MP])[kts ];// + c1over54 ; - real f_R = (D.f[DIR_000])[kzero];// + c8over27 ; - real f_TNE = (D.f[DIR_PPP])[ktne ];// + c1over216; - real f_TSW = (D.f[DIR_MMP])[ktsw ];// + c1over216; - real f_TSE = (D.f[DIR_PMP])[ktse ];// + c1over216; - real f_TNW = (D.f[DIR_MPP])[ktnw ];// + c1over216; - real f_BNE = (D.f[DIR_PPM])[kbne ];// + c1over216; - real f_BSW = (D.f[DIR_MMM])[kbsw ];// + c1over216; - real f_BSE = (D.f[DIR_PMM])[kbse ];// + c1over216; - real f_BNW = (D.f[DIR_MPM])[kbnw ];// + c1over216; + real f_E = (D.f[dP00])[ke ];// + c2over27 ; + real f_W = (D.f[dM00])[kw ];// + c2over27 ; + real f_N = (D.f[d0P0])[kn ];// + c2over27 ; + real f_S = (D.f[d0M0])[ks ];// + c2over27 ; + real f_T = (D.f[d00P])[kt ];// + c2over27 ; + real f_B = (D.f[d00M])[kb ];// + c2over27 ; + real f_NE = (D.f[dPP0])[kne ];// + c1over54 ; + real f_SW = (D.f[dMM0])[ksw ];// + c1over54 ; + real f_SE = (D.f[dPM0])[kse ];// + c1over54 ; + real f_NW = (D.f[dMP0])[knw ];// + c1over54 ; + real f_TE = (D.f[dP0P])[kte ];// + c1over54 ; + real f_BW = (D.f[dM0M])[kbw ];// + c1over54 ; + real f_BE = (D.f[dP0M])[kbe ];// + c1over54 ; + real f_TW = (D.f[dM0P])[ktw ];// + c1over54 ; + real f_TN = (D.f[d0PP])[ktn ];// + c1over54 ; + real f_BS = (D.f[d0MM])[kbs ];// + c1over54 ; + real f_BN = (D.f[d0PM])[kbn ];// + c1over54 ; + real f_TS = (D.f[d0MP])[kts ];// + c1over54 ; + real f_R = (D.f[d000])[kzero];// + c8over27 ; + real f_TNE = (D.f[dPPP])[ktne ];// + c1over216; + real f_TSW = (D.f[dMMP])[ktsw ];// + c1over216; + real f_TSE = (D.f[dPMP])[ktse ];// + c1over216; + real f_TNW = (D.f[dMPP])[ktnw ];// + c1over216; + real f_BNE = (D.f[dPPM])[kbne ];// + c1over216; + real f_BSW = (D.f[dMMM])[kbsw ];// + c1over216; + real f_BSE = (D.f[dPMM])[kbse ];// + c1over216; + real f_BNW = (D.f[dMPM])[kbnw ];// + c1over216; //////////////////////////////////////////////////////////////////////////////////// real fx = c0o1; real fy = c0o1; @@ -5372,33 +5372,33 @@ __global__ void LB_Kernel_Kum_Comp_SP_27( real omega, //////////////////////////////////////////////////////////////////////////////////// - (D.f[ DIR_P00 ])[ke ] = mfabb;// - c2over27 ;// - (D.f[ DIR_M00 ])[kw ] = mfcbb;// - c2over27 ; - (D.f[ DIR_0P0 ])[kn ] = mfbab;// - c2over27 ; - (D.f[ DIR_0M0 ])[ks ] = mfbcb;// - c2over27 ; - (D.f[ DIR_00P ])[kt ] = mfbba;// - c2over27 ; - (D.f[ DIR_00M ])[kb ] = mfbbc;// - c2over27 ; - (D.f[ DIR_PP0 ])[kne ] = mfaab;// - c1over54 ; - (D.f[ DIR_MM0 ])[ksw ] = mfccb;// - c1over54 ; - (D.f[ DIR_PM0 ])[kse ] = mfacb;// - c1over54 ; - (D.f[ DIR_MP0 ])[knw ] = mfcab;// - c1over54 ; - (D.f[ DIR_P0P ])[kte ] = mfaba;// - c1over54 ; - (D.f[ DIR_M0M ])[kbw ] = mfcbc;// - c1over54 ; - (D.f[ DIR_P0M ])[kbe ] = mfabc;// - c1over54 ; - (D.f[ DIR_M0P ])[ktw ] = mfcba;// - c1over54 ; - (D.f[ DIR_0PP ])[ktn ] = mfbaa;// - c1over54 ; - (D.f[ DIR_0MM ])[kbs ] = mfbcc;// - c1over54 ; - (D.f[ DIR_0PM ])[kbn ] = mfbac;// - c1over54 ; - (D.f[ DIR_0MP ])[kts ] = mfbca;// - c1over54 ; - (D.f[ DIR_000])[kzero] = mfbbb;// - c8over27 ; - (D.f[ DIR_PPP ])[ktne ] = mfaaa;// - c1over216; - (D.f[ DIR_PMP ])[ktse ] = mfaca;// - c1over216; - (D.f[ DIR_PPM ])[kbne ] = mfaac;// - c1over216; - (D.f[ DIR_PMM ])[kbse ] = mfacc;// - c1over216; - (D.f[ DIR_MPP ])[ktnw ] = mfcaa;// - c1over216; - (D.f[ DIR_MMP ])[ktsw ] = mfcca;// - c1over216; - (D.f[ DIR_MPM ])[kbnw ] = mfcac;// - c1over216; - (D.f[ DIR_MMM ])[kbsw ] = mfccc;// - c1over216; + (D.f[ dP00 ])[ke ] = mfabb;// - c2over27 ;// + (D.f[ dM00 ])[kw ] = mfcbb;// - c2over27 ; + (D.f[ d0P0 ])[kn ] = mfbab;// - c2over27 ; + (D.f[ d0M0 ])[ks ] = mfbcb;// - c2over27 ; + (D.f[ d00P ])[kt ] = mfbba;// - c2over27 ; + (D.f[ d00M ])[kb ] = mfbbc;// - c2over27 ; + (D.f[ dPP0 ])[kne ] = mfaab;// - c1over54 ; + (D.f[ dMM0 ])[ksw ] = mfccb;// - c1over54 ; + (D.f[ dPM0 ])[kse ] = mfacb;// - c1over54 ; + (D.f[ dMP0 ])[knw ] = mfcab;// - c1over54 ; + (D.f[ dP0P ])[kte ] = mfaba;// - c1over54 ; + (D.f[ dM0M ])[kbw ] = mfcbc;// - c1over54 ; + (D.f[ dP0M ])[kbe ] = mfabc;// - c1over54 ; + (D.f[ dM0P ])[ktw ] = mfcba;// - c1over54 ; + (D.f[ d0PP ])[ktn ] = mfbaa;// - c1over54 ; + (D.f[ d0MM ])[kbs ] = mfbcc;// - c1over54 ; + (D.f[ d0PM ])[kbn ] = mfbac;// - c1over54 ; + (D.f[ d0MP ])[kts ] = mfbca;// - c1over54 ; + (D.f[ d000])[kzero] = mfbbb;// - c8over27 ; + (D.f[ dPPP ])[ktne ] = mfaaa;// - c1over216; + (D.f[ dPMP ])[ktse ] = mfaca;// - c1over216; + (D.f[ dPPM ])[kbne ] = mfaac;// - c1over216; + (D.f[ dPMM ])[kbse ] = mfacc;// - c1over216; + (D.f[ dMPP ])[ktnw ] = mfcaa;// - c1over216; + (D.f[ dMMP ])[ktsw ] = mfcca;// - c1over216; + (D.f[ dMPM ])[kbnw ] = mfcac;// - c1over216; + (D.f[ dMMM ])[kbsw ] = mfccc;// - c1over216; //////////////////////////////////////////////////////////////////////////////////// } } @@ -5478,63 +5478,63 @@ __global__ void LB_Kernel_Kum_New_Comp_SRT_SP_27( Distributions27 D; if (EvenOrOdd == true) { - D.f[DIR_P00] = &DDStart[DIR_P00 * numberOfLBnodes]; - D.f[DIR_M00] = &DDStart[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0P0] = &DDStart[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0M0] = &DDStart[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00P] = &DDStart[DIR_00P * numberOfLBnodes]; - D.f[DIR_00M] = &DDStart[DIR_00M * numberOfLBnodes]; - D.f[DIR_PP0] = &DDStart[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_MM0] = &DDStart[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DDStart[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DDStart[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_P0P] = &DDStart[DIR_P0P * numberOfLBnodes]; - D.f[DIR_M0M] = &DDStart[DIR_M0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DDStart[DIR_P0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DDStart[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0PP] = &DDStart[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0MM] = &DDStart[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0PM] = &DDStart[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0MP] = &DDStart[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DDStart[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DDStart[DIR_PPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DDStart[DIR_MMP * numberOfLBnodes]; - D.f[DIR_PMP] = &DDStart[DIR_PMP * numberOfLBnodes]; - D.f[DIR_MPP] = &DDStart[DIR_MPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DDStart[DIR_PPM * numberOfLBnodes]; - D.f[DIR_MMM] = &DDStart[DIR_MMM * numberOfLBnodes]; - D.f[DIR_PMM] = &DDStart[DIR_PMM * numberOfLBnodes]; - D.f[DIR_MPM] = &DDStart[DIR_MPM * numberOfLBnodes]; + D.f[dP00] = &DDStart[dP00 * numberOfLBnodes]; + D.f[dM00] = &DDStart[dM00 * numberOfLBnodes]; + D.f[d0P0] = &DDStart[d0P0 * numberOfLBnodes]; + D.f[d0M0] = &DDStart[d0M0 * numberOfLBnodes]; + D.f[d00P] = &DDStart[d00P * numberOfLBnodes]; + D.f[d00M] = &DDStart[d00M * numberOfLBnodes]; + D.f[dPP0] = &DDStart[dPP0 * numberOfLBnodes]; + D.f[dMM0] = &DDStart[dMM0 * numberOfLBnodes]; + D.f[dPM0] = &DDStart[dPM0 * numberOfLBnodes]; + D.f[dMP0] = &DDStart[dMP0 * numberOfLBnodes]; + D.f[dP0P] = &DDStart[dP0P * numberOfLBnodes]; + D.f[dM0M] = &DDStart[dM0M * numberOfLBnodes]; + D.f[dP0M] = &DDStart[dP0M * numberOfLBnodes]; + D.f[dM0P] = &DDStart[dM0P * numberOfLBnodes]; + D.f[d0PP] = &DDStart[d0PP * numberOfLBnodes]; + D.f[d0MM] = &DDStart[d0MM * numberOfLBnodes]; + D.f[d0PM] = &DDStart[d0PM * numberOfLBnodes]; + D.f[d0MP] = &DDStart[d0MP * numberOfLBnodes]; + D.f[d000] = &DDStart[d000 * numberOfLBnodes]; + D.f[dPPP] = &DDStart[dPPP * numberOfLBnodes]; + D.f[dMMP] = &DDStart[dMMP * numberOfLBnodes]; + D.f[dPMP] = &DDStart[dPMP * numberOfLBnodes]; + D.f[dMPP] = &DDStart[dMPP * numberOfLBnodes]; + D.f[dPPM] = &DDStart[dPPM * numberOfLBnodes]; + D.f[dMMM] = &DDStart[dMMM * numberOfLBnodes]; + D.f[dPMM] = &DDStart[dPMM * numberOfLBnodes]; + D.f[dMPM] = &DDStart[dMPM * numberOfLBnodes]; } else { - D.f[DIR_M00] = &DDStart[DIR_P00 * numberOfLBnodes]; - D.f[DIR_P00] = &DDStart[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0M0] = &DDStart[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0P0] = &DDStart[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00M] = &DDStart[DIR_00P * numberOfLBnodes]; - D.f[DIR_00P] = &DDStart[DIR_00M * numberOfLBnodes]; - D.f[DIR_MM0] = &DDStart[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_PP0] = &DDStart[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DDStart[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DDStart[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_M0M] = &DDStart[DIR_P0P * numberOfLBnodes]; - D.f[DIR_P0P] = &DDStart[DIR_M0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DDStart[DIR_P0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DDStart[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0MM] = &DDStart[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0PP] = &DDStart[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0MP] = &DDStart[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0PM] = &DDStart[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DDStart[DIR_000 * numberOfLBnodes]; - D.f[DIR_MMM] = &DDStart[DIR_PPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DDStart[DIR_MMP * numberOfLBnodes]; - D.f[DIR_MPM] = &DDStart[DIR_PMP * numberOfLBnodes]; - D.f[DIR_PMM] = &DDStart[DIR_MPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DDStart[DIR_PPM * numberOfLBnodes]; - D.f[DIR_PPP] = &DDStart[DIR_MMM * numberOfLBnodes]; - D.f[DIR_MPP] = &DDStart[DIR_PMM * numberOfLBnodes]; - D.f[DIR_PMP] = &DDStart[DIR_MPM * numberOfLBnodes]; + D.f[dM00] = &DDStart[dP00 * numberOfLBnodes]; + D.f[dP00] = &DDStart[dM00 * numberOfLBnodes]; + D.f[d0M0] = &DDStart[d0P0 * numberOfLBnodes]; + D.f[d0P0] = &DDStart[d0M0 * numberOfLBnodes]; + D.f[d00M] = &DDStart[d00P * numberOfLBnodes]; + D.f[d00P] = &DDStart[d00M * numberOfLBnodes]; + D.f[dMM0] = &DDStart[dPP0 * numberOfLBnodes]; + D.f[dPP0] = &DDStart[dMM0 * numberOfLBnodes]; + D.f[dMP0] = &DDStart[dPM0 * numberOfLBnodes]; + D.f[dPM0] = &DDStart[dMP0 * numberOfLBnodes]; + D.f[dM0M] = &DDStart[dP0P * numberOfLBnodes]; + D.f[dP0P] = &DDStart[dM0M * numberOfLBnodes]; + D.f[dM0P] = &DDStart[dP0M * numberOfLBnodes]; + D.f[dP0M] = &DDStart[dM0P * numberOfLBnodes]; + D.f[d0MM] = &DDStart[d0PP * numberOfLBnodes]; + D.f[d0PP] = &DDStart[d0MM * numberOfLBnodes]; + D.f[d0MP] = &DDStart[d0PM * numberOfLBnodes]; + D.f[d0PM] = &DDStart[d0MP * numberOfLBnodes]; + D.f[d000] = &DDStart[d000 * numberOfLBnodes]; + D.f[dMMM] = &DDStart[dPPP * numberOfLBnodes]; + D.f[dPPM] = &DDStart[dMMP * numberOfLBnodes]; + D.f[dMPM] = &DDStart[dPMP * numberOfLBnodes]; + D.f[dPMM] = &DDStart[dMPP * numberOfLBnodes]; + D.f[dMMP] = &DDStart[dPPM * numberOfLBnodes]; + D.f[dPPP] = &DDStart[dMMM * numberOfLBnodes]; + D.f[dMPP] = &DDStart[dPMM * numberOfLBnodes]; + D.f[dPMP] = &DDStart[dMPM * numberOfLBnodes]; } //////////////////////////////////////////////////////////////////////////////// @@ -5568,33 +5568,33 @@ __global__ void LB_Kernel_Kum_New_Comp_SRT_SP_27( unsigned int kbsw = neighborZ[ksw]; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real mfcbb = (D.f[DIR_P00])[k ]; - real mfabb = (D.f[DIR_M00])[kw ]; - real mfbcb = (D.f[DIR_0P0])[k ]; - real mfbab = (D.f[DIR_0M0])[ks ]; - real mfbbc = (D.f[DIR_00P])[k ]; - real mfbba = (D.f[DIR_00M])[kb ]; - real mfccb = (D.f[DIR_PP0])[k ]; - real mfaab = (D.f[DIR_MM0])[ksw ]; - real mfcab = (D.f[DIR_PM0])[ks ]; - real mfacb = (D.f[DIR_MP0])[kw ]; - real mfcbc = (D.f[DIR_P0P])[k ]; - real mfaba = (D.f[DIR_M0M])[kbw ]; - real mfcba = (D.f[DIR_P0M])[kb ]; - real mfabc = (D.f[DIR_M0P])[kw ]; - real mfbcc = (D.f[DIR_0PP])[k ]; - real mfbaa = (D.f[DIR_0MM])[kbs ]; - real mfbca = (D.f[DIR_0PM])[kb ]; - real mfbac = (D.f[DIR_0MP])[ks ]; - real mfbbb = (D.f[DIR_000])[k ]; - real mfccc = (D.f[DIR_PPP])[k ]; - real mfaac = (D.f[DIR_MMP])[ksw ]; - real mfcac = (D.f[DIR_PMP])[ks ]; - real mfacc = (D.f[DIR_MPP])[kw ]; - real mfcca = (D.f[DIR_PPM])[kb ]; - real mfaaa = (D.f[DIR_MMM])[kbsw]; - real mfcaa = (D.f[DIR_PMM])[kbs ]; - real mfaca = (D.f[DIR_MPM])[kbw ]; + real mfcbb = (D.f[dP00])[k ]; + real mfabb = (D.f[dM00])[kw ]; + real mfbcb = (D.f[d0P0])[k ]; + real mfbab = (D.f[d0M0])[ks ]; + real mfbbc = (D.f[d00P])[k ]; + real mfbba = (D.f[d00M])[kb ]; + real mfccb = (D.f[dPP0])[k ]; + real mfaab = (D.f[dMM0])[ksw ]; + real mfcab = (D.f[dPM0])[ks ]; + real mfacb = (D.f[dMP0])[kw ]; + real mfcbc = (D.f[dP0P])[k ]; + real mfaba = (D.f[dM0M])[kbw ]; + real mfcba = (D.f[dP0M])[kb ]; + real mfabc = (D.f[dM0P])[kw ]; + real mfbcc = (D.f[d0PP])[k ]; + real mfbaa = (D.f[d0MM])[kbs ]; + real mfbca = (D.f[d0PM])[kb ]; + real mfbac = (D.f[d0MP])[ks ]; + real mfbbb = (D.f[d000])[k ]; + real mfccc = (D.f[dPPP])[k ]; + real mfaac = (D.f[dMMP])[ksw ]; + real mfcac = (D.f[dPMP])[ks ]; + real mfacc = (D.f[dMPP])[kw ]; + real mfcca = (D.f[dPPM])[kb ]; + real mfaaa = (D.f[dMMM])[kbsw]; + real mfcaa = (D.f[dPMM])[kbs ]; + real mfaca = (D.f[dMPM])[kbw ]; //////////////////////////////////////////////////////////////////////////////////// real drho = ((((mfccc + mfaaa) + (mfaca + mfcac)) + ((mfacc + mfcaa) + (mfaac + mfcca))) + (((mfbac + mfbca) + (mfbaa + mfbcc)) + ((mfabc + mfcba) + (mfaba + mfcbc)) + ((mfacb + mfcab) + (mfaab + mfccb))) + @@ -6349,33 +6349,33 @@ __global__ void LB_Kernel_Kum_New_Comp_SRT_SP_27( ((mfabb + mfcbb) + (mfbab + mfbcb) + (mfbba + mfbbc))) + mfbbb; mfbbb += drho - drhoPost; //////////////////////////////////////////////////////////////////////////////////// - (D.f[DIR_P00])[k ] = mfabb; - (D.f[DIR_M00])[kw ] = mfcbb; - (D.f[DIR_0P0])[k ] = mfbab; - (D.f[DIR_0M0])[ks ] = mfbcb; - (D.f[DIR_00P])[k ] = mfbba; - (D.f[DIR_00M])[kb ] = mfbbc; - (D.f[DIR_PP0])[k ] = mfaab; - (D.f[DIR_MM0])[ksw ] = mfccb; - (D.f[DIR_PM0])[ks ] = mfacb; - (D.f[DIR_MP0])[kw ] = mfcab; - (D.f[DIR_P0P])[k ] = mfaba; - (D.f[DIR_M0M])[kbw ] = mfcbc; - (D.f[DIR_P0M])[kb ] = mfabc; - (D.f[DIR_M0P])[kw ] = mfcba; - (D.f[DIR_0PP])[k ] = mfbaa; - (D.f[DIR_0MM])[kbs ] = mfbcc; - (D.f[DIR_0PM])[kb ] = mfbac; - (D.f[DIR_0MP])[ks ] = mfbca; - (D.f[DIR_000])[k ] = mfbbb; - (D.f[DIR_PPP])[k ] = mfaaa; - (D.f[DIR_PMP])[ks ] = mfaca; - (D.f[DIR_PPM])[kb ] = mfaac; - (D.f[DIR_PMM])[kbs ] = mfacc; - (D.f[DIR_MPP])[kw ] = mfcaa; - (D.f[DIR_MMP])[ksw ] = mfcca; - (D.f[DIR_MPM])[kbw ] = mfcac; - (D.f[DIR_MMM])[kbsw] = mfccc; + (D.f[dP00])[k ] = mfabb; + (D.f[dM00])[kw ] = mfcbb; + (D.f[d0P0])[k ] = mfbab; + (D.f[d0M0])[ks ] = mfbcb; + (D.f[d00P])[k ] = mfbba; + (D.f[d00M])[kb ] = mfbbc; + (D.f[dPP0])[k ] = mfaab; + (D.f[dMM0])[ksw ] = mfccb; + (D.f[dPM0])[ks ] = mfacb; + (D.f[dMP0])[kw ] = mfcab; + (D.f[dP0P])[k ] = mfaba; + (D.f[dM0M])[kbw ] = mfcbc; + (D.f[dP0M])[kb ] = mfabc; + (D.f[dM0P])[kw ] = mfcba; + (D.f[d0PP])[k ] = mfbaa; + (D.f[d0MM])[kbs ] = mfbcc; + (D.f[d0PM])[kb ] = mfbac; + (D.f[d0MP])[ks ] = mfbca; + (D.f[d000])[k ] = mfbbb; + (D.f[dPPP])[k ] = mfaaa; + (D.f[dPMP])[ks ] = mfaca; + (D.f[dPPM])[kb ] = mfaac; + (D.f[dPMM])[kbs ] = mfacc; + (D.f[dMPP])[kw ] = mfcaa; + (D.f[dMMP])[ksw ] = mfcca; + (D.f[dMPM])[kbw ] = mfcac; + (D.f[dMMM])[kbsw] = mfccc; } } } diff --git a/src/gpu/VirtualFluids_GPU/GPU/Cumulant27chim.cu b/src/gpu/core/GPU/Cumulant27chim.cu similarity index 80% rename from src/gpu/VirtualFluids_GPU/GPU/Cumulant27chim.cu rename to src/gpu/core/GPU/Cumulant27chim.cu index 11cbb45c565e1346a9664db8a6c6164d8031aa3e..b97aa68b1cb0ae40ed1dd20543501965ca2d5fc0 100644 --- a/src/gpu/VirtualFluids_GPU/GPU/Cumulant27chim.cu +++ b/src/gpu/core/GPU/Cumulant27chim.cu @@ -78,63 +78,63 @@ __global__ void Cumulant_One_preconditioned_errorDiffusion_chim_Comp_SP_27( Distributions27 D; if (EvenOrOdd == true) { - D.f[DIR_P00] = &DDStart[DIR_P00 * numberOfLBnodes]; - D.f[DIR_M00] = &DDStart[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0P0] = &DDStart[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0M0] = &DDStart[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00P] = &DDStart[DIR_00P * numberOfLBnodes]; - D.f[DIR_00M] = &DDStart[DIR_00M * numberOfLBnodes]; - D.f[DIR_PP0] = &DDStart[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_MM0] = &DDStart[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DDStart[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DDStart[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_P0P] = &DDStart[DIR_P0P * numberOfLBnodes]; - D.f[DIR_M0M] = &DDStart[DIR_M0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DDStart[DIR_P0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DDStart[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0PP] = &DDStart[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0MM] = &DDStart[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0PM] = &DDStart[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0MP] = &DDStart[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DDStart[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DDStart[DIR_PPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DDStart[DIR_MMP * numberOfLBnodes]; - D.f[DIR_PMP] = &DDStart[DIR_PMP * numberOfLBnodes]; - D.f[DIR_MPP] = &DDStart[DIR_MPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DDStart[DIR_PPM * numberOfLBnodes]; - D.f[DIR_MMM] = &DDStart[DIR_MMM * numberOfLBnodes]; - D.f[DIR_PMM] = &DDStart[DIR_PMM * numberOfLBnodes]; - D.f[DIR_MPM] = &DDStart[DIR_MPM * numberOfLBnodes]; + D.f[dP00] = &DDStart[dP00 * numberOfLBnodes]; + D.f[dM00] = &DDStart[dM00 * numberOfLBnodes]; + D.f[d0P0] = &DDStart[d0P0 * numberOfLBnodes]; + D.f[d0M0] = &DDStart[d0M0 * numberOfLBnodes]; + D.f[d00P] = &DDStart[d00P * numberOfLBnodes]; + D.f[d00M] = &DDStart[d00M * numberOfLBnodes]; + D.f[dPP0] = &DDStart[dPP0 * numberOfLBnodes]; + D.f[dMM0] = &DDStart[dMM0 * numberOfLBnodes]; + D.f[dPM0] = &DDStart[dPM0 * numberOfLBnodes]; + D.f[dMP0] = &DDStart[dMP0 * numberOfLBnodes]; + D.f[dP0P] = &DDStart[dP0P * numberOfLBnodes]; + D.f[dM0M] = &DDStart[dM0M * numberOfLBnodes]; + D.f[dP0M] = &DDStart[dP0M * numberOfLBnodes]; + D.f[dM0P] = &DDStart[dM0P * numberOfLBnodes]; + D.f[d0PP] = &DDStart[d0PP * numberOfLBnodes]; + D.f[d0MM] = &DDStart[d0MM * numberOfLBnodes]; + D.f[d0PM] = &DDStart[d0PM * numberOfLBnodes]; + D.f[d0MP] = &DDStart[d0MP * numberOfLBnodes]; + D.f[d000] = &DDStart[d000 * numberOfLBnodes]; + D.f[dPPP] = &DDStart[dPPP * numberOfLBnodes]; + D.f[dMMP] = &DDStart[dMMP * numberOfLBnodes]; + D.f[dPMP] = &DDStart[dPMP * numberOfLBnodes]; + D.f[dMPP] = &DDStart[dMPP * numberOfLBnodes]; + D.f[dPPM] = &DDStart[dPPM * numberOfLBnodes]; + D.f[dMMM] = &DDStart[dMMM * numberOfLBnodes]; + D.f[dPMM] = &DDStart[dPMM * numberOfLBnodes]; + D.f[dMPM] = &DDStart[dMPM * numberOfLBnodes]; } else { - D.f[DIR_M00] = &DDStart[DIR_P00 * numberOfLBnodes]; - D.f[DIR_P00] = &DDStart[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0M0] = &DDStart[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0P0] = &DDStart[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00M] = &DDStart[DIR_00P * numberOfLBnodes]; - D.f[DIR_00P] = &DDStart[DIR_00M * numberOfLBnodes]; - D.f[DIR_MM0] = &DDStart[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_PP0] = &DDStart[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DDStart[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DDStart[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_M0M] = &DDStart[DIR_P0P * numberOfLBnodes]; - D.f[DIR_P0P] = &DDStart[DIR_M0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DDStart[DIR_P0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DDStart[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0MM] = &DDStart[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0PP] = &DDStart[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0MP] = &DDStart[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0PM] = &DDStart[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DDStart[DIR_000 * numberOfLBnodes]; - D.f[DIR_MMM] = &DDStart[DIR_PPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DDStart[DIR_MMP * numberOfLBnodes]; - D.f[DIR_MPM] = &DDStart[DIR_PMP * numberOfLBnodes]; - D.f[DIR_PMM] = &DDStart[DIR_MPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DDStart[DIR_PPM * numberOfLBnodes]; - D.f[DIR_PPP] = &DDStart[DIR_MMM * numberOfLBnodes]; - D.f[DIR_MPP] = &DDStart[DIR_PMM * numberOfLBnodes]; - D.f[DIR_PMP] = &DDStart[DIR_MPM * numberOfLBnodes]; + D.f[dM00] = &DDStart[dP00 * numberOfLBnodes]; + D.f[dP00] = &DDStart[dM00 * numberOfLBnodes]; + D.f[d0M0] = &DDStart[d0P0 * numberOfLBnodes]; + D.f[d0P0] = &DDStart[d0M0 * numberOfLBnodes]; + D.f[d00M] = &DDStart[d00P * numberOfLBnodes]; + D.f[d00P] = &DDStart[d00M * numberOfLBnodes]; + D.f[dMM0] = &DDStart[dPP0 * numberOfLBnodes]; + D.f[dPP0] = &DDStart[dMM0 * numberOfLBnodes]; + D.f[dMP0] = &DDStart[dPM0 * numberOfLBnodes]; + D.f[dPM0] = &DDStart[dMP0 * numberOfLBnodes]; + D.f[dM0M] = &DDStart[dP0P * numberOfLBnodes]; + D.f[dP0P] = &DDStart[dM0M * numberOfLBnodes]; + D.f[dM0P] = &DDStart[dP0M * numberOfLBnodes]; + D.f[dP0M] = &DDStart[dM0P * numberOfLBnodes]; + D.f[d0MM] = &DDStart[d0PP * numberOfLBnodes]; + D.f[d0PP] = &DDStart[d0MM * numberOfLBnodes]; + D.f[d0MP] = &DDStart[d0PM * numberOfLBnodes]; + D.f[d0PM] = &DDStart[d0MP * numberOfLBnodes]; + D.f[d000] = &DDStart[d000 * numberOfLBnodes]; + D.f[dMMM] = &DDStart[dPPP * numberOfLBnodes]; + D.f[dPPM] = &DDStart[dMMP * numberOfLBnodes]; + D.f[dMPM] = &DDStart[dPMP * numberOfLBnodes]; + D.f[dPMM] = &DDStart[dMPP * numberOfLBnodes]; + D.f[dMMP] = &DDStart[dPPM * numberOfLBnodes]; + D.f[dPPP] = &DDStart[dMMM * numberOfLBnodes]; + D.f[dMPP] = &DDStart[dPMM * numberOfLBnodes]; + D.f[dPMP] = &DDStart[dMPM * numberOfLBnodes]; } //////////////////////////////////////////////////////////////////////////////// @@ -170,33 +170,33 @@ __global__ void Cumulant_One_preconditioned_errorDiffusion_chim_Comp_SP_27( ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real mfcbb = (D.f[DIR_P00])[k];//[ke ];// + c2over27 ;(D.f[DIR_P00])[k ];//ke - real mfabb = (D.f[DIR_M00])[kw];//[kw ];// + c2over27 ;(D.f[DIR_M00])[kw ]; - real mfbcb = (D.f[DIR_0P0])[k];//[kn ];// + c2over27 ;(D.f[DIR_0P0])[k ];//kn - real mfbab = (D.f[DIR_0M0])[ks];//[ks ];// + c2over27 ;(D.f[DIR_0M0])[ks ]; - real mfbbc = (D.f[DIR_00P])[k];//[kt ];// + c2over27 ;(D.f[DIR_00P])[k ];//kt - real mfbba = (D.f[DIR_00M])[kb];//[kb ];// + c2over27 ;(D.f[DIR_00M])[kb ]; - real mfccb = (D.f[DIR_PP0])[k];//[kne ];// + c1over54 ;(D.f[DIR_PP0])[k ];//kne - real mfaab = (D.f[DIR_MM0])[ksw];//[ksw ];// + c1over54 ;(D.f[DIR_MM0])[ksw]; - real mfcab = (D.f[DIR_PM0])[ks];//[kse ];// + c1over54 ;(D.f[DIR_PM0])[ks ];//kse - real mfacb = (D.f[DIR_MP0])[kw];//[knw ];// + c1over54 ;(D.f[DIR_MP0])[kw ];//knw - real mfcbc = (D.f[DIR_P0P])[k];//[kte ];// + c1over54 ;(D.f[DIR_P0P])[k ];//kte - real mfaba = (D.f[DIR_M0M])[kbw];//[kbw ];// + c1over54 ;(D.f[DIR_M0M])[kbw]; - real mfcba = (D.f[DIR_P0M])[kb];//[kbe ];// + c1over54 ;(D.f[DIR_P0M])[kb ];//kbe - real mfabc = (D.f[DIR_M0P])[kw];//[ktw ];// + c1over54 ;(D.f[DIR_M0P])[kw ];//ktw - real mfbcc = (D.f[DIR_0PP])[k];//[ktn ];// + c1over54 ;(D.f[DIR_0PP])[k ];//ktn - real mfbaa = (D.f[DIR_0MM])[kbs];//[kbs ];// + c1over54 ;(D.f[DIR_0MM])[kbs]; - real mfbca = (D.f[DIR_0PM])[kb];//[kbn ];// + c1over54 ;(D.f[DIR_0PM])[kb ];//kbn - real mfbac = (D.f[DIR_0MP])[ks];//[kts ];// + c1over54 ;(D.f[DIR_0MP])[ks ];//kts - real mfbbb = (D.f[DIR_000])[k];//[kzero];// + c8over27 ;(D.f[DIR_000])[k ];//kzero - real mfccc = (D.f[DIR_PPP])[k];//[ktne ];// + c1over216;(D.f[DIR_PPP])[k ];//ktne - real mfaac = (D.f[DIR_MMP])[ksw];//[ktsw ];// + c1over216;(D.f[DIR_MMP])[ksw];//ktsw - real mfcac = (D.f[DIR_PMP])[ks];//[ktse ];// + c1over216;(D.f[DIR_PMP])[ks ];//ktse - real mfacc = (D.f[DIR_MPP])[kw];//[ktnw ];// + c1over216;(D.f[DIR_MPP])[kw ];//ktnw - real mfcca = (D.f[DIR_PPM])[kb];//[kbne ];// + c1over216;(D.f[DIR_PPM])[kb ];//kbne - real mfaaa = (D.f[DIR_MMM])[kbsw];//[kbsw ];// + c1over216;(D.f[DIR_MMM])[kbsw]; - real mfcaa = (D.f[DIR_PMM])[kbs];//[kbse ];// + c1over216;(D.f[DIR_PMM])[kbs];//kbse - real mfaca = (D.f[DIR_MPM])[kbw];//[kbnw ];// + c1over216;(D.f[DIR_MPM])[kbw];//kbnw + real mfcbb = (D.f[dP00])[k];//[ke ];// + c2over27 ;(D.f[dP00])[k ];//ke + real mfabb = (D.f[dM00])[kw];//[kw ];// + c2over27 ;(D.f[dM00])[kw ]; + real mfbcb = (D.f[d0P0])[k];//[kn ];// + c2over27 ;(D.f[d0P0])[k ];//kn + real mfbab = (D.f[d0M0])[ks];//[ks ];// + c2over27 ;(D.f[d0M0])[ks ]; + real mfbbc = (D.f[d00P])[k];//[kt ];// + c2over27 ;(D.f[d00P])[k ];//kt + real mfbba = (D.f[d00M])[kb];//[kb ];// + c2over27 ;(D.f[d00M])[kb ]; + real mfccb = (D.f[dPP0])[k];//[kne ];// + c1over54 ;(D.f[dPP0])[k ];//kne + real mfaab = (D.f[dMM0])[ksw];//[ksw ];// + c1over54 ;(D.f[dMM0])[ksw]; + real mfcab = (D.f[dPM0])[ks];//[kse ];// + c1over54 ;(D.f[dPM0])[ks ];//kse + real mfacb = (D.f[dMP0])[kw];//[knw ];// + c1over54 ;(D.f[dMP0])[kw ];//knw + real mfcbc = (D.f[dP0P])[k];//[kte ];// + c1over54 ;(D.f[dP0P])[k ];//kte + real mfaba = (D.f[dM0M])[kbw];//[kbw ];// + c1over54 ;(D.f[dM0M])[kbw]; + real mfcba = (D.f[dP0M])[kb];//[kbe ];// + c1over54 ;(D.f[dP0M])[kb ];//kbe + real mfabc = (D.f[dM0P])[kw];//[ktw ];// + c1over54 ;(D.f[dM0P])[kw ];//ktw + real mfbcc = (D.f[d0PP])[k];//[ktn ];// + c1over54 ;(D.f[d0PP])[k ];//ktn + real mfbaa = (D.f[d0MM])[kbs];//[kbs ];// + c1over54 ;(D.f[d0MM])[kbs]; + real mfbca = (D.f[d0PM])[kb];//[kbn ];// + c1over54 ;(D.f[d0PM])[kb ];//kbn + real mfbac = (D.f[d0MP])[ks];//[kts ];// + c1over54 ;(D.f[d0MP])[ks ];//kts + real mfbbb = (D.f[d000])[k];//[kzero];// + c8over27 ;(D.f[d000])[k ];//kzero + real mfccc = (D.f[dPPP])[k];//[ktne ];// + c1over216;(D.f[dPPP])[k ];//ktne + real mfaac = (D.f[dMMP])[ksw];//[ktsw ];// + c1over216;(D.f[dMMP])[ksw];//ktsw + real mfcac = (D.f[dPMP])[ks];//[ktse ];// + c1over216;(D.f[dPMP])[ks ];//ktse + real mfacc = (D.f[dMPP])[kw];//[ktnw ];// + c1over216;(D.f[dMPP])[kw ];//ktnw + real mfcca = (D.f[dPPM])[kb];//[kbne ];// + c1over216;(D.f[dPPM])[kb ];//kbne + real mfaaa = (D.f[dMMM])[kbsw];//[kbsw ];// + c1over216;(D.f[dMMM])[kbsw]; + real mfcaa = (D.f[dPMM])[kbs];//[kbse ];// + c1over216;(D.f[dPMM])[kbs];//kbse + real mfaca = (D.f[dMPM])[kbw];//[kbnw ];// + c1over216;(D.f[dMPM])[kbw];//kbnw //////////////////////////////////////////////////////////////////////////////////// real drho = ((((mfccc + mfaaa) + (mfaca + mfcac)) + ((mfacc + mfcaa) + (mfaac + mfcca))) + (((mfbac + mfbca) + (mfbaa + mfbcc)) + ((mfabc + mfcba) + (mfaba + mfcbc)) + ((mfacb + mfcab) + (mfaab + mfccb))) + @@ -886,33 +886,33 @@ __global__ void Cumulant_One_preconditioned_errorDiffusion_chim_Comp_SP_27( // ((mfabb + mfcbb) + (mfbab + mfbcb) + (mfbba + mfbbc))) + mfbbb; //mfbbb += drho - drhoPost; //////////////////////////////////////////////////////////////////////////////////// - (D.f[DIR_P00])[k] = mfabb;//(D.f[ DIR_P00 ])[ke ] = mfabb;// - c2over27 ; (D.f[ DIR_P00 ])[k ] - (D.f[DIR_M00])[kw] = mfcbb;//(D.f[ DIR_M00 ])[kw ] = mfcbb;// - c2over27 ; (D.f[ DIR_M00 ])[kw ] - (D.f[DIR_0P0])[k] = mfbab;//(D.f[ DIR_0P0 ])[kn ] = mfbab;// - c2over27 ; (D.f[ DIR_0P0 ])[k ] - (D.f[DIR_0M0])[ks] = mfbcb;//(D.f[ DIR_0M0 ])[ks ] = mfbcb;// - c2over27 ; (D.f[ DIR_0M0 ])[ks ] - (D.f[DIR_00P])[k] = mfbba;//(D.f[ DIR_00P ])[kt ] = mfbba;// - c2over27 ; (D.f[ DIR_00P ])[k ] - (D.f[DIR_00M])[kb] = mfbbc;//(D.f[ DIR_00M ])[kb ] = mfbbc;// - c2over27 ; (D.f[ DIR_00M ])[kb ] - (D.f[DIR_PP0])[k] = mfaab;//(D.f[ DIR_PP0 ])[kne ] = mfaab;// - c1over54 ; (D.f[ DIR_PP0 ])[k ] - (D.f[DIR_MM0])[ksw] = mfccb;//(D.f[ DIR_MM0 ])[ksw ] = mfccb;// - c1over54 ; (D.f[ DIR_MM0 ])[ksw ] - (D.f[DIR_PM0])[ks] = mfacb;//(D.f[ DIR_PM0 ])[kse ] = mfacb;// - c1over54 ; (D.f[ DIR_PM0 ])[ks ] - (D.f[DIR_MP0])[kw] = mfcab;//(D.f[ DIR_MP0 ])[knw ] = mfcab;// - c1over54 ; (D.f[ DIR_MP0 ])[kw ] - (D.f[DIR_P0P])[k] = mfaba;//(D.f[ DIR_P0P ])[kte ] = mfaba;// - c1over54 ; (D.f[ DIR_P0P ])[k ] - (D.f[DIR_M0M])[kbw] = mfcbc;//(D.f[ DIR_M0M ])[kbw ] = mfcbc;// - c1over54 ; (D.f[ DIR_M0M ])[kbw ] - (D.f[DIR_P0M])[kb] = mfabc;//(D.f[ DIR_P0M ])[kbe ] = mfabc;// - c1over54 ; (D.f[ DIR_P0M ])[kb ] - (D.f[DIR_M0P])[kw] = mfcba;//(D.f[ DIR_M0P ])[ktw ] = mfcba;// - c1over54 ; (D.f[ DIR_M0P ])[kw ] - (D.f[DIR_0PP])[k] = mfbaa;//(D.f[ DIR_0PP ])[ktn ] = mfbaa;// - c1over54 ; (D.f[ DIR_0PP ])[k ] - (D.f[DIR_0MM])[kbs] = mfbcc;//(D.f[ DIR_0MM ])[kbs ] = mfbcc;// - c1over54 ; (D.f[ DIR_0MM ])[kbs ] - (D.f[DIR_0PM])[kb] = mfbac;//(D.f[ DIR_0PM ])[kbn ] = mfbac;// - c1over54 ; (D.f[ DIR_0PM ])[kb ] - (D.f[DIR_0MP])[ks] = mfbca;//(D.f[ DIR_0MP ])[kts ] = mfbca;// - c1over54 ; (D.f[ DIR_0MP ])[ks ] - (D.f[DIR_000])[k] = mfbbb;//(D.f[ DIR_000])[kzero] = mfbbb;// - c8over27 ; (D.f[ DIR_000])[k ] - (D.f[DIR_PPP])[k] = mfaaa;//(D.f[ DIR_PPP ])[ktne ] = mfaaa;// - c1over216; (D.f[ DIR_PPP ])[k ] - (D.f[DIR_PMP])[ks] = mfaca;//(D.f[ DIR_PMP ])[ktse ] = mfaca;// - c1over216; (D.f[ DIR_PMP ])[ks ] - (D.f[DIR_PPM])[kb] = mfaac;//(D.f[ DIR_PPM ])[kbne ] = mfaac;// - c1over216; (D.f[ DIR_PPM ])[kb ] - (D.f[DIR_PMM])[kbs] = mfacc;//(D.f[ DIR_PMM ])[kbse ] = mfacc;// - c1over216; (D.f[ DIR_PMM ])[kbs ] - (D.f[DIR_MPP])[kw] = mfcaa;//(D.f[ DIR_MPP ])[ktnw ] = mfcaa;// - c1over216; (D.f[ DIR_MPP ])[kw ] - (D.f[DIR_MMP])[ksw] = mfcca;//(D.f[ DIR_MMP ])[ktsw ] = mfcca;// - c1over216; (D.f[ DIR_MMP ])[ksw ] - (D.f[DIR_MPM])[kbw] = mfcac;//(D.f[ DIR_MPM ])[kbnw ] = mfcac;// - c1over216; (D.f[ DIR_MPM ])[kbw ] - (D.f[DIR_MMM])[kbsw] = mfccc;//(D.f[ DIR_MMM ])[kbsw ] = mfccc;// - c1over216; (D.f[ DIR_MMM ])[kbsw] + (D.f[dP00])[k] = mfabb;//(D.f[ dP00 ])[ke ] = mfabb;// - c2over27 ; (D.f[ dP00 ])[k ] + (D.f[dM00])[kw] = mfcbb;//(D.f[ dM00 ])[kw ] = mfcbb;// - c2over27 ; (D.f[ dM00 ])[kw ] + (D.f[d0P0])[k] = mfbab;//(D.f[ d0P0 ])[kn ] = mfbab;// - c2over27 ; (D.f[ d0P0 ])[k ] + (D.f[d0M0])[ks] = mfbcb;//(D.f[ d0M0 ])[ks ] = mfbcb;// - c2over27 ; (D.f[ d0M0 ])[ks ] + (D.f[d00P])[k] = mfbba;//(D.f[ d00P ])[kt ] = mfbba;// - c2over27 ; (D.f[ d00P ])[k ] + (D.f[d00M])[kb] = mfbbc;//(D.f[ d00M ])[kb ] = mfbbc;// - c2over27 ; (D.f[ d00M ])[kb ] + (D.f[dPP0])[k] = mfaab;//(D.f[ dPP0 ])[kne ] = mfaab;// - c1over54 ; (D.f[ dPP0 ])[k ] + (D.f[dMM0])[ksw] = mfccb;//(D.f[ dMM0 ])[ksw ] = mfccb;// - c1over54 ; (D.f[ dMM0 ])[ksw ] + (D.f[dPM0])[ks] = mfacb;//(D.f[ dPM0 ])[kse ] = mfacb;// - c1over54 ; (D.f[ dPM0 ])[ks ] + (D.f[dMP0])[kw] = mfcab;//(D.f[ dMP0 ])[knw ] = mfcab;// - c1over54 ; (D.f[ dMP0 ])[kw ] + (D.f[dP0P])[k] = mfaba;//(D.f[ dP0P ])[kte ] = mfaba;// - c1over54 ; (D.f[ dP0P ])[k ] + (D.f[dM0M])[kbw] = mfcbc;//(D.f[ dM0M ])[kbw ] = mfcbc;// - c1over54 ; (D.f[ dM0M ])[kbw ] + (D.f[dP0M])[kb] = mfabc;//(D.f[ dP0M ])[kbe ] = mfabc;// - c1over54 ; (D.f[ dP0M ])[kb ] + (D.f[dM0P])[kw] = mfcba;//(D.f[ dM0P ])[ktw ] = mfcba;// - c1over54 ; (D.f[ dM0P ])[kw ] + (D.f[d0PP])[k] = mfbaa;//(D.f[ d0PP ])[ktn ] = mfbaa;// - c1over54 ; (D.f[ d0PP ])[k ] + (D.f[d0MM])[kbs] = mfbcc;//(D.f[ d0MM ])[kbs ] = mfbcc;// - c1over54 ; (D.f[ d0MM ])[kbs ] + (D.f[d0PM])[kb] = mfbac;//(D.f[ d0PM ])[kbn ] = mfbac;// - c1over54 ; (D.f[ d0PM ])[kb ] + (D.f[d0MP])[ks] = mfbca;//(D.f[ d0MP ])[kts ] = mfbca;// - c1over54 ; (D.f[ d0MP ])[ks ] + (D.f[d000])[k] = mfbbb;//(D.f[ d000])[kzero] = mfbbb;// - c8over27 ; (D.f[ d000])[k ] + (D.f[dPPP])[k] = mfaaa;//(D.f[ dPPP ])[ktne ] = mfaaa;// - c1over216; (D.f[ dPPP ])[k ] + (D.f[dPMP])[ks] = mfaca;//(D.f[ dPMP ])[ktse ] = mfaca;// - c1over216; (D.f[ dPMP ])[ks ] + (D.f[dPPM])[kb] = mfaac;//(D.f[ dPPM ])[kbne ] = mfaac;// - c1over216; (D.f[ dPPM ])[kb ] + (D.f[dPMM])[kbs] = mfacc;//(D.f[ dPMM ])[kbse ] = mfacc;// - c1over216; (D.f[ dPMM ])[kbs ] + (D.f[dMPP])[kw] = mfcaa;//(D.f[ dMPP ])[ktnw ] = mfcaa;// - c1over216; (D.f[ dMPP ])[kw ] + (D.f[dMMP])[ksw] = mfcca;//(D.f[ dMMP ])[ktsw ] = mfcca;// - c1over216; (D.f[ dMMP ])[ksw ] + (D.f[dMPM])[kbw] = mfcac;//(D.f[ dMPM ])[kbnw ] = mfcac;// - c1over216; (D.f[ dMPM ])[kbw ] + (D.f[dMMM])[kbsw] = mfccc;//(D.f[ dMMM ])[kbsw ] = mfccc;// - c1over216; (D.f[ dMMM ])[kbsw] //////////////////////////////////////////////////////////////////////////////////// } } @@ -993,63 +993,63 @@ __global__ void Cumulant_One_preconditioned_chim_Comp_SP_27( Distributions27 D; if (EvenOrOdd == true) { - D.f[DIR_P00] = &DDStart[DIR_P00 * numberOfLBnodes]; - D.f[DIR_M00] = &DDStart[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0P0] = &DDStart[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0M0] = &DDStart[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00P] = &DDStart[DIR_00P * numberOfLBnodes]; - D.f[DIR_00M] = &DDStart[DIR_00M * numberOfLBnodes]; - D.f[DIR_PP0] = &DDStart[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_MM0] = &DDStart[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DDStart[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DDStart[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_P0P] = &DDStart[DIR_P0P * numberOfLBnodes]; - D.f[DIR_M0M] = &DDStart[DIR_M0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DDStart[DIR_P0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DDStart[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0PP] = &DDStart[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0MM] = &DDStart[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0PM] = &DDStart[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0MP] = &DDStart[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DDStart[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DDStart[DIR_PPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DDStart[DIR_MMP * numberOfLBnodes]; - D.f[DIR_PMP] = &DDStart[DIR_PMP * numberOfLBnodes]; - D.f[DIR_MPP] = &DDStart[DIR_MPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DDStart[DIR_PPM * numberOfLBnodes]; - D.f[DIR_MMM] = &DDStart[DIR_MMM * numberOfLBnodes]; - D.f[DIR_PMM] = &DDStart[DIR_PMM * numberOfLBnodes]; - D.f[DIR_MPM] = &DDStart[DIR_MPM * numberOfLBnodes]; + D.f[dP00] = &DDStart[dP00 * numberOfLBnodes]; + D.f[dM00] = &DDStart[dM00 * numberOfLBnodes]; + D.f[d0P0] = &DDStart[d0P0 * numberOfLBnodes]; + D.f[d0M0] = &DDStart[d0M0 * numberOfLBnodes]; + D.f[d00P] = &DDStart[d00P * numberOfLBnodes]; + D.f[d00M] = &DDStart[d00M * numberOfLBnodes]; + D.f[dPP0] = &DDStart[dPP0 * numberOfLBnodes]; + D.f[dMM0] = &DDStart[dMM0 * numberOfLBnodes]; + D.f[dPM0] = &DDStart[dPM0 * numberOfLBnodes]; + D.f[dMP0] = &DDStart[dMP0 * numberOfLBnodes]; + D.f[dP0P] = &DDStart[dP0P * numberOfLBnodes]; + D.f[dM0M] = &DDStart[dM0M * numberOfLBnodes]; + D.f[dP0M] = &DDStart[dP0M * numberOfLBnodes]; + D.f[dM0P] = &DDStart[dM0P * numberOfLBnodes]; + D.f[d0PP] = &DDStart[d0PP * numberOfLBnodes]; + D.f[d0MM] = &DDStart[d0MM * numberOfLBnodes]; + D.f[d0PM] = &DDStart[d0PM * numberOfLBnodes]; + D.f[d0MP] = &DDStart[d0MP * numberOfLBnodes]; + D.f[d000] = &DDStart[d000 * numberOfLBnodes]; + D.f[dPPP] = &DDStart[dPPP * numberOfLBnodes]; + D.f[dMMP] = &DDStart[dMMP * numberOfLBnodes]; + D.f[dPMP] = &DDStart[dPMP * numberOfLBnodes]; + D.f[dMPP] = &DDStart[dMPP * numberOfLBnodes]; + D.f[dPPM] = &DDStart[dPPM * numberOfLBnodes]; + D.f[dMMM] = &DDStart[dMMM * numberOfLBnodes]; + D.f[dPMM] = &DDStart[dPMM * numberOfLBnodes]; + D.f[dMPM] = &DDStart[dMPM * numberOfLBnodes]; } else { - D.f[DIR_M00] = &DDStart[DIR_P00 * numberOfLBnodes]; - D.f[DIR_P00] = &DDStart[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0M0] = &DDStart[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0P0] = &DDStart[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00M] = &DDStart[DIR_00P * numberOfLBnodes]; - D.f[DIR_00P] = &DDStart[DIR_00M * numberOfLBnodes]; - D.f[DIR_MM0] = &DDStart[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_PP0] = &DDStart[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DDStart[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DDStart[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_M0M] = &DDStart[DIR_P0P * numberOfLBnodes]; - D.f[DIR_P0P] = &DDStart[DIR_M0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DDStart[DIR_P0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DDStart[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0MM] = &DDStart[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0PP] = &DDStart[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0MP] = &DDStart[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0PM] = &DDStart[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DDStart[DIR_000 * numberOfLBnodes]; - D.f[DIR_MMM] = &DDStart[DIR_PPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DDStart[DIR_MMP * numberOfLBnodes]; - D.f[DIR_MPM] = &DDStart[DIR_PMP * numberOfLBnodes]; - D.f[DIR_PMM] = &DDStart[DIR_MPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DDStart[DIR_PPM * numberOfLBnodes]; - D.f[DIR_PPP] = &DDStart[DIR_MMM * numberOfLBnodes]; - D.f[DIR_MPP] = &DDStart[DIR_PMM * numberOfLBnodes]; - D.f[DIR_PMP] = &DDStart[DIR_MPM * numberOfLBnodes]; + D.f[dM00] = &DDStart[dP00 * numberOfLBnodes]; + D.f[dP00] = &DDStart[dM00 * numberOfLBnodes]; + D.f[d0M0] = &DDStart[d0P0 * numberOfLBnodes]; + D.f[d0P0] = &DDStart[d0M0 * numberOfLBnodes]; + D.f[d00M] = &DDStart[d00P * numberOfLBnodes]; + D.f[d00P] = &DDStart[d00M * numberOfLBnodes]; + D.f[dMM0] = &DDStart[dPP0 * numberOfLBnodes]; + D.f[dPP0] = &DDStart[dMM0 * numberOfLBnodes]; + D.f[dMP0] = &DDStart[dPM0 * numberOfLBnodes]; + D.f[dPM0] = &DDStart[dMP0 * numberOfLBnodes]; + D.f[dM0M] = &DDStart[dP0P * numberOfLBnodes]; + D.f[dP0P] = &DDStart[dM0M * numberOfLBnodes]; + D.f[dM0P] = &DDStart[dP0M * numberOfLBnodes]; + D.f[dP0M] = &DDStart[dM0P * numberOfLBnodes]; + D.f[d0MM] = &DDStart[d0PP * numberOfLBnodes]; + D.f[d0PP] = &DDStart[d0MM * numberOfLBnodes]; + D.f[d0MP] = &DDStart[d0PM * numberOfLBnodes]; + D.f[d0PM] = &DDStart[d0MP * numberOfLBnodes]; + D.f[d000] = &DDStart[d000 * numberOfLBnodes]; + D.f[dMMM] = &DDStart[dPPP * numberOfLBnodes]; + D.f[dPPM] = &DDStart[dMMP * numberOfLBnodes]; + D.f[dMPM] = &DDStart[dPMP * numberOfLBnodes]; + D.f[dPMM] = &DDStart[dMPP * numberOfLBnodes]; + D.f[dMMP] = &DDStart[dPPM * numberOfLBnodes]; + D.f[dPPP] = &DDStart[dMMM * numberOfLBnodes]; + D.f[dMPP] = &DDStart[dPMM * numberOfLBnodes]; + D.f[dPMP] = &DDStart[dMPM * numberOfLBnodes]; } //////////////////////////////////////////////////////////////////////////////// @@ -1085,33 +1085,33 @@ __global__ void Cumulant_One_preconditioned_chim_Comp_SP_27( ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real mfcbb = (D.f[DIR_P00])[k];//[ke ];// + c2over27 ;(D.f[DIR_P00])[k ];//ke - real mfabb = (D.f[DIR_M00])[kw];//[kw ];// + c2over27 ;(D.f[DIR_M00])[kw ]; - real mfbcb = (D.f[DIR_0P0])[k];//[kn ];// + c2over27 ;(D.f[DIR_0P0])[k ];//kn - real mfbab = (D.f[DIR_0M0])[ks];//[ks ];// + c2over27 ;(D.f[DIR_0M0])[ks ]; - real mfbbc = (D.f[DIR_00P])[k];//[kt ];// + c2over27 ;(D.f[DIR_00P])[k ];//kt - real mfbba = (D.f[DIR_00M])[kb];//[kb ];// + c2over27 ;(D.f[DIR_00M])[kb ]; - real mfccb = (D.f[DIR_PP0])[k];//[kne ];// + c1over54 ;(D.f[DIR_PP0])[k ];//kne - real mfaab = (D.f[DIR_MM0])[ksw];//[ksw ];// + c1over54 ;(D.f[DIR_MM0])[ksw]; - real mfcab = (D.f[DIR_PM0])[ks];//[kse ];// + c1over54 ;(D.f[DIR_PM0])[ks ];//kse - real mfacb = (D.f[DIR_MP0])[kw];//[knw ];// + c1over54 ;(D.f[DIR_MP0])[kw ];//knw - real mfcbc = (D.f[DIR_P0P])[k];//[kte ];// + c1over54 ;(D.f[DIR_P0P])[k ];//kte - real mfaba = (D.f[DIR_M0M])[kbw];//[kbw ];// + c1over54 ;(D.f[DIR_M0M])[kbw]; - real mfcba = (D.f[DIR_P0M])[kb];//[kbe ];// + c1over54 ;(D.f[DIR_P0M])[kb ];//kbe - real mfabc = (D.f[DIR_M0P])[kw];//[ktw ];// + c1over54 ;(D.f[DIR_M0P])[kw ];//ktw - real mfbcc = (D.f[DIR_0PP])[k];//[ktn ];// + c1over54 ;(D.f[DIR_0PP])[k ];//ktn - real mfbaa = (D.f[DIR_0MM])[kbs];//[kbs ];// + c1over54 ;(D.f[DIR_0MM])[kbs]; - real mfbca = (D.f[DIR_0PM])[kb];//[kbn ];// + c1over54 ;(D.f[DIR_0PM])[kb ];//kbn - real mfbac = (D.f[DIR_0MP])[ks];//[kts ];// + c1over54 ;(D.f[DIR_0MP])[ks ];//kts - real mfbbb = (D.f[DIR_000])[k];//[kzero];// + c8over27 ;(D.f[DIR_000])[k ];//kzero - real mfccc = (D.f[DIR_PPP])[k];//[ktne ];// + c1over216;(D.f[DIR_PPP])[k ];//ktne - real mfaac = (D.f[DIR_MMP])[ksw];//[ktsw ];// + c1over216;(D.f[DIR_MMP])[ksw];//ktsw - real mfcac = (D.f[DIR_PMP])[ks];//[ktse ];// + c1over216;(D.f[DIR_PMP])[ks ];//ktse - real mfacc = (D.f[DIR_MPP])[kw];//[ktnw ];// + c1over216;(D.f[DIR_MPP])[kw ];//ktnw - real mfcca = (D.f[DIR_PPM])[kb];//[kbne ];// + c1over216;(D.f[DIR_PPM])[kb ];//kbne - real mfaaa = (D.f[DIR_MMM])[kbsw];//[kbsw ];// + c1over216;(D.f[DIR_MMM])[kbsw]; - real mfcaa = (D.f[DIR_PMM])[kbs];//[kbse ];// + c1over216;(D.f[DIR_PMM])[kbs];//kbse - real mfaca = (D.f[DIR_MPM])[kbw];//[kbnw ];// + c1over216;(D.f[DIR_MPM])[kbw];//kbnw + real mfcbb = (D.f[dP00])[k];//[ke ];// + c2over27 ;(D.f[dP00])[k ];//ke + real mfabb = (D.f[dM00])[kw];//[kw ];// + c2over27 ;(D.f[dM00])[kw ]; + real mfbcb = (D.f[d0P0])[k];//[kn ];// + c2over27 ;(D.f[d0P0])[k ];//kn + real mfbab = (D.f[d0M0])[ks];//[ks ];// + c2over27 ;(D.f[d0M0])[ks ]; + real mfbbc = (D.f[d00P])[k];//[kt ];// + c2over27 ;(D.f[d00P])[k ];//kt + real mfbba = (D.f[d00M])[kb];//[kb ];// + c2over27 ;(D.f[d00M])[kb ]; + real mfccb = (D.f[dPP0])[k];//[kne ];// + c1over54 ;(D.f[dPP0])[k ];//kne + real mfaab = (D.f[dMM0])[ksw];//[ksw ];// + c1over54 ;(D.f[dMM0])[ksw]; + real mfcab = (D.f[dPM0])[ks];//[kse ];// + c1over54 ;(D.f[dPM0])[ks ];//kse + real mfacb = (D.f[dMP0])[kw];//[knw ];// + c1over54 ;(D.f[dMP0])[kw ];//knw + real mfcbc = (D.f[dP0P])[k];//[kte ];// + c1over54 ;(D.f[dP0P])[k ];//kte + real mfaba = (D.f[dM0M])[kbw];//[kbw ];// + c1over54 ;(D.f[dM0M])[kbw]; + real mfcba = (D.f[dP0M])[kb];//[kbe ];// + c1over54 ;(D.f[dP0M])[kb ];//kbe + real mfabc = (D.f[dM0P])[kw];//[ktw ];// + c1over54 ;(D.f[dM0P])[kw ];//ktw + real mfbcc = (D.f[d0PP])[k];//[ktn ];// + c1over54 ;(D.f[d0PP])[k ];//ktn + real mfbaa = (D.f[d0MM])[kbs];//[kbs ];// + c1over54 ;(D.f[d0MM])[kbs]; + real mfbca = (D.f[d0PM])[kb];//[kbn ];// + c1over54 ;(D.f[d0PM])[kb ];//kbn + real mfbac = (D.f[d0MP])[ks];//[kts ];// + c1over54 ;(D.f[d0MP])[ks ];//kts + real mfbbb = (D.f[d000])[k];//[kzero];// + c8over27 ;(D.f[d000])[k ];//kzero + real mfccc = (D.f[dPPP])[k];//[ktne ];// + c1over216;(D.f[dPPP])[k ];//ktne + real mfaac = (D.f[dMMP])[ksw];//[ktsw ];// + c1over216;(D.f[dMMP])[ksw];//ktsw + real mfcac = (D.f[dPMP])[ks];//[ktse ];// + c1over216;(D.f[dPMP])[ks ];//ktse + real mfacc = (D.f[dMPP])[kw];//[ktnw ];// + c1over216;(D.f[dMPP])[kw ];//ktnw + real mfcca = (D.f[dPPM])[kb];//[kbne ];// + c1over216;(D.f[dPPM])[kb ];//kbne + real mfaaa = (D.f[dMMM])[kbsw];//[kbsw ];// + c1over216;(D.f[dMMM])[kbsw]; + real mfcaa = (D.f[dPMM])[kbs];//[kbse ];// + c1over216;(D.f[dPMM])[kbs];//kbse + real mfaca = (D.f[dMPM])[kbw];//[kbnw ];// + c1over216;(D.f[dMPM])[kbw];//kbnw //////////////////////////////////////////////////////////////////////////////////// real drho = ((((mfccc + mfaaa) + (mfaca + mfcac)) + ((mfacc + mfcaa) + (mfaac + mfcca))) + (((mfbac + mfbca) + (mfbaa + mfbcc)) + ((mfabc + mfcba) + (mfaba + mfcbc)) + ((mfacb + mfcab) + (mfaab + mfccb))) + @@ -1682,33 +1682,33 @@ __global__ void Cumulant_One_preconditioned_chim_Comp_SP_27( ((mfabb + mfcbb) + (mfbab + mfbcb) + (mfbba + mfbbc))) + mfbbb; mfbbb += drho - drhoPost; //////////////////////////////////////////////////////////////////////////////////// - (D.f[DIR_P00])[k] = mfabb;//(D.f[ DIR_P00 ])[ke ] = mfabb;// - c2over27 ; (D.f[ DIR_P00 ])[k ] - (D.f[DIR_M00])[kw] = mfcbb;//(D.f[ DIR_M00 ])[kw ] = mfcbb;// - c2over27 ; (D.f[ DIR_M00 ])[kw ] - (D.f[DIR_0P0])[k] = mfbab;//(D.f[ DIR_0P0 ])[kn ] = mfbab;// - c2over27 ; (D.f[ DIR_0P0 ])[k ] - (D.f[DIR_0M0])[ks] = mfbcb;//(D.f[ DIR_0M0 ])[ks ] = mfbcb;// - c2over27 ; (D.f[ DIR_0M0 ])[ks ] - (D.f[DIR_00P])[k] = mfbba;//(D.f[ DIR_00P ])[kt ] = mfbba;// - c2over27 ; (D.f[ DIR_00P ])[k ] - (D.f[DIR_00M])[kb] = mfbbc;//(D.f[ DIR_00M ])[kb ] = mfbbc;// - c2over27 ; (D.f[ DIR_00M ])[kb ] - (D.f[DIR_PP0])[k] = mfaab;//(D.f[ DIR_PP0 ])[kne ] = mfaab;// - c1over54 ; (D.f[ DIR_PP0 ])[k ] - (D.f[DIR_MM0])[ksw] = mfccb;//(D.f[ DIR_MM0 ])[ksw ] = mfccb;// - c1over54 ; (D.f[ DIR_MM0 ])[ksw ] - (D.f[DIR_PM0])[ks] = mfacb;//(D.f[ DIR_PM0 ])[kse ] = mfacb;// - c1over54 ; (D.f[ DIR_PM0 ])[ks ] - (D.f[DIR_MP0])[kw] = mfcab;//(D.f[ DIR_MP0 ])[knw ] = mfcab;// - c1over54 ; (D.f[ DIR_MP0 ])[kw ] - (D.f[DIR_P0P])[k] = mfaba;//(D.f[ DIR_P0P ])[kte ] = mfaba;// - c1over54 ; (D.f[ DIR_P0P ])[k ] - (D.f[DIR_M0M])[kbw] = mfcbc;//(D.f[ DIR_M0M ])[kbw ] = mfcbc;// - c1over54 ; (D.f[ DIR_M0M ])[kbw ] - (D.f[DIR_P0M])[kb] = mfabc;//(D.f[ DIR_P0M ])[kbe ] = mfabc;// - c1over54 ; (D.f[ DIR_P0M ])[kb ] - (D.f[DIR_M0P])[kw] = mfcba;//(D.f[ DIR_M0P ])[ktw ] = mfcba;// - c1over54 ; (D.f[ DIR_M0P ])[kw ] - (D.f[DIR_0PP])[k] = mfbaa;//(D.f[ DIR_0PP ])[ktn ] = mfbaa;// - c1over54 ; (D.f[ DIR_0PP ])[k ] - (D.f[DIR_0MM])[kbs] = mfbcc;//(D.f[ DIR_0MM ])[kbs ] = mfbcc;// - c1over54 ; (D.f[ DIR_0MM ])[kbs ] - (D.f[DIR_0PM])[kb] = mfbac;//(D.f[ DIR_0PM ])[kbn ] = mfbac;// - c1over54 ; (D.f[ DIR_0PM ])[kb ] - (D.f[DIR_0MP])[ks] = mfbca;//(D.f[ DIR_0MP ])[kts ] = mfbca;// - c1over54 ; (D.f[ DIR_0MP ])[ks ] - (D.f[DIR_000])[k] = mfbbb;//(D.f[ DIR_000])[kzero] = mfbbb;// - c8over27 ; (D.f[ DIR_000])[k ] - (D.f[DIR_PPP])[k] = mfaaa;//(D.f[ DIR_PPP ])[ktne ] = mfaaa;// - c1over216; (D.f[ DIR_PPP ])[k ] - (D.f[DIR_PMP])[ks] = mfaca;//(D.f[ DIR_PMP ])[ktse ] = mfaca;// - c1over216; (D.f[ DIR_PMP ])[ks ] - (D.f[DIR_PPM])[kb] = mfaac;//(D.f[ DIR_PPM ])[kbne ] = mfaac;// - c1over216; (D.f[ DIR_PPM ])[kb ] - (D.f[DIR_PMM])[kbs] = mfacc;//(D.f[ DIR_PMM ])[kbse ] = mfacc;// - c1over216; (D.f[ DIR_PMM ])[kbs ] - (D.f[DIR_MPP])[kw] = mfcaa;//(D.f[ DIR_MPP ])[ktnw ] = mfcaa;// - c1over216; (D.f[ DIR_MPP ])[kw ] - (D.f[DIR_MMP])[ksw] = mfcca;//(D.f[ DIR_MMP ])[ktsw ] = mfcca;// - c1over216; (D.f[ DIR_MMP ])[ksw ] - (D.f[DIR_MPM])[kbw] = mfcac;//(D.f[ DIR_MPM ])[kbnw ] = mfcac;// - c1over216; (D.f[ DIR_MPM ])[kbw ] - (D.f[DIR_MMM])[kbsw] = mfccc;//(D.f[ DIR_MMM ])[kbsw ] = mfccc;// - c1over216; (D.f[ DIR_MMM ])[kbsw] + (D.f[dP00])[k] = mfabb;//(D.f[ dP00 ])[ke ] = mfabb;// - c2over27 ; (D.f[ dP00 ])[k ] + (D.f[dM00])[kw] = mfcbb;//(D.f[ dM00 ])[kw ] = mfcbb;// - c2over27 ; (D.f[ dM00 ])[kw ] + (D.f[d0P0])[k] = mfbab;//(D.f[ d0P0 ])[kn ] = mfbab;// - c2over27 ; (D.f[ d0P0 ])[k ] + (D.f[d0M0])[ks] = mfbcb;//(D.f[ d0M0 ])[ks ] = mfbcb;// - c2over27 ; (D.f[ d0M0 ])[ks ] + (D.f[d00P])[k] = mfbba;//(D.f[ d00P ])[kt ] = mfbba;// - c2over27 ; (D.f[ d00P ])[k ] + (D.f[d00M])[kb] = mfbbc;//(D.f[ d00M ])[kb ] = mfbbc;// - c2over27 ; (D.f[ d00M ])[kb ] + (D.f[dPP0])[k] = mfaab;//(D.f[ dPP0 ])[kne ] = mfaab;// - c1over54 ; (D.f[ dPP0 ])[k ] + (D.f[dMM0])[ksw] = mfccb;//(D.f[ dMM0 ])[ksw ] = mfccb;// - c1over54 ; (D.f[ dMM0 ])[ksw ] + (D.f[dPM0])[ks] = mfacb;//(D.f[ dPM0 ])[kse ] = mfacb;// - c1over54 ; (D.f[ dPM0 ])[ks ] + (D.f[dMP0])[kw] = mfcab;//(D.f[ dMP0 ])[knw ] = mfcab;// - c1over54 ; (D.f[ dMP0 ])[kw ] + (D.f[dP0P])[k] = mfaba;//(D.f[ dP0P ])[kte ] = mfaba;// - c1over54 ; (D.f[ dP0P ])[k ] + (D.f[dM0M])[kbw] = mfcbc;//(D.f[ dM0M ])[kbw ] = mfcbc;// - c1over54 ; (D.f[ dM0M ])[kbw ] + (D.f[dP0M])[kb] = mfabc;//(D.f[ dP0M ])[kbe ] = mfabc;// - c1over54 ; (D.f[ dP0M ])[kb ] + (D.f[dM0P])[kw] = mfcba;//(D.f[ dM0P ])[ktw ] = mfcba;// - c1over54 ; (D.f[ dM0P ])[kw ] + (D.f[d0PP])[k] = mfbaa;//(D.f[ d0PP ])[ktn ] = mfbaa;// - c1over54 ; (D.f[ d0PP ])[k ] + (D.f[d0MM])[kbs] = mfbcc;//(D.f[ d0MM ])[kbs ] = mfbcc;// - c1over54 ; (D.f[ d0MM ])[kbs ] + (D.f[d0PM])[kb] = mfbac;//(D.f[ d0PM ])[kbn ] = mfbac;// - c1over54 ; (D.f[ d0PM ])[kb ] + (D.f[d0MP])[ks] = mfbca;//(D.f[ d0MP ])[kts ] = mfbca;// - c1over54 ; (D.f[ d0MP ])[ks ] + (D.f[d000])[k] = mfbbb;//(D.f[ d000])[kzero] = mfbbb;// - c8over27 ; (D.f[ d000])[k ] + (D.f[dPPP])[k] = mfaaa;//(D.f[ dPPP ])[ktne ] = mfaaa;// - c1over216; (D.f[ dPPP ])[k ] + (D.f[dPMP])[ks] = mfaca;//(D.f[ dPMP ])[ktse ] = mfaca;// - c1over216; (D.f[ dPMP ])[ks ] + (D.f[dPPM])[kb] = mfaac;//(D.f[ dPPM ])[kbne ] = mfaac;// - c1over216; (D.f[ dPPM ])[kb ] + (D.f[dPMM])[kbs] = mfacc;//(D.f[ dPMM ])[kbse ] = mfacc;// - c1over216; (D.f[ dPMM ])[kbs ] + (D.f[dMPP])[kw] = mfcaa;//(D.f[ dMPP ])[ktnw ] = mfcaa;// - c1over216; (D.f[ dMPP ])[kw ] + (D.f[dMMP])[ksw] = mfcca;//(D.f[ dMMP ])[ktsw ] = mfcca;// - c1over216; (D.f[ dMMP ])[ksw ] + (D.f[dMPM])[kbw] = mfcac;//(D.f[ dMPM ])[kbnw ] = mfcac;// - c1over216; (D.f[ dMPM ])[kbw ] + (D.f[dMMM])[kbsw] = mfccc;//(D.f[ dMMM ])[kbsw ] = mfccc;// - c1over216; (D.f[ dMMM ])[kbsw] //////////////////////////////////////////////////////////////////////////////////// } } @@ -1789,63 +1789,63 @@ __global__ void Cumulant_One_chim_Comp_SP_27( Distributions27 D; if (EvenOrOdd == true) { - D.f[DIR_P00] = &DDStart[DIR_P00 * numberOfLBnodes]; - D.f[DIR_M00] = &DDStart[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0P0] = &DDStart[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0M0] = &DDStart[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00P] = &DDStart[DIR_00P * numberOfLBnodes]; - D.f[DIR_00M] = &DDStart[DIR_00M * numberOfLBnodes]; - D.f[DIR_PP0] = &DDStart[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_MM0] = &DDStart[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DDStart[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DDStart[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_P0P] = &DDStart[DIR_P0P * numberOfLBnodes]; - D.f[DIR_M0M] = &DDStart[DIR_M0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DDStart[DIR_P0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DDStart[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0PP] = &DDStart[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0MM] = &DDStart[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0PM] = &DDStart[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0MP] = &DDStart[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DDStart[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DDStart[DIR_PPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DDStart[DIR_MMP * numberOfLBnodes]; - D.f[DIR_PMP] = &DDStart[DIR_PMP * numberOfLBnodes]; - D.f[DIR_MPP] = &DDStart[DIR_MPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DDStart[DIR_PPM * numberOfLBnodes]; - D.f[DIR_MMM] = &DDStart[DIR_MMM * numberOfLBnodes]; - D.f[DIR_PMM] = &DDStart[DIR_PMM * numberOfLBnodes]; - D.f[DIR_MPM] = &DDStart[DIR_MPM * numberOfLBnodes]; + D.f[dP00] = &DDStart[dP00 * numberOfLBnodes]; + D.f[dM00] = &DDStart[dM00 * numberOfLBnodes]; + D.f[d0P0] = &DDStart[d0P0 * numberOfLBnodes]; + D.f[d0M0] = &DDStart[d0M0 * numberOfLBnodes]; + D.f[d00P] = &DDStart[d00P * numberOfLBnodes]; + D.f[d00M] = &DDStart[d00M * numberOfLBnodes]; + D.f[dPP0] = &DDStart[dPP0 * numberOfLBnodes]; + D.f[dMM0] = &DDStart[dMM0 * numberOfLBnodes]; + D.f[dPM0] = &DDStart[dPM0 * numberOfLBnodes]; + D.f[dMP0] = &DDStart[dMP0 * numberOfLBnodes]; + D.f[dP0P] = &DDStart[dP0P * numberOfLBnodes]; + D.f[dM0M] = &DDStart[dM0M * numberOfLBnodes]; + D.f[dP0M] = &DDStart[dP0M * numberOfLBnodes]; + D.f[dM0P] = &DDStart[dM0P * numberOfLBnodes]; + D.f[d0PP] = &DDStart[d0PP * numberOfLBnodes]; + D.f[d0MM] = &DDStart[d0MM * numberOfLBnodes]; + D.f[d0PM] = &DDStart[d0PM * numberOfLBnodes]; + D.f[d0MP] = &DDStart[d0MP * numberOfLBnodes]; + D.f[d000] = &DDStart[d000 * numberOfLBnodes]; + D.f[dPPP] = &DDStart[dPPP * numberOfLBnodes]; + D.f[dMMP] = &DDStart[dMMP * numberOfLBnodes]; + D.f[dPMP] = &DDStart[dPMP * numberOfLBnodes]; + D.f[dMPP] = &DDStart[dMPP * numberOfLBnodes]; + D.f[dPPM] = &DDStart[dPPM * numberOfLBnodes]; + D.f[dMMM] = &DDStart[dMMM * numberOfLBnodes]; + D.f[dPMM] = &DDStart[dPMM * numberOfLBnodes]; + D.f[dMPM] = &DDStart[dMPM * numberOfLBnodes]; } else { - D.f[DIR_M00] = &DDStart[DIR_P00 * numberOfLBnodes]; - D.f[DIR_P00] = &DDStart[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0M0] = &DDStart[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0P0] = &DDStart[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00M] = &DDStart[DIR_00P * numberOfLBnodes]; - D.f[DIR_00P] = &DDStart[DIR_00M * numberOfLBnodes]; - D.f[DIR_MM0] = &DDStart[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_PP0] = &DDStart[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DDStart[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DDStart[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_M0M] = &DDStart[DIR_P0P * numberOfLBnodes]; - D.f[DIR_P0P] = &DDStart[DIR_M0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DDStart[DIR_P0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DDStart[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0MM] = &DDStart[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0PP] = &DDStart[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0MP] = &DDStart[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0PM] = &DDStart[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DDStart[DIR_000 * numberOfLBnodes]; - D.f[DIR_MMM] = &DDStart[DIR_PPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DDStart[DIR_MMP * numberOfLBnodes]; - D.f[DIR_MPM] = &DDStart[DIR_PMP * numberOfLBnodes]; - D.f[DIR_PMM] = &DDStart[DIR_MPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DDStart[DIR_PPM * numberOfLBnodes]; - D.f[DIR_PPP] = &DDStart[DIR_MMM * numberOfLBnodes]; - D.f[DIR_MPP] = &DDStart[DIR_PMM * numberOfLBnodes]; - D.f[DIR_PMP] = &DDStart[DIR_MPM * numberOfLBnodes]; + D.f[dM00] = &DDStart[dP00 * numberOfLBnodes]; + D.f[dP00] = &DDStart[dM00 * numberOfLBnodes]; + D.f[d0M0] = &DDStart[d0P0 * numberOfLBnodes]; + D.f[d0P0] = &DDStart[d0M0 * numberOfLBnodes]; + D.f[d00M] = &DDStart[d00P * numberOfLBnodes]; + D.f[d00P] = &DDStart[d00M * numberOfLBnodes]; + D.f[dMM0] = &DDStart[dPP0 * numberOfLBnodes]; + D.f[dPP0] = &DDStart[dMM0 * numberOfLBnodes]; + D.f[dMP0] = &DDStart[dPM0 * numberOfLBnodes]; + D.f[dPM0] = &DDStart[dMP0 * numberOfLBnodes]; + D.f[dM0M] = &DDStart[dP0P * numberOfLBnodes]; + D.f[dP0P] = &DDStart[dM0M * numberOfLBnodes]; + D.f[dM0P] = &DDStart[dP0M * numberOfLBnodes]; + D.f[dP0M] = &DDStart[dM0P * numberOfLBnodes]; + D.f[d0MM] = &DDStart[d0PP * numberOfLBnodes]; + D.f[d0PP] = &DDStart[d0MM * numberOfLBnodes]; + D.f[d0MP] = &DDStart[d0PM * numberOfLBnodes]; + D.f[d0PM] = &DDStart[d0MP * numberOfLBnodes]; + D.f[d000] = &DDStart[d000 * numberOfLBnodes]; + D.f[dMMM] = &DDStart[dPPP * numberOfLBnodes]; + D.f[dPPM] = &DDStart[dMMP * numberOfLBnodes]; + D.f[dMPM] = &DDStart[dPMP * numberOfLBnodes]; + D.f[dPMM] = &DDStart[dMPP * numberOfLBnodes]; + D.f[dMMP] = &DDStart[dPPM * numberOfLBnodes]; + D.f[dPPP] = &DDStart[dMMM * numberOfLBnodes]; + D.f[dMPP] = &DDStart[dPMM * numberOfLBnodes]; + D.f[dPMP] = &DDStart[dMPM * numberOfLBnodes]; } //////////////////////////////////////////////////////////////////////////////// //index @@ -1857,33 +1857,33 @@ __global__ void Cumulant_One_chim_Comp_SP_27( unsigned int kbs = neighborZ[ks]; unsigned int kbsw = neighborZ[ksw]; //////////////////////////////////////////////////////////////////////////////////// - real mfcbb = (D.f[DIR_P00])[k ]; - real mfabb = (D.f[DIR_M00])[kw ]; - real mfbcb = (D.f[DIR_0P0])[k ]; - real mfbab = (D.f[DIR_0M0])[ks ]; - real mfbbc = (D.f[DIR_00P])[k ]; - real mfbba = (D.f[DIR_00M])[kb ]; - real mfccb = (D.f[DIR_PP0])[k ]; - real mfaab = (D.f[DIR_MM0])[ksw ]; - real mfcab = (D.f[DIR_PM0])[ks ]; - real mfacb = (D.f[DIR_MP0])[kw ]; - real mfcbc = (D.f[DIR_P0P])[k ]; - real mfaba = (D.f[DIR_M0M])[kbw ]; - real mfcba = (D.f[DIR_P0M])[kb ]; - real mfabc = (D.f[DIR_M0P])[kw ]; - real mfbcc = (D.f[DIR_0PP])[k ]; - real mfbaa = (D.f[DIR_0MM])[kbs ]; - real mfbca = (D.f[DIR_0PM])[kb ]; - real mfbac = (D.f[DIR_0MP])[ks ]; - real mfbbb = (D.f[DIR_000])[k ]; - real mfccc = (D.f[DIR_PPP])[k ]; - real mfaac = (D.f[DIR_MMP])[ksw ]; - real mfcac = (D.f[DIR_PMP])[ks ]; - real mfacc = (D.f[DIR_MPP])[kw ]; - real mfcca = (D.f[DIR_PPM])[kb ]; - real mfaaa = (D.f[DIR_MMM])[kbsw]; - real mfcaa = (D.f[DIR_PMM])[kbs ]; - real mfaca = (D.f[DIR_MPM])[kbw ]; + real mfcbb = (D.f[dP00])[k ]; + real mfabb = (D.f[dM00])[kw ]; + real mfbcb = (D.f[d0P0])[k ]; + real mfbab = (D.f[d0M0])[ks ]; + real mfbbc = (D.f[d00P])[k ]; + real mfbba = (D.f[d00M])[kb ]; + real mfccb = (D.f[dPP0])[k ]; + real mfaab = (D.f[dMM0])[ksw ]; + real mfcab = (D.f[dPM0])[ks ]; + real mfacb = (D.f[dMP0])[kw ]; + real mfcbc = (D.f[dP0P])[k ]; + real mfaba = (D.f[dM0M])[kbw ]; + real mfcba = (D.f[dP0M])[kb ]; + real mfabc = (D.f[dM0P])[kw ]; + real mfbcc = (D.f[d0PP])[k ]; + real mfbaa = (D.f[d0MM])[kbs ]; + real mfbca = (D.f[d0PM])[kb ]; + real mfbac = (D.f[d0MP])[ks ]; + real mfbbb = (D.f[d000])[k ]; + real mfccc = (D.f[dPPP])[k ]; + real mfaac = (D.f[dMMP])[ksw ]; + real mfcac = (D.f[dPMP])[ks ]; + real mfacc = (D.f[dMPP])[kw ]; + real mfcca = (D.f[dPPM])[kb ]; + real mfaaa = (D.f[dMMM])[kbsw]; + real mfcaa = (D.f[dPMM])[kbs ]; + real mfaca = (D.f[dMPM])[kbw ]; //////////////////////////////////////////////////////////////////////////////////// real drho = ((((mfccc + mfaaa) + (mfaca + mfcac)) + ((mfacc + mfcaa) + (mfaac + mfcca))) + (((mfbac + mfbca) + (mfbaa + mfbcc)) + ((mfabc + mfcba) + (mfaba + mfcbc)) + ((mfacb + mfcab) + (mfaab + mfccb))) + @@ -2204,33 +2204,33 @@ __global__ void Cumulant_One_chim_Comp_SP_27( ((mfabb + mfcbb) + (mfbab + mfbcb) + (mfbba + mfbbc))) + mfbbb; mfbbb += drho - drhoPost; //////////////////////////////////////////////////////////////////////////////////// - (D.f[DIR_P00])[k ] = mfabb; - (D.f[DIR_M00])[kw ] = mfcbb; - (D.f[DIR_0P0])[k ] = mfbab; - (D.f[DIR_0M0])[ks ] = mfbcb; - (D.f[DIR_00P])[k ] = mfbba; - (D.f[DIR_00M])[kb ] = mfbbc; - (D.f[DIR_PP0])[k ] = mfaab; - (D.f[DIR_MM0])[ksw ] = mfccb; - (D.f[DIR_PM0])[ks ] = mfacb; - (D.f[DIR_MP0])[kw ] = mfcab; - (D.f[DIR_P0P])[k ] = mfaba; - (D.f[DIR_M0M])[kbw ] = mfcbc; - (D.f[DIR_P0M])[kb ] = mfabc; - (D.f[DIR_M0P])[kw ] = mfcba; - (D.f[DIR_0PP])[k ] = mfbaa; - (D.f[DIR_0MM])[kbs ] = mfbcc; - (D.f[DIR_0PM])[kb ] = mfbac; - (D.f[DIR_0MP])[ks ] = mfbca; - (D.f[DIR_000])[k ] = mfbbb; - (D.f[DIR_PPP])[k ] = mfaaa; - (D.f[DIR_PMP])[ks ] = mfaca; - (D.f[DIR_PPM])[kb ] = mfaac; - (D.f[DIR_PMM])[kbs ] = mfacc; - (D.f[DIR_MPP])[kw ] = mfcaa; - (D.f[DIR_MMP])[ksw ] = mfcca; - (D.f[DIR_MPM])[kbw ] = mfcac; - (D.f[DIR_MMM])[kbsw] = mfccc; + (D.f[dP00])[k ] = mfabb; + (D.f[dM00])[kw ] = mfcbb; + (D.f[d0P0])[k ] = mfbab; + (D.f[d0M0])[ks ] = mfbcb; + (D.f[d00P])[k ] = mfbba; + (D.f[d00M])[kb ] = mfbbc; + (D.f[dPP0])[k ] = mfaab; + (D.f[dMM0])[ksw ] = mfccb; + (D.f[dPM0])[ks ] = mfacb; + (D.f[dMP0])[kw ] = mfcab; + (D.f[dP0P])[k ] = mfaba; + (D.f[dM0M])[kbw ] = mfcbc; + (D.f[dP0M])[kb ] = mfabc; + (D.f[dM0P])[kw ] = mfcba; + (D.f[d0PP])[k ] = mfbaa; + (D.f[d0MM])[kbs ] = mfbcc; + (D.f[d0PM])[kb ] = mfbac; + (D.f[d0MP])[ks ] = mfbca; + (D.f[d000])[k ] = mfbbb; + (D.f[dPPP])[k ] = mfaaa; + (D.f[dPMP])[ks ] = mfaca; + (D.f[dPPM])[kb ] = mfaac; + (D.f[dPMM])[kbs ] = mfacc; + (D.f[dMPP])[kw ] = mfcaa; + (D.f[dMMP])[ksw ] = mfcca; + (D.f[dMPM])[kbw ] = mfcac; + (D.f[dMMM])[kbsw] = mfccc; } } } diff --git a/src/gpu/VirtualFluids_GPU/GPU/Cumulant_F3_27.cu b/src/gpu/core/GPU/Cumulant_F3_27.cu similarity index 85% rename from src/gpu/VirtualFluids_GPU/GPU/Cumulant_F3_27.cu rename to src/gpu/core/GPU/Cumulant_F3_27.cu index 9e0275e7be38b8b56cf71cfa0b8299dc1b49106c..c76103aeb4249fcb449ceb25d6cd6b2156170fe9 100644 --- a/src/gpu/VirtualFluids_GPU/GPU/Cumulant_F3_27.cu +++ b/src/gpu/core/GPU/Cumulant_F3_27.cu @@ -54,83 +54,83 @@ __global__ void LB_PostProcessor_F3_2018_Fehlberg(real omega, Distributions27 D; if (EvenOrOdd == true) { - D.f[DIR_P00] = &DDStart[DIR_P00 * numberOfLBnodes]; - D.f[DIR_M00] = &DDStart[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0P0] = &DDStart[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0M0] = &DDStart[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00P] = &DDStart[DIR_00P * numberOfLBnodes]; - D.f[DIR_00M] = &DDStart[DIR_00M * numberOfLBnodes]; - D.f[DIR_PP0] = &DDStart[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_MM0] = &DDStart[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DDStart[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DDStart[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_P0P] = &DDStart[DIR_P0P * numberOfLBnodes]; - D.f[DIR_M0M] = &DDStart[DIR_M0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DDStart[DIR_P0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DDStart[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0PP] = &DDStart[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0MM] = &DDStart[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0PM] = &DDStart[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0MP] = &DDStart[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DDStart[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DDStart[DIR_PPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DDStart[DIR_MMP * numberOfLBnodes]; - D.f[DIR_PMP] = &DDStart[DIR_PMP * numberOfLBnodes]; - D.f[DIR_MPP] = &DDStart[DIR_MPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DDStart[DIR_PPM * numberOfLBnodes]; - D.f[DIR_MMM] = &DDStart[DIR_MMM * numberOfLBnodes]; - D.f[DIR_PMM] = &DDStart[DIR_PMM * numberOfLBnodes]; - D.f[DIR_MPM] = &DDStart[DIR_MPM * numberOfLBnodes]; + D.f[dP00] = &DDStart[dP00 * numberOfLBnodes]; + D.f[dM00] = &DDStart[dM00 * numberOfLBnodes]; + D.f[d0P0] = &DDStart[d0P0 * numberOfLBnodes]; + D.f[d0M0] = &DDStart[d0M0 * numberOfLBnodes]; + D.f[d00P] = &DDStart[d00P * numberOfLBnodes]; + D.f[d00M] = &DDStart[d00M * numberOfLBnodes]; + D.f[dPP0] = &DDStart[dPP0 * numberOfLBnodes]; + D.f[dMM0] = &DDStart[dMM0 * numberOfLBnodes]; + D.f[dPM0] = &DDStart[dPM0 * numberOfLBnodes]; + D.f[dMP0] = &DDStart[dMP0 * numberOfLBnodes]; + D.f[dP0P] = &DDStart[dP0P * numberOfLBnodes]; + D.f[dM0M] = &DDStart[dM0M * numberOfLBnodes]; + D.f[dP0M] = &DDStart[dP0M * numberOfLBnodes]; + D.f[dM0P] = &DDStart[dM0P * numberOfLBnodes]; + D.f[d0PP] = &DDStart[d0PP * numberOfLBnodes]; + D.f[d0MM] = &DDStart[d0MM * numberOfLBnodes]; + D.f[d0PM] = &DDStart[d0PM * numberOfLBnodes]; + D.f[d0MP] = &DDStart[d0MP * numberOfLBnodes]; + D.f[d000] = &DDStart[d000 * numberOfLBnodes]; + D.f[dPPP] = &DDStart[dPPP * numberOfLBnodes]; + D.f[dMMP] = &DDStart[dMMP * numberOfLBnodes]; + D.f[dPMP] = &DDStart[dPMP * numberOfLBnodes]; + D.f[dMPP] = &DDStart[dMPP * numberOfLBnodes]; + D.f[dPPM] = &DDStart[dPPM * numberOfLBnodes]; + D.f[dMMM] = &DDStart[dMMM * numberOfLBnodes]; + D.f[dPMM] = &DDStart[dPMM * numberOfLBnodes]; + D.f[dMPM] = &DDStart[dMPM * numberOfLBnodes]; } else { - D.f[DIR_M00] = &DDStart[DIR_P00 * numberOfLBnodes]; - D.f[DIR_P00] = &DDStart[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0M0] = &DDStart[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0P0] = &DDStart[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00M] = &DDStart[DIR_00P * numberOfLBnodes]; - D.f[DIR_00P] = &DDStart[DIR_00M * numberOfLBnodes]; - D.f[DIR_MM0] = &DDStart[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_PP0] = &DDStart[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DDStart[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DDStart[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_M0M] = &DDStart[DIR_P0P * numberOfLBnodes]; - D.f[DIR_P0P] = &DDStart[DIR_M0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DDStart[DIR_P0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DDStart[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0MM] = &DDStart[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0PP] = &DDStart[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0MP] = &DDStart[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0PM] = &DDStart[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DDStart[DIR_000 * numberOfLBnodes]; - D.f[DIR_MMM] = &DDStart[DIR_PPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DDStart[DIR_MMP * numberOfLBnodes]; - D.f[DIR_MPM] = &DDStart[DIR_PMP * numberOfLBnodes]; - D.f[DIR_PMM] = &DDStart[DIR_MPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DDStart[DIR_PPM * numberOfLBnodes]; - D.f[DIR_PPP] = &DDStart[DIR_MMM * numberOfLBnodes]; - D.f[DIR_MPP] = &DDStart[DIR_PMM * numberOfLBnodes]; - D.f[DIR_PMP] = &DDStart[DIR_MPM * numberOfLBnodes]; + D.f[dM00] = &DDStart[dP00 * numberOfLBnodes]; + D.f[dP00] = &DDStart[dM00 * numberOfLBnodes]; + D.f[d0M0] = &DDStart[d0P0 * numberOfLBnodes]; + D.f[d0P0] = &DDStart[d0M0 * numberOfLBnodes]; + D.f[d00M] = &DDStart[d00P * numberOfLBnodes]; + D.f[d00P] = &DDStart[d00M * numberOfLBnodes]; + D.f[dMM0] = &DDStart[dPP0 * numberOfLBnodes]; + D.f[dPP0] = &DDStart[dMM0 * numberOfLBnodes]; + D.f[dMP0] = &DDStart[dPM0 * numberOfLBnodes]; + D.f[dPM0] = &DDStart[dMP0 * numberOfLBnodes]; + D.f[dM0M] = &DDStart[dP0P * numberOfLBnodes]; + D.f[dP0P] = &DDStart[dM0M * numberOfLBnodes]; + D.f[dM0P] = &DDStart[dP0M * numberOfLBnodes]; + D.f[dP0M] = &DDStart[dM0P * numberOfLBnodes]; + D.f[d0MM] = &DDStart[d0PP * numberOfLBnodes]; + D.f[d0PP] = &DDStart[d0MM * numberOfLBnodes]; + D.f[d0MP] = &DDStart[d0PM * numberOfLBnodes]; + D.f[d0PM] = &DDStart[d0MP * numberOfLBnodes]; + D.f[d000] = &DDStart[d000 * numberOfLBnodes]; + D.f[dMMM] = &DDStart[dPPP * numberOfLBnodes]; + D.f[dPPM] = &DDStart[dMMP * numberOfLBnodes]; + D.f[dMPM] = &DDStart[dPMP * numberOfLBnodes]; + D.f[dPMM] = &DDStart[dMPP * numberOfLBnodes]; + D.f[dMMP] = &DDStart[dPPM * numberOfLBnodes]; + D.f[dPPP] = &DDStart[dMMM * numberOfLBnodes]; + D.f[dMPP] = &DDStart[dPMM * numberOfLBnodes]; + D.f[dPMP] = &DDStart[dMPM * numberOfLBnodes]; } Distributions6 G; if (EvenOrOdd == true) { - G.g[DIR_P00] = &G6[DIR_P00 * numberOfLBnodes]; - G.g[DIR_M00] = &G6[DIR_M00 * numberOfLBnodes]; - G.g[DIR_0P0] = &G6[DIR_0P0 * numberOfLBnodes]; - G.g[DIR_0M0] = &G6[DIR_0M0 * numberOfLBnodes]; - G.g[DIR_00P] = &G6[DIR_00P * numberOfLBnodes]; - G.g[DIR_00M] = &G6[DIR_00M * numberOfLBnodes]; + G.g[dP00] = &G6[dP00 * numberOfLBnodes]; + G.g[dM00] = &G6[dM00 * numberOfLBnodes]; + G.g[d0P0] = &G6[d0P0 * numberOfLBnodes]; + G.g[d0M0] = &G6[d0M0 * numberOfLBnodes]; + G.g[d00P] = &G6[d00P * numberOfLBnodes]; + G.g[d00M] = &G6[d00M * numberOfLBnodes]; } else { - G.g[DIR_M00] = &G6[DIR_P00 * numberOfLBnodes]; - G.g[DIR_P00] = &G6[DIR_M00 * numberOfLBnodes]; - G.g[DIR_0M0] = &G6[DIR_0P0 * numberOfLBnodes]; - G.g[DIR_0P0] = &G6[DIR_0M0 * numberOfLBnodes]; - G.g[DIR_00M] = &G6[DIR_00P * numberOfLBnodes]; - G.g[DIR_00P] = &G6[DIR_00M * numberOfLBnodes]; + G.g[dM00] = &G6[dP00 * numberOfLBnodes]; + G.g[dP00] = &G6[dM00 * numberOfLBnodes]; + G.g[d0M0] = &G6[d0P0 * numberOfLBnodes]; + G.g[d0P0] = &G6[d0M0 * numberOfLBnodes]; + G.g[d00M] = &G6[d00P * numberOfLBnodes]; + G.g[d00P] = &G6[d00M * numberOfLBnodes]; } //////////////////////////////////////////////////////////////////////////////// @@ -163,43 +163,43 @@ __global__ void LB_PostProcessor_F3_2018_Fehlberg(real omega, //unsigned int ktne = k; unsigned int kbsw = neighborZ[ksw]; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real mgcbb = (G.g[DIR_P00])[k]; - real mgabb = (G.g[DIR_M00])[kw]; - real mgbcb = (G.g[DIR_0P0])[k]; - real mgbab = (G.g[DIR_0M0])[ks]; - real mgbbc = (G.g[DIR_00P])[k]; - real mgbba = (G.g[DIR_00M])[kb]; + real mgcbb = (G.g[dP00])[k]; + real mgabb = (G.g[dM00])[kw]; + real mgbcb = (G.g[d0P0])[k]; + real mgbab = (G.g[d0M0])[ks]; + real mgbbc = (G.g[d00P])[k]; + real mgbba = (G.g[d00M])[kb]; real dxuxdxux = c1o2 * (-mgcbb + mgabb); real dyuydyuy = c1o2 * (-mgbcb + mgbab); real dzuzdzuz = c1o2 * (-mgbbc + mgbba); ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real mfcbb = (D.f[DIR_P00])[k]; - real mfabb = (D.f[DIR_M00])[kw]; - real mfbcb = (D.f[DIR_0P0])[k]; - real mfbab = (D.f[DIR_0M0])[ks]; - real mfbbc = (D.f[DIR_00P])[k]; - real mfbba = (D.f[DIR_00M])[kb]; - real mfccb = (D.f[DIR_PP0])[k]; - real mfaab = (D.f[DIR_MM0])[ksw]; - real mfcab = (D.f[DIR_PM0])[ks]; - real mfacb = (D.f[DIR_MP0])[kw]; - real mfcbc = (D.f[DIR_P0P])[k]; - real mfaba = (D.f[DIR_M0M])[kbw]; - real mfcba = (D.f[DIR_P0M])[kb]; - real mfabc = (D.f[DIR_M0P])[kw]; - real mfbcc = (D.f[DIR_0PP])[k]; - real mfbaa = (D.f[DIR_0MM])[kbs]; - real mfbca = (D.f[DIR_0PM])[kb]; - real mfbac = (D.f[DIR_0MP])[ks]; - real mfbbb = (D.f[DIR_000])[k]; - real mfccc = (D.f[DIR_PPP])[k]; - real mfaac = (D.f[DIR_MMP])[ksw]; - real mfcac = (D.f[DIR_PMP])[ks]; - real mfacc = (D.f[DIR_MPP])[kw]; - real mfcca = (D.f[DIR_PPM])[kb]; - real mfaaa = (D.f[DIR_MMM])[kbsw]; - real mfcaa = (D.f[DIR_PMM])[kbs]; - real mfaca = (D.f[DIR_MPM])[kbw]; + real mfcbb = (D.f[dP00])[k]; + real mfabb = (D.f[dM00])[kw]; + real mfbcb = (D.f[d0P0])[k]; + real mfbab = (D.f[d0M0])[ks]; + real mfbbc = (D.f[d00P])[k]; + real mfbba = (D.f[d00M])[kb]; + real mfccb = (D.f[dPP0])[k]; + real mfaab = (D.f[dMM0])[ksw]; + real mfcab = (D.f[dPM0])[ks]; + real mfacb = (D.f[dMP0])[kw]; + real mfcbc = (D.f[dP0P])[k]; + real mfaba = (D.f[dM0M])[kbw]; + real mfcba = (D.f[dP0M])[kb]; + real mfabc = (D.f[dM0P])[kw]; + real mfbcc = (D.f[d0PP])[k]; + real mfbaa = (D.f[d0MM])[kbs]; + real mfbca = (D.f[d0PM])[kb]; + real mfbac = (D.f[d0MP])[ks]; + real mfbbb = (D.f[d000])[k]; + real mfccc = (D.f[dPPP])[k]; + real mfaac = (D.f[dMMP])[ksw]; + real mfcac = (D.f[dPMP])[ks]; + real mfacc = (D.f[dMPP])[kw]; + real mfcca = (D.f[dPPM])[kb]; + real mfaaa = (D.f[dMMM])[kbsw]; + real mfcaa = (D.f[dPMM])[kbs]; + real mfaca = (D.f[dMPM])[kbw]; //////////////////////////////////////////////////////////////////////////////////// real drho = ((((mfccc + mfaaa) + (mfaca + mfcac)) + ((mfacc + mfcaa) + (mfaac + mfcca))) + (((mfbac + mfbca) + (mfbaa + mfbcc)) + ((mfabc + mfcba) + (mfaba + mfcbc)) + ((mfacb + mfcab) + (mfaab + mfccb))) + @@ -913,41 +913,41 @@ __global__ void LB_PostProcessor_F3_2018_Fehlberg(real omega, ////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////// - //(D.f[DIR_P00])[k] = mfabb; - //(D.f[DIR_M00])[kw] = mfcbb; - //(D.f[DIR_0P0])[k] = mfbab; - //(D.f[DIR_0M0])[ks] = mfbcb; - //(D.f[DIR_00P])[k] = mfbba; - //(D.f[DIR_00M])[kb] = mfbbc; - //(D.f[DIR_PP0])[k] = mfaab; - //(D.f[DIR_MM0])[ksw] = mfccb; - //(D.f[DIR_PM0])[ks] = mfacb; - //(D.f[DIR_MP0])[kw] = mfcab; - //(D.f[DIR_P0P])[k] = mfaba; - //(D.f[DIR_M0M])[kbw] = mfcbc; - //(D.f[DIR_P0M])[kb] = mfabc; - //(D.f[DIR_M0P])[kw] = mfcba; - //(D.f[DIR_0PP])[k] = mfbaa; - //(D.f[DIR_0MM])[kbs] = mfbcc; - //(D.f[DIR_0PM])[kb] = mfbac; - //(D.f[DIR_0MP])[ks] = mfbca; - //(D.f[DIR_000])[k] = mfbbb; - //(D.f[DIR_PPP])[k] = mfaaa; - //(D.f[DIR_PMP])[ks] = mfaca; - //(D.f[DIR_PPM])[kb] = mfaac; - //(D.f[DIR_PMM])[kbs] = mfacc; - //(D.f[DIR_MPP])[kw] = mfcaa; - //(D.f[DIR_MMP])[ksw] = mfcca; - //(D.f[DIR_MPM])[kbw] = mfcac; - //(D.f[DIR_MMM])[kbsw] = mfccc; + //(D.f[dP00])[k] = mfabb; + //(D.f[dM00])[kw] = mfcbb; + //(D.f[d0P0])[k] = mfbab; + //(D.f[d0M0])[ks] = mfbcb; + //(D.f[d00P])[k] = mfbba; + //(D.f[d00M])[kb] = mfbbc; + //(D.f[dPP0])[k] = mfaab; + //(D.f[dMM0])[ksw] = mfccb; + //(D.f[dPM0])[ks] = mfacb; + //(D.f[dMP0])[kw] = mfcab; + //(D.f[dP0P])[k] = mfaba; + //(D.f[dM0M])[kbw] = mfcbc; + //(D.f[dP0M])[kb] = mfabc; + //(D.f[dM0P])[kw] = mfcba; + //(D.f[d0PP])[k] = mfbaa; + //(D.f[d0MM])[kbs] = mfbcc; + //(D.f[d0PM])[kb] = mfbac; + //(D.f[d0MP])[ks] = mfbca; + //(D.f[d000])[k] = mfbbb; + //(D.f[dPPP])[k] = mfaaa; + //(D.f[dPMP])[ks] = mfaca; + //(D.f[dPPM])[kb] = mfaac; + //(D.f[dPMM])[kbs] = mfacc; + //(D.f[dMPP])[kw] = mfcaa; + //(D.f[dMMP])[ksw] = mfcca; + //(D.f[dMPM])[kbw] = mfcac; + //(D.f[dMMM])[kbsw] = mfccc; ////////////////////////////////////////////////////////////////////////////////////// - //(G.g[DIR_P00])[k] = mgabb; - //(G.g[DIR_M00])[kw] = mgcbb; - //(G.g[DIR_0P0])[k] = mgbab; - //(G.g[DIR_0M0])[ks] = mgbcb; - //(G.g[DIR_00P])[k] = mgbba; - //(G.g[DIR_00M])[kb] = mgbbc; + //(G.g[dP00])[k] = mgabb; + //(G.g[dM00])[kw] = mgcbb; + //(G.g[d0P0])[k] = mgbab; + //(G.g[d0M0])[ks] = mgbcb; + //(G.g[d00P])[k] = mgbba; + //(G.g[d00M])[kb] = mgbbc; } } } @@ -1026,83 +1026,83 @@ __global__ void LB_PostProcessor_F3_2018_Fehlberg(real omega, // Distributions27 D; // if (EvenOrOdd == true) // { -// D.f[DIR_P00] = &DDStart[DIR_P00 * size_Mat]; -// D.f[DIR_M00] = &DDStart[DIR_M00 * size_Mat]; -// D.f[DIR_0P0] = &DDStart[DIR_0P0 * size_Mat]; -// D.f[DIR_0M0] = &DDStart[DIR_0M0 * size_Mat]; -// D.f[DIR_00P] = &DDStart[DIR_00P * size_Mat]; -// D.f[DIR_00M] = &DDStart[DIR_00M * size_Mat]; -// D.f[DIR_PP0] = &DDStart[DIR_PP0 * size_Mat]; -// D.f[DIR_MM0] = &DDStart[DIR_MM0 * size_Mat]; -// D.f[DIR_PM0] = &DDStart[DIR_PM0 * size_Mat]; -// D.f[DIR_MP0] = &DDStart[DIR_MP0 * size_Mat]; -// D.f[DIR_P0P] = &DDStart[DIR_P0P * size_Mat]; -// D.f[DIR_M0M] = &DDStart[DIR_M0M * size_Mat]; -// D.f[DIR_P0M] = &DDStart[DIR_P0M * size_Mat]; -// D.f[DIR_M0P] = &DDStart[DIR_M0P * size_Mat]; -// D.f[DIR_0PP] = &DDStart[DIR_0PP * size_Mat]; -// D.f[DIR_0MM] = &DDStart[DIR_0MM * size_Mat]; -// D.f[DIR_0PM] = &DDStart[DIR_0PM * size_Mat]; -// D.f[DIR_0MP] = &DDStart[DIR_0MP * size_Mat]; -// D.f[DIR_000] = &DDStart[DIR_000 * size_Mat]; -// D.f[DIR_PPP] = &DDStart[DIR_PPP * size_Mat]; -// D.f[DIR_MMP] = &DDStart[DIR_MMP * size_Mat]; -// D.f[DIR_PMP] = &DDStart[DIR_PMP * size_Mat]; -// D.f[DIR_MPP] = &DDStart[DIR_MPP * size_Mat]; -// D.f[DIR_PPM] = &DDStart[DIR_PPM * size_Mat]; -// D.f[DIR_MMM] = &DDStart[DIR_MMM * size_Mat]; -// D.f[DIR_PMM] = &DDStart[DIR_PMM * size_Mat]; -// D.f[DIR_MPM] = &DDStart[DIR_MPM * size_Mat]; +// D.f[dP00] = &DDStart[dP00 * size_Mat]; +// D.f[dM00] = &DDStart[dM00 * size_Mat]; +// D.f[d0P0] = &DDStart[d0P0 * size_Mat]; +// D.f[d0M0] = &DDStart[d0M0 * size_Mat]; +// D.f[d00P] = &DDStart[d00P * size_Mat]; +// D.f[d00M] = &DDStart[d00M * size_Mat]; +// D.f[dPP0] = &DDStart[dPP0 * size_Mat]; +// D.f[dMM0] = &DDStart[dMM0 * size_Mat]; +// D.f[dPM0] = &DDStart[dPM0 * size_Mat]; +// D.f[dMP0] = &DDStart[dMP0 * size_Mat]; +// D.f[dP0P] = &DDStart[dP0P * size_Mat]; +// D.f[dM0M] = &DDStart[dM0M * size_Mat]; +// D.f[dP0M] = &DDStart[dP0M * size_Mat]; +// D.f[dM0P] = &DDStart[dM0P * size_Mat]; +// D.f[d0PP] = &DDStart[d0PP * size_Mat]; +// D.f[d0MM] = &DDStart[d0MM * size_Mat]; +// D.f[d0PM] = &DDStart[d0PM * size_Mat]; +// D.f[d0MP] = &DDStart[d0MP * size_Mat]; +// D.f[d000] = &DDStart[d000 * size_Mat]; +// D.f[dPPP] = &DDStart[dPPP * size_Mat]; +// D.f[dMMP] = &DDStart[dMMP * size_Mat]; +// D.f[dPMP] = &DDStart[dPMP * size_Mat]; +// D.f[dMPP] = &DDStart[dMPP * size_Mat]; +// D.f[dPPM] = &DDStart[dPPM * size_Mat]; +// D.f[dMMM] = &DDStart[dMMM * size_Mat]; +// D.f[dPMM] = &DDStart[dPMM * size_Mat]; +// D.f[dMPM] = &DDStart[dMPM * size_Mat]; // } // else // { -// D.f[DIR_M00] = &DDStart[DIR_P00 * size_Mat]; -// D.f[DIR_P00] = &DDStart[DIR_M00 * size_Mat]; -// D.f[DIR_0M0] = &DDStart[DIR_0P0 * size_Mat]; -// D.f[DIR_0P0] = &DDStart[DIR_0M0 * size_Mat]; -// D.f[DIR_00M] = &DDStart[DIR_00P * size_Mat]; -// D.f[DIR_00P] = &DDStart[DIR_00M * size_Mat]; -// D.f[DIR_MM0] = &DDStart[DIR_PP0 * size_Mat]; -// D.f[DIR_PP0] = &DDStart[DIR_MM0 * size_Mat]; -// D.f[DIR_MP0] = &DDStart[DIR_PM0 * size_Mat]; -// D.f[DIR_PM0] = &DDStart[DIR_MP0 * size_Mat]; -// D.f[DIR_M0M] = &DDStart[DIR_P0P * size_Mat]; -// D.f[DIR_P0P] = &DDStart[DIR_M0M * size_Mat]; -// D.f[DIR_M0P] = &DDStart[DIR_P0M * size_Mat]; -// D.f[DIR_P0M] = &DDStart[DIR_M0P * size_Mat]; -// D.f[DIR_0MM] = &DDStart[DIR_0PP * size_Mat]; -// D.f[DIR_0PP] = &DDStart[DIR_0MM * size_Mat]; -// D.f[DIR_0MP] = &DDStart[DIR_0PM * size_Mat]; -// D.f[DIR_0PM] = &DDStart[DIR_0MP * size_Mat]; -// D.f[DIR_000] = &DDStart[DIR_000 * size_Mat]; -// D.f[DIR_MMM] = &DDStart[DIR_PPP * size_Mat]; -// D.f[DIR_PPM] = &DDStart[DIR_MMP * size_Mat]; -// D.f[DIR_MPM] = &DDStart[DIR_PMP * size_Mat]; -// D.f[DIR_PMM] = &DDStart[DIR_MPP * size_Mat]; -// D.f[DIR_MMP] = &DDStart[DIR_PPM * size_Mat]; -// D.f[DIR_PPP] = &DDStart[DIR_MMM * size_Mat]; -// D.f[DIR_MPP] = &DDStart[DIR_PMM * size_Mat]; -// D.f[DIR_PMP] = &DDStart[DIR_MPM * size_Mat]; +// D.f[dM00] = &DDStart[dP00 * size_Mat]; +// D.f[dP00] = &DDStart[dM00 * size_Mat]; +// D.f[d0M0] = &DDStart[d0P0 * size_Mat]; +// D.f[d0P0] = &DDStart[d0M0 * size_Mat]; +// D.f[d00M] = &DDStart[d00P * size_Mat]; +// D.f[d00P] = &DDStart[d00M * size_Mat]; +// D.f[dMM0] = &DDStart[dPP0 * size_Mat]; +// D.f[dPP0] = &DDStart[dMM0 * size_Mat]; +// D.f[dMP0] = &DDStart[dPM0 * size_Mat]; +// D.f[dPM0] = &DDStart[dMP0 * size_Mat]; +// D.f[dM0M] = &DDStart[dP0P * size_Mat]; +// D.f[dP0P] = &DDStart[dM0M * size_Mat]; +// D.f[dM0P] = &DDStart[dP0M * size_Mat]; +// D.f[dP0M] = &DDStart[dM0P * size_Mat]; +// D.f[d0MM] = &DDStart[d0PP * size_Mat]; +// D.f[d0PP] = &DDStart[d0MM * size_Mat]; +// D.f[d0MP] = &DDStart[d0PM * size_Mat]; +// D.f[d0PM] = &DDStart[d0MP * size_Mat]; +// D.f[d000] = &DDStart[d000 * size_Mat]; +// D.f[dMMM] = &DDStart[dPPP * size_Mat]; +// D.f[dPPM] = &DDStart[dMMP * size_Mat]; +// D.f[dMPM] = &DDStart[dPMP * size_Mat]; +// D.f[dPMM] = &DDStart[dMPP * size_Mat]; +// D.f[dMMP] = &DDStart[dPPM * size_Mat]; +// D.f[dPPP] = &DDStart[dMMM * size_Mat]; +// D.f[dMPP] = &DDStart[dPMM * size_Mat]; +// D.f[dPMP] = &DDStart[dMPM * size_Mat]; // } // // Distributions6 G; // if (EvenOrOdd == true) // { -// G.g[DIR_P00] = &G6[DIR_P00 * size_Mat]; -// G.g[DIR_M00] = &G6[DIR_M00 * size_Mat]; -// G.g[DIR_0P0] = &G6[DIR_0P0 * size_Mat]; -// G.g[DIR_0M0] = &G6[DIR_0M0 * size_Mat]; -// G.g[DIR_00P] = &G6[DIR_00P * size_Mat]; -// G.g[DIR_00M] = &G6[DIR_00M * size_Mat]; +// G.g[dP00] = &G6[dP00 * size_Mat]; +// G.g[dM00] = &G6[dM00 * size_Mat]; +// G.g[d0P0] = &G6[d0P0 * size_Mat]; +// G.g[d0M0] = &G6[d0M0 * size_Mat]; +// G.g[d00P] = &G6[d00P * size_Mat]; +// G.g[d00M] = &G6[d00M * size_Mat]; // } // else // { -// G.g[DIR_M00] = &G6[DIR_P00 * size_Mat]; -// G.g[DIR_P00] = &G6[DIR_M00 * size_Mat]; -// G.g[DIR_0M0] = &G6[DIR_0P0 * size_Mat]; -// G.g[DIR_0P0] = &G6[DIR_0M0 * size_Mat]; -// G.g[DIR_00M] = &G6[DIR_00P * size_Mat]; -// G.g[DIR_00P] = &G6[DIR_00M * size_Mat]; +// G.g[dM00] = &G6[dP00 * size_Mat]; +// G.g[dP00] = &G6[dM00 * size_Mat]; +// G.g[d0M0] = &G6[d0P0 * size_Mat]; +// G.g[d0P0] = &G6[d0M0 * size_Mat]; +// G.g[d00M] = &G6[d00P * size_Mat]; +// G.g[d00P] = &G6[d00M * size_Mat]; // } // // //////////////////////////////////////////////////////////////////////////////// @@ -1135,43 +1135,43 @@ __global__ void LB_PostProcessor_F3_2018_Fehlberg(real omega, // //unsigned int ktne = k; // unsigned int kbsw = neighborZ[ksw]; // ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// real mgcbb = (G.g[DIR_P00])[k]; -// real mgabb = (G.g[DIR_M00])[kw]; -// real mgbcb = (G.g[DIR_0P0])[k]; -// real mgbab = (G.g[DIR_0M0])[ks]; -// real mgbbc = (G.g[DIR_00P])[k]; -// real mgbba = (G.g[DIR_00M])[kb]; +// real mgcbb = (G.g[dP00])[k]; +// real mgabb = (G.g[dM00])[kw]; +// real mgbcb = (G.g[d0P0])[k]; +// real mgbab = (G.g[d0M0])[ks]; +// real mgbbc = (G.g[d00P])[k]; +// real mgbba = (G.g[d00M])[kb]; // real dxuxdxux = c1o2 * (-mgcbb + mgabb); // real dyuydyuy = c1o2 * (-mgbcb + mgbab); // real dzuzdzuz = c1o2 * (-mgbbc + mgbba); // ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// real mfcbb = (D.f[DIR_P00])[k]; -// real mfabb = (D.f[DIR_M00])[kw]; -// real mfbcb = (D.f[DIR_0P0])[k]; -// real mfbab = (D.f[DIR_0M0])[ks]; -// real mfbbc = (D.f[DIR_00P])[k]; -// real mfbba = (D.f[DIR_00M])[kb]; -// real mfccb = (D.f[DIR_PP0])[k]; -// real mfaab = (D.f[DIR_MM0])[ksw]; -// real mfcab = (D.f[DIR_PM0])[ks]; -// real mfacb = (D.f[DIR_MP0])[kw]; -// real mfcbc = (D.f[DIR_P0P])[k]; -// real mfaba = (D.f[DIR_M0M])[kbw]; -// real mfcba = (D.f[DIR_P0M])[kb]; -// real mfabc = (D.f[DIR_M0P])[kw]; -// real mfbcc = (D.f[DIR_0PP])[k]; -// real mfbaa = (D.f[DIR_0MM])[kbs]; -// real mfbca = (D.f[DIR_0PM])[kb]; -// real mfbac = (D.f[DIR_0MP])[ks]; -// real mfbbb = (D.f[DIR_000])[k]; -// real mfccc = (D.f[DIR_PPP])[k]; -// real mfaac = (D.f[DIR_MMP])[ksw]; -// real mfcac = (D.f[DIR_PMP])[ks]; -// real mfacc = (D.f[DIR_MPP])[kw]; -// real mfcca = (D.f[DIR_PPM])[kb]; -// real mfaaa = (D.f[DIR_MMM])[kbsw]; -// real mfcaa = (D.f[DIR_PMM])[kbs]; -// real mfaca = (D.f[DIR_MPM])[kbw]; +// real mfcbb = (D.f[dP00])[k]; +// real mfabb = (D.f[dM00])[kw]; +// real mfbcb = (D.f[d0P0])[k]; +// real mfbab = (D.f[d0M0])[ks]; +// real mfbbc = (D.f[d00P])[k]; +// real mfbba = (D.f[d00M])[kb]; +// real mfccb = (D.f[dPP0])[k]; +// real mfaab = (D.f[dMM0])[ksw]; +// real mfcab = (D.f[dPM0])[ks]; +// real mfacb = (D.f[dMP0])[kw]; +// real mfcbc = (D.f[dP0P])[k]; +// real mfaba = (D.f[dM0M])[kbw]; +// real mfcba = (D.f[dP0M])[kb]; +// real mfabc = (D.f[dM0P])[kw]; +// real mfbcc = (D.f[d0PP])[k]; +// real mfbaa = (D.f[d0MM])[kbs]; +// real mfbca = (D.f[d0PM])[kb]; +// real mfbac = (D.f[d0MP])[ks]; +// real mfbbb = (D.f[d000])[k]; +// real mfccc = (D.f[dPPP])[k]; +// real mfaac = (D.f[dMMP])[ksw]; +// real mfcac = (D.f[dPMP])[ks]; +// real mfacc = (D.f[dMPP])[kw]; +// real mfcca = (D.f[dPPM])[kb]; +// real mfaaa = (D.f[dMMM])[kbsw]; +// real mfcaa = (D.f[dPMM])[kbs]; +// real mfaca = (D.f[dMPM])[kbw]; // //////////////////////////////////////////////////////////////////////////////////// // real drho = ((((mfccc + mfaaa) + (mfaca + mfcac)) + ((mfacc + mfcaa) + (mfaac + mfcca))) + // (((mfbac + mfbca) + (mfbaa + mfbcc)) + ((mfabc + mfcba) + (mfaba + mfcbc)) + ((mfacb + mfcab) + (mfaab + mfccb))) + @@ -1893,41 +1893,41 @@ __global__ void LB_PostProcessor_F3_2018_Fehlberg(real omega, // //////////////////////////////////////////////////////////////////////////////////// // // //////////////////////////////////////////////////////////////////////////////////// -// (D.f[DIR_P00])[k] = mfabb; -// (D.f[DIR_M00])[kw] = mfcbb; -// (D.f[DIR_0P0])[k] = mfbab; -// (D.f[DIR_0M0])[ks] = mfbcb; -// (D.f[DIR_00P])[k] = mfbba; -// (D.f[DIR_00M])[kb] = mfbbc; -// (D.f[DIR_PP0])[k] = mfaab; -// (D.f[DIR_MM0])[ksw] = mfccb; -// (D.f[DIR_PM0])[ks] = mfacb; -// (D.f[DIR_MP0])[kw] = mfcab; -// (D.f[DIR_P0P])[k] = mfaba; -// (D.f[DIR_M0M])[kbw] = mfcbc; -// (D.f[DIR_P0M])[kb] = mfabc; -// (D.f[DIR_M0P])[kw] = mfcba; -// (D.f[DIR_0PP])[k] = mfbaa; -// (D.f[DIR_0MM])[kbs] = mfbcc; -// (D.f[DIR_0PM])[kb] = mfbac; -// (D.f[DIR_0MP])[ks] = mfbca; -// (D.f[DIR_000])[k] = mfbbb; -// (D.f[DIR_PPP])[k] = mfaaa; -// (D.f[DIR_PMP])[ks] = mfaca; -// (D.f[DIR_PPM])[kb] = mfaac; -// (D.f[DIR_PMM])[kbs] = mfacc; -// (D.f[DIR_MPP])[kw] = mfcaa; -// (D.f[DIR_MMP])[ksw] = mfcca; -// (D.f[DIR_MPM])[kbw] = mfcac; -// (D.f[DIR_MMM])[kbsw] = mfccc; -// //////////////////////////////////////////////////////////////////////////////////// -// -// (G.g[DIR_P00])[k] = mgabb; -// (G.g[DIR_M00])[kw] = mgcbb; -// (G.g[DIR_0P0])[k] = mgbab; -// (G.g[DIR_0M0])[ks] = mgbcb; -// (G.g[DIR_00P])[k] = mgbba; -// (G.g[DIR_00M])[kb] = mgbbc; +// (D.f[dP00])[k] = mfabb; +// (D.f[dM00])[kw] = mfcbb; +// (D.f[d0P0])[k] = mfbab; +// (D.f[d0M0])[ks] = mfbcb; +// (D.f[d00P])[k] = mfbba; +// (D.f[d00M])[kb] = mfbbc; +// (D.f[dPP0])[k] = mfaab; +// (D.f[dMM0])[ksw] = mfccb; +// (D.f[dPM0])[ks] = mfacb; +// (D.f[dMP0])[kw] = mfcab; +// (D.f[dP0P])[k] = mfaba; +// (D.f[dM0M])[kbw] = mfcbc; +// (D.f[dP0M])[kb] = mfabc; +// (D.f[dM0P])[kw] = mfcba; +// (D.f[d0PP])[k] = mfbaa; +// (D.f[d0MM])[kbs] = mfbcc; +// (D.f[d0PM])[kb] = mfbac; +// (D.f[d0MP])[ks] = mfbca; +// (D.f[d000])[k] = mfbbb; +// (D.f[dPPP])[k] = mfaaa; +// (D.f[dPMP])[ks] = mfaca; +// (D.f[dPPM])[kb] = mfaac; +// (D.f[dPMM])[kbs] = mfacc; +// (D.f[dMPP])[kw] = mfcaa; +// (D.f[dMMP])[ksw] = mfcca; +// (D.f[dMPM])[kbw] = mfcac; +// (D.f[dMMM])[kbsw] = mfccc; +// //////////////////////////////////////////////////////////////////////////////////// +// +// (G.g[dP00])[k] = mgabb; +// (G.g[dM00])[kw] = mgcbb; +// (G.g[d0P0])[k] = mgbab; +// (G.g[d0M0])[ks] = mgbcb; +// (G.g[d00P])[k] = mgbba; +// (G.g[d00M])[kb] = mgbbc; // } // } //} @@ -2006,83 +2006,83 @@ __global__ void LB_PostProcessor_F3_2018_Fehlberg(real omega, // Distributions27 D; // if (EvenOrOdd == true) // { -// D.f[DIR_P00] = &DDStart[DIR_P00 * size_Mat]; -// D.f[DIR_M00] = &DDStart[DIR_M00 * size_Mat]; -// D.f[DIR_0P0] = &DDStart[DIR_0P0 * size_Mat]; -// D.f[DIR_0M0] = &DDStart[DIR_0M0 * size_Mat]; -// D.f[DIR_00P] = &DDStart[DIR_00P * size_Mat]; -// D.f[DIR_00M] = &DDStart[DIR_00M * size_Mat]; -// D.f[DIR_PP0] = &DDStart[DIR_PP0 * size_Mat]; -// D.f[DIR_MM0] = &DDStart[DIR_MM0 * size_Mat]; -// D.f[DIR_PM0] = &DDStart[DIR_PM0 * size_Mat]; -// D.f[DIR_MP0] = &DDStart[DIR_MP0 * size_Mat]; -// D.f[DIR_P0P] = &DDStart[DIR_P0P * size_Mat]; -// D.f[DIR_M0M] = &DDStart[DIR_M0M * size_Mat]; -// D.f[DIR_P0M] = &DDStart[DIR_P0M * size_Mat]; -// D.f[DIR_M0P] = &DDStart[DIR_M0P * size_Mat]; -// D.f[DIR_0PP] = &DDStart[DIR_0PP * size_Mat]; -// D.f[DIR_0MM] = &DDStart[DIR_0MM * size_Mat]; -// D.f[DIR_0PM] = &DDStart[DIR_0PM * size_Mat]; -// D.f[DIR_0MP] = &DDStart[DIR_0MP * size_Mat]; -// D.f[DIR_000] = &DDStart[DIR_000 * size_Mat]; -// D.f[DIR_PPP] = &DDStart[DIR_PPP * size_Mat]; -// D.f[DIR_MMP] = &DDStart[DIR_MMP * size_Mat]; -// D.f[DIR_PMP] = &DDStart[DIR_PMP * size_Mat]; -// D.f[DIR_MPP] = &DDStart[DIR_MPP * size_Mat]; -// D.f[DIR_PPM] = &DDStart[DIR_PPM * size_Mat]; -// D.f[DIR_MMM] = &DDStart[DIR_MMM * size_Mat]; -// D.f[DIR_PMM] = &DDStart[DIR_PMM * size_Mat]; -// D.f[DIR_MPM] = &DDStart[DIR_MPM * size_Mat]; +// D.f[dP00] = &DDStart[dP00 * size_Mat]; +// D.f[dM00] = &DDStart[dM00 * size_Mat]; +// D.f[d0P0] = &DDStart[d0P0 * size_Mat]; +// D.f[d0M0] = &DDStart[d0M0 * size_Mat]; +// D.f[d00P] = &DDStart[d00P * size_Mat]; +// D.f[d00M] = &DDStart[d00M * size_Mat]; +// D.f[dPP0] = &DDStart[dPP0 * size_Mat]; +// D.f[dMM0] = &DDStart[dMM0 * size_Mat]; +// D.f[dPM0] = &DDStart[dPM0 * size_Mat]; +// D.f[dMP0] = &DDStart[dMP0 * size_Mat]; +// D.f[dP0P] = &DDStart[dP0P * size_Mat]; +// D.f[dM0M] = &DDStart[dM0M * size_Mat]; +// D.f[dP0M] = &DDStart[dP0M * size_Mat]; +// D.f[dM0P] = &DDStart[dM0P * size_Mat]; +// D.f[d0PP] = &DDStart[d0PP * size_Mat]; +// D.f[d0MM] = &DDStart[d0MM * size_Mat]; +// D.f[d0PM] = &DDStart[d0PM * size_Mat]; +// D.f[d0MP] = &DDStart[d0MP * size_Mat]; +// D.f[d000] = &DDStart[d000 * size_Mat]; +// D.f[dPPP] = &DDStart[dPPP * size_Mat]; +// D.f[dMMP] = &DDStart[dMMP * size_Mat]; +// D.f[dPMP] = &DDStart[dPMP * size_Mat]; +// D.f[dMPP] = &DDStart[dMPP * size_Mat]; +// D.f[dPPM] = &DDStart[dPPM * size_Mat]; +// D.f[dMMM] = &DDStart[dMMM * size_Mat]; +// D.f[dPMM] = &DDStart[dPMM * size_Mat]; +// D.f[dMPM] = &DDStart[dMPM * size_Mat]; // } // else // { -// D.f[DIR_M00] = &DDStart[DIR_P00 * size_Mat]; -// D.f[DIR_P00] = &DDStart[DIR_M00 * size_Mat]; -// D.f[DIR_0M0] = &DDStart[DIR_0P0 * size_Mat]; -// D.f[DIR_0P0] = &DDStart[DIR_0M0 * size_Mat]; -// D.f[DIR_00M] = &DDStart[DIR_00P * size_Mat]; -// D.f[DIR_00P] = &DDStart[DIR_00M * size_Mat]; -// D.f[DIR_MM0] = &DDStart[DIR_PP0 * size_Mat]; -// D.f[DIR_PP0] = &DDStart[DIR_MM0 * size_Mat]; -// D.f[DIR_MP0] = &DDStart[DIR_PM0 * size_Mat]; -// D.f[DIR_PM0] = &DDStart[DIR_MP0 * size_Mat]; -// D.f[DIR_M0M] = &DDStart[DIR_P0P * size_Mat]; -// D.f[DIR_P0P] = &DDStart[DIR_M0M * size_Mat]; -// D.f[DIR_M0P] = &DDStart[DIR_P0M * size_Mat]; -// D.f[DIR_P0M] = &DDStart[DIR_M0P * size_Mat]; -// D.f[DIR_0MM] = &DDStart[DIR_0PP * size_Mat]; -// D.f[DIR_0PP] = &DDStart[DIR_0MM * size_Mat]; -// D.f[DIR_0MP] = &DDStart[DIR_0PM * size_Mat]; -// D.f[DIR_0PM] = &DDStart[DIR_0MP * size_Mat]; -// D.f[DIR_000] = &DDStart[DIR_000 * size_Mat]; -// D.f[DIR_MMM] = &DDStart[DIR_PPP * size_Mat]; -// D.f[DIR_PPM] = &DDStart[DIR_MMP * size_Mat]; -// D.f[DIR_MPM] = &DDStart[DIR_PMP * size_Mat]; -// D.f[DIR_PMM] = &DDStart[DIR_MPP * size_Mat]; -// D.f[DIR_MMP] = &DDStart[DIR_PPM * size_Mat]; -// D.f[DIR_PPP] = &DDStart[DIR_MMM * size_Mat]; -// D.f[DIR_MPP] = &DDStart[DIR_PMM * size_Mat]; -// D.f[DIR_PMP] = &DDStart[DIR_MPM * size_Mat]; +// D.f[dM00] = &DDStart[dP00 * size_Mat]; +// D.f[dP00] = &DDStart[dM00 * size_Mat]; +// D.f[d0M0] = &DDStart[d0P0 * size_Mat]; +// D.f[d0P0] = &DDStart[d0M0 * size_Mat]; +// D.f[d00M] = &DDStart[d00P * size_Mat]; +// D.f[d00P] = &DDStart[d00M * size_Mat]; +// D.f[dMM0] = &DDStart[dPP0 * size_Mat]; +// D.f[dPP0] = &DDStart[dMM0 * size_Mat]; +// D.f[dMP0] = &DDStart[dPM0 * size_Mat]; +// D.f[dPM0] = &DDStart[dMP0 * size_Mat]; +// D.f[dM0M] = &DDStart[dP0P * size_Mat]; +// D.f[dP0P] = &DDStart[dM0M * size_Mat]; +// D.f[dM0P] = &DDStart[dP0M * size_Mat]; +// D.f[dP0M] = &DDStart[dM0P * size_Mat]; +// D.f[d0MM] = &DDStart[d0PP * size_Mat]; +// D.f[d0PP] = &DDStart[d0MM * size_Mat]; +// D.f[d0MP] = &DDStart[d0PM * size_Mat]; +// D.f[d0PM] = &DDStart[d0MP * size_Mat]; +// D.f[d000] = &DDStart[d000 * size_Mat]; +// D.f[dMMM] = &DDStart[dPPP * size_Mat]; +// D.f[dPPM] = &DDStart[dMMP * size_Mat]; +// D.f[dMPM] = &DDStart[dPMP * size_Mat]; +// D.f[dPMM] = &DDStart[dMPP * size_Mat]; +// D.f[dMMP] = &DDStart[dPPM * size_Mat]; +// D.f[dPPP] = &DDStart[dMMM * size_Mat]; +// D.f[dMPP] = &DDStart[dPMM * size_Mat]; +// D.f[dPMP] = &DDStart[dMPM * size_Mat]; // } // // Distributions6 G; // if (EvenOrOdd == true) // { -// G.g[DIR_P00] = &G6[DIR_P00 * size_Mat]; -// G.g[DIR_M00] = &G6[DIR_M00 * size_Mat]; -// G.g[DIR_0P0] = &G6[DIR_0P0 * size_Mat]; -// G.g[DIR_0M0] = &G6[DIR_0M0 * size_Mat]; -// G.g[DIR_00P] = &G6[DIR_00P * size_Mat]; -// G.g[DIR_00M] = &G6[DIR_00M * size_Mat]; +// G.g[dP00] = &G6[dP00 * size_Mat]; +// G.g[dM00] = &G6[dM00 * size_Mat]; +// G.g[d0P0] = &G6[d0P0 * size_Mat]; +// G.g[d0M0] = &G6[d0M0 * size_Mat]; +// G.g[d00P] = &G6[d00P * size_Mat]; +// G.g[d00M] = &G6[d00M * size_Mat]; // } // else // { -// G.g[DIR_M00] = &G6[DIR_P00 * size_Mat]; -// G.g[DIR_P00] = &G6[DIR_M00 * size_Mat]; -// G.g[DIR_0M0] = &G6[DIR_0P0 * size_Mat]; -// G.g[DIR_0P0] = &G6[DIR_0M0 * size_Mat]; -// G.g[DIR_00M] = &G6[DIR_00P * size_Mat]; -// G.g[DIR_00P] = &G6[DIR_00M * size_Mat]; +// G.g[dM00] = &G6[dP00 * size_Mat]; +// G.g[dP00] = &G6[dM00 * size_Mat]; +// G.g[d0M0] = &G6[d0P0 * size_Mat]; +// G.g[d0P0] = &G6[d0M0 * size_Mat]; +// G.g[d00M] = &G6[d00P * size_Mat]; +// G.g[d00P] = &G6[d00M * size_Mat]; // } // // //////////////////////////////////////////////////////////////////////////////// @@ -2143,43 +2143,43 @@ __global__ void LB_PostProcessor_F3_2018_Fehlberg(real omega, // //unsigned int ktne = k; // //unsigned int kbsw = neighborZ[ksw]; // ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// real mgcbb = (G.g[DIR_P00])[k]; -// real mgabb = (G.g[DIR_M00])[kw]; -// real mgbcb = (G.g[DIR_0P0])[k]; -// real mgbab = (G.g[DIR_0M0])[ks]; -// real mgbbc = (G.g[DIR_00P])[k]; -// real mgbba = (G.g[DIR_00M])[kb]; +// real mgcbb = (G.g[dP00])[k]; +// real mgabb = (G.g[dM00])[kw]; +// real mgbcb = (G.g[d0P0])[k]; +// real mgbab = (G.g[d0M0])[ks]; +// real mgbbc = (G.g[d00P])[k]; +// real mgbba = (G.g[d00M])[kb]; // real dxxux = c1o2 * (-mgcbb + mgabb); // real dyyuy = c1o2 * (-mgbcb + mgbab); // real dzzuz = c1o2 * (-mgbbc + mgbba); // ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// real mfcbb = (D.f[DIR_P00])[k];//[ke ];// + c2over27 ;(D.f[DIR_P00])[k ];//ke -// real mfabb = (D.f[DIR_M00])[kw];//[kw ];// + c2over27 ;(D.f[DIR_M00])[kw ]; -// real mfbcb = (D.f[DIR_0P0])[k];//[kn ];// + c2over27 ;(D.f[DIR_0P0])[k ];//kn -// real mfbab = (D.f[DIR_0M0])[ks];//[ks ];// + c2over27 ;(D.f[DIR_0M0])[ks ]; -// real mfbbc = (D.f[DIR_00P])[k];//[kt ];// + c2over27 ;(D.f[DIR_00P])[k ];//kt -// real mfbba = (D.f[DIR_00M])[kb];//[kb ];// + c2over27 ;(D.f[DIR_00M])[kb ]; -// real mfccb = (D.f[DIR_PP0])[k];//[kne ];// + c1over54 ;(D.f[DIR_PP0])[k ];//kne -// real mfaab = (D.f[DIR_MM0])[ksw];//[ksw ];// + c1over54 ;(D.f[DIR_MM0])[ksw]; -// real mfcab = (D.f[DIR_PM0])[ks];//[kse ];// + c1over54 ;(D.f[DIR_PM0])[ks ];//kse -// real mfacb = (D.f[DIR_MP0])[kw];//[knw ];// + c1over54 ;(D.f[DIR_MP0])[kw ];//knw -// real mfcbc = (D.f[DIR_P0P])[k];//[kte ];// + c1over54 ;(D.f[DIR_P0P])[k ];//kte -// real mfaba = (D.f[DIR_M0M])[kbw];//[kbw ];// + c1over54 ;(D.f[DIR_M0M])[kbw]; -// real mfcba = (D.f[DIR_P0M])[kb];//[kbe ];// + c1over54 ;(D.f[DIR_P0M])[kb ];//kbe -// real mfabc = (D.f[DIR_M0P])[kw];//[ktw ];// + c1over54 ;(D.f[DIR_M0P])[kw ];//ktw -// real mfbcc = (D.f[DIR_0PP])[k];//[ktn ];// + c1over54 ;(D.f[DIR_0PP])[k ];//ktn -// real mfbaa = (D.f[DIR_0MM])[kbs];//[kbs ];// + c1over54 ;(D.f[DIR_0MM])[kbs]; -// real mfbca = (D.f[DIR_0PM])[kb];//[kbn ];// + c1over54 ;(D.f[DIR_0PM])[kb ];//kbn -// real mfbac = (D.f[DIR_0MP])[ks];//[kts ];// + c1over54 ;(D.f[DIR_0MP])[ks ];//kts -// real mfbbb = (D.f[DIR_000])[k];//[kzero];// + c8over27 ;(D.f[DIR_000])[k ];//kzero -// real mfccc = (D.f[DIR_PPP])[k];//[ktne ];// + c1over216;(D.f[DIR_PPP])[k ];//ktne -// real mfaac = (D.f[DIR_MMP])[ksw];//[ktsw ];// + c1over216;(D.f[DIR_MMP])[ksw];//ktsw -// real mfcac = (D.f[DIR_PMP])[ks];//[ktse ];// + c1over216;(D.f[DIR_PMP])[ks ];//ktse -// real mfacc = (D.f[DIR_MPP])[kw];//[ktnw ];// + c1over216;(D.f[DIR_MPP])[kw ];//ktnw -// real mfcca = (D.f[DIR_PPM])[kb];//[kbne ];// + c1over216;(D.f[DIR_PPM])[kb ];//kbne -// real mfaaa = (D.f[DIR_MMM])[kbsw];//[kbsw ];// + c1over216;(D.f[DIR_MMM])[kbsw]; -// real mfcaa = (D.f[DIR_PMM])[kbs];//[kbse ];// + c1over216;(D.f[DIR_PMM])[kbs];//kbse -// real mfaca = (D.f[DIR_MPM])[kbw];//[kbnw ];// + c1over216;(D.f[DIR_MPM])[kbw];//kbnw +// real mfcbb = (D.f[dP00])[k];//[ke ];// + c2over27 ;(D.f[dP00])[k ];//ke +// real mfabb = (D.f[dM00])[kw];//[kw ];// + c2over27 ;(D.f[dM00])[kw ]; +// real mfbcb = (D.f[d0P0])[k];//[kn ];// + c2over27 ;(D.f[d0P0])[k ];//kn +// real mfbab = (D.f[d0M0])[ks];//[ks ];// + c2over27 ;(D.f[d0M0])[ks ]; +// real mfbbc = (D.f[d00P])[k];//[kt ];// + c2over27 ;(D.f[d00P])[k ];//kt +// real mfbba = (D.f[d00M])[kb];//[kb ];// + c2over27 ;(D.f[d00M])[kb ]; +// real mfccb = (D.f[dPP0])[k];//[kne ];// + c1over54 ;(D.f[dPP0])[k ];//kne +// real mfaab = (D.f[dMM0])[ksw];//[ksw ];// + c1over54 ;(D.f[dMM0])[ksw]; +// real mfcab = (D.f[dPM0])[ks];//[kse ];// + c1over54 ;(D.f[dPM0])[ks ];//kse +// real mfacb = (D.f[dMP0])[kw];//[knw ];// + c1over54 ;(D.f[dMP0])[kw ];//knw +// real mfcbc = (D.f[dP0P])[k];//[kte ];// + c1over54 ;(D.f[dP0P])[k ];//kte +// real mfaba = (D.f[dM0M])[kbw];//[kbw ];// + c1over54 ;(D.f[dM0M])[kbw]; +// real mfcba = (D.f[dP0M])[kb];//[kbe ];// + c1over54 ;(D.f[dP0M])[kb ];//kbe +// real mfabc = (D.f[dM0P])[kw];//[ktw ];// + c1over54 ;(D.f[dM0P])[kw ];//ktw +// real mfbcc = (D.f[d0PP])[k];//[ktn ];// + c1over54 ;(D.f[d0PP])[k ];//ktn +// real mfbaa = (D.f[d0MM])[kbs];//[kbs ];// + c1over54 ;(D.f[d0MM])[kbs]; +// real mfbca = (D.f[d0PM])[kb];//[kbn ];// + c1over54 ;(D.f[d0PM])[kb ];//kbn +// real mfbac = (D.f[d0MP])[ks];//[kts ];// + c1over54 ;(D.f[d0MP])[ks ];//kts +// real mfbbb = (D.f[d000])[k];//[kzero];// + c8over27 ;(D.f[d000])[k ];//kzero +// real mfccc = (D.f[dPPP])[k];//[ktne ];// + c1over216;(D.f[dPPP])[k ];//ktne +// real mfaac = (D.f[dMMP])[ksw];//[ktsw ];// + c1over216;(D.f[dMMP])[ksw];//ktsw +// real mfcac = (D.f[dPMP])[ks];//[ktse ];// + c1over216;(D.f[dPMP])[ks ];//ktse +// real mfacc = (D.f[dMPP])[kw];//[ktnw ];// + c1over216;(D.f[dMPP])[kw ];//ktnw +// real mfcca = (D.f[dPPM])[kb];//[kbne ];// + c1over216;(D.f[dPPM])[kb ];//kbne +// real mfaaa = (D.f[dMMM])[kbsw];//[kbsw ];// + c1over216;(D.f[dMMM])[kbsw]; +// real mfcaa = (D.f[dPMM])[kbs];//[kbse ];// + c1over216;(D.f[dPMM])[kbs];//kbse +// real mfaca = (D.f[dMPM])[kbw];//[kbnw ];// + c1over216;(D.f[dMPM])[kbw];//kbnw // //////////////////////////////////////////////////////////////////////////////////// // real drho = ((((mfccc + mfaaa) + (mfaca + mfcac)) + ((mfacc + mfcaa) + (mfaac + mfcca))) + // (((mfbac + mfbca) + (mfbaa + mfbcc)) + ((mfabc + mfcba) + (mfaba + mfcbc)) + ((mfacb + mfcab) + (mfaab + mfccb))) + @@ -3013,41 +3013,41 @@ __global__ void LB_PostProcessor_F3_2018_Fehlberg(real omega, // //////////////////////////////////////////////////////////////////////////////////// // // //////////////////////////////////////////////////////////////////////////////////// -// (D.f[DIR_P00])[k] = mfabb;//(D.f[ DIR_P00 ])[ke ] = mfabb;// - c2over27 ; (D.f[ DIR_P00 ])[k ] -// (D.f[DIR_M00])[kw] = mfcbb;//(D.f[ DIR_M00 ])[kw ] = mfcbb;// - c2over27 ; (D.f[ DIR_M00 ])[kw ] -// (D.f[DIR_0P0])[k] = mfbab;//(D.f[ DIR_0P0 ])[kn ] = mfbab;// - c2over27 ; (D.f[ DIR_0P0 ])[k ] -// (D.f[DIR_0M0])[ks] = mfbcb;//(D.f[ DIR_0M0 ])[ks ] = mfbcb;// - c2over27 ; (D.f[ DIR_0M0 ])[ks ] -// (D.f[DIR_00P])[k] = mfbba;//(D.f[ DIR_00P ])[kt ] = mfbba;// - c2over27 ; (D.f[ DIR_00P ])[k ] -// (D.f[DIR_00M])[kb] = mfbbc;//(D.f[ DIR_00M ])[kb ] = mfbbc;// - c2over27 ; (D.f[ DIR_00M ])[kb ] -// (D.f[DIR_PP0])[k] = mfaab;//(D.f[ DIR_PP0 ])[kne ] = mfaab;// - c1over54 ; (D.f[ DIR_PP0 ])[k ] -// (D.f[DIR_MM0])[ksw] = mfccb;//(D.f[ DIR_MM0 ])[ksw ] = mfccb;// - c1over54 ; (D.f[ DIR_MM0 ])[ksw ] -// (D.f[DIR_PM0])[ks] = mfacb;//(D.f[ DIR_PM0 ])[kse ] = mfacb;// - c1over54 ; (D.f[ DIR_PM0 ])[ks ] -// (D.f[DIR_MP0])[kw] = mfcab;//(D.f[ DIR_MP0 ])[knw ] = mfcab;// - c1over54 ; (D.f[ DIR_MP0 ])[kw ] -// (D.f[DIR_P0P])[k] = mfaba;//(D.f[ DIR_P0P ])[kte ] = mfaba;// - c1over54 ; (D.f[ DIR_P0P ])[k ] -// (D.f[DIR_M0M])[kbw] = mfcbc;//(D.f[ DIR_M0M ])[kbw ] = mfcbc;// - c1over54 ; (D.f[ DIR_M0M ])[kbw ] -// (D.f[DIR_P0M])[kb] = mfabc;//(D.f[ DIR_P0M ])[kbe ] = mfabc;// - c1over54 ; (D.f[ DIR_P0M ])[kb ] -// (D.f[DIR_M0P])[kw] = mfcba;//(D.f[ DIR_M0P ])[ktw ] = mfcba;// - c1over54 ; (D.f[ DIR_M0P ])[kw ] -// (D.f[DIR_0PP])[k] = mfbaa;//(D.f[ DIR_0PP ])[ktn ] = mfbaa;// - c1over54 ; (D.f[ DIR_0PP ])[k ] -// (D.f[DIR_0MM])[kbs] = mfbcc;//(D.f[ DIR_0MM ])[kbs ] = mfbcc;// - c1over54 ; (D.f[ DIR_0MM ])[kbs ] -// (D.f[DIR_0PM])[kb] = mfbac;//(D.f[ DIR_0PM ])[kbn ] = mfbac;// - c1over54 ; (D.f[ DIR_0PM ])[kb ] -// (D.f[DIR_0MP])[ks] = mfbca;//(D.f[ DIR_0MP ])[kts ] = mfbca;// - c1over54 ; (D.f[ DIR_0MP ])[ks ] -// (D.f[DIR_000])[k] = mfbbb;//(D.f[ DIR_000])[kzero] = mfbbb;// - c8over27 ; (D.f[ DIR_000])[k ] -// (D.f[DIR_PPP])[k] = mfaaa;//(D.f[ DIR_PPP ])[ktne ] = mfaaa;// - c1over216; (D.f[ DIR_PPP ])[k ] -// (D.f[DIR_PMP])[ks] = mfaca;//(D.f[ DIR_PMP ])[ktse ] = mfaca;// - c1over216; (D.f[ DIR_PMP ])[ks ] -// (D.f[DIR_PPM])[kb] = mfaac;//(D.f[ DIR_PPM ])[kbne ] = mfaac;// - c1over216; (D.f[ DIR_PPM ])[kb ] -// (D.f[DIR_PMM])[kbs] = mfacc;//(D.f[ DIR_PMM ])[kbse ] = mfacc;// - c1over216; (D.f[ DIR_PMM ])[kbs ] -// (D.f[DIR_MPP])[kw] = mfcaa;//(D.f[ DIR_MPP ])[ktnw ] = mfcaa;// - c1over216; (D.f[ DIR_MPP ])[kw ] -// (D.f[DIR_MMP])[ksw] = mfcca;//(D.f[ DIR_MMP ])[ktsw ] = mfcca;// - c1over216; (D.f[ DIR_MMP ])[ksw ] -// (D.f[DIR_MPM])[kbw] = mfcac;//(D.f[ DIR_MPM ])[kbnw ] = mfcac;// - c1over216; (D.f[ DIR_MPM ])[kbw ] -// (D.f[DIR_MMM])[kbsw] = mfccc;//(D.f[ DIR_MMM ])[kbsw ] = mfccc;// - c1over216; (D.f[ DIR_MMM ])[kbsw] -// //////////////////////////////////////////////////////////////////////////////////// -// -// (G.g[DIR_P00])[k] = mgabb; -// (G.g[DIR_M00])[kw] = mgcbb; -// (G.g[DIR_0P0])[k] = mgbab; -// (G.g[DIR_0M0])[ks] = mgbcb; -// (G.g[DIR_00P])[k] = mgbba; -// (G.g[DIR_00M])[kb] = mgbbc; +// (D.f[dP00])[k] = mfabb;//(D.f[ dP00 ])[ke ] = mfabb;// - c2over27 ; (D.f[ dP00 ])[k ] +// (D.f[dM00])[kw] = mfcbb;//(D.f[ dM00 ])[kw ] = mfcbb;// - c2over27 ; (D.f[ dM00 ])[kw ] +// (D.f[d0P0])[k] = mfbab;//(D.f[ d0P0 ])[kn ] = mfbab;// - c2over27 ; (D.f[ d0P0 ])[k ] +// (D.f[d0M0])[ks] = mfbcb;//(D.f[ d0M0 ])[ks ] = mfbcb;// - c2over27 ; (D.f[ d0M0 ])[ks ] +// (D.f[d00P])[k] = mfbba;//(D.f[ d00P ])[kt ] = mfbba;// - c2over27 ; (D.f[ d00P ])[k ] +// (D.f[d00M])[kb] = mfbbc;//(D.f[ d00M ])[kb ] = mfbbc;// - c2over27 ; (D.f[ d00M ])[kb ] +// (D.f[dPP0])[k] = mfaab;//(D.f[ dPP0 ])[kne ] = mfaab;// - c1over54 ; (D.f[ dPP0 ])[k ] +// (D.f[dMM0])[ksw] = mfccb;//(D.f[ dMM0 ])[ksw ] = mfccb;// - c1over54 ; (D.f[ dMM0 ])[ksw ] +// (D.f[dPM0])[ks] = mfacb;//(D.f[ dPM0 ])[kse ] = mfacb;// - c1over54 ; (D.f[ dPM0 ])[ks ] +// (D.f[dMP0])[kw] = mfcab;//(D.f[ dMP0 ])[knw ] = mfcab;// - c1over54 ; (D.f[ dMP0 ])[kw ] +// (D.f[dP0P])[k] = mfaba;//(D.f[ dP0P ])[kte ] = mfaba;// - c1over54 ; (D.f[ dP0P ])[k ] +// (D.f[dM0M])[kbw] = mfcbc;//(D.f[ dM0M ])[kbw ] = mfcbc;// - c1over54 ; (D.f[ dM0M ])[kbw ] +// (D.f[dP0M])[kb] = mfabc;//(D.f[ dP0M ])[kbe ] = mfabc;// - c1over54 ; (D.f[ dP0M ])[kb ] +// (D.f[dM0P])[kw] = mfcba;//(D.f[ dM0P ])[ktw ] = mfcba;// - c1over54 ; (D.f[ dM0P ])[kw ] +// (D.f[d0PP])[k] = mfbaa;//(D.f[ d0PP ])[ktn ] = mfbaa;// - c1over54 ; (D.f[ d0PP ])[k ] +// (D.f[d0MM])[kbs] = mfbcc;//(D.f[ d0MM ])[kbs ] = mfbcc;// - c1over54 ; (D.f[ d0MM ])[kbs ] +// (D.f[d0PM])[kb] = mfbac;//(D.f[ d0PM ])[kbn ] = mfbac;// - c1over54 ; (D.f[ d0PM ])[kb ] +// (D.f[d0MP])[ks] = mfbca;//(D.f[ d0MP ])[kts ] = mfbca;// - c1over54 ; (D.f[ d0MP ])[ks ] +// (D.f[d000])[k] = mfbbb;//(D.f[ d000])[kzero] = mfbbb;// - c8over27 ; (D.f[ d000])[k ] +// (D.f[dPPP])[k] = mfaaa;//(D.f[ dPPP ])[ktne ] = mfaaa;// - c1over216; (D.f[ dPPP ])[k ] +// (D.f[dPMP])[ks] = mfaca;//(D.f[ dPMP ])[ktse ] = mfaca;// - c1over216; (D.f[ dPMP ])[ks ] +// (D.f[dPPM])[kb] = mfaac;//(D.f[ dPPM ])[kbne ] = mfaac;// - c1over216; (D.f[ dPPM ])[kb ] +// (D.f[dPMM])[kbs] = mfacc;//(D.f[ dPMM ])[kbse ] = mfacc;// - c1over216; (D.f[ dPMM ])[kbs ] +// (D.f[dMPP])[kw] = mfcaa;//(D.f[ dMPP ])[ktnw ] = mfcaa;// - c1over216; (D.f[ dMPP ])[kw ] +// (D.f[dMMP])[ksw] = mfcca;//(D.f[ dMMP ])[ktsw ] = mfcca;// - c1over216; (D.f[ dMMP ])[ksw ] +// (D.f[dMPM])[kbw] = mfcac;//(D.f[ dMPM ])[kbnw ] = mfcac;// - c1over216; (D.f[ dMPM ])[kbw ] +// (D.f[dMMM])[kbsw] = mfccc;//(D.f[ dMMM ])[kbsw ] = mfccc;// - c1over216; (D.f[ dMMM ])[kbsw] +// //////////////////////////////////////////////////////////////////////////////////// +// +// (G.g[dP00])[k] = mgabb; +// (G.g[dM00])[kw] = mgcbb; +// (G.g[d0P0])[k] = mgbab; +// (G.g[d0M0])[ks] = mgbcb; +// (G.g[d00P])[k] = mgbba; +// (G.g[d00M])[kb] = mgbbc; // } // } //} diff --git a/src/gpu/VirtualFluids_GPU/GPU/DragLift27.cu b/src/gpu/core/GPU/DragLift27.cu similarity index 58% rename from src/gpu/VirtualFluids_GPU/GPU/DragLift27.cu rename to src/gpu/core/GPU/DragLift27.cu index d1fc15a6b7a8f73083b41b926ce58916bdf61b59..e4dbb955489113b33804dcf1dfe64ade72b7826b 100644 --- a/src/gpu/VirtualFluids_GPU/GPU/DragLift27.cu +++ b/src/gpu/core/GPU/DragLift27.cu @@ -23,63 +23,63 @@ __global__ void DragLiftPost27( real* DD, Distributions27 D; if (isEvenTimestep==true) { - D.f[DIR_P00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_M00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_PMP * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_MPM * numberOfLBnodes]; + D.f[dP00] = &DD[dP00 * numberOfLBnodes]; + D.f[dM00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00P] = &DD[d00P * numberOfLBnodes]; + D.f[d00M] = &DD[d00M * numberOfLBnodes]; + D.f[dPP0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dMM0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dP0P] = &DD[dP0P * numberOfLBnodes]; + D.f[dM0M] = &DD[dM0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dP0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dM0P * numberOfLBnodes]; + D.f[d0PP] = &DD[d0PP * numberOfLBnodes]; + D.f[d0MM] = &DD[d0MM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0PM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dPPP * numberOfLBnodes]; + D.f[dMMP] = &DD[dMMP * numberOfLBnodes]; + D.f[dPMP] = &DD[dPMP * numberOfLBnodes]; + D.f[dMPP] = &DD[dMPP * numberOfLBnodes]; + D.f[dPPM] = &DD[dPPM * numberOfLBnodes]; + D.f[dMMM] = &DD[dMMM * numberOfLBnodes]; + D.f[dPMM] = &DD[dPMM * numberOfLBnodes]; + D.f[dMPM] = &DD[dMPM * numberOfLBnodes]; } else { - D.f[DIR_M00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_P00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_MPM * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_PMP * numberOfLBnodes]; + D.f[dM00] = &DD[dP00 * numberOfLBnodes]; + D.f[dP00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00M] = &DD[d00P * numberOfLBnodes]; + D.f[d00P] = &DD[d00M * numberOfLBnodes]; + D.f[dMM0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dPP0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dM0M] = &DD[dP0P * numberOfLBnodes]; + D.f[dP0P] = &DD[dM0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dP0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dM0P * numberOfLBnodes]; + D.f[d0MM] = &DD[d0PP * numberOfLBnodes]; + D.f[d0PP] = &DD[d0MM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0PM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dMMM * numberOfLBnodes]; + D.f[dMMP] = &DD[dPPM * numberOfLBnodes]; + D.f[dPMP] = &DD[dMPM * numberOfLBnodes]; + D.f[dMPP] = &DD[dPMM * numberOfLBnodes]; + D.f[dPPM] = &DD[dMMP * numberOfLBnodes]; + D.f[dMMM] = &DD[dPPP * numberOfLBnodes]; + D.f[dPMM] = &DD[dMPP * numberOfLBnodes]; + D.f[dMPM] = &DD[dPMP * numberOfLBnodes]; } //////////////////////////////////////////////////////////////////////////////// const unsigned x = threadIdx.x; // Globaler x-Index @@ -100,32 +100,32 @@ __global__ void DragLiftPost27( 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[DIR_P00 * numberOfBCnodes]; - q_dirW = &QQ[DIR_M00 * numberOfBCnodes]; - q_dirN = &QQ[DIR_0P0 * numberOfBCnodes]; - q_dirS = &QQ[DIR_0M0 * numberOfBCnodes]; - q_dirT = &QQ[DIR_00P * numberOfBCnodes]; - q_dirB = &QQ[DIR_00M * numberOfBCnodes]; - q_dirNE = &QQ[DIR_PP0 * numberOfBCnodes]; - q_dirSW = &QQ[DIR_MM0 * numberOfBCnodes]; - q_dirSE = &QQ[DIR_PM0 * numberOfBCnodes]; - q_dirNW = &QQ[DIR_MP0 * numberOfBCnodes]; - q_dirTE = &QQ[DIR_P0P * numberOfBCnodes]; - q_dirBW = &QQ[DIR_M0M * numberOfBCnodes]; - q_dirBE = &QQ[DIR_P0M * numberOfBCnodes]; - q_dirTW = &QQ[DIR_M0P * numberOfBCnodes]; - q_dirTN = &QQ[DIR_0PP * numberOfBCnodes]; - q_dirBS = &QQ[DIR_0MM * numberOfBCnodes]; - q_dirBN = &QQ[DIR_0PM * numberOfBCnodes]; - q_dirTS = &QQ[DIR_0MP * numberOfBCnodes]; - q_dirTNE = &QQ[DIR_PPP * numberOfBCnodes]; - q_dirTSW = &QQ[DIR_MMP * numberOfBCnodes]; - q_dirTSE = &QQ[DIR_PMP * numberOfBCnodes]; - q_dirTNW = &QQ[DIR_MPP * numberOfBCnodes]; - q_dirBNE = &QQ[DIR_PPM * numberOfBCnodes]; - q_dirBSW = &QQ[DIR_MMM * numberOfBCnodes]; - q_dirBSE = &QQ[DIR_PMM * numberOfBCnodes]; - q_dirBNW = &QQ[DIR_MPM * numberOfBCnodes]; + q_dirE = &QQ[dP00 * numberOfBCnodes]; + q_dirW = &QQ[dM00 * numberOfBCnodes]; + q_dirN = &QQ[d0P0 * numberOfBCnodes]; + q_dirS = &QQ[d0M0 * numberOfBCnodes]; + q_dirT = &QQ[d00P * numberOfBCnodes]; + q_dirB = &QQ[d00M * numberOfBCnodes]; + q_dirNE = &QQ[dPP0 * numberOfBCnodes]; + q_dirSW = &QQ[dMM0 * numberOfBCnodes]; + q_dirSE = &QQ[dPM0 * numberOfBCnodes]; + q_dirNW = &QQ[dMP0 * numberOfBCnodes]; + q_dirTE = &QQ[dP0P * numberOfBCnodes]; + q_dirBW = &QQ[dM0M * numberOfBCnodes]; + q_dirBE = &QQ[dP0M * numberOfBCnodes]; + q_dirTW = &QQ[dM0P * numberOfBCnodes]; + q_dirTN = &QQ[d0PP * numberOfBCnodes]; + q_dirBS = &QQ[d0MM * numberOfBCnodes]; + q_dirBN = &QQ[d0PM * numberOfBCnodes]; + q_dirTS = &QQ[d0MP * numberOfBCnodes]; + q_dirTNE = &QQ[dPPP * numberOfBCnodes]; + q_dirTSW = &QQ[dMMP * numberOfBCnodes]; + q_dirTSE = &QQ[dPMP * numberOfBCnodes]; + q_dirTNW = &QQ[dMPP * numberOfBCnodes]; + q_dirBNE = &QQ[dPPM * numberOfBCnodes]; + q_dirBSW = &QQ[dMMM * numberOfBCnodes]; + q_dirBSE = &QQ[dPMM * numberOfBCnodes]; + q_dirBNW = &QQ[dMPM * numberOfBCnodes]; //////////////////////////////////////////////////////////////////////////////// //index unsigned int KQK = k_Q[k]; @@ -160,32 +160,32 @@ __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[DIR_P00])[ke ]; - f_E = (D.f[DIR_M00])[kw ]; - f_S = (D.f[DIR_0P0])[kn ]; - f_N = (D.f[DIR_0M0])[ks ]; - f_B = (D.f[DIR_00P])[kt ]; - f_T = (D.f[DIR_00M])[kb ]; - f_SW = (D.f[DIR_PP0])[kne ]; - f_NE = (D.f[DIR_MM0])[ksw ]; - f_NW = (D.f[DIR_PM0])[kse ]; - f_SE = (D.f[DIR_MP0])[knw ]; - f_BW = (D.f[DIR_P0P])[kte ]; - f_TE = (D.f[DIR_M0M])[kbw ]; - f_TW = (D.f[DIR_P0M])[kbe ]; - f_BE = (D.f[DIR_M0P])[ktw ]; - f_BS = (D.f[DIR_0PP])[ktn ]; - f_TN = (D.f[DIR_0MM])[kbs ]; - f_TS = (D.f[DIR_0PM])[kbn ]; - f_BN = (D.f[DIR_0MP])[kts ]; - f_BSW = (D.f[DIR_PPP])[ktne ]; - f_BNE = (D.f[DIR_MMP])[ktsw ]; - f_BNW = (D.f[DIR_PMP])[ktse ]; - f_BSE = (D.f[DIR_MPP])[ktnw ]; - f_TSW = (D.f[DIR_PPM])[kbne ]; - f_TNE = (D.f[DIR_MMM])[kbsw ]; - f_TNW = (D.f[DIR_PMM])[kbse ]; - f_TSE = (D.f[DIR_MPM])[kbnw ]; + f_W = (D.f[dP00])[ke ]; + f_E = (D.f[dM00])[kw ]; + f_S = (D.f[d0P0])[kn ]; + f_N = (D.f[d0M0])[ks ]; + f_B = (D.f[d00P])[kt ]; + f_T = (D.f[d00M])[kb ]; + f_SW = (D.f[dPP0])[kne ]; + f_NE = (D.f[dMM0])[ksw ]; + f_NW = (D.f[dPM0])[kse ]; + f_SE = (D.f[dMP0])[knw ]; + f_BW = (D.f[dP0P])[kte ]; + f_TE = (D.f[dM0M])[kbw ]; + f_TW = (D.f[dP0M])[kbe ]; + f_BE = (D.f[dM0P])[ktw ]; + f_BS = (D.f[d0PP])[ktn ]; + f_TN = (D.f[d0MM])[kbs ]; + f_TS = (D.f[d0PM])[kbn ]; + f_BN = (D.f[d0MP])[kts ]; + f_BSW = (D.f[dPPP])[ktne ]; + f_BNE = (D.f[dMMP])[ktsw ]; + f_BNW = (D.f[dPMP])[ktse ]; + f_BSE = (D.f[dMPP])[ktnw ]; + f_TSW = (D.f[dPPM])[kbne ]; + f_TNE = (D.f[dMMM])[kbsw ]; + f_TNW = (D.f[dPMM])[kbse ]; + f_TSE = (D.f[dMPM])[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 @@ __global__ void DragLiftPre27( real* DD, Distributions27 D; if (isEvenTimestep==true) { - D.f[DIR_P00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_M00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_PMP * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_MPM * numberOfLBnodes]; + D.f[dP00] = &DD[dP00 * numberOfLBnodes]; + D.f[dM00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00P] = &DD[d00P * numberOfLBnodes]; + D.f[d00M] = &DD[d00M * numberOfLBnodes]; + D.f[dPP0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dMM0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dP0P] = &DD[dP0P * numberOfLBnodes]; + D.f[dM0M] = &DD[dM0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dP0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dM0P * numberOfLBnodes]; + D.f[d0PP] = &DD[d0PP * numberOfLBnodes]; + D.f[d0MM] = &DD[d0MM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0PM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dPPP * numberOfLBnodes]; + D.f[dMMP] = &DD[dMMP * numberOfLBnodes]; + D.f[dPMP] = &DD[dPMP * numberOfLBnodes]; + D.f[dMPP] = &DD[dMPP * numberOfLBnodes]; + D.f[dPPM] = &DD[dPPM * numberOfLBnodes]; + D.f[dMMM] = &DD[dMMM * numberOfLBnodes]; + D.f[dPMM] = &DD[dPMM * numberOfLBnodes]; + D.f[dMPM] = &DD[dMPM * numberOfLBnodes]; } else { - D.f[DIR_M00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_P00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_MPM * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_PMP * numberOfLBnodes]; + D.f[dM00] = &DD[dP00 * numberOfLBnodes]; + D.f[dP00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00M] = &DD[d00P * numberOfLBnodes]; + D.f[d00P] = &DD[d00M * numberOfLBnodes]; + D.f[dMM0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dPP0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dM0M] = &DD[dP0P * numberOfLBnodes]; + D.f[dP0P] = &DD[dM0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dP0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dM0P * numberOfLBnodes]; + D.f[d0MM] = &DD[d0PP * numberOfLBnodes]; + D.f[d0PP] = &DD[d0MM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0PM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dMMM * numberOfLBnodes]; + D.f[dMMP] = &DD[dPPM * numberOfLBnodes]; + D.f[dPMP] = &DD[dMPM * numberOfLBnodes]; + D.f[dMPP] = &DD[dPMM * numberOfLBnodes]; + D.f[dPPM] = &DD[dMMP * numberOfLBnodes]; + D.f[dMMM] = &DD[dPPP * numberOfLBnodes]; + D.f[dPMM] = &DD[dMPP * numberOfLBnodes]; + D.f[dMPM] = &DD[dPMP * numberOfLBnodes]; } //////////////////////////////////////////////////////////////////////////////// const unsigned x = threadIdx.x; // Globaler x-Index @@ -365,32 +365,32 @@ __global__ void DragLiftPre27( 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[DIR_P00 * numberOfBCnodes]; - q_dirW = &QQ[DIR_M00 * numberOfBCnodes]; - q_dirN = &QQ[DIR_0P0 * numberOfBCnodes]; - q_dirS = &QQ[DIR_0M0 * numberOfBCnodes]; - q_dirT = &QQ[DIR_00P * numberOfBCnodes]; - q_dirB = &QQ[DIR_00M * numberOfBCnodes]; - q_dirNE = &QQ[DIR_PP0 * numberOfBCnodes]; - q_dirSW = &QQ[DIR_MM0 * numberOfBCnodes]; - q_dirSE = &QQ[DIR_PM0 * numberOfBCnodes]; - q_dirNW = &QQ[DIR_MP0 * numberOfBCnodes]; - q_dirTE = &QQ[DIR_P0P * numberOfBCnodes]; - q_dirBW = &QQ[DIR_M0M * numberOfBCnodes]; - q_dirBE = &QQ[DIR_P0M * numberOfBCnodes]; - q_dirTW = &QQ[DIR_M0P * numberOfBCnodes]; - q_dirTN = &QQ[DIR_0PP * numberOfBCnodes]; - q_dirBS = &QQ[DIR_0MM * numberOfBCnodes]; - q_dirBN = &QQ[DIR_0PM * numberOfBCnodes]; - q_dirTS = &QQ[DIR_0MP * numberOfBCnodes]; - q_dirTNE = &QQ[DIR_PPP * numberOfBCnodes]; - q_dirTSW = &QQ[DIR_MMP * numberOfBCnodes]; - q_dirTSE = &QQ[DIR_PMP * numberOfBCnodes]; - q_dirTNW = &QQ[DIR_MPP * numberOfBCnodes]; - q_dirBNE = &QQ[DIR_PPM * numberOfBCnodes]; - q_dirBSW = &QQ[DIR_MMM * numberOfBCnodes]; - q_dirBSE = &QQ[DIR_PMM * numberOfBCnodes]; - q_dirBNW = &QQ[DIR_MPM * numberOfBCnodes]; + q_dirE = &QQ[dP00 * numberOfBCnodes]; + q_dirW = &QQ[dM00 * numberOfBCnodes]; + q_dirN = &QQ[d0P0 * numberOfBCnodes]; + q_dirS = &QQ[d0M0 * numberOfBCnodes]; + q_dirT = &QQ[d00P * numberOfBCnodes]; + q_dirB = &QQ[d00M * numberOfBCnodes]; + q_dirNE = &QQ[dPP0 * numberOfBCnodes]; + q_dirSW = &QQ[dMM0 * numberOfBCnodes]; + q_dirSE = &QQ[dPM0 * numberOfBCnodes]; + q_dirNW = &QQ[dMP0 * numberOfBCnodes]; + q_dirTE = &QQ[dP0P * numberOfBCnodes]; + q_dirBW = &QQ[dM0M * numberOfBCnodes]; + q_dirBE = &QQ[dP0M * numberOfBCnodes]; + q_dirTW = &QQ[dM0P * numberOfBCnodes]; + q_dirTN = &QQ[d0PP * numberOfBCnodes]; + q_dirBS = &QQ[d0MM * numberOfBCnodes]; + q_dirBN = &QQ[d0PM * numberOfBCnodes]; + q_dirTS = &QQ[d0MP * numberOfBCnodes]; + q_dirTNE = &QQ[dPPP * numberOfBCnodes]; + q_dirTSW = &QQ[dMMP * numberOfBCnodes]; + q_dirTSE = &QQ[dPMP * numberOfBCnodes]; + q_dirTNW = &QQ[dMPP * numberOfBCnodes]; + q_dirBNE = &QQ[dPPM * numberOfBCnodes]; + q_dirBSW = &QQ[dMMM * numberOfBCnodes]; + q_dirBSE = &QQ[dPMM * numberOfBCnodes]; + q_dirBNW = &QQ[dMPM * numberOfBCnodes]; //////////////////////////////////////////////////////////////////////////////// //index unsigned int KQK = k_Q[k]; @@ -425,32 +425,32 @@ __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[DIR_P00])[ke ]; - f_W = (D.f[DIR_M00])[kw ]; - f_N = (D.f[DIR_0P0])[kn ]; - f_S = (D.f[DIR_0M0])[ks ]; - f_T = (D.f[DIR_00P])[kt ]; - f_B = (D.f[DIR_00M])[kb ]; - f_NE = (D.f[DIR_PP0])[kne ]; - f_SW = (D.f[DIR_MM0])[ksw ]; - f_SE = (D.f[DIR_PM0])[kse ]; - f_NW = (D.f[DIR_MP0])[knw ]; - f_TE = (D.f[DIR_P0P])[kte ]; - f_BW = (D.f[DIR_M0M])[kbw ]; - f_BE = (D.f[DIR_P0M])[kbe ]; - f_TW = (D.f[DIR_M0P])[ktw ]; - f_TN = (D.f[DIR_0PP])[ktn ]; - f_BS = (D.f[DIR_0MM])[kbs ]; - f_BN = (D.f[DIR_0PM])[kbn ]; - f_TS = (D.f[DIR_0MP])[kts ]; - f_TNE = (D.f[DIR_PPP])[ktne ]; - f_TSW = (D.f[DIR_MMP])[ktsw ]; - f_TSE = (D.f[DIR_PMP])[ktse ]; - f_TNW = (D.f[DIR_MPP])[ktnw ]; - f_BNE = (D.f[DIR_PPM])[kbne ]; - f_BSW = (D.f[DIR_MMM])[kbsw ]; - f_BSE = (D.f[DIR_PMM])[kbse ]; - f_BNW = (D.f[DIR_MPM])[kbnw ]; + f_E = (D.f[dP00])[ke ]; + f_W = (D.f[dM00])[kw ]; + f_N = (D.f[d0P0])[kn ]; + f_S = (D.f[d0M0])[ks ]; + f_T = (D.f[d00P])[kt ]; + f_B = (D.f[d00M])[kb ]; + f_NE = (D.f[dPP0])[kne ]; + f_SW = (D.f[dMM0])[ksw ]; + f_SE = (D.f[dPM0])[kse ]; + f_NW = (D.f[dMP0])[knw ]; + f_TE = (D.f[dP0P])[kte ]; + f_BW = (D.f[dM0M])[kbw ]; + f_BE = (D.f[dP0M])[kbe ]; + f_TW = (D.f[dM0P])[ktw ]; + f_TN = (D.f[d0PP])[ktn ]; + f_BS = (D.f[d0MM])[kbs ]; + f_BN = (D.f[d0PM])[kbn ]; + f_TS = (D.f[d0MP])[kts ]; + f_TNE = (D.f[dPPP])[ktne ]; + f_TSW = (D.f[dMMP])[ktsw ]; + f_TSE = (D.f[dPMP])[ktse ]; + f_TNW = (D.f[dMPP])[ktnw ]; + f_BNE = (D.f[dPPM])[kbne ]; + f_BSW = (D.f[dMMM])[kbsw ]; + f_BSE = (D.f[dPMM])[kbse ]; + f_BNW = (D.f[dMPM])[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/EnstrophyAnalyzer.cu b/src/gpu/core/GPU/EnstrophyAnalyzer.cu similarity index 100% rename from src/gpu/VirtualFluids_GPU/GPU/EnstrophyAnalyzer.cu rename to src/gpu/core/GPU/EnstrophyAnalyzer.cu diff --git a/src/gpu/VirtualFluids_GPU/GPU/EnstrophyAnalyzer.h b/src/gpu/core/GPU/EnstrophyAnalyzer.h similarity index 72% rename from src/gpu/VirtualFluids_GPU/GPU/EnstrophyAnalyzer.h rename to src/gpu/core/GPU/EnstrophyAnalyzer.h index ab5c52e77cd4c028e044bfd6ec4b25b974f80ee2..dd633a5375a75dc66ff19d933fc9af81bf0b1a5a 100644 --- a/src/gpu/VirtualFluids_GPU/GPU/EnstrophyAnalyzer.h +++ b/src/gpu/core/GPU/EnstrophyAnalyzer.h @@ -6,13 +6,13 @@ -#include "PointerDefinitions.h" -#include "DataTypes.h" -#include "VirtualFluids_GPU_export.h" +#include <basics/PointerDefinitions.h> +#include <basics/DataTypes.h> + class Parameter; -class VIRTUALFLUIDS_GPU_EXPORT EnstrophyAnalyzer +class EnstrophyAnalyzer { private: diff --git a/src/gpu/core/GPU/ExchangeData27.cu b/src/gpu/core/GPU/ExchangeData27.cu new file mode 100644 index 0000000000000000000000000000000000000000..e0d13773b8c38d276cec5ffdd6f6dc0fb19465eb --- /dev/null +++ b/src/gpu/core/GPU/ExchangeData27.cu @@ -0,0 +1,1072 @@ +/* Device code */ +#include "LBM/LB.h" +#include "lbm/constants/D3Q27.h" +#include <basics/constants/NumericConstants.h> + +using namespace vf::basics::constant; +using namespace vf::lbm::dir; + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +__global__ void getSendFsPost27(real* DD, + real* bufferFs, + int* sendIndex, + int buffmax, + unsigned int* neighborX, + unsigned int* neighborY, + unsigned int* neighborZ, + unsigned long long 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 + + const unsigned nx = blockDim.x; + const unsigned ny = gridDim.x; + + const unsigned k = nx*(ny*z + y) + x; + ////////////////////////////////////////////////////////////////////////// + + if(k<buffmax) + { + //////////////////////////////////////////////////////////////////////////////// + //set index + unsigned int kIndex = sendIndex[k]; + unsigned int kzero = kIndex; + unsigned int ke = kIndex; + unsigned int kw = neighborX[kIndex]; + unsigned int kn = kIndex; + unsigned int ks = neighborY[kIndex]; + unsigned int kt = kIndex; + unsigned int kb = neighborZ[kIndex]; + unsigned int ksw = neighborY[kw]; + unsigned int kne = kIndex; + unsigned int kse = ks; + unsigned int knw = kw; + unsigned int kbw = neighborZ[kw]; + unsigned int kte = kIndex; + unsigned int kbe = kb; + unsigned int ktw = kw; + unsigned int kbs = neighborZ[ks]; + unsigned int ktn = kIndex; + 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 = kIndex; + unsigned int kbsw = neighborZ[ksw]; + //////////////////////////////////////////////////////////////////////////////// + //set Pointer for Fs + Distributions27 D; + if (isEvenTimestep==true) + { + D.f[dP00] = &DD[dP00 * numberOfLBnodes]; + D.f[dM00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00P] = &DD[d00P * numberOfLBnodes]; + D.f[d00M] = &DD[d00M * numberOfLBnodes]; + D.f[dPP0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dMM0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dP0P] = &DD[dP0P * numberOfLBnodes]; + D.f[dM0M] = &DD[dM0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dP0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dM0P * numberOfLBnodes]; + D.f[d0PP] = &DD[d0PP * numberOfLBnodes]; + D.f[d0MM] = &DD[d0MM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0PM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dPPP * numberOfLBnodes]; + D.f[dMMP] = &DD[dMMP * numberOfLBnodes]; + D.f[dPMP] = &DD[dPMP * numberOfLBnodes]; + D.f[dMPP] = &DD[dMPP * numberOfLBnodes]; + D.f[dPPM] = &DD[dPPM * numberOfLBnodes]; + D.f[dMMM] = &DD[dMMM * numberOfLBnodes]; + D.f[dPMM] = &DD[dPMM * numberOfLBnodes]; + D.f[dMPM] = &DD[dMPM * numberOfLBnodes]; + } + else + { + D.f[dM00] = &DD[dP00 * numberOfLBnodes]; + D.f[dP00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00M] = &DD[d00P * numberOfLBnodes]; + D.f[d00P] = &DD[d00M * numberOfLBnodes]; + D.f[dMM0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dPP0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dM0M] = &DD[dP0P * numberOfLBnodes]; + D.f[dP0P] = &DD[dM0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dP0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dM0P * numberOfLBnodes]; + D.f[d0MM] = &DD[d0PP * numberOfLBnodes]; + D.f[d0PP] = &DD[d0MM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0PM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dMMM * numberOfLBnodes]; + D.f[dMMP] = &DD[dPPM * numberOfLBnodes]; + D.f[dPMP] = &DD[dMPM * numberOfLBnodes]; + D.f[dMPP] = &DD[dPMM * numberOfLBnodes]; + D.f[dPPM] = &DD[dMMP * numberOfLBnodes]; + D.f[dMMM] = &DD[dPPP * numberOfLBnodes]; + D.f[dPMM] = &DD[dMPP * numberOfLBnodes]; + D.f[dMPM] = &DD[dPMP * numberOfLBnodes]; + } + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //set Pointer for Buffer Fs + Distributions27 Dbuff; + Dbuff.f[dP00] = &bufferFs[dP00 * buffmax]; + Dbuff.f[dM00] = &bufferFs[dM00 * buffmax]; + Dbuff.f[d0P0] = &bufferFs[d0P0 * buffmax]; + Dbuff.f[d0M0] = &bufferFs[d0M0 * buffmax]; + Dbuff.f[d00P] = &bufferFs[d00P * buffmax]; + Dbuff.f[d00M] = &bufferFs[d00M * buffmax]; + Dbuff.f[dPP0] = &bufferFs[dPP0 * buffmax]; + Dbuff.f[dMM0] = &bufferFs[dMM0 * buffmax]; + Dbuff.f[dPM0] = &bufferFs[dPM0 * buffmax]; + Dbuff.f[dMP0] = &bufferFs[dMP0 * buffmax]; + Dbuff.f[dP0P] = &bufferFs[dP0P * buffmax]; + Dbuff.f[dM0M] = &bufferFs[dM0M * buffmax]; + Dbuff.f[dP0M] = &bufferFs[dP0M * buffmax]; + Dbuff.f[dM0P] = &bufferFs[dM0P * buffmax]; + Dbuff.f[d0PP] = &bufferFs[d0PP * buffmax]; + Dbuff.f[d0MM] = &bufferFs[d0MM * buffmax]; + Dbuff.f[d0PM] = &bufferFs[d0PM * buffmax]; + Dbuff.f[d0MP] = &bufferFs[d0MP * buffmax]; + Dbuff.f[d000] = &bufferFs[d000 * buffmax]; + Dbuff.f[dPPP] = &bufferFs[dPPP * buffmax]; + Dbuff.f[dMMP] = &bufferFs[dMMP * buffmax]; + Dbuff.f[dPMP] = &bufferFs[dPMP * buffmax]; + Dbuff.f[dMPP] = &bufferFs[dMPP * buffmax]; + Dbuff.f[dPPM] = &bufferFs[dPPM * buffmax]; + Dbuff.f[dMMM] = &bufferFs[dMMM * buffmax]; + Dbuff.f[dPMM] = &bufferFs[dPMM * buffmax]; + Dbuff.f[dMPM] = &bufferFs[dMPM * buffmax]; + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //copy to buffer + //(Dbuff.f[dP00])[k] = (D.f[dP00])[ke ]; + //(Dbuff.f[dM00])[k] = (D.f[dM00])[kw ]; + //(Dbuff.f[d0P0])[k] = (D.f[d0P0])[kn ]; + //(Dbuff.f[d0M0])[k] = (D.f[d0M0])[ks ]; + //(Dbuff.f[d00P])[k] = (D.f[d00P])[kt ]; + //(Dbuff.f[d00M])[k] = (D.f[d00M])[kb ]; + //(Dbuff.f[dPP0])[k] = (D.f[dPP0])[kne ]; + //(Dbuff.f[dMM0])[k] = (D.f[dMM0])[ksw ]; + //(Dbuff.f[dPM0])[k] = (D.f[dPM0])[kse ]; + //(Dbuff.f[dMP0])[k] = (D.f[dMP0])[knw ]; + //(Dbuff.f[dP0P])[k] = (D.f[dP0P])[kte ]; + //(Dbuff.f[dM0M])[k] = (D.f[dM0M])[kbw ]; + //(Dbuff.f[dP0M])[k] = (D.f[dP0M])[kbe ]; + //(Dbuff.f[dM0P])[k] = (D.f[dM0P])[ktw ]; + //(Dbuff.f[d0PP])[k] = (D.f[d0PP])[ktn ]; + //(Dbuff.f[d0MM])[k] = (D.f[d0MM])[kbs ]; + //(Dbuff.f[d0PM])[k] = (D.f[d0PM])[kbn ]; + //(Dbuff.f[d0MP])[k] = (D.f[d0MP])[kts ]; + //(Dbuff.f[d000])[k] = (D.f[d000])[kzero]; + //(Dbuff.f[dPPP])[k] = (D.f[dPPP])[ktne ]; + //(Dbuff.f[dMMP])[k] = (D.f[dMMP])[ktsw ]; + //(Dbuff.f[dPMP])[k] = (D.f[dPMP])[ktse ]; + //(Dbuff.f[dMPP])[k] = (D.f[dMPP])[ktnw ]; + //(Dbuff.f[dPPM])[k] = (D.f[dPPM])[kbne ]; + //(Dbuff.f[dMMM])[k] = (D.f[dMMM])[kbsw ]; + //(Dbuff.f[dPMM])[k] = (D.f[dPMM])[kbse ]; + //(Dbuff.f[dMPM])[k] = (D.f[dMPM])[kbnw ]; + (Dbuff.f[dP00])[k] = (D.f[dM00])[kw ]; + (Dbuff.f[dM00])[k] = (D.f[dP00])[ke ]; + (Dbuff.f[d0P0])[k] = (D.f[d0M0])[ks ]; + (Dbuff.f[d0M0])[k] = (D.f[d0P0])[kn ]; + (Dbuff.f[d00P])[k] = (D.f[d00M])[kb ]; + (Dbuff.f[d00M])[k] = (D.f[d00P])[kt ]; + (Dbuff.f[dPP0])[k] = (D.f[dMM0])[ksw ]; + (Dbuff.f[dMM0])[k] = (D.f[dPP0])[kne ]; + (Dbuff.f[dPM0])[k] = (D.f[dMP0])[knw ]; + (Dbuff.f[dMP0])[k] = (D.f[dPM0])[kse ]; + (Dbuff.f[dP0P])[k] = (D.f[dM0M])[kbw ]; + (Dbuff.f[dM0M])[k] = (D.f[dP0P])[kte ]; + (Dbuff.f[dP0M])[k] = (D.f[dM0P])[ktw ]; + (Dbuff.f[dM0P])[k] = (D.f[dP0M])[kbe ]; + (Dbuff.f[d0PP])[k] = (D.f[d0MM])[kbs ]; + (Dbuff.f[d0MM])[k] = (D.f[d0PP])[ktn ]; + (Dbuff.f[d0PM])[k] = (D.f[d0MP])[kts ]; + (Dbuff.f[d0MP])[k] = (D.f[d0PM])[kbn ]; + (Dbuff.f[d000])[k] = (D.f[d000])[kzero]; + (Dbuff.f[dPPP])[k] = (D.f[dMMM])[kbsw ]; + (Dbuff.f[dMMP])[k] = (D.f[dPPM])[kbne ]; + (Dbuff.f[dPMP])[k] = (D.f[dMPM])[kbnw ]; + (Dbuff.f[dMPP])[k] = (D.f[dPMM])[kbse ]; + (Dbuff.f[dPPM])[k] = (D.f[dMMP])[ktsw ]; + (Dbuff.f[dMMM])[k] = (D.f[dPPP])[ktne ]; + (Dbuff.f[dPMM])[k] = (D.f[dMPP])[ktnw ]; + (Dbuff.f[dMPM])[k] = (D.f[dPMP])[ktse ]; + } +} +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +__global__ void setRecvFsPost27(real* DD, + real* bufferFs, + int* recvIndex, + int buffmax, + unsigned int* neighborX, + unsigned int* neighborY, + unsigned int* neighborZ, + unsigned long long 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 + + const unsigned nx = blockDim.x; + const unsigned ny = gridDim.x; + + const unsigned k = nx*(ny*z + y) + x; + ////////////////////////////////////////////////////////////////////////// + + if(k<buffmax) + { + //////////////////////////////////////////////////////////////////////////////// + //set index + unsigned int kIndex = recvIndex[k]; + unsigned int kzero = kIndex; + unsigned int ke = kIndex; + unsigned int kw = neighborX[kIndex]; + unsigned int kn = kIndex; + unsigned int ks = neighborY[kIndex]; + unsigned int kt = kIndex; + unsigned int kb = neighborZ[kIndex]; + unsigned int ksw = neighborY[kw]; + unsigned int kne = kIndex; + unsigned int kse = ks; + unsigned int knw = kw; + unsigned int kbw = neighborZ[kw]; + unsigned int kte = kIndex; + unsigned int kbe = kb; + unsigned int ktw = kw; + unsigned int kbs = neighborZ[ks]; + unsigned int ktn = kIndex; + 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 = kIndex; + unsigned int kbsw = neighborZ[ksw]; + //////////////////////////////////////////////////////////////////////////////// + //set Pointer for Fs + Distributions27 D; + if (isEvenTimestep==true) + { + D.f[dP00] = &DD[dP00 * numberOfLBnodes]; + D.f[dM00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00P] = &DD[d00P * numberOfLBnodes]; + D.f[d00M] = &DD[d00M * numberOfLBnodes]; + D.f[dPP0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dMM0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dP0P] = &DD[dP0P * numberOfLBnodes]; + D.f[dM0M] = &DD[dM0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dP0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dM0P * numberOfLBnodes]; + D.f[d0PP] = &DD[d0PP * numberOfLBnodes]; + D.f[d0MM] = &DD[d0MM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0PM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dPPP * numberOfLBnodes]; + D.f[dMMP] = &DD[dMMP * numberOfLBnodes]; + D.f[dPMP] = &DD[dPMP * numberOfLBnodes]; + D.f[dMPP] = &DD[dMPP * numberOfLBnodes]; + D.f[dPPM] = &DD[dPPM * numberOfLBnodes]; + D.f[dMMM] = &DD[dMMM * numberOfLBnodes]; + D.f[dPMM] = &DD[dPMM * numberOfLBnodes]; + D.f[dMPM] = &DD[dMPM * numberOfLBnodes]; + } + else + { + D.f[dM00] = &DD[dP00 * numberOfLBnodes]; + D.f[dP00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00M] = &DD[d00P * numberOfLBnodes]; + D.f[d00P] = &DD[d00M * numberOfLBnodes]; + D.f[dMM0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dPP0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dM0M] = &DD[dP0P * numberOfLBnodes]; + D.f[dP0P] = &DD[dM0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dP0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dM0P * numberOfLBnodes]; + D.f[d0MM] = &DD[d0PP * numberOfLBnodes]; + D.f[d0PP] = &DD[d0MM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0PM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dMMM * numberOfLBnodes]; + D.f[dMMP] = &DD[dPPM * numberOfLBnodes]; + D.f[dPMP] = &DD[dMPM * numberOfLBnodes]; + D.f[dMPP] = &DD[dPMM * numberOfLBnodes]; + D.f[dPPM] = &DD[dMMP * numberOfLBnodes]; + D.f[dMMM] = &DD[dPPP * numberOfLBnodes]; + D.f[dPMM] = &DD[dMPP * numberOfLBnodes]; + D.f[dMPM] = &DD[dPMP * numberOfLBnodes]; + } + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //set Pointer for Buffer Fs + Distributions27 Dbuff; + Dbuff.f[dP00] = &bufferFs[dP00 * buffmax]; + Dbuff.f[dM00] = &bufferFs[dM00 * buffmax]; + Dbuff.f[d0P0] = &bufferFs[d0P0 * buffmax]; + Dbuff.f[d0M0] = &bufferFs[d0M0 * buffmax]; + Dbuff.f[d00P] = &bufferFs[d00P * buffmax]; + Dbuff.f[d00M] = &bufferFs[d00M * buffmax]; + Dbuff.f[dPP0] = &bufferFs[dPP0 * buffmax]; + Dbuff.f[dMM0] = &bufferFs[dMM0 * buffmax]; + Dbuff.f[dPM0] = &bufferFs[dPM0 * buffmax]; + Dbuff.f[dMP0] = &bufferFs[dMP0 * buffmax]; + Dbuff.f[dP0P] = &bufferFs[dP0P * buffmax]; + Dbuff.f[dM0M] = &bufferFs[dM0M * buffmax]; + Dbuff.f[dP0M] = &bufferFs[dP0M * buffmax]; + Dbuff.f[dM0P] = &bufferFs[dM0P * buffmax]; + Dbuff.f[d0PP] = &bufferFs[d0PP * buffmax]; + Dbuff.f[d0MM] = &bufferFs[d0MM * buffmax]; + Dbuff.f[d0PM] = &bufferFs[d0PM * buffmax]; + Dbuff.f[d0MP] = &bufferFs[d0MP * buffmax]; + Dbuff.f[d000] = &bufferFs[d000 * buffmax]; + Dbuff.f[dPPP] = &bufferFs[dPPP * buffmax]; + Dbuff.f[dMMP] = &bufferFs[dMMP * buffmax]; + Dbuff.f[dPMP] = &bufferFs[dPMP * buffmax]; + Dbuff.f[dMPP] = &bufferFs[dMPP * buffmax]; + Dbuff.f[dPPM] = &bufferFs[dPPM * buffmax]; + Dbuff.f[dMMM] = &bufferFs[dMMM * buffmax]; + Dbuff.f[dPMM] = &bufferFs[dPMM * buffmax]; + Dbuff.f[dMPM] = &bufferFs[dMPM * buffmax]; + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //copy from buffer + //(D.f[dP00])[ke ] = (Dbuff.f[dP00])[k]; + //(D.f[dM00])[kw ] = (Dbuff.f[dM00])[k]; + //(D.f[d0P0])[kn ] = (Dbuff.f[d0P0])[k]; + //(D.f[d0M0])[ks ] = (Dbuff.f[d0M0])[k]; + //(D.f[d00P])[kt ] = (Dbuff.f[d00P])[k]; + //(D.f[d00M])[kb ] = (Dbuff.f[d00M])[k]; + //(D.f[dPP0])[kne ] = (Dbuff.f[dPP0])[k]; + //(D.f[dMM0])[ksw ] = (Dbuff.f[dMM0])[k]; + //(D.f[dPM0])[kse ] = (Dbuff.f[dPM0])[k]; + //(D.f[dMP0])[knw ] = (Dbuff.f[dMP0])[k]; + //(D.f[dP0P])[kte ] = (Dbuff.f[dP0P])[k]; + //(D.f[dM0M])[kbw ] = (Dbuff.f[dM0M])[k]; + //(D.f[dP0M])[kbe ] = (Dbuff.f[dP0M])[k]; + //(D.f[dM0P])[ktw ] = (Dbuff.f[dM0P])[k]; + //(D.f[d0PP])[ktn ] = (Dbuff.f[d0PP])[k]; + //(D.f[d0MM])[kbs ] = (Dbuff.f[d0MM])[k]; + //(D.f[d0PM])[kbn ] = (Dbuff.f[d0PM])[k]; + //(D.f[d0MP])[kts ] = (Dbuff.f[d0MP])[k]; + //(D.f[d000])[kzero] = (Dbuff.f[d000])[k]; + //(D.f[dPPP])[ktne ] = (Dbuff.f[dPPP])[k]; + //(D.f[dMMP])[ktsw ] = (Dbuff.f[dMMP])[k]; + //(D.f[dPMP])[ktse ] = (Dbuff.f[dPMP])[k]; + //(D.f[dMPP])[ktnw ] = (Dbuff.f[dMPP])[k]; + //(D.f[dPPM])[kbne ] = (Dbuff.f[dPPM])[k]; + //(D.f[dMMM])[kbsw ] = (Dbuff.f[dMMM])[k]; + //(D.f[dPMM])[kbse ] = (Dbuff.f[dPMM])[k]; + //(D.f[dMPM])[kbnw ] = (Dbuff.f[dMPM])[k]; + (D.f[dM00])[kw ] = (Dbuff.f[dP00])[k]; + (D.f[dP00])[ke ] = (Dbuff.f[dM00])[k]; + (D.f[d0M0])[ks ] = (Dbuff.f[d0P0])[k]; + (D.f[d0P0])[kn ] = (Dbuff.f[d0M0])[k]; + (D.f[d00M])[kb ] = (Dbuff.f[d00P])[k]; + (D.f[d00P])[kt ] = (Dbuff.f[d00M])[k]; + (D.f[dMM0])[ksw ] = (Dbuff.f[dPP0])[k]; + (D.f[dPP0])[kne ] = (Dbuff.f[dMM0])[k]; + (D.f[dMP0])[knw ] = (Dbuff.f[dPM0])[k]; + (D.f[dPM0])[kse ] = (Dbuff.f[dMP0])[k]; + (D.f[dM0M])[kbw ] = (Dbuff.f[dP0P])[k]; + (D.f[dP0P])[kte ] = (Dbuff.f[dM0M])[k]; + (D.f[dM0P])[ktw ] = (Dbuff.f[dP0M])[k]; + (D.f[dP0M])[kbe ] = (Dbuff.f[dM0P])[k]; + (D.f[d0MM])[kbs ] = (Dbuff.f[d0PP])[k]; + (D.f[d0PP])[ktn ] = (Dbuff.f[d0MM])[k]; + (D.f[d0MP])[kts ] = (Dbuff.f[d0PM])[k]; + (D.f[d0PM])[kbn ] = (Dbuff.f[d0MP])[k]; + (D.f[d000])[kzero] = (Dbuff.f[d000])[k]; + (D.f[dMMM])[kbsw ] = (Dbuff.f[dPPP])[k]; + (D.f[dPPM])[kbne ] = (Dbuff.f[dMMP])[k]; + (D.f[dMPM])[kbnw ] = (Dbuff.f[dPMP])[k]; + (D.f[dPMM])[kbse ] = (Dbuff.f[dMPP])[k]; + (D.f[dMMP])[ktsw ] = (Dbuff.f[dPPM])[k]; + (D.f[dPPP])[ktne ] = (Dbuff.f[dMMM])[k]; + (D.f[dMPP])[ktnw ] = (Dbuff.f[dPMM])[k]; + (D.f[dPMP])[ktse ] = (Dbuff.f[dMPM])[k]; + } +} +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +__global__ void getSendFsPre27(real* DD, + real* bufferFs, + int* sendIndex, + int buffmax, + unsigned int* neighborX, + unsigned int* neighborY, + unsigned int* neighborZ, + unsigned long long 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 + + const unsigned nx = blockDim.x; + const unsigned ny = gridDim.x; + + const unsigned k = nx*(ny*z + y) + x; + ////////////////////////////////////////////////////////////////////////// + + if(k<buffmax) + { + //////////////////////////////////////////////////////////////////////////////// + //set index + unsigned int kIndex = sendIndex[k]; + unsigned int kzero = kIndex; + unsigned int ke = kIndex; + unsigned int kw = neighborX[kIndex]; + unsigned int kn = kIndex; + unsigned int ks = neighborY[kIndex]; + unsigned int kt = kIndex; + unsigned int kb = neighborZ[kIndex]; + unsigned int ksw = neighborY[kw]; + unsigned int kne = kIndex; + unsigned int kse = ks; + unsigned int knw = kw; + unsigned int kbw = neighborZ[kw]; + unsigned int kte = kIndex; + unsigned int kbe = kb; + unsigned int ktw = kw; + unsigned int kbs = neighborZ[ks]; + unsigned int ktn = kIndex; + 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 = kIndex; + unsigned int kbsw = neighborZ[ksw]; + //////////////////////////////////////////////////////////////////////////////// + //set Pointer for Fs + Distributions27 D; + if (isEvenTimestep==true) + { + D.f[dP00] = &DD[dP00 * numberOfLBnodes]; + D.f[dM00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00P] = &DD[d00P * numberOfLBnodes]; + D.f[d00M] = &DD[d00M * numberOfLBnodes]; + D.f[dPP0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dMM0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dP0P] = &DD[dP0P * numberOfLBnodes]; + D.f[dM0M] = &DD[dM0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dP0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dM0P * numberOfLBnodes]; + D.f[d0PP] = &DD[d0PP * numberOfLBnodes]; + D.f[d0MM] = &DD[d0MM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0PM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dPPP * numberOfLBnodes]; + D.f[dMMP] = &DD[dMMP * numberOfLBnodes]; + D.f[dPMP] = &DD[dPMP * numberOfLBnodes]; + D.f[dMPP] = &DD[dMPP * numberOfLBnodes]; + D.f[dPPM] = &DD[dPPM * numberOfLBnodes]; + D.f[dMMM] = &DD[dMMM * numberOfLBnodes]; + D.f[dPMM] = &DD[dPMM * numberOfLBnodes]; + D.f[dMPM] = &DD[dMPM * numberOfLBnodes]; + } + else + { + D.f[dM00] = &DD[dP00 * numberOfLBnodes]; + D.f[dP00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00M] = &DD[d00P * numberOfLBnodes]; + D.f[d00P] = &DD[d00M * numberOfLBnodes]; + D.f[dMM0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dPP0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dM0M] = &DD[dP0P * numberOfLBnodes]; + D.f[dP0P] = &DD[dM0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dP0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dM0P * numberOfLBnodes]; + D.f[d0MM] = &DD[d0PP * numberOfLBnodes]; + D.f[d0PP] = &DD[d0MM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0PM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dMMM * numberOfLBnodes]; + D.f[dMMP] = &DD[dPPM * numberOfLBnodes]; + D.f[dPMP] = &DD[dMPM * numberOfLBnodes]; + D.f[dMPP] = &DD[dPMM * numberOfLBnodes]; + D.f[dPPM] = &DD[dMMP * numberOfLBnodes]; + D.f[dMMM] = &DD[dPPP * numberOfLBnodes]; + D.f[dPMM] = &DD[dMPP * numberOfLBnodes]; + D.f[dMPM] = &DD[dPMP * numberOfLBnodes]; + } + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //set Pointer for Buffer Fs + Distributions27 Dbuff; + Dbuff.f[dP00] = &bufferFs[dP00 * buffmax]; + Dbuff.f[dM00] = &bufferFs[dM00 * buffmax]; + Dbuff.f[d0P0] = &bufferFs[d0P0 * buffmax]; + Dbuff.f[d0M0] = &bufferFs[d0M0 * buffmax]; + Dbuff.f[d00P] = &bufferFs[d00P * buffmax]; + Dbuff.f[d00M] = &bufferFs[d00M * buffmax]; + Dbuff.f[dPP0] = &bufferFs[dPP0 * buffmax]; + Dbuff.f[dMM0] = &bufferFs[dMM0 * buffmax]; + Dbuff.f[dPM0] = &bufferFs[dPM0 * buffmax]; + Dbuff.f[dMP0] = &bufferFs[dMP0 * buffmax]; + Dbuff.f[dP0P] = &bufferFs[dP0P * buffmax]; + Dbuff.f[dM0M] = &bufferFs[dM0M * buffmax]; + Dbuff.f[dP0M] = &bufferFs[dP0M * buffmax]; + Dbuff.f[dM0P] = &bufferFs[dM0P * buffmax]; + Dbuff.f[d0PP] = &bufferFs[d0PP * buffmax]; + Dbuff.f[d0MM] = &bufferFs[d0MM * buffmax]; + Dbuff.f[d0PM] = &bufferFs[d0PM * buffmax]; + Dbuff.f[d0MP] = &bufferFs[d0MP * buffmax]; + Dbuff.f[d000] = &bufferFs[d000 * buffmax]; + Dbuff.f[dPPP] = &bufferFs[dPPP * buffmax]; + Dbuff.f[dMMP] = &bufferFs[dMMP * buffmax]; + Dbuff.f[dPMP] = &bufferFs[dPMP * buffmax]; + Dbuff.f[dMPP] = &bufferFs[dMPP * buffmax]; + Dbuff.f[dPPM] = &bufferFs[dPPM * buffmax]; + Dbuff.f[dMMM] = &bufferFs[dMMM * buffmax]; + Dbuff.f[dPMM] = &bufferFs[dPMM * buffmax]; + Dbuff.f[dMPM] = &bufferFs[dMPM * buffmax]; + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //copy to buffer + (Dbuff.f[dP00])[k] = (D.f[dP00])[ke ]; + (Dbuff.f[dM00])[k] = (D.f[dM00])[kw ]; + (Dbuff.f[d0P0])[k] = (D.f[d0P0])[kn ]; + (Dbuff.f[d0M0])[k] = (D.f[d0M0])[ks ]; + (Dbuff.f[d00P])[k] = (D.f[d00P])[kt ]; + (Dbuff.f[d00M])[k] = (D.f[d00M])[kb ]; + (Dbuff.f[dPP0])[k] = (D.f[dPP0])[kne ]; + (Dbuff.f[dMM0])[k] = (D.f[dMM0])[ksw ]; + (Dbuff.f[dPM0])[k] = (D.f[dPM0])[kse ]; + (Dbuff.f[dMP0])[k] = (D.f[dMP0])[knw ]; + (Dbuff.f[dP0P])[k] = (D.f[dP0P])[kte ]; + (Dbuff.f[dM0M])[k] = (D.f[dM0M])[kbw ]; + (Dbuff.f[dP0M])[k] = (D.f[dP0M])[kbe ]; + (Dbuff.f[dM0P])[k] = (D.f[dM0P])[ktw ]; + (Dbuff.f[d0PP])[k] = (D.f[d0PP])[ktn ]; + (Dbuff.f[d0MM])[k] = (D.f[d0MM])[kbs ]; + (Dbuff.f[d0PM])[k] = (D.f[d0PM])[kbn ]; + (Dbuff.f[d0MP])[k] = (D.f[d0MP])[kts ]; + (Dbuff.f[d000])[k] = (D.f[d000])[kzero]; + (Dbuff.f[dPPP])[k] = (D.f[dPPP])[ktne ]; + (Dbuff.f[dMMP])[k] = (D.f[dMMP])[ktsw ]; + (Dbuff.f[dPMP])[k] = (D.f[dPMP])[ktse ]; + (Dbuff.f[dMPP])[k] = (D.f[dMPP])[ktnw ]; + (Dbuff.f[dPPM])[k] = (D.f[dPPM])[kbne ]; + (Dbuff.f[dMMM])[k] = (D.f[dMMM])[kbsw ]; + (Dbuff.f[dPMM])[k] = (D.f[dPMM])[kbse ]; + (Dbuff.f[dMPM])[k] = (D.f[dMPM])[kbnw ]; + } +} +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +__global__ void setRecvFsPre27(real* DD, + real* bufferFs, + int* recvIndex, + int buffmax, + unsigned int* neighborX, + unsigned int* neighborY, + unsigned int* neighborZ, + unsigned long long 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 + + const unsigned nx = blockDim.x; + const unsigned ny = gridDim.x; + + const unsigned k = nx*(ny*z + y) + x; + ////////////////////////////////////////////////////////////////////////// + + if(k<buffmax) + { + //////////////////////////////////////////////////////////////////////////////// + //set index + unsigned int kIndex = recvIndex[k]; + unsigned int kzero = kIndex; + unsigned int ke = kIndex; + unsigned int kw = neighborX[kIndex]; + unsigned int kn = kIndex; + unsigned int ks = neighborY[kIndex]; + unsigned int kt = kIndex; + unsigned int kb = neighborZ[kIndex]; + unsigned int ksw = neighborY[kw]; + unsigned int kne = kIndex; + unsigned int kse = ks; + unsigned int knw = kw; + unsigned int kbw = neighborZ[kw]; + unsigned int kte = kIndex; + unsigned int kbe = kb; + unsigned int ktw = kw; + unsigned int kbs = neighborZ[ks]; + unsigned int ktn = kIndex; + 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 = kIndex; + unsigned int kbsw = neighborZ[ksw]; + //////////////////////////////////////////////////////////////////////////////// + //set Pointer for Fs + Distributions27 D; + if (isEvenTimestep==true) + { + D.f[dP00] = &DD[dP00 * numberOfLBnodes]; + D.f[dM00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00P] = &DD[d00P * numberOfLBnodes]; + D.f[d00M] = &DD[d00M * numberOfLBnodes]; + D.f[dPP0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dMM0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dP0P] = &DD[dP0P * numberOfLBnodes]; + D.f[dM0M] = &DD[dM0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dP0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dM0P * numberOfLBnodes]; + D.f[d0PP] = &DD[d0PP * numberOfLBnodes]; + D.f[d0MM] = &DD[d0MM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0PM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dPPP * numberOfLBnodes]; + D.f[dMMP] = &DD[dMMP * numberOfLBnodes]; + D.f[dPMP] = &DD[dPMP * numberOfLBnodes]; + D.f[dMPP] = &DD[dMPP * numberOfLBnodes]; + D.f[dPPM] = &DD[dPPM * numberOfLBnodes]; + D.f[dMMM] = &DD[dMMM * numberOfLBnodes]; + D.f[dPMM] = &DD[dPMM * numberOfLBnodes]; + D.f[dMPM] = &DD[dMPM * numberOfLBnodes]; + } + else + { + D.f[dM00] = &DD[dP00 * numberOfLBnodes]; + D.f[dP00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00M] = &DD[d00P * numberOfLBnodes]; + D.f[d00P] = &DD[d00M * numberOfLBnodes]; + D.f[dMM0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dPP0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dM0M] = &DD[dP0P * numberOfLBnodes]; + D.f[dP0P] = &DD[dM0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dP0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dM0P * numberOfLBnodes]; + D.f[d0MM] = &DD[d0PP * numberOfLBnodes]; + D.f[d0PP] = &DD[d0MM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0PM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dMMM * numberOfLBnodes]; + D.f[dMMP] = &DD[dPPM * numberOfLBnodes]; + D.f[dPMP] = &DD[dMPM * numberOfLBnodes]; + D.f[dMPP] = &DD[dPMM * numberOfLBnodes]; + D.f[dPPM] = &DD[dMMP * numberOfLBnodes]; + D.f[dMMM] = &DD[dPPP * numberOfLBnodes]; + D.f[dPMM] = &DD[dMPP * numberOfLBnodes]; + D.f[dMPM] = &DD[dPMP * numberOfLBnodes]; + } + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //set Pointer for Buffer Fs + Distributions27 Dbuff; + Dbuff.f[dP00] = &bufferFs[dP00 * buffmax]; + Dbuff.f[dM00] = &bufferFs[dM00 * buffmax]; + Dbuff.f[d0P0] = &bufferFs[d0P0 * buffmax]; + Dbuff.f[d0M0] = &bufferFs[d0M0 * buffmax]; + Dbuff.f[d00P] = &bufferFs[d00P * buffmax]; + Dbuff.f[d00M] = &bufferFs[d00M * buffmax]; + Dbuff.f[dPP0] = &bufferFs[dPP0 * buffmax]; + Dbuff.f[dMM0] = &bufferFs[dMM0 * buffmax]; + Dbuff.f[dPM0] = &bufferFs[dPM0 * buffmax]; + Dbuff.f[dMP0] = &bufferFs[dMP0 * buffmax]; + Dbuff.f[dP0P] = &bufferFs[dP0P * buffmax]; + Dbuff.f[dM0M] = &bufferFs[dM0M * buffmax]; + Dbuff.f[dP0M] = &bufferFs[dP0M * buffmax]; + Dbuff.f[dM0P] = &bufferFs[dM0P * buffmax]; + Dbuff.f[d0PP] = &bufferFs[d0PP * buffmax]; + Dbuff.f[d0MM] = &bufferFs[d0MM * buffmax]; + Dbuff.f[d0PM] = &bufferFs[d0PM * buffmax]; + Dbuff.f[d0MP] = &bufferFs[d0MP * buffmax]; + Dbuff.f[d000] = &bufferFs[d000 * buffmax]; + Dbuff.f[dPPP] = &bufferFs[dPPP * buffmax]; + Dbuff.f[dMMP] = &bufferFs[dMMP * buffmax]; + Dbuff.f[dPMP] = &bufferFs[dPMP * buffmax]; + Dbuff.f[dMPP] = &bufferFs[dMPP * buffmax]; + Dbuff.f[dPPM] = &bufferFs[dPPM * buffmax]; + Dbuff.f[dMMM] = &bufferFs[dMMM * buffmax]; + Dbuff.f[dPMM] = &bufferFs[dPMM * buffmax]; + Dbuff.f[dMPM] = &bufferFs[dMPM * buffmax]; + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //copy from buffer + (D.f[dP00])[ke ] = (Dbuff.f[dP00])[k]; + (D.f[dM00])[kw ] = (Dbuff.f[dM00])[k]; + (D.f[d0P0])[kn ] = (Dbuff.f[d0P0])[k]; + (D.f[d0M0])[ks ] = (Dbuff.f[d0M0])[k]; + (D.f[d00P])[kt ] = (Dbuff.f[d00P])[k]; + (D.f[d00M])[kb ] = (Dbuff.f[d00M])[k]; + (D.f[dPP0])[kne ] = (Dbuff.f[dPP0])[k]; + (D.f[dMM0])[ksw ] = (Dbuff.f[dMM0])[k]; + (D.f[dPM0])[kse ] = (Dbuff.f[dPM0])[k]; + (D.f[dMP0])[knw ] = (Dbuff.f[dMP0])[k]; + (D.f[dP0P])[kte ] = (Dbuff.f[dP0P])[k]; + (D.f[dM0M])[kbw ] = (Dbuff.f[dM0M])[k]; + (D.f[dP0M])[kbe ] = (Dbuff.f[dP0M])[k]; + (D.f[dM0P])[ktw ] = (Dbuff.f[dM0P])[k]; + (D.f[d0PP])[ktn ] = (Dbuff.f[d0PP])[k]; + (D.f[d0MM])[kbs ] = (Dbuff.f[d0MM])[k]; + (D.f[d0PM])[kbn ] = (Dbuff.f[d0PM])[k]; + (D.f[d0MP])[kts ] = (Dbuff.f[d0MP])[k]; + (D.f[d000])[kzero] = (Dbuff.f[d000])[k]; + (D.f[dPPP])[ktne ] = (Dbuff.f[dPPP])[k]; + (D.f[dMMP])[ktsw ] = (Dbuff.f[dMMP])[k]; + (D.f[dPMP])[ktse ] = (Dbuff.f[dPMP])[k]; + (D.f[dMPP])[ktnw ] = (Dbuff.f[dMPP])[k]; + (D.f[dPPM])[kbne ] = (Dbuff.f[dPPM])[k]; + (D.f[dMMM])[kbsw ] = (Dbuff.f[dMMM])[k]; + (D.f[dPMM])[kbse ] = (Dbuff.f[dPMM])[k]; + (D.f[dMPM])[kbnw ] = (Dbuff.f[dMPM])[k]; + } +} +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +__global__ void getSendGsF3( + real* G6, + real* bufferGs, + int* sendIndex, + int buffmax, + unsigned int* neighborX, + unsigned int* neighborY, + unsigned int* neighborZ, + unsigned long long 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 + + const unsigned nx = blockDim.x; + const unsigned ny = gridDim.x; + + const unsigned k = nx*(ny*z + y) + x; + ////////////////////////////////////////////////////////////////////////// + + if (k < buffmax) + { + //////////////////////////////////////////////////////////////////////////////// + //set index + unsigned int kIndex = sendIndex[k]; + unsigned int kr = kIndex; + unsigned int kw = neighborX[kIndex]; + unsigned int ks = neighborY[kIndex]; + unsigned int kb = neighborZ[kIndex]; + //////////////////////////////////////////////////////////////////////////////// + //set Pointer for Gs + Distributions6 G; + if (isEvenTimestep) + { + G.g[dP00] = &G6[dP00 * numberOfLBnodes]; + G.g[dM00] = &G6[dM00 * numberOfLBnodes]; + G.g[d0P0] = &G6[d0P0 * numberOfLBnodes]; + G.g[d0M0] = &G6[d0M0 * numberOfLBnodes]; + G.g[d00P] = &G6[d00P * numberOfLBnodes]; + G.g[d00M] = &G6[d00M * numberOfLBnodes]; + } + else + { + G.g[dM00] = &G6[dP00 * numberOfLBnodes]; + G.g[dP00] = &G6[dM00 * numberOfLBnodes]; + G.g[d0M0] = &G6[d0P0 * numberOfLBnodes]; + G.g[d0P0] = &G6[d0M0 * numberOfLBnodes]; + G.g[d00M] = &G6[d00P * numberOfLBnodes]; + G.g[d00P] = &G6[d00M * numberOfLBnodes]; + } + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //set Pointer for Buffer Gs + Distributions6 Dbuff; + Dbuff.g[dP00] = &bufferGs[dP00 * buffmax]; + Dbuff.g[dM00] = &bufferGs[dM00 * buffmax]; + Dbuff.g[d0P0] = &bufferGs[d0P0 * buffmax]; + Dbuff.g[d0M0] = &bufferGs[d0M0 * buffmax]; + Dbuff.g[d00P] = &bufferGs[d00P * buffmax]; + Dbuff.g[d00M] = &bufferGs[d00M * buffmax]; + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //write Gs to buffer + (Dbuff.g[dP00])[k] = (G.g[dM00])[kw]; + (Dbuff.g[dM00])[k] = (G.g[dP00])[kr]; + (Dbuff.g[d0P0])[k] = (G.g[d0M0])[ks]; + (Dbuff.g[d0M0])[k] = (G.g[d0P0])[kr]; + (Dbuff.g[d00P])[k] = (G.g[d00M])[kb]; + (Dbuff.g[d00M])[k] = (G.g[d00P])[kr]; + } +} +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +__global__ void setRecvGsF3( + real* G6, + real* bufferGs, + int* recvIndex, + int buffmax, + unsigned int* neighborX, + unsigned int* neighborY, + unsigned int* neighborZ, + unsigned long long 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 + + const unsigned nx = blockDim.x; + const unsigned ny = gridDim.x; + + const unsigned k = nx*(ny*z + y) + x; + ////////////////////////////////////////////////////////////////////////// + + if (k < buffmax) + { + //////////////////////////////////////////////////////////////////////////////// + //set index + unsigned int kIndex = recvIndex[k]; + unsigned int kr = kIndex; + unsigned int kw = neighborX[kIndex]; + unsigned int ks = neighborY[kIndex]; + unsigned int kb = neighborZ[kIndex]; + //////////////////////////////////////////////////////////////////////////////// + //set Pointer for Gs + Distributions6 G; + if (isEvenTimestep) + { + G.g[dP00] = &G6[dP00 * numberOfLBnodes]; + G.g[dM00] = &G6[dM00 * numberOfLBnodes]; + G.g[d0P0] = &G6[d0P0 * numberOfLBnodes]; + G.g[d0M0] = &G6[d0M0 * numberOfLBnodes]; + G.g[d00P] = &G6[d00P * numberOfLBnodes]; + G.g[d00M] = &G6[d00M * numberOfLBnodes]; + } + else + { + G.g[dM00] = &G6[dP00 * numberOfLBnodes]; + G.g[dP00] = &G6[dM00 * numberOfLBnodes]; + G.g[d0M0] = &G6[d0P0 * numberOfLBnodes]; + G.g[d0P0] = &G6[d0M0 * numberOfLBnodes]; + G.g[d00M] = &G6[d00P * numberOfLBnodes]; + G.g[d00P] = &G6[d00M * numberOfLBnodes]; + } + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //set Pointer for Buffer Gs + Distributions6 Dbuff; + Dbuff.g[dP00] = &bufferGs[dP00 * buffmax]; + Dbuff.g[dM00] = &bufferGs[dM00 * buffmax]; + Dbuff.g[d0P0] = &bufferGs[d0P0 * buffmax]; + Dbuff.g[d0M0] = &bufferGs[d0M0 * buffmax]; + Dbuff.g[d00P] = &bufferGs[d00P * buffmax]; + Dbuff.g[d00M] = &bufferGs[d00M * buffmax]; + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //write buffer to Gs + (G.g[dM00])[kw] = (Dbuff.g[dP00])[k]; + (G.g[dP00])[kr] = (Dbuff.g[dM00])[k]; + (G.g[d0M0])[ks] = (Dbuff.g[d0P0])[k]; + (G.g[d0P0])[kr] = (Dbuff.g[d0M0])[k]; + (G.g[d00M])[kb] = (Dbuff.g[d00P])[k]; + (G.g[d00P])[kr] = (Dbuff.g[d00M])[k]; + } +} +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/src/gpu/VirtualFluids_GPU/GPU/GPU_Interface.h b/src/gpu/core/GPU/GPU_Interface.h similarity index 100% rename from src/gpu/VirtualFluids_GPU/GPU/GPU_Interface.h rename to src/gpu/core/GPU/GPU_Interface.h diff --git a/src/gpu/VirtualFluids_GPU/GPU/GPU_Kernels.cuh b/src/gpu/core/GPU/GPU_Kernels.cuh similarity index 99% rename from src/gpu/VirtualFluids_GPU/GPU/GPU_Kernels.cuh rename to src/gpu/core/GPU/GPU_Kernels.cuh index 941f8325297cd62480f36a6bb348e219bb07dd27..b8bb1f69ce80b31c4e2c3477ddeadee4bd9f4989 100644 --- a/src/gpu/VirtualFluids_GPU/GPU/GPU_Kernels.cuh +++ b/src/gpu/core/GPU/GPU_Kernels.cuh @@ -207,7 +207,7 @@ __global__ void LB_Kernel_WaleBySoniMalav_Cum_AA2016_Comp_SP_27( bool EvenOrOdd); -__global__ void LB_Kernel_PM_Cum_One_Comp_SP_27( real omega, +__global__ void K15CompressibleNavierStokesPorousMedia_Device( real omega, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, @@ -222,7 +222,7 @@ __global__ void LB_Kernel_PM_Cum_One_Comp_SP_27( real omega, unsigned int* nodeIdsPorousMedia, bool EvenOrOdd); -__global__ void LB_Kernel_AD_Incomp_7( real diffusivity, +__global__ void B12IncompressibleAdvectionDiffusionD3Q7_Device( real diffusivity, unsigned int* bcMatD, unsigned int* neighborX, unsigned int* neighborY, @@ -232,7 +232,7 @@ __global__ void LB_Kernel_AD_Incomp_7( real diffusivity, unsigned long long numberOfLBnodes, bool EvenOrOdd); -__global__ void LB_Kernel_AD_Incomp_27( real diffusivity, +__global__ void F16IncompressibleAdvectionDiffusion_Device( real diffusivity, unsigned int* bcMatD, unsigned int* neighborX, unsigned int* neighborY, diff --git a/src/gpu/VirtualFluids_GPU/GPU/GeometryUtils.h b/src/gpu/core/GPU/GeometryUtils.h similarity index 99% rename from src/gpu/VirtualFluids_GPU/GPU/GeometryUtils.h rename to src/gpu/core/GPU/GeometryUtils.h index d312c826036c1b5d856da0f0ab52832ba89c2f57..37fe00b6b67e1376e79500f4430db47736f18c46 100644 --- a/src/gpu/VirtualFluids_GPU/GPU/GeometryUtils.h +++ b/src/gpu/core/GPU/GeometryUtils.h @@ -1,9 +1,9 @@ #ifndef _GEOMETRYUTILS_H #define _GEOMETRYUTILS_H -#include "DataTypes.h" +#include <basics/DataTypes.h> -__inline__ __host__ __device__ void getNeighborIndicesOfBSW( uint k, //index of DIR_MMM node +__inline__ __host__ __device__ void getNeighborIndicesOfBSW( uint k, //index of dMMM node uint &ke, uint &kn, uint &kt, uint &kne, uint &kte,uint &ktn, uint &ktne, uint* neighborX, uint* neighborY, uint* neighborZ) { diff --git a/src/gpu/VirtualFluids_GPU/GPU/GeometryUtilsTest.cu b/src/gpu/core/GPU/GeometryUtilsTest.cu similarity index 100% rename from src/gpu/VirtualFluids_GPU/GPU/GeometryUtilsTest.cu rename to src/gpu/core/GPU/GeometryUtilsTest.cu diff --git a/src/gpu/VirtualFluids_GPU/GPU/GridScaling/ScaleCF27.cu b/src/gpu/core/GPU/GridScaling/ScaleCF27.cu similarity index 96% rename from src/gpu/VirtualFluids_GPU/GPU/GridScaling/ScaleCF27.cu rename to src/gpu/core/GPU/GridScaling/ScaleCF27.cu index 4c586faa2fa60fe2894d86f97c680c5f0f11087b..222e29ae624facc3727ca4249cd4723b9dea7c85 100644 --- a/src/gpu/VirtualFluids_GPU/GPU/GridScaling/ScaleCF27.cu +++ b/src/gpu/core/GPU/GridScaling/ScaleCF27.cu @@ -43,33 +43,33 @@ __global__ void scaleCF_0817_comp_27( real* DC, *f000dest, *fMMMdest, *fMMPdest, *fMPPdest, *fMPMdest, *fPPMdest, *fPPPdest, *fPMPdest, *fPMMdest; - fP00dest = &DF[DIR_P00 * numberOfLBnodesFine]; - fM00dest = &DF[DIR_M00 * numberOfLBnodesFine]; - f0P0dest = &DF[DIR_0P0 * numberOfLBnodesFine]; - f0M0dest = &DF[DIR_0M0 * numberOfLBnodesFine]; - f00Pdest = &DF[DIR_00P * numberOfLBnodesFine]; - f00Mdest = &DF[DIR_00M * numberOfLBnodesFine]; - fPP0dest = &DF[DIR_PP0 * numberOfLBnodesFine]; - fMM0dest = &DF[DIR_MM0 * numberOfLBnodesFine]; - fPM0dest = &DF[DIR_PM0 * numberOfLBnodesFine]; - fMP0dest = &DF[DIR_MP0 * numberOfLBnodesFine]; - fP0Pdest = &DF[DIR_P0P * numberOfLBnodesFine]; - fM0Mdest = &DF[DIR_M0M * numberOfLBnodesFine]; - fP0Mdest = &DF[DIR_P0M * numberOfLBnodesFine]; - fM0Pdest = &DF[DIR_M0P * numberOfLBnodesFine]; - f0PPdest = &DF[DIR_0PP * numberOfLBnodesFine]; - f0MMdest = &DF[DIR_0MM * numberOfLBnodesFine]; - f0PMdest = &DF[DIR_0PM * numberOfLBnodesFine]; - f0MPdest = &DF[DIR_0MP * numberOfLBnodesFine]; - f000dest = &DF[DIR_000 * numberOfLBnodesFine]; - fMMMdest = &DF[DIR_MMM * numberOfLBnodesFine]; - fMMPdest = &DF[DIR_MMP * numberOfLBnodesFine]; - fMPPdest = &DF[DIR_MPP * numberOfLBnodesFine]; - fMPMdest = &DF[DIR_MPM * numberOfLBnodesFine]; - fPPMdest = &DF[DIR_PPM * numberOfLBnodesFine]; - fPPPdest = &DF[DIR_PPP * numberOfLBnodesFine]; - fPMPdest = &DF[DIR_PMP * numberOfLBnodesFine]; - fPMMdest = &DF[DIR_PMM * numberOfLBnodesFine]; + fP00dest = &DF[dP00 * numberOfLBnodesFine]; + fM00dest = &DF[dM00 * numberOfLBnodesFine]; + f0P0dest = &DF[d0P0 * numberOfLBnodesFine]; + f0M0dest = &DF[d0M0 * numberOfLBnodesFine]; + f00Pdest = &DF[d00P * numberOfLBnodesFine]; + f00Mdest = &DF[d00M * numberOfLBnodesFine]; + fPP0dest = &DF[dPP0 * numberOfLBnodesFine]; + fMM0dest = &DF[dMM0 * numberOfLBnodesFine]; + fPM0dest = &DF[dPM0 * numberOfLBnodesFine]; + fMP0dest = &DF[dMP0 * numberOfLBnodesFine]; + fP0Pdest = &DF[dP0P * numberOfLBnodesFine]; + fM0Mdest = &DF[dM0M * numberOfLBnodesFine]; + fP0Mdest = &DF[dP0M * numberOfLBnodesFine]; + fM0Pdest = &DF[dM0P * numberOfLBnodesFine]; + f0PPdest = &DF[d0PP * numberOfLBnodesFine]; + f0MMdest = &DF[d0MM * numberOfLBnodesFine]; + f0PMdest = &DF[d0PM * numberOfLBnodesFine]; + f0MPdest = &DF[d0MP * numberOfLBnodesFine]; + f000dest = &DF[d000 * numberOfLBnodesFine]; + fMMMdest = &DF[dMMM * numberOfLBnodesFine]; + fMMPdest = &DF[dMMP * numberOfLBnodesFine]; + fMPPdest = &DF[dMPP * numberOfLBnodesFine]; + fMPMdest = &DF[dMPM * numberOfLBnodesFine]; + fPPMdest = &DF[dPPM * numberOfLBnodesFine]; + fPPPdest = &DF[dPPP * numberOfLBnodesFine]; + fPMPdest = &DF[dPMP * numberOfLBnodesFine]; + fPMMdest = &DF[dPMM * numberOfLBnodesFine]; real *fP00source, *fM00source, *f0P0source, *f0M0source, *f00Psource, *f00Msource, *fPP0source, *fMM0source, *fPM0source, @@ -78,63 +78,63 @@ __global__ void scaleCF_0817_comp_27( real* DC, if (isEvenTimestep == true) { - fP00source = &DC[DIR_P00 * numberOfLBnodesCoarse]; - fM00source = &DC[DIR_M00 * numberOfLBnodesCoarse]; - f0P0source = &DC[DIR_0P0 * numberOfLBnodesCoarse]; - f0M0source = &DC[DIR_0M0 * numberOfLBnodesCoarse]; - f00Psource = &DC[DIR_00P * numberOfLBnodesCoarse]; - f00Msource = &DC[DIR_00M * numberOfLBnodesCoarse]; - fPP0source = &DC[DIR_PP0 * numberOfLBnodesCoarse]; - fMM0source = &DC[DIR_MM0 * numberOfLBnodesCoarse]; - fPM0source = &DC[DIR_PM0 * numberOfLBnodesCoarse]; - fMP0source = &DC[DIR_MP0 * numberOfLBnodesCoarse]; - fP0Psource = &DC[DIR_P0P * numberOfLBnodesCoarse]; - fM0Msource = &DC[DIR_M0M * numberOfLBnodesCoarse]; - fP0Msource = &DC[DIR_P0M * numberOfLBnodesCoarse]; - fM0Psource = &DC[DIR_M0P * numberOfLBnodesCoarse]; - f0PPsource = &DC[DIR_0PP * numberOfLBnodesCoarse]; - f0MMsource = &DC[DIR_0MM * numberOfLBnodesCoarse]; - f0PMsource = &DC[DIR_0PM * numberOfLBnodesCoarse]; - f0MPsource = &DC[DIR_0MP * numberOfLBnodesCoarse]; - f000source = &DC[DIR_000 * numberOfLBnodesCoarse]; - fMMMsource = &DC[DIR_MMM * numberOfLBnodesCoarse]; - fMMPsource = &DC[DIR_MMP * numberOfLBnodesCoarse]; - fMPPsource = &DC[DIR_MPP * numberOfLBnodesCoarse]; - fMPMsource = &DC[DIR_MPM * numberOfLBnodesCoarse]; - fPPMsource = &DC[DIR_PPM * numberOfLBnodesCoarse]; - fPPPsource = &DC[DIR_PPP * numberOfLBnodesCoarse]; - fPMPsource = &DC[DIR_PMP * numberOfLBnodesCoarse]; - fPMMsource = &DC[DIR_PMM * numberOfLBnodesCoarse]; + fP00source = &DC[dP00 * numberOfLBnodesCoarse]; + fM00source = &DC[dM00 * numberOfLBnodesCoarse]; + f0P0source = &DC[d0P0 * numberOfLBnodesCoarse]; + f0M0source = &DC[d0M0 * numberOfLBnodesCoarse]; + f00Psource = &DC[d00P * numberOfLBnodesCoarse]; + f00Msource = &DC[d00M * numberOfLBnodesCoarse]; + fPP0source = &DC[dPP0 * numberOfLBnodesCoarse]; + fMM0source = &DC[dMM0 * numberOfLBnodesCoarse]; + fPM0source = &DC[dPM0 * numberOfLBnodesCoarse]; + fMP0source = &DC[dMP0 * numberOfLBnodesCoarse]; + fP0Psource = &DC[dP0P * numberOfLBnodesCoarse]; + fM0Msource = &DC[dM0M * numberOfLBnodesCoarse]; + fP0Msource = &DC[dP0M * numberOfLBnodesCoarse]; + fM0Psource = &DC[dM0P * numberOfLBnodesCoarse]; + f0PPsource = &DC[d0PP * numberOfLBnodesCoarse]; + f0MMsource = &DC[d0MM * numberOfLBnodesCoarse]; + f0PMsource = &DC[d0PM * numberOfLBnodesCoarse]; + f0MPsource = &DC[d0MP * numberOfLBnodesCoarse]; + f000source = &DC[d000 * numberOfLBnodesCoarse]; + fMMMsource = &DC[dMMM * numberOfLBnodesCoarse]; + fMMPsource = &DC[dMMP * numberOfLBnodesCoarse]; + fMPPsource = &DC[dMPP * numberOfLBnodesCoarse]; + fMPMsource = &DC[dMPM * numberOfLBnodesCoarse]; + fPPMsource = &DC[dPPM * numberOfLBnodesCoarse]; + fPPPsource = &DC[dPPP * numberOfLBnodesCoarse]; + fPMPsource = &DC[dPMP * numberOfLBnodesCoarse]; + fPMMsource = &DC[dPMM * numberOfLBnodesCoarse]; } else { - fP00source = &DC[DIR_M00 * numberOfLBnodesCoarse]; - fM00source = &DC[DIR_P00 * numberOfLBnodesCoarse]; - f0P0source = &DC[DIR_0M0 * numberOfLBnodesCoarse]; - f0M0source = &DC[DIR_0P0 * numberOfLBnodesCoarse]; - f00Psource = &DC[DIR_00M * numberOfLBnodesCoarse]; - f00Msource = &DC[DIR_00P * numberOfLBnodesCoarse]; - fPP0source = &DC[DIR_MM0 * numberOfLBnodesCoarse]; - fMM0source = &DC[DIR_PP0 * numberOfLBnodesCoarse]; - fPM0source = &DC[DIR_MP0 * numberOfLBnodesCoarse]; - fMP0source = &DC[DIR_PM0 * numberOfLBnodesCoarse]; - fP0Psource = &DC[DIR_M0M * numberOfLBnodesCoarse]; - fM0Msource = &DC[DIR_P0P * numberOfLBnodesCoarse]; - fP0Msource = &DC[DIR_M0P * numberOfLBnodesCoarse]; - fM0Psource = &DC[DIR_P0M * numberOfLBnodesCoarse]; - f0PPsource = &DC[DIR_0MM * numberOfLBnodesCoarse]; - f0MMsource = &DC[DIR_0PP * numberOfLBnodesCoarse]; - f0PMsource = &DC[DIR_0MP * numberOfLBnodesCoarse]; - f0MPsource = &DC[DIR_0PM * numberOfLBnodesCoarse]; - f000source = &DC[DIR_000 * numberOfLBnodesCoarse]; - fMMMsource = &DC[DIR_PPP * numberOfLBnodesCoarse]; - fMMPsource = &DC[DIR_PPM * numberOfLBnodesCoarse]; - fMPPsource = &DC[DIR_PMM * numberOfLBnodesCoarse]; - fMPMsource = &DC[DIR_PMP * numberOfLBnodesCoarse]; - fPPMsource = &DC[DIR_MMP * numberOfLBnodesCoarse]; - fPPPsource = &DC[DIR_MMM * numberOfLBnodesCoarse]; - fPMPsource = &DC[DIR_MPM * numberOfLBnodesCoarse]; - fPMMsource = &DC[DIR_MPP * numberOfLBnodesCoarse]; + fP00source = &DC[dM00 * numberOfLBnodesCoarse]; + fM00source = &DC[dP00 * numberOfLBnodesCoarse]; + f0P0source = &DC[d0M0 * numberOfLBnodesCoarse]; + f0M0source = &DC[d0P0 * numberOfLBnodesCoarse]; + f00Psource = &DC[d00M * numberOfLBnodesCoarse]; + f00Msource = &DC[d00P * numberOfLBnodesCoarse]; + fPP0source = &DC[dMM0 * numberOfLBnodesCoarse]; + fMM0source = &DC[dPP0 * numberOfLBnodesCoarse]; + fPM0source = &DC[dMP0 * numberOfLBnodesCoarse]; + fMP0source = &DC[dPM0 * numberOfLBnodesCoarse]; + fP0Psource = &DC[dM0M * numberOfLBnodesCoarse]; + fM0Msource = &DC[dP0P * numberOfLBnodesCoarse]; + fP0Msource = &DC[dM0P * numberOfLBnodesCoarse]; + fM0Psource = &DC[dP0M * numberOfLBnodesCoarse]; + f0PPsource = &DC[d0MM * numberOfLBnodesCoarse]; + f0MMsource = &DC[d0PP * numberOfLBnodesCoarse]; + f0PMsource = &DC[d0MP * numberOfLBnodesCoarse]; + f0MPsource = &DC[d0PM * numberOfLBnodesCoarse]; + f000source = &DC[d000 * numberOfLBnodesCoarse]; + fMMMsource = &DC[dPPP * numberOfLBnodesCoarse]; + fMMPsource = &DC[dPPM * numberOfLBnodesCoarse]; + fMPPsource = &DC[dPMM * numberOfLBnodesCoarse]; + fMPMsource = &DC[dPMP * numberOfLBnodesCoarse]; + fPPMsource = &DC[dMMP * numberOfLBnodesCoarse]; + fPPPsource = &DC[dMMM * numberOfLBnodesCoarse]; + fPMPsource = &DC[dMPM * numberOfLBnodesCoarse]; + fPMMsource = &DC[dMPP * numberOfLBnodesCoarse]; } //////////////////////////////////////////////////////////////////////////////// const unsigned ix = threadIdx.x; // Globaler x-Index @@ -4109,96 +4109,96 @@ __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[DIR_P00 * numberOfLBnodesFine]; - fwF = &DF[DIR_M00 * numberOfLBnodesFine]; - fnF = &DF[DIR_0P0 * numberOfLBnodesFine]; - fsF = &DF[DIR_0M0 * numberOfLBnodesFine]; - ftF = &DF[DIR_00P * numberOfLBnodesFine]; - fbF = &DF[DIR_00M * numberOfLBnodesFine]; - fneF = &DF[DIR_PP0 * numberOfLBnodesFine]; - fswF = &DF[DIR_MM0 * numberOfLBnodesFine]; - fseF = &DF[DIR_PM0 * numberOfLBnodesFine]; - fnwF = &DF[DIR_MP0 * numberOfLBnodesFine]; - fteF = &DF[DIR_P0P * numberOfLBnodesFine]; - fbwF = &DF[DIR_M0M * numberOfLBnodesFine]; - fbeF = &DF[DIR_P0M * numberOfLBnodesFine]; - ftwF = &DF[DIR_M0P * numberOfLBnodesFine]; - ftnF = &DF[DIR_0PP * numberOfLBnodesFine]; - fbsF = &DF[DIR_0MM * numberOfLBnodesFine]; - fbnF = &DF[DIR_0PM * numberOfLBnodesFine]; - ftsF = &DF[DIR_0MP * numberOfLBnodesFine]; - fzeroF = &DF[DIR_000 * numberOfLBnodesFine]; - ftneF = &DF[DIR_PPP * numberOfLBnodesFine]; - ftswF = &DF[DIR_MMP * numberOfLBnodesFine]; - ftseF = &DF[DIR_PMP * numberOfLBnodesFine]; - ftnwF = &DF[DIR_MPP * numberOfLBnodesFine]; - fbneF = &DF[DIR_PPM * numberOfLBnodesFine]; - fbswF = &DF[DIR_MMM * numberOfLBnodesFine]; - fbseF = &DF[DIR_PMM * numberOfLBnodesFine]; - fbnwF = &DF[DIR_MPM * numberOfLBnodesFine]; + feF = &DF[dP00 * numberOfLBnodesFine]; + fwF = &DF[dM00 * numberOfLBnodesFine]; + fnF = &DF[d0P0 * numberOfLBnodesFine]; + fsF = &DF[d0M0 * numberOfLBnodesFine]; + ftF = &DF[d00P * numberOfLBnodesFine]; + fbF = &DF[d00M * numberOfLBnodesFine]; + fneF = &DF[dPP0 * numberOfLBnodesFine]; + fswF = &DF[dMM0 * numberOfLBnodesFine]; + fseF = &DF[dPM0 * numberOfLBnodesFine]; + fnwF = &DF[dMP0 * numberOfLBnodesFine]; + fteF = &DF[dP0P * numberOfLBnodesFine]; + fbwF = &DF[dM0M * numberOfLBnodesFine]; + fbeF = &DF[dP0M * numberOfLBnodesFine]; + ftwF = &DF[dM0P * numberOfLBnodesFine]; + ftnF = &DF[d0PP * numberOfLBnodesFine]; + fbsF = &DF[d0MM * numberOfLBnodesFine]; + fbnF = &DF[d0PM * numberOfLBnodesFine]; + ftsF = &DF[d0MP * numberOfLBnodesFine]; + fzeroF = &DF[d000 * numberOfLBnodesFine]; + ftneF = &DF[dPPP * numberOfLBnodesFine]; + ftswF = &DF[dMMP * numberOfLBnodesFine]; + ftseF = &DF[dPMP * numberOfLBnodesFine]; + ftnwF = &DF[dMPP * numberOfLBnodesFine]; + fbneF = &DF[dPPM * numberOfLBnodesFine]; + fbswF = &DF[dMMM * numberOfLBnodesFine]; + fbseF = &DF[dPMM * numberOfLBnodesFine]; + fbnwF = &DF[dMPM * numberOfLBnodesFine]; 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[DIR_P00 * numberOfLBnodesCoarse]; - fwC = &DC[DIR_M00 * numberOfLBnodesCoarse]; - fnC = &DC[DIR_0P0 * numberOfLBnodesCoarse]; - fsC = &DC[DIR_0M0 * numberOfLBnodesCoarse]; - ftC = &DC[DIR_00P * numberOfLBnodesCoarse]; - fbC = &DC[DIR_00M * numberOfLBnodesCoarse]; - fneC = &DC[DIR_PP0 * numberOfLBnodesCoarse]; - fswC = &DC[DIR_MM0 * numberOfLBnodesCoarse]; - fseC = &DC[DIR_PM0 * numberOfLBnodesCoarse]; - fnwC = &DC[DIR_MP0 * numberOfLBnodesCoarse]; - fteC = &DC[DIR_P0P * numberOfLBnodesCoarse]; - fbwC = &DC[DIR_M0M * numberOfLBnodesCoarse]; - fbeC = &DC[DIR_P0M * numberOfLBnodesCoarse]; - ftwC = &DC[DIR_M0P * numberOfLBnodesCoarse]; - ftnC = &DC[DIR_0PP * numberOfLBnodesCoarse]; - fbsC = &DC[DIR_0MM * numberOfLBnodesCoarse]; - fbnC = &DC[DIR_0PM * numberOfLBnodesCoarse]; - ftsC = &DC[DIR_0MP * numberOfLBnodesCoarse]; - fzeroC = &DC[DIR_000 * numberOfLBnodesCoarse]; - ftneC = &DC[DIR_PPP * numberOfLBnodesCoarse]; - ftswC = &DC[DIR_MMP * numberOfLBnodesCoarse]; - ftseC = &DC[DIR_PMP * numberOfLBnodesCoarse]; - ftnwC = &DC[DIR_MPP * numberOfLBnodesCoarse]; - fbneC = &DC[DIR_PPM * numberOfLBnodesCoarse]; - fbswC = &DC[DIR_MMM * numberOfLBnodesCoarse]; - fbseC = &DC[DIR_PMM * numberOfLBnodesCoarse]; - fbnwC = &DC[DIR_MPM * numberOfLBnodesCoarse]; + feC = &DC[dP00 * numberOfLBnodesCoarse]; + fwC = &DC[dM00 * numberOfLBnodesCoarse]; + fnC = &DC[d0P0 * numberOfLBnodesCoarse]; + fsC = &DC[d0M0 * numberOfLBnodesCoarse]; + ftC = &DC[d00P * numberOfLBnodesCoarse]; + fbC = &DC[d00M * numberOfLBnodesCoarse]; + fneC = &DC[dPP0 * numberOfLBnodesCoarse]; + fswC = &DC[dMM0 * numberOfLBnodesCoarse]; + fseC = &DC[dPM0 * numberOfLBnodesCoarse]; + fnwC = &DC[dMP0 * numberOfLBnodesCoarse]; + fteC = &DC[dP0P * numberOfLBnodesCoarse]; + fbwC = &DC[dM0M * numberOfLBnodesCoarse]; + fbeC = &DC[dP0M * numberOfLBnodesCoarse]; + ftwC = &DC[dM0P * numberOfLBnodesCoarse]; + ftnC = &DC[d0PP * numberOfLBnodesCoarse]; + fbsC = &DC[d0MM * numberOfLBnodesCoarse]; + fbnC = &DC[d0PM * numberOfLBnodesCoarse]; + ftsC = &DC[d0MP * numberOfLBnodesCoarse]; + fzeroC = &DC[d000 * numberOfLBnodesCoarse]; + ftneC = &DC[dPPP * numberOfLBnodesCoarse]; + ftswC = &DC[dMMP * numberOfLBnodesCoarse]; + ftseC = &DC[dPMP * numberOfLBnodesCoarse]; + ftnwC = &DC[dMPP * numberOfLBnodesCoarse]; + fbneC = &DC[dPPM * numberOfLBnodesCoarse]; + fbswC = &DC[dMMM * numberOfLBnodesCoarse]; + fbseC = &DC[dPMM * numberOfLBnodesCoarse]; + fbnwC = &DC[dMPM * numberOfLBnodesCoarse]; } else { - fwC = &DC[DIR_P00 * numberOfLBnodesCoarse]; - feC = &DC[DIR_M00 * numberOfLBnodesCoarse]; - fsC = &DC[DIR_0P0 * numberOfLBnodesCoarse]; - fnC = &DC[DIR_0M0 * numberOfLBnodesCoarse]; - fbC = &DC[DIR_00P * numberOfLBnodesCoarse]; - ftC = &DC[DIR_00M * numberOfLBnodesCoarse]; - fswC = &DC[DIR_PP0 * numberOfLBnodesCoarse]; - fneC = &DC[DIR_MM0 * numberOfLBnodesCoarse]; - fnwC = &DC[DIR_PM0 * numberOfLBnodesCoarse]; - fseC = &DC[DIR_MP0 * numberOfLBnodesCoarse]; - fbwC = &DC[DIR_P0P * numberOfLBnodesCoarse]; - fteC = &DC[DIR_M0M * numberOfLBnodesCoarse]; - ftwC = &DC[DIR_P0M * numberOfLBnodesCoarse]; - fbeC = &DC[DIR_M0P * numberOfLBnodesCoarse]; - fbsC = &DC[DIR_0PP * numberOfLBnodesCoarse]; - ftnC = &DC[DIR_0MM * numberOfLBnodesCoarse]; - ftsC = &DC[DIR_0PM * numberOfLBnodesCoarse]; - fbnC = &DC[DIR_0MP * numberOfLBnodesCoarse]; - fzeroC = &DC[DIR_000 * numberOfLBnodesCoarse]; - fbswC = &DC[DIR_PPP * numberOfLBnodesCoarse]; - fbneC = &DC[DIR_MMP * numberOfLBnodesCoarse]; - fbnwC = &DC[DIR_PMP * numberOfLBnodesCoarse]; - fbseC = &DC[DIR_MPP * numberOfLBnodesCoarse]; - ftswC = &DC[DIR_PPM * numberOfLBnodesCoarse]; - ftneC = &DC[DIR_MMM * numberOfLBnodesCoarse]; - ftnwC = &DC[DIR_PMM * numberOfLBnodesCoarse]; - ftseC = &DC[DIR_MPM * numberOfLBnodesCoarse]; + fwC = &DC[dP00 * numberOfLBnodesCoarse]; + feC = &DC[dM00 * numberOfLBnodesCoarse]; + fsC = &DC[d0P0 * numberOfLBnodesCoarse]; + fnC = &DC[d0M0 * numberOfLBnodesCoarse]; + fbC = &DC[d00P * numberOfLBnodesCoarse]; + ftC = &DC[d00M * numberOfLBnodesCoarse]; + fswC = &DC[dPP0 * numberOfLBnodesCoarse]; + fneC = &DC[dMM0 * numberOfLBnodesCoarse]; + fnwC = &DC[dPM0 * numberOfLBnodesCoarse]; + fseC = &DC[dMP0 * numberOfLBnodesCoarse]; + fbwC = &DC[dP0P * numberOfLBnodesCoarse]; + fteC = &DC[dM0M * numberOfLBnodesCoarse]; + ftwC = &DC[dP0M * numberOfLBnodesCoarse]; + fbeC = &DC[dM0P * numberOfLBnodesCoarse]; + fbsC = &DC[d0PP * numberOfLBnodesCoarse]; + ftnC = &DC[d0MM * numberOfLBnodesCoarse]; + ftsC = &DC[d0PM * numberOfLBnodesCoarse]; + fbnC = &DC[d0MP * numberOfLBnodesCoarse]; + fzeroC = &DC[d000 * numberOfLBnodesCoarse]; + fbswC = &DC[dPPP * numberOfLBnodesCoarse]; + fbneC = &DC[dMMP * numberOfLBnodesCoarse]; + fbnwC = &DC[dPMP * numberOfLBnodesCoarse]; + fbseC = &DC[dMPP * numberOfLBnodesCoarse]; + ftswC = &DC[dPPM * numberOfLBnodesCoarse]; + ftneC = &DC[dMMM * numberOfLBnodesCoarse]; + ftnwC = &DC[dPMM * numberOfLBnodesCoarse]; + ftseC = &DC[dMPM * numberOfLBnodesCoarse]; } //////////////////////////////////////////////////////////////////////////////// @@ -10992,96 +10992,96 @@ __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[DIR_P00 * numberOfLBnodesFine]; - fwF = &DF[DIR_M00 * numberOfLBnodesFine]; - fnF = &DF[DIR_0P0 * numberOfLBnodesFine]; - fsF = &DF[DIR_0M0 * numberOfLBnodesFine]; - ftF = &DF[DIR_00P * numberOfLBnodesFine]; - fbF = &DF[DIR_00M * numberOfLBnodesFine]; - fneF = &DF[DIR_PP0 * numberOfLBnodesFine]; - fswF = &DF[DIR_MM0 * numberOfLBnodesFine]; - fseF = &DF[DIR_PM0 * numberOfLBnodesFine]; - fnwF = &DF[DIR_MP0 * numberOfLBnodesFine]; - fteF = &DF[DIR_P0P * numberOfLBnodesFine]; - fbwF = &DF[DIR_M0M * numberOfLBnodesFine]; - fbeF = &DF[DIR_P0M * numberOfLBnodesFine]; - ftwF = &DF[DIR_M0P * numberOfLBnodesFine]; - ftnF = &DF[DIR_0PP * numberOfLBnodesFine]; - fbsF = &DF[DIR_0MM * numberOfLBnodesFine]; - fbnF = &DF[DIR_0PM * numberOfLBnodesFine]; - ftsF = &DF[DIR_0MP * numberOfLBnodesFine]; - fzeroF = &DF[DIR_000 * numberOfLBnodesFine]; - ftneF = &DF[DIR_PPP * numberOfLBnodesFine]; - ftswF = &DF[DIR_MMP * numberOfLBnodesFine]; - ftseF = &DF[DIR_PMP * numberOfLBnodesFine]; - ftnwF = &DF[DIR_MPP * numberOfLBnodesFine]; - fbneF = &DF[DIR_PPM * numberOfLBnodesFine]; - fbswF = &DF[DIR_MMM * numberOfLBnodesFine]; - fbseF = &DF[DIR_PMM * numberOfLBnodesFine]; - fbnwF = &DF[DIR_MPM * numberOfLBnodesFine]; + feF = &DF[dP00 * numberOfLBnodesFine]; + fwF = &DF[dM00 * numberOfLBnodesFine]; + fnF = &DF[d0P0 * numberOfLBnodesFine]; + fsF = &DF[d0M0 * numberOfLBnodesFine]; + ftF = &DF[d00P * numberOfLBnodesFine]; + fbF = &DF[d00M * numberOfLBnodesFine]; + fneF = &DF[dPP0 * numberOfLBnodesFine]; + fswF = &DF[dMM0 * numberOfLBnodesFine]; + fseF = &DF[dPM0 * numberOfLBnodesFine]; + fnwF = &DF[dMP0 * numberOfLBnodesFine]; + fteF = &DF[dP0P * numberOfLBnodesFine]; + fbwF = &DF[dM0M * numberOfLBnodesFine]; + fbeF = &DF[dP0M * numberOfLBnodesFine]; + ftwF = &DF[dM0P * numberOfLBnodesFine]; + ftnF = &DF[d0PP * numberOfLBnodesFine]; + fbsF = &DF[d0MM * numberOfLBnodesFine]; + fbnF = &DF[d0PM * numberOfLBnodesFine]; + ftsF = &DF[d0MP * numberOfLBnodesFine]; + fzeroF = &DF[d000 * numberOfLBnodesFine]; + ftneF = &DF[dPPP * numberOfLBnodesFine]; + ftswF = &DF[dMMP * numberOfLBnodesFine]; + ftseF = &DF[dPMP * numberOfLBnodesFine]; + ftnwF = &DF[dMPP * numberOfLBnodesFine]; + fbneF = &DF[dPPM * numberOfLBnodesFine]; + fbswF = &DF[dMMM * numberOfLBnodesFine]; + fbseF = &DF[dPMM * numberOfLBnodesFine]; + fbnwF = &DF[dMPM * numberOfLBnodesFine]; 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[DIR_P00 * numberOfLBnodesCoarse]; - fwC = &DC[DIR_M00 * numberOfLBnodesCoarse]; - fnC = &DC[DIR_0P0 * numberOfLBnodesCoarse]; - fsC = &DC[DIR_0M0 * numberOfLBnodesCoarse]; - ftC = &DC[DIR_00P * numberOfLBnodesCoarse]; - fbC = &DC[DIR_00M * numberOfLBnodesCoarse]; - fneC = &DC[DIR_PP0 * numberOfLBnodesCoarse]; - fswC = &DC[DIR_MM0 * numberOfLBnodesCoarse]; - fseC = &DC[DIR_PM0 * numberOfLBnodesCoarse]; - fnwC = &DC[DIR_MP0 * numberOfLBnodesCoarse]; - fteC = &DC[DIR_P0P * numberOfLBnodesCoarse]; - fbwC = &DC[DIR_M0M * numberOfLBnodesCoarse]; - fbeC = &DC[DIR_P0M * numberOfLBnodesCoarse]; - ftwC = &DC[DIR_M0P * numberOfLBnodesCoarse]; - ftnC = &DC[DIR_0PP * numberOfLBnodesCoarse]; - fbsC = &DC[DIR_0MM * numberOfLBnodesCoarse]; - fbnC = &DC[DIR_0PM * numberOfLBnodesCoarse]; - ftsC = &DC[DIR_0MP * numberOfLBnodesCoarse]; - fzeroC = &DC[DIR_000 * numberOfLBnodesCoarse]; - ftneC = &DC[DIR_PPP * numberOfLBnodesCoarse]; - ftswC = &DC[DIR_MMP * numberOfLBnodesCoarse]; - ftseC = &DC[DIR_PMP * numberOfLBnodesCoarse]; - ftnwC = &DC[DIR_MPP * numberOfLBnodesCoarse]; - fbneC = &DC[DIR_PPM * numberOfLBnodesCoarse]; - fbswC = &DC[DIR_MMM * numberOfLBnodesCoarse]; - fbseC = &DC[DIR_PMM * numberOfLBnodesCoarse]; - fbnwC = &DC[DIR_MPM * numberOfLBnodesCoarse]; + feC = &DC[dP00 * numberOfLBnodesCoarse]; + fwC = &DC[dM00 * numberOfLBnodesCoarse]; + fnC = &DC[d0P0 * numberOfLBnodesCoarse]; + fsC = &DC[d0M0 * numberOfLBnodesCoarse]; + ftC = &DC[d00P * numberOfLBnodesCoarse]; + fbC = &DC[d00M * numberOfLBnodesCoarse]; + fneC = &DC[dPP0 * numberOfLBnodesCoarse]; + fswC = &DC[dMM0 * numberOfLBnodesCoarse]; + fseC = &DC[dPM0 * numberOfLBnodesCoarse]; + fnwC = &DC[dMP0 * numberOfLBnodesCoarse]; + fteC = &DC[dP0P * numberOfLBnodesCoarse]; + fbwC = &DC[dM0M * numberOfLBnodesCoarse]; + fbeC = &DC[dP0M * numberOfLBnodesCoarse]; + ftwC = &DC[dM0P * numberOfLBnodesCoarse]; + ftnC = &DC[d0PP * numberOfLBnodesCoarse]; + fbsC = &DC[d0MM * numberOfLBnodesCoarse]; + fbnC = &DC[d0PM * numberOfLBnodesCoarse]; + ftsC = &DC[d0MP * numberOfLBnodesCoarse]; + fzeroC = &DC[d000 * numberOfLBnodesCoarse]; + ftneC = &DC[dPPP * numberOfLBnodesCoarse]; + ftswC = &DC[dMMP * numberOfLBnodesCoarse]; + ftseC = &DC[dPMP * numberOfLBnodesCoarse]; + ftnwC = &DC[dMPP * numberOfLBnodesCoarse]; + fbneC = &DC[dPPM * numberOfLBnodesCoarse]; + fbswC = &DC[dMMM * numberOfLBnodesCoarse]; + fbseC = &DC[dPMM * numberOfLBnodesCoarse]; + fbnwC = &DC[dMPM * numberOfLBnodesCoarse]; } else { - fwC = &DC[DIR_P00 * numberOfLBnodesCoarse]; - feC = &DC[DIR_M00 * numberOfLBnodesCoarse]; - fsC = &DC[DIR_0P0 * numberOfLBnodesCoarse]; - fnC = &DC[DIR_0M0 * numberOfLBnodesCoarse]; - fbC = &DC[DIR_00P * numberOfLBnodesCoarse]; - ftC = &DC[DIR_00M * numberOfLBnodesCoarse]; - fswC = &DC[DIR_PP0 * numberOfLBnodesCoarse]; - fneC = &DC[DIR_MM0 * numberOfLBnodesCoarse]; - fnwC = &DC[DIR_PM0 * numberOfLBnodesCoarse]; - fseC = &DC[DIR_MP0 * numberOfLBnodesCoarse]; - fbwC = &DC[DIR_P0P * numberOfLBnodesCoarse]; - fteC = &DC[DIR_M0M * numberOfLBnodesCoarse]; - ftwC = &DC[DIR_P0M * numberOfLBnodesCoarse]; - fbeC = &DC[DIR_M0P * numberOfLBnodesCoarse]; - fbsC = &DC[DIR_0PP * numberOfLBnodesCoarse]; - ftnC = &DC[DIR_0MM * numberOfLBnodesCoarse]; - ftsC = &DC[DIR_0PM * numberOfLBnodesCoarse]; - fbnC = &DC[DIR_0MP * numberOfLBnodesCoarse]; - fzeroC = &DC[DIR_000 * numberOfLBnodesCoarse]; - fbswC = &DC[DIR_PPP * numberOfLBnodesCoarse]; - fbneC = &DC[DIR_MMP * numberOfLBnodesCoarse]; - fbnwC = &DC[DIR_PMP * numberOfLBnodesCoarse]; - fbseC = &DC[DIR_MPP * numberOfLBnodesCoarse]; - ftswC = &DC[DIR_PPM * numberOfLBnodesCoarse]; - ftneC = &DC[DIR_MMM * numberOfLBnodesCoarse]; - ftnwC = &DC[DIR_PMM * numberOfLBnodesCoarse]; - ftseC = &DC[DIR_MPM * numberOfLBnodesCoarse]; + fwC = &DC[dP00 * numberOfLBnodesCoarse]; + feC = &DC[dM00 * numberOfLBnodesCoarse]; + fsC = &DC[d0P0 * numberOfLBnodesCoarse]; + fnC = &DC[d0M0 * numberOfLBnodesCoarse]; + fbC = &DC[d00P * numberOfLBnodesCoarse]; + ftC = &DC[d00M * numberOfLBnodesCoarse]; + fswC = &DC[dPP0 * numberOfLBnodesCoarse]; + fneC = &DC[dMM0 * numberOfLBnodesCoarse]; + fnwC = &DC[dPM0 * numberOfLBnodesCoarse]; + fseC = &DC[dMP0 * numberOfLBnodesCoarse]; + fbwC = &DC[dP0P * numberOfLBnodesCoarse]; + fteC = &DC[dM0M * numberOfLBnodesCoarse]; + ftwC = &DC[dP0M * numberOfLBnodesCoarse]; + fbeC = &DC[dM0P * numberOfLBnodesCoarse]; + fbsC = &DC[d0PP * numberOfLBnodesCoarse]; + ftnC = &DC[d0MM * numberOfLBnodesCoarse]; + ftsC = &DC[d0PM * numberOfLBnodesCoarse]; + fbnC = &DC[d0MP * numberOfLBnodesCoarse]; + fzeroC = &DC[d000 * numberOfLBnodesCoarse]; + fbswC = &DC[dPPP * numberOfLBnodesCoarse]; + fbneC = &DC[dMMP * numberOfLBnodesCoarse]; + fbnwC = &DC[dPMP * numberOfLBnodesCoarse]; + fbseC = &DC[dMPP * numberOfLBnodesCoarse]; + ftswC = &DC[dPPM * numberOfLBnodesCoarse]; + ftneC = &DC[dMMM * numberOfLBnodesCoarse]; + ftnwC = &DC[dPMM * numberOfLBnodesCoarse]; + ftseC = &DC[dMPM * numberOfLBnodesCoarse]; } //////////////////////////////////////////////////////////////////////////////// @@ -17867,96 +17867,96 @@ __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[DIR_P00 * numberOfLBnodesFine]; - fwF = &DF[DIR_M00 * numberOfLBnodesFine]; - fnF = &DF[DIR_0P0 * numberOfLBnodesFine]; - fsF = &DF[DIR_0M0 * numberOfLBnodesFine]; - ftF = &DF[DIR_00P * numberOfLBnodesFine]; - fbF = &DF[DIR_00M * numberOfLBnodesFine]; - fneF = &DF[DIR_PP0 * numberOfLBnodesFine]; - fswF = &DF[DIR_MM0 * numberOfLBnodesFine]; - fseF = &DF[DIR_PM0 * numberOfLBnodesFine]; - fnwF = &DF[DIR_MP0 * numberOfLBnodesFine]; - fteF = &DF[DIR_P0P * numberOfLBnodesFine]; - fbwF = &DF[DIR_M0M * numberOfLBnodesFine]; - fbeF = &DF[DIR_P0M * numberOfLBnodesFine]; - ftwF = &DF[DIR_M0P * numberOfLBnodesFine]; - ftnF = &DF[DIR_0PP * numberOfLBnodesFine]; - fbsF = &DF[DIR_0MM * numberOfLBnodesFine]; - fbnF = &DF[DIR_0PM * numberOfLBnodesFine]; - ftsF = &DF[DIR_0MP * numberOfLBnodesFine]; - fzeroF = &DF[DIR_000 * numberOfLBnodesFine]; - ftneF = &DF[DIR_PPP * numberOfLBnodesFine]; - ftswF = &DF[DIR_MMP * numberOfLBnodesFine]; - ftseF = &DF[DIR_PMP * numberOfLBnodesFine]; - ftnwF = &DF[DIR_MPP * numberOfLBnodesFine]; - fbneF = &DF[DIR_PPM * numberOfLBnodesFine]; - fbswF = &DF[DIR_MMM * numberOfLBnodesFine]; - fbseF = &DF[DIR_PMM * numberOfLBnodesFine]; - fbnwF = &DF[DIR_MPM * numberOfLBnodesFine]; + feF = &DF[dP00 * numberOfLBnodesFine]; + fwF = &DF[dM00 * numberOfLBnodesFine]; + fnF = &DF[d0P0 * numberOfLBnodesFine]; + fsF = &DF[d0M0 * numberOfLBnodesFine]; + ftF = &DF[d00P * numberOfLBnodesFine]; + fbF = &DF[d00M * numberOfLBnodesFine]; + fneF = &DF[dPP0 * numberOfLBnodesFine]; + fswF = &DF[dMM0 * numberOfLBnodesFine]; + fseF = &DF[dPM0 * numberOfLBnodesFine]; + fnwF = &DF[dMP0 * numberOfLBnodesFine]; + fteF = &DF[dP0P * numberOfLBnodesFine]; + fbwF = &DF[dM0M * numberOfLBnodesFine]; + fbeF = &DF[dP0M * numberOfLBnodesFine]; + ftwF = &DF[dM0P * numberOfLBnodesFine]; + ftnF = &DF[d0PP * numberOfLBnodesFine]; + fbsF = &DF[d0MM * numberOfLBnodesFine]; + fbnF = &DF[d0PM * numberOfLBnodesFine]; + ftsF = &DF[d0MP * numberOfLBnodesFine]; + fzeroF = &DF[d000 * numberOfLBnodesFine]; + ftneF = &DF[dPPP * numberOfLBnodesFine]; + ftswF = &DF[dMMP * numberOfLBnodesFine]; + ftseF = &DF[dPMP * numberOfLBnodesFine]; + ftnwF = &DF[dMPP * numberOfLBnodesFine]; + fbneF = &DF[dPPM * numberOfLBnodesFine]; + fbswF = &DF[dMMM * numberOfLBnodesFine]; + fbseF = &DF[dPMM * numberOfLBnodesFine]; + fbnwF = &DF[dMPM * numberOfLBnodesFine]; 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[DIR_P00 * numberOfLBnodesCoarse]; - fwC = &DC[DIR_M00 * numberOfLBnodesCoarse]; - fnC = &DC[DIR_0P0 * numberOfLBnodesCoarse]; - fsC = &DC[DIR_0M0 * numberOfLBnodesCoarse]; - ftC = &DC[DIR_00P * numberOfLBnodesCoarse]; - fbC = &DC[DIR_00M * numberOfLBnodesCoarse]; - fneC = &DC[DIR_PP0 * numberOfLBnodesCoarse]; - fswC = &DC[DIR_MM0 * numberOfLBnodesCoarse]; - fseC = &DC[DIR_PM0 * numberOfLBnodesCoarse]; - fnwC = &DC[DIR_MP0 * numberOfLBnodesCoarse]; - fteC = &DC[DIR_P0P * numberOfLBnodesCoarse]; - fbwC = &DC[DIR_M0M * numberOfLBnodesCoarse]; - fbeC = &DC[DIR_P0M * numberOfLBnodesCoarse]; - ftwC = &DC[DIR_M0P * numberOfLBnodesCoarse]; - ftnC = &DC[DIR_0PP * numberOfLBnodesCoarse]; - fbsC = &DC[DIR_0MM * numberOfLBnodesCoarse]; - fbnC = &DC[DIR_0PM * numberOfLBnodesCoarse]; - ftsC = &DC[DIR_0MP * numberOfLBnodesCoarse]; - fzeroC = &DC[DIR_000 * numberOfLBnodesCoarse]; - ftneC = &DC[DIR_PPP * numberOfLBnodesCoarse]; - ftswC = &DC[DIR_MMP * numberOfLBnodesCoarse]; - ftseC = &DC[DIR_PMP * numberOfLBnodesCoarse]; - ftnwC = &DC[DIR_MPP * numberOfLBnodesCoarse]; - fbneC = &DC[DIR_PPM * numberOfLBnodesCoarse]; - fbswC = &DC[DIR_MMM * numberOfLBnodesCoarse]; - fbseC = &DC[DIR_PMM * numberOfLBnodesCoarse]; - fbnwC = &DC[DIR_MPM * numberOfLBnodesCoarse]; + feC = &DC[dP00 * numberOfLBnodesCoarse]; + fwC = &DC[dM00 * numberOfLBnodesCoarse]; + fnC = &DC[d0P0 * numberOfLBnodesCoarse]; + fsC = &DC[d0M0 * numberOfLBnodesCoarse]; + ftC = &DC[d00P * numberOfLBnodesCoarse]; + fbC = &DC[d00M * numberOfLBnodesCoarse]; + fneC = &DC[dPP0 * numberOfLBnodesCoarse]; + fswC = &DC[dMM0 * numberOfLBnodesCoarse]; + fseC = &DC[dPM0 * numberOfLBnodesCoarse]; + fnwC = &DC[dMP0 * numberOfLBnodesCoarse]; + fteC = &DC[dP0P * numberOfLBnodesCoarse]; + fbwC = &DC[dM0M * numberOfLBnodesCoarse]; + fbeC = &DC[dP0M * numberOfLBnodesCoarse]; + ftwC = &DC[dM0P * numberOfLBnodesCoarse]; + ftnC = &DC[d0PP * numberOfLBnodesCoarse]; + fbsC = &DC[d0MM * numberOfLBnodesCoarse]; + fbnC = &DC[d0PM * numberOfLBnodesCoarse]; + ftsC = &DC[d0MP * numberOfLBnodesCoarse]; + fzeroC = &DC[d000 * numberOfLBnodesCoarse]; + ftneC = &DC[dPPP * numberOfLBnodesCoarse]; + ftswC = &DC[dMMP * numberOfLBnodesCoarse]; + ftseC = &DC[dPMP * numberOfLBnodesCoarse]; + ftnwC = &DC[dMPP * numberOfLBnodesCoarse]; + fbneC = &DC[dPPM * numberOfLBnodesCoarse]; + fbswC = &DC[dMMM * numberOfLBnodesCoarse]; + fbseC = &DC[dPMM * numberOfLBnodesCoarse]; + fbnwC = &DC[dMPM * numberOfLBnodesCoarse]; } else { - fwC = &DC[DIR_P00 * numberOfLBnodesCoarse]; - feC = &DC[DIR_M00 * numberOfLBnodesCoarse]; - fsC = &DC[DIR_0P0 * numberOfLBnodesCoarse]; - fnC = &DC[DIR_0M0 * numberOfLBnodesCoarse]; - fbC = &DC[DIR_00P * numberOfLBnodesCoarse]; - ftC = &DC[DIR_00M * numberOfLBnodesCoarse]; - fswC = &DC[DIR_PP0 * numberOfLBnodesCoarse]; - fneC = &DC[DIR_MM0 * numberOfLBnodesCoarse]; - fnwC = &DC[DIR_PM0 * numberOfLBnodesCoarse]; - fseC = &DC[DIR_MP0 * numberOfLBnodesCoarse]; - fbwC = &DC[DIR_P0P * numberOfLBnodesCoarse]; - fteC = &DC[DIR_M0M * numberOfLBnodesCoarse]; - ftwC = &DC[DIR_P0M * numberOfLBnodesCoarse]; - fbeC = &DC[DIR_M0P * numberOfLBnodesCoarse]; - fbsC = &DC[DIR_0PP * numberOfLBnodesCoarse]; - ftnC = &DC[DIR_0MM * numberOfLBnodesCoarse]; - ftsC = &DC[DIR_0PM * numberOfLBnodesCoarse]; - fbnC = &DC[DIR_0MP * numberOfLBnodesCoarse]; - fzeroC = &DC[DIR_000 * numberOfLBnodesCoarse]; - fbswC = &DC[DIR_PPP * numberOfLBnodesCoarse]; - fbneC = &DC[DIR_MMP * numberOfLBnodesCoarse]; - fbnwC = &DC[DIR_PMP * numberOfLBnodesCoarse]; - fbseC = &DC[DIR_MPP * numberOfLBnodesCoarse]; - ftswC = &DC[DIR_PPM * numberOfLBnodesCoarse]; - ftneC = &DC[DIR_MMM * numberOfLBnodesCoarse]; - ftnwC = &DC[DIR_PMM * numberOfLBnodesCoarse]; - ftseC = &DC[DIR_MPM * numberOfLBnodesCoarse]; + fwC = &DC[dP00 * numberOfLBnodesCoarse]; + feC = &DC[dM00 * numberOfLBnodesCoarse]; + fsC = &DC[d0P0 * numberOfLBnodesCoarse]; + fnC = &DC[d0M0 * numberOfLBnodesCoarse]; + fbC = &DC[d00P * numberOfLBnodesCoarse]; + ftC = &DC[d00M * numberOfLBnodesCoarse]; + fswC = &DC[dPP0 * numberOfLBnodesCoarse]; + fneC = &DC[dMM0 * numberOfLBnodesCoarse]; + fnwC = &DC[dPM0 * numberOfLBnodesCoarse]; + fseC = &DC[dMP0 * numberOfLBnodesCoarse]; + fbwC = &DC[dP0P * numberOfLBnodesCoarse]; + fteC = &DC[dM0M * numberOfLBnodesCoarse]; + ftwC = &DC[dP0M * numberOfLBnodesCoarse]; + fbeC = &DC[dM0P * numberOfLBnodesCoarse]; + fbsC = &DC[d0PP * numberOfLBnodesCoarse]; + ftnC = &DC[d0MM * numberOfLBnodesCoarse]; + ftsC = &DC[d0PM * numberOfLBnodesCoarse]; + fbnC = &DC[d0MP * numberOfLBnodesCoarse]; + fzeroC = &DC[d000 * numberOfLBnodesCoarse]; + fbswC = &DC[dPPP * numberOfLBnodesCoarse]; + fbneC = &DC[dMMP * numberOfLBnodesCoarse]; + fbnwC = &DC[dPMP * numberOfLBnodesCoarse]; + fbseC = &DC[dMPP * numberOfLBnodesCoarse]; + ftswC = &DC[dPPM * numberOfLBnodesCoarse]; + ftneC = &DC[dMMM * numberOfLBnodesCoarse]; + ftnwC = &DC[dPMM * numberOfLBnodesCoarse]; + ftseC = &DC[dMPM * numberOfLBnodesCoarse]; } //////////////////////////////////////////////////////////////////////////////// @@ -22151,96 +22151,96 @@ __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[DIR_P00 * numberOfLBnodesFine]; - fwF = &DF[DIR_M00 * numberOfLBnodesFine]; - fnF = &DF[DIR_0P0 * numberOfLBnodesFine]; - fsF = &DF[DIR_0M0 * numberOfLBnodesFine]; - ftF = &DF[DIR_00P * numberOfLBnodesFine]; - fbF = &DF[DIR_00M * numberOfLBnodesFine]; - fneF = &DF[DIR_PP0 * numberOfLBnodesFine]; - fswF = &DF[DIR_MM0 * numberOfLBnodesFine]; - fseF = &DF[DIR_PM0 * numberOfLBnodesFine]; - fnwF = &DF[DIR_MP0 * numberOfLBnodesFine]; - fteF = &DF[DIR_P0P * numberOfLBnodesFine]; - fbwF = &DF[DIR_M0M * numberOfLBnodesFine]; - fbeF = &DF[DIR_P0M * numberOfLBnodesFine]; - ftwF = &DF[DIR_M0P * numberOfLBnodesFine]; - ftnF = &DF[DIR_0PP * numberOfLBnodesFine]; - fbsF = &DF[DIR_0MM * numberOfLBnodesFine]; - fbnF = &DF[DIR_0PM * numberOfLBnodesFine]; - ftsF = &DF[DIR_0MP * numberOfLBnodesFine]; - fzeroF = &DF[DIR_000 * numberOfLBnodesFine]; - ftneF = &DF[DIR_PPP * numberOfLBnodesFine]; - ftswF = &DF[DIR_MMP * numberOfLBnodesFine]; - ftseF = &DF[DIR_PMP * numberOfLBnodesFine]; - ftnwF = &DF[DIR_MPP * numberOfLBnodesFine]; - fbneF = &DF[DIR_PPM * numberOfLBnodesFine]; - fbswF = &DF[DIR_MMM * numberOfLBnodesFine]; - fbseF = &DF[DIR_PMM * numberOfLBnodesFine]; - fbnwF = &DF[DIR_MPM * numberOfLBnodesFine]; + feF = &DF[dP00 * numberOfLBnodesFine]; + fwF = &DF[dM00 * numberOfLBnodesFine]; + fnF = &DF[d0P0 * numberOfLBnodesFine]; + fsF = &DF[d0M0 * numberOfLBnodesFine]; + ftF = &DF[d00P * numberOfLBnodesFine]; + fbF = &DF[d00M * numberOfLBnodesFine]; + fneF = &DF[dPP0 * numberOfLBnodesFine]; + fswF = &DF[dMM0 * numberOfLBnodesFine]; + fseF = &DF[dPM0 * numberOfLBnodesFine]; + fnwF = &DF[dMP0 * numberOfLBnodesFine]; + fteF = &DF[dP0P * numberOfLBnodesFine]; + fbwF = &DF[dM0M * numberOfLBnodesFine]; + fbeF = &DF[dP0M * numberOfLBnodesFine]; + ftwF = &DF[dM0P * numberOfLBnodesFine]; + ftnF = &DF[d0PP * numberOfLBnodesFine]; + fbsF = &DF[d0MM * numberOfLBnodesFine]; + fbnF = &DF[d0PM * numberOfLBnodesFine]; + ftsF = &DF[d0MP * numberOfLBnodesFine]; + fzeroF = &DF[d000 * numberOfLBnodesFine]; + ftneF = &DF[dPPP * numberOfLBnodesFine]; + ftswF = &DF[dMMP * numberOfLBnodesFine]; + ftseF = &DF[dPMP * numberOfLBnodesFine]; + ftnwF = &DF[dMPP * numberOfLBnodesFine]; + fbneF = &DF[dPPM * numberOfLBnodesFine]; + fbswF = &DF[dMMM * numberOfLBnodesFine]; + fbseF = &DF[dPMM * numberOfLBnodesFine]; + fbnwF = &DF[dMPM * numberOfLBnodesFine]; 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[DIR_P00 * numberOfLBnodesCoarse]; - fwC = &DC[DIR_M00 * numberOfLBnodesCoarse]; - fnC = &DC[DIR_0P0 * numberOfLBnodesCoarse]; - fsC = &DC[DIR_0M0 * numberOfLBnodesCoarse]; - ftC = &DC[DIR_00P * numberOfLBnodesCoarse]; - fbC = &DC[DIR_00M * numberOfLBnodesCoarse]; - fneC = &DC[DIR_PP0 * numberOfLBnodesCoarse]; - fswC = &DC[DIR_MM0 * numberOfLBnodesCoarse]; - fseC = &DC[DIR_PM0 * numberOfLBnodesCoarse]; - fnwC = &DC[DIR_MP0 * numberOfLBnodesCoarse]; - fteC = &DC[DIR_P0P * numberOfLBnodesCoarse]; - fbwC = &DC[DIR_M0M * numberOfLBnodesCoarse]; - fbeC = &DC[DIR_P0M * numberOfLBnodesCoarse]; - ftwC = &DC[DIR_M0P * numberOfLBnodesCoarse]; - ftnC = &DC[DIR_0PP * numberOfLBnodesCoarse]; - fbsC = &DC[DIR_0MM * numberOfLBnodesCoarse]; - fbnC = &DC[DIR_0PM * numberOfLBnodesCoarse]; - ftsC = &DC[DIR_0MP * numberOfLBnodesCoarse]; - fzeroC = &DC[DIR_000 * numberOfLBnodesCoarse]; - ftneC = &DC[DIR_PPP * numberOfLBnodesCoarse]; - ftswC = &DC[DIR_MMP * numberOfLBnodesCoarse]; - ftseC = &DC[DIR_PMP * numberOfLBnodesCoarse]; - ftnwC = &DC[DIR_MPP * numberOfLBnodesCoarse]; - fbneC = &DC[DIR_PPM * numberOfLBnodesCoarse]; - fbswC = &DC[DIR_MMM * numberOfLBnodesCoarse]; - fbseC = &DC[DIR_PMM * numberOfLBnodesCoarse]; - fbnwC = &DC[DIR_MPM * numberOfLBnodesCoarse]; + feC = &DC[dP00 * numberOfLBnodesCoarse]; + fwC = &DC[dM00 * numberOfLBnodesCoarse]; + fnC = &DC[d0P0 * numberOfLBnodesCoarse]; + fsC = &DC[d0M0 * numberOfLBnodesCoarse]; + ftC = &DC[d00P * numberOfLBnodesCoarse]; + fbC = &DC[d00M * numberOfLBnodesCoarse]; + fneC = &DC[dPP0 * numberOfLBnodesCoarse]; + fswC = &DC[dMM0 * numberOfLBnodesCoarse]; + fseC = &DC[dPM0 * numberOfLBnodesCoarse]; + fnwC = &DC[dMP0 * numberOfLBnodesCoarse]; + fteC = &DC[dP0P * numberOfLBnodesCoarse]; + fbwC = &DC[dM0M * numberOfLBnodesCoarse]; + fbeC = &DC[dP0M * numberOfLBnodesCoarse]; + ftwC = &DC[dM0P * numberOfLBnodesCoarse]; + ftnC = &DC[d0PP * numberOfLBnodesCoarse]; + fbsC = &DC[d0MM * numberOfLBnodesCoarse]; + fbnC = &DC[d0PM * numberOfLBnodesCoarse]; + ftsC = &DC[d0MP * numberOfLBnodesCoarse]; + fzeroC = &DC[d000 * numberOfLBnodesCoarse]; + ftneC = &DC[dPPP * numberOfLBnodesCoarse]; + ftswC = &DC[dMMP * numberOfLBnodesCoarse]; + ftseC = &DC[dPMP * numberOfLBnodesCoarse]; + ftnwC = &DC[dMPP * numberOfLBnodesCoarse]; + fbneC = &DC[dPPM * numberOfLBnodesCoarse]; + fbswC = &DC[dMMM * numberOfLBnodesCoarse]; + fbseC = &DC[dPMM * numberOfLBnodesCoarse]; + fbnwC = &DC[dMPM * numberOfLBnodesCoarse]; } else { - fwC = &DC[DIR_P00 * numberOfLBnodesCoarse]; - feC = &DC[DIR_M00 * numberOfLBnodesCoarse]; - fsC = &DC[DIR_0P0 * numberOfLBnodesCoarse]; - fnC = &DC[DIR_0M0 * numberOfLBnodesCoarse]; - fbC = &DC[DIR_00P * numberOfLBnodesCoarse]; - ftC = &DC[DIR_00M * numberOfLBnodesCoarse]; - fswC = &DC[DIR_PP0 * numberOfLBnodesCoarse]; - fneC = &DC[DIR_MM0 * numberOfLBnodesCoarse]; - fnwC = &DC[DIR_PM0 * numberOfLBnodesCoarse]; - fseC = &DC[DIR_MP0 * numberOfLBnodesCoarse]; - fbwC = &DC[DIR_P0P * numberOfLBnodesCoarse]; - fteC = &DC[DIR_M0M * numberOfLBnodesCoarse]; - ftwC = &DC[DIR_P0M * numberOfLBnodesCoarse]; - fbeC = &DC[DIR_M0P * numberOfLBnodesCoarse]; - fbsC = &DC[DIR_0PP * numberOfLBnodesCoarse]; - ftnC = &DC[DIR_0MM * numberOfLBnodesCoarse]; - ftsC = &DC[DIR_0PM * numberOfLBnodesCoarse]; - fbnC = &DC[DIR_0MP * numberOfLBnodesCoarse]; - fzeroC = &DC[DIR_000 * numberOfLBnodesCoarse]; - fbswC = &DC[DIR_PPP * numberOfLBnodesCoarse]; - fbneC = &DC[DIR_MMP * numberOfLBnodesCoarse]; - fbnwC = &DC[DIR_PMP * numberOfLBnodesCoarse]; - fbseC = &DC[DIR_MPP * numberOfLBnodesCoarse]; - ftswC = &DC[DIR_PPM * numberOfLBnodesCoarse]; - ftneC = &DC[DIR_MMM * numberOfLBnodesCoarse]; - ftnwC = &DC[DIR_PMM * numberOfLBnodesCoarse]; - ftseC = &DC[DIR_MPM * numberOfLBnodesCoarse]; + fwC = &DC[dP00 * numberOfLBnodesCoarse]; + feC = &DC[dM00 * numberOfLBnodesCoarse]; + fsC = &DC[d0P0 * numberOfLBnodesCoarse]; + fnC = &DC[d0M0 * numberOfLBnodesCoarse]; + fbC = &DC[d00P * numberOfLBnodesCoarse]; + ftC = &DC[d00M * numberOfLBnodesCoarse]; + fswC = &DC[dPP0 * numberOfLBnodesCoarse]; + fneC = &DC[dMM0 * numberOfLBnodesCoarse]; + fnwC = &DC[dPM0 * numberOfLBnodesCoarse]; + fseC = &DC[dMP0 * numberOfLBnodesCoarse]; + fbwC = &DC[dP0P * numberOfLBnodesCoarse]; + fteC = &DC[dM0M * numberOfLBnodesCoarse]; + ftwC = &DC[dP0M * numberOfLBnodesCoarse]; + fbeC = &DC[dM0P * numberOfLBnodesCoarse]; + fbsC = &DC[d0PP * numberOfLBnodesCoarse]; + ftnC = &DC[d0MM * numberOfLBnodesCoarse]; + ftsC = &DC[d0PM * numberOfLBnodesCoarse]; + fbnC = &DC[d0MP * numberOfLBnodesCoarse]; + fzeroC = &DC[d000 * numberOfLBnodesCoarse]; + fbswC = &DC[dPPP * numberOfLBnodesCoarse]; + fbneC = &DC[dMMP * numberOfLBnodesCoarse]; + fbnwC = &DC[dPMP * numberOfLBnodesCoarse]; + fbseC = &DC[dMPP * numberOfLBnodesCoarse]; + ftswC = &DC[dPPM * numberOfLBnodesCoarse]; + ftneC = &DC[dMMM * numberOfLBnodesCoarse]; + ftnwC = &DC[dPMM * numberOfLBnodesCoarse]; + ftseC = &DC[dMPM * numberOfLBnodesCoarse]; } //////////////////////////////////////////////////////////////////////////////// @@ -26387,96 +26387,96 @@ __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[DIR_P00 * numberOfLBnodesFine]; - fwF = &DF[DIR_M00 * numberOfLBnodesFine]; - fnF = &DF[DIR_0P0 * numberOfLBnodesFine]; - fsF = &DF[DIR_0M0 * numberOfLBnodesFine]; - ftF = &DF[DIR_00P * numberOfLBnodesFine]; - fbF = &DF[DIR_00M * numberOfLBnodesFine]; - fneF = &DF[DIR_PP0 * numberOfLBnodesFine]; - fswF = &DF[DIR_MM0 * numberOfLBnodesFine]; - fseF = &DF[DIR_PM0 * numberOfLBnodesFine]; - fnwF = &DF[DIR_MP0 * numberOfLBnodesFine]; - fteF = &DF[DIR_P0P * numberOfLBnodesFine]; - fbwF = &DF[DIR_M0M * numberOfLBnodesFine]; - fbeF = &DF[DIR_P0M * numberOfLBnodesFine]; - ftwF = &DF[DIR_M0P * numberOfLBnodesFine]; - ftnF = &DF[DIR_0PP * numberOfLBnodesFine]; - fbsF = &DF[DIR_0MM * numberOfLBnodesFine]; - fbnF = &DF[DIR_0PM * numberOfLBnodesFine]; - ftsF = &DF[DIR_0MP * numberOfLBnodesFine]; - fzeroF = &DF[DIR_000 * numberOfLBnodesFine]; - ftneF = &DF[DIR_PPP * numberOfLBnodesFine]; - ftswF = &DF[DIR_MMP * numberOfLBnodesFine]; - ftseF = &DF[DIR_PMP * numberOfLBnodesFine]; - ftnwF = &DF[DIR_MPP * numberOfLBnodesFine]; - fbneF = &DF[DIR_PPM * numberOfLBnodesFine]; - fbswF = &DF[DIR_MMM * numberOfLBnodesFine]; - fbseF = &DF[DIR_PMM * numberOfLBnodesFine]; - fbnwF = &DF[DIR_MPM * numberOfLBnodesFine]; + feF = &DF[dP00 * numberOfLBnodesFine]; + fwF = &DF[dM00 * numberOfLBnodesFine]; + fnF = &DF[d0P0 * numberOfLBnodesFine]; + fsF = &DF[d0M0 * numberOfLBnodesFine]; + ftF = &DF[d00P * numberOfLBnodesFine]; + fbF = &DF[d00M * numberOfLBnodesFine]; + fneF = &DF[dPP0 * numberOfLBnodesFine]; + fswF = &DF[dMM0 * numberOfLBnodesFine]; + fseF = &DF[dPM0 * numberOfLBnodesFine]; + fnwF = &DF[dMP0 * numberOfLBnodesFine]; + fteF = &DF[dP0P * numberOfLBnodesFine]; + fbwF = &DF[dM0M * numberOfLBnodesFine]; + fbeF = &DF[dP0M * numberOfLBnodesFine]; + ftwF = &DF[dM0P * numberOfLBnodesFine]; + ftnF = &DF[d0PP * numberOfLBnodesFine]; + fbsF = &DF[d0MM * numberOfLBnodesFine]; + fbnF = &DF[d0PM * numberOfLBnodesFine]; + ftsF = &DF[d0MP * numberOfLBnodesFine]; + fzeroF = &DF[d000 * numberOfLBnodesFine]; + ftneF = &DF[dPPP * numberOfLBnodesFine]; + ftswF = &DF[dMMP * numberOfLBnodesFine]; + ftseF = &DF[dPMP * numberOfLBnodesFine]; + ftnwF = &DF[dMPP * numberOfLBnodesFine]; + fbneF = &DF[dPPM * numberOfLBnodesFine]; + fbswF = &DF[dMMM * numberOfLBnodesFine]; + fbseF = &DF[dPMM * numberOfLBnodesFine]; + fbnwF = &DF[dMPM * numberOfLBnodesFine]; 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[DIR_P00 * numberOfLBnodesCoarse]; - fwC = &DC[DIR_M00 * numberOfLBnodesCoarse]; - fnC = &DC[DIR_0P0 * numberOfLBnodesCoarse]; - fsC = &DC[DIR_0M0 * numberOfLBnodesCoarse]; - ftC = &DC[DIR_00P * numberOfLBnodesCoarse]; - fbC = &DC[DIR_00M * numberOfLBnodesCoarse]; - fneC = &DC[DIR_PP0 * numberOfLBnodesCoarse]; - fswC = &DC[DIR_MM0 * numberOfLBnodesCoarse]; - fseC = &DC[DIR_PM0 * numberOfLBnodesCoarse]; - fnwC = &DC[DIR_MP0 * numberOfLBnodesCoarse]; - fteC = &DC[DIR_P0P * numberOfLBnodesCoarse]; - fbwC = &DC[DIR_M0M * numberOfLBnodesCoarse]; - fbeC = &DC[DIR_P0M * numberOfLBnodesCoarse]; - ftwC = &DC[DIR_M0P * numberOfLBnodesCoarse]; - ftnC = &DC[DIR_0PP * numberOfLBnodesCoarse]; - fbsC = &DC[DIR_0MM * numberOfLBnodesCoarse]; - fbnC = &DC[DIR_0PM * numberOfLBnodesCoarse]; - ftsC = &DC[DIR_0MP * numberOfLBnodesCoarse]; - fzeroC = &DC[DIR_000 * numberOfLBnodesCoarse]; - ftneC = &DC[DIR_PPP * numberOfLBnodesCoarse]; - ftswC = &DC[DIR_MMP * numberOfLBnodesCoarse]; - ftseC = &DC[DIR_PMP * numberOfLBnodesCoarse]; - ftnwC = &DC[DIR_MPP * numberOfLBnodesCoarse]; - fbneC = &DC[DIR_PPM * numberOfLBnodesCoarse]; - fbswC = &DC[DIR_MMM * numberOfLBnodesCoarse]; - fbseC = &DC[DIR_PMM * numberOfLBnodesCoarse]; - fbnwC = &DC[DIR_MPM * numberOfLBnodesCoarse]; + feC = &DC[dP00 * numberOfLBnodesCoarse]; + fwC = &DC[dM00 * numberOfLBnodesCoarse]; + fnC = &DC[d0P0 * numberOfLBnodesCoarse]; + fsC = &DC[d0M0 * numberOfLBnodesCoarse]; + ftC = &DC[d00P * numberOfLBnodesCoarse]; + fbC = &DC[d00M * numberOfLBnodesCoarse]; + fneC = &DC[dPP0 * numberOfLBnodesCoarse]; + fswC = &DC[dMM0 * numberOfLBnodesCoarse]; + fseC = &DC[dPM0 * numberOfLBnodesCoarse]; + fnwC = &DC[dMP0 * numberOfLBnodesCoarse]; + fteC = &DC[dP0P * numberOfLBnodesCoarse]; + fbwC = &DC[dM0M * numberOfLBnodesCoarse]; + fbeC = &DC[dP0M * numberOfLBnodesCoarse]; + ftwC = &DC[dM0P * numberOfLBnodesCoarse]; + ftnC = &DC[d0PP * numberOfLBnodesCoarse]; + fbsC = &DC[d0MM * numberOfLBnodesCoarse]; + fbnC = &DC[d0PM * numberOfLBnodesCoarse]; + ftsC = &DC[d0MP * numberOfLBnodesCoarse]; + fzeroC = &DC[d000 * numberOfLBnodesCoarse]; + ftneC = &DC[dPPP * numberOfLBnodesCoarse]; + ftswC = &DC[dMMP * numberOfLBnodesCoarse]; + ftseC = &DC[dPMP * numberOfLBnodesCoarse]; + ftnwC = &DC[dMPP * numberOfLBnodesCoarse]; + fbneC = &DC[dPPM * numberOfLBnodesCoarse]; + fbswC = &DC[dMMM * numberOfLBnodesCoarse]; + fbseC = &DC[dPMM * numberOfLBnodesCoarse]; + fbnwC = &DC[dMPM * numberOfLBnodesCoarse]; } else { - fwC = &DC[DIR_P00 * numberOfLBnodesCoarse]; - feC = &DC[DIR_M00 * numberOfLBnodesCoarse]; - fsC = &DC[DIR_0P0 * numberOfLBnodesCoarse]; - fnC = &DC[DIR_0M0 * numberOfLBnodesCoarse]; - fbC = &DC[DIR_00P * numberOfLBnodesCoarse]; - ftC = &DC[DIR_00M * numberOfLBnodesCoarse]; - fswC = &DC[DIR_PP0 * numberOfLBnodesCoarse]; - fneC = &DC[DIR_MM0 * numberOfLBnodesCoarse]; - fnwC = &DC[DIR_PM0 * numberOfLBnodesCoarse]; - fseC = &DC[DIR_MP0 * numberOfLBnodesCoarse]; - fbwC = &DC[DIR_P0P * numberOfLBnodesCoarse]; - fteC = &DC[DIR_M0M * numberOfLBnodesCoarse]; - ftwC = &DC[DIR_P0M * numberOfLBnodesCoarse]; - fbeC = &DC[DIR_M0P * numberOfLBnodesCoarse]; - fbsC = &DC[DIR_0PP * numberOfLBnodesCoarse]; - ftnC = &DC[DIR_0MM * numberOfLBnodesCoarse]; - ftsC = &DC[DIR_0PM * numberOfLBnodesCoarse]; - fbnC = &DC[DIR_0MP * numberOfLBnodesCoarse]; - fzeroC = &DC[DIR_000 * numberOfLBnodesCoarse]; - fbswC = &DC[DIR_PPP * numberOfLBnodesCoarse]; - fbneC = &DC[DIR_MMP * numberOfLBnodesCoarse]; - fbnwC = &DC[DIR_PMP * numberOfLBnodesCoarse]; - fbseC = &DC[DIR_MPP * numberOfLBnodesCoarse]; - ftswC = &DC[DIR_PPM * numberOfLBnodesCoarse]; - ftneC = &DC[DIR_MMM * numberOfLBnodesCoarse]; - ftnwC = &DC[DIR_PMM * numberOfLBnodesCoarse]; - ftseC = &DC[DIR_MPM * numberOfLBnodesCoarse]; + fwC = &DC[dP00 * numberOfLBnodesCoarse]; + feC = &DC[dM00 * numberOfLBnodesCoarse]; + fsC = &DC[d0P0 * numberOfLBnodesCoarse]; + fnC = &DC[d0M0 * numberOfLBnodesCoarse]; + fbC = &DC[d00P * numberOfLBnodesCoarse]; + ftC = &DC[d00M * numberOfLBnodesCoarse]; + fswC = &DC[dPP0 * numberOfLBnodesCoarse]; + fneC = &DC[dMM0 * numberOfLBnodesCoarse]; + fnwC = &DC[dPM0 * numberOfLBnodesCoarse]; + fseC = &DC[dMP0 * numberOfLBnodesCoarse]; + fbwC = &DC[dP0P * numberOfLBnodesCoarse]; + fteC = &DC[dM0M * numberOfLBnodesCoarse]; + ftwC = &DC[dP0M * numberOfLBnodesCoarse]; + fbeC = &DC[dM0P * numberOfLBnodesCoarse]; + fbsC = &DC[d0PP * numberOfLBnodesCoarse]; + ftnC = &DC[d0MM * numberOfLBnodesCoarse]; + ftsC = &DC[d0PM * numberOfLBnodesCoarse]; + fbnC = &DC[d0MP * numberOfLBnodesCoarse]; + fzeroC = &DC[d000 * numberOfLBnodesCoarse]; + fbswC = &DC[dPPP * numberOfLBnodesCoarse]; + fbneC = &DC[dMMP * numberOfLBnodesCoarse]; + fbnwC = &DC[dPMP * numberOfLBnodesCoarse]; + fbseC = &DC[dMPP * numberOfLBnodesCoarse]; + ftswC = &DC[dPPM * numberOfLBnodesCoarse]; + ftneC = &DC[dMMM * numberOfLBnodesCoarse]; + ftnwC = &DC[dPMM * numberOfLBnodesCoarse]; + ftseC = &DC[dMPM * numberOfLBnodesCoarse]; } //////////////////////////////////////////////////////////////////////////////// @@ -31154,96 +31154,96 @@ __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[DIR_P00 * numberOfLBnodesFine]; - fwF = &DF[DIR_M00 * numberOfLBnodesFine]; - fnF = &DF[DIR_0P0 * numberOfLBnodesFine]; - fsF = &DF[DIR_0M0 * numberOfLBnodesFine]; - ftF = &DF[DIR_00P * numberOfLBnodesFine]; - fbF = &DF[DIR_00M * numberOfLBnodesFine]; - fneF = &DF[DIR_PP0 * numberOfLBnodesFine]; - fswF = &DF[DIR_MM0 * numberOfLBnodesFine]; - fseF = &DF[DIR_PM0 * numberOfLBnodesFine]; - fnwF = &DF[DIR_MP0 * numberOfLBnodesFine]; - fteF = &DF[DIR_P0P * numberOfLBnodesFine]; - fbwF = &DF[DIR_M0M * numberOfLBnodesFine]; - fbeF = &DF[DIR_P0M * numberOfLBnodesFine]; - ftwF = &DF[DIR_M0P * numberOfLBnodesFine]; - ftnF = &DF[DIR_0PP * numberOfLBnodesFine]; - fbsF = &DF[DIR_0MM * numberOfLBnodesFine]; - fbnF = &DF[DIR_0PM * numberOfLBnodesFine]; - ftsF = &DF[DIR_0MP * numberOfLBnodesFine]; - fzeroF = &DF[DIR_000 * numberOfLBnodesFine]; - ftneF = &DF[DIR_PPP * numberOfLBnodesFine]; - ftswF = &DF[DIR_MMP * numberOfLBnodesFine]; - ftseF = &DF[DIR_PMP * numberOfLBnodesFine]; - ftnwF = &DF[DIR_MPP * numberOfLBnodesFine]; - fbneF = &DF[DIR_PPM * numberOfLBnodesFine]; - fbswF = &DF[DIR_MMM * numberOfLBnodesFine]; - fbseF = &DF[DIR_PMM * numberOfLBnodesFine]; - fbnwF = &DF[DIR_MPM * numberOfLBnodesFine]; + feF = &DF[dP00 * numberOfLBnodesFine]; + fwF = &DF[dM00 * numberOfLBnodesFine]; + fnF = &DF[d0P0 * numberOfLBnodesFine]; + fsF = &DF[d0M0 * numberOfLBnodesFine]; + ftF = &DF[d00P * numberOfLBnodesFine]; + fbF = &DF[d00M * numberOfLBnodesFine]; + fneF = &DF[dPP0 * numberOfLBnodesFine]; + fswF = &DF[dMM0 * numberOfLBnodesFine]; + fseF = &DF[dPM0 * numberOfLBnodesFine]; + fnwF = &DF[dMP0 * numberOfLBnodesFine]; + fteF = &DF[dP0P * numberOfLBnodesFine]; + fbwF = &DF[dM0M * numberOfLBnodesFine]; + fbeF = &DF[dP0M * numberOfLBnodesFine]; + ftwF = &DF[dM0P * numberOfLBnodesFine]; + ftnF = &DF[d0PP * numberOfLBnodesFine]; + fbsF = &DF[d0MM * numberOfLBnodesFine]; + fbnF = &DF[d0PM * numberOfLBnodesFine]; + ftsF = &DF[d0MP * numberOfLBnodesFine]; + fzeroF = &DF[d000 * numberOfLBnodesFine]; + ftneF = &DF[dPPP * numberOfLBnodesFine]; + ftswF = &DF[dMMP * numberOfLBnodesFine]; + ftseF = &DF[dPMP * numberOfLBnodesFine]; + ftnwF = &DF[dMPP * numberOfLBnodesFine]; + fbneF = &DF[dPPM * numberOfLBnodesFine]; + fbswF = &DF[dMMM * numberOfLBnodesFine]; + fbseF = &DF[dPMM * numberOfLBnodesFine]; + fbnwF = &DF[dMPM * numberOfLBnodesFine]; 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[DIR_P00 * numberOfLBnodesCoarse]; - fwC = &DC[DIR_M00 * numberOfLBnodesCoarse]; - fnC = &DC[DIR_0P0 * numberOfLBnodesCoarse]; - fsC = &DC[DIR_0M0 * numberOfLBnodesCoarse]; - ftC = &DC[DIR_00P * numberOfLBnodesCoarse]; - fbC = &DC[DIR_00M * numberOfLBnodesCoarse]; - fneC = &DC[DIR_PP0 * numberOfLBnodesCoarse]; - fswC = &DC[DIR_MM0 * numberOfLBnodesCoarse]; - fseC = &DC[DIR_PM0 * numberOfLBnodesCoarse]; - fnwC = &DC[DIR_MP0 * numberOfLBnodesCoarse]; - fteC = &DC[DIR_P0P * numberOfLBnodesCoarse]; - fbwC = &DC[DIR_M0M * numberOfLBnodesCoarse]; - fbeC = &DC[DIR_P0M * numberOfLBnodesCoarse]; - ftwC = &DC[DIR_M0P * numberOfLBnodesCoarse]; - ftnC = &DC[DIR_0PP * numberOfLBnodesCoarse]; - fbsC = &DC[DIR_0MM * numberOfLBnodesCoarse]; - fbnC = &DC[DIR_0PM * numberOfLBnodesCoarse]; - ftsC = &DC[DIR_0MP * numberOfLBnodesCoarse]; - fzeroC = &DC[DIR_000 * numberOfLBnodesCoarse]; - ftneC = &DC[DIR_PPP * numberOfLBnodesCoarse]; - ftswC = &DC[DIR_MMP * numberOfLBnodesCoarse]; - ftseC = &DC[DIR_PMP * numberOfLBnodesCoarse]; - ftnwC = &DC[DIR_MPP * numberOfLBnodesCoarse]; - fbneC = &DC[DIR_PPM * numberOfLBnodesCoarse]; - fbswC = &DC[DIR_MMM * numberOfLBnodesCoarse]; - fbseC = &DC[DIR_PMM * numberOfLBnodesCoarse]; - fbnwC = &DC[DIR_MPM * numberOfLBnodesCoarse]; + feC = &DC[dP00 * numberOfLBnodesCoarse]; + fwC = &DC[dM00 * numberOfLBnodesCoarse]; + fnC = &DC[d0P0 * numberOfLBnodesCoarse]; + fsC = &DC[d0M0 * numberOfLBnodesCoarse]; + ftC = &DC[d00P * numberOfLBnodesCoarse]; + fbC = &DC[d00M * numberOfLBnodesCoarse]; + fneC = &DC[dPP0 * numberOfLBnodesCoarse]; + fswC = &DC[dMM0 * numberOfLBnodesCoarse]; + fseC = &DC[dPM0 * numberOfLBnodesCoarse]; + fnwC = &DC[dMP0 * numberOfLBnodesCoarse]; + fteC = &DC[dP0P * numberOfLBnodesCoarse]; + fbwC = &DC[dM0M * numberOfLBnodesCoarse]; + fbeC = &DC[dP0M * numberOfLBnodesCoarse]; + ftwC = &DC[dM0P * numberOfLBnodesCoarse]; + ftnC = &DC[d0PP * numberOfLBnodesCoarse]; + fbsC = &DC[d0MM * numberOfLBnodesCoarse]; + fbnC = &DC[d0PM * numberOfLBnodesCoarse]; + ftsC = &DC[d0MP * numberOfLBnodesCoarse]; + fzeroC = &DC[d000 * numberOfLBnodesCoarse]; + ftneC = &DC[dPPP * numberOfLBnodesCoarse]; + ftswC = &DC[dMMP * numberOfLBnodesCoarse]; + ftseC = &DC[dPMP * numberOfLBnodesCoarse]; + ftnwC = &DC[dMPP * numberOfLBnodesCoarse]; + fbneC = &DC[dPPM * numberOfLBnodesCoarse]; + fbswC = &DC[dMMM * numberOfLBnodesCoarse]; + fbseC = &DC[dPMM * numberOfLBnodesCoarse]; + fbnwC = &DC[dMPM * numberOfLBnodesCoarse]; } else { - fwC = &DC[DIR_P00 * numberOfLBnodesCoarse]; - feC = &DC[DIR_M00 * numberOfLBnodesCoarse]; - fsC = &DC[DIR_0P0 * numberOfLBnodesCoarse]; - fnC = &DC[DIR_0M0 * numberOfLBnodesCoarse]; - fbC = &DC[DIR_00P * numberOfLBnodesCoarse]; - ftC = &DC[DIR_00M * numberOfLBnodesCoarse]; - fswC = &DC[DIR_PP0 * numberOfLBnodesCoarse]; - fneC = &DC[DIR_MM0 * numberOfLBnodesCoarse]; - fnwC = &DC[DIR_PM0 * numberOfLBnodesCoarse]; - fseC = &DC[DIR_MP0 * numberOfLBnodesCoarse]; - fbwC = &DC[DIR_P0P * numberOfLBnodesCoarse]; - fteC = &DC[DIR_M0M * numberOfLBnodesCoarse]; - ftwC = &DC[DIR_P0M * numberOfLBnodesCoarse]; - fbeC = &DC[DIR_M0P * numberOfLBnodesCoarse]; - fbsC = &DC[DIR_0PP * numberOfLBnodesCoarse]; - ftnC = &DC[DIR_0MM * numberOfLBnodesCoarse]; - ftsC = &DC[DIR_0PM * numberOfLBnodesCoarse]; - fbnC = &DC[DIR_0MP * numberOfLBnodesCoarse]; - fzeroC = &DC[DIR_000 * numberOfLBnodesCoarse]; - fbswC = &DC[DIR_PPP * numberOfLBnodesCoarse]; - fbneC = &DC[DIR_MMP * numberOfLBnodesCoarse]; - fbnwC = &DC[DIR_PMP * numberOfLBnodesCoarse]; - fbseC = &DC[DIR_MPP * numberOfLBnodesCoarse]; - ftswC = &DC[DIR_PPM * numberOfLBnodesCoarse]; - ftneC = &DC[DIR_MMM * numberOfLBnodesCoarse]; - ftnwC = &DC[DIR_PMM * numberOfLBnodesCoarse]; - ftseC = &DC[DIR_MPM * numberOfLBnodesCoarse]; + fwC = &DC[dP00 * numberOfLBnodesCoarse]; + feC = &DC[dM00 * numberOfLBnodesCoarse]; + fsC = &DC[d0P0 * numberOfLBnodesCoarse]; + fnC = &DC[d0M0 * numberOfLBnodesCoarse]; + fbC = &DC[d00P * numberOfLBnodesCoarse]; + ftC = &DC[d00M * numberOfLBnodesCoarse]; + fswC = &DC[dPP0 * numberOfLBnodesCoarse]; + fneC = &DC[dMM0 * numberOfLBnodesCoarse]; + fnwC = &DC[dPM0 * numberOfLBnodesCoarse]; + fseC = &DC[dMP0 * numberOfLBnodesCoarse]; + fbwC = &DC[dP0P * numberOfLBnodesCoarse]; + fteC = &DC[dM0M * numberOfLBnodesCoarse]; + ftwC = &DC[dP0M * numberOfLBnodesCoarse]; + fbeC = &DC[dM0P * numberOfLBnodesCoarse]; + fbsC = &DC[d0PP * numberOfLBnodesCoarse]; + ftnC = &DC[d0MM * numberOfLBnodesCoarse]; + ftsC = &DC[d0PM * numberOfLBnodesCoarse]; + fbnC = &DC[d0MP * numberOfLBnodesCoarse]; + fzeroC = &DC[d000 * numberOfLBnodesCoarse]; + fbswC = &DC[dPPP * numberOfLBnodesCoarse]; + fbneC = &DC[dMMP * numberOfLBnodesCoarse]; + fbnwC = &DC[dPMP * numberOfLBnodesCoarse]; + fbseC = &DC[dMPP * numberOfLBnodesCoarse]; + ftswC = &DC[dPPM * numberOfLBnodesCoarse]; + ftneC = &DC[dMMM * numberOfLBnodesCoarse]; + ftnwC = &DC[dPMM * numberOfLBnodesCoarse]; + ftseC = &DC[dMPM * numberOfLBnodesCoarse]; } //////////////////////////////////////////////////////////////////////////////// @@ -35098,96 +35098,96 @@ __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[DIR_P00 * numberOfLBnodesFine]; - fwF = &DF[DIR_M00 * numberOfLBnodesFine]; - fnF = &DF[DIR_0P0 * numberOfLBnodesFine]; - fsF = &DF[DIR_0M0 * numberOfLBnodesFine]; - ftF = &DF[DIR_00P * numberOfLBnodesFine]; - fbF = &DF[DIR_00M * numberOfLBnodesFine]; - fneF = &DF[DIR_PP0 * numberOfLBnodesFine]; - fswF = &DF[DIR_MM0 * numberOfLBnodesFine]; - fseF = &DF[DIR_PM0 * numberOfLBnodesFine]; - fnwF = &DF[DIR_MP0 * numberOfLBnodesFine]; - fteF = &DF[DIR_P0P * numberOfLBnodesFine]; - fbwF = &DF[DIR_M0M * numberOfLBnodesFine]; - fbeF = &DF[DIR_P0M * numberOfLBnodesFine]; - ftwF = &DF[DIR_M0P * numberOfLBnodesFine]; - ftnF = &DF[DIR_0PP * numberOfLBnodesFine]; - fbsF = &DF[DIR_0MM * numberOfLBnodesFine]; - fbnF = &DF[DIR_0PM * numberOfLBnodesFine]; - ftsF = &DF[DIR_0MP * numberOfLBnodesFine]; - fzeroF = &DF[DIR_000 * numberOfLBnodesFine]; - ftneF = &DF[DIR_PPP * numberOfLBnodesFine]; - ftswF = &DF[DIR_MMP * numberOfLBnodesFine]; - ftseF = &DF[DIR_PMP * numberOfLBnodesFine]; - ftnwF = &DF[DIR_MPP * numberOfLBnodesFine]; - fbneF = &DF[DIR_PPM * numberOfLBnodesFine]; - fbswF = &DF[DIR_MMM * numberOfLBnodesFine]; - fbseF = &DF[DIR_PMM * numberOfLBnodesFine]; - fbnwF = &DF[DIR_MPM * numberOfLBnodesFine]; + feF = &DF[dP00 * numberOfLBnodesFine]; + fwF = &DF[dM00 * numberOfLBnodesFine]; + fnF = &DF[d0P0 * numberOfLBnodesFine]; + fsF = &DF[d0M0 * numberOfLBnodesFine]; + ftF = &DF[d00P * numberOfLBnodesFine]; + fbF = &DF[d00M * numberOfLBnodesFine]; + fneF = &DF[dPP0 * numberOfLBnodesFine]; + fswF = &DF[dMM0 * numberOfLBnodesFine]; + fseF = &DF[dPM0 * numberOfLBnodesFine]; + fnwF = &DF[dMP0 * numberOfLBnodesFine]; + fteF = &DF[dP0P * numberOfLBnodesFine]; + fbwF = &DF[dM0M * numberOfLBnodesFine]; + fbeF = &DF[dP0M * numberOfLBnodesFine]; + ftwF = &DF[dM0P * numberOfLBnodesFine]; + ftnF = &DF[d0PP * numberOfLBnodesFine]; + fbsF = &DF[d0MM * numberOfLBnodesFine]; + fbnF = &DF[d0PM * numberOfLBnodesFine]; + ftsF = &DF[d0MP * numberOfLBnodesFine]; + fzeroF = &DF[d000 * numberOfLBnodesFine]; + ftneF = &DF[dPPP * numberOfLBnodesFine]; + ftswF = &DF[dMMP * numberOfLBnodesFine]; + ftseF = &DF[dPMP * numberOfLBnodesFine]; + ftnwF = &DF[dMPP * numberOfLBnodesFine]; + fbneF = &DF[dPPM * numberOfLBnodesFine]; + fbswF = &DF[dMMM * numberOfLBnodesFine]; + fbseF = &DF[dPMM * numberOfLBnodesFine]; + fbnwF = &DF[dMPM * numberOfLBnodesFine]; 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[DIR_P00 * numberOfLBnodesCoarse]; - fwC = &DC[DIR_M00 * numberOfLBnodesCoarse]; - fnC = &DC[DIR_0P0 * numberOfLBnodesCoarse]; - fsC = &DC[DIR_0M0 * numberOfLBnodesCoarse]; - ftC = &DC[DIR_00P * numberOfLBnodesCoarse]; - fbC = &DC[DIR_00M * numberOfLBnodesCoarse]; - fneC = &DC[DIR_PP0 * numberOfLBnodesCoarse]; - fswC = &DC[DIR_MM0 * numberOfLBnodesCoarse]; - fseC = &DC[DIR_PM0 * numberOfLBnodesCoarse]; - fnwC = &DC[DIR_MP0 * numberOfLBnodesCoarse]; - fteC = &DC[DIR_P0P * numberOfLBnodesCoarse]; - fbwC = &DC[DIR_M0M * numberOfLBnodesCoarse]; - fbeC = &DC[DIR_P0M * numberOfLBnodesCoarse]; - ftwC = &DC[DIR_M0P * numberOfLBnodesCoarse]; - ftnC = &DC[DIR_0PP * numberOfLBnodesCoarse]; - fbsC = &DC[DIR_0MM * numberOfLBnodesCoarse]; - fbnC = &DC[DIR_0PM * numberOfLBnodesCoarse]; - ftsC = &DC[DIR_0MP * numberOfLBnodesCoarse]; - fzeroC = &DC[DIR_000 * numberOfLBnodesCoarse]; - ftneC = &DC[DIR_PPP * numberOfLBnodesCoarse]; - ftswC = &DC[DIR_MMP * numberOfLBnodesCoarse]; - ftseC = &DC[DIR_PMP * numberOfLBnodesCoarse]; - ftnwC = &DC[DIR_MPP * numberOfLBnodesCoarse]; - fbneC = &DC[DIR_PPM * numberOfLBnodesCoarse]; - fbswC = &DC[DIR_MMM * numberOfLBnodesCoarse]; - fbseC = &DC[DIR_PMM * numberOfLBnodesCoarse]; - fbnwC = &DC[DIR_MPM * numberOfLBnodesCoarse]; + feC = &DC[dP00 * numberOfLBnodesCoarse]; + fwC = &DC[dM00 * numberOfLBnodesCoarse]; + fnC = &DC[d0P0 * numberOfLBnodesCoarse]; + fsC = &DC[d0M0 * numberOfLBnodesCoarse]; + ftC = &DC[d00P * numberOfLBnodesCoarse]; + fbC = &DC[d00M * numberOfLBnodesCoarse]; + fneC = &DC[dPP0 * numberOfLBnodesCoarse]; + fswC = &DC[dMM0 * numberOfLBnodesCoarse]; + fseC = &DC[dPM0 * numberOfLBnodesCoarse]; + fnwC = &DC[dMP0 * numberOfLBnodesCoarse]; + fteC = &DC[dP0P * numberOfLBnodesCoarse]; + fbwC = &DC[dM0M * numberOfLBnodesCoarse]; + fbeC = &DC[dP0M * numberOfLBnodesCoarse]; + ftwC = &DC[dM0P * numberOfLBnodesCoarse]; + ftnC = &DC[d0PP * numberOfLBnodesCoarse]; + fbsC = &DC[d0MM * numberOfLBnodesCoarse]; + fbnC = &DC[d0PM * numberOfLBnodesCoarse]; + ftsC = &DC[d0MP * numberOfLBnodesCoarse]; + fzeroC = &DC[d000 * numberOfLBnodesCoarse]; + ftneC = &DC[dPPP * numberOfLBnodesCoarse]; + ftswC = &DC[dMMP * numberOfLBnodesCoarse]; + ftseC = &DC[dPMP * numberOfLBnodesCoarse]; + ftnwC = &DC[dMPP * numberOfLBnodesCoarse]; + fbneC = &DC[dPPM * numberOfLBnodesCoarse]; + fbswC = &DC[dMMM * numberOfLBnodesCoarse]; + fbseC = &DC[dPMM * numberOfLBnodesCoarse]; + fbnwC = &DC[dMPM * numberOfLBnodesCoarse]; } else { - fwC = &DC[DIR_P00 * numberOfLBnodesCoarse]; - feC = &DC[DIR_M00 * numberOfLBnodesCoarse]; - fsC = &DC[DIR_0P0 * numberOfLBnodesCoarse]; - fnC = &DC[DIR_0M0 * numberOfLBnodesCoarse]; - fbC = &DC[DIR_00P * numberOfLBnodesCoarse]; - ftC = &DC[DIR_00M * numberOfLBnodesCoarse]; - fswC = &DC[DIR_PP0 * numberOfLBnodesCoarse]; - fneC = &DC[DIR_MM0 * numberOfLBnodesCoarse]; - fnwC = &DC[DIR_PM0 * numberOfLBnodesCoarse]; - fseC = &DC[DIR_MP0 * numberOfLBnodesCoarse]; - fbwC = &DC[DIR_P0P * numberOfLBnodesCoarse]; - fteC = &DC[DIR_M0M * numberOfLBnodesCoarse]; - ftwC = &DC[DIR_P0M * numberOfLBnodesCoarse]; - fbeC = &DC[DIR_M0P * numberOfLBnodesCoarse]; - fbsC = &DC[DIR_0PP * numberOfLBnodesCoarse]; - ftnC = &DC[DIR_0MM * numberOfLBnodesCoarse]; - ftsC = &DC[DIR_0PM * numberOfLBnodesCoarse]; - fbnC = &DC[DIR_0MP * numberOfLBnodesCoarse]; - fzeroC = &DC[DIR_000 * numberOfLBnodesCoarse]; - fbswC = &DC[DIR_PPP * numberOfLBnodesCoarse]; - fbneC = &DC[DIR_MMP * numberOfLBnodesCoarse]; - fbnwC = &DC[DIR_PMP * numberOfLBnodesCoarse]; - fbseC = &DC[DIR_MPP * numberOfLBnodesCoarse]; - ftswC = &DC[DIR_PPM * numberOfLBnodesCoarse]; - ftneC = &DC[DIR_MMM * numberOfLBnodesCoarse]; - ftnwC = &DC[DIR_PMM * numberOfLBnodesCoarse]; - ftseC = &DC[DIR_MPM * numberOfLBnodesCoarse]; + fwC = &DC[dP00 * numberOfLBnodesCoarse]; + feC = &DC[dM00 * numberOfLBnodesCoarse]; + fsC = &DC[d0P0 * numberOfLBnodesCoarse]; + fnC = &DC[d0M0 * numberOfLBnodesCoarse]; + fbC = &DC[d00P * numberOfLBnodesCoarse]; + ftC = &DC[d00M * numberOfLBnodesCoarse]; + fswC = &DC[dPP0 * numberOfLBnodesCoarse]; + fneC = &DC[dMM0 * numberOfLBnodesCoarse]; + fnwC = &DC[dPM0 * numberOfLBnodesCoarse]; + fseC = &DC[dMP0 * numberOfLBnodesCoarse]; + fbwC = &DC[dP0P * numberOfLBnodesCoarse]; + fteC = &DC[dM0M * numberOfLBnodesCoarse]; + ftwC = &DC[dP0M * numberOfLBnodesCoarse]; + fbeC = &DC[dM0P * numberOfLBnodesCoarse]; + fbsC = &DC[d0PP * numberOfLBnodesCoarse]; + ftnC = &DC[d0MM * numberOfLBnodesCoarse]; + ftsC = &DC[d0PM * numberOfLBnodesCoarse]; + fbnC = &DC[d0MP * numberOfLBnodesCoarse]; + fzeroC = &DC[d000 * numberOfLBnodesCoarse]; + fbswC = &DC[dPPP * numberOfLBnodesCoarse]; + fbneC = &DC[dMMP * numberOfLBnodesCoarse]; + fbnwC = &DC[dPMP * numberOfLBnodesCoarse]; + fbseC = &DC[dMPP * numberOfLBnodesCoarse]; + ftswC = &DC[dPPM * numberOfLBnodesCoarse]; + ftneC = &DC[dMMM * numberOfLBnodesCoarse]; + ftnwC = &DC[dPMM * numberOfLBnodesCoarse]; + ftseC = &DC[dMPM * numberOfLBnodesCoarse]; } //////////////////////////////////////////////////////////////////////////////// @@ -39356,96 +39356,96 @@ __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[DIR_P00 * numberOfLBnodesFine]; - fwF = &DF[DIR_M00 * numberOfLBnodesFine]; - fnF = &DF[DIR_0P0 * numberOfLBnodesFine]; - fsF = &DF[DIR_0M0 * numberOfLBnodesFine]; - ftF = &DF[DIR_00P * numberOfLBnodesFine]; - fbF = &DF[DIR_00M * numberOfLBnodesFine]; - fneF = &DF[DIR_PP0 * numberOfLBnodesFine]; - fswF = &DF[DIR_MM0 * numberOfLBnodesFine]; - fseF = &DF[DIR_PM0 * numberOfLBnodesFine]; - fnwF = &DF[DIR_MP0 * numberOfLBnodesFine]; - fteF = &DF[DIR_P0P * numberOfLBnodesFine]; - fbwF = &DF[DIR_M0M * numberOfLBnodesFine]; - fbeF = &DF[DIR_P0M * numberOfLBnodesFine]; - ftwF = &DF[DIR_M0P * numberOfLBnodesFine]; - ftnF = &DF[DIR_0PP * numberOfLBnodesFine]; - fbsF = &DF[DIR_0MM * numberOfLBnodesFine]; - fbnF = &DF[DIR_0PM * numberOfLBnodesFine]; - ftsF = &DF[DIR_0MP * numberOfLBnodesFine]; - fzeroF = &DF[DIR_000 * numberOfLBnodesFine]; - ftneF = &DF[DIR_PPP * numberOfLBnodesFine]; - ftswF = &DF[DIR_MMP * numberOfLBnodesFine]; - ftseF = &DF[DIR_PMP * numberOfLBnodesFine]; - ftnwF = &DF[DIR_MPP * numberOfLBnodesFine]; - fbneF = &DF[DIR_PPM * numberOfLBnodesFine]; - fbswF = &DF[DIR_MMM * numberOfLBnodesFine]; - fbseF = &DF[DIR_PMM * numberOfLBnodesFine]; - fbnwF = &DF[DIR_MPM * numberOfLBnodesFine]; + feF = &DF[dP00 * numberOfLBnodesFine]; + fwF = &DF[dM00 * numberOfLBnodesFine]; + fnF = &DF[d0P0 * numberOfLBnodesFine]; + fsF = &DF[d0M0 * numberOfLBnodesFine]; + ftF = &DF[d00P * numberOfLBnodesFine]; + fbF = &DF[d00M * numberOfLBnodesFine]; + fneF = &DF[dPP0 * numberOfLBnodesFine]; + fswF = &DF[dMM0 * numberOfLBnodesFine]; + fseF = &DF[dPM0 * numberOfLBnodesFine]; + fnwF = &DF[dMP0 * numberOfLBnodesFine]; + fteF = &DF[dP0P * numberOfLBnodesFine]; + fbwF = &DF[dM0M * numberOfLBnodesFine]; + fbeF = &DF[dP0M * numberOfLBnodesFine]; + ftwF = &DF[dM0P * numberOfLBnodesFine]; + ftnF = &DF[d0PP * numberOfLBnodesFine]; + fbsF = &DF[d0MM * numberOfLBnodesFine]; + fbnF = &DF[d0PM * numberOfLBnodesFine]; + ftsF = &DF[d0MP * numberOfLBnodesFine]; + fzeroF = &DF[d000 * numberOfLBnodesFine]; + ftneF = &DF[dPPP * numberOfLBnodesFine]; + ftswF = &DF[dMMP * numberOfLBnodesFine]; + ftseF = &DF[dPMP * numberOfLBnodesFine]; + ftnwF = &DF[dMPP * numberOfLBnodesFine]; + fbneF = &DF[dPPM * numberOfLBnodesFine]; + fbswF = &DF[dMMM * numberOfLBnodesFine]; + fbseF = &DF[dPMM * numberOfLBnodesFine]; + fbnwF = &DF[dMPM * numberOfLBnodesFine]; 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[DIR_P00 * numberOfLBnodesCoarse]; - fwC = &DC[DIR_M00 * numberOfLBnodesCoarse]; - fnC = &DC[DIR_0P0 * numberOfLBnodesCoarse]; - fsC = &DC[DIR_0M0 * numberOfLBnodesCoarse]; - ftC = &DC[DIR_00P * numberOfLBnodesCoarse]; - fbC = &DC[DIR_00M * numberOfLBnodesCoarse]; - fneC = &DC[DIR_PP0 * numberOfLBnodesCoarse]; - fswC = &DC[DIR_MM0 * numberOfLBnodesCoarse]; - fseC = &DC[DIR_PM0 * numberOfLBnodesCoarse]; - fnwC = &DC[DIR_MP0 * numberOfLBnodesCoarse]; - fteC = &DC[DIR_P0P * numberOfLBnodesCoarse]; - fbwC = &DC[DIR_M0M * numberOfLBnodesCoarse]; - fbeC = &DC[DIR_P0M * numberOfLBnodesCoarse]; - ftwC = &DC[DIR_M0P * numberOfLBnodesCoarse]; - ftnC = &DC[DIR_0PP * numberOfLBnodesCoarse]; - fbsC = &DC[DIR_0MM * numberOfLBnodesCoarse]; - fbnC = &DC[DIR_0PM * numberOfLBnodesCoarse]; - ftsC = &DC[DIR_0MP * numberOfLBnodesCoarse]; - fzeroC = &DC[DIR_000 * numberOfLBnodesCoarse]; - ftneC = &DC[DIR_PPP * numberOfLBnodesCoarse]; - ftswC = &DC[DIR_MMP * numberOfLBnodesCoarse]; - ftseC = &DC[DIR_PMP * numberOfLBnodesCoarse]; - ftnwC = &DC[DIR_MPP * numberOfLBnodesCoarse]; - fbneC = &DC[DIR_PPM * numberOfLBnodesCoarse]; - fbswC = &DC[DIR_MMM * numberOfLBnodesCoarse]; - fbseC = &DC[DIR_PMM * numberOfLBnodesCoarse]; - fbnwC = &DC[DIR_MPM * numberOfLBnodesCoarse]; + feC = &DC[dP00 * numberOfLBnodesCoarse]; + fwC = &DC[dM00 * numberOfLBnodesCoarse]; + fnC = &DC[d0P0 * numberOfLBnodesCoarse]; + fsC = &DC[d0M0 * numberOfLBnodesCoarse]; + ftC = &DC[d00P * numberOfLBnodesCoarse]; + fbC = &DC[d00M * numberOfLBnodesCoarse]; + fneC = &DC[dPP0 * numberOfLBnodesCoarse]; + fswC = &DC[dMM0 * numberOfLBnodesCoarse]; + fseC = &DC[dPM0 * numberOfLBnodesCoarse]; + fnwC = &DC[dMP0 * numberOfLBnodesCoarse]; + fteC = &DC[dP0P * numberOfLBnodesCoarse]; + fbwC = &DC[dM0M * numberOfLBnodesCoarse]; + fbeC = &DC[dP0M * numberOfLBnodesCoarse]; + ftwC = &DC[dM0P * numberOfLBnodesCoarse]; + ftnC = &DC[d0PP * numberOfLBnodesCoarse]; + fbsC = &DC[d0MM * numberOfLBnodesCoarse]; + fbnC = &DC[d0PM * numberOfLBnodesCoarse]; + ftsC = &DC[d0MP * numberOfLBnodesCoarse]; + fzeroC = &DC[d000 * numberOfLBnodesCoarse]; + ftneC = &DC[dPPP * numberOfLBnodesCoarse]; + ftswC = &DC[dMMP * numberOfLBnodesCoarse]; + ftseC = &DC[dPMP * numberOfLBnodesCoarse]; + ftnwC = &DC[dMPP * numberOfLBnodesCoarse]; + fbneC = &DC[dPPM * numberOfLBnodesCoarse]; + fbswC = &DC[dMMM * numberOfLBnodesCoarse]; + fbseC = &DC[dPMM * numberOfLBnodesCoarse]; + fbnwC = &DC[dMPM * numberOfLBnodesCoarse]; } else { - fwC = &DC[DIR_P00 * numberOfLBnodesCoarse]; - feC = &DC[DIR_M00 * numberOfLBnodesCoarse]; - fsC = &DC[DIR_0P0 * numberOfLBnodesCoarse]; - fnC = &DC[DIR_0M0 * numberOfLBnodesCoarse]; - fbC = &DC[DIR_00P * numberOfLBnodesCoarse]; - ftC = &DC[DIR_00M * numberOfLBnodesCoarse]; - fswC = &DC[DIR_PP0 * numberOfLBnodesCoarse]; - fneC = &DC[DIR_MM0 * numberOfLBnodesCoarse]; - fnwC = &DC[DIR_PM0 * numberOfLBnodesCoarse]; - fseC = &DC[DIR_MP0 * numberOfLBnodesCoarse]; - fbwC = &DC[DIR_P0P * numberOfLBnodesCoarse]; - fteC = &DC[DIR_M0M * numberOfLBnodesCoarse]; - ftwC = &DC[DIR_P0M * numberOfLBnodesCoarse]; - fbeC = &DC[DIR_M0P * numberOfLBnodesCoarse]; - fbsC = &DC[DIR_0PP * numberOfLBnodesCoarse]; - ftnC = &DC[DIR_0MM * numberOfLBnodesCoarse]; - ftsC = &DC[DIR_0PM * numberOfLBnodesCoarse]; - fbnC = &DC[DIR_0MP * numberOfLBnodesCoarse]; - fzeroC = &DC[DIR_000 * numberOfLBnodesCoarse]; - fbswC = &DC[DIR_PPP * numberOfLBnodesCoarse]; - fbneC = &DC[DIR_MMP * numberOfLBnodesCoarse]; - fbnwC = &DC[DIR_PMP * numberOfLBnodesCoarse]; - fbseC = &DC[DIR_MPP * numberOfLBnodesCoarse]; - ftswC = &DC[DIR_PPM * numberOfLBnodesCoarse]; - ftneC = &DC[DIR_MMM * numberOfLBnodesCoarse]; - ftnwC = &DC[DIR_PMM * numberOfLBnodesCoarse]; - ftseC = &DC[DIR_MPM * numberOfLBnodesCoarse]; + fwC = &DC[dP00 * numberOfLBnodesCoarse]; + feC = &DC[dM00 * numberOfLBnodesCoarse]; + fsC = &DC[d0P0 * numberOfLBnodesCoarse]; + fnC = &DC[d0M0 * numberOfLBnodesCoarse]; + fbC = &DC[d00P * numberOfLBnodesCoarse]; + ftC = &DC[d00M * numberOfLBnodesCoarse]; + fswC = &DC[dPP0 * numberOfLBnodesCoarse]; + fneC = &DC[dMM0 * numberOfLBnodesCoarse]; + fnwC = &DC[dPM0 * numberOfLBnodesCoarse]; + fseC = &DC[dMP0 * numberOfLBnodesCoarse]; + fbwC = &DC[dP0P * numberOfLBnodesCoarse]; + fteC = &DC[dM0M * numberOfLBnodesCoarse]; + ftwC = &DC[dP0M * numberOfLBnodesCoarse]; + fbeC = &DC[dM0P * numberOfLBnodesCoarse]; + fbsC = &DC[d0PP * numberOfLBnodesCoarse]; + ftnC = &DC[d0MM * numberOfLBnodesCoarse]; + ftsC = &DC[d0PM * numberOfLBnodesCoarse]; + fbnC = &DC[d0MP * numberOfLBnodesCoarse]; + fzeroC = &DC[d000 * numberOfLBnodesCoarse]; + fbswC = &DC[dPPP * numberOfLBnodesCoarse]; + fbneC = &DC[dMMP * numberOfLBnodesCoarse]; + fbnwC = &DC[dPMP * numberOfLBnodesCoarse]; + fbseC = &DC[dMPP * numberOfLBnodesCoarse]; + ftswC = &DC[dPPM * numberOfLBnodesCoarse]; + ftneC = &DC[dMMM * numberOfLBnodesCoarse]; + ftnwC = &DC[dPMM * numberOfLBnodesCoarse]; + ftseC = &DC[dMPM * numberOfLBnodesCoarse]; } //////////////////////////////////////////////////////////////////////////////// @@ -41030,96 +41030,96 @@ __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[DIR_P00 * numberOfLBnodesFine]; - fwF = &DF[DIR_M00 * numberOfLBnodesFine]; - fnF = &DF[DIR_0P0 * numberOfLBnodesFine]; - fsF = &DF[DIR_0M0 * numberOfLBnodesFine]; - ftF = &DF[DIR_00P * numberOfLBnodesFine]; - fbF = &DF[DIR_00M * numberOfLBnodesFine]; - fneF = &DF[DIR_PP0 * numberOfLBnodesFine]; - fswF = &DF[DIR_MM0 * numberOfLBnodesFine]; - fseF = &DF[DIR_PM0 * numberOfLBnodesFine]; - fnwF = &DF[DIR_MP0 * numberOfLBnodesFine]; - fteF = &DF[DIR_P0P * numberOfLBnodesFine]; - fbwF = &DF[DIR_M0M * numberOfLBnodesFine]; - fbeF = &DF[DIR_P0M * numberOfLBnodesFine]; - ftwF = &DF[DIR_M0P * numberOfLBnodesFine]; - ftnF = &DF[DIR_0PP * numberOfLBnodesFine]; - fbsF = &DF[DIR_0MM * numberOfLBnodesFine]; - fbnF = &DF[DIR_0PM * numberOfLBnodesFine]; - ftsF = &DF[DIR_0MP * numberOfLBnodesFine]; - fzeroF = &DF[DIR_000 * numberOfLBnodesFine]; - ftneF = &DF[DIR_PPP * numberOfLBnodesFine]; - ftswF = &DF[DIR_MMP * numberOfLBnodesFine]; - ftseF = &DF[DIR_PMP * numberOfLBnodesFine]; - ftnwF = &DF[DIR_MPP * numberOfLBnodesFine]; - fbneF = &DF[DIR_PPM * numberOfLBnodesFine]; - fbswF = &DF[DIR_MMM * numberOfLBnodesFine]; - fbseF = &DF[DIR_PMM * numberOfLBnodesFine]; - fbnwF = &DF[DIR_MPM * numberOfLBnodesFine]; + feF = &DF[dP00 * numberOfLBnodesFine]; + fwF = &DF[dM00 * numberOfLBnodesFine]; + fnF = &DF[d0P0 * numberOfLBnodesFine]; + fsF = &DF[d0M0 * numberOfLBnodesFine]; + ftF = &DF[d00P * numberOfLBnodesFine]; + fbF = &DF[d00M * numberOfLBnodesFine]; + fneF = &DF[dPP0 * numberOfLBnodesFine]; + fswF = &DF[dMM0 * numberOfLBnodesFine]; + fseF = &DF[dPM0 * numberOfLBnodesFine]; + fnwF = &DF[dMP0 * numberOfLBnodesFine]; + fteF = &DF[dP0P * numberOfLBnodesFine]; + fbwF = &DF[dM0M * numberOfLBnodesFine]; + fbeF = &DF[dP0M * numberOfLBnodesFine]; + ftwF = &DF[dM0P * numberOfLBnodesFine]; + ftnF = &DF[d0PP * numberOfLBnodesFine]; + fbsF = &DF[d0MM * numberOfLBnodesFine]; + fbnF = &DF[d0PM * numberOfLBnodesFine]; + ftsF = &DF[d0MP * numberOfLBnodesFine]; + fzeroF = &DF[d000 * numberOfLBnodesFine]; + ftneF = &DF[dPPP * numberOfLBnodesFine]; + ftswF = &DF[dMMP * numberOfLBnodesFine]; + ftseF = &DF[dPMP * numberOfLBnodesFine]; + ftnwF = &DF[dMPP * numberOfLBnodesFine]; + fbneF = &DF[dPPM * numberOfLBnodesFine]; + fbswF = &DF[dMMM * numberOfLBnodesFine]; + fbseF = &DF[dPMM * numberOfLBnodesFine]; + fbnwF = &DF[dMPM * numberOfLBnodesFine]; 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[DIR_P00 * numberOfLBnodesCoarse]; - fwC = &DC[DIR_M00 * numberOfLBnodesCoarse]; - fnC = &DC[DIR_0P0 * numberOfLBnodesCoarse]; - fsC = &DC[DIR_0M0 * numberOfLBnodesCoarse]; - ftC = &DC[DIR_00P * numberOfLBnodesCoarse]; - fbC = &DC[DIR_00M * numberOfLBnodesCoarse]; - fneC = &DC[DIR_PP0 * numberOfLBnodesCoarse]; - fswC = &DC[DIR_MM0 * numberOfLBnodesCoarse]; - fseC = &DC[DIR_PM0 * numberOfLBnodesCoarse]; - fnwC = &DC[DIR_MP0 * numberOfLBnodesCoarse]; - fteC = &DC[DIR_P0P * numberOfLBnodesCoarse]; - fbwC = &DC[DIR_M0M * numberOfLBnodesCoarse]; - fbeC = &DC[DIR_P0M * numberOfLBnodesCoarse]; - ftwC = &DC[DIR_M0P * numberOfLBnodesCoarse]; - ftnC = &DC[DIR_0PP * numberOfLBnodesCoarse]; - fbsC = &DC[DIR_0MM * numberOfLBnodesCoarse]; - fbnC = &DC[DIR_0PM * numberOfLBnodesCoarse]; - ftsC = &DC[DIR_0MP * numberOfLBnodesCoarse]; - fzeroC = &DC[DIR_000 * numberOfLBnodesCoarse]; - ftneC = &DC[DIR_PPP * numberOfLBnodesCoarse]; - ftswC = &DC[DIR_MMP * numberOfLBnodesCoarse]; - ftseC = &DC[DIR_PMP * numberOfLBnodesCoarse]; - ftnwC = &DC[DIR_MPP * numberOfLBnodesCoarse]; - fbneC = &DC[DIR_PPM * numberOfLBnodesCoarse]; - fbswC = &DC[DIR_MMM * numberOfLBnodesCoarse]; - fbseC = &DC[DIR_PMM * numberOfLBnodesCoarse]; - fbnwC = &DC[DIR_MPM * numberOfLBnodesCoarse]; + feC = &DC[dP00 * numberOfLBnodesCoarse]; + fwC = &DC[dM00 * numberOfLBnodesCoarse]; + fnC = &DC[d0P0 * numberOfLBnodesCoarse]; + fsC = &DC[d0M0 * numberOfLBnodesCoarse]; + ftC = &DC[d00P * numberOfLBnodesCoarse]; + fbC = &DC[d00M * numberOfLBnodesCoarse]; + fneC = &DC[dPP0 * numberOfLBnodesCoarse]; + fswC = &DC[dMM0 * numberOfLBnodesCoarse]; + fseC = &DC[dPM0 * numberOfLBnodesCoarse]; + fnwC = &DC[dMP0 * numberOfLBnodesCoarse]; + fteC = &DC[dP0P * numberOfLBnodesCoarse]; + fbwC = &DC[dM0M * numberOfLBnodesCoarse]; + fbeC = &DC[dP0M * numberOfLBnodesCoarse]; + ftwC = &DC[dM0P * numberOfLBnodesCoarse]; + ftnC = &DC[d0PP * numberOfLBnodesCoarse]; + fbsC = &DC[d0MM * numberOfLBnodesCoarse]; + fbnC = &DC[d0PM * numberOfLBnodesCoarse]; + ftsC = &DC[d0MP * numberOfLBnodesCoarse]; + fzeroC = &DC[d000 * numberOfLBnodesCoarse]; + ftneC = &DC[dPPP * numberOfLBnodesCoarse]; + ftswC = &DC[dMMP * numberOfLBnodesCoarse]; + ftseC = &DC[dPMP * numberOfLBnodesCoarse]; + ftnwC = &DC[dMPP * numberOfLBnodesCoarse]; + fbneC = &DC[dPPM * numberOfLBnodesCoarse]; + fbswC = &DC[dMMM * numberOfLBnodesCoarse]; + fbseC = &DC[dPMM * numberOfLBnodesCoarse]; + fbnwC = &DC[dMPM * numberOfLBnodesCoarse]; } else { - fwC = &DC[DIR_P00 * numberOfLBnodesCoarse]; - feC = &DC[DIR_M00 * numberOfLBnodesCoarse]; - fsC = &DC[DIR_0P0 * numberOfLBnodesCoarse]; - fnC = &DC[DIR_0M0 * numberOfLBnodesCoarse]; - fbC = &DC[DIR_00P * numberOfLBnodesCoarse]; - ftC = &DC[DIR_00M * numberOfLBnodesCoarse]; - fswC = &DC[DIR_PP0 * numberOfLBnodesCoarse]; - fneC = &DC[DIR_MM0 * numberOfLBnodesCoarse]; - fnwC = &DC[DIR_PM0 * numberOfLBnodesCoarse]; - fseC = &DC[DIR_MP0 * numberOfLBnodesCoarse]; - fbwC = &DC[DIR_P0P * numberOfLBnodesCoarse]; - fteC = &DC[DIR_M0M * numberOfLBnodesCoarse]; - ftwC = &DC[DIR_P0M * numberOfLBnodesCoarse]; - fbeC = &DC[DIR_M0P * numberOfLBnodesCoarse]; - fbsC = &DC[DIR_0PP * numberOfLBnodesCoarse]; - ftnC = &DC[DIR_0MM * numberOfLBnodesCoarse]; - ftsC = &DC[DIR_0PM * numberOfLBnodesCoarse]; - fbnC = &DC[DIR_0MP * numberOfLBnodesCoarse]; - fzeroC = &DC[DIR_000 * numberOfLBnodesCoarse]; - fbswC = &DC[DIR_PPP * numberOfLBnodesCoarse]; - fbneC = &DC[DIR_MMP * numberOfLBnodesCoarse]; - fbnwC = &DC[DIR_PMP * numberOfLBnodesCoarse]; - fbseC = &DC[DIR_MPP * numberOfLBnodesCoarse]; - ftswC = &DC[DIR_PPM * numberOfLBnodesCoarse]; - ftneC = &DC[DIR_MMM * numberOfLBnodesCoarse]; - ftnwC = &DC[DIR_PMM * numberOfLBnodesCoarse]; - ftseC = &DC[DIR_MPM * numberOfLBnodesCoarse]; + fwC = &DC[dP00 * numberOfLBnodesCoarse]; + feC = &DC[dM00 * numberOfLBnodesCoarse]; + fsC = &DC[d0P0 * numberOfLBnodesCoarse]; + fnC = &DC[d0M0 * numberOfLBnodesCoarse]; + fbC = &DC[d00P * numberOfLBnodesCoarse]; + ftC = &DC[d00M * numberOfLBnodesCoarse]; + fswC = &DC[dPP0 * numberOfLBnodesCoarse]; + fneC = &DC[dMM0 * numberOfLBnodesCoarse]; + fnwC = &DC[dPM0 * numberOfLBnodesCoarse]; + fseC = &DC[dMP0 * numberOfLBnodesCoarse]; + fbwC = &DC[dP0P * numberOfLBnodesCoarse]; + fteC = &DC[dM0M * numberOfLBnodesCoarse]; + ftwC = &DC[dP0M * numberOfLBnodesCoarse]; + fbeC = &DC[dM0P * numberOfLBnodesCoarse]; + fbsC = &DC[d0PP * numberOfLBnodesCoarse]; + ftnC = &DC[d0MM * numberOfLBnodesCoarse]; + ftsC = &DC[d0PM * numberOfLBnodesCoarse]; + fbnC = &DC[d0MP * numberOfLBnodesCoarse]; + fzeroC = &DC[d000 * numberOfLBnodesCoarse]; + fbswC = &DC[dPPP * numberOfLBnodesCoarse]; + fbneC = &DC[dMMP * numberOfLBnodesCoarse]; + fbnwC = &DC[dPMP * numberOfLBnodesCoarse]; + fbseC = &DC[dMPP * numberOfLBnodesCoarse]; + ftswC = &DC[dPPM * numberOfLBnodesCoarse]; + ftneC = &DC[dMMM * numberOfLBnodesCoarse]; + ftnwC = &DC[dPMM * numberOfLBnodesCoarse]; + ftseC = &DC[dMPM * numberOfLBnodesCoarse]; } //////////////////////////////////////////////////////////////////////////////// @@ -43261,96 +43261,96 @@ __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[DIR_P00 * numberOfLBnodesFine]; - fwF = &DF[DIR_M00 * numberOfLBnodesFine]; - fnF = &DF[DIR_0P0 * numberOfLBnodesFine]; - fsF = &DF[DIR_0M0 * numberOfLBnodesFine]; - ftF = &DF[DIR_00P * numberOfLBnodesFine]; - fbF = &DF[DIR_00M * numberOfLBnodesFine]; - fneF = &DF[DIR_PP0 * numberOfLBnodesFine]; - fswF = &DF[DIR_MM0 * numberOfLBnodesFine]; - fseF = &DF[DIR_PM0 * numberOfLBnodesFine]; - fnwF = &DF[DIR_MP0 * numberOfLBnodesFine]; - fteF = &DF[DIR_P0P * numberOfLBnodesFine]; - fbwF = &DF[DIR_M0M * numberOfLBnodesFine]; - fbeF = &DF[DIR_P0M * numberOfLBnodesFine]; - ftwF = &DF[DIR_M0P * numberOfLBnodesFine]; - ftnF = &DF[DIR_0PP * numberOfLBnodesFine]; - fbsF = &DF[DIR_0MM * numberOfLBnodesFine]; - fbnF = &DF[DIR_0PM * numberOfLBnodesFine]; - ftsF = &DF[DIR_0MP * numberOfLBnodesFine]; - //fzeroF = &DF[DIR_000 * size_MatF]; - ftneF = &DF[DIR_PPP * numberOfLBnodesFine]; - ftswF = &DF[DIR_MMP * numberOfLBnodesFine]; - ftseF = &DF[DIR_PMP * numberOfLBnodesFine]; - ftnwF = &DF[DIR_MPP * numberOfLBnodesFine]; - fbneF = &DF[DIR_PPM * numberOfLBnodesFine]; - fbswF = &DF[DIR_MMM * numberOfLBnodesFine]; - fbseF = &DF[DIR_PMM * numberOfLBnodesFine]; - fbnwF = &DF[DIR_MPM * numberOfLBnodesFine]; + feF = &DF[dP00 * numberOfLBnodesFine]; + fwF = &DF[dM00 * numberOfLBnodesFine]; + fnF = &DF[d0P0 * numberOfLBnodesFine]; + fsF = &DF[d0M0 * numberOfLBnodesFine]; + ftF = &DF[d00P * numberOfLBnodesFine]; + fbF = &DF[d00M * numberOfLBnodesFine]; + fneF = &DF[dPP0 * numberOfLBnodesFine]; + fswF = &DF[dMM0 * numberOfLBnodesFine]; + fseF = &DF[dPM0 * numberOfLBnodesFine]; + fnwF = &DF[dMP0 * numberOfLBnodesFine]; + fteF = &DF[dP0P * numberOfLBnodesFine]; + fbwF = &DF[dM0M * numberOfLBnodesFine]; + fbeF = &DF[dP0M * numberOfLBnodesFine]; + ftwF = &DF[dM0P * numberOfLBnodesFine]; + ftnF = &DF[d0PP * numberOfLBnodesFine]; + fbsF = &DF[d0MM * numberOfLBnodesFine]; + fbnF = &DF[d0PM * numberOfLBnodesFine]; + ftsF = &DF[d0MP * numberOfLBnodesFine]; + //fzeroF = &DF[d000 * size_MatF]; + ftneF = &DF[dPPP * numberOfLBnodesFine]; + ftswF = &DF[dMMP * numberOfLBnodesFine]; + ftseF = &DF[dPMP * numberOfLBnodesFine]; + ftnwF = &DF[dMPP * numberOfLBnodesFine]; + fbneF = &DF[dPPM * numberOfLBnodesFine]; + fbswF = &DF[dMMM * numberOfLBnodesFine]; + fbseF = &DF[dPMM * numberOfLBnodesFine]; + fbnwF = &DF[dMPM * numberOfLBnodesFine]; 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[DIR_P00 * numberOfLBnodesCoarse]; - fwC = &DC[DIR_M00 * numberOfLBnodesCoarse]; - fnC = &DC[DIR_0P0 * numberOfLBnodesCoarse]; - fsC = &DC[DIR_0M0 * numberOfLBnodesCoarse]; - ftC = &DC[DIR_00P * numberOfLBnodesCoarse]; - fbC = &DC[DIR_00M * numberOfLBnodesCoarse]; - fneC = &DC[DIR_PP0 * numberOfLBnodesCoarse]; - fswC = &DC[DIR_MM0 * numberOfLBnodesCoarse]; - fseC = &DC[DIR_PM0 * numberOfLBnodesCoarse]; - fnwC = &DC[DIR_MP0 * numberOfLBnodesCoarse]; - fteC = &DC[DIR_P0P * numberOfLBnodesCoarse]; - fbwC = &DC[DIR_M0M * numberOfLBnodesCoarse]; - fbeC = &DC[DIR_P0M * numberOfLBnodesCoarse]; - ftwC = &DC[DIR_M0P * numberOfLBnodesCoarse]; - ftnC = &DC[DIR_0PP * numberOfLBnodesCoarse]; - fbsC = &DC[DIR_0MM * numberOfLBnodesCoarse]; - fbnC = &DC[DIR_0PM * numberOfLBnodesCoarse]; - ftsC = &DC[DIR_0MP * numberOfLBnodesCoarse]; - //fzeroC = &DC[DIR_000 * size_MatC]; - ftneC = &DC[DIR_PPP * numberOfLBnodesCoarse]; - ftswC = &DC[DIR_MMP * numberOfLBnodesCoarse]; - ftseC = &DC[DIR_PMP * numberOfLBnodesCoarse]; - ftnwC = &DC[DIR_MPP * numberOfLBnodesCoarse]; - fbneC = &DC[DIR_PPM * numberOfLBnodesCoarse]; - fbswC = &DC[DIR_MMM * numberOfLBnodesCoarse]; - fbseC = &DC[DIR_PMM * numberOfLBnodesCoarse]; - fbnwC = &DC[DIR_MPM * numberOfLBnodesCoarse]; + feC = &DC[dP00 * numberOfLBnodesCoarse]; + fwC = &DC[dM00 * numberOfLBnodesCoarse]; + fnC = &DC[d0P0 * numberOfLBnodesCoarse]; + fsC = &DC[d0M0 * numberOfLBnodesCoarse]; + ftC = &DC[d00P * numberOfLBnodesCoarse]; + fbC = &DC[d00M * numberOfLBnodesCoarse]; + fneC = &DC[dPP0 * numberOfLBnodesCoarse]; + fswC = &DC[dMM0 * numberOfLBnodesCoarse]; + fseC = &DC[dPM0 * numberOfLBnodesCoarse]; + fnwC = &DC[dMP0 * numberOfLBnodesCoarse]; + fteC = &DC[dP0P * numberOfLBnodesCoarse]; + fbwC = &DC[dM0M * numberOfLBnodesCoarse]; + fbeC = &DC[dP0M * numberOfLBnodesCoarse]; + ftwC = &DC[dM0P * numberOfLBnodesCoarse]; + ftnC = &DC[d0PP * numberOfLBnodesCoarse]; + fbsC = &DC[d0MM * numberOfLBnodesCoarse]; + fbnC = &DC[d0PM * numberOfLBnodesCoarse]; + ftsC = &DC[d0MP * numberOfLBnodesCoarse]; + //fzeroC = &DC[d000 * size_MatC]; + ftneC = &DC[dPPP * numberOfLBnodesCoarse]; + ftswC = &DC[dMMP * numberOfLBnodesCoarse]; + ftseC = &DC[dPMP * numberOfLBnodesCoarse]; + ftnwC = &DC[dMPP * numberOfLBnodesCoarse]; + fbneC = &DC[dPPM * numberOfLBnodesCoarse]; + fbswC = &DC[dMMM * numberOfLBnodesCoarse]; + fbseC = &DC[dPMM * numberOfLBnodesCoarse]; + fbnwC = &DC[dMPM * numberOfLBnodesCoarse]; } else { - fwC = &DC[DIR_P00 * numberOfLBnodesCoarse]; - feC = &DC[DIR_M00 * numberOfLBnodesCoarse]; - fsC = &DC[DIR_0P0 * numberOfLBnodesCoarse]; - fnC = &DC[DIR_0M0 * numberOfLBnodesCoarse]; - fbC = &DC[DIR_00P * numberOfLBnodesCoarse]; - ftC = &DC[DIR_00M * numberOfLBnodesCoarse]; - fswC = &DC[DIR_PP0 * numberOfLBnodesCoarse]; - fneC = &DC[DIR_MM0 * numberOfLBnodesCoarse]; - fnwC = &DC[DIR_PM0 * numberOfLBnodesCoarse]; - fseC = &DC[DIR_MP0 * numberOfLBnodesCoarse]; - fbwC = &DC[DIR_P0P * numberOfLBnodesCoarse]; - fteC = &DC[DIR_M0M * numberOfLBnodesCoarse]; - ftwC = &DC[DIR_P0M * numberOfLBnodesCoarse]; - fbeC = &DC[DIR_M0P * numberOfLBnodesCoarse]; - fbsC = &DC[DIR_0PP * numberOfLBnodesCoarse]; - ftnC = &DC[DIR_0MM * numberOfLBnodesCoarse]; - ftsC = &DC[DIR_0PM * numberOfLBnodesCoarse]; - fbnC = &DC[DIR_0MP * numberOfLBnodesCoarse]; - //fzeroC = &DC[DIR_000 * size_MatC]; - fbswC = &DC[DIR_PPP * numberOfLBnodesCoarse]; - fbneC = &DC[DIR_MMP * numberOfLBnodesCoarse]; - fbnwC = &DC[DIR_PMP * numberOfLBnodesCoarse]; - fbseC = &DC[DIR_MPP * numberOfLBnodesCoarse]; - ftswC = &DC[DIR_PPM * numberOfLBnodesCoarse]; - ftneC = &DC[DIR_MMM * numberOfLBnodesCoarse]; - ftnwC = &DC[DIR_PMM * numberOfLBnodesCoarse]; - ftseC = &DC[DIR_MPM * numberOfLBnodesCoarse]; + fwC = &DC[dP00 * numberOfLBnodesCoarse]; + feC = &DC[dM00 * numberOfLBnodesCoarse]; + fsC = &DC[d0P0 * numberOfLBnodesCoarse]; + fnC = &DC[d0M0 * numberOfLBnodesCoarse]; + fbC = &DC[d00P * numberOfLBnodesCoarse]; + ftC = &DC[d00M * numberOfLBnodesCoarse]; + fswC = &DC[dPP0 * numberOfLBnodesCoarse]; + fneC = &DC[dMM0 * numberOfLBnodesCoarse]; + fnwC = &DC[dPM0 * numberOfLBnodesCoarse]; + fseC = &DC[dMP0 * numberOfLBnodesCoarse]; + fbwC = &DC[dP0P * numberOfLBnodesCoarse]; + fteC = &DC[dM0M * numberOfLBnodesCoarse]; + ftwC = &DC[dP0M * numberOfLBnodesCoarse]; + fbeC = &DC[dM0P * numberOfLBnodesCoarse]; + fbsC = &DC[d0PP * numberOfLBnodesCoarse]; + ftnC = &DC[d0MM * numberOfLBnodesCoarse]; + ftsC = &DC[d0PM * numberOfLBnodesCoarse]; + fbnC = &DC[d0MP * numberOfLBnodesCoarse]; + //fzeroC = &DC[d000 * size_MatC]; + fbswC = &DC[dPPP * numberOfLBnodesCoarse]; + fbneC = &DC[dMMP * numberOfLBnodesCoarse]; + fbnwC = &DC[dPMP * numberOfLBnodesCoarse]; + fbseC = &DC[dMPP * numberOfLBnodesCoarse]; + ftswC = &DC[dPPM * numberOfLBnodesCoarse]; + ftneC = &DC[dMMM * numberOfLBnodesCoarse]; + ftnwC = &DC[dPMM * numberOfLBnodesCoarse]; + ftseC = &DC[dMPM * numberOfLBnodesCoarse]; } @@ -44487,96 +44487,96 @@ __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[DIR_P00 * numberOfLBnodesFine]; - fwF = &DF[DIR_M00 * numberOfLBnodesFine]; - fnF = &DF[DIR_0P0 * numberOfLBnodesFine]; - fsF = &DF[DIR_0M0 * numberOfLBnodesFine]; - ftF = &DF[DIR_00P * numberOfLBnodesFine]; - fbF = &DF[DIR_00M * numberOfLBnodesFine]; - fneF = &DF[DIR_PP0 * numberOfLBnodesFine]; - fswF = &DF[DIR_MM0 * numberOfLBnodesFine]; - fseF = &DF[DIR_PM0 * numberOfLBnodesFine]; - fnwF = &DF[DIR_MP0 * numberOfLBnodesFine]; - fteF = &DF[DIR_P0P * numberOfLBnodesFine]; - fbwF = &DF[DIR_M0M * numberOfLBnodesFine]; - fbeF = &DF[DIR_P0M * numberOfLBnodesFine]; - ftwF = &DF[DIR_M0P * numberOfLBnodesFine]; - ftnF = &DF[DIR_0PP * numberOfLBnodesFine]; - fbsF = &DF[DIR_0MM * numberOfLBnodesFine]; - fbnF = &DF[DIR_0PM * numberOfLBnodesFine]; - ftsF = &DF[DIR_0MP * numberOfLBnodesFine]; - //fzeroF = &DF[DIR_000 * size_MatF]; - ftneF = &DF[DIR_PPP * numberOfLBnodesFine]; - ftswF = &DF[DIR_MMP * numberOfLBnodesFine]; - ftseF = &DF[DIR_PMP * numberOfLBnodesFine]; - ftnwF = &DF[DIR_MPP * numberOfLBnodesFine]; - fbneF = &DF[DIR_PPM * numberOfLBnodesFine]; - fbswF = &DF[DIR_MMM * numberOfLBnodesFine]; - fbseF = &DF[DIR_PMM * numberOfLBnodesFine]; - fbnwF = &DF[DIR_MPM * numberOfLBnodesFine]; + feF = &DF[dP00 * numberOfLBnodesFine]; + fwF = &DF[dM00 * numberOfLBnodesFine]; + fnF = &DF[d0P0 * numberOfLBnodesFine]; + fsF = &DF[d0M0 * numberOfLBnodesFine]; + ftF = &DF[d00P * numberOfLBnodesFine]; + fbF = &DF[d00M * numberOfLBnodesFine]; + fneF = &DF[dPP0 * numberOfLBnodesFine]; + fswF = &DF[dMM0 * numberOfLBnodesFine]; + fseF = &DF[dPM0 * numberOfLBnodesFine]; + fnwF = &DF[dMP0 * numberOfLBnodesFine]; + fteF = &DF[dP0P * numberOfLBnodesFine]; + fbwF = &DF[dM0M * numberOfLBnodesFine]; + fbeF = &DF[dP0M * numberOfLBnodesFine]; + ftwF = &DF[dM0P * numberOfLBnodesFine]; + ftnF = &DF[d0PP * numberOfLBnodesFine]; + fbsF = &DF[d0MM * numberOfLBnodesFine]; + fbnF = &DF[d0PM * numberOfLBnodesFine]; + ftsF = &DF[d0MP * numberOfLBnodesFine]; + //fzeroF = &DF[d000 * size_MatF]; + ftneF = &DF[dPPP * numberOfLBnodesFine]; + ftswF = &DF[dMMP * numberOfLBnodesFine]; + ftseF = &DF[dPMP * numberOfLBnodesFine]; + ftnwF = &DF[dMPP * numberOfLBnodesFine]; + fbneF = &DF[dPPM * numberOfLBnodesFine]; + fbswF = &DF[dMMM * numberOfLBnodesFine]; + fbseF = &DF[dPMM * numberOfLBnodesFine]; + fbnwF = &DF[dMPM * numberOfLBnodesFine]; 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[DIR_P00 * numberOfLBnodesCoarse]; - fwC = &DC[DIR_M00 * numberOfLBnodesCoarse]; - fnC = &DC[DIR_0P0 * numberOfLBnodesCoarse]; - fsC = &DC[DIR_0M0 * numberOfLBnodesCoarse]; - ftC = &DC[DIR_00P * numberOfLBnodesCoarse]; - fbC = &DC[DIR_00M * numberOfLBnodesCoarse]; - fneC = &DC[DIR_PP0 * numberOfLBnodesCoarse]; - fswC = &DC[DIR_MM0 * numberOfLBnodesCoarse]; - fseC = &DC[DIR_PM0 * numberOfLBnodesCoarse]; - fnwC = &DC[DIR_MP0 * numberOfLBnodesCoarse]; - fteC = &DC[DIR_P0P * numberOfLBnodesCoarse]; - fbwC = &DC[DIR_M0M * numberOfLBnodesCoarse]; - fbeC = &DC[DIR_P0M * numberOfLBnodesCoarse]; - ftwC = &DC[DIR_M0P * numberOfLBnodesCoarse]; - ftnC = &DC[DIR_0PP * numberOfLBnodesCoarse]; - fbsC = &DC[DIR_0MM * numberOfLBnodesCoarse]; - fbnC = &DC[DIR_0PM * numberOfLBnodesCoarse]; - ftsC = &DC[DIR_0MP * numberOfLBnodesCoarse]; - //fzeroC = &DC[DIR_000 * size_MatC]; - ftneC = &DC[DIR_PPP * numberOfLBnodesCoarse]; - ftswC = &DC[DIR_MMP * numberOfLBnodesCoarse]; - ftseC = &DC[DIR_PMP * numberOfLBnodesCoarse]; - ftnwC = &DC[DIR_MPP * numberOfLBnodesCoarse]; - fbneC = &DC[DIR_PPM * numberOfLBnodesCoarse]; - fbswC = &DC[DIR_MMM * numberOfLBnodesCoarse]; - fbseC = &DC[DIR_PMM * numberOfLBnodesCoarse]; - fbnwC = &DC[DIR_MPM * numberOfLBnodesCoarse]; + feC = &DC[dP00 * numberOfLBnodesCoarse]; + fwC = &DC[dM00 * numberOfLBnodesCoarse]; + fnC = &DC[d0P0 * numberOfLBnodesCoarse]; + fsC = &DC[d0M0 * numberOfLBnodesCoarse]; + ftC = &DC[d00P * numberOfLBnodesCoarse]; + fbC = &DC[d00M * numberOfLBnodesCoarse]; + fneC = &DC[dPP0 * numberOfLBnodesCoarse]; + fswC = &DC[dMM0 * numberOfLBnodesCoarse]; + fseC = &DC[dPM0 * numberOfLBnodesCoarse]; + fnwC = &DC[dMP0 * numberOfLBnodesCoarse]; + fteC = &DC[dP0P * numberOfLBnodesCoarse]; + fbwC = &DC[dM0M * numberOfLBnodesCoarse]; + fbeC = &DC[dP0M * numberOfLBnodesCoarse]; + ftwC = &DC[dM0P * numberOfLBnodesCoarse]; + ftnC = &DC[d0PP * numberOfLBnodesCoarse]; + fbsC = &DC[d0MM * numberOfLBnodesCoarse]; + fbnC = &DC[d0PM * numberOfLBnodesCoarse]; + ftsC = &DC[d0MP * numberOfLBnodesCoarse]; + //fzeroC = &DC[d000 * size_MatC]; + ftneC = &DC[dPPP * numberOfLBnodesCoarse]; + ftswC = &DC[dMMP * numberOfLBnodesCoarse]; + ftseC = &DC[dPMP * numberOfLBnodesCoarse]; + ftnwC = &DC[dMPP * numberOfLBnodesCoarse]; + fbneC = &DC[dPPM * numberOfLBnodesCoarse]; + fbswC = &DC[dMMM * numberOfLBnodesCoarse]; + fbseC = &DC[dPMM * numberOfLBnodesCoarse]; + fbnwC = &DC[dMPM * numberOfLBnodesCoarse]; } else { - fwC = &DC[DIR_P00 * numberOfLBnodesCoarse]; - feC = &DC[DIR_M00 * numberOfLBnodesCoarse]; - fsC = &DC[DIR_0P0 * numberOfLBnodesCoarse]; - fnC = &DC[DIR_0M0 * numberOfLBnodesCoarse]; - fbC = &DC[DIR_00P * numberOfLBnodesCoarse]; - ftC = &DC[DIR_00M * numberOfLBnodesCoarse]; - fswC = &DC[DIR_PP0 * numberOfLBnodesCoarse]; - fneC = &DC[DIR_MM0 * numberOfLBnodesCoarse]; - fnwC = &DC[DIR_PM0 * numberOfLBnodesCoarse]; - fseC = &DC[DIR_MP0 * numberOfLBnodesCoarse]; - fbwC = &DC[DIR_P0P * numberOfLBnodesCoarse]; - fteC = &DC[DIR_M0M * numberOfLBnodesCoarse]; - ftwC = &DC[DIR_P0M * numberOfLBnodesCoarse]; - fbeC = &DC[DIR_M0P * numberOfLBnodesCoarse]; - fbsC = &DC[DIR_0PP * numberOfLBnodesCoarse]; - ftnC = &DC[DIR_0MM * numberOfLBnodesCoarse]; - ftsC = &DC[DIR_0PM * numberOfLBnodesCoarse]; - fbnC = &DC[DIR_0MP * numberOfLBnodesCoarse]; - //fzeroC = &DC[DIR_000 * size_MatC]; - fbswC = &DC[DIR_PPP * numberOfLBnodesCoarse]; - fbneC = &DC[DIR_MMP * numberOfLBnodesCoarse]; - fbnwC = &DC[DIR_PMP * numberOfLBnodesCoarse]; - fbseC = &DC[DIR_MPP * numberOfLBnodesCoarse]; - ftswC = &DC[DIR_PPM * numberOfLBnodesCoarse]; - ftneC = &DC[DIR_MMM * numberOfLBnodesCoarse]; - ftnwC = &DC[DIR_PMM * numberOfLBnodesCoarse]; - ftseC = &DC[DIR_MPM * numberOfLBnodesCoarse]; + fwC = &DC[dP00 * numberOfLBnodesCoarse]; + feC = &DC[dM00 * numberOfLBnodesCoarse]; + fsC = &DC[d0P0 * numberOfLBnodesCoarse]; + fnC = &DC[d0M0 * numberOfLBnodesCoarse]; + fbC = &DC[d00P * numberOfLBnodesCoarse]; + ftC = &DC[d00M * numberOfLBnodesCoarse]; + fswC = &DC[dPP0 * numberOfLBnodesCoarse]; + fneC = &DC[dMM0 * numberOfLBnodesCoarse]; + fnwC = &DC[dPM0 * numberOfLBnodesCoarse]; + fseC = &DC[dMP0 * numberOfLBnodesCoarse]; + fbwC = &DC[dP0P * numberOfLBnodesCoarse]; + fteC = &DC[dM0M * numberOfLBnodesCoarse]; + ftwC = &DC[dP0M * numberOfLBnodesCoarse]; + fbeC = &DC[dM0P * numberOfLBnodesCoarse]; + fbsC = &DC[d0PP * numberOfLBnodesCoarse]; + ftnC = &DC[d0MM * numberOfLBnodesCoarse]; + ftsC = &DC[d0PM * numberOfLBnodesCoarse]; + fbnC = &DC[d0MP * numberOfLBnodesCoarse]; + //fzeroC = &DC[d000 * size_MatC]; + fbswC = &DC[dPPP * numberOfLBnodesCoarse]; + fbneC = &DC[dMMP * numberOfLBnodesCoarse]; + fbnwC = &DC[dPMP * numberOfLBnodesCoarse]; + fbseC = &DC[dMPP * numberOfLBnodesCoarse]; + ftswC = &DC[dPPM * numberOfLBnodesCoarse]; + ftneC = &DC[dMMM * numberOfLBnodesCoarse]; + ftnwC = &DC[dPMM * numberOfLBnodesCoarse]; + ftseC = &DC[dMPM * numberOfLBnodesCoarse]; } @@ -45611,188 +45611,188 @@ __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[DIR_P00 * numberOfLBnodesFine]; - fwF = &DF[DIR_M00 * numberOfLBnodesFine]; - fnF = &DF[DIR_0P0 * numberOfLBnodesFine]; - fsF = &DF[DIR_0M0 * numberOfLBnodesFine]; - ftF = &DF[DIR_00P * numberOfLBnodesFine]; - fbF = &DF[DIR_00M * numberOfLBnodesFine]; - fneF = &DF[DIR_PP0 * numberOfLBnodesFine]; - fswF = &DF[DIR_MM0 * numberOfLBnodesFine]; - fseF = &DF[DIR_PM0 * numberOfLBnodesFine]; - fnwF = &DF[DIR_MP0 * numberOfLBnodesFine]; - fteF = &DF[DIR_P0P * numberOfLBnodesFine]; - fbwF = &DF[DIR_M0M * numberOfLBnodesFine]; - fbeF = &DF[DIR_P0M * numberOfLBnodesFine]; - ftwF = &DF[DIR_M0P * numberOfLBnodesFine]; - ftnF = &DF[DIR_0PP * numberOfLBnodesFine]; - fbsF = &DF[DIR_0MM * numberOfLBnodesFine]; - fbnF = &DF[DIR_0PM * numberOfLBnodesFine]; - ftsF = &DF[DIR_0MP * numberOfLBnodesFine]; - //fzeroF = &DF[DIR_000 * size_MatF]; - ftneF = &DF[DIR_PPP * numberOfLBnodesFine]; - ftswF = &DF[DIR_MMP * numberOfLBnodesFine]; - ftseF = &DF[DIR_PMP * numberOfLBnodesFine]; - ftnwF = &DF[DIR_MPP * numberOfLBnodesFine]; - fbneF = &DF[DIR_PPM * numberOfLBnodesFine]; - fbswF = &DF[DIR_MMM * numberOfLBnodesFine]; - fbseF = &DF[DIR_PMM * numberOfLBnodesFine]; - fbnwF = &DF[DIR_MPM * numberOfLBnodesFine]; + feF = &DF[dP00 * numberOfLBnodesFine]; + fwF = &DF[dM00 * numberOfLBnodesFine]; + fnF = &DF[d0P0 * numberOfLBnodesFine]; + fsF = &DF[d0M0 * numberOfLBnodesFine]; + ftF = &DF[d00P * numberOfLBnodesFine]; + fbF = &DF[d00M * numberOfLBnodesFine]; + fneF = &DF[dPP0 * numberOfLBnodesFine]; + fswF = &DF[dMM0 * numberOfLBnodesFine]; + fseF = &DF[dPM0 * numberOfLBnodesFine]; + fnwF = &DF[dMP0 * numberOfLBnodesFine]; + fteF = &DF[dP0P * numberOfLBnodesFine]; + fbwF = &DF[dM0M * numberOfLBnodesFine]; + fbeF = &DF[dP0M * numberOfLBnodesFine]; + ftwF = &DF[dM0P * numberOfLBnodesFine]; + ftnF = &DF[d0PP * numberOfLBnodesFine]; + fbsF = &DF[d0MM * numberOfLBnodesFine]; + fbnF = &DF[d0PM * numberOfLBnodesFine]; + ftsF = &DF[d0MP * numberOfLBnodesFine]; + //fzeroF = &DF[d000 * size_MatF]; + ftneF = &DF[dPPP * numberOfLBnodesFine]; + ftswF = &DF[dMMP * numberOfLBnodesFine]; + ftseF = &DF[dPMP * numberOfLBnodesFine]; + ftnwF = &DF[dMPP * numberOfLBnodesFine]; + fbneF = &DF[dPPM * numberOfLBnodesFine]; + fbswF = &DF[dMMM * numberOfLBnodesFine]; + fbseF = &DF[dPMM * numberOfLBnodesFine]; + fbnwF = &DF[dMPM * numberOfLBnodesFine]; 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[DIR_P00 * numberOfLBnodesCoarse]; - fwC = &DC[DIR_M00 * numberOfLBnodesCoarse]; - fnC = &DC[DIR_0P0 * numberOfLBnodesCoarse]; - fsC = &DC[DIR_0M0 * numberOfLBnodesCoarse]; - ftC = &DC[DIR_00P * numberOfLBnodesCoarse]; - fbC = &DC[DIR_00M * numberOfLBnodesCoarse]; - fneC = &DC[DIR_PP0 * numberOfLBnodesCoarse]; - fswC = &DC[DIR_MM0 * numberOfLBnodesCoarse]; - fseC = &DC[DIR_PM0 * numberOfLBnodesCoarse]; - fnwC = &DC[DIR_MP0 * numberOfLBnodesCoarse]; - fteC = &DC[DIR_P0P * numberOfLBnodesCoarse]; - fbwC = &DC[DIR_M0M * numberOfLBnodesCoarse]; - fbeC = &DC[DIR_P0M * numberOfLBnodesCoarse]; - ftwC = &DC[DIR_M0P * numberOfLBnodesCoarse]; - ftnC = &DC[DIR_0PP * numberOfLBnodesCoarse]; - fbsC = &DC[DIR_0MM * numberOfLBnodesCoarse]; - fbnC = &DC[DIR_0PM * numberOfLBnodesCoarse]; - ftsC = &DC[DIR_0MP * numberOfLBnodesCoarse]; - //fzeroC = &DC[DIR_000 * size_MatC]; - ftneC = &DC[DIR_PPP * numberOfLBnodesCoarse]; - ftswC = &DC[DIR_MMP * numberOfLBnodesCoarse]; - ftseC = &DC[DIR_PMP * numberOfLBnodesCoarse]; - ftnwC = &DC[DIR_MPP * numberOfLBnodesCoarse]; - fbneC = &DC[DIR_PPM * numberOfLBnodesCoarse]; - fbswC = &DC[DIR_MMM * numberOfLBnodesCoarse]; - fbseC = &DC[DIR_PMM * numberOfLBnodesCoarse]; - fbnwC = &DC[DIR_MPM * numberOfLBnodesCoarse]; + feC = &DC[dP00 * numberOfLBnodesCoarse]; + fwC = &DC[dM00 * numberOfLBnodesCoarse]; + fnC = &DC[d0P0 * numberOfLBnodesCoarse]; + fsC = &DC[d0M0 * numberOfLBnodesCoarse]; + ftC = &DC[d00P * numberOfLBnodesCoarse]; + fbC = &DC[d00M * numberOfLBnodesCoarse]; + fneC = &DC[dPP0 * numberOfLBnodesCoarse]; + fswC = &DC[dMM0 * numberOfLBnodesCoarse]; + fseC = &DC[dPM0 * numberOfLBnodesCoarse]; + fnwC = &DC[dMP0 * numberOfLBnodesCoarse]; + fteC = &DC[dP0P * numberOfLBnodesCoarse]; + fbwC = &DC[dM0M * numberOfLBnodesCoarse]; + fbeC = &DC[dP0M * numberOfLBnodesCoarse]; + ftwC = &DC[dM0P * numberOfLBnodesCoarse]; + ftnC = &DC[d0PP * numberOfLBnodesCoarse]; + fbsC = &DC[d0MM * numberOfLBnodesCoarse]; + fbnC = &DC[d0PM * numberOfLBnodesCoarse]; + ftsC = &DC[d0MP * numberOfLBnodesCoarse]; + //fzeroC = &DC[d000 * size_MatC]; + ftneC = &DC[dPPP * numberOfLBnodesCoarse]; + ftswC = &DC[dMMP * numberOfLBnodesCoarse]; + ftseC = &DC[dPMP * numberOfLBnodesCoarse]; + ftnwC = &DC[dMPP * numberOfLBnodesCoarse]; + fbneC = &DC[dPPM * numberOfLBnodesCoarse]; + fbswC = &DC[dMMM * numberOfLBnodesCoarse]; + fbseC = &DC[dPMM * numberOfLBnodesCoarse]; + fbnwC = &DC[dMPM * numberOfLBnodesCoarse]; } else { - fwC = &DC[DIR_P00 * numberOfLBnodesCoarse]; - feC = &DC[DIR_M00 * numberOfLBnodesCoarse]; - fsC = &DC[DIR_0P0 * numberOfLBnodesCoarse]; - fnC = &DC[DIR_0M0 * numberOfLBnodesCoarse]; - fbC = &DC[DIR_00P * numberOfLBnodesCoarse]; - ftC = &DC[DIR_00M * numberOfLBnodesCoarse]; - fswC = &DC[DIR_PP0 * numberOfLBnodesCoarse]; - fneC = &DC[DIR_MM0 * numberOfLBnodesCoarse]; - fnwC = &DC[DIR_PM0 * numberOfLBnodesCoarse]; - fseC = &DC[DIR_MP0 * numberOfLBnodesCoarse]; - fbwC = &DC[DIR_P0P * numberOfLBnodesCoarse]; - fteC = &DC[DIR_M0M * numberOfLBnodesCoarse]; - ftwC = &DC[DIR_P0M * numberOfLBnodesCoarse]; - fbeC = &DC[DIR_M0P * numberOfLBnodesCoarse]; - fbsC = &DC[DIR_0PP * numberOfLBnodesCoarse]; - ftnC = &DC[DIR_0MM * numberOfLBnodesCoarse]; - ftsC = &DC[DIR_0PM * numberOfLBnodesCoarse]; - fbnC = &DC[DIR_0MP * numberOfLBnodesCoarse]; - //fzeroC = &DC[DIR_000 * size_MatC]; - fbswC = &DC[DIR_PPP * numberOfLBnodesCoarse]; - fbneC = &DC[DIR_MMP * numberOfLBnodesCoarse]; - fbnwC = &DC[DIR_PMP * numberOfLBnodesCoarse]; - fbseC = &DC[DIR_MPP * numberOfLBnodesCoarse]; - ftswC = &DC[DIR_PPM * numberOfLBnodesCoarse]; - ftneC = &DC[DIR_MMM * numberOfLBnodesCoarse]; - ftnwC = &DC[DIR_PMM * numberOfLBnodesCoarse]; - ftseC = &DC[DIR_MPM * numberOfLBnodesCoarse]; + fwC = &DC[dP00 * numberOfLBnodesCoarse]; + feC = &DC[dM00 * numberOfLBnodesCoarse]; + fsC = &DC[d0P0 * numberOfLBnodesCoarse]; + fnC = &DC[d0M0 * numberOfLBnodesCoarse]; + fbC = &DC[d00P * numberOfLBnodesCoarse]; + ftC = &DC[d00M * numberOfLBnodesCoarse]; + fswC = &DC[dPP0 * numberOfLBnodesCoarse]; + fneC = &DC[dMM0 * numberOfLBnodesCoarse]; + fnwC = &DC[dPM0 * numberOfLBnodesCoarse]; + fseC = &DC[dMP0 * numberOfLBnodesCoarse]; + fbwC = &DC[dP0P * numberOfLBnodesCoarse]; + fteC = &DC[dM0M * numberOfLBnodesCoarse]; + ftwC = &DC[dP0M * numberOfLBnodesCoarse]; + fbeC = &DC[dM0P * numberOfLBnodesCoarse]; + fbsC = &DC[d0PP * numberOfLBnodesCoarse]; + ftnC = &DC[d0MM * numberOfLBnodesCoarse]; + ftsC = &DC[d0PM * numberOfLBnodesCoarse]; + fbnC = &DC[d0MP * numberOfLBnodesCoarse]; + //fzeroC = &DC[d000 * size_MatC]; + fbswC = &DC[dPPP * numberOfLBnodesCoarse]; + fbneC = &DC[dMMP * numberOfLBnodesCoarse]; + fbnwC = &DC[dPMP * numberOfLBnodesCoarse]; + fbseC = &DC[dMPP * numberOfLBnodesCoarse]; + ftswC = &DC[dPPM * numberOfLBnodesCoarse]; + ftneC = &DC[dMMM * numberOfLBnodesCoarse]; + ftnwC = &DC[dPMM * numberOfLBnodesCoarse]; + ftseC = &DC[dMPM * numberOfLBnodesCoarse]; } Distributions27 D27F; - D27F.f[DIR_P00] = &DD27F[DIR_P00 * numberOfLBnodesFine]; - D27F.f[DIR_M00] = &DD27F[DIR_M00 * numberOfLBnodesFine]; - D27F.f[DIR_0P0] = &DD27F[DIR_0P0 * numberOfLBnodesFine]; - D27F.f[DIR_0M0] = &DD27F[DIR_0M0 * numberOfLBnodesFine]; - D27F.f[DIR_00P] = &DD27F[DIR_00P * numberOfLBnodesFine]; - D27F.f[DIR_00M] = &DD27F[DIR_00M * numberOfLBnodesFine]; - D27F.f[DIR_PP0] = &DD27F[DIR_PP0 * numberOfLBnodesFine]; - D27F.f[DIR_MM0] = &DD27F[DIR_MM0 * numberOfLBnodesFine]; - D27F.f[DIR_PM0] = &DD27F[DIR_PM0 * numberOfLBnodesFine]; - D27F.f[DIR_MP0] = &DD27F[DIR_MP0 * numberOfLBnodesFine]; - D27F.f[DIR_P0P] = &DD27F[DIR_P0P * numberOfLBnodesFine]; - D27F.f[DIR_M0M] = &DD27F[DIR_M0M * numberOfLBnodesFine]; - D27F.f[DIR_P0M] = &DD27F[DIR_P0M * numberOfLBnodesFine]; - D27F.f[DIR_M0P] = &DD27F[DIR_M0P * numberOfLBnodesFine]; - D27F.f[DIR_0PP] = &DD27F[DIR_0PP * numberOfLBnodesFine]; - D27F.f[DIR_0MM] = &DD27F[DIR_0MM * numberOfLBnodesFine]; - D27F.f[DIR_0PM] = &DD27F[DIR_0PM * numberOfLBnodesFine]; - D27F.f[DIR_0MP] = &DD27F[DIR_0MP * numberOfLBnodesFine]; - D27F.f[DIR_000] = &DD27F[DIR_000 * numberOfLBnodesFine]; - D27F.f[DIR_PPP] = &DD27F[DIR_PPP * numberOfLBnodesFine]; - D27F.f[DIR_MMP] = &DD27F[DIR_MMP * numberOfLBnodesFine]; - D27F.f[DIR_PMP] = &DD27F[DIR_PMP * numberOfLBnodesFine]; - D27F.f[DIR_MPP] = &DD27F[DIR_MPP * numberOfLBnodesFine]; - D27F.f[DIR_PPM] = &DD27F[DIR_PPM * numberOfLBnodesFine]; - D27F.f[DIR_MMM] = &DD27F[DIR_MMM * numberOfLBnodesFine]; - D27F.f[DIR_PMM] = &DD27F[DIR_PMM * numberOfLBnodesFine]; - D27F.f[DIR_MPM] = &DD27F[DIR_MPM * numberOfLBnodesFine]; + D27F.f[dP00] = &DD27F[dP00 * numberOfLBnodesFine]; + D27F.f[dM00] = &DD27F[dM00 * numberOfLBnodesFine]; + D27F.f[d0P0] = &DD27F[d0P0 * numberOfLBnodesFine]; + D27F.f[d0M0] = &DD27F[d0M0 * numberOfLBnodesFine]; + D27F.f[d00P] = &DD27F[d00P * numberOfLBnodesFine]; + D27F.f[d00M] = &DD27F[d00M * numberOfLBnodesFine]; + D27F.f[dPP0] = &DD27F[dPP0 * numberOfLBnodesFine]; + D27F.f[dMM0] = &DD27F[dMM0 * numberOfLBnodesFine]; + D27F.f[dPM0] = &DD27F[dPM0 * numberOfLBnodesFine]; + D27F.f[dMP0] = &DD27F[dMP0 * numberOfLBnodesFine]; + D27F.f[dP0P] = &DD27F[dP0P * numberOfLBnodesFine]; + D27F.f[dM0M] = &DD27F[dM0M * numberOfLBnodesFine]; + D27F.f[dP0M] = &DD27F[dP0M * numberOfLBnodesFine]; + D27F.f[dM0P] = &DD27F[dM0P * numberOfLBnodesFine]; + D27F.f[d0PP] = &DD27F[d0PP * numberOfLBnodesFine]; + D27F.f[d0MM] = &DD27F[d0MM * numberOfLBnodesFine]; + D27F.f[d0PM] = &DD27F[d0PM * numberOfLBnodesFine]; + D27F.f[d0MP] = &DD27F[d0MP * numberOfLBnodesFine]; + D27F.f[d000] = &DD27F[d000 * numberOfLBnodesFine]; + D27F.f[dPPP] = &DD27F[dPPP * numberOfLBnodesFine]; + D27F.f[dMMP] = &DD27F[dMMP * numberOfLBnodesFine]; + D27F.f[dPMP] = &DD27F[dPMP * numberOfLBnodesFine]; + D27F.f[dMPP] = &DD27F[dMPP * numberOfLBnodesFine]; + D27F.f[dPPM] = &DD27F[dPPM * numberOfLBnodesFine]; + D27F.f[dMMM] = &DD27F[dMMM * numberOfLBnodesFine]; + D27F.f[dPMM] = &DD27F[dPMM * numberOfLBnodesFine]; + D27F.f[dMPM] = &DD27F[dMPM * numberOfLBnodesFine]; Distributions27 D27C; if (isEvenTimestep==true) { - D27C.f[DIR_P00] = &DD27C[DIR_P00 * numberOfLBnodesCoarse]; - D27C.f[DIR_M00] = &DD27C[DIR_M00 * numberOfLBnodesCoarse]; - D27C.f[DIR_0P0] = &DD27C[DIR_0P0 * numberOfLBnodesCoarse]; - D27C.f[DIR_0M0] = &DD27C[DIR_0M0 * numberOfLBnodesCoarse]; - D27C.f[DIR_00P] = &DD27C[DIR_00P * numberOfLBnodesCoarse]; - D27C.f[DIR_00M] = &DD27C[DIR_00M * numberOfLBnodesCoarse]; - D27C.f[DIR_PP0] = &DD27C[DIR_PP0 * numberOfLBnodesCoarse]; - D27C.f[DIR_MM0] = &DD27C[DIR_MM0 * numberOfLBnodesCoarse]; - D27C.f[DIR_PM0] = &DD27C[DIR_PM0 * numberOfLBnodesCoarse]; - D27C.f[DIR_MP0] = &DD27C[DIR_MP0 * numberOfLBnodesCoarse]; - D27C.f[DIR_P0P] = &DD27C[DIR_P0P * numberOfLBnodesCoarse]; - D27C.f[DIR_M0M] = &DD27C[DIR_M0M * numberOfLBnodesCoarse]; - D27C.f[DIR_P0M] = &DD27C[DIR_P0M * numberOfLBnodesCoarse]; - D27C.f[DIR_M0P] = &DD27C[DIR_M0P * numberOfLBnodesCoarse]; - D27C.f[DIR_0PP] = &DD27C[DIR_0PP * numberOfLBnodesCoarse]; - D27C.f[DIR_0MM] = &DD27C[DIR_0MM * numberOfLBnodesCoarse]; - D27C.f[DIR_0PM] = &DD27C[DIR_0PM * numberOfLBnodesCoarse]; - D27C.f[DIR_0MP] = &DD27C[DIR_0MP * numberOfLBnodesCoarse]; - D27C.f[DIR_000] = &DD27C[DIR_000 * numberOfLBnodesCoarse]; - D27C.f[DIR_PPP] = &DD27C[DIR_PPP * numberOfLBnodesCoarse]; - D27C.f[DIR_MMP] = &DD27C[DIR_MMP * numberOfLBnodesCoarse]; - D27C.f[DIR_PMP] = &DD27C[DIR_PMP * numberOfLBnodesCoarse]; - D27C.f[DIR_MPP] = &DD27C[DIR_MPP * numberOfLBnodesCoarse]; - D27C.f[DIR_PPM] = &DD27C[DIR_PPM * numberOfLBnodesCoarse]; - D27C.f[DIR_MMM] = &DD27C[DIR_MMM * numberOfLBnodesCoarse]; - D27C.f[DIR_PMM] = &DD27C[DIR_PMM * numberOfLBnodesCoarse]; - D27C.f[DIR_MPM] = &DD27C[DIR_MPM * numberOfLBnodesCoarse]; + D27C.f[dP00] = &DD27C[dP00 * numberOfLBnodesCoarse]; + D27C.f[dM00] = &DD27C[dM00 * numberOfLBnodesCoarse]; + D27C.f[d0P0] = &DD27C[d0P0 * numberOfLBnodesCoarse]; + D27C.f[d0M0] = &DD27C[d0M0 * numberOfLBnodesCoarse]; + D27C.f[d00P] = &DD27C[d00P * numberOfLBnodesCoarse]; + D27C.f[d00M] = &DD27C[d00M * numberOfLBnodesCoarse]; + D27C.f[dPP0] = &DD27C[dPP0 * numberOfLBnodesCoarse]; + D27C.f[dMM0] = &DD27C[dMM0 * numberOfLBnodesCoarse]; + D27C.f[dPM0] = &DD27C[dPM0 * numberOfLBnodesCoarse]; + D27C.f[dMP0] = &DD27C[dMP0 * numberOfLBnodesCoarse]; + D27C.f[dP0P] = &DD27C[dP0P * numberOfLBnodesCoarse]; + D27C.f[dM0M] = &DD27C[dM0M * numberOfLBnodesCoarse]; + D27C.f[dP0M] = &DD27C[dP0M * numberOfLBnodesCoarse]; + D27C.f[dM0P] = &DD27C[dM0P * numberOfLBnodesCoarse]; + D27C.f[d0PP] = &DD27C[d0PP * numberOfLBnodesCoarse]; + D27C.f[d0MM] = &DD27C[d0MM * numberOfLBnodesCoarse]; + D27C.f[d0PM] = &DD27C[d0PM * numberOfLBnodesCoarse]; + D27C.f[d0MP] = &DD27C[d0MP * numberOfLBnodesCoarse]; + D27C.f[d000] = &DD27C[d000 * numberOfLBnodesCoarse]; + D27C.f[dPPP] = &DD27C[dPPP * numberOfLBnodesCoarse]; + D27C.f[dMMP] = &DD27C[dMMP * numberOfLBnodesCoarse]; + D27C.f[dPMP] = &DD27C[dPMP * numberOfLBnodesCoarse]; + D27C.f[dMPP] = &DD27C[dMPP * numberOfLBnodesCoarse]; + D27C.f[dPPM] = &DD27C[dPPM * numberOfLBnodesCoarse]; + D27C.f[dMMM] = &DD27C[dMMM * numberOfLBnodesCoarse]; + D27C.f[dPMM] = &DD27C[dPMM * numberOfLBnodesCoarse]; + D27C.f[dMPM] = &DD27C[dMPM * numberOfLBnodesCoarse]; } else { - D27C.f[DIR_M00] = &DD27C[DIR_P00 * numberOfLBnodesCoarse]; - D27C.f[DIR_P00] = &DD27C[DIR_M00 * numberOfLBnodesCoarse]; - D27C.f[DIR_0M0] = &DD27C[DIR_0P0 * numberOfLBnodesCoarse]; - D27C.f[DIR_0P0] = &DD27C[DIR_0M0 * numberOfLBnodesCoarse]; - D27C.f[DIR_00M] = &DD27C[DIR_00P * numberOfLBnodesCoarse]; - D27C.f[DIR_00P] = &DD27C[DIR_00M * numberOfLBnodesCoarse]; - D27C.f[DIR_MM0] = &DD27C[DIR_PP0 * numberOfLBnodesCoarse]; - D27C.f[DIR_PP0] = &DD27C[DIR_MM0 * numberOfLBnodesCoarse]; - D27C.f[DIR_MP0] = &DD27C[DIR_PM0 * numberOfLBnodesCoarse]; - D27C.f[DIR_PM0] = &DD27C[DIR_MP0 * numberOfLBnodesCoarse]; - D27C.f[DIR_M0M] = &DD27C[DIR_P0P * numberOfLBnodesCoarse]; - D27C.f[DIR_P0P] = &DD27C[DIR_M0M * numberOfLBnodesCoarse]; - D27C.f[DIR_M0P] = &DD27C[DIR_P0M * numberOfLBnodesCoarse]; - D27C.f[DIR_P0M] = &DD27C[DIR_M0P * numberOfLBnodesCoarse]; - D27C.f[DIR_0MM] = &DD27C[DIR_0PP * numberOfLBnodesCoarse]; - D27C.f[DIR_0PP] = &DD27C[DIR_0MM * numberOfLBnodesCoarse]; - D27C.f[DIR_0MP] = &DD27C[DIR_0PM * numberOfLBnodesCoarse]; - D27C.f[DIR_0PM] = &DD27C[DIR_0MP * numberOfLBnodesCoarse]; - D27C.f[DIR_000] = &DD27C[DIR_000 * numberOfLBnodesCoarse]; - D27C.f[DIR_MMM] = &DD27C[DIR_PPP * numberOfLBnodesCoarse]; - D27C.f[DIR_PPM] = &DD27C[DIR_MMP * numberOfLBnodesCoarse]; - D27C.f[DIR_MPM] = &DD27C[DIR_PMP * numberOfLBnodesCoarse]; - D27C.f[DIR_PMM] = &DD27C[DIR_MPP * numberOfLBnodesCoarse]; - D27C.f[DIR_MMP] = &DD27C[DIR_PPM * numberOfLBnodesCoarse]; - D27C.f[DIR_PPP] = &DD27C[DIR_MMM * numberOfLBnodesCoarse]; - D27C.f[DIR_MPP] = &DD27C[DIR_PMM * numberOfLBnodesCoarse]; - D27C.f[DIR_PMP] = &DD27C[DIR_MPM * numberOfLBnodesCoarse]; + D27C.f[dM00] = &DD27C[dP00 * numberOfLBnodesCoarse]; + D27C.f[dP00] = &DD27C[dM00 * numberOfLBnodesCoarse]; + D27C.f[d0M0] = &DD27C[d0P0 * numberOfLBnodesCoarse]; + D27C.f[d0P0] = &DD27C[d0M0 * numberOfLBnodesCoarse]; + D27C.f[d00M] = &DD27C[d00P * numberOfLBnodesCoarse]; + D27C.f[d00P] = &DD27C[d00M * numberOfLBnodesCoarse]; + D27C.f[dMM0] = &DD27C[dPP0 * numberOfLBnodesCoarse]; + D27C.f[dPP0] = &DD27C[dMM0 * numberOfLBnodesCoarse]; + D27C.f[dMP0] = &DD27C[dPM0 * numberOfLBnodesCoarse]; + D27C.f[dPM0] = &DD27C[dMP0 * numberOfLBnodesCoarse]; + D27C.f[dM0M] = &DD27C[dP0P * numberOfLBnodesCoarse]; + D27C.f[dP0P] = &DD27C[dM0M * numberOfLBnodesCoarse]; + D27C.f[dM0P] = &DD27C[dP0M * numberOfLBnodesCoarse]; + D27C.f[dP0M] = &DD27C[dM0P * numberOfLBnodesCoarse]; + D27C.f[d0MM] = &DD27C[d0PP * numberOfLBnodesCoarse]; + D27C.f[d0PP] = &DD27C[d0MM * numberOfLBnodesCoarse]; + D27C.f[d0MP] = &DD27C[d0PM * numberOfLBnodesCoarse]; + D27C.f[d0PM] = &DD27C[d0MP * numberOfLBnodesCoarse]; + D27C.f[d000] = &DD27C[d000 * numberOfLBnodesCoarse]; + D27C.f[dMMM] = &DD27C[dPPP * numberOfLBnodesCoarse]; + D27C.f[dPPM] = &DD27C[dMMP * numberOfLBnodesCoarse]; + D27C.f[dMPM] = &DD27C[dPMP * numberOfLBnodesCoarse]; + D27C.f[dPMM] = &DD27C[dMPP * numberOfLBnodesCoarse]; + D27C.f[dMMP] = &DD27C[dPPM * numberOfLBnodesCoarse]; + D27C.f[dPPP] = &DD27C[dMMM * numberOfLBnodesCoarse]; + D27C.f[dMPP] = &DD27C[dPMM * numberOfLBnodesCoarse]; + D27C.f[dPMP] = &DD27C[dMPM * numberOfLBnodesCoarse]; } //////////////////////////////////////////////////////////////////////////////// @@ -45892,33 +45892,33 @@ __global__ void scaleCFThS27( real* DC, f_BSE = fbseC[kbs]; f_BNW = fbnwC[kbw]; ////////////////////////////////////////////////////////////////////////////////// - f27E = (D27C.f[DIR_P00])[kzero];//ke - f27W = (D27C.f[DIR_M00])[kw ]; - f27N = (D27C.f[DIR_0P0])[kzero];//kn - f27S = (D27C.f[DIR_0M0])[ks ]; - f27T = (D27C.f[DIR_00P])[kzero];//kt - f27B = (D27C.f[DIR_00M])[kb ]; - f27NE = (D27C.f[DIR_PP0])[kzero];//kne - f27SW = (D27C.f[DIR_MM0])[ksw ]; - f27SE = (D27C.f[DIR_PM0])[ks ];//kse - f27NW = (D27C.f[DIR_MP0])[kw ];//knw - f27TE = (D27C.f[DIR_P0P])[kzero];//kte - f27BW = (D27C.f[DIR_M0M])[kbw ]; - f27BE = (D27C.f[DIR_P0M])[kb ];//kbe - f27TW = (D27C.f[DIR_M0P])[kw ];//ktw - f27TN = (D27C.f[DIR_0PP])[kzero];//ktn - f27BS = (D27C.f[DIR_0MM])[kbs ]; - f27BN = (D27C.f[DIR_0PM])[kb ];//kbn - f27TS = (D27C.f[DIR_0MP])[ks ];//kts - f27ZERO = (D27C.f[DIR_000])[kzero];//kzero - f27TNE = (D27C.f[DIR_PPP])[kzero];//ktne - f27TSW = (D27C.f[DIR_MMP])[ksw ];//ktsw - f27TSE = (D27C.f[DIR_PMP])[ks ];//ktse - f27TNW = (D27C.f[DIR_MPP])[kw ];//ktnw - f27BNE = (D27C.f[DIR_PPM])[kb ];//kbne - f27BSW = (D27C.f[DIR_MMM])[kbsw ]; - f27BSE = (D27C.f[DIR_PMM])[kbs ];//kbse - f27BNW = (D27C.f[DIR_MPM])[kbw ];//kbnw + f27E = (D27C.f[dP00])[kzero];//ke + f27W = (D27C.f[dM00])[kw ]; + f27N = (D27C.f[d0P0])[kzero];//kn + f27S = (D27C.f[d0M0])[ks ]; + f27T = (D27C.f[d00P])[kzero];//kt + f27B = (D27C.f[d00M])[kb ]; + f27NE = (D27C.f[dPP0])[kzero];//kne + f27SW = (D27C.f[dMM0])[ksw ]; + f27SE = (D27C.f[dPM0])[ks ];//kse + f27NW = (D27C.f[dMP0])[kw ];//knw + f27TE = (D27C.f[dP0P])[kzero];//kte + f27BW = (D27C.f[dM0M])[kbw ]; + f27BE = (D27C.f[dP0M])[kb ];//kbe + f27TW = (D27C.f[dM0P])[kw ];//ktw + f27TN = (D27C.f[d0PP])[kzero];//ktn + f27BS = (D27C.f[d0MM])[kbs ]; + f27BN = (D27C.f[d0PM])[kb ];//kbn + f27TS = (D27C.f[d0MP])[ks ];//kts + f27ZERO = (D27C.f[d000])[kzero];//kzero + f27TNE = (D27C.f[dPPP])[kzero];//ktne + f27TSW = (D27C.f[dMMP])[ksw ];//ktsw + f27TSE = (D27C.f[dPMP])[ks ];//ktse + f27TNW = (D27C.f[dMPP])[kw ];//ktnw + f27BNE = (D27C.f[dPPM])[kb ];//kbne + f27BSW = (D27C.f[dMMM])[kbsw ]; + f27BSE = (D27C.f[dPMM])[kbs ];//kbse + f27BNW = (D27C.f[dMPM])[kbw ];//kbnw Conc_C_SWB = f27E + f27W + f27N + f27S + f27T + f27B + f27NE + f27SW + f27SE + f27NW + f27TE + f27BW + f27BE + f27TW + f27TN + f27BS + f27BN + f27TS + f27ZERO + @@ -45979,33 +45979,33 @@ __global__ void scaleCFThS27( real* DC, f_BSE = fbseC[kbs]; f_BNW = fbnwC[kbw]; ////////////////////////////////////////////////////////////////////////////////// - f27E = (D27C.f[DIR_P00])[kzero];//ke - f27W = (D27C.f[DIR_M00])[kw ]; - f27N = (D27C.f[DIR_0P0])[kzero];//kn - f27S = (D27C.f[DIR_0M0])[ks ]; - f27T = (D27C.f[DIR_00P])[kzero];//kt - f27B = (D27C.f[DIR_00M])[kb ]; - f27NE = (D27C.f[DIR_PP0])[kzero];//kne - f27SW = (D27C.f[DIR_MM0])[ksw ]; - f27SE = (D27C.f[DIR_PM0])[ks ];//kse - f27NW = (D27C.f[DIR_MP0])[kw ];//knw - f27TE = (D27C.f[DIR_P0P])[kzero];//kte - f27BW = (D27C.f[DIR_M0M])[kbw ]; - f27BE = (D27C.f[DIR_P0M])[kb ];//kbe - f27TW = (D27C.f[DIR_M0P])[kw ];//ktw - f27TN = (D27C.f[DIR_0PP])[kzero];//ktn - f27BS = (D27C.f[DIR_0MM])[kbs ]; - f27BN = (D27C.f[DIR_0PM])[kb ];//kbn - f27TS = (D27C.f[DIR_0MP])[ks ];//kts - f27ZERO = (D27C.f[DIR_000])[kzero];//kzero - f27TNE = (D27C.f[DIR_PPP])[kzero];//ktne - f27TSW = (D27C.f[DIR_MMP])[ksw ];//ktsw - f27TSE = (D27C.f[DIR_PMP])[ks ];//ktse - f27TNW = (D27C.f[DIR_MPP])[kw ];//ktnw - f27BNE = (D27C.f[DIR_PPM])[kb ];//kbne - f27BSW = (D27C.f[DIR_MMM])[kbsw ]; - f27BSE = (D27C.f[DIR_PMM])[kbs ];//kbse - f27BNW = (D27C.f[DIR_MPM])[kbw ];//kbnw + f27E = (D27C.f[dP00])[kzero];//ke + f27W = (D27C.f[dM00])[kw ]; + f27N = (D27C.f[d0P0])[kzero];//kn + f27S = (D27C.f[d0M0])[ks ]; + f27T = (D27C.f[d00P])[kzero];//kt + f27B = (D27C.f[d00M])[kb ]; + f27NE = (D27C.f[dPP0])[kzero];//kne + f27SW = (D27C.f[dMM0])[ksw ]; + f27SE = (D27C.f[dPM0])[ks ];//kse + f27NW = (D27C.f[dMP0])[kw ];//knw + f27TE = (D27C.f[dP0P])[kzero];//kte + f27BW = (D27C.f[dM0M])[kbw ]; + f27BE = (D27C.f[dP0M])[kb ];//kbe + f27TW = (D27C.f[dM0P])[kw ];//ktw + f27TN = (D27C.f[d0PP])[kzero];//ktn + f27BS = (D27C.f[d0MM])[kbs ]; + f27BN = (D27C.f[d0PM])[kb ];//kbn + f27TS = (D27C.f[d0MP])[ks ];//kts + f27ZERO = (D27C.f[d000])[kzero];//kzero + f27TNE = (D27C.f[dPPP])[kzero];//ktne + f27TSW = (D27C.f[dMMP])[ksw ];//ktsw + f27TSE = (D27C.f[dPMP])[ks ];//ktse + f27TNW = (D27C.f[dMPP])[kw ];//ktnw + f27BNE = (D27C.f[dPPM])[kb ];//kbne + f27BSW = (D27C.f[dMMM])[kbsw ]; + f27BSE = (D27C.f[dPMM])[kbs ];//kbse + f27BNW = (D27C.f[dMPM])[kbw ];//kbnw Conc_C_SWT = f27E + f27W + f27N + f27S + f27T + f27B + f27NE + f27SW + f27SE + f27NW + f27TE + f27BW + f27BE + f27TW + f27TN + f27BS + f27BN + f27TS + f27ZERO + @@ -46066,33 +46066,33 @@ __global__ void scaleCFThS27( real* DC, f_BSE = fbseC[kbs]; f_BNW = fbnwC[kbw]; ////////////////////////////////////////////////////////////////////////////////// - f27E = (D27C.f[DIR_P00])[kzero];//ke - f27W = (D27C.f[DIR_M00])[kw ]; - f27N = (D27C.f[DIR_0P0])[kzero];//kn - f27S = (D27C.f[DIR_0M0])[ks ]; - f27T = (D27C.f[DIR_00P])[kzero];//kt - f27B = (D27C.f[DIR_00M])[kb ]; - f27NE = (D27C.f[DIR_PP0])[kzero];//kne - f27SW = (D27C.f[DIR_MM0])[ksw ]; - f27SE = (D27C.f[DIR_PM0])[ks ];//kse - f27NW = (D27C.f[DIR_MP0])[kw ];//knw - f27TE = (D27C.f[DIR_P0P])[kzero];//kte - f27BW = (D27C.f[DIR_M0M])[kbw ]; - f27BE = (D27C.f[DIR_P0M])[kb ];//kbe - f27TW = (D27C.f[DIR_M0P])[kw ];//ktw - f27TN = (D27C.f[DIR_0PP])[kzero];//ktn - f27BS = (D27C.f[DIR_0MM])[kbs ]; - f27BN = (D27C.f[DIR_0PM])[kb ];//kbn - f27TS = (D27C.f[DIR_0MP])[ks ];//kts - f27ZERO = (D27C.f[DIR_000])[kzero];//kzero - f27TNE = (D27C.f[DIR_PPP])[kzero];//ktne - f27TSW = (D27C.f[DIR_MMP])[ksw ];//ktsw - f27TSE = (D27C.f[DIR_PMP])[ks ];//ktse - f27TNW = (D27C.f[DIR_MPP])[kw ];//ktnw - f27BNE = (D27C.f[DIR_PPM])[kb ];//kbne - f27BSW = (D27C.f[DIR_MMM])[kbsw ]; - f27BSE = (D27C.f[DIR_PMM])[kbs ];//kbse - f27BNW = (D27C.f[DIR_MPM])[kbw ];//kbnw + f27E = (D27C.f[dP00])[kzero];//ke + f27W = (D27C.f[dM00])[kw ]; + f27N = (D27C.f[d0P0])[kzero];//kn + f27S = (D27C.f[d0M0])[ks ]; + f27T = (D27C.f[d00P])[kzero];//kt + f27B = (D27C.f[d00M])[kb ]; + f27NE = (D27C.f[dPP0])[kzero];//kne + f27SW = (D27C.f[dMM0])[ksw ]; + f27SE = (D27C.f[dPM0])[ks ];//kse + f27NW = (D27C.f[dMP0])[kw ];//knw + f27TE = (D27C.f[dP0P])[kzero];//kte + f27BW = (D27C.f[dM0M])[kbw ]; + f27BE = (D27C.f[dP0M])[kb ];//kbe + f27TW = (D27C.f[dM0P])[kw ];//ktw + f27TN = (D27C.f[d0PP])[kzero];//ktn + f27BS = (D27C.f[d0MM])[kbs ]; + f27BN = (D27C.f[d0PM])[kb ];//kbn + f27TS = (D27C.f[d0MP])[ks ];//kts + f27ZERO = (D27C.f[d000])[kzero];//kzero + f27TNE = (D27C.f[dPPP])[kzero];//ktne + f27TSW = (D27C.f[dMMP])[ksw ];//ktsw + f27TSE = (D27C.f[dPMP])[ks ];//ktse + f27TNW = (D27C.f[dMPP])[kw ];//ktnw + f27BNE = (D27C.f[dPPM])[kb ];//kbne + f27BSW = (D27C.f[dMMM])[kbsw ]; + f27BSE = (D27C.f[dPMM])[kbs ];//kbse + f27BNW = (D27C.f[dMPM])[kbw ];//kbnw Conc_C_SET = f27E + f27W + f27N + f27S + f27T + f27B + f27NE + f27SW + f27SE + f27NW + f27TE + f27BW + f27BE + f27TW + f27TN + f27BS + f27BN + f27TS + f27ZERO + @@ -46153,33 +46153,33 @@ __global__ void scaleCFThS27( real* DC, f_BSE = fbseC[kbs]; f_BNW = fbnwC[kbw]; ////////////////////////////////////////////////////////////////////////////////// - f27E = (D27C.f[DIR_P00])[kzero];//ke - f27W = (D27C.f[DIR_M00])[kw ]; - f27N = (D27C.f[DIR_0P0])[kzero];//kn - f27S = (D27C.f[DIR_0M0])[ks ]; - f27T = (D27C.f[DIR_00P])[kzero];//kt - f27B = (D27C.f[DIR_00M])[kb ]; - f27NE = (D27C.f[DIR_PP0])[kzero];//kne - f27SW = (D27C.f[DIR_MM0])[ksw ]; - f27SE = (D27C.f[DIR_PM0])[ks ];//kse - f27NW = (D27C.f[DIR_MP0])[kw ];//knw - f27TE = (D27C.f[DIR_P0P])[kzero];//kte - f27BW = (D27C.f[DIR_M0M])[kbw ]; - f27BE = (D27C.f[DIR_P0M])[kb ];//kbe - f27TW = (D27C.f[DIR_M0P])[kw ];//ktw - f27TN = (D27C.f[DIR_0PP])[kzero];//ktn - f27BS = (D27C.f[DIR_0MM])[kbs ]; - f27BN = (D27C.f[DIR_0PM])[kb ];//kbn - f27TS = (D27C.f[DIR_0MP])[ks ];//kts - f27ZERO = (D27C.f[DIR_000])[kzero];//kzero - f27TNE = (D27C.f[DIR_PPP])[kzero];//ktne - f27TSW = (D27C.f[DIR_MMP])[ksw ];//ktsw - f27TSE = (D27C.f[DIR_PMP])[ks ];//ktse - f27TNW = (D27C.f[DIR_MPP])[kw ];//ktnw - f27BNE = (D27C.f[DIR_PPM])[kb ];//kbne - f27BSW = (D27C.f[DIR_MMM])[kbsw ]; - f27BSE = (D27C.f[DIR_PMM])[kbs ];//kbse - f27BNW = (D27C.f[DIR_MPM])[kbw ];//kbnw + f27E = (D27C.f[dP00])[kzero];//ke + f27W = (D27C.f[dM00])[kw ]; + f27N = (D27C.f[d0P0])[kzero];//kn + f27S = (D27C.f[d0M0])[ks ]; + f27T = (D27C.f[d00P])[kzero];//kt + f27B = (D27C.f[d00M])[kb ]; + f27NE = (D27C.f[dPP0])[kzero];//kne + f27SW = (D27C.f[dMM0])[ksw ]; + f27SE = (D27C.f[dPM0])[ks ];//kse + f27NW = (D27C.f[dMP0])[kw ];//knw + f27TE = (D27C.f[dP0P])[kzero];//kte + f27BW = (D27C.f[dM0M])[kbw ]; + f27BE = (D27C.f[dP0M])[kb ];//kbe + f27TW = (D27C.f[dM0P])[kw ];//ktw + f27TN = (D27C.f[d0PP])[kzero];//ktn + f27BS = (D27C.f[d0MM])[kbs ]; + f27BN = (D27C.f[d0PM])[kb ];//kbn + f27TS = (D27C.f[d0MP])[ks ];//kts + f27ZERO = (D27C.f[d000])[kzero];//kzero + f27TNE = (D27C.f[dPPP])[kzero];//ktne + f27TSW = (D27C.f[dMMP])[ksw ];//ktsw + f27TSE = (D27C.f[dPMP])[ks ];//ktse + f27TNW = (D27C.f[dMPP])[kw ];//ktnw + f27BNE = (D27C.f[dPPM])[kb ];//kbne + f27BSW = (D27C.f[dMMM])[kbsw ]; + f27BSE = (D27C.f[dPMM])[kbs ];//kbse + f27BNW = (D27C.f[dMPM])[kbw ];//kbnw Conc_C_SEB = f27E + f27W + f27N + f27S + f27T + f27B + f27NE + f27SW + f27SE + f27NW + f27TE + f27BW + f27BE + f27TW + f27TN + f27BS + f27BN + f27TS + f27ZERO + @@ -46250,33 +46250,33 @@ __global__ void scaleCFThS27( real* DC, f_BSE = fbseC[kbs]; f_BNW = fbnwC[kbw]; ////////////////////////////////////////////////////////////////////////////////// - f27E = (D27C.f[DIR_P00])[kzero];//ke - f27W = (D27C.f[DIR_M00])[kw ]; - f27N = (D27C.f[DIR_0P0])[kzero];//kn - f27S = (D27C.f[DIR_0M0])[ks ]; - f27T = (D27C.f[DIR_00P])[kzero];//kt - f27B = (D27C.f[DIR_00M])[kb ]; - f27NE = (D27C.f[DIR_PP0])[kzero];//kne - f27SW = (D27C.f[DIR_MM0])[ksw ]; - f27SE = (D27C.f[DIR_PM0])[ks ];//kse - f27NW = (D27C.f[DIR_MP0])[kw ];//knw - f27TE = (D27C.f[DIR_P0P])[kzero];//kte - f27BW = (D27C.f[DIR_M0M])[kbw ]; - f27BE = (D27C.f[DIR_P0M])[kb ];//kbe - f27TW = (D27C.f[DIR_M0P])[kw ];//ktw - f27TN = (D27C.f[DIR_0PP])[kzero];//ktn - f27BS = (D27C.f[DIR_0MM])[kbs ]; - f27BN = (D27C.f[DIR_0PM])[kb ];//kbn - f27TS = (D27C.f[DIR_0MP])[ks ];//kts - f27ZERO = (D27C.f[DIR_000])[kzero];//kzero - f27TNE = (D27C.f[DIR_PPP])[kzero];//ktne - f27TSW = (D27C.f[DIR_MMP])[ksw ];//ktsw - f27TSE = (D27C.f[DIR_PMP])[ks ];//ktse - f27TNW = (D27C.f[DIR_MPP])[kw ];//ktnw - f27BNE = (D27C.f[DIR_PPM])[kb ];//kbne - f27BSW = (D27C.f[DIR_MMM])[kbsw ]; - f27BSE = (D27C.f[DIR_PMM])[kbs ];//kbse - f27BNW = (D27C.f[DIR_MPM])[kbw ];//kbnw + f27E = (D27C.f[dP00])[kzero];//ke + f27W = (D27C.f[dM00])[kw ]; + f27N = (D27C.f[d0P0])[kzero];//kn + f27S = (D27C.f[d0M0])[ks ]; + f27T = (D27C.f[d00P])[kzero];//kt + f27B = (D27C.f[d00M])[kb ]; + f27NE = (D27C.f[dPP0])[kzero];//kne + f27SW = (D27C.f[dMM0])[ksw ]; + f27SE = (D27C.f[dPM0])[ks ];//kse + f27NW = (D27C.f[dMP0])[kw ];//knw + f27TE = (D27C.f[dP0P])[kzero];//kte + f27BW = (D27C.f[dM0M])[kbw ]; + f27BE = (D27C.f[dP0M])[kb ];//kbe + f27TW = (D27C.f[dM0P])[kw ];//ktw + f27TN = (D27C.f[d0PP])[kzero];//ktn + f27BS = (D27C.f[d0MM])[kbs ]; + f27BN = (D27C.f[d0PM])[kb ];//kbn + f27TS = (D27C.f[d0MP])[ks ];//kts + f27ZERO = (D27C.f[d000])[kzero];//kzero + f27TNE = (D27C.f[dPPP])[kzero];//ktne + f27TSW = (D27C.f[dMMP])[ksw ];//ktsw + f27TSE = (D27C.f[dPMP])[ks ];//ktse + f27TNW = (D27C.f[dMPP])[kw ];//ktnw + f27BNE = (D27C.f[dPPM])[kb ];//kbne + f27BSW = (D27C.f[dMMM])[kbsw ]; + f27BSE = (D27C.f[dPMM])[kbs ];//kbse + f27BNW = (D27C.f[dMPM])[kbw ];//kbnw Conc_C_NWB = f27E + f27W + f27N + f27S + f27T + f27B + f27NE + f27SW + f27SE + f27NW + f27TE + f27BW + f27BE + f27TW + f27TN + f27BS + f27BN + f27TS + f27ZERO + @@ -46337,33 +46337,33 @@ __global__ void scaleCFThS27( real* DC, f_BSE = fbseC[kbs]; f_BNW = fbnwC[kbw]; ////////////////////////////////////////////////////////////////////////////////// - f27E = (D27C.f[DIR_P00])[kzero];//ke - f27W = (D27C.f[DIR_M00])[kw ]; - f27N = (D27C.f[DIR_0P0])[kzero];//kn - f27S = (D27C.f[DIR_0M0])[ks ]; - f27T = (D27C.f[DIR_00P])[kzero];//kt - f27B = (D27C.f[DIR_00M])[kb ]; - f27NE = (D27C.f[DIR_PP0])[kzero];//kne - f27SW = (D27C.f[DIR_MM0])[ksw ]; - f27SE = (D27C.f[DIR_PM0])[ks ];//kse - f27NW = (D27C.f[DIR_MP0])[kw ];//knw - f27TE = (D27C.f[DIR_P0P])[kzero];//kte - f27BW = (D27C.f[DIR_M0M])[kbw ]; - f27BE = (D27C.f[DIR_P0M])[kb ];//kbe - f27TW = (D27C.f[DIR_M0P])[kw ];//ktw - f27TN = (D27C.f[DIR_0PP])[kzero];//ktn - f27BS = (D27C.f[DIR_0MM])[kbs ]; - f27BN = (D27C.f[DIR_0PM])[kb ];//kbn - f27TS = (D27C.f[DIR_0MP])[ks ];//kts - f27ZERO = (D27C.f[DIR_000])[kzero];//kzero - f27TNE = (D27C.f[DIR_PPP])[kzero];//ktne - f27TSW = (D27C.f[DIR_MMP])[ksw ];//ktsw - f27TSE = (D27C.f[DIR_PMP])[ks ];//ktse - f27TNW = (D27C.f[DIR_MPP])[kw ];//ktnw - f27BNE = (D27C.f[DIR_PPM])[kb ];//kbne - f27BSW = (D27C.f[DIR_MMM])[kbsw ]; - f27BSE = (D27C.f[DIR_PMM])[kbs ];//kbse - f27BNW = (D27C.f[DIR_MPM])[kbw ];//kbnw + f27E = (D27C.f[dP00])[kzero];//ke + f27W = (D27C.f[dM00])[kw ]; + f27N = (D27C.f[d0P0])[kzero];//kn + f27S = (D27C.f[d0M0])[ks ]; + f27T = (D27C.f[d00P])[kzero];//kt + f27B = (D27C.f[d00M])[kb ]; + f27NE = (D27C.f[dPP0])[kzero];//kne + f27SW = (D27C.f[dMM0])[ksw ]; + f27SE = (D27C.f[dPM0])[ks ];//kse + f27NW = (D27C.f[dMP0])[kw ];//knw + f27TE = (D27C.f[dP0P])[kzero];//kte + f27BW = (D27C.f[dM0M])[kbw ]; + f27BE = (D27C.f[dP0M])[kb ];//kbe + f27TW = (D27C.f[dM0P])[kw ];//ktw + f27TN = (D27C.f[d0PP])[kzero];//ktn + f27BS = (D27C.f[d0MM])[kbs ]; + f27BN = (D27C.f[d0PM])[kb ];//kbn + f27TS = (D27C.f[d0MP])[ks ];//kts + f27ZERO = (D27C.f[d000])[kzero];//kzero + f27TNE = (D27C.f[dPPP])[kzero];//ktne + f27TSW = (D27C.f[dMMP])[ksw ];//ktsw + f27TSE = (D27C.f[dPMP])[ks ];//ktse + f27TNW = (D27C.f[dMPP])[kw ];//ktnw + f27BNE = (D27C.f[dPPM])[kb ];//kbne + f27BSW = (D27C.f[dMMM])[kbsw ]; + f27BSE = (D27C.f[dPMM])[kbs ];//kbse + f27BNW = (D27C.f[dMPM])[kbw ];//kbnw Conc_C_NWT = f27E + f27W + f27N + f27S + f27T + f27B + f27NE + f27SW + f27SE + f27NW + f27TE + f27BW + f27BE + f27TW + f27TN + f27BS + f27BN + f27TS + f27ZERO + @@ -46424,33 +46424,33 @@ __global__ void scaleCFThS27( real* DC, f_BSE = fbseC[kbs]; f_BNW = fbnwC[kbw]; ////////////////////////////////////////////////////////////////////////////////// - f27E = (D27C.f[DIR_P00])[kzero];//ke - f27W = (D27C.f[DIR_M00])[kw ]; - f27N = (D27C.f[DIR_0P0])[kzero];//kn - f27S = (D27C.f[DIR_0M0])[ks ]; - f27T = (D27C.f[DIR_00P])[kzero];//kt - f27B = (D27C.f[DIR_00M])[kb ]; - f27NE = (D27C.f[DIR_PP0])[kzero];//kne - f27SW = (D27C.f[DIR_MM0])[ksw ]; - f27SE = (D27C.f[DIR_PM0])[ks ];//kse - f27NW = (D27C.f[DIR_MP0])[kw ];//knw - f27TE = (D27C.f[DIR_P0P])[kzero];//kte - f27BW = (D27C.f[DIR_M0M])[kbw ]; - f27BE = (D27C.f[DIR_P0M])[kb ];//kbe - f27TW = (D27C.f[DIR_M0P])[kw ];//ktw - f27TN = (D27C.f[DIR_0PP])[kzero];//ktn - f27BS = (D27C.f[DIR_0MM])[kbs ]; - f27BN = (D27C.f[DIR_0PM])[kb ];//kbn - f27TS = (D27C.f[DIR_0MP])[ks ];//kts - f27ZERO = (D27C.f[DIR_000])[kzero];//kzero - f27TNE = (D27C.f[DIR_PPP])[kzero];//ktne - f27TSW = (D27C.f[DIR_MMP])[ksw ];//ktsw - f27TSE = (D27C.f[DIR_PMP])[ks ];//ktse - f27TNW = (D27C.f[DIR_MPP])[kw ];//ktnw - f27BNE = (D27C.f[DIR_PPM])[kb ];//kbne - f27BSW = (D27C.f[DIR_MMM])[kbsw ]; - f27BSE = (D27C.f[DIR_PMM])[kbs ];//kbse - f27BNW = (D27C.f[DIR_MPM])[kbw ];//kbnw + f27E = (D27C.f[dP00])[kzero];//ke + f27W = (D27C.f[dM00])[kw ]; + f27N = (D27C.f[d0P0])[kzero];//kn + f27S = (D27C.f[d0M0])[ks ]; + f27T = (D27C.f[d00P])[kzero];//kt + f27B = (D27C.f[d00M])[kb ]; + f27NE = (D27C.f[dPP0])[kzero];//kne + f27SW = (D27C.f[dMM0])[ksw ]; + f27SE = (D27C.f[dPM0])[ks ];//kse + f27NW = (D27C.f[dMP0])[kw ];//knw + f27TE = (D27C.f[dP0P])[kzero];//kte + f27BW = (D27C.f[dM0M])[kbw ]; + f27BE = (D27C.f[dP0M])[kb ];//kbe + f27TW = (D27C.f[dM0P])[kw ];//ktw + f27TN = (D27C.f[d0PP])[kzero];//ktn + f27BS = (D27C.f[d0MM])[kbs ]; + f27BN = (D27C.f[d0PM])[kb ];//kbn + f27TS = (D27C.f[d0MP])[ks ];//kts + f27ZERO = (D27C.f[d000])[kzero];//kzero + f27TNE = (D27C.f[dPPP])[kzero];//ktne + f27TSW = (D27C.f[dMMP])[ksw ];//ktsw + f27TSE = (D27C.f[dPMP])[ks ];//ktse + f27TNW = (D27C.f[dMPP])[kw ];//ktnw + f27BNE = (D27C.f[dPPM])[kb ];//kbne + f27BSW = (D27C.f[dMMM])[kbsw ]; + f27BSE = (D27C.f[dPMM])[kbs ];//kbse + f27BNW = (D27C.f[dMPM])[kbw ];//kbnw Conc_C_NET = f27E + f27W + f27N + f27S + f27T + f27B + f27NE + f27SW + f27SE + f27NW + f27TE + f27BW + f27BE + f27TW + f27TN + f27BS + f27BN + f27TS + f27ZERO + @@ -46511,33 +46511,33 @@ __global__ void scaleCFThS27( real* DC, f_BSE = fbseC[kbs]; f_BNW = fbnwC[kbw]; //////////////////////////////////////////////////////////////////////////////// - f27E = (D27C.f[DIR_P00])[kzero];//ke - f27W = (D27C.f[DIR_M00])[kw ]; - f27N = (D27C.f[DIR_0P0])[kzero];//kn - f27S = (D27C.f[DIR_0M0])[ks ]; - f27T = (D27C.f[DIR_00P])[kzero];//kt - f27B = (D27C.f[DIR_00M])[kb ]; - f27NE = (D27C.f[DIR_PP0])[kzero];//kne - f27SW = (D27C.f[DIR_MM0])[ksw ]; - f27SE = (D27C.f[DIR_PM0])[ks ];//kse - f27NW = (D27C.f[DIR_MP0])[kw ];//knw - f27TE = (D27C.f[DIR_P0P])[kzero];//kte - f27BW = (D27C.f[DIR_M0M])[kbw ]; - f27BE = (D27C.f[DIR_P0M])[kb ];//kbe - f27TW = (D27C.f[DIR_M0P])[kw ];//ktw - f27TN = (D27C.f[DIR_0PP])[kzero];//ktn - f27BS = (D27C.f[DIR_0MM])[kbs ]; - f27BN = (D27C.f[DIR_0PM])[kb ];//kbn - f27TS = (D27C.f[DIR_0MP])[ks ];//kts - f27ZERO = (D27C.f[DIR_000])[kzero];//kzero - f27TNE = (D27C.f[DIR_PPP])[kzero];//ktne - f27TSW = (D27C.f[DIR_MMP])[ksw ];//ktsw - f27TSE = (D27C.f[DIR_PMP])[ks ];//ktse - f27TNW = (D27C.f[DIR_MPP])[kw ];//ktnw - f27BNE = (D27C.f[DIR_PPM])[kb ];//kbne - f27BSW = (D27C.f[DIR_MMM])[kbsw ]; - f27BSE = (D27C.f[DIR_PMM])[kbs ];//kbse - f27BNW = (D27C.f[DIR_MPM])[kbw ];//kbnw + f27E = (D27C.f[dP00])[kzero];//ke + f27W = (D27C.f[dM00])[kw ]; + f27N = (D27C.f[d0P0])[kzero];//kn + f27S = (D27C.f[d0M0])[ks ]; + f27T = (D27C.f[d00P])[kzero];//kt + f27B = (D27C.f[d00M])[kb ]; + f27NE = (D27C.f[dPP0])[kzero];//kne + f27SW = (D27C.f[dMM0])[ksw ]; + f27SE = (D27C.f[dPM0])[ks ];//kse + f27NW = (D27C.f[dMP0])[kw ];//knw + f27TE = (D27C.f[dP0P])[kzero];//kte + f27BW = (D27C.f[dM0M])[kbw ]; + f27BE = (D27C.f[dP0M])[kb ];//kbe + f27TW = (D27C.f[dM0P])[kw ];//ktw + f27TN = (D27C.f[d0PP])[kzero];//ktn + f27BS = (D27C.f[d0MM])[kbs ]; + f27BN = (D27C.f[d0PM])[kb ];//kbn + f27TS = (D27C.f[d0MP])[ks ];//kts + f27ZERO = (D27C.f[d000])[kzero];//kzero + f27TNE = (D27C.f[dPPP])[kzero];//ktne + f27TSW = (D27C.f[dMMP])[ksw ];//ktsw + f27TSE = (D27C.f[dPMP])[ks ];//ktse + f27TNW = (D27C.f[dMPP])[kw ];//ktnw + f27BNE = (D27C.f[dPPM])[kb ];//kbne + f27BSW = (D27C.f[dMMM])[kbsw ]; + f27BSE = (D27C.f[dPMM])[kbs ];//kbse + f27BNW = (D27C.f[dMPM])[kbw ];//kbnw Conc_C_NEB = f27E + f27W + f27N + f27S + f27T + f27B + f27NE + f27SW + f27SE + f27NW + f27TE + f27BW + f27BE + f27TW + f27TN + f27BS + f27BN + f27TS + f27ZERO + @@ -46655,33 +46655,33 @@ __global__ void scaleCFThS27( real* DC, cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3); - (D27F.f[DIR_000])[kzero] = c8o27* Conc_F*(c1o1-cu_sq); - (D27F.f[DIR_P00])[kzero] = c2o27* (c3o1*( Mx )+Conc_F*(c1o1+c9o2*( vx1 )*( vx1 )-cu_sq)); - (D27F.f[DIR_M00])[kw ] = c2o27* (c3o1*(-Mx )+Conc_F*(c1o1+c9o2*(-vx1 )*(-vx1 )-cu_sq)); - (D27F.f[DIR_0P0])[kzero] = c2o27* (c3o1*( My )+Conc_F*(c1o1+c9o2*( vx2 )*( vx2 )-cu_sq)); - (D27F.f[DIR_0M0])[ks ] = c2o27* (c3o1*( -My )+Conc_F*(c1o1+c9o2*( -vx2 )*( -vx2 )-cu_sq)); - (D27F.f[DIR_00P])[kzero] = c2o27* (c3o1*( Mz)+Conc_F*(c1o1+c9o2*( vx3)*( vx3)-cu_sq)); - (D27F.f[DIR_00M])[kb ] = c2o27* (c3o1*( -Mz)+Conc_F*(c1o1+c9o2*( -vx3)*( -vx3)-cu_sq)); - (D27F.f[DIR_PP0])[kzero] = c1o54* (c3o1*( Mx +My )+Conc_F*(c1o1+c9o2*( vx1+vx2 )*( vx1+vx2 )-cu_sq)); - (D27F.f[DIR_MM0])[ksw ] = c1o54* (c3o1*(-Mx -My )+Conc_F*(c1o1+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq)); - (D27F.f[DIR_PM0])[ks ] = c1o54* (c3o1*( Mx -My )+Conc_F*(c1o1+c9o2*( vx1-vx2 )*( vx1-vx2 )-cu_sq)); - (D27F.f[DIR_MP0])[kw ] = c1o54* (c3o1*(-Mx +My )+Conc_F*(c1o1+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq)); - (D27F.f[DIR_P0P])[kzero] = c1o54* (c3o1*( Mx +Mz)+Conc_F*(c1o1+c9o2*( vx1 +vx3)*( vx1 +vx3)-cu_sq)); - (D27F.f[DIR_M0M])[kbw ] = c1o54* (c3o1*(-Mx -Mz)+Conc_F*(c1o1+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq)); - (D27F.f[DIR_P0M])[kb ] = c1o54* (c3o1*( Mx -Mz)+Conc_F*(c1o1+c9o2*( vx1 -vx3)*( vx1 -vx3)-cu_sq)); - (D27F.f[DIR_M0P])[kw ] = c1o54* (c3o1*(-Mx +Mz)+Conc_F*(c1o1+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq)); - (D27F.f[DIR_0PP])[kzero] = c1o54* (c3o1*( My +Mz)+Conc_F*(c1o1+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq)); - (D27F.f[DIR_0MM])[kbs ] = c1o54* (c3o1*( -My -Mz)+Conc_F*(c1o1+c9o2*( -vx2-vx3)*( -vx2-vx3)-cu_sq)); - (D27F.f[DIR_0PM])[kb ] = c1o54* (c3o1*( My -Mz)+Conc_F*(c1o1+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq)); - (D27F.f[DIR_0MP])[ks ] = c1o54* (c3o1*( -My +Mz)+Conc_F*(c1o1+c9o2*( -vx2+vx3)*( -vx2+vx3)-cu_sq)); - (D27F.f[DIR_PPP])[kzero] = c1o216*(c3o1*( Mx +My +Mz)+Conc_F*(c1o1+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq)); - (D27F.f[DIR_MMM])[kbsw ] = c1o216*(c3o1*(-Mx -My -Mz)+Conc_F*(c1o1+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq)); - (D27F.f[DIR_PPM])[kb ] = c1o216*(c3o1*( Mx +My -Mz)+Conc_F*(c1o1+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq)); - (D27F.f[DIR_MMP])[ksw ] = c1o216*(c3o1*(-Mx -My +Mz)+Conc_F*(c1o1+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq)); - (D27F.f[DIR_PMP])[ks ] = c1o216*(c3o1*( Mx -My +Mz)+Conc_F*(c1o1+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq)); - (D27F.f[DIR_MPM])[kbw ] = c1o216*(c3o1*(-Mx +My -Mz)+Conc_F*(c1o1+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq)); - (D27F.f[DIR_PMM])[kbs ] = c1o216*(c3o1*( Mx -My -Mz)+Conc_F*(c1o1+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq)); - (D27F.f[DIR_MPP])[kw ] = c1o216*(c3o1*(-Mx +My +Mz)+Conc_F*(c1o1+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq)); + (D27F.f[d000])[kzero] = c8o27* Conc_F*(c1o1-cu_sq); + (D27F.f[dP00])[kzero] = c2o27* (c3o1*( Mx )+Conc_F*(c1o1+c9o2*( vx1 )*( vx1 )-cu_sq)); + (D27F.f[dM00])[kw ] = c2o27* (c3o1*(-Mx )+Conc_F*(c1o1+c9o2*(-vx1 )*(-vx1 )-cu_sq)); + (D27F.f[d0P0])[kzero] = c2o27* (c3o1*( My )+Conc_F*(c1o1+c9o2*( vx2 )*( vx2 )-cu_sq)); + (D27F.f[d0M0])[ks ] = c2o27* (c3o1*( -My )+Conc_F*(c1o1+c9o2*( -vx2 )*( -vx2 )-cu_sq)); + (D27F.f[d00P])[kzero] = c2o27* (c3o1*( Mz)+Conc_F*(c1o1+c9o2*( vx3)*( vx3)-cu_sq)); + (D27F.f[d00M])[kb ] = c2o27* (c3o1*( -Mz)+Conc_F*(c1o1+c9o2*( -vx3)*( -vx3)-cu_sq)); + (D27F.f[dPP0])[kzero] = c1o54* (c3o1*( Mx +My )+Conc_F*(c1o1+c9o2*( vx1+vx2 )*( vx1+vx2 )-cu_sq)); + (D27F.f[dMM0])[ksw ] = c1o54* (c3o1*(-Mx -My )+Conc_F*(c1o1+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq)); + (D27F.f[dPM0])[ks ] = c1o54* (c3o1*( Mx -My )+Conc_F*(c1o1+c9o2*( vx1-vx2 )*( vx1-vx2 )-cu_sq)); + (D27F.f[dMP0])[kw ] = c1o54* (c3o1*(-Mx +My )+Conc_F*(c1o1+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq)); + (D27F.f[dP0P])[kzero] = c1o54* (c3o1*( Mx +Mz)+Conc_F*(c1o1+c9o2*( vx1 +vx3)*( vx1 +vx3)-cu_sq)); + (D27F.f[dM0M])[kbw ] = c1o54* (c3o1*(-Mx -Mz)+Conc_F*(c1o1+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq)); + (D27F.f[dP0M])[kb ] = c1o54* (c3o1*( Mx -Mz)+Conc_F*(c1o1+c9o2*( vx1 -vx3)*( vx1 -vx3)-cu_sq)); + (D27F.f[dM0P])[kw ] = c1o54* (c3o1*(-Mx +Mz)+Conc_F*(c1o1+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq)); + (D27F.f[d0PP])[kzero] = c1o54* (c3o1*( My +Mz)+Conc_F*(c1o1+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq)); + (D27F.f[d0MM])[kbs ] = c1o54* (c3o1*( -My -Mz)+Conc_F*(c1o1+c9o2*( -vx2-vx3)*( -vx2-vx3)-cu_sq)); + (D27F.f[d0PM])[kb ] = c1o54* (c3o1*( My -Mz)+Conc_F*(c1o1+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq)); + (D27F.f[d0MP])[ks ] = c1o54* (c3o1*( -My +Mz)+Conc_F*(c1o1+c9o2*( -vx2+vx3)*( -vx2+vx3)-cu_sq)); + (D27F.f[dPPP])[kzero] = c1o216*(c3o1*( Mx +My +Mz)+Conc_F*(c1o1+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq)); + (D27F.f[dMMM])[kbsw ] = c1o216*(c3o1*(-Mx -My -Mz)+Conc_F*(c1o1+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq)); + (D27F.f[dPPM])[kb ] = c1o216*(c3o1*( Mx +My -Mz)+Conc_F*(c1o1+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq)); + (D27F.f[dMMP])[ksw ] = c1o216*(c3o1*(-Mx -My +Mz)+Conc_F*(c1o1+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq)); + (D27F.f[dPMP])[ks ] = c1o216*(c3o1*( Mx -My +Mz)+Conc_F*(c1o1+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq)); + (D27F.f[dMPM])[kbw ] = c1o216*(c3o1*(-Mx +My -Mz)+Conc_F*(c1o1+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq)); + (D27F.f[dPMM])[kbs ] = c1o216*(c3o1*( Mx -My -Mz)+Conc_F*(c1o1+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq)); + (D27F.f[dMPP])[kw ] = c1o216*(c3o1*(-Mx +My +Mz)+Conc_F*(c1o1+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq)); @@ -46733,33 +46733,33 @@ __global__ void scaleCFThS27( real* DC, cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3); - (D27F.f[DIR_000])[kzero] = c8o27* Conc_F*(c1o1-cu_sq); - (D27F.f[DIR_P00])[kzero] = c2o27* (c3o1*( Mx )+Conc_F*(c1o1+c9o2*( vx1 )*( vx1 )-cu_sq)); - (D27F.f[DIR_M00])[kw ] = c2o27* (c3o1*(-Mx )+Conc_F*(c1o1+c9o2*(-vx1 )*(-vx1 )-cu_sq)); - (D27F.f[DIR_0P0])[kzero] = c2o27* (c3o1*( My )+Conc_F*(c1o1+c9o2*( vx2 )*( vx2 )-cu_sq)); - (D27F.f[DIR_0M0])[ks ] = c2o27* (c3o1*( -My )+Conc_F*(c1o1+c9o2*( -vx2 )*( -vx2 )-cu_sq)); - (D27F.f[DIR_00P])[kzero] = c2o27* (c3o1*( Mz)+Conc_F*(c1o1+c9o2*( vx3)*( vx3)-cu_sq)); - (D27F.f[DIR_00M])[kb ] = c2o27* (c3o1*( -Mz)+Conc_F*(c1o1+c9o2*( -vx3)*( -vx3)-cu_sq)); - (D27F.f[DIR_PP0])[kzero] = c1o54* (c3o1*( Mx +My )+Conc_F*(c1o1+c9o2*( vx1+vx2 )*( vx1+vx2 )-cu_sq)); - (D27F.f[DIR_MM0])[ksw ] = c1o54* (c3o1*(-Mx -My )+Conc_F*(c1o1+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq)); - (D27F.f[DIR_PM0])[ks ] = c1o54* (c3o1*( Mx -My )+Conc_F*(c1o1+c9o2*( vx1-vx2 )*( vx1-vx2 )-cu_sq)); - (D27F.f[DIR_MP0])[kw ] = c1o54* (c3o1*(-Mx +My )+Conc_F*(c1o1+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq)); - (D27F.f[DIR_P0P])[kzero] = c1o54* (c3o1*( Mx +Mz)+Conc_F*(c1o1+c9o2*( vx1 +vx3)*( vx1 +vx3)-cu_sq)); - (D27F.f[DIR_M0M])[kbw ] = c1o54* (c3o1*(-Mx -Mz)+Conc_F*(c1o1+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq)); - (D27F.f[DIR_P0M])[kb ] = c1o54* (c3o1*( Mx -Mz)+Conc_F*(c1o1+c9o2*( vx1 -vx3)*( vx1 -vx3)-cu_sq)); - (D27F.f[DIR_M0P])[kw ] = c1o54* (c3o1*(-Mx +Mz)+Conc_F*(c1o1+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq)); - (D27F.f[DIR_0PP])[kzero] = c1o54* (c3o1*( My +Mz)+Conc_F*(c1o1+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq)); - (D27F.f[DIR_0MM])[kbs ] = c1o54* (c3o1*( -My -Mz)+Conc_F*(c1o1+c9o2*( -vx2-vx3)*( -vx2-vx3)-cu_sq)); - (D27F.f[DIR_0PM])[kb ] = c1o54* (c3o1*( My -Mz)+Conc_F*(c1o1+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq)); - (D27F.f[DIR_0MP])[ks ] = c1o54* (c3o1*( -My +Mz)+Conc_F*(c1o1+c9o2*( -vx2+vx3)*( -vx2+vx3)-cu_sq)); - (D27F.f[DIR_PPP])[kzero] = c1o216*(c3o1*( Mx +My +Mz)+Conc_F*(c1o1+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq)); - (D27F.f[DIR_MMM])[kbsw ] = c1o216*(c3o1*(-Mx -My -Mz)+Conc_F*(c1o1+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq)); - (D27F.f[DIR_PPM])[kb ] = c1o216*(c3o1*( Mx +My -Mz)+Conc_F*(c1o1+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq)); - (D27F.f[DIR_MMP])[ksw ] = c1o216*(c3o1*(-Mx -My +Mz)+Conc_F*(c1o1+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq)); - (D27F.f[DIR_PMP])[ks ] = c1o216*(c3o1*( Mx -My +Mz)+Conc_F*(c1o1+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq)); - (D27F.f[DIR_MPM])[kbw ] = c1o216*(c3o1*(-Mx +My -Mz)+Conc_F*(c1o1+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq)); - (D27F.f[DIR_PMM])[kbs ] = c1o216*(c3o1*( Mx -My -Mz)+Conc_F*(c1o1+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq)); - (D27F.f[DIR_MPP])[kw ] = c1o216*(c3o1*(-Mx +My +Mz)+Conc_F*(c1o1+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq)); + (D27F.f[d000])[kzero] = c8o27* Conc_F*(c1o1-cu_sq); + (D27F.f[dP00])[kzero] = c2o27* (c3o1*( Mx )+Conc_F*(c1o1+c9o2*( vx1 )*( vx1 )-cu_sq)); + (D27F.f[dM00])[kw ] = c2o27* (c3o1*(-Mx )+Conc_F*(c1o1+c9o2*(-vx1 )*(-vx1 )-cu_sq)); + (D27F.f[d0P0])[kzero] = c2o27* (c3o1*( My )+Conc_F*(c1o1+c9o2*( vx2 )*( vx2 )-cu_sq)); + (D27F.f[d0M0])[ks ] = c2o27* (c3o1*( -My )+Conc_F*(c1o1+c9o2*( -vx2 )*( -vx2 )-cu_sq)); + (D27F.f[d00P])[kzero] = c2o27* (c3o1*( Mz)+Conc_F*(c1o1+c9o2*( vx3)*( vx3)-cu_sq)); + (D27F.f[d00M])[kb ] = c2o27* (c3o1*( -Mz)+Conc_F*(c1o1+c9o2*( -vx3)*( -vx3)-cu_sq)); + (D27F.f[dPP0])[kzero] = c1o54* (c3o1*( Mx +My )+Conc_F*(c1o1+c9o2*( vx1+vx2 )*( vx1+vx2 )-cu_sq)); + (D27F.f[dMM0])[ksw ] = c1o54* (c3o1*(-Mx -My )+Conc_F*(c1o1+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq)); + (D27F.f[dPM0])[ks ] = c1o54* (c3o1*( Mx -My )+Conc_F*(c1o1+c9o2*( vx1-vx2 )*( vx1-vx2 )-cu_sq)); + (D27F.f[dMP0])[kw ] = c1o54* (c3o1*(-Mx +My )+Conc_F*(c1o1+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq)); + (D27F.f[dP0P])[kzero] = c1o54* (c3o1*( Mx +Mz)+Conc_F*(c1o1+c9o2*( vx1 +vx3)*( vx1 +vx3)-cu_sq)); + (D27F.f[dM0M])[kbw ] = c1o54* (c3o1*(-Mx -Mz)+Conc_F*(c1o1+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq)); + (D27F.f[dP0M])[kb ] = c1o54* (c3o1*( Mx -Mz)+Conc_F*(c1o1+c9o2*( vx1 -vx3)*( vx1 -vx3)-cu_sq)); + (D27F.f[dM0P])[kw ] = c1o54* (c3o1*(-Mx +Mz)+Conc_F*(c1o1+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq)); + (D27F.f[d0PP])[kzero] = c1o54* (c3o1*( My +Mz)+Conc_F*(c1o1+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq)); + (D27F.f[d0MM])[kbs ] = c1o54* (c3o1*( -My -Mz)+Conc_F*(c1o1+c9o2*( -vx2-vx3)*( -vx2-vx3)-cu_sq)); + (D27F.f[d0PM])[kb ] = c1o54* (c3o1*( My -Mz)+Conc_F*(c1o1+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq)); + (D27F.f[d0MP])[ks ] = c1o54* (c3o1*( -My +Mz)+Conc_F*(c1o1+c9o2*( -vx2+vx3)*( -vx2+vx3)-cu_sq)); + (D27F.f[dPPP])[kzero] = c1o216*(c3o1*( Mx +My +Mz)+Conc_F*(c1o1+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq)); + (D27F.f[dMMM])[kbsw ] = c1o216*(c3o1*(-Mx -My -Mz)+Conc_F*(c1o1+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq)); + (D27F.f[dPPM])[kb ] = c1o216*(c3o1*( Mx +My -Mz)+Conc_F*(c1o1+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq)); + (D27F.f[dMMP])[ksw ] = c1o216*(c3o1*(-Mx -My +Mz)+Conc_F*(c1o1+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq)); + (D27F.f[dPMP])[ks ] = c1o216*(c3o1*( Mx -My +Mz)+Conc_F*(c1o1+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq)); + (D27F.f[dMPM])[kbw ] = c1o216*(c3o1*(-Mx +My -Mz)+Conc_F*(c1o1+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq)); + (D27F.f[dPMM])[kbs ] = c1o216*(c3o1*( Mx -My -Mz)+Conc_F*(c1o1+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq)); + (D27F.f[dMPP])[kw ] = c1o216*(c3o1*(-Mx +My +Mz)+Conc_F*(c1o1+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq)); @@ -46811,33 +46811,33 @@ __global__ void scaleCFThS27( real* DC, cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3); - (D27F.f[DIR_000])[kzero] = c8o27* Conc_F*(c1o1-cu_sq); - (D27F.f[DIR_P00])[kzero] = c2o27* (c3o1*( Mx )+Conc_F*(c1o1+c9o2*( vx1 )*( vx1 )-cu_sq)); - (D27F.f[DIR_M00])[kw ] = c2o27* (c3o1*(-Mx )+Conc_F*(c1o1+c9o2*(-vx1 )*(-vx1 )-cu_sq)); - (D27F.f[DIR_0P0])[kzero] = c2o27* (c3o1*( My )+Conc_F*(c1o1+c9o2*( vx2 )*( vx2 )-cu_sq)); - (D27F.f[DIR_0M0])[ks ] = c2o27* (c3o1*( -My )+Conc_F*(c1o1+c9o2*( -vx2 )*( -vx2 )-cu_sq)); - (D27F.f[DIR_00P])[kzero] = c2o27* (c3o1*( Mz)+Conc_F*(c1o1+c9o2*( vx3)*( vx3)-cu_sq)); - (D27F.f[DIR_00M])[kb ] = c2o27* (c3o1*( -Mz)+Conc_F*(c1o1+c9o2*( -vx3)*( -vx3)-cu_sq)); - (D27F.f[DIR_PP0])[kzero] = c1o54* (c3o1*( Mx +My )+Conc_F*(c1o1+c9o2*( vx1+vx2 )*( vx1+vx2 )-cu_sq)); - (D27F.f[DIR_MM0])[ksw ] = c1o54* (c3o1*(-Mx -My )+Conc_F*(c1o1+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq)); - (D27F.f[DIR_PM0])[ks ] = c1o54* (c3o1*( Mx -My )+Conc_F*(c1o1+c9o2*( vx1-vx2 )*( vx1-vx2 )-cu_sq)); - (D27F.f[DIR_MP0])[kw ] = c1o54* (c3o1*(-Mx +My )+Conc_F*(c1o1+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq)); - (D27F.f[DIR_P0P])[kzero] = c1o54* (c3o1*( Mx +Mz)+Conc_F*(c1o1+c9o2*( vx1 +vx3)*( vx1 +vx3)-cu_sq)); - (D27F.f[DIR_M0M])[kbw ] = c1o54* (c3o1*(-Mx -Mz)+Conc_F*(c1o1+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq)); - (D27F.f[DIR_P0M])[kb ] = c1o54* (c3o1*( Mx -Mz)+Conc_F*(c1o1+c9o2*( vx1 -vx3)*( vx1 -vx3)-cu_sq)); - (D27F.f[DIR_M0P])[kw ] = c1o54* (c3o1*(-Mx +Mz)+Conc_F*(c1o1+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq)); - (D27F.f[DIR_0PP])[kzero] = c1o54* (c3o1*( My +Mz)+Conc_F*(c1o1+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq)); - (D27F.f[DIR_0MM])[kbs ] = c1o54* (c3o1*( -My -Mz)+Conc_F*(c1o1+c9o2*( -vx2-vx3)*( -vx2-vx3)-cu_sq)); - (D27F.f[DIR_0PM])[kb ] = c1o54* (c3o1*( My -Mz)+Conc_F*(c1o1+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq)); - (D27F.f[DIR_0MP])[ks ] = c1o54* (c3o1*( -My +Mz)+Conc_F*(c1o1+c9o2*( -vx2+vx3)*( -vx2+vx3)-cu_sq)); - (D27F.f[DIR_PPP])[kzero] = c1o216*(c3o1*( Mx +My +Mz)+Conc_F*(c1o1+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq)); - (D27F.f[DIR_MMM])[kbsw ] = c1o216*(c3o1*(-Mx -My -Mz)+Conc_F*(c1o1+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq)); - (D27F.f[DIR_PPM])[kb ] = c1o216*(c3o1*( Mx +My -Mz)+Conc_F*(c1o1+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq)); - (D27F.f[DIR_MMP])[ksw ] = c1o216*(c3o1*(-Mx -My +Mz)+Conc_F*(c1o1+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq)); - (D27F.f[DIR_PMP])[ks ] = c1o216*(c3o1*( Mx -My +Mz)+Conc_F*(c1o1+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq)); - (D27F.f[DIR_MPM])[kbw ] = c1o216*(c3o1*(-Mx +My -Mz)+Conc_F*(c1o1+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq)); - (D27F.f[DIR_PMM])[kbs ] = c1o216*(c3o1*( Mx -My -Mz)+Conc_F*(c1o1+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq)); - (D27F.f[DIR_MPP])[kw ] = c1o216*(c3o1*(-Mx +My +Mz)+Conc_F*(c1o1+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq)); + (D27F.f[d000])[kzero] = c8o27* Conc_F*(c1o1-cu_sq); + (D27F.f[dP00])[kzero] = c2o27* (c3o1*( Mx )+Conc_F*(c1o1+c9o2*( vx1 )*( vx1 )-cu_sq)); + (D27F.f[dM00])[kw ] = c2o27* (c3o1*(-Mx )+Conc_F*(c1o1+c9o2*(-vx1 )*(-vx1 )-cu_sq)); + (D27F.f[d0P0])[kzero] = c2o27* (c3o1*( My )+Conc_F*(c1o1+c9o2*( vx2 )*( vx2 )-cu_sq)); + (D27F.f[d0M0])[ks ] = c2o27* (c3o1*( -My )+Conc_F*(c1o1+c9o2*( -vx2 )*( -vx2 )-cu_sq)); + (D27F.f[d00P])[kzero] = c2o27* (c3o1*( Mz)+Conc_F*(c1o1+c9o2*( vx3)*( vx3)-cu_sq)); + (D27F.f[d00M])[kb ] = c2o27* (c3o1*( -Mz)+Conc_F*(c1o1+c9o2*( -vx3)*( -vx3)-cu_sq)); + (D27F.f[dPP0])[kzero] = c1o54* (c3o1*( Mx +My )+Conc_F*(c1o1+c9o2*( vx1+vx2 )*( vx1+vx2 )-cu_sq)); + (D27F.f[dMM0])[ksw ] = c1o54* (c3o1*(-Mx -My )+Conc_F*(c1o1+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq)); + (D27F.f[dPM0])[ks ] = c1o54* (c3o1*( Mx -My )+Conc_F*(c1o1+c9o2*( vx1-vx2 )*( vx1-vx2 )-cu_sq)); + (D27F.f[dMP0])[kw ] = c1o54* (c3o1*(-Mx +My )+Conc_F*(c1o1+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq)); + (D27F.f[dP0P])[kzero] = c1o54* (c3o1*( Mx +Mz)+Conc_F*(c1o1+c9o2*( vx1 +vx3)*( vx1 +vx3)-cu_sq)); + (D27F.f[dM0M])[kbw ] = c1o54* (c3o1*(-Mx -Mz)+Conc_F*(c1o1+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq)); + (D27F.f[dP0M])[kb ] = c1o54* (c3o1*( Mx -Mz)+Conc_F*(c1o1+c9o2*( vx1 -vx3)*( vx1 -vx3)-cu_sq)); + (D27F.f[dM0P])[kw ] = c1o54* (c3o1*(-Mx +Mz)+Conc_F*(c1o1+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq)); + (D27F.f[d0PP])[kzero] = c1o54* (c3o1*( My +Mz)+Conc_F*(c1o1+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq)); + (D27F.f[d0MM])[kbs ] = c1o54* (c3o1*( -My -Mz)+Conc_F*(c1o1+c9o2*( -vx2-vx3)*( -vx2-vx3)-cu_sq)); + (D27F.f[d0PM])[kb ] = c1o54* (c3o1*( My -Mz)+Conc_F*(c1o1+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq)); + (D27F.f[d0MP])[ks ] = c1o54* (c3o1*( -My +Mz)+Conc_F*(c1o1+c9o2*( -vx2+vx3)*( -vx2+vx3)-cu_sq)); + (D27F.f[dPPP])[kzero] = c1o216*(c3o1*( Mx +My +Mz)+Conc_F*(c1o1+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq)); + (D27F.f[dMMM])[kbsw ] = c1o216*(c3o1*(-Mx -My -Mz)+Conc_F*(c1o1+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq)); + (D27F.f[dPPM])[kb ] = c1o216*(c3o1*( Mx +My -Mz)+Conc_F*(c1o1+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq)); + (D27F.f[dMMP])[ksw ] = c1o216*(c3o1*(-Mx -My +Mz)+Conc_F*(c1o1+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq)); + (D27F.f[dPMP])[ks ] = c1o216*(c3o1*( Mx -My +Mz)+Conc_F*(c1o1+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq)); + (D27F.f[dMPM])[kbw ] = c1o216*(c3o1*(-Mx +My -Mz)+Conc_F*(c1o1+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq)); + (D27F.f[dPMM])[kbs ] = c1o216*(c3o1*( Mx -My -Mz)+Conc_F*(c1o1+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq)); + (D27F.f[dMPP])[kw ] = c1o216*(c3o1*(-Mx +My +Mz)+Conc_F*(c1o1+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq)); @@ -46889,33 +46889,33 @@ __global__ void scaleCFThS27( real* DC, cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3); - (D27F.f[DIR_000])[kzero] = c8o27* Conc_F*(c1o1-cu_sq); - (D27F.f[DIR_P00])[kzero] = c2o27* (c3o1*( Mx )+Conc_F*(c1o1+c9o2*( vx1 )*( vx1 )-cu_sq)); - (D27F.f[DIR_M00])[kw ] = c2o27* (c3o1*(-Mx )+Conc_F*(c1o1+c9o2*(-vx1 )*(-vx1 )-cu_sq)); - (D27F.f[DIR_0P0])[kzero] = c2o27* (c3o1*( My )+Conc_F*(c1o1+c9o2*( vx2 )*( vx2 )-cu_sq)); - (D27F.f[DIR_0M0])[ks ] = c2o27* (c3o1*( -My )+Conc_F*(c1o1+c9o2*( -vx2 )*( -vx2 )-cu_sq)); - (D27F.f[DIR_00P])[kzero] = c2o27* (c3o1*( Mz)+Conc_F*(c1o1+c9o2*( vx3)*( vx3)-cu_sq)); - (D27F.f[DIR_00M])[kb ] = c2o27* (c3o1*( -Mz)+Conc_F*(c1o1+c9o2*( -vx3)*( -vx3)-cu_sq)); - (D27F.f[DIR_PP0])[kzero] = c1o54* (c3o1*( Mx +My )+Conc_F*(c1o1+c9o2*( vx1+vx2 )*( vx1+vx2 )-cu_sq)); - (D27F.f[DIR_MM0])[ksw ] = c1o54* (c3o1*(-Mx -My )+Conc_F*(c1o1+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq)); - (D27F.f[DIR_PM0])[ks ] = c1o54* (c3o1*( Mx -My )+Conc_F*(c1o1+c9o2*( vx1-vx2 )*( vx1-vx2 )-cu_sq)); - (D27F.f[DIR_MP0])[kw ] = c1o54* (c3o1*(-Mx +My )+Conc_F*(c1o1+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq)); - (D27F.f[DIR_P0P])[kzero] = c1o54* (c3o1*( Mx +Mz)+Conc_F*(c1o1+c9o2*( vx1 +vx3)*( vx1 +vx3)-cu_sq)); - (D27F.f[DIR_M0M])[kbw ] = c1o54* (c3o1*(-Mx -Mz)+Conc_F*(c1o1+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq)); - (D27F.f[DIR_P0M])[kb ] = c1o54* (c3o1*( Mx -Mz)+Conc_F*(c1o1+c9o2*( vx1 -vx3)*( vx1 -vx3)-cu_sq)); - (D27F.f[DIR_M0P])[kw ] = c1o54* (c3o1*(-Mx +Mz)+Conc_F*(c1o1+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq)); - (D27F.f[DIR_0PP])[kzero] = c1o54* (c3o1*( My +Mz)+Conc_F*(c1o1+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq)); - (D27F.f[DIR_0MM])[kbs ] = c1o54* (c3o1*( -My -Mz)+Conc_F*(c1o1+c9o2*( -vx2-vx3)*( -vx2-vx3)-cu_sq)); - (D27F.f[DIR_0PM])[kb ] = c1o54* (c3o1*( My -Mz)+Conc_F*(c1o1+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq)); - (D27F.f[DIR_0MP])[ks ] = c1o54* (c3o1*( -My +Mz)+Conc_F*(c1o1+c9o2*( -vx2+vx3)*( -vx2+vx3)-cu_sq)); - (D27F.f[DIR_PPP])[kzero] = c1o216*(c3o1*( Mx +My +Mz)+Conc_F*(c1o1+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq)); - (D27F.f[DIR_MMM])[kbsw ] = c1o216*(c3o1*(-Mx -My -Mz)+Conc_F*(c1o1+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq)); - (D27F.f[DIR_PPM])[kb ] = c1o216*(c3o1*( Mx +My -Mz)+Conc_F*(c1o1+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq)); - (D27F.f[DIR_MMP])[ksw ] = c1o216*(c3o1*(-Mx -My +Mz)+Conc_F*(c1o1+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq)); - (D27F.f[DIR_PMP])[ks ] = c1o216*(c3o1*( Mx -My +Mz)+Conc_F*(c1o1+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq)); - (D27F.f[DIR_MPM])[kbw ] = c1o216*(c3o1*(-Mx +My -Mz)+Conc_F*(c1o1+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq)); - (D27F.f[DIR_PMM])[kbs ] = c1o216*(c3o1*( Mx -My -Mz)+Conc_F*(c1o1+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq)); - (D27F.f[DIR_MPP])[kw ] = c1o216*(c3o1*(-Mx +My +Mz)+Conc_F*(c1o1+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq)); + (D27F.f[d000])[kzero] = c8o27* Conc_F*(c1o1-cu_sq); + (D27F.f[dP00])[kzero] = c2o27* (c3o1*( Mx )+Conc_F*(c1o1+c9o2*( vx1 )*( vx1 )-cu_sq)); + (D27F.f[dM00])[kw ] = c2o27* (c3o1*(-Mx )+Conc_F*(c1o1+c9o2*(-vx1 )*(-vx1 )-cu_sq)); + (D27F.f[d0P0])[kzero] = c2o27* (c3o1*( My )+Conc_F*(c1o1+c9o2*( vx2 )*( vx2 )-cu_sq)); + (D27F.f[d0M0])[ks ] = c2o27* (c3o1*( -My )+Conc_F*(c1o1+c9o2*( -vx2 )*( -vx2 )-cu_sq)); + (D27F.f[d00P])[kzero] = c2o27* (c3o1*( Mz)+Conc_F*(c1o1+c9o2*( vx3)*( vx3)-cu_sq)); + (D27F.f[d00M])[kb ] = c2o27* (c3o1*( -Mz)+Conc_F*(c1o1+c9o2*( -vx3)*( -vx3)-cu_sq)); + (D27F.f[dPP0])[kzero] = c1o54* (c3o1*( Mx +My )+Conc_F*(c1o1+c9o2*( vx1+vx2 )*( vx1+vx2 )-cu_sq)); + (D27F.f[dMM0])[ksw ] = c1o54* (c3o1*(-Mx -My )+Conc_F*(c1o1+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq)); + (D27F.f[dPM0])[ks ] = c1o54* (c3o1*( Mx -My )+Conc_F*(c1o1+c9o2*( vx1-vx2 )*( vx1-vx2 )-cu_sq)); + (D27F.f[dMP0])[kw ] = c1o54* (c3o1*(-Mx +My )+Conc_F*(c1o1+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq)); + (D27F.f[dP0P])[kzero] = c1o54* (c3o1*( Mx +Mz)+Conc_F*(c1o1+c9o2*( vx1 +vx3)*( vx1 +vx3)-cu_sq)); + (D27F.f[dM0M])[kbw ] = c1o54* (c3o1*(-Mx -Mz)+Conc_F*(c1o1+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq)); + (D27F.f[dP0M])[kb ] = c1o54* (c3o1*( Mx -Mz)+Conc_F*(c1o1+c9o2*( vx1 -vx3)*( vx1 -vx3)-cu_sq)); + (D27F.f[dM0P])[kw ] = c1o54* (c3o1*(-Mx +Mz)+Conc_F*(c1o1+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq)); + (D27F.f[d0PP])[kzero] = c1o54* (c3o1*( My +Mz)+Conc_F*(c1o1+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq)); + (D27F.f[d0MM])[kbs ] = c1o54* (c3o1*( -My -Mz)+Conc_F*(c1o1+c9o2*( -vx2-vx3)*( -vx2-vx3)-cu_sq)); + (D27F.f[d0PM])[kb ] = c1o54* (c3o1*( My -Mz)+Conc_F*(c1o1+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq)); + (D27F.f[d0MP])[ks ] = c1o54* (c3o1*( -My +Mz)+Conc_F*(c1o1+c9o2*( -vx2+vx3)*( -vx2+vx3)-cu_sq)); + (D27F.f[dPPP])[kzero] = c1o216*(c3o1*( Mx +My +Mz)+Conc_F*(c1o1+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq)); + (D27F.f[dMMM])[kbsw ] = c1o216*(c3o1*(-Mx -My -Mz)+Conc_F*(c1o1+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq)); + (D27F.f[dPPM])[kb ] = c1o216*(c3o1*( Mx +My -Mz)+Conc_F*(c1o1+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq)); + (D27F.f[dMMP])[ksw ] = c1o216*(c3o1*(-Mx -My +Mz)+Conc_F*(c1o1+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq)); + (D27F.f[dPMP])[ks ] = c1o216*(c3o1*( Mx -My +Mz)+Conc_F*(c1o1+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq)); + (D27F.f[dMPM])[kbw ] = c1o216*(c3o1*(-Mx +My -Mz)+Conc_F*(c1o1+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq)); + (D27F.f[dPMM])[kbs ] = c1o216*(c3o1*( Mx -My -Mz)+Conc_F*(c1o1+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq)); + (D27F.f[dMPP])[kw ] = c1o216*(c3o1*(-Mx +My +Mz)+Conc_F*(c1o1+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq)); @@ -46977,33 +46977,33 @@ __global__ void scaleCFThS27( real* DC, cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3); - (D27F.f[DIR_000])[kzero] = c8o27* Conc_F*(c1o1-cu_sq); - (D27F.f[DIR_P00])[kzero] = c2o27* (c3o1*( Mx )+Conc_F*(c1o1+c9o2*( vx1 )*( vx1 )-cu_sq)); - (D27F.f[DIR_M00])[kw ] = c2o27* (c3o1*(-Mx )+Conc_F*(c1o1+c9o2*(-vx1 )*(-vx1 )-cu_sq)); - (D27F.f[DIR_0P0])[kzero] = c2o27* (c3o1*( My )+Conc_F*(c1o1+c9o2*( vx2 )*( vx2 )-cu_sq)); - (D27F.f[DIR_0M0])[ks ] = c2o27* (c3o1*( -My )+Conc_F*(c1o1+c9o2*( -vx2 )*( -vx2 )-cu_sq)); - (D27F.f[DIR_00P])[kzero] = c2o27* (c3o1*( Mz)+Conc_F*(c1o1+c9o2*( vx3)*( vx3)-cu_sq)); - (D27F.f[DIR_00M])[kb ] = c2o27* (c3o1*( -Mz)+Conc_F*(c1o1+c9o2*( -vx3)*( -vx3)-cu_sq)); - (D27F.f[DIR_PP0])[kzero] = c1o54* (c3o1*( Mx +My )+Conc_F*(c1o1+c9o2*( vx1+vx2 )*( vx1+vx2 )-cu_sq)); - (D27F.f[DIR_MM0])[ksw ] = c1o54* (c3o1*(-Mx -My )+Conc_F*(c1o1+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq)); - (D27F.f[DIR_PM0])[ks ] = c1o54* (c3o1*( Mx -My )+Conc_F*(c1o1+c9o2*( vx1-vx2 )*( vx1-vx2 )-cu_sq)); - (D27F.f[DIR_MP0])[kw ] = c1o54* (c3o1*(-Mx +My )+Conc_F*(c1o1+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq)); - (D27F.f[DIR_P0P])[kzero] = c1o54* (c3o1*( Mx +Mz)+Conc_F*(c1o1+c9o2*( vx1 +vx3)*( vx1 +vx3)-cu_sq)); - (D27F.f[DIR_M0M])[kbw ] = c1o54* (c3o1*(-Mx -Mz)+Conc_F*(c1o1+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq)); - (D27F.f[DIR_P0M])[kb ] = c1o54* (c3o1*( Mx -Mz)+Conc_F*(c1o1+c9o2*( vx1 -vx3)*( vx1 -vx3)-cu_sq)); - (D27F.f[DIR_M0P])[kw ] = c1o54* (c3o1*(-Mx +Mz)+Conc_F*(c1o1+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq)); - (D27F.f[DIR_0PP])[kzero] = c1o54* (c3o1*( My +Mz)+Conc_F*(c1o1+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq)); - (D27F.f[DIR_0MM])[kbs ] = c1o54* (c3o1*( -My -Mz)+Conc_F*(c1o1+c9o2*( -vx2-vx3)*( -vx2-vx3)-cu_sq)); - (D27F.f[DIR_0PM])[kb ] = c1o54* (c3o1*( My -Mz)+Conc_F*(c1o1+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq)); - (D27F.f[DIR_0MP])[ks ] = c1o54* (c3o1*( -My +Mz)+Conc_F*(c1o1+c9o2*( -vx2+vx3)*( -vx2+vx3)-cu_sq)); - (D27F.f[DIR_PPP])[kzero] = c1o216*(c3o1*( Mx +My +Mz)+Conc_F*(c1o1+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq)); - (D27F.f[DIR_MMM])[kbsw ] = c1o216*(c3o1*(-Mx -My -Mz)+Conc_F*(c1o1+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq)); - (D27F.f[DIR_PPM])[kb ] = c1o216*(c3o1*( Mx +My -Mz)+Conc_F*(c1o1+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq)); - (D27F.f[DIR_MMP])[ksw ] = c1o216*(c3o1*(-Mx -My +Mz)+Conc_F*(c1o1+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq)); - (D27F.f[DIR_PMP])[ks ] = c1o216*(c3o1*( Mx -My +Mz)+Conc_F*(c1o1+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq)); - (D27F.f[DIR_MPM])[kbw ] = c1o216*(c3o1*(-Mx +My -Mz)+Conc_F*(c1o1+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq)); - (D27F.f[DIR_PMM])[kbs ] = c1o216*(c3o1*( Mx -My -Mz)+Conc_F*(c1o1+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq)); - (D27F.f[DIR_MPP])[kw ] = c1o216*(c3o1*(-Mx +My +Mz)+Conc_F*(c1o1+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq)); + (D27F.f[d000])[kzero] = c8o27* Conc_F*(c1o1-cu_sq); + (D27F.f[dP00])[kzero] = c2o27* (c3o1*( Mx )+Conc_F*(c1o1+c9o2*( vx1 )*( vx1 )-cu_sq)); + (D27F.f[dM00])[kw ] = c2o27* (c3o1*(-Mx )+Conc_F*(c1o1+c9o2*(-vx1 )*(-vx1 )-cu_sq)); + (D27F.f[d0P0])[kzero] = c2o27* (c3o1*( My )+Conc_F*(c1o1+c9o2*( vx2 )*( vx2 )-cu_sq)); + (D27F.f[d0M0])[ks ] = c2o27* (c3o1*( -My )+Conc_F*(c1o1+c9o2*( -vx2 )*( -vx2 )-cu_sq)); + (D27F.f[d00P])[kzero] = c2o27* (c3o1*( Mz)+Conc_F*(c1o1+c9o2*( vx3)*( vx3)-cu_sq)); + (D27F.f[d00M])[kb ] = c2o27* (c3o1*( -Mz)+Conc_F*(c1o1+c9o2*( -vx3)*( -vx3)-cu_sq)); + (D27F.f[dPP0])[kzero] = c1o54* (c3o1*( Mx +My )+Conc_F*(c1o1+c9o2*( vx1+vx2 )*( vx1+vx2 )-cu_sq)); + (D27F.f[dMM0])[ksw ] = c1o54* (c3o1*(-Mx -My )+Conc_F*(c1o1+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq)); + (D27F.f[dPM0])[ks ] = c1o54* (c3o1*( Mx -My )+Conc_F*(c1o1+c9o2*( vx1-vx2 )*( vx1-vx2 )-cu_sq)); + (D27F.f[dMP0])[kw ] = c1o54* (c3o1*(-Mx +My )+Conc_F*(c1o1+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq)); + (D27F.f[dP0P])[kzero] = c1o54* (c3o1*( Mx +Mz)+Conc_F*(c1o1+c9o2*( vx1 +vx3)*( vx1 +vx3)-cu_sq)); + (D27F.f[dM0M])[kbw ] = c1o54* (c3o1*(-Mx -Mz)+Conc_F*(c1o1+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq)); + (D27F.f[dP0M])[kb ] = c1o54* (c3o1*( Mx -Mz)+Conc_F*(c1o1+c9o2*( vx1 -vx3)*( vx1 -vx3)-cu_sq)); + (D27F.f[dM0P])[kw ] = c1o54* (c3o1*(-Mx +Mz)+Conc_F*(c1o1+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq)); + (D27F.f[d0PP])[kzero] = c1o54* (c3o1*( My +Mz)+Conc_F*(c1o1+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq)); + (D27F.f[d0MM])[kbs ] = c1o54* (c3o1*( -My -Mz)+Conc_F*(c1o1+c9o2*( -vx2-vx3)*( -vx2-vx3)-cu_sq)); + (D27F.f[d0PM])[kb ] = c1o54* (c3o1*( My -Mz)+Conc_F*(c1o1+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq)); + (D27F.f[d0MP])[ks ] = c1o54* (c3o1*( -My +Mz)+Conc_F*(c1o1+c9o2*( -vx2+vx3)*( -vx2+vx3)-cu_sq)); + (D27F.f[dPPP])[kzero] = c1o216*(c3o1*( Mx +My +Mz)+Conc_F*(c1o1+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq)); + (D27F.f[dMMM])[kbsw ] = c1o216*(c3o1*(-Mx -My -Mz)+Conc_F*(c1o1+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq)); + (D27F.f[dPPM])[kb ] = c1o216*(c3o1*( Mx +My -Mz)+Conc_F*(c1o1+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq)); + (D27F.f[dMMP])[ksw ] = c1o216*(c3o1*(-Mx -My +Mz)+Conc_F*(c1o1+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq)); + (D27F.f[dPMP])[ks ] = c1o216*(c3o1*( Mx -My +Mz)+Conc_F*(c1o1+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq)); + (D27F.f[dMPM])[kbw ] = c1o216*(c3o1*(-Mx +My -Mz)+Conc_F*(c1o1+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq)); + (D27F.f[dPMM])[kbs ] = c1o216*(c3o1*( Mx -My -Mz)+Conc_F*(c1o1+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq)); + (D27F.f[dMPP])[kw ] = c1o216*(c3o1*(-Mx +My +Mz)+Conc_F*(c1o1+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq)); @@ -47055,33 +47055,33 @@ __global__ void scaleCFThS27( real* DC, cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3); - (D27F.f[DIR_000])[kzero] = c8o27* Conc_F*(c1o1-cu_sq); - (D27F.f[DIR_P00])[kzero] = c2o27* (c3o1*( Mx )+Conc_F*(c1o1+c9o2*( vx1 )*( vx1 )-cu_sq)); - (D27F.f[DIR_M00])[kw ] = c2o27* (c3o1*(-Mx )+Conc_F*(c1o1+c9o2*(-vx1 )*(-vx1 )-cu_sq)); - (D27F.f[DIR_0P0])[kzero] = c2o27* (c3o1*( My )+Conc_F*(c1o1+c9o2*( vx2 )*( vx2 )-cu_sq)); - (D27F.f[DIR_0M0])[ks ] = c2o27* (c3o1*( -My )+Conc_F*(c1o1+c9o2*( -vx2 )*( -vx2 )-cu_sq)); - (D27F.f[DIR_00P])[kzero] = c2o27* (c3o1*( Mz)+Conc_F*(c1o1+c9o2*( vx3)*( vx3)-cu_sq)); - (D27F.f[DIR_00M])[kb ] = c2o27* (c3o1*( -Mz)+Conc_F*(c1o1+c9o2*( -vx3)*( -vx3)-cu_sq)); - (D27F.f[DIR_PP0])[kzero] = c1o54* (c3o1*( Mx +My )+Conc_F*(c1o1+c9o2*( vx1+vx2 )*( vx1+vx2 )-cu_sq)); - (D27F.f[DIR_MM0])[ksw ] = c1o54* (c3o1*(-Mx -My )+Conc_F*(c1o1+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq)); - (D27F.f[DIR_PM0])[ks ] = c1o54* (c3o1*( Mx -My )+Conc_F*(c1o1+c9o2*( vx1-vx2 )*( vx1-vx2 )-cu_sq)); - (D27F.f[DIR_MP0])[kw ] = c1o54* (c3o1*(-Mx +My )+Conc_F*(c1o1+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq)); - (D27F.f[DIR_P0P])[kzero] = c1o54* (c3o1*( Mx +Mz)+Conc_F*(c1o1+c9o2*( vx1 +vx3)*( vx1 +vx3)-cu_sq)); - (D27F.f[DIR_M0M])[kbw ] = c1o54* (c3o1*(-Mx -Mz)+Conc_F*(c1o1+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq)); - (D27F.f[DIR_P0M])[kb ] = c1o54* (c3o1*( Mx -Mz)+Conc_F*(c1o1+c9o2*( vx1 -vx3)*( vx1 -vx3)-cu_sq)); - (D27F.f[DIR_M0P])[kw ] = c1o54* (c3o1*(-Mx +Mz)+Conc_F*(c1o1+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq)); - (D27F.f[DIR_0PP])[kzero] = c1o54* (c3o1*( My +Mz)+Conc_F*(c1o1+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq)); - (D27F.f[DIR_0MM])[kbs ] = c1o54* (c3o1*( -My -Mz)+Conc_F*(c1o1+c9o2*( -vx2-vx3)*( -vx2-vx3)-cu_sq)); - (D27F.f[DIR_0PM])[kb ] = c1o54* (c3o1*( My -Mz)+Conc_F*(c1o1+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq)); - (D27F.f[DIR_0MP])[ks ] = c1o54* (c3o1*( -My +Mz)+Conc_F*(c1o1+c9o2*( -vx2+vx3)*( -vx2+vx3)-cu_sq)); - (D27F.f[DIR_PPP])[kzero] = c1o216*(c3o1*( Mx +My +Mz)+Conc_F*(c1o1+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq)); - (D27F.f[DIR_MMM])[kbsw ] = c1o216*(c3o1*(-Mx -My -Mz)+Conc_F*(c1o1+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq)); - (D27F.f[DIR_PPM])[kb ] = c1o216*(c3o1*( Mx +My -Mz)+Conc_F*(c1o1+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq)); - (D27F.f[DIR_MMP])[ksw ] = c1o216*(c3o1*(-Mx -My +Mz)+Conc_F*(c1o1+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq)); - (D27F.f[DIR_PMP])[ks ] = c1o216*(c3o1*( Mx -My +Mz)+Conc_F*(c1o1+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq)); - (D27F.f[DIR_MPM])[kbw ] = c1o216*(c3o1*(-Mx +My -Mz)+Conc_F*(c1o1+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq)); - (D27F.f[DIR_PMM])[kbs ] = c1o216*(c3o1*( Mx -My -Mz)+Conc_F*(c1o1+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq)); - (D27F.f[DIR_MPP])[kw ] = c1o216*(c3o1*(-Mx +My +Mz)+Conc_F*(c1o1+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq)); + (D27F.f[d000])[kzero] = c8o27* Conc_F*(c1o1-cu_sq); + (D27F.f[dP00])[kzero] = c2o27* (c3o1*( Mx )+Conc_F*(c1o1+c9o2*( vx1 )*( vx1 )-cu_sq)); + (D27F.f[dM00])[kw ] = c2o27* (c3o1*(-Mx )+Conc_F*(c1o1+c9o2*(-vx1 )*(-vx1 )-cu_sq)); + (D27F.f[d0P0])[kzero] = c2o27* (c3o1*( My )+Conc_F*(c1o1+c9o2*( vx2 )*( vx2 )-cu_sq)); + (D27F.f[d0M0])[ks ] = c2o27* (c3o1*( -My )+Conc_F*(c1o1+c9o2*( -vx2 )*( -vx2 )-cu_sq)); + (D27F.f[d00P])[kzero] = c2o27* (c3o1*( Mz)+Conc_F*(c1o1+c9o2*( vx3)*( vx3)-cu_sq)); + (D27F.f[d00M])[kb ] = c2o27* (c3o1*( -Mz)+Conc_F*(c1o1+c9o2*( -vx3)*( -vx3)-cu_sq)); + (D27F.f[dPP0])[kzero] = c1o54* (c3o1*( Mx +My )+Conc_F*(c1o1+c9o2*( vx1+vx2 )*( vx1+vx2 )-cu_sq)); + (D27F.f[dMM0])[ksw ] = c1o54* (c3o1*(-Mx -My )+Conc_F*(c1o1+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq)); + (D27F.f[dPM0])[ks ] = c1o54* (c3o1*( Mx -My )+Conc_F*(c1o1+c9o2*( vx1-vx2 )*( vx1-vx2 )-cu_sq)); + (D27F.f[dMP0])[kw ] = c1o54* (c3o1*(-Mx +My )+Conc_F*(c1o1+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq)); + (D27F.f[dP0P])[kzero] = c1o54* (c3o1*( Mx +Mz)+Conc_F*(c1o1+c9o2*( vx1 +vx3)*( vx1 +vx3)-cu_sq)); + (D27F.f[dM0M])[kbw ] = c1o54* (c3o1*(-Mx -Mz)+Conc_F*(c1o1+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq)); + (D27F.f[dP0M])[kb ] = c1o54* (c3o1*( Mx -Mz)+Conc_F*(c1o1+c9o2*( vx1 -vx3)*( vx1 -vx3)-cu_sq)); + (D27F.f[dM0P])[kw ] = c1o54* (c3o1*(-Mx +Mz)+Conc_F*(c1o1+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq)); + (D27F.f[d0PP])[kzero] = c1o54* (c3o1*( My +Mz)+Conc_F*(c1o1+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq)); + (D27F.f[d0MM])[kbs ] = c1o54* (c3o1*( -My -Mz)+Conc_F*(c1o1+c9o2*( -vx2-vx3)*( -vx2-vx3)-cu_sq)); + (D27F.f[d0PM])[kb ] = c1o54* (c3o1*( My -Mz)+Conc_F*(c1o1+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq)); + (D27F.f[d0MP])[ks ] = c1o54* (c3o1*( -My +Mz)+Conc_F*(c1o1+c9o2*( -vx2+vx3)*( -vx2+vx3)-cu_sq)); + (D27F.f[dPPP])[kzero] = c1o216*(c3o1*( Mx +My +Mz)+Conc_F*(c1o1+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq)); + (D27F.f[dMMM])[kbsw ] = c1o216*(c3o1*(-Mx -My -Mz)+Conc_F*(c1o1+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq)); + (D27F.f[dPPM])[kb ] = c1o216*(c3o1*( Mx +My -Mz)+Conc_F*(c1o1+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq)); + (D27F.f[dMMP])[ksw ] = c1o216*(c3o1*(-Mx -My +Mz)+Conc_F*(c1o1+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq)); + (D27F.f[dPMP])[ks ] = c1o216*(c3o1*( Mx -My +Mz)+Conc_F*(c1o1+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq)); + (D27F.f[dMPM])[kbw ] = c1o216*(c3o1*(-Mx +My -Mz)+Conc_F*(c1o1+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq)); + (D27F.f[dPMM])[kbs ] = c1o216*(c3o1*( Mx -My -Mz)+Conc_F*(c1o1+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq)); + (D27F.f[dMPP])[kw ] = c1o216*(c3o1*(-Mx +My +Mz)+Conc_F*(c1o1+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq)); @@ -47133,33 +47133,33 @@ __global__ void scaleCFThS27( real* DC, cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3); - (D27F.f[DIR_000])[kzero] = c8o27* Conc_F*(c1o1-cu_sq); - (D27F.f[DIR_P00])[kzero] = c2o27* (c3o1*( Mx )+Conc_F*(c1o1+c9o2*( vx1 )*( vx1 )-cu_sq)); - (D27F.f[DIR_M00])[kw ] = c2o27* (c3o1*(-Mx )+Conc_F*(c1o1+c9o2*(-vx1 )*(-vx1 )-cu_sq)); - (D27F.f[DIR_0P0])[kzero] = c2o27* (c3o1*( My )+Conc_F*(c1o1+c9o2*( vx2 )*( vx2 )-cu_sq)); - (D27F.f[DIR_0M0])[ks ] = c2o27* (c3o1*( -My )+Conc_F*(c1o1+c9o2*( -vx2 )*( -vx2 )-cu_sq)); - (D27F.f[DIR_00P])[kzero] = c2o27* (c3o1*( Mz)+Conc_F*(c1o1+c9o2*( vx3)*( vx3)-cu_sq)); - (D27F.f[DIR_00M])[kb ] = c2o27* (c3o1*( -Mz)+Conc_F*(c1o1+c9o2*( -vx3)*( -vx3)-cu_sq)); - (D27F.f[DIR_PP0])[kzero] = c1o54* (c3o1*( Mx +My )+Conc_F*(c1o1+c9o2*( vx1+vx2 )*( vx1+vx2 )-cu_sq)); - (D27F.f[DIR_MM0])[ksw ] = c1o54* (c3o1*(-Mx -My )+Conc_F*(c1o1+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq)); - (D27F.f[DIR_PM0])[ks ] = c1o54* (c3o1*( Mx -My )+Conc_F*(c1o1+c9o2*( vx1-vx2 )*( vx1-vx2 )-cu_sq)); - (D27F.f[DIR_MP0])[kw ] = c1o54* (c3o1*(-Mx +My )+Conc_F*(c1o1+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq)); - (D27F.f[DIR_P0P])[kzero] = c1o54* (c3o1*( Mx +Mz)+Conc_F*(c1o1+c9o2*( vx1 +vx3)*( vx1 +vx3)-cu_sq)); - (D27F.f[DIR_M0M])[kbw ] = c1o54* (c3o1*(-Mx -Mz)+Conc_F*(c1o1+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq)); - (D27F.f[DIR_P0M])[kb ] = c1o54* (c3o1*( Mx -Mz)+Conc_F*(c1o1+c9o2*( vx1 -vx3)*( vx1 -vx3)-cu_sq)); - (D27F.f[DIR_M0P])[kw ] = c1o54* (c3o1*(-Mx +Mz)+Conc_F*(c1o1+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq)); - (D27F.f[DIR_0PP])[kzero] = c1o54* (c3o1*( My +Mz)+Conc_F*(c1o1+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq)); - (D27F.f[DIR_0MM])[kbs ] = c1o54* (c3o1*( -My -Mz)+Conc_F*(c1o1+c9o2*( -vx2-vx3)*( -vx2-vx3)-cu_sq)); - (D27F.f[DIR_0PM])[kb ] = c1o54* (c3o1*( My -Mz)+Conc_F*(c1o1+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq)); - (D27F.f[DIR_0MP])[ks ] = c1o54* (c3o1*( -My +Mz)+Conc_F*(c1o1+c9o2*( -vx2+vx3)*( -vx2+vx3)-cu_sq)); - (D27F.f[DIR_PPP])[kzero] = c1o216*(c3o1*( Mx +My +Mz)+Conc_F*(c1o1+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq)); - (D27F.f[DIR_MMM])[kbsw ] = c1o216*(c3o1*(-Mx -My -Mz)+Conc_F*(c1o1+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq)); - (D27F.f[DIR_PPM])[kb ] = c1o216*(c3o1*( Mx +My -Mz)+Conc_F*(c1o1+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq)); - (D27F.f[DIR_MMP])[ksw ] = c1o216*(c3o1*(-Mx -My +Mz)+Conc_F*(c1o1+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq)); - (D27F.f[DIR_PMP])[ks ] = c1o216*(c3o1*( Mx -My +Mz)+Conc_F*(c1o1+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq)); - (D27F.f[DIR_MPM])[kbw ] = c1o216*(c3o1*(-Mx +My -Mz)+Conc_F*(c1o1+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq)); - (D27F.f[DIR_PMM])[kbs ] = c1o216*(c3o1*( Mx -My -Mz)+Conc_F*(c1o1+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq)); - (D27F.f[DIR_MPP])[kw ] = c1o216*(c3o1*(-Mx +My +Mz)+Conc_F*(c1o1+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq)); + (D27F.f[d000])[kzero] = c8o27* Conc_F*(c1o1-cu_sq); + (D27F.f[dP00])[kzero] = c2o27* (c3o1*( Mx )+Conc_F*(c1o1+c9o2*( vx1 )*( vx1 )-cu_sq)); + (D27F.f[dM00])[kw ] = c2o27* (c3o1*(-Mx )+Conc_F*(c1o1+c9o2*(-vx1 )*(-vx1 )-cu_sq)); + (D27F.f[d0P0])[kzero] = c2o27* (c3o1*( My )+Conc_F*(c1o1+c9o2*( vx2 )*( vx2 )-cu_sq)); + (D27F.f[d0M0])[ks ] = c2o27* (c3o1*( -My )+Conc_F*(c1o1+c9o2*( -vx2 )*( -vx2 )-cu_sq)); + (D27F.f[d00P])[kzero] = c2o27* (c3o1*( Mz)+Conc_F*(c1o1+c9o2*( vx3)*( vx3)-cu_sq)); + (D27F.f[d00M])[kb ] = c2o27* (c3o1*( -Mz)+Conc_F*(c1o1+c9o2*( -vx3)*( -vx3)-cu_sq)); + (D27F.f[dPP0])[kzero] = c1o54* (c3o1*( Mx +My )+Conc_F*(c1o1+c9o2*( vx1+vx2 )*( vx1+vx2 )-cu_sq)); + (D27F.f[dMM0])[ksw ] = c1o54* (c3o1*(-Mx -My )+Conc_F*(c1o1+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq)); + (D27F.f[dPM0])[ks ] = c1o54* (c3o1*( Mx -My )+Conc_F*(c1o1+c9o2*( vx1-vx2 )*( vx1-vx2 )-cu_sq)); + (D27F.f[dMP0])[kw ] = c1o54* (c3o1*(-Mx +My )+Conc_F*(c1o1+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq)); + (D27F.f[dP0P])[kzero] = c1o54* (c3o1*( Mx +Mz)+Conc_F*(c1o1+c9o2*( vx1 +vx3)*( vx1 +vx3)-cu_sq)); + (D27F.f[dM0M])[kbw ] = c1o54* (c3o1*(-Mx -Mz)+Conc_F*(c1o1+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq)); + (D27F.f[dP0M])[kb ] = c1o54* (c3o1*( Mx -Mz)+Conc_F*(c1o1+c9o2*( vx1 -vx3)*( vx1 -vx3)-cu_sq)); + (D27F.f[dM0P])[kw ] = c1o54* (c3o1*(-Mx +Mz)+Conc_F*(c1o1+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq)); + (D27F.f[d0PP])[kzero] = c1o54* (c3o1*( My +Mz)+Conc_F*(c1o1+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq)); + (D27F.f[d0MM])[kbs ] = c1o54* (c3o1*( -My -Mz)+Conc_F*(c1o1+c9o2*( -vx2-vx3)*( -vx2-vx3)-cu_sq)); + (D27F.f[d0PM])[kb ] = c1o54* (c3o1*( My -Mz)+Conc_F*(c1o1+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq)); + (D27F.f[d0MP])[ks ] = c1o54* (c3o1*( -My +Mz)+Conc_F*(c1o1+c9o2*( -vx2+vx3)*( -vx2+vx3)-cu_sq)); + (D27F.f[dPPP])[kzero] = c1o216*(c3o1*( Mx +My +Mz)+Conc_F*(c1o1+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq)); + (D27F.f[dMMM])[kbsw ] = c1o216*(c3o1*(-Mx -My -Mz)+Conc_F*(c1o1+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq)); + (D27F.f[dPPM])[kb ] = c1o216*(c3o1*( Mx +My -Mz)+Conc_F*(c1o1+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq)); + (D27F.f[dMMP])[ksw ] = c1o216*(c3o1*(-Mx -My +Mz)+Conc_F*(c1o1+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq)); + (D27F.f[dPMP])[ks ] = c1o216*(c3o1*( Mx -My +Mz)+Conc_F*(c1o1+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq)); + (D27F.f[dMPM])[kbw ] = c1o216*(c3o1*(-Mx +My -Mz)+Conc_F*(c1o1+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq)); + (D27F.f[dPMM])[kbs ] = c1o216*(c3o1*( Mx -My -Mz)+Conc_F*(c1o1+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq)); + (D27F.f[dMPP])[kw ] = c1o216*(c3o1*(-Mx +My +Mz)+Conc_F*(c1o1+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq)); @@ -47211,33 +47211,33 @@ __global__ void scaleCFThS27( real* DC, cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3); - (D27F.f[DIR_000])[kzero] = c8o27* Conc_F*(c1o1-cu_sq); - (D27F.f[DIR_P00])[kzero] = c2o27* (c3o1*( Mx )+Conc_F*(c1o1+c9o2*( vx1 )*( vx1 )-cu_sq)); - (D27F.f[DIR_M00])[kw ] = c2o27* (c3o1*(-Mx )+Conc_F*(c1o1+c9o2*(-vx1 )*(-vx1 )-cu_sq)); - (D27F.f[DIR_0P0])[kzero] = c2o27* (c3o1*( My )+Conc_F*(c1o1+c9o2*( vx2 )*( vx2 )-cu_sq)); - (D27F.f[DIR_0M0])[ks ] = c2o27* (c3o1*( -My )+Conc_F*(c1o1+c9o2*( -vx2 )*( -vx2 )-cu_sq)); - (D27F.f[DIR_00P])[kzero] = c2o27* (c3o1*( Mz)+Conc_F*(c1o1+c9o2*( vx3)*( vx3)-cu_sq)); - (D27F.f[DIR_00M])[kb ] = c2o27* (c3o1*( -Mz)+Conc_F*(c1o1+c9o2*( -vx3)*( -vx3)-cu_sq)); - (D27F.f[DIR_PP0])[kzero] = c1o54* (c3o1*( Mx +My )+Conc_F*(c1o1+c9o2*( vx1+vx2 )*( vx1+vx2 )-cu_sq)); - (D27F.f[DIR_MM0])[ksw ] = c1o54* (c3o1*(-Mx -My )+Conc_F*(c1o1+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq)); - (D27F.f[DIR_PM0])[ks ] = c1o54* (c3o1*( Mx -My )+Conc_F*(c1o1+c9o2*( vx1-vx2 )*( vx1-vx2 )-cu_sq)); - (D27F.f[DIR_MP0])[kw ] = c1o54* (c3o1*(-Mx +My )+Conc_F*(c1o1+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq)); - (D27F.f[DIR_P0P])[kzero] = c1o54* (c3o1*( Mx +Mz)+Conc_F*(c1o1+c9o2*( vx1 +vx3)*( vx1 +vx3)-cu_sq)); - (D27F.f[DIR_M0M])[kbw ] = c1o54* (c3o1*(-Mx -Mz)+Conc_F*(c1o1+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq)); - (D27F.f[DIR_P0M])[kb ] = c1o54* (c3o1*( Mx -Mz)+Conc_F*(c1o1+c9o2*( vx1 -vx3)*( vx1 -vx3)-cu_sq)); - (D27F.f[DIR_M0P])[kw ] = c1o54* (c3o1*(-Mx +Mz)+Conc_F*(c1o1+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq)); - (D27F.f[DIR_0PP])[kzero] = c1o54* (c3o1*( My +Mz)+Conc_F*(c1o1+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq)); - (D27F.f[DIR_0MM])[kbs ] = c1o54* (c3o1*( -My -Mz)+Conc_F*(c1o1+c9o2*( -vx2-vx3)*( -vx2-vx3)-cu_sq)); - (D27F.f[DIR_0PM])[kb ] = c1o54* (c3o1*( My -Mz)+Conc_F*(c1o1+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq)); - (D27F.f[DIR_0MP])[ks ] = c1o54* (c3o1*( -My +Mz)+Conc_F*(c1o1+c9o2*( -vx2+vx3)*( -vx2+vx3)-cu_sq)); - (D27F.f[DIR_PPP])[kzero] = c1o216*(c3o1*( Mx +My +Mz)+Conc_F*(c1o1+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq)); - (D27F.f[DIR_MMM])[kbsw ] = c1o216*(c3o1*(-Mx -My -Mz)+Conc_F*(c1o1+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq)); - (D27F.f[DIR_PPM])[kb ] = c1o216*(c3o1*( Mx +My -Mz)+Conc_F*(c1o1+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq)); - (D27F.f[DIR_MMP])[ksw ] = c1o216*(c3o1*(-Mx -My +Mz)+Conc_F*(c1o1+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq)); - (D27F.f[DIR_PMP])[ks ] = c1o216*(c3o1*( Mx -My +Mz)+Conc_F*(c1o1+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq)); - (D27F.f[DIR_MPM])[kbw ] = c1o216*(c3o1*(-Mx +My -Mz)+Conc_F*(c1o1+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq)); - (D27F.f[DIR_PMM])[kbs ] = c1o216*(c3o1*( Mx -My -Mz)+Conc_F*(c1o1+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq)); - (D27F.f[DIR_MPP])[kw ] = c1o216*(c3o1*(-Mx +My +Mz)+Conc_F*(c1o1+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq)); + (D27F.f[d000])[kzero] = c8o27* Conc_F*(c1o1-cu_sq); + (D27F.f[dP00])[kzero] = c2o27* (c3o1*( Mx )+Conc_F*(c1o1+c9o2*( vx1 )*( vx1 )-cu_sq)); + (D27F.f[dM00])[kw ] = c2o27* (c3o1*(-Mx )+Conc_F*(c1o1+c9o2*(-vx1 )*(-vx1 )-cu_sq)); + (D27F.f[d0P0])[kzero] = c2o27* (c3o1*( My )+Conc_F*(c1o1+c9o2*( vx2 )*( vx2 )-cu_sq)); + (D27F.f[d0M0])[ks ] = c2o27* (c3o1*( -My )+Conc_F*(c1o1+c9o2*( -vx2 )*( -vx2 )-cu_sq)); + (D27F.f[d00P])[kzero] = c2o27* (c3o1*( Mz)+Conc_F*(c1o1+c9o2*( vx3)*( vx3)-cu_sq)); + (D27F.f[d00M])[kb ] = c2o27* (c3o1*( -Mz)+Conc_F*(c1o1+c9o2*( -vx3)*( -vx3)-cu_sq)); + (D27F.f[dPP0])[kzero] = c1o54* (c3o1*( Mx +My )+Conc_F*(c1o1+c9o2*( vx1+vx2 )*( vx1+vx2 )-cu_sq)); + (D27F.f[dMM0])[ksw ] = c1o54* (c3o1*(-Mx -My )+Conc_F*(c1o1+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq)); + (D27F.f[dPM0])[ks ] = c1o54* (c3o1*( Mx -My )+Conc_F*(c1o1+c9o2*( vx1-vx2 )*( vx1-vx2 )-cu_sq)); + (D27F.f[dMP0])[kw ] = c1o54* (c3o1*(-Mx +My )+Conc_F*(c1o1+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq)); + (D27F.f[dP0P])[kzero] = c1o54* (c3o1*( Mx +Mz)+Conc_F*(c1o1+c9o2*( vx1 +vx3)*( vx1 +vx3)-cu_sq)); + (D27F.f[dM0M])[kbw ] = c1o54* (c3o1*(-Mx -Mz)+Conc_F*(c1o1+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq)); + (D27F.f[dP0M])[kb ] = c1o54* (c3o1*( Mx -Mz)+Conc_F*(c1o1+c9o2*( vx1 -vx3)*( vx1 -vx3)-cu_sq)); + (D27F.f[dM0P])[kw ] = c1o54* (c3o1*(-Mx +Mz)+Conc_F*(c1o1+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq)); + (D27F.f[d0PP])[kzero] = c1o54* (c3o1*( My +Mz)+Conc_F*(c1o1+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq)); + (D27F.f[d0MM])[kbs ] = c1o54* (c3o1*( -My -Mz)+Conc_F*(c1o1+c9o2*( -vx2-vx3)*( -vx2-vx3)-cu_sq)); + (D27F.f[d0PM])[kb ] = c1o54* (c3o1*( My -Mz)+Conc_F*(c1o1+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq)); + (D27F.f[d0MP])[ks ] = c1o54* (c3o1*( -My +Mz)+Conc_F*(c1o1+c9o2*( -vx2+vx3)*( -vx2+vx3)-cu_sq)); + (D27F.f[dPPP])[kzero] = c1o216*(c3o1*( Mx +My +Mz)+Conc_F*(c1o1+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq)); + (D27F.f[dMMM])[kbsw ] = c1o216*(c3o1*(-Mx -My -Mz)+Conc_F*(c1o1+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq)); + (D27F.f[dPPM])[kb ] = c1o216*(c3o1*( Mx +My -Mz)+Conc_F*(c1o1+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq)); + (D27F.f[dMMP])[ksw ] = c1o216*(c3o1*(-Mx -My +Mz)+Conc_F*(c1o1+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq)); + (D27F.f[dPMP])[ks ] = c1o216*(c3o1*( Mx -My +Mz)+Conc_F*(c1o1+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq)); + (D27F.f[dMPM])[kbw ] = c1o216*(c3o1*(-Mx +My -Mz)+Conc_F*(c1o1+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq)); + (D27F.f[dPMM])[kbs ] = c1o216*(c3o1*( Mx -My -Mz)+Conc_F*(c1o1+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq)); + (D27F.f[dMPP])[kw ] = c1o216*(c3o1*(-Mx +My +Mz)+Conc_F*(c1o1+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq)); } } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -47305,96 +47305,96 @@ __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[DIR_P00 * numberOfLBnodesFine]; - fwF = &DF[DIR_M00 * numberOfLBnodesFine]; - fnF = &DF[DIR_0P0 * numberOfLBnodesFine]; - fsF = &DF[DIR_0M0 * numberOfLBnodesFine]; - ftF = &DF[DIR_00P * numberOfLBnodesFine]; - fbF = &DF[DIR_00M * numberOfLBnodesFine]; - fneF = &DF[DIR_PP0 * numberOfLBnodesFine]; - fswF = &DF[DIR_MM0 * numberOfLBnodesFine]; - fseF = &DF[DIR_PM0 * numberOfLBnodesFine]; - fnwF = &DF[DIR_MP0 * numberOfLBnodesFine]; - fteF = &DF[DIR_P0P * numberOfLBnodesFine]; - fbwF = &DF[DIR_M0M * numberOfLBnodesFine]; - fbeF = &DF[DIR_P0M * numberOfLBnodesFine]; - ftwF = &DF[DIR_M0P * numberOfLBnodesFine]; - ftnF = &DF[DIR_0PP * numberOfLBnodesFine]; - fbsF = &DF[DIR_0MM * numberOfLBnodesFine]; - fbnF = &DF[DIR_0PM * numberOfLBnodesFine]; - ftsF = &DF[DIR_0MP * numberOfLBnodesFine]; - fzeroF = &DF[DIR_000 * numberOfLBnodesFine]; - ftneF = &DF[DIR_PPP * numberOfLBnodesFine]; - ftswF = &DF[DIR_MMP * numberOfLBnodesFine]; - ftseF = &DF[DIR_PMP * numberOfLBnodesFine]; - ftnwF = &DF[DIR_MPP * numberOfLBnodesFine]; - fbneF = &DF[DIR_PPM * numberOfLBnodesFine]; - fbswF = &DF[DIR_MMM * numberOfLBnodesFine]; - fbseF = &DF[DIR_PMM * numberOfLBnodesFine]; - fbnwF = &DF[DIR_MPM * numberOfLBnodesFine]; + feF = &DF[dP00 * numberOfLBnodesFine]; + fwF = &DF[dM00 * numberOfLBnodesFine]; + fnF = &DF[d0P0 * numberOfLBnodesFine]; + fsF = &DF[d0M0 * numberOfLBnodesFine]; + ftF = &DF[d00P * numberOfLBnodesFine]; + fbF = &DF[d00M * numberOfLBnodesFine]; + fneF = &DF[dPP0 * numberOfLBnodesFine]; + fswF = &DF[dMM0 * numberOfLBnodesFine]; + fseF = &DF[dPM0 * numberOfLBnodesFine]; + fnwF = &DF[dMP0 * numberOfLBnodesFine]; + fteF = &DF[dP0P * numberOfLBnodesFine]; + fbwF = &DF[dM0M * numberOfLBnodesFine]; + fbeF = &DF[dP0M * numberOfLBnodesFine]; + ftwF = &DF[dM0P * numberOfLBnodesFine]; + ftnF = &DF[d0PP * numberOfLBnodesFine]; + fbsF = &DF[d0MM * numberOfLBnodesFine]; + fbnF = &DF[d0PM * numberOfLBnodesFine]; + ftsF = &DF[d0MP * numberOfLBnodesFine]; + fzeroF = &DF[d000 * numberOfLBnodesFine]; + ftneF = &DF[dPPP * numberOfLBnodesFine]; + ftswF = &DF[dMMP * numberOfLBnodesFine]; + ftseF = &DF[dPMP * numberOfLBnodesFine]; + ftnwF = &DF[dMPP * numberOfLBnodesFine]; + fbneF = &DF[dPPM * numberOfLBnodesFine]; + fbswF = &DF[dMMM * numberOfLBnodesFine]; + fbseF = &DF[dPMM * numberOfLBnodesFine]; + fbnwF = &DF[dMPM * numberOfLBnodesFine]; 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[DIR_P00 * numberOfLBnodesCoarse]; - fwC = &DC[DIR_M00 * numberOfLBnodesCoarse]; - fnC = &DC[DIR_0P0 * numberOfLBnodesCoarse]; - fsC = &DC[DIR_0M0 * numberOfLBnodesCoarse]; - ftC = &DC[DIR_00P * numberOfLBnodesCoarse]; - fbC = &DC[DIR_00M * numberOfLBnodesCoarse]; - fneC = &DC[DIR_PP0 * numberOfLBnodesCoarse]; - fswC = &DC[DIR_MM0 * numberOfLBnodesCoarse]; - fseC = &DC[DIR_PM0 * numberOfLBnodesCoarse]; - fnwC = &DC[DIR_MP0 * numberOfLBnodesCoarse]; - fteC = &DC[DIR_P0P * numberOfLBnodesCoarse]; - fbwC = &DC[DIR_M0M * numberOfLBnodesCoarse]; - fbeC = &DC[DIR_P0M * numberOfLBnodesCoarse]; - ftwC = &DC[DIR_M0P * numberOfLBnodesCoarse]; - ftnC = &DC[DIR_0PP * numberOfLBnodesCoarse]; - fbsC = &DC[DIR_0MM * numberOfLBnodesCoarse]; - fbnC = &DC[DIR_0PM * numberOfLBnodesCoarse]; - ftsC = &DC[DIR_0MP * numberOfLBnodesCoarse]; - fzeroC = &DC[DIR_000 * numberOfLBnodesCoarse]; - ftneC = &DC[DIR_PPP * numberOfLBnodesCoarse]; - ftswC = &DC[DIR_MMP * numberOfLBnodesCoarse]; - ftseC = &DC[DIR_PMP * numberOfLBnodesCoarse]; - ftnwC = &DC[DIR_MPP * numberOfLBnodesCoarse]; - fbneC = &DC[DIR_PPM * numberOfLBnodesCoarse]; - fbswC = &DC[DIR_MMM * numberOfLBnodesCoarse]; - fbseC = &DC[DIR_PMM * numberOfLBnodesCoarse]; - fbnwC = &DC[DIR_MPM * numberOfLBnodesCoarse]; + feC = &DC[dP00 * numberOfLBnodesCoarse]; + fwC = &DC[dM00 * numberOfLBnodesCoarse]; + fnC = &DC[d0P0 * numberOfLBnodesCoarse]; + fsC = &DC[d0M0 * numberOfLBnodesCoarse]; + ftC = &DC[d00P * numberOfLBnodesCoarse]; + fbC = &DC[d00M * numberOfLBnodesCoarse]; + fneC = &DC[dPP0 * numberOfLBnodesCoarse]; + fswC = &DC[dMM0 * numberOfLBnodesCoarse]; + fseC = &DC[dPM0 * numberOfLBnodesCoarse]; + fnwC = &DC[dMP0 * numberOfLBnodesCoarse]; + fteC = &DC[dP0P * numberOfLBnodesCoarse]; + fbwC = &DC[dM0M * numberOfLBnodesCoarse]; + fbeC = &DC[dP0M * numberOfLBnodesCoarse]; + ftwC = &DC[dM0P * numberOfLBnodesCoarse]; + ftnC = &DC[d0PP * numberOfLBnodesCoarse]; + fbsC = &DC[d0MM * numberOfLBnodesCoarse]; + fbnC = &DC[d0PM * numberOfLBnodesCoarse]; + ftsC = &DC[d0MP * numberOfLBnodesCoarse]; + fzeroC = &DC[d000 * numberOfLBnodesCoarse]; + ftneC = &DC[dPPP * numberOfLBnodesCoarse]; + ftswC = &DC[dMMP * numberOfLBnodesCoarse]; + ftseC = &DC[dPMP * numberOfLBnodesCoarse]; + ftnwC = &DC[dMPP * numberOfLBnodesCoarse]; + fbneC = &DC[dPPM * numberOfLBnodesCoarse]; + fbswC = &DC[dMMM * numberOfLBnodesCoarse]; + fbseC = &DC[dPMM * numberOfLBnodesCoarse]; + fbnwC = &DC[dMPM * numberOfLBnodesCoarse]; } else { - fwC = &DC[DIR_P00 * numberOfLBnodesCoarse]; - feC = &DC[DIR_M00 * numberOfLBnodesCoarse]; - fsC = &DC[DIR_0P0 * numberOfLBnodesCoarse]; - fnC = &DC[DIR_0M0 * numberOfLBnodesCoarse]; - fbC = &DC[DIR_00P * numberOfLBnodesCoarse]; - ftC = &DC[DIR_00M * numberOfLBnodesCoarse]; - fswC = &DC[DIR_PP0 * numberOfLBnodesCoarse]; - fneC = &DC[DIR_MM0 * numberOfLBnodesCoarse]; - fnwC = &DC[DIR_PM0 * numberOfLBnodesCoarse]; - fseC = &DC[DIR_MP0 * numberOfLBnodesCoarse]; - fbwC = &DC[DIR_P0P * numberOfLBnodesCoarse]; - fteC = &DC[DIR_M0M * numberOfLBnodesCoarse]; - ftwC = &DC[DIR_P0M * numberOfLBnodesCoarse]; - fbeC = &DC[DIR_M0P * numberOfLBnodesCoarse]; - fbsC = &DC[DIR_0PP * numberOfLBnodesCoarse]; - ftnC = &DC[DIR_0MM * numberOfLBnodesCoarse]; - ftsC = &DC[DIR_0PM * numberOfLBnodesCoarse]; - fbnC = &DC[DIR_0MP * numberOfLBnodesCoarse]; - fzeroC = &DC[DIR_000 * numberOfLBnodesCoarse]; - fbswC = &DC[DIR_PPP * numberOfLBnodesCoarse]; - fbneC = &DC[DIR_MMP * numberOfLBnodesCoarse]; - fbnwC = &DC[DIR_PMP * numberOfLBnodesCoarse]; - fbseC = &DC[DIR_MPP * numberOfLBnodesCoarse]; - ftswC = &DC[DIR_PPM * numberOfLBnodesCoarse]; - ftneC = &DC[DIR_MMM * numberOfLBnodesCoarse]; - ftnwC = &DC[DIR_PMM * numberOfLBnodesCoarse]; - ftseC = &DC[DIR_MPM * numberOfLBnodesCoarse]; + fwC = &DC[dP00 * numberOfLBnodesCoarse]; + feC = &DC[dM00 * numberOfLBnodesCoarse]; + fsC = &DC[d0P0 * numberOfLBnodesCoarse]; + fnC = &DC[d0M0 * numberOfLBnodesCoarse]; + fbC = &DC[d00P * numberOfLBnodesCoarse]; + ftC = &DC[d00M * numberOfLBnodesCoarse]; + fswC = &DC[dPP0 * numberOfLBnodesCoarse]; + fneC = &DC[dMM0 * numberOfLBnodesCoarse]; + fnwC = &DC[dPM0 * numberOfLBnodesCoarse]; + fseC = &DC[dMP0 * numberOfLBnodesCoarse]; + fbwC = &DC[dP0P * numberOfLBnodesCoarse]; + fteC = &DC[dM0M * numberOfLBnodesCoarse]; + ftwC = &DC[dP0M * numberOfLBnodesCoarse]; + fbeC = &DC[dM0P * numberOfLBnodesCoarse]; + fbsC = &DC[d0PP * numberOfLBnodesCoarse]; + ftnC = &DC[d0MM * numberOfLBnodesCoarse]; + ftsC = &DC[d0PM * numberOfLBnodesCoarse]; + fbnC = &DC[d0MP * numberOfLBnodesCoarse]; + fzeroC = &DC[d000 * numberOfLBnodesCoarse]; + fbswC = &DC[dPPP * numberOfLBnodesCoarse]; + fbneC = &DC[dMMP * numberOfLBnodesCoarse]; + fbnwC = &DC[dPMP * numberOfLBnodesCoarse]; + fbseC = &DC[dMPP * numberOfLBnodesCoarse]; + ftswC = &DC[dPPM * numberOfLBnodesCoarse]; + ftneC = &DC[dMMM * numberOfLBnodesCoarse]; + ftnwC = &DC[dPMM * numberOfLBnodesCoarse]; + ftseC = &DC[dMPM * numberOfLBnodesCoarse]; } //////////////////////////////////////////////////////////////////////////////// @@ -49014,96 +49014,96 @@ __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[DIR_P00 * numberOfLBnodesFine]; - fwF = &DF[DIR_M00 * numberOfLBnodesFine]; - fnF = &DF[DIR_0P0 * numberOfLBnodesFine]; - fsF = &DF[DIR_0M0 * numberOfLBnodesFine]; - ftF = &DF[DIR_00P * numberOfLBnodesFine]; - fbF = &DF[DIR_00M * numberOfLBnodesFine]; - fneF = &DF[DIR_PP0 * numberOfLBnodesFine]; - fswF = &DF[DIR_MM0 * numberOfLBnodesFine]; - fseF = &DF[DIR_PM0 * numberOfLBnodesFine]; - fnwF = &DF[DIR_MP0 * numberOfLBnodesFine]; - fteF = &DF[DIR_P0P * numberOfLBnodesFine]; - fbwF = &DF[DIR_M0M * numberOfLBnodesFine]; - fbeF = &DF[DIR_P0M * numberOfLBnodesFine]; - ftwF = &DF[DIR_M0P * numberOfLBnodesFine]; - ftnF = &DF[DIR_0PP * numberOfLBnodesFine]; - fbsF = &DF[DIR_0MM * numberOfLBnodesFine]; - fbnF = &DF[DIR_0PM * numberOfLBnodesFine]; - ftsF = &DF[DIR_0MP * numberOfLBnodesFine]; - fzeroF = &DF[DIR_000 * numberOfLBnodesFine]; - ftneF = &DF[DIR_PPP * numberOfLBnodesFine]; - ftswF = &DF[DIR_MMP * numberOfLBnodesFine]; - ftseF = &DF[DIR_PMP * numberOfLBnodesFine]; - ftnwF = &DF[DIR_MPP * numberOfLBnodesFine]; - fbneF = &DF[DIR_PPM * numberOfLBnodesFine]; - fbswF = &DF[DIR_MMM * numberOfLBnodesFine]; - fbseF = &DF[DIR_PMM * numberOfLBnodesFine]; - fbnwF = &DF[DIR_MPM * numberOfLBnodesFine]; + feF = &DF[dP00 * numberOfLBnodesFine]; + fwF = &DF[dM00 * numberOfLBnodesFine]; + fnF = &DF[d0P0 * numberOfLBnodesFine]; + fsF = &DF[d0M0 * numberOfLBnodesFine]; + ftF = &DF[d00P * numberOfLBnodesFine]; + fbF = &DF[d00M * numberOfLBnodesFine]; + fneF = &DF[dPP0 * numberOfLBnodesFine]; + fswF = &DF[dMM0 * numberOfLBnodesFine]; + fseF = &DF[dPM0 * numberOfLBnodesFine]; + fnwF = &DF[dMP0 * numberOfLBnodesFine]; + fteF = &DF[dP0P * numberOfLBnodesFine]; + fbwF = &DF[dM0M * numberOfLBnodesFine]; + fbeF = &DF[dP0M * numberOfLBnodesFine]; + ftwF = &DF[dM0P * numberOfLBnodesFine]; + ftnF = &DF[d0PP * numberOfLBnodesFine]; + fbsF = &DF[d0MM * numberOfLBnodesFine]; + fbnF = &DF[d0PM * numberOfLBnodesFine]; + ftsF = &DF[d0MP * numberOfLBnodesFine]; + fzeroF = &DF[d000 * numberOfLBnodesFine]; + ftneF = &DF[dPPP * numberOfLBnodesFine]; + ftswF = &DF[dMMP * numberOfLBnodesFine]; + ftseF = &DF[dPMP * numberOfLBnodesFine]; + ftnwF = &DF[dMPP * numberOfLBnodesFine]; + fbneF = &DF[dPPM * numberOfLBnodesFine]; + fbswF = &DF[dMMM * numberOfLBnodesFine]; + fbseF = &DF[dPMM * numberOfLBnodesFine]; + fbnwF = &DF[dMPM * numberOfLBnodesFine]; 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[DIR_P00 * numberOfLBnodesCoarse]; - fwC = &DC[DIR_M00 * numberOfLBnodesCoarse]; - fnC = &DC[DIR_0P0 * numberOfLBnodesCoarse]; - fsC = &DC[DIR_0M0 * numberOfLBnodesCoarse]; - ftC = &DC[DIR_00P * numberOfLBnodesCoarse]; - fbC = &DC[DIR_00M * numberOfLBnodesCoarse]; - fneC = &DC[DIR_PP0 * numberOfLBnodesCoarse]; - fswC = &DC[DIR_MM0 * numberOfLBnodesCoarse]; - fseC = &DC[DIR_PM0 * numberOfLBnodesCoarse]; - fnwC = &DC[DIR_MP0 * numberOfLBnodesCoarse]; - fteC = &DC[DIR_P0P * numberOfLBnodesCoarse]; - fbwC = &DC[DIR_M0M * numberOfLBnodesCoarse]; - fbeC = &DC[DIR_P0M * numberOfLBnodesCoarse]; - ftwC = &DC[DIR_M0P * numberOfLBnodesCoarse]; - ftnC = &DC[DIR_0PP * numberOfLBnodesCoarse]; - fbsC = &DC[DIR_0MM * numberOfLBnodesCoarse]; - fbnC = &DC[DIR_0PM * numberOfLBnodesCoarse]; - ftsC = &DC[DIR_0MP * numberOfLBnodesCoarse]; - fzeroC = &DC[DIR_000 * numberOfLBnodesCoarse]; - ftneC = &DC[DIR_PPP * numberOfLBnodesCoarse]; - ftswC = &DC[DIR_MMP * numberOfLBnodesCoarse]; - ftseC = &DC[DIR_PMP * numberOfLBnodesCoarse]; - ftnwC = &DC[DIR_MPP * numberOfLBnodesCoarse]; - fbneC = &DC[DIR_PPM * numberOfLBnodesCoarse]; - fbswC = &DC[DIR_MMM * numberOfLBnodesCoarse]; - fbseC = &DC[DIR_PMM * numberOfLBnodesCoarse]; - fbnwC = &DC[DIR_MPM * numberOfLBnodesCoarse]; + feC = &DC[dP00 * numberOfLBnodesCoarse]; + fwC = &DC[dM00 * numberOfLBnodesCoarse]; + fnC = &DC[d0P0 * numberOfLBnodesCoarse]; + fsC = &DC[d0M0 * numberOfLBnodesCoarse]; + ftC = &DC[d00P * numberOfLBnodesCoarse]; + fbC = &DC[d00M * numberOfLBnodesCoarse]; + fneC = &DC[dPP0 * numberOfLBnodesCoarse]; + fswC = &DC[dMM0 * numberOfLBnodesCoarse]; + fseC = &DC[dPM0 * numberOfLBnodesCoarse]; + fnwC = &DC[dMP0 * numberOfLBnodesCoarse]; + fteC = &DC[dP0P * numberOfLBnodesCoarse]; + fbwC = &DC[dM0M * numberOfLBnodesCoarse]; + fbeC = &DC[dP0M * numberOfLBnodesCoarse]; + ftwC = &DC[dM0P * numberOfLBnodesCoarse]; + ftnC = &DC[d0PP * numberOfLBnodesCoarse]; + fbsC = &DC[d0MM * numberOfLBnodesCoarse]; + fbnC = &DC[d0PM * numberOfLBnodesCoarse]; + ftsC = &DC[d0MP * numberOfLBnodesCoarse]; + fzeroC = &DC[d000 * numberOfLBnodesCoarse]; + ftneC = &DC[dPPP * numberOfLBnodesCoarse]; + ftswC = &DC[dMMP * numberOfLBnodesCoarse]; + ftseC = &DC[dPMP * numberOfLBnodesCoarse]; + ftnwC = &DC[dMPP * numberOfLBnodesCoarse]; + fbneC = &DC[dPPM * numberOfLBnodesCoarse]; + fbswC = &DC[dMMM * numberOfLBnodesCoarse]; + fbseC = &DC[dPMM * numberOfLBnodesCoarse]; + fbnwC = &DC[dMPM * numberOfLBnodesCoarse]; } else { - fwC = &DC[DIR_P00 * numberOfLBnodesCoarse]; - feC = &DC[DIR_M00 * numberOfLBnodesCoarse]; - fsC = &DC[DIR_0P0 * numberOfLBnodesCoarse]; - fnC = &DC[DIR_0M0 * numberOfLBnodesCoarse]; - fbC = &DC[DIR_00P * numberOfLBnodesCoarse]; - ftC = &DC[DIR_00M * numberOfLBnodesCoarse]; - fswC = &DC[DIR_PP0 * numberOfLBnodesCoarse]; - fneC = &DC[DIR_MM0 * numberOfLBnodesCoarse]; - fnwC = &DC[DIR_PM0 * numberOfLBnodesCoarse]; - fseC = &DC[DIR_MP0 * numberOfLBnodesCoarse]; - fbwC = &DC[DIR_P0P * numberOfLBnodesCoarse]; - fteC = &DC[DIR_M0M * numberOfLBnodesCoarse]; - ftwC = &DC[DIR_P0M * numberOfLBnodesCoarse]; - fbeC = &DC[DIR_M0P * numberOfLBnodesCoarse]; - fbsC = &DC[DIR_0PP * numberOfLBnodesCoarse]; - ftnC = &DC[DIR_0MM * numberOfLBnodesCoarse]; - ftsC = &DC[DIR_0PM * numberOfLBnodesCoarse]; - fbnC = &DC[DIR_0MP * numberOfLBnodesCoarse]; - fzeroC = &DC[DIR_000 * numberOfLBnodesCoarse]; - fbswC = &DC[DIR_PPP * numberOfLBnodesCoarse]; - fbneC = &DC[DIR_MMP * numberOfLBnodesCoarse]; - fbnwC = &DC[DIR_PMP * numberOfLBnodesCoarse]; - fbseC = &DC[DIR_MPP * numberOfLBnodesCoarse]; - ftswC = &DC[DIR_PPM * numberOfLBnodesCoarse]; - ftneC = &DC[DIR_MMM * numberOfLBnodesCoarse]; - ftnwC = &DC[DIR_PMM * numberOfLBnodesCoarse]; - ftseC = &DC[DIR_MPM * numberOfLBnodesCoarse]; + fwC = &DC[dP00 * numberOfLBnodesCoarse]; + feC = &DC[dM00 * numberOfLBnodesCoarse]; + fsC = &DC[d0P0 * numberOfLBnodesCoarse]; + fnC = &DC[d0M0 * numberOfLBnodesCoarse]; + fbC = &DC[d00P * numberOfLBnodesCoarse]; + ftC = &DC[d00M * numberOfLBnodesCoarse]; + fswC = &DC[dPP0 * numberOfLBnodesCoarse]; + fneC = &DC[dMM0 * numberOfLBnodesCoarse]; + fnwC = &DC[dPM0 * numberOfLBnodesCoarse]; + fseC = &DC[dMP0 * numberOfLBnodesCoarse]; + fbwC = &DC[dP0P * numberOfLBnodesCoarse]; + fteC = &DC[dM0M * numberOfLBnodesCoarse]; + ftwC = &DC[dP0M * numberOfLBnodesCoarse]; + fbeC = &DC[dM0P * numberOfLBnodesCoarse]; + fbsC = &DC[d0PP * numberOfLBnodesCoarse]; + ftnC = &DC[d0MM * numberOfLBnodesCoarse]; + ftsC = &DC[d0PM * numberOfLBnodesCoarse]; + fbnC = &DC[d0MP * numberOfLBnodesCoarse]; + fzeroC = &DC[d000 * numberOfLBnodesCoarse]; + fbswC = &DC[dPPP * numberOfLBnodesCoarse]; + fbneC = &DC[dMMP * numberOfLBnodesCoarse]; + fbnwC = &DC[dPMP * numberOfLBnodesCoarse]; + fbseC = &DC[dMPP * numberOfLBnodesCoarse]; + ftswC = &DC[dPPM * numberOfLBnodesCoarse]; + ftneC = &DC[dMMM * numberOfLBnodesCoarse]; + ftnwC = &DC[dPMM * numberOfLBnodesCoarse]; + ftseC = &DC[dMPM * numberOfLBnodesCoarse]; } //////////////////////////////////////////////////////////////////////////////// diff --git a/src/gpu/VirtualFluids_GPU/GPU/GridScaling/ScaleCF_F3_27.cu b/src/gpu/core/GPU/GridScaling/ScaleCF_F3_27.cu similarity index 97% rename from src/gpu/VirtualFluids_GPU/GPU/GridScaling/ScaleCF_F3_27.cu rename to src/gpu/core/GPU/GridScaling/ScaleCF_F3_27.cu index a3044503b2e08b8bc713c7431c43a98395ec3298..5301e3c212c35f92c7fc23697f9b6badbbef4a69 100644 --- a/src/gpu/VirtualFluids_GPU/GPU/GridScaling/ScaleCF_F3_27.cu +++ b/src/gpu/core/GPU/GridScaling/ScaleCF_F3_27.cu @@ -44,33 +44,33 @@ __global__ void scaleCF_comp_D3Q27F3_2018(real* DC, *f000dest, *fMMMdest, *fMMPdest, *fMPPdest, *fMPMdest, *fPPMdest, *fPPPdest, *fPMPdest, *fPMMdest; - fP00dest = &DF[DIR_P00 * numberOfLBnodesFine]; - fM00dest = &DF[DIR_M00 * numberOfLBnodesFine]; - f0P0dest = &DF[DIR_0P0 * numberOfLBnodesFine]; - f0M0dest = &DF[DIR_0M0 * numberOfLBnodesFine]; - f00Pdest = &DF[DIR_00P * numberOfLBnodesFine]; - f00Mdest = &DF[DIR_00M * numberOfLBnodesFine]; - fPP0dest = &DF[DIR_PP0 * numberOfLBnodesFine]; - fMM0dest = &DF[DIR_MM0 * numberOfLBnodesFine]; - fPM0dest = &DF[DIR_PM0 * numberOfLBnodesFine]; - fMP0dest = &DF[DIR_MP0 * numberOfLBnodesFine]; - fP0Pdest = &DF[DIR_P0P * numberOfLBnodesFine]; - fM0Mdest = &DF[DIR_M0M * numberOfLBnodesFine]; - fP0Mdest = &DF[DIR_P0M * numberOfLBnodesFine]; - fM0Pdest = &DF[DIR_M0P * numberOfLBnodesFine]; - f0PPdest = &DF[DIR_0PP * numberOfLBnodesFine]; - f0MMdest = &DF[DIR_0MM * numberOfLBnodesFine]; - f0PMdest = &DF[DIR_0PM * numberOfLBnodesFine]; - f0MPdest = &DF[DIR_0MP * numberOfLBnodesFine]; - f000dest = &DF[DIR_000 * numberOfLBnodesFine]; - fMMMdest = &DF[DIR_MMM * numberOfLBnodesFine]; - fMMPdest = &DF[DIR_MMP * numberOfLBnodesFine]; - fMPPdest = &DF[DIR_MPP * numberOfLBnodesFine]; - fMPMdest = &DF[DIR_MPM * numberOfLBnodesFine]; - fPPMdest = &DF[DIR_PPM * numberOfLBnodesFine]; - fPPPdest = &DF[DIR_PPP * numberOfLBnodesFine]; - fPMPdest = &DF[DIR_PMP * numberOfLBnodesFine]; - fPMMdest = &DF[DIR_PMM * numberOfLBnodesFine]; + fP00dest = &DF[dP00 * numberOfLBnodesFine]; + fM00dest = &DF[dM00 * numberOfLBnodesFine]; + f0P0dest = &DF[d0P0 * numberOfLBnodesFine]; + f0M0dest = &DF[d0M0 * numberOfLBnodesFine]; + f00Pdest = &DF[d00P * numberOfLBnodesFine]; + f00Mdest = &DF[d00M * numberOfLBnodesFine]; + fPP0dest = &DF[dPP0 * numberOfLBnodesFine]; + fMM0dest = &DF[dMM0 * numberOfLBnodesFine]; + fPM0dest = &DF[dPM0 * numberOfLBnodesFine]; + fMP0dest = &DF[dMP0 * numberOfLBnodesFine]; + fP0Pdest = &DF[dP0P * numberOfLBnodesFine]; + fM0Mdest = &DF[dM0M * numberOfLBnodesFine]; + fP0Mdest = &DF[dP0M * numberOfLBnodesFine]; + fM0Pdest = &DF[dM0P * numberOfLBnodesFine]; + f0PPdest = &DF[d0PP * numberOfLBnodesFine]; + f0MMdest = &DF[d0MM * numberOfLBnodesFine]; + f0PMdest = &DF[d0PM * numberOfLBnodesFine]; + f0MPdest = &DF[d0MP * numberOfLBnodesFine]; + f000dest = &DF[d000 * numberOfLBnodesFine]; + fMMMdest = &DF[dMMM * numberOfLBnodesFine]; + fMMPdest = &DF[dMMP * numberOfLBnodesFine]; + fMPPdest = &DF[dMPP * numberOfLBnodesFine]; + fMPMdest = &DF[dMPM * numberOfLBnodesFine]; + fPPMdest = &DF[dPPM * numberOfLBnodesFine]; + fPPPdest = &DF[dPPP * numberOfLBnodesFine]; + fPMPdest = &DF[dPMP * numberOfLBnodesFine]; + fPMMdest = &DF[dPMM * numberOfLBnodesFine]; real *fP00source, *fM00source, *f0P0source, *f0M0source, *f00Psource, *f00Msource, *fPP0source, *fMM0source, *fPM0source, @@ -79,72 +79,72 @@ __global__ void scaleCF_comp_D3Q27F3_2018(real* DC, if (isEvenTimestep == true) { - fP00source = &DC[DIR_P00 * numberOfLBnodesCoarse]; - fM00source = &DC[DIR_M00 * numberOfLBnodesCoarse]; - f0P0source = &DC[DIR_0P0 * numberOfLBnodesCoarse]; - f0M0source = &DC[DIR_0M0 * numberOfLBnodesCoarse]; - f00Psource = &DC[DIR_00P * numberOfLBnodesCoarse]; - f00Msource = &DC[DIR_00M * numberOfLBnodesCoarse]; - fPP0source = &DC[DIR_PP0 * numberOfLBnodesCoarse]; - fMM0source = &DC[DIR_MM0 * numberOfLBnodesCoarse]; - fPM0source = &DC[DIR_PM0 * numberOfLBnodesCoarse]; - fMP0source = &DC[DIR_MP0 * numberOfLBnodesCoarse]; - fP0Psource = &DC[DIR_P0P * numberOfLBnodesCoarse]; - fM0Msource = &DC[DIR_M0M * numberOfLBnodesCoarse]; - fP0Msource = &DC[DIR_P0M * numberOfLBnodesCoarse]; - fM0Psource = &DC[DIR_M0P * numberOfLBnodesCoarse]; - f0PPsource = &DC[DIR_0PP * numberOfLBnodesCoarse]; - f0MMsource = &DC[DIR_0MM * numberOfLBnodesCoarse]; - f0PMsource = &DC[DIR_0PM * numberOfLBnodesCoarse]; - f0MPsource = &DC[DIR_0MP * numberOfLBnodesCoarse]; - f000source = &DC[DIR_000 * numberOfLBnodesCoarse]; - fMMMsource = &DC[DIR_MMM * numberOfLBnodesCoarse]; - fMMPsource = &DC[DIR_MMP * numberOfLBnodesCoarse]; - fMPPsource = &DC[DIR_MPP * numberOfLBnodesCoarse]; - fMPMsource = &DC[DIR_MPM * numberOfLBnodesCoarse]; - fPPMsource = &DC[DIR_PPM * numberOfLBnodesCoarse]; - fPPPsource = &DC[DIR_PPP * numberOfLBnodesCoarse]; - fPMPsource = &DC[DIR_PMP * numberOfLBnodesCoarse]; - fPMMsource = &DC[DIR_PMM * numberOfLBnodesCoarse]; + fP00source = &DC[dP00 * numberOfLBnodesCoarse]; + fM00source = &DC[dM00 * numberOfLBnodesCoarse]; + f0P0source = &DC[d0P0 * numberOfLBnodesCoarse]; + f0M0source = &DC[d0M0 * numberOfLBnodesCoarse]; + f00Psource = &DC[d00P * numberOfLBnodesCoarse]; + f00Msource = &DC[d00M * numberOfLBnodesCoarse]; + fPP0source = &DC[dPP0 * numberOfLBnodesCoarse]; + fMM0source = &DC[dMM0 * numberOfLBnodesCoarse]; + fPM0source = &DC[dPM0 * numberOfLBnodesCoarse]; + fMP0source = &DC[dMP0 * numberOfLBnodesCoarse]; + fP0Psource = &DC[dP0P * numberOfLBnodesCoarse]; + fM0Msource = &DC[dM0M * numberOfLBnodesCoarse]; + fP0Msource = &DC[dP0M * numberOfLBnodesCoarse]; + fM0Psource = &DC[dM0P * numberOfLBnodesCoarse]; + f0PPsource = &DC[d0PP * numberOfLBnodesCoarse]; + f0MMsource = &DC[d0MM * numberOfLBnodesCoarse]; + f0PMsource = &DC[d0PM * numberOfLBnodesCoarse]; + f0MPsource = &DC[d0MP * numberOfLBnodesCoarse]; + f000source = &DC[d000 * numberOfLBnodesCoarse]; + fMMMsource = &DC[dMMM * numberOfLBnodesCoarse]; + fMMPsource = &DC[dMMP * numberOfLBnodesCoarse]; + fMPPsource = &DC[dMPP * numberOfLBnodesCoarse]; + fMPMsource = &DC[dMPM * numberOfLBnodesCoarse]; + fPPMsource = &DC[dPPM * numberOfLBnodesCoarse]; + fPPPsource = &DC[dPPP * numberOfLBnodesCoarse]; + fPMPsource = &DC[dPMP * numberOfLBnodesCoarse]; + fPMMsource = &DC[dPMM * numberOfLBnodesCoarse]; } else { - fP00source = &DC[DIR_M00 * numberOfLBnodesCoarse]; - fM00source = &DC[DIR_P00 * numberOfLBnodesCoarse]; - f0P0source = &DC[DIR_0M0 * numberOfLBnodesCoarse]; - f0M0source = &DC[DIR_0P0 * numberOfLBnodesCoarse]; - f00Psource = &DC[DIR_00M * numberOfLBnodesCoarse]; - f00Msource = &DC[DIR_00P * numberOfLBnodesCoarse]; - fPP0source = &DC[DIR_MM0 * numberOfLBnodesCoarse]; - fMM0source = &DC[DIR_PP0 * numberOfLBnodesCoarse]; - fPM0source = &DC[DIR_MP0 * numberOfLBnodesCoarse]; - fMP0source = &DC[DIR_PM0 * numberOfLBnodesCoarse]; - fP0Psource = &DC[DIR_M0M * numberOfLBnodesCoarse]; - fM0Msource = &DC[DIR_P0P * numberOfLBnodesCoarse]; - fP0Msource = &DC[DIR_M0P * numberOfLBnodesCoarse]; - fM0Psource = &DC[DIR_P0M * numberOfLBnodesCoarse]; - f0PPsource = &DC[DIR_0MM * numberOfLBnodesCoarse]; - f0MMsource = &DC[DIR_0PP * numberOfLBnodesCoarse]; - f0PMsource = &DC[DIR_0MP * numberOfLBnodesCoarse]; - f0MPsource = &DC[DIR_0PM * numberOfLBnodesCoarse]; - f000source = &DC[DIR_000 * numberOfLBnodesCoarse]; - fMMMsource = &DC[DIR_PPP * numberOfLBnodesCoarse]; - fMMPsource = &DC[DIR_PPM * numberOfLBnodesCoarse]; - fMPPsource = &DC[DIR_PMM * numberOfLBnodesCoarse]; - fMPMsource = &DC[DIR_PMP * numberOfLBnodesCoarse]; - fPPMsource = &DC[DIR_MMP * numberOfLBnodesCoarse]; - fPPPsource = &DC[DIR_MMM * numberOfLBnodesCoarse]; - fPMPsource = &DC[DIR_MPM * numberOfLBnodesCoarse]; - fPMMsource = &DC[DIR_MPP * numberOfLBnodesCoarse]; + fP00source = &DC[dM00 * numberOfLBnodesCoarse]; + fM00source = &DC[dP00 * numberOfLBnodesCoarse]; + f0P0source = &DC[d0M0 * numberOfLBnodesCoarse]; + f0M0source = &DC[d0P0 * numberOfLBnodesCoarse]; + f00Psource = &DC[d00M * numberOfLBnodesCoarse]; + f00Msource = &DC[d00P * numberOfLBnodesCoarse]; + fPP0source = &DC[dMM0 * numberOfLBnodesCoarse]; + fMM0source = &DC[dPP0 * numberOfLBnodesCoarse]; + fPM0source = &DC[dMP0 * numberOfLBnodesCoarse]; + fMP0source = &DC[dPM0 * numberOfLBnodesCoarse]; + fP0Psource = &DC[dM0M * numberOfLBnodesCoarse]; + fM0Msource = &DC[dP0P * numberOfLBnodesCoarse]; + fP0Msource = &DC[dM0P * numberOfLBnodesCoarse]; + fM0Psource = &DC[dP0M * numberOfLBnodesCoarse]; + f0PPsource = &DC[d0MM * numberOfLBnodesCoarse]; + f0MMsource = &DC[d0PP * numberOfLBnodesCoarse]; + f0PMsource = &DC[d0MP * numberOfLBnodesCoarse]; + f0MPsource = &DC[d0PM * numberOfLBnodesCoarse]; + f000source = &DC[d000 * numberOfLBnodesCoarse]; + fMMMsource = &DC[dPPP * numberOfLBnodesCoarse]; + fMMPsource = &DC[dPPM * numberOfLBnodesCoarse]; + fMPPsource = &DC[dPMM * numberOfLBnodesCoarse]; + fMPMsource = &DC[dPMP * numberOfLBnodesCoarse]; + fPPMsource = &DC[dMMP * numberOfLBnodesCoarse]; + fPPPsource = &DC[dMMM * numberOfLBnodesCoarse]; + fPMPsource = &DC[dMPM * numberOfLBnodesCoarse]; + fPMMsource = &DC[dMPP * numberOfLBnodesCoarse]; } Distributions6 G; - G.g[DIR_P00] = &G6[DIR_P00 * numberOfLBnodesFine]; - G.g[DIR_M00] = &G6[DIR_M00 * numberOfLBnodesFine]; - G.g[DIR_0P0] = &G6[DIR_0P0 * numberOfLBnodesFine]; - G.g[DIR_0M0] = &G6[DIR_0M0 * numberOfLBnodesFine]; - G.g[DIR_00P] = &G6[DIR_00P * numberOfLBnodesFine]; - G.g[DIR_00M] = &G6[DIR_00M * numberOfLBnodesFine]; + G.g[dP00] = &G6[dP00 * numberOfLBnodesFine]; + G.g[dM00] = &G6[dM00 * numberOfLBnodesFine]; + G.g[d0P0] = &G6[d0P0 * numberOfLBnodesFine]; + G.g[d0M0] = &G6[d0M0 * numberOfLBnodesFine]; + G.g[d00P] = &G6[d00P * numberOfLBnodesFine]; + G.g[d00M] = &G6[d00M * numberOfLBnodesFine]; //////////////////////////////////////////////////////////////////////////////// const unsigned ix = threadIdx.x; // Globaler x-Index @@ -1187,12 +1187,12 @@ __global__ void scaleCF_comp_D3Q27F3_2018(real* DC, //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////// - (G.g[DIR_P00])[k000] = mgcbb; - (G.g[DIR_M00])[kM00] = mgabb; - (G.g[DIR_0P0])[k000] = mgbcb; - (G.g[DIR_0M0])[k0M0] = mgbab; - (G.g[DIR_00P])[k000] = mgbbc; - (G.g[DIR_00M])[k00M] = mgbba; + (G.g[dP00])[k000] = mgcbb; + (G.g[dM00])[kM00] = mgabb; + (G.g[d0P0])[k000] = mgbcb; + (G.g[d0M0])[k0M0] = mgbab; + (G.g[d00P])[k000] = mgbbc; + (G.g[d00M])[k00M] = mgbba; //////////////////////////////////////////////////////////////////////////////////// fP00dest[k000] = mfcbb; fM00dest[kM00] = mfabb; @@ -1623,12 +1623,12 @@ __global__ void scaleCF_comp_D3Q27F3_2018(real* DC, //////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////// - (G.g[DIR_P00])[k000] = mgcbb; - (G.g[DIR_M00])[kM00] = mgabb; - (G.g[DIR_0P0])[k000] = mgbcb; - (G.g[DIR_0M0])[k0M0] = mgbab; - (G.g[DIR_00P])[k000] = mgbbc; - (G.g[DIR_00M])[k00M] = mgbba; + (G.g[dP00])[k000] = mgcbb; + (G.g[dM00])[kM00] = mgabb; + (G.g[d0P0])[k000] = mgbcb; + (G.g[d0M0])[k0M0] = mgbab; + (G.g[d00P])[k000] = mgbbc; + (G.g[d00M])[k00M] = mgbba; //////////////////////////////////////////////////////////////////////////////////// fP00dest[k000] = mfcbb; fM00dest[kM00] = mfabb; @@ -2062,12 +2062,12 @@ __global__ void scaleCF_comp_D3Q27F3_2018(real* DC, //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////// - (G.g[DIR_P00])[k000] = mgcbb; - (G.g[DIR_M00])[kM00] = mgabb; - (G.g[DIR_0P0])[k000] = mgbcb; - (G.g[DIR_0M0])[k0M0] = mgbab; - (G.g[DIR_00P])[k000] = mgbbc; - (G.g[DIR_00M])[k00M] = mgbba; + (G.g[dP00])[k000] = mgcbb; + (G.g[dM00])[kM00] = mgabb; + (G.g[d0P0])[k000] = mgbcb; + (G.g[d0M0])[k0M0] = mgbab; + (G.g[d00P])[k000] = mgbbc; + (G.g[d00M])[k00M] = mgbba; //////////////////////////////////////////////////////////////////////////////////// fP00dest[k000] = mfcbb; fM00dest[kM00] = mfabb; @@ -2501,12 +2501,12 @@ __global__ void scaleCF_comp_D3Q27F3_2018(real* DC, //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////// - (G.g[DIR_P00])[k000] = mgcbb; - (G.g[DIR_M00])[kM00] = mgabb; - (G.g[DIR_0P0])[k000] = mgbcb; - (G.g[DIR_0M0])[k0M0] = mgbab; - (G.g[DIR_00P])[k000] = mgbbc; - (G.g[DIR_00M])[k00M] = mgbba; + (G.g[dP00])[k000] = mgcbb; + (G.g[dM00])[kM00] = mgabb; + (G.g[d0P0])[k000] = mgbcb; + (G.g[d0M0])[k0M0] = mgbab; + (G.g[d00P])[k000] = mgbbc; + (G.g[d00M])[k00M] = mgbba; //////////////////////////////////////////////////////////////////////////////////// fP00dest[k000] = mfcbb; fM00dest[kM00] = mfabb; @@ -2950,12 +2950,12 @@ __global__ void scaleCF_comp_D3Q27F3_2018(real* DC, //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////// - (G.g[DIR_P00])[k000] = mgcbb; - (G.g[DIR_M00])[kM00] = mgabb; - (G.g[DIR_0P0])[k000] = mgbcb; - (G.g[DIR_0M0])[k0M0] = mgbab; - (G.g[DIR_00P])[k000] = mgbbc; - (G.g[DIR_00M])[k00M] = mgbba; + (G.g[dP00])[k000] = mgcbb; + (G.g[dM00])[kM00] = mgabb; + (G.g[d0P0])[k000] = mgbcb; + (G.g[d0M0])[k0M0] = mgbab; + (G.g[d00P])[k000] = mgbbc; + (G.g[d00M])[k00M] = mgbba; //////////////////////////////////////////////////////////////////////////////////// fP00dest[k000] = mfcbb; fM00dest[kM00] = mfabb; @@ -3389,12 +3389,12 @@ __global__ void scaleCF_comp_D3Q27F3_2018(real* DC, //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////// - (G.g[DIR_P00])[k000] = mgcbb; - (G.g[DIR_M00])[kM00] = mgabb; - (G.g[DIR_0P0])[k000] = mgbcb; - (G.g[DIR_0M0])[k0M0] = mgbab; - (G.g[DIR_00P])[k000] = mgbbc; - (G.g[DIR_00M])[k00M] = mgbba; + (G.g[dP00])[k000] = mgcbb; + (G.g[dM00])[kM00] = mgabb; + (G.g[d0P0])[k000] = mgbcb; + (G.g[d0M0])[k0M0] = mgbab; + (G.g[d00P])[k000] = mgbbc; + (G.g[d00M])[k00M] = mgbba; //////////////////////////////////////////////////////////////////////////////////// fP00dest[k000] = mfcbb; fM00dest[kM00] = mfabb; @@ -3828,12 +3828,12 @@ __global__ void scaleCF_comp_D3Q27F3_2018(real* DC, //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////// - (G.g[DIR_P00])[k000] = mgcbb; - (G.g[DIR_M00])[kM00] = mgabb; - (G.g[DIR_0P0])[k000] = mgbcb; - (G.g[DIR_0M0])[k0M0] = mgbab; - (G.g[DIR_00P])[k000] = mgbbc; - (G.g[DIR_00M])[k00M] = mgbba; + (G.g[dP00])[k000] = mgcbb; + (G.g[dM00])[kM00] = mgabb; + (G.g[d0P0])[k000] = mgbcb; + (G.g[d0M0])[k0M0] = mgbab; + (G.g[d00P])[k000] = mgbbc; + (G.g[d00M])[k00M] = mgbba; //////////////////////////////////////////////////////////////////////////////////// fP00dest[k000] = mfcbb; fM00dest[kM00] = mfabb; @@ -4267,12 +4267,12 @@ __global__ void scaleCF_comp_D3Q27F3_2018(real* DC, //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////// - (G.g[DIR_P00])[k000] = mgcbb; - (G.g[DIR_M00])[kM00] = mgabb; - (G.g[DIR_0P0])[k000] = mgbcb; - (G.g[DIR_0M0])[k0M0] = mgbab; - (G.g[DIR_00P])[k000] = mgbbc; - (G.g[DIR_00M])[k00M] = mgbba; + (G.g[dP00])[k000] = mgcbb; + (G.g[dM00])[kM00] = mgabb; + (G.g[d0P0])[k000] = mgbcb; + (G.g[d0M0])[k0M0] = mgbab; + (G.g[d00P])[k000] = mgbbc; + (G.g[d00M])[k00M] = mgbba; //////////////////////////////////////////////////////////////////////////////////// fP00dest[k000] = mfcbb; fM00dest[kM00] = mfabb; @@ -4391,33 +4391,33 @@ __global__ void scaleCF_comp_D3Q27F3( real* DC, *f000dest, *fMMMdest, *fMMPdest, *fMPPdest, *fMPMdest, *fPPMdest, *fPPPdest, *fPMPdest, *fPMMdest; - fP00dest = &DF[DIR_P00 * numberOfLBnodesFine]; - fM00dest = &DF[DIR_M00 * numberOfLBnodesFine]; - f0P0dest = &DF[DIR_0P0 * numberOfLBnodesFine]; - f0M0dest = &DF[DIR_0M0 * numberOfLBnodesFine]; - f00Pdest = &DF[DIR_00P * numberOfLBnodesFine]; - f00Mdest = &DF[DIR_00M * numberOfLBnodesFine]; - fPP0dest = &DF[DIR_PP0 * numberOfLBnodesFine]; - fMM0dest = &DF[DIR_MM0 * numberOfLBnodesFine]; - fPM0dest = &DF[DIR_PM0 * numberOfLBnodesFine]; - fMP0dest = &DF[DIR_MP0 * numberOfLBnodesFine]; - fP0Pdest = &DF[DIR_P0P * numberOfLBnodesFine]; - fM0Mdest = &DF[DIR_M0M * numberOfLBnodesFine]; - fP0Mdest = &DF[DIR_P0M * numberOfLBnodesFine]; - fM0Pdest = &DF[DIR_M0P * numberOfLBnodesFine]; - f0PPdest = &DF[DIR_0PP * numberOfLBnodesFine]; - f0MMdest = &DF[DIR_0MM * numberOfLBnodesFine]; - f0PMdest = &DF[DIR_0PM * numberOfLBnodesFine]; - f0MPdest = &DF[DIR_0MP * numberOfLBnodesFine]; - f000dest = &DF[DIR_000 * numberOfLBnodesFine]; - fMMMdest = &DF[DIR_MMM * numberOfLBnodesFine]; - fMMPdest = &DF[DIR_MMP * numberOfLBnodesFine]; - fMPPdest = &DF[DIR_MPP * numberOfLBnodesFine]; - fMPMdest = &DF[DIR_MPM * numberOfLBnodesFine]; - fPPMdest = &DF[DIR_PPM * numberOfLBnodesFine]; - fPPPdest = &DF[DIR_PPP * numberOfLBnodesFine]; - fPMPdest = &DF[DIR_PMP * numberOfLBnodesFine]; - fPMMdest = &DF[DIR_PMM * numberOfLBnodesFine]; + fP00dest = &DF[dP00 * numberOfLBnodesFine]; + fM00dest = &DF[dM00 * numberOfLBnodesFine]; + f0P0dest = &DF[d0P0 * numberOfLBnodesFine]; + f0M0dest = &DF[d0M0 * numberOfLBnodesFine]; + f00Pdest = &DF[d00P * numberOfLBnodesFine]; + f00Mdest = &DF[d00M * numberOfLBnodesFine]; + fPP0dest = &DF[dPP0 * numberOfLBnodesFine]; + fMM0dest = &DF[dMM0 * numberOfLBnodesFine]; + fPM0dest = &DF[dPM0 * numberOfLBnodesFine]; + fMP0dest = &DF[dMP0 * numberOfLBnodesFine]; + fP0Pdest = &DF[dP0P * numberOfLBnodesFine]; + fM0Mdest = &DF[dM0M * numberOfLBnodesFine]; + fP0Mdest = &DF[dP0M * numberOfLBnodesFine]; + fM0Pdest = &DF[dM0P * numberOfLBnodesFine]; + f0PPdest = &DF[d0PP * numberOfLBnodesFine]; + f0MMdest = &DF[d0MM * numberOfLBnodesFine]; + f0PMdest = &DF[d0PM * numberOfLBnodesFine]; + f0MPdest = &DF[d0MP * numberOfLBnodesFine]; + f000dest = &DF[d000 * numberOfLBnodesFine]; + fMMMdest = &DF[dMMM * numberOfLBnodesFine]; + fMMPdest = &DF[dMMP * numberOfLBnodesFine]; + fMPPdest = &DF[dMPP * numberOfLBnodesFine]; + fMPMdest = &DF[dMPM * numberOfLBnodesFine]; + fPPMdest = &DF[dPPM * numberOfLBnodesFine]; + fPPPdest = &DF[dPPP * numberOfLBnodesFine]; + fPMPdest = &DF[dPMP * numberOfLBnodesFine]; + fPMMdest = &DF[dPMM * numberOfLBnodesFine]; real *fP00source, *fM00source, *f0P0source, *f0M0source, *f00Psource, *f00Msource, *fPP0source, *fMM0source, *fPM0source, @@ -4426,72 +4426,72 @@ __global__ void scaleCF_comp_D3Q27F3( real* DC, if (isEvenTimestep == true) { - fP00source = &DC[DIR_P00 * numberOfLBnodesCoarse]; - fM00source = &DC[DIR_M00 * numberOfLBnodesCoarse]; - f0P0source = &DC[DIR_0P0 * numberOfLBnodesCoarse]; - f0M0source = &DC[DIR_0M0 * numberOfLBnodesCoarse]; - f00Psource = &DC[DIR_00P * numberOfLBnodesCoarse]; - f00Msource = &DC[DIR_00M * numberOfLBnodesCoarse]; - fPP0source = &DC[DIR_PP0 * numberOfLBnodesCoarse]; - fMM0source = &DC[DIR_MM0 * numberOfLBnodesCoarse]; - fPM0source = &DC[DIR_PM0 * numberOfLBnodesCoarse]; - fMP0source = &DC[DIR_MP0 * numberOfLBnodesCoarse]; - fP0Psource = &DC[DIR_P0P * numberOfLBnodesCoarse]; - fM0Msource = &DC[DIR_M0M * numberOfLBnodesCoarse]; - fP0Msource = &DC[DIR_P0M * numberOfLBnodesCoarse]; - fM0Psource = &DC[DIR_M0P * numberOfLBnodesCoarse]; - f0PPsource = &DC[DIR_0PP * numberOfLBnodesCoarse]; - f0MMsource = &DC[DIR_0MM * numberOfLBnodesCoarse]; - f0PMsource = &DC[DIR_0PM * numberOfLBnodesCoarse]; - f0MPsource = &DC[DIR_0MP * numberOfLBnodesCoarse]; - f000source = &DC[DIR_000 * numberOfLBnodesCoarse]; - fMMMsource = &DC[DIR_MMM * numberOfLBnodesCoarse]; - fMMPsource = &DC[DIR_MMP * numberOfLBnodesCoarse]; - fMPPsource = &DC[DIR_MPP * numberOfLBnodesCoarse]; - fMPMsource = &DC[DIR_MPM * numberOfLBnodesCoarse]; - fPPMsource = &DC[DIR_PPM * numberOfLBnodesCoarse]; - fPPPsource = &DC[DIR_PPP * numberOfLBnodesCoarse]; - fPMPsource = &DC[DIR_PMP * numberOfLBnodesCoarse]; - fPMMsource = &DC[DIR_PMM * numberOfLBnodesCoarse]; + fP00source = &DC[dP00 * numberOfLBnodesCoarse]; + fM00source = &DC[dM00 * numberOfLBnodesCoarse]; + f0P0source = &DC[d0P0 * numberOfLBnodesCoarse]; + f0M0source = &DC[d0M0 * numberOfLBnodesCoarse]; + f00Psource = &DC[d00P * numberOfLBnodesCoarse]; + f00Msource = &DC[d00M * numberOfLBnodesCoarse]; + fPP0source = &DC[dPP0 * numberOfLBnodesCoarse]; + fMM0source = &DC[dMM0 * numberOfLBnodesCoarse]; + fPM0source = &DC[dPM0 * numberOfLBnodesCoarse]; + fMP0source = &DC[dMP0 * numberOfLBnodesCoarse]; + fP0Psource = &DC[dP0P * numberOfLBnodesCoarse]; + fM0Msource = &DC[dM0M * numberOfLBnodesCoarse]; + fP0Msource = &DC[dP0M * numberOfLBnodesCoarse]; + fM0Psource = &DC[dM0P * numberOfLBnodesCoarse]; + f0PPsource = &DC[d0PP * numberOfLBnodesCoarse]; + f0MMsource = &DC[d0MM * numberOfLBnodesCoarse]; + f0PMsource = &DC[d0PM * numberOfLBnodesCoarse]; + f0MPsource = &DC[d0MP * numberOfLBnodesCoarse]; + f000source = &DC[d000 * numberOfLBnodesCoarse]; + fMMMsource = &DC[dMMM * numberOfLBnodesCoarse]; + fMMPsource = &DC[dMMP * numberOfLBnodesCoarse]; + fMPPsource = &DC[dMPP * numberOfLBnodesCoarse]; + fMPMsource = &DC[dMPM * numberOfLBnodesCoarse]; + fPPMsource = &DC[dPPM * numberOfLBnodesCoarse]; + fPPPsource = &DC[dPPP * numberOfLBnodesCoarse]; + fPMPsource = &DC[dPMP * numberOfLBnodesCoarse]; + fPMMsource = &DC[dPMM * numberOfLBnodesCoarse]; } else { - fP00source = &DC[DIR_M00 * numberOfLBnodesCoarse]; - fM00source = &DC[DIR_P00 * numberOfLBnodesCoarse]; - f0P0source = &DC[DIR_0M0 * numberOfLBnodesCoarse]; - f0M0source = &DC[DIR_0P0 * numberOfLBnodesCoarse]; - f00Psource = &DC[DIR_00M * numberOfLBnodesCoarse]; - f00Msource = &DC[DIR_00P * numberOfLBnodesCoarse]; - fPP0source = &DC[DIR_MM0 * numberOfLBnodesCoarse]; - fMM0source = &DC[DIR_PP0 * numberOfLBnodesCoarse]; - fPM0source = &DC[DIR_MP0 * numberOfLBnodesCoarse]; - fMP0source = &DC[DIR_PM0 * numberOfLBnodesCoarse]; - fP0Psource = &DC[DIR_M0M * numberOfLBnodesCoarse]; - fM0Msource = &DC[DIR_P0P * numberOfLBnodesCoarse]; - fP0Msource = &DC[DIR_M0P * numberOfLBnodesCoarse]; - fM0Psource = &DC[DIR_P0M * numberOfLBnodesCoarse]; - f0PPsource = &DC[DIR_0MM * numberOfLBnodesCoarse]; - f0MMsource = &DC[DIR_0PP * numberOfLBnodesCoarse]; - f0PMsource = &DC[DIR_0MP * numberOfLBnodesCoarse]; - f0MPsource = &DC[DIR_0PM * numberOfLBnodesCoarse]; - f000source = &DC[DIR_000 * numberOfLBnodesCoarse]; - fMMMsource = &DC[DIR_PPP * numberOfLBnodesCoarse]; - fMMPsource = &DC[DIR_PPM * numberOfLBnodesCoarse]; - fMPPsource = &DC[DIR_PMM * numberOfLBnodesCoarse]; - fMPMsource = &DC[DIR_PMP * numberOfLBnodesCoarse]; - fPPMsource = &DC[DIR_MMP * numberOfLBnodesCoarse]; - fPPPsource = &DC[DIR_MMM * numberOfLBnodesCoarse]; - fPMPsource = &DC[DIR_MPM * numberOfLBnodesCoarse]; - fPMMsource = &DC[DIR_MPP * numberOfLBnodesCoarse]; + fP00source = &DC[dM00 * numberOfLBnodesCoarse]; + fM00source = &DC[dP00 * numberOfLBnodesCoarse]; + f0P0source = &DC[d0M0 * numberOfLBnodesCoarse]; + f0M0source = &DC[d0P0 * numberOfLBnodesCoarse]; + f00Psource = &DC[d00M * numberOfLBnodesCoarse]; + f00Msource = &DC[d00P * numberOfLBnodesCoarse]; + fPP0source = &DC[dMM0 * numberOfLBnodesCoarse]; + fMM0source = &DC[dPP0 * numberOfLBnodesCoarse]; + fPM0source = &DC[dMP0 * numberOfLBnodesCoarse]; + fMP0source = &DC[dPM0 * numberOfLBnodesCoarse]; + fP0Psource = &DC[dM0M * numberOfLBnodesCoarse]; + fM0Msource = &DC[dP0P * numberOfLBnodesCoarse]; + fP0Msource = &DC[dM0P * numberOfLBnodesCoarse]; + fM0Psource = &DC[dP0M * numberOfLBnodesCoarse]; + f0PPsource = &DC[d0MM * numberOfLBnodesCoarse]; + f0MMsource = &DC[d0PP * numberOfLBnodesCoarse]; + f0PMsource = &DC[d0MP * numberOfLBnodesCoarse]; + f0MPsource = &DC[d0PM * numberOfLBnodesCoarse]; + f000source = &DC[d000 * numberOfLBnodesCoarse]; + fMMMsource = &DC[dPPP * numberOfLBnodesCoarse]; + fMMPsource = &DC[dPPM * numberOfLBnodesCoarse]; + fMPPsource = &DC[dPMM * numberOfLBnodesCoarse]; + fMPMsource = &DC[dPMP * numberOfLBnodesCoarse]; + fPPMsource = &DC[dMMP * numberOfLBnodesCoarse]; + fPPPsource = &DC[dMMM * numberOfLBnodesCoarse]; + fPMPsource = &DC[dMPM * numberOfLBnodesCoarse]; + fPMMsource = &DC[dMPP * numberOfLBnodesCoarse]; } Distributions6 G; - G.g[DIR_P00] = &G6[DIR_P00 * numberOfLBnodesFine]; - G.g[DIR_M00] = &G6[DIR_M00 * numberOfLBnodesFine]; - G.g[DIR_0P0] = &G6[DIR_0P0 * numberOfLBnodesFine]; - G.g[DIR_0M0] = &G6[DIR_0M0 * numberOfLBnodesFine]; - G.g[DIR_00P] = &G6[DIR_00P * numberOfLBnodesFine]; - G.g[DIR_00M] = &G6[DIR_00M * numberOfLBnodesFine]; + G.g[dP00] = &G6[dP00 * numberOfLBnodesFine]; + G.g[dM00] = &G6[dM00 * numberOfLBnodesFine]; + G.g[d0P0] = &G6[d0P0 * numberOfLBnodesFine]; + G.g[d0M0] = &G6[d0M0 * numberOfLBnodesFine]; + G.g[d00P] = &G6[d00P * numberOfLBnodesFine]; + G.g[d00M] = &G6[d00M * numberOfLBnodesFine]; //////////////////////////////////////////////////////////////////////////////// const unsigned ix = threadIdx.x; // Globaler x-Index @@ -5522,12 +5522,12 @@ __global__ void scaleCF_comp_D3Q27F3( real* DC, //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////// - (G.g[DIR_P00])[k000] = mgcbb; - (G.g[DIR_M00])[kM00] = mgabb; - (G.g[DIR_0P0])[k000] = mgbcb; - (G.g[DIR_0M0])[k0M0] = mgbab; - (G.g[DIR_00P])[k000] = mgbbc; - (G.g[DIR_00M])[k00M] = mgbba; + (G.g[dP00])[k000] = mgcbb; + (G.g[dM00])[kM00] = mgabb; + (G.g[d0P0])[k000] = mgbcb; + (G.g[d0M0])[k0M0] = mgbab; + (G.g[d00P])[k000] = mgbbc; + (G.g[d00M])[k00M] = mgbba; //////////////////////////////////////////////////////////////////////////////////// fP00dest[k000] = mfcbb; fM00dest[kM00] = mfabb; @@ -5949,12 +5949,12 @@ __global__ void scaleCF_comp_D3Q27F3( real* DC, //////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////// - (G.g[DIR_P00])[k000] = mgcbb; - (G.g[DIR_M00])[kM00] = mgabb; - (G.g[DIR_0P0])[k000] = mgbcb; - (G.g[DIR_0M0])[k0M0] = mgbab; - (G.g[DIR_00P])[k000] = mgbbc; - (G.g[DIR_00M])[k00M] = mgbba; + (G.g[dP00])[k000] = mgcbb; + (G.g[dM00])[kM00] = mgabb; + (G.g[d0P0])[k000] = mgbcb; + (G.g[d0M0])[k0M0] = mgbab; + (G.g[d00P])[k000] = mgbbc; + (G.g[d00M])[k00M] = mgbba; //////////////////////////////////////////////////////////////////////////////////// fP00dest[k000] = mfcbb; fM00dest[kM00] = mfabb; @@ -6379,12 +6379,12 @@ __global__ void scaleCF_comp_D3Q27F3( real* DC, //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////// - (G.g[DIR_P00])[k000] = mgcbb; - (G.g[DIR_M00])[kM00] = mgabb; - (G.g[DIR_0P0])[k000] = mgbcb; - (G.g[DIR_0M0])[k0M0] = mgbab; - (G.g[DIR_00P])[k000] = mgbbc; - (G.g[DIR_00M])[k00M] = mgbba; + (G.g[dP00])[k000] = mgcbb; + (G.g[dM00])[kM00] = mgabb; + (G.g[d0P0])[k000] = mgbcb; + (G.g[d0M0])[k0M0] = mgbab; + (G.g[d00P])[k000] = mgbbc; + (G.g[d00M])[k00M] = mgbba; //////////////////////////////////////////////////////////////////////////////////// fP00dest[k000] = mfcbb; fM00dest[kM00] = mfabb; @@ -6809,12 +6809,12 @@ __global__ void scaleCF_comp_D3Q27F3( real* DC, //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////// - (G.g[DIR_P00])[k000] = mgcbb; - (G.g[DIR_M00])[kM00] = mgabb; - (G.g[DIR_0P0])[k000] = mgbcb; - (G.g[DIR_0M0])[k0M0] = mgbab; - (G.g[DIR_00P])[k000] = mgbbc; - (G.g[DIR_00M])[k00M] = mgbba; + (G.g[dP00])[k000] = mgcbb; + (G.g[dM00])[kM00] = mgabb; + (G.g[d0P0])[k000] = mgbcb; + (G.g[d0M0])[k0M0] = mgbab; + (G.g[d00P])[k000] = mgbbc; + (G.g[d00M])[k00M] = mgbba; //////////////////////////////////////////////////////////////////////////////////// fP00dest[k000] = mfcbb; fM00dest[kM00] = mfabb; @@ -7249,12 +7249,12 @@ __global__ void scaleCF_comp_D3Q27F3( real* DC, //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////// - (G.g[DIR_P00])[k000] = mgcbb; - (G.g[DIR_M00])[kM00] = mgabb; - (G.g[DIR_0P0])[k000] = mgbcb; - (G.g[DIR_0M0])[k0M0] = mgbab; - (G.g[DIR_00P])[k000] = mgbbc; - (G.g[DIR_00M])[k00M] = mgbba; + (G.g[dP00])[k000] = mgcbb; + (G.g[dM00])[kM00] = mgabb; + (G.g[d0P0])[k000] = mgbcb; + (G.g[d0M0])[k0M0] = mgbab; + (G.g[d00P])[k000] = mgbbc; + (G.g[d00M])[k00M] = mgbba; //////////////////////////////////////////////////////////////////////////////////// fP00dest[k000] = mfcbb; fM00dest[kM00] = mfabb; @@ -7679,12 +7679,12 @@ __global__ void scaleCF_comp_D3Q27F3( real* DC, //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////// - (G.g[DIR_P00])[k000] = mgcbb; - (G.g[DIR_M00])[kM00] = mgabb; - (G.g[DIR_0P0])[k000] = mgbcb; - (G.g[DIR_0M0])[k0M0] = mgbab; - (G.g[DIR_00P])[k000] = mgbbc; - (G.g[DIR_00M])[k00M] = mgbba; + (G.g[dP00])[k000] = mgcbb; + (G.g[dM00])[kM00] = mgabb; + (G.g[d0P0])[k000] = mgbcb; + (G.g[d0M0])[k0M0] = mgbab; + (G.g[d00P])[k000] = mgbbc; + (G.g[d00M])[k00M] = mgbba; //////////////////////////////////////////////////////////////////////////////////// fP00dest[k000] = mfcbb; fM00dest[kM00] = mfabb; @@ -8109,12 +8109,12 @@ __global__ void scaleCF_comp_D3Q27F3( real* DC, //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////// - (G.g[DIR_P00])[k000] = mgcbb; - (G.g[DIR_M00])[kM00] = mgabb; - (G.g[DIR_0P0])[k000] = mgbcb; - (G.g[DIR_0M0])[k0M0] = mgbab; - (G.g[DIR_00P])[k000] = mgbbc; - (G.g[DIR_00M])[k00M] = mgbba; + (G.g[dP00])[k000] = mgcbb; + (G.g[dM00])[kM00] = mgabb; + (G.g[d0P0])[k000] = mgbcb; + (G.g[d0M0])[k0M0] = mgbab; + (G.g[d00P])[k000] = mgbbc; + (G.g[d00M])[k00M] = mgbba; //////////////////////////////////////////////////////////////////////////////////// fP00dest[k000] = mfcbb; fM00dest[kM00] = mfabb; @@ -8539,12 +8539,12 @@ __global__ void scaleCF_comp_D3Q27F3( real* DC, //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////// - (G.g[DIR_P00])[k000] = mgcbb; - (G.g[DIR_M00])[kM00] = mgabb; - (G.g[DIR_0P0])[k000] = mgbcb; - (G.g[DIR_0M0])[k0M0] = mgbab; - (G.g[DIR_00P])[k000] = mgbbc; - (G.g[DIR_00M])[k00M] = mgbba; + (G.g[dP00])[k000] = mgcbb; + (G.g[dM00])[kM00] = mgabb; + (G.g[d0P0])[k000] = mgbcb; + (G.g[d0M0])[k0M0] = mgbab; + (G.g[d00P])[k000] = mgbbc; + (G.g[d00M])[k00M] = mgbba; //////////////////////////////////////////////////////////////////////////////////// fP00dest[k000] = mfcbb; fM00dest[kM00] = mfabb; diff --git a/src/gpu/VirtualFluids_GPU/GPU/GridScaling/ScaleFC27.cu b/src/gpu/core/GPU/GridScaling/ScaleFC27.cu similarity index 93% rename from src/gpu/VirtualFluids_GPU/GPU/GridScaling/ScaleFC27.cu rename to src/gpu/core/GPU/GridScaling/ScaleFC27.cu index 08c47230faa5ffeed0b996e2b1125d3c45e6bce1..803cf0bc4197d4e31b28899254f3d85a830efeff 100644 --- a/src/gpu/VirtualFluids_GPU/GPU/GridScaling/ScaleFC27.cu +++ b/src/gpu/core/GPU/GridScaling/ScaleFC27.cu @@ -43,33 +43,33 @@ __global__ void scaleFC_0817_comp_27( real* DC, *f000source, *fMMMsource, *fMMPsource, *fMPPsource, *fMPMsource, *fPPMsource, *fPPPsource, *fPMPsource, *fPMMsource; - fP00source = &DF[DIR_P00 * numberOfLBnodesFine]; - fM00source = &DF[DIR_M00 * numberOfLBnodesFine]; - f0P0source = &DF[DIR_0P0 * numberOfLBnodesFine]; - f0M0source = &DF[DIR_0M0 * numberOfLBnodesFine]; - f00Psource = &DF[DIR_00P * numberOfLBnodesFine]; - f00Msource = &DF[DIR_00M * numberOfLBnodesFine]; - fPP0source = &DF[DIR_PP0 * numberOfLBnodesFine]; - fMM0source = &DF[DIR_MM0 * numberOfLBnodesFine]; - fPM0source = &DF[DIR_PM0 * numberOfLBnodesFine]; - fMP0source = &DF[DIR_MP0 * numberOfLBnodesFine]; - fP0Psource = &DF[DIR_P0P * numberOfLBnodesFine]; - fM0Msource = &DF[DIR_M0M * numberOfLBnodesFine]; - fP0Msource = &DF[DIR_P0M * numberOfLBnodesFine]; - fM0Psource = &DF[DIR_M0P * numberOfLBnodesFine]; - f0PPsource = &DF[DIR_0PP * numberOfLBnodesFine]; - f0MMsource = &DF[DIR_0MM * numberOfLBnodesFine]; - f0PMsource = &DF[DIR_0PM * numberOfLBnodesFine]; - f0MPsource = &DF[DIR_0MP * numberOfLBnodesFine]; - f000source = &DF[DIR_000 * numberOfLBnodesFine]; - fMMMsource = &DF[DIR_MMM * numberOfLBnodesFine]; - fMMPsource = &DF[DIR_MMP * numberOfLBnodesFine]; - fMPPsource = &DF[DIR_MPP * numberOfLBnodesFine]; - fMPMsource = &DF[DIR_MPM * numberOfLBnodesFine]; - fPPMsource = &DF[DIR_PPM * numberOfLBnodesFine]; - fPPPsource = &DF[DIR_PPP * numberOfLBnodesFine]; - fPMPsource = &DF[DIR_PMP * numberOfLBnodesFine]; - fPMMsource = &DF[DIR_PMM * numberOfLBnodesFine]; + fP00source = &DF[dP00 * numberOfLBnodesFine]; + fM00source = &DF[dM00 * numberOfLBnodesFine]; + f0P0source = &DF[d0P0 * numberOfLBnodesFine]; + f0M0source = &DF[d0M0 * numberOfLBnodesFine]; + f00Psource = &DF[d00P * numberOfLBnodesFine]; + f00Msource = &DF[d00M * numberOfLBnodesFine]; + fPP0source = &DF[dPP0 * numberOfLBnodesFine]; + fMM0source = &DF[dMM0 * numberOfLBnodesFine]; + fPM0source = &DF[dPM0 * numberOfLBnodesFine]; + fMP0source = &DF[dMP0 * numberOfLBnodesFine]; + fP0Psource = &DF[dP0P * numberOfLBnodesFine]; + fM0Msource = &DF[dM0M * numberOfLBnodesFine]; + fP0Msource = &DF[dP0M * numberOfLBnodesFine]; + fM0Psource = &DF[dM0P * numberOfLBnodesFine]; + f0PPsource = &DF[d0PP * numberOfLBnodesFine]; + f0MMsource = &DF[d0MM * numberOfLBnodesFine]; + f0PMsource = &DF[d0PM * numberOfLBnodesFine]; + f0MPsource = &DF[d0MP * numberOfLBnodesFine]; + f000source = &DF[d000 * numberOfLBnodesFine]; + fMMMsource = &DF[dMMM * numberOfLBnodesFine]; + fMMPsource = &DF[dMMP * numberOfLBnodesFine]; + fMPPsource = &DF[dMPP * numberOfLBnodesFine]; + fMPMsource = &DF[dMPM * numberOfLBnodesFine]; + fPPMsource = &DF[dPPM * numberOfLBnodesFine]; + fPPPsource = &DF[dPPP * numberOfLBnodesFine]; + fPMPsource = &DF[dPMP * numberOfLBnodesFine]; + fPMMsource = &DF[dPMM * numberOfLBnodesFine]; real *fP00dest, *fM00dest, *f0P0dest, *f0M0dest, *f00Pdest, *f00Mdest, *fPP0dest, *fMM0dest, *fPM0dest, @@ -78,63 +78,63 @@ __global__ void scaleFC_0817_comp_27( real* DC, if (isEvenTimestep==true) { - fP00dest = &DC[DIR_P00 * numberOfLBnodesCoarse]; - fM00dest = &DC[DIR_M00 * numberOfLBnodesCoarse]; - f0P0dest = &DC[DIR_0P0 * numberOfLBnodesCoarse]; - f0M0dest = &DC[DIR_0M0 * numberOfLBnodesCoarse]; - f00Pdest = &DC[DIR_00P * numberOfLBnodesCoarse]; - f00Mdest = &DC[DIR_00M * numberOfLBnodesCoarse]; - fPP0dest = &DC[DIR_PP0 * numberOfLBnodesCoarse]; - fMM0dest = &DC[DIR_MM0 * numberOfLBnodesCoarse]; - fPM0dest = &DC[DIR_PM0 * numberOfLBnodesCoarse]; - fMP0dest = &DC[DIR_MP0 * numberOfLBnodesCoarse]; - fP0Pdest = &DC[DIR_P0P * numberOfLBnodesCoarse]; - fM0Mdest = &DC[DIR_M0M * numberOfLBnodesCoarse]; - fP0Mdest = &DC[DIR_P0M * numberOfLBnodesCoarse]; - fM0Pdest = &DC[DIR_M0P * numberOfLBnodesCoarse]; - f0PPdest = &DC[DIR_0PP * numberOfLBnodesCoarse]; - f0MMdest = &DC[DIR_0MM * numberOfLBnodesCoarse]; - f0PMdest = &DC[DIR_0PM * numberOfLBnodesCoarse]; - f0MPdest = &DC[DIR_0MP * numberOfLBnodesCoarse]; - f000dest = &DC[DIR_000 * numberOfLBnodesCoarse]; - fMMMdest = &DC[DIR_MMM * numberOfLBnodesCoarse]; - fMMPdest = &DC[DIR_MMP * numberOfLBnodesCoarse]; - fMPPdest = &DC[DIR_MPP * numberOfLBnodesCoarse]; - fMPMdest = &DC[DIR_MPM * numberOfLBnodesCoarse]; - fPPMdest = &DC[DIR_PPM * numberOfLBnodesCoarse]; - fPPPdest = &DC[DIR_PPP * numberOfLBnodesCoarse]; - fPMPdest = &DC[DIR_PMP * numberOfLBnodesCoarse]; - fPMMdest = &DC[DIR_PMM * numberOfLBnodesCoarse]; + fP00dest = &DC[dP00 * numberOfLBnodesCoarse]; + fM00dest = &DC[dM00 * numberOfLBnodesCoarse]; + f0P0dest = &DC[d0P0 * numberOfLBnodesCoarse]; + f0M0dest = &DC[d0M0 * numberOfLBnodesCoarse]; + f00Pdest = &DC[d00P * numberOfLBnodesCoarse]; + f00Mdest = &DC[d00M * numberOfLBnodesCoarse]; + fPP0dest = &DC[dPP0 * numberOfLBnodesCoarse]; + fMM0dest = &DC[dMM0 * numberOfLBnodesCoarse]; + fPM0dest = &DC[dPM0 * numberOfLBnodesCoarse]; + fMP0dest = &DC[dMP0 * numberOfLBnodesCoarse]; + fP0Pdest = &DC[dP0P * numberOfLBnodesCoarse]; + fM0Mdest = &DC[dM0M * numberOfLBnodesCoarse]; + fP0Mdest = &DC[dP0M * numberOfLBnodesCoarse]; + fM0Pdest = &DC[dM0P * numberOfLBnodesCoarse]; + f0PPdest = &DC[d0PP * numberOfLBnodesCoarse]; + f0MMdest = &DC[d0MM * numberOfLBnodesCoarse]; + f0PMdest = &DC[d0PM * numberOfLBnodesCoarse]; + f0MPdest = &DC[d0MP * numberOfLBnodesCoarse]; + f000dest = &DC[d000 * numberOfLBnodesCoarse]; + fMMMdest = &DC[dMMM * numberOfLBnodesCoarse]; + fMMPdest = &DC[dMMP * numberOfLBnodesCoarse]; + fMPPdest = &DC[dMPP * numberOfLBnodesCoarse]; + fMPMdest = &DC[dMPM * numberOfLBnodesCoarse]; + fPPMdest = &DC[dPPM * numberOfLBnodesCoarse]; + fPPPdest = &DC[dPPP * numberOfLBnodesCoarse]; + fPMPdest = &DC[dPMP * numberOfLBnodesCoarse]; + fPMMdest = &DC[dPMM * numberOfLBnodesCoarse]; } else { - fP00dest = &DC[DIR_M00 * numberOfLBnodesCoarse]; - fM00dest = &DC[DIR_P00 * numberOfLBnodesCoarse]; - f0P0dest = &DC[DIR_0M0 * numberOfLBnodesCoarse]; - f0M0dest = &DC[DIR_0P0 * numberOfLBnodesCoarse]; - f00Pdest = &DC[DIR_00M * numberOfLBnodesCoarse]; - f00Mdest = &DC[DIR_00P * numberOfLBnodesCoarse]; - fPP0dest = &DC[DIR_MM0 * numberOfLBnodesCoarse]; - fMM0dest = &DC[DIR_PP0 * numberOfLBnodesCoarse]; - fPM0dest = &DC[DIR_MP0 * numberOfLBnodesCoarse]; - fMP0dest = &DC[DIR_PM0 * numberOfLBnodesCoarse]; - fP0Pdest = &DC[DIR_M0M * numberOfLBnodesCoarse]; - fM0Mdest = &DC[DIR_P0P * numberOfLBnodesCoarse]; - fP0Mdest = &DC[DIR_M0P * numberOfLBnodesCoarse]; - fM0Pdest = &DC[DIR_P0M * numberOfLBnodesCoarse]; - f0PPdest = &DC[DIR_0MM * numberOfLBnodesCoarse]; - f0MMdest = &DC[DIR_0PP * numberOfLBnodesCoarse]; - f0PMdest = &DC[DIR_0MP * numberOfLBnodesCoarse]; - f0MPdest = &DC[DIR_0PM * numberOfLBnodesCoarse]; - f000dest = &DC[DIR_000 * numberOfLBnodesCoarse]; - fMMMdest = &DC[DIR_PPP * numberOfLBnodesCoarse]; - fMMPdest = &DC[DIR_PPM * numberOfLBnodesCoarse]; - fMPPdest = &DC[DIR_PMM * numberOfLBnodesCoarse]; - fMPMdest = &DC[DIR_PMP * numberOfLBnodesCoarse]; - fPPMdest = &DC[DIR_MMP * numberOfLBnodesCoarse]; - fPPPdest = &DC[DIR_MMM * numberOfLBnodesCoarse]; - fPMPdest = &DC[DIR_MPM * numberOfLBnodesCoarse]; - fPMMdest = &DC[DIR_MPP * numberOfLBnodesCoarse]; + fP00dest = &DC[dM00 * numberOfLBnodesCoarse]; + fM00dest = &DC[dP00 * numberOfLBnodesCoarse]; + f0P0dest = &DC[d0M0 * numberOfLBnodesCoarse]; + f0M0dest = &DC[d0P0 * numberOfLBnodesCoarse]; + f00Pdest = &DC[d00M * numberOfLBnodesCoarse]; + f00Mdest = &DC[d00P * numberOfLBnodesCoarse]; + fPP0dest = &DC[dMM0 * numberOfLBnodesCoarse]; + fMM0dest = &DC[dPP0 * numberOfLBnodesCoarse]; + fPM0dest = &DC[dMP0 * numberOfLBnodesCoarse]; + fMP0dest = &DC[dPM0 * numberOfLBnodesCoarse]; + fP0Pdest = &DC[dM0M * numberOfLBnodesCoarse]; + fM0Mdest = &DC[dP0P * numberOfLBnodesCoarse]; + fP0Mdest = &DC[dM0P * numberOfLBnodesCoarse]; + fM0Pdest = &DC[dP0M * numberOfLBnodesCoarse]; + f0PPdest = &DC[d0MM * numberOfLBnodesCoarse]; + f0MMdest = &DC[d0PP * numberOfLBnodesCoarse]; + f0PMdest = &DC[d0MP * numberOfLBnodesCoarse]; + f0MPdest = &DC[d0PM * numberOfLBnodesCoarse]; + f000dest = &DC[d000 * numberOfLBnodesCoarse]; + fMMMdest = &DC[dPPP * numberOfLBnodesCoarse]; + fMMPdest = &DC[dPPM * numberOfLBnodesCoarse]; + fMPPdest = &DC[dPMM * numberOfLBnodesCoarse]; + fMPMdest = &DC[dPMP * numberOfLBnodesCoarse]; + fPPMdest = &DC[dMMP * numberOfLBnodesCoarse]; + fPPPdest = &DC[dMMM * numberOfLBnodesCoarse]; + fPMPdest = &DC[dMPM * numberOfLBnodesCoarse]; + fPMMdest = &DC[dMPP * numberOfLBnodesCoarse]; } //////////////////////////////////////////////////////////////////////////////// const unsigned ix = threadIdx.x; // Globaler x-Index @@ -1236,96 +1236,96 @@ __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[DIR_P00 * numberOfLBnodesFine]; - fwF = &DF[DIR_M00 * numberOfLBnodesFine]; - fnF = &DF[DIR_0P0 * numberOfLBnodesFine]; - fsF = &DF[DIR_0M0 * numberOfLBnodesFine]; - ftF = &DF[DIR_00P * numberOfLBnodesFine]; - fbF = &DF[DIR_00M * numberOfLBnodesFine]; - fneF = &DF[DIR_PP0 * numberOfLBnodesFine]; - fswF = &DF[DIR_MM0 * numberOfLBnodesFine]; - fseF = &DF[DIR_PM0 * numberOfLBnodesFine]; - fnwF = &DF[DIR_MP0 * numberOfLBnodesFine]; - fteF = &DF[DIR_P0P * numberOfLBnodesFine]; - fbwF = &DF[DIR_M0M * numberOfLBnodesFine]; - fbeF = &DF[DIR_P0M * numberOfLBnodesFine]; - ftwF = &DF[DIR_M0P * numberOfLBnodesFine]; - ftnF = &DF[DIR_0PP * numberOfLBnodesFine]; - fbsF = &DF[DIR_0MM * numberOfLBnodesFine]; - fbnF = &DF[DIR_0PM * numberOfLBnodesFine]; - ftsF = &DF[DIR_0MP * numberOfLBnodesFine]; - fzeroF = &DF[DIR_000 * numberOfLBnodesFine]; - ftneF = &DF[DIR_PPP * numberOfLBnodesFine]; - ftswF = &DF[DIR_MMP * numberOfLBnodesFine]; - ftseF = &DF[DIR_PMP * numberOfLBnodesFine]; - ftnwF = &DF[DIR_MPP * numberOfLBnodesFine]; - fbneF = &DF[DIR_PPM * numberOfLBnodesFine]; - fbswF = &DF[DIR_MMM * numberOfLBnodesFine]; - fbseF = &DF[DIR_PMM * numberOfLBnodesFine]; - fbnwF = &DF[DIR_MPM * numberOfLBnodesFine]; + feF = &DF[dP00 * numberOfLBnodesFine]; + fwF = &DF[dM00 * numberOfLBnodesFine]; + fnF = &DF[d0P0 * numberOfLBnodesFine]; + fsF = &DF[d0M0 * numberOfLBnodesFine]; + ftF = &DF[d00P * numberOfLBnodesFine]; + fbF = &DF[d00M * numberOfLBnodesFine]; + fneF = &DF[dPP0 * numberOfLBnodesFine]; + fswF = &DF[dMM0 * numberOfLBnodesFine]; + fseF = &DF[dPM0 * numberOfLBnodesFine]; + fnwF = &DF[dMP0 * numberOfLBnodesFine]; + fteF = &DF[dP0P * numberOfLBnodesFine]; + fbwF = &DF[dM0M * numberOfLBnodesFine]; + fbeF = &DF[dP0M * numberOfLBnodesFine]; + ftwF = &DF[dM0P * numberOfLBnodesFine]; + ftnF = &DF[d0PP * numberOfLBnodesFine]; + fbsF = &DF[d0MM * numberOfLBnodesFine]; + fbnF = &DF[d0PM * numberOfLBnodesFine]; + ftsF = &DF[d0MP * numberOfLBnodesFine]; + fzeroF = &DF[d000 * numberOfLBnodesFine]; + ftneF = &DF[dPPP * numberOfLBnodesFine]; + ftswF = &DF[dMMP * numberOfLBnodesFine]; + ftseF = &DF[dPMP * numberOfLBnodesFine]; + ftnwF = &DF[dMPP * numberOfLBnodesFine]; + fbneF = &DF[dPPM * numberOfLBnodesFine]; + fbswF = &DF[dMMM * numberOfLBnodesFine]; + fbseF = &DF[dPMM * numberOfLBnodesFine]; + fbnwF = &DF[dMPM * numberOfLBnodesFine]; 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[DIR_P00 * numberOfLBnodesCoarse]; - fwC = &DC[DIR_M00 * numberOfLBnodesCoarse]; - fnC = &DC[DIR_0P0 * numberOfLBnodesCoarse]; - fsC = &DC[DIR_0M0 * numberOfLBnodesCoarse]; - ftC = &DC[DIR_00P * numberOfLBnodesCoarse]; - fbC = &DC[DIR_00M * numberOfLBnodesCoarse]; - fneC = &DC[DIR_PP0 * numberOfLBnodesCoarse]; - fswC = &DC[DIR_MM0 * numberOfLBnodesCoarse]; - fseC = &DC[DIR_PM0 * numberOfLBnodesCoarse]; - fnwC = &DC[DIR_MP0 * numberOfLBnodesCoarse]; - fteC = &DC[DIR_P0P * numberOfLBnodesCoarse]; - fbwC = &DC[DIR_M0M * numberOfLBnodesCoarse]; - fbeC = &DC[DIR_P0M * numberOfLBnodesCoarse]; - ftwC = &DC[DIR_M0P * numberOfLBnodesCoarse]; - ftnC = &DC[DIR_0PP * numberOfLBnodesCoarse]; - fbsC = &DC[DIR_0MM * numberOfLBnodesCoarse]; - fbnC = &DC[DIR_0PM * numberOfLBnodesCoarse]; - ftsC = &DC[DIR_0MP * numberOfLBnodesCoarse]; - fzeroC = &DC[DIR_000 * numberOfLBnodesCoarse]; - ftneC = &DC[DIR_PPP * numberOfLBnodesCoarse]; - ftswC = &DC[DIR_MMP * numberOfLBnodesCoarse]; - ftseC = &DC[DIR_PMP * numberOfLBnodesCoarse]; - ftnwC = &DC[DIR_MPP * numberOfLBnodesCoarse]; - fbneC = &DC[DIR_PPM * numberOfLBnodesCoarse]; - fbswC = &DC[DIR_MMM * numberOfLBnodesCoarse]; - fbseC = &DC[DIR_PMM * numberOfLBnodesCoarse]; - fbnwC = &DC[DIR_MPM * numberOfLBnodesCoarse]; + feC = &DC[dP00 * numberOfLBnodesCoarse]; + fwC = &DC[dM00 * numberOfLBnodesCoarse]; + fnC = &DC[d0P0 * numberOfLBnodesCoarse]; + fsC = &DC[d0M0 * numberOfLBnodesCoarse]; + ftC = &DC[d00P * numberOfLBnodesCoarse]; + fbC = &DC[d00M * numberOfLBnodesCoarse]; + fneC = &DC[dPP0 * numberOfLBnodesCoarse]; + fswC = &DC[dMM0 * numberOfLBnodesCoarse]; + fseC = &DC[dPM0 * numberOfLBnodesCoarse]; + fnwC = &DC[dMP0 * numberOfLBnodesCoarse]; + fteC = &DC[dP0P * numberOfLBnodesCoarse]; + fbwC = &DC[dM0M * numberOfLBnodesCoarse]; + fbeC = &DC[dP0M * numberOfLBnodesCoarse]; + ftwC = &DC[dM0P * numberOfLBnodesCoarse]; + ftnC = &DC[d0PP * numberOfLBnodesCoarse]; + fbsC = &DC[d0MM * numberOfLBnodesCoarse]; + fbnC = &DC[d0PM * numberOfLBnodesCoarse]; + ftsC = &DC[d0MP * numberOfLBnodesCoarse]; + fzeroC = &DC[d000 * numberOfLBnodesCoarse]; + ftneC = &DC[dPPP * numberOfLBnodesCoarse]; + ftswC = &DC[dMMP * numberOfLBnodesCoarse]; + ftseC = &DC[dPMP * numberOfLBnodesCoarse]; + ftnwC = &DC[dMPP * numberOfLBnodesCoarse]; + fbneC = &DC[dPPM * numberOfLBnodesCoarse]; + fbswC = &DC[dMMM * numberOfLBnodesCoarse]; + fbseC = &DC[dPMM * numberOfLBnodesCoarse]; + fbnwC = &DC[dMPM * numberOfLBnodesCoarse]; } else { - fwC = &DC[DIR_P00 * numberOfLBnodesCoarse]; - feC = &DC[DIR_M00 * numberOfLBnodesCoarse]; - fsC = &DC[DIR_0P0 * numberOfLBnodesCoarse]; - fnC = &DC[DIR_0M0 * numberOfLBnodesCoarse]; - fbC = &DC[DIR_00P * numberOfLBnodesCoarse]; - ftC = &DC[DIR_00M * numberOfLBnodesCoarse]; - fswC = &DC[DIR_PP0 * numberOfLBnodesCoarse]; - fneC = &DC[DIR_MM0 * numberOfLBnodesCoarse]; - fnwC = &DC[DIR_PM0 * numberOfLBnodesCoarse]; - fseC = &DC[DIR_MP0 * numberOfLBnodesCoarse]; - fbwC = &DC[DIR_P0P * numberOfLBnodesCoarse]; - fteC = &DC[DIR_M0M * numberOfLBnodesCoarse]; - ftwC = &DC[DIR_P0M * numberOfLBnodesCoarse]; - fbeC = &DC[DIR_M0P * numberOfLBnodesCoarse]; - fbsC = &DC[DIR_0PP * numberOfLBnodesCoarse]; - ftnC = &DC[DIR_0MM * numberOfLBnodesCoarse]; - ftsC = &DC[DIR_0PM * numberOfLBnodesCoarse]; - fbnC = &DC[DIR_0MP * numberOfLBnodesCoarse]; - fzeroC = &DC[DIR_000 * numberOfLBnodesCoarse]; - fbswC = &DC[DIR_PPP * numberOfLBnodesCoarse]; - fbneC = &DC[DIR_MMP * numberOfLBnodesCoarse]; - fbnwC = &DC[DIR_PMP * numberOfLBnodesCoarse]; - fbseC = &DC[DIR_MPP * numberOfLBnodesCoarse]; - ftswC = &DC[DIR_PPM * numberOfLBnodesCoarse]; - ftneC = &DC[DIR_MMM * numberOfLBnodesCoarse]; - ftnwC = &DC[DIR_PMM * numberOfLBnodesCoarse]; - ftseC = &DC[DIR_MPM * numberOfLBnodesCoarse]; + fwC = &DC[dP00 * numberOfLBnodesCoarse]; + feC = &DC[dM00 * numberOfLBnodesCoarse]; + fsC = &DC[d0P0 * numberOfLBnodesCoarse]; + fnC = &DC[d0M0 * numberOfLBnodesCoarse]; + fbC = &DC[d00P * numberOfLBnodesCoarse]; + ftC = &DC[d00M * numberOfLBnodesCoarse]; + fswC = &DC[dPP0 * numberOfLBnodesCoarse]; + fneC = &DC[dMM0 * numberOfLBnodesCoarse]; + fnwC = &DC[dPM0 * numberOfLBnodesCoarse]; + fseC = &DC[dMP0 * numberOfLBnodesCoarse]; + fbwC = &DC[dP0P * numberOfLBnodesCoarse]; + fteC = &DC[dM0M * numberOfLBnodesCoarse]; + ftwC = &DC[dP0M * numberOfLBnodesCoarse]; + fbeC = &DC[dM0P * numberOfLBnodesCoarse]; + fbsC = &DC[d0PP * numberOfLBnodesCoarse]; + ftnC = &DC[d0MM * numberOfLBnodesCoarse]; + ftsC = &DC[d0PM * numberOfLBnodesCoarse]; + fbnC = &DC[d0MP * numberOfLBnodesCoarse]; + fzeroC = &DC[d000 * numberOfLBnodesCoarse]; + fbswC = &DC[dPPP * numberOfLBnodesCoarse]; + fbneC = &DC[dMMP * numberOfLBnodesCoarse]; + fbnwC = &DC[dPMP * numberOfLBnodesCoarse]; + fbseC = &DC[dMPP * numberOfLBnodesCoarse]; + ftswC = &DC[dPPM * numberOfLBnodesCoarse]; + ftneC = &DC[dMMM * numberOfLBnodesCoarse]; + ftnwC = &DC[dPMM * numberOfLBnodesCoarse]; + ftseC = &DC[dMPM * numberOfLBnodesCoarse]; } //////////////////////////////////////////////////////////////////////////////// const unsigned ix = threadIdx.x; // Globaler x-Index @@ -5425,96 +5425,96 @@ __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[DIR_P00 * numberOfLBnodesFine]; - fwF = &DF[DIR_M00 * numberOfLBnodesFine]; - fnF = &DF[DIR_0P0 * numberOfLBnodesFine]; - fsF = &DF[DIR_0M0 * numberOfLBnodesFine]; - ftF = &DF[DIR_00P * numberOfLBnodesFine]; - fbF = &DF[DIR_00M * numberOfLBnodesFine]; - fneF = &DF[DIR_PP0 * numberOfLBnodesFine]; - fswF = &DF[DIR_MM0 * numberOfLBnodesFine]; - fseF = &DF[DIR_PM0 * numberOfLBnodesFine]; - fnwF = &DF[DIR_MP0 * numberOfLBnodesFine]; - fteF = &DF[DIR_P0P * numberOfLBnodesFine]; - fbwF = &DF[DIR_M0M * numberOfLBnodesFine]; - fbeF = &DF[DIR_P0M * numberOfLBnodesFine]; - ftwF = &DF[DIR_M0P * numberOfLBnodesFine]; - ftnF = &DF[DIR_0PP * numberOfLBnodesFine]; - fbsF = &DF[DIR_0MM * numberOfLBnodesFine]; - fbnF = &DF[DIR_0PM * numberOfLBnodesFine]; - ftsF = &DF[DIR_0MP * numberOfLBnodesFine]; - fzeroF = &DF[DIR_000 * numberOfLBnodesFine]; - ftneF = &DF[DIR_PPP * numberOfLBnodesFine]; - ftswF = &DF[DIR_MMP * numberOfLBnodesFine]; - ftseF = &DF[DIR_PMP * numberOfLBnodesFine]; - ftnwF = &DF[DIR_MPP * numberOfLBnodesFine]; - fbneF = &DF[DIR_PPM * numberOfLBnodesFine]; - fbswF = &DF[DIR_MMM * numberOfLBnodesFine]; - fbseF = &DF[DIR_PMM * numberOfLBnodesFine]; - fbnwF = &DF[DIR_MPM * numberOfLBnodesFine]; + feF = &DF[dP00 * numberOfLBnodesFine]; + fwF = &DF[dM00 * numberOfLBnodesFine]; + fnF = &DF[d0P0 * numberOfLBnodesFine]; + fsF = &DF[d0M0 * numberOfLBnodesFine]; + ftF = &DF[d00P * numberOfLBnodesFine]; + fbF = &DF[d00M * numberOfLBnodesFine]; + fneF = &DF[dPP0 * numberOfLBnodesFine]; + fswF = &DF[dMM0 * numberOfLBnodesFine]; + fseF = &DF[dPM0 * numberOfLBnodesFine]; + fnwF = &DF[dMP0 * numberOfLBnodesFine]; + fteF = &DF[dP0P * numberOfLBnodesFine]; + fbwF = &DF[dM0M * numberOfLBnodesFine]; + fbeF = &DF[dP0M * numberOfLBnodesFine]; + ftwF = &DF[dM0P * numberOfLBnodesFine]; + ftnF = &DF[d0PP * numberOfLBnodesFine]; + fbsF = &DF[d0MM * numberOfLBnodesFine]; + fbnF = &DF[d0PM * numberOfLBnodesFine]; + ftsF = &DF[d0MP * numberOfLBnodesFine]; + fzeroF = &DF[d000 * numberOfLBnodesFine]; + ftneF = &DF[dPPP * numberOfLBnodesFine]; + ftswF = &DF[dMMP * numberOfLBnodesFine]; + ftseF = &DF[dPMP * numberOfLBnodesFine]; + ftnwF = &DF[dMPP * numberOfLBnodesFine]; + fbneF = &DF[dPPM * numberOfLBnodesFine]; + fbswF = &DF[dMMM * numberOfLBnodesFine]; + fbseF = &DF[dPMM * numberOfLBnodesFine]; + fbnwF = &DF[dMPM * numberOfLBnodesFine]; 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[DIR_P00 * numberOfLBnodesCoarse]; - fwC = &DC[DIR_M00 * numberOfLBnodesCoarse]; - fnC = &DC[DIR_0P0 * numberOfLBnodesCoarse]; - fsC = &DC[DIR_0M0 * numberOfLBnodesCoarse]; - ftC = &DC[DIR_00P * numberOfLBnodesCoarse]; - fbC = &DC[DIR_00M * numberOfLBnodesCoarse]; - fneC = &DC[DIR_PP0 * numberOfLBnodesCoarse]; - fswC = &DC[DIR_MM0 * numberOfLBnodesCoarse]; - fseC = &DC[DIR_PM0 * numberOfLBnodesCoarse]; - fnwC = &DC[DIR_MP0 * numberOfLBnodesCoarse]; - fteC = &DC[DIR_P0P * numberOfLBnodesCoarse]; - fbwC = &DC[DIR_M0M * numberOfLBnodesCoarse]; - fbeC = &DC[DIR_P0M * numberOfLBnodesCoarse]; - ftwC = &DC[DIR_M0P * numberOfLBnodesCoarse]; - ftnC = &DC[DIR_0PP * numberOfLBnodesCoarse]; - fbsC = &DC[DIR_0MM * numberOfLBnodesCoarse]; - fbnC = &DC[DIR_0PM * numberOfLBnodesCoarse]; - ftsC = &DC[DIR_0MP * numberOfLBnodesCoarse]; - fzeroC = &DC[DIR_000 * numberOfLBnodesCoarse]; - ftneC = &DC[DIR_PPP * numberOfLBnodesCoarse]; - ftswC = &DC[DIR_MMP * numberOfLBnodesCoarse]; - ftseC = &DC[DIR_PMP * numberOfLBnodesCoarse]; - ftnwC = &DC[DIR_MPP * numberOfLBnodesCoarse]; - fbneC = &DC[DIR_PPM * numberOfLBnodesCoarse]; - fbswC = &DC[DIR_MMM * numberOfLBnodesCoarse]; - fbseC = &DC[DIR_PMM * numberOfLBnodesCoarse]; - fbnwC = &DC[DIR_MPM * numberOfLBnodesCoarse]; + feC = &DC[dP00 * numberOfLBnodesCoarse]; + fwC = &DC[dM00 * numberOfLBnodesCoarse]; + fnC = &DC[d0P0 * numberOfLBnodesCoarse]; + fsC = &DC[d0M0 * numberOfLBnodesCoarse]; + ftC = &DC[d00P * numberOfLBnodesCoarse]; + fbC = &DC[d00M * numberOfLBnodesCoarse]; + fneC = &DC[dPP0 * numberOfLBnodesCoarse]; + fswC = &DC[dMM0 * numberOfLBnodesCoarse]; + fseC = &DC[dPM0 * numberOfLBnodesCoarse]; + fnwC = &DC[dMP0 * numberOfLBnodesCoarse]; + fteC = &DC[dP0P * numberOfLBnodesCoarse]; + fbwC = &DC[dM0M * numberOfLBnodesCoarse]; + fbeC = &DC[dP0M * numberOfLBnodesCoarse]; + ftwC = &DC[dM0P * numberOfLBnodesCoarse]; + ftnC = &DC[d0PP * numberOfLBnodesCoarse]; + fbsC = &DC[d0MM * numberOfLBnodesCoarse]; + fbnC = &DC[d0PM * numberOfLBnodesCoarse]; + ftsC = &DC[d0MP * numberOfLBnodesCoarse]; + fzeroC = &DC[d000 * numberOfLBnodesCoarse]; + ftneC = &DC[dPPP * numberOfLBnodesCoarse]; + ftswC = &DC[dMMP * numberOfLBnodesCoarse]; + ftseC = &DC[dPMP * numberOfLBnodesCoarse]; + ftnwC = &DC[dMPP * numberOfLBnodesCoarse]; + fbneC = &DC[dPPM * numberOfLBnodesCoarse]; + fbswC = &DC[dMMM * numberOfLBnodesCoarse]; + fbseC = &DC[dPMM * numberOfLBnodesCoarse]; + fbnwC = &DC[dMPM * numberOfLBnodesCoarse]; } else { - fwC = &DC[DIR_P00 * numberOfLBnodesCoarse]; - feC = &DC[DIR_M00 * numberOfLBnodesCoarse]; - fsC = &DC[DIR_0P0 * numberOfLBnodesCoarse]; - fnC = &DC[DIR_0M0 * numberOfLBnodesCoarse]; - fbC = &DC[DIR_00P * numberOfLBnodesCoarse]; - ftC = &DC[DIR_00M * numberOfLBnodesCoarse]; - fswC = &DC[DIR_PP0 * numberOfLBnodesCoarse]; - fneC = &DC[DIR_MM0 * numberOfLBnodesCoarse]; - fnwC = &DC[DIR_PM0 * numberOfLBnodesCoarse]; - fseC = &DC[DIR_MP0 * numberOfLBnodesCoarse]; - fbwC = &DC[DIR_P0P * numberOfLBnodesCoarse]; - fteC = &DC[DIR_M0M * numberOfLBnodesCoarse]; - ftwC = &DC[DIR_P0M * numberOfLBnodesCoarse]; - fbeC = &DC[DIR_M0P * numberOfLBnodesCoarse]; - fbsC = &DC[DIR_0PP * numberOfLBnodesCoarse]; - ftnC = &DC[DIR_0MM * numberOfLBnodesCoarse]; - ftsC = &DC[DIR_0PM * numberOfLBnodesCoarse]; - fbnC = &DC[DIR_0MP * numberOfLBnodesCoarse]; - fzeroC = &DC[DIR_000 * numberOfLBnodesCoarse]; - fbswC = &DC[DIR_PPP * numberOfLBnodesCoarse]; - fbneC = &DC[DIR_MMP * numberOfLBnodesCoarse]; - fbnwC = &DC[DIR_PMP * numberOfLBnodesCoarse]; - fbseC = &DC[DIR_MPP * numberOfLBnodesCoarse]; - ftswC = &DC[DIR_PPM * numberOfLBnodesCoarse]; - ftneC = &DC[DIR_MMM * numberOfLBnodesCoarse]; - ftnwC = &DC[DIR_PMM * numberOfLBnodesCoarse]; - ftseC = &DC[DIR_MPM * numberOfLBnodesCoarse]; + fwC = &DC[dP00 * numberOfLBnodesCoarse]; + feC = &DC[dM00 * numberOfLBnodesCoarse]; + fsC = &DC[d0P0 * numberOfLBnodesCoarse]; + fnC = &DC[d0M0 * numberOfLBnodesCoarse]; + fbC = &DC[d00P * numberOfLBnodesCoarse]; + ftC = &DC[d00M * numberOfLBnodesCoarse]; + fswC = &DC[dPP0 * numberOfLBnodesCoarse]; + fneC = &DC[dMM0 * numberOfLBnodesCoarse]; + fnwC = &DC[dPM0 * numberOfLBnodesCoarse]; + fseC = &DC[dMP0 * numberOfLBnodesCoarse]; + fbwC = &DC[dP0P * numberOfLBnodesCoarse]; + fteC = &DC[dM0M * numberOfLBnodesCoarse]; + ftwC = &DC[dP0M * numberOfLBnodesCoarse]; + fbeC = &DC[dM0P * numberOfLBnodesCoarse]; + fbsC = &DC[d0PP * numberOfLBnodesCoarse]; + ftnC = &DC[d0MM * numberOfLBnodesCoarse]; + ftsC = &DC[d0PM * numberOfLBnodesCoarse]; + fbnC = &DC[d0MP * numberOfLBnodesCoarse]; + fzeroC = &DC[d000 * numberOfLBnodesCoarse]; + fbswC = &DC[dPPP * numberOfLBnodesCoarse]; + fbneC = &DC[dMMP * numberOfLBnodesCoarse]; + fbnwC = &DC[dPMP * numberOfLBnodesCoarse]; + fbseC = &DC[dMPP * numberOfLBnodesCoarse]; + ftswC = &DC[dPPM * numberOfLBnodesCoarse]; + ftneC = &DC[dMMM * numberOfLBnodesCoarse]; + ftnwC = &DC[dPMM * numberOfLBnodesCoarse]; + ftseC = &DC[dMPM * numberOfLBnodesCoarse]; } //////////////////////////////////////////////////////////////////////////////// const unsigned ix = threadIdx.x; // Globaler x-Index @@ -9614,93 +9614,93 @@ __device__ void scaleFC_RhoSq_comp_27_Calculation( 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[DIR_P00 * numberOfLBnodesFine]; - fwF = &DF[DIR_M00 * numberOfLBnodesFine]; - fnF = &DF[DIR_0P0 * numberOfLBnodesFine]; - fsF = &DF[DIR_0M0 * numberOfLBnodesFine]; - ftF = &DF[DIR_00P * numberOfLBnodesFine]; - fbF = &DF[DIR_00M * numberOfLBnodesFine]; - fneF = &DF[DIR_PP0 * numberOfLBnodesFine]; - fswF = &DF[DIR_MM0 * numberOfLBnodesFine]; - fseF = &DF[DIR_PM0 * numberOfLBnodesFine]; - fnwF = &DF[DIR_MP0 * numberOfLBnodesFine]; - fteF = &DF[DIR_P0P * numberOfLBnodesFine]; - fbwF = &DF[DIR_M0M * numberOfLBnodesFine]; - fbeF = &DF[DIR_P0M * numberOfLBnodesFine]; - ftwF = &DF[DIR_M0P * numberOfLBnodesFine]; - ftnF = &DF[DIR_0PP * numberOfLBnodesFine]; - fbsF = &DF[DIR_0MM * numberOfLBnodesFine]; - fbnF = &DF[DIR_0PM * numberOfLBnodesFine]; - ftsF = &DF[DIR_0MP * numberOfLBnodesFine]; - fzeroF = &DF[DIR_000 * numberOfLBnodesFine]; - ftneF = &DF[DIR_PPP * numberOfLBnodesFine]; - ftswF = &DF[DIR_MMP * numberOfLBnodesFine]; - ftseF = &DF[DIR_PMP * numberOfLBnodesFine]; - ftnwF = &DF[DIR_MPP * numberOfLBnodesFine]; - fbneF = &DF[DIR_PPM * numberOfLBnodesFine]; - fbswF = &DF[DIR_MMM * numberOfLBnodesFine]; - fbseF = &DF[DIR_PMM * numberOfLBnodesFine]; - fbnwF = &DF[DIR_MPM * numberOfLBnodesFine]; + feF = &DF[dP00 * numberOfLBnodesFine]; + fwF = &DF[dM00 * numberOfLBnodesFine]; + fnF = &DF[d0P0 * numberOfLBnodesFine]; + fsF = &DF[d0M0 * numberOfLBnodesFine]; + ftF = &DF[d00P * numberOfLBnodesFine]; + fbF = &DF[d00M * numberOfLBnodesFine]; + fneF = &DF[dPP0 * numberOfLBnodesFine]; + fswF = &DF[dMM0 * numberOfLBnodesFine]; + fseF = &DF[dPM0 * numberOfLBnodesFine]; + fnwF = &DF[dMP0 * numberOfLBnodesFine]; + fteF = &DF[dP0P * numberOfLBnodesFine]; + fbwF = &DF[dM0M * numberOfLBnodesFine]; + fbeF = &DF[dP0M * numberOfLBnodesFine]; + ftwF = &DF[dM0P * numberOfLBnodesFine]; + ftnF = &DF[d0PP * numberOfLBnodesFine]; + fbsF = &DF[d0MM * numberOfLBnodesFine]; + fbnF = &DF[d0PM * numberOfLBnodesFine]; + ftsF = &DF[d0MP * numberOfLBnodesFine]; + fzeroF = &DF[d000 * numberOfLBnodesFine]; + ftneF = &DF[dPPP * numberOfLBnodesFine]; + ftswF = &DF[dMMP * numberOfLBnodesFine]; + ftseF = &DF[dPMP * numberOfLBnodesFine]; + ftnwF = &DF[dMPP * numberOfLBnodesFine]; + fbneF = &DF[dPPM * numberOfLBnodesFine]; + fbswF = &DF[dMMM * numberOfLBnodesFine]; + fbseF = &DF[dPMM * numberOfLBnodesFine]; + fbnwF = &DF[dMPM * numberOfLBnodesFine]; 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[DIR_P00 * numberOfLBnodesCoarse]; - fwC = &DC[DIR_M00 * numberOfLBnodesCoarse]; - fnC = &DC[DIR_0P0 * numberOfLBnodesCoarse]; - fsC = &DC[DIR_0M0 * numberOfLBnodesCoarse]; - ftC = &DC[DIR_00P * numberOfLBnodesCoarse]; - fbC = &DC[DIR_00M * numberOfLBnodesCoarse]; - fneC = &DC[DIR_PP0 * numberOfLBnodesCoarse]; - fswC = &DC[DIR_MM0 * numberOfLBnodesCoarse]; - fseC = &DC[DIR_PM0 * numberOfLBnodesCoarse]; - fnwC = &DC[DIR_MP0 * numberOfLBnodesCoarse]; - fteC = &DC[DIR_P0P * numberOfLBnodesCoarse]; - fbwC = &DC[DIR_M0M * numberOfLBnodesCoarse]; - fbeC = &DC[DIR_P0M * numberOfLBnodesCoarse]; - ftwC = &DC[DIR_M0P * numberOfLBnodesCoarse]; - ftnC = &DC[DIR_0PP * numberOfLBnodesCoarse]; - fbsC = &DC[DIR_0MM * numberOfLBnodesCoarse]; - fbnC = &DC[DIR_0PM * numberOfLBnodesCoarse]; - ftsC = &DC[DIR_0MP * numberOfLBnodesCoarse]; - fzeroC = &DC[DIR_000 * numberOfLBnodesCoarse]; - ftneC = &DC[DIR_PPP * numberOfLBnodesCoarse]; - ftswC = &DC[DIR_MMP * numberOfLBnodesCoarse]; - ftseC = &DC[DIR_PMP * numberOfLBnodesCoarse]; - ftnwC = &DC[DIR_MPP * numberOfLBnodesCoarse]; - fbneC = &DC[DIR_PPM * numberOfLBnodesCoarse]; - fbswC = &DC[DIR_MMM * numberOfLBnodesCoarse]; - fbseC = &DC[DIR_PMM * numberOfLBnodesCoarse]; - fbnwC = &DC[DIR_MPM * numberOfLBnodesCoarse]; + feC = &DC[dP00 * numberOfLBnodesCoarse]; + fwC = &DC[dM00 * numberOfLBnodesCoarse]; + fnC = &DC[d0P0 * numberOfLBnodesCoarse]; + fsC = &DC[d0M0 * numberOfLBnodesCoarse]; + ftC = &DC[d00P * numberOfLBnodesCoarse]; + fbC = &DC[d00M * numberOfLBnodesCoarse]; + fneC = &DC[dPP0 * numberOfLBnodesCoarse]; + fswC = &DC[dMM0 * numberOfLBnodesCoarse]; + fseC = &DC[dPM0 * numberOfLBnodesCoarse]; + fnwC = &DC[dMP0 * numberOfLBnodesCoarse]; + fteC = &DC[dP0P * numberOfLBnodesCoarse]; + fbwC = &DC[dM0M * numberOfLBnodesCoarse]; + fbeC = &DC[dP0M * numberOfLBnodesCoarse]; + ftwC = &DC[dM0P * numberOfLBnodesCoarse]; + ftnC = &DC[d0PP * numberOfLBnodesCoarse]; + fbsC = &DC[d0MM * numberOfLBnodesCoarse]; + fbnC = &DC[d0PM * numberOfLBnodesCoarse]; + ftsC = &DC[d0MP * numberOfLBnodesCoarse]; + fzeroC = &DC[d000 * numberOfLBnodesCoarse]; + ftneC = &DC[dPPP * numberOfLBnodesCoarse]; + ftswC = &DC[dMMP * numberOfLBnodesCoarse]; + ftseC = &DC[dPMP * numberOfLBnodesCoarse]; + ftnwC = &DC[dMPP * numberOfLBnodesCoarse]; + fbneC = &DC[dPPM * numberOfLBnodesCoarse]; + fbswC = &DC[dMMM * numberOfLBnodesCoarse]; + fbseC = &DC[dPMM * numberOfLBnodesCoarse]; + fbnwC = &DC[dMPM * numberOfLBnodesCoarse]; } else { - fwC = &DC[DIR_P00 * numberOfLBnodesCoarse]; - feC = &DC[DIR_M00 * numberOfLBnodesCoarse]; - fsC = &DC[DIR_0P0 * numberOfLBnodesCoarse]; - fnC = &DC[DIR_0M0 * numberOfLBnodesCoarse]; - fbC = &DC[DIR_00P * numberOfLBnodesCoarse]; - ftC = &DC[DIR_00M * numberOfLBnodesCoarse]; - fswC = &DC[DIR_PP0 * numberOfLBnodesCoarse]; - fneC = &DC[DIR_MM0 * numberOfLBnodesCoarse]; - fnwC = &DC[DIR_PM0 * numberOfLBnodesCoarse]; - fseC = &DC[DIR_MP0 * numberOfLBnodesCoarse]; - fbwC = &DC[DIR_P0P * numberOfLBnodesCoarse]; - fteC = &DC[DIR_M0M * numberOfLBnodesCoarse]; - ftwC = &DC[DIR_P0M * numberOfLBnodesCoarse]; - fbeC = &DC[DIR_M0P * numberOfLBnodesCoarse]; - fbsC = &DC[DIR_0PP * numberOfLBnodesCoarse]; - ftnC = &DC[DIR_0MM * numberOfLBnodesCoarse]; - ftsC = &DC[DIR_0PM * numberOfLBnodesCoarse]; - fbnC = &DC[DIR_0MP * numberOfLBnodesCoarse]; - fzeroC = &DC[DIR_000 * numberOfLBnodesCoarse]; - fbswC = &DC[DIR_PPP * numberOfLBnodesCoarse]; - fbneC = &DC[DIR_MMP * numberOfLBnodesCoarse]; - fbnwC = &DC[DIR_PMP * numberOfLBnodesCoarse]; - fbseC = &DC[DIR_MPP * numberOfLBnodesCoarse]; - ftswC = &DC[DIR_PPM * numberOfLBnodesCoarse]; - ftneC = &DC[DIR_MMM * numberOfLBnodesCoarse]; - ftnwC = &DC[DIR_PMM * numberOfLBnodesCoarse]; - ftseC = &DC[DIR_MPM * numberOfLBnodesCoarse]; + fwC = &DC[dP00 * numberOfLBnodesCoarse]; + feC = &DC[dM00 * numberOfLBnodesCoarse]; + fsC = &DC[d0P0 * numberOfLBnodesCoarse]; + fnC = &DC[d0M0 * numberOfLBnodesCoarse]; + fbC = &DC[d00P * numberOfLBnodesCoarse]; + ftC = &DC[d00M * numberOfLBnodesCoarse]; + fswC = &DC[dPP0 * numberOfLBnodesCoarse]; + fneC = &DC[dMM0 * numberOfLBnodesCoarse]; + fnwC = &DC[dPM0 * numberOfLBnodesCoarse]; + fseC = &DC[dMP0 * numberOfLBnodesCoarse]; + fbwC = &DC[dP0P * numberOfLBnodesCoarse]; + fteC = &DC[dM0M * numberOfLBnodesCoarse]; + ftwC = &DC[dP0M * numberOfLBnodesCoarse]; + fbeC = &DC[dM0P * numberOfLBnodesCoarse]; + fbsC = &DC[d0PP * numberOfLBnodesCoarse]; + ftnC = &DC[d0MM * numberOfLBnodesCoarse]; + ftsC = &DC[d0PM * numberOfLBnodesCoarse]; + fbnC = &DC[d0MP * numberOfLBnodesCoarse]; + fzeroC = &DC[d000 * numberOfLBnodesCoarse]; + fbswC = &DC[dPPP * numberOfLBnodesCoarse]; + fbneC = &DC[dMMP * numberOfLBnodesCoarse]; + fbnwC = &DC[dPMP * numberOfLBnodesCoarse]; + fbseC = &DC[dMPP * numberOfLBnodesCoarse]; + ftswC = &DC[dPPM * numberOfLBnodesCoarse]; + ftneC = &DC[dMMM * numberOfLBnodesCoarse]; + ftnwC = &DC[dPMM * numberOfLBnodesCoarse]; + ftseC = &DC[dMPM * numberOfLBnodesCoarse]; } //////////////////////////////////////////////////////////////////////////////// @@ -11192,96 +11192,96 @@ __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[DIR_P00 * numberOfLBnodesFine]; - fwF = &DF[DIR_M00 * numberOfLBnodesFine]; - fnF = &DF[DIR_0P0 * numberOfLBnodesFine]; - fsF = &DF[DIR_0M0 * numberOfLBnodesFine]; - ftF = &DF[DIR_00P * numberOfLBnodesFine]; - fbF = &DF[DIR_00M * numberOfLBnodesFine]; - fneF = &DF[DIR_PP0 * numberOfLBnodesFine]; - fswF = &DF[DIR_MM0 * numberOfLBnodesFine]; - fseF = &DF[DIR_PM0 * numberOfLBnodesFine]; - fnwF = &DF[DIR_MP0 * numberOfLBnodesFine]; - fteF = &DF[DIR_P0P * numberOfLBnodesFine]; - fbwF = &DF[DIR_M0M * numberOfLBnodesFine]; - fbeF = &DF[DIR_P0M * numberOfLBnodesFine]; - ftwF = &DF[DIR_M0P * numberOfLBnodesFine]; - ftnF = &DF[DIR_0PP * numberOfLBnodesFine]; - fbsF = &DF[DIR_0MM * numberOfLBnodesFine]; - fbnF = &DF[DIR_0PM * numberOfLBnodesFine]; - ftsF = &DF[DIR_0MP * numberOfLBnodesFine]; - fzeroF = &DF[DIR_000 * numberOfLBnodesFine]; - ftneF = &DF[DIR_PPP * numberOfLBnodesFine]; - ftswF = &DF[DIR_MMP * numberOfLBnodesFine]; - ftseF = &DF[DIR_PMP * numberOfLBnodesFine]; - ftnwF = &DF[DIR_MPP * numberOfLBnodesFine]; - fbneF = &DF[DIR_PPM * numberOfLBnodesFine]; - fbswF = &DF[DIR_MMM * numberOfLBnodesFine]; - fbseF = &DF[DIR_PMM * numberOfLBnodesFine]; - fbnwF = &DF[DIR_MPM * numberOfLBnodesFine]; + feF = &DF[dP00 * numberOfLBnodesFine]; + fwF = &DF[dM00 * numberOfLBnodesFine]; + fnF = &DF[d0P0 * numberOfLBnodesFine]; + fsF = &DF[d0M0 * numberOfLBnodesFine]; + ftF = &DF[d00P * numberOfLBnodesFine]; + fbF = &DF[d00M * numberOfLBnodesFine]; + fneF = &DF[dPP0 * numberOfLBnodesFine]; + fswF = &DF[dMM0 * numberOfLBnodesFine]; + fseF = &DF[dPM0 * numberOfLBnodesFine]; + fnwF = &DF[dMP0 * numberOfLBnodesFine]; + fteF = &DF[dP0P * numberOfLBnodesFine]; + fbwF = &DF[dM0M * numberOfLBnodesFine]; + fbeF = &DF[dP0M * numberOfLBnodesFine]; + ftwF = &DF[dM0P * numberOfLBnodesFine]; + ftnF = &DF[d0PP * numberOfLBnodesFine]; + fbsF = &DF[d0MM * numberOfLBnodesFine]; + fbnF = &DF[d0PM * numberOfLBnodesFine]; + ftsF = &DF[d0MP * numberOfLBnodesFine]; + fzeroF = &DF[d000 * numberOfLBnodesFine]; + ftneF = &DF[dPPP * numberOfLBnodesFine]; + ftswF = &DF[dMMP * numberOfLBnodesFine]; + ftseF = &DF[dPMP * numberOfLBnodesFine]; + ftnwF = &DF[dMPP * numberOfLBnodesFine]; + fbneF = &DF[dPPM * numberOfLBnodesFine]; + fbswF = &DF[dMMM * numberOfLBnodesFine]; + fbseF = &DF[dPMM * numberOfLBnodesFine]; + fbnwF = &DF[dMPM * numberOfLBnodesFine]; 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[DIR_P00 * numberOfLBnodesCoarse]; - fwC = &DC[DIR_M00 * numberOfLBnodesCoarse]; - fnC = &DC[DIR_0P0 * numberOfLBnodesCoarse]; - fsC = &DC[DIR_0M0 * numberOfLBnodesCoarse]; - ftC = &DC[DIR_00P * numberOfLBnodesCoarse]; - fbC = &DC[DIR_00M * numberOfLBnodesCoarse]; - fneC = &DC[DIR_PP0 * numberOfLBnodesCoarse]; - fswC = &DC[DIR_MM0 * numberOfLBnodesCoarse]; - fseC = &DC[DIR_PM0 * numberOfLBnodesCoarse]; - fnwC = &DC[DIR_MP0 * numberOfLBnodesCoarse]; - fteC = &DC[DIR_P0P * numberOfLBnodesCoarse]; - fbwC = &DC[DIR_M0M * numberOfLBnodesCoarse]; - fbeC = &DC[DIR_P0M * numberOfLBnodesCoarse]; - ftwC = &DC[DIR_M0P * numberOfLBnodesCoarse]; - ftnC = &DC[DIR_0PP * numberOfLBnodesCoarse]; - fbsC = &DC[DIR_0MM * numberOfLBnodesCoarse]; - fbnC = &DC[DIR_0PM * numberOfLBnodesCoarse]; - ftsC = &DC[DIR_0MP * numberOfLBnodesCoarse]; - fzeroC = &DC[DIR_000 * numberOfLBnodesCoarse]; - ftneC = &DC[DIR_PPP * numberOfLBnodesCoarse]; - ftswC = &DC[DIR_MMP * numberOfLBnodesCoarse]; - ftseC = &DC[DIR_PMP * numberOfLBnodesCoarse]; - ftnwC = &DC[DIR_MPP * numberOfLBnodesCoarse]; - fbneC = &DC[DIR_PPM * numberOfLBnodesCoarse]; - fbswC = &DC[DIR_MMM * numberOfLBnodesCoarse]; - fbseC = &DC[DIR_PMM * numberOfLBnodesCoarse]; - fbnwC = &DC[DIR_MPM * numberOfLBnodesCoarse]; + feC = &DC[dP00 * numberOfLBnodesCoarse]; + fwC = &DC[dM00 * numberOfLBnodesCoarse]; + fnC = &DC[d0P0 * numberOfLBnodesCoarse]; + fsC = &DC[d0M0 * numberOfLBnodesCoarse]; + ftC = &DC[d00P * numberOfLBnodesCoarse]; + fbC = &DC[d00M * numberOfLBnodesCoarse]; + fneC = &DC[dPP0 * numberOfLBnodesCoarse]; + fswC = &DC[dMM0 * numberOfLBnodesCoarse]; + fseC = &DC[dPM0 * numberOfLBnodesCoarse]; + fnwC = &DC[dMP0 * numberOfLBnodesCoarse]; + fteC = &DC[dP0P * numberOfLBnodesCoarse]; + fbwC = &DC[dM0M * numberOfLBnodesCoarse]; + fbeC = &DC[dP0M * numberOfLBnodesCoarse]; + ftwC = &DC[dM0P * numberOfLBnodesCoarse]; + ftnC = &DC[d0PP * numberOfLBnodesCoarse]; + fbsC = &DC[d0MM * numberOfLBnodesCoarse]; + fbnC = &DC[d0PM * numberOfLBnodesCoarse]; + ftsC = &DC[d0MP * numberOfLBnodesCoarse]; + fzeroC = &DC[d000 * numberOfLBnodesCoarse]; + ftneC = &DC[dPPP * numberOfLBnodesCoarse]; + ftswC = &DC[dMMP * numberOfLBnodesCoarse]; + ftseC = &DC[dPMP * numberOfLBnodesCoarse]; + ftnwC = &DC[dMPP * numberOfLBnodesCoarse]; + fbneC = &DC[dPPM * numberOfLBnodesCoarse]; + fbswC = &DC[dMMM * numberOfLBnodesCoarse]; + fbseC = &DC[dPMM * numberOfLBnodesCoarse]; + fbnwC = &DC[dMPM * numberOfLBnodesCoarse]; } else { - fwC = &DC[DIR_P00 * numberOfLBnodesCoarse]; - feC = &DC[DIR_M00 * numberOfLBnodesCoarse]; - fsC = &DC[DIR_0P0 * numberOfLBnodesCoarse]; - fnC = &DC[DIR_0M0 * numberOfLBnodesCoarse]; - fbC = &DC[DIR_00P * numberOfLBnodesCoarse]; - ftC = &DC[DIR_00M * numberOfLBnodesCoarse]; - fswC = &DC[DIR_PP0 * numberOfLBnodesCoarse]; - fneC = &DC[DIR_MM0 * numberOfLBnodesCoarse]; - fnwC = &DC[DIR_PM0 * numberOfLBnodesCoarse]; - fseC = &DC[DIR_MP0 * numberOfLBnodesCoarse]; - fbwC = &DC[DIR_P0P * numberOfLBnodesCoarse]; - fteC = &DC[DIR_M0M * numberOfLBnodesCoarse]; - ftwC = &DC[DIR_P0M * numberOfLBnodesCoarse]; - fbeC = &DC[DIR_M0P * numberOfLBnodesCoarse]; - fbsC = &DC[DIR_0PP * numberOfLBnodesCoarse]; - ftnC = &DC[DIR_0MM * numberOfLBnodesCoarse]; - ftsC = &DC[DIR_0PM * numberOfLBnodesCoarse]; - fbnC = &DC[DIR_0MP * numberOfLBnodesCoarse]; - fzeroC = &DC[DIR_000 * numberOfLBnodesCoarse]; - fbswC = &DC[DIR_PPP * numberOfLBnodesCoarse]; - fbneC = &DC[DIR_MMP * numberOfLBnodesCoarse]; - fbnwC = &DC[DIR_PMP * numberOfLBnodesCoarse]; - fbseC = &DC[DIR_MPP * numberOfLBnodesCoarse]; - ftswC = &DC[DIR_PPM * numberOfLBnodesCoarse]; - ftneC = &DC[DIR_MMM * numberOfLBnodesCoarse]; - ftnwC = &DC[DIR_PMM * numberOfLBnodesCoarse]; - ftseC = &DC[DIR_MPM * numberOfLBnodesCoarse]; + fwC = &DC[dP00 * numberOfLBnodesCoarse]; + feC = &DC[dM00 * numberOfLBnodesCoarse]; + fsC = &DC[d0P0 * numberOfLBnodesCoarse]; + fnC = &DC[d0M0 * numberOfLBnodesCoarse]; + fbC = &DC[d00P * numberOfLBnodesCoarse]; + ftC = &DC[d00M * numberOfLBnodesCoarse]; + fswC = &DC[dPP0 * numberOfLBnodesCoarse]; + fneC = &DC[dMM0 * numberOfLBnodesCoarse]; + fnwC = &DC[dPM0 * numberOfLBnodesCoarse]; + fseC = &DC[dMP0 * numberOfLBnodesCoarse]; + fbwC = &DC[dP0P * numberOfLBnodesCoarse]; + fteC = &DC[dM0M * numberOfLBnodesCoarse]; + ftwC = &DC[dP0M * numberOfLBnodesCoarse]; + fbeC = &DC[dM0P * numberOfLBnodesCoarse]; + fbsC = &DC[d0PP * numberOfLBnodesCoarse]; + ftnC = &DC[d0MM * numberOfLBnodesCoarse]; + ftsC = &DC[d0PM * numberOfLBnodesCoarse]; + fbnC = &DC[d0MP * numberOfLBnodesCoarse]; + fzeroC = &DC[d000 * numberOfLBnodesCoarse]; + fbswC = &DC[dPPP * numberOfLBnodesCoarse]; + fbneC = &DC[dMMP * numberOfLBnodesCoarse]; + fbnwC = &DC[dPMP * numberOfLBnodesCoarse]; + fbseC = &DC[dMPP * numberOfLBnodesCoarse]; + ftswC = &DC[dPPM * numberOfLBnodesCoarse]; + ftneC = &DC[dMMM * numberOfLBnodesCoarse]; + ftnwC = &DC[dPMM * numberOfLBnodesCoarse]; + ftseC = &DC[dMPM * numberOfLBnodesCoarse]; } //////////////////////////////////////////////////////////////////////////////// const unsigned ix = threadIdx.x; // Globaler x-Index @@ -12492,96 +12492,96 @@ __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[DIR_P00 * numberOfLBnodesFine]; - fwF = &DF[DIR_M00 * numberOfLBnodesFine]; - fnF = &DF[DIR_0P0 * numberOfLBnodesFine]; - fsF = &DF[DIR_0M0 * numberOfLBnodesFine]; - ftF = &DF[DIR_00P * numberOfLBnodesFine]; - fbF = &DF[DIR_00M * numberOfLBnodesFine]; - fneF = &DF[DIR_PP0 * numberOfLBnodesFine]; - fswF = &DF[DIR_MM0 * numberOfLBnodesFine]; - fseF = &DF[DIR_PM0 * numberOfLBnodesFine]; - fnwF = &DF[DIR_MP0 * numberOfLBnodesFine]; - fteF = &DF[DIR_P0P * numberOfLBnodesFine]; - fbwF = &DF[DIR_M0M * numberOfLBnodesFine]; - fbeF = &DF[DIR_P0M * numberOfLBnodesFine]; - ftwF = &DF[DIR_M0P * numberOfLBnodesFine]; - ftnF = &DF[DIR_0PP * numberOfLBnodesFine]; - fbsF = &DF[DIR_0MM * numberOfLBnodesFine]; - fbnF = &DF[DIR_0PM * numberOfLBnodesFine]; - ftsF = &DF[DIR_0MP * numberOfLBnodesFine]; - fzeroF = &DF[DIR_000 * numberOfLBnodesFine]; - ftneF = &DF[DIR_PPP * numberOfLBnodesFine]; - ftswF = &DF[DIR_MMP * numberOfLBnodesFine]; - ftseF = &DF[DIR_PMP * numberOfLBnodesFine]; - ftnwF = &DF[DIR_MPP * numberOfLBnodesFine]; - fbneF = &DF[DIR_PPM * numberOfLBnodesFine]; - fbswF = &DF[DIR_MMM * numberOfLBnodesFine]; - fbseF = &DF[DIR_PMM * numberOfLBnodesFine]; - fbnwF = &DF[DIR_MPM * numberOfLBnodesFine]; + feF = &DF[dP00 * numberOfLBnodesFine]; + fwF = &DF[dM00 * numberOfLBnodesFine]; + fnF = &DF[d0P0 * numberOfLBnodesFine]; + fsF = &DF[d0M0 * numberOfLBnodesFine]; + ftF = &DF[d00P * numberOfLBnodesFine]; + fbF = &DF[d00M * numberOfLBnodesFine]; + fneF = &DF[dPP0 * numberOfLBnodesFine]; + fswF = &DF[dMM0 * numberOfLBnodesFine]; + fseF = &DF[dPM0 * numberOfLBnodesFine]; + fnwF = &DF[dMP0 * numberOfLBnodesFine]; + fteF = &DF[dP0P * numberOfLBnodesFine]; + fbwF = &DF[dM0M * numberOfLBnodesFine]; + fbeF = &DF[dP0M * numberOfLBnodesFine]; + ftwF = &DF[dM0P * numberOfLBnodesFine]; + ftnF = &DF[d0PP * numberOfLBnodesFine]; + fbsF = &DF[d0MM * numberOfLBnodesFine]; + fbnF = &DF[d0PM * numberOfLBnodesFine]; + ftsF = &DF[d0MP * numberOfLBnodesFine]; + fzeroF = &DF[d000 * numberOfLBnodesFine]; + ftneF = &DF[dPPP * numberOfLBnodesFine]; + ftswF = &DF[dMMP * numberOfLBnodesFine]; + ftseF = &DF[dPMP * numberOfLBnodesFine]; + ftnwF = &DF[dMPP * numberOfLBnodesFine]; + fbneF = &DF[dPPM * numberOfLBnodesFine]; + fbswF = &DF[dMMM * numberOfLBnodesFine]; + fbseF = &DF[dPMM * numberOfLBnodesFine]; + fbnwF = &DF[dMPM * numberOfLBnodesFine]; 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[DIR_P00 * numberOfLBnodesCoarse]; - fwC = &DC[DIR_M00 * numberOfLBnodesCoarse]; - fnC = &DC[DIR_0P0 * numberOfLBnodesCoarse]; - fsC = &DC[DIR_0M0 * numberOfLBnodesCoarse]; - ftC = &DC[DIR_00P * numberOfLBnodesCoarse]; - fbC = &DC[DIR_00M * numberOfLBnodesCoarse]; - fneC = &DC[DIR_PP0 * numberOfLBnodesCoarse]; - fswC = &DC[DIR_MM0 * numberOfLBnodesCoarse]; - fseC = &DC[DIR_PM0 * numberOfLBnodesCoarse]; - fnwC = &DC[DIR_MP0 * numberOfLBnodesCoarse]; - fteC = &DC[DIR_P0P * numberOfLBnodesCoarse]; - fbwC = &DC[DIR_M0M * numberOfLBnodesCoarse]; - fbeC = &DC[DIR_P0M * numberOfLBnodesCoarse]; - ftwC = &DC[DIR_M0P * numberOfLBnodesCoarse]; - ftnC = &DC[DIR_0PP * numberOfLBnodesCoarse]; - fbsC = &DC[DIR_0MM * numberOfLBnodesCoarse]; - fbnC = &DC[DIR_0PM * numberOfLBnodesCoarse]; - ftsC = &DC[DIR_0MP * numberOfLBnodesCoarse]; - fzeroC = &DC[DIR_000 * numberOfLBnodesCoarse]; - ftneC = &DC[DIR_PPP * numberOfLBnodesCoarse]; - ftswC = &DC[DIR_MMP * numberOfLBnodesCoarse]; - ftseC = &DC[DIR_PMP * numberOfLBnodesCoarse]; - ftnwC = &DC[DIR_MPP * numberOfLBnodesCoarse]; - fbneC = &DC[DIR_PPM * numberOfLBnodesCoarse]; - fbswC = &DC[DIR_MMM * numberOfLBnodesCoarse]; - fbseC = &DC[DIR_PMM * numberOfLBnodesCoarse]; - fbnwC = &DC[DIR_MPM * numberOfLBnodesCoarse]; + feC = &DC[dP00 * numberOfLBnodesCoarse]; + fwC = &DC[dM00 * numberOfLBnodesCoarse]; + fnC = &DC[d0P0 * numberOfLBnodesCoarse]; + fsC = &DC[d0M0 * numberOfLBnodesCoarse]; + ftC = &DC[d00P * numberOfLBnodesCoarse]; + fbC = &DC[d00M * numberOfLBnodesCoarse]; + fneC = &DC[dPP0 * numberOfLBnodesCoarse]; + fswC = &DC[dMM0 * numberOfLBnodesCoarse]; + fseC = &DC[dPM0 * numberOfLBnodesCoarse]; + fnwC = &DC[dMP0 * numberOfLBnodesCoarse]; + fteC = &DC[dP0P * numberOfLBnodesCoarse]; + fbwC = &DC[dM0M * numberOfLBnodesCoarse]; + fbeC = &DC[dP0M * numberOfLBnodesCoarse]; + ftwC = &DC[dM0P * numberOfLBnodesCoarse]; + ftnC = &DC[d0PP * numberOfLBnodesCoarse]; + fbsC = &DC[d0MM * numberOfLBnodesCoarse]; + fbnC = &DC[d0PM * numberOfLBnodesCoarse]; + ftsC = &DC[d0MP * numberOfLBnodesCoarse]; + fzeroC = &DC[d000 * numberOfLBnodesCoarse]; + ftneC = &DC[dPPP * numberOfLBnodesCoarse]; + ftswC = &DC[dMMP * numberOfLBnodesCoarse]; + ftseC = &DC[dPMP * numberOfLBnodesCoarse]; + ftnwC = &DC[dMPP * numberOfLBnodesCoarse]; + fbneC = &DC[dPPM * numberOfLBnodesCoarse]; + fbswC = &DC[dMMM * numberOfLBnodesCoarse]; + fbseC = &DC[dPMM * numberOfLBnodesCoarse]; + fbnwC = &DC[dMPM * numberOfLBnodesCoarse]; } else { - fwC = &DC[DIR_P00 * numberOfLBnodesCoarse]; - feC = &DC[DIR_M00 * numberOfLBnodesCoarse]; - fsC = &DC[DIR_0P0 * numberOfLBnodesCoarse]; - fnC = &DC[DIR_0M0 * numberOfLBnodesCoarse]; - fbC = &DC[DIR_00P * numberOfLBnodesCoarse]; - ftC = &DC[DIR_00M * numberOfLBnodesCoarse]; - fswC = &DC[DIR_PP0 * numberOfLBnodesCoarse]; - fneC = &DC[DIR_MM0 * numberOfLBnodesCoarse]; - fnwC = &DC[DIR_PM0 * numberOfLBnodesCoarse]; - fseC = &DC[DIR_MP0 * numberOfLBnodesCoarse]; - fbwC = &DC[DIR_P0P * numberOfLBnodesCoarse]; - fteC = &DC[DIR_M0M * numberOfLBnodesCoarse]; - ftwC = &DC[DIR_P0M * numberOfLBnodesCoarse]; - fbeC = &DC[DIR_M0P * numberOfLBnodesCoarse]; - fbsC = &DC[DIR_0PP * numberOfLBnodesCoarse]; - ftnC = &DC[DIR_0MM * numberOfLBnodesCoarse]; - ftsC = &DC[DIR_0PM * numberOfLBnodesCoarse]; - fbnC = &DC[DIR_0MP * numberOfLBnodesCoarse]; - fzeroC = &DC[DIR_000 * numberOfLBnodesCoarse]; - fbswC = &DC[DIR_PPP * numberOfLBnodesCoarse]; - fbneC = &DC[DIR_MMP * numberOfLBnodesCoarse]; - fbnwC = &DC[DIR_PMP * numberOfLBnodesCoarse]; - fbseC = &DC[DIR_MPP * numberOfLBnodesCoarse]; - ftswC = &DC[DIR_PPM * numberOfLBnodesCoarse]; - ftneC = &DC[DIR_MMM * numberOfLBnodesCoarse]; - ftnwC = &DC[DIR_PMM * numberOfLBnodesCoarse]; - ftseC = &DC[DIR_MPM * numberOfLBnodesCoarse]; + fwC = &DC[dP00 * numberOfLBnodesCoarse]; + feC = &DC[dM00 * numberOfLBnodesCoarse]; + fsC = &DC[d0P0 * numberOfLBnodesCoarse]; + fnC = &DC[d0M0 * numberOfLBnodesCoarse]; + fbC = &DC[d00P * numberOfLBnodesCoarse]; + ftC = &DC[d00M * numberOfLBnodesCoarse]; + fswC = &DC[dPP0 * numberOfLBnodesCoarse]; + fneC = &DC[dMM0 * numberOfLBnodesCoarse]; + fnwC = &DC[dPM0 * numberOfLBnodesCoarse]; + fseC = &DC[dMP0 * numberOfLBnodesCoarse]; + fbwC = &DC[dP0P * numberOfLBnodesCoarse]; + fteC = &DC[dM0M * numberOfLBnodesCoarse]; + ftwC = &DC[dP0M * numberOfLBnodesCoarse]; + fbeC = &DC[dM0P * numberOfLBnodesCoarse]; + fbsC = &DC[d0PP * numberOfLBnodesCoarse]; + ftnC = &DC[d0MM * numberOfLBnodesCoarse]; + ftsC = &DC[d0PM * numberOfLBnodesCoarse]; + fbnC = &DC[d0MP * numberOfLBnodesCoarse]; + fzeroC = &DC[d000 * numberOfLBnodesCoarse]; + fbswC = &DC[dPPP * numberOfLBnodesCoarse]; + fbneC = &DC[dMMP * numberOfLBnodesCoarse]; + fbnwC = &DC[dPMP * numberOfLBnodesCoarse]; + fbseC = &DC[dMPP * numberOfLBnodesCoarse]; + ftswC = &DC[dPPM * numberOfLBnodesCoarse]; + ftneC = &DC[dMMM * numberOfLBnodesCoarse]; + ftnwC = &DC[dPMM * numberOfLBnodesCoarse]; + ftseC = &DC[dMPM * numberOfLBnodesCoarse]; } //////////////////////////////////////////////////////////////////////////////// const unsigned ix = threadIdx.x; // Globaler x-Index @@ -14352,96 +14352,96 @@ __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[DIR_P00 * numberOfLBnodesFine]; - fwF = &DF[DIR_M00 * numberOfLBnodesFine]; - fnF = &DF[DIR_0P0 * numberOfLBnodesFine]; - fsF = &DF[DIR_0M0 * numberOfLBnodesFine]; - ftF = &DF[DIR_00P * numberOfLBnodesFine]; - fbF = &DF[DIR_00M * numberOfLBnodesFine]; - fneF = &DF[DIR_PP0 * numberOfLBnodesFine]; - fswF = &DF[DIR_MM0 * numberOfLBnodesFine]; - fseF = &DF[DIR_PM0 * numberOfLBnodesFine]; - fnwF = &DF[DIR_MP0 * numberOfLBnodesFine]; - fteF = &DF[DIR_P0P * numberOfLBnodesFine]; - fbwF = &DF[DIR_M0M * numberOfLBnodesFine]; - fbeF = &DF[DIR_P0M * numberOfLBnodesFine]; - ftwF = &DF[DIR_M0P * numberOfLBnodesFine]; - ftnF = &DF[DIR_0PP * numberOfLBnodesFine]; - fbsF = &DF[DIR_0MM * numberOfLBnodesFine]; - fbnF = &DF[DIR_0PM * numberOfLBnodesFine]; - ftsF = &DF[DIR_0MP * numberOfLBnodesFine]; - fzeroF = &DF[DIR_000 * numberOfLBnodesFine]; - ftneF = &DF[DIR_PPP * numberOfLBnodesFine]; - ftswF = &DF[DIR_MMP * numberOfLBnodesFine]; - ftseF = &DF[DIR_PMP * numberOfLBnodesFine]; - ftnwF = &DF[DIR_MPP * numberOfLBnodesFine]; - fbneF = &DF[DIR_PPM * numberOfLBnodesFine]; - fbswF = &DF[DIR_MMM * numberOfLBnodesFine]; - fbseF = &DF[DIR_PMM * numberOfLBnodesFine]; - fbnwF = &DF[DIR_MPM * numberOfLBnodesFine]; + feF = &DF[dP00 * numberOfLBnodesFine]; + fwF = &DF[dM00 * numberOfLBnodesFine]; + fnF = &DF[d0P0 * numberOfLBnodesFine]; + fsF = &DF[d0M0 * numberOfLBnodesFine]; + ftF = &DF[d00P * numberOfLBnodesFine]; + fbF = &DF[d00M * numberOfLBnodesFine]; + fneF = &DF[dPP0 * numberOfLBnodesFine]; + fswF = &DF[dMM0 * numberOfLBnodesFine]; + fseF = &DF[dPM0 * numberOfLBnodesFine]; + fnwF = &DF[dMP0 * numberOfLBnodesFine]; + fteF = &DF[dP0P * numberOfLBnodesFine]; + fbwF = &DF[dM0M * numberOfLBnodesFine]; + fbeF = &DF[dP0M * numberOfLBnodesFine]; + ftwF = &DF[dM0P * numberOfLBnodesFine]; + ftnF = &DF[d0PP * numberOfLBnodesFine]; + fbsF = &DF[d0MM * numberOfLBnodesFine]; + fbnF = &DF[d0PM * numberOfLBnodesFine]; + ftsF = &DF[d0MP * numberOfLBnodesFine]; + fzeroF = &DF[d000 * numberOfLBnodesFine]; + ftneF = &DF[dPPP * numberOfLBnodesFine]; + ftswF = &DF[dMMP * numberOfLBnodesFine]; + ftseF = &DF[dPMP * numberOfLBnodesFine]; + ftnwF = &DF[dMPP * numberOfLBnodesFine]; + fbneF = &DF[dPPM * numberOfLBnodesFine]; + fbswF = &DF[dMMM * numberOfLBnodesFine]; + fbseF = &DF[dPMM * numberOfLBnodesFine]; + fbnwF = &DF[dMPM * numberOfLBnodesFine]; 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[DIR_P00 * numberOfLBnodesCoarse]; - fwC = &DC[DIR_M00 * numberOfLBnodesCoarse]; - fnC = &DC[DIR_0P0 * numberOfLBnodesCoarse]; - fsC = &DC[DIR_0M0 * numberOfLBnodesCoarse]; - ftC = &DC[DIR_00P * numberOfLBnodesCoarse]; - fbC = &DC[DIR_00M * numberOfLBnodesCoarse]; - fneC = &DC[DIR_PP0 * numberOfLBnodesCoarse]; - fswC = &DC[DIR_MM0 * numberOfLBnodesCoarse]; - fseC = &DC[DIR_PM0 * numberOfLBnodesCoarse]; - fnwC = &DC[DIR_MP0 * numberOfLBnodesCoarse]; - fteC = &DC[DIR_P0P * numberOfLBnodesCoarse]; - fbwC = &DC[DIR_M0M * numberOfLBnodesCoarse]; - fbeC = &DC[DIR_P0M * numberOfLBnodesCoarse]; - ftwC = &DC[DIR_M0P * numberOfLBnodesCoarse]; - ftnC = &DC[DIR_0PP * numberOfLBnodesCoarse]; - fbsC = &DC[DIR_0MM * numberOfLBnodesCoarse]; - fbnC = &DC[DIR_0PM * numberOfLBnodesCoarse]; - ftsC = &DC[DIR_0MP * numberOfLBnodesCoarse]; - fzeroC = &DC[DIR_000 * numberOfLBnodesCoarse]; - ftneC = &DC[DIR_PPP * numberOfLBnodesCoarse]; - ftswC = &DC[DIR_MMP * numberOfLBnodesCoarse]; - ftseC = &DC[DIR_PMP * numberOfLBnodesCoarse]; - ftnwC = &DC[DIR_MPP * numberOfLBnodesCoarse]; - fbneC = &DC[DIR_PPM * numberOfLBnodesCoarse]; - fbswC = &DC[DIR_MMM * numberOfLBnodesCoarse]; - fbseC = &DC[DIR_PMM * numberOfLBnodesCoarse]; - fbnwC = &DC[DIR_MPM * numberOfLBnodesCoarse]; + feC = &DC[dP00 * numberOfLBnodesCoarse]; + fwC = &DC[dM00 * numberOfLBnodesCoarse]; + fnC = &DC[d0P0 * numberOfLBnodesCoarse]; + fsC = &DC[d0M0 * numberOfLBnodesCoarse]; + ftC = &DC[d00P * numberOfLBnodesCoarse]; + fbC = &DC[d00M * numberOfLBnodesCoarse]; + fneC = &DC[dPP0 * numberOfLBnodesCoarse]; + fswC = &DC[dMM0 * numberOfLBnodesCoarse]; + fseC = &DC[dPM0 * numberOfLBnodesCoarse]; + fnwC = &DC[dMP0 * numberOfLBnodesCoarse]; + fteC = &DC[dP0P * numberOfLBnodesCoarse]; + fbwC = &DC[dM0M * numberOfLBnodesCoarse]; + fbeC = &DC[dP0M * numberOfLBnodesCoarse]; + ftwC = &DC[dM0P * numberOfLBnodesCoarse]; + ftnC = &DC[d0PP * numberOfLBnodesCoarse]; + fbsC = &DC[d0MM * numberOfLBnodesCoarse]; + fbnC = &DC[d0PM * numberOfLBnodesCoarse]; + ftsC = &DC[d0MP * numberOfLBnodesCoarse]; + fzeroC = &DC[d000 * numberOfLBnodesCoarse]; + ftneC = &DC[dPPP * numberOfLBnodesCoarse]; + ftswC = &DC[dMMP * numberOfLBnodesCoarse]; + ftseC = &DC[dPMP * numberOfLBnodesCoarse]; + ftnwC = &DC[dMPP * numberOfLBnodesCoarse]; + fbneC = &DC[dPPM * numberOfLBnodesCoarse]; + fbswC = &DC[dMMM * numberOfLBnodesCoarse]; + fbseC = &DC[dPMM * numberOfLBnodesCoarse]; + fbnwC = &DC[dMPM * numberOfLBnodesCoarse]; } else { - fwC = &DC[DIR_P00 * numberOfLBnodesCoarse]; - feC = &DC[DIR_M00 * numberOfLBnodesCoarse]; - fsC = &DC[DIR_0P0 * numberOfLBnodesCoarse]; - fnC = &DC[DIR_0M0 * numberOfLBnodesCoarse]; - fbC = &DC[DIR_00P * numberOfLBnodesCoarse]; - ftC = &DC[DIR_00M * numberOfLBnodesCoarse]; - fswC = &DC[DIR_PP0 * numberOfLBnodesCoarse]; - fneC = &DC[DIR_MM0 * numberOfLBnodesCoarse]; - fnwC = &DC[DIR_PM0 * numberOfLBnodesCoarse]; - fseC = &DC[DIR_MP0 * numberOfLBnodesCoarse]; - fbwC = &DC[DIR_P0P * numberOfLBnodesCoarse]; - fteC = &DC[DIR_M0M * numberOfLBnodesCoarse]; - ftwC = &DC[DIR_P0M * numberOfLBnodesCoarse]; - fbeC = &DC[DIR_M0P * numberOfLBnodesCoarse]; - fbsC = &DC[DIR_0PP * numberOfLBnodesCoarse]; - ftnC = &DC[DIR_0MM * numberOfLBnodesCoarse]; - ftsC = &DC[DIR_0PM * numberOfLBnodesCoarse]; - fbnC = &DC[DIR_0MP * numberOfLBnodesCoarse]; - fzeroC = &DC[DIR_000 * numberOfLBnodesCoarse]; - fbswC = &DC[DIR_PPP * numberOfLBnodesCoarse]; - fbneC = &DC[DIR_MMP * numberOfLBnodesCoarse]; - fbnwC = &DC[DIR_PMP * numberOfLBnodesCoarse]; - fbseC = &DC[DIR_MPP * numberOfLBnodesCoarse]; - ftswC = &DC[DIR_PPM * numberOfLBnodesCoarse]; - ftneC = &DC[DIR_MMM * numberOfLBnodesCoarse]; - ftnwC = &DC[DIR_PMM * numberOfLBnodesCoarse]; - ftseC = &DC[DIR_MPM * numberOfLBnodesCoarse]; + fwC = &DC[dP00 * numberOfLBnodesCoarse]; + feC = &DC[dM00 * numberOfLBnodesCoarse]; + fsC = &DC[d0P0 * numberOfLBnodesCoarse]; + fnC = &DC[d0M0 * numberOfLBnodesCoarse]; + fbC = &DC[d00P * numberOfLBnodesCoarse]; + ftC = &DC[d00M * numberOfLBnodesCoarse]; + fswC = &DC[dPP0 * numberOfLBnodesCoarse]; + fneC = &DC[dMM0 * numberOfLBnodesCoarse]; + fnwC = &DC[dPM0 * numberOfLBnodesCoarse]; + fseC = &DC[dMP0 * numberOfLBnodesCoarse]; + fbwC = &DC[dP0P * numberOfLBnodesCoarse]; + fteC = &DC[dM0M * numberOfLBnodesCoarse]; + ftwC = &DC[dP0M * numberOfLBnodesCoarse]; + fbeC = &DC[dM0P * numberOfLBnodesCoarse]; + fbsC = &DC[d0PP * numberOfLBnodesCoarse]; + ftnC = &DC[d0MM * numberOfLBnodesCoarse]; + ftsC = &DC[d0PM * numberOfLBnodesCoarse]; + fbnC = &DC[d0MP * numberOfLBnodesCoarse]; + fzeroC = &DC[d000 * numberOfLBnodesCoarse]; + fbswC = &DC[dPPP * numberOfLBnodesCoarse]; + fbneC = &DC[dMMP * numberOfLBnodesCoarse]; + fbnwC = &DC[dPMP * numberOfLBnodesCoarse]; + fbseC = &DC[dMPP * numberOfLBnodesCoarse]; + ftswC = &DC[dPPM * numberOfLBnodesCoarse]; + ftneC = &DC[dMMM * numberOfLBnodesCoarse]; + ftnwC = &DC[dPMM * numberOfLBnodesCoarse]; + ftseC = &DC[dMPM * numberOfLBnodesCoarse]; } //////////////////////////////////////////////////////////////////////////////// const unsigned ix = threadIdx.x; // Globaler x-Index @@ -15558,96 +15558,96 @@ __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[DIR_P00 * numberOfLBnodesFine]; - fwF = &DF[DIR_M00 * numberOfLBnodesFine]; - fnF = &DF[DIR_0P0 * numberOfLBnodesFine]; - fsF = &DF[DIR_0M0 * numberOfLBnodesFine]; - ftF = &DF[DIR_00P * numberOfLBnodesFine]; - fbF = &DF[DIR_00M * numberOfLBnodesFine]; - fneF = &DF[DIR_PP0 * numberOfLBnodesFine]; - fswF = &DF[DIR_MM0 * numberOfLBnodesFine]; - fseF = &DF[DIR_PM0 * numberOfLBnodesFine]; - fnwF = &DF[DIR_MP0 * numberOfLBnodesFine]; - fteF = &DF[DIR_P0P * numberOfLBnodesFine]; - fbwF = &DF[DIR_M0M * numberOfLBnodesFine]; - fbeF = &DF[DIR_P0M * numberOfLBnodesFine]; - ftwF = &DF[DIR_M0P * numberOfLBnodesFine]; - ftnF = &DF[DIR_0PP * numberOfLBnodesFine]; - fbsF = &DF[DIR_0MM * numberOfLBnodesFine]; - fbnF = &DF[DIR_0PM * numberOfLBnodesFine]; - ftsF = &DF[DIR_0MP * numberOfLBnodesFine]; - fzeroF = &DF[DIR_000 * numberOfLBnodesFine]; - ftneF = &DF[DIR_PPP * numberOfLBnodesFine]; - ftswF = &DF[DIR_MMP * numberOfLBnodesFine]; - ftseF = &DF[DIR_PMP * numberOfLBnodesFine]; - ftnwF = &DF[DIR_MPP * numberOfLBnodesFine]; - fbneF = &DF[DIR_PPM * numberOfLBnodesFine]; - fbswF = &DF[DIR_MMM * numberOfLBnodesFine]; - fbseF = &DF[DIR_PMM * numberOfLBnodesFine]; - fbnwF = &DF[DIR_MPM * numberOfLBnodesFine]; + feF = &DF[dP00 * numberOfLBnodesFine]; + fwF = &DF[dM00 * numberOfLBnodesFine]; + fnF = &DF[d0P0 * numberOfLBnodesFine]; + fsF = &DF[d0M0 * numberOfLBnodesFine]; + ftF = &DF[d00P * numberOfLBnodesFine]; + fbF = &DF[d00M * numberOfLBnodesFine]; + fneF = &DF[dPP0 * numberOfLBnodesFine]; + fswF = &DF[dMM0 * numberOfLBnodesFine]; + fseF = &DF[dPM0 * numberOfLBnodesFine]; + fnwF = &DF[dMP0 * numberOfLBnodesFine]; + fteF = &DF[dP0P * numberOfLBnodesFine]; + fbwF = &DF[dM0M * numberOfLBnodesFine]; + fbeF = &DF[dP0M * numberOfLBnodesFine]; + ftwF = &DF[dM0P * numberOfLBnodesFine]; + ftnF = &DF[d0PP * numberOfLBnodesFine]; + fbsF = &DF[d0MM * numberOfLBnodesFine]; + fbnF = &DF[d0PM * numberOfLBnodesFine]; + ftsF = &DF[d0MP * numberOfLBnodesFine]; + fzeroF = &DF[d000 * numberOfLBnodesFine]; + ftneF = &DF[dPPP * numberOfLBnodesFine]; + ftswF = &DF[dMMP * numberOfLBnodesFine]; + ftseF = &DF[dPMP * numberOfLBnodesFine]; + ftnwF = &DF[dMPP * numberOfLBnodesFine]; + fbneF = &DF[dPPM * numberOfLBnodesFine]; + fbswF = &DF[dMMM * numberOfLBnodesFine]; + fbseF = &DF[dPMM * numberOfLBnodesFine]; + fbnwF = &DF[dMPM * numberOfLBnodesFine]; 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[DIR_P00 * numberOfLBnodesCoarse]; - fwC = &DC[DIR_M00 * numberOfLBnodesCoarse]; - fnC = &DC[DIR_0P0 * numberOfLBnodesCoarse]; - fsC = &DC[DIR_0M0 * numberOfLBnodesCoarse]; - ftC = &DC[DIR_00P * numberOfLBnodesCoarse]; - fbC = &DC[DIR_00M * numberOfLBnodesCoarse]; - fneC = &DC[DIR_PP0 * numberOfLBnodesCoarse]; - fswC = &DC[DIR_MM0 * numberOfLBnodesCoarse]; - fseC = &DC[DIR_PM0 * numberOfLBnodesCoarse]; - fnwC = &DC[DIR_MP0 * numberOfLBnodesCoarse]; - fteC = &DC[DIR_P0P * numberOfLBnodesCoarse]; - fbwC = &DC[DIR_M0M * numberOfLBnodesCoarse]; - fbeC = &DC[DIR_P0M * numberOfLBnodesCoarse]; - ftwC = &DC[DIR_M0P * numberOfLBnodesCoarse]; - ftnC = &DC[DIR_0PP * numberOfLBnodesCoarse]; - fbsC = &DC[DIR_0MM * numberOfLBnodesCoarse]; - fbnC = &DC[DIR_0PM * numberOfLBnodesCoarse]; - ftsC = &DC[DIR_0MP * numberOfLBnodesCoarse]; - fzeroC = &DC[DIR_000 * numberOfLBnodesCoarse]; - ftneC = &DC[DIR_PPP * numberOfLBnodesCoarse]; - ftswC = &DC[DIR_MMP * numberOfLBnodesCoarse]; - ftseC = &DC[DIR_PMP * numberOfLBnodesCoarse]; - ftnwC = &DC[DIR_MPP * numberOfLBnodesCoarse]; - fbneC = &DC[DIR_PPM * numberOfLBnodesCoarse]; - fbswC = &DC[DIR_MMM * numberOfLBnodesCoarse]; - fbseC = &DC[DIR_PMM * numberOfLBnodesCoarse]; - fbnwC = &DC[DIR_MPM * numberOfLBnodesCoarse]; + feC = &DC[dP00 * numberOfLBnodesCoarse]; + fwC = &DC[dM00 * numberOfLBnodesCoarse]; + fnC = &DC[d0P0 * numberOfLBnodesCoarse]; + fsC = &DC[d0M0 * numberOfLBnodesCoarse]; + ftC = &DC[d00P * numberOfLBnodesCoarse]; + fbC = &DC[d00M * numberOfLBnodesCoarse]; + fneC = &DC[dPP0 * numberOfLBnodesCoarse]; + fswC = &DC[dMM0 * numberOfLBnodesCoarse]; + fseC = &DC[dPM0 * numberOfLBnodesCoarse]; + fnwC = &DC[dMP0 * numberOfLBnodesCoarse]; + fteC = &DC[dP0P * numberOfLBnodesCoarse]; + fbwC = &DC[dM0M * numberOfLBnodesCoarse]; + fbeC = &DC[dP0M * numberOfLBnodesCoarse]; + ftwC = &DC[dM0P * numberOfLBnodesCoarse]; + ftnC = &DC[d0PP * numberOfLBnodesCoarse]; + fbsC = &DC[d0MM * numberOfLBnodesCoarse]; + fbnC = &DC[d0PM * numberOfLBnodesCoarse]; + ftsC = &DC[d0MP * numberOfLBnodesCoarse]; + fzeroC = &DC[d000 * numberOfLBnodesCoarse]; + ftneC = &DC[dPPP * numberOfLBnodesCoarse]; + ftswC = &DC[dMMP * numberOfLBnodesCoarse]; + ftseC = &DC[dPMP * numberOfLBnodesCoarse]; + ftnwC = &DC[dMPP * numberOfLBnodesCoarse]; + fbneC = &DC[dPPM * numberOfLBnodesCoarse]; + fbswC = &DC[dMMM * numberOfLBnodesCoarse]; + fbseC = &DC[dPMM * numberOfLBnodesCoarse]; + fbnwC = &DC[dMPM * numberOfLBnodesCoarse]; } else { - fwC = &DC[DIR_P00 * numberOfLBnodesCoarse]; - feC = &DC[DIR_M00 * numberOfLBnodesCoarse]; - fsC = &DC[DIR_0P0 * numberOfLBnodesCoarse]; - fnC = &DC[DIR_0M0 * numberOfLBnodesCoarse]; - fbC = &DC[DIR_00P * numberOfLBnodesCoarse]; - ftC = &DC[DIR_00M * numberOfLBnodesCoarse]; - fswC = &DC[DIR_PP0 * numberOfLBnodesCoarse]; - fneC = &DC[DIR_MM0 * numberOfLBnodesCoarse]; - fnwC = &DC[DIR_PM0 * numberOfLBnodesCoarse]; - fseC = &DC[DIR_MP0 * numberOfLBnodesCoarse]; - fbwC = &DC[DIR_P0P * numberOfLBnodesCoarse]; - fteC = &DC[DIR_M0M * numberOfLBnodesCoarse]; - ftwC = &DC[DIR_P0M * numberOfLBnodesCoarse]; - fbeC = &DC[DIR_M0P * numberOfLBnodesCoarse]; - fbsC = &DC[DIR_0PP * numberOfLBnodesCoarse]; - ftnC = &DC[DIR_0MM * numberOfLBnodesCoarse]; - ftsC = &DC[DIR_0PM * numberOfLBnodesCoarse]; - fbnC = &DC[DIR_0MP * numberOfLBnodesCoarse]; - fzeroC = &DC[DIR_000 * numberOfLBnodesCoarse]; - fbswC = &DC[DIR_PPP * numberOfLBnodesCoarse]; - fbneC = &DC[DIR_MMP * numberOfLBnodesCoarse]; - fbnwC = &DC[DIR_PMP * numberOfLBnodesCoarse]; - fbseC = &DC[DIR_MPP * numberOfLBnodesCoarse]; - ftswC = &DC[DIR_PPM * numberOfLBnodesCoarse]; - ftneC = &DC[DIR_MMM * numberOfLBnodesCoarse]; - ftnwC = &DC[DIR_PMM * numberOfLBnodesCoarse]; - ftseC = &DC[DIR_MPM * numberOfLBnodesCoarse]; + fwC = &DC[dP00 * numberOfLBnodesCoarse]; + feC = &DC[dM00 * numberOfLBnodesCoarse]; + fsC = &DC[d0P0 * numberOfLBnodesCoarse]; + fnC = &DC[d0M0 * numberOfLBnodesCoarse]; + fbC = &DC[d00P * numberOfLBnodesCoarse]; + ftC = &DC[d00M * numberOfLBnodesCoarse]; + fswC = &DC[dPP0 * numberOfLBnodesCoarse]; + fneC = &DC[dMM0 * numberOfLBnodesCoarse]; + fnwC = &DC[dPM0 * numberOfLBnodesCoarse]; + fseC = &DC[dMP0 * numberOfLBnodesCoarse]; + fbwC = &DC[dP0P * numberOfLBnodesCoarse]; + fteC = &DC[dM0M * numberOfLBnodesCoarse]; + ftwC = &DC[dP0M * numberOfLBnodesCoarse]; + fbeC = &DC[dM0P * numberOfLBnodesCoarse]; + fbsC = &DC[d0PP * numberOfLBnodesCoarse]; + ftnC = &DC[d0MM * numberOfLBnodesCoarse]; + ftsC = &DC[d0PM * numberOfLBnodesCoarse]; + fbnC = &DC[d0MP * numberOfLBnodesCoarse]; + fzeroC = &DC[d000 * numberOfLBnodesCoarse]; + fbswC = &DC[dPPP * numberOfLBnodesCoarse]; + fbneC = &DC[dMMP * numberOfLBnodesCoarse]; + fbnwC = &DC[dPMP * numberOfLBnodesCoarse]; + fbseC = &DC[dMPP * numberOfLBnodesCoarse]; + ftswC = &DC[dPPM * numberOfLBnodesCoarse]; + ftneC = &DC[dMMM * numberOfLBnodesCoarse]; + ftnwC = &DC[dPMM * numberOfLBnodesCoarse]; + ftseC = &DC[dMPM * numberOfLBnodesCoarse]; } //////////////////////////////////////////////////////////////////////////////// const unsigned ix = threadIdx.x; // Globaler x-Index @@ -16918,96 +16918,96 @@ __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[DIR_P00 * numberOfLBnodesFine]; - fwF = &DF[DIR_M00 * numberOfLBnodesFine]; - fnF = &DF[DIR_0P0 * numberOfLBnodesFine]; - fsF = &DF[DIR_0M0 * numberOfLBnodesFine]; - ftF = &DF[DIR_00P * numberOfLBnodesFine]; - fbF = &DF[DIR_00M * numberOfLBnodesFine]; - fneF = &DF[DIR_PP0 * numberOfLBnodesFine]; - fswF = &DF[DIR_MM0 * numberOfLBnodesFine]; - fseF = &DF[DIR_PM0 * numberOfLBnodesFine]; - fnwF = &DF[DIR_MP0 * numberOfLBnodesFine]; - fteF = &DF[DIR_P0P * numberOfLBnodesFine]; - fbwF = &DF[DIR_M0M * numberOfLBnodesFine]; - fbeF = &DF[DIR_P0M * numberOfLBnodesFine]; - ftwF = &DF[DIR_M0P * numberOfLBnodesFine]; - ftnF = &DF[DIR_0PP * numberOfLBnodesFine]; - fbsF = &DF[DIR_0MM * numberOfLBnodesFine]; - fbnF = &DF[DIR_0PM * numberOfLBnodesFine]; - ftsF = &DF[DIR_0MP * numberOfLBnodesFine]; - fzeroF = &DF[DIR_000 * numberOfLBnodesFine]; - ftneF = &DF[DIR_PPP * numberOfLBnodesFine]; - ftswF = &DF[DIR_MMP * numberOfLBnodesFine]; - ftseF = &DF[DIR_PMP * numberOfLBnodesFine]; - ftnwF = &DF[DIR_MPP * numberOfLBnodesFine]; - fbneF = &DF[DIR_PPM * numberOfLBnodesFine]; - fbswF = &DF[DIR_MMM * numberOfLBnodesFine]; - fbseF = &DF[DIR_PMM * numberOfLBnodesFine]; - fbnwF = &DF[DIR_MPM * numberOfLBnodesFine]; + feF = &DF[dP00 * numberOfLBnodesFine]; + fwF = &DF[dM00 * numberOfLBnodesFine]; + fnF = &DF[d0P0 * numberOfLBnodesFine]; + fsF = &DF[d0M0 * numberOfLBnodesFine]; + ftF = &DF[d00P * numberOfLBnodesFine]; + fbF = &DF[d00M * numberOfLBnodesFine]; + fneF = &DF[dPP0 * numberOfLBnodesFine]; + fswF = &DF[dMM0 * numberOfLBnodesFine]; + fseF = &DF[dPM0 * numberOfLBnodesFine]; + fnwF = &DF[dMP0 * numberOfLBnodesFine]; + fteF = &DF[dP0P * numberOfLBnodesFine]; + fbwF = &DF[dM0M * numberOfLBnodesFine]; + fbeF = &DF[dP0M * numberOfLBnodesFine]; + ftwF = &DF[dM0P * numberOfLBnodesFine]; + ftnF = &DF[d0PP * numberOfLBnodesFine]; + fbsF = &DF[d0MM * numberOfLBnodesFine]; + fbnF = &DF[d0PM * numberOfLBnodesFine]; + ftsF = &DF[d0MP * numberOfLBnodesFine]; + fzeroF = &DF[d000 * numberOfLBnodesFine]; + ftneF = &DF[dPPP * numberOfLBnodesFine]; + ftswF = &DF[dMMP * numberOfLBnodesFine]; + ftseF = &DF[dPMP * numberOfLBnodesFine]; + ftnwF = &DF[dMPP * numberOfLBnodesFine]; + fbneF = &DF[dPPM * numberOfLBnodesFine]; + fbswF = &DF[dMMM * numberOfLBnodesFine]; + fbseF = &DF[dPMM * numberOfLBnodesFine]; + fbnwF = &DF[dMPM * numberOfLBnodesFine]; 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[DIR_P00 * numberOfLBnodesCoarse]; - fwC = &DC[DIR_M00 * numberOfLBnodesCoarse]; - fnC = &DC[DIR_0P0 * numberOfLBnodesCoarse]; - fsC = &DC[DIR_0M0 * numberOfLBnodesCoarse]; - ftC = &DC[DIR_00P * numberOfLBnodesCoarse]; - fbC = &DC[DIR_00M * numberOfLBnodesCoarse]; - fneC = &DC[DIR_PP0 * numberOfLBnodesCoarse]; - fswC = &DC[DIR_MM0 * numberOfLBnodesCoarse]; - fseC = &DC[DIR_PM0 * numberOfLBnodesCoarse]; - fnwC = &DC[DIR_MP0 * numberOfLBnodesCoarse]; - fteC = &DC[DIR_P0P * numberOfLBnodesCoarse]; - fbwC = &DC[DIR_M0M * numberOfLBnodesCoarse]; - fbeC = &DC[DIR_P0M * numberOfLBnodesCoarse]; - ftwC = &DC[DIR_M0P * numberOfLBnodesCoarse]; - ftnC = &DC[DIR_0PP * numberOfLBnodesCoarse]; - fbsC = &DC[DIR_0MM * numberOfLBnodesCoarse]; - fbnC = &DC[DIR_0PM * numberOfLBnodesCoarse]; - ftsC = &DC[DIR_0MP * numberOfLBnodesCoarse]; - fzeroC = &DC[DIR_000 * numberOfLBnodesCoarse]; - ftneC = &DC[DIR_PPP * numberOfLBnodesCoarse]; - ftswC = &DC[DIR_MMP * numberOfLBnodesCoarse]; - ftseC = &DC[DIR_PMP * numberOfLBnodesCoarse]; - ftnwC = &DC[DIR_MPP * numberOfLBnodesCoarse]; - fbneC = &DC[DIR_PPM * numberOfLBnodesCoarse]; - fbswC = &DC[DIR_MMM * numberOfLBnodesCoarse]; - fbseC = &DC[DIR_PMM * numberOfLBnodesCoarse]; - fbnwC = &DC[DIR_MPM * numberOfLBnodesCoarse]; + feC = &DC[dP00 * numberOfLBnodesCoarse]; + fwC = &DC[dM00 * numberOfLBnodesCoarse]; + fnC = &DC[d0P0 * numberOfLBnodesCoarse]; + fsC = &DC[d0M0 * numberOfLBnodesCoarse]; + ftC = &DC[d00P * numberOfLBnodesCoarse]; + fbC = &DC[d00M * numberOfLBnodesCoarse]; + fneC = &DC[dPP0 * numberOfLBnodesCoarse]; + fswC = &DC[dMM0 * numberOfLBnodesCoarse]; + fseC = &DC[dPM0 * numberOfLBnodesCoarse]; + fnwC = &DC[dMP0 * numberOfLBnodesCoarse]; + fteC = &DC[dP0P * numberOfLBnodesCoarse]; + fbwC = &DC[dM0M * numberOfLBnodesCoarse]; + fbeC = &DC[dP0M * numberOfLBnodesCoarse]; + ftwC = &DC[dM0P * numberOfLBnodesCoarse]; + ftnC = &DC[d0PP * numberOfLBnodesCoarse]; + fbsC = &DC[d0MM * numberOfLBnodesCoarse]; + fbnC = &DC[d0PM * numberOfLBnodesCoarse]; + ftsC = &DC[d0MP * numberOfLBnodesCoarse]; + fzeroC = &DC[d000 * numberOfLBnodesCoarse]; + ftneC = &DC[dPPP * numberOfLBnodesCoarse]; + ftswC = &DC[dMMP * numberOfLBnodesCoarse]; + ftseC = &DC[dPMP * numberOfLBnodesCoarse]; + ftnwC = &DC[dMPP * numberOfLBnodesCoarse]; + fbneC = &DC[dPPM * numberOfLBnodesCoarse]; + fbswC = &DC[dMMM * numberOfLBnodesCoarse]; + fbseC = &DC[dPMM * numberOfLBnodesCoarse]; + fbnwC = &DC[dMPM * numberOfLBnodesCoarse]; } else { - fwC = &DC[DIR_P00 * numberOfLBnodesCoarse]; - feC = &DC[DIR_M00 * numberOfLBnodesCoarse]; - fsC = &DC[DIR_0P0 * numberOfLBnodesCoarse]; - fnC = &DC[DIR_0M0 * numberOfLBnodesCoarse]; - fbC = &DC[DIR_00P * numberOfLBnodesCoarse]; - ftC = &DC[DIR_00M * numberOfLBnodesCoarse]; - fswC = &DC[DIR_PP0 * numberOfLBnodesCoarse]; - fneC = &DC[DIR_MM0 * numberOfLBnodesCoarse]; - fnwC = &DC[DIR_PM0 * numberOfLBnodesCoarse]; - fseC = &DC[DIR_MP0 * numberOfLBnodesCoarse]; - fbwC = &DC[DIR_P0P * numberOfLBnodesCoarse]; - fteC = &DC[DIR_M0M * numberOfLBnodesCoarse]; - ftwC = &DC[DIR_P0M * numberOfLBnodesCoarse]; - fbeC = &DC[DIR_M0P * numberOfLBnodesCoarse]; - fbsC = &DC[DIR_0PP * numberOfLBnodesCoarse]; - ftnC = &DC[DIR_0MM * numberOfLBnodesCoarse]; - ftsC = &DC[DIR_0PM * numberOfLBnodesCoarse]; - fbnC = &DC[DIR_0MP * numberOfLBnodesCoarse]; - fzeroC = &DC[DIR_000 * numberOfLBnodesCoarse]; - fbswC = &DC[DIR_PPP * numberOfLBnodesCoarse]; - fbneC = &DC[DIR_MMP * numberOfLBnodesCoarse]; - fbnwC = &DC[DIR_PMP * numberOfLBnodesCoarse]; - fbseC = &DC[DIR_MPP * numberOfLBnodesCoarse]; - ftswC = &DC[DIR_PPM * numberOfLBnodesCoarse]; - ftneC = &DC[DIR_MMM * numberOfLBnodesCoarse]; - ftnwC = &DC[DIR_PMM * numberOfLBnodesCoarse]; - ftseC = &DC[DIR_MPM * numberOfLBnodesCoarse]; + fwC = &DC[dP00 * numberOfLBnodesCoarse]; + feC = &DC[dM00 * numberOfLBnodesCoarse]; + fsC = &DC[d0P0 * numberOfLBnodesCoarse]; + fnC = &DC[d0M0 * numberOfLBnodesCoarse]; + fbC = &DC[d00P * numberOfLBnodesCoarse]; + ftC = &DC[d00M * numberOfLBnodesCoarse]; + fswC = &DC[dPP0 * numberOfLBnodesCoarse]; + fneC = &DC[dMM0 * numberOfLBnodesCoarse]; + fnwC = &DC[dPM0 * numberOfLBnodesCoarse]; + fseC = &DC[dMP0 * numberOfLBnodesCoarse]; + fbwC = &DC[dP0P * numberOfLBnodesCoarse]; + fteC = &DC[dM0M * numberOfLBnodesCoarse]; + ftwC = &DC[dP0M * numberOfLBnodesCoarse]; + fbeC = &DC[dM0P * numberOfLBnodesCoarse]; + fbsC = &DC[d0PP * numberOfLBnodesCoarse]; + ftnC = &DC[d0MM * numberOfLBnodesCoarse]; + ftsC = &DC[d0PM * numberOfLBnodesCoarse]; + fbnC = &DC[d0MP * numberOfLBnodesCoarse]; + fzeroC = &DC[d000 * numberOfLBnodesCoarse]; + fbswC = &DC[dPPP * numberOfLBnodesCoarse]; + fbneC = &DC[dMMP * numberOfLBnodesCoarse]; + fbnwC = &DC[dPMP * numberOfLBnodesCoarse]; + fbseC = &DC[dMPP * numberOfLBnodesCoarse]; + ftswC = &DC[dPPM * numberOfLBnodesCoarse]; + ftneC = &DC[dMMM * numberOfLBnodesCoarse]; + ftnwC = &DC[dPMM * numberOfLBnodesCoarse]; + ftseC = &DC[dMPM * numberOfLBnodesCoarse]; } //////////////////////////////////////////////////////////////////////////////// const unsigned ix = threadIdx.x; // Globaler x-Index @@ -17843,96 +17843,96 @@ __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[DIR_P00 * numberOfLBnodesFine]; - fwF = &DF[DIR_M00 * numberOfLBnodesFine]; - fnF = &DF[DIR_0P0 * numberOfLBnodesFine]; - fsF = &DF[DIR_0M0 * numberOfLBnodesFine]; - ftF = &DF[DIR_00P * numberOfLBnodesFine]; - fbF = &DF[DIR_00M * numberOfLBnodesFine]; - fneF = &DF[DIR_PP0 * numberOfLBnodesFine]; - fswF = &DF[DIR_MM0 * numberOfLBnodesFine]; - fseF = &DF[DIR_PM0 * numberOfLBnodesFine]; - fnwF = &DF[DIR_MP0 * numberOfLBnodesFine]; - fteF = &DF[DIR_P0P * numberOfLBnodesFine]; - fbwF = &DF[DIR_M0M * numberOfLBnodesFine]; - fbeF = &DF[DIR_P0M * numberOfLBnodesFine]; - ftwF = &DF[DIR_M0P * numberOfLBnodesFine]; - ftnF = &DF[DIR_0PP * numberOfLBnodesFine]; - fbsF = &DF[DIR_0MM * numberOfLBnodesFine]; - fbnF = &DF[DIR_0PM * numberOfLBnodesFine]; - ftsF = &DF[DIR_0MP * numberOfLBnodesFine]; - fzeroF = &DF[DIR_000 * numberOfLBnodesFine]; - ftneF = &DF[DIR_PPP * numberOfLBnodesFine]; - ftswF = &DF[DIR_MMP * numberOfLBnodesFine]; - ftseF = &DF[DIR_PMP * numberOfLBnodesFine]; - ftnwF = &DF[DIR_MPP * numberOfLBnodesFine]; - fbneF = &DF[DIR_PPM * numberOfLBnodesFine]; - fbswF = &DF[DIR_MMM * numberOfLBnodesFine]; - fbseF = &DF[DIR_PMM * numberOfLBnodesFine]; - fbnwF = &DF[DIR_MPM * numberOfLBnodesFine]; + feF = &DF[dP00 * numberOfLBnodesFine]; + fwF = &DF[dM00 * numberOfLBnodesFine]; + fnF = &DF[d0P0 * numberOfLBnodesFine]; + fsF = &DF[d0M0 * numberOfLBnodesFine]; + ftF = &DF[d00P * numberOfLBnodesFine]; + fbF = &DF[d00M * numberOfLBnodesFine]; + fneF = &DF[dPP0 * numberOfLBnodesFine]; + fswF = &DF[dMM0 * numberOfLBnodesFine]; + fseF = &DF[dPM0 * numberOfLBnodesFine]; + fnwF = &DF[dMP0 * numberOfLBnodesFine]; + fteF = &DF[dP0P * numberOfLBnodesFine]; + fbwF = &DF[dM0M * numberOfLBnodesFine]; + fbeF = &DF[dP0M * numberOfLBnodesFine]; + ftwF = &DF[dM0P * numberOfLBnodesFine]; + ftnF = &DF[d0PP * numberOfLBnodesFine]; + fbsF = &DF[d0MM * numberOfLBnodesFine]; + fbnF = &DF[d0PM * numberOfLBnodesFine]; + ftsF = &DF[d0MP * numberOfLBnodesFine]; + fzeroF = &DF[d000 * numberOfLBnodesFine]; + ftneF = &DF[dPPP * numberOfLBnodesFine]; + ftswF = &DF[dMMP * numberOfLBnodesFine]; + ftseF = &DF[dPMP * numberOfLBnodesFine]; + ftnwF = &DF[dMPP * numberOfLBnodesFine]; + fbneF = &DF[dPPM * numberOfLBnodesFine]; + fbswF = &DF[dMMM * numberOfLBnodesFine]; + fbseF = &DF[dPMM * numberOfLBnodesFine]; + fbnwF = &DF[dMPM * numberOfLBnodesFine]; 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[DIR_P00 * numberOfLBnodesCoarse]; - fwC = &DC[DIR_M00 * numberOfLBnodesCoarse]; - fnC = &DC[DIR_0P0 * numberOfLBnodesCoarse]; - fsC = &DC[DIR_0M0 * numberOfLBnodesCoarse]; - ftC = &DC[DIR_00P * numberOfLBnodesCoarse]; - fbC = &DC[DIR_00M * numberOfLBnodesCoarse]; - fneC = &DC[DIR_PP0 * numberOfLBnodesCoarse]; - fswC = &DC[DIR_MM0 * numberOfLBnodesCoarse]; - fseC = &DC[DIR_PM0 * numberOfLBnodesCoarse]; - fnwC = &DC[DIR_MP0 * numberOfLBnodesCoarse]; - fteC = &DC[DIR_P0P * numberOfLBnodesCoarse]; - fbwC = &DC[DIR_M0M * numberOfLBnodesCoarse]; - fbeC = &DC[DIR_P0M * numberOfLBnodesCoarse]; - ftwC = &DC[DIR_M0P * numberOfLBnodesCoarse]; - ftnC = &DC[DIR_0PP * numberOfLBnodesCoarse]; - fbsC = &DC[DIR_0MM * numberOfLBnodesCoarse]; - fbnC = &DC[DIR_0PM * numberOfLBnodesCoarse]; - ftsC = &DC[DIR_0MP * numberOfLBnodesCoarse]; - fzeroC = &DC[DIR_000 * numberOfLBnodesCoarse]; - ftneC = &DC[DIR_PPP * numberOfLBnodesCoarse]; - ftswC = &DC[DIR_MMP * numberOfLBnodesCoarse]; - ftseC = &DC[DIR_PMP * numberOfLBnodesCoarse]; - ftnwC = &DC[DIR_MPP * numberOfLBnodesCoarse]; - fbneC = &DC[DIR_PPM * numberOfLBnodesCoarse]; - fbswC = &DC[DIR_MMM * numberOfLBnodesCoarse]; - fbseC = &DC[DIR_PMM * numberOfLBnodesCoarse]; - fbnwC = &DC[DIR_MPM * numberOfLBnodesCoarse]; + feC = &DC[dP00 * numberOfLBnodesCoarse]; + fwC = &DC[dM00 * numberOfLBnodesCoarse]; + fnC = &DC[d0P0 * numberOfLBnodesCoarse]; + fsC = &DC[d0M0 * numberOfLBnodesCoarse]; + ftC = &DC[d00P * numberOfLBnodesCoarse]; + fbC = &DC[d00M * numberOfLBnodesCoarse]; + fneC = &DC[dPP0 * numberOfLBnodesCoarse]; + fswC = &DC[dMM0 * numberOfLBnodesCoarse]; + fseC = &DC[dPM0 * numberOfLBnodesCoarse]; + fnwC = &DC[dMP0 * numberOfLBnodesCoarse]; + fteC = &DC[dP0P * numberOfLBnodesCoarse]; + fbwC = &DC[dM0M * numberOfLBnodesCoarse]; + fbeC = &DC[dP0M * numberOfLBnodesCoarse]; + ftwC = &DC[dM0P * numberOfLBnodesCoarse]; + ftnC = &DC[d0PP * numberOfLBnodesCoarse]; + fbsC = &DC[d0MM * numberOfLBnodesCoarse]; + fbnC = &DC[d0PM * numberOfLBnodesCoarse]; + ftsC = &DC[d0MP * numberOfLBnodesCoarse]; + fzeroC = &DC[d000 * numberOfLBnodesCoarse]; + ftneC = &DC[dPPP * numberOfLBnodesCoarse]; + ftswC = &DC[dMMP * numberOfLBnodesCoarse]; + ftseC = &DC[dPMP * numberOfLBnodesCoarse]; + ftnwC = &DC[dMPP * numberOfLBnodesCoarse]; + fbneC = &DC[dPPM * numberOfLBnodesCoarse]; + fbswC = &DC[dMMM * numberOfLBnodesCoarse]; + fbseC = &DC[dPMM * numberOfLBnodesCoarse]; + fbnwC = &DC[dMPM * numberOfLBnodesCoarse]; } else { - fwC = &DC[DIR_P00 * numberOfLBnodesCoarse]; - feC = &DC[DIR_M00 * numberOfLBnodesCoarse]; - fsC = &DC[DIR_0P0 * numberOfLBnodesCoarse]; - fnC = &DC[DIR_0M0 * numberOfLBnodesCoarse]; - fbC = &DC[DIR_00P * numberOfLBnodesCoarse]; - ftC = &DC[DIR_00M * numberOfLBnodesCoarse]; - fswC = &DC[DIR_PP0 * numberOfLBnodesCoarse]; - fneC = &DC[DIR_MM0 * numberOfLBnodesCoarse]; - fnwC = &DC[DIR_PM0 * numberOfLBnodesCoarse]; - fseC = &DC[DIR_MP0 * numberOfLBnodesCoarse]; - fbwC = &DC[DIR_P0P * numberOfLBnodesCoarse]; - fteC = &DC[DIR_M0M * numberOfLBnodesCoarse]; - ftwC = &DC[DIR_P0M * numberOfLBnodesCoarse]; - fbeC = &DC[DIR_M0P * numberOfLBnodesCoarse]; - fbsC = &DC[DIR_0PP * numberOfLBnodesCoarse]; - ftnC = &DC[DIR_0MM * numberOfLBnodesCoarse]; - ftsC = &DC[DIR_0PM * numberOfLBnodesCoarse]; - fbnC = &DC[DIR_0MP * numberOfLBnodesCoarse]; - fzeroC = &DC[DIR_000 * numberOfLBnodesCoarse]; - fbswC = &DC[DIR_PPP * numberOfLBnodesCoarse]; - fbneC = &DC[DIR_MMP * numberOfLBnodesCoarse]; - fbnwC = &DC[DIR_PMP * numberOfLBnodesCoarse]; - fbseC = &DC[DIR_MPP * numberOfLBnodesCoarse]; - ftswC = &DC[DIR_PPM * numberOfLBnodesCoarse]; - ftneC = &DC[DIR_MMM * numberOfLBnodesCoarse]; - ftnwC = &DC[DIR_PMM * numberOfLBnodesCoarse]; - ftseC = &DC[DIR_MPM * numberOfLBnodesCoarse]; + fwC = &DC[dP00 * numberOfLBnodesCoarse]; + feC = &DC[dM00 * numberOfLBnodesCoarse]; + fsC = &DC[d0P0 * numberOfLBnodesCoarse]; + fnC = &DC[d0M0 * numberOfLBnodesCoarse]; + fbC = &DC[d00P * numberOfLBnodesCoarse]; + ftC = &DC[d00M * numberOfLBnodesCoarse]; + fswC = &DC[dPP0 * numberOfLBnodesCoarse]; + fneC = &DC[dMM0 * numberOfLBnodesCoarse]; + fnwC = &DC[dPM0 * numberOfLBnodesCoarse]; + fseC = &DC[dMP0 * numberOfLBnodesCoarse]; + fbwC = &DC[dP0P * numberOfLBnodesCoarse]; + fteC = &DC[dM0M * numberOfLBnodesCoarse]; + ftwC = &DC[dP0M * numberOfLBnodesCoarse]; + fbeC = &DC[dM0P * numberOfLBnodesCoarse]; + fbsC = &DC[d0PP * numberOfLBnodesCoarse]; + ftnC = &DC[d0MM * numberOfLBnodesCoarse]; + ftsC = &DC[d0PM * numberOfLBnodesCoarse]; + fbnC = &DC[d0MP * numberOfLBnodesCoarse]; + fzeroC = &DC[d000 * numberOfLBnodesCoarse]; + fbswC = &DC[dPPP * numberOfLBnodesCoarse]; + fbneC = &DC[dMMP * numberOfLBnodesCoarse]; + fbnwC = &DC[dPMP * numberOfLBnodesCoarse]; + fbseC = &DC[dMPP * numberOfLBnodesCoarse]; + ftswC = &DC[dPPM * numberOfLBnodesCoarse]; + ftneC = &DC[dMMM * numberOfLBnodesCoarse]; + ftnwC = &DC[dPMM * numberOfLBnodesCoarse]; + ftseC = &DC[dMPM * numberOfLBnodesCoarse]; } //////////////////////////////////////////////////////////////////////////////// const unsigned ix = threadIdx.x; // Globaler x-Index @@ -19236,93 +19236,93 @@ __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[DIR_P00 * numberOfLBnodesFine]; - fwF = &DF[DIR_M00 * numberOfLBnodesFine]; - fnF = &DF[DIR_0P0 * numberOfLBnodesFine]; - fsF = &DF[DIR_0M0 * numberOfLBnodesFine]; - ftF = &DF[DIR_00P * numberOfLBnodesFine]; - fbF = &DF[DIR_00M * numberOfLBnodesFine]; - fneF = &DF[DIR_PP0 * numberOfLBnodesFine]; - fswF = &DF[DIR_MM0 * numberOfLBnodesFine]; - fseF = &DF[DIR_PM0 * numberOfLBnodesFine]; - fnwF = &DF[DIR_MP0 * numberOfLBnodesFine]; - fteF = &DF[DIR_P0P * numberOfLBnodesFine]; - fbwF = &DF[DIR_M0M * numberOfLBnodesFine]; - fbeF = &DF[DIR_P0M * numberOfLBnodesFine]; - ftwF = &DF[DIR_M0P * numberOfLBnodesFine]; - ftnF = &DF[DIR_0PP * numberOfLBnodesFine]; - fbsF = &DF[DIR_0MM * numberOfLBnodesFine]; - fbnF = &DF[DIR_0PM * numberOfLBnodesFine]; - ftsF = &DF[DIR_0MP * numberOfLBnodesFine]; - ftneF = &DF[DIR_PPP * numberOfLBnodesFine]; - ftswF = &DF[DIR_MMP * numberOfLBnodesFine]; - ftseF = &DF[DIR_PMP * numberOfLBnodesFine]; - ftnwF = &DF[DIR_MPP * numberOfLBnodesFine]; - fbneF = &DF[DIR_PPM * numberOfLBnodesFine]; - fbswF = &DF[DIR_MMM * numberOfLBnodesFine]; - fbseF = &DF[DIR_PMM * numberOfLBnodesFine]; - fbnwF = &DF[DIR_MPM * numberOfLBnodesFine]; + feF = &DF[dP00 * numberOfLBnodesFine]; + fwF = &DF[dM00 * numberOfLBnodesFine]; + fnF = &DF[d0P0 * numberOfLBnodesFine]; + fsF = &DF[d0M0 * numberOfLBnodesFine]; + ftF = &DF[d00P * numberOfLBnodesFine]; + fbF = &DF[d00M * numberOfLBnodesFine]; + fneF = &DF[dPP0 * numberOfLBnodesFine]; + fswF = &DF[dMM0 * numberOfLBnodesFine]; + fseF = &DF[dPM0 * numberOfLBnodesFine]; + fnwF = &DF[dMP0 * numberOfLBnodesFine]; + fteF = &DF[dP0P * numberOfLBnodesFine]; + fbwF = &DF[dM0M * numberOfLBnodesFine]; + fbeF = &DF[dP0M * numberOfLBnodesFine]; + ftwF = &DF[dM0P * numberOfLBnodesFine]; + ftnF = &DF[d0PP * numberOfLBnodesFine]; + fbsF = &DF[d0MM * numberOfLBnodesFine]; + fbnF = &DF[d0PM * numberOfLBnodesFine]; + ftsF = &DF[d0MP * numberOfLBnodesFine]; + ftneF = &DF[dPPP * numberOfLBnodesFine]; + ftswF = &DF[dMMP * numberOfLBnodesFine]; + ftseF = &DF[dPMP * numberOfLBnodesFine]; + ftnwF = &DF[dMPP * numberOfLBnodesFine]; + fbneF = &DF[dPPM * numberOfLBnodesFine]; + fbswF = &DF[dMMM * numberOfLBnodesFine]; + fbseF = &DF[dPMM * numberOfLBnodesFine]; + fbnwF = &DF[dMPM * numberOfLBnodesFine]; 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[DIR_P00 * numberOfLBnodesCoarse]; - fwC = &DC[DIR_M00 * numberOfLBnodesCoarse]; - fnC = &DC[DIR_0P0 * numberOfLBnodesCoarse]; - fsC = &DC[DIR_0M0 * numberOfLBnodesCoarse]; - ftC = &DC[DIR_00P * numberOfLBnodesCoarse]; - fbC = &DC[DIR_00M * numberOfLBnodesCoarse]; - fneC = &DC[DIR_PP0 * numberOfLBnodesCoarse]; - fswC = &DC[DIR_MM0 * numberOfLBnodesCoarse]; - fseC = &DC[DIR_PM0 * numberOfLBnodesCoarse]; - fnwC = &DC[DIR_MP0 * numberOfLBnodesCoarse]; - fteC = &DC[DIR_P0P * numberOfLBnodesCoarse]; - fbwC = &DC[DIR_M0M * numberOfLBnodesCoarse]; - fbeC = &DC[DIR_P0M * numberOfLBnodesCoarse]; - ftwC = &DC[DIR_M0P * numberOfLBnodesCoarse]; - ftnC = &DC[DIR_0PP * numberOfLBnodesCoarse]; - fbsC = &DC[DIR_0MM * numberOfLBnodesCoarse]; - fbnC = &DC[DIR_0PM * numberOfLBnodesCoarse]; - ftsC = &DC[DIR_0MP * numberOfLBnodesCoarse]; - ftneC = &DC[DIR_PPP * numberOfLBnodesCoarse]; - ftswC = &DC[DIR_MMP * numberOfLBnodesCoarse]; - ftseC = &DC[DIR_PMP * numberOfLBnodesCoarse]; - ftnwC = &DC[DIR_MPP * numberOfLBnodesCoarse]; - fbneC = &DC[DIR_PPM * numberOfLBnodesCoarse]; - fbswC = &DC[DIR_MMM * numberOfLBnodesCoarse]; - fbseC = &DC[DIR_PMM * numberOfLBnodesCoarse]; - fbnwC = &DC[DIR_MPM * numberOfLBnodesCoarse]; + feC = &DC[dP00 * numberOfLBnodesCoarse]; + fwC = &DC[dM00 * numberOfLBnodesCoarse]; + fnC = &DC[d0P0 * numberOfLBnodesCoarse]; + fsC = &DC[d0M0 * numberOfLBnodesCoarse]; + ftC = &DC[d00P * numberOfLBnodesCoarse]; + fbC = &DC[d00M * numberOfLBnodesCoarse]; + fneC = &DC[dPP0 * numberOfLBnodesCoarse]; + fswC = &DC[dMM0 * numberOfLBnodesCoarse]; + fseC = &DC[dPM0 * numberOfLBnodesCoarse]; + fnwC = &DC[dMP0 * numberOfLBnodesCoarse]; + fteC = &DC[dP0P * numberOfLBnodesCoarse]; + fbwC = &DC[dM0M * numberOfLBnodesCoarse]; + fbeC = &DC[dP0M * numberOfLBnodesCoarse]; + ftwC = &DC[dM0P * numberOfLBnodesCoarse]; + ftnC = &DC[d0PP * numberOfLBnodesCoarse]; + fbsC = &DC[d0MM * numberOfLBnodesCoarse]; + fbnC = &DC[d0PM * numberOfLBnodesCoarse]; + ftsC = &DC[d0MP * numberOfLBnodesCoarse]; + ftneC = &DC[dPPP * numberOfLBnodesCoarse]; + ftswC = &DC[dMMP * numberOfLBnodesCoarse]; + ftseC = &DC[dPMP * numberOfLBnodesCoarse]; + ftnwC = &DC[dMPP * numberOfLBnodesCoarse]; + fbneC = &DC[dPPM * numberOfLBnodesCoarse]; + fbswC = &DC[dMMM * numberOfLBnodesCoarse]; + fbseC = &DC[dPMM * numberOfLBnodesCoarse]; + fbnwC = &DC[dMPM * numberOfLBnodesCoarse]; } else { - fwC = &DC[DIR_P00 * numberOfLBnodesCoarse]; - feC = &DC[DIR_M00 * numberOfLBnodesCoarse]; - fsC = &DC[DIR_0P0 * numberOfLBnodesCoarse]; - fnC = &DC[DIR_0M0 * numberOfLBnodesCoarse]; - fbC = &DC[DIR_00P * numberOfLBnodesCoarse]; - ftC = &DC[DIR_00M * numberOfLBnodesCoarse]; - fswC = &DC[DIR_PP0 * numberOfLBnodesCoarse]; - fneC = &DC[DIR_MM0 * numberOfLBnodesCoarse]; - fnwC = &DC[DIR_PM0 * numberOfLBnodesCoarse]; - fseC = &DC[DIR_MP0 * numberOfLBnodesCoarse]; - fbwC = &DC[DIR_P0P * numberOfLBnodesCoarse]; - fteC = &DC[DIR_M0M * numberOfLBnodesCoarse]; - ftwC = &DC[DIR_P0M * numberOfLBnodesCoarse]; - fbeC = &DC[DIR_M0P * numberOfLBnodesCoarse]; - fbsC = &DC[DIR_0PP * numberOfLBnodesCoarse]; - ftnC = &DC[DIR_0MM * numberOfLBnodesCoarse]; - ftsC = &DC[DIR_0PM * numberOfLBnodesCoarse]; - fbnC = &DC[DIR_0MP * numberOfLBnodesCoarse]; - fbswC = &DC[DIR_PPP * numberOfLBnodesCoarse]; - fbneC = &DC[DIR_MMP * numberOfLBnodesCoarse]; - fbnwC = &DC[DIR_PMP * numberOfLBnodesCoarse]; - fbseC = &DC[DIR_MPP * numberOfLBnodesCoarse]; - ftswC = &DC[DIR_PPM * numberOfLBnodesCoarse]; - ftneC = &DC[DIR_MMM * numberOfLBnodesCoarse]; - ftnwC = &DC[DIR_PMM * numberOfLBnodesCoarse]; - ftseC = &DC[DIR_MPM * numberOfLBnodesCoarse]; + fwC = &DC[dP00 * numberOfLBnodesCoarse]; + feC = &DC[dM00 * numberOfLBnodesCoarse]; + fsC = &DC[d0P0 * numberOfLBnodesCoarse]; + fnC = &DC[d0M0 * numberOfLBnodesCoarse]; + fbC = &DC[d00P * numberOfLBnodesCoarse]; + ftC = &DC[d00M * numberOfLBnodesCoarse]; + fswC = &DC[dPP0 * numberOfLBnodesCoarse]; + fneC = &DC[dMM0 * numberOfLBnodesCoarse]; + fnwC = &DC[dPM0 * numberOfLBnodesCoarse]; + fseC = &DC[dMP0 * numberOfLBnodesCoarse]; + fbwC = &DC[dP0P * numberOfLBnodesCoarse]; + fteC = &DC[dM0M * numberOfLBnodesCoarse]; + ftwC = &DC[dP0M * numberOfLBnodesCoarse]; + fbeC = &DC[dM0P * numberOfLBnodesCoarse]; + fbsC = &DC[d0PP * numberOfLBnodesCoarse]; + ftnC = &DC[d0MM * numberOfLBnodesCoarse]; + ftsC = &DC[d0PM * numberOfLBnodesCoarse]; + fbnC = &DC[d0MP * numberOfLBnodesCoarse]; + fbswC = &DC[dPPP * numberOfLBnodesCoarse]; + fbneC = &DC[dMMP * numberOfLBnodesCoarse]; + fbnwC = &DC[dPMP * numberOfLBnodesCoarse]; + fbseC = &DC[dMPP * numberOfLBnodesCoarse]; + ftswC = &DC[dPPM * numberOfLBnodesCoarse]; + ftneC = &DC[dMMM * numberOfLBnodesCoarse]; + ftnwC = &DC[dPMM * numberOfLBnodesCoarse]; + ftseC = &DC[dMPM * numberOfLBnodesCoarse]; } Distributions7 D7F; @@ -20105,93 +20105,93 @@ __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[DIR_P00 * numberOfLBnodesFine]; - fwF = &DF[DIR_M00 * numberOfLBnodesFine]; - fnF = &DF[DIR_0P0 * numberOfLBnodesFine]; - fsF = &DF[DIR_0M0 * numberOfLBnodesFine]; - ftF = &DF[DIR_00P * numberOfLBnodesFine]; - fbF = &DF[DIR_00M * numberOfLBnodesFine]; - fneF = &DF[DIR_PP0 * numberOfLBnodesFine]; - fswF = &DF[DIR_MM0 * numberOfLBnodesFine]; - fseF = &DF[DIR_PM0 * numberOfLBnodesFine]; - fnwF = &DF[DIR_MP0 * numberOfLBnodesFine]; - fteF = &DF[DIR_P0P * numberOfLBnodesFine]; - fbwF = &DF[DIR_M0M * numberOfLBnodesFine]; - fbeF = &DF[DIR_P0M * numberOfLBnodesFine]; - ftwF = &DF[DIR_M0P * numberOfLBnodesFine]; - ftnF = &DF[DIR_0PP * numberOfLBnodesFine]; - fbsF = &DF[DIR_0MM * numberOfLBnodesFine]; - fbnF = &DF[DIR_0PM * numberOfLBnodesFine]; - ftsF = &DF[DIR_0MP * numberOfLBnodesFine]; - ftneF = &DF[DIR_PPP * numberOfLBnodesFine]; - ftswF = &DF[DIR_MMP * numberOfLBnodesFine]; - ftseF = &DF[DIR_PMP * numberOfLBnodesFine]; - ftnwF = &DF[DIR_MPP * numberOfLBnodesFine]; - fbneF = &DF[DIR_PPM * numberOfLBnodesFine]; - fbswF = &DF[DIR_MMM * numberOfLBnodesFine]; - fbseF = &DF[DIR_PMM * numberOfLBnodesFine]; - fbnwF = &DF[DIR_MPM * numberOfLBnodesFine]; + feF = &DF[dP00 * numberOfLBnodesFine]; + fwF = &DF[dM00 * numberOfLBnodesFine]; + fnF = &DF[d0P0 * numberOfLBnodesFine]; + fsF = &DF[d0M0 * numberOfLBnodesFine]; + ftF = &DF[d00P * numberOfLBnodesFine]; + fbF = &DF[d00M * numberOfLBnodesFine]; + fneF = &DF[dPP0 * numberOfLBnodesFine]; + fswF = &DF[dMM0 * numberOfLBnodesFine]; + fseF = &DF[dPM0 * numberOfLBnodesFine]; + fnwF = &DF[dMP0 * numberOfLBnodesFine]; + fteF = &DF[dP0P * numberOfLBnodesFine]; + fbwF = &DF[dM0M * numberOfLBnodesFine]; + fbeF = &DF[dP0M * numberOfLBnodesFine]; + ftwF = &DF[dM0P * numberOfLBnodesFine]; + ftnF = &DF[d0PP * numberOfLBnodesFine]; + fbsF = &DF[d0MM * numberOfLBnodesFine]; + fbnF = &DF[d0PM * numberOfLBnodesFine]; + ftsF = &DF[d0MP * numberOfLBnodesFine]; + ftneF = &DF[dPPP * numberOfLBnodesFine]; + ftswF = &DF[dMMP * numberOfLBnodesFine]; + ftseF = &DF[dPMP * numberOfLBnodesFine]; + ftnwF = &DF[dMPP * numberOfLBnodesFine]; + fbneF = &DF[dPPM * numberOfLBnodesFine]; + fbswF = &DF[dMMM * numberOfLBnodesFine]; + fbseF = &DF[dPMM * numberOfLBnodesFine]; + fbnwF = &DF[dMPM * numberOfLBnodesFine]; 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[DIR_P00 * numberOfLBnodesCoarse]; - fwC = &DC[DIR_M00 * numberOfLBnodesCoarse]; - fnC = &DC[DIR_0P0 * numberOfLBnodesCoarse]; - fsC = &DC[DIR_0M0 * numberOfLBnodesCoarse]; - ftC = &DC[DIR_00P * numberOfLBnodesCoarse]; - fbC = &DC[DIR_00M * numberOfLBnodesCoarse]; - fneC = &DC[DIR_PP0 * numberOfLBnodesCoarse]; - fswC = &DC[DIR_MM0 * numberOfLBnodesCoarse]; - fseC = &DC[DIR_PM0 * numberOfLBnodesCoarse]; - fnwC = &DC[DIR_MP0 * numberOfLBnodesCoarse]; - fteC = &DC[DIR_P0P * numberOfLBnodesCoarse]; - fbwC = &DC[DIR_M0M * numberOfLBnodesCoarse]; - fbeC = &DC[DIR_P0M * numberOfLBnodesCoarse]; - ftwC = &DC[DIR_M0P * numberOfLBnodesCoarse]; - ftnC = &DC[DIR_0PP * numberOfLBnodesCoarse]; - fbsC = &DC[DIR_0MM * numberOfLBnodesCoarse]; - fbnC = &DC[DIR_0PM * numberOfLBnodesCoarse]; - ftsC = &DC[DIR_0MP * numberOfLBnodesCoarse]; - ftneC = &DC[DIR_PPP * numberOfLBnodesCoarse]; - ftswC = &DC[DIR_MMP * numberOfLBnodesCoarse]; - ftseC = &DC[DIR_PMP * numberOfLBnodesCoarse]; - ftnwC = &DC[DIR_MPP * numberOfLBnodesCoarse]; - fbneC = &DC[DIR_PPM * numberOfLBnodesCoarse]; - fbswC = &DC[DIR_MMM * numberOfLBnodesCoarse]; - fbseC = &DC[DIR_PMM * numberOfLBnodesCoarse]; - fbnwC = &DC[DIR_MPM * numberOfLBnodesCoarse]; + feC = &DC[dP00 * numberOfLBnodesCoarse]; + fwC = &DC[dM00 * numberOfLBnodesCoarse]; + fnC = &DC[d0P0 * numberOfLBnodesCoarse]; + fsC = &DC[d0M0 * numberOfLBnodesCoarse]; + ftC = &DC[d00P * numberOfLBnodesCoarse]; + fbC = &DC[d00M * numberOfLBnodesCoarse]; + fneC = &DC[dPP0 * numberOfLBnodesCoarse]; + fswC = &DC[dMM0 * numberOfLBnodesCoarse]; + fseC = &DC[dPM0 * numberOfLBnodesCoarse]; + fnwC = &DC[dMP0 * numberOfLBnodesCoarse]; + fteC = &DC[dP0P * numberOfLBnodesCoarse]; + fbwC = &DC[dM0M * numberOfLBnodesCoarse]; + fbeC = &DC[dP0M * numberOfLBnodesCoarse]; + ftwC = &DC[dM0P * numberOfLBnodesCoarse]; + ftnC = &DC[d0PP * numberOfLBnodesCoarse]; + fbsC = &DC[d0MM * numberOfLBnodesCoarse]; + fbnC = &DC[d0PM * numberOfLBnodesCoarse]; + ftsC = &DC[d0MP * numberOfLBnodesCoarse]; + ftneC = &DC[dPPP * numberOfLBnodesCoarse]; + ftswC = &DC[dMMP * numberOfLBnodesCoarse]; + ftseC = &DC[dPMP * numberOfLBnodesCoarse]; + ftnwC = &DC[dMPP * numberOfLBnodesCoarse]; + fbneC = &DC[dPPM * numberOfLBnodesCoarse]; + fbswC = &DC[dMMM * numberOfLBnodesCoarse]; + fbseC = &DC[dPMM * numberOfLBnodesCoarse]; + fbnwC = &DC[dMPM * numberOfLBnodesCoarse]; } else { - fwC = &DC[DIR_P00 * numberOfLBnodesCoarse]; - feC = &DC[DIR_M00 * numberOfLBnodesCoarse]; - fsC = &DC[DIR_0P0 * numberOfLBnodesCoarse]; - fnC = &DC[DIR_0M0 * numberOfLBnodesCoarse]; - fbC = &DC[DIR_00P * numberOfLBnodesCoarse]; - ftC = &DC[DIR_00M * numberOfLBnodesCoarse]; - fswC = &DC[DIR_PP0 * numberOfLBnodesCoarse]; - fneC = &DC[DIR_MM0 * numberOfLBnodesCoarse]; - fnwC = &DC[DIR_PM0 * numberOfLBnodesCoarse]; - fseC = &DC[DIR_MP0 * numberOfLBnodesCoarse]; - fbwC = &DC[DIR_P0P * numberOfLBnodesCoarse]; - fteC = &DC[DIR_M0M * numberOfLBnodesCoarse]; - ftwC = &DC[DIR_P0M * numberOfLBnodesCoarse]; - fbeC = &DC[DIR_M0P * numberOfLBnodesCoarse]; - fbsC = &DC[DIR_0PP * numberOfLBnodesCoarse]; - ftnC = &DC[DIR_0MM * numberOfLBnodesCoarse]; - ftsC = &DC[DIR_0PM * numberOfLBnodesCoarse]; - fbnC = &DC[DIR_0MP * numberOfLBnodesCoarse]; - fbswC = &DC[DIR_PPP * numberOfLBnodesCoarse]; - fbneC = &DC[DIR_MMP * numberOfLBnodesCoarse]; - fbnwC = &DC[DIR_PMP * numberOfLBnodesCoarse]; - fbseC = &DC[DIR_MPP * numberOfLBnodesCoarse]; - ftswC = &DC[DIR_PPM * numberOfLBnodesCoarse]; - ftneC = &DC[DIR_MMM * numberOfLBnodesCoarse]; - ftnwC = &DC[DIR_PMM * numberOfLBnodesCoarse]; - ftseC = &DC[DIR_MPM * numberOfLBnodesCoarse]; + fwC = &DC[dP00 * numberOfLBnodesCoarse]; + feC = &DC[dM00 * numberOfLBnodesCoarse]; + fsC = &DC[d0P0 * numberOfLBnodesCoarse]; + fnC = &DC[d0M0 * numberOfLBnodesCoarse]; + fbC = &DC[d00P * numberOfLBnodesCoarse]; + ftC = &DC[d00M * numberOfLBnodesCoarse]; + fswC = &DC[dPP0 * numberOfLBnodesCoarse]; + fneC = &DC[dMM0 * numberOfLBnodesCoarse]; + fnwC = &DC[dPM0 * numberOfLBnodesCoarse]; + fseC = &DC[dMP0 * numberOfLBnodesCoarse]; + fbwC = &DC[dP0P * numberOfLBnodesCoarse]; + fteC = &DC[dM0M * numberOfLBnodesCoarse]; + ftwC = &DC[dP0M * numberOfLBnodesCoarse]; + fbeC = &DC[dM0P * numberOfLBnodesCoarse]; + fbsC = &DC[d0PP * numberOfLBnodesCoarse]; + ftnC = &DC[d0MM * numberOfLBnodesCoarse]; + ftsC = &DC[d0PM * numberOfLBnodesCoarse]; + fbnC = &DC[d0MP * numberOfLBnodesCoarse]; + fbswC = &DC[dPPP * numberOfLBnodesCoarse]; + fbneC = &DC[dMMP * numberOfLBnodesCoarse]; + fbnwC = &DC[dPMP * numberOfLBnodesCoarse]; + fbseC = &DC[dMPP * numberOfLBnodesCoarse]; + ftswC = &DC[dPPM * numberOfLBnodesCoarse]; + ftneC = &DC[dMMM * numberOfLBnodesCoarse]; + ftnwC = &DC[dPMM * numberOfLBnodesCoarse]; + ftseC = &DC[dMPM * numberOfLBnodesCoarse]; } Distributions7 D7F; @@ -20894,184 +20894,184 @@ __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[DIR_P00 * numberOfLBnodesFine]; - fwF = &DF[DIR_M00 * numberOfLBnodesFine]; - fnF = &DF[DIR_0P0 * numberOfLBnodesFine]; - fsF = &DF[DIR_0M0 * numberOfLBnodesFine]; - ftF = &DF[DIR_00P * numberOfLBnodesFine]; - fbF = &DF[DIR_00M * numberOfLBnodesFine]; - fneF = &DF[DIR_PP0 * numberOfLBnodesFine]; - fswF = &DF[DIR_MM0 * numberOfLBnodesFine]; - fseF = &DF[DIR_PM0 * numberOfLBnodesFine]; - fnwF = &DF[DIR_MP0 * numberOfLBnodesFine]; - fteF = &DF[DIR_P0P * numberOfLBnodesFine]; - fbwF = &DF[DIR_M0M * numberOfLBnodesFine]; - fbeF = &DF[DIR_P0M * numberOfLBnodesFine]; - ftwF = &DF[DIR_M0P * numberOfLBnodesFine]; - ftnF = &DF[DIR_0PP * numberOfLBnodesFine]; - fbsF = &DF[DIR_0MM * numberOfLBnodesFine]; - fbnF = &DF[DIR_0PM * numberOfLBnodesFine]; - ftsF = &DF[DIR_0MP * numberOfLBnodesFine]; - ftneF = &DF[DIR_PPP * numberOfLBnodesFine]; - ftswF = &DF[DIR_MMP * numberOfLBnodesFine]; - ftseF = &DF[DIR_PMP * numberOfLBnodesFine]; - ftnwF = &DF[DIR_MPP * numberOfLBnodesFine]; - fbneF = &DF[DIR_PPM * numberOfLBnodesFine]; - fbswF = &DF[DIR_MMM * numberOfLBnodesFine]; - fbseF = &DF[DIR_PMM * numberOfLBnodesFine]; - fbnwF = &DF[DIR_MPM * numberOfLBnodesFine]; + feF = &DF[dP00 * numberOfLBnodesFine]; + fwF = &DF[dM00 * numberOfLBnodesFine]; + fnF = &DF[d0P0 * numberOfLBnodesFine]; + fsF = &DF[d0M0 * numberOfLBnodesFine]; + ftF = &DF[d00P * numberOfLBnodesFine]; + fbF = &DF[d00M * numberOfLBnodesFine]; + fneF = &DF[dPP0 * numberOfLBnodesFine]; + fswF = &DF[dMM0 * numberOfLBnodesFine]; + fseF = &DF[dPM0 * numberOfLBnodesFine]; + fnwF = &DF[dMP0 * numberOfLBnodesFine]; + fteF = &DF[dP0P * numberOfLBnodesFine]; + fbwF = &DF[dM0M * numberOfLBnodesFine]; + fbeF = &DF[dP0M * numberOfLBnodesFine]; + ftwF = &DF[dM0P * numberOfLBnodesFine]; + ftnF = &DF[d0PP * numberOfLBnodesFine]; + fbsF = &DF[d0MM * numberOfLBnodesFine]; + fbnF = &DF[d0PM * numberOfLBnodesFine]; + ftsF = &DF[d0MP * numberOfLBnodesFine]; + ftneF = &DF[dPPP * numberOfLBnodesFine]; + ftswF = &DF[dMMP * numberOfLBnodesFine]; + ftseF = &DF[dPMP * numberOfLBnodesFine]; + ftnwF = &DF[dMPP * numberOfLBnodesFine]; + fbneF = &DF[dPPM * numberOfLBnodesFine]; + fbswF = &DF[dMMM * numberOfLBnodesFine]; + fbseF = &DF[dPMM * numberOfLBnodesFine]; + fbnwF = &DF[dMPM * numberOfLBnodesFine]; 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[DIR_P00 * numberOfLBnodesCoarse]; - fwC = &DC[DIR_M00 * numberOfLBnodesCoarse]; - fnC = &DC[DIR_0P0 * numberOfLBnodesCoarse]; - fsC = &DC[DIR_0M0 * numberOfLBnodesCoarse]; - ftC = &DC[DIR_00P * numberOfLBnodesCoarse]; - fbC = &DC[DIR_00M * numberOfLBnodesCoarse]; - fneC = &DC[DIR_PP0 * numberOfLBnodesCoarse]; - fswC = &DC[DIR_MM0 * numberOfLBnodesCoarse]; - fseC = &DC[DIR_PM0 * numberOfLBnodesCoarse]; - fnwC = &DC[DIR_MP0 * numberOfLBnodesCoarse]; - fteC = &DC[DIR_P0P * numberOfLBnodesCoarse]; - fbwC = &DC[DIR_M0M * numberOfLBnodesCoarse]; - fbeC = &DC[DIR_P0M * numberOfLBnodesCoarse]; - ftwC = &DC[DIR_M0P * numberOfLBnodesCoarse]; - ftnC = &DC[DIR_0PP * numberOfLBnodesCoarse]; - fbsC = &DC[DIR_0MM * numberOfLBnodesCoarse]; - fbnC = &DC[DIR_0PM * numberOfLBnodesCoarse]; - ftsC = &DC[DIR_0MP * numberOfLBnodesCoarse]; - ftneC = &DC[DIR_PPP * numberOfLBnodesCoarse]; - ftswC = &DC[DIR_MMP * numberOfLBnodesCoarse]; - ftseC = &DC[DIR_PMP * numberOfLBnodesCoarse]; - ftnwC = &DC[DIR_MPP * numberOfLBnodesCoarse]; - fbneC = &DC[DIR_PPM * numberOfLBnodesCoarse]; - fbswC = &DC[DIR_MMM * numberOfLBnodesCoarse]; - fbseC = &DC[DIR_PMM * numberOfLBnodesCoarse]; - fbnwC = &DC[DIR_MPM * numberOfLBnodesCoarse]; + feC = &DC[dP00 * numberOfLBnodesCoarse]; + fwC = &DC[dM00 * numberOfLBnodesCoarse]; + fnC = &DC[d0P0 * numberOfLBnodesCoarse]; + fsC = &DC[d0M0 * numberOfLBnodesCoarse]; + ftC = &DC[d00P * numberOfLBnodesCoarse]; + fbC = &DC[d00M * numberOfLBnodesCoarse]; + fneC = &DC[dPP0 * numberOfLBnodesCoarse]; + fswC = &DC[dMM0 * numberOfLBnodesCoarse]; + fseC = &DC[dPM0 * numberOfLBnodesCoarse]; + fnwC = &DC[dMP0 * numberOfLBnodesCoarse]; + fteC = &DC[dP0P * numberOfLBnodesCoarse]; + fbwC = &DC[dM0M * numberOfLBnodesCoarse]; + fbeC = &DC[dP0M * numberOfLBnodesCoarse]; + ftwC = &DC[dM0P * numberOfLBnodesCoarse]; + ftnC = &DC[d0PP * numberOfLBnodesCoarse]; + fbsC = &DC[d0MM * numberOfLBnodesCoarse]; + fbnC = &DC[d0PM * numberOfLBnodesCoarse]; + ftsC = &DC[d0MP * numberOfLBnodesCoarse]; + ftneC = &DC[dPPP * numberOfLBnodesCoarse]; + ftswC = &DC[dMMP * numberOfLBnodesCoarse]; + ftseC = &DC[dPMP * numberOfLBnodesCoarse]; + ftnwC = &DC[dMPP * numberOfLBnodesCoarse]; + fbneC = &DC[dPPM * numberOfLBnodesCoarse]; + fbswC = &DC[dMMM * numberOfLBnodesCoarse]; + fbseC = &DC[dPMM * numberOfLBnodesCoarse]; + fbnwC = &DC[dMPM * numberOfLBnodesCoarse]; } else { - fwC = &DC[DIR_P00 * numberOfLBnodesCoarse]; - feC = &DC[DIR_M00 * numberOfLBnodesCoarse]; - fsC = &DC[DIR_0P0 * numberOfLBnodesCoarse]; - fnC = &DC[DIR_0M0 * numberOfLBnodesCoarse]; - fbC = &DC[DIR_00P * numberOfLBnodesCoarse]; - ftC = &DC[DIR_00M * numberOfLBnodesCoarse]; - fswC = &DC[DIR_PP0 * numberOfLBnodesCoarse]; - fneC = &DC[DIR_MM0 * numberOfLBnodesCoarse]; - fnwC = &DC[DIR_PM0 * numberOfLBnodesCoarse]; - fseC = &DC[DIR_MP0 * numberOfLBnodesCoarse]; - fbwC = &DC[DIR_P0P * numberOfLBnodesCoarse]; - fteC = &DC[DIR_M0M * numberOfLBnodesCoarse]; - ftwC = &DC[DIR_P0M * numberOfLBnodesCoarse]; - fbeC = &DC[DIR_M0P * numberOfLBnodesCoarse]; - fbsC = &DC[DIR_0PP * numberOfLBnodesCoarse]; - ftnC = &DC[DIR_0MM * numberOfLBnodesCoarse]; - ftsC = &DC[DIR_0PM * numberOfLBnodesCoarse]; - fbnC = &DC[DIR_0MP * numberOfLBnodesCoarse]; - fbswC = &DC[DIR_PPP * numberOfLBnodesCoarse]; - fbneC = &DC[DIR_MMP * numberOfLBnodesCoarse]; - fbnwC = &DC[DIR_PMP * numberOfLBnodesCoarse]; - fbseC = &DC[DIR_MPP * numberOfLBnodesCoarse]; - ftswC = &DC[DIR_PPM * numberOfLBnodesCoarse]; - ftneC = &DC[DIR_MMM * numberOfLBnodesCoarse]; - ftnwC = &DC[DIR_PMM * numberOfLBnodesCoarse]; - ftseC = &DC[DIR_MPM * numberOfLBnodesCoarse]; + fwC = &DC[dP00 * numberOfLBnodesCoarse]; + feC = &DC[dM00 * numberOfLBnodesCoarse]; + fsC = &DC[d0P0 * numberOfLBnodesCoarse]; + fnC = &DC[d0M0 * numberOfLBnodesCoarse]; + fbC = &DC[d00P * numberOfLBnodesCoarse]; + ftC = &DC[d00M * numberOfLBnodesCoarse]; + fswC = &DC[dPP0 * numberOfLBnodesCoarse]; + fneC = &DC[dMM0 * numberOfLBnodesCoarse]; + fnwC = &DC[dPM0 * numberOfLBnodesCoarse]; + fseC = &DC[dMP0 * numberOfLBnodesCoarse]; + fbwC = &DC[dP0P * numberOfLBnodesCoarse]; + fteC = &DC[dM0M * numberOfLBnodesCoarse]; + ftwC = &DC[dP0M * numberOfLBnodesCoarse]; + fbeC = &DC[dM0P * numberOfLBnodesCoarse]; + fbsC = &DC[d0PP * numberOfLBnodesCoarse]; + ftnC = &DC[d0MM * numberOfLBnodesCoarse]; + ftsC = &DC[d0PM * numberOfLBnodesCoarse]; + fbnC = &DC[d0MP * numberOfLBnodesCoarse]; + fbswC = &DC[dPPP * numberOfLBnodesCoarse]; + fbneC = &DC[dMMP * numberOfLBnodesCoarse]; + fbnwC = &DC[dPMP * numberOfLBnodesCoarse]; + fbseC = &DC[dMPP * numberOfLBnodesCoarse]; + ftswC = &DC[dPPM * numberOfLBnodesCoarse]; + ftneC = &DC[dMMM * numberOfLBnodesCoarse]; + ftnwC = &DC[dPMM * numberOfLBnodesCoarse]; + ftseC = &DC[dMPM * numberOfLBnodesCoarse]; } Distributions27 D27F; - D27F.f[DIR_P00] = &DD27F[DIR_P00 * numberOfLBnodesFine]; - D27F.f[DIR_M00] = &DD27F[DIR_M00 * numberOfLBnodesFine]; - D27F.f[DIR_0P0] = &DD27F[DIR_0P0 * numberOfLBnodesFine]; - D27F.f[DIR_0M0] = &DD27F[DIR_0M0 * numberOfLBnodesFine]; - D27F.f[DIR_00P] = &DD27F[DIR_00P * numberOfLBnodesFine]; - D27F.f[DIR_00M] = &DD27F[DIR_00M * numberOfLBnodesFine]; - D27F.f[DIR_PP0] = &DD27F[DIR_PP0 * numberOfLBnodesFine]; - D27F.f[DIR_MM0] = &DD27F[DIR_MM0 * numberOfLBnodesFine]; - D27F.f[DIR_PM0] = &DD27F[DIR_PM0 * numberOfLBnodesFine]; - D27F.f[DIR_MP0] = &DD27F[DIR_MP0 * numberOfLBnodesFine]; - D27F.f[DIR_P0P] = &DD27F[DIR_P0P * numberOfLBnodesFine]; - D27F.f[DIR_M0M] = &DD27F[DIR_M0M * numberOfLBnodesFine]; - D27F.f[DIR_P0M] = &DD27F[DIR_P0M * numberOfLBnodesFine]; - D27F.f[DIR_M0P] = &DD27F[DIR_M0P * numberOfLBnodesFine]; - D27F.f[DIR_0PP] = &DD27F[DIR_0PP * numberOfLBnodesFine]; - D27F.f[DIR_0MM] = &DD27F[DIR_0MM * numberOfLBnodesFine]; - D27F.f[DIR_0PM] = &DD27F[DIR_0PM * numberOfLBnodesFine]; - D27F.f[DIR_0MP] = &DD27F[DIR_0MP * numberOfLBnodesFine]; - D27F.f[DIR_000] = &DD27F[DIR_000 * numberOfLBnodesFine]; - D27F.f[DIR_PPP] = &DD27F[DIR_PPP * numberOfLBnodesFine]; - D27F.f[DIR_MMP] = &DD27F[DIR_MMP * numberOfLBnodesFine]; - D27F.f[DIR_PMP] = &DD27F[DIR_PMP * numberOfLBnodesFine]; - D27F.f[DIR_MPP] = &DD27F[DIR_MPP * numberOfLBnodesFine]; - D27F.f[DIR_PPM] = &DD27F[DIR_PPM * numberOfLBnodesFine]; - D27F.f[DIR_MMM] = &DD27F[DIR_MMM * numberOfLBnodesFine]; - D27F.f[DIR_PMM] = &DD27F[DIR_PMM * numberOfLBnodesFine]; - D27F.f[DIR_MPM] = &DD27F[DIR_MPM * numberOfLBnodesFine]; + D27F.f[dP00] = &DD27F[dP00 * numberOfLBnodesFine]; + D27F.f[dM00] = &DD27F[dM00 * numberOfLBnodesFine]; + D27F.f[d0P0] = &DD27F[d0P0 * numberOfLBnodesFine]; + D27F.f[d0M0] = &DD27F[d0M0 * numberOfLBnodesFine]; + D27F.f[d00P] = &DD27F[d00P * numberOfLBnodesFine]; + D27F.f[d00M] = &DD27F[d00M * numberOfLBnodesFine]; + D27F.f[dPP0] = &DD27F[dPP0 * numberOfLBnodesFine]; + D27F.f[dMM0] = &DD27F[dMM0 * numberOfLBnodesFine]; + D27F.f[dPM0] = &DD27F[dPM0 * numberOfLBnodesFine]; + D27F.f[dMP0] = &DD27F[dMP0 * numberOfLBnodesFine]; + D27F.f[dP0P] = &DD27F[dP0P * numberOfLBnodesFine]; + D27F.f[dM0M] = &DD27F[dM0M * numberOfLBnodesFine]; + D27F.f[dP0M] = &DD27F[dP0M * numberOfLBnodesFine]; + D27F.f[dM0P] = &DD27F[dM0P * numberOfLBnodesFine]; + D27F.f[d0PP] = &DD27F[d0PP * numberOfLBnodesFine]; + D27F.f[d0MM] = &DD27F[d0MM * numberOfLBnodesFine]; + D27F.f[d0PM] = &DD27F[d0PM * numberOfLBnodesFine]; + D27F.f[d0MP] = &DD27F[d0MP * numberOfLBnodesFine]; + D27F.f[d000] = &DD27F[d000 * numberOfLBnodesFine]; + D27F.f[dPPP] = &DD27F[dPPP * numberOfLBnodesFine]; + D27F.f[dMMP] = &DD27F[dMMP * numberOfLBnodesFine]; + D27F.f[dPMP] = &DD27F[dPMP * numberOfLBnodesFine]; + D27F.f[dMPP] = &DD27F[dMPP * numberOfLBnodesFine]; + D27F.f[dPPM] = &DD27F[dPPM * numberOfLBnodesFine]; + D27F.f[dMMM] = &DD27F[dMMM * numberOfLBnodesFine]; + D27F.f[dPMM] = &DD27F[dPMM * numberOfLBnodesFine]; + D27F.f[dMPM] = &DD27F[dMPM * numberOfLBnodesFine]; Distributions27 D27C; if (isEvenTimestep==true) { - D27C.f[DIR_P00] = &DD27C[DIR_P00 * numberOfLBnodesCoarse]; - D27C.f[DIR_M00] = &DD27C[DIR_M00 * numberOfLBnodesCoarse]; - D27C.f[DIR_0P0] = &DD27C[DIR_0P0 * numberOfLBnodesCoarse]; - D27C.f[DIR_0M0] = &DD27C[DIR_0M0 * numberOfLBnodesCoarse]; - D27C.f[DIR_00P] = &DD27C[DIR_00P * numberOfLBnodesCoarse]; - D27C.f[DIR_00M] = &DD27C[DIR_00M * numberOfLBnodesCoarse]; - D27C.f[DIR_PP0] = &DD27C[DIR_PP0 * numberOfLBnodesCoarse]; - D27C.f[DIR_MM0] = &DD27C[DIR_MM0 * numberOfLBnodesCoarse]; - D27C.f[DIR_PM0] = &DD27C[DIR_PM0 * numberOfLBnodesCoarse]; - D27C.f[DIR_MP0] = &DD27C[DIR_MP0 * numberOfLBnodesCoarse]; - D27C.f[DIR_P0P] = &DD27C[DIR_P0P * numberOfLBnodesCoarse]; - D27C.f[DIR_M0M] = &DD27C[DIR_M0M * numberOfLBnodesCoarse]; - D27C.f[DIR_P0M] = &DD27C[DIR_P0M * numberOfLBnodesCoarse]; - D27C.f[DIR_M0P] = &DD27C[DIR_M0P * numberOfLBnodesCoarse]; - D27C.f[DIR_0PP] = &DD27C[DIR_0PP * numberOfLBnodesCoarse]; - D27C.f[DIR_0MM] = &DD27C[DIR_0MM * numberOfLBnodesCoarse]; - D27C.f[DIR_0PM] = &DD27C[DIR_0PM * numberOfLBnodesCoarse]; - D27C.f[DIR_0MP] = &DD27C[DIR_0MP * numberOfLBnodesCoarse]; - D27C.f[DIR_000] = &DD27C[DIR_000 * numberOfLBnodesCoarse]; - D27C.f[DIR_PPP] = &DD27C[DIR_PPP * numberOfLBnodesCoarse]; - D27C.f[DIR_MMP] = &DD27C[DIR_MMP * numberOfLBnodesCoarse]; - D27C.f[DIR_PMP] = &DD27C[DIR_PMP * numberOfLBnodesCoarse]; - D27C.f[DIR_MPP] = &DD27C[DIR_MPP * numberOfLBnodesCoarse]; - D27C.f[DIR_PPM] = &DD27C[DIR_PPM * numberOfLBnodesCoarse]; - D27C.f[DIR_MMM] = &DD27C[DIR_MMM * numberOfLBnodesCoarse]; - D27C.f[DIR_PMM] = &DD27C[DIR_PMM * numberOfLBnodesCoarse]; - D27C.f[DIR_MPM] = &DD27C[DIR_MPM * numberOfLBnodesCoarse]; + D27C.f[dP00] = &DD27C[dP00 * numberOfLBnodesCoarse]; + D27C.f[dM00] = &DD27C[dM00 * numberOfLBnodesCoarse]; + D27C.f[d0P0] = &DD27C[d0P0 * numberOfLBnodesCoarse]; + D27C.f[d0M0] = &DD27C[d0M0 * numberOfLBnodesCoarse]; + D27C.f[d00P] = &DD27C[d00P * numberOfLBnodesCoarse]; + D27C.f[d00M] = &DD27C[d00M * numberOfLBnodesCoarse]; + D27C.f[dPP0] = &DD27C[dPP0 * numberOfLBnodesCoarse]; + D27C.f[dMM0] = &DD27C[dMM0 * numberOfLBnodesCoarse]; + D27C.f[dPM0] = &DD27C[dPM0 * numberOfLBnodesCoarse]; + D27C.f[dMP0] = &DD27C[dMP0 * numberOfLBnodesCoarse]; + D27C.f[dP0P] = &DD27C[dP0P * numberOfLBnodesCoarse]; + D27C.f[dM0M] = &DD27C[dM0M * numberOfLBnodesCoarse]; + D27C.f[dP0M] = &DD27C[dP0M * numberOfLBnodesCoarse]; + D27C.f[dM0P] = &DD27C[dM0P * numberOfLBnodesCoarse]; + D27C.f[d0PP] = &DD27C[d0PP * numberOfLBnodesCoarse]; + D27C.f[d0MM] = &DD27C[d0MM * numberOfLBnodesCoarse]; + D27C.f[d0PM] = &DD27C[d0PM * numberOfLBnodesCoarse]; + D27C.f[d0MP] = &DD27C[d0MP * numberOfLBnodesCoarse]; + D27C.f[d000] = &DD27C[d000 * numberOfLBnodesCoarse]; + D27C.f[dPPP] = &DD27C[dPPP * numberOfLBnodesCoarse]; + D27C.f[dMMP] = &DD27C[dMMP * numberOfLBnodesCoarse]; + D27C.f[dPMP] = &DD27C[dPMP * numberOfLBnodesCoarse]; + D27C.f[dMPP] = &DD27C[dMPP * numberOfLBnodesCoarse]; + D27C.f[dPPM] = &DD27C[dPPM * numberOfLBnodesCoarse]; + D27C.f[dMMM] = &DD27C[dMMM * numberOfLBnodesCoarse]; + D27C.f[dPMM] = &DD27C[dPMM * numberOfLBnodesCoarse]; + D27C.f[dMPM] = &DD27C[dMPM * numberOfLBnodesCoarse]; } else { - D27C.f[DIR_M00] = &DD27C[DIR_P00 * numberOfLBnodesCoarse]; - D27C.f[DIR_P00] = &DD27C[DIR_M00 * numberOfLBnodesCoarse]; - D27C.f[DIR_0M0] = &DD27C[DIR_0P0 * numberOfLBnodesCoarse]; - D27C.f[DIR_0P0] = &DD27C[DIR_0M0 * numberOfLBnodesCoarse]; - D27C.f[DIR_00M] = &DD27C[DIR_00P * numberOfLBnodesCoarse]; - D27C.f[DIR_00P] = &DD27C[DIR_00M * numberOfLBnodesCoarse]; - D27C.f[DIR_MM0] = &DD27C[DIR_PP0 * numberOfLBnodesCoarse]; - D27C.f[DIR_PP0] = &DD27C[DIR_MM0 * numberOfLBnodesCoarse]; - D27C.f[DIR_MP0] = &DD27C[DIR_PM0 * numberOfLBnodesCoarse]; - D27C.f[DIR_PM0] = &DD27C[DIR_MP0 * numberOfLBnodesCoarse]; - D27C.f[DIR_M0M] = &DD27C[DIR_P0P * numberOfLBnodesCoarse]; - D27C.f[DIR_P0P] = &DD27C[DIR_M0M * numberOfLBnodesCoarse]; - D27C.f[DIR_M0P] = &DD27C[DIR_P0M * numberOfLBnodesCoarse]; - D27C.f[DIR_P0M] = &DD27C[DIR_M0P * numberOfLBnodesCoarse]; - D27C.f[DIR_0MM] = &DD27C[DIR_0PP * numberOfLBnodesCoarse]; - D27C.f[DIR_0PP] = &DD27C[DIR_0MM * numberOfLBnodesCoarse]; - D27C.f[DIR_0MP] = &DD27C[DIR_0PM * numberOfLBnodesCoarse]; - D27C.f[DIR_0PM] = &DD27C[DIR_0MP * numberOfLBnodesCoarse]; - D27C.f[DIR_000] = &DD27C[DIR_000 * numberOfLBnodesCoarse]; - D27C.f[DIR_MMM] = &DD27C[DIR_PPP * numberOfLBnodesCoarse]; - D27C.f[DIR_PPM] = &DD27C[DIR_MMP * numberOfLBnodesCoarse]; - D27C.f[DIR_MPM] = &DD27C[DIR_PMP * numberOfLBnodesCoarse]; - D27C.f[DIR_PMM] = &DD27C[DIR_MPP * numberOfLBnodesCoarse]; - D27C.f[DIR_MMP] = &DD27C[DIR_PPM * numberOfLBnodesCoarse]; - D27C.f[DIR_PPP] = &DD27C[DIR_MMM * numberOfLBnodesCoarse]; - D27C.f[DIR_MPP] = &DD27C[DIR_PMM * numberOfLBnodesCoarse]; - D27C.f[DIR_PMP] = &DD27C[DIR_MPM * numberOfLBnodesCoarse]; + D27C.f[dM00] = &DD27C[dP00 * numberOfLBnodesCoarse]; + D27C.f[dP00] = &DD27C[dM00 * numberOfLBnodesCoarse]; + D27C.f[d0M0] = &DD27C[d0P0 * numberOfLBnodesCoarse]; + D27C.f[d0P0] = &DD27C[d0M0 * numberOfLBnodesCoarse]; + D27C.f[d00M] = &DD27C[d00P * numberOfLBnodesCoarse]; + D27C.f[d00P] = &DD27C[d00M * numberOfLBnodesCoarse]; + D27C.f[dMM0] = &DD27C[dPP0 * numberOfLBnodesCoarse]; + D27C.f[dPP0] = &DD27C[dMM0 * numberOfLBnodesCoarse]; + D27C.f[dMP0] = &DD27C[dPM0 * numberOfLBnodesCoarse]; + D27C.f[dPM0] = &DD27C[dMP0 * numberOfLBnodesCoarse]; + D27C.f[dM0M] = &DD27C[dP0P * numberOfLBnodesCoarse]; + D27C.f[dP0P] = &DD27C[dM0M * numberOfLBnodesCoarse]; + D27C.f[dM0P] = &DD27C[dP0M * numberOfLBnodesCoarse]; + D27C.f[dP0M] = &DD27C[dM0P * numberOfLBnodesCoarse]; + D27C.f[d0MM] = &DD27C[d0PP * numberOfLBnodesCoarse]; + D27C.f[d0PP] = &DD27C[d0MM * numberOfLBnodesCoarse]; + D27C.f[d0MP] = &DD27C[d0PM * numberOfLBnodesCoarse]; + D27C.f[d0PM] = &DD27C[d0MP * numberOfLBnodesCoarse]; + D27C.f[d000] = &DD27C[d000 * numberOfLBnodesCoarse]; + D27C.f[dMMM] = &DD27C[dPPP * numberOfLBnodesCoarse]; + D27C.f[dPPM] = &DD27C[dMMP * numberOfLBnodesCoarse]; + D27C.f[dMPM] = &DD27C[dPMP * numberOfLBnodesCoarse]; + D27C.f[dPMM] = &DD27C[dMPP * numberOfLBnodesCoarse]; + D27C.f[dMMP] = &DD27C[dPPM * numberOfLBnodesCoarse]; + D27C.f[dPPP] = &DD27C[dMMM * numberOfLBnodesCoarse]; + D27C.f[dMPP] = &DD27C[dPMM * numberOfLBnodesCoarse]; + D27C.f[dPMP] = &DD27C[dMPM * numberOfLBnodesCoarse]; } //////////////////////////////////////////////////////////////////////////////// @@ -21167,33 +21167,33 @@ __global__ void scaleFCThS27( real* DC, f_BSE = fbseF[kbs]; f_BNW = fbnwF[kbw]; ////////////////////////////////////////////////////////////////////////////////// - f27E = (D27F.f[DIR_P00])[kzero];//ke - f27W = (D27F.f[DIR_M00])[kw ]; - f27N = (D27F.f[DIR_0P0])[kzero];//kn - f27S = (D27F.f[DIR_0M0])[ks ]; - f27T = (D27F.f[DIR_00P])[kzero];//kt - f27B = (D27F.f[DIR_00M])[kb ]; - f27NE = (D27F.f[DIR_PP0])[kzero];//kne - f27SW = (D27F.f[DIR_MM0])[ksw ]; - f27SE = (D27F.f[DIR_PM0])[ks ];//kse - f27NW = (D27F.f[DIR_MP0])[kw ];//knw - f27TE = (D27F.f[DIR_P0P])[kzero];//kte - f27BW = (D27F.f[DIR_M0M])[kbw ]; - f27BE = (D27F.f[DIR_P0M])[kb ];//kbe - f27TW = (D27F.f[DIR_M0P])[kw ];//ktw - f27TN = (D27F.f[DIR_0PP])[kzero];//ktn - f27BS = (D27F.f[DIR_0MM])[kbs ]; - f27BN = (D27F.f[DIR_0PM])[kb ];//kbn - f27TS = (D27F.f[DIR_0MP])[ks ];//kts - f27ZERO = (D27F.f[DIR_000])[kzero];//kzero - f27TNE = (D27F.f[DIR_PPP])[kzero];//ktne - f27TSW = (D27F.f[DIR_MMP])[ksw ];//ktsw - f27TSE = (D27F.f[DIR_PMP])[ks ];//ktse - f27TNW = (D27F.f[DIR_MPP])[kw ];//ktnw - f27BNE = (D27F.f[DIR_PPM])[kb ];//kbne - f27BSW = (D27F.f[DIR_MMM])[kbsw ]; - f27BSE = (D27F.f[DIR_PMM])[kbs ];//kbse - f27BNW = (D27F.f[DIR_MPM])[kbw ];//kbnw + f27E = (D27F.f[dP00])[kzero];//ke + f27W = (D27F.f[dM00])[kw ]; + f27N = (D27F.f[d0P0])[kzero];//kn + f27S = (D27F.f[d0M0])[ks ]; + f27T = (D27F.f[d00P])[kzero];//kt + f27B = (D27F.f[d00M])[kb ]; + f27NE = (D27F.f[dPP0])[kzero];//kne + f27SW = (D27F.f[dMM0])[ksw ]; + f27SE = (D27F.f[dPM0])[ks ];//kse + f27NW = (D27F.f[dMP0])[kw ];//knw + f27TE = (D27F.f[dP0P])[kzero];//kte + f27BW = (D27F.f[dM0M])[kbw ]; + f27BE = (D27F.f[dP0M])[kb ];//kbe + f27TW = (D27F.f[dM0P])[kw ];//ktw + f27TN = (D27F.f[d0PP])[kzero];//ktn + f27BS = (D27F.f[d0MM])[kbs ]; + f27BN = (D27F.f[d0PM])[kb ];//kbn + f27TS = (D27F.f[d0MP])[ks ];//kts + f27ZERO = (D27F.f[d000])[kzero];//kzero + f27TNE = (D27F.f[dPPP])[kzero];//ktne + f27TSW = (D27F.f[dMMP])[ksw ];//ktsw + f27TSE = (D27F.f[dPMP])[ks ];//ktse + f27TNW = (D27F.f[dMPP])[kw ];//ktnw + f27BNE = (D27F.f[dPPM])[kb ];//kbne + f27BSW = (D27F.f[dMMM])[kbsw ]; + f27BSE = (D27F.f[dPMM])[kbs ];//kbse + f27BNW = (D27F.f[dMPM])[kbw ];//kbnw Conc_F_SWB = f27E + f27W + f27N + f27S + f27T + f27B + f27NE + f27SW + f27SE + f27NW + f27TE + f27BW + f27BE + f27TW + f27TN + f27BS + f27BN + f27TS + f27ZERO + @@ -21254,33 +21254,33 @@ __global__ void scaleFCThS27( real* DC, f_BSE = fbseF[kbs]; f_BNW = fbnwF[kbw]; ////////////////////////////////////////////////////////////////////////////////// - f27E = (D27F.f[DIR_P00])[kzero];//ke - f27W = (D27F.f[DIR_M00])[kw ]; - f27N = (D27F.f[DIR_0P0])[kzero];//kn - f27S = (D27F.f[DIR_0M0])[ks ]; - f27T = (D27F.f[DIR_00P])[kzero];//kt - f27B = (D27F.f[DIR_00M])[kb ]; - f27NE = (D27F.f[DIR_PP0])[kzero];//kne - f27SW = (D27F.f[DIR_MM0])[ksw ]; - f27SE = (D27F.f[DIR_PM0])[ks ];//kse - f27NW = (D27F.f[DIR_MP0])[kw ];//knw - f27TE = (D27F.f[DIR_P0P])[kzero];//kte - f27BW = (D27F.f[DIR_M0M])[kbw ]; - f27BE = (D27F.f[DIR_P0M])[kb ];//kbe - f27TW = (D27F.f[DIR_M0P])[kw ];//ktw - f27TN = (D27F.f[DIR_0PP])[kzero];//ktn - f27BS = (D27F.f[DIR_0MM])[kbs ]; - f27BN = (D27F.f[DIR_0PM])[kb ];//kbn - f27TS = (D27F.f[DIR_0MP])[ks ];//kts - f27ZERO = (D27F.f[DIR_000])[kzero];//kzero - f27TNE = (D27F.f[DIR_PPP])[kzero];//ktne - f27TSW = (D27F.f[DIR_MMP])[ksw ];//ktsw - f27TSE = (D27F.f[DIR_PMP])[ks ];//ktse - f27TNW = (D27F.f[DIR_MPP])[kw ];//ktnw - f27BNE = (D27F.f[DIR_PPM])[kb ];//kbne - f27BSW = (D27F.f[DIR_MMM])[kbsw ]; - f27BSE = (D27F.f[DIR_PMM])[kbs ];//kbse - f27BNW = (D27F.f[DIR_MPM])[kbw ];//kbnw + f27E = (D27F.f[dP00])[kzero];//ke + f27W = (D27F.f[dM00])[kw ]; + f27N = (D27F.f[d0P0])[kzero];//kn + f27S = (D27F.f[d0M0])[ks ]; + f27T = (D27F.f[d00P])[kzero];//kt + f27B = (D27F.f[d00M])[kb ]; + f27NE = (D27F.f[dPP0])[kzero];//kne + f27SW = (D27F.f[dMM0])[ksw ]; + f27SE = (D27F.f[dPM0])[ks ];//kse + f27NW = (D27F.f[dMP0])[kw ];//knw + f27TE = (D27F.f[dP0P])[kzero];//kte + f27BW = (D27F.f[dM0M])[kbw ]; + f27BE = (D27F.f[dP0M])[kb ];//kbe + f27TW = (D27F.f[dM0P])[kw ];//ktw + f27TN = (D27F.f[d0PP])[kzero];//ktn + f27BS = (D27F.f[d0MM])[kbs ]; + f27BN = (D27F.f[d0PM])[kb ];//kbn + f27TS = (D27F.f[d0MP])[ks ];//kts + f27ZERO = (D27F.f[d000])[kzero];//kzero + f27TNE = (D27F.f[dPPP])[kzero];//ktne + f27TSW = (D27F.f[dMMP])[ksw ];//ktsw + f27TSE = (D27F.f[dPMP])[ks ];//ktse + f27TNW = (D27F.f[dMPP])[kw ];//ktnw + f27BNE = (D27F.f[dPPM])[kb ];//kbne + f27BSW = (D27F.f[dMMM])[kbsw ]; + f27BSE = (D27F.f[dPMM])[kbs ];//kbse + f27BNW = (D27F.f[dMPM])[kbw ];//kbnw Conc_F_SWT = f27E + f27W + f27N + f27S + f27T + f27B + f27NE + f27SW + f27SE + f27NW + f27TE + f27BW + f27BE + f27TW + f27TN + f27BS + f27BN + f27TS + f27ZERO + @@ -21341,33 +21341,33 @@ __global__ void scaleFCThS27( real* DC, f_BSE = fbseF[kbs]; f_BNW = fbnwF[kbw]; ////////////////////////////////////////////////////////////////////////////////// - f27E = (D27F.f[DIR_P00])[kzero];//ke - f27W = (D27F.f[DIR_M00])[kw ]; - f27N = (D27F.f[DIR_0P0])[kzero];//kn - f27S = (D27F.f[DIR_0M0])[ks ]; - f27T = (D27F.f[DIR_00P])[kzero];//kt - f27B = (D27F.f[DIR_00M])[kb ]; - f27NE = (D27F.f[DIR_PP0])[kzero];//kne - f27SW = (D27F.f[DIR_MM0])[ksw ]; - f27SE = (D27F.f[DIR_PM0])[ks ];//kse - f27NW = (D27F.f[DIR_MP0])[kw ];//knw - f27TE = (D27F.f[DIR_P0P])[kzero];//kte - f27BW = (D27F.f[DIR_M0M])[kbw ]; - f27BE = (D27F.f[DIR_P0M])[kb ];//kbe - f27TW = (D27F.f[DIR_M0P])[kw ];//ktw - f27TN = (D27F.f[DIR_0PP])[kzero];//ktn - f27BS = (D27F.f[DIR_0MM])[kbs ]; - f27BN = (D27F.f[DIR_0PM])[kb ];//kbn - f27TS = (D27F.f[DIR_0MP])[ks ];//kts - f27ZERO = (D27F.f[DIR_000])[kzero];//kzero - f27TNE = (D27F.f[DIR_PPP])[kzero];//ktne - f27TSW = (D27F.f[DIR_MMP])[ksw ];//ktsw - f27TSE = (D27F.f[DIR_PMP])[ks ];//ktse - f27TNW = (D27F.f[DIR_MPP])[kw ];//ktnw - f27BNE = (D27F.f[DIR_PPM])[kb ];//kbne - f27BSW = (D27F.f[DIR_MMM])[kbsw ]; - f27BSE = (D27F.f[DIR_PMM])[kbs ];//kbse - f27BNW = (D27F.f[DIR_MPM])[kbw ];//kbnw + f27E = (D27F.f[dP00])[kzero];//ke + f27W = (D27F.f[dM00])[kw ]; + f27N = (D27F.f[d0P0])[kzero];//kn + f27S = (D27F.f[d0M0])[ks ]; + f27T = (D27F.f[d00P])[kzero];//kt + f27B = (D27F.f[d00M])[kb ]; + f27NE = (D27F.f[dPP0])[kzero];//kne + f27SW = (D27F.f[dMM0])[ksw ]; + f27SE = (D27F.f[dPM0])[ks ];//kse + f27NW = (D27F.f[dMP0])[kw ];//knw + f27TE = (D27F.f[dP0P])[kzero];//kte + f27BW = (D27F.f[dM0M])[kbw ]; + f27BE = (D27F.f[dP0M])[kb ];//kbe + f27TW = (D27F.f[dM0P])[kw ];//ktw + f27TN = (D27F.f[d0PP])[kzero];//ktn + f27BS = (D27F.f[d0MM])[kbs ]; + f27BN = (D27F.f[d0PM])[kb ];//kbn + f27TS = (D27F.f[d0MP])[ks ];//kts + f27ZERO = (D27F.f[d000])[kzero];//kzero + f27TNE = (D27F.f[dPPP])[kzero];//ktne + f27TSW = (D27F.f[dMMP])[ksw ];//ktsw + f27TSE = (D27F.f[dPMP])[ks ];//ktse + f27TNW = (D27F.f[dMPP])[kw ];//ktnw + f27BNE = (D27F.f[dPPM])[kb ];//kbne + f27BSW = (D27F.f[dMMM])[kbsw ]; + f27BSE = (D27F.f[dPMM])[kbs ];//kbse + f27BNW = (D27F.f[dMPM])[kbw ];//kbnw Conc_F_SET = f27E + f27W + f27N + f27S + f27T + f27B + f27NE + f27SW + f27SE + f27NW + f27TE + f27BW + f27BE + f27TW + f27TN + f27BS + f27BN + f27TS + f27ZERO + @@ -21428,33 +21428,33 @@ __global__ void scaleFCThS27( real* DC, f_BSE = fbseF[kbs]; f_BNW = fbnwF[kbw]; ////////////////////////////////////////////////////////////////////////////////// - f27E = (D27F.f[DIR_P00])[kzero];//ke - f27W = (D27F.f[DIR_M00])[kw ]; - f27N = (D27F.f[DIR_0P0])[kzero];//kn - f27S = (D27F.f[DIR_0M0])[ks ]; - f27T = (D27F.f[DIR_00P])[kzero];//kt - f27B = (D27F.f[DIR_00M])[kb ]; - f27NE = (D27F.f[DIR_PP0])[kzero];//kne - f27SW = (D27F.f[DIR_MM0])[ksw ]; - f27SE = (D27F.f[DIR_PM0])[ks ];//kse - f27NW = (D27F.f[DIR_MP0])[kw ];//knw - f27TE = (D27F.f[DIR_P0P])[kzero];//kte - f27BW = (D27F.f[DIR_M0M])[kbw ]; - f27BE = (D27F.f[DIR_P0M])[kb ];//kbe - f27TW = (D27F.f[DIR_M0P])[kw ];//ktw - f27TN = (D27F.f[DIR_0PP])[kzero];//ktn - f27BS = (D27F.f[DIR_0MM])[kbs ]; - f27BN = (D27F.f[DIR_0PM])[kb ];//kbn - f27TS = (D27F.f[DIR_0MP])[ks ];//kts - f27ZERO = (D27F.f[DIR_000])[kzero];//kzero - f27TNE = (D27F.f[DIR_PPP])[kzero];//ktne - f27TSW = (D27F.f[DIR_MMP])[ksw ];//ktsw - f27TSE = (D27F.f[DIR_PMP])[ks ];//ktse - f27TNW = (D27F.f[DIR_MPP])[kw ];//ktnw - f27BNE = (D27F.f[DIR_PPM])[kb ];//kbne - f27BSW = (D27F.f[DIR_MMM])[kbsw ]; - f27BSE = (D27F.f[DIR_PMM])[kbs ];//kbse - f27BNW = (D27F.f[DIR_MPM])[kbw ];//kbnw + f27E = (D27F.f[dP00])[kzero];//ke + f27W = (D27F.f[dM00])[kw ]; + f27N = (D27F.f[d0P0])[kzero];//kn + f27S = (D27F.f[d0M0])[ks ]; + f27T = (D27F.f[d00P])[kzero];//kt + f27B = (D27F.f[d00M])[kb ]; + f27NE = (D27F.f[dPP0])[kzero];//kne + f27SW = (D27F.f[dMM0])[ksw ]; + f27SE = (D27F.f[dPM0])[ks ];//kse + f27NW = (D27F.f[dMP0])[kw ];//knw + f27TE = (D27F.f[dP0P])[kzero];//kte + f27BW = (D27F.f[dM0M])[kbw ]; + f27BE = (D27F.f[dP0M])[kb ];//kbe + f27TW = (D27F.f[dM0P])[kw ];//ktw + f27TN = (D27F.f[d0PP])[kzero];//ktn + f27BS = (D27F.f[d0MM])[kbs ]; + f27BN = (D27F.f[d0PM])[kb ];//kbn + f27TS = (D27F.f[d0MP])[ks ];//kts + f27ZERO = (D27F.f[d000])[kzero];//kzero + f27TNE = (D27F.f[dPPP])[kzero];//ktne + f27TSW = (D27F.f[dMMP])[ksw ];//ktsw + f27TSE = (D27F.f[dPMP])[ks ];//ktse + f27TNW = (D27F.f[dMPP])[kw ];//ktnw + f27BNE = (D27F.f[dPPM])[kb ];//kbne + f27BSW = (D27F.f[dMMM])[kbsw ]; + f27BSE = (D27F.f[dPMM])[kbs ];//kbse + f27BNW = (D27F.f[dMPM])[kbw ];//kbnw Conc_F_SEB = f27E + f27W + f27N + f27S + f27T + f27B + f27NE + f27SW + f27SE + f27NW + f27TE + f27BW + f27BE + f27TW + f27TN + f27BS + f27BN + f27TS + f27ZERO + @@ -21525,33 +21525,33 @@ __global__ void scaleFCThS27( real* DC, f_BSE = fbseF[kbs]; f_BNW = fbnwF[kbw]; ////////////////////////////////////////////////////////////////////////////////// - f27E = (D27F.f[DIR_P00])[kzero];//ke - f27W = (D27F.f[DIR_M00])[kw ]; - f27N = (D27F.f[DIR_0P0])[kzero];//kn - f27S = (D27F.f[DIR_0M0])[ks ]; - f27T = (D27F.f[DIR_00P])[kzero];//kt - f27B = (D27F.f[DIR_00M])[kb ]; - f27NE = (D27F.f[DIR_PP0])[kzero];//kne - f27SW = (D27F.f[DIR_MM0])[ksw ]; - f27SE = (D27F.f[DIR_PM0])[ks ];//kse - f27NW = (D27F.f[DIR_MP0])[kw ];//knw - f27TE = (D27F.f[DIR_P0P])[kzero];//kte - f27BW = (D27F.f[DIR_M0M])[kbw ]; - f27BE = (D27F.f[DIR_P0M])[kb ];//kbe - f27TW = (D27F.f[DIR_M0P])[kw ];//ktw - f27TN = (D27F.f[DIR_0PP])[kzero];//ktn - f27BS = (D27F.f[DIR_0MM])[kbs ]; - f27BN = (D27F.f[DIR_0PM])[kb ];//kbn - f27TS = (D27F.f[DIR_0MP])[ks ];//kts - f27ZERO = (D27F.f[DIR_000])[kzero];//kzero - f27TNE = (D27F.f[DIR_PPP])[kzero];//ktne - f27TSW = (D27F.f[DIR_MMP])[ksw ];//ktsw - f27TSE = (D27F.f[DIR_PMP])[ks ];//ktse - f27TNW = (D27F.f[DIR_MPP])[kw ];//ktnw - f27BNE = (D27F.f[DIR_PPM])[kb ];//kbne - f27BSW = (D27F.f[DIR_MMM])[kbsw ]; - f27BSE = (D27F.f[DIR_PMM])[kbs ];//kbse - f27BNW = (D27F.f[DIR_MPM])[kbw ];//kbnw + f27E = (D27F.f[dP00])[kzero];//ke + f27W = (D27F.f[dM00])[kw ]; + f27N = (D27F.f[d0P0])[kzero];//kn + f27S = (D27F.f[d0M0])[ks ]; + f27T = (D27F.f[d00P])[kzero];//kt + f27B = (D27F.f[d00M])[kb ]; + f27NE = (D27F.f[dPP0])[kzero];//kne + f27SW = (D27F.f[dMM0])[ksw ]; + f27SE = (D27F.f[dPM0])[ks ];//kse + f27NW = (D27F.f[dMP0])[kw ];//knw + f27TE = (D27F.f[dP0P])[kzero];//kte + f27BW = (D27F.f[dM0M])[kbw ]; + f27BE = (D27F.f[dP0M])[kb ];//kbe + f27TW = (D27F.f[dM0P])[kw ];//ktw + f27TN = (D27F.f[d0PP])[kzero];//ktn + f27BS = (D27F.f[d0MM])[kbs ]; + f27BN = (D27F.f[d0PM])[kb ];//kbn + f27TS = (D27F.f[d0MP])[ks ];//kts + f27ZERO = (D27F.f[d000])[kzero];//kzero + f27TNE = (D27F.f[dPPP])[kzero];//ktne + f27TSW = (D27F.f[dMMP])[ksw ];//ktsw + f27TSE = (D27F.f[dPMP])[ks ];//ktse + f27TNW = (D27F.f[dMPP])[kw ];//ktnw + f27BNE = (D27F.f[dPPM])[kb ];//kbne + f27BSW = (D27F.f[dMMM])[kbsw ]; + f27BSE = (D27F.f[dPMM])[kbs ];//kbse + f27BNW = (D27F.f[dMPM])[kbw ];//kbnw Conc_F_NWB = f27E + f27W + f27N + f27S + f27T + f27B + f27NE + f27SW + f27SE + f27NW + f27TE + f27BW + f27BE + f27TW + f27TN + f27BS + f27BN + f27TS + f27ZERO + @@ -21612,33 +21612,33 @@ __global__ void scaleFCThS27( real* DC, f_BSE = fbseF[kbs]; f_BNW = fbnwF[kbw]; ////////////////////////////////////////////////////////////////////////////////// - f27E = (D27F.f[DIR_P00])[kzero];//ke - f27W = (D27F.f[DIR_M00])[kw ]; - f27N = (D27F.f[DIR_0P0])[kzero];//kn - f27S = (D27F.f[DIR_0M0])[ks ]; - f27T = (D27F.f[DIR_00P])[kzero];//kt - f27B = (D27F.f[DIR_00M])[kb ]; - f27NE = (D27F.f[DIR_PP0])[kzero];//kne - f27SW = (D27F.f[DIR_MM0])[ksw ]; - f27SE = (D27F.f[DIR_PM0])[ks ];//kse - f27NW = (D27F.f[DIR_MP0])[kw ];//knw - f27TE = (D27F.f[DIR_P0P])[kzero];//kte - f27BW = (D27F.f[DIR_M0M])[kbw ]; - f27BE = (D27F.f[DIR_P0M])[kb ];//kbe - f27TW = (D27F.f[DIR_M0P])[kw ];//ktw - f27TN = (D27F.f[DIR_0PP])[kzero];//ktn - f27BS = (D27F.f[DIR_0MM])[kbs ]; - f27BN = (D27F.f[DIR_0PM])[kb ];//kbn - f27TS = (D27F.f[DIR_0MP])[ks ];//kts - f27ZERO = (D27F.f[DIR_000])[kzero];//kzero - f27TNE = (D27F.f[DIR_PPP])[kzero];//ktne - f27TSW = (D27F.f[DIR_MMP])[ksw ];//ktsw - f27TSE = (D27F.f[DIR_PMP])[ks ];//ktse - f27TNW = (D27F.f[DIR_MPP])[kw ];//ktnw - f27BNE = (D27F.f[DIR_PPM])[kb ];//kbne - f27BSW = (D27F.f[DIR_MMM])[kbsw ]; - f27BSE = (D27F.f[DIR_PMM])[kbs ];//kbse - f27BNW = (D27F.f[DIR_MPM])[kbw ];//kbnw + f27E = (D27F.f[dP00])[kzero];//ke + f27W = (D27F.f[dM00])[kw ]; + f27N = (D27F.f[d0P0])[kzero];//kn + f27S = (D27F.f[d0M0])[ks ]; + f27T = (D27F.f[d00P])[kzero];//kt + f27B = (D27F.f[d00M])[kb ]; + f27NE = (D27F.f[dPP0])[kzero];//kne + f27SW = (D27F.f[dMM0])[ksw ]; + f27SE = (D27F.f[dPM0])[ks ];//kse + f27NW = (D27F.f[dMP0])[kw ];//knw + f27TE = (D27F.f[dP0P])[kzero];//kte + f27BW = (D27F.f[dM0M])[kbw ]; + f27BE = (D27F.f[dP0M])[kb ];//kbe + f27TW = (D27F.f[dM0P])[kw ];//ktw + f27TN = (D27F.f[d0PP])[kzero];//ktn + f27BS = (D27F.f[d0MM])[kbs ]; + f27BN = (D27F.f[d0PM])[kb ];//kbn + f27TS = (D27F.f[d0MP])[ks ];//kts + f27ZERO = (D27F.f[d000])[kzero];//kzero + f27TNE = (D27F.f[dPPP])[kzero];//ktne + f27TSW = (D27F.f[dMMP])[ksw ];//ktsw + f27TSE = (D27F.f[dPMP])[ks ];//ktse + f27TNW = (D27F.f[dMPP])[kw ];//ktnw + f27BNE = (D27F.f[dPPM])[kb ];//kbne + f27BSW = (D27F.f[dMMM])[kbsw ]; + f27BSE = (D27F.f[dPMM])[kbs ];//kbse + f27BNW = (D27F.f[dMPM])[kbw ];//kbnw Conc_F_NWT = f27E + f27W + f27N + f27S + f27T + f27B + f27NE + f27SW + f27SE + f27NW + f27TE + f27BW + f27BE + f27TW + f27TN + f27BS + f27BN + f27TS + f27ZERO + @@ -21699,33 +21699,33 @@ __global__ void scaleFCThS27( real* DC, f_BSE = fbseF[kbs]; f_BNW = fbnwF[kbw]; ////////////////////////////////////////////////////////////////////////////////// - f27E = (D27F.f[DIR_P00])[kzero];//ke - f27W = (D27F.f[DIR_M00])[kw ]; - f27N = (D27F.f[DIR_0P0])[kzero];//kn - f27S = (D27F.f[DIR_0M0])[ks ]; - f27T = (D27F.f[DIR_00P])[kzero];//kt - f27B = (D27F.f[DIR_00M])[kb ]; - f27NE = (D27F.f[DIR_PP0])[kzero];//kne - f27SW = (D27F.f[DIR_MM0])[ksw ]; - f27SE = (D27F.f[DIR_PM0])[ks ];//kse - f27NW = (D27F.f[DIR_MP0])[kw ];//knw - f27TE = (D27F.f[DIR_P0P])[kzero];//kte - f27BW = (D27F.f[DIR_M0M])[kbw ]; - f27BE = (D27F.f[DIR_P0M])[kb ];//kbe - f27TW = (D27F.f[DIR_M0P])[kw ];//ktw - f27TN = (D27F.f[DIR_0PP])[kzero];//ktn - f27BS = (D27F.f[DIR_0MM])[kbs ]; - f27BN = (D27F.f[DIR_0PM])[kb ];//kbn - f27TS = (D27F.f[DIR_0MP])[ks ];//kts - f27ZERO = (D27F.f[DIR_000])[kzero];//kzero - f27TNE = (D27F.f[DIR_PPP])[kzero];//ktne - f27TSW = (D27F.f[DIR_MMP])[ksw ];//ktsw - f27TSE = (D27F.f[DIR_PMP])[ks ];//ktse - f27TNW = (D27F.f[DIR_MPP])[kw ];//ktnw - f27BNE = (D27F.f[DIR_PPM])[kb ];//kbne - f27BSW = (D27F.f[DIR_MMM])[kbsw ]; - f27BSE = (D27F.f[DIR_PMM])[kbs ];//kbse - f27BNW = (D27F.f[DIR_MPM])[kbw ];//kbnw + f27E = (D27F.f[dP00])[kzero];//ke + f27W = (D27F.f[dM00])[kw ]; + f27N = (D27F.f[d0P0])[kzero];//kn + f27S = (D27F.f[d0M0])[ks ]; + f27T = (D27F.f[d00P])[kzero];//kt + f27B = (D27F.f[d00M])[kb ]; + f27NE = (D27F.f[dPP0])[kzero];//kne + f27SW = (D27F.f[dMM0])[ksw ]; + f27SE = (D27F.f[dPM0])[ks ];//kse + f27NW = (D27F.f[dMP0])[kw ];//knw + f27TE = (D27F.f[dP0P])[kzero];//kte + f27BW = (D27F.f[dM0M])[kbw ]; + f27BE = (D27F.f[dP0M])[kb ];//kbe + f27TW = (D27F.f[dM0P])[kw ];//ktw + f27TN = (D27F.f[d0PP])[kzero];//ktn + f27BS = (D27F.f[d0MM])[kbs ]; + f27BN = (D27F.f[d0PM])[kb ];//kbn + f27TS = (D27F.f[d0MP])[ks ];//kts + f27ZERO = (D27F.f[d000])[kzero];//kzero + f27TNE = (D27F.f[dPPP])[kzero];//ktne + f27TSW = (D27F.f[dMMP])[ksw ];//ktsw + f27TSE = (D27F.f[dPMP])[ks ];//ktse + f27TNW = (D27F.f[dMPP])[kw ];//ktnw + f27BNE = (D27F.f[dPPM])[kb ];//kbne + f27BSW = (D27F.f[dMMM])[kbsw ]; + f27BSE = (D27F.f[dPMM])[kbs ];//kbse + f27BNW = (D27F.f[dMPM])[kbw ];//kbnw Conc_F_NET = f27E + f27W + f27N + f27S + f27T + f27B + f27NE + f27SW + f27SE + f27NW + f27TE + f27BW + f27BE + f27TW + f27TN + f27BS + f27BN + f27TS + f27ZERO + @@ -21786,33 +21786,33 @@ __global__ void scaleFCThS27( real* DC, f_BSE = fbseF[kbs]; f_BNW = fbnwF[kbw]; ////////////////////////////////////////////////////////////////////////////////// - f27E = (D27F.f[DIR_P00])[kzero];//ke - f27W = (D27F.f[DIR_M00])[kw ]; - f27N = (D27F.f[DIR_0P0])[kzero];//kn - f27S = (D27F.f[DIR_0M0])[ks ]; - f27T = (D27F.f[DIR_00P])[kzero];//kt - f27B = (D27F.f[DIR_00M])[kb ]; - f27NE = (D27F.f[DIR_PP0])[kzero];//kne - f27SW = (D27F.f[DIR_MM0])[ksw ]; - f27SE = (D27F.f[DIR_PM0])[ks ];//kse - f27NW = (D27F.f[DIR_MP0])[kw ];//knw - f27TE = (D27F.f[DIR_P0P])[kzero];//kte - f27BW = (D27F.f[DIR_M0M])[kbw ]; - f27BE = (D27F.f[DIR_P0M])[kb ];//kbe - f27TW = (D27F.f[DIR_M0P])[kw ];//ktw - f27TN = (D27F.f[DIR_0PP])[kzero];//ktn - f27BS = (D27F.f[DIR_0MM])[kbs ]; - f27BN = (D27F.f[DIR_0PM])[kb ];//kbn - f27TS = (D27F.f[DIR_0MP])[ks ];//kts - f27ZERO = (D27F.f[DIR_000])[kzero];//kzero - f27TNE = (D27F.f[DIR_PPP])[kzero];//ktne - f27TSW = (D27F.f[DIR_MMP])[ksw ];//ktsw - f27TSE = (D27F.f[DIR_PMP])[ks ];//ktse - f27TNW = (D27F.f[DIR_MPP])[kw ];//ktnw - f27BNE = (D27F.f[DIR_PPM])[kb ];//kbne - f27BSW = (D27F.f[DIR_MMM])[kbsw ]; - f27BSE = (D27F.f[DIR_PMM])[kbs ];//kbse - f27BNW = (D27F.f[DIR_MPM])[kbw ];//kbnw + f27E = (D27F.f[dP00])[kzero];//ke + f27W = (D27F.f[dM00])[kw ]; + f27N = (D27F.f[d0P0])[kzero];//kn + f27S = (D27F.f[d0M0])[ks ]; + f27T = (D27F.f[d00P])[kzero];//kt + f27B = (D27F.f[d00M])[kb ]; + f27NE = (D27F.f[dPP0])[kzero];//kne + f27SW = (D27F.f[dMM0])[ksw ]; + f27SE = (D27F.f[dPM0])[ks ];//kse + f27NW = (D27F.f[dMP0])[kw ];//knw + f27TE = (D27F.f[dP0P])[kzero];//kte + f27BW = (D27F.f[dM0M])[kbw ]; + f27BE = (D27F.f[dP0M])[kb ];//kbe + f27TW = (D27F.f[dM0P])[kw ];//ktw + f27TN = (D27F.f[d0PP])[kzero];//ktn + f27BS = (D27F.f[d0MM])[kbs ]; + f27BN = (D27F.f[d0PM])[kb ];//kbn + f27TS = (D27F.f[d0MP])[ks ];//kts + f27ZERO = (D27F.f[d000])[kzero];//kzero + f27TNE = (D27F.f[dPPP])[kzero];//ktne + f27TSW = (D27F.f[dMMP])[ksw ];//ktsw + f27TSE = (D27F.f[dPMP])[ks ];//ktse + f27TNW = (D27F.f[dMPP])[kw ];//ktnw + f27BNE = (D27F.f[dPPM])[kb ];//kbne + f27BSW = (D27F.f[dMMM])[kbsw ]; + f27BSE = (D27F.f[dPMM])[kbs ];//kbse + f27BNW = (D27F.f[dMPM])[kbw ];//kbnw Conc_F_NEB = f27E + f27W + f27N + f27S + f27T + f27B + f27NE + f27SW + f27SE + f27NW + f27TE + f27BW + f27BE + f27TW + f27TN + f27BS + f27BN + f27TS + f27ZERO + @@ -21925,33 +21925,33 @@ __global__ void scaleFCThS27( real* DC, cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3); - (D27C.f[DIR_000])[kzero] = c8o27* Conc_C*(c1o1-cu_sq); - (D27C.f[DIR_P00])[kzero] = c2o27* (c3o1*( Mx )+Conc_C*(c1o1+c9o2*( vx1 )*( vx1 )-cu_sq)); - (D27C.f[DIR_M00])[kw ] = c2o27* (c3o1*(-Mx )+Conc_C*(c1o1+c9o2*(-vx1 )*(-vx1 )-cu_sq)); - (D27C.f[DIR_0P0])[kzero] = c2o27* (c3o1*( My )+Conc_C*(c1o1+c9o2*( vx2 )*( vx2 )-cu_sq)); - (D27C.f[DIR_0M0])[ks ] = c2o27* (c3o1*( -My )+Conc_C*(c1o1+c9o2*( -vx2 )*( -vx2 )-cu_sq)); - (D27C.f[DIR_00P])[kzero] = c2o27* (c3o1*( Mz)+Conc_C*(c1o1+c9o2*( vx3)*( vx3)-cu_sq)); - (D27C.f[DIR_00M])[kb ] = c2o27* (c3o1*( -Mz)+Conc_C*(c1o1+c9o2*( -vx3)*( -vx3)-cu_sq)); - (D27C.f[DIR_PP0])[kzero] = c1o54* (c3o1*( Mx +My )+Conc_C*(c1o1+c9o2*( vx1+vx2 )*( vx1+vx2 )-cu_sq)); - (D27C.f[DIR_MM0])[ksw ] = c1o54* (c3o1*(-Mx -My )+Conc_C*(c1o1+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq)); - (D27C.f[DIR_PM0])[ks ] = c1o54* (c3o1*( Mx -My )+Conc_C*(c1o1+c9o2*( vx1-vx2 )*( vx1-vx2 )-cu_sq)); - (D27C.f[DIR_MP0])[kw ] = c1o54* (c3o1*(-Mx +My )+Conc_C*(c1o1+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq)); - (D27C.f[DIR_P0P])[kzero] = c1o54* (c3o1*( Mx +Mz)+Conc_C*(c1o1+c9o2*( vx1 +vx3)*( vx1 +vx3)-cu_sq)); - (D27C.f[DIR_M0M])[kbw ] = c1o54* (c3o1*(-Mx -Mz)+Conc_C*(c1o1+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq)); - (D27C.f[DIR_P0M])[kb ] = c1o54* (c3o1*( Mx -Mz)+Conc_C*(c1o1+c9o2*( vx1 -vx3)*( vx1 -vx3)-cu_sq)); - (D27C.f[DIR_M0P])[kw ] = c1o54* (c3o1*(-Mx +Mz)+Conc_C*(c1o1+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq)); - (D27C.f[DIR_0PP])[kzero] = c1o54* (c3o1*( My +Mz)+Conc_C*(c1o1+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq)); - (D27C.f[DIR_0MM])[kbs ] = c1o54* (c3o1*( -My -Mz)+Conc_C*(c1o1+c9o2*( -vx2-vx3)*( -vx2-vx3)-cu_sq)); - (D27C.f[DIR_0PM])[kb ] = c1o54* (c3o1*( My -Mz)+Conc_C*(c1o1+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq)); - (D27C.f[DIR_0MP])[ks ] = c1o54* (c3o1*( -My +Mz)+Conc_C*(c1o1+c9o2*( -vx2+vx3)*( -vx2+vx3)-cu_sq)); - (D27C.f[DIR_PPP])[kzero] = c1o216*(c3o1*( Mx +My +Mz)+Conc_C*(c1o1+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq)); - (D27C.f[DIR_MMM])[kbsw ] = c1o216*(c3o1*(-Mx -My -Mz)+Conc_C*(c1o1+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq)); - (D27C.f[DIR_PPM])[kb ] = c1o216*(c3o1*( Mx +My -Mz)+Conc_C*(c1o1+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq)); - (D27C.f[DIR_MMP])[ksw ] = c1o216*(c3o1*(-Mx -My +Mz)+Conc_C*(c1o1+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq)); - (D27C.f[DIR_PMP])[ks ] = c1o216*(c3o1*( Mx -My +Mz)+Conc_C*(c1o1+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq)); - (D27C.f[DIR_MPM])[kbw ] = c1o216*(c3o1*(-Mx +My -Mz)+Conc_C*(c1o1+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq)); - (D27C.f[DIR_PMM])[kbs ] = c1o216*(c3o1*( Mx -My -Mz)+Conc_C*(c1o1+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq)); - (D27C.f[DIR_MPP])[kw ] = c1o216*(c3o1*(-Mx +My +Mz)+Conc_C*(c1o1+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq)); + (D27C.f[d000])[kzero] = c8o27* Conc_C*(c1o1-cu_sq); + (D27C.f[dP00])[kzero] = c2o27* (c3o1*( Mx )+Conc_C*(c1o1+c9o2*( vx1 )*( vx1 )-cu_sq)); + (D27C.f[dM00])[kw ] = c2o27* (c3o1*(-Mx )+Conc_C*(c1o1+c9o2*(-vx1 )*(-vx1 )-cu_sq)); + (D27C.f[d0P0])[kzero] = c2o27* (c3o1*( My )+Conc_C*(c1o1+c9o2*( vx2 )*( vx2 )-cu_sq)); + (D27C.f[d0M0])[ks ] = c2o27* (c3o1*( -My )+Conc_C*(c1o1+c9o2*( -vx2 )*( -vx2 )-cu_sq)); + (D27C.f[d00P])[kzero] = c2o27* (c3o1*( Mz)+Conc_C*(c1o1+c9o2*( vx3)*( vx3)-cu_sq)); + (D27C.f[d00M])[kb ] = c2o27* (c3o1*( -Mz)+Conc_C*(c1o1+c9o2*( -vx3)*( -vx3)-cu_sq)); + (D27C.f[dPP0])[kzero] = c1o54* (c3o1*( Mx +My )+Conc_C*(c1o1+c9o2*( vx1+vx2 )*( vx1+vx2 )-cu_sq)); + (D27C.f[dMM0])[ksw ] = c1o54* (c3o1*(-Mx -My )+Conc_C*(c1o1+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq)); + (D27C.f[dPM0])[ks ] = c1o54* (c3o1*( Mx -My )+Conc_C*(c1o1+c9o2*( vx1-vx2 )*( vx1-vx2 )-cu_sq)); + (D27C.f[dMP0])[kw ] = c1o54* (c3o1*(-Mx +My )+Conc_C*(c1o1+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq)); + (D27C.f[dP0P])[kzero] = c1o54* (c3o1*( Mx +Mz)+Conc_C*(c1o1+c9o2*( vx1 +vx3)*( vx1 +vx3)-cu_sq)); + (D27C.f[dM0M])[kbw ] = c1o54* (c3o1*(-Mx -Mz)+Conc_C*(c1o1+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq)); + (D27C.f[dP0M])[kb ] = c1o54* (c3o1*( Mx -Mz)+Conc_C*(c1o1+c9o2*( vx1 -vx3)*( vx1 -vx3)-cu_sq)); + (D27C.f[dM0P])[kw ] = c1o54* (c3o1*(-Mx +Mz)+Conc_C*(c1o1+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq)); + (D27C.f[d0PP])[kzero] = c1o54* (c3o1*( My +Mz)+Conc_C*(c1o1+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq)); + (D27C.f[d0MM])[kbs ] = c1o54* (c3o1*( -My -Mz)+Conc_C*(c1o1+c9o2*( -vx2-vx3)*( -vx2-vx3)-cu_sq)); + (D27C.f[d0PM])[kb ] = c1o54* (c3o1*( My -Mz)+Conc_C*(c1o1+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq)); + (D27C.f[d0MP])[ks ] = c1o54* (c3o1*( -My +Mz)+Conc_C*(c1o1+c9o2*( -vx2+vx3)*( -vx2+vx3)-cu_sq)); + (D27C.f[dPPP])[kzero] = c1o216*(c3o1*( Mx +My +Mz)+Conc_C*(c1o1+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq)); + (D27C.f[dMMM])[kbsw ] = c1o216*(c3o1*(-Mx -My -Mz)+Conc_C*(c1o1+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq)); + (D27C.f[dPPM])[kb ] = c1o216*(c3o1*( Mx +My -Mz)+Conc_C*(c1o1+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq)); + (D27C.f[dMMP])[ksw ] = c1o216*(c3o1*(-Mx -My +Mz)+Conc_C*(c1o1+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq)); + (D27C.f[dPMP])[ks ] = c1o216*(c3o1*( Mx -My +Mz)+Conc_C*(c1o1+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq)); + (D27C.f[dMPM])[kbw ] = c1o216*(c3o1*(-Mx +My -Mz)+Conc_C*(c1o1+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq)); + (D27C.f[dPMM])[kbs ] = c1o216*(c3o1*( Mx -My -Mz)+Conc_C*(c1o1+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq)); + (D27C.f[dMPP])[kw ] = c1o216*(c3o1*(-Mx +My +Mz)+Conc_C*(c1o1+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq)); } } @@ -22017,96 +22017,96 @@ __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[DIR_P00 * numberOfLBnodesFine]; - fwF = &DF[DIR_M00 * numberOfLBnodesFine]; - fnF = &DF[DIR_0P0 * numberOfLBnodesFine]; - fsF = &DF[DIR_0M0 * numberOfLBnodesFine]; - ftF = &DF[DIR_00P * numberOfLBnodesFine]; - fbF = &DF[DIR_00M * numberOfLBnodesFine]; - fneF = &DF[DIR_PP0 * numberOfLBnodesFine]; - fswF = &DF[DIR_MM0 * numberOfLBnodesFine]; - fseF = &DF[DIR_PM0 * numberOfLBnodesFine]; - fnwF = &DF[DIR_MP0 * numberOfLBnodesFine]; - fteF = &DF[DIR_P0P * numberOfLBnodesFine]; - fbwF = &DF[DIR_M0M * numberOfLBnodesFine]; - fbeF = &DF[DIR_P0M * numberOfLBnodesFine]; - ftwF = &DF[DIR_M0P * numberOfLBnodesFine]; - ftnF = &DF[DIR_0PP * numberOfLBnodesFine]; - fbsF = &DF[DIR_0MM * numberOfLBnodesFine]; - fbnF = &DF[DIR_0PM * numberOfLBnodesFine]; - ftsF = &DF[DIR_0MP * numberOfLBnodesFine]; - fzeroF = &DF[DIR_000 * numberOfLBnodesFine]; - ftneF = &DF[DIR_PPP * numberOfLBnodesFine]; - ftswF = &DF[DIR_MMP * numberOfLBnodesFine]; - ftseF = &DF[DIR_PMP * numberOfLBnodesFine]; - ftnwF = &DF[DIR_MPP * numberOfLBnodesFine]; - fbneF = &DF[DIR_PPM * numberOfLBnodesFine]; - fbswF = &DF[DIR_MMM * numberOfLBnodesFine]; - fbseF = &DF[DIR_PMM * numberOfLBnodesFine]; - fbnwF = &DF[DIR_MPM * numberOfLBnodesFine]; + feF = &DF[dP00 * numberOfLBnodesFine]; + fwF = &DF[dM00 * numberOfLBnodesFine]; + fnF = &DF[d0P0 * numberOfLBnodesFine]; + fsF = &DF[d0M0 * numberOfLBnodesFine]; + ftF = &DF[d00P * numberOfLBnodesFine]; + fbF = &DF[d00M * numberOfLBnodesFine]; + fneF = &DF[dPP0 * numberOfLBnodesFine]; + fswF = &DF[dMM0 * numberOfLBnodesFine]; + fseF = &DF[dPM0 * numberOfLBnodesFine]; + fnwF = &DF[dMP0 * numberOfLBnodesFine]; + fteF = &DF[dP0P * numberOfLBnodesFine]; + fbwF = &DF[dM0M * numberOfLBnodesFine]; + fbeF = &DF[dP0M * numberOfLBnodesFine]; + ftwF = &DF[dM0P * numberOfLBnodesFine]; + ftnF = &DF[d0PP * numberOfLBnodesFine]; + fbsF = &DF[d0MM * numberOfLBnodesFine]; + fbnF = &DF[d0PM * numberOfLBnodesFine]; + ftsF = &DF[d0MP * numberOfLBnodesFine]; + fzeroF = &DF[d000 * numberOfLBnodesFine]; + ftneF = &DF[dPPP * numberOfLBnodesFine]; + ftswF = &DF[dMMP * numberOfLBnodesFine]; + ftseF = &DF[dPMP * numberOfLBnodesFine]; + ftnwF = &DF[dMPP * numberOfLBnodesFine]; + fbneF = &DF[dPPM * numberOfLBnodesFine]; + fbswF = &DF[dMMM * numberOfLBnodesFine]; + fbseF = &DF[dPMM * numberOfLBnodesFine]; + fbnwF = &DF[dMPM * numberOfLBnodesFine]; 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[DIR_P00 * numberOfLBnodesCoarse]; - fwC = &DC[DIR_M00 * numberOfLBnodesCoarse]; - fnC = &DC[DIR_0P0 * numberOfLBnodesCoarse]; - fsC = &DC[DIR_0M0 * numberOfLBnodesCoarse]; - ftC = &DC[DIR_00P * numberOfLBnodesCoarse]; - fbC = &DC[DIR_00M * numberOfLBnodesCoarse]; - fneC = &DC[DIR_PP0 * numberOfLBnodesCoarse]; - fswC = &DC[DIR_MM0 * numberOfLBnodesCoarse]; - fseC = &DC[DIR_PM0 * numberOfLBnodesCoarse]; - fnwC = &DC[DIR_MP0 * numberOfLBnodesCoarse]; - fteC = &DC[DIR_P0P * numberOfLBnodesCoarse]; - fbwC = &DC[DIR_M0M * numberOfLBnodesCoarse]; - fbeC = &DC[DIR_P0M * numberOfLBnodesCoarse]; - ftwC = &DC[DIR_M0P * numberOfLBnodesCoarse]; - ftnC = &DC[DIR_0PP * numberOfLBnodesCoarse]; - fbsC = &DC[DIR_0MM * numberOfLBnodesCoarse]; - fbnC = &DC[DIR_0PM * numberOfLBnodesCoarse]; - ftsC = &DC[DIR_0MP * numberOfLBnodesCoarse]; - fzeroC = &DC[DIR_000 * numberOfLBnodesCoarse]; - ftneC = &DC[DIR_PPP * numberOfLBnodesCoarse]; - ftswC = &DC[DIR_MMP * numberOfLBnodesCoarse]; - ftseC = &DC[DIR_PMP * numberOfLBnodesCoarse]; - ftnwC = &DC[DIR_MPP * numberOfLBnodesCoarse]; - fbneC = &DC[DIR_PPM * numberOfLBnodesCoarse]; - fbswC = &DC[DIR_MMM * numberOfLBnodesCoarse]; - fbseC = &DC[DIR_PMM * numberOfLBnodesCoarse]; - fbnwC = &DC[DIR_MPM * numberOfLBnodesCoarse]; + feC = &DC[dP00 * numberOfLBnodesCoarse]; + fwC = &DC[dM00 * numberOfLBnodesCoarse]; + fnC = &DC[d0P0 * numberOfLBnodesCoarse]; + fsC = &DC[d0M0 * numberOfLBnodesCoarse]; + ftC = &DC[d00P * numberOfLBnodesCoarse]; + fbC = &DC[d00M * numberOfLBnodesCoarse]; + fneC = &DC[dPP0 * numberOfLBnodesCoarse]; + fswC = &DC[dMM0 * numberOfLBnodesCoarse]; + fseC = &DC[dPM0 * numberOfLBnodesCoarse]; + fnwC = &DC[dMP0 * numberOfLBnodesCoarse]; + fteC = &DC[dP0P * numberOfLBnodesCoarse]; + fbwC = &DC[dM0M * numberOfLBnodesCoarse]; + fbeC = &DC[dP0M * numberOfLBnodesCoarse]; + ftwC = &DC[dM0P * numberOfLBnodesCoarse]; + ftnC = &DC[d0PP * numberOfLBnodesCoarse]; + fbsC = &DC[d0MM * numberOfLBnodesCoarse]; + fbnC = &DC[d0PM * numberOfLBnodesCoarse]; + ftsC = &DC[d0MP * numberOfLBnodesCoarse]; + fzeroC = &DC[d000 * numberOfLBnodesCoarse]; + ftneC = &DC[dPPP * numberOfLBnodesCoarse]; + ftswC = &DC[dMMP * numberOfLBnodesCoarse]; + ftseC = &DC[dPMP * numberOfLBnodesCoarse]; + ftnwC = &DC[dMPP * numberOfLBnodesCoarse]; + fbneC = &DC[dPPM * numberOfLBnodesCoarse]; + fbswC = &DC[dMMM * numberOfLBnodesCoarse]; + fbseC = &DC[dPMM * numberOfLBnodesCoarse]; + fbnwC = &DC[dMPM * numberOfLBnodesCoarse]; } else { - fwC = &DC[DIR_P00 * numberOfLBnodesCoarse]; - feC = &DC[DIR_M00 * numberOfLBnodesCoarse]; - fsC = &DC[DIR_0P0 * numberOfLBnodesCoarse]; - fnC = &DC[DIR_0M0 * numberOfLBnodesCoarse]; - fbC = &DC[DIR_00P * numberOfLBnodesCoarse]; - ftC = &DC[DIR_00M * numberOfLBnodesCoarse]; - fswC = &DC[DIR_PP0 * numberOfLBnodesCoarse]; - fneC = &DC[DIR_MM0 * numberOfLBnodesCoarse]; - fnwC = &DC[DIR_PM0 * numberOfLBnodesCoarse]; - fseC = &DC[DIR_MP0 * numberOfLBnodesCoarse]; - fbwC = &DC[DIR_P0P * numberOfLBnodesCoarse]; - fteC = &DC[DIR_M0M * numberOfLBnodesCoarse]; - ftwC = &DC[DIR_P0M * numberOfLBnodesCoarse]; - fbeC = &DC[DIR_M0P * numberOfLBnodesCoarse]; - fbsC = &DC[DIR_0PP * numberOfLBnodesCoarse]; - ftnC = &DC[DIR_0MM * numberOfLBnodesCoarse]; - ftsC = &DC[DIR_0PM * numberOfLBnodesCoarse]; - fbnC = &DC[DIR_0MP * numberOfLBnodesCoarse]; - fzeroC = &DC[DIR_000 * numberOfLBnodesCoarse]; - fbswC = &DC[DIR_PPP * numberOfLBnodesCoarse]; - fbneC = &DC[DIR_MMP * numberOfLBnodesCoarse]; - fbnwC = &DC[DIR_PMP * numberOfLBnodesCoarse]; - fbseC = &DC[DIR_MPP * numberOfLBnodesCoarse]; - ftswC = &DC[DIR_PPM * numberOfLBnodesCoarse]; - ftneC = &DC[DIR_MMM * numberOfLBnodesCoarse]; - ftnwC = &DC[DIR_PMM * numberOfLBnodesCoarse]; - ftseC = &DC[DIR_MPM * numberOfLBnodesCoarse]; + fwC = &DC[dP00 * numberOfLBnodesCoarse]; + feC = &DC[dM00 * numberOfLBnodesCoarse]; + fsC = &DC[d0P0 * numberOfLBnodesCoarse]; + fnC = &DC[d0M0 * numberOfLBnodesCoarse]; + fbC = &DC[d00P * numberOfLBnodesCoarse]; + ftC = &DC[d00M * numberOfLBnodesCoarse]; + fswC = &DC[dPP0 * numberOfLBnodesCoarse]; + fneC = &DC[dMM0 * numberOfLBnodesCoarse]; + fnwC = &DC[dPM0 * numberOfLBnodesCoarse]; + fseC = &DC[dMP0 * numberOfLBnodesCoarse]; + fbwC = &DC[dP0P * numberOfLBnodesCoarse]; + fteC = &DC[dM0M * numberOfLBnodesCoarse]; + ftwC = &DC[dP0M * numberOfLBnodesCoarse]; + fbeC = &DC[dM0P * numberOfLBnodesCoarse]; + fbsC = &DC[d0PP * numberOfLBnodesCoarse]; + ftnC = &DC[d0MM * numberOfLBnodesCoarse]; + ftsC = &DC[d0PM * numberOfLBnodesCoarse]; + fbnC = &DC[d0MP * numberOfLBnodesCoarse]; + fzeroC = &DC[d000 * numberOfLBnodesCoarse]; + fbswC = &DC[dPPP * numberOfLBnodesCoarse]; + fbneC = &DC[dMMP * numberOfLBnodesCoarse]; + fbnwC = &DC[dPMP * numberOfLBnodesCoarse]; + fbseC = &DC[dMPP * numberOfLBnodesCoarse]; + ftswC = &DC[dPPM * numberOfLBnodesCoarse]; + ftneC = &DC[dMMM * numberOfLBnodesCoarse]; + ftnwC = &DC[dPMM * numberOfLBnodesCoarse]; + ftseC = &DC[dMPM * numberOfLBnodesCoarse]; } //////////////////////////////////////////////////////////////////////////////// const unsigned ix = threadIdx.x; // Globaler x-Index @@ -22995,96 +22995,96 @@ __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[DIR_P00 * numberOfLBnodesFine]; - fwF = &DF[DIR_M00 * numberOfLBnodesFine]; - fnF = &DF[DIR_0P0 * numberOfLBnodesFine]; - fsF = &DF[DIR_0M0 * numberOfLBnodesFine]; - ftF = &DF[DIR_00P * numberOfLBnodesFine]; - fbF = &DF[DIR_00M * numberOfLBnodesFine]; - fneF = &DF[DIR_PP0 * numberOfLBnodesFine]; - fswF = &DF[DIR_MM0 * numberOfLBnodesFine]; - fseF = &DF[DIR_PM0 * numberOfLBnodesFine]; - fnwF = &DF[DIR_MP0 * numberOfLBnodesFine]; - fteF = &DF[DIR_P0P * numberOfLBnodesFine]; - fbwF = &DF[DIR_M0M * numberOfLBnodesFine]; - fbeF = &DF[DIR_P0M * numberOfLBnodesFine]; - ftwF = &DF[DIR_M0P * numberOfLBnodesFine]; - ftnF = &DF[DIR_0PP * numberOfLBnodesFine]; - fbsF = &DF[DIR_0MM * numberOfLBnodesFine]; - fbnF = &DF[DIR_0PM * numberOfLBnodesFine]; - ftsF = &DF[DIR_0MP * numberOfLBnodesFine]; - fzeroF = &DF[DIR_000 * numberOfLBnodesFine]; - ftneF = &DF[DIR_PPP * numberOfLBnodesFine]; - ftswF = &DF[DIR_MMP * numberOfLBnodesFine]; - ftseF = &DF[DIR_PMP * numberOfLBnodesFine]; - ftnwF = &DF[DIR_MPP * numberOfLBnodesFine]; - fbneF = &DF[DIR_PPM * numberOfLBnodesFine]; - fbswF = &DF[DIR_MMM * numberOfLBnodesFine]; - fbseF = &DF[DIR_PMM * numberOfLBnodesFine]; - fbnwF = &DF[DIR_MPM * numberOfLBnodesFine]; + feF = &DF[dP00 * numberOfLBnodesFine]; + fwF = &DF[dM00 * numberOfLBnodesFine]; + fnF = &DF[d0P0 * numberOfLBnodesFine]; + fsF = &DF[d0M0 * numberOfLBnodesFine]; + ftF = &DF[d00P * numberOfLBnodesFine]; + fbF = &DF[d00M * numberOfLBnodesFine]; + fneF = &DF[dPP0 * numberOfLBnodesFine]; + fswF = &DF[dMM0 * numberOfLBnodesFine]; + fseF = &DF[dPM0 * numberOfLBnodesFine]; + fnwF = &DF[dMP0 * numberOfLBnodesFine]; + fteF = &DF[dP0P * numberOfLBnodesFine]; + fbwF = &DF[dM0M * numberOfLBnodesFine]; + fbeF = &DF[dP0M * numberOfLBnodesFine]; + ftwF = &DF[dM0P * numberOfLBnodesFine]; + ftnF = &DF[d0PP * numberOfLBnodesFine]; + fbsF = &DF[d0MM * numberOfLBnodesFine]; + fbnF = &DF[d0PM * numberOfLBnodesFine]; + ftsF = &DF[d0MP * numberOfLBnodesFine]; + fzeroF = &DF[d000 * numberOfLBnodesFine]; + ftneF = &DF[dPPP * numberOfLBnodesFine]; + ftswF = &DF[dMMP * numberOfLBnodesFine]; + ftseF = &DF[dPMP * numberOfLBnodesFine]; + ftnwF = &DF[dMPP * numberOfLBnodesFine]; + fbneF = &DF[dPPM * numberOfLBnodesFine]; + fbswF = &DF[dMMM * numberOfLBnodesFine]; + fbseF = &DF[dPMM * numberOfLBnodesFine]; + fbnwF = &DF[dMPM * numberOfLBnodesFine]; 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[DIR_P00 * numberOfLBnodesCoarse]; - fwC = &DC[DIR_M00 * numberOfLBnodesCoarse]; - fnC = &DC[DIR_0P0 * numberOfLBnodesCoarse]; - fsC = &DC[DIR_0M0 * numberOfLBnodesCoarse]; - ftC = &DC[DIR_00P * numberOfLBnodesCoarse]; - fbC = &DC[DIR_00M * numberOfLBnodesCoarse]; - fneC = &DC[DIR_PP0 * numberOfLBnodesCoarse]; - fswC = &DC[DIR_MM0 * numberOfLBnodesCoarse]; - fseC = &DC[DIR_PM0 * numberOfLBnodesCoarse]; - fnwC = &DC[DIR_MP0 * numberOfLBnodesCoarse]; - fteC = &DC[DIR_P0P * numberOfLBnodesCoarse]; - fbwC = &DC[DIR_M0M * numberOfLBnodesCoarse]; - fbeC = &DC[DIR_P0M * numberOfLBnodesCoarse]; - ftwC = &DC[DIR_M0P * numberOfLBnodesCoarse]; - ftnC = &DC[DIR_0PP * numberOfLBnodesCoarse]; - fbsC = &DC[DIR_0MM * numberOfLBnodesCoarse]; - fbnC = &DC[DIR_0PM * numberOfLBnodesCoarse]; - ftsC = &DC[DIR_0MP * numberOfLBnodesCoarse]; - fzeroC = &DC[DIR_000 * numberOfLBnodesCoarse]; - ftneC = &DC[DIR_PPP * numberOfLBnodesCoarse]; - ftswC = &DC[DIR_MMP * numberOfLBnodesCoarse]; - ftseC = &DC[DIR_PMP * numberOfLBnodesCoarse]; - ftnwC = &DC[DIR_MPP * numberOfLBnodesCoarse]; - fbneC = &DC[DIR_PPM * numberOfLBnodesCoarse]; - fbswC = &DC[DIR_MMM * numberOfLBnodesCoarse]; - fbseC = &DC[DIR_PMM * numberOfLBnodesCoarse]; - fbnwC = &DC[DIR_MPM * numberOfLBnodesCoarse]; + feC = &DC[dP00 * numberOfLBnodesCoarse]; + fwC = &DC[dM00 * numberOfLBnodesCoarse]; + fnC = &DC[d0P0 * numberOfLBnodesCoarse]; + fsC = &DC[d0M0 * numberOfLBnodesCoarse]; + ftC = &DC[d00P * numberOfLBnodesCoarse]; + fbC = &DC[d00M * numberOfLBnodesCoarse]; + fneC = &DC[dPP0 * numberOfLBnodesCoarse]; + fswC = &DC[dMM0 * numberOfLBnodesCoarse]; + fseC = &DC[dPM0 * numberOfLBnodesCoarse]; + fnwC = &DC[dMP0 * numberOfLBnodesCoarse]; + fteC = &DC[dP0P * numberOfLBnodesCoarse]; + fbwC = &DC[dM0M * numberOfLBnodesCoarse]; + fbeC = &DC[dP0M * numberOfLBnodesCoarse]; + ftwC = &DC[dM0P * numberOfLBnodesCoarse]; + ftnC = &DC[d0PP * numberOfLBnodesCoarse]; + fbsC = &DC[d0MM * numberOfLBnodesCoarse]; + fbnC = &DC[d0PM * numberOfLBnodesCoarse]; + ftsC = &DC[d0MP * numberOfLBnodesCoarse]; + fzeroC = &DC[d000 * numberOfLBnodesCoarse]; + ftneC = &DC[dPPP * numberOfLBnodesCoarse]; + ftswC = &DC[dMMP * numberOfLBnodesCoarse]; + ftseC = &DC[dPMP * numberOfLBnodesCoarse]; + ftnwC = &DC[dMPP * numberOfLBnodesCoarse]; + fbneC = &DC[dPPM * numberOfLBnodesCoarse]; + fbswC = &DC[dMMM * numberOfLBnodesCoarse]; + fbseC = &DC[dPMM * numberOfLBnodesCoarse]; + fbnwC = &DC[dMPM * numberOfLBnodesCoarse]; } else { - fwC = &DC[DIR_P00 * numberOfLBnodesCoarse]; - feC = &DC[DIR_M00 * numberOfLBnodesCoarse]; - fsC = &DC[DIR_0P0 * numberOfLBnodesCoarse]; - fnC = &DC[DIR_0M0 * numberOfLBnodesCoarse]; - fbC = &DC[DIR_00P * numberOfLBnodesCoarse]; - ftC = &DC[DIR_00M * numberOfLBnodesCoarse]; - fswC = &DC[DIR_PP0 * numberOfLBnodesCoarse]; - fneC = &DC[DIR_MM0 * numberOfLBnodesCoarse]; - fnwC = &DC[DIR_PM0 * numberOfLBnodesCoarse]; - fseC = &DC[DIR_MP0 * numberOfLBnodesCoarse]; - fbwC = &DC[DIR_P0P * numberOfLBnodesCoarse]; - fteC = &DC[DIR_M0M * numberOfLBnodesCoarse]; - ftwC = &DC[DIR_P0M * numberOfLBnodesCoarse]; - fbeC = &DC[DIR_M0P * numberOfLBnodesCoarse]; - fbsC = &DC[DIR_0PP * numberOfLBnodesCoarse]; - ftnC = &DC[DIR_0MM * numberOfLBnodesCoarse]; - ftsC = &DC[DIR_0PM * numberOfLBnodesCoarse]; - fbnC = &DC[DIR_0MP * numberOfLBnodesCoarse]; - fzeroC = &DC[DIR_000 * numberOfLBnodesCoarse]; - fbswC = &DC[DIR_PPP * numberOfLBnodesCoarse]; - fbneC = &DC[DIR_MMP * numberOfLBnodesCoarse]; - fbnwC = &DC[DIR_PMP * numberOfLBnodesCoarse]; - fbseC = &DC[DIR_MPP * numberOfLBnodesCoarse]; - ftswC = &DC[DIR_PPM * numberOfLBnodesCoarse]; - ftneC = &DC[DIR_MMM * numberOfLBnodesCoarse]; - ftnwC = &DC[DIR_PMM * numberOfLBnodesCoarse]; - ftseC = &DC[DIR_MPM * numberOfLBnodesCoarse]; + fwC = &DC[dP00 * numberOfLBnodesCoarse]; + feC = &DC[dM00 * numberOfLBnodesCoarse]; + fsC = &DC[d0P0 * numberOfLBnodesCoarse]; + fnC = &DC[d0M0 * numberOfLBnodesCoarse]; + fbC = &DC[d00P * numberOfLBnodesCoarse]; + ftC = &DC[d00M * numberOfLBnodesCoarse]; + fswC = &DC[dPP0 * numberOfLBnodesCoarse]; + fneC = &DC[dMM0 * numberOfLBnodesCoarse]; + fnwC = &DC[dPM0 * numberOfLBnodesCoarse]; + fseC = &DC[dMP0 * numberOfLBnodesCoarse]; + fbwC = &DC[dP0P * numberOfLBnodesCoarse]; + fteC = &DC[dM0M * numberOfLBnodesCoarse]; + ftwC = &DC[dP0M * numberOfLBnodesCoarse]; + fbeC = &DC[dM0P * numberOfLBnodesCoarse]; + fbsC = &DC[d0PP * numberOfLBnodesCoarse]; + ftnC = &DC[d0MM * numberOfLBnodesCoarse]; + ftsC = &DC[d0PM * numberOfLBnodesCoarse]; + fbnC = &DC[d0MP * numberOfLBnodesCoarse]; + fzeroC = &DC[d000 * numberOfLBnodesCoarse]; + fbswC = &DC[dPPP * numberOfLBnodesCoarse]; + fbneC = &DC[dMMP * numberOfLBnodesCoarse]; + fbnwC = &DC[dPMP * numberOfLBnodesCoarse]; + fbseC = &DC[dMPP * numberOfLBnodesCoarse]; + ftswC = &DC[dPPM * numberOfLBnodesCoarse]; + ftneC = &DC[dMMM * numberOfLBnodesCoarse]; + ftnwC = &DC[dPMM * numberOfLBnodesCoarse]; + ftseC = &DC[dMPM * numberOfLBnodesCoarse]; } //////////////////////////////////////////////////////////////////////////////// const unsigned ix = threadIdx.x; // Globaler x-Index diff --git a/src/gpu/VirtualFluids_GPU/GPU/GridScaling/ScaleFC_F3_27.cu b/src/gpu/core/GPU/GridScaling/ScaleFC_F3_27.cu similarity index 92% rename from src/gpu/VirtualFluids_GPU/GPU/GridScaling/ScaleFC_F3_27.cu rename to src/gpu/core/GPU/GridScaling/ScaleFC_F3_27.cu index 7de51b3b0aec87e3e8773c08435c3ada445e9a41..296c80c5c1a876a4453e6c53228af066b3ec6e22 100644 --- a/src/gpu/VirtualFluids_GPU/GPU/GridScaling/ScaleFC_F3_27.cu +++ b/src/gpu/core/GPU/GridScaling/ScaleFC_F3_27.cu @@ -44,33 +44,33 @@ __global__ void scaleFC_comp_D3Q27F3_2018(real* DC, *f000source, *fMMMsource, *fMMPsource, *fMPPsource, *fMPMsource, *fPPMsource, *fPPPsource, *fPMPsource, *fPMMsource; - fP00source = &DF[DIR_P00 * numberOfLBnodesFine]; - fM00source = &DF[DIR_M00 * numberOfLBnodesFine]; - f0P0source = &DF[DIR_0P0 * numberOfLBnodesFine]; - f0M0source = &DF[DIR_0M0 * numberOfLBnodesFine]; - f00Psource = &DF[DIR_00P * numberOfLBnodesFine]; - f00Msource = &DF[DIR_00M * numberOfLBnodesFine]; - fPP0source = &DF[DIR_PP0 * numberOfLBnodesFine]; - fMM0source = &DF[DIR_MM0 * numberOfLBnodesFine]; - fPM0source = &DF[DIR_PM0 * numberOfLBnodesFine]; - fMP0source = &DF[DIR_MP0 * numberOfLBnodesFine]; - fP0Psource = &DF[DIR_P0P * numberOfLBnodesFine]; - fM0Msource = &DF[DIR_M0M * numberOfLBnodesFine]; - fP0Msource = &DF[DIR_P0M * numberOfLBnodesFine]; - fM0Psource = &DF[DIR_M0P * numberOfLBnodesFine]; - f0PPsource = &DF[DIR_0PP * numberOfLBnodesFine]; - f0MMsource = &DF[DIR_0MM * numberOfLBnodesFine]; - f0PMsource = &DF[DIR_0PM * numberOfLBnodesFine]; - f0MPsource = &DF[DIR_0MP * numberOfLBnodesFine]; - f000source = &DF[DIR_000 * numberOfLBnodesFine]; - fMMMsource = &DF[DIR_MMM * numberOfLBnodesFine]; - fMMPsource = &DF[DIR_MMP * numberOfLBnodesFine]; - fMPPsource = &DF[DIR_MPP * numberOfLBnodesFine]; - fMPMsource = &DF[DIR_MPM * numberOfLBnodesFine]; - fPPMsource = &DF[DIR_PPM * numberOfLBnodesFine]; - fPPPsource = &DF[DIR_PPP * numberOfLBnodesFine]; - fPMPsource = &DF[DIR_PMP * numberOfLBnodesFine]; - fPMMsource = &DF[DIR_PMM * numberOfLBnodesFine]; + fP00source = &DF[dP00 * numberOfLBnodesFine]; + fM00source = &DF[dM00 * numberOfLBnodesFine]; + f0P0source = &DF[d0P0 * numberOfLBnodesFine]; + f0M0source = &DF[d0M0 * numberOfLBnodesFine]; + f00Psource = &DF[d00P * numberOfLBnodesFine]; + f00Msource = &DF[d00M * numberOfLBnodesFine]; + fPP0source = &DF[dPP0 * numberOfLBnodesFine]; + fMM0source = &DF[dMM0 * numberOfLBnodesFine]; + fPM0source = &DF[dPM0 * numberOfLBnodesFine]; + fMP0source = &DF[dMP0 * numberOfLBnodesFine]; + fP0Psource = &DF[dP0P * numberOfLBnodesFine]; + fM0Msource = &DF[dM0M * numberOfLBnodesFine]; + fP0Msource = &DF[dP0M * numberOfLBnodesFine]; + fM0Psource = &DF[dM0P * numberOfLBnodesFine]; + f0PPsource = &DF[d0PP * numberOfLBnodesFine]; + f0MMsource = &DF[d0MM * numberOfLBnodesFine]; + f0PMsource = &DF[d0PM * numberOfLBnodesFine]; + f0MPsource = &DF[d0MP * numberOfLBnodesFine]; + f000source = &DF[d000 * numberOfLBnodesFine]; + fMMMsource = &DF[dMMM * numberOfLBnodesFine]; + fMMPsource = &DF[dMMP * numberOfLBnodesFine]; + fMPPsource = &DF[dMPP * numberOfLBnodesFine]; + fMPMsource = &DF[dMPM * numberOfLBnodesFine]; + fPPMsource = &DF[dPPM * numberOfLBnodesFine]; + fPPPsource = &DF[dPPP * numberOfLBnodesFine]; + fPMPsource = &DF[dPMP * numberOfLBnodesFine]; + fPMMsource = &DF[dPMM * numberOfLBnodesFine]; real *fP00dest, *fM00dest, *f0P0dest, *f0M0dest, *f00Pdest, *f00Mdest, *fPP0dest, *fMM0dest, *fPM0dest, @@ -79,83 +79,83 @@ __global__ void scaleFC_comp_D3Q27F3_2018(real* DC, if (isEvenTimestep==true) { - fP00dest = &DC[DIR_P00 * numberOfLBnodesCoarse]; - fM00dest = &DC[DIR_M00 * numberOfLBnodesCoarse]; - f0P0dest = &DC[DIR_0P0 * numberOfLBnodesCoarse]; - f0M0dest = &DC[DIR_0M0 * numberOfLBnodesCoarse]; - f00Pdest = &DC[DIR_00P * numberOfLBnodesCoarse]; - f00Mdest = &DC[DIR_00M * numberOfLBnodesCoarse]; - fPP0dest = &DC[DIR_PP0 * numberOfLBnodesCoarse]; - fMM0dest = &DC[DIR_MM0 * numberOfLBnodesCoarse]; - fPM0dest = &DC[DIR_PM0 * numberOfLBnodesCoarse]; - fMP0dest = &DC[DIR_MP0 * numberOfLBnodesCoarse]; - fP0Pdest = &DC[DIR_P0P * numberOfLBnodesCoarse]; - fM0Mdest = &DC[DIR_M0M * numberOfLBnodesCoarse]; - fP0Mdest = &DC[DIR_P0M * numberOfLBnodesCoarse]; - fM0Pdest = &DC[DIR_M0P * numberOfLBnodesCoarse]; - f0PPdest = &DC[DIR_0PP * numberOfLBnodesCoarse]; - f0MMdest = &DC[DIR_0MM * numberOfLBnodesCoarse]; - f0PMdest = &DC[DIR_0PM * numberOfLBnodesCoarse]; - f0MPdest = &DC[DIR_0MP * numberOfLBnodesCoarse]; - f000dest = &DC[DIR_000 * numberOfLBnodesCoarse]; - fMMMdest = &DC[DIR_MMM * numberOfLBnodesCoarse]; - fMMPdest = &DC[DIR_MMP * numberOfLBnodesCoarse]; - fMPPdest = &DC[DIR_MPP * numberOfLBnodesCoarse]; - fMPMdest = &DC[DIR_MPM * numberOfLBnodesCoarse]; - fPPMdest = &DC[DIR_PPM * numberOfLBnodesCoarse]; - fPPPdest = &DC[DIR_PPP * numberOfLBnodesCoarse]; - fPMPdest = &DC[DIR_PMP * numberOfLBnodesCoarse]; - fPMMdest = &DC[DIR_PMM * numberOfLBnodesCoarse]; + fP00dest = &DC[dP00 * numberOfLBnodesCoarse]; + fM00dest = &DC[dM00 * numberOfLBnodesCoarse]; + f0P0dest = &DC[d0P0 * numberOfLBnodesCoarse]; + f0M0dest = &DC[d0M0 * numberOfLBnodesCoarse]; + f00Pdest = &DC[d00P * numberOfLBnodesCoarse]; + f00Mdest = &DC[d00M * numberOfLBnodesCoarse]; + fPP0dest = &DC[dPP0 * numberOfLBnodesCoarse]; + fMM0dest = &DC[dMM0 * numberOfLBnodesCoarse]; + fPM0dest = &DC[dPM0 * numberOfLBnodesCoarse]; + fMP0dest = &DC[dMP0 * numberOfLBnodesCoarse]; + fP0Pdest = &DC[dP0P * numberOfLBnodesCoarse]; + fM0Mdest = &DC[dM0M * numberOfLBnodesCoarse]; + fP0Mdest = &DC[dP0M * numberOfLBnodesCoarse]; + fM0Pdest = &DC[dM0P * numberOfLBnodesCoarse]; + f0PPdest = &DC[d0PP * numberOfLBnodesCoarse]; + f0MMdest = &DC[d0MM * numberOfLBnodesCoarse]; + f0PMdest = &DC[d0PM * numberOfLBnodesCoarse]; + f0MPdest = &DC[d0MP * numberOfLBnodesCoarse]; + f000dest = &DC[d000 * numberOfLBnodesCoarse]; + fMMMdest = &DC[dMMM * numberOfLBnodesCoarse]; + fMMPdest = &DC[dMMP * numberOfLBnodesCoarse]; + fMPPdest = &DC[dMPP * numberOfLBnodesCoarse]; + fMPMdest = &DC[dMPM * numberOfLBnodesCoarse]; + fPPMdest = &DC[dPPM * numberOfLBnodesCoarse]; + fPPPdest = &DC[dPPP * numberOfLBnodesCoarse]; + fPMPdest = &DC[dPMP * numberOfLBnodesCoarse]; + fPMMdest = &DC[dPMM * numberOfLBnodesCoarse]; } else { - fP00dest = &DC[DIR_M00 * numberOfLBnodesCoarse]; - fM00dest = &DC[DIR_P00 * numberOfLBnodesCoarse]; - f0P0dest = &DC[DIR_0M0 * numberOfLBnodesCoarse]; - f0M0dest = &DC[DIR_0P0 * numberOfLBnodesCoarse]; - f00Pdest = &DC[DIR_00M * numberOfLBnodesCoarse]; - f00Mdest = &DC[DIR_00P * numberOfLBnodesCoarse]; - fPP0dest = &DC[DIR_MM0 * numberOfLBnodesCoarse]; - fMM0dest = &DC[DIR_PP0 * numberOfLBnodesCoarse]; - fPM0dest = &DC[DIR_MP0 * numberOfLBnodesCoarse]; - fMP0dest = &DC[DIR_PM0 * numberOfLBnodesCoarse]; - fP0Pdest = &DC[DIR_M0M * numberOfLBnodesCoarse]; - fM0Mdest = &DC[DIR_P0P * numberOfLBnodesCoarse]; - fP0Mdest = &DC[DIR_M0P * numberOfLBnodesCoarse]; - fM0Pdest = &DC[DIR_P0M * numberOfLBnodesCoarse]; - f0PPdest = &DC[DIR_0MM * numberOfLBnodesCoarse]; - f0MMdest = &DC[DIR_0PP * numberOfLBnodesCoarse]; - f0PMdest = &DC[DIR_0MP * numberOfLBnodesCoarse]; - f0MPdest = &DC[DIR_0PM * numberOfLBnodesCoarse]; - f000dest = &DC[DIR_000 * numberOfLBnodesCoarse]; - fMMMdest = &DC[DIR_PPP * numberOfLBnodesCoarse]; - fMMPdest = &DC[DIR_PPM * numberOfLBnodesCoarse]; - fMPPdest = &DC[DIR_PMM * numberOfLBnodesCoarse]; - fMPMdest = &DC[DIR_PMP * numberOfLBnodesCoarse]; - fPPMdest = &DC[DIR_MMP * numberOfLBnodesCoarse]; - fPPPdest = &DC[DIR_MMM * numberOfLBnodesCoarse]; - fPMPdest = &DC[DIR_MPM * numberOfLBnodesCoarse]; - fPMMdest = &DC[DIR_MPP * numberOfLBnodesCoarse]; + fP00dest = &DC[dM00 * numberOfLBnodesCoarse]; + fM00dest = &DC[dP00 * numberOfLBnodesCoarse]; + f0P0dest = &DC[d0M0 * numberOfLBnodesCoarse]; + f0M0dest = &DC[d0P0 * numberOfLBnodesCoarse]; + f00Pdest = &DC[d00M * numberOfLBnodesCoarse]; + f00Mdest = &DC[d00P * numberOfLBnodesCoarse]; + fPP0dest = &DC[dMM0 * numberOfLBnodesCoarse]; + fMM0dest = &DC[dPP0 * numberOfLBnodesCoarse]; + fPM0dest = &DC[dMP0 * numberOfLBnodesCoarse]; + fMP0dest = &DC[dPM0 * numberOfLBnodesCoarse]; + fP0Pdest = &DC[dM0M * numberOfLBnodesCoarse]; + fM0Mdest = &DC[dP0P * numberOfLBnodesCoarse]; + fP0Mdest = &DC[dM0P * numberOfLBnodesCoarse]; + fM0Pdest = &DC[dP0M * numberOfLBnodesCoarse]; + f0PPdest = &DC[d0MM * numberOfLBnodesCoarse]; + f0MMdest = &DC[d0PP * numberOfLBnodesCoarse]; + f0PMdest = &DC[d0MP * numberOfLBnodesCoarse]; + f0MPdest = &DC[d0PM * numberOfLBnodesCoarse]; + f000dest = &DC[d000 * numberOfLBnodesCoarse]; + fMMMdest = &DC[dPPP * numberOfLBnodesCoarse]; + fMMPdest = &DC[dPPM * numberOfLBnodesCoarse]; + fMPPdest = &DC[dPMM * numberOfLBnodesCoarse]; + fMPMdest = &DC[dPMP * numberOfLBnodesCoarse]; + fPPMdest = &DC[dMMP * numberOfLBnodesCoarse]; + fPPPdest = &DC[dMMM * numberOfLBnodesCoarse]; + fPMPdest = &DC[dMPM * numberOfLBnodesCoarse]; + fPMMdest = &DC[dMPP * numberOfLBnodesCoarse]; } Distributions6 G; if (isEvenTimestep == true) { - G.g[DIR_P00] = &G6[DIR_P00 * numberOfLBnodesCoarse]; - G.g[DIR_M00] = &G6[DIR_M00 * numberOfLBnodesCoarse]; - G.g[DIR_0P0] = &G6[DIR_0P0 * numberOfLBnodesCoarse]; - G.g[DIR_0M0] = &G6[DIR_0M0 * numberOfLBnodesCoarse]; - G.g[DIR_00P] = &G6[DIR_00P * numberOfLBnodesCoarse]; - G.g[DIR_00M] = &G6[DIR_00M * numberOfLBnodesCoarse]; + G.g[dP00] = &G6[dP00 * numberOfLBnodesCoarse]; + G.g[dM00] = &G6[dM00 * numberOfLBnodesCoarse]; + G.g[d0P0] = &G6[d0P0 * numberOfLBnodesCoarse]; + G.g[d0M0] = &G6[d0M0 * numberOfLBnodesCoarse]; + G.g[d00P] = &G6[d00P * numberOfLBnodesCoarse]; + G.g[d00M] = &G6[d00M * numberOfLBnodesCoarse]; } else { - G.g[DIR_M00] = &G6[DIR_P00 * numberOfLBnodesCoarse]; - G.g[DIR_P00] = &G6[DIR_M00 * numberOfLBnodesCoarse]; - G.g[DIR_0M0] = &G6[DIR_0P0 * numberOfLBnodesCoarse]; - G.g[DIR_0P0] = &G6[DIR_0M0 * numberOfLBnodesCoarse]; - G.g[DIR_00M] = &G6[DIR_00P * numberOfLBnodesCoarse]; - G.g[DIR_00P] = &G6[DIR_00M * numberOfLBnodesCoarse]; + G.g[dM00] = &G6[dP00 * numberOfLBnodesCoarse]; + G.g[dP00] = &G6[dM00 * numberOfLBnodesCoarse]; + G.g[d0M0] = &G6[d0P0 * numberOfLBnodesCoarse]; + G.g[d0P0] = &G6[d0M0 * numberOfLBnodesCoarse]; + G.g[d00M] = &G6[d00P * numberOfLBnodesCoarse]; + G.g[d00P] = &G6[d00M * numberOfLBnodesCoarse]; } //////////////////////////////////////////////////////////////////////////////// @@ -1168,12 +1168,12 @@ __global__ void scaleFC_comp_D3Q27F3_2018(real* DC, //////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////// - (G.g[DIR_P00])[k000] = mgcbb; - (G.g[DIR_M00])[kM00] = mgabb; - (G.g[DIR_0P0])[k000] = mgbcb; - (G.g[DIR_0M0])[k0M0] = mgbab; - (G.g[DIR_00P])[k000] = mgbbc; - (G.g[DIR_00M])[k00M] = mgbba; + (G.g[dP00])[k000] = mgcbb; + (G.g[dM00])[kM00] = mgabb; + (G.g[d0P0])[k000] = mgbcb; + (G.g[d0M0])[k0M0] = mgbab; + (G.g[d00P])[k000] = mgbbc; + (G.g[d00M])[k00M] = mgbba; //////////////////////////////////////////////////////////////////////////////////// fP00dest[k000] = mfcbb; fM00dest[kM00] = mfabb; @@ -1291,33 +1291,33 @@ __global__ void scaleFC_comp_D3Q27F3( real* DC, *f000source, *fMMMsource, *fMMPsource, *fMPPsource, *fMPMsource, *fPPMsource, *fPPPsource, *fPMPsource, *fPMMsource; - fP00source = &DF[DIR_P00 * numberOfLBnodesFine]; - fM00source = &DF[DIR_M00 * numberOfLBnodesFine]; - f0P0source = &DF[DIR_0P0 * numberOfLBnodesFine]; - f0M0source = &DF[DIR_0M0 * numberOfLBnodesFine]; - f00Psource = &DF[DIR_00P * numberOfLBnodesFine]; - f00Msource = &DF[DIR_00M * numberOfLBnodesFine]; - fPP0source = &DF[DIR_PP0 * numberOfLBnodesFine]; - fMM0source = &DF[DIR_MM0 * numberOfLBnodesFine]; - fPM0source = &DF[DIR_PM0 * numberOfLBnodesFine]; - fMP0source = &DF[DIR_MP0 * numberOfLBnodesFine]; - fP0Psource = &DF[DIR_P0P * numberOfLBnodesFine]; - fM0Msource = &DF[DIR_M0M * numberOfLBnodesFine]; - fP0Msource = &DF[DIR_P0M * numberOfLBnodesFine]; - fM0Psource = &DF[DIR_M0P * numberOfLBnodesFine]; - f0PPsource = &DF[DIR_0PP * numberOfLBnodesFine]; - f0MMsource = &DF[DIR_0MM * numberOfLBnodesFine]; - f0PMsource = &DF[DIR_0PM * numberOfLBnodesFine]; - f0MPsource = &DF[DIR_0MP * numberOfLBnodesFine]; - f000source = &DF[DIR_000 * numberOfLBnodesFine]; - fMMMsource = &DF[DIR_MMM * numberOfLBnodesFine]; - fMMPsource = &DF[DIR_MMP * numberOfLBnodesFine]; - fMPPsource = &DF[DIR_MPP * numberOfLBnodesFine]; - fMPMsource = &DF[DIR_MPM * numberOfLBnodesFine]; - fPPMsource = &DF[DIR_PPM * numberOfLBnodesFine]; - fPPPsource = &DF[DIR_PPP * numberOfLBnodesFine]; - fPMPsource = &DF[DIR_PMP * numberOfLBnodesFine]; - fPMMsource = &DF[DIR_PMM * numberOfLBnodesFine]; + fP00source = &DF[dP00 * numberOfLBnodesFine]; + fM00source = &DF[dM00 * numberOfLBnodesFine]; + f0P0source = &DF[d0P0 * numberOfLBnodesFine]; + f0M0source = &DF[d0M0 * numberOfLBnodesFine]; + f00Psource = &DF[d00P * numberOfLBnodesFine]; + f00Msource = &DF[d00M * numberOfLBnodesFine]; + fPP0source = &DF[dPP0 * numberOfLBnodesFine]; + fMM0source = &DF[dMM0 * numberOfLBnodesFine]; + fPM0source = &DF[dPM0 * numberOfLBnodesFine]; + fMP0source = &DF[dMP0 * numberOfLBnodesFine]; + fP0Psource = &DF[dP0P * numberOfLBnodesFine]; + fM0Msource = &DF[dM0M * numberOfLBnodesFine]; + fP0Msource = &DF[dP0M * numberOfLBnodesFine]; + fM0Psource = &DF[dM0P * numberOfLBnodesFine]; + f0PPsource = &DF[d0PP * numberOfLBnodesFine]; + f0MMsource = &DF[d0MM * numberOfLBnodesFine]; + f0PMsource = &DF[d0PM * numberOfLBnodesFine]; + f0MPsource = &DF[d0MP * numberOfLBnodesFine]; + f000source = &DF[d000 * numberOfLBnodesFine]; + fMMMsource = &DF[dMMM * numberOfLBnodesFine]; + fMMPsource = &DF[dMMP * numberOfLBnodesFine]; + fMPPsource = &DF[dMPP * numberOfLBnodesFine]; + fMPMsource = &DF[dMPM * numberOfLBnodesFine]; + fPPMsource = &DF[dPPM * numberOfLBnodesFine]; + fPPPsource = &DF[dPPP * numberOfLBnodesFine]; + fPMPsource = &DF[dPMP * numberOfLBnodesFine]; + fPMMsource = &DF[dPMM * numberOfLBnodesFine]; real *fP00dest, *fM00dest, *f0P0dest, *f0M0dest, *f00Pdest, *f00Mdest, *fPP0dest, *fMM0dest, *fPM0dest, @@ -1326,83 +1326,83 @@ __global__ void scaleFC_comp_D3Q27F3( real* DC, if (isEvenTimestep==true) { - fP00dest = &DC[DIR_P00 * numberOfLBnodesCoarse]; - fM00dest = &DC[DIR_M00 * numberOfLBnodesCoarse]; - f0P0dest = &DC[DIR_0P0 * numberOfLBnodesCoarse]; - f0M0dest = &DC[DIR_0M0 * numberOfLBnodesCoarse]; - f00Pdest = &DC[DIR_00P * numberOfLBnodesCoarse]; - f00Mdest = &DC[DIR_00M * numberOfLBnodesCoarse]; - fPP0dest = &DC[DIR_PP0 * numberOfLBnodesCoarse]; - fMM0dest = &DC[DIR_MM0 * numberOfLBnodesCoarse]; - fPM0dest = &DC[DIR_PM0 * numberOfLBnodesCoarse]; - fMP0dest = &DC[DIR_MP0 * numberOfLBnodesCoarse]; - fP0Pdest = &DC[DIR_P0P * numberOfLBnodesCoarse]; - fM0Mdest = &DC[DIR_M0M * numberOfLBnodesCoarse]; - fP0Mdest = &DC[DIR_P0M * numberOfLBnodesCoarse]; - fM0Pdest = &DC[DIR_M0P * numberOfLBnodesCoarse]; - f0PPdest = &DC[DIR_0PP * numberOfLBnodesCoarse]; - f0MMdest = &DC[DIR_0MM * numberOfLBnodesCoarse]; - f0PMdest = &DC[DIR_0PM * numberOfLBnodesCoarse]; - f0MPdest = &DC[DIR_0MP * numberOfLBnodesCoarse]; - f000dest = &DC[DIR_000 * numberOfLBnodesCoarse]; - fMMMdest = &DC[DIR_MMM * numberOfLBnodesCoarse]; - fMMPdest = &DC[DIR_MMP * numberOfLBnodesCoarse]; - fMPPdest = &DC[DIR_MPP * numberOfLBnodesCoarse]; - fMPMdest = &DC[DIR_MPM * numberOfLBnodesCoarse]; - fPPMdest = &DC[DIR_PPM * numberOfLBnodesCoarse]; - fPPPdest = &DC[DIR_PPP * numberOfLBnodesCoarse]; - fPMPdest = &DC[DIR_PMP * numberOfLBnodesCoarse]; - fPMMdest = &DC[DIR_PMM * numberOfLBnodesCoarse]; + fP00dest = &DC[dP00 * numberOfLBnodesCoarse]; + fM00dest = &DC[dM00 * numberOfLBnodesCoarse]; + f0P0dest = &DC[d0P0 * numberOfLBnodesCoarse]; + f0M0dest = &DC[d0M0 * numberOfLBnodesCoarse]; + f00Pdest = &DC[d00P * numberOfLBnodesCoarse]; + f00Mdest = &DC[d00M * numberOfLBnodesCoarse]; + fPP0dest = &DC[dPP0 * numberOfLBnodesCoarse]; + fMM0dest = &DC[dMM0 * numberOfLBnodesCoarse]; + fPM0dest = &DC[dPM0 * numberOfLBnodesCoarse]; + fMP0dest = &DC[dMP0 * numberOfLBnodesCoarse]; + fP0Pdest = &DC[dP0P * numberOfLBnodesCoarse]; + fM0Mdest = &DC[dM0M * numberOfLBnodesCoarse]; + fP0Mdest = &DC[dP0M * numberOfLBnodesCoarse]; + fM0Pdest = &DC[dM0P * numberOfLBnodesCoarse]; + f0PPdest = &DC[d0PP * numberOfLBnodesCoarse]; + f0MMdest = &DC[d0MM * numberOfLBnodesCoarse]; + f0PMdest = &DC[d0PM * numberOfLBnodesCoarse]; + f0MPdest = &DC[d0MP * numberOfLBnodesCoarse]; + f000dest = &DC[d000 * numberOfLBnodesCoarse]; + fMMMdest = &DC[dMMM * numberOfLBnodesCoarse]; + fMMPdest = &DC[dMMP * numberOfLBnodesCoarse]; + fMPPdest = &DC[dMPP * numberOfLBnodesCoarse]; + fMPMdest = &DC[dMPM * numberOfLBnodesCoarse]; + fPPMdest = &DC[dPPM * numberOfLBnodesCoarse]; + fPPPdest = &DC[dPPP * numberOfLBnodesCoarse]; + fPMPdest = &DC[dPMP * numberOfLBnodesCoarse]; + fPMMdest = &DC[dPMM * numberOfLBnodesCoarse]; } else { - fP00dest = &DC[DIR_M00 * numberOfLBnodesCoarse]; - fM00dest = &DC[DIR_P00 * numberOfLBnodesCoarse]; - f0P0dest = &DC[DIR_0M0 * numberOfLBnodesCoarse]; - f0M0dest = &DC[DIR_0P0 * numberOfLBnodesCoarse]; - f00Pdest = &DC[DIR_00M * numberOfLBnodesCoarse]; - f00Mdest = &DC[DIR_00P * numberOfLBnodesCoarse]; - fPP0dest = &DC[DIR_MM0 * numberOfLBnodesCoarse]; - fMM0dest = &DC[DIR_PP0 * numberOfLBnodesCoarse]; - fPM0dest = &DC[DIR_MP0 * numberOfLBnodesCoarse]; - fMP0dest = &DC[DIR_PM0 * numberOfLBnodesCoarse]; - fP0Pdest = &DC[DIR_M0M * numberOfLBnodesCoarse]; - fM0Mdest = &DC[DIR_P0P * numberOfLBnodesCoarse]; - fP0Mdest = &DC[DIR_M0P * numberOfLBnodesCoarse]; - fM0Pdest = &DC[DIR_P0M * numberOfLBnodesCoarse]; - f0PPdest = &DC[DIR_0MM * numberOfLBnodesCoarse]; - f0MMdest = &DC[DIR_0PP * numberOfLBnodesCoarse]; - f0PMdest = &DC[DIR_0MP * numberOfLBnodesCoarse]; - f0MPdest = &DC[DIR_0PM * numberOfLBnodesCoarse]; - f000dest = &DC[DIR_000 * numberOfLBnodesCoarse]; - fMMMdest = &DC[DIR_PPP * numberOfLBnodesCoarse]; - fMMPdest = &DC[DIR_PPM * numberOfLBnodesCoarse]; - fMPPdest = &DC[DIR_PMM * numberOfLBnodesCoarse]; - fMPMdest = &DC[DIR_PMP * numberOfLBnodesCoarse]; - fPPMdest = &DC[DIR_MMP * numberOfLBnodesCoarse]; - fPPPdest = &DC[DIR_MMM * numberOfLBnodesCoarse]; - fPMPdest = &DC[DIR_MPM * numberOfLBnodesCoarse]; - fPMMdest = &DC[DIR_MPP * numberOfLBnodesCoarse]; + fP00dest = &DC[dM00 * numberOfLBnodesCoarse]; + fM00dest = &DC[dP00 * numberOfLBnodesCoarse]; + f0P0dest = &DC[d0M0 * numberOfLBnodesCoarse]; + f0M0dest = &DC[d0P0 * numberOfLBnodesCoarse]; + f00Pdest = &DC[d00M * numberOfLBnodesCoarse]; + f00Mdest = &DC[d00P * numberOfLBnodesCoarse]; + fPP0dest = &DC[dMM0 * numberOfLBnodesCoarse]; + fMM0dest = &DC[dPP0 * numberOfLBnodesCoarse]; + fPM0dest = &DC[dMP0 * numberOfLBnodesCoarse]; + fMP0dest = &DC[dPM0 * numberOfLBnodesCoarse]; + fP0Pdest = &DC[dM0M * numberOfLBnodesCoarse]; + fM0Mdest = &DC[dP0P * numberOfLBnodesCoarse]; + fP0Mdest = &DC[dM0P * numberOfLBnodesCoarse]; + fM0Pdest = &DC[dP0M * numberOfLBnodesCoarse]; + f0PPdest = &DC[d0MM * numberOfLBnodesCoarse]; + f0MMdest = &DC[d0PP * numberOfLBnodesCoarse]; + f0PMdest = &DC[d0MP * numberOfLBnodesCoarse]; + f0MPdest = &DC[d0PM * numberOfLBnodesCoarse]; + f000dest = &DC[d000 * numberOfLBnodesCoarse]; + fMMMdest = &DC[dPPP * numberOfLBnodesCoarse]; + fMMPdest = &DC[dPPM * numberOfLBnodesCoarse]; + fMPPdest = &DC[dPMM * numberOfLBnodesCoarse]; + fMPMdest = &DC[dPMP * numberOfLBnodesCoarse]; + fPPMdest = &DC[dMMP * numberOfLBnodesCoarse]; + fPPPdest = &DC[dMMM * numberOfLBnodesCoarse]; + fPMPdest = &DC[dMPM * numberOfLBnodesCoarse]; + fPMMdest = &DC[dMPP * numberOfLBnodesCoarse]; } Distributions6 G; if (isEvenTimestep == true) { - G.g[DIR_P00] = &G6[DIR_P00 * numberOfLBnodesCoarse]; - G.g[DIR_M00] = &G6[DIR_M00 * numberOfLBnodesCoarse]; - G.g[DIR_0P0] = &G6[DIR_0P0 * numberOfLBnodesCoarse]; - G.g[DIR_0M0] = &G6[DIR_0M0 * numberOfLBnodesCoarse]; - G.g[DIR_00P] = &G6[DIR_00P * numberOfLBnodesCoarse]; - G.g[DIR_00M] = &G6[DIR_00M * numberOfLBnodesCoarse]; + G.g[dP00] = &G6[dP00 * numberOfLBnodesCoarse]; + G.g[dM00] = &G6[dM00 * numberOfLBnodesCoarse]; + G.g[d0P0] = &G6[d0P0 * numberOfLBnodesCoarse]; + G.g[d0M0] = &G6[d0M0 * numberOfLBnodesCoarse]; + G.g[d00P] = &G6[d00P * numberOfLBnodesCoarse]; + G.g[d00M] = &G6[d00M * numberOfLBnodesCoarse]; } else { - G.g[DIR_M00] = &G6[DIR_P00 * numberOfLBnodesCoarse]; - G.g[DIR_P00] = &G6[DIR_M00 * numberOfLBnodesCoarse]; - G.g[DIR_0M0] = &G6[DIR_0P0 * numberOfLBnodesCoarse]; - G.g[DIR_0P0] = &G6[DIR_0M0 * numberOfLBnodesCoarse]; - G.g[DIR_00M] = &G6[DIR_00P * numberOfLBnodesCoarse]; - G.g[DIR_00P] = &G6[DIR_00M * numberOfLBnodesCoarse]; + G.g[dM00] = &G6[dP00 * numberOfLBnodesCoarse]; + G.g[dP00] = &G6[dM00 * numberOfLBnodesCoarse]; + G.g[d0M0] = &G6[d0P0 * numberOfLBnodesCoarse]; + G.g[d0P0] = &G6[d0M0 * numberOfLBnodesCoarse]; + G.g[d00M] = &G6[d00P * numberOfLBnodesCoarse]; + G.g[d00P] = &G6[d00M * numberOfLBnodesCoarse]; } //////////////////////////////////////////////////////////////////////////////// @@ -2409,12 +2409,12 @@ __global__ void scaleFC_comp_D3Q27F3( real* DC, //////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////// - (G.g[DIR_P00])[k000] = mgcbb; - (G.g[DIR_M00])[kM00] = mgabb; - (G.g[DIR_0P0])[k000] = mgbcb; - (G.g[DIR_0M0])[k0M0] = mgbab; - (G.g[DIR_00P])[k000] = mgbbc; - (G.g[DIR_00M])[k00M] = mgbba; + (G.g[dP00])[k000] = mgcbb; + (G.g[dM00])[kM00] = mgabb; + (G.g[d0P0])[k000] = mgbcb; + (G.g[d0M0])[k0M0] = mgbab; + (G.g[d00P])[k000] = mgbbc; + (G.g[d00M])[k00M] = mgbba; //////////////////////////////////////////////////////////////////////////////////// fP00dest[k000] = mfcbb; fM00dest[kM00] = mfabb; diff --git a/src/gpu/VirtualFluids_GPU/GPU/GridScaling/interpolateRotatingToStatic.cu b/src/gpu/core/GPU/GridScaling/interpolateRotatingToStatic.cu similarity index 100% rename from src/gpu/VirtualFluids_GPU/GPU/GridScaling/interpolateRotatingToStatic.cu rename to src/gpu/core/GPU/GridScaling/interpolateRotatingToStatic.cu diff --git a/src/gpu/VirtualFluids_GPU/GPU/GridScaling/interpolateRotatingToStaticInlines.h b/src/gpu/core/GPU/GridScaling/interpolateRotatingToStaticInlines.h similarity index 100% rename from src/gpu/VirtualFluids_GPU/GPU/GridScaling/interpolateRotatingToStaticInlines.h rename to src/gpu/core/GPU/GridScaling/interpolateRotatingToStaticInlines.h diff --git a/src/gpu/VirtualFluids_GPU/GPU/GridScaling/interpolateRotatingToStaticInlinesTest.cpp b/src/gpu/core/GPU/GridScaling/interpolateRotatingToStaticInlinesTest.cpp similarity index 100% rename from src/gpu/VirtualFluids_GPU/GPU/GridScaling/interpolateRotatingToStaticInlinesTest.cpp rename to src/gpu/core/GPU/GridScaling/interpolateRotatingToStaticInlinesTest.cpp diff --git a/src/gpu/VirtualFluids_GPU/GPU/GridScaling/interpolateStaticToRotating.cu b/src/gpu/core/GPU/GridScaling/interpolateStaticToRotating.cu similarity index 100% rename from src/gpu/VirtualFluids_GPU/GPU/GridScaling/interpolateStaticToRotating.cu rename to src/gpu/core/GPU/GridScaling/interpolateStaticToRotating.cu diff --git a/src/gpu/VirtualFluids_GPU/GPU/GridScaling/interpolateStaticToRotatingInlines.h b/src/gpu/core/GPU/GridScaling/interpolateStaticToRotatingInlines.h similarity index 100% rename from src/gpu/VirtualFluids_GPU/GPU/GridScaling/interpolateStaticToRotatingInlines.h rename to src/gpu/core/GPU/GridScaling/interpolateStaticToRotatingInlines.h diff --git a/src/gpu/VirtualFluids_GPU/GPU/GridScaling/interpolateStaticToRotatingInlinesTest.cpp b/src/gpu/core/GPU/GridScaling/interpolateStaticToRotatingInlinesTest.cpp similarity index 100% rename from src/gpu/VirtualFluids_GPU/GPU/GridScaling/interpolateStaticToRotatingInlinesTest.cpp rename to src/gpu/core/GPU/GridScaling/interpolateStaticToRotatingInlinesTest.cpp diff --git a/src/gpu/VirtualFluids_GPU/GPU/GridScaling/scaleCF_compressible.cu b/src/gpu/core/GPU/GridScaling/scaleCF_compressible.cu similarity index 96% rename from src/gpu/VirtualFluids_GPU/GPU/GridScaling/scaleCF_compressible.cu rename to src/gpu/core/GPU/GridScaling/scaleCF_compressible.cu index 05ec8417976bd1b71d0a9ab08b1a44ab06ffd7b0..c14def2e9d0749ade216482556cc2a47b04d4b5b 100644 --- a/src/gpu/VirtualFluids_GPU/GPU/GridScaling/scaleCF_compressible.cu +++ b/src/gpu/core/GPU/GridScaling/scaleCF_compressible.cu @@ -31,7 +31,7 @@ //! \author Martin Schoenherr, Anna Wellmann //======================================================================================= -#include "DataTypes.h" +#include <basics/DataTypes.h> #include "LBM/GPUHelperFunctions/KernelUtilities.h" #include "LBM/GPUHelperFunctions/ChimeraTransformation.h" #include "LBM/GPUHelperFunctions/ScalingUtilities.h" @@ -96,7 +96,7 @@ template <bool hasTurbulentViscosity> __device__ void interpolate( real f[27]; vf::lbm::interpolateCF(f, omegaF, epsilon_new, coefficients, x, y, z); - write(distFine, indices, f); + setPreCollisionDistribution(distFine, indices, f); //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -125,7 +125,7 @@ template <bool hasTurbulentViscosity> __device__ void interpolate( vf::lbm::interpolateCF(f, omegaF, epsilon_new, coefficients, x, y, z); - write(distFine, indices, f); + setPreCollisionDistribution(distFine, indices, f); //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // @@ -153,7 +153,7 @@ template <bool hasTurbulentViscosity> __device__ void interpolate( vf::lbm::interpolateCF(f, omegaF, epsilon_new, coefficients, x, y, z); - write(distFine, indices, f); + setPreCollisionDistribution(distFine, indices, f); //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // @@ -181,7 +181,7 @@ template <bool hasTurbulentViscosity> __device__ void interpolate( vf::lbm::interpolateCF(f, omegaF, epsilon_new, coefficients, x, y, z); - write(distFine, indices, f); + setPreCollisionDistribution(distFine, indices, f); //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // // Position BNW = MPM: -0.25, 0.25, -0.25 @@ -220,7 +220,7 @@ template <bool hasTurbulentViscosity> __device__ void interpolate( vf::lbm::interpolateCF(f, omegaF, epsilon_new, coefficients, x, y, z); - write(distFine, indices, f); + setPreCollisionDistribution(distFine, indices, f); //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // // Position TNW = MPP: -0.25, 0.25, 0.25 @@ -244,7 +244,7 @@ template <bool hasTurbulentViscosity> __device__ void interpolate( vf::lbm::interpolateCF(f, omegaF, epsilon_new, coefficients, x, y, z); - write(distFine, indices, f); + setPreCollisionDistribution(distFine, indices, f); //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // // Position TNE = PPP: 0.25, 0.25, 0.25 @@ -268,7 +268,7 @@ template <bool hasTurbulentViscosity> __device__ void interpolate( vf::lbm::interpolateCF(f, omegaF, epsilon_new, coefficients, x, y, z); - write(distFine, indices, f); + setPreCollisionDistribution(distFine, indices, f); //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // //Position BNE = PPM: 0.25, 0.25, -0.25 @@ -292,7 +292,7 @@ template <bool hasTurbulentViscosity> __device__ void interpolate( vf::lbm::interpolateCF(f, omegaF, epsilon_new, coefficients, x, y, z); - write(distFine, indices, f); + setPreCollisionDistribution(distFine, indices, f); } ////////////////////////////////////////////////////////////////////////// @@ -370,7 +370,7 @@ template<bool hasTurbulentViscosity> __global__ void scaleCF_compressible( real f_coarse[27]; - read(f_coarse, distCoarse, indices); + getPreCollisionDistribution(f_coarse, distCoarse, indices); momentsSet.calculateMMM(f_coarse, omegaC); ////////////////////////////////////////////////////////////////////////// @@ -388,7 +388,7 @@ template<bool hasTurbulentViscosity> __global__ void scaleCF_compressible( omegaC = hasTurbulentViscosity ? vf::lbm::calculateOmegaWithturbulentViscosity(omegaCoarse, turbulentViscosityCoarse[indices.k_000]) : omegaCoarse; - read(f_coarse, distCoarse, indices); + getPreCollisionDistribution(f_coarse, distCoarse, indices); momentsSet.calculateMMP(f_coarse, omegaC); ////////////////////////////////////////////////////////////////////////// @@ -406,7 +406,7 @@ template<bool hasTurbulentViscosity> __global__ void scaleCF_compressible( omegaC = hasTurbulentViscosity ? vf::lbm::calculateOmegaWithturbulentViscosity(omegaCoarse, turbulentViscosityCoarse[indices.k_000]) : omegaCoarse; - read(f_coarse, distCoarse, indices); + getPreCollisionDistribution(f_coarse, distCoarse, indices); momentsSet.calculatePMP(f_coarse, omegaC); ////////////////////////////////////////////////////////////////////////// @@ -424,7 +424,7 @@ template<bool hasTurbulentViscosity> __global__ void scaleCF_compressible( omegaC = hasTurbulentViscosity ? vf::lbm::calculateOmegaWithturbulentViscosity(omegaCoarse, turbulentViscosityCoarse[indices.k_000]) : omegaCoarse; - read(f_coarse, distCoarse, indices); + getPreCollisionDistribution(f_coarse, distCoarse, indices); momentsSet.calculatePMM(f_coarse, omegaC); ////////////////////////////////////////////////////////////////////////// @@ -452,7 +452,7 @@ template<bool hasTurbulentViscosity> __global__ void scaleCF_compressible( omegaC = hasTurbulentViscosity ? vf::lbm::calculateOmegaWithturbulentViscosity(omegaCoarse, turbulentViscosityCoarse[indices.k_000]) : omegaCoarse; - read(f_coarse, distCoarse, indices); + getPreCollisionDistribution(f_coarse, distCoarse, indices); momentsSet.calculateMPM(f_coarse, omegaC); ////////////////////////////////////////////////////////////////////////// @@ -470,7 +470,7 @@ template<bool hasTurbulentViscosity> __global__ void scaleCF_compressible( omegaC = hasTurbulentViscosity ? vf::lbm::calculateOmegaWithturbulentViscosity(omegaCoarse, turbulentViscosityCoarse[indices.k_000]) : omegaCoarse; - read(f_coarse, distCoarse, indices); + getPreCollisionDistribution(f_coarse, distCoarse, indices); momentsSet.calculateMPP(f_coarse, omegaC); ////////////////////////////////////////////////////////////////////////// // source node TNE = PPP @@ -487,7 +487,7 @@ template<bool hasTurbulentViscosity> __global__ void scaleCF_compressible( omegaC = hasTurbulentViscosity ? vf::lbm::calculateOmegaWithturbulentViscosity(omegaCoarse, turbulentViscosityCoarse[indices.k_000]) : omegaCoarse; - read(f_coarse, distCoarse, indices); + getPreCollisionDistribution(f_coarse, distCoarse, indices); momentsSet.calculatePPP(f_coarse, omegaC); ////////////////////////////////////////////////////////////////////////// // source node BNE = PPM @@ -504,7 +504,7 @@ template<bool hasTurbulentViscosity> __global__ void scaleCF_compressible( omegaC = hasTurbulentViscosity ? vf::lbm::calculateOmegaWithturbulentViscosity(omegaCoarse, turbulentViscosityCoarse[indices.k_000]) : omegaCoarse; - read(f_coarse, distCoarse, indices); + getPreCollisionDistribution(f_coarse, distCoarse, indices); momentsSet.calculatePPM(f_coarse, omegaC); // should be extractel until this line // - ################################################################### diff --git a/src/gpu/VirtualFluids_GPU/GPU/GridScaling/scaleFC_compressible.cu b/src/gpu/core/GPU/GridScaling/scaleFC_compressible.cu similarity index 98% rename from src/gpu/VirtualFluids_GPU/GPU/GridScaling/scaleFC_compressible.cu rename to src/gpu/core/GPU/GridScaling/scaleFC_compressible.cu index 9decb44aab7d1f0944d98cd83fcfb081eabdabee..a95f3ed391a4bfe9a0355d9081883c1c674270de 100644 --- a/src/gpu/VirtualFluids_GPU/GPU/GridScaling/scaleFC_compressible.cu +++ b/src/gpu/core/GPU/GridScaling/scaleFC_compressible.cu @@ -64,7 +64,7 @@ template <bool hasTurbulentViscosity> __device__ void interpolate( real fCoarse[27]; vf::lbm::interpolateFC(fCoarse, epsilonNew, omegaCoarseNew, coefficients); - vf::gpu::write(distCoarse, indices, fCoarse); + vf::gpu::setPreCollisionDistribution(distCoarse, indices, fCoarse); } diff --git a/src/gpu/VirtualFluids_GPU/GPU/Init27.cu b/src/gpu/core/GPU/Init27.cu similarity index 50% rename from src/gpu/VirtualFluids_GPU/GPU/Init27.cu rename to src/gpu/core/GPU/Init27.cu index ff844cfecd9e4cad02e41879ddd68246d0fe9ab2..a2197f6024114e885fca458ebcd082b43ab53cdb 100644 --- a/src/gpu/VirtualFluids_GPU/GPU/Init27.cu +++ b/src/gpu/core/GPU/Init27.cu @@ -24,33 +24,33 @@ __global__ void LBInit27( int myid, int maxlev) { Distributions27 D; - D.f[DIR_P00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_M00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_PMP * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_MPM * numberOfLBnodes]; + D.f[dP00] = &DD[dP00 * numberOfLBnodes]; + D.f[dM00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00P] = &DD[d00P * numberOfLBnodes]; + D.f[d00M] = &DD[d00M * numberOfLBnodes]; + D.f[dPP0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dMM0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dP0P] = &DD[dP0P * numberOfLBnodes]; + D.f[dM0M] = &DD[dM0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dP0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dM0P * numberOfLBnodes]; + D.f[d0PP] = &DD[d0PP * numberOfLBnodes]; + D.f[d0MM] = &DD[d0MM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0PM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dPPP * numberOfLBnodes]; + D.f[dMMP] = &DD[dMMP * numberOfLBnodes]; + D.f[dPMP] = &DD[dPMP * numberOfLBnodes]; + D.f[dMPP] = &DD[dMPP * numberOfLBnodes]; + D.f[dPPM] = &DD[dPPM * numberOfLBnodes]; + D.f[dMMM] = &DD[dMMM * numberOfLBnodes]; + D.f[dPMM] = &DD[dPMM * numberOfLBnodes]; + D.f[dMPM] = &DD[dMPM * numberOfLBnodes]; //////////////////////////////////////////////////////////////////////////////// unsigned int k; // Zugriff auf arrays im device // @@ -141,33 +141,33 @@ __global__ void LBInit27( int myid, real cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3); - (D.f[DIR_000])[kzero] = c8o27* (drho-cu_sq); - (D.f[DIR_P00])[ke ] = c2o27* (drho+c3o1*( vx1 )+c9o2*( vx1 )*( vx1 )-cu_sq); - (D.f[DIR_M00])[kw ] = c2o27* (drho+c3o1*(-vx1 )+c9o2*(-vx1 )*(-vx1 )-cu_sq); - (D.f[DIR_0P0])[kn ] = c2o27* (drho+c3o1*( vx2 )+c9o2*( vx2 )*( vx2 )-cu_sq); - (D.f[DIR_0M0])[ks ] = c2o27* (drho+c3o1*( -vx2 )+c9o2*( -vx2 )*( -vx2 )-cu_sq); - (D.f[DIR_00P])[kt ] = c2o27* (drho+c3o1*( vx3)+c9o2*( vx3)*( vx3)-cu_sq); - (D.f[DIR_00M])[kb ] = c2o27* (drho+c3o1*( -vx3)+c9o2*( -vx3)*( -vx3)-cu_sq); - (D.f[DIR_PP0])[kne ] = c1o54* (drho+c3o1*( vx1+vx2 )+c9o2*( vx1+vx2 )*( vx1+vx2 )-cu_sq); - (D.f[DIR_MM0])[ksw ] = c1o54* (drho+c3o1*(-vx1-vx2 )+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq); - (D.f[DIR_PM0])[kse ] = c1o54* (drho+c3o1*( vx1-vx2 )+c9o2*( vx1-vx2 )*( vx1-vx2 )-cu_sq); - (D.f[DIR_MP0])[knw ] = c1o54* (drho+c3o1*(-vx1+vx2 )+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq); - (D.f[DIR_P0P])[kte ] = c1o54* (drho+c3o1*( vx1 +vx3)+c9o2*( vx1 +vx3)*( vx1 +vx3)-cu_sq); - (D.f[DIR_M0M])[kbw ] = c1o54* (drho+c3o1*(-vx1 -vx3)+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq); - (D.f[DIR_P0M])[kbe ] = c1o54* (drho+c3o1*( vx1 -vx3)+c9o2*( vx1 -vx3)*( vx1 -vx3)-cu_sq); - (D.f[DIR_M0P])[ktw ] = c1o54* (drho+c3o1*(-vx1 +vx3)+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq); - (D.f[DIR_0PP])[ktn ] = c1o54* (drho+c3o1*( vx2+vx3)+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq); - (D.f[DIR_0MM])[kbs ] = c1o54* (drho+c3o1*( -vx2-vx3)+c9o2*( -vx2-vx3)*( -vx2-vx3)-cu_sq); - (D.f[DIR_0PM])[kbn ] = c1o54* (drho+c3o1*( vx2-vx3)+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq); - (D.f[DIR_0MP])[kts ] = c1o54* (drho+c3o1*( -vx2+vx3)+c9o2*( -vx2+vx3)*( -vx2+vx3)-cu_sq); - (D.f[DIR_PPP])[ktne ] = c1o216*(drho+c3o1*( vx1+vx2+vx3)+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq); - (D.f[DIR_MMM])[kbsw ] = c1o216*(drho+c3o1*(-vx1-vx2-vx3)+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq); - (D.f[DIR_PPM])[kbne ] = c1o216*(drho+c3o1*( vx1+vx2-vx3)+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq); - (D.f[DIR_MMP])[ktsw ] = c1o216*(drho+c3o1*(-vx1-vx2+vx3)+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq); - (D.f[DIR_PMP])[ktse ] = c1o216*(drho+c3o1*( vx1-vx2+vx3)+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq); - (D.f[DIR_MPM])[kbnw ] = c1o216*(drho+c3o1*(-vx1+vx2-vx3)+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq); - (D.f[DIR_PMM])[kbse ] = c1o216*(drho+c3o1*( vx1-vx2-vx3)+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq); - (D.f[DIR_MPP])[ktnw ] = c1o216*(drho+c3o1*(-vx1+vx2+vx3)+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq); + (D.f[d000])[kzero] = c8o27* (drho-cu_sq); + (D.f[dP00])[ke ] = c2o27* (drho+c3o1*( vx1 )+c9o2*( vx1 )*( vx1 )-cu_sq); + (D.f[dM00])[kw ] = c2o27* (drho+c3o1*(-vx1 )+c9o2*(-vx1 )*(-vx1 )-cu_sq); + (D.f[d0P0])[kn ] = c2o27* (drho+c3o1*( vx2 )+c9o2*( vx2 )*( vx2 )-cu_sq); + (D.f[d0M0])[ks ] = c2o27* (drho+c3o1*( -vx2 )+c9o2*( -vx2 )*( -vx2 )-cu_sq); + (D.f[d00P])[kt ] = c2o27* (drho+c3o1*( vx3)+c9o2*( vx3)*( vx3)-cu_sq); + (D.f[d00M])[kb ] = c2o27* (drho+c3o1*( -vx3)+c9o2*( -vx3)*( -vx3)-cu_sq); + (D.f[dPP0])[kne ] = c1o54* (drho+c3o1*( vx1+vx2 )+c9o2*( vx1+vx2 )*( vx1+vx2 )-cu_sq); + (D.f[dMM0])[ksw ] = c1o54* (drho+c3o1*(-vx1-vx2 )+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq); + (D.f[dPM0])[kse ] = c1o54* (drho+c3o1*( vx1-vx2 )+c9o2*( vx1-vx2 )*( vx1-vx2 )-cu_sq); + (D.f[dMP0])[knw ] = c1o54* (drho+c3o1*(-vx1+vx2 )+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq); + (D.f[dP0P])[kte ] = c1o54* (drho+c3o1*( vx1 +vx3)+c9o2*( vx1 +vx3)*( vx1 +vx3)-cu_sq); + (D.f[dM0M])[kbw ] = c1o54* (drho+c3o1*(-vx1 -vx3)+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq); + (D.f[dP0M])[kbe ] = c1o54* (drho+c3o1*( vx1 -vx3)+c9o2*( vx1 -vx3)*( vx1 -vx3)-cu_sq); + (D.f[dM0P])[ktw ] = c1o54* (drho+c3o1*(-vx1 +vx3)+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq); + (D.f[d0PP])[ktn ] = c1o54* (drho+c3o1*( vx2+vx3)+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq); + (D.f[d0MM])[kbs ] = c1o54* (drho+c3o1*( -vx2-vx3)+c9o2*( -vx2-vx3)*( -vx2-vx3)-cu_sq); + (D.f[d0PM])[kbn ] = c1o54* (drho+c3o1*( vx2-vx3)+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq); + (D.f[d0MP])[kts ] = c1o54* (drho+c3o1*( -vx2+vx3)+c9o2*( -vx2+vx3)*( -vx2+vx3)-cu_sq); + (D.f[dPPP])[ktne ] = c1o216*(drho+c3o1*( vx1+vx2+vx3)+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq); + (D.f[dMMM])[kbsw ] = c1o216*(drho+c3o1*(-vx1-vx2-vx3)+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq); + (D.f[dPPM])[kbne ] = c1o216*(drho+c3o1*( vx1+vx2-vx3)+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq); + (D.f[dMMP])[ktsw ] = c1o216*(drho+c3o1*(-vx1-vx2+vx3)+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq); + (D.f[dPMP])[ktse ] = c1o216*(drho+c3o1*( vx1-vx2+vx3)+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq); + (D.f[dMPM])[kbnw ] = c1o216*(drho+c3o1*(-vx1+vx2-vx3)+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq); + (D.f[dPMM])[kbse ] = c1o216*(drho+c3o1*( vx1-vx2-vx3)+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq); + (D.f[dMPP])[ktnw ] = c1o216*(drho+c3o1*(-vx1+vx2+vx3)+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq); } //////////////////////////////////////////////////////////////////////////////// @@ -218,63 +218,63 @@ __global__ void LBInitNonEqPartSP27( unsigned int* neighborX, Distributions27 D; if (EvenOrOdd==true) { - D.f[DIR_P00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_M00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_PMP * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_MPM * numberOfLBnodes]; + D.f[dP00] = &DD[dP00 * numberOfLBnodes]; + D.f[dM00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00P] = &DD[d00P * numberOfLBnodes]; + D.f[d00M] = &DD[d00M * numberOfLBnodes]; + D.f[dPP0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dMM0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dP0P] = &DD[dP0P * numberOfLBnodes]; + D.f[dM0M] = &DD[dM0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dP0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dM0P * numberOfLBnodes]; + D.f[d0PP] = &DD[d0PP * numberOfLBnodes]; + D.f[d0MM] = &DD[d0MM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0PM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dPPP * numberOfLBnodes]; + D.f[dMMP] = &DD[dMMP * numberOfLBnodes]; + D.f[dPMP] = &DD[dPMP * numberOfLBnodes]; + D.f[dMPP] = &DD[dMPP * numberOfLBnodes]; + D.f[dPPM] = &DD[dPPM * numberOfLBnodes]; + D.f[dMMM] = &DD[dMMM * numberOfLBnodes]; + D.f[dPMM] = &DD[dPMM * numberOfLBnodes]; + D.f[dMPM] = &DD[dMPM * numberOfLBnodes]; } else { - D.f[DIR_M00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_P00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_PMP * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_MPM * numberOfLBnodes]; + D.f[dM00] = &DD[dP00 * numberOfLBnodes]; + D.f[dP00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00M] = &DD[d00P * numberOfLBnodes]; + D.f[d00P] = &DD[d00M * numberOfLBnodes]; + D.f[dMM0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dPP0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dM0M] = &DD[dP0P * numberOfLBnodes]; + D.f[dP0P] = &DD[dM0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dP0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dM0P * numberOfLBnodes]; + D.f[d0MM] = &DD[d0PP * numberOfLBnodes]; + D.f[d0PP] = &DD[d0MM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0PM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dMMM] = &DD[dPPP * numberOfLBnodes]; + D.f[dPPM] = &DD[dMMP * numberOfLBnodes]; + D.f[dMPM] = &DD[dPMP * numberOfLBnodes]; + D.f[dPMM] = &DD[dMPP * numberOfLBnodes]; + D.f[dMMP] = &DD[dPPM * numberOfLBnodes]; + D.f[dPPP] = &DD[dMMM * numberOfLBnodes]; + D.f[dMPP] = &DD[dPMM * numberOfLBnodes]; + D.f[dPMP] = &DD[dMPM * numberOfLBnodes]; } ////////////////////////////////////////////////////////////////////////// real drho = rho[k];//0.0f;// @@ -396,63 +396,63 @@ __global__ void LBInitNonEqPartSP27( unsigned int* neighborX, ////////////////////////////////////////////////////////////////////////// real cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3); - (D.f[DIR_000])[kzero] = c8o27* (drho-cu_sq); - (D.f[DIR_P00])[ke ] = c2o27* (drho+c3o1*( vx1 )+c9o2*( vx1 )*( vx1 )-cu_sq); - (D.f[DIR_M00])[kw ] = c2o27* (drho+c3o1*(-vx1 )+c9o2*(-vx1 )*(-vx1 )-cu_sq); - (D.f[DIR_0P0])[kn ] = c2o27* (drho+c3o1*( vx2 )+c9o2*( vx2 )*( vx2 )-cu_sq); - (D.f[DIR_0M0])[ks ] = c2o27* (drho+c3o1*( -vx2 )+c9o2*( -vx2 )*( -vx2 )-cu_sq); - (D.f[DIR_00P])[kt ] = c2o27* (drho+c3o1*( vx3)+c9o2*( vx3)*( vx3)-cu_sq); - (D.f[DIR_00M])[kb ] = c2o27* (drho+c3o1*( -vx3)+c9o2*( -vx3)*( -vx3)-cu_sq); - (D.f[DIR_PP0])[kne ] = c1o54* (drho+c3o1*( vx1+vx2 )+c9o2*( vx1+vx2 )*( vx1+vx2 )-cu_sq); - (D.f[DIR_MM0])[ksw ] = c1o54* (drho+c3o1*(-vx1-vx2 )+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq); - (D.f[DIR_PM0])[kse ] = c1o54* (drho+c3o1*( vx1-vx2 )+c9o2*( vx1-vx2 )*( vx1-vx2 )-cu_sq); - (D.f[DIR_MP0])[knw ] = c1o54* (drho+c3o1*(-vx1+vx2 )+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq); - (D.f[DIR_P0P])[kte ] = c1o54* (drho+c3o1*( vx1 +vx3)+c9o2*( vx1 +vx3)*( vx1 +vx3)-cu_sq); - (D.f[DIR_M0M])[kbw ] = c1o54* (drho+c3o1*(-vx1 -vx3)+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq); - (D.f[DIR_P0M])[kbe ] = c1o54* (drho+c3o1*( vx1 -vx3)+c9o2*( vx1 -vx3)*( vx1 -vx3)-cu_sq); - (D.f[DIR_M0P])[ktw ] = c1o54* (drho+c3o1*(-vx1 +vx3)+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq); - (D.f[DIR_0PP])[ktn ] = c1o54* (drho+c3o1*( vx2+vx3)+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq); - (D.f[DIR_0MM])[kbs ] = c1o54* (drho+c3o1*( -vx2-vx3)+c9o2*( -vx2-vx3)*( -vx2-vx3)-cu_sq); - (D.f[DIR_0PM])[kbn ] = c1o54* (drho+c3o1*( vx2-vx3)+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq); - (D.f[DIR_0MP])[kts ] = c1o54* (drho+c3o1*( -vx2+vx3)+c9o2*( -vx2+vx3)*( -vx2+vx3)-cu_sq); - (D.f[DIR_PPP])[ktne ] = c1o216*(drho+c3o1*( vx1+vx2+vx3)+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq); - (D.f[DIR_MMM])[kbsw ] = c1o216*(drho+c3o1*(-vx1-vx2-vx3)+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq); - (D.f[DIR_PPM])[kbne ] = c1o216*(drho+c3o1*( vx1+vx2-vx3)+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq); - (D.f[DIR_MMP])[ktsw ] = c1o216*(drho+c3o1*(-vx1-vx2+vx3)+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq); - (D.f[DIR_PMP])[ktse ] = c1o216*(drho+c3o1*( vx1-vx2+vx3)+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq); - (D.f[DIR_MPM])[kbnw ] = c1o216*(drho+c3o1*(-vx1+vx2-vx3)+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq); - (D.f[DIR_PMM])[kbse ] = c1o216*(drho+c3o1*( vx1-vx2-vx3)+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq); - (D.f[DIR_MPP])[ktnw ] = c1o216*(drho+c3o1*(-vx1+vx2+vx3)+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq); + (D.f[d000])[kzero] = c8o27* (drho-cu_sq); + (D.f[dP00])[ke ] = c2o27* (drho+c3o1*( vx1 )+c9o2*( vx1 )*( vx1 )-cu_sq); + (D.f[dM00])[kw ] = c2o27* (drho+c3o1*(-vx1 )+c9o2*(-vx1 )*(-vx1 )-cu_sq); + (D.f[d0P0])[kn ] = c2o27* (drho+c3o1*( vx2 )+c9o2*( vx2 )*( vx2 )-cu_sq); + (D.f[d0M0])[ks ] = c2o27* (drho+c3o1*( -vx2 )+c9o2*( -vx2 )*( -vx2 )-cu_sq); + (D.f[d00P])[kt ] = c2o27* (drho+c3o1*( vx3)+c9o2*( vx3)*( vx3)-cu_sq); + (D.f[d00M])[kb ] = c2o27* (drho+c3o1*( -vx3)+c9o2*( -vx3)*( -vx3)-cu_sq); + (D.f[dPP0])[kne ] = c1o54* (drho+c3o1*( vx1+vx2 )+c9o2*( vx1+vx2 )*( vx1+vx2 )-cu_sq); + (D.f[dMM0])[ksw ] = c1o54* (drho+c3o1*(-vx1-vx2 )+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq); + (D.f[dPM0])[kse ] = c1o54* (drho+c3o1*( vx1-vx2 )+c9o2*( vx1-vx2 )*( vx1-vx2 )-cu_sq); + (D.f[dMP0])[knw ] = c1o54* (drho+c3o1*(-vx1+vx2 )+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq); + (D.f[dP0P])[kte ] = c1o54* (drho+c3o1*( vx1 +vx3)+c9o2*( vx1 +vx3)*( vx1 +vx3)-cu_sq); + (D.f[dM0M])[kbw ] = c1o54* (drho+c3o1*(-vx1 -vx3)+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq); + (D.f[dP0M])[kbe ] = c1o54* (drho+c3o1*( vx1 -vx3)+c9o2*( vx1 -vx3)*( vx1 -vx3)-cu_sq); + (D.f[dM0P])[ktw ] = c1o54* (drho+c3o1*(-vx1 +vx3)+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq); + (D.f[d0PP])[ktn ] = c1o54* (drho+c3o1*( vx2+vx3)+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq); + (D.f[d0MM])[kbs ] = c1o54* (drho+c3o1*( -vx2-vx3)+c9o2*( -vx2-vx3)*( -vx2-vx3)-cu_sq); + (D.f[d0PM])[kbn ] = c1o54* (drho+c3o1*( vx2-vx3)+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq); + (D.f[d0MP])[kts ] = c1o54* (drho+c3o1*( -vx2+vx3)+c9o2*( -vx2+vx3)*( -vx2+vx3)-cu_sq); + (D.f[dPPP])[ktne ] = c1o216*(drho+c3o1*( vx1+vx2+vx3)+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq); + (D.f[dMMM])[kbsw ] = c1o216*(drho+c3o1*(-vx1-vx2-vx3)+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq); + (D.f[dPPM])[kbne ] = c1o216*(drho+c3o1*( vx1+vx2-vx3)+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq); + (D.f[dMMP])[ktsw ] = c1o216*(drho+c3o1*(-vx1-vx2+vx3)+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq); + (D.f[dPMP])[ktse ] = c1o216*(drho+c3o1*( vx1-vx2+vx3)+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq); + (D.f[dMPM])[kbnw ] = c1o216*(drho+c3o1*(-vx1+vx2-vx3)+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq); + (D.f[dPMM])[kbse ] = c1o216*(drho+c3o1*( vx1-vx2-vx3)+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq); + (D.f[dMPP])[ktnw ] = c1o216*(drho+c3o1*(-vx1+vx2+vx3)+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq); ////////////////////////////////////////////////////////////////////////// - (D.f[DIR_000])[kzero] += f_ZERO; - (D.f[DIR_P00])[ke ] += f_E ; - (D.f[DIR_M00])[kw ] += f_E ; - (D.f[DIR_0P0])[kn ] += f_N ; - (D.f[DIR_0M0])[ks ] += f_N ; - (D.f[DIR_00P])[kt ] += f_T ; - (D.f[DIR_00M])[kb ] += f_T ; - (D.f[DIR_PP0])[kne ] += f_NE ; - (D.f[DIR_MM0])[ksw ] += f_NE ; - (D.f[DIR_PM0])[kse ] += f_SE ; - (D.f[DIR_MP0])[knw ] += f_SE ; - (D.f[DIR_P0P])[kte ] += f_TE ; - (D.f[DIR_M0M])[kbw ] += f_TE ; - (D.f[DIR_P0M])[kbe ] += f_BE ; - (D.f[DIR_M0P])[ktw ] += f_BE ; - (D.f[DIR_0PP])[ktn ] += f_TN ; - (D.f[DIR_0MM])[kbs ] += f_TN ; - (D.f[DIR_0PM])[kbn ] += f_BN ; - (D.f[DIR_0MP])[kts ] += f_BN ; - (D.f[DIR_PPP])[ktne ] += f_TNE ; - (D.f[DIR_MMM])[kbsw ] += f_TNE ; - (D.f[DIR_PPM])[kbne ] += f_TSW ; - (D.f[DIR_MMP])[ktsw ] += f_TSW ; - (D.f[DIR_PMP])[ktse ] += f_TSE ; - (D.f[DIR_MPM])[kbnw ] += f_TSE ; - (D.f[DIR_PMM])[kbse ] += f_TNW ; - (D.f[DIR_MPP])[ktnw ] += f_TNW ; + (D.f[d000])[kzero] += f_ZERO; + (D.f[dP00])[ke ] += f_E ; + (D.f[dM00])[kw ] += f_E ; + (D.f[d0P0])[kn ] += f_N ; + (D.f[d0M0])[ks ] += f_N ; + (D.f[d00P])[kt ] += f_T ; + (D.f[d00M])[kb ] += f_T ; + (D.f[dPP0])[kne ] += f_NE ; + (D.f[dMM0])[ksw ] += f_NE ; + (D.f[dPM0])[kse ] += f_SE ; + (D.f[dMP0])[knw ] += f_SE ; + (D.f[dP0P])[kte ] += f_TE ; + (D.f[dM0M])[kbw ] += f_TE ; + (D.f[dP0M])[kbe ] += f_BE ; + (D.f[dM0P])[ktw ] += f_BE ; + (D.f[d0PP])[ktn ] += f_TN ; + (D.f[d0MM])[kbs ] += f_TN ; + (D.f[d0PM])[kbn ] += f_BN ; + (D.f[d0MP])[kts ] += f_BN ; + (D.f[dPPP])[ktne ] += f_TNE ; + (D.f[dMMM])[kbsw ] += f_TNE ; + (D.f[dPPM])[kbne ] += f_TSW ; + (D.f[dMMP])[ktsw ] += f_TSW ; + (D.f[dPMP])[ktse ] += f_TSE ; + (D.f[dMPM])[kbnw ] += f_TSE ; + (D.f[dPMM])[kbse ] += f_TNW ; + (D.f[dMPP])[ktnw ] += f_TNW ; ////////////////////////////////////////////////////////////////////////// } @@ -460,9 +460,9 @@ __global__ void LBInitNonEqPartSP27( unsigned int* neighborX, { ////////////////////////////////////////////////////////////////////////// Distributions27 D; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; ////////////////////////////////////////////////////////////////////////// - (D.f[DIR_000])[k] = c96o1; + (D.f[d000])[k] = c96o1; ////////////////////////////////////////////////////////////////////////// } } diff --git a/src/gpu/VirtualFluids_GPU/GPU/InitAdvectionDiffusion27.cu b/src/gpu/core/GPU/InitAdvectionDiffusion27.cu similarity index 50% rename from src/gpu/VirtualFluids_GPU/GPU/InitAdvectionDiffusion27.cu rename to src/gpu/core/GPU/InitAdvectionDiffusion27.cu index a4172403158adbd712e255676baa2616081e83b4..c58e4fd5a710562ad26d6bb74b3f0bb26749cb9b 100644 --- a/src/gpu/VirtualFluids_GPU/GPU/InitAdvectionDiffusion27.cu +++ b/src/gpu/core/GPU/InitAdvectionDiffusion27.cu @@ -77,63 +77,63 @@ __global__ void InitAD27( Distributions27 distAD; if (isEvenTimestep) { - distAD.f[DIR_P00] = &distributionsAD[DIR_P00 * numberOfLBnodes]; - distAD.f[DIR_M00] = &distributionsAD[DIR_M00 * numberOfLBnodes]; - distAD.f[DIR_0P0] = &distributionsAD[DIR_0P0 * numberOfLBnodes]; - distAD.f[DIR_0M0] = &distributionsAD[DIR_0M0 * numberOfLBnodes]; - distAD.f[DIR_00P] = &distributionsAD[DIR_00P * numberOfLBnodes]; - distAD.f[DIR_00M] = &distributionsAD[DIR_00M * numberOfLBnodes]; - distAD.f[DIR_PP0] = &distributionsAD[DIR_PP0 * numberOfLBnodes]; - distAD.f[DIR_MM0] = &distributionsAD[DIR_MM0 * numberOfLBnodes]; - distAD.f[DIR_PM0] = &distributionsAD[DIR_PM0 * numberOfLBnodes]; - distAD.f[DIR_MP0] = &distributionsAD[DIR_MP0 * numberOfLBnodes]; - distAD.f[DIR_P0P] = &distributionsAD[DIR_P0P * numberOfLBnodes]; - distAD.f[DIR_M0M] = &distributionsAD[DIR_M0M * numberOfLBnodes]; - distAD.f[DIR_P0M] = &distributionsAD[DIR_P0M * numberOfLBnodes]; - distAD.f[DIR_M0P] = &distributionsAD[DIR_M0P * numberOfLBnodes]; - distAD.f[DIR_0PP] = &distributionsAD[DIR_0PP * numberOfLBnodes]; - distAD.f[DIR_0MM] = &distributionsAD[DIR_0MM * numberOfLBnodes]; - distAD.f[DIR_0PM] = &distributionsAD[DIR_0PM * numberOfLBnodes]; - distAD.f[DIR_0MP] = &distributionsAD[DIR_0MP * numberOfLBnodes]; - distAD.f[DIR_000] = &distributionsAD[DIR_000 * numberOfLBnodes]; - distAD.f[DIR_PPP] = &distributionsAD[DIR_PPP * numberOfLBnodes]; - distAD.f[DIR_MMP] = &distributionsAD[DIR_MMP * numberOfLBnodes]; - distAD.f[DIR_PMP] = &distributionsAD[DIR_PMP * numberOfLBnodes]; - distAD.f[DIR_MPP] = &distributionsAD[DIR_MPP * numberOfLBnodes]; - distAD.f[DIR_PPM] = &distributionsAD[DIR_PPM * numberOfLBnodes]; - distAD.f[DIR_MMM] = &distributionsAD[DIR_MMM * numberOfLBnodes]; - distAD.f[DIR_PMM] = &distributionsAD[DIR_PMM * numberOfLBnodes]; - distAD.f[DIR_MPM] = &distributionsAD[DIR_MPM * numberOfLBnodes]; + distAD.f[dP00] = &distributionsAD[dP00 * numberOfLBnodes]; + distAD.f[dM00] = &distributionsAD[dM00 * numberOfLBnodes]; + distAD.f[d0P0] = &distributionsAD[d0P0 * numberOfLBnodes]; + distAD.f[d0M0] = &distributionsAD[d0M0 * numberOfLBnodes]; + distAD.f[d00P] = &distributionsAD[d00P * numberOfLBnodes]; + distAD.f[d00M] = &distributionsAD[d00M * numberOfLBnodes]; + distAD.f[dPP0] = &distributionsAD[dPP0 * numberOfLBnodes]; + distAD.f[dMM0] = &distributionsAD[dMM0 * numberOfLBnodes]; + distAD.f[dPM0] = &distributionsAD[dPM0 * numberOfLBnodes]; + distAD.f[dMP0] = &distributionsAD[dMP0 * numberOfLBnodes]; + distAD.f[dP0P] = &distributionsAD[dP0P * numberOfLBnodes]; + distAD.f[dM0M] = &distributionsAD[dM0M * numberOfLBnodes]; + distAD.f[dP0M] = &distributionsAD[dP0M * numberOfLBnodes]; + distAD.f[dM0P] = &distributionsAD[dM0P * numberOfLBnodes]; + distAD.f[d0PP] = &distributionsAD[d0PP * numberOfLBnodes]; + distAD.f[d0MM] = &distributionsAD[d0MM * numberOfLBnodes]; + distAD.f[d0PM] = &distributionsAD[d0PM * numberOfLBnodes]; + distAD.f[d0MP] = &distributionsAD[d0MP * numberOfLBnodes]; + distAD.f[d000] = &distributionsAD[d000 * numberOfLBnodes]; + distAD.f[dPPP] = &distributionsAD[dPPP * numberOfLBnodes]; + distAD.f[dMMP] = &distributionsAD[dMMP * numberOfLBnodes]; + distAD.f[dPMP] = &distributionsAD[dPMP * numberOfLBnodes]; + distAD.f[dMPP] = &distributionsAD[dMPP * numberOfLBnodes]; + distAD.f[dPPM] = &distributionsAD[dPPM * numberOfLBnodes]; + distAD.f[dMMM] = &distributionsAD[dMMM * numberOfLBnodes]; + distAD.f[dPMM] = &distributionsAD[dPMM * numberOfLBnodes]; + distAD.f[dMPM] = &distributionsAD[dMPM * numberOfLBnodes]; } else { - distAD.f[DIR_M00] = &distributionsAD[DIR_P00 * numberOfLBnodes]; - distAD.f[DIR_P00] = &distributionsAD[DIR_M00 * numberOfLBnodes]; - distAD.f[DIR_0M0] = &distributionsAD[DIR_0P0 * numberOfLBnodes]; - distAD.f[DIR_0P0] = &distributionsAD[DIR_0M0 * numberOfLBnodes]; - distAD.f[DIR_00M] = &distributionsAD[DIR_00P * numberOfLBnodes]; - distAD.f[DIR_00P] = &distributionsAD[DIR_00M * numberOfLBnodes]; - distAD.f[DIR_MM0] = &distributionsAD[DIR_PP0 * numberOfLBnodes]; - distAD.f[DIR_PP0] = &distributionsAD[DIR_MM0 * numberOfLBnodes]; - distAD.f[DIR_MP0] = &distributionsAD[DIR_PM0 * numberOfLBnodes]; - distAD.f[DIR_PM0] = &distributionsAD[DIR_MP0 * numberOfLBnodes]; - distAD.f[DIR_M0M] = &distributionsAD[DIR_P0P * numberOfLBnodes]; - distAD.f[DIR_P0P] = &distributionsAD[DIR_M0M * numberOfLBnodes]; - distAD.f[DIR_M0P] = &distributionsAD[DIR_P0M * numberOfLBnodes]; - distAD.f[DIR_P0M] = &distributionsAD[DIR_M0P * numberOfLBnodes]; - distAD.f[DIR_0MM] = &distributionsAD[DIR_0PP * numberOfLBnodes]; - distAD.f[DIR_0PP] = &distributionsAD[DIR_0MM * numberOfLBnodes]; - distAD.f[DIR_0MP] = &distributionsAD[DIR_0PM * numberOfLBnodes]; - distAD.f[DIR_0PM] = &distributionsAD[DIR_0MP * numberOfLBnodes]; - distAD.f[DIR_000] = &distributionsAD[DIR_000 * numberOfLBnodes]; - distAD.f[DIR_MMM] = &distributionsAD[DIR_PPP * numberOfLBnodes]; - distAD.f[DIR_PPM] = &distributionsAD[DIR_MMP * numberOfLBnodes]; - distAD.f[DIR_MPM] = &distributionsAD[DIR_PMP * numberOfLBnodes]; - distAD.f[DIR_PMM] = &distributionsAD[DIR_MPP * numberOfLBnodes]; - distAD.f[DIR_MMP] = &distributionsAD[DIR_PPM * numberOfLBnodes]; - distAD.f[DIR_PPP] = &distributionsAD[DIR_MMM * numberOfLBnodes]; - distAD.f[DIR_MPP] = &distributionsAD[DIR_PMM * numberOfLBnodes]; - distAD.f[DIR_PMP] = &distributionsAD[DIR_MPM * numberOfLBnodes]; + distAD.f[dM00] = &distributionsAD[dP00 * numberOfLBnodes]; + distAD.f[dP00] = &distributionsAD[dM00 * numberOfLBnodes]; + distAD.f[d0M0] = &distributionsAD[d0P0 * numberOfLBnodes]; + distAD.f[d0P0] = &distributionsAD[d0M0 * numberOfLBnodes]; + distAD.f[d00M] = &distributionsAD[d00P * numberOfLBnodes]; + distAD.f[d00P] = &distributionsAD[d00M * numberOfLBnodes]; + distAD.f[dMM0] = &distributionsAD[dPP0 * numberOfLBnodes]; + distAD.f[dPP0] = &distributionsAD[dMM0 * numberOfLBnodes]; + distAD.f[dMP0] = &distributionsAD[dPM0 * numberOfLBnodes]; + distAD.f[dPM0] = &distributionsAD[dMP0 * numberOfLBnodes]; + distAD.f[dM0M] = &distributionsAD[dP0P * numberOfLBnodes]; + distAD.f[dP0P] = &distributionsAD[dM0M * numberOfLBnodes]; + distAD.f[dM0P] = &distributionsAD[dP0M * numberOfLBnodes]; + distAD.f[dP0M] = &distributionsAD[dM0P * numberOfLBnodes]; + distAD.f[d0MM] = &distributionsAD[d0PP * numberOfLBnodes]; + distAD.f[d0PP] = &distributionsAD[d0MM * numberOfLBnodes]; + distAD.f[d0MP] = &distributionsAD[d0PM * numberOfLBnodes]; + distAD.f[d0PM] = &distributionsAD[d0MP * numberOfLBnodes]; + distAD.f[d000] = &distributionsAD[d000 * numberOfLBnodes]; + distAD.f[dMMM] = &distributionsAD[dPPP * numberOfLBnodes]; + distAD.f[dPPM] = &distributionsAD[dMMP * numberOfLBnodes]; + distAD.f[dMPM] = &distributionsAD[dPMP * numberOfLBnodes]; + distAD.f[dPMM] = &distributionsAD[dMPP * numberOfLBnodes]; + distAD.f[dMMP] = &distributionsAD[dPPM * numberOfLBnodes]; + distAD.f[dPPP] = &distributionsAD[dMMM * numberOfLBnodes]; + distAD.f[dMPP] = &distributionsAD[dPMM * numberOfLBnodes]; + distAD.f[dPMP] = &distributionsAD[dMPM * numberOfLBnodes]; } ////////////////////////////////////////////////////////////////////////// //! - Set local velocities and concetration @@ -177,33 +177,33 @@ __global__ void InitAD27( //! real cu_sq = c3o2*(vx1*vx1 + vx2*vx2 + vx3*vx3); - (distAD.f[DIR_000])[kzero] = c8o27 * conc * (c1o1 - cu_sq); - (distAD.f[DIR_P00])[ke ] = c2o27 * conc * (c1o1 + c3o1 * ( vx1 ) + c9o2 * ( vx1 ) * ( vx1 ) - cu_sq); - (distAD.f[DIR_M00])[kw ] = c2o27 * conc * (c1o1 + c3o1 * (-vx1 ) + c9o2 * (-vx1 ) * (-vx1 ) - cu_sq); - (distAD.f[DIR_0P0])[kn ] = c2o27 * conc * (c1o1 + c3o1 * ( vx2 ) + c9o2 * ( vx2 ) * ( vx2 ) - cu_sq); - (distAD.f[DIR_0M0])[ks ] = c2o27 * conc * (c1o1 + c3o1 * ( - vx2 ) + c9o2 * ( - vx2 ) * ( - vx2 ) - cu_sq); - (distAD.f[DIR_00P])[kt ] = c2o27 * conc * (c1o1 + c3o1 * ( vx3) + c9o2 * ( vx3) * ( vx3) - cu_sq); - (distAD.f[DIR_00M])[kb ] = c2o27 * conc * (c1o1 + c3o1 * ( - vx3) + c9o2 * ( - vx3) * ( - vx3) - cu_sq); - (distAD.f[DIR_PP0])[kne ] = c1o54 * conc * (c1o1 + c3o1 * ( vx1 + vx2 ) + c9o2 * ( vx1 + vx2 ) * ( vx1 + vx2 ) - cu_sq); - (distAD.f[DIR_MM0])[ksw ] = c1o54 * conc * (c1o1 + c3o1 * (-vx1 - vx2 ) + c9o2 * (-vx1 - vx2 ) * (-vx1 - vx2 ) - cu_sq); - (distAD.f[DIR_PM0])[kse ] = c1o54 * conc * (c1o1 + c3o1 * ( vx1 - vx2 ) + c9o2 * ( vx1 - vx2 ) * ( vx1 - vx2 ) - cu_sq); - (distAD.f[DIR_MP0])[knw ] = c1o54 * conc * (c1o1 + c3o1 * (-vx1 + vx2 ) + c9o2 * (-vx1 + vx2 ) * (-vx1 + vx2 ) - cu_sq); - (distAD.f[DIR_P0P])[kte ] = c1o54 * conc * (c1o1 + c3o1 * ( vx1 + vx3) + c9o2 * ( vx1 + vx3) * ( vx1 + vx3) - cu_sq); - (distAD.f[DIR_M0M])[kbw ] = c1o54 * conc * (c1o1 + c3o1 * (-vx1 - vx3) + c9o2 * (-vx1 - vx3) * (-vx1 - vx3) - cu_sq); - (distAD.f[DIR_P0M])[kbe ] = c1o54 * conc * (c1o1 + c3o1 * ( vx1 - vx3) + c9o2 * ( vx1 - vx3) * ( vx1 - vx3) - cu_sq); - (distAD.f[DIR_M0P])[ktw ] = c1o54 * conc * (c1o1 + c3o1 * (-vx1 + vx3) + c9o2 * (-vx1 + vx3) * (-vx1 + vx3) - cu_sq); - (distAD.f[DIR_0PP])[ktn ] = c1o54 * conc * (c1o1 + c3o1 * ( vx2 + vx3) + c9o2 * ( vx2 + vx3) * ( vx2 + vx3) - cu_sq); - (distAD.f[DIR_0MM])[kbs ] = c1o54 * conc * (c1o1 + c3o1 * ( - vx2 - vx3) + c9o2 * ( - vx2 - vx3) * ( - vx2 - vx3) - cu_sq); - (distAD.f[DIR_0PM])[kbn ] = c1o54 * conc * (c1o1 + c3o1 * ( vx2 - vx3) + c9o2 * ( vx2 - vx3) * ( vx2 - vx3) - cu_sq); - (distAD.f[DIR_0MP])[kts ] = c1o54 * conc * (c1o1 + c3o1 * ( - vx2 + vx3) + c9o2 * ( - vx2 + vx3) * ( - vx2 + vx3) - cu_sq); - (distAD.f[DIR_PPP])[ktne ] = c1o216 * conc * (c1o1 + c3o1 * ( vx1 + vx2 + vx3) + c9o2 * ( vx1 + vx2 + vx3) * ( vx1 + vx2 + vx3) - cu_sq); - (distAD.f[DIR_MMM])[kbsw ] = c1o216 * conc * (c1o1 + c3o1 * (-vx1 - vx2 - vx3) + c9o2 * (-vx1 - vx2 - vx3) * (-vx1 - vx2 - vx3) - cu_sq); - (distAD.f[DIR_PPM])[kbne ] = c1o216 * conc * (c1o1 + c3o1 * ( vx1 + vx2 - vx3) + c9o2 * ( vx1 + vx2 - vx3) * ( vx1 + vx2 - vx3) - cu_sq); - (distAD.f[DIR_MMP])[ktsw ] = c1o216 * conc * (c1o1 + c3o1 * (-vx1 - vx2 + vx3) + c9o2 * (-vx1 - vx2 + vx3) * (-vx1 - vx2 + vx3) - cu_sq); - (distAD.f[DIR_PMP])[ktse ] = c1o216 * conc * (c1o1 + c3o1 * ( vx1 - vx2 + vx3) + c9o2 * ( vx1 - vx2 + vx3) * ( vx1 - vx2 + vx3) - cu_sq); - (distAD.f[DIR_MPM])[kbnw ] = c1o216 * conc * (c1o1 + c3o1 * (-vx1 + vx2 - vx3) + c9o2 * (-vx1 + vx2 - vx3) * (-vx1 + vx2 - vx3) - cu_sq); - (distAD.f[DIR_PMM])[kbse ] = c1o216 * conc * (c1o1 + c3o1 * ( vx1 - vx2 - vx3) + c9o2 * ( vx1 - vx2 - vx3) * ( vx1 - vx2 - vx3) - cu_sq); - (distAD.f[DIR_MPP])[ktnw ] = c1o216 * conc * (c1o1 + c3o1 * (-vx1 + vx2 + vx3) + c9o2 * (-vx1 + vx2 + vx3) * (-vx1 + vx2 + vx3) - cu_sq); + (distAD.f[d000])[kzero] = c8o27 * conc * (c1o1 - cu_sq); + (distAD.f[dP00])[ke ] = c2o27 * conc * (c1o1 + c3o1 * ( vx1 ) + c9o2 * ( vx1 ) * ( vx1 ) - cu_sq); + (distAD.f[dM00])[kw ] = c2o27 * conc * (c1o1 + c3o1 * (-vx1 ) + c9o2 * (-vx1 ) * (-vx1 ) - cu_sq); + (distAD.f[d0P0])[kn ] = c2o27 * conc * (c1o1 + c3o1 * ( vx2 ) + c9o2 * ( vx2 ) * ( vx2 ) - cu_sq); + (distAD.f[d0M0])[ks ] = c2o27 * conc * (c1o1 + c3o1 * ( - vx2 ) + c9o2 * ( - vx2 ) * ( - vx2 ) - cu_sq); + (distAD.f[d00P])[kt ] = c2o27 * conc * (c1o1 + c3o1 * ( vx3) + c9o2 * ( vx3) * ( vx3) - cu_sq); + (distAD.f[d00M])[kb ] = c2o27 * conc * (c1o1 + c3o1 * ( - vx3) + c9o2 * ( - vx3) * ( - vx3) - cu_sq); + (distAD.f[dPP0])[kne ] = c1o54 * conc * (c1o1 + c3o1 * ( vx1 + vx2 ) + c9o2 * ( vx1 + vx2 ) * ( vx1 + vx2 ) - cu_sq); + (distAD.f[dMM0])[ksw ] = c1o54 * conc * (c1o1 + c3o1 * (-vx1 - vx2 ) + c9o2 * (-vx1 - vx2 ) * (-vx1 - vx2 ) - cu_sq); + (distAD.f[dPM0])[kse ] = c1o54 * conc * (c1o1 + c3o1 * ( vx1 - vx2 ) + c9o2 * ( vx1 - vx2 ) * ( vx1 - vx2 ) - cu_sq); + (distAD.f[dMP0])[knw ] = c1o54 * conc * (c1o1 + c3o1 * (-vx1 + vx2 ) + c9o2 * (-vx1 + vx2 ) * (-vx1 + vx2 ) - cu_sq); + (distAD.f[dP0P])[kte ] = c1o54 * conc * (c1o1 + c3o1 * ( vx1 + vx3) + c9o2 * ( vx1 + vx3) * ( vx1 + vx3) - cu_sq); + (distAD.f[dM0M])[kbw ] = c1o54 * conc * (c1o1 + c3o1 * (-vx1 - vx3) + c9o2 * (-vx1 - vx3) * (-vx1 - vx3) - cu_sq); + (distAD.f[dP0M])[kbe ] = c1o54 * conc * (c1o1 + c3o1 * ( vx1 - vx3) + c9o2 * ( vx1 - vx3) * ( vx1 - vx3) - cu_sq); + (distAD.f[dM0P])[ktw ] = c1o54 * conc * (c1o1 + c3o1 * (-vx1 + vx3) + c9o2 * (-vx1 + vx3) * (-vx1 + vx3) - cu_sq); + (distAD.f[d0PP])[ktn ] = c1o54 * conc * (c1o1 + c3o1 * ( vx2 + vx3) + c9o2 * ( vx2 + vx3) * ( vx2 + vx3) - cu_sq); + (distAD.f[d0MM])[kbs ] = c1o54 * conc * (c1o1 + c3o1 * ( - vx2 - vx3) + c9o2 * ( - vx2 - vx3) * ( - vx2 - vx3) - cu_sq); + (distAD.f[d0PM])[kbn ] = c1o54 * conc * (c1o1 + c3o1 * ( vx2 - vx3) + c9o2 * ( vx2 - vx3) * ( vx2 - vx3) - cu_sq); + (distAD.f[d0MP])[kts ] = c1o54 * conc * (c1o1 + c3o1 * ( - vx2 + vx3) + c9o2 * ( - vx2 + vx3) * ( - vx2 + vx3) - cu_sq); + (distAD.f[dPPP])[ktne ] = c1o216 * conc * (c1o1 + c3o1 * ( vx1 + vx2 + vx3) + c9o2 * ( vx1 + vx2 + vx3) * ( vx1 + vx2 + vx3) - cu_sq); + (distAD.f[dMMM])[kbsw ] = c1o216 * conc * (c1o1 + c3o1 * (-vx1 - vx2 - vx3) + c9o2 * (-vx1 - vx2 - vx3) * (-vx1 - vx2 - vx3) - cu_sq); + (distAD.f[dPPM])[kbne ] = c1o216 * conc * (c1o1 + c3o1 * ( vx1 + vx2 - vx3) + c9o2 * ( vx1 + vx2 - vx3) * ( vx1 + vx2 - vx3) - cu_sq); + (distAD.f[dMMP])[ktsw ] = c1o216 * conc * (c1o1 + c3o1 * (-vx1 - vx2 + vx3) + c9o2 * (-vx1 - vx2 + vx3) * (-vx1 - vx2 + vx3) - cu_sq); + (distAD.f[dPMP])[ktse ] = c1o216 * conc * (c1o1 + c3o1 * ( vx1 - vx2 + vx3) + c9o2 * ( vx1 - vx2 + vx3) * ( vx1 - vx2 + vx3) - cu_sq); + (distAD.f[dMPM])[kbnw ] = c1o216 * conc * (c1o1 + c3o1 * (-vx1 + vx2 - vx3) + c9o2 * (-vx1 + vx2 - vx3) * (-vx1 + vx2 - vx3) - cu_sq); + (distAD.f[dPMM])[kbse ] = c1o216 * conc * (c1o1 + c3o1 * ( vx1 - vx2 - vx3) + c9o2 * ( vx1 - vx2 - vx3) * ( vx1 - vx2 - vx3) - cu_sq); + (distAD.f[dMPP])[ktnw ] = c1o216 * conc * (c1o1 + c3o1 * (-vx1 + vx2 + vx3) + c9o2 * (-vx1 + vx2 + vx3) * (-vx1 + vx2 + vx3) - cu_sq); } } @@ -263,63 +263,63 @@ __global__ void InitAD27( // Distributions27 D27; // if (EvenOrOdd==true) // { -// D27.f[DIR_P00] = &DD27[DIR_P00 * size_Mat]; -// D27.f[DIR_M00] = &DD27[DIR_M00 * size_Mat]; -// D27.f[DIR_0P0] = &DD27[DIR_0P0 * size_Mat]; -// D27.f[DIR_0M0] = &DD27[DIR_0M0 * size_Mat]; -// D27.f[DIR_00P] = &DD27[DIR_00P * size_Mat]; -// D27.f[DIR_00M] = &DD27[DIR_00M * size_Mat]; -// D27.f[DIR_PP0] = &DD27[DIR_PP0 * size_Mat]; -// D27.f[DIR_MM0] = &DD27[DIR_MM0 * size_Mat]; -// D27.f[DIR_PM0] = &DD27[DIR_PM0 * size_Mat]; -// D27.f[DIR_MP0] = &DD27[DIR_MP0 * size_Mat]; -// D27.f[DIR_P0P] = &DD27[DIR_P0P * size_Mat]; -// D27.f[DIR_M0M] = &DD27[DIR_M0M * size_Mat]; -// D27.f[DIR_P0M] = &DD27[DIR_P0M * size_Mat]; -// D27.f[DIR_M0P] = &DD27[DIR_M0P * size_Mat]; -// D27.f[DIR_0PP] = &DD27[DIR_0PP * size_Mat]; -// D27.f[DIR_0MM] = &DD27[DIR_0MM * size_Mat]; -// D27.f[DIR_0PM] = &DD27[DIR_0PM * size_Mat]; -// D27.f[DIR_0MP] = &DD27[DIR_0MP * size_Mat]; -// D27.f[DIR_000] = &DD27[DIR_000 * size_Mat]; -// D27.f[DIR_PPP] = &DD27[DIR_PPP * size_Mat]; -// D27.f[DIR_MMP] = &DD27[DIR_MMP * size_Mat]; -// D27.f[DIR_PMP] = &DD27[DIR_PMP * size_Mat]; -// D27.f[DIR_MPP] = &DD27[DIR_MPP * size_Mat]; -// D27.f[DIR_PPM] = &DD27[DIR_PPM * size_Mat]; -// D27.f[DIR_MMM] = &DD27[DIR_MMM * size_Mat]; -// D27.f[DIR_PMM] = &DD27[DIR_PMM * size_Mat]; -// D27.f[DIR_MPM] = &DD27[DIR_MPM * size_Mat]; +// D27.f[dP00] = &DD27[dP00 * size_Mat]; +// D27.f[dM00] = &DD27[dM00 * size_Mat]; +// D27.f[d0P0] = &DD27[d0P0 * size_Mat]; +// D27.f[d0M0] = &DD27[d0M0 * size_Mat]; +// D27.f[d00P] = &DD27[d00P * size_Mat]; +// D27.f[d00M] = &DD27[d00M * size_Mat]; +// D27.f[dPP0] = &DD27[dPP0 * size_Mat]; +// D27.f[dMM0] = &DD27[dMM0 * size_Mat]; +// D27.f[dPM0] = &DD27[dPM0 * size_Mat]; +// D27.f[dMP0] = &DD27[dMP0 * size_Mat]; +// D27.f[dP0P] = &DD27[dP0P * size_Mat]; +// D27.f[dM0M] = &DD27[dM0M * size_Mat]; +// D27.f[dP0M] = &DD27[dP0M * size_Mat]; +// D27.f[dM0P] = &DD27[dM0P * size_Mat]; +// D27.f[d0PP] = &DD27[d0PP * size_Mat]; +// D27.f[d0MM] = &DD27[d0MM * size_Mat]; +// D27.f[d0PM] = &DD27[d0PM * size_Mat]; +// D27.f[d0MP] = &DD27[d0MP * size_Mat]; +// D27.f[d000] = &DD27[d000 * size_Mat]; +// D27.f[dPPP] = &DD27[dPPP * size_Mat]; +// D27.f[dMMP] = &DD27[dMMP * size_Mat]; +// D27.f[dPMP] = &DD27[dPMP * size_Mat]; +// D27.f[dMPP] = &DD27[dMPP * size_Mat]; +// D27.f[dPPM] = &DD27[dPPM * size_Mat]; +// D27.f[dMMM] = &DD27[dMMM * size_Mat]; +// D27.f[dPMM] = &DD27[dPMM * size_Mat]; +// D27.f[dMPM] = &DD27[dMPM * size_Mat]; // } // else // { -// D27.f[DIR_M00] = &DD27[DIR_P00 * size_Mat]; -// D27.f[DIR_P00] = &DD27[DIR_M00 * size_Mat]; -// D27.f[DIR_0M0] = &DD27[DIR_0P0 * size_Mat]; -// D27.f[DIR_0P0] = &DD27[DIR_0M0 * size_Mat]; -// D27.f[DIR_00M] = &DD27[DIR_00P * size_Mat]; -// D27.f[DIR_00P] = &DD27[DIR_00M * size_Mat]; -// D27.f[DIR_MM0] = &DD27[DIR_PP0 * size_Mat]; -// D27.f[DIR_PP0] = &DD27[DIR_MM0 * size_Mat]; -// D27.f[DIR_MP0] = &DD27[DIR_PM0 * size_Mat]; -// D27.f[DIR_PM0] = &DD27[DIR_MP0 * size_Mat]; -// D27.f[DIR_M0M] = &DD27[DIR_P0P * size_Mat]; -// D27.f[DIR_P0P] = &DD27[DIR_M0M * size_Mat]; -// D27.f[DIR_M0P] = &DD27[DIR_P0M * size_Mat]; -// D27.f[DIR_P0M] = &DD27[DIR_M0P * size_Mat]; -// D27.f[DIR_0MM] = &DD27[DIR_0PP * size_Mat]; -// D27.f[DIR_0PP] = &DD27[DIR_0MM * size_Mat]; -// D27.f[DIR_0MP] = &DD27[DIR_0PM * size_Mat]; -// D27.f[DIR_0PM] = &DD27[DIR_0MP * size_Mat]; -// D27.f[DIR_000] = &DD27[DIR_000 * size_Mat]; -// D27.f[DIR_MMM] = &DD27[DIR_PPP * size_Mat]; -// D27.f[DIR_PPM] = &DD27[DIR_MMP * size_Mat]; -// D27.f[DIR_MPM] = &DD27[DIR_PMP * size_Mat]; -// D27.f[DIR_PMM] = &DD27[DIR_MPP * size_Mat]; -// D27.f[DIR_MMP] = &DD27[DIR_PPM * size_Mat]; -// D27.f[DIR_PPP] = &DD27[DIR_MMM * size_Mat]; -// D27.f[DIR_MPP] = &DD27[DIR_PMM * size_Mat]; -// D27.f[DIR_PMP] = &DD27[DIR_MPM * size_Mat]; +// D27.f[dM00] = &DD27[dP00 * size_Mat]; +// D27.f[dP00] = &DD27[dM00 * size_Mat]; +// D27.f[d0M0] = &DD27[d0P0 * size_Mat]; +// D27.f[d0P0] = &DD27[d0M0 * size_Mat]; +// D27.f[d00M] = &DD27[d00P * size_Mat]; +// D27.f[d00P] = &DD27[d00M * size_Mat]; +// D27.f[dMM0] = &DD27[dPP0 * size_Mat]; +// D27.f[dPP0] = &DD27[dMM0 * size_Mat]; +// D27.f[dMP0] = &DD27[dPM0 * size_Mat]; +// D27.f[dPM0] = &DD27[dMP0 * size_Mat]; +// D27.f[dM0M] = &DD27[dP0P * size_Mat]; +// D27.f[dP0P] = &DD27[dM0M * size_Mat]; +// D27.f[dM0P] = &DD27[dP0M * size_Mat]; +// D27.f[dP0M] = &DD27[dM0P * size_Mat]; +// D27.f[d0MM] = &DD27[d0PP * size_Mat]; +// D27.f[d0PP] = &DD27[d0MM * size_Mat]; +// D27.f[d0MP] = &DD27[d0PM * size_Mat]; +// D27.f[d0PM] = &DD27[d0MP * size_Mat]; +// D27.f[d000] = &DD27[d000 * size_Mat]; +// D27.f[dMMM] = &DD27[dPPP * size_Mat]; +// D27.f[dPPM] = &DD27[dMMP * size_Mat]; +// D27.f[dMPM] = &DD27[dPMP * size_Mat]; +// D27.f[dPMM] = &DD27[dMPP * size_Mat]; +// D27.f[dMMP] = &DD27[dPPM * size_Mat]; +// D27.f[dPPP] = &DD27[dMMM * size_Mat]; +// D27.f[dMPP] = &DD27[dPMM * size_Mat]; +// D27.f[dPMP] = &DD27[dMPM * size_Mat]; // } // ////////////////////////////////////////////////////////////////////////// // real ConcD = Conc[k]; @@ -390,33 +390,33 @@ __global__ void InitAD27( // //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // real cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3); -// (D27.f[DIR_000])[kzero] = c8o27* ConcD*(c1o1-cu_sq); -// (D27.f[DIR_P00])[ke ] = c2o27* ConcD*(c1o1+c3o1*( vx1 )+c9o2*( vx1 )*( vx1 )-cu_sq); -// (D27.f[DIR_M00])[kw ] = c2o27* ConcD*(c1o1+c3o1*(-vx1 )+c9o2*(-vx1 )*(-vx1 )-cu_sq); -// (D27.f[DIR_0P0])[kn ] = c2o27* ConcD*(c1o1+c3o1*( vx2 )+c9o2*( vx2 )*( vx2 )-cu_sq); -// (D27.f[DIR_0M0])[ks ] = c2o27* ConcD*(c1o1+c3o1*( -vx2 )+c9o2*( -vx2 )*( -vx2 )-cu_sq); -// (D27.f[DIR_00P])[kt ] = c2o27* ConcD*(c1o1+c3o1*( vx3)+c9o2*( vx3)*( vx3)-cu_sq); -// (D27.f[DIR_00M])[kb ] = c2o27* ConcD*(c1o1+c3o1*( -vx3)+c9o2*( -vx3)*( -vx3)-cu_sq); -// (D27.f[DIR_PP0])[kne ] = c1o54* ConcD*(c1o1+c3o1*( vx1+vx2 )+c9o2*( vx1+vx2 )*( vx1+vx2 )-cu_sq); -// (D27.f[DIR_MM0])[ksw ] = c1o54* ConcD*(c1o1+c3o1*(-vx1-vx2 )+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq); -// (D27.f[DIR_PM0])[kse ] = c1o54* ConcD*(c1o1+c3o1*( vx1-vx2 )+c9o2*( vx1-vx2 )*( vx1-vx2 )-cu_sq); -// (D27.f[DIR_MP0])[knw ] = c1o54* ConcD*(c1o1+c3o1*(-vx1+vx2 )+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq); -// (D27.f[DIR_P0P])[kte ] = c1o54* ConcD*(c1o1+c3o1*( vx1 +vx3)+c9o2*( vx1 +vx3)*( vx1 +vx3)-cu_sq); -// (D27.f[DIR_M0M])[kbw ] = c1o54* ConcD*(c1o1+c3o1*(-vx1 -vx3)+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq); -// (D27.f[DIR_P0M])[kbe ] = c1o54* ConcD*(c1o1+c3o1*( vx1 -vx3)+c9o2*( vx1 -vx3)*( vx1 -vx3)-cu_sq); -// (D27.f[DIR_M0P])[ktw ] = c1o54* ConcD*(c1o1+c3o1*(-vx1 +vx3)+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq); -// (D27.f[DIR_0PP])[ktn ] = c1o54* ConcD*(c1o1+c3o1*( vx2+vx3)+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq); -// (D27.f[DIR_0MM])[kbs ] = c1o54* ConcD*(c1o1+c3o1*( -vx2-vx3)+c9o2*( -vx2-vx3)*( -vx2-vx3)-cu_sq); -// (D27.f[DIR_0PM])[kbn ] = c1o54* ConcD*(c1o1+c3o1*( vx2-vx3)+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq); -// (D27.f[DIR_0MP])[kts ] = c1o54* ConcD*(c1o1+c3o1*( -vx2+vx3)+c9o2*( -vx2+vx3)*( -vx2+vx3)-cu_sq); -// (D27.f[DIR_PPP])[ktne ] = c1o216*ConcD*(c1o1+c3o1*( vx1+vx2+vx3)+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq); -// (D27.f[DIR_MMM])[kbsw ] = c1o216*ConcD*(c1o1+c3o1*(-vx1-vx2-vx3)+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq); -// (D27.f[DIR_PPM])[kbne ] = c1o216*ConcD*(c1o1+c3o1*( vx1+vx2-vx3)+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq); -// (D27.f[DIR_MMP])[ktsw ] = c1o216*ConcD*(c1o1+c3o1*(-vx1-vx2+vx3)+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq); -// (D27.f[DIR_PMP])[ktse ] = c1o216*ConcD*(c1o1+c3o1*( vx1-vx2+vx3)+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq); -// (D27.f[DIR_MPM])[kbnw ] = c1o216*ConcD*(c1o1+c3o1*(-vx1+vx2-vx3)+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq); -// (D27.f[DIR_PMM])[kbse ] = c1o216*ConcD*(c1o1+c3o1*( vx1-vx2-vx3)+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq); -// (D27.f[DIR_MPP])[ktnw ] = c1o216*ConcD*(c1o1+c3o1*(-vx1+vx2+vx3)+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq); +// (D27.f[d000])[kzero] = c8o27* ConcD*(c1o1-cu_sq); +// (D27.f[dP00])[ke ] = c2o27* ConcD*(c1o1+c3o1*( vx1 )+c9o2*( vx1 )*( vx1 )-cu_sq); +// (D27.f[dM00])[kw ] = c2o27* ConcD*(c1o1+c3o1*(-vx1 )+c9o2*(-vx1 )*(-vx1 )-cu_sq); +// (D27.f[d0P0])[kn ] = c2o27* ConcD*(c1o1+c3o1*( vx2 )+c9o2*( vx2 )*( vx2 )-cu_sq); +// (D27.f[d0M0])[ks ] = c2o27* ConcD*(c1o1+c3o1*( -vx2 )+c9o2*( -vx2 )*( -vx2 )-cu_sq); +// (D27.f[d00P])[kt ] = c2o27* ConcD*(c1o1+c3o1*( vx3)+c9o2*( vx3)*( vx3)-cu_sq); +// (D27.f[d00M])[kb ] = c2o27* ConcD*(c1o1+c3o1*( -vx3)+c9o2*( -vx3)*( -vx3)-cu_sq); +// (D27.f[dPP0])[kne ] = c1o54* ConcD*(c1o1+c3o1*( vx1+vx2 )+c9o2*( vx1+vx2 )*( vx1+vx2 )-cu_sq); +// (D27.f[dMM0])[ksw ] = c1o54* ConcD*(c1o1+c3o1*(-vx1-vx2 )+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq); +// (D27.f[dPM0])[kse ] = c1o54* ConcD*(c1o1+c3o1*( vx1-vx2 )+c9o2*( vx1-vx2 )*( vx1-vx2 )-cu_sq); +// (D27.f[dMP0])[knw ] = c1o54* ConcD*(c1o1+c3o1*(-vx1+vx2 )+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq); +// (D27.f[dP0P])[kte ] = c1o54* ConcD*(c1o1+c3o1*( vx1 +vx3)+c9o2*( vx1 +vx3)*( vx1 +vx3)-cu_sq); +// (D27.f[dM0M])[kbw ] = c1o54* ConcD*(c1o1+c3o1*(-vx1 -vx3)+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq); +// (D27.f[dP0M])[kbe ] = c1o54* ConcD*(c1o1+c3o1*( vx1 -vx3)+c9o2*( vx1 -vx3)*( vx1 -vx3)-cu_sq); +// (D27.f[dM0P])[ktw ] = c1o54* ConcD*(c1o1+c3o1*(-vx1 +vx3)+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq); +// (D27.f[d0PP])[ktn ] = c1o54* ConcD*(c1o1+c3o1*( vx2+vx3)+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq); +// (D27.f[d0MM])[kbs ] = c1o54* ConcD*(c1o1+c3o1*( -vx2-vx3)+c9o2*( -vx2-vx3)*( -vx2-vx3)-cu_sq); +// (D27.f[d0PM])[kbn ] = c1o54* ConcD*(c1o1+c3o1*( vx2-vx3)+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq); +// (D27.f[d0MP])[kts ] = c1o54* ConcD*(c1o1+c3o1*( -vx2+vx3)+c9o2*( -vx2+vx3)*( -vx2+vx3)-cu_sq); +// (D27.f[dPPP])[ktne ] = c1o216*ConcD*(c1o1+c3o1*( vx1+vx2+vx3)+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq); +// (D27.f[dMMM])[kbsw ] = c1o216*ConcD*(c1o1+c3o1*(-vx1-vx2-vx3)+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq); +// (D27.f[dPPM])[kbne ] = c1o216*ConcD*(c1o1+c3o1*( vx1+vx2-vx3)+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq); +// (D27.f[dMMP])[ktsw ] = c1o216*ConcD*(c1o1+c3o1*(-vx1-vx2+vx3)+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq); +// (D27.f[dPMP])[ktse ] = c1o216*ConcD*(c1o1+c3o1*( vx1-vx2+vx3)+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq); +// (D27.f[dMPM])[kbnw ] = c1o216*ConcD*(c1o1+c3o1*(-vx1+vx2-vx3)+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq); +// (D27.f[dPMM])[kbse ] = c1o216*ConcD*(c1o1+c3o1*( vx1-vx2-vx3)+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq); +// (D27.f[dMPP])[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/KineticEnergyAnalyzer.cu b/src/gpu/core/GPU/KineticEnergyAnalyzer.cu similarity index 100% rename from src/gpu/VirtualFluids_GPU/GPU/KineticEnergyAnalyzer.cu rename to src/gpu/core/GPU/KineticEnergyAnalyzer.cu diff --git a/src/gpu/VirtualFluids_GPU/GPU/KineticEnergyAnalyzer.h b/src/gpu/core/GPU/KineticEnergyAnalyzer.h similarity index 73% rename from src/gpu/VirtualFluids_GPU/GPU/KineticEnergyAnalyzer.h rename to src/gpu/core/GPU/KineticEnergyAnalyzer.h index 11759c24460a1541d9aa66e325e6b04c15c1d488..0ca95bc1bfd51cce48b9aa8ce248e99b49419523 100644 --- a/src/gpu/VirtualFluids_GPU/GPU/KineticEnergyAnalyzer.h +++ b/src/gpu/core/GPU/KineticEnergyAnalyzer.h @@ -6,13 +6,13 @@ -#include "PointerDefinitions.h" -#include "DataTypes.h" -#include "VirtualFluids_GPU_export.h" +#include <basics/PointerDefinitions.h> +#include <basics/DataTypes.h> + class Parameter; -class VIRTUALFLUIDS_GPU_EXPORT KineticEnergyAnalyzer +class KineticEnergyAnalyzer { private: diff --git a/src/gpu/VirtualFluids_GPU/GPU/LBMKernel.cu b/src/gpu/core/GPU/LBMKernel.cu similarity index 99% rename from src/gpu/VirtualFluids_GPU/GPU/LBMKernel.cu rename to src/gpu/core/GPU/LBMKernel.cu index 3dfb649efe35ea46562ee4216091e6e3970212a0..5bb4ada3ab3da9929931e4a6fe4cae1300a1e701 100644 --- a/src/gpu/VirtualFluids_GPU/GPU/LBMKernel.cu +++ b/src/gpu/core/GPU/LBMKernel.cu @@ -434,7 +434,7 @@ void KernelPMCumOneCompSP27( { vf::cuda::CudaGrid grid = vf::cuda::CudaGrid(numberOfThreads, numberOfLBnodes); - LB_Kernel_PM_Cum_One_Comp_SP_27 <<< grid.grid, grid.threads >>>( + K15CompressibleNavierStokesPorousMedia_Device <<< grid.grid, grid.threads >>>( omega, neighborX, neighborY, @@ -506,7 +506,7 @@ void KernelADincomp7( { vf::cuda::CudaGrid grid = vf::cuda::CudaGrid(numberOfThreads, numberOfLBnodes); - LB_Kernel_AD_Incomp_7<<< grid.grid, grid.threads >>>( + B12IncompressibleAdvectionDiffusionD3Q7_Device<<< grid.grid, grid.threads >>>( diffusivity, bcMatD, neighborX, @@ -533,7 +533,7 @@ void KernelADincomp27( { vf::cuda::CudaGrid grid = vf::cuda::CudaGrid(numberOfThreads, numberOfLBnodes); - LB_Kernel_AD_Incomp_27<<< grid.grid, grid.threads >>>( + F16IncompressibleAdvectionDiffusion_Device<<< grid.grid, grid.threads >>>( diffusivity, bcMatD, neighborX, @@ -3000,7 +3000,7 @@ void QPressNoRhoDev27(LBMSimulationParameter* parameterDevice, QforBoundaryCondi parameterDevice->neighborZ, parameterDevice->numberOfNodes, parameterDevice->isEvenTimestep, - vf::lbm::dir::DIR_P00); + vf::lbm::dir::dP00); getLastCudaError("QPressNoRhoDevice27 execution failed"); } ////////////////////////////////////////////////////////////////////////// @@ -3021,7 +3021,7 @@ void QPressZeroRhoOutflowDev27(LBMSimulationParameter* parameterDevice, QforBoun parameterDevice->neighborZ, parameterDevice->numberOfNodes, parameterDevice->isEvenTimestep, - vf::lbm::dir::DIR_P00, + vf::lbm::dir::dP00, parameterDevice->outflowPressureCorrectionFactor); getLastCudaError("QPressZeroRhoOutflowDevice27 execution failed"); } diff --git a/src/gpu/core/GPU/NoSlipBCs27.cu b/src/gpu/core/GPU/NoSlipBCs27.cu new file mode 100644 index 0000000000000000000000000000000000000000..ff98f16ef79fd86c15f57a6a90e32daaa3e07440 --- /dev/null +++ b/src/gpu/core/GPU/NoSlipBCs27.cu @@ -0,0 +1,2548 @@ +//======================================================================================= +// ____ ____ __ ______ __________ __ __ __ __ +// \ \ | | | | | _ \ |___ ___| | | | | / \ | | +// \ \ | | | | | |_) | | | | | | | / \ | | +// \ \ | | | | | _ / | | | | | | / /\ \ | | +// \ \ | | | | | | \ \ | | | \__/ | / ____ \ | |____ +// \ \ | | |__| |__| \__\ |__| \________/ /__/ \__\ |_______| +// \ \ | | ________________________________________________________________ +// \ \ | | | ______________________________________________________________| +// \ \| | | | __ __ __ __ ______ _______ +// \ | | |_____ | | | | | | | | | _ \ / _____) +// \ | | _____| | | | | | | | | | | \ \ \_______ +// \ | | | | |_____ | \_/ | | | | |_/ / _____ | +// \ _____| |__| |________| \_______/ |__| |______/ (_______/ +// +// 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 NoSlipBCs27.cu +//! \ingroup GPU +//! \author Martin Schoenherr, Anna Wellmann +//====================================================================================== +#include "LBM/LB.h" +#include "lbm/constants/D3Q27.h" +#include <basics/constants/NumericConstants.h> +#include "LBM/GPUHelperFunctions/KernelUtilities.h" + +using namespace vf::basics::constant; +using namespace vf::lbm::dir; +using namespace vf::gpu; + +////////////////////////////////////////////////////////////////////////////// +__global__ void QDevice3rdMomentsComp27( + real* distributions, + int* subgridDistanceIndices, + real* subgridDistances, + unsigned int numberOfBCnodes, + real omega, + unsigned int* neighborX, + unsigned int* neighborY, + unsigned int* neighborZ, + unsigned long long numberOfLBnodes, + bool isEvenTimestep) +{ + Distributions27 D; + if (isEvenTimestep==true) + { + D.f[dP00] = &distributions[dP00 * numberOfLBnodes]; + D.f[dM00] = &distributions[dM00 * numberOfLBnodes]; + D.f[d0P0] = &distributions[d0P0 * numberOfLBnodes]; + D.f[d0M0] = &distributions[d0M0 * numberOfLBnodes]; + D.f[d00P] = &distributions[d00P * numberOfLBnodes]; + D.f[d00M] = &distributions[d00M * numberOfLBnodes]; + D.f[dPP0] = &distributions[dPP0 * numberOfLBnodes]; + D.f[dMM0] = &distributions[dMM0 * numberOfLBnodes]; + D.f[dPM0] = &distributions[dPM0 * numberOfLBnodes]; + D.f[dMP0] = &distributions[dMP0 * numberOfLBnodes]; + D.f[dP0P] = &distributions[dP0P * numberOfLBnodes]; + D.f[dM0M] = &distributions[dM0M * numberOfLBnodes]; + D.f[dP0M] = &distributions[dP0M * numberOfLBnodes]; + D.f[dM0P] = &distributions[dM0P * numberOfLBnodes]; + D.f[d0PP] = &distributions[d0PP * numberOfLBnodes]; + D.f[d0MM] = &distributions[d0MM * numberOfLBnodes]; + D.f[d0PM] = &distributions[d0PM * numberOfLBnodes]; + D.f[d0MP] = &distributions[d0MP * numberOfLBnodes]; + D.f[d000] = &distributions[d000 * numberOfLBnodes]; + D.f[dPPP] = &distributions[dPPP * numberOfLBnodes]; + D.f[dMMP] = &distributions[dMMP * numberOfLBnodes]; + D.f[dPMP] = &distributions[dPMP * numberOfLBnodes]; + D.f[dMPP] = &distributions[dMPP * numberOfLBnodes]; + D.f[dPPM] = &distributions[dPPM * numberOfLBnodes]; + D.f[dMMM] = &distributions[dMMM * numberOfLBnodes]; + D.f[dPMM] = &distributions[dPMM * numberOfLBnodes]; + D.f[dMPM] = &distributions[dMPM * numberOfLBnodes]; + } + else + { + D.f[dM00] = &distributions[dP00 * numberOfLBnodes]; + D.f[dP00] = &distributions[dM00 * numberOfLBnodes]; + D.f[d0M0] = &distributions[d0P0 * numberOfLBnodes]; + D.f[d0P0] = &distributions[d0M0 * numberOfLBnodes]; + D.f[d00M] = &distributions[d00P * numberOfLBnodes]; + D.f[d00P] = &distributions[d00M * numberOfLBnodes]; + D.f[dMM0] = &distributions[dPP0 * numberOfLBnodes]; + D.f[dPP0] = &distributions[dMM0 * numberOfLBnodes]; + D.f[dMP0] = &distributions[dPM0 * numberOfLBnodes]; + D.f[dPM0] = &distributions[dMP0 * numberOfLBnodes]; + D.f[dM0M] = &distributions[dP0P * numberOfLBnodes]; + D.f[dP0P] = &distributions[dM0M * numberOfLBnodes]; + D.f[dM0P] = &distributions[dP0M * numberOfLBnodes]; + D.f[dP0M] = &distributions[dM0P * numberOfLBnodes]; + D.f[d0MM] = &distributions[d0PP * numberOfLBnodes]; + D.f[d0PP] = &distributions[d0MM * numberOfLBnodes]; + D.f[d0MP] = &distributions[d0PM * numberOfLBnodes]; + D.f[d0PM] = &distributions[d0MP * numberOfLBnodes]; + D.f[d000] = &distributions[d000 * numberOfLBnodes]; + D.f[dPPP] = &distributions[dMMM * numberOfLBnodes]; + D.f[dMMP] = &distributions[dPPM * numberOfLBnodes]; + D.f[dPMP] = &distributions[dMPM * numberOfLBnodes]; + D.f[dMPP] = &distributions[dPMM * numberOfLBnodes]; + D.f[dPPM] = &distributions[dMMP * numberOfLBnodes]; + D.f[dMMM] = &distributions[dPPP * numberOfLBnodes]; + D.f[dPMM] = &distributions[dMPP * numberOfLBnodes]; + D.f[dMPM] = &distributions[dPMP * numberOfLBnodes]; + } + //////////////////////////////////////////////////////////////////////////////// + const unsigned x = threadIdx.x; // Globaler x-Index + const unsigned y = blockIdx.x; // Globaler y-Index + const unsigned z = blockIdx.y; // Globaler z-Index + + const unsigned nx = blockDim.x; + const unsigned ny = gridDim.x; + + const unsigned k = nx*(ny*z + y) + x; + ////////////////////////////////////////////////////////////////////////// + + if(k < 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 = &subgridDistances[dP00 * numberOfBCnodes]; + q_dirW = &subgridDistances[dM00 * numberOfBCnodes]; + q_dirN = &subgridDistances[d0P0 * numberOfBCnodes]; + q_dirS = &subgridDistances[d0M0 * numberOfBCnodes]; + q_dirT = &subgridDistances[d00P * numberOfBCnodes]; + q_dirB = &subgridDistances[d00M * numberOfBCnodes]; + q_dirNE = &subgridDistances[dPP0 * numberOfBCnodes]; + q_dirSW = &subgridDistances[dMM0 * numberOfBCnodes]; + q_dirSE = &subgridDistances[dPM0 * numberOfBCnodes]; + q_dirNW = &subgridDistances[dMP0 * numberOfBCnodes]; + q_dirTE = &subgridDistances[dP0P * numberOfBCnodes]; + q_dirBW = &subgridDistances[dM0M * numberOfBCnodes]; + q_dirBE = &subgridDistances[dP0M * numberOfBCnodes]; + q_dirTW = &subgridDistances[dM0P * numberOfBCnodes]; + q_dirTN = &subgridDistances[d0PP * numberOfBCnodes]; + q_dirBS = &subgridDistances[d0MM * numberOfBCnodes]; + q_dirBN = &subgridDistances[d0PM * numberOfBCnodes]; + q_dirTS = &subgridDistances[d0MP * numberOfBCnodes]; + q_dirTNE = &subgridDistances[dPPP * numberOfBCnodes]; + q_dirTSW = &subgridDistances[dMMP * numberOfBCnodes]; + q_dirTSE = &subgridDistances[dPMP * numberOfBCnodes]; + q_dirTNW = &subgridDistances[dMPP * numberOfBCnodes]; + q_dirBNE = &subgridDistances[dPPM * numberOfBCnodes]; + q_dirBSW = &subgridDistances[dMMM * numberOfBCnodes]; + q_dirBSE = &subgridDistances[dPMM * numberOfBCnodes]; + q_dirBNW = &subgridDistances[dMPM * numberOfBCnodes]; + //////////////////////////////////////////////////////////////////////////////// + //index + unsigned int numberOfNodesK = subgridDistanceIndices[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]; + unsigned int ksw = neighborY[kw]; + unsigned int kne = numberOfNodesK; + unsigned int kse = ks; + unsigned int knw = kw; + unsigned int kbw = neighborZ[kw]; + unsigned int kte = numberOfNodesK; + unsigned int kbe = kb; + unsigned int ktw = kw; + unsigned int kbs = neighborZ[ks]; + unsigned int ktn = numberOfNodesK; + 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 = numberOfNodesK; + 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[dP00])[ke ]; + f_E = (D.f[dM00])[kw ]; + f_S = (D.f[d0P0])[kn ]; + f_N = (D.f[d0M0])[ks ]; + f_B = (D.f[d00P])[kt ]; + f_T = (D.f[d00M])[kb ]; + f_SW = (D.f[dPP0])[kne ]; + f_NE = (D.f[dMM0])[ksw ]; + f_NW = (D.f[dPM0])[kse ]; + f_SE = (D.f[dMP0])[knw ]; + f_BW = (D.f[dP0P])[kte ]; + f_TE = (D.f[dM0M])[kbw ]; + f_TW = (D.f[dP0M])[kbe ]; + f_BE = (D.f[dM0P])[ktw ]; + f_BS = (D.f[d0PP])[ktn ]; + f_TN = (D.f[d0MM])[kbs ]; + f_TS = (D.f[d0PM])[kbn ]; + f_BN = (D.f[d0MP])[kts ]; + f_BSW = (D.f[dPPP])[ktne ]; + f_BNE = (D.f[dMMP])[ktsw ]; + f_BNW = (D.f[dPMP])[ktse ]; + f_BSE = (D.f[dMPP])[ktnw ]; + f_TSW = (D.f[dPPM])[kbne ]; + f_TNE = (D.f[dMMM])[kbsw ]; + f_TNW = (D.f[dPMM])[kbse ]; + f_TSE = (D.f[dMPM])[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[d000])[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); + + + 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 cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3) * (c1o1 + drho); + + ////////////////////////////////////////////////////////////////////////// + if (isEvenTimestep==false) + { + D.f[dP00] = &distributions[dP00 * numberOfLBnodes]; + D.f[dM00] = &distributions[dM00 * numberOfLBnodes]; + D.f[d0P0] = &distributions[d0P0 * numberOfLBnodes]; + D.f[d0M0] = &distributions[d0M0 * numberOfLBnodes]; + D.f[d00P] = &distributions[d00P * numberOfLBnodes]; + D.f[d00M] = &distributions[d00M * numberOfLBnodes]; + D.f[dPP0] = &distributions[dPP0 * numberOfLBnodes]; + D.f[dMM0] = &distributions[dMM0 * numberOfLBnodes]; + D.f[dPM0] = &distributions[dPM0 * numberOfLBnodes]; + D.f[dMP0] = &distributions[dMP0 * numberOfLBnodes]; + D.f[dP0P] = &distributions[dP0P * numberOfLBnodes]; + D.f[dM0M] = &distributions[dM0M * numberOfLBnodes]; + D.f[dP0M] = &distributions[dP0M * numberOfLBnodes]; + D.f[dM0P] = &distributions[dM0P * numberOfLBnodes]; + D.f[d0PP] = &distributions[d0PP * numberOfLBnodes]; + D.f[d0MM] = &distributions[d0MM * numberOfLBnodes]; + D.f[d0PM] = &distributions[d0PM * numberOfLBnodes]; + D.f[d0MP] = &distributions[d0MP * numberOfLBnodes]; + D.f[d000] = &distributions[d000 * numberOfLBnodes]; + D.f[dPPP] = &distributions[dPPP * numberOfLBnodes]; + D.f[dMMP] = &distributions[dMMP * numberOfLBnodes]; + D.f[dPMP] = &distributions[dPMP * numberOfLBnodes]; + D.f[dMPP] = &distributions[dMPP * numberOfLBnodes]; + D.f[dPPM] = &distributions[dPPM * numberOfLBnodes]; + D.f[dMMM] = &distributions[dMMM * numberOfLBnodes]; + D.f[dPMM] = &distributions[dPMM * numberOfLBnodes]; + D.f[dMPM] = &distributions[dMPM * numberOfLBnodes]; + } + else + { + D.f[dM00] = &distributions[dP00 * numberOfLBnodes]; + D.f[dP00] = &distributions[dM00 * numberOfLBnodes]; + D.f[d0M0] = &distributions[d0P0 * numberOfLBnodes]; + D.f[d0P0] = &distributions[d0M0 * numberOfLBnodes]; + D.f[d00M] = &distributions[d00P * numberOfLBnodes]; + D.f[d00P] = &distributions[d00M * numberOfLBnodes]; + D.f[dMM0] = &distributions[dPP0 * numberOfLBnodes]; + D.f[dPP0] = &distributions[dMM0 * numberOfLBnodes]; + D.f[dMP0] = &distributions[dPM0 * numberOfLBnodes]; + D.f[dPM0] = &distributions[dMP0 * numberOfLBnodes]; + D.f[dM0M] = &distributions[dP0P * numberOfLBnodes]; + D.f[dP0P] = &distributions[dM0M * numberOfLBnodes]; + D.f[dM0P] = &distributions[dP0M * numberOfLBnodes]; + D.f[dP0M] = &distributions[dM0P * numberOfLBnodes]; + D.f[d0MM] = &distributions[d0PP * numberOfLBnodes]; + D.f[d0PP] = &distributions[d0MM * numberOfLBnodes]; + D.f[d0MP] = &distributions[d0PM * numberOfLBnodes]; + D.f[d0PM] = &distributions[d0MP * numberOfLBnodes]; + D.f[d000] = &distributions[d000 * numberOfLBnodes]; + D.f[dPPP] = &distributions[dMMM * numberOfLBnodes]; + D.f[dMMP] = &distributions[dPPM * numberOfLBnodes]; + D.f[dPMP] = &distributions[dMPM * numberOfLBnodes]; + D.f[dMPP] = &distributions[dPMM * numberOfLBnodes]; + D.f[dPPM] = &distributions[dMMP * numberOfLBnodes]; + D.f[dMMM] = &distributions[dPPP * numberOfLBnodes]; + D.f[dPMM] = &distributions[dMPP * numberOfLBnodes]; + D.f[dMPM] = &distributions[dPMP * numberOfLBnodes]; + } + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //Test + //(D.f[d000])[k]=c1o10; + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + + //ToDo anders klammern !!!!!! + + q = q_dirE[k]; + if (q>=c0o1 && q<=c1o1) + { + m3 = f_E - f_W - c2o1 * drho * c2o27 * (c3o1*( vx1 )); + feq=c2o27* (drho/*+three*( vx1 )*/+c9o2*( vx1 )*( vx1 ) * (c1o1 + drho)-cu_sq); + (D.f[dM00])[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[dM00])[kw]=zero; + } + + q = q_dirW[k]; + if (q>=c0o1 && q<=c1o1) + { + m3 = f_W - f_E - c2o1 * drho * c2o27 * (c3o1*(-vx1 )); + feq=c2o27* (drho/*+three*(-vx1 )*/+c9o2*(-vx1 )*(-vx1 ) * (c1o1 + drho)-cu_sq); + (D.f[dP00])[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[dP00])[ke]=zero; + } + + q = q_dirN[k]; + if (q>=c0o1 && q<=c1o1) + { + m3 = f_N - f_S - c2o1 * drho * c2o27 * (c3o1*( vx2 )); + feq=c2o27* (drho/*+three*( vx2 )*/+c9o2*( vx2 )*( vx2 ) * (c1o1 + drho)-cu_sq); + (D.f[d0M0])[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[d0M0])[ks]=zero; + } + + q = q_dirS[k]; + if (q>=c0o1 && q<=c1o1) + { + m3 = f_S - f_N - c2o1 * drho * c2o27 * (c3o1*( -vx2 )); + feq=c2o27* (drho/*+three*( -vx2 )*/+c9o2*( -vx2 )*( -vx2 ) * (c1o1 + drho)-cu_sq); + (D.f[d0P0])[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[d0P0])[kn]=zero; + } + + q = q_dirT[k]; + if (q>=c0o1 && q<=c1o1) + { + m3 = f_T - f_B - c2o1 * drho * c2o27 * (c3o1*( vx3)); + feq=c2o27* (drho/*+three*( vx3)*/+c9o2*( vx3)*( vx3) * (c1o1 + drho)-cu_sq); + (D.f[d00M])[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[d00M])[kb]=one; + } + + q = q_dirB[k]; + if (q>=c0o1 && q<=c1o1) + { + m3 = f_B - f_T - c2o1 * drho * c2o27 * (c3o1*( -vx3)); + feq=c2o27* (drho/*+three*( -vx3)*/+c9o2*( -vx3)*( -vx3) * (c1o1 + drho)-cu_sq); + (D.f[d00P])[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[d00P])[kt]=zero; + } + + q = q_dirNE[k]; + if (q>=c0o1 && q<=c1o1) + { + 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[dMM0])[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[dMM0])[ksw]=zero; + } + + q = q_dirSW[k]; + if (q>=c0o1 && q<=c1o1) + { + 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[dPP0])[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[dPP0])[kne]=zero; + } + + q = q_dirSE[k]; + if (q>=c0o1 && q<=c1o1) + { + 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[dMP0])[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[dMP0])[knw]=zero; + } + + q = q_dirNW[k]; + if (q>=c0o1 && q<=c1o1) + { + 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[dPM0])[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[dPM0])[kse]=zero; + } + + q = q_dirTE[k]; + if (q>=c0o1 && q<=c1o1) + { + 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[dM0M])[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[dM0M])[kbw]=zero; + } + + q = q_dirBW[k]; + if (q>=c0o1 && q<=c1o1) + { + 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[dP0P])[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[dP0P])[kte]=zero; + } + + q = q_dirBE[k]; + if (q>=c0o1 && q<=c1o1) + { + 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[dM0P])[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[dM0P])[ktw]=zero; + } + + q = q_dirTW[k]; + if (q>=c0o1 && q<=c1o1) + { + 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[dP0M])[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[dP0M])[kbe]=zero; + } + + q = q_dirTN[k]; + if (q>=c0o1 && q<=c1o1) + { + 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[d0MM])[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[d0MM])[kbs]=zero; + } + + q = q_dirBS[k]; + if (q>=c0o1 && q<=c1o1) + { + 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[d0PP])[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[d0PP])[ktn]=zero; + } + + q = q_dirBN[k]; + if (q>=c0o1 && q<=c1o1) + { + 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[d0MP])[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[d0MP])[kts]=zero; + } + + q = q_dirTS[k]; + if (q>=c0o1 && q<=c1o1) + { + 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[d0PM])[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[d0PM])[kbn]=zero; + } + + q = q_dirTNE[k]; + if (q>=c0o1 && q<=c1o1) + { + 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[dMMM])[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[dMMM])[kbsw]=zero; + } + + q = q_dirBSW[k]; + if (q>=c0o1 && q<=c1o1) + { + 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[dPPP])[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[dPPP])[ktne]=zero; + } + + q = q_dirBNE[k]; + if (q>=c0o1 && q<=c1o1) + { + 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[dMMP])[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[dMMP])[ktsw]=zero; + } + + q = q_dirTSW[k]; + if (q>=c0o1 && q<=c1o1) + { + 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[dPPM])[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[dPPM])[kbne]=zero; + } + + q = q_dirTSE[k]; + if (q>=c0o1 && q<=c1o1) + { + 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[dMPM])[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[dMPM])[kbnw]=zero; + } + + q = q_dirBNW[k]; + if (q>=c0o1 && q<=c1o1) + { + 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[dPMP])[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[dPMP])[ktse]=zero; + } + + q = q_dirBSE[k]; + if (q>=c0o1 && q<=c1o1) + { + 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[dMPP])[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[dMPP])[ktnw]=zero; + } + + q = q_dirTNW[k]; + if (q>=c0o1 && q<=c1o1) + { + 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[dPMM])[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[dPMM])[kbse]=zero; + } + } +} +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +////////////////////////////////////////////////////////////////////////////// +__global__ void QDeviceIncompHighNu27( + real* DD, + int* k_Q, + real* QQ, + unsigned int numberOfBCnodes, + real om1, + unsigned int* neighborX, + unsigned int* neighborY, + unsigned int* neighborZ, + unsigned long long numberOfLBnodes, + bool isEvenTimestep) +{ + Distributions27 D; + if (isEvenTimestep==true) + { + D.f[dP00] = &DD[dP00 * numberOfLBnodes]; + D.f[dM00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00P] = &DD[d00P * numberOfLBnodes]; + D.f[d00M] = &DD[d00M * numberOfLBnodes]; + D.f[dPP0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dMM0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dP0P] = &DD[dP0P * numberOfLBnodes]; + D.f[dM0M] = &DD[dM0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dP0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dM0P * numberOfLBnodes]; + D.f[d0PP] = &DD[d0PP * numberOfLBnodes]; + D.f[d0MM] = &DD[d0MM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0PM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dPPP * numberOfLBnodes]; + D.f[dMMP] = &DD[dMMP * numberOfLBnodes]; + D.f[dPMP] = &DD[dPMP * numberOfLBnodes]; + D.f[dMPP] = &DD[dMPP * numberOfLBnodes]; + D.f[dPPM] = &DD[dPPM * numberOfLBnodes]; + D.f[dMMM] = &DD[dMMM * numberOfLBnodes]; + D.f[dPMM] = &DD[dPMM * numberOfLBnodes]; + D.f[dMPM] = &DD[dMPM * numberOfLBnodes]; + } + else + { + D.f[dM00] = &DD[dP00 * numberOfLBnodes]; + D.f[dP00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00M] = &DD[d00P * numberOfLBnodes]; + D.f[d00P] = &DD[d00M * numberOfLBnodes]; + D.f[dMM0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dPP0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dM0M] = &DD[dP0P * numberOfLBnodes]; + D.f[dP0P] = &DD[dM0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dP0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dM0P * numberOfLBnodes]; + D.f[d0MM] = &DD[d0PP * numberOfLBnodes]; + D.f[d0PP] = &DD[d0MM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0PM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dMMM * numberOfLBnodes]; + D.f[dMMP] = &DD[dPPM * numberOfLBnodes]; + D.f[dPMP] = &DD[dMPM * numberOfLBnodes]; + D.f[dMPP] = &DD[dPMM * numberOfLBnodes]; + D.f[dPPM] = &DD[dMMP * numberOfLBnodes]; + D.f[dMMM] = &DD[dPPP * numberOfLBnodes]; + D.f[dPMM] = &DD[dMPP * numberOfLBnodes]; + D.f[dMPM] = &DD[dPMP * numberOfLBnodes]; + } + //////////////////////////////////////////////////////////////////////////////// + const unsigned x = threadIdx.x; // Globaler x-Index + const unsigned y = blockIdx.x; // Globaler y-Index + const unsigned z = blockIdx.y; // Globaler z-Index + + const unsigned nx = blockDim.x; + const unsigned ny = gridDim.x; + + const unsigned k = nx*(ny*z + y) + x; + ////////////////////////////////////////////////////////////////////////// + + if(k<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[dP00 * numberOfBCnodes]; + q_dirW = &QQ[dM00 * numberOfBCnodes]; + q_dirN = &QQ[d0P0 * numberOfBCnodes]; + q_dirS = &QQ[d0M0 * numberOfBCnodes]; + q_dirT = &QQ[d00P * numberOfBCnodes]; + q_dirB = &QQ[d00M * numberOfBCnodes]; + q_dirNE = &QQ[dPP0 * numberOfBCnodes]; + q_dirSW = &QQ[dMM0 * numberOfBCnodes]; + q_dirSE = &QQ[dPM0 * numberOfBCnodes]; + q_dirNW = &QQ[dMP0 * numberOfBCnodes]; + q_dirTE = &QQ[dP0P * numberOfBCnodes]; + q_dirBW = &QQ[dM0M * numberOfBCnodes]; + q_dirBE = &QQ[dP0M * numberOfBCnodes]; + q_dirTW = &QQ[dM0P * numberOfBCnodes]; + q_dirTN = &QQ[d0PP * numberOfBCnodes]; + q_dirBS = &QQ[d0MM * numberOfBCnodes]; + q_dirBN = &QQ[d0PM * numberOfBCnodes]; + q_dirTS = &QQ[d0MP * numberOfBCnodes]; + q_dirTNE = &QQ[dPPP * numberOfBCnodes]; + q_dirTSW = &QQ[dMMP * numberOfBCnodes]; + q_dirTSE = &QQ[dPMP * numberOfBCnodes]; + q_dirTNW = &QQ[dMPP * numberOfBCnodes]; + q_dirBNE = &QQ[dPPM * numberOfBCnodes]; + q_dirBSW = &QQ[dMMM * numberOfBCnodes]; + q_dirBSE = &QQ[dPMM * numberOfBCnodes]; + q_dirBNW = &QQ[dMPM * 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]; + unsigned int ksw = neighborY[kw]; + unsigned int kne = numberOfNodesK; + unsigned int kse = ks; + unsigned int knw = kw; + unsigned int kbw = neighborZ[kw]; + unsigned int kte = numberOfNodesK; + unsigned int kbe = kb; + unsigned int ktw = kw; + unsigned int kbs = neighborZ[ks]; + unsigned int ktn = numberOfNodesK; + 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 = numberOfNodesK; + 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_E = (D.f[dP00])[ke ]; + f_W = (D.f[dM00])[kw ]; + f_N = (D.f[d0P0])[kn ]; + f_S = (D.f[d0M0])[ks ]; + f_T = (D.f[d00P])[kt ]; + f_B = (D.f[d00M])[kb ]; + f_NE = (D.f[dPP0])[kne ]; + f_SW = (D.f[dMM0])[ksw ]; + f_SE = (D.f[dPM0])[kse ]; + f_NW = (D.f[dMP0])[knw ]; + f_TE = (D.f[dP0P])[kte ]; + f_BW = (D.f[dM0M])[kbw ]; + f_BE = (D.f[dP0M])[kbe ]; + f_TW = (D.f[dM0P])[ktw ]; + f_TN = (D.f[d0PP])[ktn ]; + f_BS = (D.f[d0MM])[kbs ]; + f_BN = (D.f[d0PM])[kbn ]; + f_TS = (D.f[d0MP])[kts ]; + f_TNE = (D.f[dPPP])[ktne ]; + f_TSW = (D.f[dMMP])[ktsw ]; + f_TSE = (D.f[dPMP])[ktse ]; + f_TNW = (D.f[dMPP])[ktnw ]; + f_BNE = (D.f[dPPM])[kbne ]; + f_BSW = (D.f[dMMM])[kbsw ]; + f_BSE = (D.f[dPMM])[kbse ]; + f_BNW = (D.f[dMPM])[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[d000])[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));// / (one + 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));// / (one + 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));// / (one + drho); + + real cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3);// * (one + drho); + + ////////////////////////////////////////////////////////////////////////// + if (isEvenTimestep==false) + { + D.f[dP00] = &DD[dP00 * numberOfLBnodes]; + D.f[dM00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00P] = &DD[d00P * numberOfLBnodes]; + D.f[d00M] = &DD[d00M * numberOfLBnodes]; + D.f[dPP0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dMM0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dP0P] = &DD[dP0P * numberOfLBnodes]; + D.f[dM0M] = &DD[dM0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dP0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dM0P * numberOfLBnodes]; + D.f[d0PP] = &DD[d0PP * numberOfLBnodes]; + D.f[d0MM] = &DD[d0MM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0PM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dPPP * numberOfLBnodes]; + D.f[dMMP] = &DD[dMMP * numberOfLBnodes]; + D.f[dPMP] = &DD[dPMP * numberOfLBnodes]; + D.f[dMPP] = &DD[dMPP * numberOfLBnodes]; + D.f[dPPM] = &DD[dPPM * numberOfLBnodes]; + D.f[dMMM] = &DD[dMMM * numberOfLBnodes]; + D.f[dPMM] = &DD[dPMM * numberOfLBnodes]; + D.f[dMPM] = &DD[dMPM * numberOfLBnodes]; + } + else + { + D.f[dM00] = &DD[dP00 * numberOfLBnodes]; + D.f[dP00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00M] = &DD[d00P * numberOfLBnodes]; + D.f[d00P] = &DD[d00M * numberOfLBnodes]; + D.f[dMM0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dPP0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dM0M] = &DD[dP0P * numberOfLBnodes]; + D.f[dP0P] = &DD[dM0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dP0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dM0P * numberOfLBnodes]; + D.f[d0MM] = &DD[d0PP * numberOfLBnodes]; + D.f[d0PP] = &DD[d0MM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0PM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dMMM * numberOfLBnodes]; + D.f[dMMP] = &DD[dPPM * numberOfLBnodes]; + D.f[dPMP] = &DD[dMPM * numberOfLBnodes]; + D.f[dMPP] = &DD[dPMM * numberOfLBnodes]; + D.f[dPPM] = &DD[dMMP * numberOfLBnodes]; + D.f[dMMM] = &DD[dPPP * numberOfLBnodes]; + D.f[dPMM] = &DD[dMPP * numberOfLBnodes]; + D.f[dMPM] = &DD[dPMP * numberOfLBnodes]; + } + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //Test + //(D.f[d000])[k]=c1o10; + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + real VeloX = c0o1; + real VeloY = c0o1; + real VeloZ = c0o1; + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + + //ToDo anders klammern !!!!!! + + q = q_dirE[k]; + if (q>=c0o1 && q<=c1o1) + { + feq=c2o27* (drho/*+three*( vx1 )*/+c9o2*( vx1 )*( vx1 ) /** (one + drho)*/-cu_sq); + (D.f[dM00])[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[dP00])[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[d0M0])[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[d0P0])[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[d00M])[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[d00P])[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[dMM0])[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[dPP0])[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[dMP0])[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[dPM0])[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[dM0M])[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[dP0P])[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[dM0P])[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[dP0M])[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[d0MM])[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[d0PP])[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[d0MP])[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[d0PM])[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[dMMM])[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[dPPP])[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[dMMP])[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[dPPM])[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[dMPM])[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[dPMP])[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[dMPP])[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[dPMM])[kbse]=((c1o1 - q) * f_TNW + q * ((f_TNW + f_BSE) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o216*(-VeloX+VeloY+VeloZ)) / (q + c1o1) ; + } + } +} +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +////////////////////////////////////////////////////////////////////////////// +__global__ void QDeviceCompHighNu27( + real* DD, + int* k_Q, + real* QQ, + unsigned int numberOfBCnodes, + real om1, + unsigned int* neighborX, + unsigned int* neighborY, + unsigned int* neighborZ, + unsigned long long numberOfLBnodes, + bool isEvenTimestep) +{ + Distributions27 D; + if (isEvenTimestep==true) + { + D.f[dP00] = &DD[dP00 * numberOfLBnodes]; + D.f[dM00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00P] = &DD[d00P * numberOfLBnodes]; + D.f[d00M] = &DD[d00M * numberOfLBnodes]; + D.f[dPP0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dMM0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dP0P] = &DD[dP0P * numberOfLBnodes]; + D.f[dM0M] = &DD[dM0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dP0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dM0P * numberOfLBnodes]; + D.f[d0PP] = &DD[d0PP * numberOfLBnodes]; + D.f[d0MM] = &DD[d0MM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0PM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dPPP * numberOfLBnodes]; + D.f[dMMP] = &DD[dMMP * numberOfLBnodes]; + D.f[dPMP] = &DD[dPMP * numberOfLBnodes]; + D.f[dMPP] = &DD[dMPP * numberOfLBnodes]; + D.f[dPPM] = &DD[dPPM * numberOfLBnodes]; + D.f[dMMM] = &DD[dMMM * numberOfLBnodes]; + D.f[dPMM] = &DD[dPMM * numberOfLBnodes]; + D.f[dMPM] = &DD[dMPM * numberOfLBnodes]; + } + else + { + D.f[dM00] = &DD[dP00 * numberOfLBnodes]; + D.f[dP00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00M] = &DD[d00P * numberOfLBnodes]; + D.f[d00P] = &DD[d00M * numberOfLBnodes]; + D.f[dMM0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dPP0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dM0M] = &DD[dP0P * numberOfLBnodes]; + D.f[dP0P] = &DD[dM0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dP0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dM0P * numberOfLBnodes]; + D.f[d0MM] = &DD[d0PP * numberOfLBnodes]; + D.f[d0PP] = &DD[d0MM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0PM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dMMM * numberOfLBnodes]; + D.f[dMMP] = &DD[dPPM * numberOfLBnodes]; + D.f[dPMP] = &DD[dMPM * numberOfLBnodes]; + D.f[dMPP] = &DD[dPMM * numberOfLBnodes]; + D.f[dPPM] = &DD[dMMP * numberOfLBnodes]; + D.f[dMMM] = &DD[dPPP * numberOfLBnodes]; + D.f[dPMM] = &DD[dMPP * numberOfLBnodes]; + D.f[dMPM] = &DD[dPMP * numberOfLBnodes]; + } + //////////////////////////////////////////////////////////////////////////////// + const unsigned x = threadIdx.x; // Globaler x-Index + const unsigned y = blockIdx.x; // Globaler y-Index + const unsigned z = blockIdx.y; // Globaler z-Index + + const unsigned nx = blockDim.x; + const unsigned ny = gridDim.x; + + const unsigned k = nx*(ny*z + y) + x; + ////////////////////////////////////////////////////////////////////////// + + if(k<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[dP00 * numberOfBCnodes]; + q_dirW = &QQ[dM00 * numberOfBCnodes]; + q_dirN = &QQ[d0P0 * numberOfBCnodes]; + q_dirS = &QQ[d0M0 * numberOfBCnodes]; + q_dirT = &QQ[d00P * numberOfBCnodes]; + q_dirB = &QQ[d00M * numberOfBCnodes]; + q_dirNE = &QQ[dPP0 * numberOfBCnodes]; + q_dirSW = &QQ[dMM0 * numberOfBCnodes]; + q_dirSE = &QQ[dPM0 * numberOfBCnodes]; + q_dirNW = &QQ[dMP0 * numberOfBCnodes]; + q_dirTE = &QQ[dP0P * numberOfBCnodes]; + q_dirBW = &QQ[dM0M * numberOfBCnodes]; + q_dirBE = &QQ[dP0M * numberOfBCnodes]; + q_dirTW = &QQ[dM0P * numberOfBCnodes]; + q_dirTN = &QQ[d0PP * numberOfBCnodes]; + q_dirBS = &QQ[d0MM * numberOfBCnodes]; + q_dirBN = &QQ[d0PM * numberOfBCnodes]; + q_dirTS = &QQ[d0MP * numberOfBCnodes]; + q_dirTNE = &QQ[dPPP * numberOfBCnodes]; + q_dirTSW = &QQ[dMMP * numberOfBCnodes]; + q_dirTSE = &QQ[dPMP * numberOfBCnodes]; + q_dirTNW = &QQ[dMPP * numberOfBCnodes]; + q_dirBNE = &QQ[dPPM * numberOfBCnodes]; + q_dirBSW = &QQ[dMMM * numberOfBCnodes]; + q_dirBSE = &QQ[dPMM * numberOfBCnodes]; + q_dirBNW = &QQ[dMPM * 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]; + unsigned int ksw = neighborY[kw]; + unsigned int kne = numberOfNodesK; + unsigned int kse = ks; + unsigned int knw = kw; + unsigned int kbw = neighborZ[kw]; + unsigned int kte = numberOfNodesK; + unsigned int kbe = kb; + unsigned int ktw = kw; + unsigned int kbs = neighborZ[ks]; + unsigned int ktn = numberOfNodesK; + 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 = numberOfNodesK; + 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_E = (D.f[dP00])[ke ]; + f_W = (D.f[dM00])[kw ]; + f_N = (D.f[d0P0])[kn ]; + f_S = (D.f[d0M0])[ks ]; + f_T = (D.f[d00P])[kt ]; + f_B = (D.f[d00M])[kb ]; + f_NE = (D.f[dPP0])[kne ]; + f_SW = (D.f[dMM0])[ksw ]; + f_SE = (D.f[dPM0])[kse ]; + f_NW = (D.f[dMP0])[knw ]; + f_TE = (D.f[dP0P])[kte ]; + f_BW = (D.f[dM0M])[kbw ]; + f_BE = (D.f[dP0M])[kbe ]; + f_TW = (D.f[dM0P])[ktw ]; + f_TN = (D.f[d0PP])[ktn ]; + f_BS = (D.f[d0MM])[kbs ]; + f_BN = (D.f[d0PM])[kbn ]; + f_TS = (D.f[d0MP])[kts ]; + f_TNE = (D.f[dPPP])[ktne ]; + f_TSW = (D.f[dMMP])[ktsw ]; + f_TSE = (D.f[dPMP])[ktse ]; + f_TNW = (D.f[dMPP])[ktnw ]; + f_BNE = (D.f[dPPM])[kbne ]; + f_BSW = (D.f[dMMM])[kbsw ]; + f_BSE = (D.f[dPMM])[kbse ]; + f_BNW = (D.f[dMPM])[kbnw ]; + //f_W = (D.f[dP00])[ke ]; + //f_E = (D.f[dM00])[kw ]; + //f_S = (D.f[d0P0])[kn ]; + //f_N = (D.f[d0M0])[ks ]; + //f_B = (D.f[d00P])[kt ]; + //f_T = (D.f[d00M])[kb ]; + //f_SW = (D.f[dPP0])[kne ]; + //f_NE = (D.f[dMM0])[ksw ]; + //f_NW = (D.f[dPM0])[kse ]; + //f_SE = (D.f[dMP0])[knw ]; + //f_BW = (D.f[dP0P])[kte ]; + //f_TE = (D.f[dM0M])[kbw ]; + //f_TW = (D.f[dP0M])[kbe ]; + //f_BE = (D.f[dM0P])[ktw ]; + //f_BS = (D.f[d0PP])[ktn ]; + //f_TN = (D.f[d0MM])[kbs ]; + //f_TS = (D.f[d0PM])[kbn ]; + //f_BN = (D.f[d0MP])[kts ]; + //f_BSW = (D.f[dPPP])[ktne ]; + //f_BNE = (D.f[dMMP])[ktsw ]; + //f_BNW = (D.f[dPMP])[ktse ]; + //f_BSE = (D.f[dMPP])[ktnw ]; + //f_TSW = (D.f[dPPM])[kbne ]; + //f_TNE = (D.f[dMMM])[kbsw ]; + //f_TNW = (D.f[dPMM])[kbse ]; + //f_TSE = (D.f[dMPM])[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[d000])[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); + + + 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 cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3) * (c1o1 + drho); + + ////////////////////////////////////////////////////////////////////////// + if (isEvenTimestep==false) + { + D.f[dP00] = &DD[dP00 * numberOfLBnodes]; + D.f[dM00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00P] = &DD[d00P * numberOfLBnodes]; + D.f[d00M] = &DD[d00M * numberOfLBnodes]; + D.f[dPP0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dMM0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dP0P] = &DD[dP0P * numberOfLBnodes]; + D.f[dM0M] = &DD[dM0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dP0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dM0P * numberOfLBnodes]; + D.f[d0PP] = &DD[d0PP * numberOfLBnodes]; + D.f[d0MM] = &DD[d0MM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0PM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dPPP * numberOfLBnodes]; + D.f[dMMP] = &DD[dMMP * numberOfLBnodes]; + D.f[dPMP] = &DD[dPMP * numberOfLBnodes]; + D.f[dMPP] = &DD[dMPP * numberOfLBnodes]; + D.f[dPPM] = &DD[dPPM * numberOfLBnodes]; + D.f[dMMM] = &DD[dMMM * numberOfLBnodes]; + D.f[dPMM] = &DD[dPMM * numberOfLBnodes]; + D.f[dMPM] = &DD[dMPM * numberOfLBnodes]; + } + else + { + D.f[dM00] = &DD[dP00 * numberOfLBnodes]; + D.f[dP00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00M] = &DD[d00P * numberOfLBnodes]; + D.f[d00P] = &DD[d00M * numberOfLBnodes]; + D.f[dMM0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dPP0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dM0M] = &DD[dP0P * numberOfLBnodes]; + D.f[dP0P] = &DD[dM0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dP0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dM0P * numberOfLBnodes]; + D.f[d0MM] = &DD[d0PP * numberOfLBnodes]; + D.f[d0PP] = &DD[d0MM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0PM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dMMM * numberOfLBnodes]; + D.f[dMMP] = &DD[dPPM * numberOfLBnodes]; + D.f[dPMP] = &DD[dMPM * numberOfLBnodes]; + D.f[dMPP] = &DD[dPMM * numberOfLBnodes]; + D.f[dPPM] = &DD[dMMP * numberOfLBnodes]; + D.f[dMMM] = &DD[dPPP * numberOfLBnodes]; + D.f[dPMM] = &DD[dMPP * numberOfLBnodes]; + D.f[dMPM] = &DD[dPMP * numberOfLBnodes]; + } + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //Test + //(D.f[d000])[k]=c1o10; + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + real VeloX = c0o1; + real VeloY = c0o1; + real VeloZ = c0o1; + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + + //ToDo anders klammern !!!!!! + + q = q_dirE[k]; + if (q>=c0o1 && q<=c1o1) + { + feq=c2o27* (drho/*+three*( vx1 )*/+c9o2*( vx1 )*( vx1 ) * (c1o1 + drho)-cu_sq); + (D.f[dM00])[kw]=((c1o1 - q) * f_E + q * ((f_E + f_W) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c2o27*( VeloX )) / (q + c1o1) ; + //(D.f[dM00])[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[dM00])[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[dP00])[ke]=((c1o1 - q) * f_W + q * ((f_W + f_E) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c2o27*(-VeloX )) / (q + c1o1) ; + //(D.f[dP00])[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[dP00])[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[d0M0])[ks]=((c1o1 - q) * f_N + q * ((f_N + f_S) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c2o27*( VeloY )) / (q + c1o1) ; + //(D.f[d0M0])[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[d0M0])[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[d0P0])[kn]=((c1o1 - q) * f_S + q * ((f_S + f_N) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c2o27*(-VeloY )) / (q + c1o1) ; + //(D.f[d0P0])[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[d0P0])[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[d00M])[kb]=((c1o1 - q) * f_T + q * ((f_T + f_B) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c2o27*( VeloZ )) / (q + c1o1) ; + //(D.f[d00M])[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[d00M])[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[d00P])[kt]=((c1o1 - q) * f_B + q * ((f_B + f_T) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c2o27*(-VeloZ )) / (q + c1o1) ; + //(D.f[d00P])[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[d00P])[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[dMM0])[ksw]=((c1o1 - q) * f_NE + q * ((f_NE + f_SW) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*( VeloX+VeloY)) / (q + c1o1) ; + //(D.f[dMM0])[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[dMM0])[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[dPP0])[kne]=((c1o1 - q) * f_SW + q * ((f_SW + f_NE) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*(-VeloX-VeloY)) / (q + c1o1) ; + //(D.f[dPP0])[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[dPP0])[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[dMP0])[knw]=((c1o1 - q) * f_SE + q * ((f_SE + f_NW) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*( VeloX-VeloY)) / (q + c1o1) ; + //(D.f[dMP0])[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[dMP0])[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[dPM0])[kse]=((c1o1 - q) * f_NW + q * ((f_NW + f_SE) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*(-VeloX+VeloY)) / (q + c1o1) ; + //(D.f[dPM0])[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[dPM0])[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[dM0M])[kbw]=((c1o1 - q) * f_TE + q * ((f_TE + f_BW) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*( VeloX+VeloZ)) / (q + c1o1) ; + //(D.f[dM0M])[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[dM0M])[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[dP0P])[kte]=((c1o1 - q) * f_BW + q * ((f_BW + f_TE) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*(-VeloX-VeloZ)) / (q + c1o1) ; + //(D.f[dP0P])[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[dP0P])[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[dM0P])[ktw]=((c1o1 - q) * f_BE + q * ((f_BE + f_TW) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*( VeloX-VeloZ)) / (q + c1o1) ; + //(D.f[dM0P])[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[dM0P])[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[dP0M])[kbe]=((c1o1 - q) * f_TW + q * ((f_TW + f_BE) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*(-VeloX+VeloZ)) / (q + c1o1) ; + //(D.f[dP0M])[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[dP0M])[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[d0MM])[kbs]=((c1o1 - q) * f_TN + q * ((f_TN + f_BS) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*( VeloY+VeloZ)) / (q + c1o1) ; + //(D.f[d0MM])[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[d0MM])[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[d0PP])[ktn]=((c1o1 - q) * f_BS + q * ((f_BS + f_TN) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*(-VeloY-VeloZ)) / (q + c1o1) ; + //(D.f[d0PP])[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[d0PP])[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[d0MP])[kts]=((c1o1 - q) * f_BN + q * ((f_BN + f_TS) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*( VeloY-VeloZ)) / (q + c1o1) ; + //(D.f[d0MP])[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[d0MP])[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[d0PM])[kbn]=((c1o1 - q) * f_TS + q * ((f_TS + f_BN) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*(-VeloY+VeloZ)) / (q + c1o1) ; + //(D.f[d0PM])[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[d0PM])[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[dMMM])[kbsw]=((c1o1 - q) * f_TNE + q * ((f_TNE + f_BSW) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o216*( VeloX+VeloY+VeloZ)) / (q + c1o1) ; + //(D.f[dMMM])[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[dMMM])[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[dPPP])[ktne]=((c1o1 - q) * f_BSW + q * ((f_BSW + f_TNE) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o216*(-VeloX-VeloY-VeloZ)) / (q + c1o1) ; + //(D.f[dPPP])[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[dPPP])[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[dMMP])[ktsw]=((c1o1 - q) * f_BNE + q * ((f_BNE + f_TSW) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o216*( VeloX+VeloY-VeloZ)) / (q + c1o1) ; + //(D.f[dMMP])[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[dMMP])[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[dPPM])[kbne]=((c1o1 - q) * f_TSW + q * ((f_TSW + f_BNE) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o216*(-VeloX-VeloY+VeloZ)) / (q + c1o1) ; + //(D.f[dPPM])[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[dPPM])[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[dMPM])[kbnw]=((c1o1 - q) * f_TSE + q * ((f_TSE + f_BNW) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o216*( VeloX-VeloY+VeloZ)) / (q + c1o1) ; + //(D.f[dMPM])[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[dMPM])[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[dPMP])[ktse]=((c1o1 - q) * f_BNW + q * ((f_BNW + f_TSE) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o216*(-VeloX+VeloY-VeloZ)) / (q + c1o1) ; + //(D.f[dPMP])[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[dPMP])[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[dMPP])[ktnw]=((c1o1 - q) * f_BSE + q * ((f_BSE + f_TNW) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o216*( VeloX-VeloY-VeloZ)) / (q + c1o1) ; + //(D.f[dMPP])[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[dMPP])[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[dPMM])[kbse]=((c1o1 - q) * f_TNW + q * ((f_TNW + f_BSE) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o216*(-VeloX+VeloY+VeloZ)) / (q + c1o1) ; + //(D.f[dPMM])[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[dPMM])[kbse]=zero; + } + } +} +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +////////////////////////////////////////////////////////////////////////////// +__global__ void QDeviceComp27( + real* distributions, + int* subgridDistanceIndices, + real* subgridDistances, + unsigned int numberOfBCnodes, + real omega, + unsigned int* neighborX, + unsigned int* neighborY, + unsigned int* neighborZ, + unsigned long long numberOfLBnodes, + bool isEvenTimestep) +{ + ////////////////////////////////////////////////////////////////////////// + //! The no-slip boundary condition is executed in the following steps + //! + //////////////////////////////////////////////////////////////////////////////// + //! - Get node index coordinates from threadIdx, blockIdx, blockDim and gridDim. + //! + const unsigned nodeIndex = getNodeIndex(); + + if(nodeIndex < 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); + + //////////////////////////////////////////////////////////////////////////////// + //! - Set local subgrid distances (q's) + //! + SubgridDistances27 subgridD; + getPointersToSubgridDistances(subgridD, subgridDistances, numberOfBCnodes); + + //////////////////////////////////////////////////////////////////////////////// + //! - Set neighbor indices (necessary for indirect addressing) + //! + unsigned int indexOfBCnode = subgridDistanceIndices[nodeIndex]; + 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 = indexOfBCnode; + unsigned int kse = ks; + unsigned int knw = kw; + unsigned int kbw = neighborZ[kw]; + unsigned int kte = indexOfBCnode; + unsigned int kbe = kb; + unsigned int ktw = kw; + unsigned int kbs = neighborZ[ks]; + unsigned int ktn = indexOfBCnode; + 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 = indexOfBCnode; + unsigned int kbsw = neighborZ[ksw]; + + //////////////////////////////////////////////////////////////////////////////// + //! - Set local distributions + //! + real f_W = (dist.f[dP00])[ke ]; + real f_E = (dist.f[dM00])[kw ]; + real f_S = (dist.f[d0P0])[kn ]; + real f_N = (dist.f[d0M0])[ks ]; + real f_B = (dist.f[d00P])[kt ]; + real f_T = (dist.f[d00M])[kb ]; + real f_SW = (dist.f[dPP0])[kne ]; + real f_NE = (dist.f[dMM0])[ksw ]; + real f_NW = (dist.f[dPM0])[kse ]; + real f_SE = (dist.f[dMP0])[knw ]; + real f_BW = (dist.f[dP0P])[kte ]; + real f_TE = (dist.f[dM0M])[kbw ]; + real f_TW = (dist.f[dP0M])[kbe ]; + real f_BE = (dist.f[dM0P])[ktw ]; + real f_BS = (dist.f[d0PP])[ktn ]; + real f_TN = (dist.f[d0MM])[kbs ]; + real f_TS = (dist.f[d0PM])[kbn ]; + real f_BN = (dist.f[d0MP])[kts ]; + real f_BSW = (dist.f[dPPP])[ktne ]; + real f_BNE = (dist.f[dMMP])[ktsw ]; + real f_BNW = (dist.f[dPMP])[ktse ]; + real f_BSE = (dist.f[dMPP])[ktnw ]; + real f_TSW = (dist.f[dPPM])[kbne ]; + real f_TNE = (dist.f[dMMM])[kbsw ]; + real f_TNW = (dist.f[dPMM])[kbse ]; + real f_TSE = (dist.f[dMPM])[kbnw ]; + + //////////////////////////////////////////////////////////////////////////////// + //! - 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[d000])[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); + + 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); + + //////////////////////////////////////////////////////////////////////////////// + //! - Update distributions with subgrid distance (q) between zero and one + real feq, q, velocityLB; + q = (subgridD.q[dP00])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) // only update distribution for q between zero and one + { + velocityLB = vx1; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c2o27); + (dist.f[dM00])[kw] = getInterpolatedDistributionForNoSlipBC(q, f_E, f_W, feq, omega); + } + + q = (subgridD.q[dM00])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) + { + velocityLB = -vx1; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c2o27); + (dist.f[dP00])[ke] = getInterpolatedDistributionForNoSlipBC(q, f_W, f_E, feq, omega); + } + + q = (subgridD.q[d0P0])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) + { + velocityLB = vx2; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c2o27); + (dist.f[d0M0])[ks] = getInterpolatedDistributionForNoSlipBC(q, f_N, f_S, feq, omega); + } + + q = (subgridD.q[d0M0])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) + { + velocityLB = -vx2; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c2o27); + (dist.f[d0P0])[kn] = getInterpolatedDistributionForNoSlipBC(q, f_S, f_N, feq, omega); + } + + q = (subgridD.q[d00P])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) + { + velocityLB = vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c2o27); + (dist.f[d00M])[kb] = getInterpolatedDistributionForNoSlipBC(q, f_T, f_B, feq, omega); + } + + q = (subgridD.q[d00M])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) + { + velocityLB = -vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c2o27); + (dist.f[d00P])[kt] = getInterpolatedDistributionForNoSlipBC(q, f_B, f_T, feq, omega); + } + + q = (subgridD.q[dPP0])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) + { + velocityLB = vx1 + vx2; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + (dist.f[dMM0])[ksw] = getInterpolatedDistributionForNoSlipBC(q, f_NE, f_SW, feq, omega); + } + + q = (subgridD.q[dMM0])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) + { + velocityLB = -vx1 - vx2; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + (dist.f[dPP0])[kne] = getInterpolatedDistributionForNoSlipBC(q, f_SW, f_NE, feq, omega); + } + + q = (subgridD.q[dPM0])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) + { + velocityLB = vx1 - vx2; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + (dist.f[dMP0])[knw] = getInterpolatedDistributionForNoSlipBC(q, f_SE, f_NW, feq, omega); + } + + q = (subgridD.q[dMP0])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) + { + velocityLB = -vx1 + vx2; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + (dist.f[dPM0])[kse] = getInterpolatedDistributionForNoSlipBC(q, f_NW, f_SE, feq, omega); + } + + q = (subgridD.q[dP0P])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) + { + velocityLB = vx1 + vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + (dist.f[dM0M])[kbw] = getInterpolatedDistributionForNoSlipBC(q, f_TE, f_BW, feq, omega); + } + + q = (subgridD.q[dM0M])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) + { + velocityLB = -vx1 - vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + (dist.f[dP0P])[kte] = getInterpolatedDistributionForNoSlipBC(q, f_BW, f_TE, feq, omega); + } + + q = (subgridD.q[dP0M])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) + { + velocityLB = vx1 - vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + (dist.f[dM0P])[ktw] = getInterpolatedDistributionForNoSlipBC(q, f_BE, f_TW, feq, omega); + } + + q = (subgridD.q[dM0P])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) + { + velocityLB = -vx1 + vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + (dist.f[dP0M])[kbe] = getInterpolatedDistributionForNoSlipBC(q, f_TW, f_BE, feq, omega); + } + + q = (subgridD.q[d0PP])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) + { + velocityLB = vx2 + vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + (dist.f[d0MM])[kbs] = getInterpolatedDistributionForNoSlipBC(q, f_TN, f_BS, feq, omega); + } + + q = (subgridD.q[d0MM])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) + { + velocityLB = -vx2 - vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + (dist.f[d0PP])[ktn] = getInterpolatedDistributionForNoSlipBC(q, f_BS, f_TN, feq, omega); + } + + q = (subgridD.q[d0PM])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) + { + velocityLB = vx2 - vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + (dist.f[d0MP])[kts] = getInterpolatedDistributionForNoSlipBC(q, f_BN, f_TS, feq, omega); + } + + q = (subgridD.q[d0MP])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) + { + velocityLB = -vx2 + vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + (dist.f[d0PM])[kbn] = getInterpolatedDistributionForNoSlipBC(q, f_TS, f_BN, feq, omega); + } + + q = (subgridD.q[dPPP])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) + { + velocityLB = vx1 + vx2 + vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); + (dist.f[dMMM])[kbsw] = getInterpolatedDistributionForNoSlipBC(q, f_TNE, f_BSW, feq, omega); + } + + q = (subgridD.q[dMMM])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) + { + velocityLB = -vx1 - vx2 - vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); + (dist.f[dPPP])[ktne] = getInterpolatedDistributionForNoSlipBC(q, f_BSW, f_TNE, feq, omega); + } + + q = (subgridD.q[dPPM])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) + { + velocityLB = vx1 + vx2 - vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); + (dist.f[dMMP])[ktsw] = getInterpolatedDistributionForNoSlipBC(q, f_BNE, f_TSW, feq, omega); + } + + q = (subgridD.q[dMMP])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) + { + velocityLB = -vx1 - vx2 + vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); + (dist.f[dPPM])[kbne] = getInterpolatedDistributionForNoSlipBC(q, f_TSW, f_BNE, feq, omega); + } + + q = (subgridD.q[dPMP])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) + { + velocityLB = vx1 - vx2 + vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); + (dist.f[dMPM])[kbnw] = getInterpolatedDistributionForNoSlipBC(q, f_TSE, f_BNW, feq, omega); + } + + q = (subgridD.q[dMPM])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) + { + velocityLB = -vx1 + vx2 - vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); + (dist.f[dPMP])[ktse] = getInterpolatedDistributionForNoSlipBC(q, f_BNW, f_TSE, feq, omega); + } + + q = (subgridD.q[dPMM])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) + { + velocityLB = vx1 - vx2 - vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); + (dist.f[dMPP])[ktnw] = getInterpolatedDistributionForNoSlipBC(q, f_BSE, f_TNW, feq, omega); + } + + q = (subgridD.q[dMPP])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) + { + velocityLB = -vx1 + vx2 + vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); + (dist.f[dPMM])[kbse] = getInterpolatedDistributionForNoSlipBC(q, f_TNW, f_BSE, feq, omega); + } + } +} +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +////////////////////////////////////////////////////////////////////////////// +__global__ void QDevice27( + real* distributions, + int* subgridDistanceIndices, + real* subgridDistances, + unsigned int numberOfBCnodes, + real omega, + unsigned int* neighborX, + unsigned int* neighborY, + unsigned int* neighborZ, + unsigned long long numberOfLBnodes, + bool isEvenTimestep) +{ + ////////////////////////////////////////////////////////////////////////// + //! The no-slip boundary condition is executed in the following steps + //! + //////////////////////////////////////////////////////////////////////////////// + //! - Get node index coordinates from threadIdx, blockIdx, blockDim and gridDim. + //! + const unsigned nodeIndex = getNodeIndex(); + + ////////////////////////////////////////////////////////////////////////// + //! - Run for all indices in size of boundary condition (numberOfBCnodes) + //! + if(nodeIndex < 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); + + //////////////////////////////////////////////////////////////////////////////// + //! - Set local subgrid distances (q's) + //! + SubgridDistances27 subgridD; + getPointersToSubgridDistances(subgridD, subgridDistances, numberOfBCnodes); + + //////////////////////////////////////////////////////////////////////////////// + //! - Set neighbor indices (necessary for indirect addressing) + //! + unsigned int indexOfBCnode = subgridDistanceIndices[nodeIndex]; + 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 = indexOfBCnode; + unsigned int kse = ks; + unsigned int knw = kw; + unsigned int kbw = neighborZ[kw]; + unsigned int kte = indexOfBCnode; + unsigned int kbe = kb; + unsigned int ktw = kw; + unsigned int kbs = neighborZ[ks]; + unsigned int ktn = indexOfBCnode; + 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 = indexOfBCnode; + unsigned int kbsw = neighborZ[ksw]; + + //////////////////////////////////////////////////////////////////////////////// + //! - Set local distributions + //! + real f_W = (dist.f[dP00])[ke ]; + real f_E = (dist.f[dM00])[kw ]; + real f_S = (dist.f[d0P0])[kn ]; + real f_N = (dist.f[d0M0])[ks ]; + real f_B = (dist.f[d00P])[kt ]; + real f_T = (dist.f[d00M])[kb ]; + real f_SW = (dist.f[dPP0])[kne ]; + real f_NE = (dist.f[dMM0])[ksw ]; + real f_NW = (dist.f[dPM0])[kse ]; + real f_SE = (dist.f[dMP0])[knw ]; + real f_BW = (dist.f[dP0P])[kte ]; + real f_TE = (dist.f[dM0M])[kbw ]; + real f_TW = (dist.f[dP0M])[kbe ]; + real f_BE = (dist.f[dM0P])[ktw ]; + real f_BS = (dist.f[d0PP])[ktn ]; + real f_TN = (dist.f[d0MM])[kbs ]; + real f_TS = (dist.f[d0PM])[kbn ]; + real f_BN = (dist.f[d0MP])[kts ]; + real f_BSW = (dist.f[dPPP])[ktne ]; + real f_BNE = (dist.f[dMMP])[ktsw ]; + real f_BNW = (dist.f[dPMP])[ktse ]; + real f_BSE = (dist.f[dMPP])[ktnw ]; + real f_TSW = (dist.f[dPPM])[kbne ]; + real f_TNE = (dist.f[dMMM])[kbsw ]; + real f_TNW = (dist.f[dPMM])[kbse ]; + real f_TSE = (dist.f[dMPM])[kbnw ]; + + //////////////////////////////////////////////////////////////////////////////// + //! - 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[d000])[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)); + + 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)); + + 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)); + + real cu_sq = c3o2 * (vx1 * vx1 + vx2 * vx2 + vx3 * vx3); + + //////////////////////////////////////////////////////////////////////////////// + //! - 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[dP00])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) // only update distribution for q between zero and one + { + velocityLB = vx1; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c2o27); + (dist.f[dM00])[kw] = getInterpolatedDistributionForNoSlipBC(q, f_E, f_W, feq, omega); + } + + q = (subgridD.q[dM00])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) + { + velocityLB = -vx1; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c2o27); + (dist.f[dP00])[ke] = getInterpolatedDistributionForNoSlipBC(q, f_W, f_E, feq, omega); + } + + q = (subgridD.q[d0P0])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) + { + velocityLB = vx2; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c2o27); + (dist.f[d0M0])[ks] = getInterpolatedDistributionForNoSlipBC(q, f_N, f_S, feq, omega); + } + + q = (subgridD.q[d0M0])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) + { + velocityLB = -vx2; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c2o27); + (dist.f[d0P0])[kn] = getInterpolatedDistributionForNoSlipBC(q, f_S, f_N, feq, omega); + } + + q = (subgridD.q[d00P])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) + { + velocityLB = vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c2o27); + (dist.f[d00M])[kb] = getInterpolatedDistributionForNoSlipBC(q, f_T, f_B, feq, omega); + } + + q = (subgridD.q[d00M])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) + { + velocityLB = -vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c2o27); + (dist.f[d00P])[kt] = getInterpolatedDistributionForNoSlipBC(q, f_B, f_T, feq, omega); + } + + q = (subgridD.q[dPP0])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) + { + velocityLB = vx1 + vx2; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + (dist.f[dMM0])[ksw] = getInterpolatedDistributionForNoSlipBC(q, f_NE, f_SW, feq, omega); + } + + q = (subgridD.q[dMM0])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) + { + velocityLB = -vx1 - vx2; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + (dist.f[dPP0])[kne] = getInterpolatedDistributionForNoSlipBC(q, f_SW, f_NE, feq, omega); + } + + q = (subgridD.q[dPM0])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) + { + velocityLB = vx1 - vx2; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + (dist.f[dMP0])[knw] = getInterpolatedDistributionForNoSlipBC(q, f_SE, f_NW, feq, omega); + } + + q = (subgridD.q[dMP0])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) + { + velocityLB = -vx1 + vx2; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + (dist.f[dPM0])[kse] = getInterpolatedDistributionForNoSlipBC(q, f_NW, f_SE, feq, omega); + } + + q = (subgridD.q[dP0P])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) + { + velocityLB = vx1 + vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + (dist.f[dM0M])[kbw] = getInterpolatedDistributionForNoSlipBC(q, f_TE, f_BW, feq, omega); + } + + q = (subgridD.q[dM0M])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) + { + velocityLB = -vx1 - vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + (dist.f[dP0P])[kte] = getInterpolatedDistributionForNoSlipBC(q, f_BW, f_TE, feq, omega); + } + + q = (subgridD.q[dP0M])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) + { + velocityLB = vx1 - vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + (dist.f[dM0P])[ktw] = getInterpolatedDistributionForNoSlipBC(q, f_BE, f_TW, feq, omega); + } + + q = (subgridD.q[dM0P])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) + { + velocityLB = -vx1 + vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + (dist.f[dP0M])[kbe] = getInterpolatedDistributionForNoSlipBC(q, f_TW, f_BE, feq, omega); + } + + q = (subgridD.q[d0PP])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) + { + velocityLB = vx2 + vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + (dist.f[d0MM])[kbs] = getInterpolatedDistributionForNoSlipBC(q, f_TN, f_BS, feq, omega); + } + + q = (subgridD.q[d0MM])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) + { + velocityLB = -vx2 - vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + (dist.f[d0PP])[ktn] = getInterpolatedDistributionForNoSlipBC(q, f_BS, f_TN, feq, omega); + } + + q = (subgridD.q[d0PM])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) + { + velocityLB = vx2 - vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + (dist.f[d0MP])[kts] = getInterpolatedDistributionForNoSlipBC(q, f_BN, f_TS, feq, omega); + } + + q = (subgridD.q[d0MP])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) + { + velocityLB = -vx2 + vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + (dist.f[d0PM])[kbn] = getInterpolatedDistributionForNoSlipBC(q, f_TS, f_BN, feq, omega); + } + + q = (subgridD.q[dPPP])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) + { + velocityLB = vx1 + vx2 + vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); + (dist.f[dMMM])[kbsw] = getInterpolatedDistributionForNoSlipBC(q, f_TNE, f_BSW, feq, omega); + } + + q = (subgridD.q[dMMM])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) + { + velocityLB = -vx1 - vx2 - vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); + (dist.f[dPPP])[ktne] = getInterpolatedDistributionForNoSlipBC(q, f_BSW, f_TNE, feq, omega); + } + + q = (subgridD.q[dPPM])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) + { + velocityLB = vx1 + vx2 - vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); + (dist.f[dMMP])[ktsw] = getInterpolatedDistributionForNoSlipBC(q, f_BNE, f_TSW, feq, omega); + } + + q = (subgridD.q[dMMP])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) + { + velocityLB = -vx1 - vx2 + vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); + (dist.f[dPPM])[kbne] = getInterpolatedDistributionForNoSlipBC(q, f_TSW, f_BNE, feq, omega); + } + + q = (subgridD.q[dPMP])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) + { + velocityLB = vx1 - vx2 + vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); + (dist.f[dMPM])[kbnw] = getInterpolatedDistributionForNoSlipBC(q, f_TSE, f_BNW, feq, omega); + } + + q = (subgridD.q[dMPM])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) + { + velocityLB = -vx1 + vx2 - vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); + (dist.f[dPMP])[ktse] = getInterpolatedDistributionForNoSlipBC(q, f_BNW, f_TSE, feq, omega); + } + + q = (subgridD.q[dPMM])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) + { + velocityLB = vx1 - vx2 - vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); + (dist.f[dMPP])[ktnw] = getInterpolatedDistributionForNoSlipBC(q, f_BSE, f_TNW, feq, omega); + } + + q = (subgridD.q[dMPP])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) + { + velocityLB = -vx1 + vx2 + vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); + (dist.f[dPMM])[kbse] = getInterpolatedDistributionForNoSlipBC(q, f_TNW, f_BSE, feq, omega); + } + } +} +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +////////////////////////////////////////////////////////////////////////////// +__global__ void BBDevice27( + real* distributions, + int* subgridDistanceIndices, + real* subgridDistances, + unsigned int numberOfBCnodes, + unsigned int* neighborX, + unsigned int* neighborY, + unsigned int* neighborZ, + unsigned long long numberOfLBnodes, + bool isEvenTimestep) +{ + ////////////////////////////////////////////////////////////////////////// + //! The no-slip boundary condition is executed in the following steps + //! + //////////////////////////////////////////////////////////////////////////////// + //! - Get node index coordinates from threadIdx, blockIdx, blockDim and gridDim. + //! + const unsigned nodeIndex = getNodeIndex(); + + ////////////////////////////////////////////////////////////////////////// + // run for all indices in size of boundary condition (numberOfBCnodes) + if(nodeIndex < 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); + + //////////////////////////////////////////////////////////////////////////////// + //! - Set local subgrid distances (q's) + //! + SubgridDistances27 subgridD; + getPointersToSubgridDistances(subgridD, subgridDistances, numberOfBCnodes); + + //////////////////////////////////////////////////////////////////////////////// + //! - Set neighbor indices (necessary for indirect addressing) + //! + unsigned int indexOfBCnode = subgridDistanceIndices[nodeIndex]; + 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 = indexOfBCnode; + unsigned int kse = ks; + unsigned int knw = kw; + unsigned int kbw = neighborZ[kw]; + unsigned int kte = indexOfBCnode; + unsigned int kbe = kb; + unsigned int ktw = kw; + unsigned int kbs = neighborZ[ks]; + unsigned int ktn = indexOfBCnode; + 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 = indexOfBCnode; + unsigned int kbsw = neighborZ[ksw]; + + //////////////////////////////////////////////////////////////////////////////// + //! - Set local distributions + //! + real f_W = (dist.f[dP00])[ke ]; + real f_E = (dist.f[dM00])[kw ]; + real f_S = (dist.f[d0P0])[kn ]; + real f_N = (dist.f[d0M0])[ks ]; + real f_B = (dist.f[d00P])[kt ]; + real f_T = (dist.f[d00M])[kb ]; + real f_SW = (dist.f[dPP0])[kne ]; + real f_NE = (dist.f[dMM0])[ksw ]; + real f_NW = (dist.f[dPM0])[kse ]; + real f_SE = (dist.f[dMP0])[knw ]; + real f_BW = (dist.f[dP0P])[kte ]; + real f_TE = (dist.f[dM0M])[kbw ]; + real f_TW = (dist.f[dP0M])[kbe ]; + real f_BE = (dist.f[dM0P])[ktw ]; + real f_BS = (dist.f[d0PP])[ktn ]; + real f_TN = (dist.f[d0MM])[kbs ]; + real f_TS = (dist.f[d0PM])[kbn ]; + real f_BN = (dist.f[d0MP])[kts ]; + real f_BSW = (dist.f[dPPP])[ktne ]; + real f_BNE = (dist.f[dMMP])[ktsw ]; + real f_BNW = (dist.f[dPMP])[ktse ]; + real f_BSE = (dist.f[dMPP])[ktnw ]; + real f_TSW = (dist.f[dPPM])[kbne ]; + real f_TNE = (dist.f[dMMM])[kbsw ]; + real f_TNW = (dist.f[dPMM])[kbse ]; + real f_TSE = (dist.f[dMPM])[kbnw ]; + + //////////////////////////////////////////////////////////////////////////////// + //! - 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[dP00])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[dM00])[kw ]=f_E ; + q = (subgridD.q[dM00])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[dP00])[ke ]=f_W ; + q = (subgridD.q[d0P0])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[d0M0])[ks ]=f_N ; + q = (subgridD.q[d0M0])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[d0P0])[kn ]=f_S ; + q = (subgridD.q[d00P])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[d00M])[kb ]=f_T ; + q = (subgridD.q[d00M])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[d00P])[kt ]=f_B ; + q = (subgridD.q[dPP0])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[dMM0])[ksw ]=f_NE ; + q = (subgridD.q[dMM0])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[dPP0])[kne ]=f_SW ; + q = (subgridD.q[dPM0])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[dMP0])[knw ]=f_SE ; + q = (subgridD.q[dMP0])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[dPM0])[kse ]=f_NW ; + q = (subgridD.q[dP0P])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[dM0M])[kbw ]=f_TE ; + q = (subgridD.q[dM0M])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[dP0P])[kte ]=f_BW ; + q = (subgridD.q[dP0M])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[dM0P])[ktw ]=f_BE ; + q = (subgridD.q[dM0P])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[dP0M])[kbe ]=f_TW ; + q = (subgridD.q[d0PP])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[d0MM])[kbs ]=f_TN ; + q = (subgridD.q[d0MM])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[d0PP])[ktn ]=f_BS ; + q = (subgridD.q[d0PM])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[d0MP])[kts ]=f_BN ; + q = (subgridD.q[d0MP])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[d0PM])[kbn ]=f_TS ; + q = (subgridD.q[dPPP])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[dMMM])[kbsw]=f_TNE; + q = (subgridD.q[dMMM])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[dPPP])[ktne]=f_BSW; + q = (subgridD.q[dPPM])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[dMMP])[ktsw]=f_BNE; + q = (subgridD.q[dMMP])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[dPPM])[kbne]=f_TSW; + q = (subgridD.q[dPMP])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[dMPM])[kbnw]=f_TSE; + q = (subgridD.q[dMPM])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[dPMP])[ktse]=f_BNW; + q = (subgridD.q[dPMM])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[dMPP])[ktnw]=f_BSE; + q = (subgridD.q[dMPP])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[dPMM])[kbse]=f_TNW; + } +} +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + diff --git a/src/gpu/VirtualFluids_GPU/GPU/Particles.cu b/src/gpu/core/GPU/Particles.cu similarity index 84% rename from src/gpu/VirtualFluids_GPU/GPU/Particles.cu rename to src/gpu/core/GPU/Particles.cu index 7a82c694ef55ff5bc6770b9ae333e2de7ed1938c..6f30a09c1b306f8833649a84f6ee7b702ab83f7e 100644 --- a/src/gpu/VirtualFluids_GPU/GPU/Particles.cu +++ b/src/gpu/core/GPU/Particles.cu @@ -248,63 +248,63 @@ __global__ void MoveParticles( real* coordX, { if (isEvenTimestep==true) { - feC = &DD[DIR_P00 * numberOfLBnodes]; - fwC = &DD[DIR_M00 * numberOfLBnodes]; - fnC = &DD[DIR_0P0 * numberOfLBnodes]; - fsC = &DD[DIR_0M0 * numberOfLBnodes]; - ftC = &DD[DIR_00P * numberOfLBnodes]; - fbC = &DD[DIR_00M * numberOfLBnodes]; - fneC = &DD[DIR_PP0 * numberOfLBnodes]; - fswC = &DD[DIR_MM0 * numberOfLBnodes]; - fseC = &DD[DIR_PM0 * numberOfLBnodes]; - fnwC = &DD[DIR_MP0 * numberOfLBnodes]; - fteC = &DD[DIR_P0P * numberOfLBnodes]; - fbwC = &DD[DIR_M0M * numberOfLBnodes]; - fbeC = &DD[DIR_P0M * numberOfLBnodes]; - ftwC = &DD[DIR_M0P * numberOfLBnodes]; - ftnC = &DD[DIR_0PP * numberOfLBnodes]; - fbsC = &DD[DIR_0MM * numberOfLBnodes]; - fbnC = &DD[DIR_0PM * numberOfLBnodes]; - ftsC = &DD[DIR_0MP * numberOfLBnodes]; - fzeroC = &DD[DIR_000 * numberOfLBnodes]; - ftneC = &DD[DIR_PPP * numberOfLBnodes]; - ftswC = &DD[DIR_MMP * numberOfLBnodes]; - ftseC = &DD[DIR_PMP * numberOfLBnodes]; - ftnwC = &DD[DIR_MPP * numberOfLBnodes]; - fbneC = &DD[DIR_PPM * numberOfLBnodes]; - fbswC = &DD[DIR_MMM * numberOfLBnodes]; - fbseC = &DD[DIR_PMM * numberOfLBnodes]; - fbnwC = &DD[DIR_MPM * numberOfLBnodes]; + feC = &DD[dP00 * numberOfLBnodes]; + fwC = &DD[dM00 * numberOfLBnodes]; + fnC = &DD[d0P0 * numberOfLBnodes]; + fsC = &DD[d0M0 * numberOfLBnodes]; + ftC = &DD[d00P * numberOfLBnodes]; + fbC = &DD[d00M * numberOfLBnodes]; + fneC = &DD[dPP0 * numberOfLBnodes]; + fswC = &DD[dMM0 * numberOfLBnodes]; + fseC = &DD[dPM0 * numberOfLBnodes]; + fnwC = &DD[dMP0 * numberOfLBnodes]; + fteC = &DD[dP0P * numberOfLBnodes]; + fbwC = &DD[dM0M * numberOfLBnodes]; + fbeC = &DD[dP0M * numberOfLBnodes]; + ftwC = &DD[dM0P * numberOfLBnodes]; + ftnC = &DD[d0PP * numberOfLBnodes]; + fbsC = &DD[d0MM * numberOfLBnodes]; + fbnC = &DD[d0PM * numberOfLBnodes]; + ftsC = &DD[d0MP * numberOfLBnodes]; + fzeroC = &DD[d000 * numberOfLBnodes]; + ftneC = &DD[dPPP * numberOfLBnodes]; + ftswC = &DD[dMMP * numberOfLBnodes]; + ftseC = &DD[dPMP * numberOfLBnodes]; + ftnwC = &DD[dMPP * numberOfLBnodes]; + fbneC = &DD[dPPM * numberOfLBnodes]; + fbswC = &DD[dMMM * numberOfLBnodes]; + fbseC = &DD[dPMM * numberOfLBnodes]; + fbnwC = &DD[dMPM * numberOfLBnodes]; } else { - fwC = &DD[DIR_P00 * numberOfLBnodes]; - feC = &DD[DIR_M00 * numberOfLBnodes]; - fsC = &DD[DIR_0P0 * numberOfLBnodes]; - fnC = &DD[DIR_0M0 * numberOfLBnodes]; - fbC = &DD[DIR_00P * numberOfLBnodes]; - ftC = &DD[DIR_00M * numberOfLBnodes]; - fswC = &DD[DIR_PP0 * numberOfLBnodes]; - fneC = &DD[DIR_MM0 * numberOfLBnodes]; - fnwC = &DD[DIR_PM0 * numberOfLBnodes]; - fseC = &DD[DIR_MP0 * numberOfLBnodes]; - fbwC = &DD[DIR_P0P * numberOfLBnodes]; - fteC = &DD[DIR_M0M * numberOfLBnodes]; - ftwC = &DD[DIR_P0M * numberOfLBnodes]; - fbeC = &DD[DIR_M0P * numberOfLBnodes]; - fbsC = &DD[DIR_0PP * numberOfLBnodes]; - ftnC = &DD[DIR_0MM * numberOfLBnodes]; - ftsC = &DD[DIR_0PM * numberOfLBnodes]; - fbnC = &DD[DIR_0MP * numberOfLBnodes]; - fzeroC = &DD[DIR_000 * numberOfLBnodes]; - fbswC = &DD[DIR_PPP * numberOfLBnodes]; - fbneC = &DD[DIR_MMP * numberOfLBnodes]; - fbnwC = &DD[DIR_PMP * numberOfLBnodes]; - fbseC = &DD[DIR_MPP * numberOfLBnodes]; - ftswC = &DD[DIR_PPM * numberOfLBnodes]; - ftneC = &DD[DIR_MMM * numberOfLBnodes]; - ftnwC = &DD[DIR_PMM * numberOfLBnodes]; - ftseC = &DD[DIR_MPM * numberOfLBnodes]; + fwC = &DD[dP00 * numberOfLBnodes]; + feC = &DD[dM00 * numberOfLBnodes]; + fsC = &DD[d0P0 * numberOfLBnodes]; + fnC = &DD[d0M0 * numberOfLBnodes]; + fbC = &DD[d00P * numberOfLBnodes]; + ftC = &DD[d00M * numberOfLBnodes]; + fswC = &DD[dPP0 * numberOfLBnodes]; + fneC = &DD[dMM0 * numberOfLBnodes]; + fnwC = &DD[dPM0 * numberOfLBnodes]; + fseC = &DD[dMP0 * numberOfLBnodes]; + fbwC = &DD[dP0P * numberOfLBnodes]; + fteC = &DD[dM0M * numberOfLBnodes]; + ftwC = &DD[dP0M * numberOfLBnodes]; + fbeC = &DD[dM0P * numberOfLBnodes]; + fbsC = &DD[d0PP * numberOfLBnodes]; + ftnC = &DD[d0MM * numberOfLBnodes]; + ftsC = &DD[d0PM * numberOfLBnodes]; + fbnC = &DD[d0MP * numberOfLBnodes]; + fzeroC = &DD[d000 * numberOfLBnodes]; + fbswC = &DD[dPPP * numberOfLBnodes]; + fbneC = &DD[dMMP * numberOfLBnodes]; + fbnwC = &DD[dPMP * numberOfLBnodes]; + fbseC = &DD[dMPP * numberOfLBnodes]; + ftswC = &DD[dPPM * numberOfLBnodes]; + ftneC = &DD[dMMM * numberOfLBnodes]; + ftnwC = &DD[dPMM * numberOfLBnodes]; + ftseC = &DD[dMPM * numberOfLBnodes]; } ////////////////////////////////////////////////////////////////////////// @@ -1114,63 +1114,63 @@ __global__ void MoveParticlesWithoutBCs( real* coordX, { if (isEvenTimestep==true) { - feC = &DD[DIR_P00 * numberOfLBnodes]; - fwC = &DD[DIR_M00 * numberOfLBnodes]; - fnC = &DD[DIR_0P0 * numberOfLBnodes]; - fsC = &DD[DIR_0M0 * numberOfLBnodes]; - ftC = &DD[DIR_00P * numberOfLBnodes]; - fbC = &DD[DIR_00M * numberOfLBnodes]; - fneC = &DD[DIR_PP0 * numberOfLBnodes]; - fswC = &DD[DIR_MM0 * numberOfLBnodes]; - fseC = &DD[DIR_PM0 * numberOfLBnodes]; - fnwC = &DD[DIR_MP0 * numberOfLBnodes]; - fteC = &DD[DIR_P0P * numberOfLBnodes]; - fbwC = &DD[DIR_M0M * numberOfLBnodes]; - fbeC = &DD[DIR_P0M * numberOfLBnodes]; - ftwC = &DD[DIR_M0P * numberOfLBnodes]; - ftnC = &DD[DIR_0PP * numberOfLBnodes]; - fbsC = &DD[DIR_0MM * numberOfLBnodes]; - fbnC = &DD[DIR_0PM * numberOfLBnodes]; - ftsC = &DD[DIR_0MP * numberOfLBnodes]; - fzeroC = &DD[DIR_000 * numberOfLBnodes]; - ftneC = &DD[DIR_PPP * numberOfLBnodes]; - ftswC = &DD[DIR_MMP * numberOfLBnodes]; - ftseC = &DD[DIR_PMP * numberOfLBnodes]; - ftnwC = &DD[DIR_MPP * numberOfLBnodes]; - fbneC = &DD[DIR_PPM * numberOfLBnodes]; - fbswC = &DD[DIR_MMM * numberOfLBnodes]; - fbseC = &DD[DIR_PMM * numberOfLBnodes]; - fbnwC = &DD[DIR_MPM * numberOfLBnodes]; + feC = &DD[dP00 * numberOfLBnodes]; + fwC = &DD[dM00 * numberOfLBnodes]; + fnC = &DD[d0P0 * numberOfLBnodes]; + fsC = &DD[d0M0 * numberOfLBnodes]; + ftC = &DD[d00P * numberOfLBnodes]; + fbC = &DD[d00M * numberOfLBnodes]; + fneC = &DD[dPP0 * numberOfLBnodes]; + fswC = &DD[dMM0 * numberOfLBnodes]; + fseC = &DD[dPM0 * numberOfLBnodes]; + fnwC = &DD[dMP0 * numberOfLBnodes]; + fteC = &DD[dP0P * numberOfLBnodes]; + fbwC = &DD[dM0M * numberOfLBnodes]; + fbeC = &DD[dP0M * numberOfLBnodes]; + ftwC = &DD[dM0P * numberOfLBnodes]; + ftnC = &DD[d0PP * numberOfLBnodes]; + fbsC = &DD[d0MM * numberOfLBnodes]; + fbnC = &DD[d0PM * numberOfLBnodes]; + ftsC = &DD[d0MP * numberOfLBnodes]; + fzeroC = &DD[d000 * numberOfLBnodes]; + ftneC = &DD[dPPP * numberOfLBnodes]; + ftswC = &DD[dMMP * numberOfLBnodes]; + ftseC = &DD[dPMP * numberOfLBnodes]; + ftnwC = &DD[dMPP * numberOfLBnodes]; + fbneC = &DD[dPPM * numberOfLBnodes]; + fbswC = &DD[dMMM * numberOfLBnodes]; + fbseC = &DD[dPMM * numberOfLBnodes]; + fbnwC = &DD[dMPM * numberOfLBnodes]; } else { - fwC = &DD[DIR_P00 * numberOfLBnodes]; - feC = &DD[DIR_M00 * numberOfLBnodes]; - fsC = &DD[DIR_0P0 * numberOfLBnodes]; - fnC = &DD[DIR_0M0 * numberOfLBnodes]; - fbC = &DD[DIR_00P * numberOfLBnodes]; - ftC = &DD[DIR_00M * numberOfLBnodes]; - fswC = &DD[DIR_PP0 * numberOfLBnodes]; - fneC = &DD[DIR_MM0 * numberOfLBnodes]; - fnwC = &DD[DIR_PM0 * numberOfLBnodes]; - fseC = &DD[DIR_MP0 * numberOfLBnodes]; - fbwC = &DD[DIR_P0P * numberOfLBnodes]; - fteC = &DD[DIR_M0M * numberOfLBnodes]; - ftwC = &DD[DIR_P0M * numberOfLBnodes]; - fbeC = &DD[DIR_M0P * numberOfLBnodes]; - fbsC = &DD[DIR_0PP * numberOfLBnodes]; - ftnC = &DD[DIR_0MM * numberOfLBnodes]; - ftsC = &DD[DIR_0PM * numberOfLBnodes]; - fbnC = &DD[DIR_0MP * numberOfLBnodes]; - fzeroC = &DD[DIR_000 * numberOfLBnodes]; - fbswC = &DD[DIR_PPP * numberOfLBnodes]; - fbneC = &DD[DIR_MMP * numberOfLBnodes]; - fbnwC = &DD[DIR_PMP * numberOfLBnodes]; - fbseC = &DD[DIR_MPP * numberOfLBnodes]; - ftswC = &DD[DIR_PPM * numberOfLBnodes]; - ftneC = &DD[DIR_MMM * numberOfLBnodes]; - ftnwC = &DD[DIR_PMM * numberOfLBnodes]; - ftseC = &DD[DIR_MPM * numberOfLBnodes]; + fwC = &DD[dP00 * numberOfLBnodes]; + feC = &DD[dM00 * numberOfLBnodes]; + fsC = &DD[d0P0 * numberOfLBnodes]; + fnC = &DD[d0M0 * numberOfLBnodes]; + fbC = &DD[d00P * numberOfLBnodes]; + ftC = &DD[d00M * numberOfLBnodes]; + fswC = &DD[dPP0 * numberOfLBnodes]; + fneC = &DD[dMM0 * numberOfLBnodes]; + fnwC = &DD[dPM0 * numberOfLBnodes]; + fseC = &DD[dMP0 * numberOfLBnodes]; + fbwC = &DD[dP0P * numberOfLBnodes]; + fteC = &DD[dM0M * numberOfLBnodes]; + ftwC = &DD[dP0M * numberOfLBnodes]; + fbeC = &DD[dM0P * numberOfLBnodes]; + fbsC = &DD[d0PP * numberOfLBnodes]; + ftnC = &DD[d0MM * numberOfLBnodes]; + ftsC = &DD[d0PM * numberOfLBnodes]; + fbnC = &DD[d0MP * numberOfLBnodes]; + fzeroC = &DD[d000 * numberOfLBnodes]; + fbswC = &DD[dPPP * numberOfLBnodes]; + fbneC = &DD[dMMP * numberOfLBnodes]; + fbnwC = &DD[dPMP * numberOfLBnodes]; + fbseC = &DD[dMPP * numberOfLBnodes]; + ftswC = &DD[dPPM * numberOfLBnodes]; + ftneC = &DD[dMMM * numberOfLBnodes]; + ftnwC = &DD[dPMM * numberOfLBnodes]; + ftseC = &DD[dMPM * numberOfLBnodes]; } ////////////////////////////////////////////////////////////////////////// @@ -1937,63 +1937,63 @@ __global__ void ParticleNoSlipDeviceComp27(real* coordX, //Distributions27 D; //if (isEvenTimestep==true) //{ - // D.f[DIR_P00] = &DD[DIR_P00 * size_Mat]; - // D.f[DIR_M00] = &DD[DIR_M00 * size_Mat]; - // D.f[DIR_0P0] = &DD[DIR_0P0 * size_Mat]; - // D.f[DIR_0M0] = &DD[DIR_0M0 * size_Mat]; - // D.f[DIR_00P] = &DD[DIR_00P * size_Mat]; - // D.f[DIR_00M] = &DD[DIR_00M * size_Mat]; - // D.f[DIR_PP0] = &DD[DIR_PP0 * size_Mat]; - // D.f[DIR_MM0] = &DD[DIR_MM0 * size_Mat]; - // D.f[DIR_PM0] = &DD[DIR_PM0 * size_Mat]; - // D.f[DIR_MP0] = &DD[DIR_MP0 * size_Mat]; - // D.f[DIR_P0P] = &DD[DIR_P0P * size_Mat]; - // D.f[DIR_M0M] = &DD[DIR_M0M * size_Mat]; - // D.f[DIR_P0M] = &DD[DIR_P0M * size_Mat]; - // D.f[DIR_M0P] = &DD[DIR_M0P * size_Mat]; - // D.f[DIR_0PP] = &DD[DIR_0PP * size_Mat]; - // D.f[DIR_0MM] = &DD[DIR_0MM * size_Mat]; - // D.f[DIR_0PM] = &DD[DIR_0PM * size_Mat]; - // D.f[DIR_0MP] = &DD[DIR_0MP * size_Mat]; - // D.f[DIR_000] = &DD[DIR_000 * size_Mat]; - // D.f[DIR_PPP] = &DD[DIR_PPP * size_Mat]; - // D.f[DIR_MMP] = &DD[DIR_MMP * size_Mat]; - // D.f[DIR_PMP] = &DD[DIR_PMP * size_Mat]; - // D.f[DIR_MPP] = &DD[DIR_MPP * size_Mat]; - // D.f[DIR_PPM] = &DD[DIR_PPM * size_Mat]; - // D.f[DIR_MMM] = &DD[DIR_MMM * size_Mat]; - // D.f[DIR_PMM] = &DD[DIR_PMM * size_Mat]; - // D.f[DIR_MPM] = &DD[DIR_MPM * size_Mat]; + // D.f[dP00] = &DD[dP00 * size_Mat]; + // D.f[dM00] = &DD[dM00 * size_Mat]; + // D.f[d0P0] = &DD[d0P0 * size_Mat]; + // D.f[d0M0] = &DD[d0M0 * size_Mat]; + // D.f[d00P] = &DD[d00P * size_Mat]; + // D.f[d00M] = &DD[d00M * size_Mat]; + // D.f[dPP0] = &DD[dPP0 * size_Mat]; + // D.f[dMM0] = &DD[dMM0 * size_Mat]; + // D.f[dPM0] = &DD[dPM0 * size_Mat]; + // D.f[dMP0] = &DD[dMP0 * size_Mat]; + // D.f[dP0P] = &DD[dP0P * size_Mat]; + // D.f[dM0M] = &DD[dM0M * size_Mat]; + // D.f[dP0M] = &DD[dP0M * size_Mat]; + // D.f[dM0P] = &DD[dM0P * size_Mat]; + // D.f[d0PP] = &DD[d0PP * size_Mat]; + // D.f[d0MM] = &DD[d0MM * size_Mat]; + // D.f[d0PM] = &DD[d0PM * size_Mat]; + // D.f[d0MP] = &DD[d0MP * size_Mat]; + // D.f[d000] = &DD[d000 * size_Mat]; + // D.f[dPPP] = &DD[dPPP * size_Mat]; + // D.f[dMMP] = &DD[dMMP * size_Mat]; + // D.f[dPMP] = &DD[dPMP * size_Mat]; + // D.f[dMPP] = &DD[dMPP * size_Mat]; + // D.f[dPPM] = &DD[dPPM * size_Mat]; + // D.f[dMMM] = &DD[dMMM * size_Mat]; + // D.f[dPMM] = &DD[dPMM * size_Mat]; + // D.f[dMPM] = &DD[dMPM * size_Mat]; //} //else //{ - // D.f[DIR_M00] = &DD[DIR_P00 * size_Mat]; - // D.f[DIR_P00] = &DD[DIR_M00 * size_Mat]; - // D.f[DIR_0M0] = &DD[DIR_0P0 * size_Mat]; - // D.f[DIR_0P0] = &DD[DIR_0M0 * size_Mat]; - // D.f[DIR_00M] = &DD[DIR_00P * size_Mat]; - // D.f[DIR_00P] = &DD[DIR_00M * size_Mat]; - // D.f[DIR_MM0] = &DD[DIR_PP0 * size_Mat]; - // D.f[DIR_PP0] = &DD[DIR_MM0 * size_Mat]; - // D.f[DIR_MP0] = &DD[DIR_PM0 * size_Mat]; - // D.f[DIR_PM0] = &DD[DIR_MP0 * size_Mat]; - // D.f[DIR_M0M] = &DD[DIR_P0P * size_Mat]; - // D.f[DIR_P0P] = &DD[DIR_M0M * size_Mat]; - // D.f[DIR_M0P] = &DD[DIR_P0M * size_Mat]; - // D.f[DIR_P0M] = &DD[DIR_M0P * size_Mat]; - // D.f[DIR_0MM] = &DD[DIR_0PP * size_Mat]; - // D.f[DIR_0PP] = &DD[DIR_0MM * size_Mat]; - // D.f[DIR_0MP] = &DD[DIR_0PM * size_Mat]; - // D.f[DIR_0PM] = &DD[DIR_0MP * size_Mat]; - // D.f[DIR_000] = &DD[DIR_000 * size_Mat]; - // D.f[DIR_PPP] = &DD[DIR_MMM * size_Mat]; - // D.f[DIR_MMP] = &DD[DIR_PPM * size_Mat]; - // D.f[DIR_PMP] = &DD[DIR_MPM * size_Mat]; - // D.f[DIR_MPP] = &DD[DIR_PMM * size_Mat]; - // D.f[DIR_PPM] = &DD[DIR_MMP * size_Mat]; - // D.f[DIR_MMM] = &DD[DIR_PPP * size_Mat]; - // D.f[DIR_PMM] = &DD[DIR_MPP * size_Mat]; - // D.f[DIR_MPM] = &DD[DIR_PMP * size_Mat]; + // D.f[dM00] = &DD[dP00 * size_Mat]; + // D.f[dP00] = &DD[dM00 * size_Mat]; + // D.f[d0M0] = &DD[d0P0 * size_Mat]; + // D.f[d0P0] = &DD[d0M0 * size_Mat]; + // D.f[d00M] = &DD[d00P * size_Mat]; + // D.f[d00P] = &DD[d00M * size_Mat]; + // D.f[dMM0] = &DD[dPP0 * size_Mat]; + // D.f[dPP0] = &DD[dMM0 * size_Mat]; + // D.f[dMP0] = &DD[dPM0 * size_Mat]; + // D.f[dPM0] = &DD[dMP0 * size_Mat]; + // D.f[dM0M] = &DD[dP0P * size_Mat]; + // D.f[dP0P] = &DD[dM0M * size_Mat]; + // D.f[dM0P] = &DD[dP0M * size_Mat]; + // D.f[dP0M] = &DD[dM0P * size_Mat]; + // D.f[d0MM] = &DD[d0PP * size_Mat]; + // D.f[d0PP] = &DD[d0MM * size_Mat]; + // D.f[d0MP] = &DD[d0PM * size_Mat]; + // D.f[d0PM] = &DD[d0MP * size_Mat]; + // D.f[d000] = &DD[d000 * size_Mat]; + // D.f[dPPP] = &DD[dMMM * size_Mat]; + // D.f[dMMP] = &DD[dPPM * size_Mat]; + // D.f[dPMP] = &DD[dMPM * size_Mat]; + // D.f[dMPP] = &DD[dPMM * size_Mat]; + // D.f[dPPM] = &DD[dMMP * size_Mat]; + // D.f[dMMM] = &DD[dPPP * size_Mat]; + // D.f[dPMM] = &DD[dMPP * size_Mat]; + // D.f[dMPM] = &DD[dPMP * size_Mat]; //} ////////////////////////////////////////////////////////////////////////////////// //const unsigned x = threadIdx.x; // Globaler x-Index @@ -2015,128 +2015,128 @@ __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[DIR_P00 * numberOfBCnodes]; - // q_dirW = &QQ[DIR_M00 * numberOfBCnodes]; - // // q_dirN = &QQ[DIR_0P0 * numberOfBCnodes]; - // q_dirS = &QQ[DIR_0M0 * numberOfBCnodes]; - // // q_dirT = &QQ[DIR_00P * numberOfBCnodes]; - // q_dirB = &QQ[DIR_00M * numberOfBCnodes]; - // // q_dirNE = &QQ[DIR_PP0 * numberOfBCnodes]; - // // q_dirSW = &QQ[DIR_MM0 * numberOfBCnodes]; - // // q_dirSE = &QQ[DIR_PM0 * numberOfBCnodes]; - // // q_dirNW = &QQ[DIR_MP0 * numberOfBCnodes]; - // // q_dirTE = &QQ[DIR_P0P * numberOfBCnodes]; - // // q_dirBW = &QQ[DIR_M0M * numberOfBCnodes]; - // // q_dirBE = &QQ[DIR_P0M * numberOfBCnodes]; - // // q_dirTW = &QQ[DIR_M0P * numberOfBCnodes]; - // // q_dirTN = &QQ[DIR_0PP * numberOfBCnodes]; - // // q_dirBS = &QQ[DIR_0MM * numberOfBCnodes]; - // // q_dirBN = &QQ[DIR_0PM * numberOfBCnodes]; - // // q_dirTS = &QQ[DIR_0MP * numberOfBCnodes]; - // // q_dirTNE = &QQ[DIR_PPP * numberOfBCnodes]; - // // q_dirTSW = &QQ[DIR_MMP * numberOfBCnodes]; - // // q_dirTSE = &QQ[DIR_PMP * numberOfBCnodes]; - // // q_dirTNW = &QQ[DIR_MPP * numberOfBCnodes]; - // // q_dirBNE = &QQ[DIR_PPM * numberOfBCnodes]; - // // q_dirBSW = &QQ[DIR_MMM * numberOfBCnodes]; - // // q_dirBSE = &QQ[DIR_PMM * numberOfBCnodes]; - // // q_dirBNW = &QQ[DIR_MPM * numberOfBCnodes]; + // // q_dirE = &QQ[dP00 * numberOfBCnodes]; + // q_dirW = &QQ[dM00 * numberOfBCnodes]; + // // q_dirN = &QQ[d0P0 * numberOfBCnodes]; + // q_dirS = &QQ[d0M0 * numberOfBCnodes]; + // // q_dirT = &QQ[d00P * numberOfBCnodes]; + // q_dirB = &QQ[d00M * numberOfBCnodes]; + // // q_dirNE = &QQ[dPP0 * numberOfBCnodes]; + // // q_dirSW = &QQ[dMM0 * numberOfBCnodes]; + // // q_dirSE = &QQ[dPM0 * numberOfBCnodes]; + // // q_dirNW = &QQ[dMP0 * numberOfBCnodes]; + // // q_dirTE = &QQ[dP0P * numberOfBCnodes]; + // // q_dirBW = &QQ[dM0M * numberOfBCnodes]; + // // q_dirBE = &QQ[dP0M * numberOfBCnodes]; + // // q_dirTW = &QQ[dM0P * numberOfBCnodes]; + // // q_dirTN = &QQ[d0PP * numberOfBCnodes]; + // // q_dirBS = &QQ[d0MM * numberOfBCnodes]; + // // q_dirBN = &QQ[d0PM * numberOfBCnodes]; + // // q_dirTS = &QQ[d0MP * numberOfBCnodes]; + // // q_dirTNE = &QQ[dPPP * numberOfBCnodes]; + // // q_dirTSW = &QQ[dMMP * numberOfBCnodes]; + // // q_dirTSE = &QQ[dPMP * numberOfBCnodes]; + // // q_dirTNW = &QQ[dMPP * numberOfBCnodes]; + // // q_dirBNE = &QQ[dPPM * numberOfBCnodes]; + // // q_dirBSW = &QQ[dMMM * numberOfBCnodes]; + // // q_dirBSE = &QQ[dPMM * numberOfBCnodes]; + // // q_dirBNW = &QQ[dMPM * 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[DIR_P00 * numberOfBCnodes]; - // // nx_dirW = &NormalX[DIR_M00 * numberOfBCnodes]; - // // nx_dirN = &NormalX[DIR_0P0 * numberOfBCnodes]; - // // nx_dirS = &NormalX[DIR_0M0 * numberOfBCnodes]; - // // nx_dirT = &NormalX[DIR_00P * numberOfBCnodes]; - // // nx_dirB = &NormalX[DIR_00M * numberOfBCnodes]; - // // nx_dirNE = &NormalX[DIR_PP0 * numberOfBCnodes]; - // // nx_dirSW = &NormalX[DIR_MM0 * numberOfBCnodes]; - // // nx_dirSE = &NormalX[DIR_PM0 * numberOfBCnodes]; - // // nx_dirNW = &NormalX[DIR_MP0 * numberOfBCnodes]; - // // nx_dirTE = &NormalX[DIR_P0P * numberOfBCnodes]; - // // nx_dirBW = &NormalX[DIR_M0M * numberOfBCnodes]; - // // nx_dirBE = &NormalX[DIR_P0M * numberOfBCnodes]; - // // nx_dirTW = &NormalX[DIR_M0P * numberOfBCnodes]; - // // nx_dirTN = &NormalX[DIR_0PP * numberOfBCnodes]; - // // nx_dirBS = &NormalX[DIR_0MM * numberOfBCnodes]; - // // nx_dirBN = &NormalX[DIR_0PM * numberOfBCnodes]; - // // nx_dirTS = &NormalX[DIR_0MP * numberOfBCnodes]; - // // nx_dirTNE = &NormalX[DIR_PPP * numberOfBCnodes]; - // // nx_dirTSW = &NormalX[DIR_MMP * numberOfBCnodes]; - // // nx_dirTSE = &NormalX[DIR_PMP * numberOfBCnodes]; - // // nx_dirTNW = &NormalX[DIR_MPP * numberOfBCnodes]; - // // nx_dirBNE = &NormalX[DIR_PPM * numberOfBCnodes]; - // // nx_dirBSW = &NormalX[DIR_MMM * numberOfBCnodes]; - // // nx_dirBSE = &NormalX[DIR_PMM * numberOfBCnodes]; - // // nx_dirBNW = &NormalX[DIR_MPM * numberOfBCnodes]; + // // nx_dirE = &NormalX[dP00 * numberOfBCnodes]; + // // nx_dirW = &NormalX[dM00 * numberOfBCnodes]; + // // nx_dirN = &NormalX[d0P0 * numberOfBCnodes]; + // // nx_dirS = &NormalX[d0M0 * numberOfBCnodes]; + // // nx_dirT = &NormalX[d00P * numberOfBCnodes]; + // // nx_dirB = &NormalX[d00M * numberOfBCnodes]; + // // nx_dirNE = &NormalX[dPP0 * numberOfBCnodes]; + // // nx_dirSW = &NormalX[dMM0 * numberOfBCnodes]; + // // nx_dirSE = &NormalX[dPM0 * numberOfBCnodes]; + // // nx_dirNW = &NormalX[dMP0 * numberOfBCnodes]; + // // nx_dirTE = &NormalX[dP0P * numberOfBCnodes]; + // // nx_dirBW = &NormalX[dM0M * numberOfBCnodes]; + // // nx_dirBE = &NormalX[dP0M * numberOfBCnodes]; + // // nx_dirTW = &NormalX[dM0P * numberOfBCnodes]; + // // nx_dirTN = &NormalX[d0PP * numberOfBCnodes]; + // // nx_dirBS = &NormalX[d0MM * numberOfBCnodes]; + // // nx_dirBN = &NormalX[d0PM * numberOfBCnodes]; + // // nx_dirTS = &NormalX[d0MP * numberOfBCnodes]; + // // nx_dirTNE = &NormalX[dPPP * numberOfBCnodes]; + // // nx_dirTSW = &NormalX[dMMP * numberOfBCnodes]; + // // nx_dirTSE = &NormalX[dPMP * numberOfBCnodes]; + // // nx_dirTNW = &NormalX[dMPP * numberOfBCnodes]; + // // nx_dirBNE = &NormalX[dPPM * numberOfBCnodes]; + // // nx_dirBSW = &NormalX[dMMM * numberOfBCnodes]; + // // nx_dirBSE = &NormalX[dPMM * numberOfBCnodes]; + // // nx_dirBNW = &NormalX[dMPM * 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[DIR_P00 * numberOfBCnodes]; - // // ny_dirW = &NormalY[DIR_M00 * numberOfBCnodes]; - // // ny_dirN = &NormalY[DIR_0P0 * numberOfBCnodes]; - // // ny_dirS = &NormalY[DIR_0M0 * numberOfBCnodes]; - // // ny_dirT = &NormalY[DIR_00P * numberOfBCnodes]; - // // ny_dirB = &NormalY[DIR_00M * numberOfBCnodes]; - // // ny_dirNE = &NormalY[DIR_PP0 * numberOfBCnodes]; - // // ny_dirSW = &NormalY[DIR_MM0 * numberOfBCnodes]; - // // ny_dirSE = &NormalY[DIR_PM0 * numberOfBCnodes]; - // // ny_dirNW = &NormalY[DIR_MP0 * numberOfBCnodes]; - // // ny_dirTE = &NormalY[DIR_P0P * numberOfBCnodes]; - // // ny_dirBW = &NormalY[DIR_M0M * numberOfBCnodes]; - // // ny_dirBE = &NormalY[DIR_P0M * numberOfBCnodes]; - // // ny_dirTW = &NormalY[DIR_M0P * numberOfBCnodes]; - // // ny_dirTN = &NormalY[DIR_0PP * numberOfBCnodes]; - // // ny_dirBS = &NormalY[DIR_0MM * numberOfBCnodes]; - // // ny_dirBN = &NormalY[DIR_0PM * numberOfBCnodes]; - // // ny_dirTS = &NormalY[DIR_0MP * numberOfBCnodes]; - // // ny_dirTNE = &NormalY[DIR_PPP * numberOfBCnodes]; - // // ny_dirTSW = &NormalY[DIR_MMP * numberOfBCnodes]; - // // ny_dirTSE = &NormalY[DIR_PMP * numberOfBCnodes]; - // // ny_dirTNW = &NormalY[DIR_MPP * numberOfBCnodes]; - // // ny_dirBNE = &NormalY[DIR_PPM * numberOfBCnodes]; - // // ny_dirBSW = &NormalY[DIR_MMM * numberOfBCnodes]; - // // ny_dirBSE = &NormalY[DIR_PMM * numberOfBCnodes]; - // // ny_dirBNW = &NormalY[DIR_MPM * numberOfBCnodes]; + // // ny_dirE = &NormalY[dP00 * numberOfBCnodes]; + // // ny_dirW = &NormalY[dM00 * numberOfBCnodes]; + // // ny_dirN = &NormalY[d0P0 * numberOfBCnodes]; + // // ny_dirS = &NormalY[d0M0 * numberOfBCnodes]; + // // ny_dirT = &NormalY[d00P * numberOfBCnodes]; + // // ny_dirB = &NormalY[d00M * numberOfBCnodes]; + // // ny_dirNE = &NormalY[dPP0 * numberOfBCnodes]; + // // ny_dirSW = &NormalY[dMM0 * numberOfBCnodes]; + // // ny_dirSE = &NormalY[dPM0 * numberOfBCnodes]; + // // ny_dirNW = &NormalY[dMP0 * numberOfBCnodes]; + // // ny_dirTE = &NormalY[dP0P * numberOfBCnodes]; + // // ny_dirBW = &NormalY[dM0M * numberOfBCnodes]; + // // ny_dirBE = &NormalY[dP0M * numberOfBCnodes]; + // // ny_dirTW = &NormalY[dM0P * numberOfBCnodes]; + // // ny_dirTN = &NormalY[d0PP * numberOfBCnodes]; + // // ny_dirBS = &NormalY[d0MM * numberOfBCnodes]; + // // ny_dirBN = &NormalY[d0PM * numberOfBCnodes]; + // // ny_dirTS = &NormalY[d0MP * numberOfBCnodes]; + // // ny_dirTNE = &NormalY[dPPP * numberOfBCnodes]; + // // ny_dirTSW = &NormalY[dMMP * numberOfBCnodes]; + // // ny_dirTSE = &NormalY[dPMP * numberOfBCnodes]; + // // ny_dirTNW = &NormalY[dMPP * numberOfBCnodes]; + // // ny_dirBNE = &NormalY[dPPM * numberOfBCnodes]; + // // ny_dirBSW = &NormalY[dMMM * numberOfBCnodes]; + // // ny_dirBSE = &NormalY[dPMM * numberOfBCnodes]; + // // ny_dirBNW = &NormalY[dMPM * 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[DIR_P00 * numberOfBCnodes]; - // // nz_dirW = &NormalZ[DIR_M00 * numberOfBCnodes]; - // // nz_dirN = &NormalZ[DIR_0P0 * numberOfBCnodes]; - // // nz_dirS = &NormalZ[DIR_0M0 * numberOfBCnodes]; - // // nz_dirT = &NormalZ[DIR_00P * numberOfBCnodes]; - // // nz_dirB = &NormalZ[DIR_00M * numberOfBCnodes]; - // // nz_dirNE = &NormalZ[DIR_PP0 * numberOfBCnodes]; - // // nz_dirSW = &NormalZ[DIR_MM0 * numberOfBCnodes]; - // // nz_dirSE = &NormalZ[DIR_PM0 * numberOfBCnodes]; - // // nz_dirNW = &NormalZ[DIR_MP0 * numberOfBCnodes]; - // // nz_dirTE = &NormalZ[DIR_P0P * numberOfBCnodes]; - // // nz_dirBW = &NormalZ[DIR_M0M * numberOfBCnodes]; - // // nz_dirBE = &NormalZ[DIR_P0M * numberOfBCnodes]; - // // nz_dirTW = &NormalZ[DIR_M0P * numberOfBCnodes]; - // // nz_dirTN = &NormalZ[DIR_0PP * numberOfBCnodes]; - // // nz_dirBS = &NormalZ[DIR_0MM * numberOfBCnodes]; - // // nz_dirBN = &NormalZ[DIR_0PM * numberOfBCnodes]; - // // nz_dirTS = &NormalZ[DIR_0MP * numberOfBCnodes]; - // // nz_dirTNE = &NormalZ[DIR_PPP * numberOfBCnodes]; - // // nz_dirTSW = &NormalZ[DIR_MMP * numberOfBCnodes]; - // // nz_dirTSE = &NormalZ[DIR_PMP * numberOfBCnodes]; - // // nz_dirTNW = &NormalZ[DIR_MPP * numberOfBCnodes]; - // // nz_dirBNE = &NormalZ[DIR_PPM * numberOfBCnodes]; - // // nz_dirBSW = &NormalZ[DIR_MMM * numberOfBCnodes]; - // // nz_dirBSE = &NormalZ[DIR_PMM * numberOfBCnodes]; - // // nz_dirBNW = &NormalZ[DIR_MPM * numberOfBCnodes]; + // // nz_dirE = &NormalZ[dP00 * numberOfBCnodes]; + // // nz_dirW = &NormalZ[dM00 * numberOfBCnodes]; + // // nz_dirN = &NormalZ[d0P0 * numberOfBCnodes]; + // // nz_dirS = &NormalZ[d0M0 * numberOfBCnodes]; + // // nz_dirT = &NormalZ[d00P * numberOfBCnodes]; + // // nz_dirB = &NormalZ[d00M * numberOfBCnodes]; + // // nz_dirNE = &NormalZ[dPP0 * numberOfBCnodes]; + // // nz_dirSW = &NormalZ[dMM0 * numberOfBCnodes]; + // // nz_dirSE = &NormalZ[dPM0 * numberOfBCnodes]; + // // nz_dirNW = &NormalZ[dMP0 * numberOfBCnodes]; + // // nz_dirTE = &NormalZ[dP0P * numberOfBCnodes]; + // // nz_dirBW = &NormalZ[dM0M * numberOfBCnodes]; + // // nz_dirBE = &NormalZ[dP0M * numberOfBCnodes]; + // // nz_dirTW = &NormalZ[dM0P * numberOfBCnodes]; + // // nz_dirTN = &NormalZ[d0PP * numberOfBCnodes]; + // // nz_dirBS = &NormalZ[d0MM * numberOfBCnodes]; + // // nz_dirBN = &NormalZ[d0PM * numberOfBCnodes]; + // // nz_dirTS = &NormalZ[d0MP * numberOfBCnodes]; + // // nz_dirTNE = &NormalZ[dPPP * numberOfBCnodes]; + // // nz_dirTSW = &NormalZ[dMMP * numberOfBCnodes]; + // // nz_dirTSE = &NormalZ[dPMP * numberOfBCnodes]; + // // nz_dirTNW = &NormalZ[dMPP * numberOfBCnodes]; + // // nz_dirBNE = &NormalZ[dPPM * numberOfBCnodes]; + // // nz_dirBSW = &NormalZ[dMMM * numberOfBCnodes]; + // // nz_dirBSE = &NormalZ[dPMM * numberOfBCnodes]; + // // nz_dirBNW = &NormalZ[dMPM * numberOfBCnodes]; // //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //bool changeCell = false; // unsigned int KQK = k_Q[k]; @@ -2190,38 +2190,38 @@ __global__ void ParticleNoSlipDeviceComp27(real* coordX, // unsigned int ktne = KQK; // unsigned int kbsw = neighborZ[ksw]; // //////////////////////////////////////////////////////////////////////////////// - // real f_W = (D.f[DIR_P00])[ke ]; - // real f_E = (D.f[DIR_M00])[kw ]; - // real f_S = (D.f[DIR_0P0])[kn ]; - // real f_N = (D.f[DIR_0M0])[ks ]; - // real f_B = (D.f[DIR_00P])[kt ]; - // real f_T = (D.f[DIR_00M])[kb ]; - // real f_SW = (D.f[DIR_PP0])[kne ]; - // real f_NE = (D.f[DIR_MM0])[ksw ]; - // real f_NW = (D.f[DIR_PM0])[kse ]; - // real f_SE = (D.f[DIR_MP0])[knw ]; - // real f_BW = (D.f[DIR_P0P])[kte ]; - // real f_TE = (D.f[DIR_M0M])[kbw ]; - // real f_TW = (D.f[DIR_P0M])[kbe ]; - // real f_BE = (D.f[DIR_M0P])[ktw ]; - // real f_BS = (D.f[DIR_0PP])[ktn ]; - // real f_TN = (D.f[DIR_0MM])[kbs ]; - // real f_TS = (D.f[DIR_0PM])[kbn ]; - // real f_BN = (D.f[DIR_0MP])[kts ]; - // real f_BSW = (D.f[DIR_PPP])[ktne ]; - // real f_BNE = (D.f[DIR_MMP])[ktsw ]; - // real f_BNW = (D.f[DIR_PMP])[ktse ]; - // real f_BSE = (D.f[DIR_MPP])[ktnw ]; - // real f_TSW = (D.f[DIR_PPM])[kbne ]; - // real f_TNE = (D.f[DIR_MMM])[kbsw ]; - // real f_TNW = (D.f[DIR_PMM])[kbse ]; - // real f_TSE = (D.f[DIR_MPM])[kbnw ]; + // real f_W = (D.f[dP00])[ke ]; + // real f_E = (D.f[dM00])[kw ]; + // real f_S = (D.f[d0P0])[kn ]; + // real f_N = (D.f[d0M0])[ks ]; + // real f_B = (D.f[d00P])[kt ]; + // real f_T = (D.f[d00M])[kb ]; + // real f_SW = (D.f[dPP0])[kne ]; + // real f_NE = (D.f[dMM0])[ksw ]; + // real f_NW = (D.f[dPM0])[kse ]; + // real f_SE = (D.f[dMP0])[knw ]; + // real f_BW = (D.f[dP0P])[kte ]; + // real f_TE = (D.f[dM0M])[kbw ]; + // real f_TW = (D.f[dP0M])[kbe ]; + // real f_BE = (D.f[dM0P])[ktw ]; + // real f_BS = (D.f[d0PP])[ktn ]; + // real f_TN = (D.f[d0MM])[kbs ]; + // real f_TS = (D.f[d0PM])[kbn ]; + // real f_BN = (D.f[d0MP])[kts ]; + // real f_BSW = (D.f[dPPP])[ktne ]; + // real f_BNE = (D.f[dMMP])[ktsw ]; + // real f_BNW = (D.f[dPMP])[ktse ]; + // real f_BSE = (D.f[dMPP])[ktnw ]; + // real f_TSW = (D.f[dPPM])[kbne ]; + // real f_TNE = (D.f[dMMM])[kbsw ]; + // real f_TNW = (D.f[dPMM])[kbse ]; + // real f_TSE = (D.f[dMPM])[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[DIR_000])[kzero]); + // f_T + f_B + f_N + f_S + f_E + f_W + ((D.f[d000])[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 @@ __global__ void ParticleNoSlipDeviceComp27(real* coordX, // ////////////////////////////////////////////////////////////////////////// // if (isEvenTimestep==false) // { - // D.f[DIR_P00] = &DD[DIR_P00 * size_Mat]; - // D.f[DIR_M00] = &DD[DIR_M00 * size_Mat]; - // D.f[DIR_0P0] = &DD[DIR_0P0 * size_Mat]; - // D.f[DIR_0M0] = &DD[DIR_0M0 * size_Mat]; - // D.f[DIR_00P] = &DD[DIR_00P * size_Mat]; - // D.f[DIR_00M] = &DD[DIR_00M * size_Mat]; - // D.f[DIR_PP0] = &DD[DIR_PP0 * size_Mat]; - // D.f[DIR_MM0] = &DD[DIR_MM0 * size_Mat]; - // D.f[DIR_PM0] = &DD[DIR_PM0 * size_Mat]; - // D.f[DIR_MP0] = &DD[DIR_MP0 * size_Mat]; - // D.f[DIR_P0P] = &DD[DIR_P0P * size_Mat]; - // D.f[DIR_M0M] = &DD[DIR_M0M * size_Mat]; - // D.f[DIR_P0M] = &DD[DIR_P0M * size_Mat]; - // D.f[DIR_M0P] = &DD[DIR_M0P * size_Mat]; - // D.f[DIR_0PP] = &DD[DIR_0PP * size_Mat]; - // D.f[DIR_0MM] = &DD[DIR_0MM * size_Mat]; - // D.f[DIR_0PM] = &DD[DIR_0PM * size_Mat]; - // D.f[DIR_0MP] = &DD[DIR_0MP * size_Mat]; - // D.f[DIR_000] = &DD[DIR_000 * size_Mat]; - // D.f[DIR_PPP] = &DD[DIR_PPP * size_Mat]; - // D.f[DIR_MMP] = &DD[DIR_MMP * size_Mat]; - // D.f[DIR_PMP] = &DD[DIR_PMP * size_Mat]; - // D.f[DIR_MPP] = &DD[DIR_MPP * size_Mat]; - // D.f[DIR_PPM] = &DD[DIR_PPM * size_Mat]; - // D.f[DIR_MMM] = &DD[DIR_MMM * size_Mat]; - // D.f[DIR_PMM] = &DD[DIR_PMM * size_Mat]; - // D.f[DIR_MPM] = &DD[DIR_MPM * size_Mat]; + // D.f[dP00] = &DD[dP00 * size_Mat]; + // D.f[dM00] = &DD[dM00 * size_Mat]; + // D.f[d0P0] = &DD[d0P0 * size_Mat]; + // D.f[d0M0] = &DD[d0M0 * size_Mat]; + // D.f[d00P] = &DD[d00P * size_Mat]; + // D.f[d00M] = &DD[d00M * size_Mat]; + // D.f[dPP0] = &DD[dPP0 * size_Mat]; + // D.f[dMM0] = &DD[dMM0 * size_Mat]; + // D.f[dPM0] = &DD[dPM0 * size_Mat]; + // D.f[dMP0] = &DD[dMP0 * size_Mat]; + // D.f[dP0P] = &DD[dP0P * size_Mat]; + // D.f[dM0M] = &DD[dM0M * size_Mat]; + // D.f[dP0M] = &DD[dP0M * size_Mat]; + // D.f[dM0P] = &DD[dM0P * size_Mat]; + // D.f[d0PP] = &DD[d0PP * size_Mat]; + // D.f[d0MM] = &DD[d0MM * size_Mat]; + // D.f[d0PM] = &DD[d0PM * size_Mat]; + // D.f[d0MP] = &DD[d0MP * size_Mat]; + // D.f[d000] = &DD[d000 * size_Mat]; + // D.f[dPPP] = &DD[dPPP * size_Mat]; + // D.f[dMMP] = &DD[dMMP * size_Mat]; + // D.f[dPMP] = &DD[dPMP * size_Mat]; + // D.f[dMPP] = &DD[dMPP * size_Mat]; + // D.f[dPPM] = &DD[dPPM * size_Mat]; + // D.f[dMMM] = &DD[dMMM * size_Mat]; + // D.f[dPMM] = &DD[dPMM * size_Mat]; + // D.f[dMPM] = &DD[dMPM * size_Mat]; // } // else // { - // D.f[DIR_M00] = &DD[DIR_P00 * size_Mat]; - // D.f[DIR_P00] = &DD[DIR_M00 * size_Mat]; - // D.f[DIR_0M0] = &DD[DIR_0P0 * size_Mat]; - // D.f[DIR_0P0] = &DD[DIR_0M0 * size_Mat]; - // D.f[DIR_00M] = &DD[DIR_00P * size_Mat]; - // D.f[DIR_00P] = &DD[DIR_00M * size_Mat]; - // D.f[DIR_MM0] = &DD[DIR_PP0 * size_Mat]; - // D.f[DIR_PP0] = &DD[DIR_MM0 * size_Mat]; - // D.f[DIR_MP0] = &DD[DIR_PM0 * size_Mat]; - // D.f[DIR_PM0] = &DD[DIR_MP0 * size_Mat]; - // D.f[DIR_M0M] = &DD[DIR_P0P * size_Mat]; - // D.f[DIR_P0P] = &DD[DIR_M0M * size_Mat]; - // D.f[DIR_M0P] = &DD[DIR_P0M * size_Mat]; - // D.f[DIR_P0M] = &DD[DIR_M0P * size_Mat]; - // D.f[DIR_0MM] = &DD[DIR_0PP * size_Mat]; - // D.f[DIR_0PP] = &DD[DIR_0MM * size_Mat]; - // D.f[DIR_0MP] = &DD[DIR_0PM * size_Mat]; - // D.f[DIR_0PM] = &DD[DIR_0MP * size_Mat]; - // D.f[DIR_000] = &DD[DIR_000 * size_Mat]; - // D.f[DIR_PPP] = &DD[DIR_MMM * size_Mat]; - // D.f[DIR_MMP] = &DD[DIR_PPM * size_Mat]; - // D.f[DIR_PMP] = &DD[DIR_MPM * size_Mat]; - // D.f[DIR_MPP] = &DD[DIR_PMM * size_Mat]; - // D.f[DIR_PPM] = &DD[DIR_MMP * size_Mat]; - // D.f[DIR_MMM] = &DD[DIR_PPP * size_Mat]; - // D.f[DIR_PMM] = &DD[DIR_MPP * size_Mat]; - // D.f[DIR_MPM] = &DD[DIR_PMP * size_Mat]; + // D.f[dM00] = &DD[dP00 * size_Mat]; + // D.f[dP00] = &DD[dM00 * size_Mat]; + // D.f[d0M0] = &DD[d0P0 * size_Mat]; + // D.f[d0P0] = &DD[d0M0 * size_Mat]; + // D.f[d00M] = &DD[d00P * size_Mat]; + // D.f[d00P] = &DD[d00M * size_Mat]; + // D.f[dMM0] = &DD[dPP0 * size_Mat]; + // D.f[dPP0] = &DD[dMM0 * size_Mat]; + // D.f[dMP0] = &DD[dPM0 * size_Mat]; + // D.f[dPM0] = &DD[dMP0 * size_Mat]; + // D.f[dM0M] = &DD[dP0P * size_Mat]; + // D.f[dP0P] = &DD[dM0M * size_Mat]; + // D.f[dM0P] = &DD[dP0M * size_Mat]; + // D.f[dP0M] = &DD[dM0P * size_Mat]; + // D.f[d0MM] = &DD[d0PP * size_Mat]; + // D.f[d0PP] = &DD[d0MM * size_Mat]; + // D.f[d0MP] = &DD[d0PM * size_Mat]; + // D.f[d0PM] = &DD[d0MP * size_Mat]; + // D.f[d000] = &DD[d000 * size_Mat]; + // D.f[dPPP] = &DD[dMMM * size_Mat]; + // D.f[dMMP] = &DD[dPPM * size_Mat]; + // D.f[dPMP] = &DD[dMPM * size_Mat]; + // D.f[dMPP] = &DD[dPMM * size_Mat]; + // D.f[dPPM] = &DD[dMMP * size_Mat]; + // D.f[dMMM] = &DD[dPPP * size_Mat]; + // D.f[dPMM] = &DD[dMPP * size_Mat]; + // D.f[dMPM] = &DD[dPMP * size_Mat]; // } //} } diff --git a/src/gpu/VirtualFluids_GPU/GPU/PrecursorBCs27.cu b/src/gpu/core/GPU/PrecursorBCs27.cu similarity index 79% rename from src/gpu/VirtualFluids_GPU/GPU/PrecursorBCs27.cu rename to src/gpu/core/GPU/PrecursorBCs27.cu index 64c6b6085c353e16c08f9057f603a7799ce14289..b60559a89691312155cad38617576b2782f555af 100644 --- a/src/gpu/VirtualFluids_GPU/GPU/PrecursorBCs27.cu +++ b/src/gpu/core/GPU/PrecursorBCs27.cu @@ -171,32 +171,32 @@ __global__ void QPrecursorDeviceCompZeroPress( //////////////////////////////////////////////////////////////////////////////// //! - Set local distributions //! - real f_M00 = (dist.f[DIR_P00])[kP00]; - real f_P00 = (dist.f[DIR_M00])[kM00]; - real f_0M0 = (dist.f[DIR_0P0])[k0P0]; - real f_0P0 = (dist.f[DIR_0M0])[k0M0]; - real f_00M = (dist.f[DIR_00P])[k00P]; - real f_00P = (dist.f[DIR_00M])[k00M]; - real f_MM0 = (dist.f[DIR_PP0])[kPP0]; - real f_PP0 = (dist.f[DIR_MM0])[kMM0]; - real f_MP0 = (dist.f[DIR_PM0])[kPM0]; - real f_PM0 = (dist.f[DIR_MP0])[kMP0]; - real f_M0M = (dist.f[DIR_P0P])[kP0P]; - real f_P0P = (dist.f[DIR_M0M])[kM0M]; - real f_M0P = (dist.f[DIR_P0M])[kP0M]; - real f_P0M = (dist.f[DIR_M0P])[kM0P]; - real f_0MM = (dist.f[DIR_0PP])[k0PP]; - real f_0PP = (dist.f[DIR_0MM])[k0MM]; - real f_0MP = (dist.f[DIR_0PM])[k0PM]; - real f_0PM = (dist.f[DIR_0MP])[k0MP]; - real f_MMM = (dist.f[DIR_PPP])[kPPP]; - real f_PPM = (dist.f[DIR_MMP])[kMMP]; - real f_MPM = (dist.f[DIR_PMP])[kPMP]; - real f_PMM = (dist.f[DIR_MPP])[kMPP]; - real f_MMP = (dist.f[DIR_PPM])[kPPM]; - real f_PPP = (dist.f[DIR_MMM])[kMMM]; - real f_MPP = (dist.f[DIR_PMM])[kPMM]; - real f_PMP = (dist.f[DIR_MPM])[kMPM]; + real f_M00 = (dist.f[dP00])[kP00]; + real f_P00 = (dist.f[dM00])[kM00]; + real f_0M0 = (dist.f[d0P0])[k0P0]; + real f_0P0 = (dist.f[d0M0])[k0M0]; + real f_00M = (dist.f[d00P])[k00P]; + real f_00P = (dist.f[d00M])[k00M]; + real f_MM0 = (dist.f[dPP0])[kPP0]; + real f_PP0 = (dist.f[dMM0])[kMM0]; + real f_MP0 = (dist.f[dPM0])[kPM0]; + real f_PM0 = (dist.f[dMP0])[kMP0]; + real f_M0M = (dist.f[dP0P])[kP0P]; + real f_P0P = (dist.f[dM0M])[kM0M]; + real f_M0P = (dist.f[dP0M])[kP0M]; + real f_P0M = (dist.f[dM0P])[kM0P]; + real f_0MM = (dist.f[vf::lbm::dir::d0PP])[k0PP]; + real f_0PP = (dist.f[d0MM])[k0MM]; + real f_0MP = (dist.f[d0PM])[k0PM]; + real f_0PM = (dist.f[d0MP])[k0MP]; + real f_MMM = (dist.f[dPPP])[kPPP]; + real f_PPM = (dist.f[dMMP])[kMMP]; + real f_MPM = (dist.f[dPMP])[kPMP]; + real f_PMM = (dist.f[dMPP])[kMPP]; + real f_MMP = (dist.f[dPPM])[kPPM]; + real f_PPP = (dist.f[dMMM])[kMMM]; + real f_MPP = (dist.f[dPMM])[kPMM]; + real f_PMP = (dist.f[dMPM])[kMPM]; SubgridDistances27 subgridD; getPointersToSubgridDistances(subgridD, subgridDistances, numberOfBCnodes); @@ -204,7 +204,7 @@ __global__ void QPrecursorDeviceCompZeroPress( //////////////////////////////////////////////////////////////////////////////// real drho = f_PMP + f_MPP + f_PPP + f_MMP + f_PMM + f_MPM + f_PPM + f_MMM + f_0PM + f_0PP + f_0MP + f_0MM + f_P0M + f_M0P + f_P0P + f_M0M + f_PM0 + f_MP0 + f_PP0 + f_MM0 + - f_00P + f_00M + f_0P0 + f_0M0 + f_P00 + f_M00 + ((dist.f[DIR_000])[k000]); + f_00P + f_00M + f_0P0 + f_0M0 + f_P00 + f_M00 + ((dist.f[d000])[k000]); real vx1 = (((f_PMP - f_MPM) - (f_MPP - f_PMM)) + ((f_PPP - f_MMM) - (f_MMP - f_PPM)) + ((f_P0M - f_M0P) + (f_P0P - f_M0M)) + ((f_PM0 - f_MP0) + (f_PP0 - f_MM0)) + @@ -228,238 +228,238 @@ __global__ void QPrecursorDeviceCompZeroPress( //////////////////////////////////////////////////////////////////////////////// //! - Update distributions with subgrid distance (q) between zero and one real feq, q, velocityLB, velocityBC; - q = (subgridD.q[DIR_P00])[nodeIndex]; + q = (subgridD.q[dP00])[nodeIndex]; if (q>=c0o1 && q<=c1o1) // only update distribution for q between zero and one { velocityLB = vx1; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c2o27); velocityBC = VeloX; - (dist.f[DIR_M00])[kM00] = getInterpolatedDistributionForVeloWithPressureBC(q, f_P00, f_M00, feq, omega, drho, velocityBC, c2o27); + (dist.f[dM00])[kM00] = getInterpolatedDistributionForVeloWithPressureBC(q, f_P00, f_M00, feq, omega, drho, velocityBC, c2o27); } - q = (subgridD.q[DIR_M00])[nodeIndex]; + q = (subgridD.q[dM00])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { velocityLB = -vx1; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c2o27); velocityBC = -VeloX; - (dist.f[DIR_P00])[kP00] = getInterpolatedDistributionForVeloWithPressureBC(q, f_M00, f_P00, feq, omega, drho, velocityBC, c2o27); + (dist.f[dP00])[kP00] = getInterpolatedDistributionForVeloWithPressureBC(q, f_M00, f_P00, feq, omega, drho, velocityBC, c2o27); } - q = (subgridD.q[DIR_0P0])[nodeIndex]; + q = (subgridD.q[d0P0])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { velocityLB = vx2; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c2o27); velocityBC = VeloY; - (dist.f[DIR_0M0])[DIR_0M0] = getInterpolatedDistributionForVeloWithPressureBC(q, f_0P0, f_0M0, feq, omega, drho, velocityBC, c2o27); + (dist.f[d0M0])[d0M0] = getInterpolatedDistributionForVeloWithPressureBC(q, f_0P0, f_0M0, feq, omega, drho, velocityBC, c2o27); } - q = (subgridD.q[DIR_0M0])[nodeIndex]; + q = (subgridD.q[d0M0])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { velocityLB = -vx2; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c2o27); velocityBC = -VeloY; - (dist.f[DIR_0P0])[k0P0] = getInterpolatedDistributionForVeloWithPressureBC(q, f_0M0, f_0P0, feq, omega, drho, velocityBC, c2o27); + (dist.f[d0P0])[k0P0] = getInterpolatedDistributionForVeloWithPressureBC(q, f_0M0, f_0P0, feq, omega, drho, velocityBC, c2o27); } - q = (subgridD.q[DIR_00P])[nodeIndex]; + q = (subgridD.q[d00P])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { velocityLB = vx3; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c2o27); velocityBC = VeloZ; - (dist.f[DIR_00M])[k00M] = getInterpolatedDistributionForVeloWithPressureBC(q, f_00P, f_00M, feq, omega, drho, velocityBC, c2o27); + (dist.f[d00M])[k00M] = getInterpolatedDistributionForVeloWithPressureBC(q, f_00P, f_00M, feq, omega, drho, velocityBC, c2o27); } - q = (subgridD.q[DIR_00M])[nodeIndex]; + q = (subgridD.q[d00M])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { velocityLB = -vx3; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c2o27); velocityBC = -VeloZ; - (dist.f[DIR_00P])[k00P] = getInterpolatedDistributionForVeloWithPressureBC(q, f_00M, f_00P, feq, omega, drho, velocityBC, c2o27); + (dist.f[d00P])[k00P] = getInterpolatedDistributionForVeloWithPressureBC(q, f_00M, f_00P, feq, omega, drho, velocityBC, c2o27); } - q = (subgridD.q[DIR_PP0])[nodeIndex]; + q = (subgridD.q[dPP0])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { velocityLB = vx1 + vx2; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); velocityBC = VeloX + VeloY; - (dist.f[DIR_MM0])[kMM0] = getInterpolatedDistributionForVeloWithPressureBC(q, f_PP0, f_MM0, feq, omega, drho, velocityBC, c1o54); + (dist.f[dMM0])[kMM0] = getInterpolatedDistributionForVeloWithPressureBC(q, f_PP0, f_MM0, feq, omega, drho, velocityBC, c1o54); } - q = (subgridD.q[DIR_MM0])[nodeIndex]; + q = (subgridD.q[dMM0])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { velocityLB = -vx1 - vx2; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); velocityBC = -VeloX - VeloY; - (dist.f[DIR_PP0])[kPP0] = getInterpolatedDistributionForVeloWithPressureBC(q, f_MM0, f_PP0, feq, omega, drho, velocityBC, c1o54); + (dist.f[dPP0])[kPP0] = getInterpolatedDistributionForVeloWithPressureBC(q, f_MM0, f_PP0, feq, omega, drho, velocityBC, c1o54); } - q = (subgridD.q[DIR_PM0])[nodeIndex]; + q = (subgridD.q[dPM0])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { velocityLB = vx1 - vx2; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); velocityBC = VeloX - VeloY; - (dist.f[DIR_MP0])[kMP0] = getInterpolatedDistributionForVeloWithPressureBC(q, f_PM0, f_MP0, feq, omega, drho, velocityBC, c1o54); + (dist.f[dMP0])[kMP0] = getInterpolatedDistributionForVeloWithPressureBC(q, f_PM0, f_MP0, feq, omega, drho, velocityBC, c1o54); } - q = (subgridD.q[DIR_MP0])[nodeIndex]; + q = (subgridD.q[dMP0])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { velocityLB = -vx1 + vx2; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); velocityBC = -VeloX + VeloY; - (dist.f[DIR_PM0])[kPM0] = getInterpolatedDistributionForVeloWithPressureBC(q, f_MP0, f_PM0, feq, omega, drho, velocityBC, c1o54); + (dist.f[dPM0])[kPM0] = getInterpolatedDistributionForVeloWithPressureBC(q, f_MP0, f_PM0, feq, omega, drho, velocityBC, c1o54); } - q = (subgridD.q[DIR_P0P])[nodeIndex]; + q = (subgridD.q[dP0P])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { velocityLB = vx1 + vx3; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); velocityBC = VeloX + VeloZ; - (dist.f[DIR_M0M])[kM0M] = getInterpolatedDistributionForVeloWithPressureBC(q, f_P0P, f_M0M, feq, omega, drho, velocityBC, c1o54); + (dist.f[dM0M])[kM0M] = getInterpolatedDistributionForVeloWithPressureBC(q, f_P0P, f_M0M, feq, omega, drho, velocityBC, c1o54); } - q = (subgridD.q[DIR_M0M])[nodeIndex]; + q = (subgridD.q[dM0M])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { velocityLB = -vx1 - vx3; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); velocityBC = -VeloX - VeloZ; - (dist.f[DIR_P0P])[kP0P] = getInterpolatedDistributionForVeloWithPressureBC(q, f_M0M, f_P0P, feq, omega, drho, velocityBC, c1o54); + (dist.f[dP0P])[kP0P] = getInterpolatedDistributionForVeloWithPressureBC(q, f_M0M, f_P0P, feq, omega, drho, velocityBC, c1o54); } - q = (subgridD.q[DIR_P0M])[nodeIndex]; + q = (subgridD.q[dP0M])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { velocityLB = vx1 - vx3; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); velocityBC = VeloX - VeloZ; - (dist.f[DIR_M0P])[kM0P] = getInterpolatedDistributionForVeloWithPressureBC(q, f_P0M, f_M0P, feq, omega, drho, velocityBC, c1o54); + (dist.f[dM0P])[kM0P] = getInterpolatedDistributionForVeloWithPressureBC(q, f_P0M, f_M0P, feq, omega, drho, velocityBC, c1o54); } - q = (subgridD.q[DIR_M0P])[nodeIndex]; + q = (subgridD.q[dM0P])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { velocityLB = -vx1 + vx3; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); velocityBC = -VeloX + VeloZ; - (dist.f[DIR_P0M])[kP0M] = getInterpolatedDistributionForVeloWithPressureBC(q, f_M0P, f_P0M, feq, omega, drho, velocityBC, c1o54); + (dist.f[dP0M])[kP0M] = getInterpolatedDistributionForVeloWithPressureBC(q, f_M0P, f_P0M, feq, omega, drho, velocityBC, c1o54); } - q = (subgridD.q[DIR_0PP])[nodeIndex]; + q = (subgridD.q[vf::lbm::dir::d0PP])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { velocityLB = vx2 + vx3; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); velocityBC = VeloY + VeloZ; - (dist.f[DIR_0MM])[k0MM] = getInterpolatedDistributionForVeloWithPressureBC(q, f_0PP, f_0MM, feq, omega, drho, velocityBC, c1o54); + (dist.f[d0MM])[k0MM] = getInterpolatedDistributionForVeloWithPressureBC(q, f_0PP, f_0MM, feq, omega, drho, velocityBC, c1o54); } - q = (subgridD.q[DIR_0MM])[nodeIndex]; + q = (subgridD.q[d0MM])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { velocityLB = -vx2 - vx3; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); velocityBC = -VeloY - VeloZ; - (dist.f[DIR_0PP])[k0PP] = getInterpolatedDistributionForVeloWithPressureBC(q, f_0MM, f_0PP, feq, omega, drho, velocityBC, c1o54); + (dist.f[vf::lbm::dir::d0PP])[k0PP] = getInterpolatedDistributionForVeloWithPressureBC(q, f_0MM, f_0PP, feq, omega, drho, velocityBC, c1o54); } - q = (subgridD.q[DIR_0PM])[nodeIndex]; + q = (subgridD.q[d0PM])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { velocityLB = vx2 - vx3; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); velocityBC = VeloY - VeloZ; - (dist.f[DIR_0MP])[k0MP] = getInterpolatedDistributionForVeloWithPressureBC(q, f_0PM, f_0PP, feq, omega, drho, velocityBC, c1o54); + (dist.f[d0MP])[k0MP] = getInterpolatedDistributionForVeloWithPressureBC(q, f_0PM, f_0PP, feq, omega, drho, velocityBC, c1o54); } - q = (subgridD.q[DIR_0MP])[nodeIndex]; + q = (subgridD.q[d0MP])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { velocityLB = -vx2 + vx3; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); velocityBC = -VeloY + VeloZ; - (dist.f[DIR_0PM])[k0PM] = getInterpolatedDistributionForVeloWithPressureBC(q, f_0PP, f_0PM, feq, omega, drho, velocityBC, c1o54); + (dist.f[d0PM])[k0PM] = getInterpolatedDistributionForVeloWithPressureBC(q, f_0PP, f_0PM, feq, omega, drho, velocityBC, c1o54); } - q = (subgridD.q[DIR_PPP])[nodeIndex]; + q = (subgridD.q[dPPP])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { velocityLB = vx1 + vx2 + vx3; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); velocityBC = VeloX + VeloY + VeloZ; - (dist.f[DIR_MMM])[kMMM] = getInterpolatedDistributionForVeloWithPressureBC(q, f_PPP, f_MMM, feq, omega, drho, velocityBC, c1o216); + (dist.f[dMMM])[kMMM] = getInterpolatedDistributionForVeloWithPressureBC(q, f_PPP, f_MMM, feq, omega, drho, velocityBC, c1o216); } - q = (subgridD.q[DIR_MMM])[nodeIndex]; + q = (subgridD.q[dMMM])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { velocityLB = -vx1 - vx2 - vx3; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); velocityBC = -VeloX - VeloY - VeloZ; - (dist.f[DIR_PPP])[kPPP] = getInterpolatedDistributionForVeloWithPressureBC(q, f_MMM, f_PPP, feq, omega, drho, velocityBC, c1o216); + (dist.f[dPPP])[kPPP] = getInterpolatedDistributionForVeloWithPressureBC(q, f_MMM, f_PPP, feq, omega, drho, velocityBC, c1o216); } - q = (subgridD.q[DIR_PPM])[nodeIndex]; + q = (subgridD.q[dPPM])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { velocityLB = vx1 + vx2 - vx3; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); velocityBC = VeloX + VeloY - VeloZ; - (dist.f[DIR_MMP])[kMMP] = getInterpolatedDistributionForVeloWithPressureBC(q, f_PPM, f_MMP, feq, omega, drho, velocityBC, c1o216); + (dist.f[dMMP])[kMMP] = getInterpolatedDistributionForVeloWithPressureBC(q, f_PPM, f_MMP, feq, omega, drho, velocityBC, c1o216); } - q = (subgridD.q[DIR_MMP])[nodeIndex]; + q = (subgridD.q[dMMP])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { velocityLB = -vx1 - vx2 + vx3; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); velocityBC = -VeloX - VeloY + VeloZ; - (dist.f[DIR_PPM])[kPPM] = getInterpolatedDistributionForVeloWithPressureBC(q, f_MMP, f_PPM, feq, omega, drho, velocityBC, c1o216); + (dist.f[dPPM])[kPPM] = getInterpolatedDistributionForVeloWithPressureBC(q, f_MMP, f_PPM, feq, omega, drho, velocityBC, c1o216); } - q = (subgridD.q[DIR_PMP])[nodeIndex]; + q = (subgridD.q[dPMP])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { velocityLB = vx1 - vx2 + vx3; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); velocityBC = VeloX - VeloY + VeloZ; - (dist.f[DIR_MPM])[kMPM] = getInterpolatedDistributionForVeloWithPressureBC(q, f_PMP, f_MPM, feq, omega, drho, velocityBC, c1o216); + (dist.f[dMPM])[kMPM] = getInterpolatedDistributionForVeloWithPressureBC(q, f_PMP, f_MPM, feq, omega, drho, velocityBC, c1o216); } - q = (subgridD.q[DIR_MPM])[nodeIndex]; + q = (subgridD.q[dMPM])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { velocityLB = -vx1 + vx2 - vx3; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); velocityBC = -VeloX + VeloY - VeloZ; - (dist.f[DIR_PMP])[kPMP] = getInterpolatedDistributionForVeloWithPressureBC(q, f_MPM, f_PMP, feq, omega, drho, velocityBC, c1o216); + (dist.f[dPMP])[kPMP] = getInterpolatedDistributionForVeloWithPressureBC(q, f_MPM, f_PMP, feq, omega, drho, velocityBC, c1o216); } - q = (subgridD.q[DIR_PMM])[nodeIndex]; + q = (subgridD.q[dPMM])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { velocityLB = vx1 - vx2 - vx3; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); velocityBC = VeloX - VeloY - VeloZ; - (dist.f[DIR_MPP])[kMPP] = getInterpolatedDistributionForVeloWithPressureBC(q, f_PMM, f_MPP, feq, omega, drho, velocityBC, c1o216); + (dist.f[dMPP])[kMPP] = getInterpolatedDistributionForVeloWithPressureBC(q, f_PMM, f_MPP, feq, omega, drho, velocityBC, c1o216); } - q = (subgridD.q[DIR_MPP])[nodeIndex]; + q = (subgridD.q[dMPP])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { velocityLB = -vx1 + vx2 + vx3; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); velocityBC = -VeloX + VeloY + VeloZ; - (dist.f[DIR_PMM])[kPMM] = getInterpolatedDistributionForVeloWithPressureBC(q, f_MPP, f_PMM, feq, omega, drho, velocityBC, c1o216); + (dist.f[dPMM])[kPMM] = getInterpolatedDistributionForVeloWithPressureBC(q, f_MPP, f_PMM, feq, omega, drho, velocityBC, c1o216); } } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -635,33 +635,33 @@ __global__ void PrecursorDeviceEQ27( ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // based on BGK Plus Comp ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real f_M00 = (dist.f[DIR_P00])[kP00]; - real f_P00 = (dist.f[DIR_M00])[kM00]; - real f_0M0 = (dist.f[DIR_0P0])[k0P0]; - real f_0P0 = (dist.f[DIR_0M0])[k0M0]; - real f_00M = (dist.f[DIR_00P])[k00P]; - real f_00P = (dist.f[DIR_00M])[k00M]; - real f_MM0 = (dist.f[DIR_PP0])[kPP0]; - real f_PP0 = (dist.f[DIR_MM0])[kMM0]; - real f_MP0 = (dist.f[DIR_PM0])[kPM0]; - real f_PM0 = (dist.f[DIR_MP0])[kMP0]; - real f_M0M = (dist.f[DIR_P0P])[kP0P]; - real f_P0P = (dist.f[DIR_M0M])[kM0M]; - real f_M0P = (dist.f[DIR_P0M])[kP0M]; - real f_P0M = (dist.f[DIR_M0P])[kM0P]; - real f_0MM = (dist.f[DIR_0PP])[k0PP]; - real f_0PP = (dist.f[DIR_0MM])[k0MM]; - real f_0PM = (dist.f[DIR_0MP])[k0MP]; - real f_0MP = (dist.f[DIR_0PM])[k0PM]; - real f_000 = (dist.f[DIR_000])[k000]; - real f_MMM = (dist.f[DIR_PPP])[kPPP]; - real f_PPM = (dist.f[DIR_MMP])[kMMP]; - real f_MPM = (dist.f[DIR_PMP])[kPMP]; - real f_PMM = (dist.f[DIR_MPP])[kMPP]; - real f_MMP = (dist.f[DIR_PPM])[kPPM]; - real f_PPP = (dist.f[DIR_MMM])[kMMM]; - real f_MPP = (dist.f[DIR_PMM])[kPMM]; - real f_PMP = (dist.f[DIR_MPM])[kMPM]; + real f_M00 = (dist.f[dP00])[kP00]; + real f_P00 = (dist.f[dM00])[kM00]; + real f_0M0 = (dist.f[d0P0])[k0P0]; + real f_0P0 = (dist.f[d0M0])[k0M0]; + real f_00M = (dist.f[d00P])[k00P]; + real f_00P = (dist.f[d00M])[k00M]; + real f_MM0 = (dist.f[dPP0])[kPP0]; + real f_PP0 = (dist.f[dMM0])[kMM0]; + real f_MP0 = (dist.f[dPM0])[kPM0]; + real f_PM0 = (dist.f[dMP0])[kMP0]; + real f_M0M = (dist.f[dP0P])[kP0P]; + real f_P0P = (dist.f[dM0M])[kM0M]; + real f_M0P = (dist.f[dP0M])[kP0M]; + real f_P0M = (dist.f[dM0P])[kM0P]; + real f_0MM = (dist.f[vf::lbm::dir::d0PP])[k0PP]; + real f_0PP = (dist.f[d0MM])[k0MM]; + real f_0PM = (dist.f[d0MP])[k0MP]; + real f_0MP = (dist.f[d0PM])[k0PM]; + real f_000 = (dist.f[d000])[k000]; + real f_MMM = (dist.f[dPPP])[kPPP]; + real f_PPM = (dist.f[dMMP])[kMMP]; + real f_MPM = (dist.f[dPMP])[kPMP]; + real f_PMM = (dist.f[dMPP])[kMPP]; + real f_MMP = (dist.f[dPPM])[kPPM]; + real f_PPP = (dist.f[dMMM])[kMMM]; + real f_MPP = (dist.f[dPMM])[kPMM]; + real f_PMP = (dist.f[dMPM])[kMPM]; //////////////////////////////////////////////////////////////////////////////// //! - Set macroscopic quantities @@ -708,35 +708,35 @@ __global__ void PrecursorDeviceEQ27( //////////////////////////////////////////////////////////////////////////////// //! write the new distributions to the bc nodes //! - (dist.f[DIR_P00])[kP00] = f_M00; - (dist.f[DIR_PP0])[kPP0] = f_MM0; - (dist.f[DIR_P0M])[kP0M] = f_M0P; - (dist.f[DIR_PM0])[kPM0] = f_MP0; - (dist.f[DIR_PMP])[kPMP] = f_MPM; - (dist.f[DIR_P0P])[kP0P] = f_M0M; - (dist.f[DIR_PPM])[kPPM] = f_MMP; - (dist.f[DIR_PPP])[kPPP] = f_MMM; - (dist.f[DIR_PMM])[kPMM] = f_MPP; - - (dist.f[DIR_M00])[kM00] = f_P00; - (dist.f[DIR_MM0])[kMM0] = f_PP0; - (dist.f[DIR_M0M])[kM0M] = f_P0P; - (dist.f[DIR_MP0])[kMP0] = f_PM0; - (dist.f[DIR_M0P])[kM0P] = f_P0M; - (dist.f[DIR_MMM])[kMMM] = f_PPP; - (dist.f[DIR_MMP])[kMMP] = f_PPM; - (dist.f[DIR_MPP])[kMPP] = f_PMM; - (dist.f[DIR_MPM])[kMPM] = f_PMP; - - (dist.f[DIR_0P0])[k0P0] = f_0M0; - (dist.f[DIR_0M0])[k0M0] = f_0P0; - (dist.f[DIR_00P])[k00P] = f_00M; - (dist.f[DIR_00M])[k00M] = f_00P; - (dist.f[DIR_0PP])[k0PP] = f_0MM; - (dist.f[DIR_0MM])[k0MM] = f_0PP; - (dist.f[DIR_0PM])[k0PM] = f_0MP; - (dist.f[DIR_0MP])[k0MP] = f_0PM; - (dist.f[DIR_000])[k000] = f_000; + (dist.f[dP00])[kP00] = f_M00; + (dist.f[dPP0])[kPP0] = f_MM0; + (dist.f[dP0M])[kP0M] = f_M0P; + (dist.f[dPM0])[kPM0] = f_MP0; + (dist.f[dPMP])[kPMP] = f_MPM; + (dist.f[dP0P])[kP0P] = f_M0M; + (dist.f[dPPM])[kPPM] = f_MMP; + (dist.f[dPPP])[kPPP] = f_MMM; + (dist.f[dPMM])[kPMM] = f_MPP; + + (dist.f[dM00])[kM00] = f_P00; + (dist.f[dMM0])[kMM0] = f_PP0; + (dist.f[dM0M])[kM0M] = f_P0P; + (dist.f[dMP0])[kMP0] = f_PM0; + (dist.f[dM0P])[kM0P] = f_P0M; + (dist.f[dMMM])[kMMM] = f_PPP; + (dist.f[dMMP])[kMMP] = f_PPM; + (dist.f[dMPP])[kMPP] = f_PMM; + (dist.f[dMPM])[kMPM] = f_PMP; + + (dist.f[d0P0])[k0P0] = f_0M0; + (dist.f[d0M0])[k0M0] = f_0P0; + (dist.f[d00P])[k00P] = f_00M; + (dist.f[d00M])[k00M] = f_00P; + (dist.f[vf::lbm::dir::d0PP])[k0PP] = f_0MM; + (dist.f[d0MM])[k0MM] = f_0PP; + (dist.f[d0PM])[k0PM] = f_0MP; + (dist.f[d0MP])[k0MP] = f_0PM; + (dist.f[d000])[k000] = f_000; } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -929,15 +929,15 @@ __global__ void PrecursorDeviceDistributions( unsigned int kPPP = KQK; // unsigned int kMMM = neighborZ[kMM0]; - dist.f[DIR_P00][kP00] = f0LastInterp*(1.f-timeRatio) + f0NextInterp*timeRatio; - dist.f[DIR_PP0][kPP0] = f1LastInterp*(1.f-timeRatio) + f1NextInterp*timeRatio; - dist.f[DIR_PM0][kPM0] = f2LastInterp*(1.f-timeRatio) + f2NextInterp*timeRatio; - dist.f[DIR_P0P][kP0P] = f3LastInterp*(1.f-timeRatio) + f3NextInterp*timeRatio; - dist.f[DIR_P0M][kP0M] = f4LastInterp*(1.f-timeRatio) + f4NextInterp*timeRatio; - dist.f[DIR_PPP][kPPP] = f5LastInterp*(1.f-timeRatio) + f5NextInterp*timeRatio; - dist.f[DIR_PMP][kPMP] = f6LastInterp*(1.f-timeRatio) + f6NextInterp*timeRatio; - dist.f[DIR_PPM][kPPM] = f7LastInterp*(1.f-timeRatio) + f7NextInterp*timeRatio; - dist.f[DIR_PMM][kPMM] = f8LastInterp*(1.f-timeRatio) + f8NextInterp*timeRatio; + dist.f[dP00][kP00] = f0LastInterp*(1.f-timeRatio) + f0NextInterp*timeRatio; + dist.f[dPP0][kPP0] = f1LastInterp*(1.f-timeRatio) + f1NextInterp*timeRatio; + dist.f[dPM0][kPM0] = f2LastInterp*(1.f-timeRatio) + f2NextInterp*timeRatio; + dist.f[dP0P][kP0P] = f3LastInterp*(1.f-timeRatio) + f3NextInterp*timeRatio; + dist.f[dP0M][kP0M] = f4LastInterp*(1.f-timeRatio) + f4NextInterp*timeRatio; + dist.f[dPPP][kPPP] = f5LastInterp*(1.f-timeRatio) + f5NextInterp*timeRatio; + dist.f[dPMP][kPMP] = f6LastInterp*(1.f-timeRatio) + f6NextInterp*timeRatio; + dist.f[dPPM][kPPM] = f7LastInterp*(1.f-timeRatio) + f7NextInterp*timeRatio; + dist.f[dPMM][kPMM] = f8LastInterp*(1.f-timeRatio) + f8NextInterp*timeRatio; } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -1143,15 +1143,15 @@ __global__ void QPrecursorDeviceDistributions( getPointersToSubgridDistances(qs, subgridDistances, sizeQ); real q; - q = qs.q[DIR_P00][nodeIndex]; if(q>= c0o1 && q <= c1o1) dist.f[DIR_P00][kP00] = f0LastInterp*(1.f-timeRatio) + f0NextInterp*timeRatio; - q = qs.q[DIR_PP0][nodeIndex]; if(q>= c0o1 && q <= c1o1) dist.f[DIR_PP0][kPP0] = f1LastInterp*(1.f-timeRatio) + f1NextInterp*timeRatio; - q = qs.q[DIR_PM0][nodeIndex]; if(q>= c0o1 && q <= c1o1) dist.f[DIR_PM0][kPM0] = f2LastInterp*(1.f-timeRatio) + f2NextInterp*timeRatio; - q = qs.q[DIR_P0P][nodeIndex]; if(q>= c0o1 && q <= c1o1) dist.f[DIR_P0P][kP0P] = f3LastInterp*(1.f-timeRatio) + f3NextInterp*timeRatio; - q = qs.q[DIR_P0M][nodeIndex]; if(q>= c0o1 && q <= c1o1) dist.f[DIR_P0M][kP0M] = f4LastInterp*(1.f-timeRatio) + f4NextInterp*timeRatio; - q = qs.q[DIR_PPP][nodeIndex]; if(q>= c0o1 && q <= c1o1) dist.f[DIR_PPP][kPPP] = f5LastInterp*(1.f-timeRatio) + f5NextInterp*timeRatio; - q = qs.q[DIR_PMP][nodeIndex]; if(q>= c0o1 && q <= c1o1) dist.f[DIR_PMP][kPMP] = f6LastInterp*(1.f-timeRatio) + f6NextInterp*timeRatio; - q = qs.q[DIR_PPM][nodeIndex]; if(q>= c0o1 && q <= c1o1) dist.f[DIR_PPM][kPPM] = f7LastInterp*(1.f-timeRatio) + f7NextInterp*timeRatio; - q = qs.q[DIR_PMM][nodeIndex]; if(q>= c0o1 && q <= c1o1) dist.f[DIR_PMM][kPMM] = f8LastInterp*(1.f-timeRatio) + f8NextInterp*timeRatio; + q = qs.q[dP00][nodeIndex]; if(q>= c0o1 && q <= c1o1) dist.f[dP00][kP00] = f0LastInterp*(1.f-timeRatio) + f0NextInterp*timeRatio; + q = qs.q[dPP0][nodeIndex]; if(q>= c0o1 && q <= c1o1) dist.f[dPP0][kPP0] = f1LastInterp*(1.f-timeRatio) + f1NextInterp*timeRatio; + q = qs.q[dPM0][nodeIndex]; if(q>= c0o1 && q <= c1o1) dist.f[dPM0][kPM0] = f2LastInterp*(1.f-timeRatio) + f2NextInterp*timeRatio; + q = qs.q[dP0P][nodeIndex]; if(q>= c0o1 && q <= c1o1) dist.f[dP0P][kP0P] = f3LastInterp*(1.f-timeRatio) + f3NextInterp*timeRatio; + q = qs.q[dP0M][nodeIndex]; if(q>= c0o1 && q <= c1o1) dist.f[dP0M][kP0M] = f4LastInterp*(1.f-timeRatio) + f4NextInterp*timeRatio; + q = qs.q[dPPP][nodeIndex]; if(q>= c0o1 && q <= c1o1) dist.f[dPPP][kPPP] = f5LastInterp*(1.f-timeRatio) + f5NextInterp*timeRatio; + q = qs.q[dPMP][nodeIndex]; if(q>= c0o1 && q <= c1o1) dist.f[dPMP][kPMP] = f6LastInterp*(1.f-timeRatio) + f6NextInterp*timeRatio; + q = qs.q[dPPM][nodeIndex]; if(q>= c0o1 && q <= c1o1) dist.f[dPPM][kPPM] = f7LastInterp*(1.f-timeRatio) + f7NextInterp*timeRatio; + q = qs.q[dPMM][nodeIndex]; if(q>= c0o1 && q <= c1o1) dist.f[dPMM][kPMM] = f8LastInterp*(1.f-timeRatio) + f8NextInterp*timeRatio; } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/src/gpu/core/GPU/PressBCs27.cu b/src/gpu/core/GPU/PressBCs27.cu new file mode 100644 index 0000000000000000000000000000000000000000..9ccd5a496b7bb233a2c322e8f2564079d610f7b6 --- /dev/null +++ b/src/gpu/core/GPU/PressBCs27.cu @@ -0,0 +1,5294 @@ +//======================================================================================= +// ____ ____ __ ______ __________ __ __ __ __ +// \ \ | | | | | _ \ |___ ___| | | | | / \ | | +// \ \ | | | | | |_) | | | | | | | / \ | | +// \ \ | | | | | _ / | | | | | | / /\ \ | | +// \ \ | | | | | | \ \ | | | \__/ | / ____ \ | |____ +// \ \ | | |__| |__| \__\ |__| \________/ /__/ \__\ |_______| +// \ \ | | ________________________________________________________________ +// \ \ | | | ______________________________________________________________| +// \ \| | | | __ __ __ __ ______ _______ +// \ | | |_____ | | | | | | | | | _ \ / _____) +// \ | | _____| | | | | | | | | | | \ \ \_______ +// \ | | | | |_____ | \_/ | | | | |_/ / _____ | +// \ _____| |__| |________| \_______/ |__| |______/ (_______/ +// +// 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 PressBCs27.cu +//! \ingroup GPU +//! \author Martin Schoenherr, Anna Wellmann +//====================================================================================== +#include "LBM/LB.h" +#include "lbm/constants/D3Q27.h" +#include "basics/constants/NumericConstants.h" +#include "lbm/MacroscopicQuantities.h" +#include "LBM/GPUHelperFunctions/KernelUtilities.h" + +using namespace vf::basics::constant; +using namespace vf::lbm::dir; +using namespace vf::gpu; + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +__global__ void QInflowScaleByPressDevice27( + real* rhoBC, + real* DD, + int* k_Q, + int* k_N, + int numberOfBCnodes, + real om1, + unsigned int* neighborX, + unsigned int* neighborY, + unsigned int* neighborZ, + unsigned long long numberOfLBnodes, + bool isEvenTimestep) +{ + //////////////////////////////////////////////////////////////////////////////// + const unsigned x = threadIdx.x; // Globaler x-Index + const unsigned y = blockIdx.x; // Globaler y-Index + const unsigned z = blockIdx.y; // Globaler z-Index + + const unsigned nx = blockDim.x; + const unsigned ny = gridDim.x; + + const unsigned k = nx*(ny*z + y) + x; + ////////////////////////////////////////////////////////////////////////// + + if(k<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]; + 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]; + //////////////////////////////////////////////////////////////////////////////// + //index1 + unsigned int K1QK = k_N[k]; + unsigned int k1zero= K1QK; + unsigned int k1e = K1QK; + unsigned int k1w = neighborX[K1QK]; + unsigned int k1n = K1QK; + unsigned int k1s = neighborY[K1QK]; + unsigned int k1t = K1QK; + unsigned int k1b = neighborZ[K1QK]; + unsigned int k1sw = neighborY[k1w]; + unsigned int k1ne = K1QK; + unsigned int k1se = k1s; + unsigned int k1nw = k1w; + unsigned int k1bw = neighborZ[k1w]; + unsigned int k1te = K1QK; + unsigned int k1be = k1b; + unsigned int k1tw = k1w; + unsigned int k1bs = neighborZ[k1s]; + unsigned int k1tn = K1QK; + unsigned int k1bn = k1b; + unsigned int k1ts = k1s; + unsigned int k1tse = k1s; + unsigned int k1bnw = k1bw; + unsigned int k1tnw = k1w; + unsigned int k1bse = k1bs; + unsigned int k1tsw = k1sw; + unsigned int k1bne = k1b; + unsigned int k1tne = K1QK; + unsigned int k1bsw = neighborZ[k1sw]; + //////////////////////////////////////////////////////////////////////////////// + Distributions27 D; + if (isEvenTimestep==true) + { + D.f[dP00] = &DD[dP00 * numberOfLBnodes]; + D.f[dM00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00P] = &DD[d00P * numberOfLBnodes]; + D.f[d00M] = &DD[d00M * numberOfLBnodes]; + D.f[dPP0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dMM0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dP0P] = &DD[dP0P * numberOfLBnodes]; + D.f[dM0M] = &DD[dM0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dP0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dM0P * numberOfLBnodes]; + D.f[d0PP] = &DD[d0PP * numberOfLBnodes]; + D.f[d0MM] = &DD[d0MM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0PM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dPPP * numberOfLBnodes]; + D.f[dMMP] = &DD[dMMP * numberOfLBnodes]; + D.f[dPMP] = &DD[dPMP * numberOfLBnodes]; + D.f[dMPP] = &DD[dMPP * numberOfLBnodes]; + D.f[dPPM] = &DD[dPPM * numberOfLBnodes]; + D.f[dMMM] = &DD[dMMM * numberOfLBnodes]; + D.f[dPMM] = &DD[dPMM * numberOfLBnodes]; + D.f[dMPM] = &DD[dMPM * numberOfLBnodes]; + } + else + { + D.f[dM00] = &DD[dP00 * numberOfLBnodes]; + D.f[dP00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00M] = &DD[d00P * numberOfLBnodes]; + D.f[d00P] = &DD[d00M * numberOfLBnodes]; + D.f[dMM0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dPP0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dM0M] = &DD[dP0P * numberOfLBnodes]; + D.f[dP0P] = &DD[dM0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dP0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dM0P * numberOfLBnodes]; + D.f[d0MM] = &DD[d0PP * numberOfLBnodes]; + D.f[d0PP] = &DD[d0MM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0PM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dMMM * numberOfLBnodes]; + D.f[dMMP] = &DD[dPPM * numberOfLBnodes]; + D.f[dPMP] = &DD[dMPM * numberOfLBnodes]; + D.f[dMPP] = &DD[dPMM * numberOfLBnodes]; + D.f[dPPM] = &DD[dMMP * numberOfLBnodes]; + D.f[dMMM] = &DD[dPPP * numberOfLBnodes]; + D.f[dPMM] = &DD[dMPP * numberOfLBnodes]; + D.f[dMPM] = &DD[dPMP * numberOfLBnodes]; + } + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + real f1_E = (D.f[dP00])[k1e ]; + real f1_W = (D.f[dM00])[k1w ]; + real f1_N = (D.f[d0P0])[k1n ]; + real f1_S = (D.f[d0M0])[k1s ]; + real f1_T = (D.f[d00P])[k1t ]; + real f1_B = (D.f[d00M])[k1b ]; + real f1_NE = (D.f[dPP0])[k1ne ]; + real f1_SW = (D.f[dMM0])[k1sw ]; + real f1_SE = (D.f[dPM0])[k1se ]; + real f1_NW = (D.f[dMP0])[k1nw ]; + real f1_TE = (D.f[dP0P])[k1te ]; + real f1_BW = (D.f[dM0M])[k1bw ]; + real f1_BE = (D.f[dP0M])[k1be ]; + real f1_TW = (D.f[dM0P])[k1tw ]; + real f1_TN = (D.f[d0PP])[k1tn ]; + real f1_BS = (D.f[d0MM])[k1bs ]; + real f1_BN = (D.f[d0PM])[k1bn ]; + real f1_TS = (D.f[d0MP])[k1ts ]; + //real f1_ZERO = (D.f[d000])[k1zero]; + real f1_TNE = (D.f[dPPP])[k1tne ]; + real f1_TSW = (D.f[dMMP])[k1tsw ]; + real f1_TSE = (D.f[dPMP])[k1tse ]; + real f1_TNW = (D.f[dMPP])[k1tnw ]; + real f1_BNE = (D.f[dPPM])[k1bne ]; + real f1_BSW = (D.f[dMMM])[k1bsw ]; + real f1_BSE = (D.f[dPMM])[k1bse ]; + real f1_BNW = (D.f[dMPM])[k1bnw ]; + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + real f_E = (D.f[dP00])[ke ]; + real f_W = (D.f[dM00])[kw ]; + real f_N = (D.f[d0P0])[kn ]; + real f_S = (D.f[d0M0])[ks ]; + real f_T = (D.f[d00P])[kt ]; + real f_B = (D.f[d00M])[kb ]; + real f_NE = (D.f[dPP0])[kne ]; + real f_SW = (D.f[dMM0])[ksw ]; + real f_SE = (D.f[dPM0])[kse ]; + real f_NW = (D.f[dMP0])[knw ]; + real f_TE = (D.f[dP0P])[kte ]; + real f_BW = (D.f[dM0M])[kbw ]; + real f_BE = (D.f[dP0M])[kbe ]; + real f_TW = (D.f[dM0P])[ktw ]; + real f_TN = (D.f[d0PP])[ktn ]; + real f_BS = (D.f[d0MM])[kbs ]; + real f_BN = (D.f[d0PM])[kbn ]; + real f_TS = (D.f[d0MP])[kts ]; + //real f_ZERO = (D.f[d000])[kzero]; + real f_TNE = (D.f[dPPP])[ktne ]; + real f_TSW = (D.f[dMMP])[ktsw ]; + real f_TSE = (D.f[dPMP])[ktse ]; + real f_TNW = (D.f[dMPP])[ktnw ]; + real f_BNE = (D.f[dPPM])[kbne ]; + real f_BSW = (D.f[dMMM])[kbsw ]; + real f_BSE = (D.f[dPMM])[kbse ]; + real f_BNW = (D.f[dMPM])[kbnw ]; + ////////////////////////////////////////////////////////////////////////// + // real vx1, vx2, vx3; + real drho, drho1; + ////////////////////////////////////////////////////////////////////////// + //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[d000])[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[d000])[kzero]); + ////////////////////////////////////////////////////////////////////////// + //Schallgeschwindigkeit + real cs = c1o1 / sqrtf(c3o1); + ////////////////////////////////////////////////////////////////////////// + real rhoInterpol = drho1 * cs + (c1o1 - cs) * drho; + //real diffRho = (rhoBC[k] + one) / (rhoInterpol + one); + real diffRhoToAdd = rhoBC[k] - rhoInterpol; + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //no velocity + ////////////////////////////////////////// + f_E = f1_E * cs + (c1o1 - cs) * f_E ; + f_W = f1_W * cs + (c1o1 - cs) * f_W ; + f_N = f1_N * cs + (c1o1 - cs) * f_N ; + f_S = f1_S * cs + (c1o1 - cs) * f_S ; + f_T = f1_T * cs + (c1o1 - cs) * f_T ; + f_B = f1_B * cs + (c1o1 - cs) * f_B ; + f_NE = f1_NE * cs + (c1o1 - cs) * f_NE ; + f_SW = f1_SW * cs + (c1o1 - cs) * f_SW ; + f_SE = f1_SE * cs + (c1o1 - cs) * f_SE ; + f_NW = f1_NW * cs + (c1o1 - cs) * f_NW ; + f_TE = f1_TE * cs + (c1o1 - cs) * f_TE ; + f_BW = f1_BW * cs + (c1o1 - cs) * f_BW ; + f_BE = f1_BE * cs + (c1o1 - cs) * f_BE ; + f_TW = f1_TW * cs + (c1o1 - cs) * f_TW ; + f_TN = f1_TN * cs + (c1o1 - cs) * f_TN ; + f_BS = f1_BS * cs + (c1o1 - cs) * f_BS ; + f_BN = f1_BN * cs + (c1o1 - cs) * f_BN ; + f_TS = f1_TS * cs + (c1o1 - cs) * f_TS ; + f_TNE = f1_TNE * cs + (c1o1 - cs) * f_TNE ; + f_TSW = f1_TSW * cs + (c1o1 - cs) * f_TSW ; + f_TSE = f1_TSE * cs + (c1o1 - cs) * f_TSE ; + f_TNW = f1_TNW * cs + (c1o1 - cs) * f_TNW ; + f_BNE = f1_BNE * cs + (c1o1 - cs) * f_BNE ; + f_BSW = f1_BSW * cs + (c1o1 - cs) * f_BSW ; + f_BSE = f1_BSE * cs + (c1o1 - cs) * f_BSE ; + f_BNW = f1_BNW * cs + (c1o1 - cs) * f_BNW ; + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //scale by press + ////////////////////////////////////////// + //f_E = (f_E + c2over27 ) * diffRho - c2over27 ; + // f_W = (f_W + c2over27 ) * diffRho - c2over27 ; + // f_N = (f_N + c2over27 ) * diffRho - c2over27 ; + // f_S = (f_S + c2over27 ) * diffRho - c2over27 ; + // f_T = (f_T + c2over27 ) * diffRho - c2over27 ; + // f_B = (f_B + c2over27 ) * diffRho - c2over27 ; + //f_NE = (f_NE + c1over54 ) * diffRho - c1over54 ; + // f_SW = (f_SW + c1over54 ) * diffRho - c1over54 ; + // f_SE = (f_SE + c1over54 ) * diffRho - c1over54 ; + // f_NW = (f_NW + c1over54 ) * diffRho - c1over54 ; + // f_TE = (f_TE + c1over54 ) * diffRho - c1over54 ; + // f_BW = (f_BW + c1over54 ) * diffRho - c1over54 ; + // f_BE = (f_BE + c1over54 ) * diffRho - c1over54 ; + // f_TW = (f_TW + c1over54 ) * diffRho - c1over54 ; + // f_TN = (f_TN + c1over54 ) * diffRho - c1over54 ; + // f_BS = (f_BS + c1over54 ) * diffRho - c1over54 ; + // f_BN = (f_BN + c1over54 ) * diffRho - c1over54 ; + // f_TS = (f_TS + c1over54 ) * diffRho - c1over54 ; + // f_TNE = (f_TNE + c1over216) * diffRho - c1over216; + // f_TSW = (f_TSW + c1over216) * diffRho - c1over216; + // f_TSE = (f_TSE + c1over216) * diffRho - c1over216; + // f_TNW = (f_TNW + c1over216) * diffRho - c1over216; + // f_BNE = (f_BNE + c1over216) * diffRho - c1over216; + // f_BSW = (f_BSW + c1over216) * diffRho - c1over216; + // f_BSE = (f_BSE + c1over216) * diffRho - c1over216; + // f_BNW = (f_BNW + c1over216) * diffRho - c1over216; + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // add press + ////////////////////////////////////////// + f_E = (f_E + c2o27 * diffRhoToAdd); + f_W = (f_W + c2o27 * diffRhoToAdd); + f_N = (f_N + c2o27 * diffRhoToAdd); + f_S = (f_S + c2o27 * diffRhoToAdd); + f_T = (f_T + c2o27 * diffRhoToAdd); + f_B = (f_B + c2o27 * diffRhoToAdd); + f_NE = (f_NE + c1o54 * diffRhoToAdd); + f_SW = (f_SW + c1o54 * diffRhoToAdd); + f_SE = (f_SE + c1o54 * diffRhoToAdd); + f_NW = (f_NW + c1o54 * diffRhoToAdd); + f_TE = (f_TE + c1o54 * diffRhoToAdd); + f_BW = (f_BW + c1o54 * diffRhoToAdd); + f_BE = (f_BE + c1o54 * diffRhoToAdd); + f_TW = (f_TW + c1o54 * diffRhoToAdd); + f_TN = (f_TN + c1o54 * diffRhoToAdd); + f_BS = (f_BS + c1o54 * diffRhoToAdd); + f_BN = (f_BN + c1o54 * diffRhoToAdd); + f_TS = (f_TS + c1o54 * diffRhoToAdd); + f_TNE = (f_TNE + c1o216 * diffRhoToAdd); + f_TSW = (f_TSW + c1o216 * diffRhoToAdd); + f_TSE = (f_TSE + c1o216 * diffRhoToAdd); + f_TNW = (f_TNW + c1o216 * diffRhoToAdd); + f_BNE = (f_BNE + c1o216 * diffRhoToAdd); + f_BSW = (f_BSW + c1o216 * diffRhoToAdd); + f_BSE = (f_BSE + c1o216 * diffRhoToAdd); + f_BNW = (f_BNW + c1o216 * diffRhoToAdd); + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + ////////////////////////////////////////////////////////////////////////// + if (isEvenTimestep==false) + { + D.f[dP00] = &DD[dP00 * numberOfLBnodes]; + D.f[dM00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00P] = &DD[d00P * numberOfLBnodes]; + D.f[d00M] = &DD[d00M * numberOfLBnodes]; + D.f[dPP0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dMM0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dP0P] = &DD[dP0P * numberOfLBnodes]; + D.f[dM0M] = &DD[dM0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dP0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dM0P * numberOfLBnodes]; + D.f[d0PP] = &DD[d0PP * numberOfLBnodes]; + D.f[d0MM] = &DD[d0MM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0PM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dPPP * numberOfLBnodes]; + D.f[dMMP] = &DD[dMMP * numberOfLBnodes]; + D.f[dPMP] = &DD[dPMP * numberOfLBnodes]; + D.f[dMPP] = &DD[dMPP * numberOfLBnodes]; + D.f[dPPM] = &DD[dPPM * numberOfLBnodes]; + D.f[dMMM] = &DD[dMMM * numberOfLBnodes]; + D.f[dPMM] = &DD[dPMM * numberOfLBnodes]; + D.f[dMPM] = &DD[dMPM * numberOfLBnodes]; + } + else + { + D.f[dM00] = &DD[dP00 * numberOfLBnodes]; + D.f[dP00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00M] = &DD[d00P * numberOfLBnodes]; + D.f[d00P] = &DD[d00M * numberOfLBnodes]; + D.f[dMM0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dPP0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dM0M] = &DD[dP0P * numberOfLBnodes]; + D.f[dP0P] = &DD[dM0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dP0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dM0P * numberOfLBnodes]; + D.f[d0MM] = &DD[d0PP * numberOfLBnodes]; + D.f[d0PP] = &DD[d0MM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0PM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dMMM * numberOfLBnodes]; + D.f[dMMP] = &DD[dPPM * numberOfLBnodes]; + D.f[dPMP] = &DD[dMPM * numberOfLBnodes]; + D.f[dMPP] = &DD[dPMM * numberOfLBnodes]; + D.f[dPPM] = &DD[dMMP * numberOfLBnodes]; + D.f[dMMM] = &DD[dPPP * numberOfLBnodes]; + D.f[dPMM] = &DD[dMPP * numberOfLBnodes]; + D.f[dMPM] = &DD[dPMP * numberOfLBnodes]; + } + ////////////////////////////////////////////////////////////////////////// + //__syncthreads(); + // -X + //(D.f[dP00])[ke ] = f_E ; + //(D.f[dPM0])[kse ] = f_SE ; + //(D.f[dPP0])[kne ] = f_NE ; + //(D.f[dP0M])[kbe ] = f_BE ; + //(D.f[dP0P])[kte ] = f_TE ; + //(D.f[dPMP])[ktse ] = f_TSE ; + //(D.f[dPPP])[ktne ] = f_TNE ; + //(D.f[dPMM])[kbse ] = f_BSE ; + //(D.f[dPPM])[kbne ] = f_BNE ; + // X + (D.f[dM00])[kw ] = f_W ; + (D.f[dMM0])[ksw ] = f_SW ; + (D.f[dMP0])[knw ] = f_NW ; + (D.f[dM0M])[kbw ] = f_BW ; + (D.f[dM0P])[ktw ] = f_TW ; + (D.f[dMMP])[ktsw ] = f_TSW ; + (D.f[dMPP])[ktnw ] = f_TNW ; + (D.f[dMMM])[kbsw ] = f_BSW ; + (D.f[dMPM])[kbnw ] = f_BNW ; + // Y + //(D.f[d0M0])[ks ] = f_S ; + //(D.f[dPM0])[kse ] = f_SE ; + //(D.f[dMM0])[ksw ] = f_SW ; + //(D.f[d0MP])[kts ] = f_TS ; + //(D.f[d0MM])[kbs ] = f_BS ; + //(D.f[dPMP])[ktse ] = f_TSE ; + //(D.f[dMMP])[ktsw ] = f_TSW ; + //(D.f[dPMM])[kbse ] = f_BSE ; + //(D.f[dMMM])[kbsw ] = f_BSW ; + // Z + //(D.f[d00M])[kb ] = f_B ; + //(D.f[dP0M])[kbe ] = f_BE ; + //(D.f[dM0M])[kbw ] = f_BW ; + //(D.f[d0PM])[kbn ] = f_BN ; + //(D.f[d0MM])[kbs ] = f_BS ; + //(D.f[dPPM])[kbne ] = f_BNE ; + //(D.f[dMPM])[kbnw ] = f_BNW ; + //(D.f[dPMM])[kbse ] = f_BSE ; + //(D.f[dMMM])[kbsw ] = f_BSW ; + ////////////////////////////////////////////////////////////////////////// + } +} +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +__global__ void QPressDeviceIncompNEQ27( + real* rhoBC, + real* DD, + int* k_Q, + int* k_N, + int numberOfBCnodes, + real om1, + unsigned int* neighborX, + unsigned int* neighborY, + unsigned int* neighborZ, + unsigned long long numberOfLBnodes, + bool isEvenTimestep) +{ + //////////////////////////////////////////////////////////////////////////////// + const unsigned x = threadIdx.x; // Globaler x-Index + const unsigned y = blockIdx.x; // Globaler y-Index + const unsigned z = blockIdx.y; // Globaler z-Index + + const unsigned nx = blockDim.x; + const unsigned ny = gridDim.x; + + const unsigned k = nx*(ny*z + y) + x; + ////////////////////////////////////////////////////////////////////////// + + if(k<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]; + 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]; + //////////////////////////////////////////////////////////////////////////////// + //index1 + unsigned int K1QK = k_N[k]; + unsigned int k1zero= K1QK; + unsigned int k1e = K1QK; + unsigned int k1w = neighborX[K1QK]; + unsigned int k1n = K1QK; + unsigned int k1s = neighborY[K1QK]; + unsigned int k1t = K1QK; + unsigned int k1b = neighborZ[K1QK]; + unsigned int k1sw = neighborY[k1w]; + unsigned int k1ne = K1QK; + unsigned int k1se = k1s; + unsigned int k1nw = k1w; + unsigned int k1bw = neighborZ[k1w]; + unsigned int k1te = K1QK; + unsigned int k1be = k1b; + unsigned int k1tw = k1w; + unsigned int k1bs = neighborZ[k1s]; + unsigned int k1tn = K1QK; + unsigned int k1bn = k1b; + unsigned int k1ts = k1s; + unsigned int k1tse = k1s; + unsigned int k1bnw = k1bw; + unsigned int k1tnw = k1w; + unsigned int k1bse = k1bs; + unsigned int k1tsw = k1sw; + unsigned int k1bne = k1b; + unsigned int k1tne = K1QK; + unsigned int k1bsw = neighborZ[k1sw]; + //////////////////////////////////////////////////////////////////////////////// + Distributions27 D; + if (isEvenTimestep==true) //// ACHTUNG PREColl !!!!!!!!!!!!!! + { + D.f[dP00] = &DD[dP00 * numberOfLBnodes]; + D.f[dM00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00P] = &DD[d00P * numberOfLBnodes]; + D.f[d00M] = &DD[d00M * numberOfLBnodes]; + D.f[dPP0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dMM0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dP0P] = &DD[dP0P * numberOfLBnodes]; + D.f[dM0M] = &DD[dM0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dP0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dM0P * numberOfLBnodes]; + D.f[d0PP] = &DD[d0PP * numberOfLBnodes]; + D.f[d0MM] = &DD[d0MM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0PM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dPPP * numberOfLBnodes]; + D.f[dMMP] = &DD[dMMP * numberOfLBnodes]; + D.f[dPMP] = &DD[dPMP * numberOfLBnodes]; + D.f[dMPP] = &DD[dMPP * numberOfLBnodes]; + D.f[dPPM] = &DD[dPPM * numberOfLBnodes]; + D.f[dMMM] = &DD[dMMM * numberOfLBnodes]; + D.f[dPMM] = &DD[dPMM * numberOfLBnodes]; + D.f[dMPM] = &DD[dMPM * numberOfLBnodes]; + } + else + { + D.f[dM00] = &DD[dP00 * numberOfLBnodes]; + D.f[dP00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00M] = &DD[d00P * numberOfLBnodes]; + D.f[d00P] = &DD[d00M * numberOfLBnodes]; + D.f[dMM0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dPP0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dM0M] = &DD[dP0P * numberOfLBnodes]; + D.f[dP0P] = &DD[dM0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dP0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dM0P * numberOfLBnodes]; + D.f[d0MM] = &DD[d0PP * numberOfLBnodes]; + D.f[d0PP] = &DD[d0MM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0PM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dMMM * numberOfLBnodes]; + D.f[dMMP] = &DD[dPPM * numberOfLBnodes]; + D.f[dPMP] = &DD[dMPM * numberOfLBnodes]; + D.f[dMPP] = &DD[dPMM * numberOfLBnodes]; + D.f[dPPM] = &DD[dMMP * numberOfLBnodes]; + D.f[dMMM] = &DD[dPPP * numberOfLBnodes]; + D.f[dPMM] = &DD[dMPP * numberOfLBnodes]; + D.f[dMPM] = &DD[dPMP * numberOfLBnodes]; + } + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + 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[dP00])[k1e ]; + f1_E = (D.f[dM00])[k1w ]; + f1_S = (D.f[d0P0])[k1n ]; + f1_N = (D.f[d0M0])[k1s ]; + f1_B = (D.f[d00P])[k1t ]; + f1_T = (D.f[d00M])[k1b ]; + f1_SW = (D.f[dPP0])[k1ne ]; + f1_NE = (D.f[dMM0])[k1sw ]; + f1_NW = (D.f[dPM0])[k1se ]; + f1_SE = (D.f[dMP0])[k1nw ]; + f1_BW = (D.f[dP0P])[k1te ]; + f1_TE = (D.f[dM0M])[k1bw ]; + f1_TW = (D.f[dP0M])[k1be ]; + f1_BE = (D.f[dM0P])[k1tw ]; + f1_BS = (D.f[d0PP])[k1tn ]; + f1_TN = (D.f[d0MM])[k1bs ]; + f1_TS = (D.f[d0PM])[k1bn ]; + f1_BN = (D.f[d0MP])[k1ts ]; + f1_ZERO = (D.f[d000])[k1zero]; + f1_BSW = (D.f[dPPP])[k1tne ]; + f1_BNE = (D.f[dMMP])[k1tsw ]; + f1_BNW = (D.f[dPMP])[k1tse ]; + f1_BSE = (D.f[dMPP])[k1tnw ]; + f1_TSW = (D.f[dPPM])[k1bne ]; + f1_TNE = (D.f[dMMM])[k1bsw ]; + f1_TNW = (D.f[dPMM])[k1bse ]; + f1_TSE = (D.f[dMPM])[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); + + + 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 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 cusq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3); + + 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)); + f1_N -= c2o27* (drho1+(drho1+c1o1)*(c3o1*( vx2 )+c9o2*( vx2 )*( vx2 )-cusq)); + f1_S -= c2o27* (drho1+(drho1+c1o1)*(c3o1*( -vx2 )+c9o2*( -vx2 )*( -vx2 )-cusq)); + f1_T -= c2o27* (drho1+(drho1+c1o1)*(c3o1*( vx3)+c9o2*( vx3)*( vx3)-cusq)); + f1_B -= c2o27* (drho1+(drho1+c1o1)*(c3o1*( -vx3)+c9o2*( -vx3)*( -vx3)-cusq)); + f1_NE -= c1o54* (drho1+(drho1+c1o1)*(c3o1*( vx1+vx2 )+c9o2*( vx1+vx2 )*( vx1+vx2 )-cusq)); + f1_SW -= c1o54* (drho1+(drho1+c1o1)*(c3o1*(-vx1-vx2 )+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cusq)); + f1_SE -= c1o54* (drho1+(drho1+c1o1)*(c3o1*( vx1-vx2 )+c9o2*( vx1-vx2 )*( vx1-vx2 )-cusq)); + f1_NW -= c1o54* (drho1+(drho1+c1o1)*(c3o1*(-vx1+vx2 )+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cusq)); + f1_TE -= c1o54* (drho1+(drho1+c1o1)*(c3o1*( vx1 +vx3)+c9o2*( vx1 +vx3)*( vx1 +vx3)-cusq)); + f1_BW -= c1o54* (drho1+(drho1+c1o1)*(c3o1*(-vx1 -vx3)+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cusq)); + f1_BE -= c1o54* (drho1+(drho1+c1o1)*(c3o1*( vx1 -vx3)+c9o2*( vx1 -vx3)*( vx1 -vx3)-cusq)); + f1_TW -= c1o54* (drho1+(drho1+c1o1)*(c3o1*(-vx1 +vx3)+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cusq)); + f1_TN -= c1o54* (drho1+(drho1+c1o1)*(c3o1*( vx2+vx3)+c9o2*( vx2+vx3)*( vx2+vx3)-cusq)); + f1_BS -= c1o54* (drho1+(drho1+c1o1)*(c3o1*( -vx2-vx3)+c9o2*( -vx2-vx3)*( -vx2-vx3)-cusq)); + f1_BN -= c1o54* (drho1+(drho1+c1o1)*(c3o1*( vx2-vx3)+c9o2*( vx2-vx3)*( vx2-vx3)-cusq)); + f1_TS -= c1o54* (drho1+(drho1+c1o1)*(c3o1*( -vx2+vx3)+c9o2*( -vx2+vx3)*( -vx2+vx3)-cusq)); + f1_TNE -= c1o216*(drho1+(drho1+c1o1)*(c3o1*( vx1+vx2+vx3)+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cusq)); + f1_BSW -= c1o216*(drho1+(drho1+c1o1)*(c3o1*(-vx1-vx2-vx3)+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cusq)); + f1_BNE -= c1o216*(drho1+(drho1+c1o1)*(c3o1*( vx1+vx2-vx3)+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cusq)); + f1_TSW -= c1o216*(drho1+(drho1+c1o1)*(c3o1*(-vx1-vx2+vx3)+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cusq)); + f1_TSE -= c1o216*(drho1+(drho1+c1o1)*(c3o1*( vx1-vx2+vx3)+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cusq)); + 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]; + + //if(vx1 < zero){ + // vx1 *= 0.9; + //} + //if(vx2 < zero){ + // vx2 *= c1o10;//0.9; + //} + + 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)); + f1_N += c2o27* (drho1+(drho1+c1o1)*(c3o1*( vx2 )+c9o2*( vx2 )*( vx2 )-cusq)); + f1_S += c2o27* (drho1+(drho1+c1o1)*(c3o1*( -vx2 )+c9o2*( -vx2 )*( -vx2 )-cusq)); + f1_T += c2o27* (drho1+(drho1+c1o1)*(c3o1*( vx3)+c9o2*( vx3)*( vx3)-cusq)); + f1_B += c2o27* (drho1+(drho1+c1o1)*(c3o1*( -vx3)+c9o2*( -vx3)*( -vx3)-cusq)); + f1_NE += c1o54* (drho1+(drho1+c1o1)*(c3o1*( vx1+vx2 )+c9o2*( vx1+vx2 )*( vx1+vx2 )-cusq)); + f1_SW += c1o54* (drho1+(drho1+c1o1)*(c3o1*(-vx1-vx2 )+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cusq)); + f1_SE += c1o54* (drho1+(drho1+c1o1)*(c3o1*( vx1-vx2 )+c9o2*( vx1-vx2 )*( vx1-vx2 )-cusq)); + f1_NW += c1o54* (drho1+(drho1+c1o1)*(c3o1*(-vx1+vx2 )+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cusq)); + f1_TE += c1o54* (drho1+(drho1+c1o1)*(c3o1*( vx1 +vx3)+c9o2*( vx1 +vx3)*( vx1 +vx3)-cusq)); + f1_BW += c1o54* (drho1+(drho1+c1o1)*(c3o1*(-vx1 -vx3)+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cusq)); + f1_BE += c1o54* (drho1+(drho1+c1o1)*(c3o1*( vx1 -vx3)+c9o2*( vx1 -vx3)*( vx1 -vx3)-cusq)); + f1_TW += c1o54* (drho1+(drho1+c1o1)*(c3o1*(-vx1 +vx3)+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cusq)); + f1_TN += c1o54* (drho1+(drho1+c1o1)*(c3o1*( vx2+vx3)+c9o2*( vx2+vx3)*( vx2+vx3)-cusq)); + f1_BS += c1o54* (drho1+(drho1+c1o1)*(c3o1*( -vx2-vx3)+c9o2*( -vx2-vx3)*( -vx2-vx3)-cusq)); + f1_BN += c1o54* (drho1+(drho1+c1o1)*(c3o1*( vx2-vx3)+c9o2*( vx2-vx3)*( vx2-vx3)-cusq)); + f1_TS += c1o54* (drho1+(drho1+c1o1)*(c3o1*( -vx2+vx3)+c9o2*( -vx2+vx3)*( -vx2+vx3)-cusq)); + f1_TNE += c1o216*(drho1+(drho1+c1o1)*(c3o1*( vx1+vx2+vx3)+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cusq)); + f1_BSW += c1o216*(drho1+(drho1+c1o1)*(c3o1*(-vx1-vx2-vx3)+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cusq)); + f1_BNE += c1o216*(drho1+(drho1+c1o1)*(c3o1*( vx1+vx2-vx3)+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cusq)); + f1_TSW += c1o216*(drho1+(drho1+c1o1)*(c3o1*(-vx1-vx2+vx3)+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cusq)); + f1_TSE += c1o216*(drho1+(drho1+c1o1)*(c3o1*( vx1-vx2+vx3)+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cusq)); + 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 = (drho1 + rhoBC[k])/2.f; + //drho1 = drho1 - rhoBC[k]; + ////////////////////////////////////////////////////////////////////////// + + __syncthreads(); + + (D.f[dP00])[ke ] = f1_W ; + (D.f[dM00])[kw ] = f1_E ; + (D.f[d0P0])[kn ] = f1_S ; + (D.f[d0M0])[ks ] = f1_N ; + (D.f[d00P])[kt ] = f1_B ; + (D.f[d00M])[kb ] = f1_T ; + (D.f[dPP0])[kne ] = f1_SW ; + (D.f[dMM0])[ksw ] = f1_NE ; + (D.f[dPM0])[kse ] = f1_NW ; + (D.f[dMP0])[knw ] = f1_SE ; + (D.f[dP0P])[kte ] = f1_BW ; + (D.f[dM0M])[kbw ] = f1_TE ; + (D.f[dP0M])[kbe ] = f1_TW ; + (D.f[dM0P])[ktw ] = f1_BE ; + (D.f[d0PP])[ktn ] = f1_BS ; + (D.f[d0MM])[kbs ] = f1_TN ; + (D.f[d0PM])[kbn ] = f1_TS ; + (D.f[d0MP])[kts ] = f1_BN ; + (D.f[d000])[kzero] = f1_ZERO; + (D.f[dPPP])[ktne ] = f1_BSW ; + (D.f[dMMP])[ktsw ] = f1_BNE ; + (D.f[dPMP])[ktse ] = f1_BNW ; + (D.f[dMPP])[ktnw ] = f1_BSE ; + (D.f[dPPM])[kbne ] = f1_TSW ; + (D.f[dMMM])[kbsw ] = f1_TNE ; + (D.f[dPMM])[kbse ] = f1_TNW ; + (D.f[dMPM])[kbnw ] = f1_TSE ; + } +} +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +__global__ void QPressDeviceNEQ27( + real* rhoBC, + real* distributions, + int* bcNodeIndices, + int* bcNeighborIndices, + int numberOfBCnodes, + real omega1, + unsigned int* neighborX, + unsigned int* neighborY, + unsigned int* neighborZ, + unsigned long long numberOfLBnodes, + bool isEvenTimestep) +{ + //////////////////////////////////////////////////////////////////////////////// + //! The pressure boundary condition is executed in the following steps + //! + + //////////////////////////////////////////////////////////////////////////////// + //! - Get node index coordinates from threadIdx, blockIdx, blockDim and gridDim. + //! + const unsigned nodeIndex = getNodeIndex(); + + //////////////////////////////////////////////////////////////////////////////// + //! - Run for all indices in size of boundary condition (numberOfBCnodes) + //! + if(nodeIndex < 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); + + //////////////////////////////////////////////////////////////////////////////// + //! - Set local pressure + //! + real rhoBClocal = rhoBC[nodeIndex]; + + //////////////////////////////////////////////////////////////////////////////// + //! - Set neighbor indices (necessary for indirect addressing) + //! + unsigned int KQK = bcNodeIndices[nodeIndex]; + 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 neighbor indices (necessary for indirect addressing) for neighboring node + //! + unsigned int K1QK = bcNeighborIndices[nodeIndex]; + unsigned int k1zero= K1QK; + unsigned int k1e = K1QK; + unsigned int k1w = neighborX[K1QK]; + unsigned int k1n = K1QK; + unsigned int k1s = neighborY[K1QK]; + unsigned int k1t = K1QK; + unsigned int k1b = neighborZ[K1QK]; + unsigned int k1sw = neighborY[k1w]; + unsigned int k1ne = K1QK; + unsigned int k1se = k1s; + unsigned int k1nw = k1w; + unsigned int k1bw = neighborZ[k1w]; + unsigned int k1te = K1QK; + unsigned int k1be = k1b; + unsigned int k1tw = k1w; + unsigned int k1bs = neighborZ[k1s]; + unsigned int k1tn = K1QK; + unsigned int k1bn = k1b; + unsigned int k1ts = k1s; + unsigned int k1tse = k1s; + unsigned int k1bnw = k1bw; + unsigned int k1tnw = k1w; + unsigned int k1bse = k1bs; + unsigned int k1tsw = k1sw; + unsigned int k1bne = k1b; + unsigned int k1tne = K1QK; + unsigned int k1bsw = neighborZ[k1sw]; + + //////////////////////////////////////////////////////////////////////////////// + //! - Set local distributions for neighboring node + //! + real f1_W = (dist.f[dP00])[k1e ]; + real f1_E = (dist.f[dM00])[k1w ]; + real f1_S = (dist.f[d0P0])[k1n ]; + real f1_N = (dist.f[d0M0])[k1s ]; + real f1_B = (dist.f[d00P])[k1t ]; + real f1_T = (dist.f[d00M])[k1b ]; + real f1_SW = (dist.f[dPP0])[k1ne ]; + real f1_NE = (dist.f[dMM0])[k1sw ]; + real f1_NW = (dist.f[dPM0])[k1se ]; + real f1_SE = (dist.f[dMP0])[k1nw ]; + real f1_BW = (dist.f[dP0P])[k1te ]; + real f1_TE = (dist.f[dM0M])[k1bw ]; + real f1_TW = (dist.f[dP0M])[k1be ]; + real f1_BE = (dist.f[dM0P])[k1tw ]; + real f1_BS = (dist.f[d0PP])[k1tn ]; + real f1_TN = (dist.f[d0MM])[k1bs ]; + real f1_TS = (dist.f[d0PM])[k1bn ]; + real f1_BN = (dist.f[d0MP])[k1ts ]; + real f1_ZERO = (dist.f[d000])[k1zero]; + real f1_BSW = (dist.f[dPPP])[k1tne ]; + real f1_BNE = (dist.f[dMMP])[k1tsw ]; + real f1_BNW = (dist.f[dPMP])[k1tse ]; + real f1_BSE = (dist.f[dMPP])[k1tnw ]; + real f1_TSW = (dist.f[dPPM])[k1bne ]; + real f1_TNE = (dist.f[dMMM])[k1bsw ]; + real f1_TNW = (dist.f[dPMM])[k1bse ]; + real f1_TSE = (dist.f[dMPM])[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[d000])[kzero]); + + 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 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); + + 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); + + //////////////////////////////////////////////////////////////////////////////// + //! 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)); + f1_N -= c2o27* (drho1+(drho1+c1o1)*(c3o1*( vx2 )+c9o2*( vx2 )*( vx2 )-cusq)); + f1_S -= c2o27* (drho1+(drho1+c1o1)*(c3o1*( -vx2 )+c9o2*( -vx2 )*( -vx2 )-cusq)); + f1_T -= c2o27* (drho1+(drho1+c1o1)*(c3o1*( vx3)+c9o2*( vx3)*( vx3)-cusq)); + f1_B -= c2o27* (drho1+(drho1+c1o1)*(c3o1*( -vx3)+c9o2*( -vx3)*( -vx3)-cusq)); + f1_NE -= c1o54* (drho1+(drho1+c1o1)*(c3o1*( vx1+vx2 )+c9o2*( vx1+vx2 )*( vx1+vx2 )-cusq)); + f1_SW -= c1o54* (drho1+(drho1+c1o1)*(c3o1*(-vx1-vx2 )+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cusq)); + f1_SE -= c1o54* (drho1+(drho1+c1o1)*(c3o1*( vx1-vx2 )+c9o2*( vx1-vx2 )*( vx1-vx2 )-cusq)); + f1_NW -= c1o54* (drho1+(drho1+c1o1)*(c3o1*(-vx1+vx2 )+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cusq)); + f1_TE -= c1o54* (drho1+(drho1+c1o1)*(c3o1*( vx1 +vx3)+c9o2*( vx1 +vx3)*( vx1 +vx3)-cusq)); + f1_BW -= c1o54* (drho1+(drho1+c1o1)*(c3o1*(-vx1 -vx3)+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cusq)); + f1_BE -= c1o54* (drho1+(drho1+c1o1)*(c3o1*( vx1 -vx3)+c9o2*( vx1 -vx3)*( vx1 -vx3)-cusq)); + f1_TW -= c1o54* (drho1+(drho1+c1o1)*(c3o1*(-vx1 +vx3)+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cusq)); + f1_TN -= c1o54* (drho1+(drho1+c1o1)*(c3o1*( vx2+vx3)+c9o2*( vx2+vx3)*( vx2+vx3)-cusq)); + f1_BS -= c1o54* (drho1+(drho1+c1o1)*(c3o1*( -vx2-vx3)+c9o2*( -vx2-vx3)*( -vx2-vx3)-cusq)); + f1_BN -= c1o54* (drho1+(drho1+c1o1)*(c3o1*( vx2-vx3)+c9o2*( vx2-vx3)*( vx2-vx3)-cusq)); + f1_TS -= c1o54* (drho1+(drho1+c1o1)*(c3o1*( -vx2+vx3)+c9o2*( -vx2+vx3)*( -vx2+vx3)-cusq)); + f1_TNE -= c1o216*(drho1+(drho1+c1o1)*(c3o1*( vx1+vx2+vx3)+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cusq)); + f1_BSW -= c1o216*(drho1+(drho1+c1o1)*(c3o1*(-vx1-vx2-vx3)+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cusq)); + f1_BNE -= c1o216*(drho1+(drho1+c1o1)*(c3o1*( vx1+vx2-vx3)+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cusq)); + f1_TSW -= c1o216*(drho1+(drho1+c1o1)*(c3o1*(-vx1-vx2+vx3)+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cusq)); + f1_TSE -= c1o216*(drho1+(drho1+c1o1)*(c3o1*( vx1-vx2+vx3)+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cusq)); + 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)); + + //////////////////////////////////////////////////////////////////////////////// + //! 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)); + f1_N += c2o27* (drho1+(drho1+c1o1)*(c3o1*( vx2 )+c9o2*( vx2 )*( vx2 )-cusq)); + f1_S += c2o27* (drho1+(drho1+c1o1)*(c3o1*( -vx2 )+c9o2*( -vx2 )*( -vx2 )-cusq)); + f1_T += c2o27* (drho1+(drho1+c1o1)*(c3o1*( vx3)+c9o2*( vx3)*( vx3)-cusq)); + f1_B += c2o27* (drho1+(drho1+c1o1)*(c3o1*( -vx3)+c9o2*( -vx3)*( -vx3)-cusq)); + f1_NE += c1o54* (drho1+(drho1+c1o1)*(c3o1*( vx1+vx2 )+c9o2*( vx1+vx2 )*( vx1+vx2 )-cusq)); + f1_SW += c1o54* (drho1+(drho1+c1o1)*(c3o1*(-vx1-vx2 )+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cusq)); + f1_SE += c1o54* (drho1+(drho1+c1o1)*(c3o1*( vx1-vx2 )+c9o2*( vx1-vx2 )*( vx1-vx2 )-cusq)); + f1_NW += c1o54* (drho1+(drho1+c1o1)*(c3o1*(-vx1+vx2 )+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cusq)); + f1_TE += c1o54* (drho1+(drho1+c1o1)*(c3o1*( vx1 +vx3)+c9o2*( vx1 +vx3)*( vx1 +vx3)-cusq)); + f1_BW += c1o54* (drho1+(drho1+c1o1)*(c3o1*(-vx1 -vx3)+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cusq)); + f1_BE += c1o54* (drho1+(drho1+c1o1)*(c3o1*( vx1 -vx3)+c9o2*( vx1 -vx3)*( vx1 -vx3)-cusq)); + f1_TW += c1o54* (drho1+(drho1+c1o1)*(c3o1*(-vx1 +vx3)+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cusq)); + f1_TN += c1o54* (drho1+(drho1+c1o1)*(c3o1*( vx2+vx3)+c9o2*( vx2+vx3)*( vx2+vx3)-cusq)); + f1_BS += c1o54* (drho1+(drho1+c1o1)*(c3o1*( -vx2-vx3)+c9o2*( -vx2-vx3)*( -vx2-vx3)-cusq)); + f1_BN += c1o54* (drho1+(drho1+c1o1)*(c3o1*( vx2-vx3)+c9o2*( vx2-vx3)*( vx2-vx3)-cusq)); + f1_TS += c1o54* (drho1+(drho1+c1o1)*(c3o1*( -vx2+vx3)+c9o2*( -vx2+vx3)*( -vx2+vx3)-cusq)); + f1_TNE += c1o216*(drho1+(drho1+c1o1)*(c3o1*( vx1+vx2+vx3)+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cusq)); + f1_BSW += c1o216*(drho1+(drho1+c1o1)*(c3o1*(-vx1-vx2-vx3)+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cusq)); + f1_BNE += c1o216*(drho1+(drho1+c1o1)*(c3o1*( vx1+vx2-vx3)+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cusq)); + f1_TSW += c1o216*(drho1+(drho1+c1o1)*(c3o1*(-vx1-vx2+vx3)+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cusq)); + f1_TSE += c1o216*(drho1+(drho1+c1o1)*(c3o1*( vx1-vx2+vx3)+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cusq)); + 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)); + + ////////////////////////////////////////////////////////////////////////// + + __syncthreads(); + + //////////////////////////////////////////////////////////////////////////////// + //! write the new distributions to the bc nodes + //! + (dist.f[dP00])[ke ] = f1_W ; + (dist.f[dM00])[kw ] = f1_E ; + (dist.f[d0P0])[kn ] = f1_S ; + (dist.f[d0M0])[ks ] = f1_N ; + (dist.f[d00P])[kt ] = f1_B ; + (dist.f[d00M])[kb ] = f1_T ; + (dist.f[dPP0])[kne ] = f1_SW ; + (dist.f[dMM0])[ksw ] = f1_NE ; + (dist.f[dPM0])[kse ] = f1_NW ; + (dist.f[dMP0])[knw ] = f1_SE ; + (dist.f[dP0P])[kte ] = f1_BW ; + (dist.f[dM0M])[kbw ] = f1_TE ; + (dist.f[dP0M])[kbe ] = f1_TW ; + (dist.f[dM0P])[ktw ] = f1_BE ; + (dist.f[d0PP])[ktn ] = f1_BS ; + (dist.f[d0MM])[kbs ] = f1_TN ; + (dist.f[d0PM])[kbn ] = f1_TS ; + (dist.f[d0MP])[kts ] = f1_BN ; + (dist.f[d000])[kzero] = f1_ZERO; + (dist.f[dPPP])[ktne ] = f1_BSW ; + (dist.f[dMMP])[ktsw ] = f1_BNE ; + (dist.f[dPMP])[ktse ] = f1_BNW ; + (dist.f[dMPP])[ktnw ] = f1_BSE ; + (dist.f[dPPM])[kbne ] = f1_TSW ; + (dist.f[dMMM])[kbsw ] = f1_TNE ; + (dist.f[dPMM])[kbse ] = f1_TNW ; + (dist.f[dMPM])[kbnw ] = f1_TSE ; + } +} +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +//////////////////////////////////////////////////////////////////////////////// +__global__ void LB_BC_Press_East27( + int nx, + int ny, + int tz, + unsigned int* bcMatD, + unsigned int* neighborX, + unsigned int* neighborY, + unsigned int* neighborZ, + real* DD, + unsigned long long numberOfLBnodes, + bool isEvenTimestep) +{ + //thread-index + int ty = blockIdx.x; + int tx = threadIdx.x; + + int k, k1, nxny; // Zugriff auf arrays im device + + int x = tx + STARTOFFX; // Globaler x-Index + int y = ty + STARTOFFY; // Globaler y-Index + int z = tz + STARTOFFZ; // Globaler z-Index + + k = nx*(ny*z + y) + x; + nxny = nx*ny; + k1 = k-nxny; + + if( bcMatD[k] == GEO_PRESS && bcMatD[k1] == GEO_FLUID) + { + Distributions27 D; + if (isEvenTimestep==true) + { + D.f[dP00] = &DD[dP00 * numberOfLBnodes]; + D.f[dM00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00P] = &DD[d00P * numberOfLBnodes]; + D.f[d00M] = &DD[d00M * numberOfLBnodes]; + D.f[dPP0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dMM0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dP0P] = &DD[dP0P * numberOfLBnodes]; + D.f[dM0M] = &DD[dM0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dP0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dM0P * numberOfLBnodes]; + D.f[d0PP] = &DD[d0PP * numberOfLBnodes]; + D.f[d0MM] = &DD[d0MM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0PM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dPPP * numberOfLBnodes]; + D.f[dMMP] = &DD[dMMP * numberOfLBnodes]; + D.f[dPMP] = &DD[dPMP * numberOfLBnodes]; + D.f[dMPP] = &DD[dMPP * numberOfLBnodes]; + D.f[dPPM] = &DD[dPPM * numberOfLBnodes]; + D.f[dMMM] = &DD[dMMM * numberOfLBnodes]; + D.f[dPMM] = &DD[dPMM * numberOfLBnodes]; + D.f[dMPM] = &DD[dMPM * numberOfLBnodes]; + } + else + { + D.f[dM00] = &DD[dP00 * numberOfLBnodes]; + D.f[dP00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00M] = &DD[d00P * numberOfLBnodes]; + D.f[d00P] = &DD[d00M * numberOfLBnodes]; + D.f[dMM0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dPP0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dM0M] = &DD[dP0P * numberOfLBnodes]; + D.f[dP0P] = &DD[dM0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dP0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dM0P * numberOfLBnodes]; + D.f[d0MM] = &DD[d0PP * numberOfLBnodes]; + D.f[d0PP] = &DD[d0MM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0PM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dMMM * numberOfLBnodes]; + D.f[dMMP] = &DD[dPPM * numberOfLBnodes]; + D.f[dPMP] = &DD[dMPM * numberOfLBnodes]; + D.f[dMPP] = &DD[dPMM * numberOfLBnodes]; + D.f[dPPM] = &DD[dMMP * numberOfLBnodes]; + D.f[dMMM] = &DD[dPPP * numberOfLBnodes]; + D.f[dPMM] = &DD[dMPP * numberOfLBnodes]; + D.f[dMPM] = &DD[dPMP * numberOfLBnodes]; + } + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //index + unsigned int kzero= k; + unsigned int ke = k; + unsigned int kw = neighborX[k]; + unsigned int kn = k; + unsigned int ks = neighborY[k]; + unsigned int kt = k; + unsigned int kb = neighborZ[k]; + unsigned int ksw = neighborY[kw]; + unsigned int kne = k; + unsigned int kse = ks; + unsigned int knw = kw; + unsigned int kbw = neighborZ[kw]; + unsigned int kte = k; + unsigned int kbe = kb; + unsigned int ktw = kw; + unsigned int kbs = neighborZ[ks]; + unsigned int ktn = k; + 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 = k; + unsigned int kbsw = neighborZ[ksw]; + //unsigned int kzero= k; + //unsigned int ke = k; + //unsigned int kw = k + 1; + //unsigned int kn = k; + //unsigned int ks = k + nx; + //unsigned int kt = k; + //unsigned int kb = k + nxny; + //unsigned int ksw = k + nx + 1; + //unsigned int kne = k; + //unsigned int kse = k + nx; + //unsigned int knw = k + 1; + //unsigned int kbw = k + nxny + 1; + //unsigned int kte = k; + //unsigned int kbe = k + nxny; + //unsigned int ktw = k + 1; + //unsigned int kbs = k + nxny + nx; + //unsigned int ktn = k; + //unsigned int kbn = k + nxny; + //unsigned int kts = k + nx; + //unsigned int ktse = k + nx; + //unsigned int kbnw = k + nxny + 1; + //unsigned int ktnw = k + 1; + //unsigned int kbse = k + nxny + nx; + //unsigned int ktsw = k + nx + 1; + //unsigned int kbne = k + nxny; + //unsigned int ktne = k; + //unsigned int kbsw = k + nxny + nx + 1; + //////////////////////////////////////////////////////////////////////////////// + //index1 + unsigned int k1zero= k1; + unsigned int k1e = k1; + unsigned int k1w = neighborX[k1]; + unsigned int k1n = k1; + unsigned int k1s = neighborY[k1]; + unsigned int k1t = k1; + unsigned int k1b = neighborZ[k1]; + unsigned int k1sw = neighborY[k1w]; + unsigned int k1ne = k1; + unsigned int k1se = k1s; + unsigned int k1nw = k1w; + unsigned int k1bw = neighborZ[k1w]; + unsigned int k1te = k1; + unsigned int k1be = k1b; + unsigned int k1tw = k1w; + unsigned int k1bs = neighborZ[k1s]; + unsigned int k1tn = k1; + unsigned int k1bn = k1b; + unsigned int k1ts = k1s; + unsigned int k1tse = k1s; + unsigned int k1bnw = k1bw; + unsigned int k1tnw = k1w; + unsigned int k1bse = k1bs; + unsigned int k1tsw = k1sw; + unsigned int k1bne = k1b; + unsigned int k1tne = k1; + unsigned int k1bsw = neighborZ[k1sw]; + //unsigned int k1zero= k1; + //unsigned int k1e = k1; + //unsigned int k1w = k1 + 1; + //unsigned int k1n = k1; + //unsigned int k1s = k1 + nx; + //unsigned int k1t = k1; + //unsigned int k1b = k1 + nxny; + //unsigned int k1sw = k1 + nx + 1; + //unsigned int k1ne = k1; + //unsigned int k1se = k1 + nx; + //unsigned int k1nw = k1 + 1; + //unsigned int k1bw = k1 + nxny + 1; + //unsigned int k1te = k1; + //unsigned int k1be = k1 + nxny; + //unsigned int k1tw = k1 + 1; + //unsigned int k1bs = k1 + nxny + nx; + //unsigned int k1tn = k1; + //unsigned int k1bn = k1 + nxny; + //unsigned int k1ts = k1 + nx; + //unsigned int k1tse = k1 + nx; + //unsigned int k1bnw = k1 + nxny + 1; + //unsigned int k1tnw = k1 + 1; + //unsigned int k1bse = k1 + nxny + nx; + //unsigned int k1tsw = k1 + nx + 1; + //unsigned int k1bne = k1 + nxny; + //unsigned int k1tne = k1; + //unsigned int k1bsw = k1 + nxny + nx + 1; + //////////////////////////////////////////////////////////////////////////////// + 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[dP00])[k1e ]; + f1_E = (D.f[dM00])[k1w ]; + f1_S = (D.f[d0P0])[k1n ]; + f1_N = (D.f[d0M0])[k1s ]; + f1_B = (D.f[d00P])[k1t ]; + f1_T = (D.f[d00M])[k1b ]; + f1_SW = (D.f[dPP0])[k1ne ]; + f1_NE = (D.f[dMM0])[k1sw ]; + f1_NW = (D.f[dPM0])[k1se ]; + f1_SE = (D.f[dMP0])[k1nw ]; + f1_BW = (D.f[dP0P])[k1te ]; + f1_TE = (D.f[dM0M])[k1bw ]; + f1_TW = (D.f[dP0M])[k1be ]; + f1_BE = (D.f[dM0P])[k1tw ]; + f1_BS = (D.f[d0PP])[k1tn ]; + f1_TN = (D.f[d0MM])[k1bs ]; + f1_TS = (D.f[d0PM])[k1bn ]; + f1_BN = (D.f[d0MP])[k1ts ]; + f1_ZERO = (D.f[d000])[k1zero]; + f1_BSW = (D.f[dPPP])[k1tne ]; + f1_BNE = (D.f[dMMP])[k1tsw ]; + f1_BNW = (D.f[dPMP])[k1tse ]; + f1_BSE = (D.f[dMPP])[k1tnw ]; + f1_TSW = (D.f[dPPM])[k1bne ]; + f1_TNE = (D.f[dMMM])[k1bsw ]; + f1_TNW = (D.f[dPMM])[k1bse ]; + f1_TSE = (D.f[dMPM])[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[dP00])[ke ] = f1_W -c2o27*drho1; + (D.f[dM00])[kw ] = f1_E -c2o27*drho1; + (D.f[d0P0])[kn ] = f1_S -c2o27*drho1; + (D.f[d0M0])[ks ] = f1_N -c2o27*drho1; + (D.f[d00P])[kt ] = f1_B -c2o27*drho1; + (D.f[d00M])[kb ] = f1_T -c2o27*drho1; + (D.f[dPP0])[kne ] = f1_SW -c1o54*drho1; + (D.f[dMM0])[ksw ] = f1_NE -c1o54*drho1; + (D.f[dPM0])[kse ] = f1_NW -c1o54*drho1; + (D.f[dMP0])[knw ] = f1_SE -c1o54*drho1; + (D.f[dP0P])[kte ] = f1_BW -c1o54*drho1; + (D.f[dM0M])[kbw ] = f1_TE -c1o54*drho1; + (D.f[dP0M])[kbe ] = f1_TW -c1o54*drho1; + (D.f[dM0P])[ktw ] = f1_BE -c1o54*drho1; + (D.f[d0PP])[ktn ] = f1_BS -c1o54*drho1; + (D.f[d0MM])[kbs ] = f1_TN -c1o54*drho1; + (D.f[d0PM])[kbn ] = f1_TS -c1o54*drho1; + (D.f[d0MP])[kts ] = f1_BN -c1o54*drho1; + (D.f[d000])[kzero] = f1_ZERO-c8o27*drho1; + (D.f[dPPP])[ktne ] = f1_BSW -c1o216*drho1; + (D.f[dMMP])[ktsw ] = f1_BNE -c1o216*drho1; + (D.f[dPMP])[ktse ] = f1_BNW -c1o216*drho1; + (D.f[dMPP])[ktnw ] = f1_BSE -c1o216*drho1; + (D.f[dPPM])[kbne ] = f1_TSW -c1o216*drho1; + (D.f[dMMM])[kbsw ] = f1_TNE -c1o216*drho1; + (D.f[dPMM])[kbse ] = f1_TNW -c1o216*drho1; + (D.f[dMPM])[kbnw ] = f1_TSE -c1o216*drho1; + } + __syncthreads(); +} +////////////////////////////////////////////////////////////////////////////// + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +////////////////////////////////////////////////////////////////////////////// +__global__ void QPressDevice27( + real* rhoBC, + real* DD, + int* k_Q, + real* QQ, + unsigned int numberOfBCnodes, + real om1, + unsigned int* neighborX, + unsigned int* neighborY, + unsigned int* neighborZ, + unsigned long long numberOfLBnodes, + bool isEvenTimestep) +{ + Distributions27 D; + if (isEvenTimestep==true) + { + D.f[dP00] = &DD[dP00 * numberOfLBnodes]; + D.f[dM00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00P] = &DD[d00P * numberOfLBnodes]; + D.f[d00M] = &DD[d00M * numberOfLBnodes]; + D.f[dPP0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dMM0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dP0P] = &DD[dP0P * numberOfLBnodes]; + D.f[dM0M] = &DD[dM0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dP0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dM0P * numberOfLBnodes]; + D.f[d0PP] = &DD[d0PP * numberOfLBnodes]; + D.f[d0MM] = &DD[d0MM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0PM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dPPP * numberOfLBnodes]; + D.f[dMMP] = &DD[dMMP * numberOfLBnodes]; + D.f[dPMP] = &DD[dPMP * numberOfLBnodes]; + D.f[dMPP] = &DD[dMPP * numberOfLBnodes]; + D.f[dPPM] = &DD[dPPM * numberOfLBnodes]; + D.f[dMMM] = &DD[dMMM * numberOfLBnodes]; + D.f[dPMM] = &DD[dPMM * numberOfLBnodes]; + D.f[dMPM] = &DD[dMPM * numberOfLBnodes]; + } + else + { + D.f[dM00] = &DD[dP00 * numberOfLBnodes]; + D.f[dP00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00M] = &DD[d00P * numberOfLBnodes]; + D.f[d00P] = &DD[d00M * numberOfLBnodes]; + D.f[dMM0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dPP0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dM0M] = &DD[dP0P * numberOfLBnodes]; + D.f[dP0P] = &DD[dM0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dP0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dM0P * numberOfLBnodes]; + D.f[d0MM] = &DD[d0PP * numberOfLBnodes]; + D.f[d0PP] = &DD[d0MM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0PM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dMMM * numberOfLBnodes]; + D.f[dMMP] = &DD[dPPM * numberOfLBnodes]; + D.f[dPMP] = &DD[dMPM * numberOfLBnodes]; + D.f[dMPP] = &DD[dPMM * numberOfLBnodes]; + D.f[dPPM] = &DD[dMMP * numberOfLBnodes]; + D.f[dMMM] = &DD[dPPP * numberOfLBnodes]; + D.f[dPMM] = &DD[dMPP * numberOfLBnodes]; + D.f[dMPM] = &DD[dPMP * numberOfLBnodes]; + } + //////////////////////////////////////////////////////////////////////////////// + const unsigned x = threadIdx.x; // Globaler x-Index + const unsigned y = blockIdx.x; // Globaler y-Index + const unsigned z = blockIdx.y; // Globaler z-Index + + const unsigned nx = blockDim.x; + const unsigned ny = gridDim.x; + + const unsigned k = nx*(ny*z + y) + x; + ////////////////////////////////////////////////////////////////////////// + + if(k<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[dP00 * numberOfBCnodes]; + q_dirW = &QQ[dM00 * numberOfBCnodes]; + q_dirN = &QQ[d0P0 * numberOfBCnodes]; + q_dirS = &QQ[d0M0 * numberOfBCnodes]; + q_dirT = &QQ[d00P * numberOfBCnodes]; + q_dirB = &QQ[d00M * numberOfBCnodes]; + q_dirNE = &QQ[dPP0 * numberOfBCnodes]; + q_dirSW = &QQ[dMM0 * numberOfBCnodes]; + q_dirSE = &QQ[dPM0 * numberOfBCnodes]; + q_dirNW = &QQ[dMP0 * numberOfBCnodes]; + q_dirTE = &QQ[dP0P * numberOfBCnodes]; + q_dirBW = &QQ[dM0M * numberOfBCnodes]; + q_dirBE = &QQ[dP0M * numberOfBCnodes]; + q_dirTW = &QQ[dM0P * numberOfBCnodes]; + q_dirTN = &QQ[d0PP * numberOfBCnodes]; + q_dirBS = &QQ[d0MM * numberOfBCnodes]; + q_dirBN = &QQ[d0PM * numberOfBCnodes]; + q_dirTS = &QQ[d0MP * numberOfBCnodes]; + q_dirTNE = &QQ[dPPP * numberOfBCnodes]; + q_dirTSW = &QQ[dMMP * numberOfBCnodes]; + q_dirTSE = &QQ[dPMP * numberOfBCnodes]; + q_dirTNW = &QQ[dMPP * numberOfBCnodes]; + q_dirBNE = &QQ[dPPM * numberOfBCnodes]; + q_dirBSW = &QQ[dMMM * numberOfBCnodes]; + q_dirBSE = &QQ[dPMM * numberOfBCnodes]; + q_dirBNW = &QQ[dMPM * 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]; + 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 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[dP00])[ke ]; + f_E = (D.f[dM00])[kw ]; + f_S = (D.f[d0P0])[kn ]; + f_N = (D.f[d0M0])[ks ]; + f_B = (D.f[d00P])[kt ]; + f_T = (D.f[d00M])[kb ]; + f_SW = (D.f[dPP0])[kne ]; + f_NE = (D.f[dMM0])[ksw ]; + f_NW = (D.f[dPM0])[kse ]; + f_SE = (D.f[dMP0])[knw ]; + f_BW = (D.f[dP0P])[kte ]; + f_TE = (D.f[dM0M])[kbw ]; + f_TW = (D.f[dP0M])[kbe ]; + f_BE = (D.f[dM0P])[ktw ]; + f_BS = (D.f[d0PP])[ktn ]; + f_TN = (D.f[d0MM])[kbs ]; + f_TS = (D.f[d0PM])[kbn ]; + f_BN = (D.f[d0MP])[kts ]; + f_BSW = (D.f[dPPP])[ktne ]; + f_BNE = (D.f[dMMP])[ktsw ]; + f_BNW = (D.f[dPMP])[ktse ]; + f_BSE = (D.f[dMPP])[ktnw ]; + f_TSW = (D.f[dPPM])[kbne ]; + f_TNE = (D.f[dMMM])[kbsw ]; + f_TNW = (D.f[dPMM])[kbse ]; + f_TSE = (D.f[dMPM])[kbnw ]; + //////////////////////////////////////////////////////////////////////////////// + real q, vx1, vx2, vx3, drho; + 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); + + + 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); + + 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); + ////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + drho = rhoBC[k]; + //deltaRho = (rhoBC[k] + one) / (deltaRho + one); + //////////////////////////////////////////////////////////////////////////////// + if (isEvenTimestep==false) + { + D.f[dP00] = &DD[dP00 * numberOfLBnodes]; + D.f[dM00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00P] = &DD[d00P * numberOfLBnodes]; + D.f[d00M] = &DD[d00M * numberOfLBnodes]; + D.f[dPP0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dMM0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dP0P] = &DD[dP0P * numberOfLBnodes]; + D.f[dM0M] = &DD[dM0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dP0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dM0P * numberOfLBnodes]; + D.f[d0PP] = &DD[d0PP * numberOfLBnodes]; + D.f[d0MM] = &DD[d0MM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0PM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dPPP * numberOfLBnodes]; + D.f[dMMP] = &DD[dMMP * numberOfLBnodes]; + D.f[dPMP] = &DD[dPMP * numberOfLBnodes]; + D.f[dMPP] = &DD[dMPP * numberOfLBnodes]; + D.f[dPPM] = &DD[dPPM * numberOfLBnodes]; + D.f[dMMM] = &DD[dMMM * numberOfLBnodes]; + D.f[dPMM] = &DD[dPMM * numberOfLBnodes]; + D.f[dMPM] = &DD[dMPM * numberOfLBnodes]; + } + else + { + D.f[dM00] = &DD[dP00 * numberOfLBnodes]; + D.f[dP00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00M] = &DD[d00P * numberOfLBnodes]; + D.f[d00P] = &DD[d00M * numberOfLBnodes]; + D.f[dMM0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dPP0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dM0M] = &DD[dP0P * numberOfLBnodes]; + D.f[dP0P] = &DD[dM0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dP0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dM0P * numberOfLBnodes]; + D.f[d0MM] = &DD[d0PP * numberOfLBnodes]; + D.f[d0PP] = &DD[d0MM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0PM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dMMM * numberOfLBnodes]; + D.f[dMMP] = &DD[dPPM * numberOfLBnodes]; + D.f[dPMP] = &DD[dMPM * numberOfLBnodes]; + D.f[dMPP] = &DD[dPMM * numberOfLBnodes]; + D.f[dPPM] = &DD[dMMP * numberOfLBnodes]; + D.f[dMMM] = &DD[dPPP * numberOfLBnodes]; + D.f[dPMM] = &DD[dMPP * numberOfLBnodes]; + D.f[dMPM] = &DD[dPMP * numberOfLBnodes]; + } + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + q = q_dirE[k]; + if (q>=c0o1 && q<=c1o1) + { + (D.f[dM00])[kw]=c2o27* (drho+c3o1*(-vx1 )+c9o2*(-vx1 )*(-vx1 )-cu_sq); + //(D.f[dP00])[ke]=c2over27* (drho+three*( vx1 )+c9over2*( vx1 )*( vx1 )-cu_sq); + } + + q = q_dirW[k]; + if (q>=c0o1 && q<=c1o1) + { + (D.f[dP00])[ke]=c2o27* (drho+c3o1*( vx1 )+c9o2*( vx1 )*( vx1 )-cu_sq); + //(D.f[dM00])[kw]=c2over27* (drho+three*(-vx1 )+c9over2*(-vx1 )*(-vx1 )-cu_sq); + } + + q = q_dirN[k]; + if (q>=c0o1 && q<=c1o1) + { + (D.f[d0M0])[ks]=c2o27* (drho+c3o1*( -vx2 )+c9o2*( -vx2 )*( -vx2 )-cu_sq); + //(D.f[d0P0])[kn]=c2over27* (drho+three*( vx2 )+c9over2*( vx2 )*( vx2 )-cu_sq); + } + + q = q_dirS[k]; + if (q>=c0o1 && q<=c1o1) + { + (D.f[d0P0])[kn]=c2o27* (drho+c3o1*( vx2 )+c9o2*( vx2 )*( vx2 )-cu_sq); + //(D.f[d0M0])[ks]=c2over27* (drho+three*( -vx2 )+c9over2*( -vx2 )*( -vx2 )-cu_sq); + } + + q = q_dirT[k]; + if (q>=c0o1 && q<=c1o1) + { + (D.f[d00M])[kb]=c2o27* (drho+c3o1*( -vx3)+c9o2*( -vx3)*( -vx3)-cu_sq); + //(D.f[d00P])[kt]=c2over27* (drho+three*( vx3)+c9over2*( vx3)*( vx3)-cu_sq); + } + + q = q_dirB[k]; + if (q>=c0o1 && q<=c1o1) + { + (D.f[d00P])[kt]=c2o27* (drho+c3o1*( vx3)+c9o2*( vx3)*( vx3)-cu_sq); + //(D.f[d00M])[kb]=c2over27* (drho+three*( -vx3)+c9over2*( -vx3)*( -vx3)-cu_sq); + } + + q = q_dirNE[k]; + if (q>=c0o1 && q<=c1o1) + { + (D.f[dMM0])[ksw]=c1o54* (drho+c3o1*(-vx1-vx2 )+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq); + //(D.f[dPP0])[kne]=c1over54* (drho+three*( vx1+vx2 )+c9over2*( vx1+vx2 )*( vx1+vx2 )-cu_sq); + } + + q = q_dirSW[k]; + if (q>=c0o1 && q<=c1o1) + { + (D.f[dPP0])[kne]=c1o54* (drho+c3o1*( vx1+vx2 )+c9o2*( vx1+vx2 )*( vx1+vx2 )-cu_sq); + //(D.f[dMM0])[ksw]=c1over54* (drho+three*(-vx1-vx2 )+c9over2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq); + } + + q = q_dirSE[k]; + if (q>=c0o1 && q<=c1o1) + { + (D.f[dMP0])[knw]=c1o54* (drho+c3o1*(-vx1+vx2 )+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq); + //(D.f[dPM0])[kse]=c1over54* (drho+three*( vx1-vx2 )+c9over2*( vx1-vx2 )*( vx1-vx2 )-cu_sq); + } + + q = q_dirNW[k]; + if (q>=c0o1 && q<=c1o1) + { + (D.f[dPM0])[kse]=c1o54* (drho+c3o1*( vx1-vx2 )+c9o2*( vx1-vx2 )*( vx1-vx2 )-cu_sq); + //(D.f[dMP0])[knw]=c1over54* (drho+three*(-vx1+vx2 )+c9over2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq); + } + + q = q_dirTE[k]; + if (q>=c0o1 && q<=c1o1) + { + (D.f[dM0M])[kbw]=c1o54* (drho+c3o1*(-vx1 -vx3)+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq); + //(D.f[dP0P])[kte]=c1over54* (drho+three*( vx1 +vx3)+c9over2*( vx1 +vx3)*( vx1 +vx3)-cu_sq); + } + + q = q_dirBW[k]; + if (q>=c0o1 && q<=c1o1) + { + (D.f[dP0P])[kte]=c1o54* (drho+c3o1*( vx1 +vx3)+c9o2*( vx1 +vx3)*( vx1 +vx3)-cu_sq); + //(D.f[dM0M])[kbw]=c1over54* (drho+three*(-vx1 -vx3)+c9over2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq); + } + + q = q_dirBE[k]; + if (q>=c0o1 && q<=c1o1) + { + (D.f[dM0P])[ktw]=c1o54* (drho+c3o1*(-vx1 +vx3)+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq); + //(D.f[dP0M])[kbe]=c1over54* (drho+three*( vx1 -vx3)+c9over2*( vx1 -vx3)*( vx1 -vx3)-cu_sq); + } + + q = q_dirTW[k]; + if (q>=c0o1 && q<=c1o1) + { + (D.f[dP0M])[kbe]=c1o54* (drho+c3o1*( vx1 -vx3)+c9o2*( vx1 -vx3)*( vx1 -vx3)-cu_sq); + //(D.f[dM0P])[ktw]=c1over54* (drho+three*(-vx1 +vx3)+c9over2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq); + } + + q = q_dirTN[k]; + if (q>=c0o1 && q<=c1o1) + { + (D.f[d0MM])[kbs]=c1o54* (drho+c3o1*( -vx2-vx3)+c9o2*( -vx2-vx3)*( -vx2-vx3)-cu_sq); + //(D.f[d0PP])[ktn]=c1over54* (drho+three*( vx2+vx3)+c9over2*( vx2+vx3)*( vx2+vx3)-cu_sq); + } + + q = q_dirBS[k]; + if (q>=c0o1 && q<=c1o1) + { + (D.f[d0PP])[ktn]=c1o54* (drho+c3o1*( vx2+vx3)+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq); + //(D.f[d0MM])[kbs]=c1over54* (drho+three*( -vx2-vx3)+c9over2*( -vx2-vx3)*( -vx2-vx3)-cu_sq); + } + + q = q_dirBN[k]; + if (q>=c0o1 && q<=c1o1) + { + (D.f[d0MP])[kts]=c1o54* (drho+c3o1*( -vx2+vx3)+c9o2*( -vx2+vx3)*( -vx2+vx3)-cu_sq); + //(D.f[d0PM])[kbn]=c1over54* (drho+three*( vx2-vx3)+c9over2*( vx2-vx3)*( vx2-vx3)-cu_sq); + } + + q = q_dirTS[k]; + if (q>=c0o1 && q<=c1o1) + { + (D.f[d0PM])[kbn]=c1o54* (drho+c3o1*( vx2-vx3)+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq); + //(D.f[d0MP])[kts]=c1over54* (drho+three*( -vx2+vx3)+c9over2*( -vx2+vx3)*( -vx2+vx3)-cu_sq); + } + + q = q_dirTNE[k]; + if (q>=c0o1 && q<=c1o1) + { + (D.f[dMMM])[kbsw]=c1o216*(drho+c3o1*(-vx1-vx2-vx3)+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq); + //(D.f[dPPP])[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[dPPP])[ktne]=c1o216*(drho+c3o1*( vx1+vx2+vx3)+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq); + //(D.f[dMMM])[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[dMMP])[ktsw]=c1o216*(drho+c3o1*(-vx1-vx2+vx3)+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq); + //(D.f[dPPM])[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[dPPM])[kbne]=c1o216*(drho+c3o1*( vx1+vx2-vx3)+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq); + //(D.f[dMMP])[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[dMPM])[kbnw]=c1o216*(drho+c3o1*(-vx1+vx2-vx3)+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq); + //(D.f[dPMP])[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[dPMP])[ktse]=c1o216*(drho+c3o1*( vx1-vx2+vx3)+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq); + //(D.f[dMPM])[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[dMPP])[ktnw]=c1o216*(drho+c3o1*(-vx1+vx2+vx3)+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq); + //(D.f[dPMM])[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[dPMM])[kbse]=c1o216*(drho+c3o1*( vx1-vx2-vx3)+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq); + //(D.f[dMPP])[ktnw]=c1over216*(drho+three*(-vx1+vx2+vx3)+c9over2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq); + } + } +} +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +////////////////////////////////////////////////////////////////////////////// +__global__ void QPressDeviceAntiBB27( + real* rhoBC, + real* vx, + real* vy, + real* vz, + real* DD, + int* k_Q, + real* QQ, + int numberOfBCnodes, + real om1, + unsigned int* neighborX, + unsigned int* neighborY, + unsigned int* neighborZ, + unsigned long long numberOfLBnodes, + bool isEvenTimestep) +{ + Distributions27 D; + if (isEvenTimestep==true) + { + D.f[dP00] = &DD[dP00 * numberOfLBnodes]; + D.f[dM00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00P] = &DD[d00P * numberOfLBnodes]; + D.f[d00M] = &DD[d00M * numberOfLBnodes]; + D.f[dPP0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dMM0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dP0P] = &DD[dP0P * numberOfLBnodes]; + D.f[dM0M] = &DD[dM0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dP0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dM0P * numberOfLBnodes]; + D.f[d0PP] = &DD[d0PP * numberOfLBnodes]; + D.f[d0MM] = &DD[d0MM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0PM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dPPP * numberOfLBnodes]; + D.f[dMMP] = &DD[dMMP * numberOfLBnodes]; + D.f[dPMP] = &DD[dPMP * numberOfLBnodes]; + D.f[dMPP] = &DD[dMPP * numberOfLBnodes]; + D.f[dPPM] = &DD[dPPM * numberOfLBnodes]; + D.f[dMMM] = &DD[dMMM * numberOfLBnodes]; + D.f[dPMM] = &DD[dPMM * numberOfLBnodes]; + D.f[dMPM] = &DD[dMPM * numberOfLBnodes]; + } + else + { + D.f[dM00] = &DD[dP00 * numberOfLBnodes]; + D.f[dP00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00M] = &DD[d00P * numberOfLBnodes]; + D.f[d00P] = &DD[d00M * numberOfLBnodes]; + D.f[dMM0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dPP0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dM0M] = &DD[dP0P * numberOfLBnodes]; + D.f[dP0P] = &DD[dM0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dP0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dM0P * numberOfLBnodes]; + D.f[d0MM] = &DD[d0PP * numberOfLBnodes]; + D.f[d0PP] = &DD[d0MM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0PM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dMMM * numberOfLBnodes]; + D.f[dMMP] = &DD[dPPM * numberOfLBnodes]; + D.f[dPMP] = &DD[dMPM * numberOfLBnodes]; + D.f[dMPP] = &DD[dPMM * numberOfLBnodes]; + D.f[dPPM] = &DD[dMMP * numberOfLBnodes]; + D.f[dMMM] = &DD[dPPP * numberOfLBnodes]; + D.f[dPMM] = &DD[dMPP * numberOfLBnodes]; + D.f[dMPM] = &DD[dPMP * numberOfLBnodes]; + } + //////////////////////////////////////////////////////////////////////////////// + const unsigned x = threadIdx.x; // Globaler x-Index + const unsigned y = blockIdx.x; // Globaler y-Index + const unsigned z = blockIdx.y; // Globaler z-Index + + const unsigned nx = blockDim.x; + const unsigned ny = gridDim.x; + + const unsigned k = nx*(ny*z + y) + x; + ////////////////////////////////////////////////////////////////////////// + + if(k<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[dP00 * numberOfBCnodes]; + q_dirW = &QQ[dM00 * numberOfBCnodes]; + q_dirN = &QQ[d0P0 * numberOfBCnodes]; + q_dirS = &QQ[d0M0 * numberOfBCnodes]; + q_dirT = &QQ[d00P * numberOfBCnodes]; + q_dirB = &QQ[d00M * numberOfBCnodes]; + q_dirNE = &QQ[dPP0 * numberOfBCnodes]; + q_dirSW = &QQ[dMM0 * numberOfBCnodes]; + q_dirSE = &QQ[dPM0 * numberOfBCnodes]; + q_dirNW = &QQ[dMP0 * numberOfBCnodes]; + q_dirTE = &QQ[dP0P * numberOfBCnodes]; + q_dirBW = &QQ[dM0M * numberOfBCnodes]; + q_dirBE = &QQ[dP0M * numberOfBCnodes]; + q_dirTW = &QQ[dM0P * numberOfBCnodes]; + q_dirTN = &QQ[d0PP * numberOfBCnodes]; + q_dirBS = &QQ[d0MM * numberOfBCnodes]; + q_dirBN = &QQ[d0PM * numberOfBCnodes]; + q_dirTS = &QQ[d0MP * numberOfBCnodes]; + q_dirTNE = &QQ[dPPP * numberOfBCnodes]; + q_dirTSW = &QQ[dMMP * numberOfBCnodes]; + q_dirTSE = &QQ[dPMP * numberOfBCnodes]; + q_dirTNW = &QQ[dMPP * numberOfBCnodes]; + q_dirBNE = &QQ[dPPM * numberOfBCnodes]; + q_dirBSW = &QQ[dMMM * numberOfBCnodes]; + q_dirBSE = &QQ[dPMM * numberOfBCnodes]; + q_dirBNW = &QQ[dMPM * 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]; + 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 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[dP00])[ke ]; + f_E = (D.f[dM00])[kw ]; + f_S = (D.f[d0P0])[kn ]; + f_N = (D.f[d0M0])[ks ]; + f_B = (D.f[d00P])[kt ]; + f_T = (D.f[d00M])[kb ]; + f_SW = (D.f[dPP0])[kne ]; + f_NE = (D.f[dMM0])[ksw ]; + f_NW = (D.f[dPM0])[kse ]; + f_SE = (D.f[dMP0])[knw ]; + f_BW = (D.f[dP0P])[kte ]; + f_TE = (D.f[dM0M])[kbw ]; + f_TW = (D.f[dP0M])[kbe ]; + f_BE = (D.f[dM0P])[ktw ]; + f_BS = (D.f[d0PP])[ktn ]; + f_TN = (D.f[d0MM])[kbs ]; + f_TS = (D.f[d0PM])[kbn ]; + f_BN = (D.f[d0MP])[kts ]; + f_BSW = (D.f[dPPP])[ktne ]; + f_BNE = (D.f[dMMP])[ktsw ]; + f_BNW = (D.f[dPMP])[ktse ]; + f_BSE = (D.f[dMPP])[ktnw ]; + f_TSW = (D.f[dPPM])[kbne ]; + f_TNE = (D.f[dMMM])[kbsw ]; + f_TNW = (D.f[dPMM])[kbse ]; + f_TSE = (D.f[dMPM])[kbnw ]; + f_ZERO = (D.f[d000])[kzero]; + //////////////////////////////////////////////////////////////////////////////// + //real vx1, vx2, vx3, drho; + //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); + + + //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); + + //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); + ////////////////////////////////////////////////////////////////////////// + real drho = f_ZERO+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; + drho = drho - rhoBC[k]; + drho *= 0.01f; + //////////////////////////////////////////////////////////////////////////////// + real q; + //deltaRho = (rhoBC[k] + one) / (deltaRho + one); + //////////////////////////////////////////////////////////////////////////////// + if (isEvenTimestep==false) + { + D.f[dP00] = &DD[dP00 * numberOfLBnodes]; + D.f[dM00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00P] = &DD[d00P * numberOfLBnodes]; + D.f[d00M] = &DD[d00M * numberOfLBnodes]; + D.f[dPP0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dMM0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dP0P] = &DD[dP0P * numberOfLBnodes]; + D.f[dM0M] = &DD[dM0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dP0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dM0P * numberOfLBnodes]; + D.f[d0PP] = &DD[d0PP * numberOfLBnodes]; + D.f[d0MM] = &DD[d0MM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0PM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dPPP * numberOfLBnodes]; + D.f[dMMP] = &DD[dMMP * numberOfLBnodes]; + D.f[dPMP] = &DD[dPMP * numberOfLBnodes]; + D.f[dMPP] = &DD[dMPP * numberOfLBnodes]; + D.f[dPPM] = &DD[dPPM * numberOfLBnodes]; + D.f[dMMM] = &DD[dMMM * numberOfLBnodes]; + D.f[dPMM] = &DD[dPMM * numberOfLBnodes]; + D.f[dMPM] = &DD[dMPM * numberOfLBnodes]; + } + else + { + D.f[dM00] = &DD[dP00 * numberOfLBnodes]; + D.f[dP00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00M] = &DD[d00P * numberOfLBnodes]; + D.f[d00P] = &DD[d00M * numberOfLBnodes]; + D.f[dMM0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dPP0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dM0M] = &DD[dP0P * numberOfLBnodes]; + D.f[dP0P] = &DD[dM0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dP0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dM0P * numberOfLBnodes]; + D.f[d0MM] = &DD[d0PP * numberOfLBnodes]; + D.f[d0PP] = &DD[d0MM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0PM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dMMM * numberOfLBnodes]; + D.f[dMMP] = &DD[dPPM * numberOfLBnodes]; + D.f[dPMP] = &DD[dMPM * numberOfLBnodes]; + D.f[dMPP] = &DD[dPMM * numberOfLBnodes]; + D.f[dPPM] = &DD[dMMP * numberOfLBnodes]; + D.f[dMMM] = &DD[dPPP * numberOfLBnodes]; + D.f[dPMM] = &DD[dMPP * numberOfLBnodes]; + D.f[dMPM] = &DD[dPMP * numberOfLBnodes]; + } + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + q = q_dirE[k]; + if (q>=c0o1 && q<=c1o1) + { + (D.f[dM00])[kw]=f_W-c2o27*drho; + } + + q = q_dirW[k]; + if (q>=c0o1 && q<=c1o1) + { + (D.f[dP00])[ke]=f_E-c2o27*drho; + } + + q = q_dirN[k]; + if (q>=c0o1 && q<=c1o1) + { + (D.f[d0M0])[ks]=f_S-c2o27*drho; + } + + q = q_dirS[k]; + if (q>=c0o1 && q<=c1o1) + { + (D.f[d0P0])[kn]=f_N-c2o27*drho; + } + + q = q_dirT[k]; + if (q>=c0o1 && q<=c1o1) + { + (D.f[d00M])[kb]=f_B-c2o27*drho; + } + + q = q_dirB[k]; + if (q>=c0o1 && q<=c1o1) + { + (D.f[d00P])[kt]=f_T-c2o27*drho; + } + + q = q_dirNE[k]; + if (q>=c0o1 && q<=c1o1) + { + (D.f[dMM0])[ksw]=f_SW-c1o54*drho; + } + + q = q_dirSW[k]; + if (q>=c0o1 && q<=c1o1) + { + (D.f[dPP0])[kne]=f_NE-c1o54*drho; + } + + q = q_dirSE[k]; + if (q>=c0o1 && q<=c1o1) + { + (D.f[dMP0])[knw]=f_NW-c1o54*drho; + } + + q = q_dirNW[k]; + if (q>=c0o1 && q<=c1o1) + { + (D.f[dPM0])[kse]=f_SE-c1o54*drho; + } + + q = q_dirTE[k]; + if (q>=c0o1 && q<=c1o1) + { + (D.f[dM0M])[kbw]=f_BW-c1o54*drho; + } + + q = q_dirBW[k]; + if (q>=c0o1 && q<=c1o1) + { + (D.f[dP0P])[kte]=f_TE-c1o54*drho; + } + + q = q_dirBE[k]; + if (q>=c0o1 && q<=c1o1) + { + (D.f[dM0P])[ktw]=f_TW-c1o54*drho; + } + + q = q_dirTW[k]; + if (q>=c0o1 && q<=c1o1) + { + (D.f[dP0M])[kbe]=f_BE-c1o54*drho; + } + + q = q_dirTN[k]; + if (q>=c0o1 && q<=c1o1) + { + (D.f[d0MM])[kbs]=f_BS-c1o54*drho; + } + + q = q_dirBS[k]; + if (q>=c0o1 && q<=c1o1) + { + (D.f[d0PP])[ktn]=f_TN-c1o54*drho; + } + + q = q_dirBN[k]; + if (q>=c0o1 && q<=c1o1) + { + (D.f[d0MP])[kts]=f_TS-c1o54*drho; + } + + q = q_dirTS[k]; + if (q>=c0o1 && q<=c1o1) + { + (D.f[d0PM])[kbn]=f_BN-c1o54*drho; + } + + q = q_dirTNE[k]; + if (q>=c0o1 && q<=c1o1) + { + (D.f[dMMM])[kbsw]=f_BSW-c1o216*drho; + } + + q = q_dirBSW[k]; + if (q>=c0o1 && q<=c1o1) + { + (D.f[dPPP])[ktne]=f_TNE-c1o216*drho; + } + + q = q_dirBNE[k]; + if (q>=c0o1 && q<=c1o1) + { + (D.f[dMMP])[ktsw]=f_TSW-c1o216*drho; + } + + q = q_dirTSW[k]; + if (q>=c0o1 && q<=c1o1) + { + (D.f[dPPM])[kbne]=f_BNE-c1o216*drho; + } + + q = q_dirTSE[k]; + if (q>=c0o1 && q<=c1o1) + { + (D.f[dMPM])[kbnw]=f_BNW-c1o216*drho; + } + + q = q_dirBNW[k]; + if (q>=c0o1 && q<=c1o1) + { + (D.f[dPMP])[ktse]=f_TSE-c1o216*drho; + } + + q = q_dirBSE[k]; + if (q>=c0o1 && q<=c1o1) + { + (D.f[dMPP])[ktnw]=f_TNW-c1o216*drho; + } + + q = q_dirTNW[k]; + if (q>=c0o1 && q<=c1o1) + { + (D.f[dPMM])[kbse]=f_BSE-c1o216*drho; + } + } +} +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +////////////////////////////////////////////////////////////////////////////// +__global__ void QPressDeviceFixBackflow27( + real* rhoBC, + real* DD, + int* k_Q, + int numberOfBCnodes, + real om1, + unsigned int* neighborX, + unsigned int* neighborY, + unsigned int* neighborZ, + unsigned long long 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 + + const unsigned nx = blockDim.x; + const unsigned ny = gridDim.x; + + const unsigned k = nx*(ny*z + y) + x; + ////////////////////////////////////////////////////////////////////////// + + if(k<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]; + 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 deltaRho; + //////////////////////////////////////////////////////////////////////////////// + deltaRho = rhoBC[k]; + //////////////////////////////////////////////////////////////////////////////// + Distributions27 D; + if (isEvenTimestep==false) + { + D.f[dP00] = &DD[dP00 * numberOfLBnodes]; + D.f[dM00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00P] = &DD[d00P * numberOfLBnodes]; + D.f[d00M] = &DD[d00M * numberOfLBnodes]; + D.f[dPP0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dMM0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dP0P] = &DD[dP0P * numberOfLBnodes]; + D.f[dM0M] = &DD[dM0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dP0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dM0P * numberOfLBnodes]; + D.f[d0PP] = &DD[d0PP * numberOfLBnodes]; + D.f[d0MM] = &DD[d0MM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0PM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dPPP * numberOfLBnodes]; + D.f[dMMP] = &DD[dMMP * numberOfLBnodes]; + D.f[dPMP] = &DD[dPMP * numberOfLBnodes]; + D.f[dMPP] = &DD[dMPP * numberOfLBnodes]; + D.f[dPPM] = &DD[dPPM * numberOfLBnodes]; + D.f[dMMM] = &DD[dMMM * numberOfLBnodes]; + D.f[dPMM] = &DD[dPMM * numberOfLBnodes]; + D.f[dMPM] = &DD[dMPM * numberOfLBnodes]; + } + else + { + D.f[dM00] = &DD[dP00 * numberOfLBnodes]; + D.f[dP00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00M] = &DD[d00P * numberOfLBnodes]; + D.f[d00P] = &DD[d00M * numberOfLBnodes]; + D.f[dMM0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dPP0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dM0M] = &DD[dP0P * numberOfLBnodes]; + D.f[dP0P] = &DD[dM0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dP0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dM0P * numberOfLBnodes]; + D.f[d0MM] = &DD[d0PP * numberOfLBnodes]; + D.f[d0PP] = &DD[d0MM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0PM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dMMM * numberOfLBnodes]; + D.f[dMMP] = &DD[dPPM * numberOfLBnodes]; + D.f[dPMP] = &DD[dMPM * numberOfLBnodes]; + D.f[dMPP] = &DD[dPMM * numberOfLBnodes]; + D.f[dPPM] = &DD[dMMP * numberOfLBnodes]; + D.f[dMMM] = &DD[dPPP * numberOfLBnodes]; + D.f[dPMM] = &DD[dMPP * numberOfLBnodes]; + D.f[dMPM] = &DD[dPMP * numberOfLBnodes]; + } + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + (D.f[dM00])[kw] = c2o27 * deltaRho; + (D.f[dP00])[ke] = c2o27 * deltaRho; + (D.f[d0M0])[ks] = c2o27 * deltaRho; + (D.f[d0P0])[kn] = c2o27 * deltaRho; + (D.f[d00M])[kb] = c2o27 * deltaRho; + (D.f[d00P])[kt] = c2o27 * deltaRho; + (D.f[dMM0])[ksw] = c1o54 * deltaRho; + (D.f[dPP0])[kne] = c1o54 * deltaRho; + (D.f[dMP0])[knw] = c1o54 * deltaRho; + (D.f[dPM0])[kse] = c1o54 * deltaRho; + (D.f[dM0M])[kbw] = c1o54 * deltaRho; + (D.f[dP0P])[kte] = c1o54 * deltaRho; + (D.f[dM0P])[ktw] = c1o54 * deltaRho; + (D.f[dP0M])[kbe] = c1o54 * deltaRho; + (D.f[d0MM])[kbs] = c1o54 * deltaRho; + (D.f[d0PP])[ktn] = c1o54 * deltaRho; + (D.f[d0MP])[kts] = c1o54 * deltaRho; + (D.f[d0PM])[kbn] = c1o54 * deltaRho; + (D.f[dMMM])[kbsw] = c1o216 * deltaRho; + (D.f[dPPP])[ktne] = c1o216 * deltaRho; + (D.f[dMMP])[ktsw] = c1o216 * deltaRho; + (D.f[dPPM])[kbne] = c1o216 * deltaRho; + (D.f[dMPM])[kbnw] = c1o216 * deltaRho; + (D.f[dPMP])[ktse] = c1o216 * deltaRho; + (D.f[dMPP])[ktnw] = c1o216 * deltaRho; + (D.f[dPMM])[kbse] = c1o216 * deltaRho; + (D.f[d000])[kzero] = c8o27 * deltaRho; + } +} +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +////////////////////////////////////////////////////////////////////////////// +__global__ void QPressDeviceDirDepBot27( + real* rhoBC, + real* DD, + int* k_Q, + int numberOfBCnodes, + real om1, + unsigned int* neighborX, + unsigned int* neighborY, + unsigned int* neighborZ, + unsigned long long 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 + + const unsigned nx = blockDim.x; + const unsigned ny = gridDim.x; + + const unsigned k = nx*(ny*z + y) + x; + ////////////////////////////////////////////////////////////////////////// + + if(k<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]; + 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 rho; + //////////////////////////////////////////////////////////////////////////////// + rho = rhoBC[k]; + //////////////////////////////////////////////////////////////////////////////// + Distributions27 D; + if (isEvenTimestep==false) + { + D.f[dP00] = &DD[dP00 * numberOfLBnodes]; + D.f[dM00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00P] = &DD[d00P * numberOfLBnodes]; + D.f[d00M] = &DD[d00M * numberOfLBnodes]; + D.f[dPP0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dMM0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dP0P] = &DD[dP0P * numberOfLBnodes]; + D.f[dM0M] = &DD[dM0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dP0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dM0P * numberOfLBnodes]; + D.f[d0PP] = &DD[d0PP * numberOfLBnodes]; + D.f[d0MM] = &DD[d0MM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0PM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dPPP * numberOfLBnodes]; + D.f[dMMP] = &DD[dMMP * numberOfLBnodes]; + D.f[dPMP] = &DD[dPMP * numberOfLBnodes]; + D.f[dMPP] = &DD[dMPP * numberOfLBnodes]; + D.f[dPPM] = &DD[dPPM * numberOfLBnodes]; + D.f[dMMM] = &DD[dMMM * numberOfLBnodes]; + D.f[dPMM] = &DD[dPMM * numberOfLBnodes]; + D.f[dMPM] = &DD[dMPM * numberOfLBnodes]; + } + else + { + D.f[dM00] = &DD[dP00 * numberOfLBnodes]; + D.f[dP00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00M] = &DD[d00P * numberOfLBnodes]; + D.f[d00P] = &DD[d00M * numberOfLBnodes]; + D.f[dMM0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dPP0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dM0M] = &DD[dP0P * numberOfLBnodes]; + D.f[dP0P] = &DD[dM0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dP0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dM0P * numberOfLBnodes]; + D.f[d0MM] = &DD[d0PP * numberOfLBnodes]; + D.f[d0PP] = &DD[d0MM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0PM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dMMM * numberOfLBnodes]; + D.f[dMMP] = &DD[dPPM * numberOfLBnodes]; + D.f[dPMP] = &DD[dMPM * numberOfLBnodes]; + D.f[dMPP] = &DD[dPMM * numberOfLBnodes]; + D.f[dPPM] = &DD[dMMP * numberOfLBnodes]; + D.f[dMMM] = &DD[dPPP * numberOfLBnodes]; + D.f[dPMM] = &DD[dMPP * numberOfLBnodes]; + D.f[dMPM] = &DD[dPMP * numberOfLBnodes]; + } + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + 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[dP00])[ke ]; + f_W = (D.f[dM00])[kw ]; + f_N = (D.f[d0P0])[kn ]; + f_S = (D.f[d0M0])[ks ]; + f_T = (D.f[d00P])[kt ]; + f_NE = (D.f[dPP0])[kne ]; + f_SW = (D.f[dMM0])[ksw ]; + f_SE = (D.f[dPM0])[kse ]; + f_NW = (D.f[dMP0])[knw ]; + f_TE = (D.f[dP0P])[kte ]; + f_TW = (D.f[dM0P])[ktw ]; + f_TN = (D.f[d0PP])[ktn ]; + f_TS = (D.f[d0MP])[kts ]; + f_ZERO = (D.f[d000])[kzero]; + f_TNE = (D.f[dPPP])[ktne ]; + f_TSW = (D.f[dMMP])[ktsw ]; + f_TSE = (D.f[dPMP])[ktse ]; + f_TNW = (D.f[dMPP])[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; + //f_BW = ( two*rho+ f_SW- four*f_TSW+ f_W- four*f_TW+ f_NW- four*f_TNW- two*f_S- four*f_TS- two*f_ZERO-four*f_T- two*f_N- four*f_TN- five*f_SE- four*f_TSE-five*f_E+fourteen*f_TE- five*f_NE- four*f_TNE)/eighteen; + //f_BE = ( two*rho- five*f_SW- four*f_TSW-five*f_W+fourteen*f_TW- five*f_NW- four*f_TNW- two*f_S- four*f_TS- two*f_ZERO-four*f_T- two*f_N- four*f_TN+ f_SE- four*f_TSE+ f_E- four*f_TE+ f_NE- four*f_TNE)/eighteen; + //f_BS = ( two*rho+ f_SW- four*f_TSW- two*f_W- four*f_TW- five*f_NW- four*f_TNW+ f_S- four*f_TS- two*f_ZERO-four*f_T-five*f_N+fourteen*f_TN+ f_SE- four*f_TSE- two*f_E- four*f_TE- five*f_NE- four*f_TNE)/eighteen; + //f_BN = ( two*rho- five*f_SW- four*f_TSW- two*f_W- four*f_TW+ f_NW- four*f_TNW-five*f_S+fourteen*f_TS- two*f_ZERO-four*f_T+ f_N- four*f_TN- five*f_SE- four*f_TSE- two*f_E- four*f_TE+ f_NE- four*f_TNE)/eighteen; + //f_BSW = ( two*rho+ four*f_SW- four*f_TSW+ f_W- four*f_TW- two*f_NW- four*f_TNW+ f_S- four*f_TS- two*f_ZERO-four*f_T-five*f_N- four*f_TN- two*f_SE- four*f_TSE-five*f_E- four*f_TE-eight*f_NE+sixtyeight*f_TNE)/seventytwo; + //f_BNE = ( two*rho-eight*f_SW+sixtyeight*f_TSW-five*f_W- four*f_TW- two*f_NW- four*f_TNW-five*f_S- four*f_TS- two*f_ZERO-four*f_T+ f_N- four*f_TN- two*f_SE- four*f_TSE+ f_E- four*f_TE+ four*f_NE- four*f_TNE)/seventytwo; + //f_BNW = ( two*rho- two*f_SW- four*f_TSW+ f_W- four*f_TW+ four*f_NW- four*f_TNW-five*f_S- four*f_TS- two*f_ZERO-four*f_T+ f_N- four*f_TN-eight*f_SE+sixtyeight*f_TSE-five*f_E- four*f_TE- two*f_NE- four*f_TNE)/seventytwo; + //f_BSE = ( two*rho- two*f_SW- four*f_TSW-five*f_W- four*f_TW-eight*f_NW+sixtyeight*f_TNW+ f_S- four*f_TS- two*f_ZERO-four*f_T-five*f_N- four*f_TN+ four*f_SE- four*f_TSE+ f_E- four*f_TE- two*f_NE- four*f_TNE)/seventytwo; + + //real drho = f_ZERO+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; + //real vx1 = (f_E -f_W +f_NE-f_SW+f_SE-f_NW+f_TE-f_BW+f_BE-f_TW+ f_TNE-f_TSW+f_TSE-f_TNW+ f_BNE-f_BSW+f_BSE-f_BNW); + //real vx2 = (f_N -f_S +f_NE-f_SW-f_SE+f_NW+f_TN-f_BS+f_BN-f_TS+ f_TNE-f_TSW-f_TSE+f_TNW+ f_BNE-f_BSW-f_BSE+f_BNW); + //real vx3 = (f_T -f_B +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); + + //real cusq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3); + + //(D.f[d000])[kzero] = c8over27* (drho-cusq); + //(D.f[dP00])[ke] = c2over27* (drho+three*( vx1 )+c9over2*( vx1 )*( vx1 )-cusq); + //(D.f[dM00])[kw] = c2over27* (drho+three*(-vx1 )+c9over2*(-vx1 )*(-vx1 )-cusq); + //(D.f[d0P0])[kn] = c2over27* (drho+three*( vx2 )+c9over2*( vx2 )*( vx2 )-cusq); + //(D.f[d0M0])[ks] = c2over27* (drho+three*( -vx2 )+c9over2*( -vx2 )*( -vx2 )-cusq); + //(D.f[d00P])[kt] = c2over27* (drho+three*( vx3)+c9over2*( vx3)*( vx3)-cusq); + //(D.f[d00M])[kb] = c2over27* (drho+three*( -vx3)+c9over2*( -vx3)*( -vx3)-cusq); + //(D.f[dPP0])[kne] = c1over54* (drho+three*( vx1+vx2 )+c9over2*( vx1+vx2 )*( vx1+vx2 )-cusq); + //(D.f[dMM0])[ksw] = c1over54* (drho+three*(-vx1-vx2 )+c9over2*(-vx1-vx2 )*(-vx1-vx2 )-cusq); + //(D.f[dPM0])[kse] = c1over54* (drho+three*( vx1-vx2 )+c9over2*( vx1-vx2 )*( vx1-vx2 )-cusq); + //(D.f[dMP0])[knw] = c1over54* (drho+three*(-vx1+vx2 )+c9over2*(-vx1+vx2 )*(-vx1+vx2 )-cusq); + //(D.f[dP0P])[kte] = c1over54* (drho+three*( vx1 +vx3)+c9over2*( vx1 +vx3)*( vx1 +vx3)-cusq); + //(D.f[dM0M])[kbw] = c1over54* (drho+three*(-vx1 -vx3)+c9over2*(-vx1 -vx3)*(-vx1 -vx3)-cusq); + //(D.f[dP0M])[kbe] = c1over54* (drho+three*( vx1 -vx3)+c9over2*( vx1 -vx3)*( vx1 -vx3)-cusq); + //(D.f[dM0P])[ktw] = c1over54* (drho+three*(-vx1 +vx3)+c9over2*(-vx1 +vx3)*(-vx1 +vx3)-cusq); + //(D.f[d0PP])[ktn] = c1over54* (drho+three*( vx2+vx3)+c9over2*( vx2+vx3)*( vx2+vx3)-cusq); + //(D.f[d0MM])[kbs] = c1over54* (drho+three*( -vx2-vx3)+c9over2*( -vx2-vx3)*( -vx2-vx3)-cusq); + //(D.f[d0PM])[kbn] = c1over54* (drho+three*( vx2-vx3)+c9over2*( vx2-vx3)*( vx2-vx3)-cusq); + //(D.f[d0MP])[kts] = c1over54* (drho+three*( -vx2+vx3)+c9over2*( -vx2+vx3)*( -vx2+vx3)-cusq); + //(D.f[dPPP])[ktne] = c1over216*(drho+three*( vx1+vx2+vx3)+c9over2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cusq); + //(D.f[dMMM])[kbsw] = c1over216*(drho+three*(-vx1-vx2-vx3)+c9over2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cusq); + //(D.f[dPPM])[kbne] = c1over216*(drho+three*( vx1+vx2-vx3)+c9over2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cusq); + //(D.f[dMMP])[ktsw] = c1over216*(drho+three*(-vx1-vx2+vx3)+c9over2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cusq); + //(D.f[dPMP])[ktse] = c1over216*(drho+three*( vx1-vx2+vx3)+c9over2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cusq); + //(D.f[dMPM])[kbnw] = c1over216*(drho+three*(-vx1+vx2-vx3)+c9over2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cusq); + //(D.f[dPMM])[kbse] = c1over216*(drho+three*( vx1-vx2-vx3)+c9over2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cusq); + //(D.f[dMPP])[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[d00M])[kb] = (f_T+c2o27)*(rho-drho+c1o1/c6o1)/(dTop+c1o1/c6o1)-c2o27; + (D.f[dM0M])[kbw] = (f_TW+c1o54)*(rho-drho+c1o1/c6o1)/(dTop+c1o1/c6o1)-c1o54; + (D.f[dP0M])[kbe] = (f_TE+c1o54)*(rho-drho+c1o1/c6o1)/(dTop+c1o1/c6o1)-c1o54; + (D.f[d0MM])[kbs] = (f_TS+c1o54)*(rho-drho+c1o1/c6o1)/(dTop+c1o1/c6o1)-c1o54; + (D.f[d0PM])[kbn] = (f_TN+c1o54)*(rho-drho+c1o1/c6o1)/(dTop+c1o1/c6o1)-c1o54; + (D.f[dMMM])[kbsw] = (f_TSW+c1o216)*(rho-drho+c1o1/c6o1)/(dTop+c1o1/c6o1)-c1o216; + (D.f[dPPM])[kbne] = (f_TNE+c1o216)*(rho-drho+c1o1/c6o1)/(dTop+c1o1/c6o1)-c1o216; + (D.f[dMPM])[kbnw] = (f_TNW+c1o216)*(rho-drho+c1o1/c6o1)/(dTop+c1o1/c6o1)-c1o216; + (D.f[dPMM])[kbse] = (f_TSE+c1o216)*(rho-drho+c1o1/c6o1)/(dTop+c1o1/c6o1)-c1o216; + } +} +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +__host__ __device__ real computeOutflowDistribution(const real* const &f, const real* const &f1, const int dir, const real cs) +{ + return f1[dir] * cs + (c1o1 - cs) * f[dir]; +} + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +__global__ void QPressNoRhoDevice27( + real* rhoBC, + real* distributions, + int* k_Q, + int* k_N, + int numberOfBCnodes, + real om1, + unsigned int* neighborX, + unsigned int* neighborY, + unsigned int* neighborZ, + unsigned long long numberOfLBnodes, + bool isEvenTimestep, + int direction) +{ + //////////////////////////////////////////////////////////////////////////////// + //! - Get the node index coordinates from threadIdx, blockIdx, blockDim and gridDim. + //! + const unsigned nodeIndex = getNodeIndex(); + + ////////////////////////////////////////////////////////////////////////// + + if(nodeIndex >= numberOfBCnodes) return; + + //////////////////////////////////////////////////////////////////////////////// + //index + unsigned int KQK = k_Q[nodeIndex]; + // 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]; + //////////////////////////////////////////////////////////////////////////////// + //index1 + unsigned int K1QK = k_N[nodeIndex]; + //unsigned int k1zero= K1QK; + unsigned int k1e = K1QK; + unsigned int k1w = neighborX[K1QK]; + unsigned int k1n = K1QK; + unsigned int k1s = neighborY[K1QK]; + unsigned int k1t = K1QK; + unsigned int k1b = neighborZ[K1QK]; + unsigned int k1sw = neighborY[k1w]; + unsigned int k1ne = K1QK; + unsigned int k1se = k1s; + unsigned int k1nw = k1w; + unsigned int k1bw = neighborZ[k1w]; + unsigned int k1te = K1QK; + unsigned int k1be = k1b; + unsigned int k1tw = k1w; + unsigned int k1bs = neighborZ[k1s]; + unsigned int k1tn = K1QK; + unsigned int k1bn = k1b; + unsigned int k1ts = k1s; + unsigned int k1tse = k1s; + unsigned int k1bnw = k1bw; + unsigned int k1tnw = k1w; + unsigned int k1bse = k1bs; + unsigned int k1tsw = k1sw; + unsigned int k1bne = k1b; + unsigned int k1tne = K1QK; + unsigned int k1bsw = neighborZ[k1sw]; + //////////////////////////////////////////////////////////////////////////////// + Distributions27 dist; + getPointersToDistributions(dist, distributions, numberOfLBnodes, isEvenTimestep); + real f[27], f1[27]; + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + f1[dP00] = (dist.f[dP00])[k1e ]; + f1[dM00] = (dist.f[dM00])[k1w ]; + f1[d0P0] = (dist.f[d0P0])[k1n ]; + f1[d0M0] = (dist.f[d0M0])[k1s ]; + f1[d00P] = (dist.f[d00P])[k1t ]; + f1[d00M] = (dist.f[d00M])[k1b ]; + f1[dPP0] = (dist.f[dPP0])[k1ne ]; + f1[dMM0] = (dist.f[dMM0])[k1sw ]; + f1[dPM0] = (dist.f[dPM0])[k1se ]; + f1[dMP0] = (dist.f[dMP0])[k1nw ]; + f1[dP0P] = (dist.f[dP0P])[k1te ]; + f1[dM0M] = (dist.f[dM0M])[k1bw ]; + f1[dP0M] = (dist.f[dP0M])[k1be ]; + f1[dM0P] = (dist.f[dM0P])[k1tw ]; + f1[d0PP] = (dist.f[d0PP])[k1tn ]; + f1[d0MM] = (dist.f[d0MM])[k1bs ]; + f1[d0PM] = (dist.f[d0PM])[k1bn ]; + f1[d0MP] = (dist.f[d0MP])[k1ts ]; + // f1[d000] = (dist.f[d000])[k1zero]; + f1[dPPP] = (dist.f[dPPP])[k1tne ]; + f1[dMMP] = (dist.f[dMMP])[k1tsw ]; + f1[dPMP] = (dist.f[dPMP])[k1tse ]; + f1[dMPP] = (dist.f[dMPP])[k1tnw ]; + f1[dPPM] = (dist.f[dPPM])[k1bne ]; + f1[dMMM] = (dist.f[dMMM])[k1bsw ]; + f1[dPMM] = (dist.f[dPMM])[k1bse ]; + f1[dMPM] = (dist.f[dMPM])[k1bnw ]; + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + f[dP00] = (dist.f[dP00])[ke ]; + f[dM00] = (dist.f[dM00])[kw ]; + f[d0P0] = (dist.f[d0P0])[kn ]; + f[d0M0] = (dist.f[d0M0])[ks ]; + f[d00P] = (dist.f[d00P])[kt ]; + f[d00M] = (dist.f[d00M])[kb ]; + f[dPP0] = (dist.f[dPP0])[kne ]; + f[dMM0] = (dist.f[dMM0])[ksw ]; + f[dPM0] = (dist.f[dPM0])[kse ]; + f[dMP0] = (dist.f[dMP0])[knw ]; + f[dP0P] = (dist.f[dP0P])[kte ]; + f[dM0M] = (dist.f[dM0M])[kbw ]; + f[dP0M] = (dist.f[dP0M])[kbe ]; + f[dM0P] = (dist.f[dM0P])[ktw ]; + f[d0PP] = (dist.f[d0PP])[ktn ]; + f[d0MM] = (dist.f[d0MM])[kbs ]; + f[d0PM] = (dist.f[d0PM])[kbn ]; + f[d0MP] = (dist.f[d0MP])[kts ]; + // f[d000] = (dist.f[d000])[kzero]; + f[dPPP] = (dist.f[dPPP])[ktne ]; + f[dMMP] = (dist.f[dMMP])[ktsw ]; + f[dPMP] = (dist.f[dPMP])[ktse ]; + f[dMPP] = (dist.f[dMPP])[ktnw ]; + f[dPPM] = (dist.f[dPPM])[kbne ]; + f[dMMM] = (dist.f[dMMM])[kbsw ]; + f[dPMM] = (dist.f[dPMM])[kbse ]; + f[dMPM] = (dist.f[dMPM])[kbnw ]; + ////////////////////////////////////////////////////////////////////////// + + + real cs = c1o1 / sqrtf(c3o1); + + ////////////////////////////////////////////////////////////////////////// + getPointersToDistributions(dist, distributions, numberOfLBnodes, !isEvenTimestep); + switch(direction) + { + case dM00: + (dist.f[dP00])[ke ] = computeOutflowDistribution(f, f1, dP00, cs); + (dist.f[dPM0])[kse ] = computeOutflowDistribution(f, f1, dPM0, cs); + (dist.f[dPP0])[kne ] = computeOutflowDistribution(f, f1, dPP0, cs); + (dist.f[dP0M])[kbe ] = computeOutflowDistribution(f, f1, dP0M, cs); + (dist.f[dP0P])[kte ] = computeOutflowDistribution(f, f1, dP0P, cs); + (dist.f[dPMP])[ktse ] = computeOutflowDistribution(f, f1, dPMP, cs); + (dist.f[dPPP])[ktne ] = computeOutflowDistribution(f, f1, dPPP, cs); + (dist.f[dPMM])[kbse ] = computeOutflowDistribution(f, f1, dPMM, cs); + (dist.f[dPPM])[kbne ] = computeOutflowDistribution(f, f1, dPPM, cs); + break; + + case dP00: + (dist.f[dM00])[kw ] = computeOutflowDistribution(f, f1, dM00, cs); + (dist.f[dMM0])[ksw ] = computeOutflowDistribution(f, f1, dMM0, cs); + (dist.f[dMP0])[knw ] = computeOutflowDistribution(f, f1, dMP0, cs); + (dist.f[dM0M])[kbw ] = computeOutflowDistribution(f, f1, dM0M, cs); + (dist.f[dM0P])[ktw ] = computeOutflowDistribution(f, f1, dM0P, cs); + (dist.f[dMMP])[ktsw ] = computeOutflowDistribution(f, f1, dMMP, cs); + (dist.f[dMPP])[ktnw ] = computeOutflowDistribution(f, f1, dMPP, cs); + (dist.f[dMMM])[kbsw ] = computeOutflowDistribution(f, f1, dMMM, cs); + (dist.f[dMPM])[kbnw ] = computeOutflowDistribution(f, f1, dMPM, cs); + break; + + case d0M0: + (dist.f[d0P0])[kn ] = computeOutflowDistribution(f, f1, d0P0, cs); + (dist.f[dPP0])[kne ] = computeOutflowDistribution(f, f1, dPP0, cs); + (dist.f[dMP0])[knw ] = computeOutflowDistribution(f, f1, dMP0, cs); + (dist.f[d0PP])[ktn ] = computeOutflowDistribution(f, f1, d0PP, cs); + (dist.f[d0PM])[kbn ] = computeOutflowDistribution(f, f1, d0PM, cs); + (dist.f[dPPP])[ktne ] = computeOutflowDistribution(f, f1, dPPP, cs); + (dist.f[dMPP])[ktnw ] = computeOutflowDistribution(f, f1, dMPP, cs); + (dist.f[dPPM])[kbne ] = computeOutflowDistribution(f, f1, dPPM, cs); + (dist.f[dMPM])[kbnw ] = computeOutflowDistribution(f, f1, dMPM, cs); + break; + + case d0P0: + (dist.f[d0M0])[ks ] = computeOutflowDistribution(f, f1, d0M0, cs); + (dist.f[dPM0])[kse ] = computeOutflowDistribution(f, f1, dPM0, cs); + (dist.f[dMM0])[ksw ] = computeOutflowDistribution(f, f1, dMM0, cs); + (dist.f[d0MP])[kts ] = computeOutflowDistribution(f, f1, d0MP, cs); + (dist.f[d0MM])[kbs ] = computeOutflowDistribution(f, f1, d0MM, cs); + (dist.f[dPMP])[ktse ] = computeOutflowDistribution(f, f1, dPMP, cs); + (dist.f[dMMP])[ktsw ] = computeOutflowDistribution(f, f1, dMMP, cs); + (dist.f[dPMM])[kbse ] = computeOutflowDistribution(f, f1, dPMM, cs); + (dist.f[dMMM])[kbsw ] = computeOutflowDistribution(f, f1, dMMM, cs); + break; + + case d00M: + (dist.f[d00P])[kt ] = computeOutflowDistribution(f, f1, d00P, cs); + (dist.f[dP0P])[kte ] = computeOutflowDistribution(f, f1, dP0P, cs); + (dist.f[dM0P])[ktw ] = computeOutflowDistribution(f, f1, dM0P, cs); + (dist.f[d0PP])[ktn ] = computeOutflowDistribution(f, f1, d0PP, cs); + (dist.f[d0MP])[kts ] = computeOutflowDistribution(f, f1, d0MP, cs); + (dist.f[dPPP])[ktne ] = computeOutflowDistribution(f, f1, dPPP, cs); + (dist.f[dMPP])[ktnw ] = computeOutflowDistribution(f, f1, dMPP, cs); + (dist.f[dPMP])[ktse ] = computeOutflowDistribution(f, f1, dPMP, cs); + (dist.f[dMMP])[ktsw ] = computeOutflowDistribution(f, f1, dMMP, cs); + break; + + case d00P: + (dist.f[d00M])[kb ] = computeOutflowDistribution(f, f1, d00M, cs); + (dist.f[dP0M])[kbe ] = computeOutflowDistribution(f, f1, dP0M, cs); + (dist.f[dM0M])[kbw ] = computeOutflowDistribution(f, f1, dM0M, cs); + (dist.f[d0PM])[kbn ] = computeOutflowDistribution(f, f1, d0PM, cs); + (dist.f[d0MM])[kbs ] = computeOutflowDistribution(f, f1, d0MM, cs); + (dist.f[dPPM])[kbne ] = computeOutflowDistribution(f, f1, dPPM, cs); + (dist.f[dMPM])[kbnw ] = computeOutflowDistribution(f, f1, dMPM, cs); + (dist.f[dPMM])[kbse ] = computeOutflowDistribution(f, f1, dPMM, cs); + (dist.f[dMMM])[kbsw ] = computeOutflowDistribution(f, f1, dMMM, cs); + break; + default: + break; + } +} +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +__host__ __device__ real computeOutflowDistribution(const real* const &f, const real* const &f1, const int dir, const real rhoCorrection, const real cs, const real weight) +{ + return f1[dir ] * cs + (c1o1 - cs) * f[dir ] - weight *rhoCorrection; +} + +__global__ void QPressZeroRhoOutflowDevice27( + real* rhoBC, + real* distributions, + int* k_Q, + int* k_N, + int numberOfBCnodes, + real om1, + unsigned int* neighborX, + unsigned int* neighborY, + unsigned int* neighborZ, + unsigned long long numberOfLBnodes, + bool isEvenTimestep, + int direction, + real densityCorrectionFactor) +{ + //////////////////////////////////////////////////////////////////////////////// + //! - Get the node index coordinates from threadIdx, blockIdx, blockDim and gridDim. + //! + const unsigned nodeIndex = getNodeIndex(); + + ////////////////////////////////////////////////////////////////////////// + + if( nodeIndex >= numberOfBCnodes ) return; + + //////////////////////////////////////////////////////////////////////////////// + //index + + uint k_000 = k_Q[nodeIndex]; + uint k_M00 = neighborX[k_000]; + uint k_0M0 = neighborY[k_000]; + uint k_00M = neighborZ[k_000]; + uint k_MM0 = neighborY[k_M00]; + uint k_M0M = neighborZ[k_M00]; + uint k_0MM = neighborZ[k_0M0]; + uint k_MMM = neighborZ[k_MM0]; + + //////////////////////////////////////////////////////////////////////////////// + //index of neighbor + uint kN_000 = k_N[nodeIndex]; + uint kN_M00 = neighborX[k_000]; + uint kN_0M0 = neighborY[k_000]; + uint kN_00M = neighborZ[k_000]; + uint kN_MM0 = neighborY[k_M00]; + uint kN_M0M = neighborZ[k_M00]; + uint kN_0MM = neighborZ[k_0M0]; + uint kN_MMM = neighborZ[k_MM0]; + //////////////////////////////////////////////////////////////////////////////// + Distributions27 dist; + getPointersToDistributions(dist, distributions, numberOfLBnodes, isEvenTimestep); + real f[27], fN[27]; + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + f[d000] = (dist.f[d000])[k_000]; + f[dP00] = (dist.f[dP00])[k_000]; + f[dM00] = (dist.f[dM00])[k_M00]; + f[d0P0] = (dist.f[d0P0])[k_000]; + f[d0M0] = (dist.f[d0M0])[k_0M0]; + f[d00P] = (dist.f[d00P])[k_000]; + f[d00M] = (dist.f[d00M])[k_00M]; + f[dPP0] = (dist.f[dPP0])[k_000]; + f[dMM0] = (dist.f[dMM0])[k_MM0]; + f[dPM0] = (dist.f[dPM0])[k_0M0]; + f[dMP0] = (dist.f[dMP0])[k_M00]; + f[dP0P] = (dist.f[dP0P])[k_000]; + f[dM0M] = (dist.f[dM0M])[k_M0M]; + f[dP0M] = (dist.f[dP0M])[k_00M]; + f[dM0P] = (dist.f[dM0P])[k_M00]; + f[d0PP] = (dist.f[d0PP])[k_000]; + f[d0MM] = (dist.f[d0MM])[k_0MM]; + f[d0PM] = (dist.f[d0PM])[k_00M]; + f[d0MP] = (dist.f[d0MP])[k_0M0]; + f[dPPP] = (dist.f[dPPP])[k_000]; + f[dMPP] = (dist.f[dMPP])[k_M00]; + f[dPMP] = (dist.f[dPMP])[k_0M0]; + f[dMMP] = (dist.f[dMMP])[k_MM0]; + f[dPPM] = (dist.f[dPPM])[k_00M]; + f[dMPM] = (dist.f[dMPM])[k_M0M]; + f[dPMM] = (dist.f[dPMM])[k_0MM]; + f[dMMM] = (dist.f[dMMM])[k_MMM]; + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + fN[d000] = (dist.f[d000])[kN_000]; + fN[dP00] = (dist.f[dP00])[kN_000]; + fN[dM00] = (dist.f[dM00])[kN_M00]; + fN[d0P0] = (dist.f[d0P0])[kN_000]; + fN[d0M0] = (dist.f[d0M0])[kN_0M0]; + fN[d00P] = (dist.f[d00P])[kN_000]; + fN[d00M] = (dist.f[d00M])[kN_00M]; + fN[dPP0] = (dist.f[dPP0])[kN_000]; + fN[dMM0] = (dist.f[dMM0])[kN_MM0]; + fN[dPM0] = (dist.f[dPM0])[kN_0M0]; + fN[dMP0] = (dist.f[dMP0])[kN_M00]; + fN[dP0P] = (dist.f[dP0P])[kN_000]; + fN[dM0M] = (dist.f[dM0M])[kN_M0M]; + fN[dP0M] = (dist.f[dP0M])[kN_00M]; + fN[dM0P] = (dist.f[dM0P])[kN_M00]; + fN[d0PP] = (dist.f[d0PP])[kN_000]; + fN[d0MM] = (dist.f[d0MM])[kN_0MM]; + fN[d0PM] = (dist.f[d0PM])[kN_00M]; + fN[d0MP] = (dist.f[d0MP])[kN_0M0]; + fN[dPPP] = (dist.f[dPPP])[kN_000]; + fN[dMPP] = (dist.f[dMPP])[kN_M00]; + fN[dPMP] = (dist.f[dPMP])[kN_0M0]; + fN[dMMP] = (dist.f[dMMP])[kN_MM0]; + fN[dPPM] = (dist.f[dPPM])[kN_00M]; + fN[dMPM] = (dist.f[dMPM])[kN_M0M]; + fN[dPMM] = (dist.f[dPMM])[kN_0MM]; + fN[dMMM] = (dist.f[dMMM])[kN_MMM]; + ////////////////////////////////////////////////////////////////////////// + real drho = vf::lbm::getDensity(f); + + real rhoCorrection = densityCorrectionFactor*drho; + + real cs = c1o1 / sqrtf(c3o1); + + getPointersToDistributions(dist, distributions, numberOfLBnodes, !isEvenTimestep); + + switch(direction) + { + case dM00: + (dist.f[dP00])[k_000] = computeOutflowDistribution(f, fN, dP00 , rhoCorrection, cs, c2o27); + (dist.f[dPM0])[k_0M0] = computeOutflowDistribution(f, fN, dPM0, rhoCorrection, cs, c1o54); + (dist.f[dPP0])[k_000] = computeOutflowDistribution(f, fN, dPP0, rhoCorrection, cs, c1o54); + (dist.f[dP0M])[k_00M] = computeOutflowDistribution(f, fN, dP0M, rhoCorrection, cs, c1o54); + (dist.f[dP0P])[k_000] = computeOutflowDistribution(f, fN, dP0P, rhoCorrection, cs, c1o54); + (dist.f[dPMP])[k_0M0] = computeOutflowDistribution(f, fN, dPMP, rhoCorrection, cs, c1o216); + (dist.f[dPPP])[k_000] = computeOutflowDistribution(f, fN, dPPP, rhoCorrection, cs, c1o216); + (dist.f[dPMM])[k_0MM] = computeOutflowDistribution(f, fN, dPMM, rhoCorrection, cs, c1o216); + (dist.f[dPPM])[k_00M] = computeOutflowDistribution(f, fN, dPPM, rhoCorrection, cs, c1o216); + break; + + case dP00: + (dist.f[dM00])[k_M00] = computeOutflowDistribution(f, fN, dM00, rhoCorrection, cs, c2o27); + (dist.f[dMM0])[k_MM0] = computeOutflowDistribution(f, fN, dMM0, rhoCorrection, cs, c1o54); + (dist.f[dMP0])[k_M00] = computeOutflowDistribution(f, fN, dMP0, rhoCorrection, cs, c1o54); + (dist.f[dM0M])[k_M0M] = computeOutflowDistribution(f, fN, dM0M, rhoCorrection, cs, c1o54); + (dist.f[dM0P])[k_M00] = computeOutflowDistribution(f, fN, dM0P, rhoCorrection, cs, c1o54); + (dist.f[dMMP])[k_MM0] = computeOutflowDistribution(f, fN, dMMP, rhoCorrection, cs, c1o216); + (dist.f[dMPP])[k_M00] = computeOutflowDistribution(f, fN, dMPP, rhoCorrection, cs, c1o216); + (dist.f[dMMM])[k_MMM] = computeOutflowDistribution(f, fN, dMMM, rhoCorrection, cs, c1o216); + (dist.f[dMPM])[k_M0M] = computeOutflowDistribution(f, fN, dMPM, rhoCorrection, cs, c1o216); + break; + + case d0M0: + (dist.f[d0P0])[k_000] = computeOutflowDistribution(f, fN, d0P0, rhoCorrection, cs, c2o27); + (dist.f[dPP0])[k_000] = computeOutflowDistribution(f, fN, dPP0, rhoCorrection, cs, c1o54); + (dist.f[dMP0])[k_M00] = computeOutflowDistribution(f, fN, dMP0, rhoCorrection, cs, c1o54); + (dist.f[d0PP])[k_000] = computeOutflowDistribution(f, fN, d0PP, rhoCorrection, cs, c1o54); + (dist.f[d0PM])[k_00M] = computeOutflowDistribution(f, fN, d0PM, rhoCorrection, cs, c1o54); + (dist.f[dPPP])[k_000] = computeOutflowDistribution(f, fN, dPPP, rhoCorrection, cs, c1o216); + (dist.f[dMPP])[k_M00] = computeOutflowDistribution(f, fN, dMPP, rhoCorrection, cs, c1o216); + (dist.f[dPPM])[k_00M] = computeOutflowDistribution(f, fN, dPPM, rhoCorrection, cs, c1o216); + (dist.f[dMPM])[k_M0M] = computeOutflowDistribution(f, fN, dMPM, rhoCorrection, cs, c1o216); + break; + + case d0P0: + (dist.f[d0M0])[k_0M0] =computeOutflowDistribution(f, fN, d0M0, rhoCorrection, cs, c2o27); + (dist.f[dPM0])[k_0M0] =computeOutflowDistribution(f, fN, dPM0, rhoCorrection, cs, c1o54); + (dist.f[dMM0])[k_MM0] =computeOutflowDistribution(f, fN, dMM0, rhoCorrection, cs, c1o54); + (dist.f[d0MP])[k_0M0] =computeOutflowDistribution(f, fN, d0MP, rhoCorrection, cs, c1o54); + (dist.f[d0MM])[k_0MM] =computeOutflowDistribution(f, fN, d0MM, rhoCorrection, cs, c1o54); + (dist.f[dPMP])[k_0M0] =computeOutflowDistribution(f, fN, dPMP, rhoCorrection, cs, c1o216); + (dist.f[dMMP])[k_MM0] =computeOutflowDistribution(f, fN, dMMP, rhoCorrection, cs, c1o216); + (dist.f[dPMM])[k_0MM] =computeOutflowDistribution(f, fN, dPMM, rhoCorrection, cs, c1o216); + (dist.f[dMMM])[k_MMM] =computeOutflowDistribution(f, fN, dMMM, rhoCorrection, cs, c1o216); + break; + + case d00M: + (dist.f[d00P])[k_000] = computeOutflowDistribution(f, fN, d00P, rhoCorrection, cs, c2o27); + (dist.f[dP0P])[k_000] = computeOutflowDistribution(f, fN, dP0P, rhoCorrection, cs, c1o54); + (dist.f[dM0P])[k_M00] = computeOutflowDistribution(f, fN, dM0P, rhoCorrection, cs, c1o54); + (dist.f[d0PP])[k_000] = computeOutflowDistribution(f, fN, d0PP, rhoCorrection, cs, c1o54); + (dist.f[d0MP])[k_0M0] = computeOutflowDistribution(f, fN, d0MP, rhoCorrection, cs, c1o54); + (dist.f[dPPP])[k_000] = computeOutflowDistribution(f, fN, dPPP, rhoCorrection, cs, c1o216); + (dist.f[dMPP])[k_M00] = computeOutflowDistribution(f, fN, dMPP, rhoCorrection, cs, c1o216); + (dist.f[dPMP])[k_0M0] = computeOutflowDistribution(f, fN, dPMP, rhoCorrection, cs, c1o216); + (dist.f[dMMP])[k_MM0] = computeOutflowDistribution(f, fN, dMMP, rhoCorrection, cs, c1o216); + break; + + case d00P: + (dist.f[d00M])[k_00M] = computeOutflowDistribution(f, fN, d00M, rhoCorrection, cs, c2o27); + (dist.f[dP0M])[k_00M] = computeOutflowDistribution(f, fN, dP0M, rhoCorrection, cs, c1o54); + (dist.f[dM0M])[k_M0M] = computeOutflowDistribution(f, fN, dM0M, rhoCorrection, cs, c1o54); + (dist.f[d0PM])[k_00M] = computeOutflowDistribution(f, fN, d0PM, rhoCorrection, cs, c1o54); + (dist.f[d0MM])[k_0MM] = computeOutflowDistribution(f, fN, d0MM, rhoCorrection, cs, c1o54); + (dist.f[dPPM])[k_00M] = computeOutflowDistribution(f, fN, dPPM, rhoCorrection, cs, c1o216); + (dist.f[dMPM])[k_M0M] = computeOutflowDistribution(f, fN, dMPM, rhoCorrection, cs, c1o216); + (dist.f[dPMM])[k_0MM] = computeOutflowDistribution(f, fN, dPMM, rhoCorrection, cs, c1o216); + (dist.f[dMMM])[k_MMM] = computeOutflowDistribution(f, fN, dMMM, rhoCorrection, cs, c1o216); + break; + default: + break; + } +} +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +__global__ void QPressDeviceOld27( + real* rhoBC, + real* DD, + int* k_Q, + int* k_N, + int numberOfBCnodes, + real om1, + unsigned int* neighborX, + unsigned int* neighborY, + unsigned int* neighborZ, + unsigned long long numberOfLBnodes, + bool isEvenTimestep) +{ + //////////////////////////////////////////////////////////////////////////////// + const unsigned x = threadIdx.x; // Globaler x-Index + const unsigned y = blockIdx.x; // Globaler y-Index + const unsigned z = blockIdx.y; // Globaler z-Index + + const unsigned nx = blockDim.x; + const unsigned ny = gridDim.x; + + const unsigned k = nx*(ny*z + y) + x; + ////////////////////////////////////////////////////////////////////////// + + if(k<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]; + 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]; + //////////////////////////////////////////////////////////////////////////////// + //index1 + unsigned int K1QK = k_N[k]; + unsigned int k1zero= K1QK; + unsigned int k1e = K1QK; + unsigned int k1w = neighborX[K1QK]; + unsigned int k1n = K1QK; + unsigned int k1s = neighborY[K1QK]; + unsigned int k1t = K1QK; + unsigned int k1b = neighborZ[K1QK]; + unsigned int k1sw = neighborY[k1w]; + unsigned int k1ne = K1QK; + unsigned int k1se = k1s; + unsigned int k1nw = k1w; + unsigned int k1bw = neighborZ[k1w]; + unsigned int k1te = K1QK; + unsigned int k1be = k1b; + unsigned int k1tw = k1w; + unsigned int k1bs = neighborZ[k1s]; + unsigned int k1tn = K1QK; + unsigned int k1bn = k1b; + unsigned int k1ts = k1s; + unsigned int k1tse = k1s; + unsigned int k1bnw = k1bw; + unsigned int k1tnw = k1w; + unsigned int k1bse = k1bs; + unsigned int k1tsw = k1sw; + unsigned int k1bne = k1b; + unsigned int k1tne = K1QK; + unsigned int k1bsw = neighborZ[k1sw]; + //////////////////////////////////////////////////////////////////////////////// + Distributions27 D; + if (isEvenTimestep==false) + { + D.f[dP00] = &DD[dP00 * numberOfLBnodes]; + D.f[dM00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00P] = &DD[d00P * numberOfLBnodes]; + D.f[d00M] = &DD[d00M * numberOfLBnodes]; + D.f[dPP0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dMM0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dP0P] = &DD[dP0P * numberOfLBnodes]; + D.f[dM0M] = &DD[dM0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dP0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dM0P * numberOfLBnodes]; + D.f[d0PP] = &DD[d0PP * numberOfLBnodes]; + D.f[d0MM] = &DD[d0MM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0PM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dPPP * numberOfLBnodes]; + D.f[dMMP] = &DD[dMMP * numberOfLBnodes]; + D.f[dPMP] = &DD[dPMP * numberOfLBnodes]; + D.f[dMPP] = &DD[dMPP * numberOfLBnodes]; + D.f[dPPM] = &DD[dPPM * numberOfLBnodes]; + D.f[dMMM] = &DD[dMMM * numberOfLBnodes]; + D.f[dPMM] = &DD[dPMM * numberOfLBnodes]; + D.f[dMPM] = &DD[dMPM * numberOfLBnodes]; + } + else + { + D.f[dM00] = &DD[dP00 * numberOfLBnodes]; + D.f[dP00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00M] = &DD[d00P * numberOfLBnodes]; + D.f[d00P] = &DD[d00M * numberOfLBnodes]; + D.f[dMM0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dPP0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dM0M] = &DD[dP0P * numberOfLBnodes]; + D.f[dP0P] = &DD[dM0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dP0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dM0P * numberOfLBnodes]; + D.f[d0MM] = &DD[d0PP * numberOfLBnodes]; + D.f[d0PP] = &DD[d0MM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0PM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dMMM * numberOfLBnodes]; + D.f[dMMP] = &DD[dPPM * numberOfLBnodes]; + D.f[dPMP] = &DD[dMPM * numberOfLBnodes]; + D.f[dMPP] = &DD[dPMM * numberOfLBnodes]; + D.f[dPPM] = &DD[dMMP * numberOfLBnodes]; + D.f[dMMM] = &DD[dPPP * numberOfLBnodes]; + D.f[dPMM] = &DD[dMPP * numberOfLBnodes]; + D.f[dMPM] = &DD[dPMP * numberOfLBnodes]; + } + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + 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[dP00])[k1e ]; + f1_E = (D.f[dM00])[k1w ]; + f1_S = (D.f[d0P0])[k1n ]; + f1_N = (D.f[d0M0])[k1s ]; + f1_B = (D.f[d00P])[k1t ]; + f1_T = (D.f[d00M])[k1b ]; + f1_SW = (D.f[dPP0])[k1ne ]; + f1_NE = (D.f[dMM0])[k1sw ]; + f1_NW = (D.f[dPM0])[k1se ]; + f1_SE = (D.f[dMP0])[k1nw ]; + f1_BW = (D.f[dP0P])[k1te ]; + f1_TE = (D.f[dM0M])[k1bw ]; + f1_TW = (D.f[dP0M])[k1be ]; + f1_BE = (D.f[dM0P])[k1tw ]; + f1_BS = (D.f[d0PP])[k1tn ]; + f1_TN = (D.f[d0MM])[k1bs ]; + f1_TS = (D.f[d0PM])[k1bn ]; + f1_BN = (D.f[d0MP])[k1ts ]; + f1_ZERO = (D.f[d000])[k1zero]; + f1_BSW = (D.f[dPPP])[k1tne ]; + f1_BNE = (D.f[dMMP])[k1tsw ]; + f1_BNW = (D.f[dPMP])[k1tse ]; + f1_BSE = (D.f[dMPP])[k1tnw ]; + f1_TSW = (D.f[dPPM])[k1bne ]; + f1_TNE = (D.f[dMMM])[k1bsw ]; + f1_TNW = (D.f[dPMM])[k1bse ]; + f1_TSE = (D.f[dMPM])[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; + + //drho1 = (drho1 + rhoBC[k])/2.f; + drho1 = drho1 - rhoBC[k]; + ////////////////////////////////////////////////////////////////////////// + + __syncthreads(); + + (D.f[dP00])[ke ] = f1_W -c2o27*drho1; // c1o100; // zero; // + (D.f[dM00])[kw ] = f1_E -c2o27*drho1; // c1o100; // zero; // + (D.f[d0P0])[kn ] = f1_S -c2o27*drho1; // c1o100; // zero; // + (D.f[d0M0])[ks ] = f1_N -c2o27*drho1; // c1o100; // zero; // + (D.f[d00P])[kt ] = f1_B -c2o27*drho1; // c1o100; // zero; // + (D.f[d00M])[kb ] = f1_T -c2o27*drho1; // c1o100; // zero; // + (D.f[dPP0])[kne ] = f1_SW -c1o54*drho1; // c1o100; // zero; // + (D.f[dMM0])[ksw ] = f1_NE -c1o54*drho1; // c1o100; // zero; // + (D.f[dPM0])[kse ] = f1_NW -c1o54*drho1; // c1o100; // zero; // + (D.f[dMP0])[knw ] = f1_SE -c1o54*drho1; // c1o100; // zero; // + (D.f[dP0P])[kte ] = f1_BW -c1o54*drho1; // c1o100; // zero; // + (D.f[dM0M])[kbw ] = f1_TE -c1o54*drho1; // c1o100; // zero; // + (D.f[dP0M])[kbe ] = f1_TW -c1o54*drho1; // c1o100; // zero; // + (D.f[dM0P])[ktw ] = f1_BE -c1o54*drho1; // c1o100; // zero; // + (D.f[d0PP])[ktn ] = f1_BS -c1o54*drho1; // c1o100; // zero; // + (D.f[d0MM])[kbs ] = f1_TN -c1o54*drho1; // c1o100; // zero; // + (D.f[d0PM])[kbn ] = f1_TS -c1o54*drho1; // c1o100; // zero; // + (D.f[d0MP])[kts ] = f1_BN -c1o54*drho1; // c1o100; // zero; // + (D.f[d000])[kzero] = f1_ZERO-c8o27*drho1; // c1o100; // zero; // + (D.f[dPPP])[ktne ] = f1_BSW -c1o216*drho1; // c1o100; // zero; // + (D.f[dMMP])[ktsw ] = f1_BNE -c1o216*drho1; // c1o100; // zero; // + (D.f[dPMP])[ktse ] = f1_BNW -c1o216*drho1; // c1o100; // zero; // + (D.f[dMPP])[ktnw ] = f1_BSE -c1o216*drho1; // c1o100; // zero; // + (D.f[dPPM])[kbne ] = f1_TSW -c1o216*drho1; // c1o100; // zero; // + (D.f[dMMM])[kbsw ] = f1_TNE -c1o216*drho1; // c1o100; // zero; // + (D.f[dPMM])[kbse ] = f1_TNW -c1o216*drho1; // c1o100; // zero; // + (D.f[dMPM])[kbnw ] = f1_TSE -c1o216*drho1; // c1o100; // zero; // + } +} +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +__global__ void QPressDeviceEQZ27( + real* rhoBC, + real* DD, + int* k_Q, + int* k_N, + real* kTestRE, + int numberOfBCnodes, + real om1, + unsigned int* neighborX, + unsigned int* neighborY, + unsigned int* neighborZ, + unsigned long long 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 + + const unsigned nx = blockDim.x; + const unsigned ny = gridDim.x; + + const unsigned k = nx*(ny*z + y) + x; + ////////////////////////////////////////////////////////////////////////// + + if(k<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]; + 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]; + //////////////////////////////////////////////////////////////////////////////// + //index1 + unsigned int K1QK = k_N[k]; + unsigned int k1zero= K1QK; + unsigned int k1e = K1QK; + unsigned int k1w = neighborX[K1QK]; + unsigned int k1n = K1QK; + unsigned int k1s = neighborY[K1QK]; + unsigned int k1t = K1QK; + unsigned int k1b = neighborZ[K1QK]; + unsigned int k1sw = neighborY[k1w]; + unsigned int k1ne = K1QK; + unsigned int k1se = k1s; + unsigned int k1nw = k1w; + unsigned int k1bw = neighborZ[k1w]; + unsigned int k1te = K1QK; + unsigned int k1be = k1b; + unsigned int k1tw = k1w; + unsigned int k1bs = neighborZ[k1s]; + unsigned int k1tn = K1QK; + unsigned int k1bn = k1b; + unsigned int k1ts = k1s; + unsigned int k1tse = k1s; + unsigned int k1bnw = k1bw; + unsigned int k1tnw = k1w; + unsigned int k1bse = k1bs; + unsigned int k1tsw = k1sw; + unsigned int k1bne = k1b; + unsigned int k1tne = K1QK; + unsigned int k1bsw = neighborZ[k1sw]; + //////////////////////////////////////////////////////////////////////////////// + Distributions27 D; + if (isEvenTimestep==true) + { + D.f[dP00] = &DD[dP00 * numberOfLBnodes]; + D.f[dM00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00P] = &DD[d00P * numberOfLBnodes]; + D.f[d00M] = &DD[d00M * numberOfLBnodes]; + D.f[dPP0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dMM0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dP0P] = &DD[dP0P * numberOfLBnodes]; + D.f[dM0M] = &DD[dM0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dP0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dM0P * numberOfLBnodes]; + D.f[d0PP] = &DD[d0PP * numberOfLBnodes]; + D.f[d0MM] = &DD[d0MM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0PM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dPPP * numberOfLBnodes]; + D.f[dMMP] = &DD[dMMP * numberOfLBnodes]; + D.f[dPMP] = &DD[dPMP * numberOfLBnodes]; + D.f[dMPP] = &DD[dMPP * numberOfLBnodes]; + D.f[dPPM] = &DD[dPPM * numberOfLBnodes]; + D.f[dMMM] = &DD[dMMM * numberOfLBnodes]; + D.f[dPMM] = &DD[dPMM * numberOfLBnodes]; + D.f[dMPM] = &DD[dMPM * numberOfLBnodes]; + } + else + { + D.f[dM00] = &DD[dP00 * numberOfLBnodes]; + D.f[dP00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00M] = &DD[d00P * numberOfLBnodes]; + D.f[d00P] = &DD[d00M * numberOfLBnodes]; + D.f[dMM0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dPP0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dM0M] = &DD[dP0P * numberOfLBnodes]; + D.f[dP0P] = &DD[dM0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dP0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dM0P * numberOfLBnodes]; + D.f[d0MM] = &DD[d0PP * numberOfLBnodes]; + D.f[d0PP] = &DD[d0MM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0PM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dMMM * numberOfLBnodes]; + D.f[dMMP] = &DD[dPPM * numberOfLBnodes]; + D.f[dPMP] = &DD[dMPM * numberOfLBnodes]; + D.f[dMPP] = &DD[dPMM * numberOfLBnodes]; + D.f[dPPM] = &DD[dMMP * numberOfLBnodes]; + D.f[dMMM] = &DD[dPPP * numberOfLBnodes]; + D.f[dPMM] = &DD[dMPP * numberOfLBnodes]; + D.f[dMPM] = &DD[dPMP * numberOfLBnodes]; + } + //////////////////////////////////////////////////////////////////////////////// + // Distributions27 kDistTest; + // kDistTest.f[dP00] = &kTestRE[dP00 * numberOfBCnodes]; + // kDistTest.f[dM00] = &kTestRE[dM00 * numberOfBCnodes]; + // kDistTest.f[d0P0] = &kTestRE[d0P0 * numberOfBCnodes]; + // kDistTest.f[d0M0] = &kTestRE[d0M0 * numberOfBCnodes]; + // kDistTest.f[d00P] = &kTestRE[d00P * numberOfBCnodes]; + // kDistTest.f[d00M] = &kTestRE[d00M * numberOfBCnodes]; + // kDistTest.f[dPP0] = &kTestRE[dPP0 * numberOfBCnodes]; + // kDistTest.f[dMM0] = &kTestRE[dMM0 * numberOfBCnodes]; + // kDistTest.f[dPM0] = &kTestRE[dPM0 * numberOfBCnodes]; + // kDistTest.f[dMP0] = &kTestRE[dMP0 * numberOfBCnodes]; + // kDistTest.f[dP0P] = &kTestRE[dP0P * numberOfBCnodes]; + // kDistTest.f[dM0M] = &kTestRE[dM0M * numberOfBCnodes]; + // kDistTest.f[dP0M] = &kTestRE[dP0M * numberOfBCnodes]; + // kDistTest.f[dM0P] = &kTestRE[dM0P * numberOfBCnodes]; + // kDistTest.f[d0PP] = &kTestRE[d0PP * numberOfBCnodes]; + // kDistTest.f[d0MM] = &kTestRE[d0MM * numberOfBCnodes]; + // kDistTest.f[d0PM] = &kTestRE[d0PM * numberOfBCnodes]; + // kDistTest.f[d0MP] = &kTestRE[d0MP * numberOfBCnodes]; + // kDistTest.f[d000] = &kTestRE[d000 * numberOfBCnodes]; + // kDistTest.f[dPPP] = &kTestRE[dPPP * numberOfBCnodes]; + // kDistTest.f[dMMP] = &kTestRE[dMMP * numberOfBCnodes]; + // kDistTest.f[dPMP] = &kTestRE[dPMP * numberOfBCnodes]; + // kDistTest.f[dMPP] = &kTestRE[dMPP * numberOfBCnodes]; + // kDistTest.f[dPPM] = &kTestRE[dPPM * numberOfBCnodes]; + // kDistTest.f[dMMM] = &kTestRE[dMMM * numberOfBCnodes]; + // kDistTest.f[dPMM] = &kTestRE[dPMM * numberOfBCnodes]; + // kDistTest.f[dMPM] = &kTestRE[dMPM * 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[dP00])[k1e ]; + // //f1_E = (D.f[dM00])[k1w ]; + // //f1_S = (D.f[d0P0])[k1n ]; + // //f1_N = (D.f[d0M0])[k1s ]; + // //f1_B = (D.f[d00P])[k1t ]; + // //f1_T = (D.f[d00M])[k1b ]; + // //f1_SW = (D.f[dPP0])[k1ne ]; + // //f1_NE = (D.f[dMM0])[k1sw ]; + // //f1_NW = (D.f[dPM0])[k1se ]; + // //f1_SE = (D.f[dMP0])[k1nw ]; + // //f1_BW = (D.f[dP0P])[k1te ]; + // //f1_TE = (D.f[dM0M])[k1bw ]; + // //f1_TW = (D.f[dP0M])[k1be ]; + // //f1_BE = (D.f[dM0P])[k1tw ]; + // //f1_BS = (D.f[d0PP])[k1tn ]; + // //f1_TN = (D.f[d0MM])[k1bs ]; + // //f1_TS = (D.f[d0PM])[k1bn ]; + // //f1_BN = (D.f[d0MP])[k1ts ]; + // //f1_ZERO = (D.f[d000])[k1zero]; + // //f1_BSW = (D.f[dPPP])[k1tne ]; + // //f1_BNE = (D.f[dMMP])[k1tsw ]; + // //f1_BNW = (D.f[dPMP])[k1tse ]; + // //f1_BSE = (D.f[dMPP])[k1tnw ]; + // //f1_TSW = (D.f[dPPM])[k1bne ]; + // //f1_TNE = (D.f[dMMM])[k1bsw ]; + // //f1_TNW = (D.f[dPMM])[k1bse ]; + // //f1_TSE = (D.f[dMPM])[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[dP00])[k1e ]; + // f1_W = (D.f[dM00])[k1w ]; + // f1_N = (D.f[d0P0])[k1n ]; + // f1_S = (D.f[d0M0])[k1s ]; + // f1_T = (D.f[d00P])[k1t ]; + // f1_B = (D.f[d00M])[k1b ]; + // f1_NE = (D.f[dPP0])[k1ne ]; + // f1_SW = (D.f[dMM0])[k1sw ]; + // f1_SE = (D.f[dPM0])[k1se ]; + // f1_NW = (D.f[dMP0])[k1nw ]; + // f1_TE = (D.f[dP0P])[k1te ]; + // f1_BW = (D.f[dM0M])[k1bw ]; + // f1_BE = (D.f[dP0M])[k1be ]; + // f1_TW = (D.f[dM0P])[k1tw ]; + // f1_TN = (D.f[d0PP])[k1tn ]; + // f1_BS = (D.f[d0MM])[k1bs ]; + // f1_BN = (D.f[d0PM])[k1bn ]; + // f1_TS = (D.f[d0MP])[k1ts ]; + // f1_ZERO = (D.f[d000])[k1zero]; + // f1_TNE = (D.f[dPPP])[k1tne ]; + // f1_TSW = (D.f[dMMP])[k1tsw ]; + // f1_TSE = (D.f[dPMP])[k1tse ]; + // f1_TNW = (D.f[dMPP])[k1tnw ]; + // f1_BNE = (D.f[dPPM])[k1bne ]; + // f1_BSW = (D.f[dMMM])[k1bsw ]; + // f1_BSE = (D.f[dPMM])[k1bse ]; + // f1_BNW = (D.f[dMPM])[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_TNE-f1_BSW)+(f1_BSE-f1_TNW)+(f1_BNE-f1_TSW)+(f1_TSE-f1_BNW)) + (((f1_NE-f1_SW)+(f1_TE-f1_BW))+((f1_SE-f1_NW)+(f1_BE-f1_TW))) + (f1_E-f1_W)) / (one + drho1); + //real vx2 = (((f1_TNE-f1_BSW)+(f1_TNW-f1_BSE)+(f1_BNE-f1_TSW)+(f1_BNW-f1_TSE)) + (((f1_NE-f1_SW)+(f1_TN-f1_BS))+((f1_BN-f1_TS)+(f1_NW-f1_SE))) + (f1_N-f1_S)) / (one + drho1); + //real vx3 = (((f1_TNE-f1_BSW)+(f1_TNW-f1_BSE)+(f1_TSW-f1_BNE)+(f1_TSE-f1_BNW)) + (((f1_TE-f1_BW)+(f1_TN-f1_BS))+((f1_TW-f1_BE)+(f1_TS-f1_BN))) + (f1_T-f1_B)) / (one + drho1); + // ////////////////////////////////////////////////////////////////////////// + ////real omega = om1; + // real cusq = c3o2*(vx1*vx1+vx2*vx2+vx3*vx3); + // ////////////////////////////////////////////////////////////////////////// + ////T�st MK + ////if(vx1 < zero) vx1 = zero; + // ////////////////////////////////////////////////////////////////////////// + ////becomes higher with neighbor source and lower with local source + // //real fZERO = c8over27* (rhoBC[k]-(one + rhoBC[k])*(cusq)) ; + // //real fE = c2over27* (rhoBC[k]+(one + rhoBC[k])*(three*( vx1 )+c9over2*( vx1 )*( vx1 )-cusq)); + // //real fW = c2over27* (rhoBC[k]+(one + rhoBC[k])*(three*(-vx1 )+c9over2*(-vx1 )*(-vx1 )-cusq)); + // //real fN = c2over27* (rhoBC[k]+(one + rhoBC[k])*(three*( vx2 )+c9over2*( vx2 )*( vx2 )-cusq)); + // //real fS = c2over27* (rhoBC[k]+(one + rhoBC[k])*(three*( -vx2 )+c9over2*( -vx2 )*( -vx2 )-cusq)); + // //real fT = c2over27* (rhoBC[k]+(one + rhoBC[k])*(three*( vx3)+c9over2*( vx3)*( vx3)-cusq)); + // //real fB = c2over27* (rhoBC[k]+(one + rhoBC[k])*(three*( -vx3)+c9over2*( -vx3)*( -vx3)-cusq)); + // //real fNE = c1over54* (rhoBC[k]+(one + rhoBC[k])*(three*( vx1+vx2 )+c9over2*( vx1+vx2 )*( vx1+vx2 )-cusq)); + // //real fSW = c1over54* (rhoBC[k]+(one + rhoBC[k])*(three*(-vx1-vx2 )+c9over2*(-vx1-vx2 )*(-vx1-vx2 )-cusq)); + // //real fSE = c1over54* (rhoBC[k]+(one + rhoBC[k])*(three*( vx1-vx2 )+c9over2*( vx1-vx2 )*( vx1-vx2 )-cusq)); + // //real fNW = c1over54* (rhoBC[k]+(one + rhoBC[k])*(three*(-vx1+vx2 )+c9over2*(-vx1+vx2 )*(-vx1+vx2 )-cusq)); + // //real fTE = c1over54* (rhoBC[k]+(one + rhoBC[k])*(three*( vx1 +vx3)+c9over2*( vx1 +vx3)*( vx1 +vx3)-cusq)); + // //real fBW = c1over54* (rhoBC[k]+(one + rhoBC[k])*(three*(-vx1 -vx3)+c9over2*(-vx1 -vx3)*(-vx1 -vx3)-cusq)); + // //real fBE = c1over54* (rhoBC[k]+(one + rhoBC[k])*(three*( vx1 -vx3)+c9over2*( vx1 -vx3)*( vx1 -vx3)-cusq)); + // //real fTW = c1over54* (rhoBC[k]+(one + rhoBC[k])*(three*(-vx1 +vx3)+c9over2*(-vx1 +vx3)*(-vx1 +vx3)-cusq)); + // //real fTN = c1over54* (rhoBC[k]+(one + rhoBC[k])*(three*( vx2+vx3)+c9over2*( vx2+vx3)*( vx2+vx3)-cusq)); + // //real fBS = c1over54* (rhoBC[k]+(one + rhoBC[k])*(three*( -vx2-vx3)+c9over2*( -vx2-vx3)*( -vx2-vx3)-cusq)); + // //real fBN = c1over54* (rhoBC[k]+(one + rhoBC[k])*(three*( vx2-vx3)+c9over2*( vx2-vx3)*( vx2-vx3)-cusq)); + // //real fTS = c1over54* (rhoBC[k]+(one + rhoBC[k])*(three*( -vx2+vx3)+c9over2*( -vx2+vx3)*( -vx2+vx3)-cusq)); + // //real fTNE = c1over216* (rhoBC[k]+(one + rhoBC[k])*(three*( vx1+vx2+vx3)+c9over2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cusq)); + // //real fBSW = c1over216* (rhoBC[k]+(one + rhoBC[k])*(three*(-vx1-vx2-vx3)+c9over2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cusq)); + // //real fBNE = c1over216* (rhoBC[k]+(one + rhoBC[k])*(three*( vx1+vx2-vx3)+c9over2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cusq)); + // //real fTSW = c1over216* (rhoBC[k]+(one + rhoBC[k])*(three*(-vx1-vx2+vx3)+c9over2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cusq)); + // //real fTSE = c1over216* (rhoBC[k]+(one + rhoBC[k])*(three*( vx1-vx2+vx3)+c9over2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cusq)); + // //real fBNW = c1over216* (rhoBC[k]+(one + rhoBC[k])*(three*(-vx1+vx2-vx3)+c9over2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cusq)); + // //real fBSE = c1over216* (rhoBC[k]+(one + rhoBC[k])*(three*( vx1-vx2-vx3)+c9over2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cusq)); + // //real fTNW = c1over216* (rhoBC[k]+(one + rhoBC[k])*(three*(-vx1+vx2+vx3)+c9over2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cusq)); + // ////////////////////////////////////////////////////////////////////////// + //// based on VirtualFluids (kucher + fard) + // real fZERO = c8over27 * rhoBC[k] * (one - cusq); + // real fE = c2over27 * rhoBC[k] * (one + three * ( vx1 ) + c9over2 * ( vx1 ) * ( vx1 ) - cusq); + // real fW = c2over27 * rhoBC[k] * (one + three * (-vx1 ) + c9over2 * (-vx1 ) * (-vx1 ) - cusq); + // real fN = c2over27 * rhoBC[k] * (one + three * ( vx2 ) + c9over2 * ( vx2 ) * ( vx2 ) - cusq); + // real fS = c2over27 * rhoBC[k] * (one + three * ( -vx2 ) + c9over2 * ( -vx2 ) * ( -vx2 ) - cusq); + // real fT = c2over27 * rhoBC[k] * (one + three * ( vx3) + c9over2 * ( vx3) * ( vx3) - cusq); + // real fB = c2over27 * rhoBC[k] * (one + three * ( -vx3) + c9over2 * ( -vx3) * ( -vx3) - cusq); + // real fNE = c1over54 * rhoBC[k] * (one + three * ( vx1+vx2 ) + c9over2 * ( vx1+vx2 ) * ( vx1+vx2 ) - cusq); + // real fSW = c1over54 * rhoBC[k] * (one + three * (-vx1-vx2 ) + c9over2 * (-vx1-vx2 ) * (-vx1-vx2 ) - cusq); + // real fSE = c1over54 * rhoBC[k] * (one + three * ( vx1-vx2 ) + c9over2 * ( vx1-vx2 ) * ( vx1-vx2 ) - cusq); + // real fNW = c1over54 * rhoBC[k] * (one + three * (-vx1+vx2 ) + c9over2 * (-vx1+vx2 ) * (-vx1+vx2 ) - cusq); + // real fTE = c1over54 * rhoBC[k] * (one + three * ( vx1 +vx3) + c9over2 * ( vx1 +vx3) * ( vx1 +vx3) - cusq); + // real fBW = c1over54 * rhoBC[k] * (one + three * (-vx1 -vx3) + c9over2 * (-vx1 -vx3) * (-vx1 -vx3) - cusq); + // real fBE = c1over54 * rhoBC[k] * (one + three * ( vx1 -vx3) + c9over2 * ( vx1 -vx3) * ( vx1 -vx3) - cusq); + // real fTW = c1over54 * rhoBC[k] * (one + three * (-vx1 +vx3) + c9over2 * (-vx1 +vx3) * (-vx1 +vx3) - cusq); + // real fTN = c1over54 * rhoBC[k] * (one + three * ( vx2+vx3) + c9over2 * ( vx2+vx3) * ( vx2+vx3) - cusq); + // real fBS = c1over54 * rhoBC[k] * (one + three * ( -vx2-vx3) + c9over2 * ( -vx2-vx3) * ( -vx2-vx3) - cusq); + // real fBN = c1over54 * rhoBC[k] * (one + three * ( vx2-vx3) + c9over2 * ( vx2-vx3) * ( vx2-vx3) - cusq); + // real fTS = c1over54 * rhoBC[k] * (one + three * ( -vx2+vx3) + c9over2 * ( -vx2+vx3) * ( -vx2+vx3) - cusq); + // real fTNE = c1over216 * rhoBC[k] * (one + three * ( vx1+vx2+vx3) + c9over2 * ( vx1+vx2+vx3) * ( vx1+vx2+vx3) - cusq); + // real fBSW = c1over216 * rhoBC[k] * (one + three * (-vx1-vx2-vx3) + c9over2 * (-vx1-vx2-vx3) * (-vx1-vx2-vx3) - cusq); + // real fBNE = c1over216 * rhoBC[k] * (one + three * ( vx1+vx2-vx3) + c9over2 * ( vx1+vx2-vx3) * ( vx1+vx2-vx3) - cusq); + // real fTSW = c1over216 * rhoBC[k] * (one + three * (-vx1-vx2+vx3) + c9over2 * (-vx1-vx2+vx3) * (-vx1-vx2+vx3) - cusq); + // real fTSE = c1over216 * rhoBC[k] * (one + three * ( vx1-vx2+vx3) + c9over2 * ( vx1-vx2+vx3) * ( vx1-vx2+vx3) - cusq); + // real fBNW = c1over216 * rhoBC[k] * (one + three * (-vx1+vx2-vx3) + c9over2 * (-vx1+vx2-vx3) * (-vx1+vx2-vx3) - cusq); + // real fBSE = c1over216 * rhoBC[k] * (one + three * ( vx1-vx2-vx3) + c9over2 * ( vx1-vx2-vx3) * ( vx1-vx2-vx3) - cusq); + // real fTNW = c1over216 * rhoBC[k] * (one + three * (-vx1+vx2+vx3) + c9over2 * (-vx1+vx2+vx3) * (-vx1+vx2+vx3) - cusq); + //// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //////test + //// real fZERO = c8over27 * ((drho1 + rhoBC[k]) / two) * (one - cusq); + //// real fE = c2over27 * ((drho1 + rhoBC[k]) / two) * (one + three * ( vx1 ) + c9over2 * ( vx1 ) * ( vx1 ) - cusq); + //// real fW = c2over27 * ((drho1 + rhoBC[k]) / two) * (one + three * (-vx1 ) + c9over2 * (-vx1 ) * (-vx1 ) - cusq); + //// real fN = c2over27 * ((drho1 + rhoBC[k]) / two) * (one + three * ( vx2 ) + c9over2 * ( vx2 ) * ( vx2 ) - cusq); + //// real fS = c2over27 * ((drho1 + rhoBC[k]) / two) * (one + three * ( -vx2 ) + c9over2 * ( -vx2 ) * ( -vx2 ) - cusq); + //// real fT = c2over27 * ((drho1 + rhoBC[k]) / two) * (one + three * ( vx3) + c9over2 * ( vx3) * ( vx3) - cusq); + //// real fB = c2over27 * ((drho1 + rhoBC[k]) / two) * (one + three * ( -vx3) + c9over2 * ( -vx3) * ( -vx3) - cusq); + //// real fNE = c1over54 * ((drho1 + rhoBC[k]) / two) * (one + three * ( vx1+vx2 ) + c9over2 * ( vx1+vx2 ) * ( vx1+vx2 ) - cusq); + //// real fSW = c1over54 * ((drho1 + rhoBC[k]) / two) * (one + three * (-vx1-vx2 ) + c9over2 * (-vx1-vx2 ) * (-vx1-vx2 ) - cusq); + //// real fSE = c1over54 * ((drho1 + rhoBC[k]) / two) * (one + three * ( vx1-vx2 ) + c9over2 * ( vx1-vx2 ) * ( vx1-vx2 ) - cusq); + //// real fNW = c1over54 * ((drho1 + rhoBC[k]) / two) * (one + three * (-vx1+vx2 ) + c9over2 * (-vx1+vx2 ) * (-vx1+vx2 ) - cusq); + //// real fTE = c1over54 * ((drho1 + rhoBC[k]) / two) * (one + three * ( vx1 +vx3) + c9over2 * ( vx1 +vx3) * ( vx1 +vx3) - cusq); + //// real fBW = c1over54 * ((drho1 + rhoBC[k]) / two) * (one + three * (-vx1 -vx3) + c9over2 * (-vx1 -vx3) * (-vx1 -vx3) - cusq); + //// real fBE = c1over54 * ((drho1 + rhoBC[k]) / two) * (one + three * ( vx1 -vx3) + c9over2 * ( vx1 -vx3) * ( vx1 -vx3) - cusq); + //// real fTW = c1over54 * ((drho1 + rhoBC[k]) / two) * (one + three * (-vx1 +vx3) + c9over2 * (-vx1 +vx3) * (-vx1 +vx3) - cusq); + //// real fTN = c1over54 * ((drho1 + rhoBC[k]) / two) * (one + three * ( vx2+vx3) + c9over2 * ( vx2+vx3) * ( vx2+vx3) - cusq); + //// real fBS = c1over54 * ((drho1 + rhoBC[k]) / two) * (one + three * ( -vx2-vx3) + c9over2 * ( -vx2-vx3) * ( -vx2-vx3) - cusq); + //// real fBN = c1over54 * ((drho1 + rhoBC[k]) / two) * (one + three * ( vx2-vx3) + c9over2 * ( vx2-vx3) * ( vx2-vx3) - cusq); + //// real fTS = c1over54 * ((drho1 + rhoBC[k]) / two) * (one + three * ( -vx2+vx3) + c9over2 * ( -vx2+vx3) * ( -vx2+vx3) - cusq); + //// real fTNE = c1over216 * ((drho1 + rhoBC[k]) / two) * (one + three * ( vx1+vx2+vx3) + c9over2 * ( vx1+vx2+vx3) * ( vx1+vx2+vx3) - cusq); + //// real fBSW = c1over216 * ((drho1 + rhoBC[k]) / two) * (one + three * (-vx1-vx2-vx3) + c9over2 * (-vx1-vx2-vx3) * (-vx1-vx2-vx3) - cusq); + //// real fBNE = c1over216 * ((drho1 + rhoBC[k]) / two) * (one + three * ( vx1+vx2-vx3) + c9over2 * ( vx1+vx2-vx3) * ( vx1+vx2-vx3) - cusq); + //// real fTSW = c1over216 * ((drho1 + rhoBC[k]) / two) * (one + three * (-vx1-vx2+vx3) + c9over2 * (-vx1-vx2+vx3) * (-vx1-vx2+vx3) - cusq); + //// real fTSE = c1over216 * ((drho1 + rhoBC[k]) / two) * (one + three * ( vx1-vx2+vx3) + c9over2 * ( vx1-vx2+vx3) * ( vx1-vx2+vx3) - cusq); + //// real fBNW = c1over216 * ((drho1 + rhoBC[k]) / two) * (one + three * (-vx1+vx2-vx3) + c9over2 * (-vx1+vx2-vx3) * (-vx1+vx2-vx3) - cusq); + //// real fBSE = c1over216 * ((drho1 + rhoBC[k]) / two) * (one + three * ( vx1-vx2-vx3) + c9over2 * ( vx1-vx2-vx3) * ( vx1-vx2-vx3) - cusq); + //// real fTNW = c1over216 * ((drho1 + rhoBC[k]) / two) * (one + three * (-vx1+vx2+vx3) + c9over2 * (-vx1+vx2+vx3) * (-vx1+vx2+vx3) - cusq); + + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // based on BGK Plus Comp + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //double mfabb = (D.f[dP00])[k1e ]; + //double mfcbb = (D.f[dM00])[k1w ]; + //double mfbab = (D.f[d0P0])[k1n ]; + //double mfbcb = (D.f[d0M0])[k1s ]; + //double mfbba = (D.f[d00P])[k1t ]; + //double mfbbc = (D.f[d00M])[k1b ]; + //double mfaab = (D.f[dPP0])[k1ne ]; + //double mfccb = (D.f[dMM0])[k1sw ]; + //double mfacb = (D.f[dPM0])[k1se ]; + //double mfcab = (D.f[dMP0])[k1nw ]; + //double mfaba = (D.f[dP0P])[k1te ]; + //double mfcbc = (D.f[dM0M])[k1bw ]; + //double mfabc = (D.f[dP0M])[k1be ]; + //double mfcba = (D.f[dM0P])[k1tw ]; + //double mfbaa = (D.f[d0PP])[k1tn ]; + //double mfbcc = (D.f[d0MM])[k1bs ]; + //double mfbac = (D.f[d0PM])[k1bn ]; + //double mfbca = (D.f[d0MP])[k1ts ]; + //double mfbbb = (D.f[d000])[k1zero]; + //double mfaaa = (D.f[dPPP])[k1tne ]; + //double mfcca = (D.f[dMMP])[k1tsw ]; + //double mfaca = (D.f[dPMP])[k1tse ]; + //double mfcaa = (D.f[dMPP])[k1tnw ]; + //double mfaac = (D.f[dPPM])[k1bne ]; + //double mfccc = (D.f[dMMM])[k1bsw ]; + //double mfacc = (D.f[dPMM])[k1bse ]; + //double mfcac = (D.f[dMPM])[k1bnw ]; + real mfabb = (D.f[dP00])[k1e ]; + real mfcbb = (D.f[dM00])[k1w ]; + real mfbab = (D.f[d0P0])[k1n ]; + real mfbcb = (D.f[d0M0])[k1s ]; + real mfbba = (D.f[d00P])[k1t ]; + real mfbbc = (D.f[d00M])[k1b ]; + real mfaab = (D.f[dPP0])[k1ne ]; + real mfccb = (D.f[dMM0])[k1sw ]; + real mfacb = (D.f[dPM0])[k1se ]; + real mfcab = (D.f[dMP0])[k1nw ]; + real mfaba = (D.f[dP0P])[k1te ]; + real mfcbc = (D.f[dM0M])[k1bw ]; + real mfabc = (D.f[dP0M])[k1be ]; + real mfcba = (D.f[dM0P])[k1tw ]; + real mfbaa = (D.f[d0PP])[k1tn ]; + real mfbcc = (D.f[d0MM])[k1bs ]; + real mfbac = (D.f[d0PM])[k1bn ]; + real mfbca = (D.f[d0MP])[k1ts ]; + real mfbbb = (D.f[d000])[k1zero]; + real mfaaa = (D.f[dPPP])[k1tne ]; + real mfcca = (D.f[dMMP])[k1tsw ]; + real mfaca = (D.f[dPMP])[k1tse ]; + real mfcaa = (D.f[dMPP])[k1tnw ]; + real mfaac = (D.f[dPPM])[k1bne ]; + real mfccc = (D.f[dMMM])[k1bsw ]; + real mfacc = (D.f[dPMM])[k1bse ]; + real mfcac = (D.f[dMPM])[k1bnw ]; + + //real mfcbb = (D.f[dP00])[ke ]; + //real mfabb = (D.f[dM00])[kw ]; + //real mfbcb = (D.f[d0P0])[kn ]; + //real mfbab = (D.f[d0M0])[ks ]; + //real mfbbc = (D.f[d00P])[kt ]; + //real mfbba = (D.f[d00M])[kb ]; + //real mfccb = (D.f[dPP0])[kne ]; + //real mfaab = (D.f[dMM0])[ksw ]; + //real mfcab = (D.f[dPM0])[kse ]; + //real mfacb = (D.f[dMP0])[knw ]; + //real mfcbc = (D.f[dP0P])[kte ]; + //real mfaba = (D.f[dM0M])[kbw ]; + //real mfcba = (D.f[dP0M])[kbe ]; + //real mfabc = (D.f[dM0P])[ktw ]; + //real mfbcc = (D.f[d0PP])[ktn ]; + //real mfbaa = (D.f[d0MM])[kbs ]; + //real mfbca = (D.f[d0PM])[kbn ]; + //real mfbac = (D.f[d0MP])[kts ]; + //real mfbbb = (D.f[d000])[kzero]; + //real mfccc = (D.f[dPPP])[ktne ]; + //real mfaac = (D.f[dMMP])[ktsw ]; + //real mfcac = (D.f[dPMP])[ktse ]; + //real mfacc = (D.f[dMPP])[ktnw ]; + //real mfcca = (D.f[dPPM])[kbne ]; + //real mfaaa = (D.f[dMMM])[kbsw ]; + //real mfcaa = (D.f[dPMM])[kbse ]; + //real mfaca = (D.f[dMPM])[kbnw ]; + //////////////////////////////////////////////////////////////////////////////////// + //real rho = (((((mfccc+mfaaa) + (mfaca+mfcac)) + ((mfacc+mfcaa) + (mfaac+mfcca))) + + // (((mfbac+mfbca) + (mfbaa+mfbcc)) + ((mfabc+mfcba) + (mfaba+mfcbc)) + ((mfacb+mfcab) + (mfaab+mfccb))) + + // ((mfabb+mfcbb) + (mfbab+mfbcb)) + (mfbba+mfbbc)) + mfbbb) + one;//!!!!Achtung + one + //////////////////////////////////////////////////////////////////////////////////// + real rho = rhoBC[k]; + //////////////////////////////////////////////////////////////////////////////////// + real OoRho = c1o1 / (rho * 1.5f); + //////////////////////////////////////////////////////////////////////////////////// + real vvx = ((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfcaa-mfacc) + (mfcca-mfaac))) + + (((mfcba-mfabc) + (mfcbc-mfaba)) + ((mfcab-mfacb) + (mfccb-mfaab))) + + (mfcbb-mfabb)) * OoRho; + real vvy =((((mfccc-mfaaa) + (mfaca-mfcac)) + ((mfacc-mfcaa) + (mfcca-mfaac))) + + (((mfbca-mfbac) + (mfbcc-mfbaa)) + ((mfacb-mfcab) + (mfccb-mfaab))) + + (mfbcb-mfbab)) * OoRho; + real vvz =((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfacc-mfcaa) + (mfaac-mfcca))) + + (((mfbac-mfbca) + (mfbcc-mfbaa)) + ((mfabc-mfcba) + (mfcbc-mfaba))) + + (mfbbc-mfbba)) * OoRho; + ///////////////////////// + //Test Values + //double vvx = 0.016; + //double vvy = zero; + //double vvz = zero; + //////////////////////////////////////////////////////////////////////////////////////// + ////round off error test + //if(vvx!=zero){ + // (kDistTest.f[dP00])[k] = mfabb; + // (kDistTest.f[dM00])[k] = mfcbb; + // (kDistTest.f[d0P0])[k] = mfbab; + // (kDistTest.f[d0M0])[k] = mfbcb; + // (kDistTest.f[d00P])[k] = mfbba; + // (kDistTest.f[d00M])[k] = mfbbc; + // (kDistTest.f[dPP0])[k] = mfaab; + // (kDistTest.f[dMM0])[k] = mfccb; + // (kDistTest.f[dPM0])[k] = mfacb; + // (kDistTest.f[dMP0])[k] = mfcab; + // (kDistTest.f[dP0P])[k] = mfaba; + // (kDistTest.f[dM0M])[k] = mfcbc; + // (kDistTest.f[dP0M])[k] = mfabc; + // (kDistTest.f[dM0P])[k] = mfcba; + // (kDistTest.f[d0PP])[k] = mfbaa; + // (kDistTest.f[d0MM])[k] = mfbcc; + // (kDistTest.f[d0PM])[k] = mfbac; + // (kDistTest.f[d0MP])[k] = mfbca; + // (kDistTest.f[d000])[k] = KQK; + // (kDistTest.f[dPPP])[k] = mfaaa; + // (kDistTest.f[dMMP])[k] = mfcca; + // (kDistTest.f[dPMP])[k] = mfaca; + // (kDistTest.f[dMPP])[k] = mfcaa; + // (kDistTest.f[dPPM])[k] = mfaac; + // (kDistTest.f[dMMM])[k] = mfccc; + // (kDistTest.f[dPMM])[k] = mfacc; + // (kDistTest.f[dMPM])[k] = mfcac; + //}else{ + // (kDistTest.f[dP00])[k] = zero; + // (kDistTest.f[dM00])[k] = zero; + // (kDistTest.f[d0P0])[k] = zero; + // (kDistTest.f[d0M0])[k] = zero; + // (kDistTest.f[d00P])[k] = zero; + // (kDistTest.f[d00M])[k] = zero; + // (kDistTest.f[dPP0])[k] = zero; + // (kDistTest.f[dMM0])[k] = zero; + // (kDistTest.f[dPM0])[k] = zero; + // (kDistTest.f[dMP0])[k] = zero; + // (kDistTest.f[dP0P])[k] = zero; + // (kDistTest.f[dM0M])[k] = zero; + // (kDistTest.f[dP0M])[k] = zero; + // (kDistTest.f[dM0P])[k] = zero; + // (kDistTest.f[d0PP])[k] = zero; + // (kDistTest.f[d0MM])[k] = zero; + // (kDistTest.f[d0PM])[k] = zero; + // (kDistTest.f[d0MP])[k] = zero; + // (kDistTest.f[d000])[k] = zero; + // (kDistTest.f[dPPP])[k] = zero; + // (kDistTest.f[dMMP])[k] = zero; + // (kDistTest.f[dPMP])[k] = zero; + // (kDistTest.f[dMPP])[k] = zero; + // (kDistTest.f[dPPM])[k] = zero; + // (kDistTest.f[dMMM])[k] = zero; + // (kDistTest.f[dPMM])[k] = zero; + // (kDistTest.f[dMPM])[k] = zero; + //} + + ////////////////////////////////////////////////////////////////////////////////////// + //// first bad fix for negative x velocity + ////if(vvx > zero) vvx = zero; + ////////////////////////////////////////////////////////////////////////////////////// + ////// second bad fix for negative x velocity + ////if(vvx > zero){ + //// vvx = -vvx; + //// vvy = -vvy; + //// vvz = -vvz; + ////} + //////////////////////////////////////////////////////////////////////////////////// + double vx2 = vvx * vvx; + double vy2 = vvy * vvy; + double vz2 = vvz * vvz; + ////////////////////////////////////////////////////////////////////////////////// + //original + real XXb = -c2o3 + vx2; + real XXc = -c1o2 * (XXb + c1o1 + vvx); + real XXa = XXc + vvx; + real YYb = -c2o3 + vy2; + real YYc = -c1o2 * (YYb + c1o1 + vvy); + real YYa = YYc + vvy; + real ZZb = -c2o3 + vz2; + real ZZc = -c1o2 * (ZZb + c1o1 + vvz); + real ZZa = ZZc + vvz; + ////////////////////////////////////////////////////////////////////////////////// + //unkonditioniert + mfcbb = -(rhoBC[k] + c1o1) * XXc * YYb * ZZb - c2o27; + mfabb = -(rhoBC[k] + c1o1) * XXa * YYb * ZZb - c2o27; + mfbcb = -(rhoBC[k] + c1o1) * XXb * YYc * ZZb - c2o27; + mfbab = -(rhoBC[k] + c1o1) * XXb * YYa * ZZb - c2o27; + mfbbc = -(rhoBC[k] + c1o1) * XXb * YYb * ZZc - c2o27; + mfbba = -(rhoBC[k] + c1o1) * XXb * YYb * ZZa - c2o27; + mfccb = -(rhoBC[k] + c1o1) * XXc * YYc * ZZb - c1o54; + mfaab = -(rhoBC[k] + c1o1) * XXa * YYa * ZZb - c1o54; + mfcab = -(rhoBC[k] + c1o1) * XXc * YYa * ZZb - c1o54; + mfacb = -(rhoBC[k] + c1o1) * XXa * YYc * ZZb - c1o54; + mfcbc = -(rhoBC[k] + c1o1) * XXc * YYb * ZZc - c1o54; + mfaba = -(rhoBC[k] + c1o1) * XXa * YYb * ZZa - c1o54; + mfcba = -(rhoBC[k] + c1o1) * XXc * YYb * ZZa - c1o54; + mfabc = -(rhoBC[k] + c1o1) * XXa * YYb * ZZc - c1o54; + mfbcc = -(rhoBC[k] + c1o1) * XXb * YYc * ZZc - c1o54; + mfbaa = -(rhoBC[k] + c1o1) * XXb * YYa * ZZa - c1o54; + mfbca = -(rhoBC[k] + c1o1) * XXb * YYc * ZZa - c1o54; + mfbac = -(rhoBC[k] + c1o1) * XXb * YYa * ZZc - c1o54; + mfbbb = -(rhoBC[k] + c1o1) * XXb * YYb * ZZb - c8o27; + mfccc = -(rhoBC[k] + c1o1) * XXc * YYc * ZZc - c1o216; + mfaac = -(rhoBC[k] + c1o1) * XXa * YYa * ZZc - c1o216; + mfcac = -(rhoBC[k] + c1o1) * XXc * YYa * ZZc - c1o216; + mfacc = -(rhoBC[k] + c1o1) * XXa * YYc * ZZc - c1o216; + mfcca = -(rhoBC[k] + c1o1) * XXc * YYc * ZZa - c1o216; + mfaaa = -(rhoBC[k] + c1o1) * XXa * YYa * ZZa - c1o216; + mfcaa = -(rhoBC[k] + c1o1) * XXc * YYa * ZZa - c1o216; + mfaca = -(rhoBC[k] + c1o1) * XXa * YYc * ZZa - c1o216; + ////////////////////////////////////////////////////////// + ////konditioniert + //double OneOver216RhoPlusOne = c1over216*(rhoBC[k]+one); + //double OnoOver216Rho = c1over216*rhoBC[k]; + //mfcbb = OnoOver216Rho*sixteen + OneOver216RhoPlusOne*twelve*(-(two*vy2) - two*vz2 + three*vy2*vz2 + vvx*(-two + three*vy2)*(-two + three*vz2) + vx2*(-two + three*vy2)*(-two + three*vz2)); + //mfabb = OnoOver216Rho*sixteen - OneOver216RhoPlusOne*twelve*(two*vy2 + two*vz2 - three*vy2*vz2 + vvx*(-two + three*vy2)*(-two + three*vz2) + vx2*(-four + six*vy2 + six*vz2 - nine*vy2*vz2)); + //mfbcb = four*(-(four*OneOver216RhoPlusOne) + four*OnoOver216Rho + OneOver216RhoPlusOne*(-two + three*vx2)*(one + three*vvy + three*vy2)*(-two + three*vz2)); + //mfbab = four*(four*OnoOver216Rho - OneOver216RhoPlusOne*three*(vvy*(-two + three*vx2)*(-two + three*vz2) - one*vx2*(one + three*vy2)*(-two + three*vz2) + two*(-(two*vy2) + vz2 + three*vy2*vz2))); + //mfbbc = four*(-(four*OneOver216RhoPlusOne) + four*OnoOver216Rho + OneOver216RhoPlusOne*(-two + three*vx2)*(-two + three*vy2)*(one + three*vvz + three*vz2)); + //mfbba = four*(four*OnoOver216Rho - OneOver216RhoPlusOne*three*(vvz*(-two + three*vx2)*(-two + three*vy2) - one*vx2*(-two + three*vy2)*(one + three*vz2) + two*(vy2 - two*vz2 + three*vy2*vz2))); + //mfccb = -(two*(-(OnoOver216Rho*two) + OneOver216RhoPlusOne*three*(-(two*vx2) - two*vy2 - six*vx2*vy2 + vz2 + three*vx2*vz2 + three*vy2*vz2 + nine*vx2*vy2*vz2 + vvy*(one + three*vx2)*(-two + three*vz2) + vvx*(one + three*vvy + three*vy2)*(-two + three*vz2)))); + //mfaab = -(two*(-(OnoOver216Rho*two) + OneOver216RhoPlusOne*three*(-(two*vx2) - two*vy2 - six*vx2*vy2 + vz2 + three*vx2*vz2 + three*vy2*vz2 + nine*vx2*vy2*vz2 - one*vvy*(one + three*vx2)*(-two + three*vz2) + vvx*(-one + three*vvy - three*vy2)*(-two + three*vz2)))); + //mfcab = two*(OnoOver216Rho*two + OneOver216RhoPlusOne*three*(two*vx2 + two*vy2 + six*vx2*vy2 - one*vz2 - three*vx2*vz2 - three*vy2*vz2 - nine*vx2*vy2*vz2 + vvy*(one + three*vx2)*(-two + three*vz2) + vvx*(-one + three*vvy - three*vy2)*(-two + three*vz2))); + //mfacb = two*(OnoOver216Rho*two + OneOver216RhoPlusOne*three*(two*vx2 + two*vy2 + six*vx2*vy2 - one*vz2 - three*vx2*vz2 - three*vy2*vz2 - nine*vx2*vy2*vz2 - one*vvy*(one + three*vx2)*(-two + three*vz2) + vvx*(one + three*vvy + three*vy2)*(-two + three*vz2))); + //mfcbc = -(two*(-(OnoOver216Rho*two) + OneOver216RhoPlusOne*three*(-(two*vx2) + vy2 + three*vx2*vy2 + vvz*(one + three*vx2)*(-two + three*vy2) - two*vz2 - six*vx2*vz2 + three*vy2*vz2 + nine*vx2*vy2*vz2 + vvx*(-two + three*vy2)*(one + three*vvz + three*vz2)))); + //mfaba = -(two*(-(OnoOver216Rho*two) + OneOver216RhoPlusOne*three*(-(two*vx2) + vy2 + three*vx2*vy2 - one*vvz*(one + three*vx2)*(-two + three*vy2) - two*vz2 - six*vx2*vz2 + three*vy2*vz2 + nine*vx2*vy2*vz2 + vvx*(-two + three*vy2)*(-one + three*vvz - three*vz2)))); + //mfcba = two*(OnoOver216Rho*two + OneOver216RhoPlusOne*three*(two*vx2 - one*vy2 - three*vx2*vy2 + vvz*(one + three*vx2)*(-two + three*vy2) + two*vz2 + six*vx2*vz2 - three*vy2*vz2 - nine*vx2*vy2*vz2 + vvx*(-two + three*vy2)*(-one + three*vvz - three*vz2))); + //mfabc = two*(OnoOver216Rho*two + OneOver216RhoPlusOne*three*(two*vx2 - one*vy2 - three*vx2*vy2 - one*vvz*(one + three*vx2)*(-two + three*vy2) + two*vz2 + six*vx2*vz2 - three*vy2*vz2 - nine*vx2*vy2*vz2 + vvx*(-two + three*vy2)*(one + three*vvz + three*vz2))); + //mfbcc = -(two*(-(OnoOver216Rho*two) + OneOver216RhoPlusOne*three*(vx2 - two*vy2 + three*vx2*vy2 + vvz*(-two + three*vx2)*(one + three*vy2) - two*vz2 + three*vx2*vz2 - six*vy2*vz2 + nine*vx2*vy2*vz2 + vvy*(-two + three*vx2)*(one + three*vvz + three*vz2)))); + //mfbaa = -(two*(-(OnoOver216Rho*two) + OneOver216RhoPlusOne*three*(vx2 - two*vy2 + three*vx2*vy2 - one*vvz*(-two + three*vx2)*(one + three*vy2) - two*vz2 + three*vx2*vz2 - six*vy2*vz2 + nine*vx2*vy2*vz2 + vvy*(-two + three*vx2)*(-one + three*vvz - three*vz2)))); + //mfbca = two*(OnoOver216Rho*two + OneOver216RhoPlusOne*three*(-(one*vx2) + two*vy2 - three*vx2*vy2 + vvz*(-two + three*vx2)*(one + three*vy2) + two*vz2 - three*vx2*vz2 + six*vy2*vz2 - nine*vx2*vy2*vz2 + vvy*(-two + three*vx2)*(-one + three*vvz - three*vz2))); + //mfbac = two*(OnoOver216Rho*two + OneOver216RhoPlusOne*three*(-(one*vx2) + two*vy2 - three*vx2*vy2 - one*vvz*(-two + three*vx2)*(one + three*vy2) + two*vz2 - three*vx2*vz2 + six*vy2*vz2 - nine*vx2*vy2*vz2 + vvy*(-two + three*vx2)*(one + three*vvz + three*vz2))); + //mfbbb = eight*(eight*OnoOver216Rho + OneOver216RhoPlusOne*three*(four*vy2 + four*vz2 - six*vy2*vz2 + vx2*(-two + three*vy2)*(-two + three*vz2))); + //mfccc = OnoOver216Rho + OneOver216RhoPlusOne*three*(vvz + vx2 + three*vvz*vx2 + vy2 + three*vvz*vy2 + three*vx2*vy2 + nine*vvz*vx2*vy2 + vz2 + three*vx2*vz2 + three*vy2*vz2 + nine*vx2*vy2*vz2 + vvy*(one + three*vx2)*(one + three*vvz + three*vz2) + vvx*(one + three*vvy + three*vy2)*(one + three*vvz + three*vz2)); + //mfaac = OnoOver216Rho + OneOver216RhoPlusOne*three*(vvz + vx2 + three*vvz*vx2 + vy2 + three*vvz*vy2 + three*vx2*vy2 + nine*vvz*vx2*vy2 + vz2 + three*vx2*vz2 + three*vy2*vz2 + nine*vx2*vy2*vz2 - one*vvy*(one + three*vx2)*(one + three*vvz + three*vz2) + vvx*(-one + three*vvy - three*vy2)*(one + three*vvz + three*vz2)); + //mfcac = OnoOver216Rho + OneOver216RhoPlusOne*three*(vvz + vx2 + three*vvz*vx2 + vy2 + three*vvz*vy2 + three*vx2*vy2 + nine*vvz*vx2*vy2 + vz2 + three*vx2*vz2 + three*vy2*vz2 + nine*vx2*vy2*vz2 - one*vvy*(one + three*vx2)*(one + three*vvz + three*vz2) - one*vvx*(-one + three*vvy - three*vy2)*(one + three*vvz + three*vz2)); + //mfacc = OnoOver216Rho + OneOver216RhoPlusOne*three*(vvz + vx2 + three*vvz*vx2 + vy2 + three*vvz*vy2 + three*vx2*vy2 + nine*vvz*vx2*vy2 + vz2 + three*vx2*vz2 + three*vy2*vz2 + nine*vx2*vy2*vz2 + vvy*(one + three*vx2)*(one + three*vvz + three*vz2) - one*vvx*(one + three*vvy + three*vy2)*(one + three*vvz + three*vz2)); + //mfcca = OnoOver216Rho + OneOver216RhoPlusOne*three*(-(one*vvz) + vx2 - three*vvz*vx2 + vy2 - three*vvz*vy2 + three*vx2*vy2 - nine*vvz*vx2*vy2 + vz2 + three*vx2*vz2 + three*vy2*vz2 + nine*vx2*vy2*vz2 - one*vvy*(one + three*vx2)*(-one + three*vvz - three*vz2) - one*vvx*(one + three*vvy + three*vy2)*(-one + three*vvz - three*vz2)); + //mfaaa = OnoOver216Rho - OneOver216RhoPlusOne*three*(vvz - one*vx2 + three*vvz*vx2 - one*vy2 + three*vvz*vy2 - three*vx2*vy2 + nine*vvz*vx2*vy2 - one*vz2 - three*vx2*vz2 - three*vy2*vz2 - nine*vx2*vy2*vz2 - one*vvy*(one + three*vx2)*(-one + three*vvz - three*vz2) + vvx*(-one + three*vvy - three*vy2)*(-one + three*vvz - three*vz2)); + //mfcaa = OnoOver216Rho + OneOver216RhoPlusOne*three*(-(one*vvz) + vx2 - three*vvz*vx2 + vy2 - three*vvz*vy2 + three*vx2*vy2 - nine*vvz*vx2*vy2 + vz2 + three*vx2*vz2 + three*vy2*vz2 + nine*vx2*vy2*vz2 + vvy*(one + three*vx2)*(-one + three*vvz - three*vz2) + vvx*(-one + three*vvy - three*vy2)*(-one + three*vvz - three*vz2)); + //mfaca = OnoOver216Rho + OneOver216RhoPlusOne*three*(-(one*vvz) + vx2 - three*vvz*vx2 + vy2 - three*vvz*vy2 + three*vx2*vy2 - nine*vvz*vx2*vy2 + vz2 + three*vx2*vz2 + three*vy2*vz2 + nine*vx2*vy2*vz2 - one*vvy*(one + three*vx2)*(-one + three*vvz - three*vz2) + vvx*(one + three*vvy + three*vy2)*(-one + three*vvz - three*vz2)); + + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //if (isEvenTimestep==true) + //{ + // D.f[dP00] = &DD[dP00 * size_Mat]; + // D.f[dM00] = &DD[dM00 * size_Mat]; + // D.f[d0P0] = &DD[d0P0 * size_Mat]; + // D.f[d0M0] = &DD[d0M0 * size_Mat]; + // D.f[d00P] = &DD[d00P * size_Mat]; + // D.f[d00M] = &DD[d00M * size_Mat]; + // D.f[dPP0] = &DD[dPP0 * size_Mat]; + // D.f[dMM0] = &DD[dMM0 * size_Mat]; + // D.f[dPM0] = &DD[dPM0 * size_Mat]; + // D.f[dMP0] = &DD[dMP0 * size_Mat]; + // D.f[dP0P] = &DD[dP0P * size_Mat]; + // D.f[dM0M] = &DD[dM0M * size_Mat]; + // D.f[dP0M] = &DD[dP0M * size_Mat]; + // D.f[dM0P] = &DD[dM0P * size_Mat]; + // D.f[d0PP] = &DD[d0PP * size_Mat]; + // D.f[d0MM] = &DD[d0MM * size_Mat]; + // D.f[d0PM] = &DD[d0PM * size_Mat]; + // D.f[d0MP] = &DD[d0MP * size_Mat]; + // D.f[d000] = &DD[d000 * size_Mat]; + // D.f[dPPP] = &DD[dPPP * size_Mat]; + // D.f[dMMP] = &DD[dMMP * size_Mat]; + // D.f[dPMP] = &DD[dPMP * size_Mat]; + // D.f[dMPP] = &DD[dMPP * size_Mat]; + // D.f[dPPM] = &DD[dPPM * size_Mat]; + // D.f[dMMM] = &DD[dMMM * size_Mat]; + // D.f[dPMM] = &DD[dPMM * size_Mat]; + // D.f[dMPM] = &DD[dMPM * size_Mat]; + //} + //else + //{ + // D.f[dM00] = &DD[dP00 * size_Mat]; + // D.f[dP00] = &DD[dM00 * size_Mat]; + // D.f[d0M0] = &DD[d0P0 * size_Mat]; + // D.f[d0P0] = &DD[d0M0 * size_Mat]; + // D.f[d00M] = &DD[d00P * size_Mat]; + // D.f[d00P] = &DD[d00M * size_Mat]; + // D.f[dMM0] = &DD[dPP0 * size_Mat]; + // D.f[dPP0] = &DD[dMM0 * size_Mat]; + // D.f[dMP0] = &DD[dPM0 * size_Mat]; + // D.f[dPM0] = &DD[dMP0 * size_Mat]; + // D.f[dM0M] = &DD[dP0P * size_Mat]; + // D.f[dP0P] = &DD[dM0M * size_Mat]; + // D.f[dM0P] = &DD[dP0M * size_Mat]; + // D.f[dP0M] = &DD[dM0P * size_Mat]; + // D.f[d0MM] = &DD[d0PP * size_Mat]; + // D.f[d0PP] = &DD[d0MM * size_Mat]; + // D.f[d0MP] = &DD[d0PM * size_Mat]; + // D.f[d0PM] = &DD[d0MP * size_Mat]; + // D.f[d000] = &DD[d000 * size_Mat]; + // D.f[dPPP] = &DD[dMMM * size_Mat]; + // D.f[dMMP] = &DD[dPPM * size_Mat]; + // D.f[dPMP] = &DD[dMPM * size_Mat]; + // D.f[dMPP] = &DD[dPMM * size_Mat]; + // D.f[dPPM] = &DD[dMMP * size_Mat]; + // D.f[dMMM] = &DD[dPPP * size_Mat]; + // D.f[dPMM] = &DD[dMPP * size_Mat]; + // D.f[dMPM] = &DD[dPMP * size_Mat]; + //} + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //__syncthreads(); + + (D.f[dP00])[ke ] = mfabb;//mfcbb; + (D.f[dM00])[kw ] = mfcbb;//mfabb; + (D.f[d0P0])[kn ] = mfbab;//mfbcb; + (D.f[d0M0])[ks ] = mfbcb;//mfbab; + (D.f[d00P])[kt ] = mfbba;//mfbbc; + (D.f[d00M])[kb ] = mfbbc;//mfbba; + (D.f[dPP0])[kne ] = mfaab;//mfccb; + (D.f[dMM0])[ksw ] = mfccb;//mfaab; + (D.f[dPM0])[kse ] = mfacb;//mfcab; + (D.f[dMP0])[knw ] = mfcab;//mfacb; + (D.f[dP0P])[kte ] = mfaba;//mfcbc; + (D.f[dM0M])[kbw ] = mfcbc;//mfaba; + (D.f[dP0M])[kbe ] = mfabc;//mfcba; + (D.f[dM0P])[ktw ] = mfcba;//mfabc; + (D.f[d0PP])[ktn ] = mfbaa;//mfbcc; + (D.f[d0MM])[kbs ] = mfbcc;//mfbaa; + (D.f[d0PM])[kbn ] = mfbac;//mfbca; + (D.f[d0MP])[kts ] = mfbca;//mfbac; + (D.f[d000])[kzero] = mfbbb;//mfbbb; + (D.f[dPPP])[ktne ] = mfaaa;//mfccc; + (D.f[dMMP])[ktsw ] = mfcca;//mfaac; + (D.f[dPMP])[ktse ] = mfaca;//mfcac; + (D.f[dMPP])[ktnw ] = mfcaa;//mfacc; + (D.f[dPPM])[kbne ] = mfaac;//mfcca; + (D.f[dMMM])[kbsw ] = mfccc;//mfaaa; + (D.f[dPMM])[kbse ] = mfacc;//mfcaa; + (D.f[dMPM])[kbnw ] = mfcac;//mfaca; + //(D.f[dP00])[ke ] = mfcbb; + //(D.f[dM00])[kw ] = mfabb; + //(D.f[d0P0])[kn ] = mfbcb; + //(D.f[d0M0])[ks ] = mfbab; + //(D.f[d00P])[kt ] = mfbbc; + //(D.f[d00M])[kb ] = mfbba; + //(D.f[dPP0])[kne ] = mfccb; + //(D.f[dMM0])[ksw ] = mfaab; + //(D.f[dPM0])[kse ] = mfcab; + //(D.f[dMP0])[knw ] = mfacb; + //(D.f[dP0P])[kte ] = mfcbc; + //(D.f[dM0M])[kbw ] = mfaba; + //(D.f[dP0M])[kbe ] = mfcba; + //(D.f[dM0P])[ktw ] = mfabc; + //(D.f[d0PP])[ktn ] = mfbcc; + //(D.f[d0MM])[kbs ] = mfbaa; + //(D.f[d0PM])[kbn ] = mfbca; + //(D.f[d0MP])[kts ] = mfbac; + //(D.f[d000])[kzero] = mfbbb; + //(D.f[dPPP])[ktne ] = mfccc; + //(D.f[dMMP])[ktsw ] = mfaac; + //(D.f[dPMP])[ktse ] = mfcac; + //(D.f[dMPP])[ktnw ] = mfacc; + //(D.f[dPPM])[kbne ] = mfcca; + //(D.f[dMMM])[kbsw ] = mfaaa; + //(D.f[dPMM])[kbse ] = mfcaa; + //(D.f[dMPM])[kbnw ] = mfaca; + + //(D.f[dP00])[ke ] = fE ; //f1_E ; //fW; //fE ; + //(D.f[dM00])[kw ] = fW ; //f1_W ; //fE; //fW ; + //(D.f[d0P0])[kn ] = fN ; //f1_N ; //fS; //fN ; + //(D.f[d0M0])[ks ] = fS ; //f1_S ; //fN; //fS ; + //(D.f[d00P])[kt ] = fT ; //f1_T ; //fB; //fT ; + //(D.f[d00M])[kb ] = fB ; //f1_B ; //fT; //fB ; + //(D.f[dPP0])[kne ] = fNE; //f1_NE; //fSW; //fNE; + //(D.f[dMM0])[ksw ] = fSW; //f1_SW; //fNE; //fSW; + //(D.f[dPM0])[kse ] = fSE; //f1_SE; //fNW; //fSE; + //(D.f[dMP0])[knw ] = fNW; //f1_NW; //fSE; //fNW; + //(D.f[dP0P])[kte ] = fTE; //f1_TE; //fBW; //fTE; + //(D.f[dM0M])[kbw ] = fBW; //f1_BW; //fTE; //fBW; + //(D.f[dP0M])[kbe ] = fBE; //f1_BE; //fTW; //fBE; + //(D.f[dM0P])[ktw ] = fTW; //f1_TW; //fBE; //fTW; + //(D.f[d0PP])[ktn ] = fTN; //f1_TN; //fBS; //fTN; + //(D.f[d0MM])[kbs ] = fBS; //f1_BS; //fTN; //fBS; + //(D.f[d0PM])[kbn ] = fBN; //f1_BN; //fTS; //fBN; + //(D.f[d0MP])[kts ] = fTS; //f1_TS; //fBN; //fTS; + //(D.f[d000])[kzero] = fZERO;//f1_ZERO; //fZERO; //fZERO; + //(D.f[dPPP])[ktne ] = fTNE; //f1_TNE; //fBSW; //fTNE; + //(D.f[dMMM])[kbsw ] = fBSW; //f1_BSW; //fTNE; //fBSW; + //(D.f[dPPM])[kbne ] = fBNE; //f1_BNE; //fTSW; //fBNE; + //(D.f[dMMP])[ktsw ] = fTSW; //f1_TSW; //fBNE; //fTSW; + //(D.f[dPMP])[ktse ] = fTSE; //f1_TSE; //fBNW; //fTSE; + //(D.f[dMPM])[kbnw ] = fBNW; //f1_BNW; //fTSE; //fBNW; + //(D.f[dPMM])[kbse ] = fBSE; //f1_BSE; //fTNW; //fBSE; + //(D.f[dMPP])[ktnw ] = fTNW; //f1_TNW; //fBSE; //fTNW; + } +} +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +__global__ void QPressDeviceZero27( + real* DD, + int* k_Q, + unsigned int numberOfBCnodes, + unsigned int* neighborX, + unsigned int* neighborY, + unsigned int* neighborZ, + unsigned long long 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 + + const unsigned nx = blockDim.x; + const unsigned ny = gridDim.x; + + const unsigned k = nx*(ny*z + y) + x; + ////////////////////////////////////////////////////////////////////////// + + if(k<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]; + 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]; + //////////////////////////////////////////////////////////////////////////////// + Distributions27 D; + if (isEvenTimestep==false) + { + D.f[dP00] = &DD[dP00 * numberOfLBnodes]; + D.f[dM00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00P] = &DD[d00P * numberOfLBnodes]; + D.f[d00M] = &DD[d00M * numberOfLBnodes]; + D.f[dPP0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dMM0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dP0P] = &DD[dP0P * numberOfLBnodes]; + D.f[dM0M] = &DD[dM0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dP0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dM0P * numberOfLBnodes]; + D.f[d0PP] = &DD[d0PP * numberOfLBnodes]; + D.f[d0MM] = &DD[d0MM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0PM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dPPP * numberOfLBnodes]; + D.f[dMMP] = &DD[dMMP * numberOfLBnodes]; + D.f[dPMP] = &DD[dPMP * numberOfLBnodes]; + D.f[dMPP] = &DD[dMPP * numberOfLBnodes]; + D.f[dPPM] = &DD[dPPM * numberOfLBnodes]; + D.f[dMMM] = &DD[dMMM * numberOfLBnodes]; + D.f[dPMM] = &DD[dPMM * numberOfLBnodes]; + D.f[dMPM] = &DD[dMPM * numberOfLBnodes]; + } + else + { + D.f[dM00] = &DD[dP00 * numberOfLBnodes]; + D.f[dP00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00M] = &DD[d00P * numberOfLBnodes]; + D.f[d00P] = &DD[d00M * numberOfLBnodes]; + D.f[dMM0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dPP0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dM0M] = &DD[dP0P * numberOfLBnodes]; + D.f[dP0P] = &DD[dM0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dP0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dM0P * numberOfLBnodes]; + D.f[d0MM] = &DD[d0PP * numberOfLBnodes]; + D.f[d0PP] = &DD[d0MM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0PM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dMMM * numberOfLBnodes]; + D.f[dMMP] = &DD[dPPM * numberOfLBnodes]; + D.f[dPMP] = &DD[dMPM * numberOfLBnodes]; + D.f[dMPP] = &DD[dPMM * numberOfLBnodes]; + D.f[dPPM] = &DD[dMMP * numberOfLBnodes]; + D.f[dMMM] = &DD[dPPP * numberOfLBnodes]; + D.f[dPMM] = &DD[dMPP * numberOfLBnodes]; + D.f[dMPM] = &DD[dPMP * numberOfLBnodes]; + } + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //__syncthreads(); + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + (D.f[dP00])[ke ] =c0o1; + (D.f[dM00])[kw ] =c0o1; + (D.f[d0P0])[kn ] =c0o1; + (D.f[d0M0])[ks ] =c0o1; + (D.f[d00P])[kt ] =c0o1; + (D.f[d00M])[kb ] =c0o1; + (D.f[dPP0])[kne ] =c0o1; + (D.f[dMM0])[ksw ] =c0o1; + (D.f[dPM0])[kse ] =c0o1; + (D.f[dMP0])[knw ] =c0o1; + (D.f[dP0P])[kte ] =c0o1; + (D.f[dM0M])[kbw ] =c0o1; + (D.f[dP0M])[kbe ] =c0o1; + (D.f[dM0P])[ktw ] =c0o1; + (D.f[d0PP])[ktn ] =c0o1; + (D.f[d0MM])[kbs ] =c0o1; + (D.f[d0PM])[kbn ] =c0o1; + (D.f[d0MP])[kts ] =c0o1; + (D.f[d000])[kzero] =c0o1; + (D.f[dPPP])[ktne ] =c0o1; + (D.f[dMMP])[ktsw ] =c0o1; + (D.f[dPMP])[ktse ] =c0o1; + (D.f[dMPP])[ktnw ] =c0o1; + (D.f[dPPM])[kbne ] =c0o1; + (D.f[dMMM])[kbsw ] =c0o1; + (D.f[dPMM])[kbse ] =c0o1; + (D.f[dMPM])[kbnw ] =c0o1; + } +} +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +__global__ void QPressDeviceFake27( + real* rhoBC, + real* DD, + int* k_Q, + int* k_N, + int numberOfBCnodes, + real om1, + unsigned int* neighborX, + unsigned int* neighborY, + unsigned int* neighborZ, + unsigned long long numberOfLBnodes, + bool isEvenTimestep) +{ + //////////////////////////////////////////////////////////////////////////////// + const unsigned x = threadIdx.x; // Globaler x-Index + const unsigned y = blockIdx.x; // Globaler y-Index + const unsigned z = blockIdx.y; // Globaler z-Index + + const unsigned nx = blockDim.x; + const unsigned ny = gridDim.x; + + const unsigned k = nx*(ny*z + y) + x; + ////////////////////////////////////////////////////////////////////////// + + if(k<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]; + 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]; + //////////////////////////////////////////////////////////////////////////////// + //index1 + unsigned int K1QK = k_N[k]; + unsigned int k1zero= K1QK; + unsigned int k1e = K1QK; + unsigned int k1w = neighborX[K1QK]; + unsigned int k1n = K1QK; + unsigned int k1s = neighborY[K1QK]; + unsigned int k1t = K1QK; + unsigned int k1b = neighborZ[K1QK]; + unsigned int k1sw = neighborY[k1w]; + unsigned int k1ne = K1QK; + unsigned int k1se = k1s; + unsigned int k1nw = k1w; + unsigned int k1bw = neighborZ[k1w]; + unsigned int k1te = K1QK; + unsigned int k1be = k1b; + unsigned int k1tw = k1w; + unsigned int k1bs = neighborZ[k1s]; + unsigned int k1tn = K1QK; + unsigned int k1bn = k1b; + unsigned int k1ts = k1s; + unsigned int k1tse = k1s; + unsigned int k1bnw = k1bw; + unsigned int k1tnw = k1w; + unsigned int k1bse = k1bs; + unsigned int k1tsw = k1sw; + unsigned int k1bne = k1b; + unsigned int k1tne = K1QK; + unsigned int k1bsw = neighborZ[k1sw]; + //////////////////////////////////////////////////////////////////////////////// + Distributions27 D; + if (isEvenTimestep==false) + { + D.f[dP00] = &DD[dP00 * numberOfLBnodes]; + D.f[dM00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00P] = &DD[d00P * numberOfLBnodes]; + D.f[d00M] = &DD[d00M * numberOfLBnodes]; + D.f[dPP0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dMM0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dP0P] = &DD[dP0P * numberOfLBnodes]; + D.f[dM0M] = &DD[dM0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dP0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dM0P * numberOfLBnodes]; + D.f[d0PP] = &DD[d0PP * numberOfLBnodes]; + D.f[d0MM] = &DD[d0MM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0PM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dPPP * numberOfLBnodes]; + D.f[dMMP] = &DD[dMMP * numberOfLBnodes]; + D.f[dPMP] = &DD[dPMP * numberOfLBnodes]; + D.f[dMPP] = &DD[dMPP * numberOfLBnodes]; + D.f[dPPM] = &DD[dPPM * numberOfLBnodes]; + D.f[dMMM] = &DD[dMMM * numberOfLBnodes]; + D.f[dPMM] = &DD[dPMM * numberOfLBnodes]; + D.f[dMPM] = &DD[dMPM * numberOfLBnodes]; + } + else + { + D.f[dM00] = &DD[dP00 * numberOfLBnodes]; + D.f[dP00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00M] = &DD[d00P * numberOfLBnodes]; + D.f[d00P] = &DD[d00M * numberOfLBnodes]; + D.f[dMM0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dPP0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dM0M] = &DD[dP0P * numberOfLBnodes]; + D.f[dP0P] = &DD[dM0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dP0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dM0P * numberOfLBnodes]; + D.f[d0MM] = &DD[d0PP * numberOfLBnodes]; + D.f[d0PP] = &DD[d0MM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0PM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dMMM * numberOfLBnodes]; + D.f[dMMP] = &DD[dPPM * numberOfLBnodes]; + D.f[dPMP] = &DD[dMPM * numberOfLBnodes]; + D.f[dMPP] = &DD[dPMM * numberOfLBnodes]; + D.f[dPPM] = &DD[dMMP * numberOfLBnodes]; + D.f[dMMM] = &DD[dPPP * numberOfLBnodes]; + D.f[dPMM] = &DD[dMPP * numberOfLBnodes]; + D.f[dMPM] = &DD[dPMP * numberOfLBnodes]; + } + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + 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[dP00])[k1e ]; + f1_E = (D.f[dM00])[k1w ]; + f1_S = (D.f[d0P0])[k1n ]; + f1_N = (D.f[d0M0])[k1s ]; + f1_B = (D.f[d00P])[k1t ]; + f1_T = (D.f[d00M])[k1b ]; + f1_SW = (D.f[dPP0])[k1ne ]; + f1_NE = (D.f[dMM0])[k1sw ]; + f1_NW = (D.f[dPM0])[k1se ]; + f1_SE = (D.f[dMP0])[k1nw ]; + f1_BW = (D.f[dP0P])[k1te ]; + f1_TE = (D.f[dM0M])[k1bw ]; + f1_TW = (D.f[dP0M])[k1be ]; + f1_BE = (D.f[dM0P])[k1tw ]; + f1_BS = (D.f[d0PP])[k1tn ]; + f1_TN = (D.f[d0MM])[k1bs ]; + f1_TS = (D.f[d0PM])[k1bn ]; + f1_BN = (D.f[d0MP])[k1ts ]; + f1_ZERO = (D.f[d000])[k1zero]; + f1_BSW = (D.f[dPPP])[k1tne ]; + f1_BNE = (D.f[dMMP])[k1tsw ]; + f1_BNW = (D.f[dPMP])[k1tse ]; + f1_BSE = (D.f[dMPP])[k1tnw ]; + f1_TSW = (D.f[dPPM])[k1bne ]; + f1_TNE = (D.f[dMMM])[k1bsw ]; + f1_TNW = (D.f[dPMM])[k1bse ]; + f1_TSE = (D.f[dMPM])[k1bnw ]; + + //////////////////////////////////////////////////////////////////////////////// + real vx1, vx2, vx3; + 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); + + + 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); + + 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 cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3); + ////////////////////////////////////////////////////////////////////////// + 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; + + //drho1 = (drho1 + rhoBC[k])/2.f; + drho1 = drho1 - rhoBC[k]; + + __syncthreads(); + + (D.f[dP00])[ke ] = c2o27* (rhoBC[k]+c3o1*(-vx1 )+c9o2*(-vx1 )*(-vx1 )-cu_sq); + (D.f[dM00])[kw ] = c2o27* (rhoBC[k]+c3o1*( vx1 )+c9o2*( vx1 )*( vx1 )-cu_sq); + (D.f[d0P0])[kn ] = c2o27* (rhoBC[k]+c3o1*( -vx2 )+c9o2*( -vx2 )*( -vx2 )-cu_sq); + (D.f[d0M0])[ks ] = c2o27* (rhoBC[k]+c3o1*( vx2 )+c9o2*( vx2 )*( vx2 )-cu_sq); + (D.f[d00P])[kt ] = c2o27* (rhoBC[k]+c3o1*( -vx3)+c9o2*( -vx3)*( -vx3)-cu_sq); + (D.f[d00M])[kb ] = c2o27* (rhoBC[k]+c3o1*( vx3)+c9o2*( vx3)*( vx3)-cu_sq); + (D.f[dPP0])[kne ] = f1_SW -c1o54*drho1; // c1o100; // zero; // + (D.f[dMM0])[ksw ] = f1_NE -c1o54*drho1; // c1o100; // zero; // + (D.f[dPM0])[kse ] = f1_NW -c1o54*drho1; // c1o100; // zero; // + (D.f[dMP0])[knw ] = f1_SE -c1o54*drho1; // c1o100; // zero; // + (D.f[dP0P])[kte ] = f1_BW -c1o54*drho1; // c1o100; // zero; // + (D.f[dM0M])[kbw ] = f1_TE -c1o54*drho1; // c1o100; // zero; // + (D.f[dP0M])[kbe ] = f1_TW -c1o54*drho1; // c1o100; // zero; // + (D.f[dM0P])[ktw ] = f1_BE -c1o54*drho1; // c1o100; // zero; // + (D.f[d0PP])[ktn ] = f1_BS -c1o54*drho1; // c1o100; // zero; // + (D.f[d0MM])[kbs ] = f1_TN -c1o54*drho1; // c1o100; // zero; // + (D.f[d0PM])[kbn ] = f1_TS -c1o54*drho1; // c1o100; // zero; // + (D.f[d0MP])[kts ] = f1_BN -c1o54*drho1; // c1o100; // zero; // + (D.f[d000])[kzero] = f1_ZERO-c8o27*drho1; // c1o100; // zero; // + (D.f[dPPP])[ktne ] = f1_BSW -c1o216*drho1; // c1o100; // zero; // + (D.f[dMMP])[ktsw ] = f1_BNE -c1o216*drho1; // c1o100; // zero; // + (D.f[dPMP])[ktse ] = f1_BNW -c1o216*drho1; // c1o100; // zero; // + (D.f[dMPP])[ktnw ] = f1_BSE -c1o216*drho1; // c1o100; // zero; // + (D.f[dPPM])[kbne ] = f1_TSW -c1o216*drho1; // c1o100; // zero; // + (D.f[dMMM])[kbsw ] = f1_TNE -c1o216*drho1; // c1o100; // zero; // + (D.f[dPMM])[kbse ] = f1_TNW -c1o216*drho1; // c1o100; // zero; // + (D.f[dMPM])[kbnw ] = f1_TSE -c1o216*drho1; // c1o100; // zero; // + } +} +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +////////////////////////////////////////////////////////////////////////// +__global__ void QPressDevice27_IntBB( + real* rho, + real* DD, + int* k_Q, + real* QQ, + unsigned int numberOfBCnodes, + real om1, + unsigned int* neighborX, + unsigned int* neighborY, + unsigned int* neighborZ, + unsigned long long numberOfLBnodes, + bool isEvenTimestep) +{ + Distributions27 D; + if (isEvenTimestep==true) + { + D.f[dP00] = &DD[dP00 * numberOfLBnodes]; + D.f[dM00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00P] = &DD[d00P * numberOfLBnodes]; + D.f[d00M] = &DD[d00M * numberOfLBnodes]; + D.f[dPP0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dMM0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dP0P] = &DD[dP0P * numberOfLBnodes]; + D.f[dM0M] = &DD[dM0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dP0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dM0P * numberOfLBnodes]; + D.f[d0PP] = &DD[d0PP * numberOfLBnodes]; + D.f[d0MM] = &DD[d0MM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0PM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dPPP * numberOfLBnodes]; + D.f[dMMP] = &DD[dMMP * numberOfLBnodes]; + D.f[dPMP] = &DD[dPMP * numberOfLBnodes]; + D.f[dMPP] = &DD[dMPP * numberOfLBnodes]; + D.f[dPPM] = &DD[dPPM * numberOfLBnodes]; + D.f[dMMM] = &DD[dMMM * numberOfLBnodes]; + D.f[dPMM] = &DD[dPMM * numberOfLBnodes]; + D.f[dMPM] = &DD[dMPM * numberOfLBnodes]; + } + else + { + D.f[dM00] = &DD[dP00 * numberOfLBnodes]; + D.f[dP00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00M] = &DD[d00P * numberOfLBnodes]; + D.f[d00P] = &DD[d00M * numberOfLBnodes]; + D.f[dMM0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dPP0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dM0M] = &DD[dP0P * numberOfLBnodes]; + D.f[dP0P] = &DD[dM0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dP0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dM0P * numberOfLBnodes]; + D.f[d0MM] = &DD[d0PP * numberOfLBnodes]; + D.f[d0PP] = &DD[d0MM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0PM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dMMM * numberOfLBnodes]; + D.f[dMMP] = &DD[dPPM * numberOfLBnodes]; + D.f[dPMP] = &DD[dMPM * numberOfLBnodes]; + D.f[dMPP] = &DD[dPMM * numberOfLBnodes]; + D.f[dPPM] = &DD[dMMP * numberOfLBnodes]; + D.f[dMMM] = &DD[dPPP * numberOfLBnodes]; + D.f[dPMM] = &DD[dMPP * numberOfLBnodes]; + D.f[dMPM] = &DD[dPMP * numberOfLBnodes]; + } + //////////////////////////////////////////////////////////////////////////////// + const unsigned x = threadIdx.x; // Globaler x-Index + const unsigned y = blockIdx.x; // Globaler y-Index + const unsigned z = blockIdx.y; // Globaler z-Index + + const unsigned nx = blockDim.x; + const unsigned ny = gridDim.x; + + const unsigned k = nx*(ny*z + y) + x; + ////////////////////////////////////////////////////////////////////////// + + if(k < numberOfBCnodes) + { + //////////////////////////////////////////////////////////////////////////////// + //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) + //////////////////////////////////////////////////////////////////////////////// + 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[dP00 * numberOfBCnodes]; + q_dirW = &QQ[dM00 * numberOfBCnodes]; + q_dirN = &QQ[d0P0 * numberOfBCnodes]; + q_dirS = &QQ[d0M0 * numberOfBCnodes]; + q_dirT = &QQ[d00P * numberOfBCnodes]; + q_dirB = &QQ[d00M * numberOfBCnodes]; + q_dirNE = &QQ[dPP0 * numberOfBCnodes]; + q_dirSW = &QQ[dMM0 * numberOfBCnodes]; + q_dirSE = &QQ[dPM0 * numberOfBCnodes]; + q_dirNW = &QQ[dMP0 * numberOfBCnodes]; + q_dirTE = &QQ[dP0P * numberOfBCnodes]; + q_dirBW = &QQ[dM0M * numberOfBCnodes]; + q_dirBE = &QQ[dP0M * numberOfBCnodes]; + q_dirTW = &QQ[dM0P * numberOfBCnodes]; + q_dirTN = &QQ[d0PP * numberOfBCnodes]; + q_dirBS = &QQ[d0MM * numberOfBCnodes]; + q_dirBN = &QQ[d0PM * numberOfBCnodes]; + q_dirTS = &QQ[d0MP * numberOfBCnodes]; + q_dirTNE = &QQ[dPPP * numberOfBCnodes]; + q_dirTSW = &QQ[dMMP * numberOfBCnodes]; + q_dirTSE = &QQ[dPMP * numberOfBCnodes]; + q_dirTNW = &QQ[dMPP * numberOfBCnodes]; + q_dirBNE = &QQ[dPPM * numberOfBCnodes]; + q_dirBSW = &QQ[dMMM * numberOfBCnodes]; + q_dirBSE = &QQ[dPMM * numberOfBCnodes]; + q_dirBNW = &QQ[dMPM * 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]; + 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 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[dP00])[ke ]; + f_E = (D.f[dM00])[kw ]; + f_S = (D.f[d0P0])[kn ]; + f_N = (D.f[d0M0])[ks ]; + f_B = (D.f[d00P])[kt ]; + f_T = (D.f[d00M])[kb ]; + f_SW = (D.f[dPP0])[kne ]; + f_NE = (D.f[dMM0])[ksw ]; + f_NW = (D.f[dPM0])[kse ]; + f_SE = (D.f[dMP0])[knw ]; + f_BW = (D.f[dP0P])[kte ]; + f_TE = (D.f[dM0M])[kbw ]; + f_TW = (D.f[dP0M])[kbe ]; + f_BE = (D.f[dM0P])[ktw ]; + f_BS = (D.f[d0PP])[ktn ]; + f_TN = (D.f[d0MM])[kbs ]; + f_TS = (D.f[d0PM])[kbn ]; + f_BN = (D.f[d0MP])[kts ]; + f_BSW = (D.f[dPPP])[ktne ]; + f_BNE = (D.f[dMMP])[ktsw ]; + f_BNW = (D.f[dPMP])[ktse ]; + f_BSE = (D.f[dMPP])[ktnw ]; + f_TSW = (D.f[dPPM])[kbne ]; + f_TNE = (D.f[dMMM])[kbsw ]; + f_TNW = (D.f[dPMM])[kbse ]; + f_TSE = (D.f[dMPM])[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[d000])[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); + + + 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 cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3); + + ////////////////////////////////////////////////////////////////////////// + if (isEvenTimestep==false) + { + D.f[dP00] = &DD[dP00 * numberOfLBnodes]; + D.f[dM00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00P] = &DD[d00P * numberOfLBnodes]; + D.f[d00M] = &DD[d00M * numberOfLBnodes]; + D.f[dPP0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dMM0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dP0P] = &DD[dP0P * numberOfLBnodes]; + D.f[dM0M] = &DD[dM0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dP0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dM0P * numberOfLBnodes]; + D.f[d0PP] = &DD[d0PP * numberOfLBnodes]; + D.f[d0MM] = &DD[d0MM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0PM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dPPP * numberOfLBnodes]; + D.f[dMMP] = &DD[dMMP * numberOfLBnodes]; + D.f[dPMP] = &DD[dPMP * numberOfLBnodes]; + D.f[dMPP] = &DD[dMPP * numberOfLBnodes]; + D.f[dPPM] = &DD[dPPM * numberOfLBnodes]; + D.f[dMMM] = &DD[dMMM * numberOfLBnodes]; + D.f[dPMM] = &DD[dPMM * numberOfLBnodes]; + D.f[dMPM] = &DD[dMPM * numberOfLBnodes]; + } + else + { + D.f[dM00] = &DD[dP00 * numberOfLBnodes]; + D.f[dP00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00M] = &DD[d00P * numberOfLBnodes]; + D.f[d00P] = &DD[d00M * numberOfLBnodes]; + D.f[dMM0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dPP0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dM0M] = &DD[dP0P * numberOfLBnodes]; + D.f[dP0P] = &DD[dM0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dP0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dM0P * numberOfLBnodes]; + D.f[d0MM] = &DD[d0PP * numberOfLBnodes]; + D.f[d0PP] = &DD[d0MM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0PM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dMMM * numberOfLBnodes]; + D.f[dMMP] = &DD[dPPM * numberOfLBnodes]; + D.f[dPMP] = &DD[dMPM * numberOfLBnodes]; + D.f[dMPP] = &DD[dPMM * numberOfLBnodes]; + D.f[dPPM] = &DD[dMMP * numberOfLBnodes]; + D.f[dMMM] = &DD[dPPP * numberOfLBnodes]; + D.f[dPMM] = &DD[dMPP * numberOfLBnodes]; + D.f[dMPM] = &DD[dPMP * numberOfLBnodes]; + } + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //Test + //(D.f[d000])[k]=c1o10; + real rhoDiff = drho - rho[k]; + real VeloX = vx1; + real VeloY = vx2; + real VeloZ = vx3; + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + q = q_dirE[k]; + if (q>=c0o1 && q<=c1o1) + { + feq=c2o27* (drho+c9o2*( vx1 )*( vx1 )-cu_sq); + (D.f[dM00])[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[dP00])[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[d0M0])[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[d0P0])[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[d00M])[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[d00P])[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[dMM0])[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[dPP0])[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[dMP0])[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[dPM0])[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[dM0M])[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[dP0P])[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[dM0P])[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[dP0M])[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[d0MM])[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[d0PP])[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[d0MP])[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[d0PM])[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[dMMM])[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[dPPP])[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[dMMP])[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[dPPM])[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[dMPM])[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[dPMP])[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[dMPP])[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[dPMM])[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/core/GPU/Random.cu similarity index 100% rename from src/gpu/VirtualFluids_GPU/GPU/Random.cu rename to src/gpu/core/GPU/Random.cu diff --git a/src/gpu/core/GPU/SchlafferBCs27.cu b/src/gpu/core/GPU/SchlafferBCs27.cu new file mode 100644 index 0000000000000000000000000000000000000000..b031d25bd252b8405b75c0f07afe07a16ce93ee2 --- /dev/null +++ b/src/gpu/core/GPU/SchlafferBCs27.cu @@ -0,0 +1,590 @@ +/* Device code */ +#include "LBM/LB.h" +#include "lbm/constants/D3Q27.h" +#include <basics/constants/NumericConstants.h> + +using namespace vf::basics::constant; +using namespace vf::lbm::dir; + +// TODO: https://git.rz.tu-bs.de/irmb/VirtualFluids_dev/-/issues/29 +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +__global__ void PressSchlaff27(real* rhoBC, + real* DD, + real* vx0, + real* vy0, + real* vz0, + real* deltaVz0, + int* k_Q, + int* k_N, + int numberOfBCnodes, + real om1, + unsigned int* neighborX, + unsigned int* neighborY, + unsigned int* neighborZ, + unsigned long long numberOfLBnodes, + bool isEvenTimestep) +{ + //////////////////////////////////////////////////////////////////////////////// + const unsigned x = threadIdx.x; // Globaler x-Index + const unsigned y = blockIdx.x; // Globaler y-Index + const unsigned z = blockIdx.y; // Globaler z-Index + + const unsigned nx = blockDim.x; + const unsigned ny = gridDim.x; + + const unsigned k = nx*(ny*z + y) + x; + ////////////////////////////////////////////////////////////////////////// + + if(k<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]; + 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]; + //////////////////////////////////////////////////////////////////////////////// + Distributions27 D; + if (isEvenTimestep==true) + { + D.f[dP00] = &DD[dP00 * numberOfLBnodes]; + D.f[dM00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00P] = &DD[d00P * numberOfLBnodes]; + D.f[d00M] = &DD[d00M * numberOfLBnodes]; + D.f[dPP0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dMM0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dP0P] = &DD[dP0P * numberOfLBnodes]; + D.f[dM0M] = &DD[dM0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dP0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dM0P * numberOfLBnodes]; + D.f[d0PP] = &DD[d0PP * numberOfLBnodes]; + D.f[d0MM] = &DD[d0MM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0PM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dPPP * numberOfLBnodes]; + D.f[dMMP] = &DD[dMMP * numberOfLBnodes]; + D.f[dPMP] = &DD[dPMP * numberOfLBnodes]; + D.f[dMPP] = &DD[dMPP * numberOfLBnodes]; + D.f[dPPM] = &DD[dPPM * numberOfLBnodes]; + D.f[dMMM] = &DD[dMMM * numberOfLBnodes]; + D.f[dPMM] = &DD[dPMM * numberOfLBnodes]; + D.f[dMPM] = &DD[dMPM * numberOfLBnodes]; + } + else + { + D.f[dM00] = &DD[dP00 * numberOfLBnodes]; + D.f[dP00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00M] = &DD[d00P * numberOfLBnodes]; + D.f[d00P] = &DD[d00M * numberOfLBnodes]; + D.f[dMM0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dPP0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dM0M] = &DD[dP0P * numberOfLBnodes]; + D.f[dP0P] = &DD[dM0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dP0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dM0P * numberOfLBnodes]; + D.f[d0MM] = &DD[d0PP * numberOfLBnodes]; + D.f[d0PP] = &DD[d0MM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0PM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dMMM * numberOfLBnodes]; + D.f[dMMP] = &DD[dPPM * numberOfLBnodes]; + D.f[dPMP] = &DD[dMPM * numberOfLBnodes]; + D.f[dMPP] = &DD[dPMM * numberOfLBnodes]; + D.f[dPPM] = &DD[dMMP * numberOfLBnodes]; + D.f[dMMM] = &DD[dPPP * numberOfLBnodes]; + D.f[dPMM] = &DD[dMPP * numberOfLBnodes]; + D.f[dMPM] = &DD[dPMP * numberOfLBnodes]; + } + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + 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[dP00])[ke ]; + f1_W = (D.f[dM00])[kw ]; + f1_N = (D.f[d0P0])[kn ]; + f1_S = (D.f[d0M0])[ks ]; + f1_T = (D.f[d00P])[kt ]; + f1_B = (D.f[d00M])[kb ]; + f1_NE = (D.f[dPP0])[kne ]; + f1_SW = (D.f[dMM0])[ksw ]; + f1_SE = (D.f[dPM0])[kse ]; + f1_NW = (D.f[dMP0])[knw ]; + f1_TE = (D.f[dP0P])[kte ]; + f1_BW = (D.f[dM0M])[kbw ]; + f1_BE = (D.f[dP0M])[kbe ]; + f1_TW = (D.f[dM0P])[ktw ]; + f1_TN = (D.f[d0PP])[ktn ]; + f1_BS = (D.f[d0MM])[kbs ]; + f1_BN = (D.f[d0PM])[kbn ]; + f1_TS = (D.f[d0MP])[kts ]; + f1_ZERO = (D.f[d000])[kzero]; + f1_TNE = (D.f[dPPP])[ktne ]; + f1_TSW = (D.f[dMMP])[ktsw ]; + f1_TSE = (D.f[dPMP])[ktse ]; + f1_TNW = (D.f[dMPP])[ktnw ]; + f1_BNE = (D.f[dPPM])[kbne ]; + f1_BSW = (D.f[dMMM])[kbsw ]; + f1_BSE = (D.f[dPMM])[kbse ]; + f1_BNW = (D.f[dMPM])[kbnw ]; + ////////////////////////////////////////////////////////////////////////// + real cs = c1o1/sqrt(c3o1); + real csp1 = cs + c1o1; + real csp1Sq = (c1o1 + cs)*(c1o1 + cs); + real relFac = c21o20; // 0.9...1.0 + ////////////////////////////////////////////////////////////////////////// + // For adaption: + // Pressure limits with rho0 = 1: + // 2.2e-10 ~ 0.94 dB + // 6.2e-10 ~ 9.9 dB + // 6.2e-9 ~ 29.9 dB + // 2.0e-7 ~ 60.1 dB /Vel + // 2.0e-5 ~ 100.1 dB /press + const double dPlimit = c0p0000002; + const double dRlimit = dPlimit * c3o1;// three = c1oCs2; + const double uSlimit = dRlimit * c1o1;// one = c1oRho0; + ////////////////////////////////////////////////////////////////////////// + real VX = vx0[k]; + real VY = vy0[k]; + real VZ = vz0[k]; + ////////////////////////////////////////////////////////////////////////// + + real temp = c2o1*(f1_TNE + f1_TSE + f1_TSW + f1_TNW) + c2o1*(f1_TE + f1_TW + f1_TN + f1_TS) + f1_NE + f1_SW + f1_SE + f1_NW + c2o1*f1_T + f1_E + f1_W + f1_N + f1_S + f1_ZERO; + + real vs_z = relFac * (VZ+cs) * ( csp1 - sqrt(csp1Sq + c2o1*VZ - c2o1*temp) ); //old = relFac * cs * ( csp1 - sqrt(csp1Sq + two*VZ - two*temp) ); + + // 3. Compute density of compensated velocity: + real tempDeltaV = deltaVz0[k]; + real rholoc = temp - c1o1 * (VZ + tempDeltaV + vs_z); + + // 4. Compute density deviation: + real drho = rholoc - rhoBC[k]; + + // 5. Adapt Speed: + real dv = tempDeltaV + vs_z; + + if( drho > dRlimit) { + VZ += dv + uSlimit; + tempDeltaV += uSlimit; + } + else if( drho < -dRlimit) { + VZ += dv - uSlimit; + tempDeltaV -= uSlimit; + } + else { + VZ += dv + drho; + tempDeltaV += drho; + } + + //VZ = vz0[k] + vs_z; + // 6. Set unknown distributions: + f1_B = f1_T - c4o9 * VZ; + f1_BW = f1_TE - c1o9 * (VX + VZ); + f1_BE = f1_TW + c1o9 * (VX - VZ); + f1_BS = f1_TN - c1o9 * (VY + VZ); + f1_BN = f1_TS + c1o9 * (VY - VZ); + f1_BSW = f1_TNE - c1o36 * (VX + VY + VZ); + f1_BNW = f1_TSE - c1o36 * (VX - VY + VZ); + f1_BNE = f1_TSW + c1o36 * (VX + VY - VZ); + f1_BSE = f1_TNW + c1o36 * (VX - VY - VZ); + + deltaVz0[k] = tempDeltaV; + + (D.f[d00M])[kb ] = f1_B ; + (D.f[dM0M])[kbw ] = f1_BW ; + (D.f[dP0M])[kbe ] = f1_BE ; + (D.f[d0MM])[kbs ] = f1_BS ; + (D.f[d0PM])[kbn ] = f1_BN ; + (D.f[dPPM])[kbne ] = f1_BNE ; + (D.f[dMMM])[kbsw ] = f1_BSW ; + (D.f[dPMM])[kbse ] = f1_BSE ; + (D.f[dMPM])[kbnw ] = f1_BNW ; + } +} +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +// TODO: https://git.rz.tu-bs.de/irmb/VirtualFluids_dev/-/issues/29 +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +__global__ void VelSchlaff27( int t, + real* DD, + real* vz0, + real* deltaVz0, + int* k_Q, + int* k_N, + int numberOfBCnodes, + real om1, + unsigned int* neighborX, + unsigned int* neighborY, + unsigned int* neighborZ, + unsigned long long numberOfLBnodes, + bool isEvenTimestep) +{ + //////////////////////////////////////////////////////////////////////////////// + const unsigned x = threadIdx.x; // Globaler x-Index + const unsigned y = blockIdx.x; // Globaler y-Index + const unsigned z = blockIdx.y; // Globaler z-Index + + const unsigned nx = blockDim.x; + const unsigned ny = gridDim.x; + + const unsigned k = nx*(ny*z + y) + x; + ////////////////////////////////////////////////////////////////////////// + + if(k<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]; + 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]; + //////////////////////////////////////////////////////////////////////////////// + Distributions27 D; + if (isEvenTimestep==true) + { + D.f[dP00] = &DD[dP00 * numberOfLBnodes]; + D.f[dM00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00P] = &DD[d00P * numberOfLBnodes]; + D.f[d00M] = &DD[d00M * numberOfLBnodes]; + D.f[dPP0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dMM0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dP0P] = &DD[dP0P * numberOfLBnodes]; + D.f[dM0M] = &DD[dM0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dP0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dM0P * numberOfLBnodes]; + D.f[d0PP] = &DD[d0PP * numberOfLBnodes]; + D.f[d0MM] = &DD[d0MM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0PM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dPPP * numberOfLBnodes]; + D.f[dMMP] = &DD[dMMP * numberOfLBnodes]; + D.f[dPMP] = &DD[dPMP * numberOfLBnodes]; + D.f[dMPP] = &DD[dMPP * numberOfLBnodes]; + D.f[dPPM] = &DD[dPPM * numberOfLBnodes]; + D.f[dMMM] = &DD[dMMM * numberOfLBnodes]; + D.f[dPMM] = &DD[dPMM * numberOfLBnodes]; + D.f[dMPM] = &DD[dMPM * numberOfLBnodes]; + } + else + { + D.f[dM00] = &DD[dP00 * numberOfLBnodes]; + D.f[dP00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00M] = &DD[d00P * numberOfLBnodes]; + D.f[d00P] = &DD[d00M * numberOfLBnodes]; + D.f[dMM0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dPP0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dM0M] = &DD[dP0P * numberOfLBnodes]; + D.f[dP0P] = &DD[dM0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dP0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dM0P * numberOfLBnodes]; + D.f[d0MM] = &DD[d0PP * numberOfLBnodes]; + D.f[d0PP] = &DD[d0MM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0PM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dMMM * numberOfLBnodes]; + D.f[dMMP] = &DD[dPPM * numberOfLBnodes]; + D.f[dPMP] = &DD[dMPM * numberOfLBnodes]; + D.f[dMPP] = &DD[dPMM * numberOfLBnodes]; + D.f[dPPM] = &DD[dMMP * numberOfLBnodes]; + D.f[dMMM] = &DD[dPPP * numberOfLBnodes]; + D.f[dPMM] = &DD[dMPP * numberOfLBnodes]; + D.f[dMPM] = &DD[dPMP * numberOfLBnodes]; + } + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + 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[dP00])[ke ]; + f1_W = (D.f[dM00])[kw ]; + f1_N = (D.f[d0P0])[kn ]; + f1_S = (D.f[d0M0])[ks ]; + f1_T = (D.f[d00P])[kt ]; + f1_B = (D.f[d00M])[kb ]; + f1_NE = (D.f[dPP0])[kne ]; + f1_SW = (D.f[dMM0])[ksw ]; + f1_SE = (D.f[dPM0])[kse ]; + f1_NW = (D.f[dMP0])[knw ]; + f1_TE = (D.f[dP0P])[kte ]; + f1_BW = (D.f[dM0M])[kbw ]; + f1_BE = (D.f[dP0M])[kbe ]; + f1_TW = (D.f[dM0P])[ktw ]; + f1_TN = (D.f[d0PP])[ktn ]; + f1_BS = (D.f[d0MM])[kbs ]; + f1_BN = (D.f[d0PM])[kbn ]; + f1_TS = (D.f[d0MP])[kts ]; + f1_ZERO = (D.f[d000])[kzero]; + f1_TNE = (D.f[dPPP])[ktne ]; + f1_TSW = (D.f[dMMP])[ktsw ]; + f1_TSE = (D.f[dPMP])[ktse ]; + f1_TNW = (D.f[dMPP])[ktnw ]; + f1_BNE = (D.f[dPPM])[kbne ]; + f1_BSW = (D.f[dMMM])[kbsw ]; + f1_BSE = (D.f[dPMM])[kbse ]; + f1_BNW = (D.f[dMPM])[kbnw ]; + //f1_W = (D.f[dP00])[ke ]; + //f1_E = (D.f[dM00])[kw ]; + //f1_S = (D.f[d0P0])[kn ]; + //f1_N = (D.f[d0M0])[ks ]; + //f1_B = (D.f[d00P])[kt ]; + //f1_T = (D.f[d00M])[kb ]; + //f1_SW = (D.f[dPP0])[kne ]; + //f1_NE = (D.f[dMM0])[ksw ]; + //f1_NW = (D.f[dPM0])[kse ]; + //f1_SE = (D.f[dMP0])[knw ]; + //f1_BW = (D.f[dP0P])[kte ]; + //f1_TE = (D.f[dM0M])[kbw ]; + //f1_TW = (D.f[dP0M])[kbe ]; + //f1_BE = (D.f[dM0P])[ktw ]; + //f1_BS = (D.f[d0PP])[ktn ]; + //f1_TN = (D.f[d0MM])[kbs ]; + //f1_TS = (D.f[d0PM])[kbn ]; + //f1_BN = (D.f[d0MP])[kts ]; + //f1_ZERO = (D.f[d000])[kzero]; + //f1_BSW = (D.f[dPPP])[ktne ]; + //f1_BNE = (D.f[dMMP])[ktsw ]; + //f1_BNW = (D.f[dPMP])[ktse ]; + //f1_BSE = (D.f[dMPP])[ktnw ]; + //f1_TSW = (D.f[dPPM])[kbne ]; + //f1_TNE = (D.f[dMMM])[kbsw ]; + //f1_TNW = (D.f[dPMM])[kbse ]; + //f1_TSE = (D.f[dMPM])[kbnw ]; + ////////////////////////////////////////////////////////////////////////// + real cs = c1o1/sqrt(c3o1); + real csp1 = cs + c1o1; + real csp1Sq = (c1o1 + cs)*(c1o1 + cs); + real relFac = c19o20; // 0.9...1.0 + ////////////////////////////////////////////////////////////////////////// + // For adaption: + // Pressure limits with rho0 = 1: + // 2.2e-10 ~ 0.94 dB + // 6.2e-10 ~ 9.9 dB + // 6.2e-9 ~ 29.9 dB + // 2.0e-7 ~ 60.1 dB /Vel + // 2.0e-5 ~ 100.1 dB /press + real uSlimit = c0p0000002; + ////////////////////////////////////////////////////////////////////////// + real VX = c0o1; + real VY = c0o1; + real VZ = vz0[k]; + ////////////////////////////////////////////////////////////////////////// + real temp = f1_ZERO + f1_E + f1_W + f1_N + f1_S + f1_NE + f1_SW + f1_SE + f1_NW + c2o1*(f1_B + f1_BE + f1_BW + f1_BN + f1_BS + f1_BNE + f1_BSE + f1_BSW + f1_BNW); + //real temp = f1_ZERO + f1_E + f1_W + f1_N + f1_S + f1_NE + f1_SW + f1_SE + f1_NW + two*(f1_T + f1_TE + f1_TW + f1_TN + f1_TS + f1_TNE + f1_TSE + f1_TSW + f1_TNW); + ////real temp2= c1mcsSq + two*VZ - two*temp; + real vs_z; + //if (t < 5) + //{ + // vs_z = zero; + //} + //else + //{ + vs_z = relFac * (cs-VZ) * ( sqrt(csp1Sq - c2o1*VZ - c2o1*temp) - csp1 ); //old = relFac * cs * ( sqrt(csp1Sq - two*VZ - two*temp) - csp1 ); + //} + + // 3. Adapt Speed: + real tempDeltaV = deltaVz0[k]; + real dv = tempDeltaV + vs_z; + + if( dv > uSlimit) { + VZ += dv - uSlimit; + tempDeltaV -= uSlimit; + } + else if( dv < -uSlimit) { + VZ += dv + uSlimit; + tempDeltaV += uSlimit; + } + else { + tempDeltaV = -vs_z; + } + + //VZ = vz0[k]+vs_z; + // 4. Set unknown distributions: + //f1_B = f1_T - c4o9 * VZ; + //f1_BW = f1_TE - c1o9 * (VX + VZ); + //f1_BE = f1_TW + c1o9 * (VX - VZ); + //f1_BS = f1_TN - c1o9 * (VY + VZ); + //f1_BN = f1_TS + c1o9 * (VY - VZ); + //f1_BSW = f1_TNE - c1o36 * (VX + VY + VZ); + //f1_BNW = f1_TSE - c1o36 * (VX - VY + VZ); + //f1_BNE = f1_TSW + c1o36 * (VX + VY - VZ); + //f1_BSE = f1_TNW + c1o36 * (VX - VY - VZ); + + f1_T = f1_B + c4o9 * VZ; + f1_TE = f1_BW + c1o9 * (VX + VZ); + f1_TW = f1_BE - c1o9 * (VX - VZ); + f1_TN = f1_BS + c1o9 * (VY + VZ); + f1_TS = f1_BN - c1o9 * (VY - VZ); + f1_TNE = f1_BSW + c1o36 * (VX + VY + VZ); + f1_TSE = f1_BNW + c1o36 * (VX - VY + VZ); + f1_TSW = f1_BNE - c1o36 * (VX + VY - VZ); + f1_TNW = f1_BSE - c1o36 * (VX - VY - VZ); + + deltaVz0[k] = tempDeltaV; + (D.f[d00P])[kt ] = f1_T ; + (D.f[dP0P])[kte ] = f1_TE ; + (D.f[dM0P])[ktw ] = f1_TW ; + (D.f[d0PP])[ktn ] = f1_TN ; + (D.f[d0MP])[kts ] = f1_TS ; + (D.f[dPPP])[ktne ] = f1_TNE; + (D.f[dMMP])[ktsw ] = f1_TSW; + (D.f[dPMP])[ktse ] = f1_TSE; + (D.f[dMPP])[ktnw ] = f1_TNW; + + //(D.f[d00M])[kb ] = f1_B ; + //(D.f[dM0M])[kbw ] = f1_BW ; + //(D.f[dP0M])[kbe ] = f1_BE ; + //(D.f[d0MM])[kbs ] = f1_BS ; + //(D.f[d0PM])[kbn ] = f1_BN ; + //(D.f[dPPM])[kbne ] = f1_BNE ; + //(D.f[dMMM])[kbsw ] = f1_BSW ; + //(D.f[dPMM])[kbse ] = f1_BSE ; + //(D.f[dMPM])[kbnw ] = f1_BNW ; + + + //(D.f[d00P])[kt ] = f1_B ; + //(D.f[dP0P])[kte ] = f1_BW ; + //(D.f[dM0P])[ktw ] = f1_BE ; + //(D.f[d0PP])[ktn ] = f1_BS ; + //(D.f[d0MP])[kts ] = f1_BN ; + //(D.f[dPPP])[ktne ] = f1_BSW; + //(D.f[dMMP])[ktsw ] = f1_BNE; + //(D.f[dPMP])[ktse ] = f1_BNW; + //(D.f[dMPP])[ktnw ] = f1_BSE; + + //(D.f[dP00])[ke ] = f1_W -c2over27*drho1; + //(D.f[dM00])[kw ] = f1_E -c2over27*drho1; + //(D.f[d0P0])[kn ] = f1_S -c2over27*drho1; + //(D.f[d0M0])[ks ] = f1_N -c2over27*drho1; + //(D.f[d00P])[kt ] = f1_B -c2over27*drho1; + //(D.f[d00M])[kb ] = f1_T -c2over27*drho1; + //(D.f[dPP0])[kne ] = f1_SW -c1over54*drho1; + //(D.f[dMM0])[ksw ] = f1_NE -c1over54*drho1; + //(D.f[dPM0])[kse ] = f1_NW -c1over54*drho1; + //(D.f[dMP0])[knw ] = f1_SE -c1over54*drho1; + //(D.f[dP0P])[kte ] = f1_BW -c1over54*drho1; + //(D.f[dM0M])[kbw ] = f1_TE -c1over54*drho1; + //(D.f[dP0M])[kbe ] = f1_TW -c1over54*drho1; + //(D.f[dM0P])[ktw ] = f1_BE -c1over54*drho1; + //(D.f[d0PP])[ktn ] = f1_BS -c1over54*drho1; + //(D.f[d0MM])[kbs ] = f1_TN -c1over54*drho1; + //(D.f[d0PM])[kbn ] = f1_TS -c1over54*drho1; + //(D.f[d0MP])[kts ] = f1_BN -c1over54*drho1; + //(D.f[d000])[kzero] = f1_ZERO-c8over27*drho1; + //(D.f[dPPP])[ktne ] = f1_BSW -c1over216*drho1; + //(D.f[dMMP])[ktsw ] = f1_BNE -c1over216*drho1; + //(D.f[dPMP])[ktse ] = f1_BNW -c1over216*drho1; + //(D.f[dMPP])[ktnw ] = f1_BSE -c1over216*drho1; + //(D.f[dPPM])[kbne ] = f1_TSW -c1over216*drho1; + //(D.f[dMMM])[kbsw ] = f1_TNE -c1over216*drho1; + //(D.f[dPMM])[kbse ] = f1_TNW -c1over216*drho1; + //(D.f[dMPM])[kbnw ] = f1_TSE -c1over216*drho1; + } +} +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + + + + diff --git a/src/gpu/core/GPU/SetForcing27.cu b/src/gpu/core/GPU/SetForcing27.cu new file mode 100644 index 0000000000000000000000000000000000000000..d356084fa0d7f1fc7afb94b784c1b45206a9bf98 --- /dev/null +++ b/src/gpu/core/GPU/SetForcing27.cu @@ -0,0 +1,174 @@ +/* Device code */ +#include "LBM/LB.h" +#include "lbm/constants/D3Q27.h" +#include <basics/constants/NumericConstants.h> + +using namespace vf::basics::constant; +using namespace vf::lbm::dir; + +//////////////////////////////////////////////////////////////////////////////// +__global__ void GetVeloforForcing27( real* DD, + int* bcIndex, + int nonAtBC, + real* Vx, + real* Vy, + real* Vz, + unsigned int* neighborX, + unsigned int* neighborY, + unsigned int* neighborZ, + unsigned long long numberOfLBnodes, + bool isEvenTimestep) +{ + Distributions27 D; + if (isEvenTimestep==false) + { + D.f[dP00] = &DD[dP00 * numberOfLBnodes]; + D.f[dM00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00P] = &DD[d00P * numberOfLBnodes]; + D.f[d00M] = &DD[d00M * numberOfLBnodes]; + D.f[dPP0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dMM0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dP0P] = &DD[dP0P * numberOfLBnodes]; + D.f[dM0M] = &DD[dM0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dP0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dM0P * numberOfLBnodes]; + D.f[d0PP] = &DD[d0PP * numberOfLBnodes]; + D.f[d0MM] = &DD[d0MM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0PM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dPPP * numberOfLBnodes]; + D.f[dMMP] = &DD[dMMP * numberOfLBnodes]; + D.f[dPMP] = &DD[dPMP * numberOfLBnodes]; + D.f[dMPP] = &DD[dMPP * numberOfLBnodes]; + D.f[dPPM] = &DD[dPPM * numberOfLBnodes]; + D.f[dMMM] = &DD[dMMM * numberOfLBnodes]; + D.f[dPMM] = &DD[dPMM * numberOfLBnodes]; + D.f[dMPM] = &DD[dMPM * numberOfLBnodes]; + } + else + { + D.f[dM00] = &DD[dP00 * numberOfLBnodes]; + D.f[dP00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00M] = &DD[d00P * numberOfLBnodes]; + D.f[d00P] = &DD[d00M * numberOfLBnodes]; + D.f[dMM0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dPP0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dM0M] = &DD[dP0P * numberOfLBnodes]; + D.f[dP0P] = &DD[dM0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dP0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dM0P * numberOfLBnodes]; + D.f[d0MM] = &DD[d0PP * numberOfLBnodes]; + D.f[d0PP] = &DD[d0MM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0PM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dMMM * numberOfLBnodes]; + D.f[dMMP] = &DD[dPPM * numberOfLBnodes]; + D.f[dPMP] = &DD[dMPM * numberOfLBnodes]; + D.f[dMPP] = &DD[dPMM * numberOfLBnodes]; + D.f[dPPM] = &DD[dMMP * numberOfLBnodes]; + D.f[dMMM] = &DD[dPPP * numberOfLBnodes]; + D.f[dPMM] = &DD[dMPP * numberOfLBnodes]; + D.f[dMPM] = &DD[dPMP * numberOfLBnodes]; + } + //////////////////////////////////////////////////////////////////////////////// + const unsigned x = threadIdx.x; // Globaler x-Index + const unsigned y = blockIdx.x; // Globaler y-Index + const unsigned z = blockIdx.y; // Globaler z-Index + + const unsigned nx = blockDim.x; + const unsigned ny = gridDim.x; + + const unsigned k = nx*(ny*z + y) + x; + ////////////////////////////////////////////////////////////////////////// + if(k < nonAtBC) + { + //////////////////////////////////////////////////////////////////////////////// + //index + unsigned int KQK = bcIndex[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 mfcbb = (D.f[dP00])[ke ]; + real mfabb = (D.f[dM00])[kw ]; + real mfbcb = (D.f[d0P0])[kn ]; + real mfbab = (D.f[d0M0])[ks ]; + real mfbbc = (D.f[d00P])[kt ]; + real mfbba = (D.f[d00M])[kb ]; + real mfccb = (D.f[dPP0])[kne ]; + real mfaab = (D.f[dMM0])[ksw ]; + real mfcab = (D.f[dPM0])[kse ]; + real mfacb = (D.f[dMP0])[knw ]; + real mfcbc = (D.f[dP0P])[kte ]; + real mfaba = (D.f[dM0M])[kbw ]; + real mfcba = (D.f[dP0M])[kbe ]; + real mfabc = (D.f[dM0P])[ktw ]; + real mfbcc = (D.f[d0PP])[ktn ]; + real mfbaa = (D.f[d0MM])[kbs ]; + real mfbca = (D.f[d0PM])[kbn ]; + real mfbac = (D.f[d0MP])[kts ]; + real mfbbb = (D.f[d000])[kzero]; + real mfccc = (D.f[dPPP])[ktne ]; + real mfaac = (D.f[dMMP])[ktsw ]; + real mfcac = (D.f[dPMP])[ktse ]; + real mfacc = (D.f[dMPP])[ktnw ]; + real mfcca = (D.f[dPPM])[kbne ]; + real mfaaa = (D.f[dMMM])[kbsw ]; + real mfcaa = (D.f[dPMM])[kbse ]; + real mfaca = (D.f[dMPM])[kbnw ]; + //////////////////////////////////////////////////////////////////////////////////// + real rho = (mfccc+mfaaa + mfaca+mfcac + mfacc+mfcaa + mfaac+mfcca + + mfbac+mfbca + mfbaa+mfbcc + mfabc+mfcba + mfaba+mfcbc + mfacb+mfcab + mfaab+mfccb + + mfabb+mfcbb + mfbab+mfbcb + mfbba+mfbbc + mfbbb + c1o1);//!!!!Achtung + one + //////////////////////////////////////////////////////////////////////////////////// + real vx =((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfcaa-mfacc) + (mfcca-mfaac))) + + (((mfcba-mfabc) + (mfcbc-mfaba)) + ((mfcab-mfacb) + (mfccb-mfaab))) + + (mfcbb-mfabb))/ rho; + real vy =((((mfccc-mfaaa) + (mfaca-mfcac)) + ((mfacc-mfcaa) + (mfcca-mfaac))) + + (((mfbca-mfbac) + (mfbcc-mfbaa)) + ((mfacb-mfcab) + (mfccb-mfaab))) + + (mfbcb-mfbab)) / rho; + real vz =((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfacc-mfcaa) + (mfaac-mfcca))) + + (((mfbac-mfbca) + (mfbcc-mfbaa)) + ((mfabc-mfcba) + (mfcbc-mfaba))) + + (mfbbc-mfbba)) / rho; + //////////////////////////////////////////////////////////////////////////////////// + Vx[k] = vx; + Vy[k] = vy; + Vz[k] = vz; + //////////////////////////////////////////////////////////////////////////////////// + } +} + diff --git a/src/gpu/VirtualFluids_GPU/GPU/SlipBCs27.cu b/src/gpu/core/GPU/SlipBCs27.cu similarity index 62% rename from src/gpu/VirtualFluids_GPU/GPU/SlipBCs27.cu rename to src/gpu/core/GPU/SlipBCs27.cu index 3289d6543aa2e13c4beb1310985f40ad73445a4d..2ef15989422a7eccf15c5eb931115282c8794a64 100644 --- a/src/gpu/VirtualFluids_GPU/GPU/SlipBCs27.cu +++ b/src/gpu/core/GPU/SlipBCs27.cu @@ -73,32 +73,32 @@ __global__ void QSlipDevice27( *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[DIR_P00 * numberOfBCnodes]; - q_dirW = &QQ[DIR_M00 * numberOfBCnodes]; - q_dirN = &QQ[DIR_0P0 * numberOfBCnodes]; - q_dirS = &QQ[DIR_0M0 * numberOfBCnodes]; - q_dirT = &QQ[DIR_00P * numberOfBCnodes]; - q_dirB = &QQ[DIR_00M * numberOfBCnodes]; - q_dirNE = &QQ[DIR_PP0 * numberOfBCnodes]; - q_dirSW = &QQ[DIR_MM0 * numberOfBCnodes]; - q_dirSE = &QQ[DIR_PM0 * numberOfBCnodes]; - q_dirNW = &QQ[DIR_MP0 * numberOfBCnodes]; - q_dirTE = &QQ[DIR_P0P * numberOfBCnodes]; - q_dirBW = &QQ[DIR_M0M * numberOfBCnodes]; - q_dirBE = &QQ[DIR_P0M * numberOfBCnodes]; - q_dirTW = &QQ[DIR_M0P * numberOfBCnodes]; - q_dirTN = &QQ[DIR_0PP * numberOfBCnodes]; - q_dirBS = &QQ[DIR_0MM * numberOfBCnodes]; - q_dirBN = &QQ[DIR_0PM * numberOfBCnodes]; - q_dirTS = &QQ[DIR_0MP * numberOfBCnodes]; - q_dirTNE = &QQ[DIR_PPP * numberOfBCnodes]; - q_dirTSW = &QQ[DIR_MMP * numberOfBCnodes]; - q_dirTSE = &QQ[DIR_PMP * numberOfBCnodes]; - q_dirTNW = &QQ[DIR_MPP * numberOfBCnodes]; - q_dirBNE = &QQ[DIR_PPM * numberOfBCnodes]; - q_dirBSW = &QQ[DIR_MMM * numberOfBCnodes]; - q_dirBSE = &QQ[DIR_PMM * numberOfBCnodes]; - q_dirBNW = &QQ[DIR_MPM * numberOfBCnodes]; + q_dirE = &QQ[dP00 * numberOfBCnodes]; + q_dirW = &QQ[dM00 * numberOfBCnodes]; + q_dirN = &QQ[d0P0 * numberOfBCnodes]; + q_dirS = &QQ[d0M0 * numberOfBCnodes]; + q_dirT = &QQ[d00P * numberOfBCnodes]; + q_dirB = &QQ[d00M * numberOfBCnodes]; + q_dirNE = &QQ[dPP0 * numberOfBCnodes]; + q_dirSW = &QQ[dMM0 * numberOfBCnodes]; + q_dirSE = &QQ[dPM0 * numberOfBCnodes]; + q_dirNW = &QQ[dMP0 * numberOfBCnodes]; + q_dirTE = &QQ[dP0P * numberOfBCnodes]; + q_dirBW = &QQ[dM0M * numberOfBCnodes]; + q_dirBE = &QQ[dP0M * numberOfBCnodes]; + q_dirTW = &QQ[dM0P * numberOfBCnodes]; + q_dirTN = &QQ[d0PP * numberOfBCnodes]; + q_dirBS = &QQ[d0MM * numberOfBCnodes]; + q_dirBN = &QQ[d0PM * numberOfBCnodes]; + q_dirTS = &QQ[d0MP * numberOfBCnodes]; + q_dirTNE = &QQ[dPPP * numberOfBCnodes]; + q_dirTSW = &QQ[dMMP * numberOfBCnodes]; + q_dirTSE = &QQ[dPMP * numberOfBCnodes]; + q_dirTNW = &QQ[dMPP * numberOfBCnodes]; + q_dirBNE = &QQ[dPPM * numberOfBCnodes]; + q_dirBSW = &QQ[dMMM * numberOfBCnodes]; + q_dirBSE = &QQ[dPMM * numberOfBCnodes]; + q_dirBNW = &QQ[dMPM * numberOfBCnodes]; //////////////////////////////////////////////////////////////////////////////// //index unsigned int KQK = k_Q[k]; @@ -130,37 +130,37 @@ __global__ void QSlipDevice27( unsigned int ktne = KQK; unsigned int kbsw = neighborZ[ksw]; //////////////////////////////////////////////////////////////////////////////// - real f_W = (D.f[DIR_P00])[ke ]; - real f_E = (D.f[DIR_M00])[kw ]; - real f_S = (D.f[DIR_0P0])[kn ]; - real f_N = (D.f[DIR_0M0])[ks ]; - real f_B = (D.f[DIR_00P])[kt ]; - real f_T = (D.f[DIR_00M])[kb ]; - real f_SW = (D.f[DIR_PP0])[kne ]; - real f_NE = (D.f[DIR_MM0])[ksw ]; - real f_NW = (D.f[DIR_PM0])[kse ]; - real f_SE = (D.f[DIR_MP0])[knw ]; - real f_BW = (D.f[DIR_P0P])[kte ]; - real f_TE = (D.f[DIR_M0M])[kbw ]; - real f_TW = (D.f[DIR_P0M])[kbe ]; - real f_BE = (D.f[DIR_M0P])[ktw ]; - real f_BS = (D.f[DIR_0PP])[ktn ]; - real f_TN = (D.f[DIR_0MM])[kbs ]; - real f_TS = (D.f[DIR_0PM])[kbn ]; - real f_BN = (D.f[DIR_0MP])[kts ]; - real f_BSW = (D.f[DIR_PPP])[ktne ]; - real f_BNE = (D.f[DIR_MMP])[ktsw ]; - real f_BNW = (D.f[DIR_PMP])[ktse ]; - real f_BSE = (D.f[DIR_MPP])[ktnw ]; - real f_TSW = (D.f[DIR_PPM])[kbne ]; - real f_TNE = (D.f[DIR_MMM])[kbsw ]; - real f_TNW = (D.f[DIR_PMM])[kbse ]; - real f_TSE = (D.f[DIR_MPM])[kbnw ]; + real f_W = (D.f[dP00])[ke ]; + real f_E = (D.f[dM00])[kw ]; + real f_S = (D.f[d0P0])[kn ]; + real f_N = (D.f[d0M0])[ks ]; + real f_B = (D.f[d00P])[kt ]; + real f_T = (D.f[d00M])[kb ]; + real f_SW = (D.f[dPP0])[kne ]; + real f_NE = (D.f[dMM0])[ksw ]; + real f_NW = (D.f[dPM0])[kse ]; + real f_SE = (D.f[dMP0])[knw ]; + real f_BW = (D.f[dP0P])[kte ]; + real f_TE = (D.f[dM0M])[kbw ]; + real f_TW = (D.f[dP0M])[kbe ]; + real f_BE = (D.f[dM0P])[ktw ]; + real f_BS = (D.f[d0PP])[ktn ]; + real f_TN = (D.f[d0MM])[kbs ]; + real f_TS = (D.f[d0PM])[kbn ]; + real f_BN = (D.f[d0MP])[kts ]; + real f_BSW = (D.f[dPPP])[ktne ]; + real f_BNE = (D.f[dMMP])[ktsw ]; + real f_BNW = (D.f[dPMP])[ktse ]; + real f_BSE = (D.f[dMPP])[ktnw ]; + real f_TSW = (D.f[dPPM])[kbne ]; + real f_TNE = (D.f[dMMM])[kbsw ]; + real f_TNW = (D.f[dPMM])[kbse ]; + real f_TSE = (D.f[dMPM])[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[DIR_000])[kzero]); + f_T + f_B + f_N + f_S + f_E + f_W + ((D.f[d000])[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)) + @@ -182,7 +182,7 @@ __global__ void QSlipDevice27( D = vf::gpu::getDistributionReferences27(DD, numberOfLBnodes, !isEvenTimestep); //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //Test - //(D.f[DIR_000])[k]=c1o10; + //(D.f[d000])[k]=c1o10; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// real fac = c1o1;//c99o100; real VeloX = fac*vx1; @@ -200,8 +200,8 @@ __global__ void QSlipDevice27( VeloZ = fac*vx3; x = true; feq=c2o27* (drho+c3o1*( vx1 )+c9o2*( vx1 )*( vx1 )-cu_sq); - (D.f[DIR_M00])[kw]=(c1o1-q)/(c1o1+q)*(f_E-feq*om1)/(c1o1-om1)+(q*(f_E+f_W)-c6o1*c2o27*( VeloX ))/(c1o1+q); - //(D.f[DIR_M00])[kw]=zero; + (D.f[dM00])[kw]=(c1o1-q)/(c1o1+q)*(f_E-feq*om1)/(c1o1-om1)+(q*(f_E+f_W)-c6o1*c2o27*( VeloX ))/(c1o1+q); + //(D.f[dM00])[kw]=zero; } q = q_dirW[k]; @@ -212,8 +212,8 @@ __global__ void QSlipDevice27( VeloZ = fac*vx3; x = true; feq=c2o27* (drho+c3o1*(-vx1 )+c9o2*(-vx1 )*(-vx1 )-cu_sq); - (D.f[DIR_P00])[ke]=(c1o1-q)/(c1o1+q)*(f_W-feq*om1)/(c1o1-om1)+(q*(f_W+f_E)-c6o1*c2o27*(-VeloX ))/(c1o1+q); - //(D.f[DIR_P00])[ke]=zero; + (D.f[dP00])[ke]=(c1o1-q)/(c1o1+q)*(f_W-feq*om1)/(c1o1-om1)+(q*(f_W+f_E)-c6o1*c2o27*(-VeloX ))/(c1o1+q); + //(D.f[dP00])[ke]=zero; } q = q_dirN[k]; @@ -224,8 +224,8 @@ __global__ void QSlipDevice27( VeloZ = fac*vx3; y = true; feq=c2o27* (drho+c3o1*( vx2 )+c9o2*( vx2 )*( vx2 )-cu_sq); - (D.f[DIR_0M0])[ks]=(c1o1-q)/(c1o1+q)*(f_N-feq*om1)/(c1o1-om1)+(q*(f_N+f_S)-c6o1*c2o27*( VeloY ))/(c1o1+q); - //(D.f[DIR_0M0])[ks]=zero; + (D.f[d0M0])[ks]=(c1o1-q)/(c1o1+q)*(f_N-feq*om1)/(c1o1-om1)+(q*(f_N+f_S)-c6o1*c2o27*( VeloY ))/(c1o1+q); + //(D.f[d0M0])[ks]=zero; } q = q_dirS[k]; @@ -236,8 +236,8 @@ __global__ void QSlipDevice27( VeloZ = fac*vx3; y = true; feq=c2o27* (drho+c3o1*( -vx2 )+c9o2*( -vx2 )*( -vx2 )-cu_sq); - (D.f[DIR_0P0])[kn]=(c1o1-q)/(c1o1+q)*(f_S-feq*om1)/(c1o1-om1)+(q*(f_S+f_N)-c6o1*c2o27*(-VeloY ))/(c1o1+q); - //(D.f[DIR_0P0])[kn]=zero; + (D.f[d0P0])[kn]=(c1o1-q)/(c1o1+q)*(f_S-feq*om1)/(c1o1-om1)+(q*(f_S+f_N)-c6o1*c2o27*(-VeloY ))/(c1o1+q); + //(D.f[d0P0])[kn]=zero; } q = q_dirT[k]; @@ -248,8 +248,8 @@ __global__ void QSlipDevice27( VeloZ = c0o1; z = true; feq=c2o27* (drho+c3o1*( vx3)+c9o2*( vx3)*( vx3)-cu_sq); - (D.f[DIR_00M])[kb]=(c1o1-q)/(c1o1+q)*(f_T-feq*om1)/(c1o1-om1)+(q*(f_T+f_B)-c6o1*c2o27*( VeloZ ))/(c1o1+q); - //(D.f[DIR_00M])[kb]=one; + (D.f[d00M])[kb]=(c1o1-q)/(c1o1+q)*(f_T-feq*om1)/(c1o1-om1)+(q*(f_T+f_B)-c6o1*c2o27*( VeloZ ))/(c1o1+q); + //(D.f[d00M])[kb]=one; } q = q_dirB[k]; @@ -260,8 +260,8 @@ __global__ void QSlipDevice27( VeloZ = c0o1; z = true; feq=c2o27* (drho+c3o1*( -vx3)+c9o2*( -vx3)*( -vx3)-cu_sq); - (D.f[DIR_00P])[kt]=(c1o1-q)/(c1o1+q)*(f_B-feq*om1)/(c1o1-om1)+(q*(f_B+f_T)-c6o1*c2o27*(-VeloZ ))/(c1o1+q); - //(D.f[DIR_00P])[kt]=zero; + (D.f[d00P])[kt]=(c1o1-q)/(c1o1+q)*(f_B-feq*om1)/(c1o1-om1)+(q*(f_B+f_T)-c6o1*c2o27*(-VeloZ ))/(c1o1+q); + //(D.f[d00P])[kt]=zero; } q = q_dirNE[k]; @@ -273,8 +273,8 @@ __global__ void QSlipDevice27( 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[DIR_MM0])[ksw]=(c1o1-q)/(c1o1+q)*(f_NE-feq*om1)/(c1o1-om1)+(q*(f_NE+f_SW)-c6o1*c1o54*(VeloX+VeloY))/(c1o1+q); - //(D.f[DIR_MM0])[ksw]=zero; + (D.f[dMM0])[ksw]=(c1o1-q)/(c1o1+q)*(f_NE-feq*om1)/(c1o1-om1)+(q*(f_NE+f_SW)-c6o1*c1o54*(VeloX+VeloY))/(c1o1+q); + //(D.f[dMM0])[ksw]=zero; } q = q_dirSW[k]; @@ -286,8 +286,8 @@ __global__ void QSlipDevice27( 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[DIR_PP0])[kne]=(c1o1-q)/(c1o1+q)*(f_SW-feq*om1)/(c1o1-om1)+(q*(f_SW+f_NE)-c6o1*c1o54*(-VeloX-VeloY))/(c1o1+q); - //(D.f[DIR_PP0])[kne]=zero; + (D.f[dPP0])[kne]=(c1o1-q)/(c1o1+q)*(f_SW-feq*om1)/(c1o1-om1)+(q*(f_SW+f_NE)-c6o1*c1o54*(-VeloX-VeloY))/(c1o1+q); + //(D.f[dPP0])[kne]=zero; } q = q_dirSE[k]; @@ -299,8 +299,8 @@ __global__ void QSlipDevice27( 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[DIR_MP0])[knw]=(c1o1-q)/(c1o1+q)*(f_SE-feq*om1)/(c1o1-om1)+(q*(f_SE+f_NW)-c6o1*c1o54*( VeloX-VeloY))/(c1o1+q); - //(D.f[DIR_MP0])[knw]=zero; + (D.f[dMP0])[knw]=(c1o1-q)/(c1o1+q)*(f_SE-feq*om1)/(c1o1-om1)+(q*(f_SE+f_NW)-c6o1*c1o54*( VeloX-VeloY))/(c1o1+q); + //(D.f[dMP0])[knw]=zero; } q = q_dirNW[k]; @@ -312,8 +312,8 @@ __global__ void QSlipDevice27( 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[DIR_PM0])[kse]=(c1o1-q)/(c1o1+q)*(f_NW-feq*om1)/(c1o1-om1)+(q*(f_NW+f_SE)-c6o1*c1o54*(-VeloX+VeloY))/(c1o1+q); - //(D.f[DIR_PM0])[kse]=zero; + (D.f[dPM0])[kse]=(c1o1-q)/(c1o1+q)*(f_NW-feq*om1)/(c1o1-om1)+(q*(f_NW+f_SE)-c6o1*c1o54*(-VeloX+VeloY))/(c1o1+q); + //(D.f[dPM0])[kse]=zero; } q = q_dirTE[k]; @@ -325,8 +325,8 @@ __global__ void QSlipDevice27( 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[DIR_M0M])[kbw]=(c1o1-q)/(c1o1+q)*(f_TE-feq*om1)/(c1o1-om1)+(q*(f_TE+f_BW)-c6o1*c1o54*( VeloX+VeloZ))/(c1o1+q); - //(D.f[DIR_M0M])[kbw]=zero; + (D.f[dM0M])[kbw]=(c1o1-q)/(c1o1+q)*(f_TE-feq*om1)/(c1o1-om1)+(q*(f_TE+f_BW)-c6o1*c1o54*( VeloX+VeloZ))/(c1o1+q); + //(D.f[dM0M])[kbw]=zero; } q = q_dirBW[k]; @@ -338,8 +338,8 @@ __global__ void QSlipDevice27( 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[DIR_P0P])[kte]=(c1o1-q)/(c1o1+q)*(f_BW-feq*om1)/(c1o1-om1)+(q*(f_BW+f_TE)-c6o1*c1o54*(-VeloX-VeloZ))/(c1o1+q); - //(D.f[DIR_P0P])[kte]=zero; + (D.f[dP0P])[kte]=(c1o1-q)/(c1o1+q)*(f_BW-feq*om1)/(c1o1-om1)+(q*(f_BW+f_TE)-c6o1*c1o54*(-VeloX-VeloZ))/(c1o1+q); + //(D.f[dP0P])[kte]=zero; } q = q_dirBE[k]; @@ -351,8 +351,8 @@ __global__ void QSlipDevice27( 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[DIR_M0P])[ktw]=(c1o1-q)/(c1o1+q)*(f_BE-feq*om1)/(c1o1-om1)+(q*(f_BE+f_TW)-c6o1*c1o54*( VeloX-VeloZ))/(c1o1+q); - //(D.f[DIR_M0P])[ktw]=zero; + (D.f[dM0P])[ktw]=(c1o1-q)/(c1o1+q)*(f_BE-feq*om1)/(c1o1-om1)+(q*(f_BE+f_TW)-c6o1*c1o54*( VeloX-VeloZ))/(c1o1+q); + //(D.f[dM0P])[ktw]=zero; } q = q_dirTW[k]; @@ -364,8 +364,8 @@ __global__ void QSlipDevice27( 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[DIR_P0M])[kbe]=(c1o1-q)/(c1o1+q)*(f_TW-feq*om1)/(c1o1-om1)+(q*(f_TW+f_BE)-c6o1*c1o54*(-VeloX+VeloZ))/(c1o1+q); - //(D.f[DIR_P0M])[kbe]=zero; + (D.f[dP0M])[kbe]=(c1o1-q)/(c1o1+q)*(f_TW-feq*om1)/(c1o1-om1)+(q*(f_TW+f_BE)-c6o1*c1o54*(-VeloX+VeloZ))/(c1o1+q); + //(D.f[dP0M])[kbe]=zero; } q = q_dirTN[k]; @@ -377,8 +377,8 @@ __global__ void QSlipDevice27( 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[DIR_0MM])[kbs]=(c1o1-q)/(c1o1+q)*(f_TN-feq*om1)/(c1o1-om1)+(q*(f_TN+f_BS)-c6o1*c1o54*( VeloY+VeloZ))/(c1o1+q); - //(D.f[DIR_0MM])[kbs]=zero; + (D.f[d0MM])[kbs]=(c1o1-q)/(c1o1+q)*(f_TN-feq*om1)/(c1o1-om1)+(q*(f_TN+f_BS)-c6o1*c1o54*( VeloY+VeloZ))/(c1o1+q); + //(D.f[d0MM])[kbs]=zero; } q = q_dirBS[k]; @@ -390,8 +390,8 @@ __global__ void QSlipDevice27( 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[DIR_0PP])[ktn]=(c1o1-q)/(c1o1+q)*(f_BS-feq*om1)/(c1o1-om1)+(q*(f_BS+f_TN)-c6o1*c1o54*( -VeloY-VeloZ))/(c1o1+q); - //(D.f[DIR_0PP])[ktn]=zero; + (D.f[d0PP])[ktn]=(c1o1-q)/(c1o1+q)*(f_BS-feq*om1)/(c1o1-om1)+(q*(f_BS+f_TN)-c6o1*c1o54*( -VeloY-VeloZ))/(c1o1+q); + //(D.f[d0PP])[ktn]=zero; } q = q_dirBN[k]; @@ -403,8 +403,8 @@ __global__ void QSlipDevice27( 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[DIR_0MP])[kts]=(c1o1-q)/(c1o1+q)*(f_BN-feq*om1)/(c1o1-om1)+(q*(f_BN+f_TS)-c6o1*c1o54*( VeloY-VeloZ))/(c1o1+q); - //(D.f[DIR_0MP])[kts]=zero; + (D.f[d0MP])[kts]=(c1o1-q)/(c1o1+q)*(f_BN-feq*om1)/(c1o1-om1)+(q*(f_BN+f_TS)-c6o1*c1o54*( VeloY-VeloZ))/(c1o1+q); + //(D.f[d0MP])[kts]=zero; } q = q_dirTS[k]; @@ -416,8 +416,8 @@ __global__ void QSlipDevice27( 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[DIR_0PM])[kbn]=(c1o1-q)/(c1o1+q)*(f_TS-feq*om1)/(c1o1-om1)+(q*(f_TS+f_BN)-c6o1*c1o54*( -VeloY+VeloZ))/(c1o1+q); - //(D.f[DIR_0PM])[kbn]=zero; + (D.f[d0PM])[kbn]=(c1o1-q)/(c1o1+q)*(f_TS-feq*om1)/(c1o1-om1)+(q*(f_TS+f_BN)-c6o1*c1o54*( -VeloY+VeloZ))/(c1o1+q); + //(D.f[d0PM])[kbn]=zero; } q = q_dirTNE[k]; @@ -430,8 +430,8 @@ __global__ void QSlipDevice27( 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[DIR_MMM])[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[DIR_MMM])[kbsw]=zero; + (D.f[dMMM])[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[dMMM])[kbsw]=zero; } q = q_dirBSW[k]; @@ -444,8 +444,8 @@ __global__ void QSlipDevice27( 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[DIR_PPP])[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[DIR_PPP])[ktne]=zero; + (D.f[dPPP])[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[dPPP])[ktne]=zero; } q = q_dirBNE[k]; @@ -458,8 +458,8 @@ __global__ void QSlipDevice27( 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[DIR_MMP])[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[DIR_MMP])[ktsw]=zero; + (D.f[dMMP])[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[dMMP])[ktsw]=zero; } q = q_dirTSW[k]; @@ -472,8 +472,8 @@ __global__ void QSlipDevice27( 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[DIR_PPM])[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[DIR_PPM])[kbne]=zero; + (D.f[dPPM])[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[dPPM])[kbne]=zero; } q = q_dirTSE[k]; @@ -486,8 +486,8 @@ __global__ void QSlipDevice27( 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[DIR_MPM])[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[DIR_MPM])[kbnw]=zero; + (D.f[dMPM])[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[dMPM])[kbnw]=zero; } q = q_dirBNW[k]; @@ -500,8 +500,8 @@ __global__ void QSlipDevice27( 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[DIR_PMP])[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[DIR_PMP])[ktse]=zero; + (D.f[dPMP])[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[dPMP])[ktse]=zero; } q = q_dirBSE[k]; @@ -514,8 +514,8 @@ __global__ void QSlipDevice27( 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[DIR_MPP])[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[DIR_MPP])[ktnw]=zero; + (D.f[dMPP])[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[dMPP])[ktnw]=zero; } q = q_dirTNW[k]; @@ -528,8 +528,8 @@ __global__ void QSlipDevice27( 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[DIR_PMM])[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[DIR_PMM])[kbse]=zero; + (D.f[dPMM])[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[dPMM])[kbse]=zero; } } } @@ -644,39 +644,39 @@ __global__ void QSlipDeviceComp27( //////////////////////////////////////////////////////////////////////////////// //! - Set local distributions //! - real f_W = (dist.f[DIR_P00])[ke ]; - real f_E = (dist.f[DIR_M00])[kw ]; - real f_S = (dist.f[DIR_0P0])[kn ]; - real f_N = (dist.f[DIR_0M0])[ks ]; - real f_B = (dist.f[DIR_00P])[kt ]; - real f_T = (dist.f[DIR_00M])[kb ]; - real f_SW = (dist.f[DIR_PP0])[kne ]; - real f_NE = (dist.f[DIR_MM0])[ksw ]; - real f_NW = (dist.f[DIR_PM0])[kse ]; - real f_SE = (dist.f[DIR_MP0])[knw ]; - real f_BW = (dist.f[DIR_P0P])[kte ]; - real f_TE = (dist.f[DIR_M0M])[kbw ]; - real f_TW = (dist.f[DIR_P0M])[kbe ]; - real f_BE = (dist.f[DIR_M0P])[ktw ]; - real f_BS = (dist.f[DIR_0PP])[ktn ]; - real f_TN = (dist.f[DIR_0MM])[kbs ]; - real f_TS = (dist.f[DIR_0PM])[kbn ]; - real f_BN = (dist.f[DIR_0MP])[kts ]; - real f_BSW = (dist.f[DIR_PPP])[ktne ]; - real f_BNE = (dist.f[DIR_MMP])[ktsw ]; - real f_BNW = (dist.f[DIR_PMP])[ktse ]; - real f_BSE = (dist.f[DIR_MPP])[ktnw ]; - real f_TSW = (dist.f[DIR_PPM])[kbne ]; - real f_TNE = (dist.f[DIR_MMM])[kbsw ]; - real f_TNW = (dist.f[DIR_PMM])[kbse ]; - real f_TSE = (dist.f[DIR_MPM])[kbnw ]; + real f_W = (dist.f[dP00])[ke ]; + real f_E = (dist.f[dM00])[kw ]; + real f_S = (dist.f[d0P0])[kn ]; + real f_N = (dist.f[d0M0])[ks ]; + real f_B = (dist.f[d00P])[kt ]; + real f_T = (dist.f[d00M])[kb ]; + real f_SW = (dist.f[dPP0])[kne ]; + real f_NE = (dist.f[dMM0])[ksw ]; + real f_NW = (dist.f[dPM0])[kse ]; + real f_SE = (dist.f[dMP0])[knw ]; + real f_BW = (dist.f[dP0P])[kte ]; + real f_TE = (dist.f[dM0M])[kbw ]; + real f_TW = (dist.f[dP0M])[kbe ]; + real f_BE = (dist.f[dM0P])[ktw ]; + real f_BS = (dist.f[d0PP])[ktn ]; + real f_TN = (dist.f[d0MM])[kbs ]; + real f_TS = (dist.f[d0PM])[kbn ]; + real f_BN = (dist.f[d0MP])[kts ]; + real f_BSW = (dist.f[dPPP])[ktne ]; + real f_BNE = (dist.f[dMMP])[ktsw ]; + real f_BNW = (dist.f[dPMP])[ktse ]; + real f_BSE = (dist.f[dMPP])[ktnw ]; + real f_TSW = (dist.f[dPPM])[kbne ]; + real f_TNE = (dist.f[dMMM])[kbsw ]; + real f_TNW = (dist.f[dPMM])[kbse ]; + real f_TSE = (dist.f[dMPM])[kbnw ]; //////////////////////////////////////////////////////////////////////////////// //! - 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[DIR_000])[kzero]); + f_T + f_B + f_N + f_S + f_E + f_W + ((dist.f[d000])[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)) + @@ -714,7 +714,7 @@ __global__ void QSlipDeviceComp27( bool y = false; bool z = false; - q = (subgridD.q[DIR_P00])[nodeIndex]; + q = (subgridD.q[dP00])[nodeIndex]; if (q>=c0o1 && q<=c1o1) // only update distribution for q between zero and one { VeloX = c0o1; @@ -723,10 +723,10 @@ __global__ void QSlipDeviceComp27( velocityLB = vx1; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c2o27); velocityBC = VeloX; - (dist.f[DIR_M00])[kw] = getInterpolatedDistributionForVeloBC(q, f_E, f_W, feq, omega, velocityBC, c2o27); + (dist.f[dM00])[kw] = getInterpolatedDistributionForVeloBC(q, f_E, f_W, feq, omega, velocityBC, c2o27); } - q = (subgridD.q[DIR_M00])[nodeIndex]; + q = (subgridD.q[dM00])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { VeloX = c0o1; @@ -735,10 +735,10 @@ __global__ void QSlipDeviceComp27( velocityLB = -vx1; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c2o27); velocityBC = -VeloX; - (dist.f[DIR_P00])[ke] = getInterpolatedDistributionForVeloBC(q, f_W, f_E, feq, omega, velocityBC, c2o27); + (dist.f[dP00])[ke] = getInterpolatedDistributionForVeloBC(q, f_W, f_E, feq, omega, velocityBC, c2o27); } - q = (subgridD.q[DIR_0P0])[nodeIndex]; + q = (subgridD.q[d0P0])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { VeloY = c0o1; @@ -747,10 +747,10 @@ __global__ void QSlipDeviceComp27( velocityLB = vx2; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c2o27); velocityBC = VeloY; - (dist.f[DIR_0M0])[ks] = getInterpolatedDistributionForVeloBC(q, f_N, f_S, feq, omega, velocityBC, c2o27); + (dist.f[d0M0])[ks] = getInterpolatedDistributionForVeloBC(q, f_N, f_S, feq, omega, velocityBC, c2o27); } - q = (subgridD.q[DIR_0M0])[nodeIndex]; + q = (subgridD.q[d0M0])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { VeloY = c0o1; @@ -759,10 +759,10 @@ __global__ void QSlipDeviceComp27( velocityLB = -vx2; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c2o27); velocityBC = -VeloY; - (dist.f[DIR_0P0])[kn] = getInterpolatedDistributionForVeloBC(q, f_S, f_N, feq, omega, velocityBC, c2o27); + (dist.f[d0P0])[kn] = getInterpolatedDistributionForVeloBC(q, f_S, f_N, feq, omega, velocityBC, c2o27); } - q = (subgridD.q[DIR_00P])[nodeIndex]; + q = (subgridD.q[d00P])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { VeloZ = c0o1; @@ -771,10 +771,10 @@ __global__ void QSlipDeviceComp27( velocityLB = vx3; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c2o27); velocityBC = VeloZ; - (dist.f[DIR_00M])[kb] = getInterpolatedDistributionForVeloBC(q, f_T, f_B, feq, omega, velocityBC, c2o27); + (dist.f[d00M])[kb] = getInterpolatedDistributionForVeloBC(q, f_T, f_B, feq, omega, velocityBC, c2o27); } - q = (subgridD.q[DIR_00M])[nodeIndex]; + q = (subgridD.q[d00M])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { VeloZ = c0o1; @@ -783,10 +783,10 @@ __global__ void QSlipDeviceComp27( velocityLB = -vx3; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c2o27); velocityBC = -VeloZ; - (dist.f[DIR_00P])[kt] = getInterpolatedDistributionForVeloBC(q, f_B, f_T, feq, omega, velocityBC, c2o27); + (dist.f[d00P])[kt] = getInterpolatedDistributionForVeloBC(q, f_B, f_T, feq, omega, velocityBC, c2o27); } - q = (subgridD.q[DIR_PP0])[nodeIndex]; + q = (subgridD.q[dPP0])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { VeloX = slipLength*vx1; @@ -797,10 +797,10 @@ __global__ void QSlipDeviceComp27( velocityLB = vx1 + vx2; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); velocityBC = VeloX + VeloY; - (dist.f[DIR_MM0])[ksw] = getInterpolatedDistributionForVeloBC(q, f_NE, f_SW, feq, omega, velocityBC, c1o54); + (dist.f[dMM0])[ksw] = getInterpolatedDistributionForVeloBC(q, f_NE, f_SW, feq, omega, velocityBC, c1o54); } - q = (subgridD.q[DIR_MM0])[nodeIndex]; + q = (subgridD.q[dMM0])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { VeloX = slipLength*vx1; @@ -811,10 +811,10 @@ __global__ void QSlipDeviceComp27( velocityLB = -vx1 - vx2; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); velocityBC = -VeloX - VeloY; - (dist.f[DIR_PP0])[kne] = getInterpolatedDistributionForVeloBC(q, f_SW, f_NE, feq, omega, velocityBC, c1o54); + (dist.f[dPP0])[kne] = getInterpolatedDistributionForVeloBC(q, f_SW, f_NE, feq, omega, velocityBC, c1o54); } - q = (subgridD.q[DIR_PM0])[nodeIndex]; + q = (subgridD.q[dPM0])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { VeloX = slipLength*vx1; @@ -825,10 +825,10 @@ __global__ void QSlipDeviceComp27( velocityLB = vx1 - vx2; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); velocityBC = VeloX - VeloY; - (dist.f[DIR_MP0])[knw] = getInterpolatedDistributionForVeloBC(q, f_SE, f_NW, feq, omega, velocityBC, c1o54); + (dist.f[dMP0])[knw] = getInterpolatedDistributionForVeloBC(q, f_SE, f_NW, feq, omega, velocityBC, c1o54); } - q = (subgridD.q[DIR_MP0])[nodeIndex]; + q = (subgridD.q[dMP0])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { VeloX = slipLength*vx1; @@ -839,10 +839,10 @@ __global__ void QSlipDeviceComp27( velocityLB = -vx1 + vx2; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); velocityBC = -VeloX + VeloY; - (dist.f[DIR_PM0])[kse] = getInterpolatedDistributionForVeloBC(q, f_NW, f_SE, feq, omega, velocityBC, c1o54); + (dist.f[dPM0])[kse] = getInterpolatedDistributionForVeloBC(q, f_NW, f_SE, feq, omega, velocityBC, c1o54); } - q = (subgridD.q[DIR_P0P])[nodeIndex]; + q = (subgridD.q[dP0P])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { VeloX = slipLength*vx1; @@ -853,10 +853,10 @@ __global__ void QSlipDeviceComp27( velocityLB = vx1 + vx3; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); velocityBC = VeloX + VeloZ; - (dist.f[DIR_M0M])[kbw] = getInterpolatedDistributionForVeloBC(q, f_TE, f_BW, feq, omega, velocityBC, c1o54); + (dist.f[dM0M])[kbw] = getInterpolatedDistributionForVeloBC(q, f_TE, f_BW, feq, omega, velocityBC, c1o54); } - q = (subgridD.q[DIR_M0M])[nodeIndex]; + q = (subgridD.q[dM0M])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { VeloX = slipLength*vx1; @@ -867,10 +867,10 @@ __global__ void QSlipDeviceComp27( velocityLB = -vx1 - vx3; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); velocityBC = -VeloX - VeloZ; - (dist.f[DIR_P0P])[kte] = getInterpolatedDistributionForVeloBC(q, f_BW, f_TE, feq, omega, velocityBC, c1o54); + (dist.f[dP0P])[kte] = getInterpolatedDistributionForVeloBC(q, f_BW, f_TE, feq, omega, velocityBC, c1o54); } - q = (subgridD.q[DIR_P0M])[nodeIndex]; + q = (subgridD.q[dP0M])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { VeloX = slipLength*vx1; @@ -881,10 +881,10 @@ __global__ void QSlipDeviceComp27( velocityLB = vx1 - vx3; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); velocityBC = VeloX - VeloZ; - (dist.f[DIR_M0P])[ktw] = getInterpolatedDistributionForVeloBC(q, f_BE, f_TW, feq, omega, velocityBC, c1o54); + (dist.f[dM0P])[ktw] = getInterpolatedDistributionForVeloBC(q, f_BE, f_TW, feq, omega, velocityBC, c1o54); } - q = (subgridD.q[DIR_M0P])[nodeIndex]; + q = (subgridD.q[dM0P])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { VeloX = slipLength*vx1; @@ -895,10 +895,10 @@ __global__ void QSlipDeviceComp27( velocityLB = -vx1 + vx3; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); velocityBC = -VeloX + VeloZ; - (dist.f[DIR_P0M])[kbe] = getInterpolatedDistributionForVeloBC(q, f_TW, f_BE, feq, omega, velocityBC, c1o54); + (dist.f[dP0M])[kbe] = getInterpolatedDistributionForVeloBC(q, f_TW, f_BE, feq, omega, velocityBC, c1o54); } - q = (subgridD.q[DIR_0PP])[nodeIndex]; + q = (subgridD.q[d0PP])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { VeloY = slipLength*vx2; @@ -909,10 +909,10 @@ __global__ void QSlipDeviceComp27( velocityLB = vx2 + vx3; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); velocityBC = VeloY + VeloZ; - (dist.f[DIR_0MM])[kbs] = getInterpolatedDistributionForVeloBC(q, f_TN, f_BS, feq, omega, velocityBC, c1o54); + (dist.f[d0MM])[kbs] = getInterpolatedDistributionForVeloBC(q, f_TN, f_BS, feq, omega, velocityBC, c1o54); } - q = (subgridD.q[DIR_0MM])[nodeIndex]; + q = (subgridD.q[d0MM])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { VeloY = slipLength*vx2; @@ -923,11 +923,11 @@ __global__ void QSlipDeviceComp27( velocityLB = -vx2 - vx3; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); velocityBC = -VeloY - VeloZ; - (dist.f[DIR_0PP])[ktn] = getInterpolatedDistributionForVeloBC(q, f_BS, f_TN, feq, omega, velocityBC, c1o54); + (dist.f[d0PP])[ktn] = getInterpolatedDistributionForVeloBC(q, f_BS, f_TN, feq, omega, velocityBC, c1o54); } - q = (subgridD.q[DIR_0PM])[nodeIndex]; + q = (subgridD.q[d0PM])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { VeloY = slipLength*vx2; @@ -938,10 +938,10 @@ __global__ void QSlipDeviceComp27( velocityLB = vx2 - vx3; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); velocityBC = VeloY - VeloZ; - (dist.f[DIR_0MP])[kts] = getInterpolatedDistributionForVeloBC(q, f_BN, f_TS, feq, omega, velocityBC, c1o54); + (dist.f[d0MP])[kts] = getInterpolatedDistributionForVeloBC(q, f_BN, f_TS, feq, omega, velocityBC, c1o54); } - q = (subgridD.q[DIR_0MP])[nodeIndex]; + q = (subgridD.q[d0MP])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { VeloY = slipLength*vx2; @@ -952,10 +952,10 @@ __global__ void QSlipDeviceComp27( velocityLB = -vx2 + vx3; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); velocityBC = -VeloY + VeloZ; - (dist.f[DIR_0PM])[kbn] = getInterpolatedDistributionForVeloBC(q, f_TS, f_BN, feq, omega, velocityBC, c1o54); + (dist.f[d0PM])[kbn] = getInterpolatedDistributionForVeloBC(q, f_TS, f_BN, feq, omega, velocityBC, c1o54); } - q = (subgridD.q[DIR_PPP])[nodeIndex]; + q = (subgridD.q[dPPP])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { VeloX = slipLength*vx1; @@ -967,10 +967,10 @@ __global__ void QSlipDeviceComp27( velocityLB = vx1 + vx2 + vx3; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); velocityBC = VeloX + VeloY + VeloZ; - (dist.f[DIR_MMM])[kbsw] = getInterpolatedDistributionForVeloBC(q, f_TNE, f_BSW, feq, omega, velocityBC, c1o216); + (dist.f[dMMM])[kbsw] = getInterpolatedDistributionForVeloBC(q, f_TNE, f_BSW, feq, omega, velocityBC, c1o216); } - q = (subgridD.q[DIR_MMM])[nodeIndex]; + q = (subgridD.q[dMMM])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { VeloX = slipLength*vx1; @@ -982,11 +982,11 @@ __global__ void QSlipDeviceComp27( velocityLB = -vx1 - vx2 - vx3; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); velocityBC = -VeloX - VeloY - VeloZ; - (dist.f[DIR_PPP])[ktne] = getInterpolatedDistributionForVeloBC(q, f_BSW, f_TNE, feq, omega, velocityBC, c1o216); + (dist.f[dPPP])[ktne] = getInterpolatedDistributionForVeloBC(q, f_BSW, f_TNE, feq, omega, velocityBC, c1o216); } - q = (subgridD.q[DIR_PPM])[nodeIndex]; + q = (subgridD.q[dPPM])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { VeloX = slipLength*vx1; @@ -998,10 +998,10 @@ __global__ void QSlipDeviceComp27( velocityLB = vx1 + vx2 - vx3; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); velocityBC = VeloX + VeloY - VeloZ; - (dist.f[DIR_MMP])[ktsw] = getInterpolatedDistributionForVeloBC(q, f_BNE, f_TSW, feq, omega, velocityBC, c1o216); + (dist.f[dMMP])[ktsw] = getInterpolatedDistributionForVeloBC(q, f_BNE, f_TSW, feq, omega, velocityBC, c1o216); } - q = (subgridD.q[DIR_MMP])[nodeIndex]; + q = (subgridD.q[dMMP])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { VeloX = slipLength*vx1; @@ -1013,10 +1013,10 @@ __global__ void QSlipDeviceComp27( velocityLB = -vx1 - vx2 + vx3; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); velocityBC = -VeloX - VeloY + VeloZ; - (dist.f[DIR_PPM])[kbne] = getInterpolatedDistributionForVeloBC(q, f_TSW, f_BNE, feq, omega, velocityBC, c1o216); + (dist.f[dPPM])[kbne] = getInterpolatedDistributionForVeloBC(q, f_TSW, f_BNE, feq, omega, velocityBC, c1o216); } - q = (subgridD.q[DIR_PMP])[nodeIndex]; + q = (subgridD.q[dPMP])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { VeloX = slipLength*vx1; @@ -1028,10 +1028,10 @@ __global__ void QSlipDeviceComp27( velocityLB = vx1 - vx2 + vx3; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); velocityBC = VeloX - VeloY + VeloZ; - (dist.f[DIR_MPM])[kbnw] = getInterpolatedDistributionForVeloBC(q, f_TSE, f_BNW, feq, omega, velocityBC, c1o216); + (dist.f[dMPM])[kbnw] = getInterpolatedDistributionForVeloBC(q, f_TSE, f_BNW, feq, omega, velocityBC, c1o216); } - q = (subgridD.q[DIR_MPM])[nodeIndex]; + q = (subgridD.q[dMPM])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { VeloX = slipLength*vx1; @@ -1043,10 +1043,10 @@ __global__ void QSlipDeviceComp27( velocityLB = -vx1 + vx2 - vx3; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); velocityBC = -VeloX + VeloY - VeloZ; - (dist.f[DIR_PMP])[ktse] = getInterpolatedDistributionForVeloBC(q, f_BNW, f_TSE, feq, omega, velocityBC, c1o216); + (dist.f[dPMP])[ktse] = getInterpolatedDistributionForVeloBC(q, f_BNW, f_TSE, feq, omega, velocityBC, c1o216); } - q = (subgridD.q[DIR_PMM])[nodeIndex]; + q = (subgridD.q[dPMM])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { VeloX = slipLength*vx1; @@ -1058,10 +1058,10 @@ __global__ void QSlipDeviceComp27( velocityLB = vx1 - vx2 - vx3; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); velocityBC = VeloX - VeloY - VeloZ; - (dist.f[DIR_MPP])[ktnw] = getInterpolatedDistributionForVeloBC(q, f_BSE, f_TNW, feq, omega, velocityBC, c1o216); + (dist.f[dMPP])[ktnw] = getInterpolatedDistributionForVeloBC(q, f_BSE, f_TNW, feq, omega, velocityBC, c1o216); } - q = (subgridD.q[DIR_MPP])[nodeIndex]; + q = (subgridD.q[dMPP])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { VeloX = slipLength*vx1; @@ -1073,7 +1073,7 @@ __global__ void QSlipDeviceComp27( velocityLB = -vx1 + vx2 + vx3; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); velocityBC = -VeloX + VeloY + VeloZ; - (dist.f[DIR_PMM])[kbse] = getInterpolatedDistributionForVeloBC(q, f_TNW, f_BSE, feq, omega, velocityBC, c1o216); + (dist.f[dPMM])[kbse] = getInterpolatedDistributionForVeloBC(q, f_TNW, f_BSE, feq, omega, velocityBC, c1o216); } } } @@ -1173,39 +1173,39 @@ __global__ void BBSlipDeviceComp27( //////////////////////////////////////////////////////////////////////////////// //! - Set local distributions //! - real f_W = (dist.f[DIR_P00])[ke ]; - real f_E = (dist.f[DIR_M00])[kw ]; - real f_S = (dist.f[DIR_0P0])[kn ]; - real f_N = (dist.f[DIR_0M0])[ks ]; - real f_B = (dist.f[DIR_00P])[kt ]; - real f_T = (dist.f[DIR_00M])[kb ]; - real f_SW = (dist.f[DIR_PP0])[kne ]; - real f_NE = (dist.f[DIR_MM0])[ksw ]; - real f_NW = (dist.f[DIR_PM0])[kse ]; - real f_SE = (dist.f[DIR_MP0])[knw ]; - real f_BW = (dist.f[DIR_P0P])[kte ]; - real f_TE = (dist.f[DIR_M0M])[kbw ]; - real f_TW = (dist.f[DIR_P0M])[kbe ]; - real f_BE = (dist.f[DIR_M0P])[ktw ]; - real f_BS = (dist.f[DIR_0PP])[ktn ]; - real f_TN = (dist.f[DIR_0MM])[kbs ]; - real f_TS = (dist.f[DIR_0PM])[kbn ]; - real f_BN = (dist.f[DIR_0MP])[kts ]; - real f_BSW = (dist.f[DIR_PPP])[ktne ]; - real f_BNE = (dist.f[DIR_MMP])[ktsw ]; - real f_BNW = (dist.f[DIR_PMP])[ktse ]; - real f_BSE = (dist.f[DIR_MPP])[ktnw ]; - real f_TSW = (dist.f[DIR_PPM])[kbne ]; - real f_TNE = (dist.f[DIR_MMM])[kbsw ]; - real f_TNW = (dist.f[DIR_PMM])[kbse ]; - real f_TSE = (dist.f[DIR_MPM])[kbnw ]; + real f_W = (dist.f[dP00])[ke ]; + real f_E = (dist.f[dM00])[kw ]; + real f_S = (dist.f[d0P0])[kn ]; + real f_N = (dist.f[d0M0])[ks ]; + real f_B = (dist.f[d00P])[kt ]; + real f_T = (dist.f[d00M])[kb ]; + real f_SW = (dist.f[dPP0])[kne ]; + real f_NE = (dist.f[dMM0])[ksw ]; + real f_NW = (dist.f[dPM0])[kse ]; + real f_SE = (dist.f[dMP0])[knw ]; + real f_BW = (dist.f[dP0P])[kte ]; + real f_TE = (dist.f[dM0M])[kbw ]; + real f_TW = (dist.f[dP0M])[kbe ]; + real f_BE = (dist.f[dM0P])[ktw ]; + real f_BS = (dist.f[d0PP])[ktn ]; + real f_TN = (dist.f[d0MM])[kbs ]; + real f_TS = (dist.f[d0PM])[kbn ]; + real f_BN = (dist.f[d0MP])[kts ]; + real f_BSW = (dist.f[dPPP])[ktne ]; + real f_BNE = (dist.f[dMMP])[ktsw ]; + real f_BNW = (dist.f[dPMP])[ktse ]; + real f_BSE = (dist.f[dMPP])[ktnw ]; + real f_TSW = (dist.f[dPPM])[kbne ]; + real f_TNE = (dist.f[dMMM])[kbsw ]; + real f_TNW = (dist.f[dPMM])[kbse ]; + real f_TSE = (dist.f[dMPM])[kbnw ]; //////////////////////////////////////////////////////////////////////////////// //! - 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[DIR_000])[kzero]); + f_T + f_B + f_N + f_S + f_E + f_W + ((dist.f[d000])[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)) + @@ -1243,67 +1243,67 @@ __global__ void BBSlipDeviceComp27( bool y = false; bool z = false; - q = (subgridD.q[DIR_P00])[nodeIndex]; + q = (subgridD.q[dP00])[nodeIndex]; if (q>=c0o1 && q<=c1o1) // only update distribution for q between zero and one { VeloX = c0o1; x = true; velocityBC = VeloX; - (dist.f[DIR_M00])[kw] = getBounceBackDistributionForVeloBC(f_W, velocityBC, c2o27); + (dist.f[dM00])[kw] = getBounceBackDistributionForVeloBC(f_W, velocityBC, c2o27); } - q = (subgridD.q[DIR_M00])[nodeIndex]; + q = (subgridD.q[dM00])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { VeloX = c0o1; x = true; velocityBC = -VeloX; - (dist.f[DIR_P00])[ke] = getBounceBackDistributionForVeloBC(f_E, velocityBC, c2o27); + (dist.f[dP00])[ke] = getBounceBackDistributionForVeloBC(f_E, velocityBC, c2o27); } - q = (subgridD.q[DIR_0P0])[nodeIndex]; + q = (subgridD.q[d0P0])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { VeloY = c0o1; y = true; velocityBC = VeloY; - (dist.f[DIR_0M0])[ks] = getBounceBackDistributionForVeloBC(f_S, velocityBC, c2o27); + (dist.f[d0M0])[ks] = getBounceBackDistributionForVeloBC(f_S, velocityBC, c2o27); } - q = (subgridD.q[DIR_0M0])[nodeIndex]; + q = (subgridD.q[d0M0])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { VeloY = c0o1; y = true; velocityBC = -VeloY; - (dist.f[DIR_0P0])[kn] = getBounceBackDistributionForVeloBC(f_N, velocityBC, c2o27); + (dist.f[d0P0])[kn] = getBounceBackDistributionForVeloBC(f_N, velocityBC, c2o27); } - q = (subgridD.q[DIR_00P])[nodeIndex]; + q = (subgridD.q[d00P])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { VeloZ = c0o1; z = true; velocityBC = VeloZ; - (dist.f[DIR_00M])[kb] = getBounceBackDistributionForVeloBC(f_B, velocityBC, c2o27); + (dist.f[d00M])[kb] = getBounceBackDistributionForVeloBC(f_B, velocityBC, c2o27); } - q = (subgridD.q[DIR_00M])[nodeIndex]; + q = (subgridD.q[d00M])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { VeloZ = c0o1; z = true; velocityBC = -VeloZ; - (dist.f[DIR_00P])[kt] = getBounceBackDistributionForVeloBC(f_T, velocityBC, c2o27); + (dist.f[d00P])[kt] = getBounceBackDistributionForVeloBC(f_T, velocityBC, c2o27); } - q = (subgridD.q[DIR_PP0])[nodeIndex]; + q = (subgridD.q[dPP0])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { VeloX = slipLength*vx1; @@ -1312,10 +1312,10 @@ __global__ void BBSlipDeviceComp27( if (y == true) VeloY = c0o1; velocityBC = VeloX + VeloY; - (dist.f[DIR_MM0])[ksw] = getBounceBackDistributionForVeloBC(f_SW, velocityBC, c1o54); + (dist.f[dMM0])[ksw] = getBounceBackDistributionForVeloBC(f_SW, velocityBC, c1o54); } - q = (subgridD.q[DIR_MM0])[nodeIndex]; + q = (subgridD.q[dMM0])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { VeloX = slipLength*vx1; @@ -1324,10 +1324,10 @@ __global__ void BBSlipDeviceComp27( if (y == true) VeloY = c0o1; velocityBC = -VeloX - VeloY; - (dist.f[DIR_PP0])[kne] = getBounceBackDistributionForVeloBC(f_NE, velocityBC, c1o54); + (dist.f[dPP0])[kne] = getBounceBackDistributionForVeloBC(f_NE, velocityBC, c1o54); } - q = (subgridD.q[DIR_PM0])[nodeIndex]; + q = (subgridD.q[dPM0])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { VeloX = slipLength*vx1; @@ -1336,10 +1336,10 @@ __global__ void BBSlipDeviceComp27( if (y == true) VeloY = c0o1; velocityBC = VeloX - VeloY; - (dist.f[DIR_MP0])[knw] = getBounceBackDistributionForVeloBC(f_NW, velocityBC, c1o54); + (dist.f[dMP0])[knw] = getBounceBackDistributionForVeloBC(f_NW, velocityBC, c1o54); } - q = (subgridD.q[DIR_MP0])[nodeIndex]; + q = (subgridD.q[dMP0])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { VeloX = slipLength*vx1; @@ -1348,10 +1348,10 @@ __global__ void BBSlipDeviceComp27( if (y == true) VeloY = c0o1; velocityBC = -VeloX + VeloY; - (dist.f[DIR_PM0])[kse] = getBounceBackDistributionForVeloBC(f_SE, velocityBC, c1o54); + (dist.f[dPM0])[kse] = getBounceBackDistributionForVeloBC(f_SE, velocityBC, c1o54); } - q = (subgridD.q[DIR_P0P])[nodeIndex]; + q = (subgridD.q[dP0P])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { VeloX = slipLength*vx1; @@ -1360,10 +1360,10 @@ __global__ void BBSlipDeviceComp27( if (z == true) VeloZ = c0o1; velocityBC = VeloX + VeloZ; - (dist.f[DIR_M0M])[kbw] = getBounceBackDistributionForVeloBC(f_BW, velocityBC, c1o54); + (dist.f[dM0M])[kbw] = getBounceBackDistributionForVeloBC(f_BW, velocityBC, c1o54); } - q = (subgridD.q[DIR_M0M])[nodeIndex]; + q = (subgridD.q[dM0M])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { VeloX = slipLength*vx1; @@ -1372,10 +1372,10 @@ __global__ void BBSlipDeviceComp27( if (z == true) VeloZ = c0o1; velocityBC = -VeloX - VeloZ; - (dist.f[DIR_P0P])[kte] = getBounceBackDistributionForVeloBC(f_TE, velocityBC, c1o54); + (dist.f[dP0P])[kte] = getBounceBackDistributionForVeloBC(f_TE, velocityBC, c1o54); } - q = (subgridD.q[DIR_P0M])[nodeIndex]; + q = (subgridD.q[dP0M])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { VeloX = slipLength*vx1; @@ -1384,10 +1384,10 @@ __global__ void BBSlipDeviceComp27( if (z == true) VeloZ = c0o1; velocityBC = VeloX - VeloZ; - (dist.f[DIR_M0P])[ktw] = getBounceBackDistributionForVeloBC(f_TW, velocityBC, c1o54); + (dist.f[dM0P])[ktw] = getBounceBackDistributionForVeloBC(f_TW, velocityBC, c1o54); } - q = (subgridD.q[DIR_M0P])[nodeIndex]; + q = (subgridD.q[dM0P])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { VeloX = slipLength*vx1; @@ -1396,10 +1396,10 @@ __global__ void BBSlipDeviceComp27( if (z == true) VeloZ = c0o1; velocityBC = -VeloX + VeloZ; - (dist.f[DIR_P0M])[kbe] = getBounceBackDistributionForVeloBC(f_BE, velocityBC, c1o54); + (dist.f[dP0M])[kbe] = getBounceBackDistributionForVeloBC(f_BE, velocityBC, c1o54); } - q = (subgridD.q[DIR_0PP])[nodeIndex]; + q = (subgridD.q[d0PP])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { VeloY = slipLength*vx2; @@ -1408,10 +1408,10 @@ __global__ void BBSlipDeviceComp27( if (z == true) VeloZ = c0o1; velocityBC = VeloY + VeloZ; - (dist.f[DIR_0MM])[kbs] = getBounceBackDistributionForVeloBC(f_BS, velocityBC, c1o54); + (dist.f[d0MM])[kbs] = getBounceBackDistributionForVeloBC(f_BS, velocityBC, c1o54); } - q = (subgridD.q[DIR_0MM])[nodeIndex]; + q = (subgridD.q[d0MM])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { VeloY = slipLength*vx2; @@ -1420,11 +1420,11 @@ __global__ void BBSlipDeviceComp27( if (z == true) VeloZ = c0o1; velocityBC = -VeloY - VeloZ; - (dist.f[DIR_0PP])[ktn] = getBounceBackDistributionForVeloBC(f_TN, velocityBC, c1o54); + (dist.f[d0PP])[ktn] = getBounceBackDistributionForVeloBC(f_TN, velocityBC, c1o54); } - q = (subgridD.q[DIR_0PM])[nodeIndex]; + q = (subgridD.q[d0PM])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { VeloY = slipLength*vx2; @@ -1433,10 +1433,10 @@ __global__ void BBSlipDeviceComp27( if (z == true) VeloZ = c0o1; velocityBC = VeloY - VeloZ; - (dist.f[DIR_0MP])[kts] = getBounceBackDistributionForVeloBC(f_TS, velocityBC, c1o54); + (dist.f[d0MP])[kts] = getBounceBackDistributionForVeloBC(f_TS, velocityBC, c1o54); } - q = (subgridD.q[DIR_0MP])[nodeIndex]; + q = (subgridD.q[d0MP])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { VeloY = slipLength*vx2; @@ -1445,10 +1445,10 @@ __global__ void BBSlipDeviceComp27( if (z == true) VeloZ = c0o1; velocityBC = -VeloY + VeloZ; - (dist.f[DIR_0PM])[kbn] = getBounceBackDistributionForVeloBC(f_BN, velocityBC, c1o54); + (dist.f[d0PM])[kbn] = getBounceBackDistributionForVeloBC(f_BN, velocityBC, c1o54); } - q = (subgridD.q[DIR_PPP])[nodeIndex]; + q = (subgridD.q[dPPP])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { VeloX = slipLength*vx1; @@ -1459,10 +1459,10 @@ __global__ void BBSlipDeviceComp27( if (z == true) VeloZ = c0o1; velocityBC = VeloX + VeloY + VeloZ; - (dist.f[DIR_MMM])[kbsw] = getBounceBackDistributionForVeloBC(f_TNE, velocityBC, c1o216); + (dist.f[dMMM])[kbsw] = getBounceBackDistributionForVeloBC(f_TNE, velocityBC, c1o216); } - q = (subgridD.q[DIR_MMM])[nodeIndex]; + q = (subgridD.q[dMMM])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { VeloX = slipLength*vx1; @@ -1473,11 +1473,11 @@ __global__ void BBSlipDeviceComp27( if (z == true) VeloZ = c0o1; velocityBC = -VeloX - VeloY - VeloZ; - (dist.f[DIR_PPP])[ktne] = getBounceBackDistributionForVeloBC(f_TNE, velocityBC, c1o216); + (dist.f[dPPP])[ktne] = getBounceBackDistributionForVeloBC(f_TNE, velocityBC, c1o216); } - q = (subgridD.q[DIR_PPM])[nodeIndex]; + q = (subgridD.q[dPPM])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { VeloX = slipLength*vx1; @@ -1488,10 +1488,10 @@ __global__ void BBSlipDeviceComp27( if (z == true) VeloZ = c0o1; velocityBC = VeloX + VeloY - VeloZ; - (dist.f[DIR_MMP])[ktsw] = getBounceBackDistributionForVeloBC(f_TSW, velocityBC, c1o216); + (dist.f[dMMP])[ktsw] = getBounceBackDistributionForVeloBC(f_TSW, velocityBC, c1o216); } - q = (subgridD.q[DIR_MMP])[nodeIndex]; + q = (subgridD.q[dMMP])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { VeloX = slipLength*vx1; @@ -1502,10 +1502,10 @@ __global__ void BBSlipDeviceComp27( if (z == true) VeloZ = c0o1; velocityBC = -VeloX - VeloY + VeloZ; - (dist.f[DIR_PPM])[kbne] = getBounceBackDistributionForVeloBC(f_BNE, velocityBC, c1o216); + (dist.f[dPPM])[kbne] = getBounceBackDistributionForVeloBC(f_BNE, velocityBC, c1o216); } - q = (subgridD.q[DIR_PMP])[nodeIndex]; + q = (subgridD.q[dPMP])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { VeloX = slipLength*vx1; @@ -1516,10 +1516,10 @@ __global__ void BBSlipDeviceComp27( if (z == true) VeloZ = c0o1; velocityBC = VeloX - VeloY + VeloZ; - (dist.f[DIR_MPM])[kbnw] = getBounceBackDistributionForVeloBC(f_BNW, velocityBC, c1o216); + (dist.f[dMPM])[kbnw] = getBounceBackDistributionForVeloBC(f_BNW, velocityBC, c1o216); } - q = (subgridD.q[DIR_MPM])[nodeIndex]; + q = (subgridD.q[dMPM])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { VeloX = slipLength*vx1; @@ -1530,10 +1530,10 @@ __global__ void BBSlipDeviceComp27( if (z == true) VeloZ = c0o1; velocityBC = -VeloX + VeloY - VeloZ; - (dist.f[DIR_PMP])[ktse] = getBounceBackDistributionForVeloBC(f_TSE, velocityBC, c1o216); + (dist.f[dPMP])[ktse] = getBounceBackDistributionForVeloBC(f_TSE, velocityBC, c1o216); } - q = (subgridD.q[DIR_PMM])[nodeIndex]; + q = (subgridD.q[dPMM])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { VeloX = slipLength*vx1; @@ -1544,10 +1544,10 @@ __global__ void BBSlipDeviceComp27( if (z == true) VeloZ = c0o1; velocityBC = VeloX - VeloY - VeloZ; - (dist.f[DIR_MPP])[ktnw] = getBounceBackDistributionForVeloBC(f_TNW, velocityBC, c1o216); + (dist.f[dMPP])[ktnw] = getBounceBackDistributionForVeloBC(f_TNW, velocityBC, c1o216); } - q = (subgridD.q[DIR_MPP])[nodeIndex]; + q = (subgridD.q[dMPP])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { VeloX = slipLength*vx1; @@ -1558,7 +1558,7 @@ __global__ void BBSlipDeviceComp27( if (z == true) VeloZ = c0o1; velocityBC = -VeloX + VeloY + VeloZ; - (dist.f[DIR_PMM])[kbse] = getBounceBackDistributionForVeloBC(f_BSE, velocityBC, c1o216); + (dist.f[dPMM])[kbse] = getBounceBackDistributionForVeloBC(f_BSE, velocityBC, c1o216); } } } @@ -1663,39 +1663,39 @@ __global__ void QSlipDeviceComp27TurbViscosity( //////////////////////////////////////////////////////////////////////////////// //! - Set local distributions //! - real f_W = (dist.f[DIR_P00])[ke ]; - real f_E = (dist.f[DIR_M00])[kw ]; - real f_S = (dist.f[DIR_0P0])[kn ]; - real f_N = (dist.f[DIR_0M0])[ks ]; - real f_B = (dist.f[DIR_00P])[kt ]; - real f_T = (dist.f[DIR_00M])[kb ]; - real f_SW = (dist.f[DIR_PP0])[kne ]; - real f_NE = (dist.f[DIR_MM0])[ksw ]; - real f_NW = (dist.f[DIR_PM0])[kse ]; - real f_SE = (dist.f[DIR_MP0])[knw ]; - real f_BW = (dist.f[DIR_P0P])[kte ]; - real f_TE = (dist.f[DIR_M0M])[kbw ]; - real f_TW = (dist.f[DIR_P0M])[kbe ]; - real f_BE = (dist.f[DIR_M0P])[ktw ]; - real f_BS = (dist.f[DIR_0PP])[ktn ]; - real f_TN = (dist.f[DIR_0MM])[kbs ]; - real f_TS = (dist.f[DIR_0PM])[kbn ]; - real f_BN = (dist.f[DIR_0MP])[kts ]; - real f_BSW = (dist.f[DIR_PPP])[ktne ]; - real f_BNE = (dist.f[DIR_MMP])[ktsw ]; - real f_BNW = (dist.f[DIR_PMP])[ktse ]; - real f_BSE = (dist.f[DIR_MPP])[ktnw ]; - real f_TSW = (dist.f[DIR_PPM])[kbne ]; - real f_TNE = (dist.f[DIR_MMM])[kbsw ]; - real f_TNW = (dist.f[DIR_PMM])[kbse ]; - real f_TSE = (dist.f[DIR_MPM])[kbnw ]; + real f_W = (dist.f[dP00])[ke ]; + real f_E = (dist.f[dM00])[kw ]; + real f_S = (dist.f[d0P0])[kn ]; + real f_N = (dist.f[d0M0])[ks ]; + real f_B = (dist.f[d00P])[kt ]; + real f_T = (dist.f[d00M])[kb ]; + real f_SW = (dist.f[dPP0])[kne ]; + real f_NE = (dist.f[dMM0])[ksw ]; + real f_NW = (dist.f[dPM0])[kse ]; + real f_SE = (dist.f[dMP0])[knw ]; + real f_BW = (dist.f[dP0P])[kte ]; + real f_TE = (dist.f[dM0M])[kbw ]; + real f_TW = (dist.f[dP0M])[kbe ]; + real f_BE = (dist.f[dM0P])[ktw ]; + real f_BS = (dist.f[d0PP])[ktn ]; + real f_TN = (dist.f[d0MM])[kbs ]; + real f_TS = (dist.f[d0PM])[kbn ]; + real f_BN = (dist.f[d0MP])[kts ]; + real f_BSW = (dist.f[dPPP])[ktne ]; + real f_BNE = (dist.f[dMMP])[ktsw ]; + real f_BNW = (dist.f[dPMP])[ktse ]; + real f_BSE = (dist.f[dMPP])[ktnw ]; + real f_TSW = (dist.f[dPPM])[kbne ]; + real f_TNE = (dist.f[dMMM])[kbsw ]; + real f_TNW = (dist.f[dPMM])[kbse ]; + real f_TSE = (dist.f[dMPM])[kbnw ]; //////////////////////////////////////////////////////////////////////////////// //! - 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[DIR_000])[kzero]); + f_T + f_B + f_N + f_S + f_E + f_W + ((dist.f[d000])[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)) + @@ -1738,7 +1738,7 @@ __global__ void QSlipDeviceComp27TurbViscosity( bool y = false; bool z = false; - q = (subgridD.q[DIR_P00])[nodeIndex]; + q = (subgridD.q[dP00])[nodeIndex]; if (q>=c0o1 && q<=c1o1) // only update distribution for q between zero and one { VeloX = c0o1; @@ -1747,10 +1747,10 @@ __global__ void QSlipDeviceComp27TurbViscosity( velocityLB = vx1; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c2o27); velocityBC = VeloX; - (dist.f[DIR_M00])[kw] = getInterpolatedDistributionForVeloBC(q, f_E, f_W, feq, om_turb, velocityBC, c2o27); + (dist.f[dM00])[kw] = getInterpolatedDistributionForVeloBC(q, f_E, f_W, feq, om_turb, velocityBC, c2o27); } - q = (subgridD.q[DIR_M00])[nodeIndex]; + q = (subgridD.q[dM00])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { VeloX = c0o1; @@ -1759,10 +1759,10 @@ __global__ void QSlipDeviceComp27TurbViscosity( velocityLB = -vx1; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c2o27); velocityBC = -VeloX; - (dist.f[DIR_P00])[ke] = getInterpolatedDistributionForVeloBC(q, f_W, f_E, feq, om_turb, velocityBC, c2o27); + (dist.f[dP00])[ke] = getInterpolatedDistributionForVeloBC(q, f_W, f_E, feq, om_turb, velocityBC, c2o27); } - q = (subgridD.q[DIR_0P0])[nodeIndex]; + q = (subgridD.q[d0P0])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { VeloY = c0o1; @@ -1771,10 +1771,10 @@ __global__ void QSlipDeviceComp27TurbViscosity( velocityLB = vx2; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c2o27); velocityBC = VeloY; - (dist.f[DIR_0M0])[ks] = getInterpolatedDistributionForVeloBC(q, f_N, f_S, feq, om_turb, velocityBC, c2o27); + (dist.f[d0M0])[ks] = getInterpolatedDistributionForVeloBC(q, f_N, f_S, feq, om_turb, velocityBC, c2o27); } - q = (subgridD.q[DIR_0M0])[nodeIndex]; + q = (subgridD.q[d0M0])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { VeloY = c0o1; @@ -1783,10 +1783,10 @@ __global__ void QSlipDeviceComp27TurbViscosity( velocityLB = -vx2; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c2o27); velocityBC = -VeloY; - (dist.f[DIR_0P0])[kn] = getInterpolatedDistributionForVeloBC(q, f_S, f_N, feq, om_turb, velocityBC, c2o27); + (dist.f[d0P0])[kn] = getInterpolatedDistributionForVeloBC(q, f_S, f_N, feq, om_turb, velocityBC, c2o27); } - q = (subgridD.q[DIR_00P])[nodeIndex]; + q = (subgridD.q[d00P])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { VeloZ = c0o1; @@ -1795,10 +1795,10 @@ __global__ void QSlipDeviceComp27TurbViscosity( velocityLB = vx3; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c2o27); velocityBC = VeloZ; - (dist.f[DIR_00M])[kb] = getInterpolatedDistributionForVeloBC(q, f_T, f_B, feq, om_turb, velocityBC, c2o27); + (dist.f[d00M])[kb] = getInterpolatedDistributionForVeloBC(q, f_T, f_B, feq, om_turb, velocityBC, c2o27); } - q = (subgridD.q[DIR_00M])[nodeIndex]; + q = (subgridD.q[d00M])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { VeloZ = c0o1; @@ -1807,10 +1807,10 @@ __global__ void QSlipDeviceComp27TurbViscosity( velocityLB = -vx3; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c2o27); velocityBC = -VeloZ; - (dist.f[DIR_00P])[kt] = getInterpolatedDistributionForVeloBC(q, f_B, f_T, feq, om_turb, velocityBC, c2o27); + (dist.f[d00P])[kt] = getInterpolatedDistributionForVeloBC(q, f_B, f_T, feq, om_turb, velocityBC, c2o27); } - q = (subgridD.q[DIR_PP0])[nodeIndex]; + q = (subgridD.q[dPP0])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { VeloX = slipLength*vx1; @@ -1821,10 +1821,10 @@ __global__ void QSlipDeviceComp27TurbViscosity( velocityLB = vx1 + vx2; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); velocityBC = VeloX + VeloY; - (dist.f[DIR_MM0])[ksw] = getInterpolatedDistributionForVeloBC(q, f_NE, f_SW, feq, om_turb, velocityBC, c1o54); + (dist.f[dMM0])[ksw] = getInterpolatedDistributionForVeloBC(q, f_NE, f_SW, feq, om_turb, velocityBC, c1o54); } - q = (subgridD.q[DIR_MM0])[nodeIndex]; + q = (subgridD.q[dMM0])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { VeloX = slipLength*vx1; @@ -1835,10 +1835,10 @@ __global__ void QSlipDeviceComp27TurbViscosity( velocityLB = -vx1 - vx2; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); velocityBC = -VeloX - VeloY; - (dist.f[DIR_PP0])[kne] = getInterpolatedDistributionForVeloBC(q, f_SW, f_NE, feq, om_turb, velocityBC, c1o54); + (dist.f[dPP0])[kne] = getInterpolatedDistributionForVeloBC(q, f_SW, f_NE, feq, om_turb, velocityBC, c1o54); } - q = (subgridD.q[DIR_PM0])[nodeIndex]; + q = (subgridD.q[dPM0])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { VeloX = slipLength*vx1; @@ -1849,10 +1849,10 @@ __global__ void QSlipDeviceComp27TurbViscosity( velocityLB = vx1 - vx2; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); velocityBC = VeloX - VeloY; - (dist.f[DIR_MP0])[knw] = getInterpolatedDistributionForVeloBC(q, f_SE, f_NW, feq, om_turb, velocityBC, c1o54); + (dist.f[dMP0])[knw] = getInterpolatedDistributionForVeloBC(q, f_SE, f_NW, feq, om_turb, velocityBC, c1o54); } - q = (subgridD.q[DIR_MP0])[nodeIndex]; + q = (subgridD.q[dMP0])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { VeloX = slipLength*vx1; @@ -1863,10 +1863,10 @@ __global__ void QSlipDeviceComp27TurbViscosity( velocityLB = -vx1 + vx2; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); velocityBC = -VeloX + VeloY; - (dist.f[DIR_PM0])[kse] = getInterpolatedDistributionForVeloBC(q, f_NW, f_SE, feq, om_turb, velocityBC, c1o54); + (dist.f[dPM0])[kse] = getInterpolatedDistributionForVeloBC(q, f_NW, f_SE, feq, om_turb, velocityBC, c1o54); } - q = (subgridD.q[DIR_P0P])[nodeIndex]; + q = (subgridD.q[dP0P])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { VeloX = slipLength*vx1; @@ -1877,10 +1877,10 @@ __global__ void QSlipDeviceComp27TurbViscosity( velocityLB = vx1 + vx3; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); velocityBC = VeloX + VeloZ; - (dist.f[DIR_M0M])[kbw] = getInterpolatedDistributionForVeloBC(q, f_TE, f_BW, feq, om_turb, velocityBC, c1o54); + (dist.f[dM0M])[kbw] = getInterpolatedDistributionForVeloBC(q, f_TE, f_BW, feq, om_turb, velocityBC, c1o54); } - q = (subgridD.q[DIR_M0M])[nodeIndex]; + q = (subgridD.q[dM0M])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { VeloX = slipLength*vx1; @@ -1891,10 +1891,10 @@ __global__ void QSlipDeviceComp27TurbViscosity( velocityLB = -vx1 - vx3; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); velocityBC = -VeloX - VeloZ; - (dist.f[DIR_P0P])[kte] = getInterpolatedDistributionForVeloBC(q, f_BW, f_TE, feq, om_turb, velocityBC, c1o54); + (dist.f[dP0P])[kte] = getInterpolatedDistributionForVeloBC(q, f_BW, f_TE, feq, om_turb, velocityBC, c1o54); } - q = (subgridD.q[DIR_P0M])[nodeIndex]; + q = (subgridD.q[dP0M])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { VeloX = slipLength*vx1; @@ -1905,10 +1905,10 @@ __global__ void QSlipDeviceComp27TurbViscosity( velocityLB = vx1 - vx3; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); velocityBC = VeloX - VeloZ; - (dist.f[DIR_M0P])[ktw] = getInterpolatedDistributionForVeloBC(q, f_BE, f_TW, feq, om_turb, velocityBC, c1o54); + (dist.f[dM0P])[ktw] = getInterpolatedDistributionForVeloBC(q, f_BE, f_TW, feq, om_turb, velocityBC, c1o54); } - q = (subgridD.q[DIR_M0P])[nodeIndex]; + q = (subgridD.q[dM0P])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { VeloX = slipLength*vx1; @@ -1919,10 +1919,10 @@ __global__ void QSlipDeviceComp27TurbViscosity( velocityLB = -vx1 + vx3; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); velocityBC = -VeloX + VeloZ; - (dist.f[DIR_P0M])[kbe] = getInterpolatedDistributionForVeloBC(q, f_TW, f_BE, feq, om_turb, velocityBC, c1o54); + (dist.f[dP0M])[kbe] = getInterpolatedDistributionForVeloBC(q, f_TW, f_BE, feq, om_turb, velocityBC, c1o54); } - q = (subgridD.q[DIR_0PP])[nodeIndex]; + q = (subgridD.q[d0PP])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { VeloY = slipLength*vx2; @@ -1933,10 +1933,10 @@ __global__ void QSlipDeviceComp27TurbViscosity( velocityLB = vx2 + vx3; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); velocityBC = VeloY + VeloZ; - (dist.f[DIR_0MM])[kbs] = getInterpolatedDistributionForVeloBC(q, f_TN, f_BS, feq, om_turb, velocityBC, c1o54); + (dist.f[d0MM])[kbs] = getInterpolatedDistributionForVeloBC(q, f_TN, f_BS, feq, om_turb, velocityBC, c1o54); } - q = (subgridD.q[DIR_0MM])[nodeIndex]; + q = (subgridD.q[d0MM])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { VeloY = slipLength*vx2; @@ -1947,11 +1947,11 @@ __global__ void QSlipDeviceComp27TurbViscosity( velocityLB = -vx2 - vx3; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); velocityBC = -VeloY - VeloZ; - (dist.f[DIR_0PP])[ktn] = getInterpolatedDistributionForVeloBC(q, f_BS, f_TN, feq, om_turb, velocityBC, c1o54); + (dist.f[d0PP])[ktn] = getInterpolatedDistributionForVeloBC(q, f_BS, f_TN, feq, om_turb, velocityBC, c1o54); } - q = (subgridD.q[DIR_0PM])[nodeIndex]; + q = (subgridD.q[d0PM])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { VeloY = slipLength*vx2; @@ -1962,10 +1962,10 @@ __global__ void QSlipDeviceComp27TurbViscosity( velocityLB = vx2 - vx3; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); velocityBC = VeloY - VeloZ; - (dist.f[DIR_0MP])[kts] = getInterpolatedDistributionForVeloBC(q, f_BN, f_TS, feq, om_turb, velocityBC, c1o54); + (dist.f[d0MP])[kts] = getInterpolatedDistributionForVeloBC(q, f_BN, f_TS, feq, om_turb, velocityBC, c1o54); } - q = (subgridD.q[DIR_0MP])[nodeIndex]; + q = (subgridD.q[d0MP])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { VeloY = slipLength*vx2; @@ -1976,10 +1976,10 @@ __global__ void QSlipDeviceComp27TurbViscosity( velocityLB = -vx2 + vx3; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); velocityBC = -VeloY + VeloZ; - (dist.f[DIR_0PM])[kbn] = getInterpolatedDistributionForVeloBC(q, f_TS, f_BN, feq, om_turb, velocityBC, c1o54); + (dist.f[d0PM])[kbn] = getInterpolatedDistributionForVeloBC(q, f_TS, f_BN, feq, om_turb, velocityBC, c1o54); } - q = (subgridD.q[DIR_PPP])[nodeIndex]; + q = (subgridD.q[dPPP])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { VeloX = slipLength*vx1; @@ -1991,10 +1991,10 @@ __global__ void QSlipDeviceComp27TurbViscosity( velocityLB = vx1 + vx2 + vx3; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); velocityBC = VeloX + VeloY + VeloZ; - (dist.f[DIR_MMM])[kbsw] = getInterpolatedDistributionForVeloBC(q, f_TNE, f_BSW, feq, om_turb, velocityBC, c1o216); + (dist.f[dMMM])[kbsw] = getInterpolatedDistributionForVeloBC(q, f_TNE, f_BSW, feq, om_turb, velocityBC, c1o216); } - q = (subgridD.q[DIR_MMM])[nodeIndex]; + q = (subgridD.q[dMMM])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { VeloX = slipLength*vx1; @@ -2006,11 +2006,11 @@ __global__ void QSlipDeviceComp27TurbViscosity( velocityLB = -vx1 - vx2 - vx3; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); velocityBC = -VeloX - VeloY - VeloZ; - (dist.f[DIR_PPP])[ktne] = getInterpolatedDistributionForVeloBC(q, f_BSW, f_TNE, feq, om_turb, velocityBC, c1o216); + (dist.f[dPPP])[ktne] = getInterpolatedDistributionForVeloBC(q, f_BSW, f_TNE, feq, om_turb, velocityBC, c1o216); } - q = (subgridD.q[DIR_PPM])[nodeIndex]; + q = (subgridD.q[dPPM])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { VeloX = slipLength*vx1; @@ -2022,10 +2022,10 @@ __global__ void QSlipDeviceComp27TurbViscosity( velocityLB = vx1 + vx2 - vx3; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); velocityBC = VeloX + VeloY - VeloZ; - (dist.f[DIR_MMP])[ktsw] = getInterpolatedDistributionForVeloBC(q, f_BNE, f_TSW, feq, om_turb, velocityBC, c1o216); + (dist.f[dMMP])[ktsw] = getInterpolatedDistributionForVeloBC(q, f_BNE, f_TSW, feq, om_turb, velocityBC, c1o216); } - q = (subgridD.q[DIR_MMP])[nodeIndex]; + q = (subgridD.q[dMMP])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { VeloX = slipLength*vx1; @@ -2037,10 +2037,10 @@ __global__ void QSlipDeviceComp27TurbViscosity( velocityLB = -vx1 - vx2 + vx3; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); velocityBC = -VeloX - VeloY + VeloZ; - (dist.f[DIR_PPM])[kbne] = getInterpolatedDistributionForVeloBC(q, f_TSW, f_BNE, feq, om_turb, velocityBC, c1o216); + (dist.f[dPPM])[kbne] = getInterpolatedDistributionForVeloBC(q, f_TSW, f_BNE, feq, om_turb, velocityBC, c1o216); } - q = (subgridD.q[DIR_PMP])[nodeIndex]; + q = (subgridD.q[dPMP])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { VeloX = slipLength*vx1; @@ -2052,10 +2052,10 @@ __global__ void QSlipDeviceComp27TurbViscosity( velocityLB = vx1 - vx2 + vx3; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); velocityBC = VeloX - VeloY + VeloZ; - (dist.f[DIR_MPM])[kbnw] = getInterpolatedDistributionForVeloBC(q, f_TSE, f_BNW, feq, om_turb, velocityBC, c1o216); + (dist.f[dMPM])[kbnw] = getInterpolatedDistributionForVeloBC(q, f_TSE, f_BNW, feq, om_turb, velocityBC, c1o216); } - q = (subgridD.q[DIR_MPM])[nodeIndex]; + q = (subgridD.q[dMPM])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { VeloX = slipLength*vx1; @@ -2067,10 +2067,10 @@ __global__ void QSlipDeviceComp27TurbViscosity( velocityLB = -vx1 + vx2 - vx3; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); velocityBC = -VeloX + VeloY - VeloZ; - (dist.f[DIR_PMP])[ktse] = getInterpolatedDistributionForVeloBC(q, f_BNW, f_TSE, feq, om_turb, velocityBC, c1o216); + (dist.f[dPMP])[ktse] = getInterpolatedDistributionForVeloBC(q, f_BNW, f_TSE, feq, om_turb, velocityBC, c1o216); } - q = (subgridD.q[DIR_PMM])[nodeIndex]; + q = (subgridD.q[dPMM])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { VeloX = slipLength*vx1; @@ -2082,10 +2082,10 @@ __global__ void QSlipDeviceComp27TurbViscosity( velocityLB = vx1 - vx2 - vx3; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); velocityBC = VeloX - VeloY - VeloZ; - (dist.f[DIR_MPP])[ktnw] = getInterpolatedDistributionForVeloBC(q, f_BSE, f_TNW, feq, om_turb, velocityBC, c1o216); + (dist.f[dMPP])[ktnw] = getInterpolatedDistributionForVeloBC(q, f_BSE, f_TNW, feq, om_turb, velocityBC, c1o216); } - q = (subgridD.q[DIR_MPP])[nodeIndex]; + q = (subgridD.q[dMPP])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { VeloX = slipLength*vx1; @@ -2097,7 +2097,7 @@ __global__ void QSlipDeviceComp27TurbViscosity( velocityLB = -vx1 + vx2 + vx3; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); velocityBC = -VeloX + VeloY + VeloZ; - (dist.f[DIR_PMM])[kbse] = getInterpolatedDistributionForVeloBC(q, f_TNW, f_BSE, feq, om_turb, velocityBC, c1o216); + (dist.f[dPMM])[kbse] = getInterpolatedDistributionForVeloBC(q, f_TNW, f_BSE, feq, om_turb, velocityBC, c1o216); } } } @@ -2203,39 +2203,39 @@ __global__ void QSlipPressureDeviceComp27TurbViscosity( //////////////////////////////////////////////////////////////////////////////// //! - Set local distributions //! - real f_W = (dist.f[DIR_P00])[ke ]; - real f_E = (dist.f[DIR_M00])[kw ]; - real f_S = (dist.f[DIR_0P0])[kn ]; - real f_N = (dist.f[DIR_0M0])[ks ]; - real f_B = (dist.f[DIR_00P])[kt ]; - real f_T = (dist.f[DIR_00M])[kb ]; - real f_SW = (dist.f[DIR_PP0])[kne ]; - real f_NE = (dist.f[DIR_MM0])[ksw ]; - real f_NW = (dist.f[DIR_PM0])[kse ]; - real f_SE = (dist.f[DIR_MP0])[knw ]; - real f_BW = (dist.f[DIR_P0P])[kte ]; - real f_TE = (dist.f[DIR_M0M])[kbw ]; - real f_TW = (dist.f[DIR_P0M])[kbe ]; - real f_BE = (dist.f[DIR_M0P])[ktw ]; - real f_BS = (dist.f[DIR_0PP])[ktn ]; - real f_TN = (dist.f[DIR_0MM])[kbs ]; - real f_TS = (dist.f[DIR_0PM])[kbn ]; - real f_BN = (dist.f[DIR_0MP])[kts ]; - real f_BSW = (dist.f[DIR_PPP])[ktne ]; - real f_BNE = (dist.f[DIR_MMP])[ktsw ]; - real f_BNW = (dist.f[DIR_PMP])[ktse ]; - real f_BSE = (dist.f[DIR_MPP])[ktnw ]; - real f_TSW = (dist.f[DIR_PPM])[kbne ]; - real f_TNE = (dist.f[DIR_MMM])[kbsw ]; - real f_TNW = (dist.f[DIR_PMM])[kbse ]; - real f_TSE = (dist.f[DIR_MPM])[kbnw ]; + real f_W = (dist.f[dP00])[ke ]; + real f_E = (dist.f[dM00])[kw ]; + real f_S = (dist.f[d0P0])[kn ]; + real f_N = (dist.f[d0M0])[ks ]; + real f_B = (dist.f[d00P])[kt ]; + real f_T = (dist.f[d00M])[kb ]; + real f_SW = (dist.f[dPP0])[kne ]; + real f_NE = (dist.f[dMM0])[ksw ]; + real f_NW = (dist.f[dPM0])[kse ]; + real f_SE = (dist.f[dMP0])[knw ]; + real f_BW = (dist.f[dP0P])[kte ]; + real f_TE = (dist.f[dM0M])[kbw ]; + real f_TW = (dist.f[dP0M])[kbe ]; + real f_BE = (dist.f[dM0P])[ktw ]; + real f_BS = (dist.f[d0PP])[ktn ]; + real f_TN = (dist.f[d0MM])[kbs ]; + real f_TS = (dist.f[d0PM])[kbn ]; + real f_BN = (dist.f[d0MP])[kts ]; + real f_BSW = (dist.f[dPPP])[ktne ]; + real f_BNE = (dist.f[dMMP])[ktsw ]; + real f_BNW = (dist.f[dPMP])[ktse ]; + real f_BSE = (dist.f[dMPP])[ktnw ]; + real f_TSW = (dist.f[dPPM])[kbne ]; + real f_TNE = (dist.f[dMMM])[kbsw ]; + real f_TNW = (dist.f[dPMM])[kbse ]; + real f_TSE = (dist.f[dMPM])[kbnw ]; //////////////////////////////////////////////////////////////////////////////// //! - 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[DIR_000])[kzero]); + f_T + f_B + f_N + f_S + f_E + f_W + ((dist.f[d000])[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)) + @@ -2278,7 +2278,7 @@ __global__ void QSlipPressureDeviceComp27TurbViscosity( bool y = false; bool z = false; - q = (subgridD.q[DIR_P00])[nodeIndex]; + q = (subgridD.q[dP00])[nodeIndex]; if (q>=c0o1 && q<=c1o1) // only update distribution for q between zero and one { VeloX = c0o1; @@ -2287,10 +2287,10 @@ __global__ void QSlipPressureDeviceComp27TurbViscosity( velocityLB = vx1; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c2o27); velocityBC = VeloX; - (dist.f[DIR_M00])[kw] = getInterpolatedDistributionForVeloWithPressureBC(q, f_E, f_W, feq, om_turb, drho, velocityBC, c2o27); + (dist.f[dM00])[kw] = getInterpolatedDistributionForVeloWithPressureBC(q, f_E, f_W, feq, om_turb, drho, velocityBC, c2o27); } - q = (subgridD.q[DIR_M00])[nodeIndex]; + q = (subgridD.q[dM00])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { VeloX = c0o1; @@ -2299,10 +2299,10 @@ __global__ void QSlipPressureDeviceComp27TurbViscosity( velocityLB = -vx1; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c2o27); velocityBC = -VeloX; - (dist.f[DIR_P00])[ke] = getInterpolatedDistributionForVeloWithPressureBC(q, f_W, f_E, feq, om_turb, drho, velocityBC, c2o27); + (dist.f[dP00])[ke] = getInterpolatedDistributionForVeloWithPressureBC(q, f_W, f_E, feq, om_turb, drho, velocityBC, c2o27); } - q = (subgridD.q[DIR_0P0])[nodeIndex]; + q = (subgridD.q[d0P0])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { VeloY = c0o1; @@ -2311,10 +2311,10 @@ __global__ void QSlipPressureDeviceComp27TurbViscosity( velocityLB = vx2; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c2o27); velocityBC = VeloY; - (dist.f[DIR_0M0])[ks] = getInterpolatedDistributionForVeloWithPressureBC(q, f_N, f_S, feq, om_turb, drho, velocityBC, c2o27); + (dist.f[d0M0])[ks] = getInterpolatedDistributionForVeloWithPressureBC(q, f_N, f_S, feq, om_turb, drho, velocityBC, c2o27); } - q = (subgridD.q[DIR_0M0])[nodeIndex]; + q = (subgridD.q[d0M0])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { VeloY = c0o1; @@ -2323,10 +2323,10 @@ __global__ void QSlipPressureDeviceComp27TurbViscosity( velocityLB = -vx2; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c2o27); velocityBC = -VeloY; - (dist.f[DIR_0P0])[kn] = getInterpolatedDistributionForVeloWithPressureBC(q, f_S, f_N, feq, om_turb, drho, velocityBC, c2o27); + (dist.f[d0P0])[kn] = getInterpolatedDistributionForVeloWithPressureBC(q, f_S, f_N, feq, om_turb, drho, velocityBC, c2o27); } - q = (subgridD.q[DIR_00P])[nodeIndex]; + q = (subgridD.q[d00P])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { VeloZ = c0o1; @@ -2335,10 +2335,10 @@ __global__ void QSlipPressureDeviceComp27TurbViscosity( velocityLB = vx3; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c2o27); velocityBC = VeloZ; - (dist.f[DIR_00M])[kb] = getInterpolatedDistributionForVeloWithPressureBC(q, f_T, f_B, feq, om_turb, drho, velocityBC, c2o27); + (dist.f[d00M])[kb] = getInterpolatedDistributionForVeloWithPressureBC(q, f_T, f_B, feq, om_turb, drho, velocityBC, c2o27); } - q = (subgridD.q[DIR_00M])[nodeIndex]; + q = (subgridD.q[d00M])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { VeloZ = c0o1; @@ -2347,10 +2347,10 @@ __global__ void QSlipPressureDeviceComp27TurbViscosity( velocityLB = -vx3; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c2o27); velocityBC = -VeloZ; - (dist.f[DIR_00P])[kt] = getInterpolatedDistributionForVeloWithPressureBC(q, f_B, f_T, feq, om_turb, drho, velocityBC, c2o27); + (dist.f[d00P])[kt] = getInterpolatedDistributionForVeloWithPressureBC(q, f_B, f_T, feq, om_turb, drho, velocityBC, c2o27); } - q = (subgridD.q[DIR_PP0])[nodeIndex]; + q = (subgridD.q[dPP0])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { VeloX = slipLength*vx1; @@ -2361,10 +2361,10 @@ __global__ void QSlipPressureDeviceComp27TurbViscosity( velocityLB = vx1 + vx2; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); velocityBC = VeloX + VeloY; - (dist.f[DIR_MM0])[ksw] = getInterpolatedDistributionForVeloWithPressureBC(q, f_NE, f_SW, feq, om_turb, drho, velocityBC, c1o54); + (dist.f[dMM0])[ksw] = getInterpolatedDistributionForVeloWithPressureBC(q, f_NE, f_SW, feq, om_turb, drho, velocityBC, c1o54); } - q = (subgridD.q[DIR_MM0])[nodeIndex]; + q = (subgridD.q[dMM0])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { VeloX = slipLength*vx1; @@ -2375,10 +2375,10 @@ __global__ void QSlipPressureDeviceComp27TurbViscosity( velocityLB = -vx1 - vx2; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); velocityBC = -VeloX - VeloY; - (dist.f[DIR_PP0])[kne] = getInterpolatedDistributionForVeloWithPressureBC(q, f_SW, f_NE, feq, om_turb, drho, velocityBC, c1o54); + (dist.f[dPP0])[kne] = getInterpolatedDistributionForVeloWithPressureBC(q, f_SW, f_NE, feq, om_turb, drho, velocityBC, c1o54); } - q = (subgridD.q[DIR_PM0])[nodeIndex]; + q = (subgridD.q[dPM0])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { VeloX = slipLength*vx1; @@ -2389,10 +2389,10 @@ __global__ void QSlipPressureDeviceComp27TurbViscosity( velocityLB = vx1 - vx2; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); velocityBC = VeloX - VeloY; - (dist.f[DIR_MP0])[knw] = getInterpolatedDistributionForVeloWithPressureBC(q, f_SE, f_NW, feq, om_turb, drho, velocityBC, c1o54); + (dist.f[dMP0])[knw] = getInterpolatedDistributionForVeloWithPressureBC(q, f_SE, f_NW, feq, om_turb, drho, velocityBC, c1o54); } - q = (subgridD.q[DIR_MP0])[nodeIndex]; + q = (subgridD.q[dMP0])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { VeloX = slipLength*vx1; @@ -2403,10 +2403,10 @@ __global__ void QSlipPressureDeviceComp27TurbViscosity( velocityLB = -vx1 + vx2; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); velocityBC = -VeloX + VeloY; - (dist.f[DIR_PM0])[kse] = getInterpolatedDistributionForVeloWithPressureBC(q, f_NW, f_SE, feq, om_turb, drho, velocityBC, c1o54); + (dist.f[dPM0])[kse] = getInterpolatedDistributionForVeloWithPressureBC(q, f_NW, f_SE, feq, om_turb, drho, velocityBC, c1o54); } - q = (subgridD.q[DIR_P0P])[nodeIndex]; + q = (subgridD.q[dP0P])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { VeloX = slipLength*vx1; @@ -2417,10 +2417,10 @@ __global__ void QSlipPressureDeviceComp27TurbViscosity( velocityLB = vx1 + vx3; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); velocityBC = VeloX + VeloZ; - (dist.f[DIR_M0M])[kbw] = getInterpolatedDistributionForVeloWithPressureBC(q, f_TE, f_BW, feq, om_turb, drho, velocityBC, c1o54); + (dist.f[dM0M])[kbw] = getInterpolatedDistributionForVeloWithPressureBC(q, f_TE, f_BW, feq, om_turb, drho, velocityBC, c1o54); } - q = (subgridD.q[DIR_M0M])[nodeIndex]; + q = (subgridD.q[dM0M])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { VeloX = slipLength*vx1; @@ -2431,10 +2431,10 @@ __global__ void QSlipPressureDeviceComp27TurbViscosity( velocityLB = -vx1 - vx3; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); velocityBC = -VeloX - VeloZ; - (dist.f[DIR_P0P])[kte] = getInterpolatedDistributionForVeloWithPressureBC(q, f_BW, f_TE, feq, om_turb, drho, velocityBC, c1o54); + (dist.f[dP0P])[kte] = getInterpolatedDistributionForVeloWithPressureBC(q, f_BW, f_TE, feq, om_turb, drho, velocityBC, c1o54); } - q = (subgridD.q[DIR_P0M])[nodeIndex]; + q = (subgridD.q[dP0M])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { VeloX = slipLength*vx1; @@ -2445,10 +2445,10 @@ __global__ void QSlipPressureDeviceComp27TurbViscosity( velocityLB = vx1 - vx3; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); velocityBC = VeloX - VeloZ; - (dist.f[DIR_M0P])[ktw] = getInterpolatedDistributionForVeloWithPressureBC(q, f_BE, f_TW, feq, om_turb, drho, velocityBC, c1o54); + (dist.f[dM0P])[ktw] = getInterpolatedDistributionForVeloWithPressureBC(q, f_BE, f_TW, feq, om_turb, drho, velocityBC, c1o54); } - q = (subgridD.q[DIR_M0P])[nodeIndex]; + q = (subgridD.q[dM0P])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { VeloX = slipLength*vx1; @@ -2459,10 +2459,10 @@ __global__ void QSlipPressureDeviceComp27TurbViscosity( velocityLB = -vx1 + vx3; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); velocityBC = -VeloX + VeloZ; - (dist.f[DIR_P0M])[kbe] = getInterpolatedDistributionForVeloWithPressureBC(q, f_TW, f_BE, feq, om_turb, drho, velocityBC, c1o54); + (dist.f[dP0M])[kbe] = getInterpolatedDistributionForVeloWithPressureBC(q, f_TW, f_BE, feq, om_turb, drho, velocityBC, c1o54); } - q = (subgridD.q[DIR_0PP])[nodeIndex]; + q = (subgridD.q[d0PP])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { VeloY = slipLength*vx2; @@ -2473,10 +2473,10 @@ __global__ void QSlipPressureDeviceComp27TurbViscosity( velocityLB = vx2 + vx3; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); velocityBC = VeloY + VeloZ; - (dist.f[DIR_0MM])[kbs] = getInterpolatedDistributionForVeloWithPressureBC(q, f_TN, f_BS, feq, om_turb, drho, velocityBC, c1o54); + (dist.f[d0MM])[kbs] = getInterpolatedDistributionForVeloWithPressureBC(q, f_TN, f_BS, feq, om_turb, drho, velocityBC, c1o54); } - q = (subgridD.q[DIR_0MM])[nodeIndex]; + q = (subgridD.q[d0MM])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { VeloY = slipLength*vx2; @@ -2487,11 +2487,11 @@ __global__ void QSlipPressureDeviceComp27TurbViscosity( velocityLB = -vx2 - vx3; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); velocityBC = -VeloY - VeloZ; - (dist.f[DIR_0PP])[ktn] = getInterpolatedDistributionForVeloWithPressureBC(q, f_BS, f_TN, feq, om_turb, drho, velocityBC, c1o54); + (dist.f[d0PP])[ktn] = getInterpolatedDistributionForVeloWithPressureBC(q, f_BS, f_TN, feq, om_turb, drho, velocityBC, c1o54); } - q = (subgridD.q[DIR_0PM])[nodeIndex]; + q = (subgridD.q[d0PM])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { VeloY = slipLength*vx2; @@ -2502,10 +2502,10 @@ __global__ void QSlipPressureDeviceComp27TurbViscosity( velocityLB = vx2 - vx3; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); velocityBC = VeloY - VeloZ; - (dist.f[DIR_0MP])[kts] = getInterpolatedDistributionForVeloWithPressureBC(q, f_BN, f_TS, feq, om_turb, drho, velocityBC, c1o54); + (dist.f[d0MP])[kts] = getInterpolatedDistributionForVeloWithPressureBC(q, f_BN, f_TS, feq, om_turb, drho, velocityBC, c1o54); } - q = (subgridD.q[DIR_0MP])[nodeIndex]; + q = (subgridD.q[d0MP])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { VeloY = slipLength*vx2; @@ -2516,10 +2516,10 @@ __global__ void QSlipPressureDeviceComp27TurbViscosity( velocityLB = -vx2 + vx3; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); velocityBC = -VeloY + VeloZ; - (dist.f[DIR_0PM])[kbn] = getInterpolatedDistributionForVeloWithPressureBC(q, f_TS, f_BN, feq, om_turb, drho, velocityBC, c1o54); + (dist.f[d0PM])[kbn] = getInterpolatedDistributionForVeloWithPressureBC(q, f_TS, f_BN, feq, om_turb, drho, velocityBC, c1o54); } - q = (subgridD.q[DIR_PPP])[nodeIndex]; + q = (subgridD.q[dPPP])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { VeloX = slipLength*vx1; @@ -2531,10 +2531,10 @@ __global__ void QSlipPressureDeviceComp27TurbViscosity( velocityLB = vx1 + vx2 + vx3; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); velocityBC = VeloX + VeloY + VeloZ; - (dist.f[DIR_MMM])[kbsw] = getInterpolatedDistributionForVeloWithPressureBC(q, f_TNE, f_BSW, feq, om_turb, drho, velocityBC, c1o216); + (dist.f[dMMM])[kbsw] = getInterpolatedDistributionForVeloWithPressureBC(q, f_TNE, f_BSW, feq, om_turb, drho, velocityBC, c1o216); } - q = (subgridD.q[DIR_MMM])[nodeIndex]; + q = (subgridD.q[dMMM])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { VeloX = slipLength*vx1; @@ -2546,11 +2546,11 @@ __global__ void QSlipPressureDeviceComp27TurbViscosity( velocityLB = -vx1 - vx2 - vx3; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); velocityBC = -VeloX - VeloY - VeloZ; - (dist.f[DIR_PPP])[ktne] = getInterpolatedDistributionForVeloWithPressureBC(q, f_BSW, f_TNE, feq, om_turb, drho, velocityBC, c1o216); + (dist.f[dPPP])[ktne] = getInterpolatedDistributionForVeloWithPressureBC(q, f_BSW, f_TNE, feq, om_turb, drho, velocityBC, c1o216); } - q = (subgridD.q[DIR_PPM])[nodeIndex]; + q = (subgridD.q[dPPM])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { VeloX = slipLength*vx1; @@ -2562,10 +2562,10 @@ __global__ void QSlipPressureDeviceComp27TurbViscosity( velocityLB = vx1 + vx2 - vx3; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); velocityBC = VeloX + VeloY - VeloZ; - (dist.f[DIR_MMP])[ktsw] = getInterpolatedDistributionForVeloWithPressureBC(q, f_BNE, f_TSW, feq, om_turb, drho, velocityBC, c1o216); + (dist.f[dMMP])[ktsw] = getInterpolatedDistributionForVeloWithPressureBC(q, f_BNE, f_TSW, feq, om_turb, drho, velocityBC, c1o216); } - q = (subgridD.q[DIR_MMP])[nodeIndex]; + q = (subgridD.q[dMMP])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { VeloX = slipLength*vx1; @@ -2577,10 +2577,10 @@ __global__ void QSlipPressureDeviceComp27TurbViscosity( velocityLB = -vx1 - vx2 + vx3; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); velocityBC = -VeloX - VeloY + VeloZ; - (dist.f[DIR_PPM])[kbne] = getInterpolatedDistributionForVeloWithPressureBC(q, f_TSW, f_BNE, feq, om_turb, drho, velocityBC, c1o216); + (dist.f[dPPM])[kbne] = getInterpolatedDistributionForVeloWithPressureBC(q, f_TSW, f_BNE, feq, om_turb, drho, velocityBC, c1o216); } - q = (subgridD.q[DIR_PMP])[nodeIndex]; + q = (subgridD.q[dPMP])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { VeloX = slipLength*vx1; @@ -2592,10 +2592,10 @@ __global__ void QSlipPressureDeviceComp27TurbViscosity( velocityLB = vx1 - vx2 + vx3; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); velocityBC = VeloX - VeloY + VeloZ; - (dist.f[DIR_MPM])[kbnw] = getInterpolatedDistributionForVeloWithPressureBC(q, f_TSE, f_BNW, feq, om_turb, drho, velocityBC, c1o216); + (dist.f[dMPM])[kbnw] = getInterpolatedDistributionForVeloWithPressureBC(q, f_TSE, f_BNW, feq, om_turb, drho, velocityBC, c1o216); } - q = (subgridD.q[DIR_MPM])[nodeIndex]; + q = (subgridD.q[dMPM])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { VeloX = slipLength*vx1; @@ -2607,10 +2607,10 @@ __global__ void QSlipPressureDeviceComp27TurbViscosity( velocityLB = -vx1 + vx2 - vx3; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); velocityBC = -VeloX + VeloY - VeloZ; - (dist.f[DIR_PMP])[ktse] = getInterpolatedDistributionForVeloWithPressureBC(q, f_BNW, f_TSE, feq, om_turb, drho, velocityBC, c1o216); + (dist.f[dPMP])[ktse] = getInterpolatedDistributionForVeloWithPressureBC(q, f_BNW, f_TSE, feq, om_turb, drho, velocityBC, c1o216); } - q = (subgridD.q[DIR_PMM])[nodeIndex]; + q = (subgridD.q[dPMM])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { VeloX = slipLength*vx1; @@ -2622,10 +2622,10 @@ __global__ void QSlipPressureDeviceComp27TurbViscosity( velocityLB = vx1 - vx2 - vx3; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); velocityBC = VeloX - VeloY - VeloZ; - (dist.f[DIR_MPP])[ktnw] = getInterpolatedDistributionForVeloWithPressureBC(q, f_BSE, f_TNW, feq, om_turb, drho, velocityBC, c1o216); + (dist.f[dMPP])[ktnw] = getInterpolatedDistributionForVeloWithPressureBC(q, f_BSE, f_TNW, feq, om_turb, drho, velocityBC, c1o216); } - q = (subgridD.q[DIR_MPP])[nodeIndex]; + q = (subgridD.q[dMPP])[nodeIndex]; if (q>=c0o1 && q<=c1o1) { VeloX = slipLength*vx1; @@ -2637,7 +2637,7 @@ __global__ void QSlipPressureDeviceComp27TurbViscosity( velocityLB = -vx1 + vx2 + vx3; feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); velocityBC = -VeloX + VeloY + VeloZ; - (dist.f[DIR_PMM])[kbse] = getInterpolatedDistributionForVeloWithPressureBC(q, f_TNW, f_BSE, feq, om_turb, drho, velocityBC, c1o216); + (dist.f[dPMM])[kbse] = getInterpolatedDistributionForVeloWithPressureBC(q, f_TNW, f_BSE, feq, om_turb, drho, velocityBC, c1o216); } } } @@ -2657,63 +2657,63 @@ __global__ void QSlipPressureDeviceComp27TurbViscosity( // Distributions27 D; // if (isEvenTimestep==true) // { -// D.f[DIR_P00] = &DD[DIR_P00 * size_Mat]; -// D.f[DIR_M00] = &DD[DIR_M00 * size_Mat]; -// D.f[DIR_0P0] = &DD[DIR_0P0 * size_Mat]; -// D.f[DIR_0M0] = &DD[DIR_0M0 * size_Mat]; -// D.f[DIR_00P] = &DD[DIR_00P * size_Mat]; -// D.f[DIR_00M] = &DD[DIR_00M * size_Mat]; -// D.f[DIR_PP0] = &DD[DIR_PP0 * size_Mat]; -// D.f[DIR_MM0] = &DD[DIR_MM0 * size_Mat]; -// D.f[DIR_PM0] = &DD[DIR_PM0 * size_Mat]; -// D.f[DIR_MP0] = &DD[DIR_MP0 * size_Mat]; -// D.f[DIR_P0P] = &DD[DIR_P0P * size_Mat]; -// D.f[DIR_M0M] = &DD[DIR_M0M * size_Mat]; -// D.f[DIR_P0M] = &DD[DIR_P0M * size_Mat]; -// D.f[DIR_M0P] = &DD[DIR_M0P * size_Mat]; -// D.f[DIR_0PP] = &DD[DIR_0PP * size_Mat]; -// D.f[DIR_0MM] = &DD[DIR_0MM * size_Mat]; -// D.f[DIR_0PM] = &DD[DIR_0PM * size_Mat]; -// D.f[DIR_0MP] = &DD[DIR_0MP * size_Mat]; -// D.f[DIR_000] = &DD[DIR_000 * size_Mat]; -// D.f[DIR_PPP] = &DD[DIR_PPP * size_Mat]; -// D.f[DIR_MMP] = &DD[DIR_MMP * size_Mat]; -// D.f[DIR_PMP] = &DD[DIR_PMP * size_Mat]; -// D.f[DIR_MPP] = &DD[DIR_MPP * size_Mat]; -// D.f[DIR_PPM] = &DD[DIR_PPM * size_Mat]; -// D.f[DIR_MMM] = &DD[DIR_MMM * size_Mat]; -// D.f[DIR_PMM] = &DD[DIR_PMM * size_Mat]; -// D.f[DIR_MPM] = &DD[DIR_MPM * size_Mat]; +// D.f[dP00] = &DD[dP00 * size_Mat]; +// D.f[dM00] = &DD[dM00 * size_Mat]; +// D.f[d0P0] = &DD[d0P0 * size_Mat]; +// D.f[d0M0] = &DD[d0M0 * size_Mat]; +// D.f[d00P] = &DD[d00P * size_Mat]; +// D.f[d00M] = &DD[d00M * size_Mat]; +// D.f[dPP0] = &DD[dPP0 * size_Mat]; +// D.f[dMM0] = &DD[dMM0 * size_Mat]; +// D.f[dPM0] = &DD[dPM0 * size_Mat]; +// D.f[dMP0] = &DD[dMP0 * size_Mat]; +// D.f[dP0P] = &DD[dP0P * size_Mat]; +// D.f[dM0M] = &DD[dM0M * size_Mat]; +// D.f[dP0M] = &DD[dP0M * size_Mat]; +// D.f[dM0P] = &DD[dM0P * size_Mat]; +// D.f[d0PP] = &DD[d0PP * size_Mat]; +// D.f[d0MM] = &DD[d0MM * size_Mat]; +// D.f[d0PM] = &DD[d0PM * size_Mat]; +// D.f[d0MP] = &DD[d0MP * size_Mat]; +// D.f[d000] = &DD[d000 * size_Mat]; +// D.f[dPPP] = &DD[dPPP * size_Mat]; +// D.f[dMMP] = &DD[dMMP * size_Mat]; +// D.f[dPMP] = &DD[dPMP * size_Mat]; +// D.f[dMPP] = &DD[dMPP * size_Mat]; +// D.f[dPPM] = &DD[dPPM * size_Mat]; +// D.f[dMMM] = &DD[dMMM * size_Mat]; +// D.f[dPMM] = &DD[dPMM * size_Mat]; +// D.f[dMPM] = &DD[dMPM * size_Mat]; // } // else // { -// D.f[DIR_M00] = &DD[DIR_P00 * size_Mat]; -// D.f[DIR_P00] = &DD[DIR_M00 * size_Mat]; -// D.f[DIR_0M0] = &DD[DIR_0P0 * size_Mat]; -// D.f[DIR_0P0] = &DD[DIR_0M0 * size_Mat]; -// D.f[DIR_00M] = &DD[DIR_00P * size_Mat]; -// D.f[DIR_00P] = &DD[DIR_00M * size_Mat]; -// D.f[DIR_MM0] = &DD[DIR_PP0 * size_Mat]; -// D.f[DIR_PP0] = &DD[DIR_MM0 * size_Mat]; -// D.f[DIR_MP0] = &DD[DIR_PM0 * size_Mat]; -// D.f[DIR_PM0] = &DD[DIR_MP0 * size_Mat]; -// D.f[DIR_M0M] = &DD[DIR_P0P * size_Mat]; -// D.f[DIR_P0P] = &DD[DIR_M0M * size_Mat]; -// D.f[DIR_M0P] = &DD[DIR_P0M * size_Mat]; -// D.f[DIR_P0M] = &DD[DIR_M0P * size_Mat]; -// D.f[DIR_0MM] = &DD[DIR_0PP * size_Mat]; -// D.f[DIR_0PP] = &DD[DIR_0MM * size_Mat]; -// D.f[DIR_0MP] = &DD[DIR_0PM * size_Mat]; -// D.f[DIR_0PM] = &DD[DIR_0MP * size_Mat]; -// D.f[DIR_000] = &DD[DIR_000 * size_Mat]; -// D.f[DIR_PPP] = &DD[DIR_MMM * size_Mat]; -// D.f[DIR_MMP] = &DD[DIR_PPM * size_Mat]; -// D.f[DIR_PMP] = &DD[DIR_MPM * size_Mat]; -// D.f[DIR_MPP] = &DD[DIR_PMM * size_Mat]; -// D.f[DIR_PPM] = &DD[DIR_MMP * size_Mat]; -// D.f[DIR_MMM] = &DD[DIR_PPP * size_Mat]; -// D.f[DIR_PMM] = &DD[DIR_MPP * size_Mat]; -// D.f[DIR_MPM] = &DD[DIR_PMP * size_Mat]; +// D.f[dM00] = &DD[dP00 * size_Mat]; +// D.f[dP00] = &DD[dM00 * size_Mat]; +// D.f[d0M0] = &DD[d0P0 * size_Mat]; +// D.f[d0P0] = &DD[d0M0 * size_Mat]; +// D.f[d00M] = &DD[d00P * size_Mat]; +// D.f[d00P] = &DD[d00M * size_Mat]; +// D.f[dMM0] = &DD[dPP0 * size_Mat]; +// D.f[dPP0] = &DD[dMM0 * size_Mat]; +// D.f[dMP0] = &DD[dPM0 * size_Mat]; +// D.f[dPM0] = &DD[dMP0 * size_Mat]; +// D.f[dM0M] = &DD[dP0P * size_Mat]; +// D.f[dP0P] = &DD[dM0M * size_Mat]; +// D.f[dM0P] = &DD[dP0M * size_Mat]; +// D.f[dP0M] = &DD[dM0P * size_Mat]; +// D.f[d0MM] = &DD[d0PP * size_Mat]; +// D.f[d0PP] = &DD[d0MM * size_Mat]; +// D.f[d0MP] = &DD[d0PM * size_Mat]; +// D.f[d0PM] = &DD[d0MP * size_Mat]; +// D.f[d000] = &DD[d000 * size_Mat]; +// D.f[dPPP] = &DD[dMMM * size_Mat]; +// D.f[dMMP] = &DD[dPPM * size_Mat]; +// D.f[dPMP] = &DD[dMPM * size_Mat]; +// D.f[dMPP] = &DD[dPMM * size_Mat]; +// D.f[dPPM] = &DD[dMMP * size_Mat]; +// D.f[dMMM] = &DD[dPPP * size_Mat]; +// D.f[dPMM] = &DD[dMPP * size_Mat]; +// D.f[dMPM] = &DD[dPMP * size_Mat]; // } // //////////////////////////////////////////////////////////////////////////////// // const unsigned x = threadIdx.x; // Globaler x-Index @@ -2734,32 +2734,32 @@ __global__ void QSlipPressureDeviceComp27TurbViscosity( // *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[DIR_P00 * numberOfBCnodes]; -// q_dirW = &QQ[DIR_M00 * numberOfBCnodes]; -// q_dirN = &QQ[DIR_0P0 * numberOfBCnodes]; -// q_dirS = &QQ[DIR_0M0 * numberOfBCnodes]; -// q_dirT = &QQ[DIR_00P * numberOfBCnodes]; -// q_dirB = &QQ[DIR_00M * numberOfBCnodes]; -// q_dirNE = &QQ[DIR_PP0 * numberOfBCnodes]; -// q_dirSW = &QQ[DIR_MM0 * numberOfBCnodes]; -// q_dirSE = &QQ[DIR_PM0 * numberOfBCnodes]; -// q_dirNW = &QQ[DIR_MP0 * numberOfBCnodes]; -// q_dirTE = &QQ[DIR_P0P * numberOfBCnodes]; -// q_dirBW = &QQ[DIR_M0M * numberOfBCnodes]; -// q_dirBE = &QQ[DIR_P0M * numberOfBCnodes]; -// q_dirTW = &QQ[DIR_M0P * numberOfBCnodes]; -// q_dirTN = &QQ[DIR_0PP * numberOfBCnodes]; -// q_dirBS = &QQ[DIR_0MM * numberOfBCnodes]; -// q_dirBN = &QQ[DIR_0PM * numberOfBCnodes]; -// q_dirTS = &QQ[DIR_0MP * numberOfBCnodes]; -// q_dirTNE = &QQ[DIR_PPP * numberOfBCnodes]; -// q_dirTSW = &QQ[DIR_MMP * numberOfBCnodes]; -// q_dirTSE = &QQ[DIR_PMP * numberOfBCnodes]; -// q_dirTNW = &QQ[DIR_MPP * numberOfBCnodes]; -// q_dirBNE = &QQ[DIR_PPM * numberOfBCnodes]; -// q_dirBSW = &QQ[DIR_MMM * numberOfBCnodes]; -// q_dirBSE = &QQ[DIR_PMM * numberOfBCnodes]; -// q_dirBNW = &QQ[DIR_MPM * numberOfBCnodes]; +// q_dirE = &QQ[dP00 * numberOfBCnodes]; +// q_dirW = &QQ[dM00 * numberOfBCnodes]; +// q_dirN = &QQ[d0P0 * numberOfBCnodes]; +// q_dirS = &QQ[d0M0 * numberOfBCnodes]; +// q_dirT = &QQ[d00P * numberOfBCnodes]; +// q_dirB = &QQ[d00M * numberOfBCnodes]; +// q_dirNE = &QQ[dPP0 * numberOfBCnodes]; +// q_dirSW = &QQ[dMM0 * numberOfBCnodes]; +// q_dirSE = &QQ[dPM0 * numberOfBCnodes]; +// q_dirNW = &QQ[dMP0 * numberOfBCnodes]; +// q_dirTE = &QQ[dP0P * numberOfBCnodes]; +// q_dirBW = &QQ[dM0M * numberOfBCnodes]; +// q_dirBE = &QQ[dP0M * numberOfBCnodes]; +// q_dirTW = &QQ[dM0P * numberOfBCnodes]; +// q_dirTN = &QQ[d0PP * numberOfBCnodes]; +// q_dirBS = &QQ[d0MM * numberOfBCnodes]; +// q_dirBN = &QQ[d0PM * numberOfBCnodes]; +// q_dirTS = &QQ[d0MP * numberOfBCnodes]; +// q_dirTNE = &QQ[dPPP * numberOfBCnodes]; +// q_dirTSW = &QQ[dMMP * numberOfBCnodes]; +// q_dirTSE = &QQ[dPMP * numberOfBCnodes]; +// q_dirTNW = &QQ[dMPP * numberOfBCnodes]; +// q_dirBNE = &QQ[dPPM * numberOfBCnodes]; +// q_dirBSW = &QQ[dMMM * numberOfBCnodes]; +// q_dirBSE = &QQ[dPMM * numberOfBCnodes]; +// q_dirBNW = &QQ[dMPM * numberOfBCnodes]; // //////////////////////////////////////////////////////////////////////////////// // //index // unsigned int KQK = k_Q[k]; @@ -2792,37 +2792,37 @@ __global__ void QSlipPressureDeviceComp27TurbViscosity( // unsigned int kbsw = neighborZ[ksw]; // //////////////////////////////////////////////////////////////////////////////// -// real f_W = (D.f[DIR_P00])[ke ]; -// real f_E = (D.f[DIR_M00])[kw ]; -// real f_S = (D.f[DIR_0P0])[kn ]; -// real f_N = (D.f[DIR_0M0])[ks ]; -// real f_B = (D.f[DIR_00P])[kt ]; -// real f_T = (D.f[DIR_00M])[kb ]; -// real f_SW = (D.f[DIR_PP0])[kne ]; -// real f_NE = (D.f[DIR_MM0])[ksw ]; -// real f_NW = (D.f[DIR_PM0])[kse ]; -// real f_SE = (D.f[DIR_MP0])[knw ]; -// real f_BW = (D.f[DIR_P0P])[kte ]; -// real f_TE = (D.f[DIR_M0M])[kbw ]; -// real f_TW = (D.f[DIR_P0M])[kbe ]; -// real f_BE = (D.f[DIR_M0P])[ktw ]; -// real f_BS = (D.f[DIR_0PP])[ktn ]; -// real f_TN = (D.f[DIR_0MM])[kbs ]; -// real f_TS = (D.f[DIR_0PM])[kbn ]; -// real f_BN = (D.f[DIR_0MP])[kts ]; -// real f_BSW = (D.f[DIR_PPP])[ktne ]; -// real f_BNE = (D.f[DIR_MMP])[ktsw ]; -// real f_BNW = (D.f[DIR_PMP])[ktse ]; -// real f_BSE = (D.f[DIR_MPP])[ktnw ]; -// real f_TSW = (D.f[DIR_PPM])[kbne ]; -// real f_TNE = (D.f[DIR_MMM])[kbsw ]; -// real f_TNW = (D.f[DIR_PMM])[kbse ]; -// real f_TSE = (D.f[DIR_MPM])[kbnw ]; +// real f_W = (D.f[dP00])[ke ]; +// real f_E = (D.f[dM00])[kw ]; +// real f_S = (D.f[d0P0])[kn ]; +// real f_N = (D.f[d0M0])[ks ]; +// real f_B = (D.f[d00P])[kt ]; +// real f_T = (D.f[d00M])[kb ]; +// real f_SW = (D.f[dPP0])[kne ]; +// real f_NE = (D.f[dMM0])[ksw ]; +// real f_NW = (D.f[dPM0])[kse ]; +// real f_SE = (D.f[dMP0])[knw ]; +// real f_BW = (D.f[dP0P])[kte ]; +// real f_TE = (D.f[dM0M])[kbw ]; +// real f_TW = (D.f[dP0M])[kbe ]; +// real f_BE = (D.f[dM0P])[ktw ]; +// real f_BS = (D.f[d0PP])[ktn ]; +// real f_TN = (D.f[d0MM])[kbs ]; +// real f_TS = (D.f[d0PM])[kbn ]; +// real f_BN = (D.f[d0MP])[kts ]; +// real f_BSW = (D.f[dPPP])[ktne ]; +// real f_BNE = (D.f[dMMP])[ktsw ]; +// real f_BNW = (D.f[dPMP])[ktse ]; +// real f_BSE = (D.f[dMPP])[ktnw ]; +// real f_TSW = (D.f[dPPM])[kbne ]; +// real f_TNE = (D.f[dMMM])[kbsw ]; +// real f_TNW = (D.f[dPMM])[kbse ]; +// real f_TSE = (D.f[dMPM])[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[DIR_000])[kzero]); +// f_T + f_B + f_N + f_S + f_E + f_W + ((D.f[d000])[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)) + @@ -2842,67 +2842,67 @@ __global__ void QSlipPressureDeviceComp27TurbViscosity( // ////////////////////////////////////////////////////////////////////////// // if (isEvenTimestep==false) // { -// D.f[DIR_P00] = &DD[DIR_P00 * size_Mat]; -// D.f[DIR_M00] = &DD[DIR_M00 * size_Mat]; -// D.f[DIR_0P0] = &DD[DIR_0P0 * size_Mat]; -// D.f[DIR_0M0] = &DD[DIR_0M0 * size_Mat]; -// D.f[DIR_00P] = &DD[DIR_00P * size_Mat]; -// D.f[DIR_00M] = &DD[DIR_00M * size_Mat]; -// D.f[DIR_PP0] = &DD[DIR_PP0 * size_Mat]; -// D.f[DIR_MM0] = &DD[DIR_MM0 * size_Mat]; -// D.f[DIR_PM0] = &DD[DIR_PM0 * size_Mat]; -// D.f[DIR_MP0] = &DD[DIR_MP0 * size_Mat]; -// D.f[DIR_P0P] = &DD[DIR_P0P * size_Mat]; -// D.f[DIR_M0M] = &DD[DIR_M0M * size_Mat]; -// D.f[DIR_P0M] = &DD[DIR_P0M * size_Mat]; -// D.f[DIR_M0P] = &DD[DIR_M0P * size_Mat]; -// D.f[DIR_0PP] = &DD[DIR_0PP * size_Mat]; -// D.f[DIR_0MM] = &DD[DIR_0MM * size_Mat]; -// D.f[DIR_0PM] = &DD[DIR_0PM * size_Mat]; -// D.f[DIR_0MP] = &DD[DIR_0MP * size_Mat]; -// D.f[DIR_000] = &DD[DIR_000 * size_Mat]; -// D.f[DIR_PPP] = &DD[DIR_PPP * size_Mat]; -// D.f[DIR_MMP] = &DD[DIR_MMP * size_Mat]; -// D.f[DIR_PMP] = &DD[DIR_PMP * size_Mat]; -// D.f[DIR_MPP] = &DD[DIR_MPP * size_Mat]; -// D.f[DIR_PPM] = &DD[DIR_PPM * size_Mat]; -// D.f[DIR_MMM] = &DD[DIR_MMM * size_Mat]; -// D.f[DIR_PMM] = &DD[DIR_PMM * size_Mat]; -// D.f[DIR_MPM] = &DD[DIR_MPM * size_Mat]; +// D.f[dP00] = &DD[dP00 * size_Mat]; +// D.f[dM00] = &DD[dM00 * size_Mat]; +// D.f[d0P0] = &DD[d0P0 * size_Mat]; +// D.f[d0M0] = &DD[d0M0 * size_Mat]; +// D.f[d00P] = &DD[d00P * size_Mat]; +// D.f[d00M] = &DD[d00M * size_Mat]; +// D.f[dPP0] = &DD[dPP0 * size_Mat]; +// D.f[dMM0] = &DD[dMM0 * size_Mat]; +// D.f[dPM0] = &DD[dPM0 * size_Mat]; +// D.f[dMP0] = &DD[dMP0 * size_Mat]; +// D.f[dP0P] = &DD[dP0P * size_Mat]; +// D.f[dM0M] = &DD[dM0M * size_Mat]; +// D.f[dP0M] = &DD[dP0M * size_Mat]; +// D.f[dM0P] = &DD[dM0P * size_Mat]; +// D.f[d0PP] = &DD[d0PP * size_Mat]; +// D.f[d0MM] = &DD[d0MM * size_Mat]; +// D.f[d0PM] = &DD[d0PM * size_Mat]; +// D.f[d0MP] = &DD[d0MP * size_Mat]; +// D.f[d000] = &DD[d000 * size_Mat]; +// D.f[dPPP] = &DD[dPPP * size_Mat]; +// D.f[dMMP] = &DD[dMMP * size_Mat]; +// D.f[dPMP] = &DD[dPMP * size_Mat]; +// D.f[dMPP] = &DD[dMPP * size_Mat]; +// D.f[dPPM] = &DD[dPPM * size_Mat]; +// D.f[dMMM] = &DD[dMMM * size_Mat]; +// D.f[dPMM] = &DD[dPMM * size_Mat]; +// D.f[dMPM] = &DD[dMPM * size_Mat]; // } // else // { -// D.f[DIR_M00] = &DD[DIR_P00 * size_Mat]; -// D.f[DIR_P00] = &DD[DIR_M00 * size_Mat]; -// D.f[DIR_0M0] = &DD[DIR_0P0 * size_Mat]; -// D.f[DIR_0P0] = &DD[DIR_0M0 * size_Mat]; -// D.f[DIR_00M] = &DD[DIR_00P * size_Mat]; -// D.f[DIR_00P] = &DD[DIR_00M * size_Mat]; -// D.f[DIR_MM0] = &DD[DIR_PP0 * size_Mat]; -// D.f[DIR_PP0] = &DD[DIR_MM0 * size_Mat]; -// D.f[DIR_MP0] = &DD[DIR_PM0 * size_Mat]; -// D.f[DIR_PM0] = &DD[DIR_MP0 * size_Mat]; -// D.f[DIR_M0M] = &DD[DIR_P0P * size_Mat]; -// D.f[DIR_P0P] = &DD[DIR_M0M * size_Mat]; -// D.f[DIR_M0P] = &DD[DIR_P0M * size_Mat]; -// D.f[DIR_P0M] = &DD[DIR_M0P * size_Mat]; -// D.f[DIR_0MM] = &DD[DIR_0PP * size_Mat]; -// D.f[DIR_0PP] = &DD[DIR_0MM * size_Mat]; -// D.f[DIR_0MP] = &DD[DIR_0PM * size_Mat]; -// D.f[DIR_0PM] = &DD[DIR_0MP * size_Mat]; -// D.f[DIR_000] = &DD[DIR_000 * size_Mat]; -// D.f[DIR_PPP] = &DD[DIR_MMM * size_Mat]; -// D.f[DIR_MMP] = &DD[DIR_PPM * size_Mat]; -// D.f[DIR_PMP] = &DD[DIR_MPM * size_Mat]; -// D.f[DIR_MPP] = &DD[DIR_PMM * size_Mat]; -// D.f[DIR_PPM] = &DD[DIR_MMP * size_Mat]; -// D.f[DIR_MMM] = &DD[DIR_PPP * size_Mat]; -// D.f[DIR_PMM] = &DD[DIR_MPP * size_Mat]; -// D.f[DIR_MPM] = &DD[DIR_PMP * size_Mat]; +// D.f[dM00] = &DD[dP00 * size_Mat]; +// D.f[dP00] = &DD[dM00 * size_Mat]; +// D.f[d0M0] = &DD[d0P0 * size_Mat]; +// D.f[d0P0] = &DD[d0M0 * size_Mat]; +// D.f[d00M] = &DD[d00P * size_Mat]; +// D.f[d00P] = &DD[d00M * size_Mat]; +// D.f[dMM0] = &DD[dPP0 * size_Mat]; +// D.f[dPP0] = &DD[dMM0 * size_Mat]; +// D.f[dMP0] = &DD[dPM0 * size_Mat]; +// D.f[dPM0] = &DD[dMP0 * size_Mat]; +// D.f[dM0M] = &DD[dP0P * size_Mat]; +// D.f[dP0P] = &DD[dM0M * size_Mat]; +// D.f[dM0P] = &DD[dP0M * size_Mat]; +// D.f[dP0M] = &DD[dM0P * size_Mat]; +// D.f[d0MM] = &DD[d0PP * size_Mat]; +// D.f[d0PP] = &DD[d0MM * size_Mat]; +// D.f[d0MP] = &DD[d0PM * size_Mat]; +// D.f[d0PM] = &DD[d0MP * size_Mat]; +// D.f[d000] = &DD[d000 * size_Mat]; +// D.f[dPPP] = &DD[dMMM * size_Mat]; +// D.f[dMMP] = &DD[dPPM * size_Mat]; +// D.f[dPMP] = &DD[dMPM * size_Mat]; +// D.f[dMPP] = &DD[dPMM * size_Mat]; +// D.f[dPPM] = &DD[dMMP * size_Mat]; +// D.f[dMMM] = &DD[dPPP * size_Mat]; +// D.f[dPMM] = &DD[dMPP * size_Mat]; +// D.f[dMPM] = &DD[dPMP * size_Mat]; // } // //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // //Test -// //(D.f[DIR_000])[k]=c1o10; +// //(D.f[d000])[k]=c1o10; // //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // real om_turb = om1 / (c1o1 + c3o1*om1*max(c0o1, turbViscosity[k_Q[k]])); @@ -2922,10 +2922,10 @@ __global__ void QSlipPressureDeviceComp27TurbViscosity( // VeloZ = fac*vx3; // x = true; // feq=c2o27* (drho/*+three*( vx1 )*/+c9o2*( vx1 )*( vx1 ) * (c1o1 + drho)-cu_sq); -// (D.f[DIR_M00])[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[dM00])[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[DIR_M00])[kw]=(one-q)/(one+q)*(f_E-feq*om1)/(one-om1)+(q*(f_E+f_W)-six*c2over27*( VeloX ))/(one+q); -// //(D.f[DIR_M00])[kw]=zero; +// //(D.f[dM00])[kw]=(one-q)/(one+q)*(f_E-feq*om1)/(one-om1)+(q*(f_E+f_W)-six*c2over27*( VeloX ))/(one+q); +// //(D.f[dM00])[kw]=zero; // } // q = q_dirW[k]; @@ -2936,10 +2936,10 @@ __global__ void QSlipPressureDeviceComp27TurbViscosity( // VeloZ = fac*vx3; // x = true; // feq=c2o27* (drho/*+three*(-vx1 )*/+c9o2*(-vx1 )*(-vx1 ) * (c1o1 + drho)-cu_sq); -// (D.f[DIR_P00])[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[dP00])[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[DIR_P00])[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[DIR_P00])[ke]=zero; +// //(D.f[dP00])[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[dP00])[ke]=zero; // } // q = q_dirN[k]; @@ -2950,10 +2950,10 @@ __global__ void QSlipPressureDeviceComp27TurbViscosity( // VeloZ = fac*vx3; // y = true; // feq=c2o27* (drho/*+three*( vx2 )*/+c9o2*( vx2 )*( vx2 ) * (c1o1 + drho)-cu_sq); -// (D.f[DIR_0M0])[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[d0M0])[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[DIR_0M0])[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[DIR_0M0])[ks]=zero; +// //(D.f[d0M0])[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[d0M0])[ks]=zero; // } // q = q_dirS[k]; @@ -2964,10 +2964,10 @@ __global__ void QSlipPressureDeviceComp27TurbViscosity( // VeloZ = fac*vx3; // y = true; // feq=c2o27* (drho/*+three*( -vx2 )*/+c9o2*( -vx2 )*( -vx2 ) * (c1o1 + drho)-cu_sq); -// (D.f[DIR_0P0])[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[d0P0])[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[DIR_0P0])[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[DIR_0P0])[kn]=zero; +// //(D.f[d0P0])[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[d0P0])[kn]=zero; // } // q = q_dirT[k]; @@ -2978,10 +2978,10 @@ __global__ void QSlipPressureDeviceComp27TurbViscosity( // VeloZ = c0o1; // z = true; // feq=c2o27* (drho/*+three*( vx3)*/+c9o2*( vx3)*( vx3) * (c1o1 + drho)-cu_sq); -// (D.f[DIR_00M])[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[d00M])[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[DIR_00M])[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[DIR_00M])[kb]=one; +// //(D.f[d00M])[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[d00M])[kb]=one; // } // q = q_dirB[k]; @@ -2992,10 +2992,10 @@ __global__ void QSlipPressureDeviceComp27TurbViscosity( // VeloZ = c0o1; // z = true; // feq=c2o27* (drho/*+three*( -vx3)*/+c9o2*( -vx3)*( -vx3) * (c1o1 + drho)-cu_sq); -// (D.f[DIR_00P])[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[d00P])[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[DIR_00P])[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[DIR_00P])[kt]=zero; +// //(D.f[d00P])[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[d00P])[kt]=zero; // } // q = q_dirNE[k]; @@ -3007,10 +3007,10 @@ __global__ void QSlipPressureDeviceComp27TurbViscosity( // 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[DIR_MM0])[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[dMM0])[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[DIR_MM0])[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[DIR_MM0])[ksw]=zero; +// //(D.f[dMM0])[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[dMM0])[ksw]=zero; // } // q = q_dirSW[k]; @@ -3022,10 +3022,10 @@ __global__ void QSlipPressureDeviceComp27TurbViscosity( // 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[DIR_PP0])[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[dPP0])[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[DIR_PP0])[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[DIR_PP0])[kne]=zero; +// //(D.f[dPP0])[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[dPP0])[kne]=zero; // } // q = q_dirSE[k]; @@ -3037,10 +3037,10 @@ __global__ void QSlipPressureDeviceComp27TurbViscosity( // 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[DIR_MP0])[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[dMP0])[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[DIR_MP0])[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[DIR_MP0])[knw]=zero; +// //(D.f[dMP0])[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[dMP0])[knw]=zero; // } // q = q_dirNW[k]; @@ -3052,10 +3052,10 @@ __global__ void QSlipPressureDeviceComp27TurbViscosity( // 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[DIR_PM0])[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[dPM0])[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[DIR_PM0])[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[DIR_PM0])[kse]=zero; +// //(D.f[dPM0])[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[dPM0])[kse]=zero; // } // q = q_dirTE[k]; @@ -3068,10 +3068,10 @@ __global__ void QSlipPressureDeviceComp27TurbViscosity( // 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[DIR_M0M])[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[dM0M])[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[DIR_M0M])[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[DIR_M0M])[kbw]=zero; +// //(D.f[dM0M])[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[dM0M])[kbw]=zero; // } // q = q_dirBW[k]; @@ -3083,10 +3083,10 @@ __global__ void QSlipPressureDeviceComp27TurbViscosity( // 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[DIR_P0P])[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[dP0P])[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[DIR_P0P])[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[DIR_P0P])[kte]=zero; +// //(D.f[dP0P])[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[dP0P])[kte]=zero; // } // q = q_dirBE[k]; @@ -3098,10 +3098,10 @@ __global__ void QSlipPressureDeviceComp27TurbViscosity( // 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[DIR_M0P])[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[dM0P])[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[DIR_M0P])[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[DIR_M0P])[ktw]=zero; +// //(D.f[dM0P])[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[dM0P])[ktw]=zero; // } // q = q_dirTW[k]; @@ -3113,10 +3113,10 @@ __global__ void QSlipPressureDeviceComp27TurbViscosity( // 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[DIR_P0M])[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[dP0M])[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[DIR_P0M])[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[DIR_P0M])[kbe]=zero; +// //(D.f[dP0M])[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[dP0M])[kbe]=zero; // } // q = q_dirTN[k]; @@ -3128,10 +3128,10 @@ __global__ void QSlipPressureDeviceComp27TurbViscosity( // 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[DIR_0MM])[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[d0MM])[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[DIR_0MM])[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[DIR_0MM])[kbs]=zero; +// //(D.f[d0MM])[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[d0MM])[kbs]=zero; // } // q = q_dirBS[k]; @@ -3143,10 +3143,10 @@ __global__ void QSlipPressureDeviceComp27TurbViscosity( // 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[DIR_0PP])[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[d0PP])[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[DIR_0PP])[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[DIR_0PP])[ktn]=zero; +// //(D.f[d0PP])[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[d0PP])[ktn]=zero; // } // q = q_dirBN[k]; @@ -3158,10 +3158,10 @@ __global__ void QSlipPressureDeviceComp27TurbViscosity( // 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[DIR_0MP])[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[d0MP])[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[DIR_0MP])[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[DIR_0MP])[kts]=zero; +// //(D.f[d0MP])[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[d0MP])[kts]=zero; // } // q = q_dirTS[k]; @@ -3173,10 +3173,10 @@ __global__ void QSlipPressureDeviceComp27TurbViscosity( // 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[DIR_0PM])[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[d0PM])[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[DIR_0PM])[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[DIR_0PM])[kbn]=zero; +// //(D.f[d0PM])[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[d0PM])[kbn]=zero; // } // q = q_dirTNE[k]; @@ -3189,10 +3189,10 @@ __global__ void QSlipPressureDeviceComp27TurbViscosity( // 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[DIR_MMM])[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[dMMM])[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[DIR_MMM])[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[DIR_MMM])[kbsw]=zero; +// //(D.f[dMMM])[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[dMMM])[kbsw]=zero; // } // q = q_dirBSW[k]; @@ -3205,10 +3205,10 @@ __global__ void QSlipPressureDeviceComp27TurbViscosity( // 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[DIR_PPP])[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[dPPP])[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[DIR_PPP])[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[DIR_PPP])[ktne]=zero; +// //(D.f[dPPP])[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[dPPP])[ktne]=zero; // } // q = q_dirBNE[k]; @@ -3221,10 +3221,10 @@ __global__ void QSlipPressureDeviceComp27TurbViscosity( // 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[DIR_MMP])[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[dMMP])[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[DIR_MMP])[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[DIR_MMP])[ktsw]=zero; +// //(D.f[dMMP])[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[dMMP])[ktsw]=zero; // } // q = q_dirTSW[k]; @@ -3237,10 +3237,10 @@ __global__ void QSlipPressureDeviceComp27TurbViscosity( // 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[DIR_PPM])[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[dPPM])[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[DIR_PPM])[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[DIR_PPM])[kbne]=zero; +// //(D.f[dPPM])[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[dPPM])[kbne]=zero; // } // q = q_dirTSE[k]; @@ -3253,10 +3253,10 @@ __global__ void QSlipPressureDeviceComp27TurbViscosity( // 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[DIR_MPM])[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[dMPM])[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[DIR_MPM])[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[DIR_MPM])[kbnw]=zero; +// //(D.f[dMPM])[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[dMPM])[kbnw]=zero; // } // q = q_dirBNW[k]; @@ -3269,10 +3269,10 @@ __global__ void QSlipPressureDeviceComp27TurbViscosity( // 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[DIR_PMP])[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[dPMP])[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[DIR_PMP])[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[DIR_PMP])[ktse]=zero; +// //(D.f[dPMP])[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[dPMP])[ktse]=zero; // } // q = q_dirBSE[k]; @@ -3285,10 +3285,10 @@ __global__ void QSlipPressureDeviceComp27TurbViscosity( // 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[DIR_MPP])[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[dMPP])[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[DIR_MPP])[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[DIR_MPP])[ktnw]=zero; +// //(D.f[dMPP])[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[dMPP])[ktnw]=zero; // } // q = q_dirTNW[k]; @@ -3301,10 +3301,10 @@ __global__ void QSlipPressureDeviceComp27TurbViscosity( // 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[DIR_PMM])[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[dPMM])[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[DIR_PMM])[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[DIR_PMM])[kbse]=zero; +// //(D.f[dPMM])[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[dPMM])[kbse]=zero; // } // } // } @@ -3365,63 +3365,63 @@ __global__ void QSlipGeomDeviceComp27( Distributions27 D; if (isEvenTimestep==true) { - D.f[DIR_P00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_M00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_PMP * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_MPM * numberOfLBnodes]; + D.f[dP00] = &DD[dP00 * numberOfLBnodes]; + D.f[dM00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00P] = &DD[d00P * numberOfLBnodes]; + D.f[d00M] = &DD[d00M * numberOfLBnodes]; + D.f[dPP0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dMM0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dP0P] = &DD[dP0P * numberOfLBnodes]; + D.f[dM0M] = &DD[dM0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dP0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dM0P * numberOfLBnodes]; + D.f[d0PP] = &DD[d0PP * numberOfLBnodes]; + D.f[d0MM] = &DD[d0MM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0PM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dPPP * numberOfLBnodes]; + D.f[dMMP] = &DD[dMMP * numberOfLBnodes]; + D.f[dPMP] = &DD[dPMP * numberOfLBnodes]; + D.f[dMPP] = &DD[dMPP * numberOfLBnodes]; + D.f[dPPM] = &DD[dPPM * numberOfLBnodes]; + D.f[dMMM] = &DD[dMMM * numberOfLBnodes]; + D.f[dPMM] = &DD[dPMM * numberOfLBnodes]; + D.f[dMPM] = &DD[dMPM * numberOfLBnodes]; } else { - D.f[DIR_M00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_P00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_MPM * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_PMP * numberOfLBnodes]; + D.f[dM00] = &DD[dP00 * numberOfLBnodes]; + D.f[dP00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00M] = &DD[d00P * numberOfLBnodes]; + D.f[d00P] = &DD[d00M * numberOfLBnodes]; + D.f[dMM0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dPP0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dM0M] = &DD[dP0P * numberOfLBnodes]; + D.f[dP0P] = &DD[dM0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dP0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dM0P * numberOfLBnodes]; + D.f[d0MM] = &DD[d0PP * numberOfLBnodes]; + D.f[d0PP] = &DD[d0MM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0PM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dMMM * numberOfLBnodes]; + D.f[dMMP] = &DD[dPPM * numberOfLBnodes]; + D.f[dPMP] = &DD[dMPM * numberOfLBnodes]; + D.f[dMPP] = &DD[dPMM * numberOfLBnodes]; + D.f[dPPM] = &DD[dMMP * numberOfLBnodes]; + D.f[dMMM] = &DD[dPPP * numberOfLBnodes]; + D.f[dPMM] = &DD[dMPP * numberOfLBnodes]; + D.f[dMPM] = &DD[dPMP * numberOfLBnodes]; } //////////////////////////////////////////////////////////////////////////////// const unsigned x = threadIdx.x; // Globaler x-Index @@ -3442,128 +3442,128 @@ __global__ void QSlipGeomDeviceComp27( *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[DIR_P00 * numberOfBCnodes]; - q_dirW = &QQ[DIR_M00 * numberOfBCnodes]; - q_dirN = &QQ[DIR_0P0 * numberOfBCnodes]; - q_dirS = &QQ[DIR_0M0 * numberOfBCnodes]; - q_dirT = &QQ[DIR_00P * numberOfBCnodes]; - q_dirB = &QQ[DIR_00M * numberOfBCnodes]; - q_dirNE = &QQ[DIR_PP0 * numberOfBCnodes]; - q_dirSW = &QQ[DIR_MM0 * numberOfBCnodes]; - q_dirSE = &QQ[DIR_PM0 * numberOfBCnodes]; - q_dirNW = &QQ[DIR_MP0 * numberOfBCnodes]; - q_dirTE = &QQ[DIR_P0P * numberOfBCnodes]; - q_dirBW = &QQ[DIR_M0M * numberOfBCnodes]; - q_dirBE = &QQ[DIR_P0M * numberOfBCnodes]; - q_dirTW = &QQ[DIR_M0P * numberOfBCnodes]; - q_dirTN = &QQ[DIR_0PP * numberOfBCnodes]; - q_dirBS = &QQ[DIR_0MM * numberOfBCnodes]; - q_dirBN = &QQ[DIR_0PM * numberOfBCnodes]; - q_dirTS = &QQ[DIR_0MP * numberOfBCnodes]; - q_dirTNE = &QQ[DIR_PPP * numberOfBCnodes]; - q_dirTSW = &QQ[DIR_MMP * numberOfBCnodes]; - q_dirTSE = &QQ[DIR_PMP * numberOfBCnodes]; - q_dirTNW = &QQ[DIR_MPP * numberOfBCnodes]; - q_dirBNE = &QQ[DIR_PPM * numberOfBCnodes]; - q_dirBSW = &QQ[DIR_MMM * numberOfBCnodes]; - q_dirBSE = &QQ[DIR_PMM * numberOfBCnodes]; - q_dirBNW = &QQ[DIR_MPM * numberOfBCnodes]; + q_dirE = &QQ[dP00 * numberOfBCnodes]; + q_dirW = &QQ[dM00 * numberOfBCnodes]; + q_dirN = &QQ[d0P0 * numberOfBCnodes]; + q_dirS = &QQ[d0M0 * numberOfBCnodes]; + q_dirT = &QQ[d00P * numberOfBCnodes]; + q_dirB = &QQ[d00M * numberOfBCnodes]; + q_dirNE = &QQ[dPP0 * numberOfBCnodes]; + q_dirSW = &QQ[dMM0 * numberOfBCnodes]; + q_dirSE = &QQ[dPM0 * numberOfBCnodes]; + q_dirNW = &QQ[dMP0 * numberOfBCnodes]; + q_dirTE = &QQ[dP0P * numberOfBCnodes]; + q_dirBW = &QQ[dM0M * numberOfBCnodes]; + q_dirBE = &QQ[dP0M * numberOfBCnodes]; + q_dirTW = &QQ[dM0P * numberOfBCnodes]; + q_dirTN = &QQ[d0PP * numberOfBCnodes]; + q_dirBS = &QQ[d0MM * numberOfBCnodes]; + q_dirBN = &QQ[d0PM * numberOfBCnodes]; + q_dirTS = &QQ[d0MP * numberOfBCnodes]; + q_dirTNE = &QQ[dPPP * numberOfBCnodes]; + q_dirTSW = &QQ[dMMP * numberOfBCnodes]; + q_dirTSE = &QQ[dPMP * numberOfBCnodes]; + q_dirTNW = &QQ[dMPP * numberOfBCnodes]; + q_dirBNE = &QQ[dPPM * numberOfBCnodes]; + q_dirBSW = &QQ[dMMM * numberOfBCnodes]; + q_dirBSE = &QQ[dPMM * numberOfBCnodes]; + q_dirBNW = &QQ[dMPM * 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[DIR_P00 * numberOfBCnodes]; - nx_dirW = &NormalX[DIR_M00 * numberOfBCnodes]; - nx_dirN = &NormalX[DIR_0P0 * numberOfBCnodes]; - nx_dirS = &NormalX[DIR_0M0 * numberOfBCnodes]; - nx_dirT = &NormalX[DIR_00P * numberOfBCnodes]; - nx_dirB = &NormalX[DIR_00M * numberOfBCnodes]; - nx_dirNE = &NormalX[DIR_PP0 * numberOfBCnodes]; - nx_dirSW = &NormalX[DIR_MM0 * numberOfBCnodes]; - nx_dirSE = &NormalX[DIR_PM0 * numberOfBCnodes]; - nx_dirNW = &NormalX[DIR_MP0 * numberOfBCnodes]; - nx_dirTE = &NormalX[DIR_P0P * numberOfBCnodes]; - nx_dirBW = &NormalX[DIR_M0M * numberOfBCnodes]; - nx_dirBE = &NormalX[DIR_P0M * numberOfBCnodes]; - nx_dirTW = &NormalX[DIR_M0P * numberOfBCnodes]; - nx_dirTN = &NormalX[DIR_0PP * numberOfBCnodes]; - nx_dirBS = &NormalX[DIR_0MM * numberOfBCnodes]; - nx_dirBN = &NormalX[DIR_0PM * numberOfBCnodes]; - nx_dirTS = &NormalX[DIR_0MP * numberOfBCnodes]; - nx_dirTNE = &NormalX[DIR_PPP * numberOfBCnodes]; - nx_dirTSW = &NormalX[DIR_MMP * numberOfBCnodes]; - nx_dirTSE = &NormalX[DIR_PMP * numberOfBCnodes]; - nx_dirTNW = &NormalX[DIR_MPP * numberOfBCnodes]; - nx_dirBNE = &NormalX[DIR_PPM * numberOfBCnodes]; - nx_dirBSW = &NormalX[DIR_MMM * numberOfBCnodes]; - nx_dirBSE = &NormalX[DIR_PMM * numberOfBCnodes]; - nx_dirBNW = &NormalX[DIR_MPM * numberOfBCnodes]; + nx_dirE = &NormalX[dP00 * numberOfBCnodes]; + nx_dirW = &NormalX[dM00 * numberOfBCnodes]; + nx_dirN = &NormalX[d0P0 * numberOfBCnodes]; + nx_dirS = &NormalX[d0M0 * numberOfBCnodes]; + nx_dirT = &NormalX[d00P * numberOfBCnodes]; + nx_dirB = &NormalX[d00M * numberOfBCnodes]; + nx_dirNE = &NormalX[dPP0 * numberOfBCnodes]; + nx_dirSW = &NormalX[dMM0 * numberOfBCnodes]; + nx_dirSE = &NormalX[dPM0 * numberOfBCnodes]; + nx_dirNW = &NormalX[dMP0 * numberOfBCnodes]; + nx_dirTE = &NormalX[dP0P * numberOfBCnodes]; + nx_dirBW = &NormalX[dM0M * numberOfBCnodes]; + nx_dirBE = &NormalX[dP0M * numberOfBCnodes]; + nx_dirTW = &NormalX[dM0P * numberOfBCnodes]; + nx_dirTN = &NormalX[d0PP * numberOfBCnodes]; + nx_dirBS = &NormalX[d0MM * numberOfBCnodes]; + nx_dirBN = &NormalX[d0PM * numberOfBCnodes]; + nx_dirTS = &NormalX[d0MP * numberOfBCnodes]; + nx_dirTNE = &NormalX[dPPP * numberOfBCnodes]; + nx_dirTSW = &NormalX[dMMP * numberOfBCnodes]; + nx_dirTSE = &NormalX[dPMP * numberOfBCnodes]; + nx_dirTNW = &NormalX[dMPP * numberOfBCnodes]; + nx_dirBNE = &NormalX[dPPM * numberOfBCnodes]; + nx_dirBSW = &NormalX[dMMM * numberOfBCnodes]; + nx_dirBSE = &NormalX[dPMM * numberOfBCnodes]; + nx_dirBNW = &NormalX[dMPM * 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[DIR_P00 * numberOfBCnodes]; - ny_dirW = &NormalY[DIR_M00 * numberOfBCnodes]; - ny_dirN = &NormalY[DIR_0P0 * numberOfBCnodes]; - ny_dirS = &NormalY[DIR_0M0 * numberOfBCnodes]; - ny_dirT = &NormalY[DIR_00P * numberOfBCnodes]; - ny_dirB = &NormalY[DIR_00M * numberOfBCnodes]; - ny_dirNE = &NormalY[DIR_PP0 * numberOfBCnodes]; - ny_dirSW = &NormalY[DIR_MM0 * numberOfBCnodes]; - ny_dirSE = &NormalY[DIR_PM0 * numberOfBCnodes]; - ny_dirNW = &NormalY[DIR_MP0 * numberOfBCnodes]; - ny_dirTE = &NormalY[DIR_P0P * numberOfBCnodes]; - ny_dirBW = &NormalY[DIR_M0M * numberOfBCnodes]; - ny_dirBE = &NormalY[DIR_P0M * numberOfBCnodes]; - ny_dirTW = &NormalY[DIR_M0P * numberOfBCnodes]; - ny_dirTN = &NormalY[DIR_0PP * numberOfBCnodes]; - ny_dirBS = &NormalY[DIR_0MM * numberOfBCnodes]; - ny_dirBN = &NormalY[DIR_0PM * numberOfBCnodes]; - ny_dirTS = &NormalY[DIR_0MP * numberOfBCnodes]; - ny_dirTNE = &NormalY[DIR_PPP * numberOfBCnodes]; - ny_dirTSW = &NormalY[DIR_MMP * numberOfBCnodes]; - ny_dirTSE = &NormalY[DIR_PMP * numberOfBCnodes]; - ny_dirTNW = &NormalY[DIR_MPP * numberOfBCnodes]; - ny_dirBNE = &NormalY[DIR_PPM * numberOfBCnodes]; - ny_dirBSW = &NormalY[DIR_MMM * numberOfBCnodes]; - ny_dirBSE = &NormalY[DIR_PMM * numberOfBCnodes]; - ny_dirBNW = &NormalY[DIR_MPM * numberOfBCnodes]; + ny_dirE = &NormalY[dP00 * numberOfBCnodes]; + ny_dirW = &NormalY[dM00 * numberOfBCnodes]; + ny_dirN = &NormalY[d0P0 * numberOfBCnodes]; + ny_dirS = &NormalY[d0M0 * numberOfBCnodes]; + ny_dirT = &NormalY[d00P * numberOfBCnodes]; + ny_dirB = &NormalY[d00M * numberOfBCnodes]; + ny_dirNE = &NormalY[dPP0 * numberOfBCnodes]; + ny_dirSW = &NormalY[dMM0 * numberOfBCnodes]; + ny_dirSE = &NormalY[dPM0 * numberOfBCnodes]; + ny_dirNW = &NormalY[dMP0 * numberOfBCnodes]; + ny_dirTE = &NormalY[dP0P * numberOfBCnodes]; + ny_dirBW = &NormalY[dM0M * numberOfBCnodes]; + ny_dirBE = &NormalY[dP0M * numberOfBCnodes]; + ny_dirTW = &NormalY[dM0P * numberOfBCnodes]; + ny_dirTN = &NormalY[d0PP * numberOfBCnodes]; + ny_dirBS = &NormalY[d0MM * numberOfBCnodes]; + ny_dirBN = &NormalY[d0PM * numberOfBCnodes]; + ny_dirTS = &NormalY[d0MP * numberOfBCnodes]; + ny_dirTNE = &NormalY[dPPP * numberOfBCnodes]; + ny_dirTSW = &NormalY[dMMP * numberOfBCnodes]; + ny_dirTSE = &NormalY[dPMP * numberOfBCnodes]; + ny_dirTNW = &NormalY[dMPP * numberOfBCnodes]; + ny_dirBNE = &NormalY[dPPM * numberOfBCnodes]; + ny_dirBSW = &NormalY[dMMM * numberOfBCnodes]; + ny_dirBSE = &NormalY[dPMM * numberOfBCnodes]; + ny_dirBNW = &NormalY[dMPM * 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[DIR_P00 * numberOfBCnodes]; - nz_dirW = &NormalZ[DIR_M00 * numberOfBCnodes]; - nz_dirN = &NormalZ[DIR_0P0 * numberOfBCnodes]; - nz_dirS = &NormalZ[DIR_0M0 * numberOfBCnodes]; - nz_dirT = &NormalZ[DIR_00P * numberOfBCnodes]; - nz_dirB = &NormalZ[DIR_00M * numberOfBCnodes]; - nz_dirNE = &NormalZ[DIR_PP0 * numberOfBCnodes]; - nz_dirSW = &NormalZ[DIR_MM0 * numberOfBCnodes]; - nz_dirSE = &NormalZ[DIR_PM0 * numberOfBCnodes]; - nz_dirNW = &NormalZ[DIR_MP0 * numberOfBCnodes]; - nz_dirTE = &NormalZ[DIR_P0P * numberOfBCnodes]; - nz_dirBW = &NormalZ[DIR_M0M * numberOfBCnodes]; - nz_dirBE = &NormalZ[DIR_P0M * numberOfBCnodes]; - nz_dirTW = &NormalZ[DIR_M0P * numberOfBCnodes]; - nz_dirTN = &NormalZ[DIR_0PP * numberOfBCnodes]; - nz_dirBS = &NormalZ[DIR_0MM * numberOfBCnodes]; - nz_dirBN = &NormalZ[DIR_0PM * numberOfBCnodes]; - nz_dirTS = &NormalZ[DIR_0MP * numberOfBCnodes]; - nz_dirTNE = &NormalZ[DIR_PPP * numberOfBCnodes]; - nz_dirTSW = &NormalZ[DIR_MMP * numberOfBCnodes]; - nz_dirTSE = &NormalZ[DIR_PMP * numberOfBCnodes]; - nz_dirTNW = &NormalZ[DIR_MPP * numberOfBCnodes]; - nz_dirBNE = &NormalZ[DIR_PPM * numberOfBCnodes]; - nz_dirBSW = &NormalZ[DIR_MMM * numberOfBCnodes]; - nz_dirBSE = &NormalZ[DIR_PMM * numberOfBCnodes]; - nz_dirBNW = &NormalZ[DIR_MPM * numberOfBCnodes]; + nz_dirE = &NormalZ[dP00 * numberOfBCnodes]; + nz_dirW = &NormalZ[dM00 * numberOfBCnodes]; + nz_dirN = &NormalZ[d0P0 * numberOfBCnodes]; + nz_dirS = &NormalZ[d0M0 * numberOfBCnodes]; + nz_dirT = &NormalZ[d00P * numberOfBCnodes]; + nz_dirB = &NormalZ[d00M * numberOfBCnodes]; + nz_dirNE = &NormalZ[dPP0 * numberOfBCnodes]; + nz_dirSW = &NormalZ[dMM0 * numberOfBCnodes]; + nz_dirSE = &NormalZ[dPM0 * numberOfBCnodes]; + nz_dirNW = &NormalZ[dMP0 * numberOfBCnodes]; + nz_dirTE = &NormalZ[dP0P * numberOfBCnodes]; + nz_dirBW = &NormalZ[dM0M * numberOfBCnodes]; + nz_dirBE = &NormalZ[dP0M * numberOfBCnodes]; + nz_dirTW = &NormalZ[dM0P * numberOfBCnodes]; + nz_dirTN = &NormalZ[d0PP * numberOfBCnodes]; + nz_dirBS = &NormalZ[d0MM * numberOfBCnodes]; + nz_dirBN = &NormalZ[d0PM * numberOfBCnodes]; + nz_dirTS = &NormalZ[d0MP * numberOfBCnodes]; + nz_dirTNE = &NormalZ[dPPP * numberOfBCnodes]; + nz_dirTSW = &NormalZ[dMMP * numberOfBCnodes]; + nz_dirTSE = &NormalZ[dPMP * numberOfBCnodes]; + nz_dirTNW = &NormalZ[dMPP * numberOfBCnodes]; + nz_dirBNE = &NormalZ[dPPM * numberOfBCnodes]; + nz_dirBSW = &NormalZ[dMMM * numberOfBCnodes]; + nz_dirBSE = &NormalZ[dPMM * numberOfBCnodes]; + nz_dirBNW = &NormalZ[dMPM * numberOfBCnodes]; //////////////////////////////////////////////////////////////////////////////// //index unsigned int KQK = k_Q[k]; @@ -3595,37 +3595,37 @@ __global__ void QSlipGeomDeviceComp27( unsigned int ktne = KQK; unsigned int kbsw = neighborZ[ksw]; //////////////////////////////////////////////////////////////////////////////// - real f_W = (D.f[DIR_P00])[ke ]; - real f_E = (D.f[DIR_M00])[kw ]; - real f_S = (D.f[DIR_0P0])[kn ]; - real f_N = (D.f[DIR_0M0])[ks ]; - real f_B = (D.f[DIR_00P])[kt ]; - real f_T = (D.f[DIR_00M])[kb ]; - real f_SW = (D.f[DIR_PP0])[kne ]; - real f_NE = (D.f[DIR_MM0])[ksw ]; - real f_NW = (D.f[DIR_PM0])[kse ]; - real f_SE = (D.f[DIR_MP0])[knw ]; - real f_BW = (D.f[DIR_P0P])[kte ]; - real f_TE = (D.f[DIR_M0M])[kbw ]; - real f_TW = (D.f[DIR_P0M])[kbe ]; - real f_BE = (D.f[DIR_M0P])[ktw ]; - real f_BS = (D.f[DIR_0PP])[ktn ]; - real f_TN = (D.f[DIR_0MM])[kbs ]; - real f_TS = (D.f[DIR_0PM])[kbn ]; - real f_BN = (D.f[DIR_0MP])[kts ]; - real f_BSW = (D.f[DIR_PPP])[ktne ]; - real f_BNE = (D.f[DIR_MMP])[ktsw ]; - real f_BNW = (D.f[DIR_PMP])[ktse ]; - real f_BSE = (D.f[DIR_MPP])[ktnw ]; - real f_TSW = (D.f[DIR_PPM])[kbne ]; - real f_TNE = (D.f[DIR_MMM])[kbsw ]; - real f_TNW = (D.f[DIR_PMM])[kbse ]; - real f_TSE = (D.f[DIR_MPM])[kbnw ]; + real f_W = (D.f[dP00])[ke ]; + real f_E = (D.f[dM00])[kw ]; + real f_S = (D.f[d0P0])[kn ]; + real f_N = (D.f[d0M0])[ks ]; + real f_B = (D.f[d00P])[kt ]; + real f_T = (D.f[d00M])[kb ]; + real f_SW = (D.f[dPP0])[kne ]; + real f_NE = (D.f[dMM0])[ksw ]; + real f_NW = (D.f[dPM0])[kse ]; + real f_SE = (D.f[dMP0])[knw ]; + real f_BW = (D.f[dP0P])[kte ]; + real f_TE = (D.f[dM0M])[kbw ]; + real f_TW = (D.f[dP0M])[kbe ]; + real f_BE = (D.f[dM0P])[ktw ]; + real f_BS = (D.f[d0PP])[ktn ]; + real f_TN = (D.f[d0MM])[kbs ]; + real f_TS = (D.f[d0PM])[kbn ]; + real f_BN = (D.f[d0MP])[kts ]; + real f_BSW = (D.f[dPPP])[ktne ]; + real f_BNE = (D.f[dMMP])[ktsw ]; + real f_BNW = (D.f[dPMP])[ktse ]; + real f_BSE = (D.f[dMPP])[ktnw ]; + real f_TSW = (D.f[dPPM])[kbne ]; + real f_TNE = (D.f[dMMM])[kbsw ]; + real f_TNW = (D.f[dPMM])[kbse ]; + real f_TSE = (D.f[dMPM])[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[DIR_000])[kzero]); + f_T + f_B + f_N + f_S + f_E + f_W + ((D.f[d000])[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)) + @@ -3645,63 +3645,63 @@ __global__ void QSlipGeomDeviceComp27( ////////////////////////////////////////////////////////////////////////// if (isEvenTimestep==false) { - D.f[DIR_P00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_M00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_PMP * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_MPM * numberOfLBnodes]; + D.f[dP00] = &DD[dP00 * numberOfLBnodes]; + D.f[dM00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00P] = &DD[d00P * numberOfLBnodes]; + D.f[d00M] = &DD[d00M * numberOfLBnodes]; + D.f[dPP0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dMM0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dP0P] = &DD[dP0P * numberOfLBnodes]; + D.f[dM0M] = &DD[dM0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dP0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dM0P * numberOfLBnodes]; + D.f[d0PP] = &DD[d0PP * numberOfLBnodes]; + D.f[d0MM] = &DD[d0MM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0PM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dPPP * numberOfLBnodes]; + D.f[dMMP] = &DD[dMMP * numberOfLBnodes]; + D.f[dPMP] = &DD[dPMP * numberOfLBnodes]; + D.f[dMPP] = &DD[dMPP * numberOfLBnodes]; + D.f[dPPM] = &DD[dPPM * numberOfLBnodes]; + D.f[dMMM] = &DD[dMMM * numberOfLBnodes]; + D.f[dPMM] = &DD[dPMM * numberOfLBnodes]; + D.f[dMPM] = &DD[dMPM * numberOfLBnodes]; } else { - D.f[DIR_M00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_P00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_MPM * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_PMP * numberOfLBnodes]; + D.f[dM00] = &DD[dP00 * numberOfLBnodes]; + D.f[dP00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00M] = &DD[d00P * numberOfLBnodes]; + D.f[d00P] = &DD[d00M * numberOfLBnodes]; + D.f[dMM0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dPP0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dM0M] = &DD[dP0P * numberOfLBnodes]; + D.f[dP0P] = &DD[dM0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dP0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dM0P * numberOfLBnodes]; + D.f[d0MM] = &DD[d0PP * numberOfLBnodes]; + D.f[d0PP] = &DD[d0MM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0PM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dMMM * numberOfLBnodes]; + D.f[dMMP] = &DD[dPPM * numberOfLBnodes]; + D.f[dPMP] = &DD[dMPM * numberOfLBnodes]; + D.f[dMPP] = &DD[dPMM * numberOfLBnodes]; + D.f[dPPM] = &DD[dMMP * numberOfLBnodes]; + D.f[dMMM] = &DD[dPPP * numberOfLBnodes]; + D.f[dPMM] = &DD[dMPP * numberOfLBnodes]; + D.f[dMPM] = &DD[dPMP * numberOfLBnodes]; } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// real VeloX = vx1; @@ -3723,11 +3723,11 @@ __global__ void QSlipGeomDeviceComp27( //fac = fac * magS / (c1o3 * (one / om1 - c1o2)); // //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - //real *facAst = &QQ[DIR_000 * numberOfBCnodes]; + //real *facAst = &QQ[d000 * numberOfBCnodes]; //fac = fac * alpha + facAst[k] * (one - alpha); //facAst[k] = fac; - //(&QQ[DIR_000 * numberOfBCnodes])[KQK] = fac; + //(&QQ[d000 * numberOfBCnodes])[KQK] = fac; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////real uk = sqrtf(vx1*vx1 + vx2*vx2 + vx3*vx3); //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -3776,84 +3776,84 @@ __global__ void QSlipGeomDeviceComp27( if (q>=c0o1 && q<=c1o1) { VeloX = vx1 - (vx1 * nx_dirE[k] + vx2 * ny_dirE[k] + vx3 * nz_dirE[k]) * nx_dirE[k]; - //phi = fac * (one + magS / (Op0000002+uk) * (one-q)); + //phi = fac * (one + magS / (c0p0000002+uk) * (one-q)); //phi = phi > one ? one:phi; //phi = fac; //Test q = testQ; //AAAAHHHHHH bitte wieder raus nehmen!!!! phi = fac / (q * fabs( nx_dirE[k]) + fac); VeloX *= phi; feq=c2o27* (drho/*+three*( vx1 )*/+c9o2*( vx1 )*( vx1 ) * (c1o1 + drho)-cu_sq); - (D.f[DIR_M00])[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[dM00])[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]; if (q>=c0o1 && q<=c1o1) { VeloX = vx1 - (vx1 * nx_dirW[k] + vx2 * ny_dirW[k] + vx3 * nz_dirW[k]) * nx_dirW[k]; - //phi = fac * (one + magS / (Op0000002+uk) * (one-q)); + //phi = fac * (one + magS / (c0p0000002+uk) * (one-q)); //phi = phi > one ? one:phi; //phi = fac; //Test q = testQ; //AAAAHHHHHH bitte wieder raus nehmen!!!! phi = fac / (q * fabs(-nx_dirW[k]) + fac); VeloX *= phi; feq=c2o27* (drho/*+three*(-vx1 )*/+c9o2*(-vx1 )*(-vx1 ) * (c1o1 + drho)-cu_sq); - (D.f[DIR_P00])[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[dP00])[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]; if (q>=c0o1 && q<=c1o1) { VeloY = vx2 - (vx1 * nx_dirN[k] + vx2 * ny_dirN[k] + vx3 * nz_dirN[k]) * ny_dirN[k]; - //phi = fac * (one + magS / (Op0000002+uk) * (one-q)); + //phi = fac * (one + magS / (c0p0000002+uk) * (one-q)); //phi = phi > one ? one:phi; //phi = fac; //Test q = testQ; //AAAAHHHHHH bitte wieder raus nehmen!!!! phi = fac / (q * fabs( ny_dirN[k]) + fac); VeloY *= phi; feq=c2o27* (drho/*+three*( vx2 )*/+c9o2*( vx2 )*( vx2 ) * (c1o1 + drho)-cu_sq); - (D.f[DIR_0M0])[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[d0M0])[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]; if (q>=c0o1 && q<=c1o1) { VeloY = vx2 - (vx1 * nx_dirS[k] + vx2 * ny_dirS[k] + vx3 * nz_dirS[k]) * ny_dirS[k]; - //phi = fac * (one + magS / (Op0000002+uk) * (one-q)); + //phi = fac * (one + magS / (c0p0000002+uk) * (one-q)); //phi = phi > one ? one:phi; //phi = fac; //Test q = testQ; //AAAAHHHHHH bitte wieder raus nehmen!!!! phi = fac / (q * fabs(-ny_dirS[k]) + fac); VeloY *= phi; feq=c2o27* (drho/*+three*( -vx2 )*/+c9o2*( -vx2 )*( -vx2 ) * (c1o1 + drho)-cu_sq); - (D.f[DIR_0P0])[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[d0P0])[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]; if (q>=c0o1 && q<=c1o1) { VeloZ = vx3 - (vx1 * nx_dirT[k] + vx2 * ny_dirT[k] + vx3 * nz_dirT[k]) * nz_dirT[k]; - //phi = fac * (one + magS / (Op0000002+uk) * (one-q)); + //phi = fac * (one + magS / (c0p0000002+uk) * (one-q)); //phi = phi > one ? one:phi; //phi = fac; //Test q = testQ; //AAAAHHHHHH bitte wieder raus nehmen!!!! phi = fac / (q * fabs( nz_dirT[k]) + fac); VeloZ *= phi; feq=c2o27* (drho/*+three*( vx3)*/+c9o2*( vx3)*( vx3) * (c1o1 + drho)-cu_sq); - (D.f[DIR_00M])[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[d00M])[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]; if (q>=c0o1 && q<=c1o1) { VeloZ = vx3 - (vx1 * nx_dirB[k] + vx2 * ny_dirB[k] + vx3 * nz_dirB[k]) * nz_dirB[k]; - //phi = fac * (one + magS / (Op0000002+uk) * (one-q)); + //phi = fac * (one + magS / (c0p0000002+uk) * (one-q)); //phi = phi > one ? one:phi; //phi = fac; //Test q = testQ; //AAAAHHHHHH bitte wieder raus nehmen!!!! phi = fac / (q * fabs(-nz_dirB[k]) + fac); VeloZ *= phi; feq=c2o27* (drho/*+three*( -vx3)*/+c9o2*( -vx3)*( -vx3) * (c1o1 + drho)-cu_sq); - (D.f[DIR_00P])[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[d00P])[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]; @@ -3861,7 +3861,7 @@ __global__ void QSlipGeomDeviceComp27( { VeloX = vx1 - (vx1 * nx_dirNE[k] + vx2 * ny_dirNE[k] + vx3 * nz_dirNE[k]) * nx_dirNE[k]; VeloY = vx2 - (vx1 * nx_dirNE[k] + vx2 * ny_dirNE[k] + vx3 * nz_dirNE[k]) * ny_dirNE[k]; - //phi = fac * (one + magS / (Op0000002+uk) * (one-q)); + //phi = fac * (one + magS / (c0p0000002+uk) * (one-q)); //phi = phi > one ? one:phi; //phi = fac; //Test q = testQ; //AAAAHHHHHH bitte wieder raus nehmen!!!! @@ -3869,7 +3869,7 @@ __global__ void QSlipGeomDeviceComp27( VeloX *= phi; VeloY *= phi; feq=c1o54* (drho/*+three*( vx1+vx2 )*/+c9o2*( vx1+vx2 )*( vx1+vx2 ) * (c1o1 + drho)-cu_sq); - (D.f[DIR_MM0])[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[dMM0])[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]; @@ -3877,7 +3877,7 @@ __global__ void QSlipGeomDeviceComp27( { VeloX = vx1 - (vx1 * nx_dirSW[k] + vx2 * ny_dirSW[k] + vx3 * nz_dirSW[k]) * nx_dirSW[k]; VeloY = vx2 - (vx1 * nx_dirSW[k] + vx2 * ny_dirSW[k] + vx3 * nz_dirSW[k]) * ny_dirSW[k]; - //phi = fac * (one + magS / (Op0000002+uk) * (one-q)); + //phi = fac * (one + magS / (c0p0000002+uk) * (one-q)); //phi = phi > one ? one:phi; //phi = fac; //Test q = testQ; //AAAAHHHHHH bitte wieder raus nehmen!!!! @@ -3885,7 +3885,7 @@ __global__ void QSlipGeomDeviceComp27( VeloX *= phi; VeloY *= phi; feq=c1o54* (drho/*+three*(-vx1-vx2 )*/+c9o2*(-vx1-vx2 )*(-vx1-vx2 ) * (c1o1 + drho)-cu_sq); - (D.f[DIR_PP0])[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[dPP0])[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]; @@ -3893,7 +3893,7 @@ __global__ void QSlipGeomDeviceComp27( { VeloX = vx1 - (vx1 * nx_dirSE[k] + vx2 * ny_dirSE[k] + vx3 * nz_dirSE[k]) * nx_dirSE[k]; VeloY = vx2 - (vx1 * nx_dirSE[k] + vx2 * ny_dirSE[k] + vx3 * nz_dirSE[k]) * ny_dirSE[k]; - //phi = fac * (one + magS / (Op0000002+uk) * (one-q)); + //phi = fac * (one + magS / (c0p0000002+uk) * (one-q)); //phi = phi > one ? one:phi; //phi = fac; //Test q = testQ; //AAAAHHHHHH bitte wieder raus nehmen!!!! @@ -3901,7 +3901,7 @@ __global__ void QSlipGeomDeviceComp27( VeloX *= phi; VeloY *= phi; feq=c1o54* (drho/*+three*( vx1-vx2 )*/+c9o2*( vx1-vx2 )*( vx1-vx2 ) * (c1o1 + drho)-cu_sq); - (D.f[DIR_MP0])[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[dMP0])[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]; @@ -3909,7 +3909,7 @@ __global__ void QSlipGeomDeviceComp27( { VeloX = vx1 - (vx1 * nx_dirNW[k] + vx2 * ny_dirNW[k] + vx3 * nz_dirNW[k]) * nx_dirNW[k]; VeloY = vx2 - (vx1 * nx_dirNW[k] + vx2 * ny_dirNW[k] + vx3 * nz_dirNW[k]) * ny_dirNW[k]; - //phi = fac * (one + magS / (Op0000002+uk) * (one-q)); + //phi = fac * (one + magS / (c0p0000002+uk) * (one-q)); //phi = phi > one ? one:phi; //phi = fac; //Test q = testQ; //AAAAHHHHHH bitte wieder raus nehmen!!!! @@ -3917,7 +3917,7 @@ __global__ void QSlipGeomDeviceComp27( VeloX *= phi; VeloY *= phi; feq=c1o54* (drho/*+three*(-vx1+vx2 )*/+c9o2*(-vx1+vx2 )*(-vx1+vx2 ) * (c1o1 + drho)-cu_sq); - (D.f[DIR_PM0])[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[dPM0])[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]; @@ -3925,7 +3925,7 @@ __global__ void QSlipGeomDeviceComp27( { VeloX = vx1 - (vx1 * nx_dirTE[k] + vx2 * ny_dirTE[k] + vx3 * nz_dirTE[k]) * nx_dirTE[k]; VeloZ = vx3 - (vx1 * nx_dirTE[k] + vx2 * ny_dirTE[k] + vx3 * nz_dirTE[k]) * nz_dirTE[k]; - //phi = fac * (one + magS / (Op0000002+uk) * (one-q)); + //phi = fac * (one + magS / (c0p0000002+uk) * (one-q)); //phi = phi > one ? one:phi; //phi = fac; //Test q = testQ; //AAAAHHHHHH bitte wieder raus nehmen!!!! @@ -3933,7 +3933,7 @@ __global__ void QSlipGeomDeviceComp27( VeloX *= phi; VeloZ *= phi; feq=c1o54* (drho/*+three*( vx1 +vx3)*/+c9o2*( vx1 +vx3)*( vx1 +vx3) * (c1o1 + drho)-cu_sq); - (D.f[DIR_M0M])[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[dM0M])[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]; @@ -3941,7 +3941,7 @@ __global__ void QSlipGeomDeviceComp27( { VeloX = vx1 - (vx1 * nx_dirBW[k] + vx2 * ny_dirBW[k] + vx3 * nz_dirBW[k]) * nx_dirBW[k]; VeloZ = vx3 - (vx1 * nx_dirBW[k] + vx2 * ny_dirBW[k] + vx3 * nz_dirBW[k]) * nz_dirBW[k]; - //phi = fac * (one + magS / (Op0000002+uk) * (one-q)); + //phi = fac * (one + magS / (c0p0000002+uk) * (one-q)); //phi = phi > one ? one:phi; //phi = fac; //Test q = testQ; //AAAAHHHHHH bitte wieder raus nehmen!!!! @@ -3949,7 +3949,7 @@ __global__ void QSlipGeomDeviceComp27( VeloX *= phi; VeloZ *= phi; feq=c1o54* (drho/*+three*(-vx1 -vx3)*/+c9o2*(-vx1 -vx3)*(-vx1 -vx3) * (c1o1 + drho)-cu_sq); - (D.f[DIR_P0P])[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[dP0P])[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]; @@ -3957,7 +3957,7 @@ __global__ void QSlipGeomDeviceComp27( { VeloX = vx1 - (vx1 * nx_dirBE[k] + vx2 * ny_dirBE[k] + vx3 * nz_dirBE[k]) * nx_dirBE[k]; VeloZ = vx3 - (vx1 * nx_dirBE[k] + vx2 * ny_dirBE[k] + vx3 * nz_dirBE[k]) * nz_dirBE[k]; - //phi = fac * (one + magS / (Op0000002+uk) * (one-q)); + //phi = fac * (one + magS / (c0p0000002+uk) * (one-q)); //phi = phi > one ? one:phi; //phi = fac; //Test q = testQ; //AAAAHHHHHH bitte wieder raus nehmen!!!! @@ -3965,7 +3965,7 @@ __global__ void QSlipGeomDeviceComp27( VeloX *= phi; VeloZ *= phi; feq=c1o54* (drho/*+three*( vx1 -vx3)*/+c9o2*( vx1 -vx3)*( vx1 -vx3) * (c1o1 + drho)-cu_sq); - (D.f[DIR_M0P])[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[dM0P])[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]; @@ -3973,7 +3973,7 @@ __global__ void QSlipGeomDeviceComp27( { VeloX = vx1 - (vx1 * nx_dirTW[k] + vx2 * ny_dirTW[k] + vx3 * nz_dirTW[k]) * nx_dirTW[k]; VeloZ = vx3 - (vx1 * nx_dirTW[k] + vx2 * ny_dirTW[k] + vx3 * nz_dirTW[k]) * nz_dirTW[k]; - //phi = fac * (one + magS / (Op0000002+uk) * (one-q)); + //phi = fac * (one + magS / (c0p0000002+uk) * (one-q)); //phi = phi > one ? one:phi; //phi = fac; //Test q = testQ; //AAAAHHHHHH bitte wieder raus nehmen!!!! @@ -3981,7 +3981,7 @@ __global__ void QSlipGeomDeviceComp27( VeloX *= phi; VeloZ *= phi; feq=c1o54* (drho/*+three*(-vx1 +vx3)*/+c9o2*(-vx1 +vx3)*(-vx1 +vx3) * (c1o1 + drho)-cu_sq); - (D.f[DIR_P0M])[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[dP0M])[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]; @@ -3989,7 +3989,7 @@ __global__ void QSlipGeomDeviceComp27( { VeloY = vx2 - (vx1 * nx_dirTN[k] + vx2 * ny_dirTN[k] + vx3 * nz_dirTN[k]) * ny_dirTN[k]; VeloZ = vx3 - (vx1 * nx_dirTN[k] + vx2 * ny_dirTN[k] + vx3 * nz_dirTN[k]) * nz_dirTN[k]; - //phi = fac * (one + magS / (Op0000002+uk) * (one-q)); + //phi = fac * (one + magS / (c0p0000002+uk) * (one-q)); //phi = phi > one ? one:phi; //phi = fac; //Test q = testQ; //AAAAHHHHHH bitte wieder raus nehmen!!!! @@ -3997,7 +3997,7 @@ __global__ void QSlipGeomDeviceComp27( VeloY *= phi; VeloZ *= phi; feq=c1o54* (drho/*+three*( vx2+vx3)*/+c9o2*( vx2+vx3)*( vx2+vx3) * (c1o1 + drho)-cu_sq); - (D.f[DIR_0MM])[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[d0MM])[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]; @@ -4005,7 +4005,7 @@ __global__ void QSlipGeomDeviceComp27( { VeloY = vx2 - (vx1 * nx_dirBS[k] + vx2 * ny_dirBS[k] + vx3 * nz_dirBS[k]) * ny_dirBS[k]; VeloZ = vx3 - (vx1 * nx_dirBS[k] + vx2 * ny_dirBS[k] + vx3 * nz_dirBS[k]) * nz_dirBS[k]; - //phi = fac * (one + magS / (Op0000002+uk) * (one-q)); + //phi = fac * (one + magS / (c0p0000002+uk) * (one-q)); //phi = phi > one ? one:phi; //phi = fac; //Test q = testQ; //AAAAHHHHHH bitte wieder raus nehmen!!!! @@ -4013,7 +4013,7 @@ __global__ void QSlipGeomDeviceComp27( VeloY *= phi; VeloZ *= phi; feq=c1o54* (drho/*+three*( -vx2-vx3)*/+c9o2*( -vx2-vx3)*( -vx2-vx3) * (c1o1 + drho)-cu_sq); - (D.f[DIR_0PP])[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[d0PP])[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]; @@ -4021,7 +4021,7 @@ __global__ void QSlipGeomDeviceComp27( { VeloY = vx2 - (vx1 * nx_dirBN[k] + vx2 * ny_dirBN[k] + vx3 * nz_dirBN[k]) * ny_dirBN[k]; VeloZ = vx3 - (vx1 * nx_dirBN[k] + vx2 * ny_dirBN[k] + vx3 * nz_dirBN[k]) * nz_dirBN[k]; - //phi = fac * (one + magS / (Op0000002+uk) * (one-q)); + //phi = fac * (one + magS / (c0p0000002+uk) * (one-q)); //phi = phi > one ? one:phi; //phi = fac; //Test q = testQ; //AAAAHHHHHH bitte wieder raus nehmen!!!! @@ -4029,7 +4029,7 @@ __global__ void QSlipGeomDeviceComp27( VeloY *= phi; VeloZ *= phi; feq=c1o54* (drho/*+three*( vx2-vx3)*/+c9o2*( vx2-vx3)*( vx2-vx3) * (c1o1 + drho)-cu_sq); - (D.f[DIR_0MP])[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[d0MP])[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]; @@ -4037,7 +4037,7 @@ __global__ void QSlipGeomDeviceComp27( { VeloY = vx2 - (vx1 * nx_dirTS[k] + vx2 * ny_dirTS[k] + vx3 * nz_dirTS[k]) * ny_dirTS[k]; VeloZ = vx3 - (vx1 * nx_dirTS[k] + vx2 * ny_dirTS[k] + vx3 * nz_dirTS[k]) * nz_dirTS[k]; - //phi = fac * (one + magS / (Op0000002+uk) * (one-q)); + //phi = fac * (one + magS / (c0p0000002+uk) * (one-q)); //phi = phi > one ? one:phi; //phi = fac; //Test q = testQ; //AAAAHHHHHH bitte wieder raus nehmen!!!! @@ -4045,7 +4045,7 @@ __global__ void QSlipGeomDeviceComp27( VeloY *= phi; VeloZ *= phi; feq=c1o54* (drho/*+three*( -vx2+vx3)*/+c9o2*( -vx2+vx3)*( -vx2+vx3) * (c1o1 + drho)-cu_sq); - (D.f[DIR_0PM])[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[d0PM])[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]; @@ -4054,7 +4054,7 @@ __global__ void QSlipGeomDeviceComp27( VeloX = vx1 - (vx1 * nx_dirTNE[k] + vx2 * ny_dirTNE[k] + vx3 * nz_dirTNE[k]) * nx_dirTNE[k]; VeloY = vx2 - (vx1 * nx_dirTNE[k] + vx2 * ny_dirTNE[k] + vx3 * nz_dirTNE[k]) * ny_dirTNE[k]; VeloZ = vx3 - (vx1 * nx_dirTNE[k] + vx2 * ny_dirTNE[k] + vx3 * nz_dirTNE[k]) * nz_dirTNE[k]; - //phi = fac * (one + magS / (Op0000002+uk) * (one-q)); + //phi = fac * (one + magS / (c0p0000002+uk) * (one-q)); //phi = phi > one ? one:phi; //phi = fac; //Test q = testQ; //AAAAHHHHHH bitte wieder raus nehmen!!!! @@ -4063,7 +4063,7 @@ __global__ void QSlipGeomDeviceComp27( VeloY *= phi; VeloZ *= phi; feq=c1o216*(drho/*+three*( vx1+vx2+vx3)*/+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3) * (c1o1 + drho)-cu_sq); - (D.f[DIR_MMM])[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[dMMM])[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]; @@ -4072,7 +4072,7 @@ __global__ void QSlipGeomDeviceComp27( VeloX = vx1 - (vx1 * nx_dirBSW[k] + vx2 * ny_dirBSW[k] + vx3 * nz_dirBSW[k]) * nx_dirBSW[k]; VeloY = vx2 - (vx1 * nx_dirBSW[k] + vx2 * ny_dirBSW[k] + vx3 * nz_dirBSW[k]) * ny_dirBSW[k]; VeloZ = vx3 - (vx1 * nx_dirBSW[k] + vx2 * ny_dirBSW[k] + vx3 * nz_dirBSW[k]) * nz_dirBSW[k]; - //phi = fac * (one + magS / (Op0000002+uk) * (one-q)); + //phi = fac * (one + magS / (c0p0000002+uk) * (one-q)); //phi = phi > one ? one:phi; //phi = fac; //Test q = testQ; //AAAAHHHHHH bitte wieder raus nehmen!!!! @@ -4081,7 +4081,7 @@ __global__ void QSlipGeomDeviceComp27( VeloY *= phi; VeloZ *= phi; feq=c1o216*(drho/*+three*(-vx1-vx2-vx3)*/+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3) * (c1o1 + drho)-cu_sq); - (D.f[DIR_PPP])[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[dPPP])[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]; @@ -4090,7 +4090,7 @@ __global__ void QSlipGeomDeviceComp27( VeloX = vx1 - (vx1 * nx_dirBNE[k] + vx2 * ny_dirBNE[k] + vx3 * nz_dirBNE[k]) * nx_dirBNE[k]; VeloY = vx2 - (vx1 * nx_dirBNE[k] + vx2 * ny_dirBNE[k] + vx3 * nz_dirBNE[k]) * ny_dirBNE[k]; VeloZ = vx3 - (vx1 * nx_dirBNE[k] + vx2 * ny_dirBNE[k] + vx3 * nz_dirBNE[k]) * nz_dirBNE[k]; - //phi = fac * (one + magS / (Op0000002+uk) * (one-q)); + //phi = fac * (one + magS / (c0p0000002+uk) * (one-q)); //phi = phi > one ? one:phi; //phi = fac; //Test q = testQ; //AAAAHHHHHH bitte wieder raus nehmen!!!! @@ -4099,7 +4099,7 @@ __global__ void QSlipGeomDeviceComp27( VeloY *= phi; VeloZ *= phi; feq=c1o216*(drho/*+three*( vx1+vx2-vx3)*/+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3) * (c1o1 + drho)-cu_sq); - (D.f[DIR_MMP])[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[dMMP])[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]; @@ -4108,7 +4108,7 @@ __global__ void QSlipGeomDeviceComp27( VeloX = vx1 - (vx1 * nx_dirTSW[k] + vx2 * ny_dirTSW[k] + vx3 * nz_dirTSW[k]) * nx_dirTSW[k]; VeloY = vx2 - (vx1 * nx_dirTSW[k] + vx2 * ny_dirTSW[k] + vx3 * nz_dirTSW[k]) * ny_dirTSW[k]; VeloZ = vx3 - (vx1 * nx_dirTSW[k] + vx2 * ny_dirTSW[k] + vx3 * nz_dirTSW[k]) * nz_dirTSW[k]; - //phi = fac * (one + magS / (Op0000002+uk) * (one-q)); + //phi = fac * (one + magS / (c0p0000002+uk) * (one-q)); //phi = phi > one ? one:phi; //phi = fac; //Test q = testQ; //AAAAHHHHHH bitte wieder raus nehmen!!!! @@ -4117,7 +4117,7 @@ __global__ void QSlipGeomDeviceComp27( VeloY *= phi; VeloZ *= phi; feq=c1o216*(drho/*+three*(-vx1-vx2+vx3)*/+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3) * (c1o1 + drho)-cu_sq); - (D.f[DIR_PPM])[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[dPPM])[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]; @@ -4126,7 +4126,7 @@ __global__ void QSlipGeomDeviceComp27( VeloX = vx1 - (vx1 * nx_dirTSE[k] + vx2 * ny_dirTSE[k] + vx3 * nz_dirTSE[k]) * nx_dirTSE[k]; VeloY = vx2 - (vx1 * nx_dirTSE[k] + vx2 * ny_dirTSE[k] + vx3 * nz_dirTSE[k]) * ny_dirTSE[k]; VeloZ = vx3 - (vx1 * nx_dirTSE[k] + vx2 * ny_dirTSE[k] + vx3 * nz_dirTSE[k]) * nz_dirTSE[k]; - //phi = fac * (one + magS / (Op0000002+uk) * (one-q)); + //phi = fac * (one + magS / (c0p0000002+uk) * (one-q)); //phi = phi > one ? one:phi; //phi = fac; //Test q = testQ; //AAAAHHHHHH bitte wieder raus nehmen!!!! @@ -4135,7 +4135,7 @@ __global__ void QSlipGeomDeviceComp27( VeloY *= phi; VeloZ *= phi; feq=c1o216*(drho/*+three*( vx1-vx2+vx3)*/+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3) * (c1o1 + drho)-cu_sq); - (D.f[DIR_MPM])[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[dMPM])[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]; @@ -4144,7 +4144,7 @@ __global__ void QSlipGeomDeviceComp27( VeloX = vx1 - (vx1 * nx_dirBNW[k] + vx2 * ny_dirBNW[k] + vx3 * nz_dirBNW[k]) * nx_dirBNW[k]; VeloY = vx2 - (vx1 * nx_dirBNW[k] + vx2 * ny_dirBNW[k] + vx3 * nz_dirBNW[k]) * ny_dirBNW[k]; VeloZ = vx3 - (vx1 * nx_dirBNW[k] + vx2 * ny_dirBNW[k] + vx3 * nz_dirBNW[k]) * nz_dirBNW[k]; - //phi = fac * (one + magS / (Op0000002+uk) * (one-q)); + //phi = fac * (one + magS / (c0p0000002+uk) * (one-q)); //phi = phi > one ? one:phi; //phi = fac; //Test q = testQ; //AAAAHHHHHH bitte wieder raus nehmen!!!! @@ -4153,7 +4153,7 @@ __global__ void QSlipGeomDeviceComp27( VeloY *= phi; VeloZ *= phi; feq=c1o216*(drho/*+three*(-vx1+vx2-vx3)*/+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3) * (c1o1 + drho)-cu_sq); - (D.f[DIR_PMP])[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[dPMP])[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]; @@ -4162,7 +4162,7 @@ __global__ void QSlipGeomDeviceComp27( VeloX = vx1 - (vx1 * nx_dirBSE[k] + vx2 * ny_dirBSE[k] + vx3 * nz_dirBSE[k]) * nx_dirBSE[k]; VeloY = vx2 - (vx1 * nx_dirBSE[k] + vx2 * ny_dirBSE[k] + vx3 * nz_dirBSE[k]) * ny_dirBSE[k]; VeloZ = vx3 - (vx1 * nx_dirBSE[k] + vx2 * ny_dirBSE[k] + vx3 * nz_dirBSE[k]) * nz_dirBSE[k]; - //phi = fac * (one + magS / (Op0000002+uk) * (one-q)); + //phi = fac * (one + magS / (c0p0000002+uk) * (one-q)); //phi = (phi > one) ? one:phi; //phi = fac; //Test q = testQ; //AAAAHHHHHH bitte wieder raus nehmen!!!! @@ -4171,7 +4171,7 @@ __global__ void QSlipGeomDeviceComp27( VeloY *= phi; VeloZ *= phi; feq=c1o216*(drho/*+three*( vx1-vx2-vx3)*/+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3) * (c1o1 + drho)-cu_sq); - (D.f[DIR_MPP])[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[dMPP])[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]; @@ -4180,7 +4180,7 @@ __global__ void QSlipGeomDeviceComp27( VeloX = vx1 - (vx1 * nx_dirTNW[k] + vx2 * ny_dirTNW[k] + vx3 * nz_dirTNW[k]) * nx_dirTNW[k]; VeloY = vx2 - (vx1 * nx_dirTNW[k] + vx2 * ny_dirTNW[k] + vx3 * nz_dirTNW[k]) * ny_dirTNW[k]; VeloZ = vx3 - (vx1 * nx_dirTNW[k] + vx2 * ny_dirTNW[k] + vx3 * nz_dirTNW[k]) * nz_dirTNW[k]; - //phi = fac * (one + magS / (Op0000002+uk) * (one-q)); + //phi = fac * (one + magS / (c0p0000002+uk) * (one-q)); //phi = phi > one ? one:phi; //phi = fac; //Test q = testQ; //AAAAHHHHHH bitte wieder raus nehmen!!!! @@ -4189,7 +4189,7 @@ __global__ void QSlipGeomDeviceComp27( VeloY *= phi; VeloZ *= phi; feq=c1o216*(drho/*+three*(-vx1+vx2+vx3)*/+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3) * (c1o1 + drho)-cu_sq); - (D.f[DIR_PMM])[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[dPMM])[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; } } } @@ -4252,63 +4252,63 @@ __global__ void QSlipNormDeviceComp27( Distributions27 D; if (isEvenTimestep==true) { - D.f[DIR_P00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_M00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_PMP * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_MPM * numberOfLBnodes]; + D.f[dP00] = &DD[dP00 * numberOfLBnodes]; + D.f[dM00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00P] = &DD[d00P * numberOfLBnodes]; + D.f[d00M] = &DD[d00M * numberOfLBnodes]; + D.f[dPP0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dMM0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dP0P] = &DD[dP0P * numberOfLBnodes]; + D.f[dM0M] = &DD[dM0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dP0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dM0P * numberOfLBnodes]; + D.f[d0PP] = &DD[d0PP * numberOfLBnodes]; + D.f[d0MM] = &DD[d0MM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0PM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dPPP * numberOfLBnodes]; + D.f[dMMP] = &DD[dMMP * numberOfLBnodes]; + D.f[dPMP] = &DD[dPMP * numberOfLBnodes]; + D.f[dMPP] = &DD[dMPP * numberOfLBnodes]; + D.f[dPPM] = &DD[dPPM * numberOfLBnodes]; + D.f[dMMM] = &DD[dMMM * numberOfLBnodes]; + D.f[dPMM] = &DD[dPMM * numberOfLBnodes]; + D.f[dMPM] = &DD[dMPM * numberOfLBnodes]; } else { - D.f[DIR_M00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_P00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_MPM * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_PMP * numberOfLBnodes]; + D.f[dM00] = &DD[dP00 * numberOfLBnodes]; + D.f[dP00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00M] = &DD[d00P * numberOfLBnodes]; + D.f[d00P] = &DD[d00M * numberOfLBnodes]; + D.f[dMM0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dPP0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dM0M] = &DD[dP0P * numberOfLBnodes]; + D.f[dP0P] = &DD[dM0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dP0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dM0P * numberOfLBnodes]; + D.f[d0MM] = &DD[d0PP * numberOfLBnodes]; + D.f[d0PP] = &DD[d0MM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0PM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dMMM * numberOfLBnodes]; + D.f[dMMP] = &DD[dPPM * numberOfLBnodes]; + D.f[dPMP] = &DD[dMPM * numberOfLBnodes]; + D.f[dMPP] = &DD[dPMM * numberOfLBnodes]; + D.f[dPPM] = &DD[dMMP * numberOfLBnodes]; + D.f[dMMM] = &DD[dPPP * numberOfLBnodes]; + D.f[dPMM] = &DD[dMPP * numberOfLBnodes]; + D.f[dMPM] = &DD[dPMP * numberOfLBnodes]; } //////////////////////////////////////////////////////////////////////////////// const unsigned x = threadIdx.x; // Globaler x-Index @@ -4329,128 +4329,128 @@ __global__ void QSlipNormDeviceComp27( *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[DIR_P00 * numberOfBCnodes]; - q_dirW = &QQ[DIR_M00 * numberOfBCnodes]; - q_dirN = &QQ[DIR_0P0 * numberOfBCnodes]; - q_dirS = &QQ[DIR_0M0 * numberOfBCnodes]; - q_dirT = &QQ[DIR_00P * numberOfBCnodes]; - q_dirB = &QQ[DIR_00M * numberOfBCnodes]; - q_dirNE = &QQ[DIR_PP0 * numberOfBCnodes]; - q_dirSW = &QQ[DIR_MM0 * numberOfBCnodes]; - q_dirSE = &QQ[DIR_PM0 * numberOfBCnodes]; - q_dirNW = &QQ[DIR_MP0 * numberOfBCnodes]; - q_dirTE = &QQ[DIR_P0P * numberOfBCnodes]; - q_dirBW = &QQ[DIR_M0M * numberOfBCnodes]; - q_dirBE = &QQ[DIR_P0M * numberOfBCnodes]; - q_dirTW = &QQ[DIR_M0P * numberOfBCnodes]; - q_dirTN = &QQ[DIR_0PP * numberOfBCnodes]; - q_dirBS = &QQ[DIR_0MM * numberOfBCnodes]; - q_dirBN = &QQ[DIR_0PM * numberOfBCnodes]; - q_dirTS = &QQ[DIR_0MP * numberOfBCnodes]; - q_dirTNE = &QQ[DIR_PPP * numberOfBCnodes]; - q_dirTSW = &QQ[DIR_MMP * numberOfBCnodes]; - q_dirTSE = &QQ[DIR_PMP * numberOfBCnodes]; - q_dirTNW = &QQ[DIR_MPP * numberOfBCnodes]; - q_dirBNE = &QQ[DIR_PPM * numberOfBCnodes]; - q_dirBSW = &QQ[DIR_MMM * numberOfBCnodes]; - q_dirBSE = &QQ[DIR_PMM * numberOfBCnodes]; - q_dirBNW = &QQ[DIR_MPM * numberOfBCnodes]; + q_dirE = &QQ[dP00 * numberOfBCnodes]; + q_dirW = &QQ[dM00 * numberOfBCnodes]; + q_dirN = &QQ[d0P0 * numberOfBCnodes]; + q_dirS = &QQ[d0M0 * numberOfBCnodes]; + q_dirT = &QQ[d00P * numberOfBCnodes]; + q_dirB = &QQ[d00M * numberOfBCnodes]; + q_dirNE = &QQ[dPP0 * numberOfBCnodes]; + q_dirSW = &QQ[dMM0 * numberOfBCnodes]; + q_dirSE = &QQ[dPM0 * numberOfBCnodes]; + q_dirNW = &QQ[dMP0 * numberOfBCnodes]; + q_dirTE = &QQ[dP0P * numberOfBCnodes]; + q_dirBW = &QQ[dM0M * numberOfBCnodes]; + q_dirBE = &QQ[dP0M * numberOfBCnodes]; + q_dirTW = &QQ[dM0P * numberOfBCnodes]; + q_dirTN = &QQ[d0PP * numberOfBCnodes]; + q_dirBS = &QQ[d0MM * numberOfBCnodes]; + q_dirBN = &QQ[d0PM * numberOfBCnodes]; + q_dirTS = &QQ[d0MP * numberOfBCnodes]; + q_dirTNE = &QQ[dPPP * numberOfBCnodes]; + q_dirTSW = &QQ[dMMP * numberOfBCnodes]; + q_dirTSE = &QQ[dPMP * numberOfBCnodes]; + q_dirTNW = &QQ[dMPP * numberOfBCnodes]; + q_dirBNE = &QQ[dPPM * numberOfBCnodes]; + q_dirBSW = &QQ[dMMM * numberOfBCnodes]; + q_dirBSE = &QQ[dPMM * numberOfBCnodes]; + q_dirBNW = &QQ[dMPM * 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[DIR_P00 * numberOfBCnodes]; - nx_dirW = &NormalX[DIR_M00 * numberOfBCnodes]; - nx_dirN = &NormalX[DIR_0P0 * numberOfBCnodes]; - nx_dirS = &NormalX[DIR_0M0 * numberOfBCnodes]; - nx_dirT = &NormalX[DIR_00P * numberOfBCnodes]; - nx_dirB = &NormalX[DIR_00M * numberOfBCnodes]; - nx_dirNE = &NormalX[DIR_PP0 * numberOfBCnodes]; - nx_dirSW = &NormalX[DIR_MM0 * numberOfBCnodes]; - nx_dirSE = &NormalX[DIR_PM0 * numberOfBCnodes]; - nx_dirNW = &NormalX[DIR_MP0 * numberOfBCnodes]; - nx_dirTE = &NormalX[DIR_P0P * numberOfBCnodes]; - nx_dirBW = &NormalX[DIR_M0M * numberOfBCnodes]; - nx_dirBE = &NormalX[DIR_P0M * numberOfBCnodes]; - nx_dirTW = &NormalX[DIR_M0P * numberOfBCnodes]; - nx_dirTN = &NormalX[DIR_0PP * numberOfBCnodes]; - nx_dirBS = &NormalX[DIR_0MM * numberOfBCnodes]; - nx_dirBN = &NormalX[DIR_0PM * numberOfBCnodes]; - nx_dirTS = &NormalX[DIR_0MP * numberOfBCnodes]; - nx_dirTNE = &NormalX[DIR_PPP * numberOfBCnodes]; - nx_dirTSW = &NormalX[DIR_MMP * numberOfBCnodes]; - nx_dirTSE = &NormalX[DIR_PMP * numberOfBCnodes]; - nx_dirTNW = &NormalX[DIR_MPP * numberOfBCnodes]; - nx_dirBNE = &NormalX[DIR_PPM * numberOfBCnodes]; - nx_dirBSW = &NormalX[DIR_MMM * numberOfBCnodes]; - nx_dirBSE = &NormalX[DIR_PMM * numberOfBCnodes]; - nx_dirBNW = &NormalX[DIR_MPM * numberOfBCnodes]; + nx_dirE = &NormalX[dP00 * numberOfBCnodes]; + nx_dirW = &NormalX[dM00 * numberOfBCnodes]; + nx_dirN = &NormalX[d0P0 * numberOfBCnodes]; + nx_dirS = &NormalX[d0M0 * numberOfBCnodes]; + nx_dirT = &NormalX[d00P * numberOfBCnodes]; + nx_dirB = &NormalX[d00M * numberOfBCnodes]; + nx_dirNE = &NormalX[dPP0 * numberOfBCnodes]; + nx_dirSW = &NormalX[dMM0 * numberOfBCnodes]; + nx_dirSE = &NormalX[dPM0 * numberOfBCnodes]; + nx_dirNW = &NormalX[dMP0 * numberOfBCnodes]; + nx_dirTE = &NormalX[dP0P * numberOfBCnodes]; + nx_dirBW = &NormalX[dM0M * numberOfBCnodes]; + nx_dirBE = &NormalX[dP0M * numberOfBCnodes]; + nx_dirTW = &NormalX[dM0P * numberOfBCnodes]; + nx_dirTN = &NormalX[d0PP * numberOfBCnodes]; + nx_dirBS = &NormalX[d0MM * numberOfBCnodes]; + nx_dirBN = &NormalX[d0PM * numberOfBCnodes]; + nx_dirTS = &NormalX[d0MP * numberOfBCnodes]; + nx_dirTNE = &NormalX[dPPP * numberOfBCnodes]; + nx_dirTSW = &NormalX[dMMP * numberOfBCnodes]; + nx_dirTSE = &NormalX[dPMP * numberOfBCnodes]; + nx_dirTNW = &NormalX[dMPP * numberOfBCnodes]; + nx_dirBNE = &NormalX[dPPM * numberOfBCnodes]; + nx_dirBSW = &NormalX[dMMM * numberOfBCnodes]; + nx_dirBSE = &NormalX[dPMM * numberOfBCnodes]; + nx_dirBNW = &NormalX[dMPM * 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[DIR_P00 * numberOfBCnodes]; - ny_dirW = &NormalY[DIR_M00 * numberOfBCnodes]; - ny_dirN = &NormalY[DIR_0P0 * numberOfBCnodes]; - ny_dirS = &NormalY[DIR_0M0 * numberOfBCnodes]; - ny_dirT = &NormalY[DIR_00P * numberOfBCnodes]; - ny_dirB = &NormalY[DIR_00M * numberOfBCnodes]; - ny_dirNE = &NormalY[DIR_PP0 * numberOfBCnodes]; - ny_dirSW = &NormalY[DIR_MM0 * numberOfBCnodes]; - ny_dirSE = &NormalY[DIR_PM0 * numberOfBCnodes]; - ny_dirNW = &NormalY[DIR_MP0 * numberOfBCnodes]; - ny_dirTE = &NormalY[DIR_P0P * numberOfBCnodes]; - ny_dirBW = &NormalY[DIR_M0M * numberOfBCnodes]; - ny_dirBE = &NormalY[DIR_P0M * numberOfBCnodes]; - ny_dirTW = &NormalY[DIR_M0P * numberOfBCnodes]; - ny_dirTN = &NormalY[DIR_0PP * numberOfBCnodes]; - ny_dirBS = &NormalY[DIR_0MM * numberOfBCnodes]; - ny_dirBN = &NormalY[DIR_0PM * numberOfBCnodes]; - ny_dirTS = &NormalY[DIR_0MP * numberOfBCnodes]; - ny_dirTNE = &NormalY[DIR_PPP * numberOfBCnodes]; - ny_dirTSW = &NormalY[DIR_MMP * numberOfBCnodes]; - ny_dirTSE = &NormalY[DIR_PMP * numberOfBCnodes]; - ny_dirTNW = &NormalY[DIR_MPP * numberOfBCnodes]; - ny_dirBNE = &NormalY[DIR_PPM * numberOfBCnodes]; - ny_dirBSW = &NormalY[DIR_MMM * numberOfBCnodes]; - ny_dirBSE = &NormalY[DIR_PMM * numberOfBCnodes]; - ny_dirBNW = &NormalY[DIR_MPM * numberOfBCnodes]; + ny_dirE = &NormalY[dP00 * numberOfBCnodes]; + ny_dirW = &NormalY[dM00 * numberOfBCnodes]; + ny_dirN = &NormalY[d0P0 * numberOfBCnodes]; + ny_dirS = &NormalY[d0M0 * numberOfBCnodes]; + ny_dirT = &NormalY[d00P * numberOfBCnodes]; + ny_dirB = &NormalY[d00M * numberOfBCnodes]; + ny_dirNE = &NormalY[dPP0 * numberOfBCnodes]; + ny_dirSW = &NormalY[dMM0 * numberOfBCnodes]; + ny_dirSE = &NormalY[dPM0 * numberOfBCnodes]; + ny_dirNW = &NormalY[dMP0 * numberOfBCnodes]; + ny_dirTE = &NormalY[dP0P * numberOfBCnodes]; + ny_dirBW = &NormalY[dM0M * numberOfBCnodes]; + ny_dirBE = &NormalY[dP0M * numberOfBCnodes]; + ny_dirTW = &NormalY[dM0P * numberOfBCnodes]; + ny_dirTN = &NormalY[d0PP * numberOfBCnodes]; + ny_dirBS = &NormalY[d0MM * numberOfBCnodes]; + ny_dirBN = &NormalY[d0PM * numberOfBCnodes]; + ny_dirTS = &NormalY[d0MP * numberOfBCnodes]; + ny_dirTNE = &NormalY[dPPP * numberOfBCnodes]; + ny_dirTSW = &NormalY[dMMP * numberOfBCnodes]; + ny_dirTSE = &NormalY[dPMP * numberOfBCnodes]; + ny_dirTNW = &NormalY[dMPP * numberOfBCnodes]; + ny_dirBNE = &NormalY[dPPM * numberOfBCnodes]; + ny_dirBSW = &NormalY[dMMM * numberOfBCnodes]; + ny_dirBSE = &NormalY[dPMM * numberOfBCnodes]; + ny_dirBNW = &NormalY[dMPM * 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[DIR_P00 * numberOfBCnodes]; - nz_dirW = &NormalZ[DIR_M00 * numberOfBCnodes]; - nz_dirN = &NormalZ[DIR_0P0 * numberOfBCnodes]; - nz_dirS = &NormalZ[DIR_0M0 * numberOfBCnodes]; - nz_dirT = &NormalZ[DIR_00P * numberOfBCnodes]; - nz_dirB = &NormalZ[DIR_00M * numberOfBCnodes]; - nz_dirNE = &NormalZ[DIR_PP0 * numberOfBCnodes]; - nz_dirSW = &NormalZ[DIR_MM0 * numberOfBCnodes]; - nz_dirSE = &NormalZ[DIR_PM0 * numberOfBCnodes]; - nz_dirNW = &NormalZ[DIR_MP0 * numberOfBCnodes]; - nz_dirTE = &NormalZ[DIR_P0P * numberOfBCnodes]; - nz_dirBW = &NormalZ[DIR_M0M * numberOfBCnodes]; - nz_dirBE = &NormalZ[DIR_P0M * numberOfBCnodes]; - nz_dirTW = &NormalZ[DIR_M0P * numberOfBCnodes]; - nz_dirTN = &NormalZ[DIR_0PP * numberOfBCnodes]; - nz_dirBS = &NormalZ[DIR_0MM * numberOfBCnodes]; - nz_dirBN = &NormalZ[DIR_0PM * numberOfBCnodes]; - nz_dirTS = &NormalZ[DIR_0MP * numberOfBCnodes]; - nz_dirTNE = &NormalZ[DIR_PPP * numberOfBCnodes]; - nz_dirTSW = &NormalZ[DIR_MMP * numberOfBCnodes]; - nz_dirTSE = &NormalZ[DIR_PMP * numberOfBCnodes]; - nz_dirTNW = &NormalZ[DIR_MPP * numberOfBCnodes]; - nz_dirBNE = &NormalZ[DIR_PPM * numberOfBCnodes]; - nz_dirBSW = &NormalZ[DIR_MMM * numberOfBCnodes]; - nz_dirBSE = &NormalZ[DIR_PMM * numberOfBCnodes]; - nz_dirBNW = &NormalZ[DIR_MPM * numberOfBCnodes]; + nz_dirE = &NormalZ[dP00 * numberOfBCnodes]; + nz_dirW = &NormalZ[dM00 * numberOfBCnodes]; + nz_dirN = &NormalZ[d0P0 * numberOfBCnodes]; + nz_dirS = &NormalZ[d0M0 * numberOfBCnodes]; + nz_dirT = &NormalZ[d00P * numberOfBCnodes]; + nz_dirB = &NormalZ[d00M * numberOfBCnodes]; + nz_dirNE = &NormalZ[dPP0 * numberOfBCnodes]; + nz_dirSW = &NormalZ[dMM0 * numberOfBCnodes]; + nz_dirSE = &NormalZ[dPM0 * numberOfBCnodes]; + nz_dirNW = &NormalZ[dMP0 * numberOfBCnodes]; + nz_dirTE = &NormalZ[dP0P * numberOfBCnodes]; + nz_dirBW = &NormalZ[dM0M * numberOfBCnodes]; + nz_dirBE = &NormalZ[dP0M * numberOfBCnodes]; + nz_dirTW = &NormalZ[dM0P * numberOfBCnodes]; + nz_dirTN = &NormalZ[d0PP * numberOfBCnodes]; + nz_dirBS = &NormalZ[d0MM * numberOfBCnodes]; + nz_dirBN = &NormalZ[d0PM * numberOfBCnodes]; + nz_dirTS = &NormalZ[d0MP * numberOfBCnodes]; + nz_dirTNE = &NormalZ[dPPP * numberOfBCnodes]; + nz_dirTSW = &NormalZ[dMMP * numberOfBCnodes]; + nz_dirTSE = &NormalZ[dPMP * numberOfBCnodes]; + nz_dirTNW = &NormalZ[dMPP * numberOfBCnodes]; + nz_dirBNE = &NormalZ[dPPM * numberOfBCnodes]; + nz_dirBSW = &NormalZ[dMMM * numberOfBCnodes]; + nz_dirBSE = &NormalZ[dPMM * numberOfBCnodes]; + nz_dirBNW = &NormalZ[dMPM * numberOfBCnodes]; //////////////////////////////////////////////////////////////////////////////// //index unsigned int KQK = k_Q[k]; @@ -4482,37 +4482,37 @@ __global__ void QSlipNormDeviceComp27( unsigned int ktne = KQK; unsigned int kbsw = neighborZ[ksw]; //////////////////////////////////////////////////////////////////////////////// - real f_W = (D.f[DIR_P00])[ke ]; - real f_E = (D.f[DIR_M00])[kw ]; - real f_S = (D.f[DIR_0P0])[kn ]; - real f_N = (D.f[DIR_0M0])[ks ]; - real f_B = (D.f[DIR_00P])[kt ]; - real f_T = (D.f[DIR_00M])[kb ]; - real f_SW = (D.f[DIR_PP0])[kne ]; - real f_NE = (D.f[DIR_MM0])[ksw ]; - real f_NW = (D.f[DIR_PM0])[kse ]; - real f_SE = (D.f[DIR_MP0])[knw ]; - real f_BW = (D.f[DIR_P0P])[kte ]; - real f_TE = (D.f[DIR_M0M])[kbw ]; - real f_TW = (D.f[DIR_P0M])[kbe ]; - real f_BE = (D.f[DIR_M0P])[ktw ]; - real f_BS = (D.f[DIR_0PP])[ktn ]; - real f_TN = (D.f[DIR_0MM])[kbs ]; - real f_TS = (D.f[DIR_0PM])[kbn ]; - real f_BN = (D.f[DIR_0MP])[kts ]; - real f_BSW = (D.f[DIR_PPP])[ktne ]; - real f_BNE = (D.f[DIR_MMP])[ktsw ]; - real f_BNW = (D.f[DIR_PMP])[ktse ]; - real f_BSE = (D.f[DIR_MPP])[ktnw ]; - real f_TSW = (D.f[DIR_PPM])[kbne ]; - real f_TNE = (D.f[DIR_MMM])[kbsw ]; - real f_TNW = (D.f[DIR_PMM])[kbse ]; - real f_TSE = (D.f[DIR_MPM])[kbnw ]; + real f_W = (D.f[dP00])[ke ]; + real f_E = (D.f[dM00])[kw ]; + real f_S = (D.f[d0P0])[kn ]; + real f_N = (D.f[d0M0])[ks ]; + real f_B = (D.f[d00P])[kt ]; + real f_T = (D.f[d00M])[kb ]; + real f_SW = (D.f[dPP0])[kne ]; + real f_NE = (D.f[dMM0])[ksw ]; + real f_NW = (D.f[dPM0])[kse ]; + real f_SE = (D.f[dMP0])[knw ]; + real f_BW = (D.f[dP0P])[kte ]; + real f_TE = (D.f[dM0M])[kbw ]; + real f_TW = (D.f[dP0M])[kbe ]; + real f_BE = (D.f[dM0P])[ktw ]; + real f_BS = (D.f[d0PP])[ktn ]; + real f_TN = (D.f[d0MM])[kbs ]; + real f_TS = (D.f[d0PM])[kbn ]; + real f_BN = (D.f[d0MP])[kts ]; + real f_BSW = (D.f[dPPP])[ktne ]; + real f_BNE = (D.f[dMMP])[ktsw ]; + real f_BNW = (D.f[dPMP])[ktse ]; + real f_BSE = (D.f[dMPP])[ktnw ]; + real f_TSW = (D.f[dPPM])[kbne ]; + real f_TNE = (D.f[dMMM])[kbsw ]; + real f_TNW = (D.f[dPMM])[kbse ]; + real f_TSE = (D.f[dMPM])[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[DIR_000])[kzero]); + f_T + f_B + f_N + f_S + f_E + f_W + ((D.f[d000])[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)) + @@ -4532,63 +4532,63 @@ __global__ void QSlipNormDeviceComp27( ////////////////////////////////////////////////////////////////////////// if (isEvenTimestep==false) { - D.f[DIR_P00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_M00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_PMP * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_MPM * numberOfLBnodes]; + D.f[dP00] = &DD[dP00 * numberOfLBnodes]; + D.f[dM00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00P] = &DD[d00P * numberOfLBnodes]; + D.f[d00M] = &DD[d00M * numberOfLBnodes]; + D.f[dPP0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dMM0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dP0P] = &DD[dP0P * numberOfLBnodes]; + D.f[dM0M] = &DD[dM0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dP0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dM0P * numberOfLBnodes]; + D.f[d0PP] = &DD[d0PP * numberOfLBnodes]; + D.f[d0MM] = &DD[d0MM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0PM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dPPP * numberOfLBnodes]; + D.f[dMMP] = &DD[dMMP * numberOfLBnodes]; + D.f[dPMP] = &DD[dPMP * numberOfLBnodes]; + D.f[dMPP] = &DD[dMPP * numberOfLBnodes]; + D.f[dPPM] = &DD[dPPM * numberOfLBnodes]; + D.f[dMMM] = &DD[dMMM * numberOfLBnodes]; + D.f[dPMM] = &DD[dPMM * numberOfLBnodes]; + D.f[dMPM] = &DD[dMPM * numberOfLBnodes]; } else { - D.f[DIR_M00] = &DD[DIR_P00 * numberOfLBnodes]; - D.f[DIR_P00] = &DD[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0M0] = &DD[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0P0] = &DD[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00M] = &DD[DIR_00P * numberOfLBnodes]; - D.f[DIR_00P] = &DD[DIR_00M * numberOfLBnodes]; - D.f[DIR_MM0] = &DD[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_PP0] = &DD[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DD[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DD[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_M0M] = &DD[DIR_P0P * numberOfLBnodes]; - D.f[DIR_P0P] = &DD[DIR_M0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DD[DIR_P0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DD[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0MM] = &DD[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0PP] = &DD[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0MP] = &DD[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0PM] = &DD[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DD[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DD[DIR_MMM * numberOfLBnodes]; - D.f[DIR_MMP] = &DD[DIR_PPM * numberOfLBnodes]; - D.f[DIR_PMP] = &DD[DIR_MPM * numberOfLBnodes]; - D.f[DIR_MPP] = &DD[DIR_PMM * numberOfLBnodes]; - D.f[DIR_PPM] = &DD[DIR_MMP * numberOfLBnodes]; - D.f[DIR_MMM] = &DD[DIR_PPP * numberOfLBnodes]; - D.f[DIR_PMM] = &DD[DIR_MPP * numberOfLBnodes]; - D.f[DIR_MPM] = &DD[DIR_PMP * numberOfLBnodes]; + D.f[dM00] = &DD[dP00 * numberOfLBnodes]; + D.f[dP00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00M] = &DD[d00P * numberOfLBnodes]; + D.f[d00P] = &DD[d00M * numberOfLBnodes]; + D.f[dMM0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dPP0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dM0M] = &DD[dP0P * numberOfLBnodes]; + D.f[dP0P] = &DD[dM0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dP0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dM0P * numberOfLBnodes]; + D.f[d0MM] = &DD[d0PP * numberOfLBnodes]; + D.f[d0PP] = &DD[d0MM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0PM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dMMM * numberOfLBnodes]; + D.f[dMMP] = &DD[dPPM * numberOfLBnodes]; + D.f[dPMP] = &DD[dMPM * numberOfLBnodes]; + D.f[dMPP] = &DD[dPMM * numberOfLBnodes]; + D.f[dPPM] = &DD[dMMP * numberOfLBnodes]; + D.f[dMMM] = &DD[dPPP * numberOfLBnodes]; + D.f[dPMM] = &DD[dMPP * numberOfLBnodes]; + D.f[dMPM] = &DD[dPMP * numberOfLBnodes]; } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// real VeloX = vx1; @@ -4610,11 +4610,11 @@ __global__ void QSlipNormDeviceComp27( fac = fac * magS / (c1o3 * (c1o1 / om1 - c1o2)); //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real *facAst = &QQ[DIR_000 * numberOfBCnodes]; + real *facAst = &QQ[d000 * numberOfBCnodes]; fac = fac * alpha + facAst[k] * (c1o1 - alpha); facAst[k] = fac; - //(&QQ[DIR_000 * numberOfBCnodes])[KQK] = fac; + //(&QQ[d000 * numberOfBCnodes])[KQK] = fac; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////real uk = sqrtf(vx1*vx1 + vx2*vx2 + vx3*vx3); //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -4662,7 +4662,7 @@ __global__ void QSlipNormDeviceComp27( real un = c0o1; real ut = c0o1; real tangential = c0o1; - //real smallSingle = Op0000002; + //real cSmallSingle = c0p0000002; q = q_dirE[k]; if (q>=c0o1 && q<=c1o1) @@ -4670,13 +4670,13 @@ __global__ void QSlipNormDeviceComp27( VeloX = vx1 - (vx1 * nx_dirE[k] + vx2 * ny_dirE[k] + vx3 * nz_dirE[k]) * nx_dirE[k]; un = fabs((vx1 * nx_dirE[k] + vx2 * ny_dirE[k] + vx3 * nz_dirE[k]) * nx_dirE[k]); ut = fabs(VeloX); - tangential = ut / (ut + un + smallSingle); + tangential = ut / (ut + un + cSmallSingle); qSlip = sliplength * fabs( nx_dirE[k]); //sliplength * e_i * n_i //qSlip = (qSlip < zero) ? zero:qSlip; //tangential = (tangential > one) ? one:tangential; - q = (q + qSlip)/(c1o1 + qSlip * (c1o1 - tangential) / (smallSingle + q)); + q = (q + qSlip)/(c1o1 + qSlip * (c1o1 - tangential) / (cSmallSingle + q)); feq=c2o27* (drho/*+three*( vx1 )*/+c9o2*( vx1 )*( vx1 ) * (c1o1 + drho)-cu_sq); - (D.f[DIR_M00])[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[dM00])[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]; @@ -4685,13 +4685,13 @@ __global__ void QSlipNormDeviceComp27( VeloX = vx1 - (vx1 * nx_dirW[k] + vx2 * ny_dirW[k] + vx3 * nz_dirW[k]) * nx_dirW[k]; un = fabs(-(vx1 * nx_dirW[k] + vx2 * ny_dirW[k] + vx3 * nz_dirW[k]) * nx_dirW[k]); ut = fabs(-VeloX); - tangential = ut / (ut + un + smallSingle); + tangential = ut / (ut + un + cSmallSingle); qSlip = sliplength * fabs(-nx_dirW[k]); //sliplength * e_i * n_i //qSlip = (qSlip < zero) ? zero:qSlip; //tangential = (tangential > one) ? one:tangential; - q = (q + qSlip)/(c1o1 + qSlip * (c1o1 - tangential) / (smallSingle + q)); + q = (q + qSlip)/(c1o1 + qSlip * (c1o1 - tangential) / (cSmallSingle + q)); feq=c2o27* (drho/*+three*(-vx1 )*/+c9o2*(-vx1 )*(-vx1 ) * (c1o1 + drho)-cu_sq); - (D.f[DIR_P00])[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[dP00])[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]; @@ -4700,13 +4700,13 @@ __global__ void QSlipNormDeviceComp27( VeloY = vx2 - (vx1 * nx_dirN[k] + vx2 * ny_dirN[k] + vx3 * nz_dirN[k]) * ny_dirN[k]; un = fabs( (vx1 * nx_dirN[k] + vx2 * ny_dirN[k] + vx3 * nz_dirN[k]) * ny_dirN[k]); ut = fabs( VeloY); - tangential = ut / (ut + un + smallSingle); + tangential = ut / (ut + un + cSmallSingle); qSlip = sliplength * fabs( ny_dirN[k]); //sliplength * e_i * n_i //qSlip = (qSlip < zero) ? zero:qSlip; //tangential = (tangential > one) ? one:tangential; - q = (q + qSlip)/(c1o1 + qSlip * (c1o1 - tangential) / (smallSingle + q)); + q = (q + qSlip)/(c1o1 + qSlip * (c1o1 - tangential) / (cSmallSingle + q)); feq=c2o27* (drho/*+three*( vx2 )*/+c9o2*( vx2 )*( vx2 ) * (c1o1 + drho)-cu_sq); - (D.f[DIR_0M0])[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[d0M0])[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]; @@ -4715,13 +4715,13 @@ __global__ void QSlipNormDeviceComp27( VeloY = vx2 - (vx1 * nx_dirS[k] + vx2 * ny_dirS[k] + vx3 * nz_dirS[k]) * ny_dirS[k]; un = fabs(-(vx1 * nx_dirS[k] + vx2 * ny_dirS[k] + vx3 * nz_dirS[k]) * ny_dirS[k]); ut = fabs(-VeloY); - tangential = ut / (ut + un + smallSingle); + tangential = ut / (ut + un + cSmallSingle); qSlip = sliplength * fabs(-ny_dirS[k]); //sliplength * e_i * n_i //qSlip = (qSlip < zero) ? zero:qSlip; //tangential = (tangential > one) ? one:tangential; - q = (q + qSlip)/(c1o1 + qSlip * (c1o1 - tangential) / (smallSingle + q)); + q = (q + qSlip)/(c1o1 + qSlip * (c1o1 - tangential) / (cSmallSingle + q)); feq=c2o27* (drho/*+three*( -vx2 )*/+c9o2*( -vx2 )*( -vx2 ) * (c1o1 + drho)-cu_sq); - (D.f[DIR_0P0])[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[d0P0])[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]; @@ -4730,13 +4730,13 @@ __global__ void QSlipNormDeviceComp27( VeloZ = vx3 - (vx1 * nx_dirT[k] + vx2 * ny_dirT[k] + vx3 * nz_dirT[k]) * nz_dirT[k]; un = fabs( (vx1 * nx_dirT[k] + vx2 * ny_dirT[k] + vx3 * nz_dirT[k]) * nz_dirT[k]); ut = fabs( VeloZ); - tangential = ut / (ut + un + smallSingle); + tangential = ut / (ut + un + cSmallSingle); qSlip = sliplength * fabs( nz_dirT[k]); //sliplength * e_i * n_i //qSlip = (qSlip < zero) ? zero:qSlip; //tangential = (tangential > one) ? one:tangential; - q = (q + qSlip)/(c1o1 + qSlip * (c1o1 - tangential) / (smallSingle + q)); + q = (q + qSlip)/(c1o1 + qSlip * (c1o1 - tangential) / (cSmallSingle + q)); feq=c2o27* (drho/*+three*( vx3)*/+c9o2*( vx3)*( vx3) * (c1o1 + drho)-cu_sq); - (D.f[DIR_00M])[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[d00M])[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]; @@ -4745,13 +4745,13 @@ __global__ void QSlipNormDeviceComp27( VeloZ = vx3 - (vx1 * nx_dirB[k] + vx2 * ny_dirB[k] + vx3 * nz_dirB[k]) * nz_dirB[k]; un = fabs(-(vx1 * nx_dirB[k] + vx2 * ny_dirB[k] + vx3 * nz_dirB[k]) * nz_dirB[k]); ut = fabs(-VeloZ); - tangential = ut / (ut + un + smallSingle); + tangential = ut / (ut + un + cSmallSingle); qSlip = sliplength * fabs(-nz_dirB[k]); //sliplength * e_i * n_i //qSlip = (qSlip < zero) ? zero:qSlip; //tangential = (tangential > one) ? one:tangential; - q = (q + qSlip)/(c1o1 + qSlip * (c1o1 - tangential) / (smallSingle + q)); + q = (q + qSlip)/(c1o1 + qSlip * (c1o1 - tangential) / (cSmallSingle + q)); feq=c2o27* (drho/*+three*( -vx3)*/+c9o2*( -vx3)*( -vx3) * (c1o1 + drho)-cu_sq); - (D.f[DIR_00P])[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[d00P])[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]; @@ -4761,13 +4761,13 @@ __global__ void QSlipNormDeviceComp27( VeloY = vx2 - (vx1 * nx_dirNE[k] + vx2 * ny_dirNE[k] + vx3 * nz_dirNE[k]) * ny_dirNE[k]; un = fabs( (vx1 * nx_dirNE[k] + vx2 * ny_dirNE[k] + vx3 * nz_dirNE[k]) * nx_dirNE[k] + (vx1 * nx_dirNE[k] + vx2 * ny_dirNE[k] + vx3 * nz_dirNE[k]) * ny_dirNE[k]); ut = fabs( VeloX + VeloY); - tangential = ut / (ut + un + smallSingle); + tangential = ut / (ut + un + cSmallSingle); qSlip = sliplength * fabs( nx_dirNE[k]+ny_dirNE[k]); //sliplength * e_i * n_i //qSlip = (qSlip < zero) ? zero:qSlip; //tangential = (tangential > one) ? one:tangential; - q = (q + qSlip)/(c1o1 + qSlip * (c1o1 - tangential) / (smallSingle + q)); + q = (q + qSlip)/(c1o1 + qSlip * (c1o1 - tangential) / (cSmallSingle + q)); feq=c1o54* (drho/*+three*( vx1+vx2 )*/+c9o2*( vx1+vx2 )*( vx1+vx2 ) * (c1o1 + drho)-cu_sq); - (D.f[DIR_MM0])[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[dMM0])[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]; @@ -4777,13 +4777,13 @@ __global__ void QSlipNormDeviceComp27( VeloY = vx2 - (vx1 * nx_dirSW[k] + vx2 * ny_dirSW[k] + vx3 * nz_dirSW[k]) * ny_dirSW[k]; un = fabs(-(vx1 * nx_dirSW[k] + vx2 * ny_dirSW[k] + vx3 * nz_dirSW[k]) * nx_dirSW[k] - (vx1 * nx_dirSW[k] + vx2 * ny_dirSW[k] + vx3 * nz_dirSW[k]) * ny_dirSW[k]); ut = fabs(-VeloX - VeloY); - tangential = ut / (ut + un + smallSingle); + tangential = ut / (ut + un + cSmallSingle); qSlip = sliplength * fabs(-nx_dirSW[k]-ny_dirSW[k]); //sliplength * e_i * n_i //qSlip = (qSlip < zero) ? zero:qSlip; //tangential = (tangential > one) ? one:tangential; - q = (q + qSlip)/(c1o1 + qSlip * (c1o1 - tangential) / (smallSingle + q)); + q = (q + qSlip)/(c1o1 + qSlip * (c1o1 - tangential) / (cSmallSingle + q)); feq=c1o54* (drho/*+three*(-vx1-vx2 )*/+c9o2*(-vx1-vx2 )*(-vx1-vx2 ) * (c1o1 + drho)-cu_sq); - (D.f[DIR_PP0])[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[dPP0])[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]; @@ -4793,13 +4793,13 @@ __global__ void QSlipNormDeviceComp27( VeloY = vx2 - (vx1 * nx_dirSE[k] + vx2 * ny_dirSE[k] + vx3 * nz_dirSE[k]) * ny_dirSE[k]; un = fabs( (vx1 * nx_dirSE[k] + vx2 * ny_dirSE[k] + vx3 * nz_dirSE[k]) * nx_dirSE[k] - (vx1 * nx_dirSE[k] + vx2 * ny_dirSE[k] + vx3 * nz_dirSE[k]) * ny_dirSE[k]); ut = fabs( VeloX - VeloY); - tangential = ut / (ut + un + smallSingle); + tangential = ut / (ut + un + cSmallSingle); qSlip = sliplength * fabs( nx_dirSE[k]-ny_dirSE[k]); //sliplength * e_i * n_i //qSlip = (qSlip < zero) ? zero:qSlip; //tangential = (tangential > one) ? one:tangential; - q = (q + qSlip)/(c1o1 + qSlip * (c1o1 - tangential) / (smallSingle + q)); + q = (q + qSlip)/(c1o1 + qSlip * (c1o1 - tangential) / (cSmallSingle + q)); feq=c1o54* (drho/*+three*( vx1-vx2 )*/+c9o2*( vx1-vx2 )*( vx1-vx2 ) * (c1o1 + drho)-cu_sq); - (D.f[DIR_MP0])[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[dMP0])[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]; @@ -4809,13 +4809,13 @@ __global__ void QSlipNormDeviceComp27( VeloY = vx2 - (vx1 * nx_dirNW[k] + vx2 * ny_dirNW[k] + vx3 * nz_dirNW[k]) * ny_dirNW[k]; un = fabs(-(vx1 * nx_dirNW[k] + vx2 * ny_dirNW[k] + vx3 * nz_dirNW[k]) * nx_dirNW[k] + (vx1 * nx_dirNW[k] + vx2 * ny_dirNW[k] + vx3 * nz_dirNW[k]) * ny_dirNW[k]); ut = fabs(-VeloX + VeloY); - tangential = ut / (ut + un + smallSingle); + tangential = ut / (ut + un + cSmallSingle); qSlip = sliplength * fabs(-nx_dirNW[k]+ny_dirNW[k]); //sliplength * e_i * n_i //qSlip = (qSlip < zero) ? zero:qSlip; //tangential = (tangential > one) ? one:tangential; - q = (q + qSlip)/(c1o1 + qSlip * (c1o1 - tangential) / (smallSingle + q)); + q = (q + qSlip)/(c1o1 + qSlip * (c1o1 - tangential) / (cSmallSingle + q)); feq=c1o54* (drho/*+three*(-vx1+vx2 )*/+c9o2*(-vx1+vx2 )*(-vx1+vx2 ) * (c1o1 + drho)-cu_sq); - (D.f[DIR_PM0])[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[dPM0])[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]; @@ -4825,13 +4825,13 @@ __global__ void QSlipNormDeviceComp27( VeloZ = vx3 - (vx1 * nx_dirTE[k] + vx2 * ny_dirTE[k] + vx3 * nz_dirTE[k]) * nz_dirTE[k]; un = fabs( (vx1 * nx_dirTE[k] + vx2 * ny_dirTE[k] + vx3 * nz_dirTE[k]) * nx_dirTE[k] + (vx1 * nx_dirTE[k] + vx2 * ny_dirTE[k] + vx3 * nz_dirTE[k]) * nz_dirTE[k]); ut = fabs( VeloX + VeloZ); - tangential = ut / (ut + un + smallSingle); + tangential = ut / (ut + un + cSmallSingle); qSlip = sliplength * fabs( nx_dirTE[k]+nz_dirTE[k]); //sliplength * e_i * n_i //qSlip = (qSlip < zero) ? zero:qSlip; //tangential = (tangential > one) ? one:tangential; - q = (q + qSlip)/(c1o1 + qSlip * (c1o1 - tangential) / (smallSingle + q)); + q = (q + qSlip)/(c1o1 + qSlip * (c1o1 - tangential) / (cSmallSingle + q)); feq=c1o54* (drho/*+three*( vx1 +vx3)*/+c9o2*( vx1 +vx3)*( vx1 +vx3) * (c1o1 + drho)-cu_sq); - (D.f[DIR_M0M])[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[dM0M])[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]; @@ -4841,13 +4841,13 @@ __global__ void QSlipNormDeviceComp27( VeloZ = vx3 - (vx1 * nx_dirBW[k] + vx2 * ny_dirBW[k] + vx3 * nz_dirBW[k]) * nz_dirBW[k]; un = fabs(-(vx1 * nx_dirBW[k] + vx2 * ny_dirBW[k] + vx3 * nz_dirBW[k]) * nx_dirBW[k] - (vx1 * nx_dirBW[k] + vx2 * ny_dirBW[k] + vx3 * nz_dirBW[k]) * nz_dirBW[k]); ut = fabs(-VeloX - VeloZ); - tangential = ut / (ut + un + smallSingle); + tangential = ut / (ut + un + cSmallSingle); qSlip = sliplength * fabs(-nx_dirBW[k]-nz_dirBW[k]); //sliplength * e_i * n_i //qSlip = (qSlip < zero) ? zero:qSlip; //tangential = (tangential > one) ? one:tangential; - q = (q + qSlip)/(c1o1 + qSlip * (c1o1 - tangential) / (smallSingle + q)); + q = (q + qSlip)/(c1o1 + qSlip * (c1o1 - tangential) / (cSmallSingle + q)); feq=c1o54* (drho/*+three*(-vx1 -vx3)*/+c9o2*(-vx1 -vx3)*(-vx1 -vx3) * (c1o1 + drho)-cu_sq); - (D.f[DIR_P0P])[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[dP0P])[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]; @@ -4857,13 +4857,13 @@ __global__ void QSlipNormDeviceComp27( VeloZ = vx3 - (vx1 * nx_dirBE[k] + vx2 * ny_dirBE[k] + vx3 * nz_dirBE[k]) * nz_dirBE[k]; un = fabs( (vx1 * nx_dirBE[k] + vx2 * ny_dirBE[k] + vx3 * nz_dirBE[k]) * nx_dirBE[k] - (vx1 * nx_dirBE[k] + vx2 * ny_dirBE[k] + vx3 * nz_dirBE[k]) * nz_dirBE[k]); ut = fabs( VeloX - VeloZ); - tangential = ut / (ut + un + smallSingle); + tangential = ut / (ut + un + cSmallSingle); qSlip = sliplength * fabs( nx_dirBE[k]-nz_dirBE[k]); //sliplength * e_i * n_i //qSlip = (qSlip < zero) ? zero:qSlip; //tangential = (tangential > one) ? one:tangential; - q = (q + qSlip)/(c1o1 + qSlip * (c1o1 - tangential) / (smallSingle + q)); + q = (q + qSlip)/(c1o1 + qSlip * (c1o1 - tangential) / (cSmallSingle + q)); feq=c1o54* (drho/*+three*( vx1 -vx3)*/+c9o2*( vx1 -vx3)*( vx1 -vx3) * (c1o1 + drho)-cu_sq); - (D.f[DIR_M0P])[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[dM0P])[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]; @@ -4873,13 +4873,13 @@ __global__ void QSlipNormDeviceComp27( VeloZ = vx3 - (vx1 * nx_dirTW[k] + vx2 * ny_dirTW[k] + vx3 * nz_dirTW[k]) * nz_dirTW[k]; un = fabs(-(vx1 * nx_dirTW[k] + vx2 * ny_dirTW[k] + vx3 * nz_dirTW[k]) * nx_dirTW[k] + (vx1 * nx_dirTW[k] + vx2 * ny_dirTW[k] + vx3 * nz_dirTW[k]) * nz_dirTW[k]); ut = fabs(-VeloX + VeloZ); - tangential = ut / (ut + un + smallSingle); + tangential = ut / (ut + un + cSmallSingle); qSlip = sliplength * fabs(-nx_dirTW[k]+nz_dirTW[k]); //sliplength * e_i * n_i //qSlip = (qSlip < zero) ? zero:qSlip; //tangential = (tangential > one) ? one:tangential; - q = (q + qSlip)/(c1o1 + qSlip * (c1o1 - tangential) / (smallSingle + q)); + q = (q + qSlip)/(c1o1 + qSlip * (c1o1 - tangential) / (cSmallSingle + q)); feq=c1o54* (drho/*+three*(-vx1 +vx3)*/+c9o2*(-vx1 +vx3)*(-vx1 +vx3) * (c1o1 + drho)-cu_sq); - (D.f[DIR_P0M])[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[dP0M])[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]; @@ -4889,13 +4889,13 @@ __global__ void QSlipNormDeviceComp27( VeloZ = vx3 - (vx1 * nx_dirTN[k] + vx2 * ny_dirTN[k] + vx3 * nz_dirTN[k]) * nz_dirTN[k]; un = fabs( (vx1 * nx_dirTN[k] + vx2 * ny_dirTN[k] + vx3 * nz_dirTN[k]) * ny_dirTN[k] + (vx1 * nx_dirTN[k] + vx2 * ny_dirTN[k] + vx3 * nz_dirTN[k]) * nz_dirTN[k]); ut = fabs( VeloY + VeloZ); - tangential = ut / (ut + un + smallSingle); + tangential = ut / (ut + un + cSmallSingle); qSlip = sliplength * fabs( ny_dirTN[k]+nz_dirTN[k]); //sliplength * e_i * n_i //qSlip = (qSlip < zero) ? zero:qSlip; //tangential = (tangential > one) ? one:tangential; - q = (q + qSlip)/(c1o1 + qSlip * (c1o1 - tangential) / (smallSingle + q)); + q = (q + qSlip)/(c1o1 + qSlip * (c1o1 - tangential) / (cSmallSingle + q)); feq=c1o54* (drho/*+three*( vx2+vx3)*/+c9o2*( vx2+vx3)*( vx2+vx3) * (c1o1 + drho)-cu_sq); - (D.f[DIR_0MM])[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[d0MM])[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]; @@ -4905,13 +4905,13 @@ __global__ void QSlipNormDeviceComp27( VeloZ = vx3 - (vx1 * nx_dirBS[k] + vx2 * ny_dirBS[k] + vx3 * nz_dirBS[k]) * nz_dirBS[k]; un = fabs(-(vx1 * nx_dirBS[k] + vx2 * ny_dirBS[k] + vx3 * nz_dirBS[k]) * ny_dirBS[k] - (vx1 * nx_dirBS[k] + vx2 * ny_dirBS[k] + vx3 * nz_dirBS[k]) * nz_dirBS[k]); ut = fabs(-VeloY - VeloZ); - tangential = ut / (ut + un + smallSingle); + tangential = ut / (ut + un + cSmallSingle); qSlip = sliplength * fabs(-ny_dirBS[k]-nz_dirBS[k]); //sliplength * e_i * n_i //qSlip = (qSlip < zero) ? zero:qSlip; //tangential = (tangential > one) ? one:tangential; - q = (q + qSlip)/(c1o1 + qSlip * (c1o1 - tangential) / (smallSingle + q)); + q = (q + qSlip)/(c1o1 + qSlip * (c1o1 - tangential) / (cSmallSingle + q)); feq=c1o54* (drho/*+three*( -vx2-vx3)*/+c9o2*( -vx2-vx3)*( -vx2-vx3) * (c1o1 + drho)-cu_sq); - (D.f[DIR_0PP])[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[d0PP])[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]; @@ -4921,13 +4921,13 @@ __global__ void QSlipNormDeviceComp27( VeloZ = vx3 - (vx1 * nx_dirBN[k] + vx2 * ny_dirBN[k] + vx3 * nz_dirBN[k]) * nz_dirBN[k]; un = fabs( (vx1 * nx_dirBN[k] + vx2 * ny_dirBN[k] + vx3 * nz_dirBN[k]) * ny_dirBN[k] - (vx1 * nx_dirBN[k] + vx2 * ny_dirBN[k] + vx3 * nz_dirBN[k]) * nz_dirBN[k]); ut = fabs( VeloY - VeloZ); - tangential = ut / (ut + un + smallSingle); + tangential = ut / (ut + un + cSmallSingle); qSlip = sliplength * fabs( ny_dirBN[k]-nz_dirBN[k]); //sliplength * e_i * n_i //qSlip = (qSlip < zero) ? zero:qSlip; //tangential = (tangential > one) ? one:tangential; - q = (q + qSlip)/(c1o1 + qSlip * (c1o1 - tangential) / (smallSingle + q)); + q = (q + qSlip)/(c1o1 + qSlip * (c1o1 - tangential) / (cSmallSingle + q)); feq=c1o54* (drho/*+three*( vx2-vx3)*/+c9o2*( vx2-vx3)*( vx2-vx3) * (c1o1 + drho)-cu_sq); - (D.f[DIR_0MP])[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[d0MP])[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]; @@ -4937,13 +4937,13 @@ __global__ void QSlipNormDeviceComp27( VeloZ = vx3 - (vx1 * nx_dirTS[k] + vx2 * ny_dirTS[k] + vx3 * nz_dirTS[k]) * nz_dirTS[k]; un = fabs(-(vx1 * nx_dirTS[k] + vx2 * ny_dirTS[k] + vx3 * nz_dirTS[k]) * ny_dirTS[k] + (vx1 * nx_dirTS[k] + vx2 * ny_dirTS[k] + vx3 * nz_dirTS[k]) * nz_dirTS[k]); ut = fabs(-VeloY + VeloZ); - tangential = ut / (ut + un + smallSingle); + tangential = ut / (ut + un + cSmallSingle); qSlip = sliplength * fabs(-ny_dirTS[k]+nz_dirTS[k]); //sliplength * e_i * n_i //qSlip = (qSlip < zero) ? zero:qSlip; //tangential = (tangential > one) ? one:tangential; - q = (q + qSlip)/(c1o1 + qSlip * (c1o1 - tangential) / (smallSingle + q)); + q = (q + qSlip)/(c1o1 + qSlip * (c1o1 - tangential) / (cSmallSingle + q)); feq=c1o54* (drho/*+three*( -vx2+vx3)*/+c9o2*( -vx2+vx3)*( -vx2+vx3) * (c1o1 + drho)-cu_sq); - (D.f[DIR_0PM])[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[d0PM])[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]; @@ -4956,13 +4956,13 @@ __global__ void QSlipNormDeviceComp27( +(vx1 * nx_dirTNE[k] + vx2 * ny_dirTNE[k] + vx3 * nz_dirTNE[k]) * ny_dirTNE[k] +(vx1 * nx_dirTNE[k] + vx2 * ny_dirTNE[k] + vx3 * nz_dirTNE[k]) * nz_dirTNE[k]); ut = fabs( VeloX + VeloY + VeloZ); - tangential = ut / (ut + un + smallSingle); + tangential = ut / (ut + un + cSmallSingle); qSlip = sliplength * fabs( nx_dirTNE[k] + ny_dirTNE[k] + nz_dirTNE[k]); //sliplength * e_i * n_i //qSlip = (qSlip < zero) ? zero:qSlip; //tangential = (tangential > one) ? one:tangential; - q = (q + qSlip)/(c1o1 + qSlip * (c1o1 - tangential) / (smallSingle + q)); + q = (q + qSlip)/(c1o1 + qSlip * (c1o1 - tangential) / (cSmallSingle + q)); feq=c1o216*(drho/*+three*( vx1+vx2+vx3)*/+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3) * (c1o1 + drho)-cu_sq); - (D.f[DIR_MMM])[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[dMMM])[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]; @@ -4975,13 +4975,13 @@ __global__ void QSlipNormDeviceComp27( -(vx1 * nx_dirBSW[k] + vx2 * ny_dirBSW[k] + vx3 * nz_dirBSW[k]) * ny_dirBSW[k] -(vx1 * nx_dirBSW[k] + vx2 * ny_dirBSW[k] + vx3 * nz_dirBSW[k]) * nz_dirBSW[k]); ut = fabs(-VeloX - VeloY - VeloZ); - tangential = ut / (ut + un + smallSingle); + tangential = ut / (ut + un + cSmallSingle); qSlip = sliplength * fabs(-nx_dirBSW[k] - ny_dirBSW[k] - nz_dirBSW[k]); //sliplength * e_i * n_i //qSlip = (qSlip < zero) ? zero:qSlip; //tangential = (tangential > one) ? one:tangential; - q = (q + qSlip)/(c1o1 + qSlip * (c1o1 - tangential) / (smallSingle + q)); + q = (q + qSlip)/(c1o1 + qSlip * (c1o1 - tangential) / (cSmallSingle + q)); feq=c1o216*(drho/*+three*(-vx1-vx2-vx3)*/+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3) * (c1o1 + drho)-cu_sq); - (D.f[DIR_PPP])[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[dPPP])[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]; @@ -4994,13 +4994,13 @@ __global__ void QSlipNormDeviceComp27( +(vx1 * nx_dirBNE[k] + vx2 * ny_dirBNE[k] + vx3 * nz_dirBNE[k]) * ny_dirBNE[k] -(vx1 * nx_dirBNE[k] + vx2 * ny_dirBNE[k] + vx3 * nz_dirBNE[k]) * nz_dirBNE[k]); ut = fabs( VeloX + VeloY - VeloZ); - tangential = ut / (ut + un + smallSingle); + tangential = ut / (ut + un + cSmallSingle); qSlip = sliplength * fabs( nx_dirBNE[k] + ny_dirBNE[k] - nz_dirBNE[k]); //sliplength * e_i * n_i //qSlip = (qSlip < zero) ? zero:qSlip; //tangential = (tangential > one) ? one:tangential; - q = (q + qSlip)/(c1o1 + qSlip * (c1o1 - tangential) / (smallSingle + q)); + q = (q + qSlip)/(c1o1 + qSlip * (c1o1 - tangential) / (cSmallSingle + q)); feq=c1o216*(drho/*+three*( vx1+vx2-vx3)*/+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3) * (c1o1 + drho)-cu_sq); - (D.f[DIR_MMP])[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[dMMP])[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]; @@ -5013,13 +5013,13 @@ __global__ void QSlipNormDeviceComp27( -(vx1 * nx_dirTSW[k] + vx2 * ny_dirTSW[k] + vx3 * nz_dirTSW[k]) * ny_dirTSW[k] +(vx1 * nx_dirTSW[k] + vx2 * ny_dirTSW[k] + vx3 * nz_dirTSW[k]) * nz_dirTSW[k]); ut = fabs(-VeloX - VeloY + VeloZ); - tangential = ut / (ut + un + smallSingle); + tangential = ut / (ut + un + cSmallSingle); qSlip = sliplength * fabs(-nx_dirTSW[k] - ny_dirTSW[k] + nz_dirTSW[k]); //sliplength * e_i * n_i //qSlip = (qSlip < zero) ? zero:qSlip; //tangential = (tangential > one) ? one:tangential; - q = (q + qSlip)/(c1o1 + qSlip * (c1o1 - tangential) / (smallSingle + q)); + q = (q + qSlip)/(c1o1 + qSlip * (c1o1 - tangential) / (cSmallSingle + q)); feq=c1o216*(drho/*+three*(-vx1-vx2+vx3)*/+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3) * (c1o1 + drho)-cu_sq); - (D.f[DIR_PPM])[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[dPPM])[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]; @@ -5032,13 +5032,13 @@ __global__ void QSlipNormDeviceComp27( -(vx1 * nx_dirTSE[k] + vx2 * ny_dirTSE[k] + vx3 * nz_dirTSE[k]) * ny_dirTSE[k] +(vx1 * nx_dirTSE[k] + vx2 * ny_dirTSE[k] + vx3 * nz_dirTSE[k]) * nz_dirTSE[k]); ut = fabs(+VeloX - VeloY + VeloZ); - tangential = ut / (ut + un + smallSingle); + tangential = ut / (ut + un + cSmallSingle); qSlip = sliplength * fabs( nx_dirTSE[k] - ny_dirTSE[k] + nz_dirTSE[k]); //sliplength * e_i * n_i //qSlip = (qSlip < zero) ? zero:qSlip; //tangential = (tangential > one) ? one:tangential; - q = (q + qSlip)/(c1o1 + qSlip * (c1o1 - tangential) / (smallSingle + q)); + q = (q + qSlip)/(c1o1 + qSlip * (c1o1 - tangential) / (cSmallSingle + q)); feq=c1o216*(drho/*+three*( vx1-vx2+vx3)*/+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3) * (c1o1 + drho)-cu_sq); - (D.f[DIR_MPM])[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[dMPM])[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]; @@ -5051,13 +5051,13 @@ __global__ void QSlipNormDeviceComp27( +(vx1 * nx_dirBNW[k] + vx2 * ny_dirBNW[k] + vx3 * nz_dirBNW[k]) * ny_dirBNW[k] -(vx1 * nx_dirBNW[k] + vx2 * ny_dirBNW[k] + vx3 * nz_dirBNW[k]) * nz_dirBNW[k]); ut = fabs(-VeloX + VeloY - VeloZ); - tangential = ut / (ut + un + smallSingle); + tangential = ut / (ut + un + cSmallSingle); qSlip = sliplength * fabs(-nx_dirBNW[k] + ny_dirBNW[k] - nz_dirBNW[k]); //sliplength * e_i * n_i //qSlip = (qSlip < zero) ? zero:qSlip; //tangential = (tangential > one) ? one:tangential; - q = (q + qSlip)/(c1o1 + qSlip * (c1o1 - tangential) / (smallSingle + q)); + q = (q + qSlip)/(c1o1 + qSlip * (c1o1 - tangential) / (cSmallSingle + q)); feq=c1o216*(drho/*+three*(-vx1+vx2-vx3)*/+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3) * (c1o1 + drho)-cu_sq); - (D.f[DIR_PMP])[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[dPMP])[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]; @@ -5070,13 +5070,13 @@ __global__ void QSlipNormDeviceComp27( -(vx1 * nx_dirBSE[k] + vx2 * ny_dirBSE[k] + vx3 * nz_dirBSE[k]) * ny_dirBSE[k] -(vx1 * nx_dirBSE[k] + vx2 * ny_dirBSE[k] + vx3 * nz_dirBSE[k]) * nz_dirBSE[k]); ut = fabs( VeloX - VeloY - VeloZ); - tangential = ut / (ut + un + smallSingle); + tangential = ut / (ut + un + cSmallSingle); qSlip = sliplength * fabs( nx_dirBSE[k] - ny_dirBSE[k] - nz_dirBSE[k]); //sliplength * e_i * n_i //qSlip = (qSlip < zero) ? zero:qSlip; //tangential = (tangential > one) ? one:tangential; - q = (q + qSlip)/(c1o1 + qSlip * (c1o1 - tangential) / (smallSingle + q)); + q = (q + qSlip)/(c1o1 + qSlip * (c1o1 - tangential) / (cSmallSingle + q)); feq=c1o216*(drho/*+three*( vx1-vx2-vx3)*/+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3) * (c1o1 + drho)-cu_sq); - (D.f[DIR_MPP])[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[dMPP])[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]; @@ -5089,13 +5089,13 @@ __global__ void QSlipNormDeviceComp27( +(vx1 * nx_dirTNW[k] + vx2 * ny_dirTNW[k] + vx3 * nz_dirTNW[k]) * ny_dirTNW[k] +(vx1 * nx_dirTNW[k] + vx2 * ny_dirTNW[k] + vx3 * nz_dirTNW[k]) * nz_dirTNW[k]); ut = fabs(-VeloX + VeloY + VeloZ); - tangential = ut / (ut + un + smallSingle); + tangential = ut / (ut + un + cSmallSingle); qSlip = sliplength * fabs(-nx_dirTNW[k] + ny_dirTNW[k] + nz_dirTNW[k]); //sliplength * e_i * n_i //qSlip = (qSlip < zero) ? zero:qSlip; //tangential = (tangential > one) ? one:tangential; - q = (q + qSlip)/(c1o1 + qSlip * (c1o1 - tangential) / (smallSingle + q)); + q = (q + qSlip)/(c1o1 + qSlip * (c1o1 - tangential) / (cSmallSingle + q)); feq=c1o216*(drho/*+three*(-vx1+vx2+vx3)*/+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3) * (c1o1 + drho)-cu_sq); - (D.f[DIR_PMM])[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[dPMM])[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/core/GPU/StressBCs27.cu similarity index 84% rename from src/gpu/VirtualFluids_GPU/GPU/StressBCs27.cu rename to src/gpu/core/GPU/StressBCs27.cu index 4b9db6d8b05a0ed958b7416ae8f3d07d761fb71c..b9b538dbc643fee107780f5d34d3f3e91b762ef1 100644 --- a/src/gpu/VirtualFluids_GPU/GPU/StressBCs27.cu +++ b/src/gpu/core/GPU/StressBCs27.cu @@ -194,32 +194,32 @@ __global__ void QStressDeviceComp27( *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[DIR_P00 * numberOfBCnodes]; - q_dirW = &QQ[DIR_M00 * numberOfBCnodes]; - q_dirN = &QQ[DIR_0P0 * numberOfBCnodes]; - q_dirS = &QQ[DIR_0M0 * numberOfBCnodes]; - q_dirT = &QQ[DIR_00P * numberOfBCnodes]; - q_dirB = &QQ[DIR_00M * numberOfBCnodes]; - q_dirNE = &QQ[DIR_PP0 * numberOfBCnodes]; - q_dirSW = &QQ[DIR_MM0 * numberOfBCnodes]; - q_dirSE = &QQ[DIR_PM0 * numberOfBCnodes]; - q_dirNW = &QQ[DIR_MP0 * numberOfBCnodes]; - q_dirTE = &QQ[DIR_P0P * numberOfBCnodes]; - q_dirBW = &QQ[DIR_M0M * numberOfBCnodes]; - q_dirBE = &QQ[DIR_P0M * numberOfBCnodes]; - q_dirTW = &QQ[DIR_M0P * numberOfBCnodes]; - q_dirTN = &QQ[DIR_0PP * numberOfBCnodes]; - q_dirBS = &QQ[DIR_0MM * numberOfBCnodes]; - q_dirBN = &QQ[DIR_0PM * numberOfBCnodes]; - q_dirTS = &QQ[DIR_0MP * numberOfBCnodes]; - q_dirTNE = &QQ[DIR_PPP * numberOfBCnodes]; - q_dirTSW = &QQ[DIR_MMP * numberOfBCnodes]; - q_dirTSE = &QQ[DIR_PMP * numberOfBCnodes]; - q_dirTNW = &QQ[DIR_MPP * numberOfBCnodes]; - q_dirBNE = &QQ[DIR_PPM * numberOfBCnodes]; - q_dirBSW = &QQ[DIR_MMM * numberOfBCnodes]; - q_dirBSE = &QQ[DIR_PMM * numberOfBCnodes]; - q_dirBNW = &QQ[DIR_MPM * numberOfBCnodes]; + q_dirE = &QQ[dP00 * numberOfBCnodes]; + q_dirW = &QQ[dM00 * numberOfBCnodes]; + q_dirN = &QQ[d0P0 * numberOfBCnodes]; + q_dirS = &QQ[d0M0 * numberOfBCnodes]; + q_dirT = &QQ[d00P * numberOfBCnodes]; + q_dirB = &QQ[d00M * numberOfBCnodes]; + q_dirNE = &QQ[dPP0 * numberOfBCnodes]; + q_dirSW = &QQ[dMM0 * numberOfBCnodes]; + q_dirSE = &QQ[dPM0 * numberOfBCnodes]; + q_dirNW = &QQ[dMP0 * numberOfBCnodes]; + q_dirTE = &QQ[dP0P * numberOfBCnodes]; + q_dirBW = &QQ[dM0M * numberOfBCnodes]; + q_dirBE = &QQ[dP0M * numberOfBCnodes]; + q_dirTW = &QQ[dM0P * numberOfBCnodes]; + q_dirTN = &QQ[d0PP * numberOfBCnodes]; + q_dirBS = &QQ[d0MM * numberOfBCnodes]; + q_dirBN = &QQ[d0PM * numberOfBCnodes]; + q_dirTS = &QQ[d0MP * numberOfBCnodes]; + q_dirTNE = &QQ[dPPP * numberOfBCnodes]; + q_dirTSW = &QQ[dMMP * numberOfBCnodes]; + q_dirTSE = &QQ[dPMP * numberOfBCnodes]; + q_dirTNW = &QQ[dMPP * numberOfBCnodes]; + q_dirBNE = &QQ[dPPM * numberOfBCnodes]; + q_dirBSW = &QQ[dMMM * numberOfBCnodes]; + q_dirBSE = &QQ[dPMM * numberOfBCnodes]; + q_dirBNW = &QQ[dMPM * numberOfBCnodes]; //////////////////////////////////////////////////////////////////////////////// //index unsigned int KQK = k_Q[k]; @@ -254,38 +254,38 @@ __global__ void QStressDeviceComp27( 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[DIR_P00])[ke ]; //post-coll f's - f_E = (D.f[DIR_M00])[kw ]; - f_S = (D.f[DIR_0P0])[kn ]; - f_N = (D.f[DIR_0M0])[ks ]; - f_B = (D.f[DIR_00P])[kt ]; - f_T = (D.f[DIR_00M])[kb ]; - f_SW = (D.f[DIR_PP0])[kne ]; - f_NE = (D.f[DIR_MM0])[ksw ]; - f_NW = (D.f[DIR_PM0])[kse ]; - f_SE = (D.f[DIR_MP0])[knw ]; - f_BW = (D.f[DIR_P0P])[kte ]; - f_TE = (D.f[DIR_M0M])[kbw ]; - f_TW = (D.f[DIR_P0M])[kbe ]; - f_BE = (D.f[DIR_M0P])[ktw ]; - f_BS = (D.f[DIR_0PP])[ktn ]; - f_TN = (D.f[DIR_0MM])[kbs ]; - f_TS = (D.f[DIR_0PM])[kbn ]; - f_BN = (D.f[DIR_0MP])[kts ]; - f_BSW = (D.f[DIR_PPP])[ktne ]; - f_BNE = (D.f[DIR_MMP])[ktsw ]; - f_BNW = (D.f[DIR_PMP])[ktse ]; - f_BSE = (D.f[DIR_MPP])[ktnw ]; - f_TSW = (D.f[DIR_PPM])[kbne ]; - f_TNE = (D.f[DIR_MMM])[kbsw ]; - f_TNW = (D.f[DIR_PMM])[kbse ]; - f_TSE = (D.f[DIR_MPM])[kbnw ]; + f_W = (D.f[dP00])[ke ]; //post-coll f's + f_E = (D.f[dM00])[kw ]; + f_S = (D.f[d0P0])[kn ]; + f_N = (D.f[d0M0])[ks ]; + f_B = (D.f[d00P])[kt ]; + f_T = (D.f[d00M])[kb ]; + f_SW = (D.f[dPP0])[kne ]; + f_NE = (D.f[dMM0])[ksw ]; + f_NW = (D.f[dPM0])[kse ]; + f_SE = (D.f[dMP0])[knw ]; + f_BW = (D.f[dP0P])[kte ]; + f_TE = (D.f[dM0M])[kbw ]; + f_TW = (D.f[dP0M])[kbe ]; + f_BE = (D.f[dM0P])[ktw ]; + f_BS = (D.f[d0PP])[ktn ]; + f_TN = (D.f[d0MM])[kbs ]; + f_TS = (D.f[d0PM])[kbn ]; + f_BN = (D.f[d0MP])[kts ]; + f_BSW = (D.f[dPPP])[ktne ]; + f_BNE = (D.f[dMMP])[ktsw ]; + f_BNW = (D.f[dPMP])[ktse ]; + f_BSE = (D.f[dMPP])[ktnw ]; + f_TSW = (D.f[dPPM])[kbne ]; + f_TNE = (D.f[dMMM])[kbsw ]; + f_TNW = (D.f[dPMM])[kbse ]; + f_TSE = (D.f[dMPM])[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[DIR_000])[kzero]); + f_T + f_B + f_N + f_S + f_E + f_W + ((D.f[d000])[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)) + @@ -636,49 +636,49 @@ __global__ void QStressDeviceComp27( q = q_dirE[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[DIR_M00])[kw] = f_W_in - (c6o1*c2o27*( VeloX ))/(c1o1+q); + (D.f[dM00])[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[DIR_P00])[ke] = f_E_in - (c6o1*c2o27*(-VeloX ))/(c1o1+q); + (D.f[dP00])[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[DIR_0M0])[ks] = f_S_in - (c6o1*c2o27*( VeloY ))/(c1o1+q); + (D.f[d0M0])[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[DIR_0P0])[kn] = f_N_in - (c6o1*c2o27*(-VeloY ))/(c1o1+q); + (D.f[d0P0])[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[DIR_00M])[kb] = f_B_in - (c6o1*c2o27*( VeloZ ))/(c1o1+q); + (D.f[d00M])[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[DIR_00P])[kt] = f_T_in - (c6o1*c2o27*(-VeloZ ))/(c1o1+q); + (D.f[d00P])[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[DIR_MM0])[ksw] = f_SW_in - (c6o1*c1o54*(VeloX+VeloY))/(c1o1+q); + (D.f[dMM0])[ksw] = f_SW_in - (c6o1*c1o54*(VeloX+VeloY))/(c1o1+q); wallMomentumX += -(c6o1*c1o54*(VeloX+VeloY))/(c1o1+q); wallMomentumY += -(c6o1*c1o54*(VeloX+VeloY))/(c1o1+q); } @@ -686,7 +686,7 @@ __global__ void QStressDeviceComp27( q = q_dirSW[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[DIR_PP0])[kne] = f_NE_in - (c6o1*c1o54*(-VeloX-VeloY))/(c1o1+q); + (D.f[dPP0])[kne] = f_NE_in - (c6o1*c1o54*(-VeloX-VeloY))/(c1o1+q); wallMomentumX -= - (c6o1*c1o54*(-VeloX-VeloY))/(c1o1+q); wallMomentumY -= - (c6o1*c1o54*(-VeloX-VeloY))/(c1o1+q); } @@ -694,7 +694,7 @@ __global__ void QStressDeviceComp27( q = q_dirSE[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[DIR_MP0])[knw] = f_NW_in - (c6o1*c1o54*( VeloX-VeloY))/(c1o1+q); + (D.f[dMP0])[knw] = f_NW_in - (c6o1*c1o54*( VeloX-VeloY))/(c1o1+q); wallMomentumX += -(c6o1*c1o54*( VeloX-VeloY))/(c1o1+q); wallMomentumY -= -(c6o1*c1o54*( VeloX-VeloY))/(c1o1+q); } @@ -702,7 +702,7 @@ __global__ void QStressDeviceComp27( q = q_dirNW[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[DIR_PM0])[kse] = f_SE_in - (c6o1*c1o54*(-VeloX+VeloY))/(c1o1+q); + (D.f[dPM0])[kse] = f_SE_in - (c6o1*c1o54*(-VeloX+VeloY))/(c1o1+q); wallMomentumX -= - (c6o1*c1o54*(-VeloX+VeloY))/(c1o1+q); wallMomentumY += - (c6o1*c1o54*(-VeloX+VeloY))/(c1o1+q); } @@ -710,7 +710,7 @@ __global__ void QStressDeviceComp27( q = q_dirTE[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[DIR_M0M])[kbw] = f_BW_in - (c6o1*c1o54*( VeloX+VeloZ))/(c1o1+q); + (D.f[dM0M])[kbw] = f_BW_in - (c6o1*c1o54*( VeloX+VeloZ))/(c1o1+q); wallMomentumX += - (c6o1*c1o54*( VeloX+VeloZ))/(c1o1+q); wallMomentumZ += - (c6o1*c1o54*( VeloX+VeloZ))/(c1o1+q); } @@ -718,7 +718,7 @@ __global__ void QStressDeviceComp27( q = q_dirBW[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[DIR_P0P])[kte] = f_TE_in - (c6o1*c1o54*(-VeloX-VeloZ))/(c1o1+q); + (D.f[dP0P])[kte] = f_TE_in - (c6o1*c1o54*(-VeloX-VeloZ))/(c1o1+q); wallMomentumX -= - (c6o1*c1o54*(-VeloX-VeloZ))/(c1o1+q); wallMomentumZ -= - (c6o1*c1o54*(-VeloX-VeloZ))/(c1o1+q); } @@ -726,7 +726,7 @@ __global__ void QStressDeviceComp27( q = q_dirBE[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[DIR_M0P])[ktw] = f_TW_in - (c6o1*c1o54*( VeloX-VeloZ))/(c1o1+q); + (D.f[dM0P])[ktw] = f_TW_in - (c6o1*c1o54*( VeloX-VeloZ))/(c1o1+q); wallMomentumX += - (c6o1*c1o54*( VeloX-VeloZ))/(c1o1+q); wallMomentumZ -= - (c6o1*c1o54*( VeloX-VeloZ))/(c1o1+q); } @@ -734,7 +734,7 @@ __global__ void QStressDeviceComp27( q = q_dirTW[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[DIR_P0M])[kbe] = f_BE_in - (c6o1*c1o54*(-VeloX+VeloZ))/(c1o1+q); + (D.f[dP0M])[kbe] = f_BE_in - (c6o1*c1o54*(-VeloX+VeloZ))/(c1o1+q); wallMomentumX -= - (c6o1*c1o54*(-VeloX+VeloZ))/(c1o1+q); wallMomentumZ += - (c6o1*c1o54*(-VeloX+VeloZ))/(c1o1+q); } @@ -742,7 +742,7 @@ __global__ void QStressDeviceComp27( q = q_dirTN[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[DIR_0MM])[kbs] = f_BS_in - (c6o1*c1o54*( VeloY+VeloZ))/(c1o1+q); + (D.f[d0MM])[kbs] = f_BS_in - (c6o1*c1o54*( VeloY+VeloZ))/(c1o1+q); wallMomentumY += - (c6o1*c1o54*( VeloY+VeloZ))/(c1o1+q); wallMomentumZ += - (c6o1*c1o54*( VeloY+VeloZ))/(c1o1+q); } @@ -750,7 +750,7 @@ __global__ void QStressDeviceComp27( q = q_dirBS[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[DIR_0PP])[ktn] = f_TN_in - (c6o1*c1o54*( -VeloY-VeloZ))/(c1o1+q); + (D.f[d0PP])[ktn] = f_TN_in - (c6o1*c1o54*( -VeloY-VeloZ))/(c1o1+q); wallMomentumY -= - (c6o1*c1o54*( -VeloY-VeloZ))/(c1o1+q); wallMomentumZ -= - (c6o1*c1o54*( -VeloY-VeloZ))/(c1o1+q); } @@ -758,7 +758,7 @@ __global__ void QStressDeviceComp27( q = q_dirBN[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[DIR_0MP])[kts] = f_TS_in - (c6o1*c1o54*( VeloY-VeloZ))/(c1o1+q); + (D.f[d0MP])[kts] = f_TS_in - (c6o1*c1o54*( VeloY-VeloZ))/(c1o1+q); wallMomentumY += - (c6o1*c1o54*( VeloY-VeloZ))/(c1o1+q); wallMomentumZ -= - (c6o1*c1o54*( VeloY-VeloZ))/(c1o1+q); } @@ -766,7 +766,7 @@ __global__ void QStressDeviceComp27( q = q_dirTS[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[DIR_0PM])[kbn] = f_BN_in - (c6o1*c1o54*( -VeloY+VeloZ))/(c1o1+q); + (D.f[d0PM])[kbn] = f_BN_in - (c6o1*c1o54*( -VeloY+VeloZ))/(c1o1+q); wallMomentumY -= - (c6o1*c1o54*( -VeloY+VeloZ))/(c1o1+q); wallMomentumZ += - (c6o1*c1o54*( -VeloY+VeloZ))/(c1o1+q); } @@ -774,7 +774,7 @@ __global__ void QStressDeviceComp27( q = q_dirTNE[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[DIR_MMM])[kbsw] = f_BSW_in - (c6o1*c1o216*( VeloX+VeloY+VeloZ))/(c1o1+q); + (D.f[dMMM])[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); @@ -783,7 +783,7 @@ __global__ void QStressDeviceComp27( q = q_dirBSW[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[DIR_PPP])[ktne] = f_TNE_in - (c6o1*c1o216*(-VeloX-VeloY-VeloZ))/(c1o1+q); + (D.f[dPPP])[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); @@ -792,7 +792,7 @@ __global__ void QStressDeviceComp27( q = q_dirBNE[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[DIR_MMP])[ktsw] = f_TSW_in - (c6o1*c1o216*( VeloX+VeloY-VeloZ))/(c1o1+q); + (D.f[dMMP])[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); @@ -801,7 +801,7 @@ __global__ void QStressDeviceComp27( q = q_dirTSW[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[DIR_PPM])[kbne] = f_BNE_in - (c6o1*c1o216*(-VeloX-VeloY+VeloZ))/(c1o1+q); + (D.f[dPPM])[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); @@ -810,7 +810,7 @@ __global__ void QStressDeviceComp27( q = q_dirTSE[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[DIR_MPM])[kbnw] = f_BNW_in - (c6o1*c1o216*( VeloX-VeloY+VeloZ))/(c1o1+q); + (D.f[dMPM])[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); @@ -819,7 +819,7 @@ __global__ void QStressDeviceComp27( q = q_dirBNW[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[DIR_PMP])[ktse] = f_TSE_in - (c6o1*c1o216*(-VeloX+VeloY-VeloZ))/(c1o1+q); + (D.f[dPMP])[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); @@ -828,7 +828,7 @@ __global__ void QStressDeviceComp27( q = q_dirBSE[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[DIR_MPP])[ktnw] = f_TNW_in - (c6o1*c1o216*( VeloX-VeloY-VeloZ))/(c1o1+q); + (D.f[dMPP])[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); @@ -837,7 +837,7 @@ __global__ void QStressDeviceComp27( q = q_dirTNW[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[DIR_PMM])[kbse] = f_BSE_in - (c6o1*c1o216*(-VeloX+VeloY+VeloZ))/(c1o1+q); + (D.f[dPMM])[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); @@ -906,32 +906,32 @@ __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[DIR_P00 * numberOfBCnodes]; - q_dirW = &QQ[DIR_M00 * numberOfBCnodes]; - q_dirN = &QQ[DIR_0P0 * numberOfBCnodes]; - q_dirS = &QQ[DIR_0M0 * numberOfBCnodes]; - q_dirT = &QQ[DIR_00P * numberOfBCnodes]; - q_dirB = &QQ[DIR_00M * numberOfBCnodes]; - q_dirNE = &QQ[DIR_PP0 * numberOfBCnodes]; - q_dirSW = &QQ[DIR_MM0 * numberOfBCnodes]; - q_dirSE = &QQ[DIR_PM0 * numberOfBCnodes]; - q_dirNW = &QQ[DIR_MP0 * numberOfBCnodes]; - q_dirTE = &QQ[DIR_P0P * numberOfBCnodes]; - q_dirBW = &QQ[DIR_M0M * numberOfBCnodes]; - q_dirBE = &QQ[DIR_P0M * numberOfBCnodes]; - q_dirTW = &QQ[DIR_M0P * numberOfBCnodes]; - q_dirTN = &QQ[DIR_0PP * numberOfBCnodes]; - q_dirBS = &QQ[DIR_0MM * numberOfBCnodes]; - q_dirBN = &QQ[DIR_0PM * numberOfBCnodes]; - q_dirTS = &QQ[DIR_0MP * numberOfBCnodes]; - q_dirTNE = &QQ[DIR_PPP * numberOfBCnodes]; - q_dirTSW = &QQ[DIR_MMP * numberOfBCnodes]; - q_dirTSE = &QQ[DIR_PMP * numberOfBCnodes]; - q_dirTNW = &QQ[DIR_MPP * numberOfBCnodes]; - q_dirBNE = &QQ[DIR_PPM * numberOfBCnodes]; - q_dirBSW = &QQ[DIR_MMM * numberOfBCnodes]; - q_dirBSE = &QQ[DIR_PMM * numberOfBCnodes]; - q_dirBNW = &QQ[DIR_MPM * numberOfBCnodes]; + q_dirE = &QQ[dP00 * numberOfBCnodes]; + q_dirW = &QQ[dM00 * numberOfBCnodes]; + q_dirN = &QQ[d0P0 * numberOfBCnodes]; + q_dirS = &QQ[d0M0 * numberOfBCnodes]; + q_dirT = &QQ[d00P * numberOfBCnodes]; + q_dirB = &QQ[d00M * numberOfBCnodes]; + q_dirNE = &QQ[dPP0 * numberOfBCnodes]; + q_dirSW = &QQ[dMM0 * numberOfBCnodes]; + q_dirSE = &QQ[dPM0 * numberOfBCnodes]; + q_dirNW = &QQ[dMP0 * numberOfBCnodes]; + q_dirTE = &QQ[dP0P * numberOfBCnodes]; + q_dirBW = &QQ[dM0M * numberOfBCnodes]; + q_dirBE = &QQ[dP0M * numberOfBCnodes]; + q_dirTW = &QQ[dM0P * numberOfBCnodes]; + q_dirTN = &QQ[d0PP * numberOfBCnodes]; + q_dirBS = &QQ[d0MM * numberOfBCnodes]; + q_dirBN = &QQ[d0PM * numberOfBCnodes]; + q_dirTS = &QQ[d0MP * numberOfBCnodes]; + q_dirTNE = &QQ[dPPP * numberOfBCnodes]; + q_dirTSW = &QQ[dMMP * numberOfBCnodes]; + q_dirTSE = &QQ[dPMP * numberOfBCnodes]; + q_dirTNW = &QQ[dMPP * numberOfBCnodes]; + q_dirBNE = &QQ[dPPM * numberOfBCnodes]; + q_dirBSW = &QQ[dMMM * numberOfBCnodes]; + q_dirBSE = &QQ[dPMM * numberOfBCnodes]; + q_dirBNW = &QQ[dMPM * numberOfBCnodes]; //////////////////////////////////////////////////////////////////////////////// //index unsigned int KQK = k_Q[k]; @@ -967,38 +967,38 @@ __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[DIR_P00])[ke ]; - f_E = (D.f[DIR_M00])[kw ]; - f_S = (D.f[DIR_0P0])[kn ]; - f_N = (D.f[DIR_0M0])[ks ]; - f_B = (D.f[DIR_00P])[kt ]; - f_T = (D.f[DIR_00M])[kb ]; - f_SW = (D.f[DIR_PP0])[kne ]; - f_NE = (D.f[DIR_MM0])[ksw ]; - f_NW = (D.f[DIR_PM0])[kse ]; - f_SE = (D.f[DIR_MP0])[knw ]; - f_BW = (D.f[DIR_P0P])[kte ]; - f_TE = (D.f[DIR_M0M])[kbw ]; - f_TW = (D.f[DIR_P0M])[kbe ]; - f_BE = (D.f[DIR_M0P])[ktw ]; - f_BS = (D.f[DIR_0PP])[ktn ]; - f_TN = (D.f[DIR_0MM])[kbs ]; - f_TS = (D.f[DIR_0PM])[kbn ]; - f_BN = (D.f[DIR_0MP])[kts ]; - f_BSW = (D.f[DIR_PPP])[ktne ]; - f_BNE = (D.f[DIR_MMP])[ktsw ]; - f_BNW = (D.f[DIR_PMP])[ktse ]; - f_BSE = (D.f[DIR_MPP])[ktnw ]; - f_TSW = (D.f[DIR_PPM])[kbne ]; - f_TNE = (D.f[DIR_MMM])[kbsw ]; - f_TNW = (D.f[DIR_PMM])[kbse ]; - f_TSE = (D.f[DIR_MPM])[kbnw ]; + f_W = (D.f[dP00])[ke ]; + f_E = (D.f[dM00])[kw ]; + f_S = (D.f[d0P0])[kn ]; + f_N = (D.f[d0M0])[ks ]; + f_B = (D.f[d00P])[kt ]; + f_T = (D.f[d00M])[kb ]; + f_SW = (D.f[dPP0])[kne ]; + f_NE = (D.f[dMM0])[ksw ]; + f_NW = (D.f[dPM0])[kse ]; + f_SE = (D.f[dMP0])[knw ]; + f_BW = (D.f[dP0P])[kte ]; + f_TE = (D.f[dM0M])[kbw ]; + f_TW = (D.f[dP0M])[kbe ]; + f_BE = (D.f[dM0P])[ktw ]; + f_BS = (D.f[d0PP])[ktn ]; + f_TN = (D.f[d0MM])[kbs ]; + f_TS = (D.f[d0PM])[kbn ]; + f_BN = (D.f[d0MP])[kts ]; + f_BSW = (D.f[dPPP])[ktne ]; + f_BNE = (D.f[dMMP])[ktsw ]; + f_BNW = (D.f[dPMP])[ktse ]; + f_BSE = (D.f[dMPP])[ktnw ]; + f_TSW = (D.f[dPPM])[kbne ]; + f_TNE = (D.f[dMMM])[kbsw ]; + f_TNW = (D.f[dPMM])[kbse ]; + f_TSE = (D.f[dMPM])[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[DIR_000])[kzero]); + f_T + f_B + f_N + f_S + f_E + f_W + ((D.f[d000])[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)) + @@ -1266,49 +1266,49 @@ __global__ void BBStressDevice27( real* DD, q = q_dirE[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[DIR_M00])[kw] = f_W_in - (c6o1*c2o27*( VeloX )); + (D.f[dM00])[kw] = f_W_in - (c6o1*c2o27*( VeloX )); wallMomentumX += -(c6o1*c2o27*( VeloX )); } q = q_dirW[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[DIR_P00])[ke] = f_E_in - (c6o1*c2o27*(-VeloX )); + (D.f[dP00])[ke] = f_E_in - (c6o1*c2o27*(-VeloX )); wallMomentumX -= - (c6o1*c2o27*(-VeloX )); } q = q_dirN[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[DIR_0M0])[ks] = f_S_in - (c6o1*c2o27*( VeloY )); + (D.f[d0M0])[ks] = f_S_in - (c6o1*c2o27*( VeloY )); wallMomentumY += - (c6o1*c2o27*( VeloY )); } q = q_dirS[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[DIR_0P0])[kn] = f_N_in - (c6o1*c2o27*(-VeloY )); + (D.f[d0P0])[kn] = f_N_in - (c6o1*c2o27*(-VeloY )); wallMomentumY -= -(c6o1*c2o27*(-VeloY )); } q = q_dirT[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[DIR_00M])[kb] = f_B_in - (c6o1*c2o27*( VeloZ )); + (D.f[d00M])[kb] = f_B_in - (c6o1*c2o27*( VeloZ )); wallMomentumZ += - (c6o1*c2o27*( VeloZ )); } q = q_dirB[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[DIR_00P])[kt] = f_T_in - (c6o1*c2o27*(-VeloZ )); + (D.f[d00P])[kt] = f_T_in - (c6o1*c2o27*(-VeloZ )); wallMomentumZ -= -(c6o1*c2o27*(-VeloZ )); } q = q_dirNE[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[DIR_MM0])[ksw] = f_SW_in - (c6o1*c1o54*(VeloX+VeloY)); + (D.f[dMM0])[ksw] = f_SW_in - (c6o1*c1o54*(VeloX+VeloY)); wallMomentumX += -(c6o1*c1o54*(VeloX+VeloY)); wallMomentumY += -(c6o1*c1o54*(VeloX+VeloY)); } @@ -1316,7 +1316,7 @@ __global__ void BBStressDevice27( real* DD, q = q_dirSW[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[DIR_PP0])[kne] = f_NE_in - (c6o1*c1o54*(-VeloX-VeloY)); + (D.f[dPP0])[kne] = f_NE_in - (c6o1*c1o54*(-VeloX-VeloY)); wallMomentumX -= - (c6o1*c1o54*(-VeloX-VeloY)); wallMomentumY -= - (c6o1*c1o54*(-VeloX-VeloY)); } @@ -1324,7 +1324,7 @@ __global__ void BBStressDevice27( real* DD, q = q_dirSE[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[DIR_MP0])[knw] = f_NW_in - (c6o1*c1o54*( VeloX-VeloY)); + (D.f[dMP0])[knw] = f_NW_in - (c6o1*c1o54*( VeloX-VeloY)); wallMomentumX += -(c6o1*c1o54*( VeloX-VeloY)); wallMomentumY -= -(c6o1*c1o54*( VeloX-VeloY)); } @@ -1332,7 +1332,7 @@ __global__ void BBStressDevice27( real* DD, q = q_dirNW[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[DIR_PM0])[kse] = f_SE_in - (c6o1*c1o54*(-VeloX+VeloY)); + (D.f[dPM0])[kse] = f_SE_in - (c6o1*c1o54*(-VeloX+VeloY)); wallMomentumX -= - (c6o1*c1o54*(-VeloX+VeloY)); wallMomentumY += - (c6o1*c1o54*(-VeloX+VeloY)); } @@ -1340,7 +1340,7 @@ __global__ void BBStressDevice27( real* DD, q = q_dirTE[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[DIR_M0M])[kbw] = f_BW_in - (c6o1*c1o54*( VeloX+VeloZ)); + (D.f[dM0M])[kbw] = f_BW_in - (c6o1*c1o54*( VeloX+VeloZ)); wallMomentumX += - (c6o1*c1o54*( VeloX+VeloZ)); wallMomentumZ += - (c6o1*c1o54*( VeloX+VeloZ)); } @@ -1348,7 +1348,7 @@ __global__ void BBStressDevice27( real* DD, q = q_dirBW[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[DIR_P0P])[kte] = f_TE_in - (c6o1*c1o54*(-VeloX-VeloZ)); + (D.f[dP0P])[kte] = f_TE_in - (c6o1*c1o54*(-VeloX-VeloZ)); wallMomentumX -= - (c6o1*c1o54*(-VeloX-VeloZ)); wallMomentumZ -= - (c6o1*c1o54*(-VeloX-VeloZ)); } @@ -1356,7 +1356,7 @@ __global__ void BBStressDevice27( real* DD, q = q_dirBE[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[DIR_M0P])[ktw] = f_TW_in - (c6o1*c1o54*( VeloX-VeloZ)); + (D.f[dM0P])[ktw] = f_TW_in - (c6o1*c1o54*( VeloX-VeloZ)); wallMomentumX += - (c6o1*c1o54*( VeloX-VeloZ)); wallMomentumZ -= - (c6o1*c1o54*( VeloX-VeloZ)); } @@ -1364,7 +1364,7 @@ __global__ void BBStressDevice27( real* DD, q = q_dirTW[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[DIR_P0M])[kbe] = f_BE_in - (c6o1*c1o54*(-VeloX+VeloZ)); + (D.f[dP0M])[kbe] = f_BE_in - (c6o1*c1o54*(-VeloX+VeloZ)); wallMomentumX -= - (c6o1*c1o54*(-VeloX+VeloZ)); wallMomentumZ += - (c6o1*c1o54*(-VeloX+VeloZ)); } @@ -1372,7 +1372,7 @@ __global__ void BBStressDevice27( real* DD, q = q_dirTN[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[DIR_0MM])[kbs] = f_BS_in - (c6o1*c1o54*( VeloY+VeloZ)); + (D.f[d0MM])[kbs] = f_BS_in - (c6o1*c1o54*( VeloY+VeloZ)); wallMomentumY += - (c6o1*c1o54*( VeloY+VeloZ)); wallMomentumZ += - (c6o1*c1o54*( VeloY+VeloZ)); } @@ -1380,7 +1380,7 @@ __global__ void BBStressDevice27( real* DD, q = q_dirBS[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[DIR_0PP])[ktn] = f_TN_in - (c6o1*c1o54*( -VeloY-VeloZ)); + (D.f[d0PP])[ktn] = f_TN_in - (c6o1*c1o54*( -VeloY-VeloZ)); wallMomentumY -= - (c6o1*c1o54*( -VeloY-VeloZ)); wallMomentumZ -= - (c6o1*c1o54*( -VeloY-VeloZ)); } @@ -1388,7 +1388,7 @@ __global__ void BBStressDevice27( real* DD, q = q_dirBN[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[DIR_0MP])[kts] = f_TS_in - (c6o1*c1o54*( VeloY-VeloZ)); + (D.f[d0MP])[kts] = f_TS_in - (c6o1*c1o54*( VeloY-VeloZ)); wallMomentumY += - (c6o1*c1o54*( VeloY-VeloZ)); wallMomentumZ -= - (c6o1*c1o54*( VeloY-VeloZ)); } @@ -1396,7 +1396,7 @@ __global__ void BBStressDevice27( real* DD, q = q_dirTS[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[DIR_0PM])[kbn] = f_BN_in - (c6o1*c1o54*( -VeloY+VeloZ)); + (D.f[d0PM])[kbn] = f_BN_in - (c6o1*c1o54*( -VeloY+VeloZ)); wallMomentumY -= - (c6o1*c1o54*( -VeloY+VeloZ)); wallMomentumZ += - (c6o1*c1o54*( -VeloY+VeloZ)); } @@ -1404,7 +1404,7 @@ __global__ void BBStressDevice27( real* DD, q = q_dirTNE[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[DIR_MMM])[kbsw] = f_BSW_in - (c6o1*c1o216*( VeloX+VeloY+VeloZ)); + (D.f[dMMM])[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)); @@ -1413,7 +1413,7 @@ __global__ void BBStressDevice27( real* DD, q = q_dirBSW[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[DIR_PPP])[ktne] = f_TNE_in - (c6o1*c1o216*(-VeloX-VeloY-VeloZ)); + (D.f[dPPP])[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)); @@ -1422,7 +1422,7 @@ __global__ void BBStressDevice27( real* DD, q = q_dirBNE[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[DIR_MMP])[ktsw] = f_TSW_in - (c6o1*c1o216*( VeloX+VeloY-VeloZ)); + (D.f[dMMP])[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)); @@ -1431,7 +1431,7 @@ __global__ void BBStressDevice27( real* DD, q = q_dirTSW[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[DIR_PPM])[kbne] = f_BNE_in - (c6o1*c1o216*(-VeloX-VeloY+VeloZ)); + (D.f[dPPM])[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)); @@ -1440,7 +1440,7 @@ __global__ void BBStressDevice27( real* DD, q = q_dirTSE[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[DIR_MPM])[kbnw] = f_BNW_in - (c6o1*c1o216*( VeloX-VeloY+VeloZ)); + (D.f[dMPM])[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)); @@ -1449,7 +1449,7 @@ __global__ void BBStressDevice27( real* DD, q = q_dirBNW[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[DIR_PMP])[ktse] = f_TSE_in - (c6o1*c1o216*(-VeloX+VeloY-VeloZ)); + (D.f[dPMP])[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)); @@ -1458,7 +1458,7 @@ __global__ void BBStressDevice27( real* DD, q = q_dirBSE[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[DIR_MPP])[ktnw] = f_TNW_in - (c6o1*c1o216*( VeloX-VeloY-VeloZ)); + (D.f[dMPP])[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)); @@ -1467,7 +1467,7 @@ __global__ void BBStressDevice27( real* DD, q = q_dirTNW[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[DIR_PMM])[kbse] = f_BSE_in - (c6o1*c1o216*(-VeloX+VeloY+VeloZ)); + (D.f[dPMM])[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)); @@ -1536,32 +1536,32 @@ __global__ void BBStressPressureDevice27( 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[DIR_P00 * numberOfBCnodes]; - q_dirW = &QQ[DIR_M00 * numberOfBCnodes]; - q_dirN = &QQ[DIR_0P0 * numberOfBCnodes]; - q_dirS = &QQ[DIR_0M0 * numberOfBCnodes]; - q_dirT = &QQ[DIR_00P * numberOfBCnodes]; - q_dirB = &QQ[DIR_00M * numberOfBCnodes]; - q_dirNE = &QQ[DIR_PP0 * numberOfBCnodes]; - q_dirSW = &QQ[DIR_MM0 * numberOfBCnodes]; - q_dirSE = &QQ[DIR_PM0 * numberOfBCnodes]; - q_dirNW = &QQ[DIR_MP0 * numberOfBCnodes]; - q_dirTE = &QQ[DIR_P0P * numberOfBCnodes]; - q_dirBW = &QQ[DIR_M0M * numberOfBCnodes]; - q_dirBE = &QQ[DIR_P0M * numberOfBCnodes]; - q_dirTW = &QQ[DIR_M0P * numberOfBCnodes]; - q_dirTN = &QQ[DIR_0PP * numberOfBCnodes]; - q_dirBS = &QQ[DIR_0MM * numberOfBCnodes]; - q_dirBN = &QQ[DIR_0PM * numberOfBCnodes]; - q_dirTS = &QQ[DIR_0MP * numberOfBCnodes]; - q_dirTNE = &QQ[DIR_PPP * numberOfBCnodes]; - q_dirTSW = &QQ[DIR_MMP * numberOfBCnodes]; - q_dirTSE = &QQ[DIR_PMP * numberOfBCnodes]; - q_dirTNW = &QQ[DIR_MPP * numberOfBCnodes]; - q_dirBNE = &QQ[DIR_PPM * numberOfBCnodes]; - q_dirBSW = &QQ[DIR_MMM * numberOfBCnodes]; - q_dirBSE = &QQ[DIR_PMM * numberOfBCnodes]; - q_dirBNW = &QQ[DIR_MPM * numberOfBCnodes]; + q_dirE = &QQ[dP00 * numberOfBCnodes]; + q_dirW = &QQ[dM00 * numberOfBCnodes]; + q_dirN = &QQ[d0P0 * numberOfBCnodes]; + q_dirS = &QQ[d0M0 * numberOfBCnodes]; + q_dirT = &QQ[d00P * numberOfBCnodes]; + q_dirB = &QQ[d00M * numberOfBCnodes]; + q_dirNE = &QQ[dPP0 * numberOfBCnodes]; + q_dirSW = &QQ[dMM0 * numberOfBCnodes]; + q_dirSE = &QQ[dPM0 * numberOfBCnodes]; + q_dirNW = &QQ[dMP0 * numberOfBCnodes]; + q_dirTE = &QQ[dP0P * numberOfBCnodes]; + q_dirBW = &QQ[dM0M * numberOfBCnodes]; + q_dirBE = &QQ[dP0M * numberOfBCnodes]; + q_dirTW = &QQ[dM0P * numberOfBCnodes]; + q_dirTN = &QQ[d0PP * numberOfBCnodes]; + q_dirBS = &QQ[d0MM * numberOfBCnodes]; + q_dirBN = &QQ[d0PM * numberOfBCnodes]; + q_dirTS = &QQ[d0MP * numberOfBCnodes]; + q_dirTNE = &QQ[dPPP * numberOfBCnodes]; + q_dirTSW = &QQ[dMMP * numberOfBCnodes]; + q_dirTSE = &QQ[dPMP * numberOfBCnodes]; + q_dirTNW = &QQ[dMPP * numberOfBCnodes]; + q_dirBNE = &QQ[dPPM * numberOfBCnodes]; + q_dirBSW = &QQ[dMMM * numberOfBCnodes]; + q_dirBSE = &QQ[dPMM * numberOfBCnodes]; + q_dirBNW = &QQ[dMPM * numberOfBCnodes]; //////////////////////////////////////////////////////////////////////////////// //index unsigned int KQK = k_Q[k]; @@ -1597,38 +1597,38 @@ __global__ void BBStressPressureDevice27( 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[DIR_P00])[ke ]; - f_E = (D.f[DIR_M00])[kw ]; - f_S = (D.f[DIR_0P0])[kn ]; - f_N = (D.f[DIR_0M0])[ks ]; - f_B = (D.f[DIR_00P])[kt ]; - f_T = (D.f[DIR_00M])[kb ]; - f_SW = (D.f[DIR_PP0])[kne ]; - f_NE = (D.f[DIR_MM0])[ksw ]; - f_NW = (D.f[DIR_PM0])[kse ]; - f_SE = (D.f[DIR_MP0])[knw ]; - f_BW = (D.f[DIR_P0P])[kte ]; - f_TE = (D.f[DIR_M0M])[kbw ]; - f_TW = (D.f[DIR_P0M])[kbe ]; - f_BE = (D.f[DIR_M0P])[ktw ]; - f_BS = (D.f[DIR_0PP])[ktn ]; - f_TN = (D.f[DIR_0MM])[kbs ]; - f_TS = (D.f[DIR_0PM])[kbn ]; - f_BN = (D.f[DIR_0MP])[kts ]; - f_BSW = (D.f[DIR_PPP])[ktne ]; - f_BNE = (D.f[DIR_MMP])[ktsw ]; - f_BNW = (D.f[DIR_PMP])[ktse ]; - f_BSE = (D.f[DIR_MPP])[ktnw ]; - f_TSW = (D.f[DIR_PPM])[kbne ]; - f_TNE = (D.f[DIR_MMM])[kbsw ]; - f_TNW = (D.f[DIR_PMM])[kbse ]; - f_TSE = (D.f[DIR_MPM])[kbnw ]; + f_W = (D.f[dP00])[ke ]; + f_E = (D.f[dM00])[kw ]; + f_S = (D.f[d0P0])[kn ]; + f_N = (D.f[d0M0])[ks ]; + f_B = (D.f[d00P])[kt ]; + f_T = (D.f[d00M])[kb ]; + f_SW = (D.f[dPP0])[kne ]; + f_NE = (D.f[dMM0])[ksw ]; + f_NW = (D.f[dPM0])[kse ]; + f_SE = (D.f[dMP0])[knw ]; + f_BW = (D.f[dP0P])[kte ]; + f_TE = (D.f[dM0M])[kbw ]; + f_TW = (D.f[dP0M])[kbe ]; + f_BE = (D.f[dM0P])[ktw ]; + f_BS = (D.f[d0PP])[ktn ]; + f_TN = (D.f[d0MM])[kbs ]; + f_TS = (D.f[d0PM])[kbn ]; + f_BN = (D.f[d0MP])[kts ]; + f_BSW = (D.f[dPPP])[ktne ]; + f_BNE = (D.f[dMMP])[ktsw ]; + f_BNW = (D.f[dPMP])[ktse ]; + f_BSE = (D.f[dMPP])[ktnw ]; + f_TSW = (D.f[dPPM])[kbne ]; + f_TNE = (D.f[dMMM])[kbsw ]; + f_TNW = (D.f[dPMM])[kbse ]; + f_TSE = (D.f[dMPM])[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[DIR_000])[kzero]); + f_T + f_B + f_N + f_S + f_E + f_W + ((D.f[d000])[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)) + @@ -1896,49 +1896,49 @@ __global__ void BBStressPressureDevice27( real* DD, q = q_dirE[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[DIR_M00])[kw] = f_W_in - (c6o1*c2o27*( VeloX )); + (D.f[dM00])[kw] = f_W_in - (c6o1*c2o27*( VeloX )); wallMomentumX += -(c6o1*c2o27*( VeloX )); } q = q_dirW[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[DIR_P00])[ke] = f_E_in - (c6o1*c2o27*(-VeloX )); + (D.f[dP00])[ke] = f_E_in - (c6o1*c2o27*(-VeloX )); wallMomentumX -= - (c6o1*c2o27*(-VeloX )); } q = q_dirN[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[DIR_0M0])[ks] = f_S_in - (c6o1*c2o27*( VeloY )); + (D.f[d0M0])[ks] = f_S_in - (c6o1*c2o27*( VeloY )); wallMomentumY += - (c6o1*c2o27*( VeloY )); } q = q_dirS[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[DIR_0P0])[kn] = f_N_in - (c6o1*c2o27*(-VeloY )); + (D.f[d0P0])[kn] = f_N_in - (c6o1*c2o27*(-VeloY )); wallMomentumY -= -(c6o1*c2o27*(-VeloY )); } q = q_dirT[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[DIR_00M])[kb] = f_B_in - (c6o1*c2o27*( VeloZ )); + (D.f[d00M])[kb] = f_B_in - (c6o1*c2o27*( VeloZ )); wallMomentumZ += - (c6o1*c2o27*( VeloZ )); } q = q_dirB[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[DIR_00P])[kt] = f_T_in - (c6o1*c2o27*(-VeloZ )); + (D.f[d00P])[kt] = f_T_in - (c6o1*c2o27*(-VeloZ )); wallMomentumZ -= -(c6o1*c2o27*(-VeloZ )); } q = q_dirNE[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[DIR_MM0])[ksw] = f_SW_in - (c6o1*c1o54*(VeloX+VeloY)); + (D.f[dMM0])[ksw] = f_SW_in - (c6o1*c1o54*(VeloX+VeloY)); wallMomentumX += -(c6o1*c1o54*(VeloX+VeloY)); wallMomentumY += -(c6o1*c1o54*(VeloX+VeloY)); } @@ -1946,7 +1946,7 @@ __global__ void BBStressPressureDevice27( real* DD, q = q_dirSW[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[DIR_PP0])[kne] = f_NE_in - (c6o1*c1o54*(-VeloX-VeloY)); + (D.f[dPP0])[kne] = f_NE_in - (c6o1*c1o54*(-VeloX-VeloY)); wallMomentumX -= - (c6o1*c1o54*(-VeloX-VeloY)); wallMomentumY -= - (c6o1*c1o54*(-VeloX-VeloY)); } @@ -1954,7 +1954,7 @@ __global__ void BBStressPressureDevice27( real* DD, q = q_dirSE[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[DIR_MP0])[knw] = f_NW_in - (c6o1*c1o54*( VeloX-VeloY)); + (D.f[dMP0])[knw] = f_NW_in - (c6o1*c1o54*( VeloX-VeloY)); wallMomentumX += -(c6o1*c1o54*( VeloX-VeloY)); wallMomentumY -= -(c6o1*c1o54*( VeloX-VeloY)); } @@ -1962,7 +1962,7 @@ __global__ void BBStressPressureDevice27( real* DD, q = q_dirNW[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[DIR_PM0])[kse] = f_SE_in - (c6o1*c1o54*(-VeloX+VeloY)); + (D.f[dPM0])[kse] = f_SE_in - (c6o1*c1o54*(-VeloX+VeloY)); wallMomentumX -= - (c6o1*c1o54*(-VeloX+VeloY)); wallMomentumY += - (c6o1*c1o54*(-VeloX+VeloY)); } @@ -1970,7 +1970,7 @@ __global__ void BBStressPressureDevice27( real* DD, q = q_dirTE[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[DIR_M0M])[kbw] = f_BW_in - (c6o1*c1o54*( VeloX+VeloZ)); + (D.f[dM0M])[kbw] = f_BW_in - (c6o1*c1o54*( VeloX+VeloZ)); wallMomentumX += - (c6o1*c1o54*( VeloX+VeloZ)); wallMomentumZ += - (c6o1*c1o54*( VeloX+VeloZ)); } @@ -1978,7 +1978,7 @@ __global__ void BBStressPressureDevice27( real* DD, q = q_dirBW[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[DIR_P0P])[kte] = f_TE_in - (c6o1*c1o54*(-VeloX-VeloZ)); + (D.f[dP0P])[kte] = f_TE_in - (c6o1*c1o54*(-VeloX-VeloZ)); wallMomentumX -= - (c6o1*c1o54*(-VeloX-VeloZ)); wallMomentumZ -= - (c6o1*c1o54*(-VeloX-VeloZ)); } @@ -1986,7 +1986,7 @@ __global__ void BBStressPressureDevice27( real* DD, q = q_dirBE[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[DIR_M0P])[ktw] = f_TW_in - (c6o1*c1o54*( VeloX-VeloZ)); + (D.f[dM0P])[ktw] = f_TW_in - (c6o1*c1o54*( VeloX-VeloZ)); wallMomentumX += - (c6o1*c1o54*( VeloX-VeloZ)); wallMomentumZ -= - (c6o1*c1o54*( VeloX-VeloZ)); } @@ -1994,7 +1994,7 @@ __global__ void BBStressPressureDevice27( real* DD, q = q_dirTW[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[DIR_P0M])[kbe] = f_BE_in - (c6o1*c1o54*(-VeloX+VeloZ)); + (D.f[dP0M])[kbe] = f_BE_in - (c6o1*c1o54*(-VeloX+VeloZ)); wallMomentumX -= - (c6o1*c1o54*(-VeloX+VeloZ)); wallMomentumZ += - (c6o1*c1o54*(-VeloX+VeloZ)); } @@ -2002,7 +2002,7 @@ __global__ void BBStressPressureDevice27( real* DD, q = q_dirTN[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[DIR_0MM])[kbs] = f_BS_in - (c6o1*c1o54*( VeloY+VeloZ)); + (D.f[d0MM])[kbs] = f_BS_in - (c6o1*c1o54*( VeloY+VeloZ)); wallMomentumY += - (c6o1*c1o54*( VeloY+VeloZ)); wallMomentumZ += - (c6o1*c1o54*( VeloY+VeloZ)); } @@ -2010,7 +2010,7 @@ __global__ void BBStressPressureDevice27( real* DD, q = q_dirBS[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[DIR_0PP])[ktn] = f_TN_in - (c6o1*c1o54*( -VeloY-VeloZ)); + (D.f[d0PP])[ktn] = f_TN_in - (c6o1*c1o54*( -VeloY-VeloZ)); wallMomentumY -= - (c6o1*c1o54*( -VeloY-VeloZ)); wallMomentumZ -= - (c6o1*c1o54*( -VeloY-VeloZ)); } @@ -2018,7 +2018,7 @@ __global__ void BBStressPressureDevice27( real* DD, q = q_dirBN[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[DIR_0MP])[kts] = f_TS_in - (c6o1*c1o54*( VeloY-VeloZ)); + (D.f[d0MP])[kts] = f_TS_in - (c6o1*c1o54*( VeloY-VeloZ)); wallMomentumY += - (c6o1*c1o54*( VeloY-VeloZ)); wallMomentumZ -= - (c6o1*c1o54*( VeloY-VeloZ)); } @@ -2026,7 +2026,7 @@ __global__ void BBStressPressureDevice27( real* DD, q = q_dirTS[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[DIR_0PM])[kbn] = f_BN_in - (c6o1*c1o54*( -VeloY+VeloZ)); + (D.f[d0PM])[kbn] = f_BN_in - (c6o1*c1o54*( -VeloY+VeloZ)); wallMomentumY -= - (c6o1*c1o54*( -VeloY+VeloZ)); wallMomentumZ += - (c6o1*c1o54*( -VeloY+VeloZ)); } @@ -2034,7 +2034,7 @@ __global__ void BBStressPressureDevice27( real* DD, q = q_dirTNE[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[DIR_MMM])[kbsw] = f_BSW_in - (c6o1*c1o216*( VeloX+VeloY+VeloZ)); + (D.f[dMMM])[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)); @@ -2043,7 +2043,7 @@ __global__ void BBStressPressureDevice27( real* DD, q = q_dirBSW[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[DIR_PPP])[ktne] = f_TNE_in - (c6o1*c1o216*(-VeloX-VeloY-VeloZ)); + (D.f[dPPP])[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)); @@ -2052,7 +2052,7 @@ __global__ void BBStressPressureDevice27( real* DD, q = q_dirBNE[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[DIR_MMP])[ktsw] = f_TSW_in - (c6o1*c1o216*( VeloX+VeloY-VeloZ)); + (D.f[dMMP])[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)); @@ -2061,7 +2061,7 @@ __global__ void BBStressPressureDevice27( real* DD, q = q_dirTSW[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[DIR_PPM])[kbne] = f_BNE_in - (c6o1*c1o216*(-VeloX-VeloY+VeloZ)); + (D.f[dPPM])[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)); @@ -2070,7 +2070,7 @@ __global__ void BBStressPressureDevice27( real* DD, q = q_dirTSE[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[DIR_MPM])[kbnw] = f_BNW_in - (c6o1*c1o216*( VeloX-VeloY+VeloZ)); + (D.f[dMPM])[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)); @@ -2079,7 +2079,7 @@ __global__ void BBStressPressureDevice27( real* DD, q = q_dirBNW[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[DIR_PMP])[ktse] = f_TSE_in - (c6o1*c1o216*(-VeloX+VeloY-VeloZ)); + (D.f[dPMP])[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)); @@ -2088,7 +2088,7 @@ __global__ void BBStressPressureDevice27( real* DD, q = q_dirBSE[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[DIR_MPP])[ktnw] = f_TNW_in - (c6o1*c1o216*( VeloX-VeloY-VeloZ)); + (D.f[dMPP])[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)); @@ -2097,7 +2097,7 @@ __global__ void BBStressPressureDevice27( real* DD, q = q_dirTNW[k]; if (q>=c0o1 && q<=c1o1) { - (D.f[DIR_PMM])[kbse] = f_BSE_in - (c6o1*c1o216*(-VeloX+VeloY+VeloZ)); + (D.f[dPMM])[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/core/GPU/ThinWallBCs27.cu b/src/gpu/core/GPU/ThinWallBCs27.cu new file mode 100644 index 0000000000000000000000000000000000000000..e35782207c90cada824b5c5423a566afa3645573 --- /dev/null +++ b/src/gpu/core/GPU/ThinWallBCs27.cu @@ -0,0 +1,1137 @@ +// _ ___ __ __________ _ __ ______________ __ +// | | / (_)____/ /___ ______ _/ / ____/ /_ __(_)___/ /____ / ___/ __ / / / / +// | | / / / ___/ __/ / / / __ `/ / /_ / / / / / / __ / ___/ / /___/ /_/ / / / / +// | |/ / / / / /_/ /_/ / /_/ / / __/ / / /_/ / / /_/ (__ ) / /_) / ____/ /__/ / +// |___/_/_/ \__/\__,_/\__,_/_/_/ /_/\__,_/_/\__,_/____/ \____/_/ \_____/ +// +////////////////////////////////////////////////////////////////////////// + +/* Device code */ +#include "LBM/LB.h" +#include "lbm/constants/D3Q27.h" +#include <basics/constants/NumericConstants.h> + +using namespace vf::basics::constant; +using namespace vf::lbm::dir; + +///////////////////////////////////////////////////////////////////////// +__global__ void QVelDeviceCompThinWallsPartOne27( + real* vx, + real* vy, + real* vz, + real* DD, + int* k_Q, + real* QQ, + uint numberOfBCnodes, + real om1, + uint* neighborX, + uint* neighborY, + uint* neighborZ, + unsigned long long numberOfLBnodes, + bool isEvenTimestep) +{ + Distributions27 D; + if (isEvenTimestep==true) + { + D.f[dP00] = &DD[dP00 * numberOfLBnodes]; + D.f[dM00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00P] = &DD[d00P * numberOfLBnodes]; + D.f[d00M] = &DD[d00M * numberOfLBnodes]; + D.f[dPP0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dMM0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dP0P] = &DD[dP0P * numberOfLBnodes]; + D.f[dM0M] = &DD[dM0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dP0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dM0P * numberOfLBnodes]; + D.f[d0PP] = &DD[d0PP * numberOfLBnodes]; + D.f[d0MM] = &DD[d0MM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0PM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dPPP * numberOfLBnodes]; + D.f[dMMP] = &DD[dMMP * numberOfLBnodes]; + D.f[dPMP] = &DD[dPMP * numberOfLBnodes]; + D.f[dMPP] = &DD[dMPP * numberOfLBnodes]; + D.f[dPPM] = &DD[dPPM * numberOfLBnodes]; + D.f[dMMM] = &DD[dMMM * numberOfLBnodes]; + D.f[dPMM] = &DD[dPMM * numberOfLBnodes]; + D.f[dMPM] = &DD[dMPM * numberOfLBnodes]; + } + else + { + D.f[dM00] = &DD[dP00 * numberOfLBnodes]; + D.f[dP00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00M] = &DD[d00P * numberOfLBnodes]; + D.f[d00P] = &DD[d00M * numberOfLBnodes]; + D.f[dMM0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dPP0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dM0M] = &DD[dP0P * numberOfLBnodes]; + D.f[dP0P] = &DD[dM0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dP0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dM0P * numberOfLBnodes]; + D.f[d0MM] = &DD[d0PP * numberOfLBnodes]; + D.f[d0PP] = &DD[d0MM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0PM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dMMM * numberOfLBnodes]; + D.f[dMMP] = &DD[dPPM * numberOfLBnodes]; + D.f[dPMP] = &DD[dMPM * numberOfLBnodes]; + D.f[dMPP] = &DD[dPMM * numberOfLBnodes]; + D.f[dPPM] = &DD[dMMP * numberOfLBnodes]; + D.f[dMMM] = &DD[dPPP * numberOfLBnodes]; + D.f[dPMM] = &DD[dMPP * numberOfLBnodes]; + D.f[dMPM] = &DD[dPMP * numberOfLBnodes]; + } + //////////////////////////////////////////////////////////////////////////////// + const unsigned x = threadIdx.x; // Globaler x-Index + const unsigned y = blockIdx.x; // Globaler y-Index + const unsigned z = blockIdx.y; // Globaler z-Index + + const unsigned nx = blockDim.x; + const unsigned ny = gridDim.x; + + const unsigned k = nx*(ny*z + y) + x; + ////////////////////////////////////////////////////////////////////////// + + if(k<numberOfBCnodes) + { + //////////////////////////////////////////////////////////////////////////////// + real VeloX = vx[k]; + real VeloY = vy[k]; + real VeloZ = vz[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[dP00 * numberOfBCnodes]; + q_dirW = &QQ[dM00 * numberOfBCnodes]; + q_dirN = &QQ[d0P0 * numberOfBCnodes]; + q_dirS = &QQ[d0M0 * numberOfBCnodes]; + q_dirT = &QQ[d00P * numberOfBCnodes]; + q_dirB = &QQ[d00M * numberOfBCnodes]; + q_dirNE = &QQ[dPP0 * numberOfBCnodes]; + q_dirSW = &QQ[dMM0 * numberOfBCnodes]; + q_dirSE = &QQ[dPM0 * numberOfBCnodes]; + q_dirNW = &QQ[dMP0 * numberOfBCnodes]; + q_dirTE = &QQ[dP0P * numberOfBCnodes]; + q_dirBW = &QQ[dM0M * numberOfBCnodes]; + q_dirBE = &QQ[dP0M * numberOfBCnodes]; + q_dirTW = &QQ[dM0P * numberOfBCnodes]; + q_dirTN = &QQ[d0PP * numberOfBCnodes]; + q_dirBS = &QQ[d0MM * numberOfBCnodes]; + q_dirBN = &QQ[d0PM * numberOfBCnodes]; + q_dirTS = &QQ[d0MP * numberOfBCnodes]; + q_dirTNE = &QQ[dPPP * numberOfBCnodes]; + q_dirTSW = &QQ[dMMP * numberOfBCnodes]; + q_dirTSE = &QQ[dPMP * numberOfBCnodes]; + q_dirTNW = &QQ[dMPP * numberOfBCnodes]; + q_dirBNE = &QQ[dPPM * numberOfBCnodes]; + q_dirBSW = &QQ[dMMM * numberOfBCnodes]; + q_dirBSE = &QQ[dPMM * numberOfBCnodes]; + q_dirBNW = &QQ[dMPM * numberOfBCnodes]; + //////////////////////////////////////////////////////////////////////////////// + //index + uint KQK = k_Q[k]; + uint kzero= KQK; + uint ke = KQK; + uint kw = neighborX[KQK]; + uint kn = KQK; + uint ks = neighborY[KQK]; + uint kt = KQK; + uint kb = neighborZ[KQK]; + uint ksw = neighborY[kw]; + uint kne = KQK; + uint kse = ks; + uint knw = kw; + uint kbw = neighborZ[kw]; + uint kte = KQK; + uint kbe = kb; + uint ktw = kw; + uint kbs = neighborZ[ks]; + uint ktn = KQK; + 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 = KQK; + uint 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[dP00])[ke ]; + f_E = (D.f[dM00])[kw ]; + f_S = (D.f[d0P0])[kn ]; + f_N = (D.f[d0M0])[ks ]; + f_B = (D.f[d00P])[kt ]; + f_T = (D.f[d00M])[kb ]; + f_SW = (D.f[dPP0])[kne ]; + f_NE = (D.f[dMM0])[ksw ]; + f_NW = (D.f[dPM0])[kse ]; + f_SE = (D.f[dMP0])[knw ]; + f_BW = (D.f[dP0P])[kte ]; + f_TE = (D.f[dM0M])[kbw ]; + f_TW = (D.f[dP0M])[kbe ]; + f_BE = (D.f[dM0P])[ktw ]; + f_BS = (D.f[d0PP])[ktn ]; + f_TN = (D.f[d0MM])[kbs ]; + f_TS = (D.f[d0PM])[kbn ]; + f_BN = (D.f[d0MP])[kts ]; + f_BSW = (D.f[dPPP])[ktne ]; + f_BNE = (D.f[dMMP])[ktsw ]; + f_BNW = (D.f[dPMP])[ktse ]; + f_BSE = (D.f[dMPP])[ktnw ]; + f_TSW = (D.f[dPPM])[kbne ]; + f_TNE = (D.f[dMMM])[kbsw ]; + f_TNW = (D.f[dPMM])[kbse ]; + f_TSE = (D.f[dMPM])[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[d000])[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); + + + 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 cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3) * (c1o1 + drho); + + ////////////////////////////////////////////////////////////////////////// + + q = q_dirE[k]; + if (q>=c0o1 && q<=c1o1) + { + feq=c2o27* (drho + c9o2 * ( vx1 )*( vx1 ) * (c1o1 + drho)-cu_sq); + (D.f[dM00])[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[dP00])[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[d0M0])[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[d0P0])[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[d00M])[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[d00P])[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[dMM0])[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[dPP0])[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[dMP0])[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[dPM0])[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[dM0M])[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[dP0P])[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[dM0P])[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[dP0M])[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[d0MM])[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[d0PP])[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[d0MP])[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[d0PM])[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[dMMM])[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[dPPP])[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[dMMP])[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[dPPM])[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[dMPM])[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[dPMP])[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[dMPP])[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[dPMM])[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); + } + } +} +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +////////////////////////////////////////////////////////////////////////////// +__global__ void QDeviceCompThinWallsPartOne27( + real* DD, + int* k_Q, + real* QQ, + unsigned int numberOfBCnodes, + real om1, + unsigned int* neighborX, + unsigned int* neighborY, + unsigned int* neighborZ, + unsigned long long numberOfLBnodes, + bool isEvenTimestep) +{ + Distributions27 D; + if (isEvenTimestep == true) + { + D.f[dP00] = &DD[dP00 * numberOfLBnodes]; + D.f[dM00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00P] = &DD[d00P * numberOfLBnodes]; + D.f[d00M] = &DD[d00M * numberOfLBnodes]; + D.f[dPP0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dMM0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dP0P] = &DD[dP0P * numberOfLBnodes]; + D.f[dM0M] = &DD[dM0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dP0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dM0P * numberOfLBnodes]; + D.f[d0PP] = &DD[d0PP * numberOfLBnodes]; + D.f[d0MM] = &DD[d0MM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0PM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dPPP * numberOfLBnodes]; + D.f[dMMP] = &DD[dMMP * numberOfLBnodes]; + D.f[dPMP] = &DD[dPMP * numberOfLBnodes]; + D.f[dMPP] = &DD[dMPP * numberOfLBnodes]; + D.f[dPPM] = &DD[dPPM * numberOfLBnodes]; + D.f[dMMM] = &DD[dMMM * numberOfLBnodes]; + D.f[dPMM] = &DD[dPMM * numberOfLBnodes]; + D.f[dMPM] = &DD[dMPM * numberOfLBnodes]; + } + else + { + D.f[dM00] = &DD[dP00 * numberOfLBnodes]; + D.f[dP00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00M] = &DD[d00P * numberOfLBnodes]; + D.f[d00P] = &DD[d00M * numberOfLBnodes]; + D.f[dMM0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dPP0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dM0M] = &DD[dP0P * numberOfLBnodes]; + D.f[dP0P] = &DD[dM0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dP0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dM0P * numberOfLBnodes]; + D.f[d0MM] = &DD[d0PP * numberOfLBnodes]; + D.f[d0PP] = &DD[d0MM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0PM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dMMM * numberOfLBnodes]; + D.f[dMMP] = &DD[dPPM * numberOfLBnodes]; + D.f[dPMP] = &DD[dMPM * numberOfLBnodes]; + D.f[dMPP] = &DD[dPMM * numberOfLBnodes]; + D.f[dPPM] = &DD[dMMP * numberOfLBnodes]; + D.f[dMMM] = &DD[dPPP * numberOfLBnodes]; + D.f[dPMM] = &DD[dMPP * numberOfLBnodes]; + D.f[dMPM] = &DD[dPMP * numberOfLBnodes]; + } + //////////////////////////////////////////////////////////////////////////////// + const unsigned x = threadIdx.x; // Globaler x-Index + const unsigned y = blockIdx.x; // Globaler y-Index + const unsigned z = blockIdx.y; // Globaler z-Index + + const unsigned nx = blockDim.x; + const unsigned ny = gridDim.x; + + const unsigned k = nx*(ny*z + y) + x; + ////////////////////////////////////////////////////////////////////////// + + if (k < 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[dP00 * numberOfBCnodes]; + q_dirW = &QQ[dM00 * numberOfBCnodes]; + q_dirN = &QQ[d0P0 * numberOfBCnodes]; + q_dirS = &QQ[d0M0 * numberOfBCnodes]; + q_dirT = &QQ[d00P * numberOfBCnodes]; + q_dirB = &QQ[d00M * numberOfBCnodes]; + q_dirNE = &QQ[dPP0 * numberOfBCnodes]; + q_dirSW = &QQ[dMM0 * numberOfBCnodes]; + q_dirSE = &QQ[dPM0 * numberOfBCnodes]; + q_dirNW = &QQ[dMP0 * numberOfBCnodes]; + q_dirTE = &QQ[dP0P * numberOfBCnodes]; + q_dirBW = &QQ[dM0M * numberOfBCnodes]; + q_dirBE = &QQ[dP0M * numberOfBCnodes]; + q_dirTW = &QQ[dM0P * numberOfBCnodes]; + q_dirTN = &QQ[d0PP * numberOfBCnodes]; + q_dirBS = &QQ[d0MM * numberOfBCnodes]; + q_dirBN = &QQ[d0PM * numberOfBCnodes]; + q_dirTS = &QQ[d0MP * numberOfBCnodes]; + q_dirTNE = &QQ[dPPP * numberOfBCnodes]; + q_dirTSW = &QQ[dMMP * numberOfBCnodes]; + q_dirTSE = &QQ[dPMP * numberOfBCnodes]; + q_dirTNW = &QQ[dMPP * numberOfBCnodes]; + q_dirBNE = &QQ[dPPM * numberOfBCnodes]; + q_dirBSW = &QQ[dMMM * numberOfBCnodes]; + q_dirBSE = &QQ[dPMM * numberOfBCnodes]; + q_dirBNW = &QQ[dMPM * 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]; + 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 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[dP00])[ke]; + f_E = (D.f[dM00])[kw]; + f_S = (D.f[d0P0])[kn]; + f_N = (D.f[d0M0])[ks]; + f_B = (D.f[d00P])[kt]; + f_T = (D.f[d00M])[kb]; + f_SW = (D.f[dPP0])[kne]; + f_NE = (D.f[dMM0])[ksw]; + f_NW = (D.f[dPM0])[kse]; + f_SE = (D.f[dMP0])[knw]; + f_BW = (D.f[dP0P])[kte]; + f_TE = (D.f[dM0M])[kbw]; + f_TW = (D.f[dP0M])[kbe]; + f_BE = (D.f[dM0P])[ktw]; + f_BS = (D.f[d0PP])[ktn]; + f_TN = (D.f[d0MM])[kbs]; + f_TS = (D.f[d0PM])[kbn]; + f_BN = (D.f[d0MP])[kts]; + f_BSW = (D.f[dPPP])[ktne]; + f_BNE = (D.f[dMMP])[ktsw]; + f_BNW = (D.f[dPMP])[ktse]; + f_BSE = (D.f[dMPP])[ktnw]; + f_TSW = (D.f[dPPM])[kbne]; + f_TNE = (D.f[dMMM])[kbsw]; + f_TNW = (D.f[dPMM])[kbse]; + f_TSE = (D.f[dMPM])[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[d000])[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); + + + 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 cu_sq = c3o2*(vx1*vx1 + vx2*vx2 + vx3*vx3) * (c1o1 + drho); + //////////////////////////////////////////////////////////////////////////////// + + q = q_dirE[k]; + if (q >= c0o1 && q <= c1o1) + { + feq = c2o27* (drho + c9o2*(vx1)*(vx1) * (c1o1 + drho) - cu_sq); + (D.f[dM00])[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[dP00])[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[d0M0])[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[d0P0])[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[d00M])[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[d00P])[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[dMM0])[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[dPP0])[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[dMP0])[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[dPM0])[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[dM0M])[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[dP0P])[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[dM0P])[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[dP0M])[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[d0MM])[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[d0PP])[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[d0MP])[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[d0PM])[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[dMMM])[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[dPPP])[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[dMMP])[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[dPPM])[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[dMPM])[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[dPMP])[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[dMPP])[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[dPMM])[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); + } + } +} +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +////////////////////////////////////////////////////////////////////////////// +__global__ void QThinWallsPartTwo27( + real* DD, + int* k_Q, + real* QQ, + uint numberOfBCnodes, + uint* geom, + uint* neighborX, + uint* neighborY, + uint* neighborZ, + uint* neighborWSB, + unsigned long long 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 + + const unsigned nx = blockDim.x; + const unsigned ny = gridDim.x; + + const unsigned k = nx*(ny*z + y) + x; + ////////////////////////////////////////////////////////////////////////// + + if(k<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[dP00 * numberOfBCnodes]; + q_dirW = &QQ[dM00 * numberOfBCnodes]; + q_dirN = &QQ[d0P0 * numberOfBCnodes]; + q_dirS = &QQ[d0M0 * numberOfBCnodes]; + q_dirT = &QQ[d00P * numberOfBCnodes]; + q_dirB = &QQ[d00M * numberOfBCnodes]; + q_dirNE = &QQ[dPP0 * numberOfBCnodes]; + q_dirSW = &QQ[dMM0 * numberOfBCnodes]; + q_dirSE = &QQ[dPM0 * numberOfBCnodes]; + q_dirNW = &QQ[dMP0 * numberOfBCnodes]; + q_dirTE = &QQ[dP0P * numberOfBCnodes]; + q_dirBW = &QQ[dM0M * numberOfBCnodes]; + q_dirBE = &QQ[dP0M * numberOfBCnodes]; + q_dirTW = &QQ[dM0P * numberOfBCnodes]; + q_dirTN = &QQ[d0PP * numberOfBCnodes]; + q_dirBS = &QQ[d0MM * numberOfBCnodes]; + q_dirBN = &QQ[d0PM * numberOfBCnodes]; + q_dirTS = &QQ[d0MP * numberOfBCnodes]; + q_dirTNE = &QQ[dPPP * numberOfBCnodes]; + q_dirTSW = &QQ[dMMP * numberOfBCnodes]; + q_dirTSE = &QQ[dPMP * numberOfBCnodes]; + q_dirTNW = &QQ[dMPP * numberOfBCnodes]; + q_dirBNE = &QQ[dPPM * numberOfBCnodes]; + q_dirBSW = &QQ[dMMM * numberOfBCnodes]; + q_dirBSE = &QQ[dPMM * numberOfBCnodes]; + q_dirBNW = &QQ[dMPM * numberOfBCnodes]; + //////////////////////////////////////////////////////////////////////////////// + //index + uint KQK = k_Q[k]; + //uint kzero= KQK; + uint ke = KQK; + uint kw = neighborX[KQK]; + uint kn = KQK; + uint ks = neighborY[KQK]; + uint kt = KQK; + uint kb = neighborZ[KQK]; + uint ksw = neighborY[kw]; + uint kne = KQK; + uint kse = ks; + uint knw = kw; + uint kbw = neighborZ[kw]; + uint kte = KQK; + uint kbe = kb; + uint ktw = kw; + uint kbs = neighborZ[ks]; + uint ktn = KQK; + 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 = KQK; + uint kbsw = neighborZ[ksw]; + //////////////////////////////////////////////////////////////////////////////// + //anti ET intermediate steps + uint kmmm = neighborWSB[KQK]; // -1 -1 -1 + uint k0mm = neighborX[kmmm]; // 0 -1 -1 + uint km0m = neighborY[kmmm]; // -1 0 -1 + uint kmm0 = neighborZ[kmmm]; // -1 -1 0 + uint k0m0 = neighborX[kmm0]; // 0 -1 0 + uint km00 = neighborY[kmm0]; // -1 0 0 + ///////////////////////////////////////////////// + //final indices for anti ET + uint kpmm = neighborX[k0mm]; // 1 -1 -1 + uint kmpm = neighborY[km0m]; // -1 1 -1 + uint kmmp = neighborZ[kmm0]; // -1 -1 1 + uint kmp0 = neighborY[km00]; // -1 1 0 + uint km0p = neighborZ[km00]; // -1 0 1 + uint k0mp = neighborZ[k0m0]; // 0 -1 1 + //////////////////////////////////////////////////////////////////////////////// + Distributions27 D, DN; + if (isEvenTimestep == true) + { + D.f[dP00] = &DD[dP00 * numberOfLBnodes]; + D.f[dM00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00P] = &DD[d00P * numberOfLBnodes]; + D.f[d00M] = &DD[d00M * numberOfLBnodes]; + D.f[dPP0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dMM0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dP0P] = &DD[dP0P * numberOfLBnodes]; + D.f[dM0M] = &DD[dM0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dP0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dM0P * numberOfLBnodes]; + D.f[d0PP] = &DD[d0PP * numberOfLBnodes]; + D.f[d0MM] = &DD[d0MM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0PM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dPPP * numberOfLBnodes]; + D.f[dMMP] = &DD[dMMP * numberOfLBnodes]; + D.f[dPMP] = &DD[dPMP * numberOfLBnodes]; + D.f[dMPP] = &DD[dMPP * numberOfLBnodes]; + D.f[dPPM] = &DD[dPPM * numberOfLBnodes]; + D.f[dMMM] = &DD[dMMM * numberOfLBnodes]; + D.f[dPMM] = &DD[dPMM * numberOfLBnodes]; + D.f[dMPM] = &DD[dMPM * numberOfLBnodes]; + } + else + { + D.f[dM00] = &DD[dP00 * numberOfLBnodes]; + D.f[dP00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00M] = &DD[d00P * numberOfLBnodes]; + D.f[d00P] = &DD[d00M * numberOfLBnodes]; + D.f[dMM0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dPP0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dM0M] = &DD[dP0P * numberOfLBnodes]; + D.f[dP0P] = &DD[dM0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dP0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dM0P * numberOfLBnodes]; + D.f[d0MM] = &DD[d0PP * numberOfLBnodes]; + D.f[d0PP] = &DD[d0MM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0PM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dMMM * numberOfLBnodes]; + D.f[dMMP] = &DD[dPPM * numberOfLBnodes]; + D.f[dPMP] = &DD[dMPM * numberOfLBnodes]; + D.f[dMPP] = &DD[dPMM * numberOfLBnodes]; + D.f[dPPM] = &DD[dMMP * numberOfLBnodes]; + D.f[dMMM] = &DD[dPPP * numberOfLBnodes]; + D.f[dPMM] = &DD[dMPP * numberOfLBnodes]; + D.f[dMPM] = &DD[dPMP * numberOfLBnodes]; + } + if (isEvenTimestep==false) + { + DN.f[dP00] = &DD[dP00 * numberOfLBnodes]; + DN.f[dM00] = &DD[dM00 * numberOfLBnodes]; + DN.f[d0P0] = &DD[d0P0 * numberOfLBnodes]; + DN.f[d0M0] = &DD[d0M0 * numberOfLBnodes]; + DN.f[d00P] = &DD[d00P * numberOfLBnodes]; + DN.f[d00M] = &DD[d00M * numberOfLBnodes]; + DN.f[dPP0] = &DD[dPP0 * numberOfLBnodes]; + DN.f[dMM0] = &DD[dMM0 * numberOfLBnodes]; + DN.f[dPM0] = &DD[dPM0 * numberOfLBnodes]; + DN.f[dMP0] = &DD[dMP0 * numberOfLBnodes]; + DN.f[dP0P] = &DD[dP0P * numberOfLBnodes]; + DN.f[dM0M] = &DD[dM0M * numberOfLBnodes]; + DN.f[dP0M] = &DD[dP0M * numberOfLBnodes]; + DN.f[dM0P] = &DD[dM0P * numberOfLBnodes]; + DN.f[d0PP] = &DD[d0PP * numberOfLBnodes]; + DN.f[d0MM] = &DD[d0MM * numberOfLBnodes]; + DN.f[d0PM] = &DD[d0PM * numberOfLBnodes]; + DN.f[d0MP] = &DD[d0MP * numberOfLBnodes]; + DN.f[d000] = &DD[d000 * numberOfLBnodes]; + DN.f[dPPP] = &DD[dPPP * numberOfLBnodes]; + DN.f[dMMP] = &DD[dMMP * numberOfLBnodes]; + DN.f[dPMP] = &DD[dPMP * numberOfLBnodes]; + DN.f[dMPP] = &DD[dMPP * numberOfLBnodes]; + DN.f[dPPM] = &DD[dPPM * numberOfLBnodes]; + DN.f[dMMM] = &DD[dMMM * numberOfLBnodes]; + DN.f[dPMM] = &DD[dPMM * numberOfLBnodes]; + DN.f[dMPM] = &DD[dMPM * numberOfLBnodes]; + } + else + { + DN.f[dM00] = &DD[dP00 * numberOfLBnodes]; + DN.f[dP00] = &DD[dM00 * numberOfLBnodes]; + DN.f[d0M0] = &DD[d0P0 * numberOfLBnodes]; + DN.f[d0P0] = &DD[d0M0 * numberOfLBnodes]; + DN.f[d00M] = &DD[d00P * numberOfLBnodes]; + DN.f[d00P] = &DD[d00M * numberOfLBnodes]; + DN.f[dMM0] = &DD[dPP0 * numberOfLBnodes]; + DN.f[dPP0] = &DD[dMM0 * numberOfLBnodes]; + DN.f[dMP0] = &DD[dPM0 * numberOfLBnodes]; + DN.f[dPM0] = &DD[dMP0 * numberOfLBnodes]; + DN.f[dM0M] = &DD[dP0P * numberOfLBnodes]; + DN.f[dP0P] = &DD[dM0M * numberOfLBnodes]; + DN.f[dM0P] = &DD[dP0M * numberOfLBnodes]; + DN.f[dP0M] = &DD[dM0P * numberOfLBnodes]; + DN.f[d0MM] = &DD[d0PP * numberOfLBnodes]; + DN.f[d0PP] = &DD[d0MM * numberOfLBnodes]; + DN.f[d0MP] = &DD[d0PM * numberOfLBnodes]; + DN.f[d0PM] = &DD[d0MP * numberOfLBnodes]; + DN.f[d000] = &DD[d000 * numberOfLBnodes]; + DN.f[dPPP] = &DD[dMMM * numberOfLBnodes]; + DN.f[dMMP] = &DD[dPPM * numberOfLBnodes]; + DN.f[dPMP] = &DD[dMPM * numberOfLBnodes]; + DN.f[dMPP] = &DD[dPMM * numberOfLBnodes]; + DN.f[dPPM] = &DD[dMMP * numberOfLBnodes]; + DN.f[dMMM] = &DD[dPPP * numberOfLBnodes]; + DN.f[dPMM] = &DD[dMPP * numberOfLBnodes]; + DN.f[dMPM] = &DD[dPMP * numberOfLBnodes]; + } + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //directions allways exchange + //(-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) + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //directions exchange if solid neighbor + //( 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[dM00])[kw ]; (DN.f[dM00])[kw ]=(D.f[dM00])[kw ]; (D.f[dM00])[kw ]=tmp;}} + q = q_dirW[k]; if (q>=c0o1 && q<=c1o1){ {tmp = (DN.f[dP00])[ke ]; (DN.f[dP00])[ke ]=(D.f[dP00])[ke ]; (D.f[dP00])[ke ]=tmp;}} + q = q_dirN[k]; if (q>=c0o1 && q<=c1o1){ if (geom[ks ] < GEO_FLUID){tmp = (DN.f[d0M0])[ks ]; (DN.f[d0M0])[ks ]=(D.f[d0M0])[ks ]; (D.f[d0M0])[ks ]=tmp;}} + q = q_dirS[k]; if (q>=c0o1 && q<=c1o1){ {tmp = (DN.f[d0P0])[kn ]; (DN.f[d0P0])[kn ]=(D.f[d0P0])[kn ]; (D.f[d0P0])[kn ]=tmp;}} + q = q_dirT[k]; if (q>=c0o1 && q<=c1o1){ if (geom[kb ] < GEO_FLUID){tmp = (DN.f[d00M])[kb ]; (DN.f[d00M])[kb ]=(D.f[d00M])[kb ]; (D.f[d00M])[kb ]=tmp;}} + q = q_dirB[k]; if (q>=c0o1 && q<=c1o1){ {tmp = (DN.f[d00P])[kt ]; (DN.f[d00P])[kt ]=(D.f[d00P])[kt ]; (D.f[d00P])[kt ]=tmp;}} + q = q_dirNE[k]; if (q>=c0o1 && q<=c1o1){ if (geom[ksw ] < GEO_FLUID){tmp = (DN.f[dMM0])[ksw ]; (DN.f[dMM0])[ksw ]=(D.f[dMM0])[ksw ]; (D.f[dMM0])[ksw ]=tmp;}} + q = q_dirSW[k]; if (q>=c0o1 && q<=c1o1){ {tmp = (DN.f[dPP0])[kne ]; (DN.f[dPP0])[kne ]=(D.f[dPP0])[kne ]; (D.f[dPP0])[kne ]=tmp;}} + q = q_dirSE[k]; if (q>=c0o1 && q<=c1o1){ {tmp = (DN.f[dMP0])[knw ]; (DN.f[dMP0])[knw ]=(D.f[dMP0])[knw ]; (D.f[dMP0])[knw ]=tmp;}} + q = q_dirNW[k]; if (q>=c0o1 && q<=c1o1){ if (geom[kmp0] < GEO_FLUID){tmp = (DN.f[dPM0])[kse ]; (DN.f[dPM0])[kse ]=(D.f[dPM0])[kse ]; (D.f[dPM0])[kse ]=tmp;}} + q = q_dirTE[k]; if (q>=c0o1 && q<=c1o1){ if (geom[kbw ] < GEO_FLUID){tmp = (DN.f[dM0M])[kbw ]; (DN.f[dM0M])[kbw ]=(D.f[dM0M])[kbw ]; (D.f[dM0M])[kbw ]=tmp;}} + q = q_dirBW[k]; if (q>=c0o1 && q<=c1o1){ {tmp = (DN.f[dP0P])[kte ]; (DN.f[dP0P])[kte ]=(D.f[dP0P])[kte ]; (D.f[dP0P])[kte ]=tmp;}} + q = q_dirBE[k]; if (q>=c0o1 && q<=c1o1){ {tmp = (DN.f[dM0P])[ktw ]; (DN.f[dM0P])[ktw ]=(D.f[dM0P])[ktw ]; (D.f[dM0P])[ktw ]=tmp;}} + q = q_dirTW[k]; if (q>=c0o1 && q<=c1o1){ if (geom[km0p] < GEO_FLUID){tmp = (DN.f[dP0M])[kbe ]; (DN.f[dP0M])[kbe ]=(D.f[dP0M])[kbe ]; (D.f[dP0M])[kbe ]=tmp;}} + q = q_dirTN[k]; if (q>=c0o1 && q<=c1o1){ if (geom[kbs ] < GEO_FLUID){tmp = (DN.f[d0MM])[kbs ]; (DN.f[d0MM])[kbs ]=(D.f[d0MM])[kbs ]; (D.f[d0MM])[kbs ]=tmp;}} + q = q_dirBS[k]; if (q>=c0o1 && q<=c1o1){ {tmp = (DN.f[d0PP])[ktn ]; (DN.f[d0PP])[ktn ]=(D.f[d0PP])[ktn ]; (D.f[d0PP])[ktn ]=tmp;}} + q = q_dirBN[k]; if (q>=c0o1 && q<=c1o1){ {tmp = (DN.f[d0MP])[kts ]; (DN.f[d0MP])[kts ]=(D.f[d0MP])[kts ]; (D.f[d0MP])[kts ]=tmp;}} + q = q_dirTS[k]; if (q>=c0o1 && q<=c1o1){ if (geom[k0mp] < GEO_FLUID){tmp = (DN.f[d0PM])[kbn ]; (DN.f[d0PM])[kbn ]=(D.f[d0PM])[kbn ]; (D.f[d0PM])[kbn ]=tmp;}} + q = q_dirTNE[k]; if (q>=c0o1 && q<=c1o1){ if (geom[kbsw] < GEO_FLUID){tmp = (DN.f[dMMM])[kbsw]; (DN.f[dMMM])[kbsw]=(D.f[dMMM])[kbsw]; (D.f[dMMM])[kbsw]=tmp;}} + q = q_dirBSW[k]; if (q>=c0o1 && q<=c1o1){ {tmp = (DN.f[dPPP])[ktne]; (DN.f[dPPP])[ktne]=(D.f[dPPP])[ktne]; (D.f[dPPP])[ktne]=tmp;}} + q = q_dirBNE[k]; if (q>=c0o1 && q<=c1o1){ {tmp = (DN.f[dMMP])[ktsw]; (DN.f[dMMP])[ktsw]=(D.f[dMMP])[ktsw]; (D.f[dMMP])[ktsw]=tmp;}} + q = q_dirTSW[k]; if (q>=c0o1 && q<=c1o1){ if (geom[kmmp] < GEO_FLUID){tmp = (DN.f[dPPM])[kbne]; (DN.f[dPPM])[kbne]=(D.f[dPPM])[kbne]; (D.f[dPPM])[kbne]=tmp;}} + q = q_dirTSE[k]; if (q>=c0o1 && q<=c1o1){ {tmp = (DN.f[dMPM])[kbnw]; (DN.f[dMPM])[kbnw]=(D.f[dMPM])[kbnw]; (D.f[dMPM])[kbnw]=tmp;}} + q = q_dirBNW[k]; if (q>=c0o1 && q<=c1o1){ if (geom[kmpm] < GEO_FLUID){tmp = (DN.f[dPMP])[ktse]; (DN.f[dPMP])[ktse]=(D.f[dPMP])[ktse]; (D.f[dPMP])[ktse]=tmp;}} + q = q_dirBSE[k]; if (q>=c0o1 && q<=c1o1){ if (geom[kpmm] < GEO_FLUID){tmp = (DN.f[dMPP])[ktnw]; (DN.f[dMPP])[ktnw]=(D.f[dMPP])[ktnw]; (D.f[dMPP])[ktnw]=tmp;}} + q = q_dirTNW[k]; if (q>=c0o1 && q<=c1o1){ {tmp = (DN.f[dPMM])[kbse]; (DN.f[dPMM])[kbse]=(D.f[dPMM])[kbse]; (D.f[dPMM])[kbse]=tmp;}} + } +} +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/src/gpu/VirtualFluids_GPU/GPU/TurbulenceIntensity.cu b/src/gpu/core/GPU/TurbulenceIntensity.cu similarity index 97% rename from src/gpu/VirtualFluids_GPU/GPU/TurbulenceIntensity.cu rename to src/gpu/core/GPU/TurbulenceIntensity.cu index 46911fa39f61e455aa46af2645d37f1ef3786f3f..15f2cb2806fe096391a2f57a39c964f3ffd25c1a 100644 --- a/src/gpu/VirtualFluids_GPU/GPU/TurbulenceIntensity.cu +++ b/src/gpu/core/GPU/TurbulenceIntensity.cu @@ -54,7 +54,7 @@ __global__ void CalcTurbulenceIntensity( vf::gpu::ListIndices listIndices(nodeIndex, neighborX, neighborY, neighborZ); real distribution[27]; - vf::gpu::read(distribution, dist, listIndices); + vf::gpu::getPreCollisionDistribution(distribution, dist, listIndices); // analogue to LBCalcMacCompSP27 real rho = vf::lbm::getDensity(distribution); diff --git a/src/gpu/VirtualFluids_GPU/GPU/TurbulentViscosityKernels.cu b/src/gpu/core/GPU/TurbulentViscosityKernels.cu similarity index 100% rename from src/gpu/VirtualFluids_GPU/GPU/TurbulentViscosityKernels.cu rename to src/gpu/core/GPU/TurbulentViscosityKernels.cu diff --git a/src/gpu/VirtualFluids_GPU/GPU/TurbulentViscosityKernels.h b/src/gpu/core/GPU/TurbulentViscosityKernels.h similarity index 98% rename from src/gpu/VirtualFluids_GPU/GPU/TurbulentViscosityKernels.h rename to src/gpu/core/GPU/TurbulentViscosityKernels.h index 74d0e69a181e94c6d34e9207f203fb852d9d2fd1..1f83e5878fc4da2442f40597c8de9eba631fce18 100644 --- a/src/gpu/VirtualFluids_GPU/GPU/TurbulentViscosityKernels.h +++ b/src/gpu/core/GPU/TurbulentViscosityKernels.h @@ -38,7 +38,7 @@ #include <cuda_runtime.h> #include "LBM/LB.h" -#include "DataTypes.h" +#include <basics/DataTypes.h> #include <basics/constants/NumericConstants.h> using namespace vf::basics::constant; diff --git a/src/gpu/core/GPU/VelocityBCs27.cu b/src/gpu/core/GPU/VelocityBCs27.cu new file mode 100644 index 0000000000000000000000000000000000000000..f7e0a574578afb515b3a5665cfeaafe7bc315661 --- /dev/null +++ b/src/gpu/core/GPU/VelocityBCs27.cu @@ -0,0 +1,5844 @@ +//======================================================================================= +// ____ ____ __ ______ __________ __ __ __ __ +// \ \ | | | | | _ \ |___ ___| | | | | / \ | | +// \ \ | | | | | |_) | | | | | | | / \ | | +// \ \ | | | | | _ / | | | | | | / /\ \ | | +// \ \ | | | | | | \ \ | | | \__/ | / ____ \ | |____ +// \ \ | | |__| |__| \__\ |__| \________/ /__/ \__\ |_______| +// \ \ | | ________________________________________________________________ +// \ \ | | | ______________________________________________________________| +// \ \| | | | __ __ __ __ ______ _______ +// \ | | |_____ | | | | | | | | | _ \ / _____) +// \ | | _____| | | | | | | | | | | \ \ \_______ +// \ | | | | |_____ | \_/ | | | | |_/ / _____ | +// \ _____| |__| |________| \_______/ |__| |______/ (_______/ +// +// 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 VelocityBCs27.cu +//! \ingroup GPU +//! \author Martin Schoenherr, Anna Wellmann +//====================================================================================== +#include "LBM/LB.h" +#include "lbm/constants/D3Q27.h" +#include "basics/constants/NumericConstants.h" +#include "LBM/GPUHelperFunctions/KernelUtilities.h" + +using namespace vf::basics::constant; +using namespace vf::lbm::dir; +using namespace vf::gpu; + +////////////////////////////////////////////////////////////////////////////// +__global__ void QVelDeviceCompPlusSlip27( + real* vx, + real* vy, + real* vz, + real* DD, + int* k_Q, + real* QQ, + unsigned int numberOfBCnodes, + real om1, + unsigned int* neighborX, + unsigned int* neighborY, + unsigned int* neighborZ, + unsigned long long numberOfLBnodes, + bool isEvenTimestep) +{ + Distributions27 D; + if (isEvenTimestep==true) + { + D.f[dP00] = &DD[dP00 * numberOfLBnodes]; + D.f[dM00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00P] = &DD[d00P * numberOfLBnodes]; + D.f[d00M] = &DD[d00M * numberOfLBnodes]; + D.f[dPP0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dMM0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dP0P] = &DD[dP0P * numberOfLBnodes]; + D.f[dM0M] = &DD[dM0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dP0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dM0P * numberOfLBnodes]; + D.f[d0PP] = &DD[d0PP * numberOfLBnodes]; + D.f[d0MM] = &DD[d0MM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0PM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dPPP * numberOfLBnodes]; + D.f[dMMP] = &DD[dMMP * numberOfLBnodes]; + D.f[dPMP] = &DD[dPMP * numberOfLBnodes]; + D.f[dMPP] = &DD[dMPP * numberOfLBnodes]; + D.f[dPPM] = &DD[dPPM * numberOfLBnodes]; + D.f[dMMM] = &DD[dMMM * numberOfLBnodes]; + D.f[dPMM] = &DD[dPMM * numberOfLBnodes]; + D.f[dMPM] = &DD[dMPM * numberOfLBnodes]; + } + else + { + D.f[dM00] = &DD[dP00 * numberOfLBnodes]; + D.f[dP00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00M] = &DD[d00P * numberOfLBnodes]; + D.f[d00P] = &DD[d00M * numberOfLBnodes]; + D.f[dMM0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dPP0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dM0M] = &DD[dP0P * numberOfLBnodes]; + D.f[dP0P] = &DD[dM0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dP0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dM0P * numberOfLBnodes]; + D.f[d0MM] = &DD[d0PP * numberOfLBnodes]; + D.f[d0PP] = &DD[d0MM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0PM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dMMM * numberOfLBnodes]; + D.f[dMMP] = &DD[dPPM * numberOfLBnodes]; + D.f[dPMP] = &DD[dMPM * numberOfLBnodes]; + D.f[dMPP] = &DD[dPMM * numberOfLBnodes]; + D.f[dPPM] = &DD[dMMP * numberOfLBnodes]; + D.f[dMMM] = &DD[dPPP * numberOfLBnodes]; + D.f[dPMM] = &DD[dMPP * numberOfLBnodes]; + D.f[dMPM] = &DD[dPMP * numberOfLBnodes]; + } + //////////////////////////////////////////////////////////////////////////////// + const unsigned x = threadIdx.x; // Globaler x-Index + const unsigned y = blockIdx.x; // Globaler y-Index + const unsigned z = blockIdx.y; // Globaler z-Index + + const unsigned nx = blockDim.x; + const unsigned ny = gridDim.x; + + const unsigned k = nx*(ny*z + y) + x; + ////////////////////////////////////////////////////////////////////////// + + if (k < numberOfBCnodes) + { + //////////////////////////////////////////////////////////////////////////////// + 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) + //////////////////////////////////////////////////////////////////////////////// + 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[dP00 * numberOfBCnodes]; + q_dirW = &QQ[dM00 * numberOfBCnodes]; + q_dirN = &QQ[d0P0 * numberOfBCnodes]; + q_dirS = &QQ[d0M0 * numberOfBCnodes]; + q_dirT = &QQ[d00P * numberOfBCnodes]; + q_dirB = &QQ[d00M * numberOfBCnodes]; + q_dirNE = &QQ[dPP0 * numberOfBCnodes]; + q_dirSW = &QQ[dMM0 * numberOfBCnodes]; + q_dirSE = &QQ[dPM0 * numberOfBCnodes]; + q_dirNW = &QQ[dMP0 * numberOfBCnodes]; + q_dirTE = &QQ[dP0P * numberOfBCnodes]; + q_dirBW = &QQ[dM0M * numberOfBCnodes]; + q_dirBE = &QQ[dP0M * numberOfBCnodes]; + q_dirTW = &QQ[dM0P * numberOfBCnodes]; + q_dirTN = &QQ[d0PP * numberOfBCnodes]; + q_dirBS = &QQ[d0MM * numberOfBCnodes]; + q_dirBN = &QQ[d0PM * numberOfBCnodes]; + q_dirTS = &QQ[d0MP * numberOfBCnodes]; + q_dirTNE = &QQ[dPPP * numberOfBCnodes]; + q_dirTSW = &QQ[dMMP * numberOfBCnodes]; + q_dirTSE = &QQ[dPMP * numberOfBCnodes]; + q_dirTNW = &QQ[dMPP * numberOfBCnodes]; + q_dirBNE = &QQ[dPPM * numberOfBCnodes]; + q_dirBSW = &QQ[dMMM * numberOfBCnodes]; + q_dirBSE = &QQ[dPMM * numberOfBCnodes]; + q_dirBNW = &QQ[dMPM * 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]; + 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 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[dP00])[ke]; + f_E = (D.f[dM00])[kw]; + f_S = (D.f[d0P0])[kn]; + f_N = (D.f[d0M0])[ks]; + f_B = (D.f[d00P])[kt]; + f_T = (D.f[d00M])[kb]; + f_SW = (D.f[dPP0])[kne]; + f_NE = (D.f[dMM0])[ksw]; + f_NW = (D.f[dPM0])[kse]; + f_SE = (D.f[dMP0])[knw]; + f_BW = (D.f[dP0P])[kte]; + f_TE = (D.f[dM0M])[kbw]; + f_TW = (D.f[dP0M])[kbe]; + f_BE = (D.f[dM0P])[ktw]; + f_BS = (D.f[d0PP])[ktn]; + f_TN = (D.f[d0MM])[kbs]; + f_TS = (D.f[d0PM])[kbn]; + f_BN = (D.f[d0MP])[kts]; + f_BSW = (D.f[dPPP])[ktne]; + f_BNE = (D.f[dMMP])[ktsw]; + f_BNW = (D.f[dPMP])[ktse]; + f_BSE = (D.f[dMPP])[ktnw]; + f_TSW = (D.f[dPPM])[kbne]; + f_TNE = (D.f[dMMM])[kbsw]; + f_TNW = (D.f[dPMM])[kbse]; + f_TSE = (D.f[dMPM])[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[d000])[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); + + + 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 cu_sq = c3o2*(vx1*vx1 + vx2*vx2 + vx3*vx3) * (c1o1 + drho); + + ////////////////////////////////////////////////////////////////////////// + if (isEvenTimestep == false) + { + D.f[dP00] = &DD[dP00 * numberOfLBnodes]; + D.f[dM00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00P] = &DD[d00P * numberOfLBnodes]; + D.f[d00M] = &DD[d00M * numberOfLBnodes]; + D.f[dPP0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dMM0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dP0P] = &DD[dP0P * numberOfLBnodes]; + D.f[dM0M] = &DD[dM0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dP0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dM0P * numberOfLBnodes]; + D.f[d0PP] = &DD[d0PP * numberOfLBnodes]; + D.f[d0MM] = &DD[d0MM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0PM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dPPP * numberOfLBnodes]; + D.f[dMMP] = &DD[dMMP * numberOfLBnodes]; + D.f[dPMP] = &DD[dPMP * numberOfLBnodes]; + D.f[dMPP] = &DD[dMPP * numberOfLBnodes]; + D.f[dPPM] = &DD[dPPM * numberOfLBnodes]; + D.f[dMMM] = &DD[dMMM * numberOfLBnodes]; + D.f[dPMM] = &DD[dPMM * numberOfLBnodes]; + D.f[dMPM] = &DD[dMPM * numberOfLBnodes]; + } + else + { + D.f[dM00] = &DD[dP00 * numberOfLBnodes]; + D.f[dP00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00M] = &DD[d00P * numberOfLBnodes]; + D.f[d00P] = &DD[d00M * numberOfLBnodes]; + D.f[dMM0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dPP0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dM0M] = &DD[dP0P * numberOfLBnodes]; + D.f[dP0P] = &DD[dM0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dP0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dM0P * numberOfLBnodes]; + D.f[d0MM] = &DD[d0PP * numberOfLBnodes]; + D.f[d0PP] = &DD[d0MM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0PM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dMMM * numberOfLBnodes]; + D.f[dMMP] = &DD[dPPM * numberOfLBnodes]; + D.f[dPMP] = &DD[dMPM * numberOfLBnodes]; + D.f[dMPP] = &DD[dPMM * numberOfLBnodes]; + D.f[dPPM] = &DD[dMMP * numberOfLBnodes]; + D.f[dMMM] = &DD[dPPP * numberOfLBnodes]; + D.f[dPMM] = &DD[dMPP * numberOfLBnodes]; + D.f[dMPM] = &DD[dPMP * numberOfLBnodes]; + } + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //Test + //(D.f[d000])[k]=c1o10; + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + //ToDo anders Klammern + + /////To Slip Or Not To Slip? + // We assume slip BC if |vec(V_BC)|=1. To avoid problems we take V_BC*V_BC>0.99 (c99o100) + if (VeloX*VeloX + VeloY*VeloY + VeloZ*VeloZ > c99o100) + { + // vt=v-(n \dot v) *n + // n=(VeloX,VeloY,VeloZ) a misuse of the velocity variable! + real normalV = VeloX*vx1 + VeloY*vx2 + VeloZ*vx3; + vx1 = vx1 - normalV*VeloX; + vx2 = vx2 - normalV*VeloY; + vx3 = vx3 - normalV*VeloZ; + } + //////////////// + + q = q_dirE[k]; + if (q>=c0o1 && q<=c1o1) + { + feq=c2o27* (drho/*+three*( vx1 )*/+c9o2*( vx1 )*( vx1 ) * (c1o1 + drho)-cu_sq); + (D.f[dM00])[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[dM00])[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[dP00])[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[dP00])[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[d0M0])[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[d0M0])[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[d0P0])[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[d0P0])[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[d00M])[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[d00M])[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[d00P])[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[d00P])[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[dMM0])[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[dMM0])[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[dPP0])[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[dPP0])[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[dMP0])[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[dMP0])[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[dPM0])[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[dPM0])[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[dM0M])[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[dM0M])[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[dP0P])[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[dP0P])[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[dM0P])[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[dM0P])[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[dP0M])[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[dP0M])[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[d0MM])[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[d0MM])[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[d0PP])[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[d0PP])[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[d0MP])[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[d0MP])[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[d0PM])[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[d0PM])[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[dMMM])[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[dMMM])[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[dPPP])[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[dPPP])[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[dMMP])[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[dMMP])[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[dPPM])[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[dPPM])[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[dMPM])[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[dMPM])[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[dPMP])[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[dPMP])[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[dMPP])[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[dMPP])[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[dPMM])[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[dPMM])[kbse]=zero; + } + } +} +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +__global__ void QVeloDeviceEQ27( + real* VeloX, + real* VeloY, + real* VeloZ, + real* DD, + int* k_Q, + int numberOfBCnodes, + real om1, + unsigned int* neighborX, + unsigned int* neighborY, + unsigned int* neighborZ, + unsigned long long numberOfLBnodes, + bool isEvenTimestep) +{ + //////////////////////////////////////////////////////////////////////////////// + const unsigned x = threadIdx.x; // Globaler x-Index + const unsigned y = blockIdx.x; // Globaler y-Index + const unsigned z = blockIdx.y; // Globaler z-Index + + const unsigned nx = blockDim.x; + const unsigned ny = gridDim.x; + + const unsigned k = nx*(ny*z + y) + x; + ////////////////////////////////////////////////////////////////////////// + + if(k<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]; + 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]; + //////////////////////////////////////////////////////////////////////////////// + Distributions27 D; + if (isEvenTimestep==true) + { + D.f[dP00] = &DD[dP00 * numberOfLBnodes]; + D.f[dM00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00P] = &DD[d00P * numberOfLBnodes]; + D.f[d00M] = &DD[d00M * numberOfLBnodes]; + D.f[dPP0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dMM0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dP0P] = &DD[dP0P * numberOfLBnodes]; + D.f[dM0M] = &DD[dM0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dP0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dM0P * numberOfLBnodes]; + D.f[d0PP] = &DD[d0PP * numberOfLBnodes]; + D.f[d0MM] = &DD[d0MM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0PM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dPPP * numberOfLBnodes]; + D.f[dMMP] = &DD[dMMP * numberOfLBnodes]; + D.f[dPMP] = &DD[dPMP * numberOfLBnodes]; + D.f[dMPP] = &DD[dMPP * numberOfLBnodes]; + D.f[dPPM] = &DD[dPPM * numberOfLBnodes]; + D.f[dMMM] = &DD[dMMM * numberOfLBnodes]; + D.f[dPMM] = &DD[dPMM * numberOfLBnodes]; + D.f[dMPM] = &DD[dMPM * numberOfLBnodes]; + } + else + { + D.f[dM00] = &DD[dP00 * numberOfLBnodes]; + D.f[dP00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00M] = &DD[d00P * numberOfLBnodes]; + D.f[d00P] = &DD[d00M * numberOfLBnodes]; + D.f[dMM0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dPP0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dM0M] = &DD[dP0P * numberOfLBnodes]; + D.f[dP0P] = &DD[dM0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dP0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dM0P * numberOfLBnodes]; + D.f[d0MM] = &DD[d0PP * numberOfLBnodes]; + D.f[d0PP] = &DD[d0MM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0PM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dMMM * numberOfLBnodes]; + D.f[dMMP] = &DD[dPPM * numberOfLBnodes]; + D.f[dPMP] = &DD[dMPM * numberOfLBnodes]; + D.f[dMPP] = &DD[dPMM * numberOfLBnodes]; + D.f[dPPM] = &DD[dMMP * numberOfLBnodes]; + D.f[dMMM] = &DD[dPPP * numberOfLBnodes]; + D.f[dPMM] = &DD[dMPP * numberOfLBnodes]; + D.f[dMPM] = &DD[dPMP * numberOfLBnodes]; + } + + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // based on BGK Plus Comp + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + real mfcbb = (D.f[dP00])[ke ]; + real mfabb = (D.f[dM00])[kw ]; + real mfbcb = (D.f[d0P0])[kn ]; + real mfbab = (D.f[d0M0])[ks ]; + real mfbbc = (D.f[d00P])[kt ]; + real mfbba = (D.f[d00M])[kb ]; + real mfccb = (D.f[dPP0])[kne ]; + real mfaab = (D.f[dMM0])[ksw ]; + real mfcab = (D.f[dPM0])[kse ]; + real mfacb = (D.f[dMP0])[knw ]; + real mfcbc = (D.f[dP0P])[kte ]; + real mfaba = (D.f[dM0M])[kbw ]; + real mfcba = (D.f[dP0M])[kbe ]; + real mfabc = (D.f[dM0P])[ktw ]; + real mfbcc = (D.f[d0PP])[ktn ]; + real mfbaa = (D.f[d0MM])[kbs ]; + real mfbca = (D.f[d0PM])[kbn ]; + real mfbac = (D.f[d0MP])[kts ]; + real mfbbb = (D.f[d000])[kzero]; + real mfccc = (D.f[dPPP])[ktne ]; + real mfaac = (D.f[dMMP])[ktsw ]; + real mfcac = (D.f[dPMP])[ktse ]; + real mfacc = (D.f[dMPP])[ktnw ]; + real mfcca = (D.f[dPPM])[kbne ]; + real mfaaa = (D.f[dMMM])[kbsw ]; + real mfcaa = (D.f[dPMM])[kbse ]; + real mfaca = (D.f[dMPM])[kbnw ]; + //////////////////////////////////////////////////////////////////////////////////// + real rho = (mfccc+mfaaa + mfaca+mfcac + mfacc+mfcaa + mfaac+mfcca + + mfbac+mfbca + mfbaa+mfbcc + mfabc+mfcba + mfaba+mfcbc + mfacb+mfcab + mfaab+mfccb + + mfabb+mfcbb + mfbab+mfbcb + mfbba+mfbbc + mfbbb + c1o1);//!!!!Achtung + one + //////////////////////////////////////////////////////////////////////////////////// + real vvx = ((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfcaa-mfacc) + (mfcca-mfaac))) + + (((mfcba-mfabc) + (mfcbc-mfaba)) + ((mfcab-mfacb) + (mfccb-mfaab))) + + (mfcbb-mfabb)) / rho; + real vvy =((((mfccc-mfaaa) + (mfaca-mfcac)) + ((mfacc-mfcaa) + (mfcca-mfaac))) + + (((mfbca-mfbac) + (mfbcc-mfbaa)) + ((mfacb-mfcab) + (mfccb-mfaab))) + + (mfbcb-mfbab)) / rho; + real vvz =((((mfccc-mfaaa) + (mfcac-mfaca)) + ((mfacc-mfcaa) + (mfaac-mfcca))) + + (((mfbac-mfbca) + (mfbcc-mfbaa)) + ((mfabc-mfcba) + (mfcbc-mfaba))) + + (mfbbc-mfbba)) / rho; + //////////////////////////////////////////////////////////////////////////////////// + if(VeloX[k]!=c0o1) vvx = VeloX[k]; + if(VeloY[k]!=c0o1) vvy = VeloY[k]; + if(VeloZ[k]!=c0o1) vvz = VeloZ[k]; + //////////////////////////////////////////////////////////////////////////////////// + real vx2 = vvx * vvx; + real vy2 = vvy * vvy; + real vz2 = vvz * vvz; + //////////////////////////////////////////////////////////////////////////////////// + real XXb = -c2o3 + vx2; + real XXc = -c1o2 * (XXb + c1o1 + vvx); + real XXa = XXc + vvx; + real YYb = -c2o3 + vy2; + real YYc = -c1o2 * (YYb + c1o1 + vvy); + real YYa = YYc + vvy; + real ZZb = -c2o3 + vz2; + real ZZc = -c1o2 * (ZZb + c1o1 + vvz); + real ZZa = ZZc + vvz; + //////////////////////////////////////////////////////////////////////////////////// + mfcbb = -rho * XXc * YYb * ZZb - c2o27 ; + mfabb = -rho * XXa * YYb * ZZb - c2o27 ; + mfbcb = -rho * XXb * YYc * ZZb - c2o27 ; + mfbab = -rho * XXb * YYa * ZZb - c2o27 ; + mfbbc = -rho * XXb * YYb * ZZc - c2o27 ; + mfbba = -rho * XXb * YYb * ZZa - c2o27 ; + mfccb = -rho * XXc * YYc * ZZb - c1o54 ; + mfaab = -rho * XXa * YYa * ZZb - c1o54 ; + mfcab = -rho * XXc * YYa * ZZb - c1o54 ; + mfacb = -rho * XXa * YYc * ZZb - c1o54 ; + mfcbc = -rho * XXc * YYb * ZZc - c1o54 ; + mfaba = -rho * XXa * YYb * ZZa - c1o54 ; + mfcba = -rho * XXc * YYb * ZZa - c1o54 ; + mfabc = -rho * XXa * YYb * ZZc - c1o54 ; + mfbcc = -rho * XXb * YYc * ZZc - c1o54 ; + mfbaa = -rho * XXb * YYa * ZZa - c1o54 ; + mfbca = -rho * XXb * YYc * ZZa - c1o54 ; + mfbac = -rho * XXb * YYa * ZZc - c1o54 ; + mfbbb = -rho * XXb * YYb * ZZb - c8o27 ; + mfccc = -rho * XXc * YYc * ZZc - c1o216; + mfaac = -rho * XXa * YYa * ZZc - c1o216; + mfcac = -rho * XXc * YYa * ZZc - c1o216; + mfacc = -rho * XXa * YYc * ZZc - c1o216; + mfcca = -rho * XXc * YYc * ZZa - c1o216; + mfaaa = -rho * XXa * YYa * ZZa - c1o216; + mfcaa = -rho * XXc * YYa * ZZa - c1o216; + mfaca = -rho * XXa * YYc * ZZa - c1o216; + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + (D.f[dP00])[ke ] = mfabb;//mfcbb; + (D.f[dM00])[kw ] = mfcbb;//mfabb; + (D.f[d0P0])[kn ] = mfbab;//mfbcb; + (D.f[d0M0])[ks ] = mfbcb;//mfbab; + (D.f[d00P])[kt ] = mfbba;//mfbbc; + (D.f[d00M])[kb ] = mfbbc;//mfbba; + (D.f[dPP0])[kne ] = mfaab;//mfccb; + (D.f[dMM0])[ksw ] = mfccb;//mfaab; + (D.f[dPM0])[kse ] = mfacb;//mfcab; + (D.f[dMP0])[knw ] = mfcab;//mfacb; + (D.f[dP0P])[kte ] = mfaba;//mfcbc; + (D.f[dM0M])[kbw ] = mfcbc;//mfaba; + (D.f[dP0M])[kbe ] = mfabc;//mfcba; + (D.f[dM0P])[ktw ] = mfcba;//mfabc; + (D.f[d0PP])[ktn ] = mfbaa;//mfbcc; + (D.f[d0MM])[kbs ] = mfbcc;//mfbaa; + (D.f[d0PM])[kbn ] = mfbac;//mfbca; + (D.f[d0MP])[kts ] = mfbca;//mfbac; + (D.f[d000])[kzero] = mfbbb;//mfbbb; + (D.f[dPPP])[ktne ] = mfaaa;//mfccc; + (D.f[dMMP])[ktsw ] = mfcca;//mfaac; + (D.f[dPMP])[ktse ] = mfaca;//mfcac; + (D.f[dMPP])[ktnw ] = mfcaa;//mfacc; + (D.f[dPPM])[kbne ] = mfaac;//mfcca; + (D.f[dMMM])[kbsw ] = mfccc;//mfaaa; + (D.f[dPMM])[kbse ] = mfacc;//mfcaa; + (D.f[dMPM])[kbnw ] = mfcac;//mfaca; + } +} +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +////////////////////////////////////////////////////////////////////////////// +__global__ void QVelDeviceIncompHighNu27( + real* vx, + real* vy, + real* vz, + real* DD, + int* k_Q, + real* QQ, + unsigned int numberOfBCnodes, + real om1, + unsigned int* neighborX, + unsigned int* neighborY, + unsigned int* neighborZ, + unsigned long long numberOfLBnodes, + bool isEvenTimestep) +{ + Distributions27 D; + if (isEvenTimestep==true) + { + D.f[dP00] = &DD[dP00 * numberOfLBnodes]; + D.f[dM00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00P] = &DD[d00P * numberOfLBnodes]; + D.f[d00M] = &DD[d00M * numberOfLBnodes]; + D.f[dPP0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dMM0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dP0P] = &DD[dP0P * numberOfLBnodes]; + D.f[dM0M] = &DD[dM0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dP0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dM0P * numberOfLBnodes]; + D.f[d0PP] = &DD[d0PP * numberOfLBnodes]; + D.f[d0MM] = &DD[d0MM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0PM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dPPP * numberOfLBnodes]; + D.f[dMMP] = &DD[dMMP * numberOfLBnodes]; + D.f[dPMP] = &DD[dPMP * numberOfLBnodes]; + D.f[dMPP] = &DD[dMPP * numberOfLBnodes]; + D.f[dPPM] = &DD[dPPM * numberOfLBnodes]; + D.f[dMMM] = &DD[dMMM * numberOfLBnodes]; + D.f[dPMM] = &DD[dPMM * numberOfLBnodes]; + D.f[dMPM] = &DD[dMPM * numberOfLBnodes]; + } + else + { + D.f[dM00] = &DD[dP00 * numberOfLBnodes]; + D.f[dP00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00M] = &DD[d00P * numberOfLBnodes]; + D.f[d00P] = &DD[d00M * numberOfLBnodes]; + D.f[dMM0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dPP0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dM0M] = &DD[dP0P * numberOfLBnodes]; + D.f[dP0P] = &DD[dM0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dP0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dM0P * numberOfLBnodes]; + D.f[d0MM] = &DD[d0PP * numberOfLBnodes]; + D.f[d0PP] = &DD[d0MM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0PM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dMMM * numberOfLBnodes]; + D.f[dMMP] = &DD[dPPM * numberOfLBnodes]; + D.f[dPMP] = &DD[dMPM * numberOfLBnodes]; + D.f[dMPP] = &DD[dPMM * numberOfLBnodes]; + D.f[dPPM] = &DD[dMMP * numberOfLBnodes]; + D.f[dMMM] = &DD[dPPP * numberOfLBnodes]; + D.f[dPMM] = &DD[dMPP * numberOfLBnodes]; + D.f[dMPM] = &DD[dPMP * numberOfLBnodes]; + } + //////////////////////////////////////////////////////////////////////////////// + const unsigned x = threadIdx.x; // Globaler x-Index + const unsigned y = blockIdx.x; // Globaler y-Index + const unsigned z = blockIdx.y; // Globaler z-Index + + const unsigned nx = blockDim.x; + const unsigned ny = gridDim.x; + + const unsigned k = nx*(ny*z + y) + x; + ////////////////////////////////////////////////////////////////////////// + + if(k<numberOfBCnodes) + { + //////////////////////////////////////////////////////////////////////////////// + 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) + //////////////////////////////////////////////////////////////////////////////// + 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[dP00 * numberOfBCnodes]; + q_dirW = &QQ[dM00 * numberOfBCnodes]; + q_dirN = &QQ[d0P0 * numberOfBCnodes]; + q_dirS = &QQ[d0M0 * numberOfBCnodes]; + q_dirT = &QQ[d00P * numberOfBCnodes]; + q_dirB = &QQ[d00M * numberOfBCnodes]; + q_dirNE = &QQ[dPP0 * numberOfBCnodes]; + q_dirSW = &QQ[dMM0 * numberOfBCnodes]; + q_dirSE = &QQ[dPM0 * numberOfBCnodes]; + q_dirNW = &QQ[dMP0 * numberOfBCnodes]; + q_dirTE = &QQ[dP0P * numberOfBCnodes]; + q_dirBW = &QQ[dM0M * numberOfBCnodes]; + q_dirBE = &QQ[dP0M * numberOfBCnodes]; + q_dirTW = &QQ[dM0P * numberOfBCnodes]; + q_dirTN = &QQ[d0PP * numberOfBCnodes]; + q_dirBS = &QQ[d0MM * numberOfBCnodes]; + q_dirBN = &QQ[d0PM * numberOfBCnodes]; + q_dirTS = &QQ[d0MP * numberOfBCnodes]; + q_dirTNE = &QQ[dPPP * numberOfBCnodes]; + q_dirTSW = &QQ[dMMP * numberOfBCnodes]; + q_dirTSE = &QQ[dPMP * numberOfBCnodes]; + q_dirTNW = &QQ[dMPP * numberOfBCnodes]; + q_dirBNE = &QQ[dPPM * numberOfBCnodes]; + q_dirBSW = &QQ[dMMM * numberOfBCnodes]; + q_dirBSE = &QQ[dPMM * numberOfBCnodes]; + q_dirBNW = &QQ[dMPM * 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]; + 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 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[dP00])[ke ]; + f_W = (D.f[dM00])[kw ]; + f_N = (D.f[d0P0])[kn ]; + f_S = (D.f[d0M0])[ks ]; + f_T = (D.f[d00P])[kt ]; + f_B = (D.f[d00M])[kb ]; + f_NE = (D.f[dPP0])[kne ]; + f_SW = (D.f[dMM0])[ksw ]; + f_SE = (D.f[dPM0])[kse ]; + f_NW = (D.f[dMP0])[knw ]; + f_TE = (D.f[dP0P])[kte ]; + f_BW = (D.f[dM0M])[kbw ]; + f_BE = (D.f[dP0M])[kbe ]; + f_TW = (D.f[dM0P])[ktw ]; + f_TN = (D.f[d0PP])[ktn ]; + f_BS = (D.f[d0MM])[kbs ]; + f_BN = (D.f[d0PM])[kbn ]; + f_TS = (D.f[d0MP])[kts ]; + f_TNE = (D.f[dPPP])[ktne ]; + f_TSW = (D.f[dMMP])[ktsw ]; + f_TSE = (D.f[dPMP])[ktse ]; + f_TNW = (D.f[dMPP])[ktnw ]; + f_BNE = (D.f[dPPM])[kbne ]; + f_BSW = (D.f[dMMM])[kbsw ]; + f_BSE = (D.f[dPMM])[kbse ]; + f_BNW = (D.f[dMPM])[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[d000])[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));// / (one + 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));// / (one + 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));// / (one + drho); + + real cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3);// * (one + drho); + + ////////////////////////////////////////////////////////////////////////// + if (isEvenTimestep==false) + { + D.f[dP00] = &DD[dP00 * numberOfLBnodes]; + D.f[dM00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00P] = &DD[d00P * numberOfLBnodes]; + D.f[d00M] = &DD[d00M * numberOfLBnodes]; + D.f[dPP0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dMM0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dP0P] = &DD[dP0P * numberOfLBnodes]; + D.f[dM0M] = &DD[dM0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dP0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dM0P * numberOfLBnodes]; + D.f[d0PP] = &DD[d0PP * numberOfLBnodes]; + D.f[d0MM] = &DD[d0MM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0PM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dPPP * numberOfLBnodes]; + D.f[dMMP] = &DD[dMMP * numberOfLBnodes]; + D.f[dPMP] = &DD[dPMP * numberOfLBnodes]; + D.f[dMPP] = &DD[dMPP * numberOfLBnodes]; + D.f[dPPM] = &DD[dPPM * numberOfLBnodes]; + D.f[dMMM] = &DD[dMMM * numberOfLBnodes]; + D.f[dPMM] = &DD[dPMM * numberOfLBnodes]; + D.f[dMPM] = &DD[dMPM * numberOfLBnodes]; + } + else + { + D.f[dM00] = &DD[dP00 * numberOfLBnodes]; + D.f[dP00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00M] = &DD[d00P * numberOfLBnodes]; + D.f[d00P] = &DD[d00M * numberOfLBnodes]; + D.f[dMM0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dPP0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dM0M] = &DD[dP0P * numberOfLBnodes]; + D.f[dP0P] = &DD[dM0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dP0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dM0P * numberOfLBnodes]; + D.f[d0MM] = &DD[d0PP * numberOfLBnodes]; + D.f[d0PP] = &DD[d0MM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0PM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dMMM * numberOfLBnodes]; + D.f[dMMP] = &DD[dPPM * numberOfLBnodes]; + D.f[dPMP] = &DD[dMPM * numberOfLBnodes]; + D.f[dMPP] = &DD[dPMM * numberOfLBnodes]; + D.f[dPPM] = &DD[dMMP * numberOfLBnodes]; + D.f[dMMM] = &DD[dPPP * numberOfLBnodes]; + D.f[dPMM] = &DD[dMPP * numberOfLBnodes]; + D.f[dMPM] = &DD[dPMP * numberOfLBnodes]; + } + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //Test + //(D.f[d000])[k]=c1o10; + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + //ToDo anders Klammern + + q = q_dirE[k]; + if (q>=c0o1 && q<=c1o1) + { + feq=c2o27* (drho/*+three*( vx1 )*/+c9o2*( vx1 )*( vx1 ) /** (one + drho)*/-cu_sq); + (D.f[dM00])[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[dP00])[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[d0M0])[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[d0P0])[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[d00M])[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[d00P])[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[dMM0])[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[dPP0])[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[dMP0])[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[dPM0])[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[dM0M])[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[dP0P])[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[dM0P])[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[dP0M])[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[d0MM])[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[d0PP])[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[d0MP])[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[d0PM])[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[dMMM])[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[dPPP])[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[dMMP])[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[dPPM])[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[dMPM])[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[dPMP])[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[dMPP])[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[dPMM])[kbse]=((c1o1 - q) * f_TNW + q * ((f_TNW + f_BSE) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o216*(-VeloX+VeloY+VeloZ)) / (q + c1o1) ; + } + } +} +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +////////////////////////////////////////////////////////////////////////////// +__global__ void QVelDeviceCompHighNu27( + real* vx, + real* vy, + real* vz, + real* DD, + int* k_Q, + real* QQ, + unsigned int numberOfBCnodes, + real om1, + unsigned int* neighborX, + unsigned int* neighborY, + unsigned int* neighborZ, + unsigned long long numberOfLBnodes, + bool isEvenTimestep) +{ + Distributions27 D; + if (isEvenTimestep==true) + { + D.f[dP00] = &DD[dP00 * numberOfLBnodes]; + D.f[dM00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00P] = &DD[d00P * numberOfLBnodes]; + D.f[d00M] = &DD[d00M * numberOfLBnodes]; + D.f[dPP0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dMM0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dP0P] = &DD[dP0P * numberOfLBnodes]; + D.f[dM0M] = &DD[dM0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dP0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dM0P * numberOfLBnodes]; + D.f[d0PP] = &DD[d0PP * numberOfLBnodes]; + D.f[d0MM] = &DD[d0MM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0PM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dPPP * numberOfLBnodes]; + D.f[dMMP] = &DD[dMMP * numberOfLBnodes]; + D.f[dPMP] = &DD[dPMP * numberOfLBnodes]; + D.f[dMPP] = &DD[dMPP * numberOfLBnodes]; + D.f[dPPM] = &DD[dPPM * numberOfLBnodes]; + D.f[dMMM] = &DD[dMMM * numberOfLBnodes]; + D.f[dPMM] = &DD[dPMM * numberOfLBnodes]; + D.f[dMPM] = &DD[dMPM * numberOfLBnodes]; + } + else + { + D.f[dM00] = &DD[dP00 * numberOfLBnodes]; + D.f[dP00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00M] = &DD[d00P * numberOfLBnodes]; + D.f[d00P] = &DD[d00M * numberOfLBnodes]; + D.f[dMM0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dPP0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dM0M] = &DD[dP0P * numberOfLBnodes]; + D.f[dP0P] = &DD[dM0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dP0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dM0P * numberOfLBnodes]; + D.f[d0MM] = &DD[d0PP * numberOfLBnodes]; + D.f[d0PP] = &DD[d0MM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0PM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dMMM * numberOfLBnodes]; + D.f[dMMP] = &DD[dPPM * numberOfLBnodes]; + D.f[dPMP] = &DD[dMPM * numberOfLBnodes]; + D.f[dMPP] = &DD[dPMM * numberOfLBnodes]; + D.f[dPPM] = &DD[dMMP * numberOfLBnodes]; + D.f[dMMM] = &DD[dPPP * numberOfLBnodes]; + D.f[dPMM] = &DD[dMPP * numberOfLBnodes]; + D.f[dMPM] = &DD[dPMP * numberOfLBnodes]; + } + //////////////////////////////////////////////////////////////////////////////// + const unsigned x = threadIdx.x; // Globaler x-Index + const unsigned y = blockIdx.x; // Globaler y-Index + const unsigned z = blockIdx.y; // Globaler z-Index + + const unsigned nx = blockDim.x; + const unsigned ny = gridDim.x; + + const unsigned k = nx*(ny*z + y) + x; + ////////////////////////////////////////////////////////////////////////// + + if(k<numberOfBCnodes) + { + //////////////////////////////////////////////////////////////////////////////// + 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) + //////////////////////////////////////////////////////////////////////////////// + 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[dP00 * numberOfBCnodes]; + q_dirW = &QQ[dM00 * numberOfBCnodes]; + q_dirN = &QQ[d0P0 * numberOfBCnodes]; + q_dirS = &QQ[d0M0 * numberOfBCnodes]; + q_dirT = &QQ[d00P * numberOfBCnodes]; + q_dirB = &QQ[d00M * numberOfBCnodes]; + q_dirNE = &QQ[dPP0 * numberOfBCnodes]; + q_dirSW = &QQ[dMM0 * numberOfBCnodes]; + q_dirSE = &QQ[dPM0 * numberOfBCnodes]; + q_dirNW = &QQ[dMP0 * numberOfBCnodes]; + q_dirTE = &QQ[dP0P * numberOfBCnodes]; + q_dirBW = &QQ[dM0M * numberOfBCnodes]; + q_dirBE = &QQ[dP0M * numberOfBCnodes]; + q_dirTW = &QQ[dM0P * numberOfBCnodes]; + q_dirTN = &QQ[d0PP * numberOfBCnodes]; + q_dirBS = &QQ[d0MM * numberOfBCnodes]; + q_dirBN = &QQ[d0PM * numberOfBCnodes]; + q_dirTS = &QQ[d0MP * numberOfBCnodes]; + q_dirTNE = &QQ[dPPP * numberOfBCnodes]; + q_dirTSW = &QQ[dMMP * numberOfBCnodes]; + q_dirTSE = &QQ[dPMP * numberOfBCnodes]; + q_dirTNW = &QQ[dMPP * numberOfBCnodes]; + q_dirBNE = &QQ[dPPM * numberOfBCnodes]; + q_dirBSW = &QQ[dMMM * numberOfBCnodes]; + q_dirBSE = &QQ[dPMM * numberOfBCnodes]; + q_dirBNW = &QQ[dMPM * 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]; + 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 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[dP00])[ke ]; + f_W = (D.f[dM00])[kw ]; + f_N = (D.f[d0P0])[kn ]; + f_S = (D.f[d0M0])[ks ]; + f_T = (D.f[d00P])[kt ]; + f_B = (D.f[d00M])[kb ]; + f_NE = (D.f[dPP0])[kne ]; + f_SW = (D.f[dMM0])[ksw ]; + f_SE = (D.f[dPM0])[kse ]; + f_NW = (D.f[dMP0])[knw ]; + f_TE = (D.f[dP0P])[kte ]; + f_BW = (D.f[dM0M])[kbw ]; + f_BE = (D.f[dP0M])[kbe ]; + f_TW = (D.f[dM0P])[ktw ]; + f_TN = (D.f[d0PP])[ktn ]; + f_BS = (D.f[d0MM])[kbs ]; + f_BN = (D.f[d0PM])[kbn ]; + f_TS = (D.f[d0MP])[kts ]; + f_TNE = (D.f[dPPP])[ktne ]; + f_TSW = (D.f[dMMP])[ktsw ]; + f_TSE = (D.f[dPMP])[ktse ]; + f_TNW = (D.f[dMPP])[ktnw ]; + f_BNE = (D.f[dPPM])[kbne ]; + f_BSW = (D.f[dMMM])[kbsw ]; + f_BSE = (D.f[dPMM])[kbse ]; + f_BNW = (D.f[dMPM])[kbnw ]; + //f_W = (D.f[dP00])[ke ]; + //f_E = (D.f[dM00])[kw ]; + //f_S = (D.f[d0P0])[kn ]; + //f_N = (D.f[d0M0])[ks ]; + //f_B = (D.f[d00P])[kt ]; + //f_T = (D.f[d00M])[kb ]; + //f_SW = (D.f[dPP0])[kne ]; + //f_NE = (D.f[dMM0])[ksw ]; + //f_NW = (D.f[dPM0])[kse ]; + //f_SE = (D.f[dMP0])[knw ]; + //f_BW = (D.f[dP0P])[kte ]; + //f_TE = (D.f[dM0M])[kbw ]; + //f_TW = (D.f[dP0M])[kbe ]; + //f_BE = (D.f[dM0P])[ktw ]; + //f_BS = (D.f[d0PP])[ktn ]; + //f_TN = (D.f[d0MM])[kbs ]; + //f_TS = (D.f[d0PM])[kbn ]; + //f_BN = (D.f[d0MP])[kts ]; + //f_BSW = (D.f[dPPP])[ktne ]; + //f_BNE = (D.f[dMMP])[ktsw ]; + //f_BNW = (D.f[dPMP])[ktse ]; + //f_BSE = (D.f[dMPP])[ktnw ]; + //f_TSW = (D.f[dPPM])[kbne ]; + //f_TNE = (D.f[dMMM])[kbsw ]; + //f_TNW = (D.f[dPMM])[kbse ]; + //f_TSE = (D.f[dMPM])[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[d000])[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); + + + 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 cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3) * (c1o1 + drho); + + ////////////////////////////////////////////////////////////////////////// + if (isEvenTimestep==false) + { + D.f[dP00] = &DD[dP00 * numberOfLBnodes]; + D.f[dM00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00P] = &DD[d00P * numberOfLBnodes]; + D.f[d00M] = &DD[d00M * numberOfLBnodes]; + D.f[dPP0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dMM0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dP0P] = &DD[dP0P * numberOfLBnodes]; + D.f[dM0M] = &DD[dM0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dP0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dM0P * numberOfLBnodes]; + D.f[d0PP] = &DD[d0PP * numberOfLBnodes]; + D.f[d0MM] = &DD[d0MM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0PM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dPPP * numberOfLBnodes]; + D.f[dMMP] = &DD[dMMP * numberOfLBnodes]; + D.f[dPMP] = &DD[dPMP * numberOfLBnodes]; + D.f[dMPP] = &DD[dMPP * numberOfLBnodes]; + D.f[dPPM] = &DD[dPPM * numberOfLBnodes]; + D.f[dMMM] = &DD[dMMM * numberOfLBnodes]; + D.f[dPMM] = &DD[dPMM * numberOfLBnodes]; + D.f[dMPM] = &DD[dMPM * numberOfLBnodes]; + } + else + { + D.f[dM00] = &DD[dP00 * numberOfLBnodes]; + D.f[dP00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00M] = &DD[d00P * numberOfLBnodes]; + D.f[d00P] = &DD[d00M * numberOfLBnodes]; + D.f[dMM0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dPP0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dM0M] = &DD[dP0P * numberOfLBnodes]; + D.f[dP0P] = &DD[dM0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dP0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dM0P * numberOfLBnodes]; + D.f[d0MM] = &DD[d0PP * numberOfLBnodes]; + D.f[d0PP] = &DD[d0MM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0PM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dMMM * numberOfLBnodes]; + D.f[dMMP] = &DD[dPPM * numberOfLBnodes]; + D.f[dPMP] = &DD[dMPM * numberOfLBnodes]; + D.f[dMPP] = &DD[dPMM * numberOfLBnodes]; + D.f[dPPM] = &DD[dMMP * numberOfLBnodes]; + D.f[dMMM] = &DD[dPPP * numberOfLBnodes]; + D.f[dPMM] = &DD[dMPP * numberOfLBnodes]; + D.f[dMPM] = &DD[dPMP * numberOfLBnodes]; + } + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //Test + //(D.f[d000])[k]=c1o10; + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + //ToDo anders Klammern + + q = q_dirE[k]; + if (q>=c0o1 && q<=c1o1) + { + feq=c2o27* (drho/*+three*( vx1 )*/+c9o2*( vx1 )*( vx1 ) * (c1o1 + drho)-cu_sq); + (D.f[dM00])[kw]=((c1o1 - q) * f_E + q * ((f_E + f_W) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c2o27*( VeloX )) / (q + c1o1) ; + //(D.f[dM00])[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[dM00])[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[dP00])[ke]=((c1o1 - q) * f_W + q * ((f_W + f_E) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c2o27*(-VeloX )) / (q + c1o1) ; + //(D.f[dP00])[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[dP00])[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[d0M0])[ks]=((c1o1 - q) * f_N + q * ((f_N + f_S) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c2o27*( VeloY )) / (q + c1o1) ; + //(D.f[d0M0])[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[d0M0])[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[d0P0])[kn]=((c1o1 - q) * f_S + q * ((f_S + f_N) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c2o27*(-VeloY )) / (q + c1o1) ; + //(D.f[d0P0])[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[d0P0])[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[d00M])[kb]=((c1o1 - q) * f_T + q * ((f_T + f_B) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c2o27*( VeloZ )) / (q + c1o1) ; + //(D.f[d00M])[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[d00M])[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[d00P])[kt]=((c1o1 - q) * f_B + q * ((f_B + f_T) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c2o27*(-VeloZ )) / (q + c1o1) ; + //(D.f[d00P])[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[d00P])[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[dMM0])[ksw]=((c1o1 - q) * f_NE + q * ((f_NE + f_SW) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*( VeloX+VeloY)) / (q + c1o1) ; + //(D.f[dMM0])[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[dMM0])[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[dPP0])[kne]=((c1o1 - q) * f_SW + q * ((f_SW + f_NE) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*(-VeloX-VeloY)) / (q + c1o1) ; + //(D.f[dPP0])[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[dPP0])[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[dMP0])[knw]=((c1o1 - q) * f_SE + q * ((f_SE + f_NW) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*( VeloX-VeloY)) / (q + c1o1) ; + //(D.f[dMP0])[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[dMP0])[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[dPM0])[kse]=((c1o1 - q) * f_NW + q * ((f_NW + f_SE) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*(-VeloX+VeloY)) / (q + c1o1) ; + //(D.f[dPM0])[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[dPM0])[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[dM0M])[kbw]=((c1o1 - q) * f_TE + q * ((f_TE + f_BW) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*( VeloX+VeloZ)) / (q + c1o1) ; + //(D.f[dM0M])[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[dM0M])[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[dP0P])[kte]=((c1o1 - q) * f_BW + q * ((f_BW + f_TE) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*(-VeloX-VeloZ)) / (q + c1o1) ; + //(D.f[dP0P])[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[dP0P])[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[dM0P])[ktw]=((c1o1 - q) * f_BE + q * ((f_BE + f_TW) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*( VeloX-VeloZ)) / (q + c1o1) ; + //(D.f[dM0P])[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[dM0P])[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[dP0M])[kbe]=((c1o1 - q) * f_TW + q * ((f_TW + f_BE) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*(-VeloX+VeloZ)) / (q + c1o1) ; + //(D.f[dP0M])[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[dP0M])[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[d0MM])[kbs]=((c1o1 - q) * f_TN + q * ((f_TN + f_BS) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*( VeloY+VeloZ)) / (q + c1o1) ; + //(D.f[d0MM])[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[d0MM])[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[d0PP])[ktn]=((c1o1 - q) * f_BS + q * ((f_BS + f_TN) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*(-VeloY-VeloZ)) / (q + c1o1) ; + //(D.f[d0PP])[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[d0PP])[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[d0MP])[kts]=((c1o1 - q) * f_BN + q * ((f_BN + f_TS) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*( VeloY-VeloZ)) / (q + c1o1) ; + //(D.f[d0MP])[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[d0MP])[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[d0PM])[kbn]=((c1o1 - q) * f_TS + q * ((f_TS + f_BN) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o54*(-VeloY+VeloZ)) / (q + c1o1) ; + //(D.f[d0PM])[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[d0PM])[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[dMMM])[kbsw]=((c1o1 - q) * f_TNE + q * ((f_TNE + f_BSW) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o216*( VeloX+VeloY+VeloZ)) / (q + c1o1) ; + //(D.f[dMMM])[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[dMMM])[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[dPPP])[ktne]=((c1o1 - q) * f_BSW + q * ((f_BSW + f_TNE) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o216*(-VeloX-VeloY-VeloZ)) / (q + c1o1) ; + //(D.f[dPPP])[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[dPPP])[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[dMMP])[ktsw]=((c1o1 - q) * f_BNE + q * ((f_BNE + f_TSW) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o216*( VeloX+VeloY-VeloZ)) / (q + c1o1) ; + //(D.f[dMMP])[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[dMMP])[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[dPPM])[kbne]=((c1o1 - q) * f_TSW + q * ((f_TSW + f_BNE) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o216*(-VeloX-VeloY+VeloZ)) / (q + c1o1) ; + //(D.f[dPPM])[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[dPPM])[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[dMPM])[kbnw]=((c1o1 - q) * f_TSE + q * ((f_TSE + f_BNW) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o216*( VeloX-VeloY+VeloZ)) / (q + c1o1) ; + //(D.f[dMPM])[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[dMPM])[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[dPMP])[ktse]=((c1o1 - q) * f_BNW + q * ((f_BNW + f_TSE) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o216*(-VeloX+VeloY-VeloZ)) / (q + c1o1) ; + //(D.f[dPMP])[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[dPMP])[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[dMPP])[ktnw]=((c1o1 - q) * f_BSE + q * ((f_BSE + f_TNW) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o216*( VeloX-VeloY-VeloZ)) / (q + c1o1) ; + //(D.f[dMPP])[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[dMPP])[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[dPMM])[kbse]=((c1o1 - q) * f_TNW + q * ((f_TNW + f_BSE) * (c1o1 - om1) + om1 * c2o1 * feq) - c6o1*c1o216*(-VeloX+VeloY+VeloZ)) / (q + c1o1) ; + //(D.f[dPMM])[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[dPMM])[kbse]=zero; + } + } +} +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +////////////////////////////////////////////////////////////////////////////// +__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 long long numberOfLBnodes, + bool isEvenTimestep) +{ + ////////////////////////////////////////////////////////////////////////// + //! The velocity boundary condition is executed in the following steps + //! + //////////////////////////////////////////////////////////////////////////////// + //! - Get node index coordinates from threadIdx, blockIdx, blockDim and gridDim. + //! + const unsigned nodeIndex = getNodeIndex(); + + ////////////////////////////////////////////////////////////////////////// + //! - Run for all indices in size of boundary condition (numberOfBCnodes) + //! + if(nodeIndex < 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); + + //////////////////////////////////////////////////////////////////////////////// + //! - Set local velocities + //! + real VeloX = velocityX[nodeIndex]; + real VeloY = velocityY[nodeIndex]; + real VeloZ = velocityZ[nodeIndex]; + + + //////////////////////////////////////////////////////////////////////////////// + //! - Set local subgrid distances (q's) + //! + SubgridDistances27 subgridD; + getPointersToSubgridDistances(subgridD, subgridDistances, numberOfBCnodes); + + //////////////////////////////////////////////////////////////////////////////// + //! - Set neighbor indices (necessary for indirect addressing) + //! + unsigned int KQK = subgridDistanceIndices[nodeIndex]; + 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 distributions + //! + real f_W = (dist.f[dP00])[ke ]; + real f_E = (dist.f[dM00])[kw ]; + real f_S = (dist.f[d0P0])[kn ]; + real f_N = (dist.f[d0M0])[ks ]; + real f_B = (dist.f[d00P])[kt ]; + real f_T = (dist.f[d00M])[kb ]; + real f_SW = (dist.f[dPP0])[kne ]; + real f_NE = (dist.f[dMM0])[ksw ]; + real f_NW = (dist.f[dPM0])[kse ]; + real f_SE = (dist.f[dMP0])[knw ]; + real f_BW = (dist.f[dP0P])[kte ]; + real f_TE = (dist.f[dM0M])[kbw ]; + real f_TW = (dist.f[dP0M])[kbe ]; + real f_BE = (dist.f[dM0P])[ktw ]; + real f_BS = (dist.f[d0PP])[ktn ]; + real f_TN = (dist.f[d0MM])[kbs ]; + real f_TS = (dist.f[d0PM])[kbn ]; + real f_BN = (dist.f[d0MP])[kts ]; + real f_BSW = (dist.f[dPPP])[ktne ]; + real f_BNE = (dist.f[dMMP])[ktsw ]; + real f_BNW = (dist.f[dPMP])[ktse ]; + real f_BSE = (dist.f[dMPP])[ktnw ]; + real f_TSW = (dist.f[dPPM])[kbne ]; + real f_TNE = (dist.f[dMMM])[kbsw ]; + real f_TNW = (dist.f[dPMM])[kbse ]; + real f_TSE = (dist.f[dMPM])[kbnw ]; + + //////////////////////////////////////////////////////////////////////////////// + //! - 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[d000])[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); + + 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, distribution, numberOfLBnodes, !isEvenTimestep); + + //////////////////////////////////////////////////////////////////////////////// + //! - Update distributions with subgrid distance (q) between zero and one + real feq, q, velocityLB, velocityBC; + q = (subgridD.q[dP00])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) // only update distribution for q between zero and one + { + velocityLB = vx1; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c2o27); + velocityBC = VeloX; + (dist.f[dM00])[kw] = getInterpolatedDistributionForVeloWithPressureBC(q, f_E, f_W, feq, omega, drho, velocityBC, c2o27); + } + + q = (subgridD.q[dM00])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) + { + velocityLB = -vx1; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c2o27); + velocityBC = -VeloX; + (dist.f[dP00])[ke] = getInterpolatedDistributionForVeloWithPressureBC(q, f_W, f_E, feq, omega, drho, velocityBC, c2o27); + } + + q = (subgridD.q[d0P0])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) + { + velocityLB = vx2; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c2o27); + velocityBC = VeloY; + (dist.f[d0M0])[ks] = getInterpolatedDistributionForVeloWithPressureBC(q, f_N, f_S, feq, omega, drho, velocityBC, c2o27); + } + + q = (subgridD.q[d0M0])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) + { + velocityLB = -vx2; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c2o27); + velocityBC = -VeloY; + (dist.f[d0P0])[kn] = getInterpolatedDistributionForVeloWithPressureBC(q, f_S, f_N, feq, omega, drho, velocityBC, c2o27); + } + + q = (subgridD.q[d00P])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) + { + velocityLB = vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c2o27); + velocityBC = VeloZ; + (dist.f[d00M])[kb] = getInterpolatedDistributionForVeloWithPressureBC(q, f_T, f_B, feq, omega, drho, velocityBC, c2o27); + } + + q = (subgridD.q[d00M])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) + { + velocityLB = -vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c2o27); + velocityBC = -VeloZ; + (dist.f[d00P])[kt] = getInterpolatedDistributionForVeloWithPressureBC(q, f_B, f_T, feq, omega, drho, velocityBC, c2o27); + } + + q = (subgridD.q[dPP0])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) + { + velocityLB = vx1 + vx2; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + velocityBC = VeloX + VeloY; + (dist.f[dMM0])[ksw] = getInterpolatedDistributionForVeloWithPressureBC(q, f_NE, f_SW, feq, omega, drho, velocityBC, c1o54); + } + + q = (subgridD.q[dMM0])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) + { + velocityLB = -vx1 - vx2; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + velocityBC = -VeloX - VeloY; + (dist.f[dPP0])[kne] = getInterpolatedDistributionForVeloWithPressureBC(q, f_SW, f_NE, feq, omega, drho, velocityBC, c1o54); + } + + q = (subgridD.q[dPM0])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) + { + velocityLB = vx1 - vx2; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + velocityBC = VeloX - VeloY; + (dist.f[dMP0])[knw] = getInterpolatedDistributionForVeloWithPressureBC(q, f_SE, f_NW, feq, omega, drho, velocityBC, c1o54); + } + + q = (subgridD.q[dMP0])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) + { + velocityLB = -vx1 + vx2; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + velocityBC = -VeloX + VeloY; + (dist.f[dPM0])[kse] = getInterpolatedDistributionForVeloWithPressureBC(q, f_NW, f_SE, feq, omega, drho, velocityBC, c1o54); + } + + q = (subgridD.q[dP0P])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) + { + velocityLB = vx1 + vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + velocityBC = VeloX + VeloZ; + (dist.f[dM0M])[kbw] = getInterpolatedDistributionForVeloWithPressureBC(q, f_TE, f_BW, feq, omega, drho, velocityBC, c1o54); + } + + q = (subgridD.q[dM0M])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) + { + velocityLB = -vx1 - vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + velocityBC = -VeloX - VeloZ; + (dist.f[dP0P])[kte] = getInterpolatedDistributionForVeloWithPressureBC(q, f_BW, f_TE, feq, omega, drho, velocityBC, c1o54); + } + + q = (subgridD.q[dP0M])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) + { + velocityLB = vx1 - vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + velocityBC = VeloX - VeloZ; + (dist.f[dM0P])[ktw] = getInterpolatedDistributionForVeloWithPressureBC(q, f_BE, f_TW, feq, omega, drho, velocityBC, c1o54); + } + + q = (subgridD.q[dM0P])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) + { + velocityLB = -vx1 + vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + velocityBC = -VeloX + VeloZ; + (dist.f[dP0M])[kbe] = getInterpolatedDistributionForVeloWithPressureBC(q, f_TW, f_BE, feq, omega, drho, velocityBC, c1o54); + } + + q = (subgridD.q[d0PP])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) + { + velocityLB = vx2 + vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + velocityBC = VeloY + VeloZ; + (dist.f[d0MM])[kbs] = getInterpolatedDistributionForVeloWithPressureBC(q, f_TN, f_BS, feq, omega, drho, velocityBC, c1o54); + } + + q = (subgridD.q[d0MM])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) + { + velocityLB = -vx2 - vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + velocityBC = -VeloY - VeloZ; + (dist.f[d0PP])[ktn] = getInterpolatedDistributionForVeloWithPressureBC(q, f_BS, f_TN, feq, omega, drho, velocityBC, c1o54); + } + + q = (subgridD.q[d0PM])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) + { + velocityLB = vx2 - vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + velocityBC = VeloY - VeloZ; + (dist.f[d0MP])[kts] = getInterpolatedDistributionForVeloWithPressureBC(q, f_BN, f_TS, feq, omega, drho, velocityBC, c1o54); + } + + q = (subgridD.q[d0MP])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) + { + velocityLB = -vx2 + vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + velocityBC = -VeloY + VeloZ; + (dist.f[d0PM])[kbn] = getInterpolatedDistributionForVeloWithPressureBC(q, f_TS, f_BN, feq, omega, drho, velocityBC, c1o54); + } + + q = (subgridD.q[dPPP])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) + { + velocityLB = vx1 + vx2 + vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); + velocityBC = VeloX + VeloY + VeloZ; + (dist.f[dMMM])[kbsw] = getInterpolatedDistributionForVeloWithPressureBC(q, f_TNE, f_BSW, feq, omega, drho, velocityBC, c1o216); + } + + q = (subgridD.q[dMMM])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) + { + velocityLB = -vx1 - vx2 - vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); + velocityBC = -VeloX - VeloY - VeloZ; + (dist.f[dPPP])[ktne] = getInterpolatedDistributionForVeloWithPressureBC(q, f_BSW, f_TNE, feq, omega, drho, velocityBC, c1o216); + } + + q = (subgridD.q[dPPM])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) + { + velocityLB = vx1 + vx2 - vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); + velocityBC = VeloX + VeloY - VeloZ; + (dist.f[dMMP])[ktsw] = getInterpolatedDistributionForVeloWithPressureBC(q, f_BNE, f_TSW, feq, omega, drho, velocityBC, c1o216); + } + + q = (subgridD.q[dMMP])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) + { + velocityLB = -vx1 - vx2 + vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); + velocityBC = -VeloX - VeloY + VeloZ; + (dist.f[dPPM])[kbne] = getInterpolatedDistributionForVeloWithPressureBC(q, f_TSW, f_BNE, feq, omega, drho, velocityBC, c1o216); + } + + q = (subgridD.q[dPMP])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) + { + velocityLB = vx1 - vx2 + vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); + velocityBC = VeloX - VeloY + VeloZ; + (dist.f[dMPM])[kbnw] = getInterpolatedDistributionForVeloWithPressureBC(q, f_TSE, f_BNW, feq, omega, drho, velocityBC, c1o216); + } + + q = (subgridD.q[dMPM])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) + { + velocityLB = -vx1 + vx2 - vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); + velocityBC = -VeloX + VeloY - VeloZ; + (dist.f[dPMP])[ktse] = getInterpolatedDistributionForVeloWithPressureBC(q, f_BNW, f_TSE, feq, omega, drho, velocityBC, c1o216); + } + + q = (subgridD.q[dPMM])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) + { + velocityLB = vx1 - vx2 - vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); + velocityBC = VeloX - VeloY - VeloZ; + (dist.f[dMPP])[ktnw] = getInterpolatedDistributionForVeloWithPressureBC(q, f_BSE, f_TNW, feq, omega, drho, velocityBC, c1o216); + } + + q = (subgridD.q[dMPP])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) + { + velocityLB = -vx1 + vx2 + vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); + velocityBC = -VeloX + VeloY + VeloZ; + (dist.f[dPMM])[kbse] = getInterpolatedDistributionForVeloWithPressureBC(q, f_TNW, f_BSE, feq, omega, drho, velocityBC, c1o216); + } + } +} +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +////////////////////////////////////////////////////////////////////////////// +__global__ void QVelDeviceCompZeroPress1h27( + int inx, + int iny, + real* vx, + real* vy, + real* vz, + real* DD, + int* k_Q, + real* QQ, + unsigned int numberOfBCnodes, + real om1, + real Phi, + real angularVelocity, + unsigned int* neighborX, + unsigned int* neighborY, + unsigned int* neighborZ, + real* coordX, + real* coordY, + real* coordZ, + unsigned long long numberOfLBnodes, + bool isEvenTimestep) +{ + Distributions27 D; + if (isEvenTimestep==true) + { + D.f[dP00] = &DD[dP00 * numberOfLBnodes]; + D.f[dM00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00P] = &DD[d00P * numberOfLBnodes]; + D.f[d00M] = &DD[d00M * numberOfLBnodes]; + D.f[dPP0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dMM0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dP0P] = &DD[dP0P * numberOfLBnodes]; + D.f[dM0M] = &DD[dM0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dP0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dM0P * numberOfLBnodes]; + D.f[d0PP] = &DD[d0PP * numberOfLBnodes]; + D.f[d0MM] = &DD[d0MM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0PM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dPPP * numberOfLBnodes]; + D.f[dMMP] = &DD[dMMP * numberOfLBnodes]; + D.f[dPMP] = &DD[dPMP * numberOfLBnodes]; + D.f[dMPP] = &DD[dMPP * numberOfLBnodes]; + D.f[dPPM] = &DD[dPPM * numberOfLBnodes]; + D.f[dMMM] = &DD[dMMM * numberOfLBnodes]; + D.f[dPMM] = &DD[dPMM * numberOfLBnodes]; + D.f[dMPM] = &DD[dMPM * numberOfLBnodes]; + } + else + { + D.f[dM00] = &DD[dP00 * numberOfLBnodes]; + D.f[dP00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00M] = &DD[d00P * numberOfLBnodes]; + D.f[d00P] = &DD[d00M * numberOfLBnodes]; + D.f[dMM0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dPP0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dM0M] = &DD[dP0P * numberOfLBnodes]; + D.f[dP0P] = &DD[dM0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dP0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dM0P * numberOfLBnodes]; + D.f[d0MM] = &DD[d0PP * numberOfLBnodes]; + D.f[d0PP] = &DD[d0MM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0PM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dMMM * numberOfLBnodes]; + D.f[dMMP] = &DD[dPPM * numberOfLBnodes]; + D.f[dPMP] = &DD[dMPM * numberOfLBnodes]; + D.f[dMPP] = &DD[dPMM * numberOfLBnodes]; + D.f[dPPM] = &DD[dMMP * numberOfLBnodes]; + D.f[dMMM] = &DD[dPPP * numberOfLBnodes]; + D.f[dPMM] = &DD[dMPP * numberOfLBnodes]; + D.f[dMPM] = &DD[dPMP * numberOfLBnodes]; + } + //////////////////////////////////////////////////////////////////////////////// + const unsigned x = threadIdx.x; // Globaler x-Index + const unsigned y = blockIdx.x; // Globaler y-Index + const unsigned z = blockIdx.y; // Globaler z-Index + + const unsigned nx = blockDim.x; + const unsigned ny = gridDim.x; + + const unsigned k = nx*(ny*z + y) + x; + ////////////////////////////////////////////////////////////////////////// + + if(k<numberOfBCnodes) + { + //////////////////////////////////////////////////////////////////////////////// + //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) + //////////////////////////////////////////////////////////////////////////////// + real VeloX = cosf(Phi)*vx[k] - sinf(Phi)*vy[k]; + real VeloY = sinf(Phi)*vx[k] + cosf(Phi)*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) + //////////////////////////////////////////////////////////////////////////////////// + //Ship + real coord0X = 281.125f;//7.5f; + real coord0Y = 388.125f;//7.5f; + real ux = - angularVelocity * (coordY[k_Q[k]] - coord0Y); + real uy = angularVelocity * (coordX[k_Q[k]] - coord0X); + real VeloXpur=VeloX; + real VeloYpur=VeloY; + VeloX-=ux; + VeloY-=uy; + //////////////////////////////////////////////////////////////////////////////// + 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[dP00 * numberOfBCnodes]; + q_dirW = &QQ[dM00 * numberOfBCnodes]; + q_dirN = &QQ[d0P0 * numberOfBCnodes]; + q_dirS = &QQ[d0M0 * numberOfBCnodes]; + q_dirT = &QQ[d00P * numberOfBCnodes]; + q_dirB = &QQ[d00M * numberOfBCnodes]; + q_dirNE = &QQ[dPP0 * numberOfBCnodes]; + q_dirSW = &QQ[dMM0 * numberOfBCnodes]; + q_dirSE = &QQ[dPM0 * numberOfBCnodes]; + q_dirNW = &QQ[dMP0 * numberOfBCnodes]; + q_dirTE = &QQ[dP0P * numberOfBCnodes]; + q_dirBW = &QQ[dM0M * numberOfBCnodes]; + q_dirBE = &QQ[dP0M * numberOfBCnodes]; + q_dirTW = &QQ[dM0P * numberOfBCnodes]; + q_dirTN = &QQ[d0PP * numberOfBCnodes]; + q_dirBS = &QQ[d0MM * numberOfBCnodes]; + q_dirBN = &QQ[d0PM * numberOfBCnodes]; + q_dirTS = &QQ[d0MP * numberOfBCnodes]; + q_dirTNE = &QQ[dPPP * numberOfBCnodes]; + q_dirTSW = &QQ[dMMP * numberOfBCnodes]; + q_dirTSE = &QQ[dPMP * numberOfBCnodes]; + q_dirTNW = &QQ[dMPP * numberOfBCnodes]; + q_dirBNE = &QQ[dPPM * numberOfBCnodes]; + q_dirBSW = &QQ[dMMM * numberOfBCnodes]; + q_dirBSE = &QQ[dPMM * numberOfBCnodes]; + q_dirBNW = &QQ[dMPM * 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]; + 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]; + ////////////////////////////////////////////////////////////////////////// + if (isEvenTimestep==false) + { + D.f[dP00] = &DD[dP00 * numberOfLBnodes]; + D.f[dM00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00P] = &DD[d00P * numberOfLBnodes]; + D.f[d00M] = &DD[d00M * numberOfLBnodes]; + D.f[dPP0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dMM0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dP0P] = &DD[dP0P * numberOfLBnodes]; + D.f[dM0M] = &DD[dM0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dP0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dM0P * numberOfLBnodes]; + D.f[d0PP] = &DD[d0PP * numberOfLBnodes]; + D.f[d0MM] = &DD[d0MM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0PM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dPPP * numberOfLBnodes]; + D.f[dMMP] = &DD[dMMP * numberOfLBnodes]; + D.f[dPMP] = &DD[dPMP * numberOfLBnodes]; + D.f[dMPP] = &DD[dMPP * numberOfLBnodes]; + D.f[dPPM] = &DD[dPPM * numberOfLBnodes]; + D.f[dMMM] = &DD[dMMM * numberOfLBnodes]; + D.f[dPMM] = &DD[dPMM * numberOfLBnodes]; + D.f[dMPM] = &DD[dMPM * numberOfLBnodes]; + } + else + { + D.f[dM00] = &DD[dP00 * numberOfLBnodes]; + D.f[dP00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00M] = &DD[d00P * numberOfLBnodes]; + D.f[d00P] = &DD[d00M * numberOfLBnodes]; + D.f[dMM0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dPP0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dM0M] = &DD[dP0P * numberOfLBnodes]; + D.f[dP0P] = &DD[dM0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dP0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dM0P * numberOfLBnodes]; + D.f[d0MM] = &DD[d0PP * numberOfLBnodes]; + D.f[d0PP] = &DD[d0MM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0PM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dMMM * numberOfLBnodes]; + D.f[dMMP] = &DD[dPPM * numberOfLBnodes]; + D.f[dPMP] = &DD[dMPM * numberOfLBnodes]; + D.f[dMPP] = &DD[dPMM * numberOfLBnodes]; + D.f[dPPM] = &DD[dMMP * numberOfLBnodes]; + D.f[dMMM] = &DD[dPPP * numberOfLBnodes]; + D.f[dPMM] = &DD[dMPP * numberOfLBnodes]; + D.f[dMPM] = &DD[dPMP * numberOfLBnodes]; + } + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + real vx1, vx2, vx3, drho, feq, q, cu_sq; + ///////// equilibrium BC + cu_sq=c3o2*(VeloX*VeloX +VeloY*VeloY); + VeloXpur*=-c1o1; + VeloYpur*=-c1o1; + vx1=VeloX; + vx2=VeloY; + vx3=c0o1; + drho=c0o1; + + q = q_dirE[k]; + if (q>=c0o1 && q<=c1o1) + { + feq=c2o27* (drho+c3o1*( VeloXpur )+c9o2*( vx1 )*( vx1 ) * (c1o1 + drho)-cu_sq); + (D.f[dM00])[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[dP00])[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[d0M0])[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[d0P0])[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[d00M])[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[d00P])[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[dMM0])[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[dPP0])[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[dMP0])[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[dPM0])[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[dM0M])[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[dP0P])[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[dM0P])[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[dP0M])[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[d0MM])[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[d0PP])[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[d0MP])[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[d0PM])[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[dMMM])[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[dPPP])[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[dMMP])[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[dPPM])[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[dMPM])[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[dPMP])[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[dMPP])[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[dPMM])[kbse]= feq - c1o216 * drho; + } + } +} +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +////////////////////////////////////////////////////////////////////////////// +__global__ void LB_BC_Vel_West_27( + int nx, + int ny, + int nz, + int itz, + unsigned int* bcMatD, + unsigned int* neighborX, + unsigned int* neighborY, + unsigned int* neighborZ, + real* DD, + unsigned long long numberOfLBnodes, + bool isEvenTimestep, + real u0x, + unsigned int grid_nx, + unsigned int grid_ny, + real om) +{ + //thread-index + unsigned int ity = blockIdx.x; + unsigned int itx = threadIdx.x; + + unsigned int k, nxny; // Zugriff auf arrays im device + + unsigned int x = itx + STARTOFFX; // Globaler x-Index + unsigned int y = ity + STARTOFFY; // Globaler y-Index + unsigned int z = itz + STARTOFFZ; // Globaler z-Index + + k = nx*(ny*z + y) + x; + nxny = nx*ny; + unsigned int k1 = k+nxny; + + if( bcMatD[k] == GEO_VELO ) + { + Distributions27 D; + if (isEvenTimestep==true) + { + D.f[dP00] = &DD[dP00 * numberOfLBnodes]; + D.f[dM00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00P] = &DD[d00P * numberOfLBnodes]; + D.f[d00M] = &DD[d00M * numberOfLBnodes]; + D.f[dPP0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dMM0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dP0P] = &DD[dP0P * numberOfLBnodes]; + D.f[dM0M] = &DD[dM0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dP0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dM0P * numberOfLBnodes]; + D.f[d0PP] = &DD[d0PP * numberOfLBnodes]; + D.f[d0MM] = &DD[d0MM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0PM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dPPP * numberOfLBnodes]; + D.f[dMMP] = &DD[dMMP * numberOfLBnodes]; + D.f[dPMP] = &DD[dPMP * numberOfLBnodes]; + D.f[dMPP] = &DD[dMPP * numberOfLBnodes]; + D.f[dPPM] = &DD[dPPM * numberOfLBnodes]; + D.f[dMMM] = &DD[dMMM * numberOfLBnodes]; + D.f[dPMM] = &DD[dPMM * numberOfLBnodes]; + D.f[dMPM] = &DD[dMPM * numberOfLBnodes]; + } + else + { + D.f[dM00] = &DD[dP00 * numberOfLBnodes]; + D.f[dP00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00M] = &DD[d00P * numberOfLBnodes]; + D.f[d00P] = &DD[d00M * numberOfLBnodes]; + D.f[dMM0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dPP0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dM0M] = &DD[dP0P * numberOfLBnodes]; + D.f[dP0P] = &DD[dM0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dP0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dM0P * numberOfLBnodes]; + D.f[d0MM] = &DD[d0PP * numberOfLBnodes]; + D.f[d0PP] = &DD[d0MM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0PM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dMMM * numberOfLBnodes]; + D.f[dMMP] = &DD[dPPM * numberOfLBnodes]; + D.f[dPMP] = &DD[dMPM * numberOfLBnodes]; + D.f[dMPP] = &DD[dPMM * numberOfLBnodes]; + D.f[dPPM] = &DD[dMMP * numberOfLBnodes]; + D.f[dMMM] = &DD[dPPP * numberOfLBnodes]; + D.f[dPMM] = &DD[dMPP * numberOfLBnodes]; + D.f[dMPM] = &DD[dPMP * numberOfLBnodes]; + } + + //////////////////////////////////////////////////////////////////////////////// + //index + unsigned int kzero= k; + unsigned int ke = k; + unsigned int kw = neighborX[k]; + unsigned int kn = k; + unsigned int ks = neighborY[k]; + unsigned int kt = k; + unsigned int kb = neighborZ[k]; + unsigned int ksw = neighborY[kw]; + unsigned int kne = k; + unsigned int kse = ks; + unsigned int knw = kw; + unsigned int kbw = neighborZ[kw]; + unsigned int kte = k; + unsigned int kbe = kb; + unsigned int ktw = kw; + unsigned int kbs = neighborZ[ks]; + unsigned int ktn = k; + 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 = k; + unsigned int kbsw = neighborZ[ksw]; + //unsigned int kzero= k; + //unsigned int ke = k; + //unsigned int kw = k + 1; + //unsigned int kn = k; + //unsigned int ks = k + nx; + //unsigned int kt = k; + //unsigned int kb = k + nxny; + //unsigned int ksw = k + nx + 1; + //unsigned int kne = k; + //unsigned int kse = k + nx; + //unsigned int knw = k + 1; + //unsigned int kbw = k + nxny + 1; + //unsigned int kte = k; + //unsigned int kbe = k + nxny; + //unsigned int ktw = k + 1; + //unsigned int kbs = k + nxny + nx; + //unsigned int ktn = k; + //unsigned int kbn = k + nxny; + //unsigned int kts = k + nx; + //unsigned int ktse = k + nx; + //unsigned int kbnw = k + nxny + 1; + //unsigned int ktnw = k + 1; + //unsigned int kbse = k + nxny + nx; + //unsigned int ktsw = k + nx + 1; + //unsigned int kbne = k + nxny; + //unsigned int ktne = k; + //unsigned int kbsw = k + nxny + nx + 1; + //////////////////////////////////////////////////////////////////////////////// + //index1 + unsigned int k1zero= k1; + unsigned int k1e = k1; + unsigned int k1w = neighborX[k1]; + unsigned int k1n = k1; + unsigned int k1s = neighborY[k1]; + unsigned int k1t = k1; + unsigned int k1b = neighborZ[k1]; + unsigned int k1sw = neighborY[k1w]; + unsigned int k1ne = k1; + unsigned int k1se = k1s; + unsigned int k1nw = k1w; + unsigned int k1bw = neighborZ[k1w]; + unsigned int k1te = k1; + unsigned int k1be = k1b; + unsigned int k1tw = k1w; + unsigned int k1bs = neighborZ[k1s]; + unsigned int k1tn = k1; + unsigned int k1bn = k1b; + unsigned int k1ts = k1s; + unsigned int k1tse = k1s; + unsigned int k1bnw = k1bw; + unsigned int k1tnw = k1w; + unsigned int k1bse = k1bs; + unsigned int k1tsw = k1sw; + unsigned int k1bne = k1b; + unsigned int k1tne = k1; + unsigned int k1bsw = neighborZ[k1sw]; + //unsigned int k1zero= k1; + //unsigned int k1e = k1; + //unsigned int k1w = k1 + 1; + //unsigned int k1n = k1; + //unsigned int k1s = k1 + nx; + //unsigned int k1t = k1; + //unsigned int k1b = k1 + nxny; + //unsigned int k1sw = k1 + nx + 1; + //unsigned int k1ne = k1; + //unsigned int k1se = k1 + nx; + //unsigned int k1nw = k1 + 1; + //unsigned int k1bw = k1 + nxny + 1; + //unsigned int k1te = k1; + //unsigned int k1be = k1 + nxny; + //unsigned int k1tw = k1 + 1; + //unsigned int k1bs = k1 + nxny + nx; + //unsigned int k1tn = k1; + //unsigned int k1bn = k1 + nxny; + //unsigned int k1ts = k1 + nx; + //unsigned int k1tse = k1 + nx; + //unsigned int k1bnw = k1 + nxny + 1; + //unsigned int k1tnw = k1 + 1; + //unsigned int k1bse = k1 + nxny + nx; + //unsigned int k1tsw = k1 + nx + 1; + //unsigned int k1bne = k1 + nxny; + //unsigned int k1tne = k1; + //unsigned int k1bsw = k1 + nxny + nx + 1; + //////////////////////////////////////////////////////////////////////////////// + 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[dP00])[k1e ]; + f1_E = (D.f[dM00])[k1w ]; + f1_S = (D.f[d0P0])[k1n ]; + f1_N = (D.f[d0M0])[k1s ]; + f1_B = (D.f[d00P])[k1t ]; + f1_T = (D.f[d00M])[k1b ]; + f1_SW = (D.f[dPP0])[k1ne ]; + f1_NE = (D.f[dMM0])[k1sw ]; + f1_NW = (D.f[dPM0])[k1se ]; + f1_SE = (D.f[dMP0])[k1nw ]; + f1_BW = (D.f[dP0P])[k1te ]; + f1_TE = (D.f[dM0M])[k1bw ]; + f1_TW = (D.f[dP0M])[k1be ]; + f1_BE = (D.f[dM0P])[k1tw ]; + f1_BS = (D.f[d0PP])[k1tn ]; + f1_TN = (D.f[d0MM])[k1bs ]; + f1_TS = (D.f[d0PM])[k1bn ]; + f1_BN = (D.f[d0MP])[k1ts ]; + f1_ZERO = (D.f[d000])[k1zero]; + f1_BSW = (D.f[dPPP])[k1tne ]; + f1_BNE = (D.f[dMMP])[k1tsw ]; + f1_BNW = (D.f[dPMP])[k1tse ]; + f1_BSE = (D.f[dMPP])[k1tnw ]; + f1_TSW = (D.f[dPPM])[k1bne ]; + f1_TNE = (D.f[dMMM])[k1bsw ]; + f1_TNW = (D.f[dPMM])[k1bse ]; + f1_TSE = (D.f[dMPM])[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(); + + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + real drho = drho1; + real vx1 = c0o1; + real vx2 = c0o1; + real vx3 = u0x; + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + real cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3); + + (D.f[d000])[kzero] = c8o27* (drho-cu_sq); + (D.f[dP00])[ke ] = c2o27* (drho+c3o1*( vx1 )+c9o2*( vx1 )*( vx1 )-cu_sq); + (D.f[dM00])[kw ] = c2o27* (drho+c3o1*(-vx1 )+c9o2*(-vx1 )*(-vx1 )-cu_sq); + (D.f[d0P0])[kn ] = c2o27* (drho+c3o1*( vx2 )+c9o2*( vx2 )*( vx2 )-cu_sq); + (D.f[d0M0])[ks ] = c2o27* (drho+c3o1*( -vx2 )+c9o2*( -vx2 )*( -vx2 )-cu_sq); + (D.f[d00P])[kt ] = c2o27* (drho+c3o1*( vx3)+c9o2*( vx3)*( vx3)-cu_sq); + (D.f[d00M])[kb ] = c2o27* (drho+c3o1*( -vx3)+c9o2*( -vx3)*( -vx3)-cu_sq); + (D.f[dPP0])[kne ] = c1o54* (drho+c3o1*( vx1+vx2 )+c9o2*( vx1+vx2 )*( vx1+vx2 )-cu_sq); + (D.f[dMM0])[ksw ] = c1o54* (drho+c3o1*(-vx1-vx2 )+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq); + (D.f[dPM0])[kse ] = c1o54* (drho+c3o1*( vx1-vx2 )+c9o2*( vx1-vx2 )*( vx1-vx2 )-cu_sq); + (D.f[dMP0])[knw ] = c1o54* (drho+c3o1*(-vx1+vx2 )+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq); + (D.f[dP0P])[kte ] = c1o54* (drho+c3o1*( vx1 +vx3)+c9o2*( vx1 +vx3)*( vx1 +vx3)-cu_sq); + (D.f[dM0M])[kbw ] = c1o54* (drho+c3o1*(-vx1 -vx3)+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq); + (D.f[dP0M])[kbe ] = c1o54* (drho+c3o1*( vx1 -vx3)+c9o2*( vx1 -vx3)*( vx1 -vx3)-cu_sq); + (D.f[dM0P])[ktw ] = c1o54* (drho+c3o1*(-vx1 +vx3)+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq); + (D.f[d0PP])[ktn ] = c1o54* (drho+c3o1*( vx2+vx3)+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq); + (D.f[d0MM])[kbs ] = c1o54* (drho+c3o1*( -vx2-vx3)+c9o2*( -vx2-vx3)*( -vx2-vx3)-cu_sq); + (D.f[d0PM])[kbn ] = c1o54* (drho+c3o1*( vx2-vx3)+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq); + (D.f[d0MP])[kts ] = c1o54* (drho+c3o1*( -vx2+vx3)+c9o2*( -vx2+vx3)*( -vx2+vx3)-cu_sq); + (D.f[dPPP])[ktne ] = c1o216*(drho+c3o1*( vx1+vx2+vx3)+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq); + (D.f[dMMM])[kbsw ] = c1o216*(drho+c3o1*(-vx1-vx2-vx3)+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq); + (D.f[dPPM])[kbne ] = c1o216*(drho+c3o1*( vx1+vx2-vx3)+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq); + (D.f[dMMP])[ktsw ] = c1o216*(drho+c3o1*(-vx1-vx2+vx3)+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq); + (D.f[dPMP])[ktse ] = c1o216*(drho+c3o1*( vx1-vx2+vx3)+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq); + (D.f[dMPM])[kbnw ] = c1o216*(drho+c3o1*(-vx1+vx2-vx3)+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq); + (D.f[dPMM])[kbse ] = c1o216*(drho+c3o1*( vx1-vx2-vx3)+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq); + (D.f[dMPP])[ktnw ] = c1o216*(drho+c3o1*(-vx1+vx2+vx3)+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq); + } + __syncthreads(); +} +////////////////////////////////////////////////////////////////////////////// + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +////////////////////////////////////////////////////////////////////////////// +__global__ void QVelDevPlainBB27( + real* velocityX, + real* velocityY, + real* velocityZ, + real* distributions, + int* subgridDistanceIndices, + real* subgridDistances, + uint numberOfBCnodes, + uint* neighborX, + uint* neighborY, + uint* neighborZ, + unsigned long long numberOfLBnodes, + bool isEvenTimestep) +{ + ////////////////////////////////////////////////////////////////////////// + //! The velocity boundary condition is executed in the following steps + //! + //////////////////////////////////////////////////////////////////////////////// + //! - Get node index coordinates from threadIdx, blockIdx, blockDim and gridDim. + //! + const unsigned nodeIndex = getNodeIndex(); + + ////////////////////////////////////////////////////////////////////////// + // run for all indices in size of boundary condition (numberOfBCnodes) + if(nodeIndex < 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); + + //////////////////////////////////////////////////////////////////////////////// + //! - Set local velocities + //! + real VeloX = velocityX[nodeIndex]; + real VeloY = velocityY[nodeIndex]; + real VeloZ = velocityZ[nodeIndex]; + + //////////////////////////////////////////////////////////////////////////////// + //! - Set local subgrid distances (q's) + //! + SubgridDistances27 subgridD; + getPointersToSubgridDistances(subgridD, subgridDistances, numberOfBCnodes); + + //////////////////////////////////////////////////////////////////////////////// + //! - Set neighbor indices (necessary for indirect addressing) + //! + uint indexOfBCnode = subgridDistanceIndices[nodeIndex]; + 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]; + + //////////////////////////////////////////////////////////////////////////////// + //! - Set local distributions + //! + real f_W = (dist.f[dP00])[ke ]; + real f_E = (dist.f[dM00])[kw ]; + real f_S = (dist.f[d0P0])[kn ]; + real f_N = (dist.f[d0M0])[ks ]; + real f_B = (dist.f[d00P])[kt ]; + real f_T = (dist.f[d00M])[kb ]; + real f_SW = (dist.f[dPP0])[kne ]; + real f_NE = (dist.f[dMM0])[ksw ]; + real f_NW = (dist.f[dPM0])[kse ]; + real f_SE = (dist.f[dMP0])[knw ]; + real f_BW = (dist.f[dP0P])[kte ]; + real f_TE = (dist.f[dM0M])[kbw ]; + real f_TW = (dist.f[dP0M])[kbe ]; + real f_BE = (dist.f[dM0P])[ktw ]; + real f_BS = (dist.f[d0PP])[ktn ]; + real f_TN = (dist.f[d0MM])[kbs ]; + real f_TS = (dist.f[d0PM])[kbn ]; + real f_BN = (dist.f[d0MP])[kts ]; + real f_BSW = (dist.f[dPPP])[ktne ]; + real f_BNE = (dist.f[dMMP])[ktsw ]; + real f_BNW = (dist.f[dPMP])[ktse ]; + real f_BSE = (dist.f[dMPP])[ktnw ]; + real f_TSW = (dist.f[dPPM])[kbne ]; + real f_TNE = (dist.f[dMMM])[kbsw ]; + real f_TNW = (dist.f[dPMM])[kbse ]; + real f_TSE = (dist.f[dMPM])[kbnw ]; + + //////////////////////////////////////////////////////////////////////////////// + //! - 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[dP00])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[dM00])[kw ]=f_E + c4o9 * (-VeloX); + q = (subgridD.q[dM00])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[dP00])[ke ]=f_W + c4o9 * ( VeloX); + q = (subgridD.q[d0P0])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[d0M0])[ks ]=f_N + c4o9 * (-VeloY); + q = (subgridD.q[d0M0])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[d0P0])[kn ]=f_S + c4o9 * ( VeloY); + q = (subgridD.q[d00P])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[d00M])[kb ]=f_T + c4o9 * (-VeloZ); + q = (subgridD.q[d00M])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[d00P])[kt ]=f_B + c4o9 * ( VeloZ); + q = (subgridD.q[dPP0])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[dMM0])[ksw ]=f_NE + c1o9 * (-VeloX - VeloY); + q = (subgridD.q[dMM0])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[dPP0])[kne ]=f_SW + c1o9 * ( VeloX + VeloY); + q = (subgridD.q[dPM0])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[dMP0])[knw ]=f_SE + c1o9 * (-VeloX + VeloY); + q = (subgridD.q[dMP0])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[dPM0])[kse ]=f_NW + c1o9 * ( VeloX - VeloY); + q = (subgridD.q[dP0P])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[dM0M])[kbw ]=f_TE + c1o9 * (-VeloX - VeloZ); + q = (subgridD.q[dM0M])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[dP0P])[kte ]=f_BW + c1o9 * ( VeloX + VeloZ); + q = (subgridD.q[dP0M])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[dM0P])[ktw ]=f_BE + c1o9 * (-VeloX + VeloZ); + q = (subgridD.q[dM0P])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[dP0M])[kbe ]=f_TW + c1o9 * ( VeloX - VeloZ); + q = (subgridD.q[d0PP])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[d0MM])[kbs ]=f_TN + c1o9 * (-VeloY - VeloZ); + q = (subgridD.q[d0MM])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[d0PP])[ktn ]=f_BS + c1o9 * ( VeloY + VeloZ); + q = (subgridD.q[d0PM])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[d0MP])[kts ]=f_BN + c1o9 * (-VeloY + VeloZ); + q = (subgridD.q[d0MP])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[d0PM])[kbn ]=f_TS + c1o9 * ( VeloY - VeloZ); + q = (subgridD.q[dPPP])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[dMMM])[kbsw]=f_TNE + c1o36 * (-VeloX - VeloY - VeloZ); + q = (subgridD.q[dMMM])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[dPPP])[ktne]=f_BSW + c1o36 * ( VeloX + VeloY + VeloZ); + q = (subgridD.q[dPPM])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[dMMP])[ktsw]=f_BNE + c1o36 * (-VeloX - VeloY + VeloZ); + q = (subgridD.q[dMMP])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[dPPM])[kbne]=f_TSW + c1o36 * ( VeloX + VeloY - VeloZ); + q = (subgridD.q[dPMP])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[dMPM])[kbnw]=f_TSE + c1o36 * (-VeloX + VeloY - VeloZ); + q = (subgridD.q[dMPM])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[dPMP])[ktse]=f_BNW + c1o36 * ( VeloX - VeloY + VeloZ); + q = (subgridD.q[dPMM])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[dMPP])[ktnw]=f_BSE + c1o36 * (-VeloX + VeloY + VeloZ); + q = (subgridD.q[dMPP])[nodeIndex]; if (q>=c0o1 && q<=c1o1) (dist.f[dPMM])[kbse]=f_TNW + c1o36 * ( VeloX - VeloY - VeloZ); + } +} +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +////////////////////////////////////////////////////////////////////////////// +__global__ void QVelDevCouette27( + real* vx, + real* vy, + real* vz, + real* DD, + int* k_Q, + real* QQ, + unsigned int numberOfBCnodes, + real om1, + unsigned int* neighborX, + unsigned int* neighborY, + unsigned int* neighborZ, + unsigned long long numberOfLBnodes, + bool isEvenTimestep) +{ + Distributions27 D; + if (isEvenTimestep==true) + { + D.f[dP00] = &DD[dP00 * numberOfLBnodes]; + D.f[dM00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00P] = &DD[d00P * numberOfLBnodes]; + D.f[d00M] = &DD[d00M * numberOfLBnodes]; + D.f[dPP0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dMM0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dP0P] = &DD[dP0P * numberOfLBnodes]; + D.f[dM0M] = &DD[dM0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dP0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dM0P * numberOfLBnodes]; + D.f[d0PP] = &DD[d0PP * numberOfLBnodes]; + D.f[d0MM] = &DD[d0MM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0PM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dPPP * numberOfLBnodes]; + D.f[dMMP] = &DD[dMMP * numberOfLBnodes]; + D.f[dPMP] = &DD[dPMP * numberOfLBnodes]; + D.f[dMPP] = &DD[dMPP * numberOfLBnodes]; + D.f[dPPM] = &DD[dPPM * numberOfLBnodes]; + D.f[dMMM] = &DD[dMMM * numberOfLBnodes]; + D.f[dPMM] = &DD[dPMM * numberOfLBnodes]; + D.f[dMPM] = &DD[dMPM * numberOfLBnodes]; + } + else + { + D.f[dM00] = &DD[dP00 * numberOfLBnodes]; + D.f[dP00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00M] = &DD[d00P * numberOfLBnodes]; + D.f[d00P] = &DD[d00M * numberOfLBnodes]; + D.f[dMM0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dPP0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dM0M] = &DD[dP0P * numberOfLBnodes]; + D.f[dP0P] = &DD[dM0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dP0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dM0P * numberOfLBnodes]; + D.f[d0MM] = &DD[d0PP * numberOfLBnodes]; + D.f[d0PP] = &DD[d0MM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0PM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dMMM * numberOfLBnodes]; + D.f[dMMP] = &DD[dPPM * numberOfLBnodes]; + D.f[dPMP] = &DD[dMPM * numberOfLBnodes]; + D.f[dMPP] = &DD[dPMM * numberOfLBnodes]; + D.f[dPPM] = &DD[dMMP * numberOfLBnodes]; + D.f[dMMM] = &DD[dPPP * numberOfLBnodes]; + D.f[dPMM] = &DD[dMPP * numberOfLBnodes]; + D.f[dMPM] = &DD[dPMP * numberOfLBnodes]; + } + //////////////////////////////////////////////////////////////////////////////// + const unsigned x = threadIdx.x; // Globaler x-Index + const unsigned y = blockIdx.x; // Globaler y-Index + const unsigned z = blockIdx.y; // Globaler z-Index + + const unsigned nx = blockDim.x; + const unsigned ny = gridDim.x; + + const unsigned k = nx*(ny*z + y) + x; + ////////////////////////////////////////////////////////////////////////// + + if(k<numberOfBCnodes) + { + //////////////////////////////////////////////////////////////////////////////// + real VeloX = vx[k]; + real VeloY = vy[k]; + real VeloZ = vz[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[dP00 * numberOfBCnodes]; + q_dirW = &QQ[dM00 * numberOfBCnodes]; + q_dirN = &QQ[d0P0 * numberOfBCnodes]; + q_dirS = &QQ[d0M0 * numberOfBCnodes]; + q_dirT = &QQ[d00P * numberOfBCnodes]; + q_dirB = &QQ[d00M * numberOfBCnodes]; + q_dirNE = &QQ[dPP0 * numberOfBCnodes]; + q_dirSW = &QQ[dMM0 * numberOfBCnodes]; + q_dirSE = &QQ[dPM0 * numberOfBCnodes]; + q_dirNW = &QQ[dMP0 * numberOfBCnodes]; + q_dirTE = &QQ[dP0P * numberOfBCnodes]; + q_dirBW = &QQ[dM0M * numberOfBCnodes]; + q_dirBE = &QQ[dP0M * numberOfBCnodes]; + q_dirTW = &QQ[dM0P * numberOfBCnodes]; + q_dirTN = &QQ[d0PP * numberOfBCnodes]; + q_dirBS = &QQ[d0MM * numberOfBCnodes]; + q_dirBN = &QQ[d0PM * numberOfBCnodes]; + q_dirTS = &QQ[d0MP * numberOfBCnodes]; + q_dirTNE = &QQ[dPPP * numberOfBCnodes]; + q_dirTSW = &QQ[dMMP * numberOfBCnodes]; + q_dirTSE = &QQ[dPMP * numberOfBCnodes]; + q_dirTNW = &QQ[dMPP * numberOfBCnodes]; + q_dirBNE = &QQ[dPPM * numberOfBCnodes]; + q_dirBSW = &QQ[dMMM * numberOfBCnodes]; + q_dirBSE = &QQ[dPMM * numberOfBCnodes]; + q_dirBNW = &QQ[dMPM * 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]; + 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 f_W = (D.f[dP00])[ke ]; + real f_E = (D.f[dM00])[kw ]; + real f_S = (D.f[d0P0])[kn ]; + real f_N = (D.f[d0M0])[ks ]; + real f_B = (D.f[d00P])[kt ]; + real f_T = (D.f[d00M])[kb ]; + real f_SW = (D.f[dPP0])[kne ]; + real f_NE = (D.f[dMM0])[ksw ]; + real f_NW = (D.f[dPM0])[kse ]; + real f_SE = (D.f[dMP0])[knw ]; + real f_BW = (D.f[dP0P])[kte ]; + real f_TE = (D.f[dM0M])[kbw ]; + real f_TW = (D.f[dP0M])[kbe ]; + real f_BE = (D.f[dM0P])[ktw ]; + real f_BS = (D.f[d0PP])[ktn ]; + real f_TN = (D.f[d0MM])[kbs ]; + real f_TS = (D.f[d0PM])[kbn ]; + real f_BN = (D.f[d0MP])[kts ]; + real f_BSW = (D.f[dPPP])[ktne ]; + real f_BNE = (D.f[dMMP])[ktsw ]; + real f_BNW = (D.f[dPMP])[ktse ]; + real f_BSE = (D.f[dMPP])[ktnw ]; + real f_TSW = (D.f[dPPM])[kbne ]; + real f_TNE = (D.f[dMMM])[kbsw ]; + real f_TNW = (D.f[dPMM])[kbse ]; + real f_TSE = (D.f[dMPM])[kbnw ]; + //////////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////////// + if (isEvenTimestep==false) + { + D.f[dP00] = &DD[dP00 * numberOfLBnodes]; + D.f[dM00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00P] = &DD[d00P * numberOfLBnodes]; + D.f[d00M] = &DD[d00M * numberOfLBnodes]; + D.f[dPP0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dMM0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dP0P] = &DD[dP0P * numberOfLBnodes]; + D.f[dM0M] = &DD[dM0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dP0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dM0P * numberOfLBnodes]; + D.f[d0PP] = &DD[d0PP * numberOfLBnodes]; + D.f[d0MM] = &DD[d0MM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0PM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dPPP * numberOfLBnodes]; + D.f[dMMP] = &DD[dMMP * numberOfLBnodes]; + D.f[dPMP] = &DD[dPMP * numberOfLBnodes]; + D.f[dMPP] = &DD[dMPP * numberOfLBnodes]; + D.f[dPPM] = &DD[dPPM * numberOfLBnodes]; + D.f[dMMM] = &DD[dMMM * numberOfLBnodes]; + D.f[dPMM] = &DD[dPMM * numberOfLBnodes]; + D.f[dMPM] = &DD[dMPM * numberOfLBnodes]; + } + else + { + D.f[dM00] = &DD[dP00 * numberOfLBnodes]; + D.f[dP00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00M] = &DD[d00P * numberOfLBnodes]; + D.f[d00P] = &DD[d00M * numberOfLBnodes]; + D.f[dMM0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dPP0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dM0M] = &DD[dP0P * numberOfLBnodes]; + D.f[dP0P] = &DD[dM0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dP0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dM0P * numberOfLBnodes]; + D.f[d0MM] = &DD[d0PP * numberOfLBnodes]; + D.f[d0PP] = &DD[d0MM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0PM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dMMM * numberOfLBnodes]; + D.f[dMMP] = &DD[dPPM * numberOfLBnodes]; + D.f[dPMP] = &DD[dMPM * numberOfLBnodes]; + D.f[dMPP] = &DD[dPMM * numberOfLBnodes]; + D.f[dPPM] = &DD[dMMP * numberOfLBnodes]; + D.f[dMMM] = &DD[dPPP * numberOfLBnodes]; + D.f[dPMM] = &DD[dMPP * numberOfLBnodes]; + D.f[dMPM] = &DD[dPMP * numberOfLBnodes]; + } + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + /////// FlowDirection Y !!!!!!!!!! /////////////////////////////////// + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //calculate velocity + //real vx1 = ((f_TNE-f_BSW)+(f_BSE-f_TNW)+(f_BNE-f_TSW)+(f_TSE-f_BNW)) + (((f_NE-f_SW)+(f_TE-f_BW))+((f_SE-f_NW)+(f_BE-f_TW))) + (f_E-f_W); + real vx2 = ((f_TNE-f_BSW)+(f_TNW-f_BSE)+(f_BNE-f_TSW)+(f_BNW-f_TSE)) + (((f_NE-f_SW)+(f_TN-f_BS))+((f_BN-f_TS)+(f_NW-f_SE))) + (f_N-f_S); + //real vx3 = ((f_TNE-f_BSW)+(f_TNW-f_BSE)+(f_TSW-f_BNE)+(f_TSE-f_BNW)) + (((f_TE-f_BW)+(f_TN-f_BS))+((f_TW-f_BE)+(f_TS-f_BN))) + (f_T-f_B); + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //constant + real on=c0o1;//c1o2;//one; + real ms=-c6o1; + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //2nd order moment + real kxxMyyFromfcNEQ = c0o1;//-c3o2 * (f_BW+f_W+f_TW-f_BS-f_S-f_TS-f_BN-f_N-f_TN+f_BE+f_E+f_TE-(vx1*vx1-vx2*vx2)); //all dP00+dM00 minus all d0P0+d0M0 (no combinations of xy left) + + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //set distributions + real q; + q = q_dirE[k]; if (q>=c0o1 && q<=c1o1) (D.f[dM00])[kw ]=f_E + ms*c2o27 * VeloX; + q = q_dirW[k]; if (q>=c0o1 && q<=c1o1) (D.f[dP00])[ke ]=f_W - ms*c2o27 * VeloX; + q = q_dirN[k]; if (q>=c0o1 && q<=c1o1) (D.f[d0M0])[ks ]=f_N + ms*c2o27 * VeloY; + q = q_dirS[k]; if (q>=c0o1 && q<=c1o1) (D.f[d0P0])[kn ]=f_S - ms*c2o27 * VeloY; + q = q_dirT[k]; if (q>=c0o1 && q<=c1o1) (D.f[d00M])[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[d00P])[kt ]=f_B - ms*c2o27 * VeloZ; + q = q_dirNE[k]; if (q>=c0o1 && q<=c1o1) (D.f[dMM0])[ksw ]=f_NE + ms*c1o54 * VeloX + ms*c1o54 * VeloY; + q = q_dirSW[k]; if (q>=c0o1 && q<=c1o1) (D.f[dPP0])[kne ]=f_SW - ms*c1o54 * VeloX - ms*c1o54 * VeloY; + q = q_dirSE[k]; if (q>=c0o1 && q<=c1o1) (D.f[dMP0])[knw ]=f_SE + ms*c1o54 * VeloX - ms*c1o54 * VeloY; + q = q_dirNW[k]; if (q>=c0o1 && q<=c1o1) (D.f[dPM0])[kse ]=f_NW - ms*c1o54 * VeloX + ms*c1o54 * VeloY; + q = q_dirTE[k]; if (q>=c0o1 && q<=c1o1) (D.f[dM0M])[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[dP0P])[kte ]=f_BW - ms*c1o54 * VeloX - ms*c1o54 * VeloZ; + q = q_dirBE[k]; if (q>=c0o1 && q<=c1o1) (D.f[dM0P])[ktw ]=f_BE + ms*c1o54 * VeloX - ms*c1o54 * VeloZ; + q = q_dirTW[k]; if (q>=c0o1 && q<=c1o1) (D.f[dP0M])[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[d0MM])[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[d0PP])[ktn ]=f_BS - ms*c1o54 * VeloY - ms*c1o54 * VeloZ; + q = q_dirBN[k]; if (q>=c0o1 && q<=c1o1) (D.f[d0MP])[kts ]=f_BN + ms*c1o54 * VeloY - ms*c1o54 * VeloZ; + q = q_dirTS[k]; if (q>=c0o1 && q<=c1o1) (D.f[d0PM])[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[dMMM])[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[dPPP])[ktne]=f_BSW - ms*c1o216 * VeloX - ms*c1o216 * VeloY - ms*c1o216 * VeloZ; + q = q_dirBNE[k]; if (q>=c0o1 && q<=c1o1) (D.f[dMMP])[ktsw]=f_BNE + ms*c1o216 * VeloX + ms*c1o216 * VeloY - ms*c1o216 * VeloZ; + q = q_dirTSW[k]; if (q>=c0o1 && q<=c1o1) (D.f[dPPM])[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[dMPM])[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[dPMP])[ktse]=f_BNW - ms*c1o216 * VeloX + ms*c1o216 * VeloY - ms*c1o216 * VeloZ; + q = q_dirBSE[k]; if (q>=c0o1 && q<=c1o1) (D.f[dMPP])[ktnw]=f_BSE + ms*c1o216 * VeloX - ms*c1o216 * VeloY - ms*c1o216 * VeloZ; + q = q_dirTNW[k]; if (q>=c0o1 && q<=c1o1) (D.f[dPMM])[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[dM00])[kw ]=f_E + ms*c2over27 * VeloX; + // q = q_dirW[k]; if (q>=zero && q<=one) (D.f[dP00])[ke ]=f_W - ms*c2over27 * VeloX; + // q = q_dirN[k]; if (q>=zero && q<=one) (D.f[d0M0])[ks ]=f_N + ms*c2over27 * VeloY; + // q = q_dirS[k]; if (q>=zero && q<=one) (D.f[d0P0])[kn ]=f_S - ms*c2over27 * VeloY; + //q = q_dirT[k]; if (q>=zero && q<=one) (D.f[d00M])[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[d00P])[kt ]=f_B - ms*c2over27 * VeloZ; + // q = q_dirNE[k]; if (q>=zero && q<=one) (D.f[dMM0])[ksw ]=f_NE + ms*c1over54 * VeloX + ms*c1over54 * VeloY; + //q = q_dirSW[k]; if (q>=zero && q<=one) (D.f[dPP0])[kne ]=f_SW - ms*c1over54 * VeloX - ms*c1over54 * VeloY; + //q = q_dirSE[k]; if (q>=zero && q<=one) (D.f[dMP0])[knw ]=f_SE + ms*c1over54 * VeloX - ms*c1over54 * VeloY; + //q = q_dirNW[k]; if (q>=zero && q<=one) (D.f[dPM0])[kse ]=f_NW - ms*c1over54 * VeloX + ms*c1over54 * VeloY; + //q = q_dirTE[k]; if (q>=zero && q<=one) (D.f[dM0M])[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[dP0P])[kte ]=f_BW - ms*c1over54 * VeloX - ms*c1over54 * VeloZ; + //q = q_dirBE[k]; if (q>=zero && q<=one) (D.f[dM0P])[ktw ]=f_BE + ms*c1over54 * VeloX - ms*c1over54 * VeloZ; + //q = q_dirTW[k]; if (q>=zero && q<=one) (D.f[dP0M])[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[d0MM])[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[d0PP])[ktn ]=f_BS - ms*c1over54 * VeloY - ms*c1over54 * VeloZ; + //q = q_dirBN[k]; if (q>=zero && q<=one) (D.f[d0MP])[kts ]=f_BN + ms*c1over54 * VeloY - ms*c1over54 * VeloZ; + //q = q_dirTS[k]; if (q>=zero && q<=one) (D.f[d0PM])[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[dMMM])[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[dPPP])[ktne]=f_BSW - ms*c1over216 * VeloX - ms*c1over216 * VeloY - ms*c1over216 * VeloZ; + // q = q_dirBNE[k]; if (q>=zero && q<=one) (D.f[dMMP])[ktsw]=f_BNE + ms*c1over216 * VeloX + ms*c1over216 * VeloY - ms*c1over216 * VeloZ; + // q = q_dirTSW[k]; if (q>=zero && q<=one) (D.f[dPPM])[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[dMPM])[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[dPMP])[ktse]=f_BNW - ms*c1over216 * VeloX + ms*c1over216 * VeloY - ms*c1over216 * VeloZ; + // q = q_dirBSE[k]; if (q>=zero && q<=one) (D.f[dMPP])[ktnw]=f_BSE + ms*c1over216 * VeloX - ms*c1over216 * VeloY - ms*c1over216 * VeloZ; + // q = q_dirTNW[k]; if (q>=zero && q<=one) (D.f[dPMM])[kbse]=f_TNW - ms*c1over216 * VeloX + ms*c1over216 * VeloY + ms*c1over216 * VeloZ + c1o2*c1o36*((two*VeloY-vx2)*(two*VeloY-vx2)-vx2*vx2)*on; + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + } +} +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +////////////////////////////////////////////////////////////////////////////// +__global__ void QVelDev1h27( + int inx, + int iny, + real* vx, + real* vy, + real* vz, + real* DD, + int* k_Q, + real* QQ, + unsigned int numberOfBCnodes, + real om1, + real Phi, + real angularVelocity, + unsigned int* neighborX, + unsigned int* neighborY, + unsigned int* neighborZ, + real* coordX, + real* coordY, + real* coordZ, + unsigned long long numberOfLBnodes, + bool isEvenTimestep) +{ + Distributions27 D; + if (isEvenTimestep==true) + { + D.f[dP00] = &DD[dP00 * numberOfLBnodes]; + D.f[dM00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00P] = &DD[d00P * numberOfLBnodes]; + D.f[d00M] = &DD[d00M * numberOfLBnodes]; + D.f[dPP0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dMM0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dP0P] = &DD[dP0P * numberOfLBnodes]; + D.f[dM0M] = &DD[dM0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dP0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dM0P * numberOfLBnodes]; + D.f[d0PP] = &DD[d0PP * numberOfLBnodes]; + D.f[d0MM] = &DD[d0MM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0PM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dPPP * numberOfLBnodes]; + D.f[dMMP] = &DD[dMMP * numberOfLBnodes]; + D.f[dPMP] = &DD[dPMP * numberOfLBnodes]; + D.f[dMPP] = &DD[dMPP * numberOfLBnodes]; + D.f[dPPM] = &DD[dPPM * numberOfLBnodes]; + D.f[dMMM] = &DD[dMMM * numberOfLBnodes]; + D.f[dPMM] = &DD[dPMM * numberOfLBnodes]; + D.f[dMPM] = &DD[dMPM * numberOfLBnodes]; + } + else + { + D.f[dM00] = &DD[dP00 * numberOfLBnodes]; + D.f[dP00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00M] = &DD[d00P * numberOfLBnodes]; + D.f[d00P] = &DD[d00M * numberOfLBnodes]; + D.f[dMM0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dPP0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dM0M] = &DD[dP0P * numberOfLBnodes]; + D.f[dP0P] = &DD[dM0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dP0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dM0P * numberOfLBnodes]; + D.f[d0MM] = &DD[d0PP * numberOfLBnodes]; + D.f[d0PP] = &DD[d0MM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0PM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dMMM * numberOfLBnodes]; + D.f[dMMP] = &DD[dPPM * numberOfLBnodes]; + D.f[dPMP] = &DD[dMPM * numberOfLBnodes]; + D.f[dMPP] = &DD[dPMM * numberOfLBnodes]; + D.f[dPPM] = &DD[dMMP * numberOfLBnodes]; + D.f[dMMM] = &DD[dPPP * numberOfLBnodes]; + D.f[dPMM] = &DD[dMPP * numberOfLBnodes]; + D.f[dMPM] = &DD[dPMP * numberOfLBnodes]; + } + //////////////////////////////////////////////////////////////////////////////// + const unsigned x = threadIdx.x; // Globaler x-Index + const unsigned y = blockIdx.x; // Globaler y-Index + const unsigned z = blockIdx.y; // Globaler z-Index + + const unsigned nx = blockDim.x; + const unsigned ny = gridDim.x; + + const unsigned k = nx*(ny*z + y) + x; + ////////////////////////////////////////////////////////////////////////// + + if(k<numberOfBCnodes) + { + //////////////////////////////////////////////////////////////////////////////// + real VeloX = cosf(Phi)*vx[k] - sinf(Phi)*vy[k]; + real VeloY = sinf(Phi)*vx[k] + cosf(Phi)*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) + //////////////////////////////////////////////////////////////////////////////////// + //Ship + real coord0X = 281.125f;//7.5f; + real coord0Y = 388.125f;//7.5f; + real ux = - angularVelocity * (coordY[k_Q[k]] - coord0Y); + real uy = angularVelocity * (coordX[k_Q[k]] - coord0X); + real VeloXpur=VeloX; + real VeloYpur=VeloY; + VeloX-=ux; + VeloY-=uy; + //////////////////////////////////////////////////////////////////////////////// + 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[dP00 * numberOfBCnodes]; + q_dirW = &QQ[dM00 * numberOfBCnodes]; + q_dirN = &QQ[d0P0 * numberOfBCnodes]; + q_dirS = &QQ[d0M0 * numberOfBCnodes]; + q_dirT = &QQ[d00P * numberOfBCnodes]; + q_dirB = &QQ[d00M * numberOfBCnodes]; + q_dirNE = &QQ[dPP0 * numberOfBCnodes]; + q_dirSW = &QQ[dMM0 * numberOfBCnodes]; + q_dirSE = &QQ[dPM0 * numberOfBCnodes]; + q_dirNW = &QQ[dMP0 * numberOfBCnodes]; + q_dirTE = &QQ[dP0P * numberOfBCnodes]; + q_dirBW = &QQ[dM0M * numberOfBCnodes]; + q_dirBE = &QQ[dP0M * numberOfBCnodes]; + q_dirTW = &QQ[dM0P * numberOfBCnodes]; + q_dirTN = &QQ[d0PP * numberOfBCnodes]; + q_dirBS = &QQ[d0MM * numberOfBCnodes]; + q_dirBN = &QQ[d0PM * numberOfBCnodes]; + q_dirTS = &QQ[d0MP * numberOfBCnodes]; + q_dirTNE = &QQ[dPPP * numberOfBCnodes]; + q_dirTSW = &QQ[dMMP * numberOfBCnodes]; + q_dirTSE = &QQ[dPMP * numberOfBCnodes]; + q_dirTNW = &QQ[dMPP * numberOfBCnodes]; + q_dirBNE = &QQ[dPPM * numberOfBCnodes]; + q_dirBSW = &QQ[dMMM * numberOfBCnodes]; + q_dirBSE = &QQ[dPMM * numberOfBCnodes]; + q_dirBNW = &QQ[dMPM * 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]; + 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]; + //unsigned int nxny = nx*ny; + //unsigned int kzero= KQK; + //unsigned int ke = KQK; + //unsigned int kw = KQK + 1; + //unsigned int kn = KQK; + //unsigned int ks = KQK + nx; + //unsigned int kt = KQK; + //unsigned int kb = KQK + nxny; + //unsigned int ksw = KQK + nx + 1; + //unsigned int kne = KQK; + //unsigned int kse = KQK + nx; + //unsigned int knw = KQK + 1; + //unsigned int kbw = KQK + nxny + 1; + //unsigned int kte = KQK; + //unsigned int kbe = KQK + nxny; + //unsigned int ktw = KQK + 1; + //unsigned int kbs = KQK + nxny + nx; + //unsigned int ktn = KQK; + //unsigned int kbn = KQK + nxny; + //unsigned int kts = KQK + nx; + //unsigned int ktse = KQK + nx; + //unsigned int kbnw = KQK + nxny + 1; + //unsigned int ktnw = KQK + 1; + //unsigned int kbse = KQK + nxny + nx; + //unsigned int ktsw = KQK + nx + 1; + //unsigned int kbne = KQK + nxny; + //unsigned int ktne = KQK; + //unsigned int kbsw = KQK + nxny + nx + 1; + //////////////////////////////////////////////////////////////////////////////// + //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[dP00])[ke ]; + //f_E = (D.f[dM00])[kw ]; + //f_S = (D.f[d0P0])[kn ]; + //f_N = (D.f[d0M0])[ks ]; + //f_B = (D.f[d00P])[kt ]; + //f_T = (D.f[d00M])[kb ]; + //f_SW = (D.f[dPP0])[kne ]; + //f_NE = (D.f[dMM0])[ksw ]; + //f_NW = (D.f[dPM0])[kse ]; + //f_SE = (D.f[dMP0])[knw ]; + //f_BW = (D.f[dP0P])[kte ]; + //f_TE = (D.f[dM0M])[kbw ]; + //f_TW = (D.f[dP0M])[kbe ]; + //f_BE = (D.f[dM0P])[ktw ]; + //f_BS = (D.f[d0PP])[ktn ]; + //f_TN = (D.f[d0MM])[kbs ]; + //f_TS = (D.f[d0PM])[kbn ]; + //f_BN = (D.f[d0MP])[kts ]; + //f_BSW = (D.f[dPPP])[ktne ]; + //f_BNE = (D.f[dMMP])[ktsw ]; + //f_BNW = (D.f[dPMP])[ktse ]; + //f_BSE = (D.f[dMPP])[ktnw ]; + //f_TSW = (D.f[dPPM])[kbne ]; + //f_TNE = (D.f[dMMM])[kbsw ]; + //f_TNW = (D.f[dPMM])[kbse ]; + //f_TSE = (D.f[dMPM])[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[d000])[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); + + + //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); + + //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); + + //cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3); + + ////////////////////////////////////////////////////////////////////////// + if (isEvenTimestep==false) + { + D.f[dP00] = &DD[dP00 * numberOfLBnodes]; + D.f[dM00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00P] = &DD[d00P * numberOfLBnodes]; + D.f[d00M] = &DD[d00M * numberOfLBnodes]; + D.f[dPP0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dMM0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dP0P] = &DD[dP0P * numberOfLBnodes]; + D.f[dM0M] = &DD[dM0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dP0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dM0P * numberOfLBnodes]; + D.f[d0PP] = &DD[d0PP * numberOfLBnodes]; + D.f[d0MM] = &DD[d0MM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0PM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dPPP * numberOfLBnodes]; + D.f[dMMP] = &DD[dMMP * numberOfLBnodes]; + D.f[dPMP] = &DD[dPMP * numberOfLBnodes]; + D.f[dMPP] = &DD[dMPP * numberOfLBnodes]; + D.f[dPPM] = &DD[dPPM * numberOfLBnodes]; + D.f[dMMM] = &DD[dMMM * numberOfLBnodes]; + D.f[dPMM] = &DD[dPMM * numberOfLBnodes]; + D.f[dMPM] = &DD[dMPM * numberOfLBnodes]; + } + else + { + D.f[dM00] = &DD[dP00 * numberOfLBnodes]; + D.f[dP00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00M] = &DD[d00P * numberOfLBnodes]; + D.f[d00P] = &DD[d00M * numberOfLBnodes]; + D.f[dMM0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dPP0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dM0M] = &DD[dP0P * numberOfLBnodes]; + D.f[dP0P] = &DD[dM0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dP0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dM0P * numberOfLBnodes]; + D.f[d0MM] = &DD[d0PP * numberOfLBnodes]; + D.f[d0PP] = &DD[d0MM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0PM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dMMM * numberOfLBnodes]; + D.f[dMMP] = &DD[dPPM * numberOfLBnodes]; + D.f[dPMP] = &DD[dMPM * numberOfLBnodes]; + D.f[dMPP] = &DD[dPMM * numberOfLBnodes]; + D.f[dPPM] = &DD[dMMP * numberOfLBnodes]; + D.f[dMMM] = &DD[dPPP * numberOfLBnodes]; + D.f[dPMM] = &DD[dMPP * numberOfLBnodes]; + D.f[dMPM] = &DD[dPMP * numberOfLBnodes]; + } + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //Test + //(D.f[d000])[k]=c1o10; + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + //ToDo anders Klammern + + //q = q_dirE[k]; + //if (q>=zero && q<=one) + //{ + // feq=c2over27* (drho/*+three*( vx1 )*/+c9over2*( vx1 )*( vx1 )-cu_sq); + // (D.f[dM00])[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[dM00])[kw]=zero; + //} + + //q = q_dirW[k]; + //if (q>=zero && q<=one) + //{ + // feq=c2over27* (drho/*+three*(-vx1 )*/+c9over2*(-vx1 )*(-vx1 )-cu_sq); + // (D.f[dP00])[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[dP00])[ke]=zero; + //} + + //q = q_dirN[k]; + //if (q>=zero && q<=one) + //{ + // feq=c2over27* (drho/*+three*( vx2 )*/+c9over2*( vx2 )*( vx2 )-cu_sq); + // (D.f[d0M0])[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[d0M0])[ks]=zero; + //} + + //q = q_dirS[k]; + //if (q>=zero && q<=one) + //{ + // feq=c2over27* (drho/*+three*( -vx2 )*/+c9over2*( -vx2 )*( -vx2 )-cu_sq); + // (D.f[d0P0])[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[d0P0])[kn]=zero; + //} + + //q = q_dirT[k]; + //if (q>=zero && q<=one) + //{ + // feq=c2over27* (drho/*+three*( vx3)*/+c9over2*( vx3)*( vx3)-cu_sq); + // (D.f[d00M])[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[d00M])[kb]=one; + //} + + //q = q_dirB[k]; + //if (q>=zero && q<=one) + //{ + // feq=c2over27* (drho/*+three*( -vx3)*/+c9over2*( -vx3)*( -vx3)-cu_sq); + // (D.f[d00P])[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[d00P])[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[dMM0])[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[dMM0])[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[dPP0])[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[dPP0])[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[dMP0])[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[dMP0])[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[dPM0])[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[dPM0])[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[dM0M])[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[dM0M])[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[dP0P])[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[dP0P])[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[dM0P])[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[dM0P])[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[dP0M])[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[dP0M])[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[d0MM])[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[d0MM])[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[d0PP])[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[d0PP])[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[d0MP])[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[d0MP])[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[d0PM])[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[d0PM])[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[dMMM])[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[dMMM])[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[dPPP])[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[dPPP])[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[dMMP])[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[dMMP])[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[dPPM])[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[dPPM])[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[dMPM])[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[dMPM])[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[dPMP])[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[dPMP])[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[dMPP])[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[dMPP])[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[dPMM])[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[dPMM])[kbse]=zero; + //} + + ///////// equilibrium BC + cu_sq=c3o2*(VeloX*VeloX +VeloY*VeloY); + VeloXpur*=-c1o1; + VeloYpur*=-c1o1; + vx3=c0o1; + drho=c0o1; + q = q_dirE[k]; + if (q>=c0o1 && q<=c1o1) + { + feq=c2o27* (drho+c3o1*( VeloXpur )+c9o2*( VeloX )*( VeloX )-cu_sq); + (D.f[dM00])[kw]=feq; + //(D.f[dM00])[kw]=zero; + } + + q = q_dirW[k]; + if (q>=c0o1 && q<=c1o1) + { + feq=c2o27* (drho+c3o1*(-VeloXpur )+c9o2*(-VeloX )*(-VeloX )-cu_sq); + (D.f[dP00])[ke]=feq; + //(D.f[dP00])[ke]=zero; + } + + q = q_dirN[k]; + if (q>=c0o1 && q<=c1o1) + { + feq=c2o27* (drho+c3o1*( VeloYpur )+c9o2*( VeloY )*( VeloY )-cu_sq); + (D.f[d0M0])[ks]=feq; + //(D.f[d0M0])[ks]=zero; + } + + q = q_dirS[k]; + if (q>=c0o1 && q<=c1o1) + { + feq=c2o27* (drho+c3o1*( -VeloYpur )+c9o2*( -VeloY )*( -VeloY )-cu_sq); + (D.f[d0P0])[kn]=feq; + //(D.f[d0P0])[kn]=zero; + } + + q = q_dirT[k]; + if (q>=c0o1 && q<=c1o1) + { + feq=c2o27* (drho+c3o1*( vx3)+c9o2*( vx3)*( vx3)-cu_sq); + (D.f[d00M])[kb]=feq; + //(D.f[d00M])[kb]=one; + } + + q = q_dirB[k]; + if (q>=c0o1 && q<=c1o1) + { + feq=c2o27* (drho+c3o1*( -vx3)+c9o2*( -vx3)*( -vx3)-cu_sq); + (D.f[d00P])[kt]=feq; + //(D.f[d00P])[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[dMM0])[ksw]=feq; + //(D.f[dMM0])[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[dPP0])[kne]=feq; + //(D.f[dPP0])[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[dMP0])[knw]=feq; + //(D.f[dMP0])[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[dPM0])[kse]=feq; + //(D.f[dPM0])[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[dM0M])[kbw]=feq; + //(D.f[dM0M])[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[dP0P])[kte]=feq; + //(D.f[dP0P])[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[dM0P])[ktw]=feq; + //(D.f[dM0P])[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[dP0M])[kbe]=feq; + //(D.f[dP0M])[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[d0MM])[kbs]=feq; + //(D.f[d0MM])[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[d0PP])[ktn]=feq; + //(D.f[d0PP])[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[d0MP])[kts]=feq; + //(D.f[d0MP])[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[d0PM])[kbn]=feq; + //(D.f[d0PM])[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[dMMM])[kbsw]=feq; + //(D.f[dMMM])[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[dPPP])[ktne]=feq; + //(D.f[dPPP])[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[dMMP])[ktsw]=feq; + //(D.f[dMMP])[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[dPPM])[kbne]=feq; + //(D.f[dPPM])[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[dMPM])[kbnw]=feq; + //(D.f[dMPM])[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[dPMP])[ktse]=feq; + //(D.f[dPMP])[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[dMPP])[ktnw]=feq; + //(D.f[dMPP])[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[dPMM])[kbse]=feq; + //(D.f[dPMM])[kbse]=zero; + } + + } +} +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +////////////////////////////////////////////////////////////////////////////// +__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 long long numberOfLBnodes, + bool isEvenTimestep) +{ + ////////////////////////////////////////////////////////////////////////// + //! The velocity boundary condition is executed in the following steps + //! + //////////////////////////////////////////////////////////////////////////////// + //! - Get node index coordinates from threadIdx, blockIdx, blockDim and gridDim. + //! + const unsigned nodeIndex = getNodeIndex(); + + ////////////////////////////////////////////////////////////////////////// + //! - Run for all indices in size of boundary condition (numberOfBCnodes) + //! + if(nodeIndex < 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); + + //////////////////////////////////////////////////////////////////////////////// + //! - Set local velocities + //! + real VeloX = velocityX[nodeIndex]; + real VeloY = velocityY[nodeIndex]; + real VeloZ = velocityZ[nodeIndex]; + + //////////////////////////////////////////////////////////////////////////////// + //! - Set local subgrid distances (q's) + //! + SubgridDistances27 subgridD; + getPointersToSubgridDistances(subgridD, subgridDistances, numberOfBCnodes); + + //////////////////////////////////////////////////////////////////////////////// + //! - Set neighbor indices (necessary for indirect addressing) + //! + unsigned int indexOfBCnode = subgridDistanceIndices[nodeIndex]; + 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 = indexOfBCnode; + unsigned int kse = ks; + unsigned int knw = kw; + unsigned int kbw = neighborZ[kw]; + unsigned int kte = indexOfBCnode; + unsigned int kbe = kb; + unsigned int ktw = kw; + unsigned int kbs = neighborZ[ks]; + unsigned int ktn = indexOfBCnode; + 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 = indexOfBCnode; + unsigned int kbsw = neighborZ[ksw]; + + //////////////////////////////////////////////////////////////////////////////// + //! - Set local distributions + //! + real f_W = (dist.f[dP00])[ke ]; + real f_E = (dist.f[dM00])[kw ]; + real f_S = (dist.f[d0P0])[kn ]; + real f_N = (dist.f[d0M0])[ks ]; + real f_B = (dist.f[d00P])[kt ]; + real f_T = (dist.f[d00M])[kb ]; + real f_SW = (dist.f[dPP0])[kne ]; + real f_NE = (dist.f[dMM0])[ksw ]; + real f_NW = (dist.f[dPM0])[kse ]; + real f_SE = (dist.f[dMP0])[knw ]; + real f_BW = (dist.f[dP0P])[kte ]; + real f_TE = (dist.f[dM0M])[kbw ]; + real f_TW = (dist.f[dP0M])[kbe ]; + real f_BE = (dist.f[dM0P])[ktw ]; + real f_BS = (dist.f[d0PP])[ktn ]; + real f_TN = (dist.f[d0MM])[kbs ]; + real f_TS = (dist.f[d0PM])[kbn ]; + real f_BN = (dist.f[d0MP])[kts ]; + real f_BSW = (dist.f[dPPP])[ktne ]; + real f_BNE = (dist.f[dMMP])[ktsw ]; + real f_BNW = (dist.f[dPMP])[ktse ]; + real f_BSE = (dist.f[dMPP])[ktnw ]; + real f_TSW = (dist.f[dPPM])[kbne ]; + real f_TNE = (dist.f[dMMM])[kbsw ]; + real f_TNW = (dist.f[dPMM])[kbse ]; + real f_TSE = (dist.f[dMPM])[kbnw ]; + + //////////////////////////////////////////////////////////////////////////////// + //! - 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[d000])[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); + + 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); + + //////////////////////////////////////////////////////////////////////////////// + //! - Update distributions with subgrid distance (q) between zero and one + //! + real feq, q, velocityLB, velocityBC; + q = (subgridD.q[dP00])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) // only update distribution for q between zero and one + { + velocityLB = vx1; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c2o27); + velocityBC = VeloX; + (dist.f[dM00])[kw] = getInterpolatedDistributionForVeloBC(q, f_E, f_W, feq, omega, velocityBC, c2o27); + } + + q = (subgridD.q[dM00])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) + { + velocityLB = -vx1; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c2o27); + velocityBC = -VeloX; + (dist.f[dP00])[ke] = getInterpolatedDistributionForVeloBC(q, f_W, f_E, feq, omega, velocityBC, c2o27); + } + + q = (subgridD.q[d0P0])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) + { + velocityLB = vx2; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c2o27); + velocityBC = VeloY; + (dist.f[d0M0])[ks] = getInterpolatedDistributionForVeloBC(q, f_N, f_S, feq, omega, velocityBC, c2o27); + } + + q = (subgridD.q[d0M0])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) + { + velocityLB = -vx2; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c2o27); + velocityBC = -VeloY; + (dist.f[d0P0])[kn] = getInterpolatedDistributionForVeloBC(q, f_S, f_N, feq, omega, velocityBC, c2o27); + } + + q = (subgridD.q[d00P])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) + { + velocityLB = vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c2o27); + velocityBC = VeloZ; + (dist.f[d00M])[kb] = getInterpolatedDistributionForVeloBC(q, f_T, f_B, feq, omega, velocityBC, c2o27); + } + + q = (subgridD.q[d00M])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) + { + velocityLB = -vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c2o27); + velocityBC = -VeloZ; + (dist.f[d00P])[kt] = getInterpolatedDistributionForVeloBC(q, f_B, f_T, feq, omega, velocityBC, c2o27); + } + + q = (subgridD.q[dPP0])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) + { + velocityLB = vx1 + vx2; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + velocityBC = VeloX + VeloY; + (dist.f[dMM0])[ksw] = getInterpolatedDistributionForVeloBC(q, f_NE, f_SW, feq, omega, velocityBC, c1o54); + } + + q = (subgridD.q[dMM0])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) + { + velocityLB = -vx1 - vx2; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + velocityBC = -VeloX - VeloY; + (dist.f[dPP0])[kne] = getInterpolatedDistributionForVeloBC(q, f_SW, f_NE, feq, omega, velocityBC, c1o54); + } + + q = (subgridD.q[dPM0])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) + { + velocityLB = vx1 - vx2; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + velocityBC = VeloX - VeloY; + (dist.f[dMP0])[knw] = getInterpolatedDistributionForVeloBC(q, f_SE, f_NW, feq, omega, velocityBC, c1o54); + } + + q = (subgridD.q[dMP0])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) + { + velocityLB = -vx1 + vx2; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + velocityBC = -VeloX + VeloY; + (dist.f[dPM0])[kse] = getInterpolatedDistributionForVeloBC(q, f_NW, f_SE, feq, omega, velocityBC, c1o54); + } + + q = (subgridD.q[dP0P])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) + { + velocityLB = vx1 + vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + velocityBC = VeloX + VeloZ; + (dist.f[dM0M])[kbw] = getInterpolatedDistributionForVeloBC(q, f_TE, f_BW, feq, omega, velocityBC, c1o54); + } + + q = (subgridD.q[dM0M])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) + { + velocityLB = -vx1 - vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + velocityBC = -VeloX - VeloZ; + (dist.f[dP0P])[kte] = getInterpolatedDistributionForVeloBC(q, f_BW, f_TE, feq, omega, velocityBC, c1o54); + } + + q = (subgridD.q[dP0M])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) + { + velocityLB = vx1 - vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + velocityBC = VeloX - VeloZ; + (dist.f[dM0P])[ktw] = getInterpolatedDistributionForVeloBC(q, f_BE, f_TW, feq, omega, velocityBC, c1o54); + } + + q = (subgridD.q[dM0P])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) + { + velocityLB = -vx1 + vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + velocityBC = -VeloX + VeloZ; + (dist.f[dP0M])[kbe] = getInterpolatedDistributionForVeloBC(q, f_TW, f_BE, feq, omega, velocityBC, c1o54); + } + + q = (subgridD.q[d0PP])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) + { + velocityLB = vx2 + vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + velocityBC = VeloY + VeloZ; + (dist.f[d0MM])[kbs] = getInterpolatedDistributionForVeloBC(q, f_TN, f_BS, feq, omega, velocityBC, c1o54); + } + + q = (subgridD.q[d0MM])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) + { + velocityLB = -vx2 - vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + velocityBC = -VeloY - VeloZ; + (dist.f[d0PP])[ktn] = getInterpolatedDistributionForVeloBC(q, f_BS, f_TN, feq, omega, velocityBC, c1o54); + } + + q = (subgridD.q[d0PM])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) + { + velocityLB = vx2 - vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + velocityBC = VeloY - VeloZ; + (dist.f[d0MP])[kts] = getInterpolatedDistributionForVeloBC(q, f_BN, f_TS, feq, omega, velocityBC, c1o54); + } + + q = (subgridD.q[d0MP])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) + { + velocityLB = -vx2 + vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o54); + velocityBC = -VeloY + VeloZ; + (dist.f[d0PM])[kbn] = getInterpolatedDistributionForVeloBC(q, f_TS, f_BN, feq, omega, velocityBC, c1o54); + } + + q = (subgridD.q[dPPP])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) + { + velocityLB = vx1 + vx2 + vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); + velocityBC = VeloX + VeloY + VeloZ; + (dist.f[dMMM])[kbsw] = getInterpolatedDistributionForVeloBC(q, f_TNE, f_BSW, feq, omega, velocityBC, c1o216); + } + + q = (subgridD.q[dMMM])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) + { + velocityLB = -vx1 - vx2 - vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); + velocityBC = -VeloX - VeloY - VeloZ; + (dist.f[dPPP])[ktne] = getInterpolatedDistributionForVeloBC(q, f_BSW, f_TNE, feq, omega, velocityBC, c1o216); + } + + q = (subgridD.q[dPPM])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) + { + velocityLB = vx1 + vx2 - vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); + velocityBC = VeloX + VeloY - VeloZ; + (dist.f[dMMP])[ktsw] = getInterpolatedDistributionForVeloBC(q, f_BNE, f_TSW, feq, omega, velocityBC, c1o216); + } + + q = (subgridD.q[dMMP])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) + { + velocityLB = -vx1 - vx2 + vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); + velocityBC = -VeloX - VeloY + VeloZ; + (dist.f[dPPM])[kbne] = getInterpolatedDistributionForVeloBC(q, f_TSW, f_BNE, feq, omega, velocityBC, c1o216); + } + + q = (subgridD.q[dPMP])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) + { + velocityLB = vx1 - vx2 + vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); + velocityBC = VeloX - VeloY + VeloZ; + (dist.f[dMPM])[kbnw] = getInterpolatedDistributionForVeloBC(q, f_TSE, f_BNW, feq, omega, velocityBC, c1o216); + } + + q = (subgridD.q[dMPM])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) + { + velocityLB = -vx1 + vx2 - vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); + velocityBC = -VeloX + VeloY - VeloZ; + (dist.f[dPMP])[ktse] = getInterpolatedDistributionForVeloBC(q, f_BNW, f_TSE, feq, omega, velocityBC, c1o216); + } + + q = (subgridD.q[dPMM])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) + { + velocityLB = vx1 - vx2 - vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); + velocityBC = VeloX - VeloY - VeloZ; + (dist.f[dMPP])[ktnw] = getInterpolatedDistributionForVeloBC(q, f_BSE, f_TNW, feq, omega, velocityBC, c1o216); + } + + q = (subgridD.q[dMPP])[nodeIndex]; + if (q>=c0o1 && q<=c1o1) + { + velocityLB = -vx1 + vx2 + vx3; + feq = getEquilibriumForBC(drho, velocityLB, cu_sq, c1o216); + velocityBC = -VeloX + VeloY + VeloZ; + (dist.f[dPMM])[kbse] = getInterpolatedDistributionForVeloBC(q, f_TNW, f_BSE, feq, omega, velocityBC, c1o216); + } + } +} +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +////////////////////////////////////////////////////////////////////////////// +__global__ void QVelDevice27( + int inx, + int iny, + real* vx, + real* vy, + real* vz, + real* DD, + int* k_Q, + real* QQ, + unsigned int numberOfBCnodes, + real om1, + unsigned int* neighborX, + unsigned int* neighborY, + unsigned int* neighborZ, + unsigned long long numberOfLBnodes, + bool isEvenTimestep) +{ + Distributions27 D; + if (isEvenTimestep==true) + { + D.f[dP00] = &DD[dP00 * numberOfLBnodes]; + D.f[dM00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00P] = &DD[d00P * numberOfLBnodes]; + D.f[d00M] = &DD[d00M * numberOfLBnodes]; + D.f[dPP0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dMM0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dP0P] = &DD[dP0P * numberOfLBnodes]; + D.f[dM0M] = &DD[dM0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dP0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dM0P * numberOfLBnodes]; + D.f[d0PP] = &DD[d0PP * numberOfLBnodes]; + D.f[d0MM] = &DD[d0MM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0PM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dPPP * numberOfLBnodes]; + D.f[dMMP] = &DD[dMMP * numberOfLBnodes]; + D.f[dPMP] = &DD[dPMP * numberOfLBnodes]; + D.f[dMPP] = &DD[dMPP * numberOfLBnodes]; + D.f[dPPM] = &DD[dPPM * numberOfLBnodes]; + D.f[dMMM] = &DD[dMMM * numberOfLBnodes]; + D.f[dPMM] = &DD[dPMM * numberOfLBnodes]; + D.f[dMPM] = &DD[dMPM * numberOfLBnodes]; + } + else + { + D.f[dM00] = &DD[dP00 * numberOfLBnodes]; + D.f[dP00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00M] = &DD[d00P * numberOfLBnodes]; + D.f[d00P] = &DD[d00M * numberOfLBnodes]; + D.f[dMM0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dPP0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dM0M] = &DD[dP0P * numberOfLBnodes]; + D.f[dP0P] = &DD[dM0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dP0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dM0P * numberOfLBnodes]; + D.f[d0MM] = &DD[d0PP * numberOfLBnodes]; + D.f[d0PP] = &DD[d0MM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0PM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dMMM * numberOfLBnodes]; + D.f[dMMP] = &DD[dPPM * numberOfLBnodes]; + D.f[dPMP] = &DD[dMPM * numberOfLBnodes]; + D.f[dMPP] = &DD[dPMM * numberOfLBnodes]; + D.f[dPPM] = &DD[dMMP * numberOfLBnodes]; + D.f[dMMM] = &DD[dPPP * numberOfLBnodes]; + D.f[dPMM] = &DD[dMPP * numberOfLBnodes]; + D.f[dMPM] = &DD[dPMP * numberOfLBnodes]; + } + //////////////////////////////////////////////////////////////////////////////// + const unsigned x = threadIdx.x; // Globaler x-Index + const unsigned y = blockIdx.x; // Globaler y-Index + const unsigned z = blockIdx.y; // Globaler z-Index + + const unsigned nx = blockDim.x; + const unsigned ny = gridDim.x; + + const unsigned k = nx*(ny*z + y) + x; + ////////////////////////////////////////////////////////////////////////// + + if(k<numberOfBCnodes) + { + //////////////////////////////////////////////////////////////////////////////// + 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) + //////////////////////////////////////////////////////////////////////////////// + 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[dP00 * numberOfBCnodes]; + q_dirW = &QQ[dM00 * numberOfBCnodes]; + q_dirN = &QQ[d0P0 * numberOfBCnodes]; + q_dirS = &QQ[d0M0 * numberOfBCnodes]; + q_dirT = &QQ[d00P * numberOfBCnodes]; + q_dirB = &QQ[d00M * numberOfBCnodes]; + q_dirNE = &QQ[dPP0 * numberOfBCnodes]; + q_dirSW = &QQ[dMM0 * numberOfBCnodes]; + q_dirSE = &QQ[dPM0 * numberOfBCnodes]; + q_dirNW = &QQ[dMP0 * numberOfBCnodes]; + q_dirTE = &QQ[dP0P * numberOfBCnodes]; + q_dirBW = &QQ[dM0M * numberOfBCnodes]; + q_dirBE = &QQ[dP0M * numberOfBCnodes]; + q_dirTW = &QQ[dM0P * numberOfBCnodes]; + q_dirTN = &QQ[d0PP * numberOfBCnodes]; + q_dirBS = &QQ[d0MM * numberOfBCnodes]; + q_dirBN = &QQ[d0PM * numberOfBCnodes]; + q_dirTS = &QQ[d0MP * numberOfBCnodes]; + q_dirTNE = &QQ[dPPP * numberOfBCnodes]; + q_dirTSW = &QQ[dMMP * numberOfBCnodes]; + q_dirTSE = &QQ[dPMP * numberOfBCnodes]; + q_dirTNW = &QQ[dMPP * numberOfBCnodes]; + q_dirBNE = &QQ[dPPM * numberOfBCnodes]; + q_dirBSW = &QQ[dMMM * numberOfBCnodes]; + q_dirBSE = &QQ[dPMM * numberOfBCnodes]; + q_dirBNW = &QQ[dMPM * 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]; + 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]; + //unsigned int nxny = nx*ny; + //unsigned int kzero= KQK; + //unsigned int ke = KQK; + //unsigned int kw = KQK + 1; + //unsigned int kn = KQK; + //unsigned int ks = KQK + nx; + //unsigned int kt = KQK; + //unsigned int kb = KQK + nxny; + //unsigned int ksw = KQK + nx + 1; + //unsigned int kne = KQK; + //unsigned int kse = KQK + nx; + //unsigned int knw = KQK + 1; + //unsigned int kbw = KQK + nxny + 1; + //unsigned int kte = KQK; + //unsigned int kbe = KQK + nxny; + //unsigned int ktw = KQK + 1; + //unsigned int kbs = KQK + nxny + nx; + //unsigned int ktn = KQK; + //unsigned int kbn = KQK + nxny; + //unsigned int kts = KQK + nx; + //unsigned int ktse = KQK + nx; + //unsigned int kbnw = KQK + nxny + 1; + //unsigned int ktnw = KQK + 1; + //unsigned int kbse = KQK + nxny + nx; + //unsigned int ktsw = KQK + nx + 1; + //unsigned int kbne = KQK + nxny; + //unsigned int ktne = KQK; + //unsigned int kbsw = KQK + nxny + nx + 1; + //////////////////////////////////////////////////////////////////////////////// + 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[dP00])[ke ]; + f_E = (D.f[dM00])[kw ]; + f_S = (D.f[d0P0])[kn ]; + f_N = (D.f[d0M0])[ks ]; + f_B = (D.f[d00P])[kt ]; + f_T = (D.f[d00M])[kb ]; + f_SW = (D.f[dPP0])[kne ]; + f_NE = (D.f[dMM0])[ksw ]; + f_NW = (D.f[dPM0])[kse ]; + f_SE = (D.f[dMP0])[knw ]; + f_BW = (D.f[dP0P])[kte ]; + f_TE = (D.f[dM0M])[kbw ]; + f_TW = (D.f[dP0M])[kbe ]; + f_BE = (D.f[dM0P])[ktw ]; + f_BS = (D.f[d0PP])[ktn ]; + f_TN = (D.f[d0MM])[kbs ]; + f_TS = (D.f[d0PM])[kbn ]; + f_BN = (D.f[d0MP])[kts ]; + f_BSW = (D.f[dPPP])[ktne ]; + f_BNE = (D.f[dMMP])[ktsw ]; + f_BNW = (D.f[dPMP])[ktse ]; + f_BSE = (D.f[dMPP])[ktnw ]; + f_TSW = (D.f[dPPM])[kbne ]; + f_TNE = (D.f[dMMM])[kbsw ]; + f_TNW = (D.f[dPMM])[kbse ]; + f_TSE = (D.f[dMPM])[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[d000])[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); + + + 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); + + 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); + + ////////////////////////////////////////////////////////////////////////// + if (isEvenTimestep==false) + { + D.f[dP00] = &DD[dP00 * numberOfLBnodes]; + D.f[dM00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00P] = &DD[d00P * numberOfLBnodes]; + D.f[d00M] = &DD[d00M * numberOfLBnodes]; + D.f[dPP0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dMM0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dP0P] = &DD[dP0P * numberOfLBnodes]; + D.f[dM0M] = &DD[dM0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dP0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dM0P * numberOfLBnodes]; + D.f[d0PP] = &DD[d0PP * numberOfLBnodes]; + D.f[d0MM] = &DD[d0MM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0PM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dPPP * numberOfLBnodes]; + D.f[dMMP] = &DD[dMMP * numberOfLBnodes]; + D.f[dPMP] = &DD[dPMP * numberOfLBnodes]; + D.f[dMPP] = &DD[dMPP * numberOfLBnodes]; + D.f[dPPM] = &DD[dPPM * numberOfLBnodes]; + D.f[dMMM] = &DD[dMMM * numberOfLBnodes]; + D.f[dPMM] = &DD[dPMM * numberOfLBnodes]; + D.f[dMPM] = &DD[dMPM * numberOfLBnodes]; + } + else + { + D.f[dM00] = &DD[dP00 * numberOfLBnodes]; + D.f[dP00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00M] = &DD[d00P * numberOfLBnodes]; + D.f[d00P] = &DD[d00M * numberOfLBnodes]; + D.f[dMM0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dPP0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dM0M] = &DD[dP0P * numberOfLBnodes]; + D.f[dP0P] = &DD[dM0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dP0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dM0P * numberOfLBnodes]; + D.f[d0MM] = &DD[d0PP * numberOfLBnodes]; + D.f[d0PP] = &DD[d0MM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0PM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dMMM * numberOfLBnodes]; + D.f[dMMP] = &DD[dPPM * numberOfLBnodes]; + D.f[dPMP] = &DD[dMPM * numberOfLBnodes]; + D.f[dMPP] = &DD[dPMM * numberOfLBnodes]; + D.f[dPPM] = &DD[dMMP * numberOfLBnodes]; + D.f[dMMM] = &DD[dPPP * numberOfLBnodes]; + D.f[dPMM] = &DD[dMPP * numberOfLBnodes]; + D.f[dMPM] = &DD[dPMP * numberOfLBnodes]; + } + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //Test + //(D.f[d000])[k]=c1o10; + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + //ToDo anders Klammern + + q = q_dirE[k]; + if (q>=c0o1 && q<=c1o1) + { + feq=c2o27* (drho/*+three*( vx1 )*/+c9o2*( vx1 )*( vx1 )-cu_sq); + (D.f[dM00])[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[dM00])[kw]=zero; + } + + q = q_dirW[k]; + if (q>=c0o1 && q<=c1o1) + { + feq=c2o27* (drho/*+three*(-vx1 )*/+c9o2*(-vx1 )*(-vx1 )-cu_sq); + (D.f[dP00])[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[dP00])[ke]=zero; + } + + q = q_dirN[k]; + if (q>=c0o1 && q<=c1o1) + { + feq=c2o27* (drho/*+three*( vx2 )*/+c9o2*( vx2 )*( vx2 )-cu_sq); + (D.f[d0M0])[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[d0M0])[ks]=zero; + } + + q = q_dirS[k]; + if (q>=c0o1 && q<=c1o1) + { + feq=c2o27* (drho/*+three*( -vx2 )*/+c9o2*( -vx2 )*( -vx2 )-cu_sq); + (D.f[d0P0])[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[d0P0])[kn]=zero; + } + + q = q_dirT[k]; + if (q>=c0o1 && q<=c1o1) + { + feq=c2o27* (drho/*+three*( vx3)*/+c9o2*( vx3)*( vx3)-cu_sq); + (D.f[d00M])[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[d00M])[kb]=one; + } + + q = q_dirB[k]; + if (q>=c0o1 && q<=c1o1) + { + feq=c2o27* (drho/*+three*( -vx3)*/+c9o2*( -vx3)*( -vx3)-cu_sq); + (D.f[d00P])[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[d00P])[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[dMM0])[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[dMM0])[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[dPP0])[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[dPP0])[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[dMP0])[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[dMP0])[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[dPM0])[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[dPM0])[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[dM0M])[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[dM0M])[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[dP0P])[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[dP0P])[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[dM0P])[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[dM0P])[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[dP0M])[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[dP0M])[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[d0MM])[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[d0MM])[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[d0PP])[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[d0PP])[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[d0MP])[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[d0MP])[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[d0PM])[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[d0PM])[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[dMMM])[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[dMMM])[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[dPPP])[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[dPPP])[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[dMMP])[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[dMMP])[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[dPPM])[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[dPPM])[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[dMPM])[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[dMPM])[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[dPMP])[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[dPMP])[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[dMPP])[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[dMPP])[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[dPMM])[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[dPMM])[kbse]=zero; + } + } +} +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +//////////////////////////////////////////////////////////////////////////////// +__global__ void PropellerBC( + unsigned int* neighborX, + unsigned int* neighborY, + unsigned int* neighborZ, + real* rho, + real* ux, + real* uy, + real* uz, + int* k_Q, + unsigned int size_Prop, + unsigned long long numberOfLBnodes, + unsigned int* bcMatD, + real* DD, + bool EvenOrOdd) +{ + //////////////////////////////////////////////////////////////////////////////// + const unsigned x = threadIdx.x; // Globaler x-Index + const unsigned y = blockIdx.x; // Globaler y-Index + const unsigned z = blockIdx.y; // Globaler z-Index + + const unsigned nx = blockDim.x; + const unsigned ny = gridDim.x; + + const unsigned k = nx*(ny*z + y) + x; + ////////////////////////////////////////////////////////////////////////// + + if(k<size_Prop) + { + //////////////////////////////////////////////////////////////////////////////// + Distributions27 D; + if (EvenOrOdd==true) + { + D.f[dP00] = &DD[dP00 * numberOfLBnodes]; + D.f[dM00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00P] = &DD[d00P * numberOfLBnodes]; + D.f[d00M] = &DD[d00M * numberOfLBnodes]; + D.f[dPP0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dMM0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dP0P] = &DD[dP0P * numberOfLBnodes]; + D.f[dM0M] = &DD[dM0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dP0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dM0P * numberOfLBnodes]; + D.f[d0PP] = &DD[d0PP * numberOfLBnodes]; + D.f[d0MM] = &DD[d0MM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0PM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dPPP * numberOfLBnodes]; + D.f[dMMP] = &DD[dMMP * numberOfLBnodes]; + D.f[dPMP] = &DD[dPMP * numberOfLBnodes]; + D.f[dMPP] = &DD[dMPP * numberOfLBnodes]; + D.f[dPPM] = &DD[dPPM * numberOfLBnodes]; + D.f[dMMM] = &DD[dMMM * numberOfLBnodes]; + D.f[dPMM] = &DD[dPMM * numberOfLBnodes]; + D.f[dMPM] = &DD[dMPM * numberOfLBnodes]; + } + else + { + D.f[dM00] = &DD[dP00 * numberOfLBnodes]; + D.f[dP00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00M] = &DD[d00P * numberOfLBnodes]; + D.f[d00P] = &DD[d00M * numberOfLBnodes]; + D.f[dMM0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dPP0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dM0M] = &DD[dP0P * numberOfLBnodes]; + D.f[dP0P] = &DD[dM0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dP0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dM0P * numberOfLBnodes]; + D.f[d0MM] = &DD[d0PP * numberOfLBnodes]; + D.f[d0PP] = &DD[d0MM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0PM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dMMM] = &DD[dPPP * numberOfLBnodes]; + D.f[dPPM] = &DD[dMMP * numberOfLBnodes]; + D.f[dMPM] = &DD[dPMP * numberOfLBnodes]; + D.f[dPMM] = &DD[dMPP * numberOfLBnodes]; + D.f[dMMP] = &DD[dPPM * numberOfLBnodes]; + D.f[dPPP] = &DD[dMMM * numberOfLBnodes]; + D.f[dMPP] = &DD[dPMM * numberOfLBnodes]; + D.f[dPMP] = &DD[dMPM * numberOfLBnodes]; + } + ////////////////////////////////////////////////////////////////////////// + unsigned int KQK = k_Q[k]; + unsigned int BC = bcMatD[KQK]; + if( (BC != GEO_SOLID) && (BC != GEO_VOID)) + { + ////////////////////////////////////////////////////////////////////////// + real vx1 = ux[k]; + real vx2 = uy[k]; + real vx3 = uz[k]; + //real vx1 = -c1o100; + //real vx2 = zero; + //real vx3 = zero; + ////////////////////////////////////////////////////////////////////////// + //index + ////////////////////////////////////////////////////////////////////////// + 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 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[d000])[kzero]; + f_E = (D.f[dP00])[ke ]; + f_W = (D.f[dM00])[kw ]; + f_N = (D.f[d0P0])[kn ]; + f_S = (D.f[d0M0])[ks ]; + f_T = (D.f[d00P])[kt ]; + f_B = (D.f[d00M])[kb ]; + f_NE = (D.f[dPP0])[kne ]; + f_SW = (D.f[dMM0])[ksw ]; + f_SE = (D.f[dPM0])[kse ]; + f_NW = (D.f[dMP0])[knw ]; + f_TE = (D.f[dP0P])[kte ]; + f_BW = (D.f[dM0M])[kbw ]; + f_BE = (D.f[dP0M])[kbe ]; + f_TW = (D.f[dM0P])[ktw ]; + f_TN = (D.f[d0PP])[ktn ]; + f_BS = (D.f[d0MM])[kbs ]; + f_BN = (D.f[d0PM])[kbn ]; + f_TS = (D.f[d0MP])[kts ]; + f_TNE = (D.f[dPPP])[ktne ]; + f_BSW = (D.f[dMMM])[kbsw ]; + f_BNE = (D.f[dPPM])[kbne ]; + f_TSW = (D.f[dMMP])[ktsw ]; + f_TSE = (D.f[dPMP])[ktse ]; + f_BNW = (D.f[dMPM])[kbnw ]; + f_BSE = (D.f[dPMM])[kbse ]; + f_TNW = (D.f[dMPP])[ktnw ]; + //f_W = (D.f[dP00])[ke ]; + //f_E = (D.f[dM00])[kw ]; + //f_S = (D.f[d0P0])[kn ]; + //f_N = (D.f[d0M0])[ks ]; + //f_B = (D.f[d00P])[kt ]; + //f_T = (D.f[d00M])[kb ]; + //f_SW = (D.f[dPP0])[kne ]; + //f_NE = (D.f[dMM0])[ksw ]; + //f_NW = (D.f[dPM0])[kse ]; + //f_SE = (D.f[dMP0])[knw ]; + //f_BW = (D.f[dP0P])[kte ]; + //f_TE = (D.f[dM0M])[kbw ]; + //f_TW = (D.f[dP0M])[kbe ]; + //f_BE = (D.f[dM0P])[ktw ]; + //f_BS = (D.f[d0PP])[ktn ]; + //f_TN = (D.f[d0MM])[kbs ]; + //f_TS = (D.f[d0PM])[kbn ]; + //f_BN = (D.f[d0MP])[kts ]; + //f_BSW = (D.f[dPPP])[ktne ]; + //f_TNE = (D.f[dMMM])[kbsw ]; + //f_TSW = (D.f[dPPM])[kbne ]; + //f_BNE = (D.f[dMMP])[ktsw ]; + //f_BNW = (D.f[dPMP])[ktse ]; + //f_TSE = (D.f[dMPM])[kbnw ]; + //f_TNW = (D.f[dPMM])[kbse ]; + //f_BSE = (D.f[dMPP])[ktnw ]; + ////////////////////////////////////////////////////////////////////////////////// + real vxo1, vxo2, vxo3, drho; + drho = /*zero;*/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 + f_ZERO; + + vxo1 = (((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); + + + vxo2 = ((-(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); + + vxo3 = (((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 cusq=c3o2*(vxo1*vxo1+vxo2*vxo2+vxo3*vxo3); + //vx1 = vx1 * two - vxo1; + //vx2 = vx2 * two - vxo2; + //vx3 = vx3 * two - vxo3; + real cusq2=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3); + + //f_ZERO = ((one+drho) * ( c8over27 *(one+(-cusq2)))) - c8over27; + //f_E = ((one+drho) * ( c2over27 *(one+three*( vx1 )+c9over2*( vx1 )*( vx1 )-cusq2))) - c2over27 ; + //f_W = ((one+drho) * ( c2over27 *(one+three*(-vx1 )+c9over2*(-vx1 )*(-vx1 )-cusq2))) - c2over27 ; + //f_N = ((one+drho) * ( c2over27 *(one+three*( vx2 )+c9over2*( vx2 )*( vx2 )-cusq2))) - c2over27 ; + //f_S = ((one+drho) * ( c2over27 *(one+three*( -vx2 )+c9over2*( -vx2 )*( -vx2 )-cusq2))) - c2over27 ; + //f_T = ((one+drho) * ( c2over27 *(one+three*( vx3)+c9over2*( vx3)*( vx3)-cusq2))) - c2over27 ; + //f_B = ((one+drho) * ( c2over27 *(one+three*( -vx3)+c9over2*( -vx3)*( -vx3)-cusq2))) - c2over27 ; + //f_NE = ((one+drho) * ( c1over54 *(one+three*( vx1+vx2 )+c9over2*( vx1+vx2 )*( vx1+vx2 )-cusq2))) - c1over54 ; + //f_SW = ((one+drho) * ( c1over54 *(one+three*(-vx1-vx2 )+c9over2*(-vx1-vx2 )*(-vx1-vx2 )-cusq2))) - c1over54 ; + //f_SE = ((one+drho) * ( c1over54 *(one+three*( vx1-vx2 )+c9over2*( vx1-vx2 )*( vx1-vx2 )-cusq2))) - c1over54 ; + //f_NW = ((one+drho) * ( c1over54 *(one+three*(-vx1+vx2 )+c9over2*(-vx1+vx2 )*(-vx1+vx2 )-cusq2))) - c1over54 ; + //f_TE = ((one+drho) * ( c1over54 *(one+three*( vx1 +vx3)+c9over2*( vx1 +vx3)*( vx1 +vx3)-cusq2))) - c1over54 ; + //f_BW = ((one+drho) * ( c1over54 *(one+three*(-vx1 -vx3)+c9over2*(-vx1 -vx3)*(-vx1 -vx3)-cusq2))) - c1over54 ; + //f_BE = ((one+drho) * ( c1over54 *(one+three*( vx1 -vx3)+c9over2*( vx1 -vx3)*( vx1 -vx3)-cusq2))) - c1over54 ; + //f_TW = ((one+drho) * ( c1over54 *(one+three*(-vx1 +vx3)+c9over2*(-vx1 +vx3)*(-vx1 +vx3)-cusq2))) - c1over54 ; + //f_TN = ((one+drho) * ( c1over54 *(one+three*( vx2+vx3)+c9over2*( vx2+vx3)*( vx2+vx3)-cusq2))) - c1over54 ; + //f_BS = ((one+drho) * ( c1over54 *(one+three*( -vx2-vx3)+c9over2*( -vx2-vx3)*( -vx2-vx3)-cusq2))) - c1over54 ; + //f_BN = ((one+drho) * ( c1over54 *(one+three*( vx2-vx3)+c9over2*( vx2-vx3)*( vx2-vx3)-cusq2))) - c1over54 ; + //f_TS = ((one+drho) * ( c1over54 *(one+three*( -vx2+vx3)+c9over2*( -vx2+vx3)*( -vx2+vx3)-cusq2))) - c1over54 ; + //f_TNE = ((one+drho) * ( c1over216*(one+three*( vx1+vx2+vx3)+c9over2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cusq2))) - c1over216; + //f_BSW = ((one+drho) * ( c1over216*(one+three*(-vx1-vx2-vx3)+c9over2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cusq2))) - c1over216; + //f_BNE = ((one+drho) * ( c1over216*(one+three*( vx1+vx2-vx3)+c9over2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cusq2))) - c1over216; + //f_TSW = ((one+drho) * ( c1over216*(one+three*(-vx1-vx2+vx3)+c9over2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cusq2))) - c1over216; + //f_TSE = ((one+drho) * ( c1over216*(one+three*( vx1-vx2+vx3)+c9over2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cusq2))) - c1over216; + //f_BNW = ((one+drho) * ( c1over216*(one+three*(-vx1+vx2-vx3)+c9over2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cusq2))) - c1over216; + //f_BSE = ((one+drho) * ( c1over216*(one+three*( vx1-vx2-vx3)+c9over2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cusq2))) - c1over216; + //f_TNW = ((one+drho) * ( c1over216*(one+three*(-vx1+vx2+vx3)+c9over2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cusq2))) - c1over216; + f_ZERO = f_ZERO + ((c1o1+drho) * (- c8o27* (-cusq) + c8o27* (-cusq2))); + f_E = f_E + ((c1o1+drho) * (- c2o27* (c3o1*( vxo1 )+c9o2*( vxo1 )*( vxo1 )-cusq) + c2o27* (c3o1*( vx1 )+c9o2*( vx1 )*( vx1 )-cusq2))); + f_W = f_W + ((c1o1+drho) * (- c2o27* (c3o1*(-vxo1 )+c9o2*(-vxo1 )*(-vxo1 )-cusq) + c2o27* (c3o1*(-vx1 )+c9o2*(-vx1 )*(-vx1 )-cusq2))); + f_N = f_N + ((c1o1+drho) * (- c2o27* (c3o1*( vxo2 )+c9o2*( vxo2 )*( vxo2 )-cusq) + c2o27* (c3o1*( vx2 )+c9o2*( vx2 )*( vx2 )-cusq2))); + f_S = f_S + ((c1o1+drho) * (- c2o27* (c3o1*( -vxo2 )+c9o2*( -vxo2 )*( -vxo2 )-cusq) + c2o27* (c3o1*( -vx2 )+c9o2*( -vx2 )*( -vx2 )-cusq2))); + f_T = f_T + ((c1o1+drho) * (- c2o27* (c3o1*( vxo3)+c9o2*( vxo3)*( vxo3)-cusq) + c2o27* (c3o1*( vx3)+c9o2*( vx3)*( vx3)-cusq2))); + f_B = f_B + ((c1o1+drho) * (- c2o27* (c3o1*( -vxo3)+c9o2*( -vxo3)*( -vxo3)-cusq) + c2o27* (c3o1*( -vx3)+c9o2*( -vx3)*( -vx3)-cusq2))); + f_NE = f_NE + ((c1o1+drho) * (- c1o54* (c3o1*( vxo1+vxo2 )+c9o2*( vxo1+vxo2 )*( vxo1+vxo2 )-cusq) + c1o54* (c3o1*( vx1+vx2 )+c9o2*( vx1+vx2 )*( vx1+vx2 )-cusq2))); + f_SW = f_SW + ((c1o1+drho) * (- c1o54* (c3o1*(-vxo1-vxo2 )+c9o2*(-vxo1-vxo2 )*(-vxo1-vxo2 )-cusq) + c1o54* (c3o1*(-vx1-vx2 )+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cusq2))); + f_SE = f_SE + ((c1o1+drho) * (- c1o54* (c3o1*( vxo1-vxo2 )+c9o2*( vxo1-vxo2 )*( vxo1-vxo2 )-cusq) + c1o54* (c3o1*( vx1-vx2 )+c9o2*( vx1-vx2 )*( vx1-vx2 )-cusq2))); + f_NW = f_NW + ((c1o1+drho) * (- c1o54* (c3o1*(-vxo1+vxo2 )+c9o2*(-vxo1+vxo2 )*(-vxo1+vxo2 )-cusq) + c1o54* (c3o1*(-vx1+vx2 )+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cusq2))); + f_TE = f_TE + ((c1o1+drho) * (- c1o54* (c3o1*( vxo1 +vxo3)+c9o2*( vxo1 +vxo3)*( vxo1 +vxo3)-cusq) + c1o54* (c3o1*( vx1 +vx3)+c9o2*( vx1 +vx3)*( vx1 +vx3)-cusq2))); + f_BW = f_BW + ((c1o1+drho) * (- c1o54* (c3o1*(-vxo1 -vxo3)+c9o2*(-vxo1 -vxo3)*(-vxo1 -vxo3)-cusq) + c1o54* (c3o1*(-vx1 -vx3)+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cusq2))); + f_BE = f_BE + ((c1o1+drho) * (- c1o54* (c3o1*( vxo1 -vxo3)+c9o2*( vxo1 -vxo3)*( vxo1 -vxo3)-cusq) + c1o54* (c3o1*( vx1 -vx3)+c9o2*( vx1 -vx3)*( vx1 -vx3)-cusq2))); + f_TW = f_TW + ((c1o1+drho) * (- c1o54* (c3o1*(-vxo1 +vxo3)+c9o2*(-vxo1 +vxo3)*(-vxo1 +vxo3)-cusq) + c1o54* (c3o1*(-vx1 +vx3)+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cusq2))); + f_TN = f_TN + ((c1o1+drho) * (- c1o54* (c3o1*( vxo2+vxo3)+c9o2*( vxo2+vxo3)*( vxo2+vxo3)-cusq) + c1o54* (c3o1*( vx2+vx3)+c9o2*( vx2+vx3)*( vx2+vx3)-cusq2))); + f_BS = f_BS + ((c1o1+drho) * (- c1o54* (c3o1*( -vxo2-vxo3)+c9o2*( -vxo2-vxo3)*( -vxo2-vxo3)-cusq) + c1o54* (c3o1*( -vx2-vx3)+c9o2*( -vx2-vx3)*( -vx2-vx3)-cusq2))); + f_BN = f_BN + ((c1o1+drho) * (- c1o54* (c3o1*( vxo2-vxo3)+c9o2*( vxo2-vxo3)*( vxo2-vxo3)-cusq) + c1o54* (c3o1*( vx2-vx3)+c9o2*( vx2-vx3)*( vx2-vx3)-cusq2))); + f_TS = f_TS + ((c1o1+drho) * (- c1o54* (c3o1*( -vxo2+vxo3)+c9o2*( -vxo2+vxo3)*( -vxo2+vxo3)-cusq) + c1o54* (c3o1*( -vx2+vx3)+c9o2*( -vx2+vx3)*( -vx2+vx3)-cusq2))); + f_TNE = f_TNE + ((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_BSW = f_BSW + ((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_BNE = f_BNE + ((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_TSW = f_TSW + ((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_TSE = f_TSE + ((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_BNW = f_BNW + ((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_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[d000])[kzero] = f_ZERO; + (D.f[dP00])[ke ] = f_E ; // f_W ;// + (D.f[dM00])[kw ] = f_W ; // f_E ;// + (D.f[d0P0])[kn ] = f_N ; // f_S ;// + (D.f[d0M0])[ks ] = f_S ; // f_N ;// + (D.f[d00P])[kt ] = f_T ; // f_B ;// + (D.f[d00M])[kb ] = f_B ; // f_T ;// + (D.f[dPP0])[kne ] = f_NE ; // f_SW ;// + (D.f[dMM0])[ksw ] = f_SW ; // f_NE ;// + (D.f[dPM0])[kse ] = f_SE ; // f_NW ;// + (D.f[dMP0])[knw ] = f_NW ; // f_SE ;// + (D.f[dP0P])[kte ] = f_TE ; // f_BW ;// + (D.f[dM0M])[kbw ] = f_BW ; // f_TE ;// + (D.f[dP0M])[kbe ] = f_BE ; // f_TW ;// + (D.f[dM0P])[ktw ] = f_TW ; // f_BE ;// + (D.f[d0PP])[ktn ] = f_TN ; // f_BS ;// + (D.f[d0MM])[kbs ] = f_BS ; // f_TN ;// + (D.f[d0PM])[kbn ] = f_BN ; // f_TS ;// + (D.f[d0MP])[kts ] = f_TS ; // f_BN ;// + (D.f[dPPP])[ktne ] = f_TNE ; // f_BSW ;// + (D.f[dMMM])[kbsw ] = f_BSW ; // f_BNE ;// + (D.f[dPPM])[kbne ] = f_BNE ; // f_BNW ;// + (D.f[dMMP])[ktsw ] = f_TSW ; // f_BSE ;// + (D.f[dPMP])[ktse ] = f_TSE ; // f_TSW ;// + (D.f[dMPM])[kbnw ] = f_BNW ; // f_TNE ;// + (D.f[dPMM])[kbse ] = f_BSE ; // f_TNW ;// + (D.f[dMPP])[ktnw ] = f_TNW ; // f_TSE ;// + + ////////////////////////////////////////////////////////////////////////// + ////(D.f[d000])[kzero] = c8over27* (drho-cu_sq); + //(D.f[dP00])[ke ] = three*c2over27* ( vx1 ); //six + //(D.f[dM00])[kw ] = three*c2over27* (-vx1 ); //six + //(D.f[d0P0])[kn ] = three*c2over27* ( vx2 ); //six + //(D.f[d0M0])[ks ] = three*c2over27* ( -vx2 ); //six + //(D.f[d00P])[kt ] = three*c2over27* ( vx3); //six + //(D.f[d00M])[kb ] = three*c2over27* ( -vx3); //six + //(D.f[dPP0])[kne ] = three*c1over54* ( vx1+vx2 ); //six + //(D.f[dMM0])[ksw ] = three*c1over54* (-vx1-vx2 ); //six + //(D.f[dPM0])[kse ] = three*c1over54* ( vx1-vx2 ); //six + //(D.f[dMP0])[knw ] = three*c1over54* (-vx1+vx2 ); //six + //(D.f[dP0P])[kte ] = three*c1over54* ( vx1 +vx3); //six + //(D.f[dM0M])[kbw ] = three*c1over54* (-vx1 -vx3); //six + //(D.f[dP0M])[kbe ] = three*c1over54* ( vx1 -vx3); //six + //(D.f[dM0P])[ktw ] = three*c1over54* (-vx1 +vx3); //six + //(D.f[d0PP])[ktn ] = three*c1over54* ( vx2+vx3); //six + //(D.f[d0MM])[kbs ] = three*c1over54* ( -vx2-vx3); //six + //(D.f[d0PM])[kbn ] = three*c1over54* ( vx2-vx3); //six + //(D.f[d0MP])[kts ] = three*c1over54* ( -vx2+vx3); //six + //(D.f[dPPP])[ktne ] = three*c1over216*( vx1+vx2+vx3); //six + //(D.f[dMMM])[kbsw ] = three*c1over216*(-vx1-vx2-vx3); //six + //(D.f[dPPM])[kbne ] = three*c1over216*( vx1+vx2-vx3); //six + //(D.f[dMMP])[ktsw ] = three*c1over216*(-vx1-vx2+vx3); //six + //(D.f[dPMP])[ktse ] = three*c1over216*( vx1-vx2+vx3); //six + //(D.f[dMPM])[kbnw ] = three*c1over216*(-vx1+vx2-vx3); //six + //(D.f[dPMM])[kbse ] = three*c1over216*( vx1-vx2-vx3); //six + //(D.f[dMPP])[ktnw ] = three*c1over216*(-vx1+vx2+vx3); //six + //(D.f[d000])[kzero] = c8over27* (drho-cu_sq); + //(D.f[dP00])[ke ] = c2over27* (drho+three*( vx1 )+c9over2*( vx1 )*( vx1 )-cu_sq); + //(D.f[dM00])[kw ] = c2over27* (drho+three*(-vx1 )+c9over2*(-vx1 )*(-vx1 )-cu_sq); + //(D.f[d0P0])[kn ] = c2over27* (drho+three*( vx2 )+c9over2*( vx2 )*( vx2 )-cu_sq); + //(D.f[d0M0])[ks ] = c2over27* (drho+three*( -vx2 )+c9over2*( -vx2 )*( -vx2 )-cu_sq); + //(D.f[d00P])[kt ] = c2over27* (drho+three*( vx3)+c9over2*( vx3)*( vx3)-cu_sq); + //(D.f[d00M])[kb ] = c2over27* (drho+three*( -vx3)+c9over2*( -vx3)*( -vx3)-cu_sq); + //(D.f[dPP0])[kne ] = c1over54* (drho+three*( vx1+vx2 )+c9over2*( vx1+vx2 )*( vx1+vx2 )-cu_sq); + //(D.f[dMM0])[ksw ] = c1over54* (drho+three*(-vx1-vx2 )+c9over2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq); + //(D.f[dPM0])[kse ] = c1over54* (drho+three*( vx1-vx2 )+c9over2*( vx1-vx2 )*( vx1-vx2 )-cu_sq); + //(D.f[dMP0])[knw ] = c1over54* (drho+three*(-vx1+vx2 )+c9over2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq); + //(D.f[dP0P])[kte ] = c1over54* (drho+three*( vx1 +vx3)+c9over2*( vx1 +vx3)*( vx1 +vx3)-cu_sq); + //(D.f[dM0M])[kbw ] = c1over54* (drho+three*(-vx1 -vx3)+c9over2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq); + //(D.f[dP0M])[kbe ] = c1over54* (drho+three*( vx1 -vx3)+c9over2*( vx1 -vx3)*( vx1 -vx3)-cu_sq); + //(D.f[dM0P])[ktw ] = c1over54* (drho+three*(-vx1 +vx3)+c9over2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq); + //(D.f[d0PP])[ktn ] = c1over54* (drho+three*( vx2+vx3)+c9over2*( vx2+vx3)*( vx2+vx3)-cu_sq); + //(D.f[d0MM])[kbs ] = c1over54* (drho+three*( -vx2-vx3)+c9over2*( -vx2-vx3)*( -vx2-vx3)-cu_sq); + //(D.f[d0PM])[kbn ] = c1over54* (drho+three*( vx2-vx3)+c9over2*( vx2-vx3)*( vx2-vx3)-cu_sq); + //(D.f[d0MP])[kts ] = c1over54* (drho+three*( -vx2+vx3)+c9over2*( -vx2+vx3)*( -vx2+vx3)-cu_sq); + //(D.f[dPPP])[ktne ] = c1over216*(drho+three*( vx1+vx2+vx3)+c9over2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq); + //(D.f[dMMM])[kbsw ] = c1over216*(drho+three*(-vx1-vx2-vx3)+c9over2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq); + //(D.f[dPPM])[kbne ] = c1over216*(drho+three*( vx1+vx2-vx3)+c9over2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq); + //(D.f[dMMP])[ktsw ] = c1over216*(drho+three*(-vx1-vx2+vx3)+c9over2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq); + //(D.f[dPMP])[ktse ] = c1over216*(drho+three*( vx1-vx2+vx3)+c9over2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq); + //(D.f[dMPM])[kbnw ] = c1over216*(drho+three*(-vx1+vx2-vx3)+c9over2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq); + //(D.f[dPMM])[kbse ] = c1over216*(drho+three*( vx1-vx2-vx3)+c9over2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq); + //(D.f[dMPP])[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/core/GPU/WaleCumulant27.cu similarity index 89% rename from src/gpu/VirtualFluids_GPU/GPU/WaleCumulant27.cu rename to src/gpu/core/GPU/WaleCumulant27.cu index 6bac690a881494520a33e901c35c3f51e4d2bfc7..9180b6a6d1ed09a72ce8d1f97440c88384fa9137 100644 --- a/src/gpu/VirtualFluids_GPU/GPU/WaleCumulant27.cu +++ b/src/gpu/core/GPU/WaleCumulant27.cu @@ -50,63 +50,63 @@ __global__ void LB_Kernel_WaleBySoniMalav_Cum_AA2016_Comp_SP_27( Distributions27 D; if (EvenOrOdd == true) { - D.f[DIR_P00] = &DDStart[DIR_P00 * numberOfLBnodes]; - D.f[DIR_M00] = &DDStart[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0P0] = &DDStart[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0M0] = &DDStart[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00P] = &DDStart[DIR_00P * numberOfLBnodes]; - D.f[DIR_00M] = &DDStart[DIR_00M * numberOfLBnodes]; - D.f[DIR_PP0] = &DDStart[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_MM0] = &DDStart[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DDStart[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DDStart[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_P0P] = &DDStart[DIR_P0P * numberOfLBnodes]; - D.f[DIR_M0M] = &DDStart[DIR_M0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DDStart[DIR_P0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DDStart[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0PP] = &DDStart[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0MM] = &DDStart[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0PM] = &DDStart[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0MP] = &DDStart[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DDStart[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DDStart[DIR_PPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DDStart[DIR_MMP * numberOfLBnodes]; - D.f[DIR_PMP] = &DDStart[DIR_PMP * numberOfLBnodes]; - D.f[DIR_MPP] = &DDStart[DIR_MPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DDStart[DIR_PPM * numberOfLBnodes]; - D.f[DIR_MMM] = &DDStart[DIR_MMM * numberOfLBnodes]; - D.f[DIR_PMM] = &DDStart[DIR_PMM * numberOfLBnodes]; - D.f[DIR_MPM] = &DDStart[DIR_MPM * numberOfLBnodes]; + D.f[dP00] = &DDStart[dP00 * numberOfLBnodes]; + D.f[dM00] = &DDStart[dM00 * numberOfLBnodes]; + D.f[d0P0] = &DDStart[d0P0 * numberOfLBnodes]; + D.f[d0M0] = &DDStart[d0M0 * numberOfLBnodes]; + D.f[d00P] = &DDStart[d00P * numberOfLBnodes]; + D.f[d00M] = &DDStart[d00M * numberOfLBnodes]; + D.f[dPP0] = &DDStart[dPP0 * numberOfLBnodes]; + D.f[dMM0] = &DDStart[dMM0 * numberOfLBnodes]; + D.f[dPM0] = &DDStart[dPM0 * numberOfLBnodes]; + D.f[dMP0] = &DDStart[dMP0 * numberOfLBnodes]; + D.f[dP0P] = &DDStart[dP0P * numberOfLBnodes]; + D.f[dM0M] = &DDStart[dM0M * numberOfLBnodes]; + D.f[dP0M] = &DDStart[dP0M * numberOfLBnodes]; + D.f[dM0P] = &DDStart[dM0P * numberOfLBnodes]; + D.f[d0PP] = &DDStart[d0PP * numberOfLBnodes]; + D.f[d0MM] = &DDStart[d0MM * numberOfLBnodes]; + D.f[d0PM] = &DDStart[d0PM * numberOfLBnodes]; + D.f[d0MP] = &DDStart[d0MP * numberOfLBnodes]; + D.f[d000] = &DDStart[d000 * numberOfLBnodes]; + D.f[dPPP] = &DDStart[dPPP * numberOfLBnodes]; + D.f[dMMP] = &DDStart[dMMP * numberOfLBnodes]; + D.f[dPMP] = &DDStart[dPMP * numberOfLBnodes]; + D.f[dMPP] = &DDStart[dMPP * numberOfLBnodes]; + D.f[dPPM] = &DDStart[dPPM * numberOfLBnodes]; + D.f[dMMM] = &DDStart[dMMM * numberOfLBnodes]; + D.f[dPMM] = &DDStart[dPMM * numberOfLBnodes]; + D.f[dMPM] = &DDStart[dMPM * numberOfLBnodes]; } else { - D.f[DIR_M00] = &DDStart[DIR_P00 * numberOfLBnodes]; - D.f[DIR_P00] = &DDStart[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0M0] = &DDStart[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0P0] = &DDStart[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00M] = &DDStart[DIR_00P * numberOfLBnodes]; - D.f[DIR_00P] = &DDStart[DIR_00M * numberOfLBnodes]; - D.f[DIR_MM0] = &DDStart[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_PP0] = &DDStart[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DDStart[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DDStart[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_M0M] = &DDStart[DIR_P0P * numberOfLBnodes]; - D.f[DIR_P0P] = &DDStart[DIR_M0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DDStart[DIR_P0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DDStart[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0MM] = &DDStart[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0PP] = &DDStart[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0MP] = &DDStart[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0PM] = &DDStart[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DDStart[DIR_000 * numberOfLBnodes]; - D.f[DIR_MMM] = &DDStart[DIR_PPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DDStart[DIR_MMP * numberOfLBnodes]; - D.f[DIR_MPM] = &DDStart[DIR_PMP * numberOfLBnodes]; - D.f[DIR_PMM] = &DDStart[DIR_MPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DDStart[DIR_PPM * numberOfLBnodes]; - D.f[DIR_PPP] = &DDStart[DIR_MMM * numberOfLBnodes]; - D.f[DIR_MPP] = &DDStart[DIR_PMM * numberOfLBnodes]; - D.f[DIR_PMP] = &DDStart[DIR_MPM * numberOfLBnodes]; + D.f[dM00] = &DDStart[dP00 * numberOfLBnodes]; + D.f[dP00] = &DDStart[dM00 * numberOfLBnodes]; + D.f[d0M0] = &DDStart[d0P0 * numberOfLBnodes]; + D.f[d0P0] = &DDStart[d0M0 * numberOfLBnodes]; + D.f[d00M] = &DDStart[d00P * numberOfLBnodes]; + D.f[d00P] = &DDStart[d00M * numberOfLBnodes]; + D.f[dMM0] = &DDStart[dPP0 * numberOfLBnodes]; + D.f[dPP0] = &DDStart[dMM0 * numberOfLBnodes]; + D.f[dMP0] = &DDStart[dPM0 * numberOfLBnodes]; + D.f[dPM0] = &DDStart[dMP0 * numberOfLBnodes]; + D.f[dM0M] = &DDStart[dP0P * numberOfLBnodes]; + D.f[dP0P] = &DDStart[dM0M * numberOfLBnodes]; + D.f[dM0P] = &DDStart[dP0M * numberOfLBnodes]; + D.f[dP0M] = &DDStart[dM0P * numberOfLBnodes]; + D.f[d0MM] = &DDStart[d0PP * numberOfLBnodes]; + D.f[d0PP] = &DDStart[d0MM * numberOfLBnodes]; + D.f[d0MP] = &DDStart[d0PM * numberOfLBnodes]; + D.f[d0PM] = &DDStart[d0MP * numberOfLBnodes]; + D.f[d000] = &DDStart[d000 * numberOfLBnodes]; + D.f[dMMM] = &DDStart[dPPP * numberOfLBnodes]; + D.f[dPPM] = &DDStart[dMMP * numberOfLBnodes]; + D.f[dMPM] = &DDStart[dPMP * numberOfLBnodes]; + D.f[dPMM] = &DDStart[dMPP * numberOfLBnodes]; + D.f[dMMP] = &DDStart[dPPM * numberOfLBnodes]; + D.f[dPPP] = &DDStart[dMMM * numberOfLBnodes]; + D.f[dMPP] = &DDStart[dPMM * numberOfLBnodes]; + D.f[dPMP] = &DDStart[dMPM * numberOfLBnodes]; } //////////////////////////////////////////////////////////////////////////////// @@ -120,33 +120,33 @@ __global__ void LB_Kernel_WaleBySoniMalav_Cum_AA2016_Comp_SP_27( unsigned int kbsw = neighborZ[ksw]; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real mfcbb = (D.f[DIR_P00])[k]; - real mfabb = (D.f[DIR_M00])[kw]; - real mfbcb = (D.f[DIR_0P0])[k]; - real mfbab = (D.f[DIR_0M0])[ks]; - real mfbbc = (D.f[DIR_00P])[k]; - real mfbba = (D.f[DIR_00M])[kb]; - real mfccb = (D.f[DIR_PP0])[k]; - real mfaab = (D.f[DIR_MM0])[ksw]; - real mfcab = (D.f[DIR_PM0])[ks]; - real mfacb = (D.f[DIR_MP0])[kw]; - real mfcbc = (D.f[DIR_P0P])[k]; - real mfaba = (D.f[DIR_M0M])[kbw]; - real mfcba = (D.f[DIR_P0M])[kb]; - real mfabc = (D.f[DIR_M0P])[kw]; - real mfbcc = (D.f[DIR_0PP])[k]; - real mfbaa = (D.f[DIR_0MM])[kbs]; - real mfbca = (D.f[DIR_0PM])[kb]; - real mfbac = (D.f[DIR_0MP])[ks]; - real mfbbb = (D.f[DIR_000])[k]; - real mfccc = (D.f[DIR_PPP])[k]; - real mfaac = (D.f[DIR_MMP])[ksw]; - real mfcac = (D.f[DIR_PMP])[ks]; - real mfacc = (D.f[DIR_MPP])[kw]; - real mfcca = (D.f[DIR_PPM])[kb]; - real mfaaa = (D.f[DIR_MMM])[kbsw]; - real mfcaa = (D.f[DIR_PMM])[kbs]; - real mfaca = (D.f[DIR_MPM])[kbw]; + real mfcbb = (D.f[dP00])[k]; + real mfabb = (D.f[dM00])[kw]; + real mfbcb = (D.f[d0P0])[k]; + real mfbab = (D.f[d0M0])[ks]; + real mfbbc = (D.f[d00P])[k]; + real mfbba = (D.f[d00M])[kb]; + real mfccb = (D.f[dPP0])[k]; + real mfaab = (D.f[dMM0])[ksw]; + real mfcab = (D.f[dPM0])[ks]; + real mfacb = (D.f[dMP0])[kw]; + real mfcbc = (D.f[dP0P])[k]; + real mfaba = (D.f[dM0M])[kbw]; + real mfcba = (D.f[dP0M])[kb]; + real mfabc = (D.f[dM0P])[kw]; + real mfbcc = (D.f[d0PP])[k]; + real mfbaa = (D.f[d0MM])[kbs]; + real mfbca = (D.f[d0PM])[kb]; + real mfbac = (D.f[d0MP])[ks]; + real mfbbb = (D.f[d000])[k]; + real mfccc = (D.f[dPPP])[k]; + real mfaac = (D.f[dMMP])[ksw]; + real mfcac = (D.f[dPMP])[ks]; + real mfacc = (D.f[dMPP])[kw]; + real mfcca = (D.f[dPPM])[kb]; + real mfaaa = (D.f[dMMM])[kbsw]; + real mfcaa = (D.f[dPMM])[kbs]; + real mfaca = (D.f[dMPM])[kbw]; //////////////////////////////////////////////////////////////////////////////////// real drho = ((((mfccc + mfaaa) + (mfaca + mfcac)) + ((mfacc + mfcaa) + (mfaac + mfcca))) + (((mfbac + mfbca) + (mfbaa + mfbcc)) + ((mfabc + mfcba) + (mfaba + mfcbc)) + ((mfacb + mfcab) + (mfaab + mfccb))) + @@ -300,7 +300,7 @@ __global__ void LB_Kernel_WaleBySoniMalav_Cum_AA2016_Comp_SP_27( real SdSd = S1d*S1d + S2d*S2d + S3d*S3d + S4d*S4d + S5d*S5d + S6d*S6d + S7d*S7d + S8d*S8d + S9d*S9d; /////////////// Computing turbulent viscosity /////////////////////// - //wOper = (real)pow((double)SdSd, 1.5) / ((real)pow((double)S2, 2.5) + (real)pow((double)SdSd, 1.25) + smallSingle);// 1e-26f); + //wOper = (real)pow((double)SdSd, 1.5) / ((real)pow((double)S2, 2.5) + (real)pow((double)SdSd, 1.25) + cSmallSingle);// 1e-26f); wOper = (float)pow((double)SdSd, 0.25) / ((float)pow((double)((float)pow((double)S2, 0.5) / ((float)pow((double)SdSd, 0.25) + 1e-10)), 5.0) + 1); nuTurb = (Cw*Cw * DelX*DelX) * wOper; @@ -1007,33 +1007,33 @@ __global__ void LB_Kernel_WaleBySoniMalav_Cum_AA2016_Comp_SP_27( //////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////// - (D.f[DIR_P00])[k] = mfabb; - (D.f[DIR_M00])[kw] = mfcbb; - (D.f[DIR_0P0])[k] = mfbab; - (D.f[DIR_0M0])[ks] = mfbcb; - (D.f[DIR_00P])[k] = mfbba; - (D.f[DIR_00M])[kb] = mfbbc; - (D.f[DIR_PP0])[k] = mfaab; - (D.f[DIR_MM0])[ksw] = mfccb; - (D.f[DIR_PM0])[ks] = mfacb; - (D.f[DIR_MP0])[kw] = mfcab; - (D.f[DIR_P0P])[k] = mfaba; - (D.f[DIR_M0M])[kbw] = mfcbc; - (D.f[DIR_P0M])[kb] = mfabc; - (D.f[DIR_M0P])[kw] = mfcba; - (D.f[DIR_0PP])[k] = mfbaa; - (D.f[DIR_0MM])[kbs] = mfbcc; - (D.f[DIR_0PM])[kb] = mfbac; - (D.f[DIR_0MP])[ks] = mfbca; - (D.f[DIR_000])[k] = mfbbb; - (D.f[DIR_PPP])[k] = mfaaa; - (D.f[DIR_PMP])[ks] = mfaca; - (D.f[DIR_PPM])[kb] = mfaac; - (D.f[DIR_PMM])[kbs] = mfacc; - (D.f[DIR_MPP])[kw] = mfcaa; - (D.f[DIR_MMP])[ksw] = mfcca; - (D.f[DIR_MPM])[kbw] = mfcac; - (D.f[DIR_MMM])[kbsw] = mfccc; + (D.f[dP00])[k] = mfabb; + (D.f[dM00])[kw] = mfcbb; + (D.f[d0P0])[k] = mfbab; + (D.f[d0M0])[ks] = mfbcb; + (D.f[d00P])[k] = mfbba; + (D.f[d00M])[kb] = mfbbc; + (D.f[dPP0])[k] = mfaab; + (D.f[dMM0])[ksw] = mfccb; + (D.f[dPM0])[ks] = mfacb; + (D.f[dMP0])[kw] = mfcab; + (D.f[dP0P])[k] = mfaba; + (D.f[dM0M])[kbw] = mfcbc; + (D.f[dP0M])[kb] = mfabc; + (D.f[dM0P])[kw] = mfcba; + (D.f[d0PP])[k] = mfbaa; + (D.f[d0MM])[kbs] = mfbcc; + (D.f[d0PM])[kb] = mfbac; + (D.f[d0MP])[ks] = mfbca; + (D.f[d000])[k] = mfbbb; + (D.f[dPPP])[k] = mfaaa; + (D.f[dPMP])[ks] = mfaca; + (D.f[dPPM])[kb] = mfaac; + (D.f[dPMM])[kbs] = mfacc; + (D.f[dMPP])[kw] = mfcaa; + (D.f[dMMP])[ksw] = mfcca; + (D.f[dMPM])[kbw] = mfcac; + (D.f[dMMM])[kbsw] = mfccc; //////////////////////////////////////////////////////////////////////////////////// } } diff --git a/src/gpu/core/GPU/WallFunction.cu b/src/gpu/core/GPU/WallFunction.cu new file mode 100644 index 0000000000000000000000000000000000000000..2777a11fd8044e746885586aec3e33fa242642b4 --- /dev/null +++ b/src/gpu/core/GPU/WallFunction.cu @@ -0,0 +1,520 @@ +/* Device code */ +#include "LBM/LB.h" +#include "lbm/constants/D3Q27.h" +#include <basics/constants/NumericConstants.h> + +using namespace vf::basics::constant; +using namespace vf::lbm::dir; + + +////////////////////////////////////////////////////////////////////////////// +__global__ void WallFunction27( + real* vx, + real* vy, + real* vz, + real* DD, + int* k_Q, + real* QQ, + unsigned int numberOfBCnodes, + real om1, + unsigned int* neighborX, + unsigned int* neighborY, + unsigned int* neighborZ, + unsigned long long numberOfLBnodes, + bool isEvenTimestep) +{ + Distributions27 D; + if (isEvenTimestep==true) + { + D.f[dP00] = &DD[dP00 * numberOfLBnodes]; + D.f[dM00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00P] = &DD[d00P * numberOfLBnodes]; + D.f[d00M] = &DD[d00M * numberOfLBnodes]; + D.f[dPP0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dMM0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dP0P] = &DD[dP0P * numberOfLBnodes]; + D.f[dM0M] = &DD[dM0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dP0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dM0P * numberOfLBnodes]; + D.f[d0PP] = &DD[d0PP * numberOfLBnodes]; + D.f[d0MM] = &DD[d0MM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0PM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dPPP * numberOfLBnodes]; + D.f[dMMP] = &DD[dMMP * numberOfLBnodes]; + D.f[dPMP] = &DD[dPMP * numberOfLBnodes]; + D.f[dMPP] = &DD[dMPP * numberOfLBnodes]; + D.f[dPPM] = &DD[dPPM * numberOfLBnodes]; + D.f[dMMM] = &DD[dMMM * numberOfLBnodes]; + D.f[dPMM] = &DD[dPMM * numberOfLBnodes]; + D.f[dMPM] = &DD[dMPM * numberOfLBnodes]; + } + else + { + D.f[dM00] = &DD[dP00 * numberOfLBnodes]; + D.f[dP00] = &DD[dM00 * numberOfLBnodes]; + D.f[d0M0] = &DD[d0P0 * numberOfLBnodes]; + D.f[d0P0] = &DD[d0M0 * numberOfLBnodes]; + D.f[d00M] = &DD[d00P * numberOfLBnodes]; + D.f[d00P] = &DD[d00M * numberOfLBnodes]; + D.f[dMM0] = &DD[dPP0 * numberOfLBnodes]; + D.f[dPP0] = &DD[dMM0 * numberOfLBnodes]; + D.f[dMP0] = &DD[dPM0 * numberOfLBnodes]; + D.f[dPM0] = &DD[dMP0 * numberOfLBnodes]; + D.f[dM0M] = &DD[dP0P * numberOfLBnodes]; + D.f[dP0P] = &DD[dM0M * numberOfLBnodes]; + D.f[dM0P] = &DD[dP0M * numberOfLBnodes]; + D.f[dP0M] = &DD[dM0P * numberOfLBnodes]; + D.f[d0MM] = &DD[d0PP * numberOfLBnodes]; + D.f[d0PP] = &DD[d0MM * numberOfLBnodes]; + D.f[d0MP] = &DD[d0PM * numberOfLBnodes]; + D.f[d0PM] = &DD[d0MP * numberOfLBnodes]; + D.f[d000] = &DD[d000 * numberOfLBnodes]; + D.f[dPPP] = &DD[dMMM * numberOfLBnodes]; + D.f[dMMP] = &DD[dPPM * numberOfLBnodes]; + D.f[dPMP] = &DD[dMPM * numberOfLBnodes]; + D.f[dMPP] = &DD[dPMM * numberOfLBnodes]; + D.f[dPPM] = &DD[dMMP * numberOfLBnodes]; + D.f[dMMM] = &DD[dPPP * numberOfLBnodes]; + D.f[dPMM] = &DD[dMPP * numberOfLBnodes]; + D.f[dMPM] = &DD[dPMP * numberOfLBnodes]; + } + //////////////////////////////////////////////////////////////////////////////// + const unsigned x = threadIdx.x; // Globaler x-Index + const unsigned y = blockIdx.x; // Globaler y-Index + const unsigned z = blockIdx.y; // Globaler z-Index + + const unsigned nx = blockDim.x; + const unsigned ny = gridDim.x; + + const unsigned k = nx*(ny*z + y) + x; + ////////////////////////////////////////////////////////////////////////// + + if(k<numberOfBCnodes) + { + //////////////////////////////////////////////////////////////////////////////// + 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) + //////////////////////////////////////////////////////////////////////////////// + //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[dP00 * numberOfBCnodes]; + //q_dirW = &QQ[dM00 * numberOfBCnodes]; + //q_dirN = &QQ[d0P0 * numberOfBCnodes]; + //q_dirS = &QQ[d0M0 * numberOfBCnodes]; + //q_dirT = &QQ[d00P * numberOfBCnodes]; + //q_dirB = &QQ[d00M * numberOfBCnodes]; + //q_dirNE = &QQ[dPP0 * numberOfBCnodes]; + //q_dirSW = &QQ[dMM0 * numberOfBCnodes]; + //q_dirSE = &QQ[dPM0 * numberOfBCnodes]; + //q_dirNW = &QQ[dMP0 * numberOfBCnodes]; + //q_dirTE = &QQ[dP0P * numberOfBCnodes]; + //q_dirBW = &QQ[dM0M * numberOfBCnodes]; + //q_dirBE = &QQ[dP0M * numberOfBCnodes]; + //q_dirTW = &QQ[dM0P * numberOfBCnodes]; + //q_dirTN = &QQ[d0PP * numberOfBCnodes]; + //q_dirBS = &QQ[d0MM * numberOfBCnodes]; + //q_dirBN = &QQ[d0PM * numberOfBCnodes]; + //q_dirTS = &QQ[d0MP * numberOfBCnodes]; + //q_dirTNE = &QQ[dPPP * numberOfBCnodes]; + //q_dirTSW = &QQ[dMMP * numberOfBCnodes]; + //q_dirTSE = &QQ[dPMP * numberOfBCnodes]; + //q_dirTNW = &QQ[dMPP * numberOfBCnodes]; + //q_dirBNE = &QQ[dPPM * numberOfBCnodes]; + //q_dirBSW = &QQ[dMMM * numberOfBCnodes]; + //q_dirBSE = &QQ[dPMM * numberOfBCnodes]; + //q_dirBNW = &QQ[dMPM * 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]; + 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 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[dP00])[ke ]; + f_E = (D.f[dM00])[kw ]; + f_S = (D.f[d0P0])[kn ]; + f_N = (D.f[d0M0])[ks ]; + f_B = (D.f[d00P])[kt ]; + f_T = (D.f[d00M])[kb ]; + f_SW = (D.f[dPP0])[kne ]; + f_NE = (D.f[dMM0])[ksw ]; + f_NW = (D.f[dPM0])[kse ]; + f_SE = (D.f[dMP0])[knw ]; + f_BW = (D.f[dP0P])[kte ]; + f_TE = (D.f[dM0M])[kbw ]; + f_TW = (D.f[dP0M])[kbe ]; + f_BE = (D.f[dM0P])[ktw ]; + f_BS = (D.f[d0PP])[ktn ]; + f_TN = (D.f[d0MM])[kbs ]; + f_TS = (D.f[d0PM])[kbn ]; + f_BN = (D.f[d0MP])[kts ]; + f_BSW = (D.f[dPPP])[ktne ]; + f_BNE = (D.f[dMMP])[ktsw ]; + f_BNW = (D.f[dPMP])[ktse ]; + f_BSE = (D.f[dMPP])[ktnw ]; + f_TSW = (D.f[dPPM])[kbne ]; + f_TNE = (D.f[dMMM])[kbsw ]; + f_TNW = (D.f[dPMM])[kbse ]; + f_TSE = (D.f[dMPM])[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[d000])[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); + + + // 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 cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3) * (one + drho); + + real nu = c1o3 * (c1o1 / om1 - c1o2); + real qw = c1o1; + real uTau = sqrt(nu * (vx1 - VeloX) / qw); + + if (abs(uTau)/nu>11){ + uTau = vx1 * 0.41 / (log10(9.8 * uTau * qw / nu)); + + + + vx[k] = vx1 - uTau * uTau * qw / nu; + vx[k] = (vx[k]> 0.05) ? 0.05 : ((vx[k]< -0.05) ? -0.05 : vx[k] ); + } + else{ vx[k]=c0o1; } + //vy[k] = 0.01; //Test...muss wieder raus + //vz[k] = 0.01; //Test...muss wieder raus + + // ////////////////////////////////////////////////////////////////////////// + // if (isEvenTimestep==false) + // { + // D.f[dP00] = &DD[dP00 * size_Mat]; + // D.f[dM00] = &DD[dM00 * size_Mat]; + // D.f[d0P0] = &DD[d0P0 * size_Mat]; + // D.f[d0M0] = &DD[d0M0 * size_Mat]; + // D.f[d00P] = &DD[d00P * size_Mat]; + // D.f[d00M] = &DD[d00M * size_Mat]; + // D.f[dPP0] = &DD[dPP0 * size_Mat]; + // D.f[dMM0] = &DD[dMM0 * size_Mat]; + // D.f[dPM0] = &DD[dPM0 * size_Mat]; + // D.f[dMP0] = &DD[dMP0 * size_Mat]; + // D.f[dP0P] = &DD[dP0P * size_Mat]; + // D.f[dM0M] = &DD[dM0M * size_Mat]; + // D.f[dP0M] = &DD[dP0M * size_Mat]; + // D.f[dM0P] = &DD[dM0P * size_Mat]; + // D.f[d0PP] = &DD[d0PP * size_Mat]; + // D.f[d0MM] = &DD[d0MM * size_Mat]; + // D.f[d0PM] = &DD[d0PM * size_Mat]; + // D.f[d0MP] = &DD[d0MP * size_Mat]; + // D.f[d000] = &DD[d000 * size_Mat]; + // D.f[dPPP] = &DD[dPPP * size_Mat]; + // D.f[dMMP] = &DD[dMMP * size_Mat]; + // D.f[dPMP] = &DD[dPMP * size_Mat]; + // D.f[dMPP] = &DD[dMPP * size_Mat]; + // D.f[dPPM] = &DD[dPPM * size_Mat]; + // D.f[dMMM] = &DD[dMMM * size_Mat]; + // D.f[dPMM] = &DD[dPMM * size_Mat]; + // D.f[dMPM] = &DD[dMPM * size_Mat]; + // } + // else + // { + // D.f[dM00] = &DD[dP00 * size_Mat]; + // D.f[dP00] = &DD[dM00 * size_Mat]; + // D.f[d0M0] = &DD[d0P0 * size_Mat]; + // D.f[d0P0] = &DD[d0M0 * size_Mat]; + // D.f[d00M] = &DD[d00P * size_Mat]; + // D.f[d00P] = &DD[d00M * size_Mat]; + // D.f[dMM0] = &DD[dPP0 * size_Mat]; + // D.f[dPP0] = &DD[dMM0 * size_Mat]; + // D.f[dMP0] = &DD[dPM0 * size_Mat]; + // D.f[dPM0] = &DD[dMP0 * size_Mat]; + // D.f[dM0M] = &DD[dP0P * size_Mat]; + // D.f[dP0P] = &DD[dM0M * size_Mat]; + // D.f[dM0P] = &DD[dP0M * size_Mat]; + // D.f[dP0M] = &DD[dM0P * size_Mat]; + // D.f[d0MM] = &DD[d0PP * size_Mat]; + // D.f[d0PP] = &DD[d0MM * size_Mat]; + // D.f[d0MP] = &DD[d0PM * size_Mat]; + // D.f[d0PM] = &DD[d0MP * size_Mat]; + // D.f[d000] = &DD[d000 * size_Mat]; + // D.f[dPPP] = &DD[dMMM * size_Mat]; + // D.f[dMMP] = &DD[dPPM * size_Mat]; + // D.f[dPMP] = &DD[dMPM * size_Mat]; + // D.f[dMPP] = &DD[dPMM * size_Mat]; + // D.f[dPPM] = &DD[dMMP * size_Mat]; + // D.f[dMMM] = &DD[dPPP * size_Mat]; + // D.f[dPMM] = &DD[dMPP * size_Mat]; + // D.f[dMPM] = &DD[dPMP * size_Mat]; + // } + // //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // //Test + // //(D.f[d000])[k]=c1o10; + // //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + ////ToDo anders Klammern + + // q = q_dirE[k]; + // if (q>=zero && q<=one) + // { + // feq=c2over27* (drho/*+three*( vx1 )*/+c9over2*( vx1 )*( vx1 ) * (one + drho)-cu_sq); + // (D.f[dM00])[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[dM00])[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[dP00])[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[dP00])[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[d0M0])[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[d0M0])[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[d0P0])[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[d0P0])[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[d00M])[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[d00M])[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[d00P])[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[d00P])[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[dMM0])[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[dMM0])[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[dPP0])[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[dPP0])[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[dMP0])[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[dMP0])[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[dPM0])[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[dPM0])[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[dM0M])[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[dM0M])[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[dP0P])[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[dP0P])[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[dM0P])[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[dM0P])[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[dP0M])[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[dP0M])[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[d0MM])[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[d0MM])[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[d0PP])[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[d0PP])[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[d0MP])[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[d0MP])[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[d0PM])[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[d0PM])[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[dMMM])[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[dMMM])[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[dPPP])[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[dPPP])[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[dMMP])[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[dMMP])[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[dPPM])[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[dPPM])[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[dMPM])[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[dMPM])[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[dPMP])[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[dPMP])[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[dMPP])[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[dMPP])[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[dPMM])[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[dPMM])[kbse]=zero; + // } + } +} +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + + + + + + + + diff --git a/src/gpu/VirtualFluids_GPU/Init/InitLattice.cpp b/src/gpu/core/Init/InitLattice.cpp similarity index 100% rename from src/gpu/VirtualFluids_GPU/Init/InitLattice.cpp rename to src/gpu/core/Init/InitLattice.cpp diff --git a/src/gpu/VirtualFluids_GPU/Init/InitLattice.h b/src/gpu/core/Init/InitLattice.h similarity index 98% rename from src/gpu/VirtualFluids_GPU/Init/InitLattice.h rename to src/gpu/core/Init/InitLattice.h index 512543348fae69ea9dfe03ca5300e45a650b7099..8de22f321899ba7f8a08f8809fbd904c2d9ec1ec 100644 --- a/src/gpu/VirtualFluids_GPU/Init/InitLattice.h +++ b/src/gpu/core/Init/InitLattice.h @@ -33,7 +33,7 @@ #ifndef INIT_LATTICE_H #define INIT_LATTICE_H -#include "PointerDefinitions.h" +#include <basics/PointerDefinitions.h> class Parameter; class PreProcessor; diff --git a/src/gpu/VirtualFluids_GPU/Init/PositionReader.cpp b/src/gpu/core/Init/PositionReader.cpp similarity index 80% rename from src/gpu/VirtualFluids_GPU/Init/PositionReader.cpp rename to src/gpu/core/Init/PositionReader.cpp index 6eaa0b17653aaf5257c00e674c87e2844c26cf5d..2863ce419e1e74a94f9e65ea2546a7bb143241b6 100644 --- a/src/gpu/VirtualFluids_GPU/Init/PositionReader.cpp +++ b/src/gpu/core/Init/PositionReader.cpp @@ -140,41 +140,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[DIR_P00 ] = &QQ[DIR_P00 *sizeQ]; - Q.q27[DIR_M00 ] = &QQ[DIR_M00 *sizeQ]; - Q.q27[DIR_0P0 ] = &QQ[DIR_0P0 *sizeQ]; - Q.q27[DIR_0M0 ] = &QQ[DIR_0M0 *sizeQ]; - Q.q27[DIR_00P ] = &QQ[DIR_00P *sizeQ]; - Q.q27[DIR_00M ] = &QQ[DIR_00M *sizeQ]; - Q.q27[DIR_PP0 ] = &QQ[DIR_PP0 *sizeQ]; - Q.q27[DIR_MM0 ] = &QQ[DIR_MM0 *sizeQ]; - Q.q27[DIR_PM0 ] = &QQ[DIR_PM0 *sizeQ]; - Q.q27[DIR_MP0 ] = &QQ[DIR_MP0 *sizeQ]; - Q.q27[DIR_P0P ] = &QQ[DIR_P0P *sizeQ]; - Q.q27[DIR_M0M ] = &QQ[DIR_M0M *sizeQ]; - Q.q27[DIR_P0M ] = &QQ[DIR_P0M *sizeQ]; - Q.q27[DIR_M0P ] = &QQ[DIR_M0P *sizeQ]; - Q.q27[DIR_0PP ] = &QQ[DIR_0PP *sizeQ]; - Q.q27[DIR_0MM ] = &QQ[DIR_0MM *sizeQ]; - Q.q27[DIR_0PM ] = &QQ[DIR_0PM *sizeQ]; - Q.q27[DIR_0MP ] = &QQ[DIR_0MP *sizeQ]; - Q.q27[DIR_000] = &QQ[DIR_000*sizeQ]; - Q.q27[DIR_PPP ] = &QQ[DIR_PPP *sizeQ]; - Q.q27[DIR_MMP ] = &QQ[DIR_MMP *sizeQ]; - Q.q27[DIR_PMP ] = &QQ[DIR_PMP *sizeQ]; - Q.q27[DIR_MPP ] = &QQ[DIR_MPP *sizeQ]; - Q.q27[DIR_PPM ] = &QQ[DIR_PPM *sizeQ]; - Q.q27[DIR_MMM ] = &QQ[DIR_MMM *sizeQ]; - Q.q27[DIR_PMM ] = &QQ[DIR_PMM *sizeQ]; - Q.q27[DIR_MPM ] = &QQ[DIR_MPM *sizeQ]; + Q.q27[dP00 ] = &QQ[dP00 *sizeQ]; + Q.q27[dM00 ] = &QQ[dM00 *sizeQ]; + Q.q27[d0P0 ] = &QQ[d0P0 *sizeQ]; + Q.q27[d0M0 ] = &QQ[d0M0 *sizeQ]; + Q.q27[d00P ] = &QQ[d00P *sizeQ]; + Q.q27[d00M ] = &QQ[d00M *sizeQ]; + Q.q27[dPP0 ] = &QQ[dPP0 *sizeQ]; + Q.q27[dMM0 ] = &QQ[dMM0 *sizeQ]; + Q.q27[dPM0 ] = &QQ[dPM0 *sizeQ]; + Q.q27[dMP0 ] = &QQ[dMP0 *sizeQ]; + Q.q27[dP0P ] = &QQ[dP0P *sizeQ]; + Q.q27[dM0M ] = &QQ[dM0M *sizeQ]; + Q.q27[dP0M ] = &QQ[dP0M *sizeQ]; + Q.q27[dM0P ] = &QQ[dM0P *sizeQ]; + Q.q27[d0PP ] = &QQ[d0PP *sizeQ]; + Q.q27[d0MM ] = &QQ[d0MM *sizeQ]; + Q.q27[d0PM ] = &QQ[d0PM *sizeQ]; + Q.q27[d0MP ] = &QQ[d0MP *sizeQ]; + Q.q27[d000] = &QQ[d000*sizeQ]; + Q.q27[dPPP ] = &QQ[dPPP *sizeQ]; + Q.q27[dMMP ] = &QQ[dMMP *sizeQ]; + Q.q27[dPMP ] = &QQ[dPMP *sizeQ]; + Q.q27[dMPP ] = &QQ[dMPP *sizeQ]; + Q.q27[dPPM ] = &QQ[dPPM *sizeQ]; + Q.q27[dMMM ] = &QQ[dMMM *sizeQ]; + Q.q27[dPMM ] = &QQ[dPMM *sizeQ]; + Q.q27[dMPM ] = &QQ[dMPM *sizeQ]; ////////////////////////////////////////////////////////////////// for(uint u=0; u<para->getParH(para->getFine())->propellerBC.numberOfBCnodes; u++) { - for (size_t dir = DIR_P00; dir<=DIR_MMM; dir++) + for (size_t dir = dP00; dir<=dMMM; dir++) { - if ((dir==DIR_P00) || - (dir==DIR_PP0) || (dir==DIR_PM0) || (dir==DIR_P0P) || (dir==DIR_P0M) || - (dir==DIR_PPP)|| (dir==DIR_PPM)|| (dir==DIR_PMP)|| (dir==DIR_PMM)) + if ((dir==dP00) || + (dir==dPP0) || (dir==dPM0) || (dir==dP0P) || (dir==dP0M) || + (dir==dPPP)|| (dir==dPPM)|| (dir==dPMP)|| (dir==dPMM)) { Q.q27[dir][u] = 1.0f; } diff --git a/src/gpu/VirtualFluids_GPU/Init/PositionReader.h b/src/gpu/core/Init/PositionReader.h similarity index 100% rename from src/gpu/VirtualFluids_GPU/Init/PositionReader.h rename to src/gpu/core/Init/PositionReader.h diff --git a/src/gpu/VirtualFluids_GPU/Init/VfReader.cpp b/src/gpu/core/Init/VfReader.cpp similarity index 100% rename from src/gpu/VirtualFluids_GPU/Init/VfReader.cpp rename to src/gpu/core/Init/VfReader.cpp diff --git a/src/gpu/VirtualFluids_GPU/Init/VfReader.h b/src/gpu/core/Init/VfReader.h similarity index 100% rename from src/gpu/VirtualFluids_GPU/Init/VfReader.h rename to src/gpu/core/Init/VfReader.h diff --git a/src/gpu/core/Kernel/AdvectionDiffusionKernel.h b/src/gpu/core/Kernel/AdvectionDiffusionKernel.h new file mode 100644 index 0000000000000000000000000000000000000000..b83cff408eb1538eb7ddfee6ce0b73e16c7eefb2 --- /dev/null +++ b/src/gpu/core/Kernel/AdvectionDiffusionKernel.h @@ -0,0 +1,10 @@ +#ifndef AdvectionDiffusionKernel_H +#define AdvectionDiffusionKernel_H + +#include "Kernel/KernelImp.h" + +class AdvectionDiffusionKernel : public KernelImp +{ + virtual void run() = 0; +}; +#endif \ No newline at end of file diff --git a/src/gpu/core/Kernel/Compressible/AdvectionDiffusion/D3Q27/F16/F16CompressibleAdvectionDiffusion.cu b/src/gpu/core/Kernel/Compressible/AdvectionDiffusion/D3Q27/F16/F16CompressibleAdvectionDiffusion.cu new file mode 100644 index 0000000000000000000000000000000000000000..5546da0323d140d9240e7cbbde7a6c82f49c534e --- /dev/null +++ b/src/gpu/core/Kernel/Compressible/AdvectionDiffusion/D3Q27/F16/F16CompressibleAdvectionDiffusion.cu @@ -0,0 +1,40 @@ +#include "F16CompressibleAdvectionDiffusion.h" + +#include "F16CompressibleAdvectionDiffusion_Device.cuh" +#include "Parameter/Parameter.h" +#include <cuda_helper/CudaGrid.h> + +std::shared_ptr<F16CompressibleAdvectionDiffusion> F16CompressibleAdvectionDiffusion::getNewInstance(std::shared_ptr<Parameter> para, int level) +{ + return std::shared_ptr<F16CompressibleAdvectionDiffusion>(new F16CompressibleAdvectionDiffusion(para, level)); +} + +void F16CompressibleAdvectionDiffusion::run() +{ + vf::cuda::CudaGrid grid = vf::cuda::CudaGrid(para->getParD(level)->numberofthreads, para->getParD(level)->numberOfNodes); + + F16CompressibleAdvectionDiffusion_Device<<< grid.grid, grid.threads >>>( + para->getParD(level)->diffusivity, + para->getParD(level)->typeOfGridNode, + para->getParD(level)->neighborX, + para->getParD(level)->neighborY, + para->getParD(level)->neighborZ, + para->getParD(level)->distributions.f[0], + para->getParD(level)->distributionsAD.f[0], + para->getParD(level)->numberOfNodes, + para->getParD(level)->isEvenTimestep); + getLastCudaError("F16CompressibleAdvectionDiffusion_Device execution failed"); +} + +F16CompressibleAdvectionDiffusion::F16CompressibleAdvectionDiffusion(std::shared_ptr<Parameter> para, int level) +{ + this->para = para; + this->level = level; + + myPreProcessorTypes.push_back(InitCompAD27); + +} + +F16CompressibleAdvectionDiffusion::F16CompressibleAdvectionDiffusion() +{ +} diff --git a/src/gpu/core/Kernel/Compressible/AdvectionDiffusion/D3Q27/F16/F16CompressibleAdvectionDiffusion.h b/src/gpu/core/Kernel/Compressible/AdvectionDiffusion/D3Q27/F16/F16CompressibleAdvectionDiffusion.h new file mode 100644 index 0000000000000000000000000000000000000000..5eda04602ce24aa5f2bac5c6043aee7f7dcc47c6 --- /dev/null +++ b/src/gpu/core/Kernel/Compressible/AdvectionDiffusion/D3Q27/F16/F16CompressibleAdvectionDiffusion.h @@ -0,0 +1,16 @@ +#ifndef F16CompressibleAdvectionDiffusion_H +#define F16CompressibleAdvectionDiffusion_H + +#include "Kernel/AdvectionDiffusionKernel.h" + +class F16CompressibleAdvectionDiffusion : public AdvectionDiffusionKernel +{ +public: + static std::shared_ptr<F16CompressibleAdvectionDiffusion> getNewInstance(std::shared_ptr< Parameter> para, int level); + void run(); + +private: + F16CompressibleAdvectionDiffusion(); + F16CompressibleAdvectionDiffusion(std::shared_ptr< Parameter> para, int level); +}; +#endif \ No newline at end of file diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/AdvectionDiffusion/Compressible/Mod27/ADComp27/ADComp27_Device.cu b/src/gpu/core/Kernel/Compressible/AdvectionDiffusion/D3Q27/F16/F16CompressibleAdvectionDiffusion_Device.cu similarity index 75% rename from src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/AdvectionDiffusion/Compressible/Mod27/ADComp27/ADComp27_Device.cu rename to src/gpu/core/Kernel/Compressible/AdvectionDiffusion/D3Q27/F16/F16CompressibleAdvectionDiffusion_Device.cu index eb6c9814efdedb822ddc3052d6b577750be83b12..d11c715ad26230d95176990f84744d9c3faf145a 100644 --- a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/AdvectionDiffusion/Compressible/Mod27/ADComp27/ADComp27_Device.cu +++ b/src/gpu/core/Kernel/Compressible/AdvectionDiffusion/D3Q27/F16/F16CompressibleAdvectionDiffusion_Device.cu @@ -6,7 +6,7 @@ using namespace vf::basics::constant; using namespace vf::lbm::dir; #include "math.h" -__global__ void LB_KERNEL_AD_COMP_27(real diffusivity, +__global__ void F16CompressibleAdvectionDiffusion_Device(real diffusivity, unsigned int* bcMatD, unsigned int* neighborX, unsigned int* neighborY, @@ -38,125 +38,125 @@ __global__ void LB_KERNEL_AD_COMP_27(real diffusivity, Distributions27 D; if (EvenOrOdd == true) { - D.f[DIR_P00] = &DDStart[DIR_P00 * size_Mat]; - D.f[DIR_M00] = &DDStart[DIR_M00 * size_Mat]; - D.f[DIR_0P0] = &DDStart[DIR_0P0 * size_Mat]; - D.f[DIR_0M0] = &DDStart[DIR_0M0 * size_Mat]; - D.f[DIR_00P] = &DDStart[DIR_00P * size_Mat]; - D.f[DIR_00M] = &DDStart[DIR_00M * size_Mat]; - D.f[DIR_PP0] = &DDStart[DIR_PP0 * size_Mat]; - D.f[DIR_MM0] = &DDStart[DIR_MM0 * size_Mat]; - D.f[DIR_PM0] = &DDStart[DIR_PM0 * size_Mat]; - D.f[DIR_MP0] = &DDStart[DIR_MP0 * size_Mat]; - D.f[DIR_P0P] = &DDStart[DIR_P0P * size_Mat]; - D.f[DIR_M0M] = &DDStart[DIR_M0M * size_Mat]; - D.f[DIR_P0M] = &DDStart[DIR_P0M * size_Mat]; - D.f[DIR_M0P] = &DDStart[DIR_M0P * size_Mat]; - D.f[DIR_0PP] = &DDStart[DIR_0PP * size_Mat]; - D.f[DIR_0MM] = &DDStart[DIR_0MM * size_Mat]; - D.f[DIR_0PM] = &DDStart[DIR_0PM * size_Mat]; - D.f[DIR_0MP] = &DDStart[DIR_0MP * size_Mat]; - D.f[DIR_000] = &DDStart[DIR_000 * size_Mat]; - D.f[DIR_PPP] = &DDStart[DIR_PPP * size_Mat]; - D.f[DIR_MMP] = &DDStart[DIR_MMP * size_Mat]; - D.f[DIR_PMP] = &DDStart[DIR_PMP * size_Mat]; - D.f[DIR_MPP] = &DDStart[DIR_MPP * size_Mat]; - D.f[DIR_PPM] = &DDStart[DIR_PPM * size_Mat]; - D.f[DIR_MMM] = &DDStart[DIR_MMM * size_Mat]; - D.f[DIR_PMM] = &DDStart[DIR_PMM * size_Mat]; - D.f[DIR_MPM] = &DDStart[DIR_MPM * size_Mat]; + D.f[dP00] = &DDStart[dP00 * size_Mat]; + D.f[dM00] = &DDStart[dM00 * size_Mat]; + D.f[d0P0] = &DDStart[d0P0 * size_Mat]; + D.f[d0M0] = &DDStart[d0M0 * size_Mat]; + D.f[d00P] = &DDStart[d00P * size_Mat]; + D.f[d00M] = &DDStart[d00M * size_Mat]; + D.f[dPP0] = &DDStart[dPP0 * size_Mat]; + D.f[dMM0] = &DDStart[dMM0 * size_Mat]; + D.f[dPM0] = &DDStart[dPM0 * size_Mat]; + D.f[dMP0] = &DDStart[dMP0 * size_Mat]; + D.f[dP0P] = &DDStart[dP0P * size_Mat]; + D.f[dM0M] = &DDStart[dM0M * size_Mat]; + D.f[dP0M] = &DDStart[dP0M * size_Mat]; + D.f[dM0P] = &DDStart[dM0P * size_Mat]; + D.f[d0PP] = &DDStart[d0PP * size_Mat]; + D.f[d0MM] = &DDStart[d0MM * size_Mat]; + D.f[d0PM] = &DDStart[d0PM * size_Mat]; + D.f[d0MP] = &DDStart[d0MP * size_Mat]; + D.f[d000] = &DDStart[d000 * size_Mat]; + D.f[dPPP] = &DDStart[dPPP * size_Mat]; + D.f[dMMP] = &DDStart[dMMP * size_Mat]; + D.f[dPMP] = &DDStart[dPMP * size_Mat]; + D.f[dMPP] = &DDStart[dMPP * size_Mat]; + D.f[dPPM] = &DDStart[dPPM * size_Mat]; + D.f[dMMM] = &DDStart[dMMM * size_Mat]; + D.f[dPMM] = &DDStart[dPMM * size_Mat]; + D.f[dMPM] = &DDStart[dMPM * size_Mat]; } else { - D.f[DIR_M00] = &DDStart[DIR_P00 * size_Mat]; - D.f[DIR_P00] = &DDStart[DIR_M00 * size_Mat]; - D.f[DIR_0M0] = &DDStart[DIR_0P0 * size_Mat]; - D.f[DIR_0P0] = &DDStart[DIR_0M0 * size_Mat]; - D.f[DIR_00M] = &DDStart[DIR_00P * size_Mat]; - D.f[DIR_00P] = &DDStart[DIR_00M * size_Mat]; - D.f[DIR_MM0] = &DDStart[DIR_PP0 * size_Mat]; - D.f[DIR_PP0] = &DDStart[DIR_MM0 * size_Mat]; - D.f[DIR_MP0] = &DDStart[DIR_PM0 * size_Mat]; - D.f[DIR_PM0] = &DDStart[DIR_MP0 * size_Mat]; - D.f[DIR_M0M] = &DDStart[DIR_P0P * size_Mat]; - D.f[DIR_P0P] = &DDStart[DIR_M0M * size_Mat]; - D.f[DIR_M0P] = &DDStart[DIR_P0M * size_Mat]; - D.f[DIR_P0M] = &DDStart[DIR_M0P * size_Mat]; - D.f[DIR_0MM] = &DDStart[DIR_0PP * size_Mat]; - D.f[DIR_0PP] = &DDStart[DIR_0MM * size_Mat]; - D.f[DIR_0MP] = &DDStart[DIR_0PM * size_Mat]; - D.f[DIR_0PM] = &DDStart[DIR_0MP * size_Mat]; - D.f[DIR_000] = &DDStart[DIR_000 * size_Mat]; - D.f[DIR_MMM] = &DDStart[DIR_PPP * size_Mat]; - D.f[DIR_PPM] = &DDStart[DIR_MMP * size_Mat]; - D.f[DIR_MPM] = &DDStart[DIR_PMP * size_Mat]; - D.f[DIR_PMM] = &DDStart[DIR_MPP * size_Mat]; - D.f[DIR_MMP] = &DDStart[DIR_PPM * size_Mat]; - D.f[DIR_PPP] = &DDStart[DIR_MMM * size_Mat]; - D.f[DIR_MPP] = &DDStart[DIR_PMM * size_Mat]; - D.f[DIR_PMP] = &DDStart[DIR_MPM * size_Mat]; + D.f[dM00] = &DDStart[dP00 * size_Mat]; + D.f[dP00] = &DDStart[dM00 * size_Mat]; + D.f[d0M0] = &DDStart[d0P0 * size_Mat]; + D.f[d0P0] = &DDStart[d0M0 * size_Mat]; + D.f[d00M] = &DDStart[d00P * size_Mat]; + D.f[d00P] = &DDStart[d00M * size_Mat]; + D.f[dMM0] = &DDStart[dPP0 * size_Mat]; + D.f[dPP0] = &DDStart[dMM0 * size_Mat]; + D.f[dMP0] = &DDStart[dPM0 * size_Mat]; + D.f[dPM0] = &DDStart[dMP0 * size_Mat]; + D.f[dM0M] = &DDStart[dP0P * size_Mat]; + D.f[dP0P] = &DDStart[dM0M * size_Mat]; + D.f[dM0P] = &DDStart[dP0M * size_Mat]; + D.f[dP0M] = &DDStart[dM0P * size_Mat]; + D.f[d0MM] = &DDStart[d0PP * size_Mat]; + D.f[d0PP] = &DDStart[d0MM * size_Mat]; + D.f[d0MP] = &DDStart[d0PM * size_Mat]; + D.f[d0PM] = &DDStart[d0MP * size_Mat]; + D.f[d000] = &DDStart[d000 * size_Mat]; + D.f[dMMM] = &DDStart[dPPP * size_Mat]; + D.f[dPPM] = &DDStart[dMMP * size_Mat]; + D.f[dMPM] = &DDStart[dPMP * size_Mat]; + D.f[dPMM] = &DDStart[dMPP * size_Mat]; + D.f[dMMP] = &DDStart[dPPM * size_Mat]; + D.f[dPPP] = &DDStart[dMMM * size_Mat]; + D.f[dMPP] = &DDStart[dPMM * size_Mat]; + D.f[dPMP] = &DDStart[dMPM * size_Mat]; } Distributions27 D27; if (EvenOrOdd == true) { - D27.f[DIR_P00] = &DD27[DIR_P00 * size_Mat]; - D27.f[DIR_M00] = &DD27[DIR_M00 * size_Mat]; - D27.f[DIR_0P0] = &DD27[DIR_0P0 * size_Mat]; - D27.f[DIR_0M0] = &DD27[DIR_0M0 * size_Mat]; - D27.f[DIR_00P] = &DD27[DIR_00P * size_Mat]; - D27.f[DIR_00M] = &DD27[DIR_00M * size_Mat]; - D27.f[DIR_PP0] = &DD27[DIR_PP0 * size_Mat]; - D27.f[DIR_MM0] = &DD27[DIR_MM0 * size_Mat]; - D27.f[DIR_PM0] = &DD27[DIR_PM0 * size_Mat]; - D27.f[DIR_MP0] = &DD27[DIR_MP0 * size_Mat]; - D27.f[DIR_P0P] = &DD27[DIR_P0P * size_Mat]; - D27.f[DIR_M0M] = &DD27[DIR_M0M * size_Mat]; - D27.f[DIR_P0M] = &DD27[DIR_P0M * size_Mat]; - D27.f[DIR_M0P] = &DD27[DIR_M0P * size_Mat]; - D27.f[DIR_0PP] = &DD27[DIR_0PP * size_Mat]; - D27.f[DIR_0MM] = &DD27[DIR_0MM * size_Mat]; - D27.f[DIR_0PM] = &DD27[DIR_0PM * size_Mat]; - D27.f[DIR_0MP] = &DD27[DIR_0MP * size_Mat]; - D27.f[DIR_000] = &DD27[DIR_000 * size_Mat]; - D27.f[DIR_PPP] = &DD27[DIR_PPP * size_Mat]; - D27.f[DIR_MMP] = &DD27[DIR_MMP * size_Mat]; - D27.f[DIR_PMP] = &DD27[DIR_PMP * size_Mat]; - D27.f[DIR_MPP] = &DD27[DIR_MPP * size_Mat]; - D27.f[DIR_PPM] = &DD27[DIR_PPM * size_Mat]; - D27.f[DIR_MMM] = &DD27[DIR_MMM * size_Mat]; - D27.f[DIR_PMM] = &DD27[DIR_PMM * size_Mat]; - D27.f[DIR_MPM] = &DD27[DIR_MPM * size_Mat]; + D27.f[dP00] = &DD27[dP00 * size_Mat]; + D27.f[dM00] = &DD27[dM00 * size_Mat]; + D27.f[d0P0] = &DD27[d0P0 * size_Mat]; + D27.f[d0M0] = &DD27[d0M0 * size_Mat]; + D27.f[d00P] = &DD27[d00P * size_Mat]; + D27.f[d00M] = &DD27[d00M * size_Mat]; + D27.f[dPP0] = &DD27[dPP0 * size_Mat]; + D27.f[dMM0] = &DD27[dMM0 * size_Mat]; + D27.f[dPM0] = &DD27[dPM0 * size_Mat]; + D27.f[dMP0] = &DD27[dMP0 * size_Mat]; + D27.f[dP0P] = &DD27[dP0P * size_Mat]; + D27.f[dM0M] = &DD27[dM0M * size_Mat]; + D27.f[dP0M] = &DD27[dP0M * size_Mat]; + D27.f[dM0P] = &DD27[dM0P * size_Mat]; + D27.f[d0PP] = &DD27[d0PP * size_Mat]; + D27.f[d0MM] = &DD27[d0MM * size_Mat]; + D27.f[d0PM] = &DD27[d0PM * size_Mat]; + D27.f[d0MP] = &DD27[d0MP * size_Mat]; + D27.f[d000] = &DD27[d000 * size_Mat]; + D27.f[dPPP] = &DD27[dPPP * size_Mat]; + D27.f[dMMP] = &DD27[dMMP * size_Mat]; + D27.f[dPMP] = &DD27[dPMP * size_Mat]; + D27.f[dMPP] = &DD27[dMPP * size_Mat]; + D27.f[dPPM] = &DD27[dPPM * size_Mat]; + D27.f[dMMM] = &DD27[dMMM * size_Mat]; + D27.f[dPMM] = &DD27[dPMM * size_Mat]; + D27.f[dMPM] = &DD27[dMPM * size_Mat]; } else { - D27.f[DIR_M00] = &DD27[DIR_P00 * size_Mat]; - D27.f[DIR_P00] = &DD27[DIR_M00 * size_Mat]; - D27.f[DIR_0M0] = &DD27[DIR_0P0 * size_Mat]; - D27.f[DIR_0P0] = &DD27[DIR_0M0 * size_Mat]; - D27.f[DIR_00M] = &DD27[DIR_00P * size_Mat]; - D27.f[DIR_00P] = &DD27[DIR_00M * size_Mat]; - D27.f[DIR_MM0] = &DD27[DIR_PP0 * size_Mat]; - D27.f[DIR_PP0] = &DD27[DIR_MM0 * size_Mat]; - D27.f[DIR_MP0] = &DD27[DIR_PM0 * size_Mat]; - D27.f[DIR_PM0] = &DD27[DIR_MP0 * size_Mat]; - D27.f[DIR_M0M] = &DD27[DIR_P0P * size_Mat]; - D27.f[DIR_P0P] = &DD27[DIR_M0M * size_Mat]; - D27.f[DIR_M0P] = &DD27[DIR_P0M * size_Mat]; - D27.f[DIR_P0M] = &DD27[DIR_M0P * size_Mat]; - D27.f[DIR_0MM] = &DD27[DIR_0PP * size_Mat]; - D27.f[DIR_0PP] = &DD27[DIR_0MM * size_Mat]; - D27.f[DIR_0MP] = &DD27[DIR_0PM * size_Mat]; - D27.f[DIR_0PM] = &DD27[DIR_0MP * size_Mat]; - D27.f[DIR_000] = &DD27[DIR_000 * size_Mat]; - D27.f[DIR_MMM] = &DD27[DIR_PPP * size_Mat]; - D27.f[DIR_PPM] = &DD27[DIR_MMP * size_Mat]; - D27.f[DIR_MPM] = &DD27[DIR_PMP * size_Mat]; - D27.f[DIR_PMM] = &DD27[DIR_MPP * size_Mat]; - D27.f[DIR_MMP] = &DD27[DIR_PPM * size_Mat]; - D27.f[DIR_PPP] = &DD27[DIR_MMM * size_Mat]; - D27.f[DIR_MPP] = &DD27[DIR_PMM * size_Mat]; - D27.f[DIR_PMP] = &DD27[DIR_MPM * size_Mat]; + D27.f[dM00] = &DD27[dP00 * size_Mat]; + D27.f[dP00] = &DD27[dM00 * size_Mat]; + D27.f[d0M0] = &DD27[d0P0 * size_Mat]; + D27.f[d0P0] = &DD27[d0M0 * size_Mat]; + D27.f[d00M] = &DD27[d00P * size_Mat]; + D27.f[d00P] = &DD27[d00M * size_Mat]; + D27.f[dMM0] = &DD27[dPP0 * size_Mat]; + D27.f[dPP0] = &DD27[dMM0 * size_Mat]; + D27.f[dMP0] = &DD27[dPM0 * size_Mat]; + D27.f[dPM0] = &DD27[dMP0 * size_Mat]; + D27.f[dM0M] = &DD27[dP0P * size_Mat]; + D27.f[dP0P] = &DD27[dM0M * size_Mat]; + D27.f[dM0P] = &DD27[dP0M * size_Mat]; + D27.f[dP0M] = &DD27[dM0P * size_Mat]; + D27.f[d0MM] = &DD27[d0PP * size_Mat]; + D27.f[d0PP] = &DD27[d0MM * size_Mat]; + D27.f[d0MP] = &DD27[d0PM * size_Mat]; + D27.f[d0PM] = &DD27[d0MP * size_Mat]; + D27.f[d000] = &DD27[d000 * size_Mat]; + D27.f[dMMM] = &DD27[dPPP * size_Mat]; + D27.f[dPPM] = &DD27[dMMP * size_Mat]; + D27.f[dMPM] = &DD27[dPMP * size_Mat]; + D27.f[dPMM] = &DD27[dMPP * size_Mat]; + D27.f[dMMP] = &DD27[dPPM * size_Mat]; + D27.f[dPPP] = &DD27[dMMM * size_Mat]; + D27.f[dMPP] = &DD27[dPMM * size_Mat]; + D27.f[dPMP] = &DD27[dMPM * size_Mat]; } //////////////////////////////////////////////////////////////////////////////// @@ -169,61 +169,61 @@ __global__ void LB_KERNEL_AD_COMP_27(real diffusivity, unsigned int kbs = neighborZ[ks]; unsigned int kbsw = neighborZ[ksw]; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real fW = (D.f[DIR_P00])[k];//ke - real fE = (D.f[DIR_M00])[kw]; - real fS = (D.f[DIR_0P0])[k];//kn - real fN = (D.f[DIR_0M0])[ks]; - real fB = (D.f[DIR_00P])[k];//kt - real fT = (D.f[DIR_00M])[kb]; - real fSW = (D.f[DIR_PP0])[k];//kne - real fNE = (D.f[DIR_MM0])[ksw]; - real fNW = (D.f[DIR_PM0])[ks];//kse - real fSE = (D.f[DIR_MP0])[kw];//knw - real fBW = (D.f[DIR_P0P])[k];//kte - real fTE = (D.f[DIR_M0M])[kbw]; - real fTW = (D.f[DIR_P0M])[kb];//kbe - real fBE = (D.f[DIR_M0P])[kw];//ktw - real fBS = (D.f[DIR_0PP])[k];//ktn - real fTN = (D.f[DIR_0MM])[kbs]; - real fTS = (D.f[DIR_0PM])[kb];//kbn - real fBN = (D.f[DIR_0MP])[ks];//kts - real fZERO = (D.f[DIR_000])[k];//kzero - real fBSW = (D.f[DIR_PPP])[k];//ktne - real fBNE = (D.f[DIR_MMP])[ksw];//ktsw - real fBNW = (D.f[DIR_PMP])[ks];//ktse - real fBSE = (D.f[DIR_MPP])[kw];//ktnw - real fTSW = (D.f[DIR_PPM])[kb];//kbne - real fTNE = (D.f[DIR_MMM])[kbsw]; - real fTNW = (D.f[DIR_PMM])[kbs];//kbse - real fTSE = (D.f[DIR_MPM])[kbw];//kbnw + real fW = (D.f[dP00])[k];//ke + real fE = (D.f[dM00])[kw]; + real fS = (D.f[d0P0])[k];//kn + real fN = (D.f[d0M0])[ks]; + real fB = (D.f[d00P])[k];//kt + real fT = (D.f[d00M])[kb]; + real fSW = (D.f[dPP0])[k];//kne + real fNE = (D.f[dMM0])[ksw]; + real fNW = (D.f[dPM0])[ks];//kse + real fSE = (D.f[dMP0])[kw];//knw + real fBW = (D.f[dP0P])[k];//kte + real fTE = (D.f[dM0M])[kbw]; + real fTW = (D.f[dP0M])[kb];//kbe + real fBE = (D.f[dM0P])[kw];//ktw + real fBS = (D.f[d0PP])[k];//ktn + real fTN = (D.f[d0MM])[kbs]; + real fTS = (D.f[d0PM])[kb];//kbn + real fBN = (D.f[d0MP])[ks];//kts + real fZERO = (D.f[d000])[k];//kzero + real fBSW = (D.f[dPPP])[k];//ktne + real fBNE = (D.f[dMMP])[ksw];//ktsw + real fBNW = (D.f[dPMP])[ks];//ktse + real fBSE = (D.f[dMPP])[kw];//ktnw + real fTSW = (D.f[dPPM])[kb];//kbne + real fTNE = (D.f[dMMM])[kbsw]; + real fTNW = (D.f[dPMM])[kbs];//kbse + real fTSE = (D.f[dMPM])[kbw];//kbnw //////////////////////////////////////////////////////////////////////////////// - real mfcbb = (D27.f[DIR_P00])[k]; - real mfabb = (D27.f[DIR_M00])[kw]; - real mfbcb = (D27.f[DIR_0P0])[k]; - real mfbab = (D27.f[DIR_0M0])[ks]; - real mfbbc = (D27.f[DIR_00P])[k]; - real mfbba = (D27.f[DIR_00M])[kb]; - real mfccb = (D27.f[DIR_PP0])[k]; - real mfaab = (D27.f[DIR_MM0])[ksw]; - real mfcab = (D27.f[DIR_PM0])[ks]; - real mfacb = (D27.f[DIR_MP0])[kw]; - real mfcbc = (D27.f[DIR_P0P])[k]; - real mfaba = (D27.f[DIR_M0M])[kbw]; - real mfcba = (D27.f[DIR_P0M])[kb]; - real mfabc = (D27.f[DIR_M0P])[kw]; - real mfbcc = (D27.f[DIR_0PP])[k]; - real mfbaa = (D27.f[DIR_0MM])[kbs]; - real mfbca = (D27.f[DIR_0PM])[kb]; - real mfbac = (D27.f[DIR_0MP])[ks]; - real mfbbb = (D27.f[DIR_000])[k]; - real mfccc = (D27.f[DIR_PPP])[k]; - real mfaac = (D27.f[DIR_MMP])[ksw]; - real mfcac = (D27.f[DIR_PMP])[ks]; - real mfacc = (D27.f[DIR_MPP])[kw]; - real mfcca = (D27.f[DIR_PPM])[kb]; - real mfaaa = (D27.f[DIR_MMM])[kbsw]; - real mfcaa = (D27.f[DIR_PMM])[kbs]; - real mfaca = (D27.f[DIR_MPM])[kbw]; + real mfcbb = (D27.f[dP00])[k]; + real mfabb = (D27.f[dM00])[kw]; + real mfbcb = (D27.f[d0P0])[k]; + real mfbab = (D27.f[d0M0])[ks]; + real mfbbc = (D27.f[d00P])[k]; + real mfbba = (D27.f[d00M])[kb]; + real mfccb = (D27.f[dPP0])[k]; + real mfaab = (D27.f[dMM0])[ksw]; + real mfcab = (D27.f[dPM0])[ks]; + real mfacb = (D27.f[dMP0])[kw]; + real mfcbc = (D27.f[dP0P])[k]; + real mfaba = (D27.f[dM0M])[kbw]; + real mfcba = (D27.f[dP0M])[kb]; + real mfabc = (D27.f[dM0P])[kw]; + real mfbcc = (D27.f[d0PP])[k]; + real mfbaa = (D27.f[d0MM])[kbs]; + real mfbca = (D27.f[d0PM])[kb]; + real mfbac = (D27.f[d0MP])[ks]; + real mfbbb = (D27.f[d000])[k]; + real mfccc = (D27.f[dPPP])[k]; + real mfaac = (D27.f[dMMP])[ksw]; + real mfcac = (D27.f[dPMP])[ks]; + real mfacc = (D27.f[dMPP])[kw]; + real mfcca = (D27.f[dPPM])[kb]; + real mfaaa = (D27.f[dMMM])[kbsw]; + real mfcaa = (D27.f[dPMM])[kbs]; + real mfaca = (D27.f[dMPM])[kbw]; //////////////////////////////////////////////////////////////////////////////////// //Conc real drho = ((((mfccc + mfaaa) + (mfaca + mfcac)) + ((mfacc + mfcaa) + (mfaac + mfcca))) + @@ -773,33 +773,33 @@ __global__ void LB_KERNEL_AD_COMP_27(real diffusivity, //////////////////////////////////////////////////////////////////////////////////// - (D27.f[DIR_P00])[k] = mfabb; - (D27.f[DIR_M00])[kw] = mfcbb; - (D27.f[DIR_0P0])[k] = mfbab; - (D27.f[DIR_0M0])[ks] = mfbcb; - (D27.f[DIR_00P])[k] = mfbba; - (D27.f[DIR_00M])[kb] = mfbbc; - (D27.f[DIR_PP0])[k] = mfaab; - (D27.f[DIR_MM0])[ksw] = mfccb; - (D27.f[DIR_PM0])[ks] = mfacb; - (D27.f[DIR_MP0])[kw] = mfcab; - (D27.f[DIR_P0P])[k] = mfaba; - (D27.f[DIR_M0M])[kbw] = mfcbc; - (D27.f[DIR_P0M])[kb] = mfabc; - (D27.f[DIR_M0P])[kw] = mfcba; - (D27.f[DIR_0PP])[k] = mfbaa; - (D27.f[DIR_0MM])[kbs] = mfbcc; - (D27.f[DIR_0PM])[kb] = mfbac; - (D27.f[DIR_0MP])[ks] = mfbca; - (D27.f[DIR_000])[k] = mfbbb; - (D27.f[DIR_PPP])[k] = mfaaa; - (D27.f[DIR_PMP])[ks] = mfaca; - (D27.f[DIR_PPM])[kb] = mfaac; - (D27.f[DIR_PMM])[kbs] = mfacc; - (D27.f[DIR_MPP])[kw] = mfcaa; - (D27.f[DIR_MMP])[ksw] = mfcca; - (D27.f[DIR_MPM])[kbw] = mfcac; - (D27.f[DIR_MMM])[kbsw] = mfccc; + (D27.f[dP00])[k] = mfabb; + (D27.f[dM00])[kw] = mfcbb; + (D27.f[d0P0])[k] = mfbab; + (D27.f[d0M0])[ks] = mfbcb; + (D27.f[d00P])[k] = mfbba; + (D27.f[d00M])[kb] = mfbbc; + (D27.f[dPP0])[k] = mfaab; + (D27.f[dMM0])[ksw] = mfccb; + (D27.f[dPM0])[ks] = mfacb; + (D27.f[dMP0])[kw] = mfcab; + (D27.f[dP0P])[k] = mfaba; + (D27.f[dM0M])[kbw] = mfcbc; + (D27.f[dP0M])[kb] = mfabc; + (D27.f[dM0P])[kw] = mfcba; + (D27.f[d0PP])[k] = mfbaa; + (D27.f[d0MM])[kbs] = mfbcc; + (D27.f[d0PM])[kb] = mfbac; + (D27.f[d0MP])[ks] = mfbca; + (D27.f[d000])[k] = mfbbb; + (D27.f[dPPP])[k] = mfaaa; + (D27.f[dPMP])[ks] = mfaca; + (D27.f[dPPM])[kb] = mfaac; + (D27.f[dPMM])[kbs] = mfacc; + (D27.f[dMPP])[kw] = mfcaa; + (D27.f[dMMP])[ksw] = mfcca; + (D27.f[dMPM])[kbw] = mfcac; + (D27.f[dMMM])[kbsw] = mfccc; //////////////////////////////////////////////////////////////////////////////////// } } diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/AdvectionDiffusion/Compressible/Mod27/ADComp27/ADComp27_Device.cuh b/src/gpu/core/Kernel/Compressible/AdvectionDiffusion/D3Q27/F16/F16CompressibleAdvectionDiffusion_Device.cuh similarity index 54% rename from src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/AdvectionDiffusion/Compressible/Mod27/ADComp27/ADComp27_Device.cuh rename to src/gpu/core/Kernel/Compressible/AdvectionDiffusion/D3Q27/F16/F16CompressibleAdvectionDiffusion_Device.cuh index a5482a10ca15fc3f27245acbe8b47a06d9f917f0..603d623093a5e7da835c8d03e23c1441f0e673ba 100644 --- a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/AdvectionDiffusion/Compressible/Mod27/ADComp27/ADComp27_Device.cuh +++ b/src/gpu/core/Kernel/Compressible/AdvectionDiffusion/D3Q27/F16/F16CompressibleAdvectionDiffusion_Device.cuh @@ -1,10 +1,10 @@ -#ifndef LB_KERNEL_AD_COMP_27_H -#define LB_KERNEL_AD_COMP_27_H +#ifndef F16CompressibleAdvectionDiffusion_Device_H +#define F16CompressibleAdvectionDiffusion_Device_H #include <DataTypes.h> #include <curand.h> -__global__ void LB_KERNEL_AD_COMP_27(real diffusivity, +__global__ void F16CompressibleAdvectionDiffusion_Device(real diffusivity, unsigned int* bcMatD, unsigned int* neighborX, unsigned int* neighborY, diff --git a/src/gpu/core/Kernel/Compressible/AdvectionDiffusion/D3Q7/B12/B12CompressibleAdvectionDiffusionD3Q7.cu b/src/gpu/core/Kernel/Compressible/AdvectionDiffusion/D3Q7/B12/B12CompressibleAdvectionDiffusionD3Q7.cu new file mode 100644 index 0000000000000000000000000000000000000000..21b4a09320085086849f7b89782c44c582c20867 --- /dev/null +++ b/src/gpu/core/Kernel/Compressible/AdvectionDiffusion/D3Q7/B12/B12CompressibleAdvectionDiffusionD3Q7.cu @@ -0,0 +1,40 @@ +#include "B12CompressibleAdvectionDiffusionD3Q7.h" + +#include "B12CompressibleAdvectionDiffusionD3Q7_Device.cuh" +#include "Parameter/Parameter.h" +#include <cuda_helper/CudaGrid.h> + +std::shared_ptr<B12CompressibleAdvectionDiffusionD3Q7> B12CompressibleAdvectionDiffusionD3Q7::getNewInstance(std::shared_ptr<Parameter> para, int level) +{ + return std::shared_ptr<B12CompressibleAdvectionDiffusionD3Q7>(new B12CompressibleAdvectionDiffusionD3Q7(para, level)); +} + +void B12CompressibleAdvectionDiffusionD3Q7::run() +{ + vf::cuda::CudaGrid grid = vf::cuda::CudaGrid(para->getParD(level)->numberofthreads, para->getParD(level)->numberOfNodes); + + B12CompressibleAdvectionDiffusionD3Q7_Device<<< grid.grid, grid.threads >>>( + para->getParD(level)->diffusivity, + para->getParD(level)->typeOfGridNode, + para->getParD(level)->neighborX, + para->getParD(level)->neighborY, + para->getParD(level)->neighborZ, + para->getParD(level)->distributions.f[0], + para->getParD(level)->distributionsAD7.f[0], + para->getParD(level)->numberOfNodes, + para->getParD(level)->isEvenTimestep); + getLastCudaError("B12CompressibleAdvectionDiffusionD3Q7_Device execution failed"); +} + +B12CompressibleAdvectionDiffusionD3Q7::B12CompressibleAdvectionDiffusionD3Q7(std::shared_ptr<Parameter> para, int level) +{ + this->para = para; + this->level = level; + + myPreProcessorTypes.push_back(InitCompAD7); + +} + +B12CompressibleAdvectionDiffusionD3Q7::B12CompressibleAdvectionDiffusionD3Q7() +{ +} diff --git a/src/gpu/core/Kernel/Compressible/AdvectionDiffusion/D3Q7/B12/B12CompressibleAdvectionDiffusionD3Q7.h b/src/gpu/core/Kernel/Compressible/AdvectionDiffusion/D3Q7/B12/B12CompressibleAdvectionDiffusionD3Q7.h new file mode 100644 index 0000000000000000000000000000000000000000..a54791dfd03201867120f3f885a201223fe4b151 --- /dev/null +++ b/src/gpu/core/Kernel/Compressible/AdvectionDiffusion/D3Q7/B12/B12CompressibleAdvectionDiffusionD3Q7.h @@ -0,0 +1,16 @@ +#ifndef B12CompressibleAdvectionDiffusionD3Q7_H +#define B12CompressibleAdvectionDiffusionD3Q7_H + +#include "Kernel/AdvectionDiffusionKernel.h" + +class B12CompressibleAdvectionDiffusionD3Q7 : public AdvectionDiffusionKernel +{ +public: + static std::shared_ptr<B12CompressibleAdvectionDiffusionD3Q7> getNewInstance(std::shared_ptr< Parameter> para, int level); + void run(); + +private: + B12CompressibleAdvectionDiffusionD3Q7(); + B12CompressibleAdvectionDiffusionD3Q7(std::shared_ptr< Parameter> para, int level); +}; +#endif \ No newline at end of file diff --git a/src/gpu/core/Kernel/Compressible/AdvectionDiffusion/D3Q7/B12/B12CompressibleAdvectionDiffusionD3Q7_Device.cu b/src/gpu/core/Kernel/Compressible/AdvectionDiffusion/D3Q7/B12/B12CompressibleAdvectionDiffusionD3Q7_Device.cu new file mode 100644 index 0000000000000000000000000000000000000000..d13c7d4f036c579d08192155811972061a2e7d96 --- /dev/null +++ b/src/gpu/core/Kernel/Compressible/AdvectionDiffusion/D3Q7/B12/B12CompressibleAdvectionDiffusionD3Q7_Device.cu @@ -0,0 +1,222 @@ +#include "LBM/LB.h" +#include "lbm/constants/D3Q27.h" +#include <basics/constants/NumericConstants.h> + +using namespace vf::basics::constant; +using namespace vf::lbm::dir; + +#include "math.h" + +__global__ void B12CompressibleAdvectionDiffusionD3Q7_Device(real diffusivity, + unsigned int* bcMatD, + unsigned int* neighborX, + unsigned int* neighborY, + unsigned int* neighborZ, + real* DDStart, + real* DD7, + int size_Mat, + bool EvenOrOdd) +{ + //////////////////////////////////////////////////////////////////////////////// + const unsigned x = threadIdx.x; // Globaler x-Index + const unsigned y = blockIdx.x; // Globaler y-Index + const unsigned z = blockIdx.y; // Globaler z-Index + + const unsigned nx = blockDim.x; + const unsigned ny = gridDim.x; + + const unsigned k = nx*(ny*z + y) + x; + ////////////////////////////////////////////////////////////////////////// + + if (k<size_Mat) + { + //////////////////////////////////////////////////////////////////////////////// + unsigned int BC; + BC = bcMatD[k]; + + if ((BC != GEO_SOLID) && (BC != GEO_VOID)) + { + Distributions27 D; + if (EvenOrOdd == true) + { + D.f[dP00] = &DDStart[dP00 * size_Mat]; + D.f[dM00] = &DDStart[dM00 * size_Mat]; + D.f[d0P0] = &DDStart[d0P0 * size_Mat]; + D.f[d0M0] = &DDStart[d0M0 * size_Mat]; + D.f[d00P] = &DDStart[d00P * size_Mat]; + D.f[d00M] = &DDStart[d00M * size_Mat]; + D.f[dPP0] = &DDStart[dPP0 * size_Mat]; + D.f[dMM0] = &DDStart[dMM0 * size_Mat]; + D.f[dPM0] = &DDStart[dPM0 * size_Mat]; + D.f[dMP0] = &DDStart[dMP0 * size_Mat]; + D.f[dP0P] = &DDStart[dP0P * size_Mat]; + D.f[dM0M] = &DDStart[dM0M * size_Mat]; + D.f[dP0M] = &DDStart[dP0M * size_Mat]; + D.f[dM0P] = &DDStart[dM0P * size_Mat]; + D.f[d0PP] = &DDStart[d0PP * size_Mat]; + D.f[d0MM] = &DDStart[d0MM * size_Mat]; + D.f[d0PM] = &DDStart[d0PM * size_Mat]; + D.f[d0MP] = &DDStart[d0MP * size_Mat]; + D.f[d000] = &DDStart[d000 * size_Mat]; + D.f[dPPP] = &DDStart[dPPP * size_Mat]; + D.f[dMMP] = &DDStart[dMMP * size_Mat]; + D.f[dPMP] = &DDStart[dPMP * size_Mat]; + D.f[dMPP] = &DDStart[dMPP * size_Mat]; + D.f[dPPM] = &DDStart[dPPM * size_Mat]; + D.f[dMMM] = &DDStart[dMMM * size_Mat]; + D.f[dPMM] = &DDStart[dPMM * size_Mat]; + D.f[dMPM] = &DDStart[dMPM * size_Mat]; + } + else + { + D.f[dM00] = &DDStart[dP00 * size_Mat]; + D.f[dP00] = &DDStart[dM00 * size_Mat]; + D.f[d0M0] = &DDStart[d0P0 * size_Mat]; + D.f[d0P0] = &DDStart[d0M0 * size_Mat]; + D.f[d00M] = &DDStart[d00P * size_Mat]; + D.f[d00P] = &DDStart[d00M * size_Mat]; + D.f[dMM0] = &DDStart[dPP0 * size_Mat]; + D.f[dPP0] = &DDStart[dMM0 * size_Mat]; + D.f[dMP0] = &DDStart[dPM0 * size_Mat]; + D.f[dPM0] = &DDStart[dMP0 * size_Mat]; + D.f[dM0M] = &DDStart[dP0P * size_Mat]; + D.f[dP0P] = &DDStart[dM0M * size_Mat]; + D.f[dM0P] = &DDStart[dP0M * size_Mat]; + D.f[dP0M] = &DDStart[dM0P * size_Mat]; + D.f[d0MM] = &DDStart[d0PP * size_Mat]; + D.f[d0PP] = &DDStart[d0MM * size_Mat]; + D.f[d0MP] = &DDStart[d0PM * size_Mat]; + D.f[d0PM] = &DDStart[d0MP * size_Mat]; + D.f[d000] = &DDStart[d000 * size_Mat]; + D.f[dMMM] = &DDStart[dPPP * size_Mat]; + D.f[dPPM] = &DDStart[dMMP * size_Mat]; + D.f[dMPM] = &DDStart[dPMP * size_Mat]; + D.f[dPMM] = &DDStart[dMPP * size_Mat]; + D.f[dMMP] = &DDStart[dPPM * size_Mat]; + D.f[dPPP] = &DDStart[dMMM * size_Mat]; + D.f[dMPP] = &DDStart[dPMM * size_Mat]; + D.f[dPMP] = &DDStart[dMPM * size_Mat]; + } + + Distributions7 D7; + if (EvenOrOdd == true) + { + D7.f[0] = &DD7[0 * size_Mat]; + D7.f[1] = &DD7[1 * size_Mat]; + D7.f[2] = &DD7[2 * size_Mat]; + D7.f[3] = &DD7[3 * size_Mat]; + D7.f[4] = &DD7[4 * size_Mat]; + D7.f[5] = &DD7[5 * size_Mat]; + D7.f[6] = &DD7[6 * size_Mat]; + } + else + { + D7.f[0] = &DD7[0 * size_Mat]; + D7.f[2] = &DD7[1 * size_Mat]; + D7.f[1] = &DD7[2 * size_Mat]; + D7.f[4] = &DD7[3 * size_Mat]; + D7.f[3] = &DD7[4 * size_Mat]; + D7.f[6] = &DD7[5 * size_Mat]; + D7.f[5] = &DD7[6 * size_Mat]; + } + + //////////////////////////////////////////////////////////////////////////////// + //index + unsigned int kw = neighborX[k]; + unsigned int ks = neighborY[k]; + unsigned int kb = neighborZ[k]; + unsigned int ksw = neighborY[kw]; + unsigned int kbw = neighborZ[kw]; + unsigned int kbs = neighborZ[ks]; + unsigned int kbsw = neighborZ[ksw]; + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + real fW = (D.f[dP00])[k];//ke + real fE = (D.f[dM00])[kw]; + real fS = (D.f[d0P0])[k];//kn + real fN = (D.f[d0M0])[ks]; + real fB = (D.f[d00P])[k];//kt + real fT = (D.f[d00M])[kb]; + real fSW = (D.f[dPP0])[k];//kne + real fNE = (D.f[dMM0])[ksw]; + real fNW = (D.f[dPM0])[ks];//kse + real fSE = (D.f[dMP0])[kw];//knw + real fBW = (D.f[dP0P])[k];//kte + real fTE = (D.f[dM0M])[kbw]; + real fTW = (D.f[dP0M])[kb];//kbe + real fBE = (D.f[dM0P])[kw];//ktw + real fBS = (D.f[d0PP])[k];//ktn + real fTN = (D.f[d0MM])[kbs]; + real fTS = (D.f[d0PM])[kb];//kbn + real fBN = (D.f[d0MP])[ks];//kts + real fZERO = (D.f[d000])[k];//kzero + real fBSW = (D.f[dPPP])[k];//ktne + real fBNE = (D.f[dMMP])[ksw];//ktsw + real fBNW = (D.f[dPMP])[ks];//ktse + real fBSE = (D.f[dMPP])[kw];//ktnw + real fTSW = (D.f[dPPM])[kb];//kbne + real fTNE = (D.f[dMMM])[kbsw]; + real fTNW = (D.f[dPMM])[kbs];//kbse + real fTSE = (D.f[dMPM])[kbw];//kbnw + //real fE = (D.f[dP00])[k ];//ke + //real fW = (D.f[dM00])[kw ]; + //real fN = (D.f[d0P0])[k ];//kn + //real fS = (D.f[d0M0])[ks ]; + //real fT = (D.f[d00P])[k ];//kt + //real fB = (D.f[d00M])[kb ]; + //real fNE = (D.f[dPP0])[k ];//kne + //real fSW = (D.f[dMM0])[ksw]; + //real fSE = (D.f[dPM0])[ks ];//kse + //real fNW = (D.f[dMP0])[kw ];//knw + //real fTE = (D.f[dP0P])[k ];//kte + //real fBW = (D.f[dM0M])[kbw]; + //real fBE = (D.f[dP0M])[kb ];//kbe + //real fTW = (D.f[dM0P])[kw ];//ktw + //real fTN = (D.f[d0PP])[k ];//ktn + //real fBS = (D.f[d0MM])[kbs]; + //real fBN = (D.f[d0PM])[kb ];//kbn + //real fTS = (D.f[d0MP])[ks ];//kts + //real fZERO = (D.f[d000])[k ];//kzero + //real fTNE = (D.f[dPPP])[k ];//ktne + //real fTSW = (D.f[dMMP])[ksw];//ktsw + //real fTSE = (D.f[dPMP])[ks ];//ktse + //real fTNW = (D.f[dMPP])[kw ];//ktnw + //real fBNE = (D.f[dPPM])[kb ];//kbne + //real fBSW = (D.f[dMMM])[kbsw]; + //real fBSE = (D.f[dPMM])[kbs];//kbse + //real fBNW = (D.f[dMPM])[kbw];//kbnw + //////////////////////////////////////////////////////////////////////////////// + real f7ZERO = (D7.f[0])[k]; + real f7E = (D7.f[1])[k]; + real f7W = (D7.f[2])[kw]; + real f7N = (D7.f[3])[k]; + real f7S = (D7.f[4])[ks]; + real f7T = (D7.f[5])[k]; + real f7B = (D7.f[6])[kb]; + //////////////////////////////////////////////////////////////////////////////// + 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; + real OORho = c1o1 / rho; + real vx = OORho*((fTNE - fBSW) + (fBNE - fTSW) + (fTSE - fBNW) + (fBSE - fTNW) + (fNE - fSW) + (fSE - fNW) + (fTE - fBW) + (fBE - fTW) + (fE - fW)); + real vy = OORho*((fTNE - fBSW) + (fBNE - fTSW) + (fBNW - fTSE) + (fTNW - fBSE) + (fNE - fSW) + (fNW - fSE) + (fTN - fBS) + (fBN - fTS) + (fN - fS)); + real vz = OORho*((fTNE - fBSW) + (fTSW - fBNE) + (fTSE - fBNW) + (fTNW - fBSE) + (fTE - fBW) + (fTW - fBE) + (fTN - fBS) + (fTS - fBN) + (fT - fB)); + //////////////////////////////////////////////////////////////////////////////// + real omegaD = -c3o1 + sqrt(c3o1); + real Lam = -(c1o2 + c1o1 / omegaD); + real nue_d = Lam / c3o1; + real ae = diffusivity / nue_d - c1o1; + real ux_sq = vx * vx; + real uy_sq = vy * vy; + real uz_sq = vz * vz; + + real ConcD = f7ZERO + f7E + f7W + f7N + f7S + f7T + f7B; + + (D7.f[0])[k] = f7ZERO*(c1o1 + omegaD) - omegaD*ConcD*(c1o3*(ae*(-c3o1)) - (ux_sq + uy_sq + uz_sq)); + (D7.f[2])[kw] = f7E *(c1o1 + omegaD) - omegaD*ConcD*(c1o6*(ae + c1o1) + c1o2*(ux_sq)+vx*c1o2); + (D7.f[1])[k] = f7W *(c1o1 + omegaD) - omegaD*ConcD*(c1o6*(ae + c1o1) + c1o2*(ux_sq)-vx*c1o2); + (D7.f[4])[ks] = f7N *(c1o1 + omegaD) - omegaD*ConcD*(c1o6*(ae + c1o1) + c1o2*(uy_sq)+vy*c1o2); + (D7.f[3])[k] = f7S *(c1o1 + omegaD) - omegaD*ConcD*(c1o6*(ae + c1o1) + c1o2*(uy_sq)-vy*c1o2); + (D7.f[6])[kb] = f7T *(c1o1 + omegaD) - omegaD*ConcD*(c1o6*(ae + c1o1) + c1o2*(uz_sq)+vz*c1o2); + (D7.f[5])[k] = f7B *(c1o1 + omegaD) - omegaD*ConcD*(c1o6*(ae + c1o1) + c1o2*(uz_sq)-vz*c1o2); + } + } +} \ No newline at end of file diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/AdvectionDiffusion/Compressible/Mod7/ADComp7/ADComp7_Device.cuh b/src/gpu/core/Kernel/Compressible/AdvectionDiffusion/D3Q7/B12/B12CompressibleAdvectionDiffusionD3Q7_Device.cuh similarity index 53% rename from src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/AdvectionDiffusion/Compressible/Mod7/ADComp7/ADComp7_Device.cuh rename to src/gpu/core/Kernel/Compressible/AdvectionDiffusion/D3Q7/B12/B12CompressibleAdvectionDiffusionD3Q7_Device.cuh index bea40443ab619fb08b4c5656105c7792c4f11bd1..1d7dd2f9815981c2912f175ea12533d6888f8883 100644 --- a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/AdvectionDiffusion/Compressible/Mod7/ADComp7/ADComp7_Device.cuh +++ b/src/gpu/core/Kernel/Compressible/AdvectionDiffusion/D3Q7/B12/B12CompressibleAdvectionDiffusionD3Q7_Device.cuh @@ -1,10 +1,10 @@ -#ifndef LB_KERNEL_AD_COMP_7_H -#define LB_KERNEL_AD_COMP_7_H +#ifndef B12CompressibleAdvectionDiffusionD3Q7_Device_H +#define B12CompressibleAdvectionDiffusionD3Q7_Device_H #include <DataTypes.h> #include <curand.h> -__global__ void LB_Kernel_AD_Comp_7(real diffusivity, +__global__ void B12CompressibleAdvectionDiffusionD3Q7_Device(real diffusivity, unsigned int* bcMatD, unsigned int* neighborX, unsigned int* neighborY, diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/B15/B15CompressibleNavierStokesBGKplus.cu b/src/gpu/core/Kernel/Compressible/NavierStokes/B15/B15CompressibleNavierStokesBGKplus.cu similarity index 100% rename from src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/B15/B15CompressibleNavierStokesBGKplus.cu rename to src/gpu/core/Kernel/Compressible/NavierStokes/B15/B15CompressibleNavierStokesBGKplus.cu diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/B15/B15CompressibleNavierStokesBGKplus.h b/src/gpu/core/Kernel/Compressible/NavierStokes/B15/B15CompressibleNavierStokesBGKplus.h similarity index 100% rename from src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/B15/B15CompressibleNavierStokesBGKplus.h rename to src/gpu/core/Kernel/Compressible/NavierStokes/B15/B15CompressibleNavierStokesBGKplus.h diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/B15/B15CompressibleNavierStokesBGKplus_Device.cu b/src/gpu/core/Kernel/Compressible/NavierStokes/B15/B15CompressibleNavierStokesBGKplus_Device.cu similarity index 82% rename from src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/B15/B15CompressibleNavierStokesBGKplus_Device.cu rename to src/gpu/core/Kernel/Compressible/NavierStokes/B15/B15CompressibleNavierStokesBGKplus_Device.cu index b21213bf58fd786a4006faf485f18e5c18694e2e..11ae68e4d5e14d89599573765295b65463fad712 100644 --- a/src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/B15/B15CompressibleNavierStokesBGKplus_Device.cu +++ b/src/gpu/core/Kernel/Compressible/NavierStokes/B15/B15CompressibleNavierStokesBGKplus_Device.cu @@ -38,63 +38,63 @@ __global__ void B15CompressibleNavierStokesBGKplus_Device( Distributions27 D; if (EvenOrOdd == true) { - D.f[DIR_P00] = &DDStart[DIR_P00 * size_Mat]; - D.f[DIR_M00] = &DDStart[DIR_M00 * size_Mat]; - D.f[DIR_0P0] = &DDStart[DIR_0P0 * size_Mat]; - D.f[DIR_0M0] = &DDStart[DIR_0M0 * size_Mat]; - D.f[DIR_00P] = &DDStart[DIR_00P * size_Mat]; - D.f[DIR_00M] = &DDStart[DIR_00M * size_Mat]; - D.f[DIR_PP0] = &DDStart[DIR_PP0 * size_Mat]; - D.f[DIR_MM0] = &DDStart[DIR_MM0 * size_Mat]; - D.f[DIR_PM0] = &DDStart[DIR_PM0 * size_Mat]; - D.f[DIR_MP0] = &DDStart[DIR_MP0 * size_Mat]; - D.f[DIR_P0P] = &DDStart[DIR_P0P * size_Mat]; - D.f[DIR_M0M] = &DDStart[DIR_M0M * size_Mat]; - D.f[DIR_P0M] = &DDStart[DIR_P0M * size_Mat]; - D.f[DIR_M0P] = &DDStart[DIR_M0P * size_Mat]; - D.f[DIR_0PP] = &DDStart[DIR_0PP * size_Mat]; - D.f[DIR_0MM] = &DDStart[DIR_0MM * size_Mat]; - D.f[DIR_0PM] = &DDStart[DIR_0PM * size_Mat]; - D.f[DIR_0MP] = &DDStart[DIR_0MP * size_Mat]; - D.f[DIR_000] = &DDStart[DIR_000 * size_Mat]; - D.f[DIR_PPP] = &DDStart[DIR_PPP * size_Mat]; - D.f[DIR_MMP] = &DDStart[DIR_MMP * size_Mat]; - D.f[DIR_PMP] = &DDStart[DIR_PMP * size_Mat]; - D.f[DIR_MPP] = &DDStart[DIR_MPP * size_Mat]; - D.f[DIR_PPM] = &DDStart[DIR_PPM * size_Mat]; - D.f[DIR_MMM] = &DDStart[DIR_MMM * size_Mat]; - D.f[DIR_PMM] = &DDStart[DIR_PMM * size_Mat]; - D.f[DIR_MPM] = &DDStart[DIR_MPM * size_Mat]; + D.f[dP00] = &DDStart[dP00 * size_Mat]; + D.f[dM00] = &DDStart[dM00 * size_Mat]; + D.f[d0P0] = &DDStart[d0P0 * size_Mat]; + D.f[d0M0] = &DDStart[d0M0 * size_Mat]; + D.f[d00P] = &DDStart[d00P * size_Mat]; + D.f[d00M] = &DDStart[d00M * size_Mat]; + D.f[dPP0] = &DDStart[dPP0 * size_Mat]; + D.f[dMM0] = &DDStart[dMM0 * size_Mat]; + D.f[dPM0] = &DDStart[dPM0 * size_Mat]; + D.f[dMP0] = &DDStart[dMP0 * size_Mat]; + D.f[dP0P] = &DDStart[dP0P * size_Mat]; + D.f[dM0M] = &DDStart[dM0M * size_Mat]; + D.f[dP0M] = &DDStart[dP0M * size_Mat]; + D.f[dM0P] = &DDStart[dM0P * size_Mat]; + D.f[d0PP] = &DDStart[d0PP * size_Mat]; + D.f[d0MM] = &DDStart[d0MM * size_Mat]; + D.f[d0PM] = &DDStart[d0PM * size_Mat]; + D.f[d0MP] = &DDStart[d0MP * size_Mat]; + D.f[d000] = &DDStart[d000 * size_Mat]; + D.f[dPPP] = &DDStart[dPPP * size_Mat]; + D.f[dMMP] = &DDStart[dMMP * size_Mat]; + D.f[dPMP] = &DDStart[dPMP * size_Mat]; + D.f[dMPP] = &DDStart[dMPP * size_Mat]; + D.f[dPPM] = &DDStart[dPPM * size_Mat]; + D.f[dMMM] = &DDStart[dMMM * size_Mat]; + D.f[dPMM] = &DDStart[dPMM * size_Mat]; + D.f[dMPM] = &DDStart[dMPM * size_Mat]; } else { - D.f[DIR_M00] = &DDStart[DIR_P00 * size_Mat]; - D.f[DIR_P00] = &DDStart[DIR_M00 * size_Mat]; - D.f[DIR_0M0] = &DDStart[DIR_0P0 * size_Mat]; - D.f[DIR_0P0] = &DDStart[DIR_0M0 * size_Mat]; - D.f[DIR_00M] = &DDStart[DIR_00P * size_Mat]; - D.f[DIR_00P] = &DDStart[DIR_00M * size_Mat]; - D.f[DIR_MM0] = &DDStart[DIR_PP0 * size_Mat]; - D.f[DIR_PP0] = &DDStart[DIR_MM0 * size_Mat]; - D.f[DIR_MP0] = &DDStart[DIR_PM0 * size_Mat]; - D.f[DIR_PM0] = &DDStart[DIR_MP0 * size_Mat]; - D.f[DIR_M0M] = &DDStart[DIR_P0P * size_Mat]; - D.f[DIR_P0P] = &DDStart[DIR_M0M * size_Mat]; - D.f[DIR_M0P] = &DDStart[DIR_P0M * size_Mat]; - D.f[DIR_P0M] = &DDStart[DIR_M0P * size_Mat]; - D.f[DIR_0MM] = &DDStart[DIR_0PP * size_Mat]; - D.f[DIR_0PP] = &DDStart[DIR_0MM * size_Mat]; - D.f[DIR_0MP] = &DDStart[DIR_0PM * size_Mat]; - D.f[DIR_0PM] = &DDStart[DIR_0MP * size_Mat]; - D.f[DIR_000] = &DDStart[DIR_000 * size_Mat]; - D.f[DIR_MMM] = &DDStart[DIR_PPP * size_Mat]; - D.f[DIR_PPM] = &DDStart[DIR_MMP * size_Mat]; - D.f[DIR_MPM] = &DDStart[DIR_PMP * size_Mat]; - D.f[DIR_PMM] = &DDStart[DIR_MPP * size_Mat]; - D.f[DIR_MMP] = &DDStart[DIR_PPM * size_Mat]; - D.f[DIR_PPP] = &DDStart[DIR_MMM * size_Mat]; - D.f[DIR_MPP] = &DDStart[DIR_PMM * size_Mat]; - D.f[DIR_PMP] = &DDStart[DIR_MPM * size_Mat]; + D.f[dM00] = &DDStart[dP00 * size_Mat]; + D.f[dP00] = &DDStart[dM00 * size_Mat]; + D.f[d0M0] = &DDStart[d0P0 * size_Mat]; + D.f[d0P0] = &DDStart[d0M0 * size_Mat]; + D.f[d00M] = &DDStart[d00P * size_Mat]; + D.f[d00P] = &DDStart[d00M * size_Mat]; + D.f[dMM0] = &DDStart[dPP0 * size_Mat]; + D.f[dPP0] = &DDStart[dMM0 * size_Mat]; + D.f[dMP0] = &DDStart[dPM0 * size_Mat]; + D.f[dPM0] = &DDStart[dMP0 * size_Mat]; + D.f[dM0M] = &DDStart[dP0P * size_Mat]; + D.f[dP0P] = &DDStart[dM0M * size_Mat]; + D.f[dM0P] = &DDStart[dP0M * size_Mat]; + D.f[dP0M] = &DDStart[dM0P * size_Mat]; + D.f[d0MM] = &DDStart[d0PP * size_Mat]; + D.f[d0PP] = &DDStart[d0MM * size_Mat]; + D.f[d0MP] = &DDStart[d0PM * size_Mat]; + D.f[d0PM] = &DDStart[d0MP * size_Mat]; + D.f[d000] = &DDStart[d000 * size_Mat]; + D.f[dMMM] = &DDStart[dPPP * size_Mat]; + D.f[dPPM] = &DDStart[dMMP * size_Mat]; + D.f[dMPM] = &DDStart[dPMP * size_Mat]; + D.f[dPMM] = &DDStart[dMPP * size_Mat]; + D.f[dMMP] = &DDStart[dPPM * size_Mat]; + D.f[dPPP] = &DDStart[dMMM * size_Mat]; + D.f[dMPP] = &DDStart[dPMM * size_Mat]; + D.f[dPMP] = &DDStart[dMPM * size_Mat]; } //////////////////////////////////////////////////////////////////////////////// @@ -127,33 +127,33 @@ __global__ void B15CompressibleNavierStokesBGKplus_Device( //unsigned int ktne = k; unsigned int kbsw = neighborZ[ksw]; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real mfcbb = (D.f[DIR_P00])[k];//[ke ];// + c2over27 ;(D.f[DIR_P00])[k ];//ke - real mfabb = (D.f[DIR_M00])[kw];//[kw ];// + c2over27 ;(D.f[DIR_M00])[kw ]; - real mfbcb = (D.f[DIR_0P0])[k];//[kn ];// + c2over27 ;(D.f[DIR_0P0])[k ];//kn - real mfbab = (D.f[DIR_0M0])[ks];//[ks ];// + c2over27 ;(D.f[DIR_0M0])[ks ]; - real mfbbc = (D.f[DIR_00P])[k];//[kt ];// + c2over27 ;(D.f[DIR_00P])[k ];//kt - real mfbba = (D.f[DIR_00M])[kb];//[kb ];// + c2over27 ;(D.f[DIR_00M])[kb ]; - real mfccb = (D.f[DIR_PP0])[k];//[kne ];// + c1over54 ;(D.f[DIR_PP0])[k ];//kne - real mfaab = (D.f[DIR_MM0])[ksw];//[ksw ];// + c1over54 ;(D.f[DIR_MM0])[ksw]; - real mfcab = (D.f[DIR_PM0])[ks];//[kse ];// + c1over54 ;(D.f[DIR_PM0])[ks ];//kse - real mfacb = (D.f[DIR_MP0])[kw];//[knw ];// + c1over54 ;(D.f[DIR_MP0])[kw ];//knw - real mfcbc = (D.f[DIR_P0P])[k];//[kte ];// + c1over54 ;(D.f[DIR_P0P])[k ];//kte - real mfaba = (D.f[DIR_M0M])[kbw];//[kbw ];// + c1over54 ;(D.f[DIR_M0M])[kbw]; - real mfcba = (D.f[DIR_P0M])[kb];//[kbe ];// + c1over54 ;(D.f[DIR_P0M])[kb ];//kbe - real mfabc = (D.f[DIR_M0P])[kw];//[ktw ];// + c1over54 ;(D.f[DIR_M0P])[kw ];//ktw - real mfbcc = (D.f[DIR_0PP])[k];//[ktn ];// + c1over54 ;(D.f[DIR_0PP])[k ];//ktn - real mfbaa = (D.f[DIR_0MM])[kbs];//[kbs ];// + c1over54 ;(D.f[DIR_0MM])[kbs]; - real mfbca = (D.f[DIR_0PM])[kb];//[kbn ];// + c1over54 ;(D.f[DIR_0PM])[kb ];//kbn - real mfbac = (D.f[DIR_0MP])[ks];//[kts ];// + c1over54 ;(D.f[DIR_0MP])[ks ];//kts - real mfbbb = (D.f[DIR_000])[k];//[kzero];// + c8over27 ;(D.f[DIR_000])[k ];//kzero - real mfccc = (D.f[DIR_PPP])[k];//[ktne ];// + c1over216;(D.f[DIR_PPP])[k ];//ktne - real mfaac = (D.f[DIR_MMP])[ksw];//[ktsw ];// + c1over216;(D.f[DIR_MMP])[ksw];//ktsw - real mfcac = (D.f[DIR_PMP])[ks];//[ktse ];// + c1over216;(D.f[DIR_PMP])[ks ];//ktse - real mfacc = (D.f[DIR_MPP])[kw];//[ktnw ];// + c1over216;(D.f[DIR_MPP])[kw ];//ktnw - real mfcca = (D.f[DIR_PPM])[kb];//[kbne ];// + c1over216;(D.f[DIR_PPM])[kb ];//kbne - real mfaaa = (D.f[DIR_MMM])[kbsw];//[kbsw ];// + c1over216;(D.f[DIR_MMM])[kbsw]; - real mfcaa = (D.f[DIR_PMM])[kbs];//[kbse ];// + c1over216;(D.f[DIR_PMM])[kbs];//kbse - real mfaca = (D.f[DIR_MPM])[kbw];//[kbnw ];// + c1over216;(D.f[DIR_MPM])[kbw];//kbnw + real mfcbb = (D.f[dP00])[k];//[ke ];// + c2over27 ;(D.f[dP00])[k ];//ke + real mfabb = (D.f[dM00])[kw];//[kw ];// + c2over27 ;(D.f[dM00])[kw ]; + real mfbcb = (D.f[d0P0])[k];//[kn ];// + c2over27 ;(D.f[d0P0])[k ];//kn + real mfbab = (D.f[d0M0])[ks];//[ks ];// + c2over27 ;(D.f[d0M0])[ks ]; + real mfbbc = (D.f[d00P])[k];//[kt ];// + c2over27 ;(D.f[d00P])[k ];//kt + real mfbba = (D.f[d00M])[kb];//[kb ];// + c2over27 ;(D.f[d00M])[kb ]; + real mfccb = (D.f[dPP0])[k];//[kne ];// + c1over54 ;(D.f[dPP0])[k ];//kne + real mfaab = (D.f[dMM0])[ksw];//[ksw ];// + c1over54 ;(D.f[dMM0])[ksw]; + real mfcab = (D.f[dPM0])[ks];//[kse ];// + c1over54 ;(D.f[dPM0])[ks ];//kse + real mfacb = (D.f[dMP0])[kw];//[knw ];// + c1over54 ;(D.f[dMP0])[kw ];//knw + real mfcbc = (D.f[dP0P])[k];//[kte ];// + c1over54 ;(D.f[dP0P])[k ];//kte + real mfaba = (D.f[dM0M])[kbw];//[kbw ];// + c1over54 ;(D.f[dM0M])[kbw]; + real mfcba = (D.f[dP0M])[kb];//[kbe ];// + c1over54 ;(D.f[dP0M])[kb ];//kbe + real mfabc = (D.f[dM0P])[kw];//[ktw ];// + c1over54 ;(D.f[dM0P])[kw ];//ktw + real mfbcc = (D.f[d0PP])[k];//[ktn ];// + c1over54 ;(D.f[d0PP])[k ];//ktn + real mfbaa = (D.f[d0MM])[kbs];//[kbs ];// + c1over54 ;(D.f[d0MM])[kbs]; + real mfbca = (D.f[d0PM])[kb];//[kbn ];// + c1over54 ;(D.f[d0PM])[kb ];//kbn + real mfbac = (D.f[d0MP])[ks];//[kts ];// + c1over54 ;(D.f[d0MP])[ks ];//kts + real mfbbb = (D.f[d000])[k];//[kzero];// + c8over27 ;(D.f[d000])[k ];//kzero + real mfccc = (D.f[dPPP])[k];//[ktne ];// + c1over216;(D.f[dPPP])[k ];//ktne + real mfaac = (D.f[dMMP])[ksw];//[ktsw ];// + c1over216;(D.f[dMMP])[ksw];//ktsw + real mfcac = (D.f[dPMP])[ks];//[ktse ];// + c1over216;(D.f[dPMP])[ks ];//ktse + real mfacc = (D.f[dMPP])[kw];//[ktnw ];// + c1over216;(D.f[dMPP])[kw ];//ktnw + real mfcca = (D.f[dPPM])[kb];//[kbne ];// + c1over216;(D.f[dPPM])[kb ];//kbne + real mfaaa = (D.f[dMMM])[kbsw];//[kbsw ];// + c1over216;(D.f[dMMM])[kbsw]; + real mfcaa = (D.f[dPMM])[kbs];//[kbse ];// + c1over216;(D.f[dPMM])[kbs];//kbse + real mfaca = (D.f[dMPM])[kbw];//[kbnw ];// + c1over216;(D.f[dMPM])[kbw];//kbnw //////////////////////////////////////////////////////////////////////////////////// //slow //real oMdrho = one - ((((mfccc+mfaaa) + (mfaca+mfcac)) + ((mfacc+mfcaa) + (mfaac+mfcca))) + @@ -793,33 +793,33 @@ __global__ void B15CompressibleNavierStokesBGKplus_Device( //////////////////////////////////////////////////////////////////////////////////// - (D.f[DIR_P00])[k] = mfabb;//(D.f[ DIR_P00 ])[ke ] = mfabb;// - c2over27 ; (D.f[ DIR_P00 ])[k ] - (D.f[DIR_M00])[kw] = mfcbb;//(D.f[ DIR_M00 ])[kw ] = mfcbb;// - c2over27 ; (D.f[ DIR_M00 ])[kw ] - (D.f[DIR_0P0])[k] = mfbab;//(D.f[ DIR_0P0 ])[kn ] = mfbab;// - c2over27 ; (D.f[ DIR_0P0 ])[k ] - (D.f[DIR_0M0])[ks] = mfbcb;//(D.f[ DIR_0M0 ])[ks ] = mfbcb;// - c2over27 ; (D.f[ DIR_0M0 ])[ks ] - (D.f[DIR_00P])[k] = mfbba;//(D.f[ DIR_00P ])[kt ] = mfbba;// - c2over27 ; (D.f[ DIR_00P ])[k ] - (D.f[DIR_00M])[kb] = mfbbc;//(D.f[ DIR_00M ])[kb ] = mfbbc;// - c2over27 ; (D.f[ DIR_00M ])[kb ] - (D.f[DIR_PP0])[k] = mfaab;//(D.f[ DIR_PP0 ])[kne ] = mfaab;// - c1over54 ; (D.f[ DIR_PP0 ])[k ] - (D.f[DIR_MM0])[ksw] = mfccb;//(D.f[ DIR_MM0 ])[ksw ] = mfccb;// - c1over54 ; (D.f[ DIR_MM0 ])[ksw ] - (D.f[DIR_PM0])[ks] = mfacb;//(D.f[ DIR_PM0 ])[kse ] = mfacb;// - c1over54 ; (D.f[ DIR_PM0 ])[ks ] - (D.f[DIR_MP0])[kw] = mfcab;//(D.f[ DIR_MP0 ])[knw ] = mfcab;// - c1over54 ; (D.f[ DIR_MP0 ])[kw ] - (D.f[DIR_P0P])[k] = mfaba;//(D.f[ DIR_P0P ])[kte ] = mfaba;// - c1over54 ; (D.f[ DIR_P0P ])[k ] - (D.f[DIR_M0M])[kbw] = mfcbc;//(D.f[ DIR_M0M ])[kbw ] = mfcbc;// - c1over54 ; (D.f[ DIR_M0M ])[kbw ] - (D.f[DIR_P0M])[kb] = mfabc;//(D.f[ DIR_P0M ])[kbe ] = mfabc;// - c1over54 ; (D.f[ DIR_P0M ])[kb ] - (D.f[DIR_M0P])[kw] = mfcba;//(D.f[ DIR_M0P ])[ktw ] = mfcba;// - c1over54 ; (D.f[ DIR_M0P ])[kw ] - (D.f[DIR_0PP])[k] = mfbaa;//(D.f[ DIR_0PP ])[ktn ] = mfbaa;// - c1over54 ; (D.f[ DIR_0PP ])[k ] - (D.f[DIR_0MM])[kbs] = mfbcc;//(D.f[ DIR_0MM ])[kbs ] = mfbcc;// - c1over54 ; (D.f[ DIR_0MM ])[kbs ] - (D.f[DIR_0PM])[kb] = mfbac;//(D.f[ DIR_0PM ])[kbn ] = mfbac;// - c1over54 ; (D.f[ DIR_0PM ])[kb ] - (D.f[DIR_0MP])[ks] = mfbca;//(D.f[ DIR_0MP ])[kts ] = mfbca;// - c1over54 ; (D.f[ DIR_0MP ])[ks ] - (D.f[DIR_000])[k] = mfbbb;//(D.f[ DIR_000])[kzero] = mfbbb;// - c8over27 ; (D.f[ DIR_000])[k ] - (D.f[DIR_PPP])[k] = mfaaa;//(D.f[ DIR_PPP ])[ktne ] = mfaaa;// - c1over216; (D.f[ DIR_PPP ])[k ] - (D.f[DIR_PMP])[ks] = mfaca;//(D.f[ DIR_PMP ])[ktse ] = mfaca;// - c1over216; (D.f[ DIR_PMP ])[ks ] - (D.f[DIR_PPM])[kb] = mfaac;//(D.f[ DIR_PPM ])[kbne ] = mfaac;// - c1over216; (D.f[ DIR_PPM ])[kb ] - (D.f[DIR_PMM])[kbs] = mfacc;//(D.f[ DIR_PMM ])[kbse ] = mfacc;// - c1over216; (D.f[ DIR_PMM ])[kbs ] - (D.f[DIR_MPP])[kw] = mfcaa;//(D.f[ DIR_MPP ])[ktnw ] = mfcaa;// - c1over216; (D.f[ DIR_MPP ])[kw ] - (D.f[DIR_MMP])[ksw] = mfcca;//(D.f[ DIR_MMP ])[ktsw ] = mfcca;// - c1over216; (D.f[ DIR_MMP ])[ksw ] - (D.f[DIR_MPM])[kbw] = mfcac;//(D.f[ DIR_MPM ])[kbnw ] = mfcac;// - c1over216; (D.f[ DIR_MPM ])[kbw ] - (D.f[DIR_MMM])[kbsw] = mfccc;//(D.f[ DIR_MMM ])[kbsw ] = mfccc;// - c1over216; (D.f[ DIR_MMM ])[kbsw] + (D.f[dP00])[k] = mfabb;//(D.f[ dP00 ])[ke ] = mfabb;// - c2over27 ; (D.f[ dP00 ])[k ] + (D.f[dM00])[kw] = mfcbb;//(D.f[ dM00 ])[kw ] = mfcbb;// - c2over27 ; (D.f[ dM00 ])[kw ] + (D.f[d0P0])[k] = mfbab;//(D.f[ d0P0 ])[kn ] = mfbab;// - c2over27 ; (D.f[ d0P0 ])[k ] + (D.f[d0M0])[ks] = mfbcb;//(D.f[ d0M0 ])[ks ] = mfbcb;// - c2over27 ; (D.f[ d0M0 ])[ks ] + (D.f[d00P])[k] = mfbba;//(D.f[ d00P ])[kt ] = mfbba;// - c2over27 ; (D.f[ d00P ])[k ] + (D.f[d00M])[kb] = mfbbc;//(D.f[ d00M ])[kb ] = mfbbc;// - c2over27 ; (D.f[ d00M ])[kb ] + (D.f[dPP0])[k] = mfaab;//(D.f[ dPP0 ])[kne ] = mfaab;// - c1over54 ; (D.f[ dPP0 ])[k ] + (D.f[dMM0])[ksw] = mfccb;//(D.f[ dMM0 ])[ksw ] = mfccb;// - c1over54 ; (D.f[ dMM0 ])[ksw ] + (D.f[dPM0])[ks] = mfacb;//(D.f[ dPM0 ])[kse ] = mfacb;// - c1over54 ; (D.f[ dPM0 ])[ks ] + (D.f[dMP0])[kw] = mfcab;//(D.f[ dMP0 ])[knw ] = mfcab;// - c1over54 ; (D.f[ dMP0 ])[kw ] + (D.f[dP0P])[k] = mfaba;//(D.f[ dP0P ])[kte ] = mfaba;// - c1over54 ; (D.f[ dP0P ])[k ] + (D.f[dM0M])[kbw] = mfcbc;//(D.f[ dM0M ])[kbw ] = mfcbc;// - c1over54 ; (D.f[ dM0M ])[kbw ] + (D.f[dP0M])[kb] = mfabc;//(D.f[ dP0M ])[kbe ] = mfabc;// - c1over54 ; (D.f[ dP0M ])[kb ] + (D.f[dM0P])[kw] = mfcba;//(D.f[ dM0P ])[ktw ] = mfcba;// - c1over54 ; (D.f[ dM0P ])[kw ] + (D.f[d0PP])[k] = mfbaa;//(D.f[ d0PP ])[ktn ] = mfbaa;// - c1over54 ; (D.f[ d0PP ])[k ] + (D.f[d0MM])[kbs] = mfbcc;//(D.f[ d0MM ])[kbs ] = mfbcc;// - c1over54 ; (D.f[ d0MM ])[kbs ] + (D.f[d0PM])[kb] = mfbac;//(D.f[ d0PM ])[kbn ] = mfbac;// - c1over54 ; (D.f[ d0PM ])[kb ] + (D.f[d0MP])[ks] = mfbca;//(D.f[ d0MP ])[kts ] = mfbca;// - c1over54 ; (D.f[ d0MP ])[ks ] + (D.f[d000])[k] = mfbbb;//(D.f[ d000])[kzero] = mfbbb;// - c8over27 ; (D.f[ d000])[k ] + (D.f[dPPP])[k] = mfaaa;//(D.f[ dPPP ])[ktne ] = mfaaa;// - c1over216; (D.f[ dPPP ])[k ] + (D.f[dPMP])[ks] = mfaca;//(D.f[ dPMP ])[ktse ] = mfaca;// - c1over216; (D.f[ dPMP ])[ks ] + (D.f[dPPM])[kb] = mfaac;//(D.f[ dPPM ])[kbne ] = mfaac;// - c1over216; (D.f[ dPPM ])[kb ] + (D.f[dPMM])[kbs] = mfacc;//(D.f[ dPMM ])[kbse ] = mfacc;// - c1over216; (D.f[ dPMM ])[kbs ] + (D.f[dMPP])[kw] = mfcaa;//(D.f[ dMPP ])[ktnw ] = mfcaa;// - c1over216; (D.f[ dMPP ])[kw ] + (D.f[dMMP])[ksw] = mfcca;//(D.f[ dMMP ])[ktsw ] = mfcca;// - c1over216; (D.f[ dMMP ])[ksw ] + (D.f[dMPM])[kbw] = mfcac;//(D.f[ dMPM ])[kbnw ] = mfcac;// - c1over216; (D.f[ dMPM ])[kbw ] + (D.f[dMMM])[kbsw] = mfccc;//(D.f[ dMMM ])[kbsw ] = mfccc;// - c1over216; (D.f[ dMMM ])[kbsw] //////////////////////////////////////////////////////////////////////////////////// } } diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/B15/B15CompressibleNavierStokesBGKplus_Device.cuh b/src/gpu/core/Kernel/Compressible/NavierStokes/B15/B15CompressibleNavierStokesBGKplus_Device.cuh similarity index 100% rename from src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/B15/B15CompressibleNavierStokesBGKplus_Device.cuh rename to src/gpu/core/Kernel/Compressible/NavierStokes/B15/B15CompressibleNavierStokesBGKplus_Device.cuh diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/B92/B92CompressibleNavierStokes.cu b/src/gpu/core/Kernel/Compressible/NavierStokes/B92/B92CompressibleNavierStokes.cu similarity index 100% rename from src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/B92/B92CompressibleNavierStokes.cu rename to src/gpu/core/Kernel/Compressible/NavierStokes/B92/B92CompressibleNavierStokes.cu diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/B92/B92CompressibleNavierStokes.h b/src/gpu/core/Kernel/Compressible/NavierStokes/B92/B92CompressibleNavierStokes.h similarity index 100% rename from src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/B92/B92CompressibleNavierStokes.h rename to src/gpu/core/Kernel/Compressible/NavierStokes/B92/B92CompressibleNavierStokes.h diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/B92/B92CompressibleNavierStokes_Device.cu b/src/gpu/core/Kernel/Compressible/NavierStokes/B92/B92CompressibleNavierStokes_Device.cu similarity index 62% rename from src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/B92/B92CompressibleNavierStokes_Device.cu rename to src/gpu/core/Kernel/Compressible/NavierStokes/B92/B92CompressibleNavierStokes_Device.cu index d032936a96f77304071d014590e35512c1ca7771..415634bb4749fb4307419ce58ca96c0c0d0d3862 100644 --- a/src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/B92/B92CompressibleNavierStokes_Device.cu +++ b/src/gpu/core/Kernel/Compressible/NavierStokes/B92/B92CompressibleNavierStokes_Device.cu @@ -38,63 +38,63 @@ __global__ void B92CompressibleNavierStokes_Device( real omega, Distributions27 D; if (EvenOrOdd == true) { - D.f[DIR_P00] = &DDStart[DIR_P00 * size_Mat]; - D.f[DIR_M00] = &DDStart[DIR_M00 * size_Mat]; - D.f[DIR_0P0] = &DDStart[DIR_0P0 * size_Mat]; - D.f[DIR_0M0] = &DDStart[DIR_0M0 * size_Mat]; - D.f[DIR_00P] = &DDStart[DIR_00P * size_Mat]; - D.f[DIR_00M] = &DDStart[DIR_00M * size_Mat]; - D.f[DIR_PP0] = &DDStart[DIR_PP0 * size_Mat]; - D.f[DIR_MM0] = &DDStart[DIR_MM0 * size_Mat]; - D.f[DIR_PM0] = &DDStart[DIR_PM0 * size_Mat]; - D.f[DIR_MP0] = &DDStart[DIR_MP0 * size_Mat]; - D.f[DIR_P0P] = &DDStart[DIR_P0P * size_Mat]; - D.f[DIR_M0M] = &DDStart[DIR_M0M * size_Mat]; - D.f[DIR_P0M] = &DDStart[DIR_P0M * size_Mat]; - D.f[DIR_M0P] = &DDStart[DIR_M0P * size_Mat]; - D.f[DIR_0PP] = &DDStart[DIR_0PP * size_Mat]; - D.f[DIR_0MM] = &DDStart[DIR_0MM * size_Mat]; - D.f[DIR_0PM] = &DDStart[DIR_0PM * size_Mat]; - D.f[DIR_0MP] = &DDStart[DIR_0MP * size_Mat]; - D.f[DIR_000] = &DDStart[DIR_000 * size_Mat]; - D.f[DIR_PPP] = &DDStart[DIR_PPP * size_Mat]; - D.f[DIR_MMP] = &DDStart[DIR_MMP * size_Mat]; - D.f[DIR_PMP] = &DDStart[DIR_PMP * size_Mat]; - D.f[DIR_MPP] = &DDStart[DIR_MPP * size_Mat]; - D.f[DIR_PPM] = &DDStart[DIR_PPM * size_Mat]; - D.f[DIR_MMM] = &DDStart[DIR_MMM * size_Mat]; - D.f[DIR_PMM] = &DDStart[DIR_PMM * size_Mat]; - D.f[DIR_MPM] = &DDStart[DIR_MPM * size_Mat]; + D.f[dP00] = &DDStart[dP00 * size_Mat]; + D.f[dM00] = &DDStart[dM00 * size_Mat]; + D.f[d0P0] = &DDStart[d0P0 * size_Mat]; + D.f[d0M0] = &DDStart[d0M0 * size_Mat]; + D.f[d00P] = &DDStart[d00P * size_Mat]; + D.f[d00M] = &DDStart[d00M * size_Mat]; + D.f[dPP0] = &DDStart[dPP0 * size_Mat]; + D.f[dMM0] = &DDStart[dMM0 * size_Mat]; + D.f[dPM0] = &DDStart[dPM0 * size_Mat]; + D.f[dMP0] = &DDStart[dMP0 * size_Mat]; + D.f[dP0P] = &DDStart[dP0P * size_Mat]; + D.f[dM0M] = &DDStart[dM0M * size_Mat]; + D.f[dP0M] = &DDStart[dP0M * size_Mat]; + D.f[dM0P] = &DDStart[dM0P * size_Mat]; + D.f[d0PP] = &DDStart[d0PP * size_Mat]; + D.f[d0MM] = &DDStart[d0MM * size_Mat]; + D.f[d0PM] = &DDStart[d0PM * size_Mat]; + D.f[d0MP] = &DDStart[d0MP * size_Mat]; + D.f[d000] = &DDStart[d000 * size_Mat]; + D.f[dPPP] = &DDStart[dPPP * size_Mat]; + D.f[dMMP] = &DDStart[dMMP * size_Mat]; + D.f[dPMP] = &DDStart[dPMP * size_Mat]; + D.f[dMPP] = &DDStart[dMPP * size_Mat]; + D.f[dPPM] = &DDStart[dPPM * size_Mat]; + D.f[dMMM] = &DDStart[dMMM * size_Mat]; + D.f[dPMM] = &DDStart[dPMM * size_Mat]; + D.f[dMPM] = &DDStart[dMPM * size_Mat]; } else { - D.f[DIR_M00] = &DDStart[DIR_P00 * size_Mat]; - D.f[DIR_P00] = &DDStart[DIR_M00 * size_Mat]; - D.f[DIR_0M0] = &DDStart[DIR_0P0 * size_Mat]; - D.f[DIR_0P0] = &DDStart[DIR_0M0 * size_Mat]; - D.f[DIR_00M] = &DDStart[DIR_00P * size_Mat]; - D.f[DIR_00P] = &DDStart[DIR_00M * size_Mat]; - D.f[DIR_MM0] = &DDStart[DIR_PP0 * size_Mat]; - D.f[DIR_PP0] = &DDStart[DIR_MM0 * size_Mat]; - D.f[DIR_MP0] = &DDStart[DIR_PM0 * size_Mat]; - D.f[DIR_PM0] = &DDStart[DIR_MP0 * size_Mat]; - D.f[DIR_M0M] = &DDStart[DIR_P0P * size_Mat]; - D.f[DIR_P0P] = &DDStart[DIR_M0M * size_Mat]; - D.f[DIR_M0P] = &DDStart[DIR_P0M * size_Mat]; - D.f[DIR_P0M] = &DDStart[DIR_M0P * size_Mat]; - D.f[DIR_0MM] = &DDStart[DIR_0PP * size_Mat]; - D.f[DIR_0PP] = &DDStart[DIR_0MM * size_Mat]; - D.f[DIR_0MP] = &DDStart[DIR_0PM * size_Mat]; - D.f[DIR_0PM] = &DDStart[DIR_0MP * size_Mat]; - D.f[DIR_000] = &DDStart[DIR_000 * size_Mat]; - D.f[DIR_MMM] = &DDStart[DIR_PPP * size_Mat]; - D.f[DIR_PPM] = &DDStart[DIR_MMP * size_Mat]; - D.f[DIR_MPM] = &DDStart[DIR_PMP * size_Mat]; - D.f[DIR_PMM] = &DDStart[DIR_MPP * size_Mat]; - D.f[DIR_MMP] = &DDStart[DIR_PPM * size_Mat]; - D.f[DIR_PPP] = &DDStart[DIR_MMM * size_Mat]; - D.f[DIR_MPP] = &DDStart[DIR_PMM * size_Mat]; - D.f[DIR_PMP] = &DDStart[DIR_MPM * size_Mat]; + D.f[dM00] = &DDStart[dP00 * size_Mat]; + D.f[dP00] = &DDStart[dM00 * size_Mat]; + D.f[d0M0] = &DDStart[d0P0 * size_Mat]; + D.f[d0P0] = &DDStart[d0M0 * size_Mat]; + D.f[d00M] = &DDStart[d00P * size_Mat]; + D.f[d00P] = &DDStart[d00M * size_Mat]; + D.f[dMM0] = &DDStart[dPP0 * size_Mat]; + D.f[dPP0] = &DDStart[dMM0 * size_Mat]; + D.f[dMP0] = &DDStart[dPM0 * size_Mat]; + D.f[dPM0] = &DDStart[dMP0 * size_Mat]; + D.f[dM0M] = &DDStart[dP0P * size_Mat]; + D.f[dP0P] = &DDStart[dM0M * size_Mat]; + D.f[dM0P] = &DDStart[dP0M * size_Mat]; + D.f[dP0M] = &DDStart[dM0P * size_Mat]; + D.f[d0MM] = &DDStart[d0PP * size_Mat]; + D.f[d0PP] = &DDStart[d0MM * size_Mat]; + D.f[d0MP] = &DDStart[d0PM * size_Mat]; + D.f[d0PM] = &DDStart[d0MP * size_Mat]; + D.f[d000] = &DDStart[d000 * size_Mat]; + D.f[dMMM] = &DDStart[dPPP * size_Mat]; + D.f[dPPM] = &DDStart[dMMP * size_Mat]; + D.f[dMPM] = &DDStart[dPMP * size_Mat]; + D.f[dPMM] = &DDStart[dMPP * size_Mat]; + D.f[dMMP] = &DDStart[dPPM * size_Mat]; + D.f[dPPP] = &DDStart[dMMM * size_Mat]; + D.f[dMPP] = &DDStart[dPMM * size_Mat]; + D.f[dPMP] = &DDStart[dMPM * size_Mat]; } //////////////////////////////////////////////////////////////////////////////// @@ -127,33 +127,33 @@ __global__ void B92CompressibleNavierStokes_Device( real omega, //unsigned int ktne = k; unsigned int kbsw = neighborZ[ksw]; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real fE = (D.f[DIR_P00])[k];//ke - real fW = (D.f[DIR_M00])[kw]; - real fN = (D.f[DIR_0P0])[k];//kn - real fS = (D.f[DIR_0M0])[ks]; - real fT = (D.f[DIR_00P])[k];//kt - real fB = (D.f[DIR_00M])[kb]; - real fNE = (D.f[DIR_PP0])[k];//kne - real fSW = (D.f[DIR_MM0])[ksw]; - real fSE = (D.f[DIR_PM0])[ks];//kse - real fNW = (D.f[DIR_MP0])[kw];//knw - real fTE = (D.f[DIR_P0P])[k];//kte - real fBW = (D.f[DIR_M0M])[kbw]; - real fBE = (D.f[DIR_P0M])[kb];//kbe - real fTW = (D.f[DIR_M0P])[kw];//ktw - real fTN = (D.f[DIR_0PP])[k];//ktn - real fBS = (D.f[DIR_0MM])[kbs]; - real fBN = (D.f[DIR_0PM])[kb];//kbn - real fTS = (D.f[DIR_0MP])[ks];//kts - real fZERO = (D.f[DIR_000])[k];//kzero - real fTNE = (D.f[DIR_PPP])[k];//ktne - real fTSW = (D.f[DIR_MMP])[ksw];//ktsw - real fTSE = (D.f[DIR_PMP])[ks];//ktse - real fTNW = (D.f[DIR_MPP])[kw];//ktnw - real fBNE = (D.f[DIR_PPM])[kb];//kbne - real fBSW = (D.f[DIR_MMM])[kbsw]; - real fBSE = (D.f[DIR_PMM])[kbs];//kbse - real fBNW = (D.f[DIR_MPM])[kbw];//kbnw + real fE = (D.f[dP00])[k];//ke + real fW = (D.f[dM00])[kw]; + real fN = (D.f[d0P0])[k];//kn + real fS = (D.f[d0M0])[ks]; + real fT = (D.f[d00P])[k];//kt + real fB = (D.f[d00M])[kb]; + real fNE = (D.f[dPP0])[k];//kne + real fSW = (D.f[dMM0])[ksw]; + real fSE = (D.f[dPM0])[ks];//kse + real fNW = (D.f[dMP0])[kw];//knw + real fTE = (D.f[dP0P])[k];//kte + real fBW = (D.f[dM0M])[kbw]; + real fBE = (D.f[dP0M])[kb];//kbe + real fTW = (D.f[dM0P])[kw];//ktw + real fTN = (D.f[d0PP])[k];//ktn + real fBS = (D.f[d0MM])[kbs]; + real fBN = (D.f[d0PM])[kb];//kbn + real fTS = (D.f[d0MP])[ks];//kts + real fZERO = (D.f[d000])[k];//kzero + real fTNE = (D.f[dPPP])[k];//ktne + real fTSW = (D.f[dMMP])[ksw];//ktsw + real fTSE = (D.f[dPMP])[ks];//ktse + real fTNW = (D.f[dMPP])[kw];//ktnw + real fBNE = (D.f[dPPM])[kb];//kbne + real fBSW = (D.f[dMMM])[kbsw]; + real fBSE = (D.f[dPMM])[kbs];//kbse + real fBNW = (D.f[dMPM])[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; @@ -210,33 +210,33 @@ __global__ void B92CompressibleNavierStokes_Device( real omega, ////////////////////////////////////////////////////////////////////////// - (D.f[DIR_P00])[k] = fW; - (D.f[DIR_M00])[kw] = fE; - (D.f[DIR_0P0])[k] = fS; - (D.f[DIR_0M0])[ks] = fN; - (D.f[DIR_00P])[k] = fB; - (D.f[DIR_00M])[kb] = fT; - (D.f[DIR_PP0])[k] = fSW; - (D.f[DIR_MM0])[ksw] = fNE; - (D.f[DIR_PM0])[ks] = fNW; - (D.f[DIR_MP0])[kw] = fSE; - (D.f[DIR_P0P])[k] = fBW; - (D.f[DIR_M0M])[kbw] = fTE; - (D.f[DIR_P0M])[kb] = fTW; - (D.f[DIR_M0P])[kw] = fBE; - (D.f[DIR_0PP])[k] = fBS; - (D.f[DIR_0MM])[kbs] = fTN; - (D.f[DIR_0PM])[kb] = fTS; - (D.f[DIR_0MP])[ks] = fBN; - (D.f[DIR_000])[k] = fZERO; - (D.f[DIR_PPP])[k] = fBSW; - (D.f[DIR_PMP])[ks] = fBNW; - (D.f[DIR_PPM])[kb] = fTSW; - (D.f[DIR_PMM])[kbs] = fTNW; - (D.f[DIR_MPP])[kw] = fBSE; - (D.f[DIR_MMP])[ksw] = fBNE; - (D.f[DIR_MPM])[kbw] = fTSE; - (D.f[DIR_MMM])[kbsw] = fTNE; + (D.f[dP00])[k] = fW; + (D.f[dM00])[kw] = fE; + (D.f[d0P0])[k] = fS; + (D.f[d0M0])[ks] = fN; + (D.f[d00P])[k] = fB; + (D.f[d00M])[kb] = fT; + (D.f[dPP0])[k] = fSW; + (D.f[dMM0])[ksw] = fNE; + (D.f[dPM0])[ks] = fNW; + (D.f[dMP0])[kw] = fSE; + (D.f[dP0P])[k] = fBW; + (D.f[dM0M])[kbw] = fTE; + (D.f[dP0M])[kb] = fTW; + (D.f[dM0P])[kw] = fBE; + (D.f[d0PP])[k] = fBS; + (D.f[d0MM])[kbs] = fTN; + (D.f[d0PM])[kb] = fTS; + (D.f[d0MP])[ks] = fBN; + (D.f[d000])[k] = fZERO; + (D.f[dPPP])[k] = fBSW; + (D.f[dPMP])[ks] = fBNW; + (D.f[dPPM])[kb] = fTSW; + (D.f[dPMM])[kbs] = fTNW; + (D.f[dMPP])[kw] = fBSE; + (D.f[dMMP])[ksw] = fBNE; + (D.f[dMPM])[kbw] = fTSE; + (D.f[dMMM])[kbsw] = fTNE; ////////////////////////////////////////////////////////////////////////// } } diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/B92/B92CompressibleNavierStokes_Device.cuh b/src/gpu/core/Kernel/Compressible/NavierStokes/B92/B92CompressibleNavierStokes_Device.cuh similarity index 100% rename from src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/B92/B92CompressibleNavierStokes_Device.cuh rename to src/gpu/core/Kernel/Compressible/NavierStokes/B92/B92CompressibleNavierStokes_Device.cuh diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/C06/C06CompressibleNavierStokes.cu b/src/gpu/core/Kernel/Compressible/NavierStokes/C06/C06CompressibleNavierStokes.cu similarity index 100% rename from src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/C06/C06CompressibleNavierStokes.cu rename to src/gpu/core/Kernel/Compressible/NavierStokes/C06/C06CompressibleNavierStokes.cu diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/C06/C06CompressibleNavierStokes.h b/src/gpu/core/Kernel/Compressible/NavierStokes/C06/C06CompressibleNavierStokes.h similarity index 100% rename from src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/C06/C06CompressibleNavierStokes.h rename to src/gpu/core/Kernel/Compressible/NavierStokes/C06/C06CompressibleNavierStokes.h diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/C06/C06CompressibleNavierStokes_Device.cu b/src/gpu/core/Kernel/Compressible/NavierStokes/C06/C06CompressibleNavierStokes_Device.cu similarity index 85% rename from src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/C06/C06CompressibleNavierStokes_Device.cu rename to src/gpu/core/Kernel/Compressible/NavierStokes/C06/C06CompressibleNavierStokes_Device.cu index 6cf0fd639523d4cef8290f860f03b4bc75e3252c..444a575d7add0f5d33acc779f627195e7180e81a 100644 --- a/src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/C06/C06CompressibleNavierStokes_Device.cu +++ b/src/gpu/core/Kernel/Compressible/NavierStokes/C06/C06CompressibleNavierStokes_Device.cu @@ -37,63 +37,63 @@ __global__ void C06CompressibleNavierStokes_Device(real omega, Distributions27 D; if (EvenOrOdd==true) { - D.f[DIR_P00] = &DDStart[DIR_P00 * size_Mat]; - D.f[DIR_M00] = &DDStart[DIR_M00 * size_Mat]; - D.f[DIR_0P0] = &DDStart[DIR_0P0 * size_Mat]; - D.f[DIR_0M0] = &DDStart[DIR_0M0 * size_Mat]; - D.f[DIR_00P] = &DDStart[DIR_00P * size_Mat]; - D.f[DIR_00M] = &DDStart[DIR_00M * size_Mat]; - D.f[DIR_PP0] = &DDStart[DIR_PP0 * size_Mat]; - D.f[DIR_MM0] = &DDStart[DIR_MM0 * size_Mat]; - D.f[DIR_PM0] = &DDStart[DIR_PM0 * size_Mat]; - D.f[DIR_MP0] = &DDStart[DIR_MP0 * size_Mat]; - D.f[DIR_P0P] = &DDStart[DIR_P0P * size_Mat]; - D.f[DIR_M0M] = &DDStart[DIR_M0M * size_Mat]; - D.f[DIR_P0M] = &DDStart[DIR_P0M * size_Mat]; - D.f[DIR_M0P] = &DDStart[DIR_M0P * size_Mat]; - D.f[DIR_0PP] = &DDStart[DIR_0PP * size_Mat]; - D.f[DIR_0MM] = &DDStart[DIR_0MM * size_Mat]; - D.f[DIR_0PM] = &DDStart[DIR_0PM * size_Mat]; - D.f[DIR_0MP] = &DDStart[DIR_0MP * size_Mat]; - D.f[DIR_000] = &DDStart[DIR_000 * size_Mat]; - D.f[DIR_PPP] = &DDStart[DIR_PPP * size_Mat]; - D.f[DIR_MMP] = &DDStart[DIR_MMP * size_Mat]; - D.f[DIR_PMP] = &DDStart[DIR_PMP * size_Mat]; - D.f[DIR_MPP] = &DDStart[DIR_MPP * size_Mat]; - D.f[DIR_PPM] = &DDStart[DIR_PPM * size_Mat]; - D.f[DIR_MMM] = &DDStart[DIR_MMM * size_Mat]; - D.f[DIR_PMM] = &DDStart[DIR_PMM * size_Mat]; - D.f[DIR_MPM] = &DDStart[DIR_MPM * size_Mat]; + D.f[dP00] = &DDStart[dP00 * size_Mat]; + D.f[dM00] = &DDStart[dM00 * size_Mat]; + D.f[d0P0] = &DDStart[d0P0 * size_Mat]; + D.f[d0M0] = &DDStart[d0M0 * size_Mat]; + D.f[d00P] = &DDStart[d00P * size_Mat]; + D.f[d00M] = &DDStart[d00M * size_Mat]; + D.f[dPP0] = &DDStart[dPP0 * size_Mat]; + D.f[dMM0] = &DDStart[dMM0 * size_Mat]; + D.f[dPM0] = &DDStart[dPM0 * size_Mat]; + D.f[dMP0] = &DDStart[dMP0 * size_Mat]; + D.f[dP0P] = &DDStart[dP0P * size_Mat]; + D.f[dM0M] = &DDStart[dM0M * size_Mat]; + D.f[dP0M] = &DDStart[dP0M * size_Mat]; + D.f[dM0P] = &DDStart[dM0P * size_Mat]; + D.f[d0PP] = &DDStart[d0PP * size_Mat]; + D.f[d0MM] = &DDStart[d0MM * size_Mat]; + D.f[d0PM] = &DDStart[d0PM * size_Mat]; + D.f[d0MP] = &DDStart[d0MP * size_Mat]; + D.f[d000] = &DDStart[d000 * size_Mat]; + D.f[dPPP] = &DDStart[dPPP * size_Mat]; + D.f[dMMP] = &DDStart[dMMP * size_Mat]; + D.f[dPMP] = &DDStart[dPMP * size_Mat]; + D.f[dMPP] = &DDStart[dMPP * size_Mat]; + D.f[dPPM] = &DDStart[dPPM * size_Mat]; + D.f[dMMM] = &DDStart[dMMM * size_Mat]; + D.f[dPMM] = &DDStart[dPMM * size_Mat]; + D.f[dMPM] = &DDStart[dMPM * size_Mat]; } else { - D.f[DIR_M00] = &DDStart[DIR_P00 * size_Mat]; - D.f[DIR_P00] = &DDStart[DIR_M00 * size_Mat]; - D.f[DIR_0M0] = &DDStart[DIR_0P0 * size_Mat]; - D.f[DIR_0P0] = &DDStart[DIR_0M0 * size_Mat]; - D.f[DIR_00M] = &DDStart[DIR_00P * size_Mat]; - D.f[DIR_00P] = &DDStart[DIR_00M * size_Mat]; - D.f[DIR_MM0] = &DDStart[DIR_PP0 * size_Mat]; - D.f[DIR_PP0] = &DDStart[DIR_MM0 * size_Mat]; - D.f[DIR_MP0] = &DDStart[DIR_PM0 * size_Mat]; - D.f[DIR_PM0] = &DDStart[DIR_MP0 * size_Mat]; - D.f[DIR_M0M] = &DDStart[DIR_P0P * size_Mat]; - D.f[DIR_P0P] = &DDStart[DIR_M0M * size_Mat]; - D.f[DIR_M0P] = &DDStart[DIR_P0M * size_Mat]; - D.f[DIR_P0M] = &DDStart[DIR_M0P * size_Mat]; - D.f[DIR_0MM] = &DDStart[DIR_0PP * size_Mat]; - D.f[DIR_0PP] = &DDStart[DIR_0MM * size_Mat]; - D.f[DIR_0MP] = &DDStart[DIR_0PM * size_Mat]; - D.f[DIR_0PM] = &DDStart[DIR_0MP * size_Mat]; - D.f[DIR_000] = &DDStart[DIR_000 * size_Mat]; - D.f[DIR_MMM] = &DDStart[DIR_PPP * size_Mat]; - D.f[DIR_PPM] = &DDStart[DIR_MMP * size_Mat]; - D.f[DIR_MPM] = &DDStart[DIR_PMP * size_Mat]; - D.f[DIR_PMM] = &DDStart[DIR_MPP * size_Mat]; - D.f[DIR_MMP] = &DDStart[DIR_PPM * size_Mat]; - D.f[DIR_PPP] = &DDStart[DIR_MMM * size_Mat]; - D.f[DIR_MPP] = &DDStart[DIR_PMM * size_Mat]; - D.f[DIR_PMP] = &DDStart[DIR_MPM * size_Mat]; + D.f[dM00] = &DDStart[dP00 * size_Mat]; + D.f[dP00] = &DDStart[dM00 * size_Mat]; + D.f[d0M0] = &DDStart[d0P0 * size_Mat]; + D.f[d0P0] = &DDStart[d0M0 * size_Mat]; + D.f[d00M] = &DDStart[d00P * size_Mat]; + D.f[d00P] = &DDStart[d00M * size_Mat]; + D.f[dMM0] = &DDStart[dPP0 * size_Mat]; + D.f[dPP0] = &DDStart[dMM0 * size_Mat]; + D.f[dMP0] = &DDStart[dPM0 * size_Mat]; + D.f[dPM0] = &DDStart[dMP0 * size_Mat]; + D.f[dM0M] = &DDStart[dP0P * size_Mat]; + D.f[dP0P] = &DDStart[dM0M * size_Mat]; + D.f[dM0P] = &DDStart[dP0M * size_Mat]; + D.f[dP0M] = &DDStart[dM0P * size_Mat]; + D.f[d0MM] = &DDStart[d0PP * size_Mat]; + D.f[d0PP] = &DDStart[d0MM * size_Mat]; + D.f[d0MP] = &DDStart[d0PM * size_Mat]; + D.f[d0PM] = &DDStart[d0MP * size_Mat]; + D.f[d000] = &DDStart[d000 * size_Mat]; + D.f[dMMM] = &DDStart[dPPP * size_Mat]; + D.f[dPPM] = &DDStart[dMMP * size_Mat]; + D.f[dMPM] = &DDStart[dPMP * size_Mat]; + D.f[dPMM] = &DDStart[dMPP * size_Mat]; + D.f[dMMP] = &DDStart[dPPM * size_Mat]; + D.f[dPPP] = &DDStart[dMMM * size_Mat]; + D.f[dMPP] = &DDStart[dPMM * size_Mat]; + D.f[dPMP] = &DDStart[dMPM * size_Mat]; } //////////////////////////////////////////////////////////////////////////////// @@ -126,33 +126,33 @@ __global__ void C06CompressibleNavierStokes_Device(real omega, //unsigned int ktne = k; unsigned int kbsw = neighborZ[ksw]; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real mfcbb = (D.f[DIR_P00])[k ];//[ke ]; - real mfabb = (D.f[DIR_M00])[kw ];//[kw ]; - real mfbcb = (D.f[DIR_0P0])[k ];//[kn ]; - real mfbab = (D.f[DIR_0M0])[ks ];//[ks ]; - real mfbbc = (D.f[DIR_00P])[k ];//[kt ]; - real mfbba = (D.f[DIR_00M])[kb ];//[kb ]; - real mfccb = (D.f[DIR_PP0])[k ];//[kne ]; - real mfaab = (D.f[DIR_MM0])[ksw];//[ksw ]; - real mfcab = (D.f[DIR_PM0])[ks ];//[kse ]; - real mfacb = (D.f[DIR_MP0])[kw ];//[knw ]; - real mfcbc = (D.f[DIR_P0P])[k ];//[kte ]; - real mfaba = (D.f[DIR_M0M])[kbw];//[kbw ]; - real mfcba = (D.f[DIR_P0M])[kb ];//[kbe ]; - real mfabc = (D.f[DIR_M0P])[kw ];//[ktw ]; - real mfbcc = (D.f[DIR_0PP])[k ];//[ktn ]; - real mfbaa = (D.f[DIR_0MM])[kbs];//[kbs ]; - real mfbca = (D.f[DIR_0PM])[kb ];//[kbn ]; - real mfbac = (D.f[DIR_0MP])[ks ];//[kts ]; - real mfbbb = (D.f[DIR_000])[k ];//[kzero]; - real mfccc = (D.f[DIR_PPP])[k ];//[ktne ]; - real mfaac = (D.f[DIR_MMP])[ksw];//[ktsw ]; - real mfcac = (D.f[DIR_PMP])[ks ];//[ktse ]; - real mfacc = (D.f[DIR_MPP])[kw ];//[ktnw ]; - real mfcca = (D.f[DIR_PPM])[kb ];//[kbne ]; - real mfaaa = (D.f[DIR_MMM])[kbsw];//[kbsw ] - real mfcaa = (D.f[DIR_PMM])[kbs];//[kbse ]; - real mfaca = (D.f[DIR_MPM])[kbw];//[kbnw ]; + real mfcbb = (D.f[dP00])[k ];//[ke ]; + real mfabb = (D.f[dM00])[kw ];//[kw ]; + real mfbcb = (D.f[d0P0])[k ];//[kn ]; + real mfbab = (D.f[d0M0])[ks ];//[ks ]; + real mfbbc = (D.f[d00P])[k ];//[kt ]; + real mfbba = (D.f[d00M])[kb ];//[kb ]; + real mfccb = (D.f[dPP0])[k ];//[kne ]; + real mfaab = (D.f[dMM0])[ksw];//[ksw ]; + real mfcab = (D.f[dPM0])[ks ];//[kse ]; + real mfacb = (D.f[dMP0])[kw ];//[knw ]; + real mfcbc = (D.f[dP0P])[k ];//[kte ]; + real mfaba = (D.f[dM0M])[kbw];//[kbw ]; + real mfcba = (D.f[dP0M])[kb ];//[kbe ]; + real mfabc = (D.f[dM0P])[kw ];//[ktw ]; + real mfbcc = (D.f[d0PP])[k ];//[ktn ]; + real mfbaa = (D.f[d0MM])[kbs];//[kbs ]; + real mfbca = (D.f[d0PM])[kb ];//[kbn ]; + real mfbac = (D.f[d0MP])[ks ];//[kts ]; + real mfbbb = (D.f[d000])[k ];//[kzero]; + real mfccc = (D.f[dPPP])[k ];//[ktne ]; + real mfaac = (D.f[dMMP])[ksw];//[ktsw ]; + real mfcac = (D.f[dPMP])[ks ];//[ktse ]; + real mfacc = (D.f[dMPP])[kw ];//[ktnw ]; + real mfcca = (D.f[dPPM])[kb ];//[kbne ]; + real mfaaa = (D.f[dMMM])[kbsw];//[kbsw ] + real mfcaa = (D.f[dPMM])[kbs];//[kbse ]; + real mfaca = (D.f[dMPM])[kbw];//[kbnw ]; //////////////////////////////////////////////////////////////////////////////////// real rho = (mfccc+mfaaa + mfaca+mfcac + mfacc+mfcaa + mfaac+mfcca + mfbac+mfbca + mfbaa+mfbcc + mfabc+mfcba + mfaba+mfcbc + mfacb+mfcab + mfaab+mfccb + @@ -733,33 +733,33 @@ __global__ void C06CompressibleNavierStokes_Device(real omega, //////////////////////////////////////////////////////////////////////////////////// - (D.f[ DIR_P00 ])[k ] = mfabb; - (D.f[ DIR_M00 ])[kw ] = mfcbb; - (D.f[ DIR_0P0 ])[k ] = mfbab; - (D.f[ DIR_0M0 ])[ks ] = mfbcb; - (D.f[ DIR_00P ])[k ] = mfbba; - (D.f[ DIR_00M ])[kb ] = mfbbc; - (D.f[ DIR_PP0 ])[k ] = mfaab; - (D.f[ DIR_MM0 ])[ksw ] = mfccb; - (D.f[ DIR_PM0 ])[ks ] = mfacb; - (D.f[ DIR_MP0 ])[kw ] = mfcab; - (D.f[ DIR_P0P ])[k ] = mfaba; - (D.f[ DIR_M0M ])[kbw ] = mfcbc; - (D.f[ DIR_P0M ])[kb ] = mfabc; - (D.f[ DIR_M0P ])[kw ] = mfcba; - (D.f[ DIR_0PP ])[k ] = mfbaa; - (D.f[ DIR_0MM ])[kbs ] = mfbcc; - (D.f[ DIR_0PM ])[kb ] = mfbac; - (D.f[ DIR_0MP ])[ks ] = mfbca; - (D.f[ DIR_000])[k ] = mfbbb; - (D.f[ DIR_PPP ])[k ] = mfaaa; - (D.f[ DIR_PMP ])[ks ] = mfaca; - (D.f[ DIR_PPM ])[kb ] = mfaac; - (D.f[ DIR_PMM ])[kbs ] = mfacc; - (D.f[ DIR_MPP ])[kw ] = mfcaa; - (D.f[ DIR_MMP ])[ksw ] = mfcca; - (D.f[ DIR_MPM ])[kbw ] = mfcac; - (D.f[ DIR_MMM ])[kbsw] = mfccc; + (D.f[ dP00 ])[k ] = mfabb; + (D.f[ dM00 ])[kw ] = mfcbb; + (D.f[ d0P0 ])[k ] = mfbab; + (D.f[ d0M0 ])[ks ] = mfbcb; + (D.f[ d00P ])[k ] = mfbba; + (D.f[ d00M ])[kb ] = mfbbc; + (D.f[ dPP0 ])[k ] = mfaab; + (D.f[ dMM0 ])[ksw ] = mfccb; + (D.f[ dPM0 ])[ks ] = mfacb; + (D.f[ dMP0 ])[kw ] = mfcab; + (D.f[ dP0P ])[k ] = mfaba; + (D.f[ dM0M ])[kbw ] = mfcbc; + (D.f[ dP0M ])[kb ] = mfabc; + (D.f[ dM0P ])[kw ] = mfcba; + (D.f[ d0PP ])[k ] = mfbaa; + (D.f[ d0MM ])[kbs ] = mfbcc; + (D.f[ d0PM ])[kb ] = mfbac; + (D.f[ d0MP ])[ks ] = mfbca; + (D.f[ d000])[k ] = mfbbb; + (D.f[ dPPP ])[k ] = mfaaa; + (D.f[ dPMP ])[ks ] = mfaca; + (D.f[ dPPM ])[kb ] = mfaac; + (D.f[ dPMM ])[kbs ] = mfacc; + (D.f[ dMPP ])[kw ] = mfcaa; + (D.f[ dMMP ])[ksw ] = mfcca; + (D.f[ dMPM ])[kbw ] = mfcac; + (D.f[ dMMM ])[kbsw] = mfccc; //////////////////////////////////////////////////////////////////////////////////// } } diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/C06/C06CompressibleNavierStokes_Device.cuh b/src/gpu/core/Kernel/Compressible/NavierStokes/C06/C06CompressibleNavierStokes_Device.cuh similarity index 100% rename from src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/C06/C06CompressibleNavierStokes_Device.cuh rename to src/gpu/core/Kernel/Compressible/NavierStokes/C06/C06CompressibleNavierStokes_Device.cuh diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/K08/K08CompressibleNavierStokes.cu b/src/gpu/core/Kernel/Compressible/NavierStokes/K08/K08CompressibleNavierStokes.cu similarity index 100% rename from src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/K08/K08CompressibleNavierStokes.cu rename to src/gpu/core/Kernel/Compressible/NavierStokes/K08/K08CompressibleNavierStokes.cu diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/K08/K08CompressibleNavierStokes.h b/src/gpu/core/Kernel/Compressible/NavierStokes/K08/K08CompressibleNavierStokes.h similarity index 100% rename from src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/K08/K08CompressibleNavierStokes.h rename to src/gpu/core/Kernel/Compressible/NavierStokes/K08/K08CompressibleNavierStokes.h diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/K08/K08CompressibleNavierStokes_Device.cu b/src/gpu/core/Kernel/Compressible/NavierStokes/K08/K08CompressibleNavierStokes_Device.cu similarity index 86% rename from src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/K08/K08CompressibleNavierStokes_Device.cu rename to src/gpu/core/Kernel/Compressible/NavierStokes/K08/K08CompressibleNavierStokes_Device.cu index 021ec25f3d70802402bb2d96ca6a462e60774982..4c1b2979d9c38ab9a229d826ede1e0e33acc2337 100644 --- a/src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/K08/K08CompressibleNavierStokes_Device.cu +++ b/src/gpu/core/Kernel/Compressible/NavierStokes/K08/K08CompressibleNavierStokes_Device.cu @@ -37,63 +37,63 @@ __global__ void K08CompressibleNavierStokes_Device(real omega, Distributions27 D; if (EvenOrOdd == true) { - D.f[DIR_P00] = &DDStart[DIR_P00 * size_Mat]; - D.f[DIR_M00] = &DDStart[DIR_M00 * size_Mat]; - D.f[DIR_0P0] = &DDStart[DIR_0P0 * size_Mat]; - D.f[DIR_0M0] = &DDStart[DIR_0M0 * size_Mat]; - D.f[DIR_00P] = &DDStart[DIR_00P * size_Mat]; - D.f[DIR_00M] = &DDStart[DIR_00M * size_Mat]; - D.f[DIR_PP0] = &DDStart[DIR_PP0 * size_Mat]; - D.f[DIR_MM0] = &DDStart[DIR_MM0 * size_Mat]; - D.f[DIR_PM0] = &DDStart[DIR_PM0 * size_Mat]; - D.f[DIR_MP0] = &DDStart[DIR_MP0 * size_Mat]; - D.f[DIR_P0P] = &DDStart[DIR_P0P * size_Mat]; - D.f[DIR_M0M] = &DDStart[DIR_M0M * size_Mat]; - D.f[DIR_P0M] = &DDStart[DIR_P0M * size_Mat]; - D.f[DIR_M0P] = &DDStart[DIR_M0P * size_Mat]; - D.f[DIR_0PP] = &DDStart[DIR_0PP * size_Mat]; - D.f[DIR_0MM] = &DDStart[DIR_0MM * size_Mat]; - D.f[DIR_0PM] = &DDStart[DIR_0PM * size_Mat]; - D.f[DIR_0MP] = &DDStart[DIR_0MP * size_Mat]; - D.f[DIR_000] = &DDStart[DIR_000 * size_Mat]; - D.f[DIR_PPP] = &DDStart[DIR_PPP * size_Mat]; - D.f[DIR_MMP] = &DDStart[DIR_MMP * size_Mat]; - D.f[DIR_PMP] = &DDStart[DIR_PMP * size_Mat]; - D.f[DIR_MPP] = &DDStart[DIR_MPP * size_Mat]; - D.f[DIR_PPM] = &DDStart[DIR_PPM * size_Mat]; - D.f[DIR_MMM] = &DDStart[DIR_MMM * size_Mat]; - D.f[DIR_PMM] = &DDStart[DIR_PMM * size_Mat]; - D.f[DIR_MPM] = &DDStart[DIR_MPM * size_Mat]; + D.f[dP00] = &DDStart[dP00 * size_Mat]; + D.f[dM00] = &DDStart[dM00 * size_Mat]; + D.f[d0P0] = &DDStart[d0P0 * size_Mat]; + D.f[d0M0] = &DDStart[d0M0 * size_Mat]; + D.f[d00P] = &DDStart[d00P * size_Mat]; + D.f[d00M] = &DDStart[d00M * size_Mat]; + D.f[dPP0] = &DDStart[dPP0 * size_Mat]; + D.f[dMM0] = &DDStart[dMM0 * size_Mat]; + D.f[dPM0] = &DDStart[dPM0 * size_Mat]; + D.f[dMP0] = &DDStart[dMP0 * size_Mat]; + D.f[dP0P] = &DDStart[dP0P * size_Mat]; + D.f[dM0M] = &DDStart[dM0M * size_Mat]; + D.f[dP0M] = &DDStart[dP0M * size_Mat]; + D.f[dM0P] = &DDStart[dM0P * size_Mat]; + D.f[d0PP] = &DDStart[d0PP * size_Mat]; + D.f[d0MM] = &DDStart[d0MM * size_Mat]; + D.f[d0PM] = &DDStart[d0PM * size_Mat]; + D.f[d0MP] = &DDStart[d0MP * size_Mat]; + D.f[d000] = &DDStart[d000 * size_Mat]; + D.f[dPPP] = &DDStart[dPPP * size_Mat]; + D.f[dMMP] = &DDStart[dMMP * size_Mat]; + D.f[dPMP] = &DDStart[dPMP * size_Mat]; + D.f[dMPP] = &DDStart[dMPP * size_Mat]; + D.f[dPPM] = &DDStart[dPPM * size_Mat]; + D.f[dMMM] = &DDStart[dMMM * size_Mat]; + D.f[dPMM] = &DDStart[dPMM * size_Mat]; + D.f[dMPM] = &DDStart[dMPM * size_Mat]; } else { - D.f[DIR_M00] = &DDStart[DIR_P00 * size_Mat]; - D.f[DIR_P00] = &DDStart[DIR_M00 * size_Mat]; - D.f[DIR_0M0] = &DDStart[DIR_0P0 * size_Mat]; - D.f[DIR_0P0] = &DDStart[DIR_0M0 * size_Mat]; - D.f[DIR_00M] = &DDStart[DIR_00P * size_Mat]; - D.f[DIR_00P] = &DDStart[DIR_00M * size_Mat]; - D.f[DIR_MM0] = &DDStart[DIR_PP0 * size_Mat]; - D.f[DIR_PP0] = &DDStart[DIR_MM0 * size_Mat]; - D.f[DIR_MP0] = &DDStart[DIR_PM0 * size_Mat]; - D.f[DIR_PM0] = &DDStart[DIR_MP0 * size_Mat]; - D.f[DIR_M0M] = &DDStart[DIR_P0P * size_Mat]; - D.f[DIR_P0P] = &DDStart[DIR_M0M * size_Mat]; - D.f[DIR_M0P] = &DDStart[DIR_P0M * size_Mat]; - D.f[DIR_P0M] = &DDStart[DIR_M0P * size_Mat]; - D.f[DIR_0MM] = &DDStart[DIR_0PP * size_Mat]; - D.f[DIR_0PP] = &DDStart[DIR_0MM * size_Mat]; - D.f[DIR_0MP] = &DDStart[DIR_0PM * size_Mat]; - D.f[DIR_0PM] = &DDStart[DIR_0MP * size_Mat]; - D.f[DIR_000] = &DDStart[DIR_000 * size_Mat]; - D.f[DIR_MMM] = &DDStart[DIR_PPP * size_Mat]; - D.f[DIR_PPM] = &DDStart[DIR_MMP * size_Mat]; - D.f[DIR_MPM] = &DDStart[DIR_PMP * size_Mat]; - D.f[DIR_PMM] = &DDStart[DIR_MPP * size_Mat]; - D.f[DIR_MMP] = &DDStart[DIR_PPM * size_Mat]; - D.f[DIR_PPP] = &DDStart[DIR_MMM * size_Mat]; - D.f[DIR_MPP] = &DDStart[DIR_PMM * size_Mat]; - D.f[DIR_PMP] = &DDStart[DIR_MPM * size_Mat]; + D.f[dM00] = &DDStart[dP00 * size_Mat]; + D.f[dP00] = &DDStart[dM00 * size_Mat]; + D.f[d0M0] = &DDStart[d0P0 * size_Mat]; + D.f[d0P0] = &DDStart[d0M0 * size_Mat]; + D.f[d00M] = &DDStart[d00P * size_Mat]; + D.f[d00P] = &DDStart[d00M * size_Mat]; + D.f[dMM0] = &DDStart[dPP0 * size_Mat]; + D.f[dPP0] = &DDStart[dMM0 * size_Mat]; + D.f[dMP0] = &DDStart[dPM0 * size_Mat]; + D.f[dPM0] = &DDStart[dMP0 * size_Mat]; + D.f[dM0M] = &DDStart[dP0P * size_Mat]; + D.f[dP0P] = &DDStart[dM0M * size_Mat]; + D.f[dM0P] = &DDStart[dP0M * size_Mat]; + D.f[dP0M] = &DDStart[dM0P * size_Mat]; + D.f[d0MM] = &DDStart[d0PP * size_Mat]; + D.f[d0PP] = &DDStart[d0MM * size_Mat]; + D.f[d0MP] = &DDStart[d0PM * size_Mat]; + D.f[d0PM] = &DDStart[d0MP * size_Mat]; + D.f[d000] = &DDStart[d000 * size_Mat]; + D.f[dMMM] = &DDStart[dPPP * size_Mat]; + D.f[dPPM] = &DDStart[dMMP * size_Mat]; + D.f[dMPM] = &DDStart[dPMP * size_Mat]; + D.f[dPMM] = &DDStart[dMPP * size_Mat]; + D.f[dMMP] = &DDStart[dPPM * size_Mat]; + D.f[dPPP] = &DDStart[dMMM * size_Mat]; + D.f[dMPP] = &DDStart[dPMM * size_Mat]; + D.f[dPMP] = &DDStart[dMPM * size_Mat]; } //////////////////////////////////////////////////////////////////////////////// @@ -126,33 +126,33 @@ __global__ void K08CompressibleNavierStokes_Device(real omega, unsigned int ktne = k; unsigned int kbsw = neighborZ[ksw]; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real f_E = (D.f[DIR_P00])[ke];// + c2over27 ; - real f_W = (D.f[DIR_M00])[kw];// + c2over27 ; - real f_N = (D.f[DIR_0P0])[kn];// + c2over27 ; - real f_S = (D.f[DIR_0M0])[ks];// + c2over27 ; - real f_T = (D.f[DIR_00P])[kt];// + c2over27 ; - real f_B = (D.f[DIR_00M])[kb];// + c2over27 ; - real f_NE = (D.f[DIR_PP0])[kne];// + c1over54 ; - real f_SS = (D.f[DIR_MM0])[ksw];// + c1over54 ; - real f_SE = (D.f[DIR_PM0])[kse];// + c1over54 ; - real f_NW = (D.f[DIR_MP0])[knw];// + c1over54 ; - real f_TE = (D.f[DIR_P0P])[kte];// + c1over54 ; - real f_BW = (D.f[DIR_M0M])[kbw];// + c1over54 ; - real f_EB = (D.f[DIR_P0M])[kbe];// + c1over54 ; - real f_TW = (D.f[DIR_M0P])[ktw];// + c1over54 ; - real f_TN = (D.f[DIR_0PP])[ktn];// + c1over54 ; - real f_BS = (D.f[DIR_0MM])[kbs];// + c1over54 ; - real f_BN = (D.f[DIR_0PM])[kbn];// + c1over54 ; - real f_TS = (D.f[DIR_0MP])[kts];// + c1over54 ; - real f_R = (D.f[DIR_000])[kzero];// + c8over27 ; - real f_TNE = (D.f[DIR_PPP])[ktne];// + c1over216; - real f_TSW = (D.f[DIR_MMP])[ktsw];// + c1over216; - real f_TSE = (D.f[DIR_PMP])[ktse];// + c1over216; - real f_TNW = (D.f[DIR_MPP])[ktnw];// + c1over216; - real f_BNE = (D.f[DIR_PPM])[kbne];// + c1over216; - real f_BSW = (D.f[DIR_MMM])[kbsw];// + c1over216; - real f_BSE = (D.f[DIR_PMM])[kbse];// + c1over216; - real f_BNW = (D.f[DIR_MPM])[kbnw];// + c1over216; + real f_E = (D.f[dP00])[ke];// + c2over27 ; + real f_W = (D.f[dM00])[kw];// + c2over27 ; + real f_N = (D.f[d0P0])[kn];// + c2over27 ; + real f_S = (D.f[d0M0])[ks];// + c2over27 ; + real f_T = (D.f[d00P])[kt];// + c2over27 ; + real f_B = (D.f[d00M])[kb];// + c2over27 ; + real f_NE = (D.f[dPP0])[kne];// + c1over54 ; + real f_SS = (D.f[dMM0])[ksw];// + c1over54 ; + real f_SE = (D.f[dPM0])[kse];// + c1over54 ; + real f_NW = (D.f[dMP0])[knw];// + c1over54 ; + real f_TE = (D.f[dP0P])[kte];// + c1over54 ; + real f_BW = (D.f[dM0M])[kbw];// + c1over54 ; + real f_EB = (D.f[dP0M])[kbe];// + c1over54 ; + real f_TW = (D.f[dM0P])[ktw];// + c1over54 ; + real f_TN = (D.f[d0PP])[ktn];// + c1over54 ; + real f_BS = (D.f[d0MM])[kbs];// + c1over54 ; + real f_BN = (D.f[d0PM])[kbn];// + c1over54 ; + real f_TS = (D.f[d0MP])[kts];// + c1over54 ; + real f_R = (D.f[d000])[kzero];// + c8over27 ; + real f_TNE = (D.f[dPPP])[ktne];// + c1over216; + real f_TSW = (D.f[dMMP])[ktsw];// + c1over216; + real f_TSE = (D.f[dPMP])[ktse];// + c1over216; + real f_TNW = (D.f[dMPP])[ktnw];// + c1over216; + real f_BNE = (D.f[dPPM])[kbne];// + c1over216; + real f_BSW = (D.f[dMMM])[kbsw];// + c1over216; + real f_BSE = (D.f[dPMM])[kbse];// + c1over216; + real f_BNW = (D.f[dMPM])[kbnw];// + c1over216; //////////////////////////////////////////////////////////////////////////////////// real fx = c0o1; real fy = c0o1; @@ -874,33 +874,33 @@ __global__ void K08CompressibleNavierStokes_Device(real omega, //////////////////////////////////////////////////////////////////////////////////// - (D.f[DIR_P00])[ke] = mfabb;// - c2over27 ;// - (D.f[DIR_M00])[kw] = mfcbb;// - c2over27 ; - (D.f[DIR_0P0])[kn] = mfbab;// - c2over27 ; - (D.f[DIR_0M0])[ks] = mfbcb;// - c2over27 ; - (D.f[DIR_00P])[kt] = mfbba;// - c2over27 ; - (D.f[DIR_00M])[kb] = mfbbc;// - c2over27 ; - (D.f[DIR_PP0])[kne] = mfaab;// - c1over54 ; - (D.f[DIR_MM0])[ksw] = mfccb;// - c1over54 ; - (D.f[DIR_PM0])[kse] = mfacb;// - c1over54 ; - (D.f[DIR_MP0])[knw] = mfcab;// - c1over54 ; - (D.f[DIR_P0P])[kte] = mfaba;// - c1over54 ; - (D.f[DIR_M0M])[kbw] = mfcbc;// - c1over54 ; - (D.f[DIR_P0M])[kbe] = mfabc;// - c1over54 ; - (D.f[DIR_M0P])[ktw] = mfcba;// - c1over54 ; - (D.f[DIR_0PP])[ktn] = mfbaa;// - c1over54 ; - (D.f[DIR_0MM])[kbs] = mfbcc;// - c1over54 ; - (D.f[DIR_0PM])[kbn] = mfbac;// - c1over54 ; - (D.f[DIR_0MP])[kts] = mfbca;// - c1over54 ; - (D.f[DIR_000])[kzero] = mfbbb;// - c8over27 ; - (D.f[DIR_PPP])[ktne] = mfaaa;// - c1over216; - (D.f[DIR_PMP])[ktse] = mfaca;// - c1over216; - (D.f[DIR_PPM])[kbne] = mfaac;// - c1over216; - (D.f[DIR_PMM])[kbse] = mfacc;// - c1over216; - (D.f[DIR_MPP])[ktnw] = mfcaa;// - c1over216; - (D.f[DIR_MMP])[ktsw] = mfcca;// - c1over216; - (D.f[DIR_MPM])[kbnw] = mfcac;// - c1over216; - (D.f[DIR_MMM])[kbsw] = mfccc;// - c1over216; + (D.f[dP00])[ke] = mfabb;// - c2over27 ;// + (D.f[dM00])[kw] = mfcbb;// - c2over27 ; + (D.f[d0P0])[kn] = mfbab;// - c2over27 ; + (D.f[d0M0])[ks] = mfbcb;// - c2over27 ; + (D.f[d00P])[kt] = mfbba;// - c2over27 ; + (D.f[d00M])[kb] = mfbbc;// - c2over27 ; + (D.f[dPP0])[kne] = mfaab;// - c1over54 ; + (D.f[dMM0])[ksw] = mfccb;// - c1over54 ; + (D.f[dPM0])[kse] = mfacb;// - c1over54 ; + (D.f[dMP0])[knw] = mfcab;// - c1over54 ; + (D.f[dP0P])[kte] = mfaba;// - c1over54 ; + (D.f[dM0M])[kbw] = mfcbc;// - c1over54 ; + (D.f[dP0M])[kbe] = mfabc;// - c1over54 ; + (D.f[dM0P])[ktw] = mfcba;// - c1over54 ; + (D.f[d0PP])[ktn] = mfbaa;// - c1over54 ; + (D.f[d0MM])[kbs] = mfbcc;// - c1over54 ; + (D.f[d0PM])[kbn] = mfbac;// - c1over54 ; + (D.f[d0MP])[kts] = mfbca;// - c1over54 ; + (D.f[d000])[kzero] = mfbbb;// - c8over27 ; + (D.f[dPPP])[ktne] = mfaaa;// - c1over216; + (D.f[dPMP])[ktse] = mfaca;// - c1over216; + (D.f[dPPM])[kbne] = mfaac;// - c1over216; + (D.f[dPMM])[kbse] = mfacc;// - c1over216; + (D.f[dMPP])[ktnw] = mfcaa;// - c1over216; + (D.f[dMMP])[ktsw] = mfcca;// - c1over216; + (D.f[dMPM])[kbnw] = mfcac;// - c1over216; + (D.f[dMMM])[kbsw] = mfccc;// - c1over216; //////////////////////////////////////////////////////////////////////////////////// } } diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/K08/K08CompressibleNavierStokes_Device.cuh b/src/gpu/core/Kernel/Compressible/NavierStokes/K08/K08CompressibleNavierStokes_Device.cuh similarity index 100% rename from src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/K08/K08CompressibleNavierStokes_Device.cuh rename to src/gpu/core/Kernel/Compressible/NavierStokes/K08/K08CompressibleNavierStokes_Device.cuh diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/K15/K15CompressibleNavierStokes.cu b/src/gpu/core/Kernel/Compressible/NavierStokes/K15/K15CompressibleNavierStokes.cu similarity index 100% rename from src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/K15/K15CompressibleNavierStokes.cu rename to src/gpu/core/Kernel/Compressible/NavierStokes/K15/K15CompressibleNavierStokes.cu diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/K15/K15CompressibleNavierStokes.h b/src/gpu/core/Kernel/Compressible/NavierStokes/K15/K15CompressibleNavierStokes.h similarity index 100% rename from src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/K15/K15CompressibleNavierStokes.h rename to src/gpu/core/Kernel/Compressible/NavierStokes/K15/K15CompressibleNavierStokes.h diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/K15/K15CompressibleNavierStokesBulkViscosity.cu b/src/gpu/core/Kernel/Compressible/NavierStokes/K15/K15CompressibleNavierStokesBulkViscosity.cu similarity index 100% rename from src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/K15/K15CompressibleNavierStokesBulkViscosity.cu rename to src/gpu/core/Kernel/Compressible/NavierStokes/K15/K15CompressibleNavierStokesBulkViscosity.cu diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/K15/K15CompressibleNavierStokesBulkViscosity.h b/src/gpu/core/Kernel/Compressible/NavierStokes/K15/K15CompressibleNavierStokesBulkViscosity.h similarity index 100% rename from src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/K15/K15CompressibleNavierStokesBulkViscosity.h rename to src/gpu/core/Kernel/Compressible/NavierStokes/K15/K15CompressibleNavierStokesBulkViscosity.h diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/K15/K15CompressibleNavierStokesBulkViscosity_Device.cu b/src/gpu/core/Kernel/Compressible/NavierStokes/K15/K15CompressibleNavierStokesBulkViscosity_Device.cu similarity index 82% rename from src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/K15/K15CompressibleNavierStokesBulkViscosity_Device.cu rename to src/gpu/core/Kernel/Compressible/NavierStokes/K15/K15CompressibleNavierStokesBulkViscosity_Device.cu index 91716f420dbff6aeb6d6505e1ff6fbc76dfbf92c..8f693f37696a3d9808a08fdfe771b53ffef7db89 100644 --- a/src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/K15/K15CompressibleNavierStokesBulkViscosity_Device.cu +++ b/src/gpu/core/Kernel/Compressible/NavierStokes/K15/K15CompressibleNavierStokesBulkViscosity_Device.cu @@ -39,63 +39,63 @@ __global__ void K15CompressibleNavierStokesBulkViscosity_Device(real omega, Distributions27 D; if (EvenOrOdd == true) { - D.f[DIR_P00] = &DDStart[DIR_P00 * size_Mat]; - D.f[DIR_M00] = &DDStart[DIR_M00 * size_Mat]; - D.f[DIR_0P0] = &DDStart[DIR_0P0 * size_Mat]; - D.f[DIR_0M0] = &DDStart[DIR_0M0 * size_Mat]; - D.f[DIR_00P] = &DDStart[DIR_00P * size_Mat]; - D.f[DIR_00M] = &DDStart[DIR_00M * size_Mat]; - D.f[DIR_PP0] = &DDStart[DIR_PP0 * size_Mat]; - D.f[DIR_MM0] = &DDStart[DIR_MM0 * size_Mat]; - D.f[DIR_PM0] = &DDStart[DIR_PM0 * size_Mat]; - D.f[DIR_MP0] = &DDStart[DIR_MP0 * size_Mat]; - D.f[DIR_P0P] = &DDStart[DIR_P0P * size_Mat]; - D.f[DIR_M0M] = &DDStart[DIR_M0M * size_Mat]; - D.f[DIR_P0M] = &DDStart[DIR_P0M * size_Mat]; - D.f[DIR_M0P] = &DDStart[DIR_M0P * size_Mat]; - D.f[DIR_0PP] = &DDStart[DIR_0PP * size_Mat]; - D.f[DIR_0MM] = &DDStart[DIR_0MM * size_Mat]; - D.f[DIR_0PM] = &DDStart[DIR_0PM * size_Mat]; - D.f[DIR_0MP] = &DDStart[DIR_0MP * size_Mat]; - D.f[DIR_000] = &DDStart[DIR_000 * size_Mat]; - D.f[DIR_PPP] = &DDStart[DIR_PPP * size_Mat]; - D.f[DIR_MMP] = &DDStart[DIR_MMP * size_Mat]; - D.f[DIR_PMP] = &DDStart[DIR_PMP * size_Mat]; - D.f[DIR_MPP] = &DDStart[DIR_MPP * size_Mat]; - D.f[DIR_PPM] = &DDStart[DIR_PPM * size_Mat]; - D.f[DIR_MMM] = &DDStart[DIR_MMM * size_Mat]; - D.f[DIR_PMM] = &DDStart[DIR_PMM * size_Mat]; - D.f[DIR_MPM] = &DDStart[DIR_MPM * size_Mat]; + D.f[dP00] = &DDStart[dP00 * size_Mat]; + D.f[dM00] = &DDStart[dM00 * size_Mat]; + D.f[d0P0] = &DDStart[d0P0 * size_Mat]; + D.f[d0M0] = &DDStart[d0M0 * size_Mat]; + D.f[d00P] = &DDStart[d00P * size_Mat]; + D.f[d00M] = &DDStart[d00M * size_Mat]; + D.f[dPP0] = &DDStart[dPP0 * size_Mat]; + D.f[dMM0] = &DDStart[dMM0 * size_Mat]; + D.f[dPM0] = &DDStart[dPM0 * size_Mat]; + D.f[dMP0] = &DDStart[dMP0 * size_Mat]; + D.f[dP0P] = &DDStart[dP0P * size_Mat]; + D.f[dM0M] = &DDStart[dM0M * size_Mat]; + D.f[dP0M] = &DDStart[dP0M * size_Mat]; + D.f[dM0P] = &DDStart[dM0P * size_Mat]; + D.f[d0PP] = &DDStart[d0PP * size_Mat]; + D.f[d0MM] = &DDStart[d0MM * size_Mat]; + D.f[d0PM] = &DDStart[d0PM * size_Mat]; + D.f[d0MP] = &DDStart[d0MP * size_Mat]; + D.f[d000] = &DDStart[d000 * size_Mat]; + D.f[dPPP] = &DDStart[dPPP * size_Mat]; + D.f[dMMP] = &DDStart[dMMP * size_Mat]; + D.f[dPMP] = &DDStart[dPMP * size_Mat]; + D.f[dMPP] = &DDStart[dMPP * size_Mat]; + D.f[dPPM] = &DDStart[dPPM * size_Mat]; + D.f[dMMM] = &DDStart[dMMM * size_Mat]; + D.f[dPMM] = &DDStart[dPMM * size_Mat]; + D.f[dMPM] = &DDStart[dMPM * size_Mat]; } else { - D.f[DIR_M00] = &DDStart[DIR_P00 * size_Mat]; - D.f[DIR_P00] = &DDStart[DIR_M00 * size_Mat]; - D.f[DIR_0M0] = &DDStart[DIR_0P0 * size_Mat]; - D.f[DIR_0P0] = &DDStart[DIR_0M0 * size_Mat]; - D.f[DIR_00M] = &DDStart[DIR_00P * size_Mat]; - D.f[DIR_00P] = &DDStart[DIR_00M * size_Mat]; - D.f[DIR_MM0] = &DDStart[DIR_PP0 * size_Mat]; - D.f[DIR_PP0] = &DDStart[DIR_MM0 * size_Mat]; - D.f[DIR_MP0] = &DDStart[DIR_PM0 * size_Mat]; - D.f[DIR_PM0] = &DDStart[DIR_MP0 * size_Mat]; - D.f[DIR_M0M] = &DDStart[DIR_P0P * size_Mat]; - D.f[DIR_P0P] = &DDStart[DIR_M0M * size_Mat]; - D.f[DIR_M0P] = &DDStart[DIR_P0M * size_Mat]; - D.f[DIR_P0M] = &DDStart[DIR_M0P * size_Mat]; - D.f[DIR_0MM] = &DDStart[DIR_0PP * size_Mat]; - D.f[DIR_0PP] = &DDStart[DIR_0MM * size_Mat]; - D.f[DIR_0MP] = &DDStart[DIR_0PM * size_Mat]; - D.f[DIR_0PM] = &DDStart[DIR_0MP * size_Mat]; - D.f[DIR_000] = &DDStart[DIR_000 * size_Mat]; - D.f[DIR_MMM] = &DDStart[DIR_PPP * size_Mat]; - D.f[DIR_PPM] = &DDStart[DIR_MMP * size_Mat]; - D.f[DIR_MPM] = &DDStart[DIR_PMP * size_Mat]; - D.f[DIR_PMM] = &DDStart[DIR_MPP * size_Mat]; - D.f[DIR_MMP] = &DDStart[DIR_PPM * size_Mat]; - D.f[DIR_PPP] = &DDStart[DIR_MMM * size_Mat]; - D.f[DIR_MPP] = &DDStart[DIR_PMM * size_Mat]; - D.f[DIR_PMP] = &DDStart[DIR_MPM * size_Mat]; + D.f[dM00] = &DDStart[dP00 * size_Mat]; + D.f[dP00] = &DDStart[dM00 * size_Mat]; + D.f[d0M0] = &DDStart[d0P0 * size_Mat]; + D.f[d0P0] = &DDStart[d0M0 * size_Mat]; + D.f[d00M] = &DDStart[d00P * size_Mat]; + D.f[d00P] = &DDStart[d00M * size_Mat]; + D.f[dMM0] = &DDStart[dPP0 * size_Mat]; + D.f[dPP0] = &DDStart[dMM0 * size_Mat]; + D.f[dMP0] = &DDStart[dPM0 * size_Mat]; + D.f[dPM0] = &DDStart[dMP0 * size_Mat]; + D.f[dM0M] = &DDStart[dP0P * size_Mat]; + D.f[dP0P] = &DDStart[dM0M * size_Mat]; + D.f[dM0P] = &DDStart[dP0M * size_Mat]; + D.f[dP0M] = &DDStart[dM0P * size_Mat]; + D.f[d0MM] = &DDStart[d0PP * size_Mat]; + D.f[d0PP] = &DDStart[d0MM * size_Mat]; + D.f[d0MP] = &DDStart[d0PM * size_Mat]; + D.f[d0PM] = &DDStart[d0MP * size_Mat]; + D.f[d000] = &DDStart[d000 * size_Mat]; + D.f[dMMM] = &DDStart[dPPP * size_Mat]; + D.f[dPPM] = &DDStart[dMMP * size_Mat]; + D.f[dMPM] = &DDStart[dPMP * size_Mat]; + D.f[dPMM] = &DDStart[dMPP * size_Mat]; + D.f[dMMP] = &DDStart[dPPM * size_Mat]; + D.f[dPPP] = &DDStart[dMMM * size_Mat]; + D.f[dMPP] = &DDStart[dPMM * size_Mat]; + D.f[dPMP] = &DDStart[dMPM * size_Mat]; } //////////////////////////////////////////////////////////////////////////////// @@ -156,33 +156,33 @@ __global__ void K15CompressibleNavierStokesBulkViscosity_Device(real omega, //unsigned int ktne = k; //unsigned int kbsw = neighborZ[ksw]; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real mfcbb = (D.f[DIR_P00])[k];//[ke ];// + c2over27 ;(D.f[DIR_P00])[k ];//ke - real mfabb = (D.f[DIR_M00])[kw];//[kw ];// + c2over27 ;(D.f[DIR_M00])[kw ]; - real mfbcb = (D.f[DIR_0P0])[k];//[kn ];// + c2over27 ;(D.f[DIR_0P0])[k ];//kn - real mfbab = (D.f[DIR_0M0])[ks];//[ks ];// + c2over27 ;(D.f[DIR_0M0])[ks ]; - real mfbbc = (D.f[DIR_00P])[k];//[kt ];// + c2over27 ;(D.f[DIR_00P])[k ];//kt - real mfbba = (D.f[DIR_00M])[kb];//[kb ];// + c2over27 ;(D.f[DIR_00M])[kb ]; - real mfccb = (D.f[DIR_PP0])[k];//[kne ];// + c1over54 ;(D.f[DIR_PP0])[k ];//kne - real mfaab = (D.f[DIR_MM0])[ksw];//[ksw ];// + c1over54 ;(D.f[DIR_MM0])[ksw]; - real mfcab = (D.f[DIR_PM0])[ks];//[kse ];// + c1over54 ;(D.f[DIR_PM0])[ks ];//kse - real mfacb = (D.f[DIR_MP0])[kw];//[knw ];// + c1over54 ;(D.f[DIR_MP0])[kw ];//knw - real mfcbc = (D.f[DIR_P0P])[k];//[kte ];// + c1over54 ;(D.f[DIR_P0P])[k ];//kte - real mfaba = (D.f[DIR_M0M])[kbw];//[kbw ];// + c1over54 ;(D.f[DIR_M0M])[kbw]; - real mfcba = (D.f[DIR_P0M])[kb];//[kbe ];// + c1over54 ;(D.f[DIR_P0M])[kb ];//kbe - real mfabc = (D.f[DIR_M0P])[kw];//[ktw ];// + c1over54 ;(D.f[DIR_M0P])[kw ];//ktw - real mfbcc = (D.f[DIR_0PP])[k];//[ktn ];// + c1over54 ;(D.f[DIR_0PP])[k ];//ktn - real mfbaa = (D.f[DIR_0MM])[kbs];//[kbs ];// + c1over54 ;(D.f[DIR_0MM])[kbs]; - real mfbca = (D.f[DIR_0PM])[kb];//[kbn ];// + c1over54 ;(D.f[DIR_0PM])[kb ];//kbn - real mfbac = (D.f[DIR_0MP])[ks];//[kts ];// + c1over54 ;(D.f[DIR_0MP])[ks ];//kts - real mfbbb = (D.f[DIR_000])[k];//[kzero];// + c8over27 ;(D.f[DIR_000])[k ];//kzero - real mfccc = (D.f[DIR_PPP])[k];//[ktne ];// + c1over216;(D.f[DIR_PPP])[k ];//ktne - real mfaac = (D.f[DIR_MMP])[ksw];//[ktsw ];// + c1over216;(D.f[DIR_MMP])[ksw];//ktsw - real mfcac = (D.f[DIR_PMP])[ks];//[ktse ];// + c1over216;(D.f[DIR_PMP])[ks ];//ktse - real mfacc = (D.f[DIR_MPP])[kw];//[ktnw ];// + c1over216;(D.f[DIR_MPP])[kw ];//ktnw - real mfcca = (D.f[DIR_PPM])[kb];//[kbne ];// + c1over216;(D.f[DIR_PPM])[kb ];//kbne - real mfaaa = (D.f[DIR_MMM])[kbsw];//[kbsw ];// + c1over216;(D.f[DIR_MMM])[kbsw]; - real mfcaa = (D.f[DIR_PMM])[kbs];//[kbse ];// + c1over216;(D.f[DIR_PMM])[kbs];//kbse - real mfaca = (D.f[DIR_MPM])[kbw];//[kbnw ];// + c1over216;(D.f[DIR_MPM])[kbw];//kbnw + real mfcbb = (D.f[dP00])[k];//[ke ];// + c2over27 ;(D.f[dP00])[k ];//ke + real mfabb = (D.f[dM00])[kw];//[kw ];// + c2over27 ;(D.f[dM00])[kw ]; + real mfbcb = (D.f[d0P0])[k];//[kn ];// + c2over27 ;(D.f[d0P0])[k ];//kn + real mfbab = (D.f[d0M0])[ks];//[ks ];// + c2over27 ;(D.f[d0M0])[ks ]; + real mfbbc = (D.f[d00P])[k];//[kt ];// + c2over27 ;(D.f[d00P])[k ];//kt + real mfbba = (D.f[d00M])[kb];//[kb ];// + c2over27 ;(D.f[d00M])[kb ]; + real mfccb = (D.f[dPP0])[k];//[kne ];// + c1over54 ;(D.f[dPP0])[k ];//kne + real mfaab = (D.f[dMM0])[ksw];//[ksw ];// + c1over54 ;(D.f[dMM0])[ksw]; + real mfcab = (D.f[dPM0])[ks];//[kse ];// + c1over54 ;(D.f[dPM0])[ks ];//kse + real mfacb = (D.f[dMP0])[kw];//[knw ];// + c1over54 ;(D.f[dMP0])[kw ];//knw + real mfcbc = (D.f[dP0P])[k];//[kte ];// + c1over54 ;(D.f[dP0P])[k ];//kte + real mfaba = (D.f[dM0M])[kbw];//[kbw ];// + c1over54 ;(D.f[dM0M])[kbw]; + real mfcba = (D.f[dP0M])[kb];//[kbe ];// + c1over54 ;(D.f[dP0M])[kb ];//kbe + real mfabc = (D.f[dM0P])[kw];//[ktw ];// + c1over54 ;(D.f[dM0P])[kw ];//ktw + real mfbcc = (D.f[d0PP])[k];//[ktn ];// + c1over54 ;(D.f[d0PP])[k ];//ktn + real mfbaa = (D.f[d0MM])[kbs];//[kbs ];// + c1over54 ;(D.f[d0MM])[kbs]; + real mfbca = (D.f[d0PM])[kb];//[kbn ];// + c1over54 ;(D.f[d0PM])[kb ];//kbn + real mfbac = (D.f[d0MP])[ks];//[kts ];// + c1over54 ;(D.f[d0MP])[ks ];//kts + real mfbbb = (D.f[d000])[k];//[kzero];// + c8over27 ;(D.f[d000])[k ];//kzero + real mfccc = (D.f[dPPP])[k];//[ktne ];// + c1over216;(D.f[dPPP])[k ];//ktne + real mfaac = (D.f[dMMP])[ksw];//[ktsw ];// + c1over216;(D.f[dMMP])[ksw];//ktsw + real mfcac = (D.f[dPMP])[ks];//[ktse ];// + c1over216;(D.f[dPMP])[ks ];//ktse + real mfacc = (D.f[dMPP])[kw];//[ktnw ];// + c1over216;(D.f[dMPP])[kw ];//ktnw + real mfcca = (D.f[dPPM])[kb];//[kbne ];// + c1over216;(D.f[dPPM])[kb ];//kbne + real mfaaa = (D.f[dMMM])[kbsw];//[kbsw ];// + c1over216;(D.f[dMMM])[kbsw]; + real mfcaa = (D.f[dPMM])[kbs];//[kbse ];// + c1over216;(D.f[dPMM])[kbs];//kbse + real mfaca = (D.f[dMPM])[kbw];//[kbnw ];// + c1over216;(D.f[dMPM])[kbw];//kbnw //////////////////////////////////////////////////////////////////////////////////// real drho = ((((mfccc + mfaaa) + (mfaca + mfcac)) + ((mfacc + mfcaa) + (mfaac + mfcca))) + (((mfbac + mfbca) + (mfbaa + mfbcc)) + ((mfabc + mfcba) + (mfaba + mfcbc)) + ((mfacb + mfcab) + (mfaab + mfccb))) + @@ -912,33 +912,33 @@ __global__ void K15CompressibleNavierStokesBulkViscosity_Device(real omega, //////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////// - (D.f[DIR_P00])[k] = mfabb;//(D.f[ DIR_P00 ])[ke ] = mfabb;// - c2over27 ; (D.f[ DIR_P00 ])[k ] - (D.f[DIR_M00])[kw] = mfcbb;//(D.f[ DIR_M00 ])[kw ] = mfcbb;// - c2over27 ; (D.f[ DIR_M00 ])[kw ] - (D.f[DIR_0P0])[k] = mfbab;//(D.f[ DIR_0P0 ])[kn ] = mfbab;// - c2over27 ; (D.f[ DIR_0P0 ])[k ] - (D.f[DIR_0M0])[ks] = mfbcb;//(D.f[ DIR_0M0 ])[ks ] = mfbcb;// - c2over27 ; (D.f[ DIR_0M0 ])[ks ] - (D.f[DIR_00P])[k] = mfbba;//(D.f[ DIR_00P ])[kt ] = mfbba;// - c2over27 ; (D.f[ DIR_00P ])[k ] - (D.f[DIR_00M])[kb] = mfbbc;//(D.f[ DIR_00M ])[kb ] = mfbbc;// - c2over27 ; (D.f[ DIR_00M ])[kb ] - (D.f[DIR_PP0])[k] = mfaab;//(D.f[ DIR_PP0 ])[kne ] = mfaab;// - c1over54 ; (D.f[ DIR_PP0 ])[k ] - (D.f[DIR_MM0])[ksw] = mfccb;//(D.f[ DIR_MM0 ])[ksw ] = mfccb;// - c1over54 ; (D.f[ DIR_MM0 ])[ksw ] - (D.f[DIR_PM0])[ks] = mfacb;//(D.f[ DIR_PM0 ])[kse ] = mfacb;// - c1over54 ; (D.f[ DIR_PM0 ])[ks ] - (D.f[DIR_MP0])[kw] = mfcab;//(D.f[ DIR_MP0 ])[knw ] = mfcab;// - c1over54 ; (D.f[ DIR_MP0 ])[kw ] - (D.f[DIR_P0P])[k] = mfaba;//(D.f[ DIR_P0P ])[kte ] = mfaba;// - c1over54 ; (D.f[ DIR_P0P ])[k ] - (D.f[DIR_M0M])[kbw] = mfcbc;//(D.f[ DIR_M0M ])[kbw ] = mfcbc;// - c1over54 ; (D.f[ DIR_M0M ])[kbw ] - (D.f[DIR_P0M])[kb] = mfabc;//(D.f[ DIR_P0M ])[kbe ] = mfabc;// - c1over54 ; (D.f[ DIR_P0M ])[kb ] - (D.f[DIR_M0P])[kw] = mfcba;//(D.f[ DIR_M0P ])[ktw ] = mfcba;// - c1over54 ; (D.f[ DIR_M0P ])[kw ] - (D.f[DIR_0PP])[k] = mfbaa;//(D.f[ DIR_0PP ])[ktn ] = mfbaa;// - c1over54 ; (D.f[ DIR_0PP ])[k ] - (D.f[DIR_0MM])[kbs] = mfbcc;//(D.f[ DIR_0MM ])[kbs ] = mfbcc;// - c1over54 ; (D.f[ DIR_0MM ])[kbs ] - (D.f[DIR_0PM])[kb] = mfbac;//(D.f[ DIR_0PM ])[kbn ] = mfbac;// - c1over54 ; (D.f[ DIR_0PM ])[kb ] - (D.f[DIR_0MP])[ks] = mfbca;//(D.f[ DIR_0MP ])[kts ] = mfbca;// - c1over54 ; (D.f[ DIR_0MP ])[ks ] - (D.f[DIR_000])[k] = mfbbb;//(D.f[ DIR_000])[kzero] = mfbbb;// - c8over27 ; (D.f[ DIR_000])[k ] - (D.f[DIR_PPP])[k] = mfaaa;//(D.f[ DIR_PPP ])[ktne ] = mfaaa;// - c1over216; (D.f[ DIR_PPP ])[k ] - (D.f[DIR_PMP])[ks] = mfaca;//(D.f[ DIR_PMP ])[ktse ] = mfaca;// - c1over216; (D.f[ DIR_PMP ])[ks ] - (D.f[DIR_PPM])[kb] = mfaac;//(D.f[ DIR_PPM ])[kbne ] = mfaac;// - c1over216; (D.f[ DIR_PPM ])[kb ] - (D.f[DIR_PMM])[kbs] = mfacc;//(D.f[ DIR_PMM ])[kbse ] = mfacc;// - c1over216; (D.f[ DIR_PMM ])[kbs ] - (D.f[DIR_MPP])[kw] = mfcaa;//(D.f[ DIR_MPP ])[ktnw ] = mfcaa;// - c1over216; (D.f[ DIR_MPP ])[kw ] - (D.f[DIR_MMP])[ksw] = mfcca;//(D.f[ DIR_MMP ])[ktsw ] = mfcca;// - c1over216; (D.f[ DIR_MMP ])[ksw ] - (D.f[DIR_MPM])[kbw] = mfcac;//(D.f[ DIR_MPM ])[kbnw ] = mfcac;// - c1over216; (D.f[ DIR_MPM ])[kbw ] - (D.f[DIR_MMM])[kbsw] = mfccc;//(D.f[ DIR_MMM ])[kbsw ] = mfccc;// - c1over216; (D.f[ DIR_MMM ])[kbsw] + (D.f[dP00])[k] = mfabb;//(D.f[ dP00 ])[ke ] = mfabb;// - c2over27 ; (D.f[ dP00 ])[k ] + (D.f[dM00])[kw] = mfcbb;//(D.f[ dM00 ])[kw ] = mfcbb;// - c2over27 ; (D.f[ dM00 ])[kw ] + (D.f[d0P0])[k] = mfbab;//(D.f[ d0P0 ])[kn ] = mfbab;// - c2over27 ; (D.f[ d0P0 ])[k ] + (D.f[d0M0])[ks] = mfbcb;//(D.f[ d0M0 ])[ks ] = mfbcb;// - c2over27 ; (D.f[ d0M0 ])[ks ] + (D.f[d00P])[k] = mfbba;//(D.f[ d00P ])[kt ] = mfbba;// - c2over27 ; (D.f[ d00P ])[k ] + (D.f[d00M])[kb] = mfbbc;//(D.f[ d00M ])[kb ] = mfbbc;// - c2over27 ; (D.f[ d00M ])[kb ] + (D.f[dPP0])[k] = mfaab;//(D.f[ dPP0 ])[kne ] = mfaab;// - c1over54 ; (D.f[ dPP0 ])[k ] + (D.f[dMM0])[ksw] = mfccb;//(D.f[ dMM0 ])[ksw ] = mfccb;// - c1over54 ; (D.f[ dMM0 ])[ksw ] + (D.f[dPM0])[ks] = mfacb;//(D.f[ dPM0 ])[kse ] = mfacb;// - c1over54 ; (D.f[ dPM0 ])[ks ] + (D.f[dMP0])[kw] = mfcab;//(D.f[ dMP0 ])[knw ] = mfcab;// - c1over54 ; (D.f[ dMP0 ])[kw ] + (D.f[dP0P])[k] = mfaba;//(D.f[ dP0P ])[kte ] = mfaba;// - c1over54 ; (D.f[ dP0P ])[k ] + (D.f[dM0M])[kbw] = mfcbc;//(D.f[ dM0M ])[kbw ] = mfcbc;// - c1over54 ; (D.f[ dM0M ])[kbw ] + (D.f[dP0M])[kb] = mfabc;//(D.f[ dP0M ])[kbe ] = mfabc;// - c1over54 ; (D.f[ dP0M ])[kb ] + (D.f[dM0P])[kw] = mfcba;//(D.f[ dM0P ])[ktw ] = mfcba;// - c1over54 ; (D.f[ dM0P ])[kw ] + (D.f[d0PP])[k] = mfbaa;//(D.f[ d0PP ])[ktn ] = mfbaa;// - c1over54 ; (D.f[ d0PP ])[k ] + (D.f[d0MM])[kbs] = mfbcc;//(D.f[ d0MM ])[kbs ] = mfbcc;// - c1over54 ; (D.f[ d0MM ])[kbs ] + (D.f[d0PM])[kb] = mfbac;//(D.f[ d0PM ])[kbn ] = mfbac;// - c1over54 ; (D.f[ d0PM ])[kb ] + (D.f[d0MP])[ks] = mfbca;//(D.f[ d0MP ])[kts ] = mfbca;// - c1over54 ; (D.f[ d0MP ])[ks ] + (D.f[d000])[k] = mfbbb;//(D.f[ d000])[kzero] = mfbbb;// - c8over27 ; (D.f[ d000])[k ] + (D.f[dPPP])[k] = mfaaa;//(D.f[ dPPP ])[ktne ] = mfaaa;// - c1over216; (D.f[ dPPP ])[k ] + (D.f[dPMP])[ks] = mfaca;//(D.f[ dPMP ])[ktse ] = mfaca;// - c1over216; (D.f[ dPMP ])[ks ] + (D.f[dPPM])[kb] = mfaac;//(D.f[ dPPM ])[kbne ] = mfaac;// - c1over216; (D.f[ dPPM ])[kb ] + (D.f[dPMM])[kbs] = mfacc;//(D.f[ dPMM ])[kbse ] = mfacc;// - c1over216; (D.f[ dPMM ])[kbs ] + (D.f[dMPP])[kw] = mfcaa;//(D.f[ dMPP ])[ktnw ] = mfcaa;// - c1over216; (D.f[ dMPP ])[kw ] + (D.f[dMMP])[ksw] = mfcca;//(D.f[ dMMP ])[ktsw ] = mfcca;// - c1over216; (D.f[ dMMP ])[ksw ] + (D.f[dMPM])[kbw] = mfcac;//(D.f[ dMPM ])[kbnw ] = mfcac;// - c1over216; (D.f[ dMPM ])[kbw ] + (D.f[dMMM])[kbsw] = mfccc;//(D.f[ dMMM ])[kbsw ] = mfccc;// - c1over216; (D.f[ dMMM ])[kbsw] //////////////////////////////////////////////////////////////////////////////////// } } diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/K15/K15CompressibleNavierStokesBulkViscosity_Device.cuh b/src/gpu/core/Kernel/Compressible/NavierStokes/K15/K15CompressibleNavierStokesBulkViscosity_Device.cuh similarity index 100% rename from src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/K15/K15CompressibleNavierStokesBulkViscosity_Device.cuh rename to src/gpu/core/Kernel/Compressible/NavierStokes/K15/K15CompressibleNavierStokesBulkViscosity_Device.cuh diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/K15/K15CompressibleNavierStokesSponge.cu b/src/gpu/core/Kernel/Compressible/NavierStokes/K15/K15CompressibleNavierStokesSponge.cu similarity index 100% rename from src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/K15/K15CompressibleNavierStokesSponge.cu rename to src/gpu/core/Kernel/Compressible/NavierStokes/K15/K15CompressibleNavierStokesSponge.cu diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/K15/K15CompressibleNavierStokesSponge.h b/src/gpu/core/Kernel/Compressible/NavierStokes/K15/K15CompressibleNavierStokesSponge.h similarity index 100% rename from src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/K15/K15CompressibleNavierStokesSponge.h rename to src/gpu/core/Kernel/Compressible/NavierStokes/K15/K15CompressibleNavierStokesSponge.h diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/K15/K15CompressibleNavierStokesSponge_Device.cu b/src/gpu/core/Kernel/Compressible/NavierStokes/K15/K15CompressibleNavierStokesSponge_Device.cu similarity index 89% rename from src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/K15/K15CompressibleNavierStokesSponge_Device.cu rename to src/gpu/core/Kernel/Compressible/NavierStokes/K15/K15CompressibleNavierStokesSponge_Device.cu index 6b3a06614a1bec560e8d361c3610f9a00a0cdaf3..db530f8bb26fbf118cc1025e97294db4ef2a2a9e 100644 --- a/src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/K15/K15CompressibleNavierStokesSponge_Device.cu +++ b/src/gpu/core/Kernel/Compressible/NavierStokes/K15/K15CompressibleNavierStokesSponge_Device.cu @@ -40,63 +40,63 @@ __global__ void K15CompressibleNavierStokesSponge_Device(real omegaIn, Distributions27 D; if (EvenOrOdd == true) { - D.f[DIR_P00] = &DDStart[DIR_P00 * size_Mat]; - D.f[DIR_M00] = &DDStart[DIR_M00 * size_Mat]; - D.f[DIR_0P0] = &DDStart[DIR_0P0 * size_Mat]; - D.f[DIR_0M0] = &DDStart[DIR_0M0 * size_Mat]; - D.f[DIR_00P] = &DDStart[DIR_00P * size_Mat]; - D.f[DIR_00M] = &DDStart[DIR_00M * size_Mat]; - D.f[DIR_PP0] = &DDStart[DIR_PP0 * size_Mat]; - D.f[DIR_MM0] = &DDStart[DIR_MM0 * size_Mat]; - D.f[DIR_PM0] = &DDStart[DIR_PM0 * size_Mat]; - D.f[DIR_MP0] = &DDStart[DIR_MP0 * size_Mat]; - D.f[DIR_P0P] = &DDStart[DIR_P0P * size_Mat]; - D.f[DIR_M0M] = &DDStart[DIR_M0M * size_Mat]; - D.f[DIR_P0M] = &DDStart[DIR_P0M * size_Mat]; - D.f[DIR_M0P] = &DDStart[DIR_M0P * size_Mat]; - D.f[DIR_0PP] = &DDStart[DIR_0PP * size_Mat]; - D.f[DIR_0MM] = &DDStart[DIR_0MM * size_Mat]; - D.f[DIR_0PM] = &DDStart[DIR_0PM * size_Mat]; - D.f[DIR_0MP] = &DDStart[DIR_0MP * size_Mat]; - D.f[DIR_000] = &DDStart[DIR_000 * size_Mat]; - D.f[DIR_PPP] = &DDStart[DIR_PPP * size_Mat]; - D.f[DIR_MMP] = &DDStart[DIR_MMP * size_Mat]; - D.f[DIR_PMP] = &DDStart[DIR_PMP * size_Mat]; - D.f[DIR_MPP] = &DDStart[DIR_MPP * size_Mat]; - D.f[DIR_PPM] = &DDStart[DIR_PPM * size_Mat]; - D.f[DIR_MMM] = &DDStart[DIR_MMM * size_Mat]; - D.f[DIR_PMM] = &DDStart[DIR_PMM * size_Mat]; - D.f[DIR_MPM] = &DDStart[DIR_MPM * size_Mat]; + D.f[dP00] = &DDStart[dP00 * size_Mat]; + D.f[dM00] = &DDStart[dM00 * size_Mat]; + D.f[d0P0] = &DDStart[d0P0 * size_Mat]; + D.f[d0M0] = &DDStart[d0M0 * size_Mat]; + D.f[d00P] = &DDStart[d00P * size_Mat]; + D.f[d00M] = &DDStart[d00M * size_Mat]; + D.f[dPP0] = &DDStart[dPP0 * size_Mat]; + D.f[dMM0] = &DDStart[dMM0 * size_Mat]; + D.f[dPM0] = &DDStart[dPM0 * size_Mat]; + D.f[dMP0] = &DDStart[dMP0 * size_Mat]; + D.f[dP0P] = &DDStart[dP0P * size_Mat]; + D.f[dM0M] = &DDStart[dM0M * size_Mat]; + D.f[dP0M] = &DDStart[dP0M * size_Mat]; + D.f[dM0P] = &DDStart[dM0P * size_Mat]; + D.f[d0PP] = &DDStart[d0PP * size_Mat]; + D.f[d0MM] = &DDStart[d0MM * size_Mat]; + D.f[d0PM] = &DDStart[d0PM * size_Mat]; + D.f[d0MP] = &DDStart[d0MP * size_Mat]; + D.f[d000] = &DDStart[d000 * size_Mat]; + D.f[dPPP] = &DDStart[dPPP * size_Mat]; + D.f[dMMP] = &DDStart[dMMP * size_Mat]; + D.f[dPMP] = &DDStart[dPMP * size_Mat]; + D.f[dMPP] = &DDStart[dMPP * size_Mat]; + D.f[dPPM] = &DDStart[dPPM * size_Mat]; + D.f[dMMM] = &DDStart[dMMM * size_Mat]; + D.f[dPMM] = &DDStart[dPMM * size_Mat]; + D.f[dMPM] = &DDStart[dMPM * size_Mat]; } else { - D.f[DIR_M00] = &DDStart[DIR_P00 * size_Mat]; - D.f[DIR_P00] = &DDStart[DIR_M00 * size_Mat]; - D.f[DIR_0M0] = &DDStart[DIR_0P0 * size_Mat]; - D.f[DIR_0P0] = &DDStart[DIR_0M0 * size_Mat]; - D.f[DIR_00M] = &DDStart[DIR_00P * size_Mat]; - D.f[DIR_00P] = &DDStart[DIR_00M * size_Mat]; - D.f[DIR_MM0] = &DDStart[DIR_PP0 * size_Mat]; - D.f[DIR_PP0] = &DDStart[DIR_MM0 * size_Mat]; - D.f[DIR_MP0] = &DDStart[DIR_PM0 * size_Mat]; - D.f[DIR_PM0] = &DDStart[DIR_MP0 * size_Mat]; - D.f[DIR_M0M] = &DDStart[DIR_P0P * size_Mat]; - D.f[DIR_P0P] = &DDStart[DIR_M0M * size_Mat]; - D.f[DIR_M0P] = &DDStart[DIR_P0M * size_Mat]; - D.f[DIR_P0M] = &DDStart[DIR_M0P * size_Mat]; - D.f[DIR_0MM] = &DDStart[DIR_0PP * size_Mat]; - D.f[DIR_0PP] = &DDStart[DIR_0MM * size_Mat]; - D.f[DIR_0MP] = &DDStart[DIR_0PM * size_Mat]; - D.f[DIR_0PM] = &DDStart[DIR_0MP * size_Mat]; - D.f[DIR_000] = &DDStart[DIR_000 * size_Mat]; - D.f[DIR_MMM] = &DDStart[DIR_PPP * size_Mat]; - D.f[DIR_PPM] = &DDStart[DIR_MMP * size_Mat]; - D.f[DIR_MPM] = &DDStart[DIR_PMP * size_Mat]; - D.f[DIR_PMM] = &DDStart[DIR_MPP * size_Mat]; - D.f[DIR_MMP] = &DDStart[DIR_PPM * size_Mat]; - D.f[DIR_PPP] = &DDStart[DIR_MMM * size_Mat]; - D.f[DIR_MPP] = &DDStart[DIR_PMM * size_Mat]; - D.f[DIR_PMP] = &DDStart[DIR_MPM * size_Mat]; + D.f[dM00] = &DDStart[dP00 * size_Mat]; + D.f[dP00] = &DDStart[dM00 * size_Mat]; + D.f[d0M0] = &DDStart[d0P0 * size_Mat]; + D.f[d0P0] = &DDStart[d0M0 * size_Mat]; + D.f[d00M] = &DDStart[d00P * size_Mat]; + D.f[d00P] = &DDStart[d00M * size_Mat]; + D.f[dMM0] = &DDStart[dPP0 * size_Mat]; + D.f[dPP0] = &DDStart[dMM0 * size_Mat]; + D.f[dMP0] = &DDStart[dPM0 * size_Mat]; + D.f[dPM0] = &DDStart[dMP0 * size_Mat]; + D.f[dM0M] = &DDStart[dP0P * size_Mat]; + D.f[dP0P] = &DDStart[dM0M * size_Mat]; + D.f[dM0P] = &DDStart[dP0M * size_Mat]; + D.f[dP0M] = &DDStart[dM0P * size_Mat]; + D.f[d0MM] = &DDStart[d0PP * size_Mat]; + D.f[d0PP] = &DDStart[d0MM * size_Mat]; + D.f[d0MP] = &DDStart[d0PM * size_Mat]; + D.f[d0PM] = &DDStart[d0MP * size_Mat]; + D.f[d000] = &DDStart[d000 * size_Mat]; + D.f[dMMM] = &DDStart[dPPP * size_Mat]; + D.f[dPPM] = &DDStart[dMMP * size_Mat]; + D.f[dMPM] = &DDStart[dPMP * size_Mat]; + D.f[dPMM] = &DDStart[dMPP * size_Mat]; + D.f[dMMP] = &DDStart[dPPM * size_Mat]; + D.f[dPPP] = &DDStart[dMMM * size_Mat]; + D.f[dMPP] = &DDStart[dPMM * size_Mat]; + D.f[dPMP] = &DDStart[dMPM * size_Mat]; } //////////////////////////////////////////////////////////////////////////////// @@ -129,33 +129,33 @@ __global__ void K15CompressibleNavierStokesSponge_Device(real omegaIn, //unsigned int ktne = k; unsigned int kbsw = neighborZ[ksw]; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real mfcbb = (D.f[DIR_P00])[k]; - real mfabb = (D.f[DIR_M00])[kw]; - real mfbcb = (D.f[DIR_0P0])[k]; - real mfbab = (D.f[DIR_0M0])[ks]; - real mfbbc = (D.f[DIR_00P])[k]; - real mfbba = (D.f[DIR_00M])[kb]; - real mfccb = (D.f[DIR_PP0])[k]; - real mfaab = (D.f[DIR_MM0])[ksw]; - real mfcab = (D.f[DIR_PM0])[ks]; - real mfacb = (D.f[DIR_MP0])[kw]; - real mfcbc = (D.f[DIR_P0P])[k]; - real mfaba = (D.f[DIR_M0M])[kbw]; - real mfcba = (D.f[DIR_P0M])[kb]; - real mfabc = (D.f[DIR_M0P])[kw]; - real mfbcc = (D.f[DIR_0PP])[k]; - real mfbaa = (D.f[DIR_0MM])[kbs]; - real mfbca = (D.f[DIR_0PM])[kb]; - real mfbac = (D.f[DIR_0MP])[ks]; - real mfbbb = (D.f[DIR_000])[k]; - real mfccc = (D.f[DIR_PPP])[k]; - real mfaac = (D.f[DIR_MMP])[ksw]; - real mfcac = (D.f[DIR_PMP])[ks]; - real mfacc = (D.f[DIR_MPP])[kw]; - real mfcca = (D.f[DIR_PPM])[kb]; - real mfaaa = (D.f[DIR_MMM])[kbsw]; - real mfcaa = (D.f[DIR_PMM])[kbs]; - real mfaca = (D.f[DIR_MPM])[kbw]; + real mfcbb = (D.f[dP00])[k]; + real mfabb = (D.f[dM00])[kw]; + real mfbcb = (D.f[d0P0])[k]; + real mfbab = (D.f[d0M0])[ks]; + real mfbbc = (D.f[d00P])[k]; + real mfbba = (D.f[d00M])[kb]; + real mfccb = (D.f[dPP0])[k]; + real mfaab = (D.f[dMM0])[ksw]; + real mfcab = (D.f[dPM0])[ks]; + real mfacb = (D.f[dMP0])[kw]; + real mfcbc = (D.f[dP0P])[k]; + real mfaba = (D.f[dM0M])[kbw]; + real mfcba = (D.f[dP0M])[kb]; + real mfabc = (D.f[dM0P])[kw]; + real mfbcc = (D.f[d0PP])[k]; + real mfbaa = (D.f[d0MM])[kbs]; + real mfbca = (D.f[d0PM])[kb]; + real mfbac = (D.f[d0MP])[ks]; + real mfbbb = (D.f[d000])[k]; + real mfccc = (D.f[dPPP])[k]; + real mfaac = (D.f[dMMP])[ksw]; + real mfcac = (D.f[dPMP])[ks]; + real mfacc = (D.f[dMPP])[kw]; + real mfcca = (D.f[dPPM])[kb]; + real mfaaa = (D.f[dMMM])[kbsw]; + real mfcaa = (D.f[dPMM])[kbs]; + real mfaca = (D.f[dMPM])[kbw]; //////////////////////////////////////////////////////////////////////////////////// real drho = ((((mfccc + mfaaa) + (mfaca + mfcac)) + ((mfacc + mfcaa) + (mfaac + mfcca))) + (((mfbac + mfbca) + (mfbaa + mfbcc)) + ((mfabc + mfcba) + (mfaba + mfcbc)) + ((mfacb + mfcab) + (mfaab + mfccb))) + @@ -893,33 +893,33 @@ __global__ void K15CompressibleNavierStokesSponge_Device(real omegaIn, //////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////// - (D.f[DIR_P00])[k] = mfabb; - (D.f[DIR_M00])[kw] = mfcbb; - (D.f[DIR_0P0])[k] = mfbab; - (D.f[DIR_0M0])[ks] = mfbcb; - (D.f[DIR_00P])[k] = mfbba; - (D.f[DIR_00M])[kb] = mfbbc; - (D.f[DIR_PP0])[k] = mfaab; - (D.f[DIR_MM0])[ksw] = mfccb; - (D.f[DIR_PM0])[ks] = mfacb; - (D.f[DIR_MP0])[kw] = mfcab; - (D.f[DIR_P0P])[k] = mfaba; - (D.f[DIR_M0M])[kbw] = mfcbc; - (D.f[DIR_P0M])[kb] = mfabc; - (D.f[DIR_M0P])[kw] = mfcba; - (D.f[DIR_0PP])[k] = mfbaa; - (D.f[DIR_0MM])[kbs] = mfbcc; - (D.f[DIR_0PM])[kb] = mfbac; - (D.f[DIR_0MP])[ks] = mfbca; - (D.f[DIR_000])[k] = mfbbb; - (D.f[DIR_PPP])[k] = mfaaa; - (D.f[DIR_PMP])[ks] = mfaca; - (D.f[DIR_PPM])[kb] = mfaac; - (D.f[DIR_PMM])[kbs] = mfacc; - (D.f[DIR_MPP])[kw] = mfcaa; - (D.f[DIR_MMP])[ksw] = mfcca; - (D.f[DIR_MPM])[kbw] = mfcac; - (D.f[DIR_MMM])[kbsw] = mfccc; + (D.f[dP00])[k] = mfabb; + (D.f[dM00])[kw] = mfcbb; + (D.f[d0P0])[k] = mfbab; + (D.f[d0M0])[ks] = mfbcb; + (D.f[d00P])[k] = mfbba; + (D.f[d00M])[kb] = mfbbc; + (D.f[dPP0])[k] = mfaab; + (D.f[dMM0])[ksw] = mfccb; + (D.f[dPM0])[ks] = mfacb; + (D.f[dMP0])[kw] = mfcab; + (D.f[dP0P])[k] = mfaba; + (D.f[dM0M])[kbw] = mfcbc; + (D.f[dP0M])[kb] = mfabc; + (D.f[dM0P])[kw] = mfcba; + (D.f[d0PP])[k] = mfbaa; + (D.f[d0MM])[kbs] = mfbcc; + (D.f[d0PM])[kb] = mfbac; + (D.f[d0MP])[ks] = mfbca; + (D.f[d000])[k] = mfbbb; + (D.f[dPPP])[k] = mfaaa; + (D.f[dPMP])[ks] = mfaca; + (D.f[dPPM])[kb] = mfaac; + (D.f[dPMM])[kbs] = mfacc; + (D.f[dMPP])[kw] = mfcaa; + (D.f[dMMP])[ksw] = mfcca; + (D.f[dMPM])[kbw] = mfcac; + (D.f[dMMM])[kbsw] = mfccc; //////////////////////////////////////////////////////////////////////////////////// } } diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/K15/K15CompressibleNavierStokesSponge_Device.cuh b/src/gpu/core/Kernel/Compressible/NavierStokes/K15/K15CompressibleNavierStokesSponge_Device.cuh similarity index 100% rename from src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/K15/K15CompressibleNavierStokesSponge_Device.cuh rename to src/gpu/core/Kernel/Compressible/NavierStokes/K15/K15CompressibleNavierStokesSponge_Device.cuh diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/K15/K15CompressibleNavierStokes_Device.cu b/src/gpu/core/Kernel/Compressible/NavierStokes/K15/K15CompressibleNavierStokes_Device.cu similarity index 86% rename from src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/K15/K15CompressibleNavierStokes_Device.cu rename to src/gpu/core/Kernel/Compressible/NavierStokes/K15/K15CompressibleNavierStokes_Device.cu index e38c24d6557c0abc64681a71fc63c51b866fb25a..c3be0a4e23b009e0c8d5b523b0a34da0c8551294 100644 --- a/src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/K15/K15CompressibleNavierStokes_Device.cu +++ b/src/gpu/core/Kernel/Compressible/NavierStokes/K15/K15CompressibleNavierStokes_Device.cu @@ -39,63 +39,63 @@ __global__ void K15CompressibleNavierStokes_Device(real omega, Distributions27 D; if (EvenOrOdd == true) { - D.f[DIR_P00] = &DDStart[DIR_P00 * size_Mat]; - D.f[DIR_M00] = &DDStart[DIR_M00 * size_Mat]; - D.f[DIR_0P0] = &DDStart[DIR_0P0 * size_Mat]; - D.f[DIR_0M0] = &DDStart[DIR_0M0 * size_Mat]; - D.f[DIR_00P] = &DDStart[DIR_00P * size_Mat]; - D.f[DIR_00M] = &DDStart[DIR_00M * size_Mat]; - D.f[DIR_PP0] = &DDStart[DIR_PP0 * size_Mat]; - D.f[DIR_MM0] = &DDStart[DIR_MM0 * size_Mat]; - D.f[DIR_PM0] = &DDStart[DIR_PM0 * size_Mat]; - D.f[DIR_MP0] = &DDStart[DIR_MP0 * size_Mat]; - D.f[DIR_P0P] = &DDStart[DIR_P0P * size_Mat]; - D.f[DIR_M0M] = &DDStart[DIR_M0M * size_Mat]; - D.f[DIR_P0M] = &DDStart[DIR_P0M * size_Mat]; - D.f[DIR_M0P] = &DDStart[DIR_M0P * size_Mat]; - D.f[DIR_0PP] = &DDStart[DIR_0PP * size_Mat]; - D.f[DIR_0MM] = &DDStart[DIR_0MM * size_Mat]; - D.f[DIR_0PM] = &DDStart[DIR_0PM * size_Mat]; - D.f[DIR_0MP] = &DDStart[DIR_0MP * size_Mat]; - D.f[DIR_000] = &DDStart[DIR_000 * size_Mat]; - D.f[DIR_PPP] = &DDStart[DIR_PPP * size_Mat]; - D.f[DIR_MMP] = &DDStart[DIR_MMP * size_Mat]; - D.f[DIR_PMP] = &DDStart[DIR_PMP * size_Mat]; - D.f[DIR_MPP] = &DDStart[DIR_MPP * size_Mat]; - D.f[DIR_PPM] = &DDStart[DIR_PPM * size_Mat]; - D.f[DIR_MMM] = &DDStart[DIR_MMM * size_Mat]; - D.f[DIR_PMM] = &DDStart[DIR_PMM * size_Mat]; - D.f[DIR_MPM] = &DDStart[DIR_MPM * size_Mat]; + D.f[dP00] = &DDStart[dP00 * size_Mat]; + D.f[dM00] = &DDStart[dM00 * size_Mat]; + D.f[d0P0] = &DDStart[d0P0 * size_Mat]; + D.f[d0M0] = &DDStart[d0M0 * size_Mat]; + D.f[d00P] = &DDStart[d00P * size_Mat]; + D.f[d00M] = &DDStart[d00M * size_Mat]; + D.f[dPP0] = &DDStart[dPP0 * size_Mat]; + D.f[dMM0] = &DDStart[dMM0 * size_Mat]; + D.f[dPM0] = &DDStart[dPM0 * size_Mat]; + D.f[dMP0] = &DDStart[dMP0 * size_Mat]; + D.f[dP0P] = &DDStart[dP0P * size_Mat]; + D.f[dM0M] = &DDStart[dM0M * size_Mat]; + D.f[dP0M] = &DDStart[dP0M * size_Mat]; + D.f[dM0P] = &DDStart[dM0P * size_Mat]; + D.f[d0PP] = &DDStart[d0PP * size_Mat]; + D.f[d0MM] = &DDStart[d0MM * size_Mat]; + D.f[d0PM] = &DDStart[d0PM * size_Mat]; + D.f[d0MP] = &DDStart[d0MP * size_Mat]; + D.f[d000] = &DDStart[d000 * size_Mat]; + D.f[dPPP] = &DDStart[dPPP * size_Mat]; + D.f[dMMP] = &DDStart[dMMP * size_Mat]; + D.f[dPMP] = &DDStart[dPMP * size_Mat]; + D.f[dMPP] = &DDStart[dMPP * size_Mat]; + D.f[dPPM] = &DDStart[dPPM * size_Mat]; + D.f[dMMM] = &DDStart[dMMM * size_Mat]; + D.f[dPMM] = &DDStart[dPMM * size_Mat]; + D.f[dMPM] = &DDStart[dMPM * size_Mat]; } else { - D.f[DIR_M00] = &DDStart[DIR_P00 * size_Mat]; - D.f[DIR_P00] = &DDStart[DIR_M00 * size_Mat]; - D.f[DIR_0M0] = &DDStart[DIR_0P0 * size_Mat]; - D.f[DIR_0P0] = &DDStart[DIR_0M0 * size_Mat]; - D.f[DIR_00M] = &DDStart[DIR_00P * size_Mat]; - D.f[DIR_00P] = &DDStart[DIR_00M * size_Mat]; - D.f[DIR_MM0] = &DDStart[DIR_PP0 * size_Mat]; - D.f[DIR_PP0] = &DDStart[DIR_MM0 * size_Mat]; - D.f[DIR_MP0] = &DDStart[DIR_PM0 * size_Mat]; - D.f[DIR_PM0] = &DDStart[DIR_MP0 * size_Mat]; - D.f[DIR_M0M] = &DDStart[DIR_P0P * size_Mat]; - D.f[DIR_P0P] = &DDStart[DIR_M0M * size_Mat]; - D.f[DIR_M0P] = &DDStart[DIR_P0M * size_Mat]; - D.f[DIR_P0M] = &DDStart[DIR_M0P * size_Mat]; - D.f[DIR_0MM] = &DDStart[DIR_0PP * size_Mat]; - D.f[DIR_0PP] = &DDStart[DIR_0MM * size_Mat]; - D.f[DIR_0MP] = &DDStart[DIR_0PM * size_Mat]; - D.f[DIR_0PM] = &DDStart[DIR_0MP * size_Mat]; - D.f[DIR_000] = &DDStart[DIR_000 * size_Mat]; - D.f[DIR_MMM] = &DDStart[DIR_PPP * size_Mat]; - D.f[DIR_PPM] = &DDStart[DIR_MMP * size_Mat]; - D.f[DIR_MPM] = &DDStart[DIR_PMP * size_Mat]; - D.f[DIR_PMM] = &DDStart[DIR_MPP * size_Mat]; - D.f[DIR_MMP] = &DDStart[DIR_PPM * size_Mat]; - D.f[DIR_PPP] = &DDStart[DIR_MMM * size_Mat]; - D.f[DIR_MPP] = &DDStart[DIR_PMM * size_Mat]; - D.f[DIR_PMP] = &DDStart[DIR_MPM * size_Mat]; + D.f[dM00] = &DDStart[dP00 * size_Mat]; + D.f[dP00] = &DDStart[dM00 * size_Mat]; + D.f[d0M0] = &DDStart[d0P0 * size_Mat]; + D.f[d0P0] = &DDStart[d0M0 * size_Mat]; + D.f[d00M] = &DDStart[d00P * size_Mat]; + D.f[d00P] = &DDStart[d00M * size_Mat]; + D.f[dMM0] = &DDStart[dPP0 * size_Mat]; + D.f[dPP0] = &DDStart[dMM0 * size_Mat]; + D.f[dMP0] = &DDStart[dPM0 * size_Mat]; + D.f[dPM0] = &DDStart[dMP0 * size_Mat]; + D.f[dM0M] = &DDStart[dP0P * size_Mat]; + D.f[dP0P] = &DDStart[dM0M * size_Mat]; + D.f[dM0P] = &DDStart[dP0M * size_Mat]; + D.f[dP0M] = &DDStart[dM0P * size_Mat]; + D.f[d0MM] = &DDStart[d0PP * size_Mat]; + D.f[d0PP] = &DDStart[d0MM * size_Mat]; + D.f[d0MP] = &DDStart[d0PM * size_Mat]; + D.f[d0PM] = &DDStart[d0MP * size_Mat]; + D.f[d000] = &DDStart[d000 * size_Mat]; + D.f[dMMM] = &DDStart[dPPP * size_Mat]; + D.f[dPPM] = &DDStart[dMMP * size_Mat]; + D.f[dMPM] = &DDStart[dPMP * size_Mat]; + D.f[dPMM] = &DDStart[dMPP * size_Mat]; + D.f[dMMP] = &DDStart[dPPM * size_Mat]; + D.f[dPPP] = &DDStart[dMMM * size_Mat]; + D.f[dMPP] = &DDStart[dPMM * size_Mat]; + D.f[dPMP] = &DDStart[dMPM * size_Mat]; } //////////////////////////////////////////////////////////////////////////////// @@ -156,33 +156,33 @@ __global__ void K15CompressibleNavierStokes_Device(real omega, //unsigned int ktne = k; //unsigned int kbsw = neighborZ[ksw]; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real mfcbb = (D.f[DIR_P00])[k];//[ke ];// + c2over27 ;(D.f[DIR_P00])[k ];//ke - real mfabb = (D.f[DIR_M00])[kw];//[kw ];// + c2over27 ;(D.f[DIR_M00])[kw ]; - real mfbcb = (D.f[DIR_0P0])[k];//[kn ];// + c2over27 ;(D.f[DIR_0P0])[k ];//kn - real mfbab = (D.f[DIR_0M0])[ks];//[ks ];// + c2over27 ;(D.f[DIR_0M0])[ks ]; - real mfbbc = (D.f[DIR_00P])[k];//[kt ];// + c2over27 ;(D.f[DIR_00P])[k ];//kt - real mfbba = (D.f[DIR_00M])[kb];//[kb ];// + c2over27 ;(D.f[DIR_00M])[kb ]; - real mfccb = (D.f[DIR_PP0])[k];//[kne ];// + c1over54 ;(D.f[DIR_PP0])[k ];//kne - real mfaab = (D.f[DIR_MM0])[ksw];//[ksw ];// + c1over54 ;(D.f[DIR_MM0])[ksw]; - real mfcab = (D.f[DIR_PM0])[ks];//[kse ];// + c1over54 ;(D.f[DIR_PM0])[ks ];//kse - real mfacb = (D.f[DIR_MP0])[kw];//[knw ];// + c1over54 ;(D.f[DIR_MP0])[kw ];//knw - real mfcbc = (D.f[DIR_P0P])[k];//[kte ];// + c1over54 ;(D.f[DIR_P0P])[k ];//kte - real mfaba = (D.f[DIR_M0M])[kbw];//[kbw ];// + c1over54 ;(D.f[DIR_M0M])[kbw]; - real mfcba = (D.f[DIR_P0M])[kb];//[kbe ];// + c1over54 ;(D.f[DIR_P0M])[kb ];//kbe - real mfabc = (D.f[DIR_M0P])[kw];//[ktw ];// + c1over54 ;(D.f[DIR_M0P])[kw ];//ktw - real mfbcc = (D.f[DIR_0PP])[k];//[ktn ];// + c1over54 ;(D.f[DIR_0PP])[k ];//ktn - real mfbaa = (D.f[DIR_0MM])[kbs];//[kbs ];// + c1over54 ;(D.f[DIR_0MM])[kbs]; - real mfbca = (D.f[DIR_0PM])[kb];//[kbn ];// + c1over54 ;(D.f[DIR_0PM])[kb ];//kbn - real mfbac = (D.f[DIR_0MP])[ks];//[kts ];// + c1over54 ;(D.f[DIR_0MP])[ks ];//kts - real mfbbb = (D.f[DIR_000])[k];//[kzero];// + c8over27 ;(D.f[DIR_000])[k ];//kzero - real mfccc = (D.f[DIR_PPP])[k];//[ktne ];// + c1over216;(D.f[DIR_PPP])[k ];//ktne - real mfaac = (D.f[DIR_MMP])[ksw];//[ktsw ];// + c1over216;(D.f[DIR_MMP])[ksw];//ktsw - real mfcac = (D.f[DIR_PMP])[ks];//[ktse ];// + c1over216;(D.f[DIR_PMP])[ks ];//ktse - real mfacc = (D.f[DIR_MPP])[kw];//[ktnw ];// + c1over216;(D.f[DIR_MPP])[kw ];//ktnw - real mfcca = (D.f[DIR_PPM])[kb];//[kbne ];// + c1over216;(D.f[DIR_PPM])[kb ];//kbne - real mfaaa = (D.f[DIR_MMM])[kbsw];//[kbsw ];// + c1over216;(D.f[DIR_MMM])[kbsw]; - real mfcaa = (D.f[DIR_PMM])[kbs];//[kbse ];// + c1over216;(D.f[DIR_PMM])[kbs];//kbse - real mfaca = (D.f[DIR_MPM])[kbw];//[kbnw ];// + c1over216;(D.f[DIR_MPM])[kbw];//kbnw + real mfcbb = (D.f[dP00])[k];//[ke ];// + c2over27 ;(D.f[dP00])[k ];//ke + real mfabb = (D.f[dM00])[kw];//[kw ];// + c2over27 ;(D.f[dM00])[kw ]; + real mfbcb = (D.f[d0P0])[k];//[kn ];// + c2over27 ;(D.f[d0P0])[k ];//kn + real mfbab = (D.f[d0M0])[ks];//[ks ];// + c2over27 ;(D.f[d0M0])[ks ]; + real mfbbc = (D.f[d00P])[k];//[kt ];// + c2over27 ;(D.f[d00P])[k ];//kt + real mfbba = (D.f[d00M])[kb];//[kb ];// + c2over27 ;(D.f[d00M])[kb ]; + real mfccb = (D.f[dPP0])[k];//[kne ];// + c1over54 ;(D.f[dPP0])[k ];//kne + real mfaab = (D.f[dMM0])[ksw];//[ksw ];// + c1over54 ;(D.f[dMM0])[ksw]; + real mfcab = (D.f[dPM0])[ks];//[kse ];// + c1over54 ;(D.f[dPM0])[ks ];//kse + real mfacb = (D.f[dMP0])[kw];//[knw ];// + c1over54 ;(D.f[dMP0])[kw ];//knw + real mfcbc = (D.f[dP0P])[k];//[kte ];// + c1over54 ;(D.f[dP0P])[k ];//kte + real mfaba = (D.f[dM0M])[kbw];//[kbw ];// + c1over54 ;(D.f[dM0M])[kbw]; + real mfcba = (D.f[dP0M])[kb];//[kbe ];// + c1over54 ;(D.f[dP0M])[kb ];//kbe + real mfabc = (D.f[dM0P])[kw];//[ktw ];// + c1over54 ;(D.f[dM0P])[kw ];//ktw + real mfbcc = (D.f[d0PP])[k];//[ktn ];// + c1over54 ;(D.f[d0PP])[k ];//ktn + real mfbaa = (D.f[d0MM])[kbs];//[kbs ];// + c1over54 ;(D.f[d0MM])[kbs]; + real mfbca = (D.f[d0PM])[kb];//[kbn ];// + c1over54 ;(D.f[d0PM])[kb ];//kbn + real mfbac = (D.f[d0MP])[ks];//[kts ];// + c1over54 ;(D.f[d0MP])[ks ];//kts + real mfbbb = (D.f[d000])[k];//[kzero];// + c8over27 ;(D.f[d000])[k ];//kzero + real mfccc = (D.f[dPPP])[k];//[ktne ];// + c1over216;(D.f[dPPP])[k ];//ktne + real mfaac = (D.f[dMMP])[ksw];//[ktsw ];// + c1over216;(D.f[dMMP])[ksw];//ktsw + real mfcac = (D.f[dPMP])[ks];//[ktse ];// + c1over216;(D.f[dPMP])[ks ];//ktse + real mfacc = (D.f[dMPP])[kw];//[ktnw ];// + c1over216;(D.f[dMPP])[kw ];//ktnw + real mfcca = (D.f[dPPM])[kb];//[kbne ];// + c1over216;(D.f[dPPM])[kb ];//kbne + real mfaaa = (D.f[dMMM])[kbsw];//[kbsw ];// + c1over216;(D.f[dMMM])[kbsw]; + real mfcaa = (D.f[dPMM])[kbs];//[kbse ];// + c1over216;(D.f[dPMM])[kbs];//kbse + real mfaca = (D.f[dMPM])[kbw];//[kbnw ];// + c1over216;(D.f[dMPM])[kbw];//kbnw //////////////////////////////////////////////////////////////////////////////////// real drho = ((((mfccc + mfaaa) + (mfaca + mfcac)) + ((mfacc + mfcaa) + (mfaac + mfcca))) + (((mfbac + mfbca) + (mfbaa + mfbcc)) + ((mfabc + mfcba) + (mfaba + mfcbc)) + ((mfacb + mfcab) + (mfaab + mfccb))) + @@ -1242,33 +1242,33 @@ __global__ void K15CompressibleNavierStokes_Device(real omega, ((mfabb + mfcbb) + (mfbab + mfbcb) + (mfbba + mfbbc))) + mfbbb; mfbbb += drho - drhoPost; //////////////////////////////////////////////////////////////////////////////////// - (D.f[DIR_P00])[k] = mfabb;//(D.f[ DIR_P00 ])[ke ] = mfabb;// - c2over27 ; (D.f[ DIR_P00 ])[k ] - (D.f[DIR_M00])[kw] = mfcbb;//(D.f[ DIR_M00 ])[kw ] = mfcbb;// - c2over27 ; (D.f[ DIR_M00 ])[kw ] - (D.f[DIR_0P0])[k] = mfbab;//(D.f[ DIR_0P0 ])[kn ] = mfbab;// - c2over27 ; (D.f[ DIR_0P0 ])[k ] - (D.f[DIR_0M0])[ks] = mfbcb;//(D.f[ DIR_0M0 ])[ks ] = mfbcb;// - c2over27 ; (D.f[ DIR_0M0 ])[ks ] - (D.f[DIR_00P])[k] = mfbba;//(D.f[ DIR_00P ])[kt ] = mfbba;// - c2over27 ; (D.f[ DIR_00P ])[k ] - (D.f[DIR_00M])[kb] = mfbbc;//(D.f[ DIR_00M ])[kb ] = mfbbc;// - c2over27 ; (D.f[ DIR_00M ])[kb ] - (D.f[DIR_PP0])[k] = mfaab;//(D.f[ DIR_PP0 ])[kne ] = mfaab;// - c1over54 ; (D.f[ DIR_PP0 ])[k ] - (D.f[DIR_MM0])[ksw] = mfccb;//(D.f[ DIR_MM0 ])[ksw ] = mfccb;// - c1over54 ; (D.f[ DIR_MM0 ])[ksw ] - (D.f[DIR_PM0])[ks] = mfacb;//(D.f[ DIR_PM0 ])[kse ] = mfacb;// - c1over54 ; (D.f[ DIR_PM0 ])[ks ] - (D.f[DIR_MP0])[kw] = mfcab;//(D.f[ DIR_MP0 ])[knw ] = mfcab;// - c1over54 ; (D.f[ DIR_MP0 ])[kw ] - (D.f[DIR_P0P])[k] = mfaba;//(D.f[ DIR_P0P ])[kte ] = mfaba;// - c1over54 ; (D.f[ DIR_P0P ])[k ] - (D.f[DIR_M0M])[kbw] = mfcbc;//(D.f[ DIR_M0M ])[kbw ] = mfcbc;// - c1over54 ; (D.f[ DIR_M0M ])[kbw ] - (D.f[DIR_P0M])[kb] = mfabc;//(D.f[ DIR_P0M ])[kbe ] = mfabc;// - c1over54 ; (D.f[ DIR_P0M ])[kb ] - (D.f[DIR_M0P])[kw] = mfcba;//(D.f[ DIR_M0P ])[ktw ] = mfcba;// - c1over54 ; (D.f[ DIR_M0P ])[kw ] - (D.f[DIR_0PP])[k] = mfbaa;//(D.f[ DIR_0PP ])[ktn ] = mfbaa;// - c1over54 ; (D.f[ DIR_0PP ])[k ] - (D.f[DIR_0MM])[kbs] = mfbcc;//(D.f[ DIR_0MM ])[kbs ] = mfbcc;// - c1over54 ; (D.f[ DIR_0MM ])[kbs ] - (D.f[DIR_0PM])[kb] = mfbac;//(D.f[ DIR_0PM ])[kbn ] = mfbac;// - c1over54 ; (D.f[ DIR_0PM ])[kb ] - (D.f[DIR_0MP])[ks] = mfbca;//(D.f[ DIR_0MP ])[kts ] = mfbca;// - c1over54 ; (D.f[ DIR_0MP ])[ks ] - (D.f[DIR_000])[k] = mfbbb;//(D.f[ DIR_000])[kzero] = mfbbb;// - c8over27 ; (D.f[ DIR_000])[k ] - (D.f[DIR_PPP])[k] = mfaaa;//(D.f[ DIR_PPP ])[ktne ] = mfaaa;// - c1over216; (D.f[ DIR_PPP ])[k ] - (D.f[DIR_PMP])[ks] = mfaca;//(D.f[ DIR_PMP ])[ktse ] = mfaca;// - c1over216; (D.f[ DIR_PMP ])[ks ] - (D.f[DIR_PPM])[kb] = mfaac;//(D.f[ DIR_PPM ])[kbne ] = mfaac;// - c1over216; (D.f[ DIR_PPM ])[kb ] - (D.f[DIR_PMM])[kbs] = mfacc;//(D.f[ DIR_PMM ])[kbse ] = mfacc;// - c1over216; (D.f[ DIR_PMM ])[kbs ] - (D.f[DIR_MPP])[kw] = mfcaa;//(D.f[ DIR_MPP ])[ktnw ] = mfcaa;// - c1over216; (D.f[ DIR_MPP ])[kw ] - (D.f[DIR_MMP])[ksw] = mfcca;//(D.f[ DIR_MMP ])[ktsw ] = mfcca;// - c1over216; (D.f[ DIR_MMP ])[ksw ] - (D.f[DIR_MPM])[kbw] = mfcac;//(D.f[ DIR_MPM ])[kbnw ] = mfcac;// - c1over216; (D.f[ DIR_MPM ])[kbw ] - (D.f[DIR_MMM])[kbsw] = mfccc;//(D.f[ DIR_MMM ])[kbsw ] = mfccc;// - c1over216; (D.f[ DIR_MMM ])[kbsw] + (D.f[dP00])[k] = mfabb;//(D.f[ dP00 ])[ke ] = mfabb;// - c2over27 ; (D.f[ dP00 ])[k ] + (D.f[dM00])[kw] = mfcbb;//(D.f[ dM00 ])[kw ] = mfcbb;// - c2over27 ; (D.f[ dM00 ])[kw ] + (D.f[d0P0])[k] = mfbab;//(D.f[ d0P0 ])[kn ] = mfbab;// - c2over27 ; (D.f[ d0P0 ])[k ] + (D.f[d0M0])[ks] = mfbcb;//(D.f[ d0M0 ])[ks ] = mfbcb;// - c2over27 ; (D.f[ d0M0 ])[ks ] + (D.f[d00P])[k] = mfbba;//(D.f[ d00P ])[kt ] = mfbba;// - c2over27 ; (D.f[ d00P ])[k ] + (D.f[d00M])[kb] = mfbbc;//(D.f[ d00M ])[kb ] = mfbbc;// - c2over27 ; (D.f[ d00M ])[kb ] + (D.f[dPP0])[k] = mfaab;//(D.f[ dPP0 ])[kne ] = mfaab;// - c1over54 ; (D.f[ dPP0 ])[k ] + (D.f[dMM0])[ksw] = mfccb;//(D.f[ dMM0 ])[ksw ] = mfccb;// - c1over54 ; (D.f[ dMM0 ])[ksw ] + (D.f[dPM0])[ks] = mfacb;//(D.f[ dPM0 ])[kse ] = mfacb;// - c1over54 ; (D.f[ dPM0 ])[ks ] + (D.f[dMP0])[kw] = mfcab;//(D.f[ dMP0 ])[knw ] = mfcab;// - c1over54 ; (D.f[ dMP0 ])[kw ] + (D.f[dP0P])[k] = mfaba;//(D.f[ dP0P ])[kte ] = mfaba;// - c1over54 ; (D.f[ dP0P ])[k ] + (D.f[dM0M])[kbw] = mfcbc;//(D.f[ dM0M ])[kbw ] = mfcbc;// - c1over54 ; (D.f[ dM0M ])[kbw ] + (D.f[dP0M])[kb] = mfabc;//(D.f[ dP0M ])[kbe ] = mfabc;// - c1over54 ; (D.f[ dP0M ])[kb ] + (D.f[dM0P])[kw] = mfcba;//(D.f[ dM0P ])[ktw ] = mfcba;// - c1over54 ; (D.f[ dM0P ])[kw ] + (D.f[d0PP])[k] = mfbaa;//(D.f[ d0PP ])[ktn ] = mfbaa;// - c1over54 ; (D.f[ d0PP ])[k ] + (D.f[d0MM])[kbs] = mfbcc;//(D.f[ d0MM ])[kbs ] = mfbcc;// - c1over54 ; (D.f[ d0MM ])[kbs ] + (D.f[d0PM])[kb] = mfbac;//(D.f[ d0PM ])[kbn ] = mfbac;// - c1over54 ; (D.f[ d0PM ])[kb ] + (D.f[d0MP])[ks] = mfbca;//(D.f[ d0MP ])[kts ] = mfbca;// - c1over54 ; (D.f[ d0MP ])[ks ] + (D.f[d000])[k] = mfbbb;//(D.f[ d000])[kzero] = mfbbb;// - c8over27 ; (D.f[ d000])[k ] + (D.f[dPPP])[k] = mfaaa;//(D.f[ dPPP ])[ktne ] = mfaaa;// - c1over216; (D.f[ dPPP ])[k ] + (D.f[dPMP])[ks] = mfaca;//(D.f[ dPMP ])[ktse ] = mfaca;// - c1over216; (D.f[ dPMP ])[ks ] + (D.f[dPPM])[kb] = mfaac;//(D.f[ dPPM ])[kbne ] = mfaac;// - c1over216; (D.f[ dPPM ])[kb ] + (D.f[dPMM])[kbs] = mfacc;//(D.f[ dPMM ])[kbse ] = mfacc;// - c1over216; (D.f[ dPMM ])[kbs ] + (D.f[dMPP])[kw] = mfcaa;//(D.f[ dMPP ])[ktnw ] = mfcaa;// - c1over216; (D.f[ dMPP ])[kw ] + (D.f[dMMP])[ksw] = mfcca;//(D.f[ dMMP ])[ktsw ] = mfcca;// - c1over216; (D.f[ dMMP ])[ksw ] + (D.f[dMPM])[kbw] = mfcac;//(D.f[ dMPM ])[kbnw ] = mfcac;// - c1over216; (D.f[ dMPM ])[kbw ] + (D.f[dMMM])[kbsw] = mfccc;//(D.f[ dMMM ])[kbsw ] = mfccc;// - c1over216; (D.f[ dMMM ])[kbsw] //////////////////////////////////////////////////////////////////////////////////// } } diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/K15/K15CompressibleNavierStokes_Device.cuh b/src/gpu/core/Kernel/Compressible/NavierStokes/K15/K15CompressibleNavierStokes_Device.cuh similarity index 100% rename from src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/K15/K15CompressibleNavierStokes_Device.cuh rename to src/gpu/core/Kernel/Compressible/NavierStokes/K15/K15CompressibleNavierStokes_Device.cuh diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/PorousMediaKernels/FluidFlow/Compressible/CumulantOne/PMCumulantOneCompSP27.cu b/src/gpu/core/Kernel/Compressible/NavierStokes/K15PorousMedia/K15CompressibleNavierStokesPorousMedia.cu similarity index 53% rename from src/gpu/VirtualFluids_GPU/Kernel/Kernels/PorousMediaKernels/FluidFlow/Compressible/CumulantOne/PMCumulantOneCompSP27.cu rename to src/gpu/core/Kernel/Compressible/NavierStokes/K15PorousMedia/K15CompressibleNavierStokesPorousMedia.cu index a8c1af64ebd4641a755bf9fed7e9fafa18e9cad7..70ae05f6f093fb933f03dc59190051a397c8975b 100644 --- a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/PorousMediaKernels/FluidFlow/Compressible/CumulantOne/PMCumulantOneCompSP27.cu +++ b/src/gpu/core/Kernel/Compressible/NavierStokes/K15PorousMedia/K15CompressibleNavierStokesPorousMedia.cu @@ -1,15 +1,15 @@ -#include "PMCumulantOneCompSP27.h" +#include "K15CompressibleNavierStokesPorousMedia.h" -#include "PMCumulantOneCompSP27_Device.cuh" +#include "K15CompressibleNavierStokesPorousMedia_Device.cuh" #include "Parameter/Parameter.h" #include "Calculation/PorousMedia.h" -std::shared_ptr<PMCumulantOneCompSP27> PMCumulantOneCompSP27::getNewInstance(std::shared_ptr<Parameter> para, std::vector<std::shared_ptr<PorousMedia>> pm, int level) +std::shared_ptr<K15CompressibleNavierStokesPorousMedia> K15CompressibleNavierStokesPorousMedia::getNewInstance(std::shared_ptr<Parameter> para, std::vector<std::shared_ptr<PorousMedia>> pm, int level) { - return std::shared_ptr<PMCumulantOneCompSP27>(new PMCumulantOneCompSP27(para, pm, level)); + return std::shared_ptr<K15CompressibleNavierStokesPorousMedia>(new K15CompressibleNavierStokesPorousMedia(para, pm, level)); } -void PMCumulantOneCompSP27::run() +void K15CompressibleNavierStokesPorousMedia::run() { int size_Mat = (int)para->getParD(level)->numberOfNodes; int numberOfThreads = para->getParD(level)->numberofthreads; @@ -30,7 +30,7 @@ void PMCumulantOneCompSP27::run() dim3 threads(numberOfThreads, 1, 1); for (int i = 0; i < pm.size(); i++) { - LB_Kernel_PM_Cum_One_Comp_SP_27 <<< grid, threads >>>( + K15CompressibleNavierStokesPorousMedia_Device <<< grid, threads >>>( para->getParD(level)->omega, para->getParD(level)->neighborX, para->getParD(level)->neighborY, @@ -45,11 +45,11 @@ void PMCumulantOneCompSP27::run() pm[i]->getSizePM(), pm[i]->getHostNodeIDsPM(), para->getParD(level)->isEvenTimestep); - getLastCudaError("LB_Kernel_PM_Cum_One_Comp_SP_27 execution failed"); + getLastCudaError("K15CompressibleNavierStokesPorousMedia_Device execution failed"); } } -PMCumulantOneCompSP27::PMCumulantOneCompSP27(std::shared_ptr<Parameter> para, std::vector<std::shared_ptr<PorousMedia>> pm, int level) +K15CompressibleNavierStokesPorousMedia::K15CompressibleNavierStokesPorousMedia(std::shared_ptr<Parameter> para, std::vector<std::shared_ptr<PorousMedia>> pm, int level) { this->para = para; this->pm = pm; @@ -60,6 +60,6 @@ PMCumulantOneCompSP27::PMCumulantOneCompSP27(std::shared_ptr<Parameter> para, st } -PMCumulantOneCompSP27::PMCumulantOneCompSP27() +K15CompressibleNavierStokesPorousMedia::K15CompressibleNavierStokesPorousMedia() { } diff --git a/src/gpu/core/Kernel/Compressible/NavierStokes/K15PorousMedia/K15CompressibleNavierStokesPorousMedia.h b/src/gpu/core/Kernel/Compressible/NavierStokes/K15PorousMedia/K15CompressibleNavierStokesPorousMedia.h new file mode 100644 index 0000000000000000000000000000000000000000..4bda2ecdde646b14ba82d6e1e0c2df630986226f --- /dev/null +++ b/src/gpu/core/Kernel/Compressible/NavierStokes/K15PorousMedia/K15CompressibleNavierStokesPorousMedia.h @@ -0,0 +1,21 @@ +#ifndef K15CompressibleNavierStokesPorousMedia_H +#define K15CompressibleNavierStokesPorousMedia_H + +#include "Kernel/KernelImp.h" + +class PorousMedia; + +class K15CompressibleNavierStokesPorousMedia : public KernelImp +{ +public: + static std::shared_ptr<K15CompressibleNavierStokesPorousMedia> getNewInstance(std::shared_ptr< Parameter> para, std::vector<std::shared_ptr<PorousMedia>> pm, int level); + void run(); + +private: + K15CompressibleNavierStokesPorousMedia(); + K15CompressibleNavierStokesPorousMedia(std::shared_ptr< Parameter> para, std::vector<std::shared_ptr<PorousMedia>> pm, int level); + + std::vector<std::shared_ptr<PorousMedia>> pm; +}; + +#endif \ No newline at end of file diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/PorousMediaKernels/FluidFlow/Compressible/CumulantOne/PMCumulantOneCompSP27_Device.cu b/src/gpu/core/Kernel/Compressible/NavierStokes/K15PorousMedia/K15CompressibleNavierStokesPorousMedia_Device.cu similarity index 88% rename from src/gpu/VirtualFluids_GPU/Kernel/Kernels/PorousMediaKernels/FluidFlow/Compressible/CumulantOne/PMCumulantOneCompSP27_Device.cu rename to src/gpu/core/Kernel/Compressible/NavierStokes/K15PorousMedia/K15CompressibleNavierStokesPorousMedia_Device.cu index 1ed7cf3af37251550d38affe512f841a3779b918..479415d9c150cf508ed7f4747290692a89755766 100644 --- a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/PorousMediaKernels/FluidFlow/Compressible/CumulantOne/PMCumulantOneCompSP27_Device.cu +++ b/src/gpu/core/Kernel/Compressible/NavierStokes/K15PorousMedia/K15CompressibleNavierStokesPorousMedia_Device.cu @@ -6,7 +6,7 @@ using namespace vf::basics::constant; using namespace vf::lbm::dir; #include "math.h" -__global__ void LB_Kernel_PM_Cum_One_Comp_SP_27(real omega, +__global__ void K15CompressibleNavierStokesPorousMedia_Device(real omega, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, @@ -24,63 +24,63 @@ __global__ void LB_Kernel_PM_Cum_One_Comp_SP_27(real omega, Distributions27 D; if (EvenOrOdd == true) { - D.f[DIR_P00] = &DDStart[DIR_P00 * numberOfLBnodes]; - D.f[DIR_M00] = &DDStart[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0P0] = &DDStart[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0M0] = &DDStart[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00P] = &DDStart[DIR_00P * numberOfLBnodes]; - D.f[DIR_00M] = &DDStart[DIR_00M * numberOfLBnodes]; - D.f[DIR_PP0] = &DDStart[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_MM0] = &DDStart[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DDStart[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DDStart[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_P0P] = &DDStart[DIR_P0P * numberOfLBnodes]; - D.f[DIR_M0M] = &DDStart[DIR_M0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DDStart[DIR_P0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DDStart[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0PP] = &DDStart[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0MM] = &DDStart[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0PM] = &DDStart[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0MP] = &DDStart[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DDStart[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DDStart[DIR_PPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DDStart[DIR_MMP * numberOfLBnodes]; - D.f[DIR_PMP] = &DDStart[DIR_PMP * numberOfLBnodes]; - D.f[DIR_MPP] = &DDStart[DIR_MPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DDStart[DIR_PPM * numberOfLBnodes]; - D.f[DIR_MMM] = &DDStart[DIR_MMM * numberOfLBnodes]; - D.f[DIR_PMM] = &DDStart[DIR_PMM * numberOfLBnodes]; - D.f[DIR_MPM] = &DDStart[DIR_MPM * numberOfLBnodes]; + D.f[dP00] = &DDStart[dP00 * numberOfLBnodes]; + D.f[dM00] = &DDStart[dM00 * numberOfLBnodes]; + D.f[d0P0] = &DDStart[d0P0 * numberOfLBnodes]; + D.f[d0M0] = &DDStart[d0M0 * numberOfLBnodes]; + D.f[d00P] = &DDStart[d00P * numberOfLBnodes]; + D.f[d00M] = &DDStart[d00M * numberOfLBnodes]; + D.f[dPP0] = &DDStart[dPP0 * numberOfLBnodes]; + D.f[dMM0] = &DDStart[dMM0 * numberOfLBnodes]; + D.f[dPM0] = &DDStart[dPM0 * numberOfLBnodes]; + D.f[dMP0] = &DDStart[dMP0 * numberOfLBnodes]; + D.f[dP0P] = &DDStart[dP0P * numberOfLBnodes]; + D.f[dM0M] = &DDStart[dM0M * numberOfLBnodes]; + D.f[dP0M] = &DDStart[dP0M * numberOfLBnodes]; + D.f[dM0P] = &DDStart[dM0P * numberOfLBnodes]; + D.f[d0PP] = &DDStart[d0PP * numberOfLBnodes]; + D.f[d0MM] = &DDStart[d0MM * numberOfLBnodes]; + D.f[d0PM] = &DDStart[d0PM * numberOfLBnodes]; + D.f[d0MP] = &DDStart[d0MP * numberOfLBnodes]; + D.f[d000] = &DDStart[d000 * numberOfLBnodes]; + D.f[dPPP] = &DDStart[dPPP * numberOfLBnodes]; + D.f[dMMP] = &DDStart[dMMP * numberOfLBnodes]; + D.f[dPMP] = &DDStart[dPMP * numberOfLBnodes]; + D.f[dMPP] = &DDStart[dMPP * numberOfLBnodes]; + D.f[dPPM] = &DDStart[dPPM * numberOfLBnodes]; + D.f[dMMM] = &DDStart[dMMM * numberOfLBnodes]; + D.f[dPMM] = &DDStart[dPMM * numberOfLBnodes]; + D.f[dMPM] = &DDStart[dMPM * numberOfLBnodes]; } else { - D.f[DIR_M00] = &DDStart[DIR_P00 * numberOfLBnodes]; - D.f[DIR_P00] = &DDStart[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0M0] = &DDStart[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0P0] = &DDStart[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00M] = &DDStart[DIR_00P * numberOfLBnodes]; - D.f[DIR_00P] = &DDStart[DIR_00M * numberOfLBnodes]; - D.f[DIR_MM0] = &DDStart[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_PP0] = &DDStart[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DDStart[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DDStart[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_M0M] = &DDStart[DIR_P0P * numberOfLBnodes]; - D.f[DIR_P0P] = &DDStart[DIR_M0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DDStart[DIR_P0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DDStart[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0MM] = &DDStart[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0PP] = &DDStart[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0MP] = &DDStart[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0PM] = &DDStart[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DDStart[DIR_000 * numberOfLBnodes]; - D.f[DIR_MMM] = &DDStart[DIR_PPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DDStart[DIR_MMP * numberOfLBnodes]; - D.f[DIR_MPM] = &DDStart[DIR_PMP * numberOfLBnodes]; - D.f[DIR_PMM] = &DDStart[DIR_MPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DDStart[DIR_PPM * numberOfLBnodes]; - D.f[DIR_PPP] = &DDStart[DIR_MMM * numberOfLBnodes]; - D.f[DIR_MPP] = &DDStart[DIR_PMM * numberOfLBnodes]; - D.f[DIR_PMP] = &DDStart[DIR_MPM * numberOfLBnodes]; + D.f[dM00] = &DDStart[dP00 * numberOfLBnodes]; + D.f[dP00] = &DDStart[dM00 * numberOfLBnodes]; + D.f[d0M0] = &DDStart[d0P0 * numberOfLBnodes]; + D.f[d0P0] = &DDStart[d0M0 * numberOfLBnodes]; + D.f[d00M] = &DDStart[d00P * numberOfLBnodes]; + D.f[d00P] = &DDStart[d00M * numberOfLBnodes]; + D.f[dMM0] = &DDStart[dPP0 * numberOfLBnodes]; + D.f[dPP0] = &DDStart[dMM0 * numberOfLBnodes]; + D.f[dMP0] = &DDStart[dPM0 * numberOfLBnodes]; + D.f[dPM0] = &DDStart[dMP0 * numberOfLBnodes]; + D.f[dM0M] = &DDStart[dP0P * numberOfLBnodes]; + D.f[dP0P] = &DDStart[dM0M * numberOfLBnodes]; + D.f[dM0P] = &DDStart[dP0M * numberOfLBnodes]; + D.f[dP0M] = &DDStart[dM0P * numberOfLBnodes]; + D.f[d0MM] = &DDStart[d0PP * numberOfLBnodes]; + D.f[d0PP] = &DDStart[d0MM * numberOfLBnodes]; + D.f[d0MP] = &DDStart[d0PM * numberOfLBnodes]; + D.f[d0PM] = &DDStart[d0MP * numberOfLBnodes]; + D.f[d000] = &DDStart[d000 * numberOfLBnodes]; + D.f[dMMM] = &DDStart[dPPP * numberOfLBnodes]; + D.f[dPPM] = &DDStart[dMMP * numberOfLBnodes]; + D.f[dMPM] = &DDStart[dPMP * numberOfLBnodes]; + D.f[dPMM] = &DDStart[dMPP * numberOfLBnodes]; + D.f[dMMP] = &DDStart[dPPM * numberOfLBnodes]; + D.f[dPPP] = &DDStart[dMMM * numberOfLBnodes]; + D.f[dMPP] = &DDStart[dPMM * numberOfLBnodes]; + D.f[dPMP] = &DDStart[dMPM * numberOfLBnodes]; } //////////////////////////////////////////////////////////////////////////////// @@ -107,33 +107,33 @@ __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[DIR_P00])[k]; - real mfabb = (D.f[DIR_M00])[kw]; - real mfbcb = (D.f[DIR_0P0])[k]; - real mfbab = (D.f[DIR_0M0])[ks]; - real mfbbc = (D.f[DIR_00P])[k]; - real mfbba = (D.f[DIR_00M])[kb]; - real mfccb = (D.f[DIR_PP0])[k]; - real mfaab = (D.f[DIR_MM0])[ksw]; - real mfcab = (D.f[DIR_PM0])[ks]; - real mfacb = (D.f[DIR_MP0])[kw]; - real mfcbc = (D.f[DIR_P0P])[k]; - real mfaba = (D.f[DIR_M0M])[kbw]; - real mfcba = (D.f[DIR_P0M])[kb]; - real mfabc = (D.f[DIR_M0P])[kw]; - real mfbcc = (D.f[DIR_0PP])[k]; - real mfbaa = (D.f[DIR_0MM])[kbs]; - real mfbca = (D.f[DIR_0PM])[kb]; - real mfbac = (D.f[DIR_0MP])[ks]; - real mfbbb = (D.f[DIR_000])[k]; - real mfccc = (D.f[DIR_PPP])[k]; - real mfaac = (D.f[DIR_MMP])[ksw]; - real mfcac = (D.f[DIR_PMP])[ks]; - real mfacc = (D.f[DIR_MPP])[kw]; - real mfcca = (D.f[DIR_PPM])[kb]; - real mfaaa = (D.f[DIR_MMM])[kbsw]; - real mfcaa = (D.f[DIR_PMM])[kbs]; - real mfaca = (D.f[DIR_MPM])[kbw]; + real mfcbb = (D.f[dP00])[k]; + real mfabb = (D.f[dM00])[kw]; + real mfbcb = (D.f[d0P0])[k]; + real mfbab = (D.f[d0M0])[ks]; + real mfbbc = (D.f[d00P])[k]; + real mfbba = (D.f[d00M])[kb]; + real mfccb = (D.f[dPP0])[k]; + real mfaab = (D.f[dMM0])[ksw]; + real mfcab = (D.f[dPM0])[ks]; + real mfacb = (D.f[dMP0])[kw]; + real mfcbc = (D.f[dP0P])[k]; + real mfaba = (D.f[dM0M])[kbw]; + real mfcba = (D.f[dP0M])[kb]; + real mfabc = (D.f[dM0P])[kw]; + real mfbcc = (D.f[d0PP])[k]; + real mfbaa = (D.f[d0MM])[kbs]; + real mfbca = (D.f[d0PM])[kb]; + real mfbac = (D.f[d0MP])[ks]; + real mfbbb = (D.f[d000])[k]; + real mfccc = (D.f[dPPP])[k]; + real mfaac = (D.f[dMMP])[ksw]; + real mfcac = (D.f[dPMP])[ks]; + real mfacc = (D.f[dMPP])[kw]; + real mfcca = (D.f[dPPM])[kb]; + real mfaaa = (D.f[dMMM])[kbsw]; + real mfcaa = (D.f[dPMM])[kbs]; + real mfaca = (D.f[dMPM])[kbw]; //////////////////////////////////////////////////////////////////////////////////// real drho = ((((mfccc + mfaaa) + (mfaca + mfcac)) + ((mfacc + mfcaa) + (mfaac + mfcca))) + (((mfbac + mfbca) + (mfbaa + mfbcc)) + ((mfabc + mfcba) + (mfaba + mfcbc)) + ((mfacb + mfcab) + (mfaab + mfccb))) + @@ -904,33 +904,33 @@ __global__ void LB_Kernel_PM_Cum_One_Comp_SP_27(real omega, //////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////// - (D.f[DIR_P00])[k] = mfabb; - (D.f[DIR_M00])[kw] = mfcbb; - (D.f[DIR_0P0])[k] = mfbab; - (D.f[DIR_0M0])[ks] = mfbcb; - (D.f[DIR_00P])[k] = mfbba; - (D.f[DIR_00M])[kb] = mfbbc; - (D.f[DIR_PP0])[k] = mfaab; - (D.f[DIR_MM0])[ksw] = mfccb; - (D.f[DIR_PM0])[ks] = mfacb; - (D.f[DIR_MP0])[kw] = mfcab; - (D.f[DIR_P0P])[k] = mfaba; - (D.f[DIR_M0M])[kbw] = mfcbc; - (D.f[DIR_P0M])[kb] = mfabc; - (D.f[DIR_M0P])[kw] = mfcba; - (D.f[DIR_0PP])[k] = mfbaa; - (D.f[DIR_0MM])[kbs] = mfbcc; - (D.f[DIR_0PM])[kb] = mfbac; - (D.f[DIR_0MP])[ks] = mfbca; - (D.f[DIR_000])[k] = mfbbb; - (D.f[DIR_PPP])[k] = mfaaa; - (D.f[DIR_PMP])[ks] = mfaca; - (D.f[DIR_PPM])[kb] = mfaac; - (D.f[DIR_PMM])[kbs] = mfacc; - (D.f[DIR_MPP])[kw] = mfcaa; - (D.f[DIR_MMP])[ksw] = mfcca; - (D.f[DIR_MPM])[kbw] = mfcac; - (D.f[DIR_MMM])[kbsw] = mfccc; + (D.f[dP00])[k] = mfabb; + (D.f[dM00])[kw] = mfcbb; + (D.f[d0P0])[k] = mfbab; + (D.f[d0M0])[ks] = mfbcb; + (D.f[d00P])[k] = mfbba; + (D.f[d00M])[kb] = mfbbc; + (D.f[dPP0])[k] = mfaab; + (D.f[dMM0])[ksw] = mfccb; + (D.f[dPM0])[ks] = mfacb; + (D.f[dMP0])[kw] = mfcab; + (D.f[dP0P])[k] = mfaba; + (D.f[dM0M])[kbw] = mfcbc; + (D.f[dP0M])[kb] = mfabc; + (D.f[dM0P])[kw] = mfcba; + (D.f[d0PP])[k] = mfbaa; + (D.f[d0MM])[kbs] = mfbcc; + (D.f[d0PM])[kb] = mfbac; + (D.f[d0MP])[ks] = mfbca; + (D.f[d000])[k] = mfbbb; + (D.f[dPPP])[k] = mfaaa; + (D.f[dPMP])[ks] = mfaca; + (D.f[dPPM])[kb] = mfaac; + (D.f[dPMM])[kbs] = mfacc; + (D.f[dMPP])[kw] = mfcaa; + (D.f[dMMP])[ksw] = mfcca; + (D.f[dMPM])[kbw] = mfcac; + (D.f[dMMM])[kbsw] = mfccc; //////////////////////////////////////////////////////////////////////////////////// } } \ No newline at end of file diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/PorousMediaKernels/FluidFlow/Compressible/CumulantOne/PMCumulantOneCompSP27_Device.cuh b/src/gpu/core/Kernel/Compressible/NavierStokes/K15PorousMedia/K15CompressibleNavierStokesPorousMedia_Device.cuh similarity index 64% rename from src/gpu/VirtualFluids_GPU/Kernel/Kernels/PorousMediaKernels/FluidFlow/Compressible/CumulantOne/PMCumulantOneCompSP27_Device.cuh rename to src/gpu/core/Kernel/Compressible/NavierStokes/K15PorousMedia/K15CompressibleNavierStokesPorousMedia_Device.cuh index f2cf530b5d331c71d4a13bd5882a3657a3bbddea..853c22145f401afd31c86cc4aa2996f13984cdf0 100644 --- a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/PorousMediaKernels/FluidFlow/Compressible/CumulantOne/PMCumulantOneCompSP27_Device.cuh +++ b/src/gpu/core/Kernel/Compressible/NavierStokes/K15PorousMedia/K15CompressibleNavierStokesPorousMedia_Device.cuh @@ -1,10 +1,10 @@ -#ifndef LB_KERNEL_PM_CUM_ONE_COMP_SP_27_H -#define LB_KERNEL_PM_CUM_ONE_COMP_SP_27_H +#ifndef K15CompressibleNavierStokesPorousMedia_Device_H +#define K15CompressibleNavierStokesPorousMedia_Device_H #include <DataTypes.h> #include <curand.h> -__global__ void LB_Kernel_PM_Cum_One_Comp_SP_27(real omega, +__global__ void K15CompressibleNavierStokesPorousMedia_Device(real omega, unsigned int* neighborX, unsigned int* neighborY, unsigned int* neighborZ, diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/WaleKernels/FluidFlow/Compressible/CumulantK15/WaleCumulantK15Comp.cu b/src/gpu/core/Kernel/Compressible/NavierStokes/K15Wale/K15CompressibleNavierStokesWale.cu similarity index 59% rename from src/gpu/VirtualFluids_GPU/Kernel/Kernels/WaleKernels/FluidFlow/Compressible/CumulantK15/WaleCumulantK15Comp.cu rename to src/gpu/core/Kernel/Compressible/NavierStokes/K15Wale/K15CompressibleNavierStokesWale.cu index cfcc544aac2172cef2f4d58600931db8ccfa0189..b3fd5bebd5483aa66d9ee6b0af36d55d7cc08ead 100644 --- a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/WaleKernels/FluidFlow/Compressible/CumulantK15/WaleCumulantK15Comp.cu +++ b/src/gpu/core/Kernel/Compressible/NavierStokes/K15Wale/K15CompressibleNavierStokesWale.cu @@ -1,14 +1,14 @@ -#include "WaleCumulantK15Comp.h" +#include "K15CompressibleNavierStokesWale.h" -#include "WaleCumulantK15Comp_Device.cuh" +#include "K15CompressibleNavierStokesWale_Device.cuh" #include "Parameter/Parameter.h" -std::shared_ptr<WaleCumulantK15Comp> WaleCumulantK15Comp::getNewInstance(std::shared_ptr<Parameter> para, int level) +std::shared_ptr<K15CompressibleNavierStokesWale> K15CompressibleNavierStokesWale::getNewInstance(std::shared_ptr<Parameter> para, int level) { - return std::shared_ptr<WaleCumulantK15Comp>(new WaleCumulantK15Comp(para, level)); + return std::shared_ptr<K15CompressibleNavierStokesWale>(new K15CompressibleNavierStokesWale(para, level)); } -void WaleCumulantK15Comp::run() +void K15CompressibleNavierStokesWale::run() { int size_Mat = (int)para->getParD(level)->numberOfNodes; int numberOfThreads = para->getParD(level)->numberofthreads; @@ -28,7 +28,7 @@ void WaleCumulantK15Comp::run() dim3 grid(Grid1, Grid2, 1); dim3 threads(numberOfThreads, 1, 1); - LB_Kernel_WaleCumulantK15Comp <<< grid, threads >>>( + K15CompressibleNavierStokesWale_Device <<< grid, threads >>>( para->getParD(level)->omega, para->getParD(level)->typeOfGridNode, para->getParD(level)->neighborX, @@ -45,10 +45,10 @@ void WaleCumulantK15Comp::run() para->getTimestepOfCoarseLevel(), para->getForcesDev(), para->getParD(level)->isEvenTimestep); - getLastCudaError("LB_Kernel_WaleCumulantK15Comp execution failed"); + getLastCudaError("K15CompressibleNavierStokesWale_Device execution failed"); } -WaleCumulantK15Comp::WaleCumulantK15Comp(std::shared_ptr<Parameter> para, int level) +K15CompressibleNavierStokesWale::K15CompressibleNavierStokesWale(std::shared_ptr<Parameter> para, int level) { this->para = para; this->level = level; @@ -58,6 +58,6 @@ WaleCumulantK15Comp::WaleCumulantK15Comp(std::shared_ptr<Parameter> para, int le } -WaleCumulantK15Comp::WaleCumulantK15Comp() +K15CompressibleNavierStokesWale::K15CompressibleNavierStokesWale() { } diff --git a/src/gpu/core/Kernel/Compressible/NavierStokes/K15Wale/K15CompressibleNavierStokesWale.h b/src/gpu/core/Kernel/Compressible/NavierStokes/K15Wale/K15CompressibleNavierStokesWale.h new file mode 100644 index 0000000000000000000000000000000000000000..c8b9c04caafbb2e692c36d91d1b89dbc3ad0f103 --- /dev/null +++ b/src/gpu/core/Kernel/Compressible/NavierStokes/K15Wale/K15CompressibleNavierStokesWale.h @@ -0,0 +1,17 @@ +#ifndef K15CompressibleNavierStokesWale_H +#define K15CompressibleNavierStokesWale_H + +#include "Kernel/KernelImp.h" + +class K15CompressibleNavierStokesWale : public KernelImp +{ +public: + static std::shared_ptr<K15CompressibleNavierStokesWale> getNewInstance(std::shared_ptr< Parameter> para, int level); + void run(); + +private: + K15CompressibleNavierStokesWale(); + K15CompressibleNavierStokesWale(std::shared_ptr< Parameter> para, int level); + +}; +#endif \ 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/core/Kernel/Compressible/NavierStokes/K15Wale/K15CompressibleNavierStokesWale_Device.cu similarity index 90% rename from src/gpu/VirtualFluids_GPU/Kernel/Kernels/WaleKernels/FluidFlow/Compressible/CumulantK15/WaleCumulantK15Comp_Device.cu rename to src/gpu/core/Kernel/Compressible/NavierStokes/K15Wale/K15CompressibleNavierStokesWale_Device.cu index 62658ccbdcead27f77d3b72d2daa311ade5baa59..97c2bcfbad3677255b738312a4cfb5805c38e511 100644 --- a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/WaleKernels/FluidFlow/Compressible/CumulantK15/WaleCumulantK15Comp_Device.cu +++ b/src/gpu/core/Kernel/Compressible/NavierStokes/K15Wale/K15CompressibleNavierStokesWale_Device.cu @@ -6,7 +6,7 @@ using namespace vf::basics::constant; using namespace vf::lbm::dir; #include "math.h" -__global__ void LB_Kernel_WaleCumulantK15Comp( +__global__ void K15CompressibleNavierStokesWale_Device( real omega_in, unsigned int* bcMatD, unsigned int* neighborX, @@ -46,63 +46,63 @@ __global__ void LB_Kernel_WaleCumulantK15Comp( Distributions27 D; if (EvenOrOdd==true) { - D.f[DIR_P00] = &DDStart[DIR_P00 * size_Mat]; - D.f[DIR_M00] = &DDStart[DIR_M00 * size_Mat]; - D.f[DIR_0P0] = &DDStart[DIR_0P0 * size_Mat]; - D.f[DIR_0M0] = &DDStart[DIR_0M0 * size_Mat]; - D.f[DIR_00P] = &DDStart[DIR_00P * size_Mat]; - D.f[DIR_00M] = &DDStart[DIR_00M * size_Mat]; - D.f[DIR_PP0] = &DDStart[DIR_PP0 * size_Mat]; - D.f[DIR_MM0] = &DDStart[DIR_MM0 * size_Mat]; - D.f[DIR_PM0] = &DDStart[DIR_PM0 * size_Mat]; - D.f[DIR_MP0] = &DDStart[DIR_MP0 * size_Mat]; - D.f[DIR_P0P] = &DDStart[DIR_P0P * size_Mat]; - D.f[DIR_M0M] = &DDStart[DIR_M0M * size_Mat]; - D.f[DIR_P0M] = &DDStart[DIR_P0M * size_Mat]; - D.f[DIR_M0P] = &DDStart[DIR_M0P * size_Mat]; - D.f[DIR_0PP] = &DDStart[DIR_0PP * size_Mat]; - D.f[DIR_0MM] = &DDStart[DIR_0MM * size_Mat]; - D.f[DIR_0PM] = &DDStart[DIR_0PM * size_Mat]; - D.f[DIR_0MP] = &DDStart[DIR_0MP * size_Mat]; - D.f[DIR_000] = &DDStart[DIR_000 * size_Mat]; - D.f[DIR_PPP] = &DDStart[DIR_PPP * size_Mat]; - D.f[DIR_MMP] = &DDStart[DIR_MMP * size_Mat]; - D.f[DIR_PMP] = &DDStart[DIR_PMP * size_Mat]; - D.f[DIR_MPP] = &DDStart[DIR_MPP * size_Mat]; - D.f[DIR_PPM] = &DDStart[DIR_PPM * size_Mat]; - D.f[DIR_MMM] = &DDStart[DIR_MMM * size_Mat]; - D.f[DIR_PMM] = &DDStart[DIR_PMM * size_Mat]; - D.f[DIR_MPM] = &DDStart[DIR_MPM * size_Mat]; + D.f[dP00] = &DDStart[dP00 * size_Mat]; + D.f[dM00] = &DDStart[dM00 * size_Mat]; + D.f[d0P0] = &DDStart[d0P0 * size_Mat]; + D.f[d0M0] = &DDStart[d0M0 * size_Mat]; + D.f[d00P] = &DDStart[d00P * size_Mat]; + D.f[d00M] = &DDStart[d00M * size_Mat]; + D.f[dPP0] = &DDStart[dPP0 * size_Mat]; + D.f[dMM0] = &DDStart[dMM0 * size_Mat]; + D.f[dPM0] = &DDStart[dPM0 * size_Mat]; + D.f[dMP0] = &DDStart[dMP0 * size_Mat]; + D.f[dP0P] = &DDStart[dP0P * size_Mat]; + D.f[dM0M] = &DDStart[dM0M * size_Mat]; + D.f[dP0M] = &DDStart[dP0M * size_Mat]; + D.f[dM0P] = &DDStart[dM0P * size_Mat]; + D.f[d0PP] = &DDStart[d0PP * size_Mat]; + D.f[d0MM] = &DDStart[d0MM * size_Mat]; + D.f[d0PM] = &DDStart[d0PM * size_Mat]; + D.f[d0MP] = &DDStart[d0MP * size_Mat]; + D.f[d000] = &DDStart[d000 * size_Mat]; + D.f[dPPP] = &DDStart[dPPP * size_Mat]; + D.f[dMMP] = &DDStart[dMMP * size_Mat]; + D.f[dPMP] = &DDStart[dPMP * size_Mat]; + D.f[dMPP] = &DDStart[dMPP * size_Mat]; + D.f[dPPM] = &DDStart[dPPM * size_Mat]; + D.f[dMMM] = &DDStart[dMMM * size_Mat]; + D.f[dPMM] = &DDStart[dPMM * size_Mat]; + D.f[dMPM] = &DDStart[dMPM * size_Mat]; } else { - D.f[DIR_M00] = &DDStart[DIR_P00 * size_Mat]; - D.f[DIR_P00] = &DDStart[DIR_M00 * size_Mat]; - D.f[DIR_0M0] = &DDStart[DIR_0P0 * size_Mat]; - D.f[DIR_0P0] = &DDStart[DIR_0M0 * size_Mat]; - D.f[DIR_00M] = &DDStart[DIR_00P * size_Mat]; - D.f[DIR_00P] = &DDStart[DIR_00M * size_Mat]; - D.f[DIR_MM0] = &DDStart[DIR_PP0 * size_Mat]; - D.f[DIR_PP0] = &DDStart[DIR_MM0 * size_Mat]; - D.f[DIR_MP0] = &DDStart[DIR_PM0 * size_Mat]; - D.f[DIR_PM0] = &DDStart[DIR_MP0 * size_Mat]; - D.f[DIR_M0M] = &DDStart[DIR_P0P * size_Mat]; - D.f[DIR_P0P] = &DDStart[DIR_M0M * size_Mat]; - D.f[DIR_M0P] = &DDStart[DIR_P0M * size_Mat]; - D.f[DIR_P0M] = &DDStart[DIR_M0P * size_Mat]; - D.f[DIR_0MM] = &DDStart[DIR_0PP * size_Mat]; - D.f[DIR_0PP] = &DDStart[DIR_0MM * size_Mat]; - D.f[DIR_0MP] = &DDStart[DIR_0PM * size_Mat]; - D.f[DIR_0PM] = &DDStart[DIR_0MP * size_Mat]; - D.f[DIR_000] = &DDStart[DIR_000 * size_Mat]; - D.f[DIR_MMM] = &DDStart[DIR_PPP * size_Mat]; - D.f[DIR_PPM] = &DDStart[DIR_MMP * size_Mat]; - D.f[DIR_MPM] = &DDStart[DIR_PMP * size_Mat]; - D.f[DIR_PMM] = &DDStart[DIR_MPP * size_Mat]; - D.f[DIR_MMP] = &DDStart[DIR_PPM * size_Mat]; - D.f[DIR_PPP] = &DDStart[DIR_MMM * size_Mat]; - D.f[DIR_MPP] = &DDStart[DIR_PMM * size_Mat]; - D.f[DIR_PMP] = &DDStart[DIR_MPM * size_Mat]; + D.f[dM00] = &DDStart[dP00 * size_Mat]; + D.f[dP00] = &DDStart[dM00 * size_Mat]; + D.f[d0M0] = &DDStart[d0P0 * size_Mat]; + D.f[d0P0] = &DDStart[d0M0 * size_Mat]; + D.f[d00M] = &DDStart[d00P * size_Mat]; + D.f[d00P] = &DDStart[d00M * size_Mat]; + D.f[dMM0] = &DDStart[dPP0 * size_Mat]; + D.f[dPP0] = &DDStart[dMM0 * size_Mat]; + D.f[dMP0] = &DDStart[dPM0 * size_Mat]; + D.f[dPM0] = &DDStart[dMP0 * size_Mat]; + D.f[dM0M] = &DDStart[dP0P * size_Mat]; + D.f[dP0P] = &DDStart[dM0M * size_Mat]; + D.f[dM0P] = &DDStart[dP0M * size_Mat]; + D.f[dP0M] = &DDStart[dM0P * size_Mat]; + D.f[d0MM] = &DDStart[d0PP * size_Mat]; + D.f[d0PP] = &DDStart[d0MM * size_Mat]; + D.f[d0MP] = &DDStart[d0PM * size_Mat]; + D.f[d0PM] = &DDStart[d0MP * size_Mat]; + D.f[d000] = &DDStart[d000 * size_Mat]; + D.f[dMMM] = &DDStart[dPPP * size_Mat]; + D.f[dPPM] = &DDStart[dMMP * size_Mat]; + D.f[dMPM] = &DDStart[dPMP * size_Mat]; + D.f[dPMM] = &DDStart[dMPP * size_Mat]; + D.f[dMMP] = &DDStart[dPPM * size_Mat]; + D.f[dPPP] = &DDStart[dMMM * size_Mat]; + D.f[dMPP] = &DDStart[dPMM * size_Mat]; + D.f[dPMP] = &DDStart[dMPM * size_Mat]; } //////////////////////////////////////////////////////////////////////////////// @@ -136,33 +136,33 @@ __global__ void LB_Kernel_WaleCumulantK15Comp( unsigned int kbsw = neighborZ[ksw]; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real mfcbb = (D.f[DIR_P00])[k ]; - real mfabb = (D.f[DIR_M00])[kw ]; - real mfbcb = (D.f[DIR_0P0])[k ]; - real mfbab = (D.f[DIR_0M0])[ks ]; - real mfbbc = (D.f[DIR_00P])[k ]; - real mfbba = (D.f[DIR_00M])[kb ]; - real mfccb = (D.f[DIR_PP0])[k ]; - real mfaab = (D.f[DIR_MM0])[ksw]; - real mfcab = (D.f[DIR_PM0])[ks ]; - real mfacb = (D.f[DIR_MP0])[kw ]; - real mfcbc = (D.f[DIR_P0P])[k ]; - real mfaba = (D.f[DIR_M0M])[kbw]; - real mfcba = (D.f[DIR_P0M])[kb ]; - real mfabc = (D.f[DIR_M0P])[kw ]; - real mfbcc = (D.f[DIR_0PP])[k ]; - real mfbaa = (D.f[DIR_0MM])[kbs]; - real mfbca = (D.f[DIR_0PM])[kb ]; - real mfbac = (D.f[DIR_0MP])[ks ]; - real mfbbb = (D.f[DIR_000])[k ]; - real mfccc = (D.f[DIR_PPP])[k ]; - real mfaac = (D.f[DIR_MMP])[ksw]; - real mfcac = (D.f[DIR_PMP])[ks ]; - real mfacc = (D.f[DIR_MPP])[kw ]; - real mfcca = (D.f[DIR_PPM])[kb ]; - real mfaaa = (D.f[DIR_MMM])[kbsw]; - real mfcaa = (D.f[DIR_PMM])[kbs]; - real mfaca = (D.f[DIR_MPM])[kbw]; + real mfcbb = (D.f[dP00])[k ]; + real mfabb = (D.f[dM00])[kw ]; + real mfbcb = (D.f[d0P0])[k ]; + real mfbab = (D.f[d0M0])[ks ]; + real mfbbc = (D.f[d00P])[k ]; + real mfbba = (D.f[d00M])[kb ]; + real mfccb = (D.f[dPP0])[k ]; + real mfaab = (D.f[dMM0])[ksw]; + real mfcab = (D.f[dPM0])[ks ]; + real mfacb = (D.f[dMP0])[kw ]; + real mfcbc = (D.f[dP0P])[k ]; + real mfaba = (D.f[dM0M])[kbw]; + real mfcba = (D.f[dP0M])[kb ]; + real mfabc = (D.f[dM0P])[kw ]; + real mfbcc = (D.f[d0PP])[k ]; + real mfbaa = (D.f[d0MM])[kbs]; + real mfbca = (D.f[d0PM])[kb ]; + real mfbac = (D.f[d0MP])[ks ]; + real mfbbb = (D.f[d000])[k ]; + real mfccc = (D.f[dPPP])[k ]; + real mfaac = (D.f[dMMP])[ksw]; + real mfcac = (D.f[dPMP])[ks ]; + real mfacc = (D.f[dMPP])[kw ]; + real mfcca = (D.f[dPPM])[kb ]; + real mfaaa = (D.f[dMMM])[kbsw]; + real mfcaa = (D.f[dPMM])[kbs]; + real mfaca = (D.f[dMPM])[kbw]; //////////////////////////////////////////////////////////////////////////////////// real drho = ((((mfccc+mfaaa) + (mfaca+mfcac)) + ((mfacc+mfcaa) + (mfaac+mfcca))) + (((mfbac+mfbca) + (mfbaa+mfbcc)) + ((mfabc+mfcba) + (mfaba+mfcbc)) + ((mfacb+mfcab) + (mfaab+mfccb))) + @@ -420,9 +420,9 @@ __global__ void LB_Kernel_WaleCumulantK15Comp( //real SumSDsq = SumSd * SumSd; real SumSsq = SumS; real SumSDsq = SumSd; - //nuTurb = powf(delta, two) * powf(SumSDsq, c3o2) / (powf(SumSsq, c5o2) + powf(SumSDsq, c5o4) + smallSingle); //powf - //nuTurb = pow(delta, two) * pow(SumSDsq, c3o2) / (pow(SumSsq, c5o2) + pow(SumSDsq, c5o4) + smallSingle); //pow - //nuTurb = (delta * delta) * (real)pow((double)SumSDsq, 1.5) / ((real)pow((double)SumSsq, 2.5) + (real)pow((double)SumSDsq, 1.25) + smallSingle); //SMversion// + //nuTurb = powf(delta, two) * powf(SumSDsq, c3o2) / (powf(SumSsq, c5o2) + powf(SumSDsq, c5o4) + cSmallSingle); //powf + //nuTurb = pow(delta, two) * pow(SumSDsq, c3o2) / (pow(SumSsq, c5o2) + pow(SumSDsq, c5o4) + cSmallSingle); //pow + //nuTurb = (delta * delta) * (real)pow((double)SumSDsq, 1.5) / ((real)pow((double)SumSsq, 2.5) + (real)pow((double)SumSDsq, 1.25) + cSmallSingle); //SMversion// nuTurb = (delta * delta) * (real)pow((double)SumSDsq, 0.25) / ((real)pow(((double)pow((double)SumSsq, 0.5) / ((real)pow((double)SumSDsq, 0.25) + c10eM10)), 5.0) + c1o1); //SMversion2// ///////////////////////////////// @@ -1180,33 +1180,33 @@ __global__ void LB_Kernel_WaleCumulantK15Comp( //////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////// - (D.f[ DIR_P00 ])[k ] = mfabb; - (D.f[ DIR_M00 ])[kw ] = mfcbb; - (D.f[ DIR_0P0 ])[k ] = mfbab; - (D.f[ DIR_0M0 ])[ks ] = mfbcb; - (D.f[ DIR_00P ])[k ] = mfbba; - (D.f[ DIR_00M ])[kb ] = mfbbc; - (D.f[ DIR_PP0 ])[k ] = mfaab; - (D.f[ DIR_MM0 ])[ksw ] = mfccb; - (D.f[ DIR_PM0 ])[ks ] = mfacb; - (D.f[ DIR_MP0 ])[kw ] = mfcab; - (D.f[ DIR_P0P ])[k ] = mfaba; - (D.f[ DIR_M0M ])[kbw ] = mfcbc; - (D.f[ DIR_P0M ])[kb ] = mfabc; - (D.f[ DIR_M0P ])[kw ] = mfcba; - (D.f[ DIR_0PP ])[k ] = mfbaa; - (D.f[ DIR_0MM ])[kbs ] = mfbcc; - (D.f[ DIR_0PM ])[kb ] = mfbac; - (D.f[ DIR_0MP ])[ks ] = mfbca; - (D.f[ DIR_000])[k ] = mfbbb; - (D.f[ DIR_PPP ])[k ] = mfaaa; - (D.f[ DIR_PMP ])[ks ] = mfaca; - (D.f[ DIR_PPM ])[kb ] = mfaac; - (D.f[ DIR_PMM ])[kbs ] = mfacc; - (D.f[ DIR_MPP ])[kw ] = mfcaa; - (D.f[ DIR_MMP ])[ksw ] = mfcca; - (D.f[ DIR_MPM ])[kbw ] = mfcac; - (D.f[ DIR_MMM ])[kbsw] = mfccc; + (D.f[ dP00 ])[k ] = mfabb; + (D.f[ dM00 ])[kw ] = mfcbb; + (D.f[ d0P0 ])[k ] = mfbab; + (D.f[ d0M0 ])[ks ] = mfbcb; + (D.f[ d00P ])[k ] = mfbba; + (D.f[ d00M ])[kb ] = mfbbc; + (D.f[ dPP0 ])[k ] = mfaab; + (D.f[ dMM0 ])[ksw ] = mfccb; + (D.f[ dPM0 ])[ks ] = mfacb; + (D.f[ dMP0 ])[kw ] = mfcab; + (D.f[ dP0P ])[k ] = mfaba; + (D.f[ dM0M ])[kbw ] = mfcbc; + (D.f[ dP0M ])[kb ] = mfabc; + (D.f[ dM0P ])[kw ] = mfcba; + (D.f[ d0PP ])[k ] = mfbaa; + (D.f[ d0MM ])[kbs ] = mfbcc; + (D.f[ d0PM ])[kb ] = mfbac; + (D.f[ d0MP ])[ks ] = mfbca; + (D.f[ d000])[k ] = mfbbb; + (D.f[ dPPP ])[k ] = mfaaa; + (D.f[ dPMP ])[ks ] = mfaca; + (D.f[ dPPM ])[kb ] = mfaac; + (D.f[ dPMM ])[kbs ] = mfacc; + (D.f[ dMPP ])[kw ] = mfcaa; + (D.f[ dMMP ])[ksw ] = mfcca; + (D.f[ dMPM ])[kbw ] = mfcac; + (D.f[ dMMM ])[kbsw] = mfccc; //////////////////////////////////////////////////////////////////////////////////// } } diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/WaleKernels/FluidFlow/Compressible/CumulantK15/WaleCumulantK15Comp_Device.cuh b/src/gpu/core/Kernel/Compressible/NavierStokes/K15Wale/K15CompressibleNavierStokesWale_Device.cuh similarity index 67% rename from src/gpu/VirtualFluids_GPU/Kernel/Kernels/WaleKernels/FluidFlow/Compressible/CumulantK15/WaleCumulantK15Comp_Device.cuh rename to src/gpu/core/Kernel/Compressible/NavierStokes/K15Wale/K15CompressibleNavierStokesWale_Device.cuh index fad3eb11434b9c3fd216a7698b9275d4af43245c..aa113e116cd2dd50658dd8c393ea83cee17ce208 100644 --- a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/WaleKernels/FluidFlow/Compressible/CumulantK15/WaleCumulantK15Comp_Device.cuh +++ b/src/gpu/core/Kernel/Compressible/NavierStokes/K15Wale/K15CompressibleNavierStokesWale_Device.cuh @@ -1,10 +1,10 @@ -#ifndef LB_KERNEL_WALE_CUMULANT_K15_COMP_H -#define LB_KERNEL_WALE_CUMULANT_K15_COMP_H +#ifndef K15CompressibleNavierStokesWale_Device_H +#define K15CompressibleNavierStokesWale_Device_H #include <DataTypes.h> #include <curand.h> -__global__ void LB_Kernel_WaleCumulantK15Comp(real omega, +__global__ void K15CompressibleNavierStokesWale_Device(real omega, unsigned int* bcMatD, unsigned int* neighborX, unsigned int* neighborY, diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/WaleKernels/FluidFlow/Compressible/CumulantK15BySoniMalav/WaleBySoniMalavCumulantK15Comp.cu b/src/gpu/core/Kernel/Compressible/NavierStokes/K15WaleSM/K15CompressibleNavierStokesWaleBySoniMalav.cu similarity index 57% rename from src/gpu/VirtualFluids_GPU/Kernel/Kernels/WaleKernels/FluidFlow/Compressible/CumulantK15BySoniMalav/WaleBySoniMalavCumulantK15Comp.cu rename to src/gpu/core/Kernel/Compressible/NavierStokes/K15WaleSM/K15CompressibleNavierStokesWaleBySoniMalav.cu index 05e257a52b38e2c31badcb1fb739de3ab0239f6e..ae7765280309e15b5052778f158936b88cd68fd2 100644 --- a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/WaleKernels/FluidFlow/Compressible/CumulantK15BySoniMalav/WaleBySoniMalavCumulantK15Comp.cu +++ b/src/gpu/core/Kernel/Compressible/NavierStokes/K15WaleSM/K15CompressibleNavierStokesWaleBySoniMalav.cu @@ -1,14 +1,14 @@ -#include "WaleBySoniMalavCumulantK15Comp.h" +#include "K15CompressibleNavierStokesWaleBySoniMalav.h" -#include "WaleBySoniMalavCumulantK15Comp_Device.cuh" +#include "K15CompressibleNavierStokesWaleBySoniMalav_Device.cuh" #include "Parameter/Parameter.h" -std::shared_ptr<WaleBySoniMalavCumulantK15Comp> WaleBySoniMalavCumulantK15Comp::getNewInstance(std::shared_ptr<Parameter> para, int level) +std::shared_ptr<K15CompressibleNavierStokesWaleBySoniMalav> K15CompressibleNavierStokesWaleBySoniMalav::getNewInstance(std::shared_ptr<Parameter> para, int level) { - return std::shared_ptr<WaleBySoniMalavCumulantK15Comp>(new WaleBySoniMalavCumulantK15Comp(para, level)); + return std::shared_ptr<K15CompressibleNavierStokesWaleBySoniMalav>(new K15CompressibleNavierStokesWaleBySoniMalav(para, level)); } -void WaleBySoniMalavCumulantK15Comp::run() +void K15CompressibleNavierStokesWaleBySoniMalav::run() { int size_Mat = (int)para->getParD(level)->numberOfNodes; int numberOfThreads = para->getParD(level)->numberofthreads; @@ -32,7 +32,7 @@ void WaleBySoniMalavCumulantK15Comp::run() dim3 grid(Grid1, Grid2, 1); dim3 threads(numberOfThreads, 1, 1); - LB_Kernel_WaleBySoniMalavCumulantK15Comp <<< grid, threads >>>( + K15CompressibleNavierStokesWaleBySoniMalav_Device <<< grid, threads >>>( para->getParD(level)->omega, para->getParD(level)->typeOfGridNode, para->getParD(level)->neighborX, @@ -48,10 +48,10 @@ void WaleBySoniMalavCumulantK15Comp::run() level, para->getForcesDev(), para->getParD(level)->isEvenTimestep); - getLastCudaError("LB_Kernel_WaleBySoniMalavCumulantK15Comp execution failed"); + getLastCudaError("K15CompressibleNavierStokesWaleBySoniMalav_Device execution failed"); } -WaleBySoniMalavCumulantK15Comp::WaleBySoniMalavCumulantK15Comp(std::shared_ptr<Parameter> para, int level) +K15CompressibleNavierStokesWaleBySoniMalav::K15CompressibleNavierStokesWaleBySoniMalav(std::shared_ptr<Parameter> para, int level) { this->para = para; this->level = level; @@ -61,6 +61,6 @@ WaleBySoniMalavCumulantK15Comp::WaleBySoniMalavCumulantK15Comp(std::shared_ptr<P } -WaleBySoniMalavCumulantK15Comp::WaleBySoniMalavCumulantK15Comp() +K15CompressibleNavierStokesWaleBySoniMalav::K15CompressibleNavierStokesWaleBySoniMalav() { } diff --git a/src/gpu/core/Kernel/Compressible/NavierStokes/K15WaleSM/K15CompressibleNavierStokesWaleBySoniMalav.h b/src/gpu/core/Kernel/Compressible/NavierStokes/K15WaleSM/K15CompressibleNavierStokesWaleBySoniMalav.h new file mode 100644 index 0000000000000000000000000000000000000000..f446af208a634ca6d0e276f96450328dfdc0a7c6 --- /dev/null +++ b/src/gpu/core/Kernel/Compressible/NavierStokes/K15WaleSM/K15CompressibleNavierStokesWaleBySoniMalav.h @@ -0,0 +1,17 @@ +#ifndef K15CompressibleNavierStokesWaleBySoniMalav_H +#define K15CompressibleNavierStokesWaleBySoniMalav_H + +#include "Kernel/KernelImp.h" + +class K15CompressibleNavierStokesWaleBySoniMalav : public KernelImp +{ +public: + static std::shared_ptr<K15CompressibleNavierStokesWaleBySoniMalav> getNewInstance(std::shared_ptr< Parameter> para, int level); + void run(); + +private: + K15CompressibleNavierStokesWaleBySoniMalav(); + K15CompressibleNavierStokesWaleBySoniMalav(std::shared_ptr< Parameter> para, int level); + +}; +#endif \ No newline at end of file diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/WaleKernels/FluidFlow/Compressible/CumulantK15BySoniMalav/WaleBySoniMalavCumulantK15Comp_Device.cu b/src/gpu/core/Kernel/Compressible/NavierStokes/K15WaleSM/K15CompressibleNavierStokesWaleBySoniMalav_Device.cu similarity index 89% rename from src/gpu/VirtualFluids_GPU/Kernel/Kernels/WaleKernels/FluidFlow/Compressible/CumulantK15BySoniMalav/WaleBySoniMalavCumulantK15Comp_Device.cu rename to src/gpu/core/Kernel/Compressible/NavierStokes/K15WaleSM/K15CompressibleNavierStokesWaleBySoniMalav_Device.cu index d266aac648c6163fb24764879f391304f32aba87..1e086df36eef085b25747bd83f21f46cbfaa0425 100644 --- a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/WaleKernels/FluidFlow/Compressible/CumulantK15BySoniMalav/WaleBySoniMalavCumulantK15Comp_Device.cu +++ b/src/gpu/core/Kernel/Compressible/NavierStokes/K15WaleSM/K15CompressibleNavierStokesWaleBySoniMalav_Device.cu @@ -6,7 +6,7 @@ using namespace vf::basics::constant; using namespace vf::lbm::dir; #include "math.h" -__global__ void LB_Kernel_WaleBySoniMalavCumulantK15Comp( +__global__ void K15CompressibleNavierStokesWaleBySoniMalav_Device( real omega_in, unsigned int* bcMatD, unsigned int* neighborX, @@ -45,63 +45,63 @@ __global__ void LB_Kernel_WaleBySoniMalavCumulantK15Comp( Distributions27 D; if (EvenOrOdd==true) { - D.f[DIR_P00] = &DDStart[DIR_P00 * size_Mat]; - D.f[DIR_M00] = &DDStart[DIR_M00 * size_Mat]; - D.f[DIR_0P0] = &DDStart[DIR_0P0 * size_Mat]; - D.f[DIR_0M0] = &DDStart[DIR_0M0 * size_Mat]; - D.f[DIR_00P] = &DDStart[DIR_00P * size_Mat]; - D.f[DIR_00M] = &DDStart[DIR_00M * size_Mat]; - D.f[DIR_PP0] = &DDStart[DIR_PP0 * size_Mat]; - D.f[DIR_MM0] = &DDStart[DIR_MM0 * size_Mat]; - D.f[DIR_PM0] = &DDStart[DIR_PM0 * size_Mat]; - D.f[DIR_MP0] = &DDStart[DIR_MP0 * size_Mat]; - D.f[DIR_P0P] = &DDStart[DIR_P0P * size_Mat]; - D.f[DIR_M0M] = &DDStart[DIR_M0M * size_Mat]; - D.f[DIR_P0M] = &DDStart[DIR_P0M * size_Mat]; - D.f[DIR_M0P] = &DDStart[DIR_M0P * size_Mat]; - D.f[DIR_0PP] = &DDStart[DIR_0PP * size_Mat]; - D.f[DIR_0MM] = &DDStart[DIR_0MM * size_Mat]; - D.f[DIR_0PM] = &DDStart[DIR_0PM * size_Mat]; - D.f[DIR_0MP] = &DDStart[DIR_0MP * size_Mat]; - D.f[DIR_000] = &DDStart[DIR_000 * size_Mat]; - D.f[DIR_PPP] = &DDStart[DIR_PPP * size_Mat]; - D.f[DIR_MMP] = &DDStart[DIR_MMP * size_Mat]; - D.f[DIR_PMP] = &DDStart[DIR_PMP * size_Mat]; - D.f[DIR_MPP] = &DDStart[DIR_MPP * size_Mat]; - D.f[DIR_PPM] = &DDStart[DIR_PPM * size_Mat]; - D.f[DIR_MMM] = &DDStart[DIR_MMM * size_Mat]; - D.f[DIR_PMM] = &DDStart[DIR_PMM * size_Mat]; - D.f[DIR_MPM] = &DDStart[DIR_MPM * size_Mat]; + D.f[dP00] = &DDStart[dP00 * size_Mat]; + D.f[dM00] = &DDStart[dM00 * size_Mat]; + D.f[d0P0] = &DDStart[d0P0 * size_Mat]; + D.f[d0M0] = &DDStart[d0M0 * size_Mat]; + D.f[d00P] = &DDStart[d00P * size_Mat]; + D.f[d00M] = &DDStart[d00M * size_Mat]; + D.f[dPP0] = &DDStart[dPP0 * size_Mat]; + D.f[dMM0] = &DDStart[dMM0 * size_Mat]; + D.f[dPM0] = &DDStart[dPM0 * size_Mat]; + D.f[dMP0] = &DDStart[dMP0 * size_Mat]; + D.f[dP0P] = &DDStart[dP0P * size_Mat]; + D.f[dM0M] = &DDStart[dM0M * size_Mat]; + D.f[dP0M] = &DDStart[dP0M * size_Mat]; + D.f[dM0P] = &DDStart[dM0P * size_Mat]; + D.f[d0PP] = &DDStart[d0PP * size_Mat]; + D.f[d0MM] = &DDStart[d0MM * size_Mat]; + D.f[d0PM] = &DDStart[d0PM * size_Mat]; + D.f[d0MP] = &DDStart[d0MP * size_Mat]; + D.f[d000] = &DDStart[d000 * size_Mat]; + D.f[dPPP] = &DDStart[dPPP * size_Mat]; + D.f[dMMP] = &DDStart[dMMP * size_Mat]; + D.f[dPMP] = &DDStart[dPMP * size_Mat]; + D.f[dMPP] = &DDStart[dMPP * size_Mat]; + D.f[dPPM] = &DDStart[dPPM * size_Mat]; + D.f[dMMM] = &DDStart[dMMM * size_Mat]; + D.f[dPMM] = &DDStart[dPMM * size_Mat]; + D.f[dMPM] = &DDStart[dMPM * size_Mat]; } else { - D.f[DIR_M00] = &DDStart[DIR_P00 * size_Mat]; - D.f[DIR_P00] = &DDStart[DIR_M00 * size_Mat]; - D.f[DIR_0M0] = &DDStart[DIR_0P0 * size_Mat]; - D.f[DIR_0P0] = &DDStart[DIR_0M0 * size_Mat]; - D.f[DIR_00M] = &DDStart[DIR_00P * size_Mat]; - D.f[DIR_00P] = &DDStart[DIR_00M * size_Mat]; - D.f[DIR_MM0] = &DDStart[DIR_PP0 * size_Mat]; - D.f[DIR_PP0] = &DDStart[DIR_MM0 * size_Mat]; - D.f[DIR_MP0] = &DDStart[DIR_PM0 * size_Mat]; - D.f[DIR_PM0] = &DDStart[DIR_MP0 * size_Mat]; - D.f[DIR_M0M] = &DDStart[DIR_P0P * size_Mat]; - D.f[DIR_P0P] = &DDStart[DIR_M0M * size_Mat]; - D.f[DIR_M0P] = &DDStart[DIR_P0M * size_Mat]; - D.f[DIR_P0M] = &DDStart[DIR_M0P * size_Mat]; - D.f[DIR_0MM] = &DDStart[DIR_0PP * size_Mat]; - D.f[DIR_0PP] = &DDStart[DIR_0MM * size_Mat]; - D.f[DIR_0MP] = &DDStart[DIR_0PM * size_Mat]; - D.f[DIR_0PM] = &DDStart[DIR_0MP * size_Mat]; - D.f[DIR_000] = &DDStart[DIR_000 * size_Mat]; - D.f[DIR_MMM] = &DDStart[DIR_PPP * size_Mat]; - D.f[DIR_PPM] = &DDStart[DIR_MMP * size_Mat]; - D.f[DIR_MPM] = &DDStart[DIR_PMP * size_Mat]; - D.f[DIR_PMM] = &DDStart[DIR_MPP * size_Mat]; - D.f[DIR_MMP] = &DDStart[DIR_PPM * size_Mat]; - D.f[DIR_PPP] = &DDStart[DIR_MMM * size_Mat]; - D.f[DIR_MPP] = &DDStart[DIR_PMM * size_Mat]; - D.f[DIR_PMP] = &DDStart[DIR_MPM * size_Mat]; + D.f[dM00] = &DDStart[dP00 * size_Mat]; + D.f[dP00] = &DDStart[dM00 * size_Mat]; + D.f[d0M0] = &DDStart[d0P0 * size_Mat]; + D.f[d0P0] = &DDStart[d0M0 * size_Mat]; + D.f[d00M] = &DDStart[d00P * size_Mat]; + D.f[d00P] = &DDStart[d00M * size_Mat]; + D.f[dMM0] = &DDStart[dPP0 * size_Mat]; + D.f[dPP0] = &DDStart[dMM0 * size_Mat]; + D.f[dMP0] = &DDStart[dPM0 * size_Mat]; + D.f[dPM0] = &DDStart[dMP0 * size_Mat]; + D.f[dM0M] = &DDStart[dP0P * size_Mat]; + D.f[dP0P] = &DDStart[dM0M * size_Mat]; + D.f[dM0P] = &DDStart[dP0M * size_Mat]; + D.f[dP0M] = &DDStart[dM0P * size_Mat]; + D.f[d0MM] = &DDStart[d0PP * size_Mat]; + D.f[d0PP] = &DDStart[d0MM * size_Mat]; + D.f[d0MP] = &DDStart[d0PM * size_Mat]; + D.f[d0PM] = &DDStart[d0MP * size_Mat]; + D.f[d000] = &DDStart[d000 * size_Mat]; + D.f[dMMM] = &DDStart[dPPP * size_Mat]; + D.f[dPPM] = &DDStart[dMMP * size_Mat]; + D.f[dMPM] = &DDStart[dPMP * size_Mat]; + D.f[dPMM] = &DDStart[dMPP * size_Mat]; + D.f[dMMP] = &DDStart[dPPM * size_Mat]; + D.f[dPPP] = &DDStart[dMMM * size_Mat]; + D.f[dMPP] = &DDStart[dPMM * size_Mat]; + D.f[dPMP] = &DDStart[dMPM * size_Mat]; } //////////////////////////////////////////////////////////////////////////////// @@ -115,33 +115,33 @@ __global__ void LB_Kernel_WaleBySoniMalavCumulantK15Comp( unsigned int kbsw = neighborZ[ksw]; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real mfcbb = (D.f[DIR_P00])[k ]; - real mfabb = (D.f[DIR_M00])[kw ]; - real mfbcb = (D.f[DIR_0P0])[k ]; - real mfbab = (D.f[DIR_0M0])[ks ]; - real mfbbc = (D.f[DIR_00P])[k ]; - real mfbba = (D.f[DIR_00M])[kb ]; - real mfccb = (D.f[DIR_PP0])[k ]; - real mfaab = (D.f[DIR_MM0])[ksw]; - real mfcab = (D.f[DIR_PM0])[ks ]; - real mfacb = (D.f[DIR_MP0])[kw ]; - real mfcbc = (D.f[DIR_P0P])[k ]; - real mfaba = (D.f[DIR_M0M])[kbw]; - real mfcba = (D.f[DIR_P0M])[kb ]; - real mfabc = (D.f[DIR_M0P])[kw ]; - real mfbcc = (D.f[DIR_0PP])[k ]; - real mfbaa = (D.f[DIR_0MM])[kbs]; - real mfbca = (D.f[DIR_0PM])[kb ]; - real mfbac = (D.f[DIR_0MP])[ks ]; - real mfbbb = (D.f[DIR_000])[k ]; - real mfccc = (D.f[DIR_PPP])[k ]; - real mfaac = (D.f[DIR_MMP])[ksw]; - real mfcac = (D.f[DIR_PMP])[ks ]; - real mfacc = (D.f[DIR_MPP])[kw ]; - real mfcca = (D.f[DIR_PPM])[kb ]; - real mfaaa = (D.f[DIR_MMM])[kbsw]; - real mfcaa = (D.f[DIR_PMM])[kbs]; - real mfaca = (D.f[DIR_MPM])[kbw]; + real mfcbb = (D.f[dP00])[k ]; + real mfabb = (D.f[dM00])[kw ]; + real mfbcb = (D.f[d0P0])[k ]; + real mfbab = (D.f[d0M0])[ks ]; + real mfbbc = (D.f[d00P])[k ]; + real mfbba = (D.f[d00M])[kb ]; + real mfccb = (D.f[dPP0])[k ]; + real mfaab = (D.f[dMM0])[ksw]; + real mfcab = (D.f[dPM0])[ks ]; + real mfacb = (D.f[dMP0])[kw ]; + real mfcbc = (D.f[dP0P])[k ]; + real mfaba = (D.f[dM0M])[kbw]; + real mfcba = (D.f[dP0M])[kb ]; + real mfabc = (D.f[dM0P])[kw ]; + real mfbcc = (D.f[d0PP])[k ]; + real mfbaa = (D.f[d0MM])[kbs]; + real mfbca = (D.f[d0PM])[kb ]; + real mfbac = (D.f[d0MP])[ks ]; + real mfbbb = (D.f[d000])[k ]; + real mfccc = (D.f[dPPP])[k ]; + real mfaac = (D.f[dMMP])[ksw]; + real mfcac = (D.f[dPMP])[ks ]; + real mfacc = (D.f[dMPP])[kw ]; + real mfcca = (D.f[dPPM])[kb ]; + real mfaaa = (D.f[dMMM])[kbsw]; + real mfcaa = (D.f[dPMM])[kbs]; + real mfaca = (D.f[dMPM])[kbw]; //////////////////////////////////////////////////////////////////////////////////// real drho = ((((mfccc+mfaaa) + (mfaca+mfcac)) + ((mfacc+mfcaa) + (mfaac+mfcca))) + (((mfbac+mfbca) + (mfbaa+mfbcc)) + ((mfabc+mfcba) + (mfaba+mfcbc)) + ((mfacb+mfcab) + (mfaab+mfccb))) + @@ -296,7 +296,7 @@ __global__ void LB_Kernel_WaleBySoniMalavCumulantK15Comp( real SdSd = S1d*S1d + S2d*S2d + S3d*S3d + S4d*S4d + S5d*S5d + S6d*S6d + S7d*S7d + S8d*S8d + S9d*S9d; /////////////// Computing turbulent viscosity /////////////////////// - //wOper = (real)pow((double)SdSd, 1.5) / ((real)pow((double)S2, 2.5) + (real)pow((double)SdSd, 1.25) + smallSingle);// 1e-26f); + //wOper = (real)pow((double)SdSd, 1.5) / ((real)pow((double)S2, 2.5) + (real)pow((double)SdSd, 1.25) + cSmallSingle);// 1e-26f); wOper = (float)pow((double)SdSd, 0.25) / ((float)pow((double)((float)pow((double)S2, 0.5) / ((float)pow((double)SdSd, 0.25) + 1e-10)), 5.0) + 1); nuTurb = (Cw*Cw * DelX*DelX) * wOper; @@ -1004,33 +1004,33 @@ __global__ void LB_Kernel_WaleBySoniMalavCumulantK15Comp( //////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////// - (D.f[ DIR_P00 ])[k ] = mfabb; - (D.f[ DIR_M00 ])[kw ] = mfcbb; - (D.f[ DIR_0P0 ])[k ] = mfbab; - (D.f[ DIR_0M0 ])[ks ] = mfbcb; - (D.f[ DIR_00P ])[k ] = mfbba; - (D.f[ DIR_00M ])[kb ] = mfbbc; - (D.f[ DIR_PP0 ])[k ] = mfaab; - (D.f[ DIR_MM0 ])[ksw ] = mfccb; - (D.f[ DIR_PM0 ])[ks ] = mfacb; - (D.f[ DIR_MP0 ])[kw ] = mfcab; - (D.f[ DIR_P0P ])[k ] = mfaba; - (D.f[ DIR_M0M ])[kbw ] = mfcbc; - (D.f[ DIR_P0M ])[kb ] = mfabc; - (D.f[ DIR_M0P ])[kw ] = mfcba; - (D.f[ DIR_0PP ])[k ] = mfbaa; - (D.f[ DIR_0MM ])[kbs ] = mfbcc; - (D.f[ DIR_0PM ])[kb ] = mfbac; - (D.f[ DIR_0MP ])[ks ] = mfbca; - (D.f[ DIR_000])[k ] = mfbbb; - (D.f[ DIR_PPP ])[k ] = mfaaa; - (D.f[ DIR_PMP ])[ks ] = mfaca; - (D.f[ DIR_PPM ])[kb ] = mfaac; - (D.f[ DIR_PMM ])[kbs ] = mfacc; - (D.f[ DIR_MPP ])[kw ] = mfcaa; - (D.f[ DIR_MMP ])[ksw ] = mfcca; - (D.f[ DIR_MPM ])[kbw ] = mfcac; - (D.f[ DIR_MMM ])[kbsw] = mfccc; + (D.f[ dP00 ])[k ] = mfabb; + (D.f[ dM00 ])[kw ] = mfcbb; + (D.f[ d0P0 ])[k ] = mfbab; + (D.f[ d0M0 ])[ks ] = mfbcb; + (D.f[ d00P ])[k ] = mfbba; + (D.f[ d00M ])[kb ] = mfbbc; + (D.f[ dPP0 ])[k ] = mfaab; + (D.f[ dMM0 ])[ksw ] = mfccb; + (D.f[ dPM0 ])[ks ] = mfacb; + (D.f[ dMP0 ])[kw ] = mfcab; + (D.f[ dP0P ])[k ] = mfaba; + (D.f[ dM0M ])[kbw ] = mfcbc; + (D.f[ dP0M ])[kb ] = mfabc; + (D.f[ dM0P ])[kw ] = mfcba; + (D.f[ d0PP ])[k ] = mfbaa; + (D.f[ d0MM ])[kbs ] = mfbcc; + (D.f[ d0PM ])[kb ] = mfbac; + (D.f[ d0MP ])[ks ] = mfbca; + (D.f[ d000])[k ] = mfbbb; + (D.f[ dPPP ])[k ] = mfaaa; + (D.f[ dPMP ])[ks ] = mfaca; + (D.f[ dPPM ])[kb ] = mfaac; + (D.f[ dPMM ])[kbs ] = mfacc; + (D.f[ dMPP ])[kw ] = mfcaa; + (D.f[ dMMP ])[ksw ] = mfcca; + (D.f[ dMPM ])[kbw ] = mfcac; + (D.f[ dMMM ])[kbsw] = mfccc; //////////////////////////////////////////////////////////////////////////////////// } } diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/WaleKernels/FluidFlow/Compressible/CumulantK15BySoniMalav/WaleBySoniMalavCumulantK15Comp_Device.cuh b/src/gpu/core/Kernel/Compressible/NavierStokes/K15WaleSM/K15CompressibleNavierStokesWaleBySoniMalav_Device.cuh similarity index 61% rename from src/gpu/VirtualFluids_GPU/Kernel/Kernels/WaleKernels/FluidFlow/Compressible/CumulantK15BySoniMalav/WaleBySoniMalavCumulantK15Comp_Device.cuh rename to src/gpu/core/Kernel/Compressible/NavierStokes/K15WaleSM/K15CompressibleNavierStokesWaleBySoniMalav_Device.cuh index 4297404073aacc0acd01b84c35cbae3d1081ed5b..998adc4d3d6a134b362f8f9d2a0b610c215730ec 100644 --- a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/WaleKernels/FluidFlow/Compressible/CumulantK15BySoniMalav/WaleBySoniMalavCumulantK15Comp_Device.cuh +++ b/src/gpu/core/Kernel/Compressible/NavierStokes/K15WaleSM/K15CompressibleNavierStokesWaleBySoniMalav_Device.cuh @@ -1,10 +1,10 @@ -#ifndef LB_KERNEL_WALE_BY_SONI_MALAV_CUMULANT_K15_COMP_H -#define LB_KERNEL_WALE_BY_SONI_MALAV_CUMULANT_K15_COMP_H +#ifndef K15CompressibleNavierStokesWaleBySoniMalav_Device_H +#define K15CompressibleNavierStokesWaleBySoniMalav_Device_H #include <DataTypes.h> #include <curand.h> -__global__ void LB_Kernel_WaleBySoniMalavCumulantK15Comp(real omega_in, +__global__ void K15CompressibleNavierStokesWaleBySoniMalav_Device(real omega_in, unsigned int* bcMatD, unsigned int* neighborX, unsigned int* neighborY, diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/K17/K17CompressibleNavierStokes.cu b/src/gpu/core/Kernel/Compressible/NavierStokes/K17/K17CompressibleNavierStokes.cu similarity index 100% rename from src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/K17/K17CompressibleNavierStokes.cu rename to src/gpu/core/Kernel/Compressible/NavierStokes/K17/K17CompressibleNavierStokes.cu diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/K17/K17CompressibleNavierStokes.h b/src/gpu/core/Kernel/Compressible/NavierStokes/K17/K17CompressibleNavierStokes.h similarity index 100% rename from src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/K17/K17CompressibleNavierStokes.h rename to src/gpu/core/Kernel/Compressible/NavierStokes/K17/K17CompressibleNavierStokes.h diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/K17/K17CompressibleNavierStokesBulkViscosity.cu b/src/gpu/core/Kernel/Compressible/NavierStokes/K17/K17CompressibleNavierStokesBulkViscosity.cu similarity index 100% rename from src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/K17/K17CompressibleNavierStokesBulkViscosity.cu rename to src/gpu/core/Kernel/Compressible/NavierStokes/K17/K17CompressibleNavierStokesBulkViscosity.cu diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/K17/K17CompressibleNavierStokesBulkViscosity.h b/src/gpu/core/Kernel/Compressible/NavierStokes/K17/K17CompressibleNavierStokesBulkViscosity.h similarity index 100% rename from src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/K17/K17CompressibleNavierStokesBulkViscosity.h rename to src/gpu/core/Kernel/Compressible/NavierStokes/K17/K17CompressibleNavierStokesBulkViscosity.h diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/K17/K17CompressibleNavierStokesBulkViscosity_Device.cu b/src/gpu/core/Kernel/Compressible/NavierStokes/K17/K17CompressibleNavierStokesBulkViscosity_Device.cu similarity index 83% rename from src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/K17/K17CompressibleNavierStokesBulkViscosity_Device.cu rename to src/gpu/core/Kernel/Compressible/NavierStokes/K17/K17CompressibleNavierStokesBulkViscosity_Device.cu index 1803c083f8f04182cbe1556c33936fc052499596..171921fa8a468bd54d14edec7c3b8e386e1a3fd1 100644 --- a/src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/K17/K17CompressibleNavierStokesBulkViscosity_Device.cu +++ b/src/gpu/core/Kernel/Compressible/NavierStokes/K17/K17CompressibleNavierStokesBulkViscosity_Device.cu @@ -40,63 +40,63 @@ __global__ void K17CompressibleNavierStokesBulkViscosity_Device(real omega, Distributions27 D; if (EvenOrOdd == true) { - D.f[DIR_P00] = &DDStart[DIR_P00 * size_Mat]; - D.f[DIR_M00] = &DDStart[DIR_M00 * size_Mat]; - D.f[DIR_0P0] = &DDStart[DIR_0P0 * size_Mat]; - D.f[DIR_0M0] = &DDStart[DIR_0M0 * size_Mat]; - D.f[DIR_00P] = &DDStart[DIR_00P * size_Mat]; - D.f[DIR_00M] = &DDStart[DIR_00M * size_Mat]; - D.f[DIR_PP0] = &DDStart[DIR_PP0 * size_Mat]; - D.f[DIR_MM0] = &DDStart[DIR_MM0 * size_Mat]; - D.f[DIR_PM0] = &DDStart[DIR_PM0 * size_Mat]; - D.f[DIR_MP0] = &DDStart[DIR_MP0 * size_Mat]; - D.f[DIR_P0P] = &DDStart[DIR_P0P * size_Mat]; - D.f[DIR_M0M] = &DDStart[DIR_M0M * size_Mat]; - D.f[DIR_P0M] = &DDStart[DIR_P0M * size_Mat]; - D.f[DIR_M0P] = &DDStart[DIR_M0P * size_Mat]; - D.f[DIR_0PP] = &DDStart[DIR_0PP * size_Mat]; - D.f[DIR_0MM] = &DDStart[DIR_0MM * size_Mat]; - D.f[DIR_0PM] = &DDStart[DIR_0PM * size_Mat]; - D.f[DIR_0MP] = &DDStart[DIR_0MP * size_Mat]; - D.f[DIR_000] = &DDStart[DIR_000 * size_Mat]; - D.f[DIR_PPP] = &DDStart[DIR_PPP * size_Mat]; - D.f[DIR_MMP] = &DDStart[DIR_MMP * size_Mat]; - D.f[DIR_PMP] = &DDStart[DIR_PMP * size_Mat]; - D.f[DIR_MPP] = &DDStart[DIR_MPP * size_Mat]; - D.f[DIR_PPM] = &DDStart[DIR_PPM * size_Mat]; - D.f[DIR_MMM] = &DDStart[DIR_MMM * size_Mat]; - D.f[DIR_PMM] = &DDStart[DIR_PMM * size_Mat]; - D.f[DIR_MPM] = &DDStart[DIR_MPM * size_Mat]; + D.f[dP00] = &DDStart[dP00 * size_Mat]; + D.f[dM00] = &DDStart[dM00 * size_Mat]; + D.f[d0P0] = &DDStart[d0P0 * size_Mat]; + D.f[d0M0] = &DDStart[d0M0 * size_Mat]; + D.f[d00P] = &DDStart[d00P * size_Mat]; + D.f[d00M] = &DDStart[d00M * size_Mat]; + D.f[dPP0] = &DDStart[dPP0 * size_Mat]; + D.f[dMM0] = &DDStart[dMM0 * size_Mat]; + D.f[dPM0] = &DDStart[dPM0 * size_Mat]; + D.f[dMP0] = &DDStart[dMP0 * size_Mat]; + D.f[dP0P] = &DDStart[dP0P * size_Mat]; + D.f[dM0M] = &DDStart[dM0M * size_Mat]; + D.f[dP0M] = &DDStart[dP0M * size_Mat]; + D.f[dM0P] = &DDStart[dM0P * size_Mat]; + D.f[d0PP] = &DDStart[d0PP * size_Mat]; + D.f[d0MM] = &DDStart[d0MM * size_Mat]; + D.f[d0PM] = &DDStart[d0PM * size_Mat]; + D.f[d0MP] = &DDStart[d0MP * size_Mat]; + D.f[d000] = &DDStart[d000 * size_Mat]; + D.f[dPPP] = &DDStart[dPPP * size_Mat]; + D.f[dMMP] = &DDStart[dMMP * size_Mat]; + D.f[dPMP] = &DDStart[dPMP * size_Mat]; + D.f[dMPP] = &DDStart[dMPP * size_Mat]; + D.f[dPPM] = &DDStart[dPPM * size_Mat]; + D.f[dMMM] = &DDStart[dMMM * size_Mat]; + D.f[dPMM] = &DDStart[dPMM * size_Mat]; + D.f[dMPM] = &DDStart[dMPM * size_Mat]; } else { - D.f[DIR_M00] = &DDStart[DIR_P00 * size_Mat]; - D.f[DIR_P00] = &DDStart[DIR_M00 * size_Mat]; - D.f[DIR_0M0] = &DDStart[DIR_0P0 * size_Mat]; - D.f[DIR_0P0] = &DDStart[DIR_0M0 * size_Mat]; - D.f[DIR_00M] = &DDStart[DIR_00P * size_Mat]; - D.f[DIR_00P] = &DDStart[DIR_00M * size_Mat]; - D.f[DIR_MM0] = &DDStart[DIR_PP0 * size_Mat]; - D.f[DIR_PP0] = &DDStart[DIR_MM0 * size_Mat]; - D.f[DIR_MP0] = &DDStart[DIR_PM0 * size_Mat]; - D.f[DIR_PM0] = &DDStart[DIR_MP0 * size_Mat]; - D.f[DIR_M0M] = &DDStart[DIR_P0P * size_Mat]; - D.f[DIR_P0P] = &DDStart[DIR_M0M * size_Mat]; - D.f[DIR_M0P] = &DDStart[DIR_P0M * size_Mat]; - D.f[DIR_P0M] = &DDStart[DIR_M0P * size_Mat]; - D.f[DIR_0MM] = &DDStart[DIR_0PP * size_Mat]; - D.f[DIR_0PP] = &DDStart[DIR_0MM * size_Mat]; - D.f[DIR_0MP] = &DDStart[DIR_0PM * size_Mat]; - D.f[DIR_0PM] = &DDStart[DIR_0MP * size_Mat]; - D.f[DIR_000] = &DDStart[DIR_000 * size_Mat]; - D.f[DIR_MMM] = &DDStart[DIR_PPP * size_Mat]; - D.f[DIR_PPM] = &DDStart[DIR_MMP * size_Mat]; - D.f[DIR_MPM] = &DDStart[DIR_PMP * size_Mat]; - D.f[DIR_PMM] = &DDStart[DIR_MPP * size_Mat]; - D.f[DIR_MMP] = &DDStart[DIR_PPM * size_Mat]; - D.f[DIR_PPP] = &DDStart[DIR_MMM * size_Mat]; - D.f[DIR_MPP] = &DDStart[DIR_PMM * size_Mat]; - D.f[DIR_PMP] = &DDStart[DIR_MPM * size_Mat]; + D.f[dM00] = &DDStart[dP00 * size_Mat]; + D.f[dP00] = &DDStart[dM00 * size_Mat]; + D.f[d0M0] = &DDStart[d0P0 * size_Mat]; + D.f[d0P0] = &DDStart[d0M0 * size_Mat]; + D.f[d00M] = &DDStart[d00P * size_Mat]; + D.f[d00P] = &DDStart[d00M * size_Mat]; + D.f[dMM0] = &DDStart[dPP0 * size_Mat]; + D.f[dPP0] = &DDStart[dMM0 * size_Mat]; + D.f[dMP0] = &DDStart[dPM0 * size_Mat]; + D.f[dPM0] = &DDStart[dMP0 * size_Mat]; + D.f[dM0M] = &DDStart[dP0P * size_Mat]; + D.f[dP0P] = &DDStart[dM0M * size_Mat]; + D.f[dM0P] = &DDStart[dP0M * size_Mat]; + D.f[dP0M] = &DDStart[dM0P * size_Mat]; + D.f[d0MM] = &DDStart[d0PP * size_Mat]; + D.f[d0PP] = &DDStart[d0MM * size_Mat]; + D.f[d0MP] = &DDStart[d0PM * size_Mat]; + D.f[d0PM] = &DDStart[d0MP * size_Mat]; + D.f[d000] = &DDStart[d000 * size_Mat]; + D.f[dMMM] = &DDStart[dPPP * size_Mat]; + D.f[dPPM] = &DDStart[dMMP * size_Mat]; + D.f[dMPM] = &DDStart[dPMP * size_Mat]; + D.f[dPMM] = &DDStart[dMPP * size_Mat]; + D.f[dMMP] = &DDStart[dPPM * size_Mat]; + D.f[dPPP] = &DDStart[dMMM * size_Mat]; + D.f[dMPP] = &DDStart[dPMM * size_Mat]; + D.f[dPMP] = &DDStart[dMPM * size_Mat]; } //////////////////////////////////////////////////////////////////////////////// @@ -129,33 +129,33 @@ __global__ void K17CompressibleNavierStokesBulkViscosity_Device(real omega, //unsigned int ktne = k; unsigned int kbsw = neighborZ[ksw]; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real mfcbb = (D.f[DIR_P00])[k];//[ke ];// + c2over27 ;(D.f[DIR_P00])[k ];//ke - real mfabb = (D.f[DIR_M00])[kw];//[kw ];// + c2over27 ;(D.f[DIR_M00])[kw ]; - real mfbcb = (D.f[DIR_0P0])[k];//[kn ];// + c2over27 ;(D.f[DIR_0P0])[k ];//kn - real mfbab = (D.f[DIR_0M0])[ks];//[ks ];// + c2over27 ;(D.f[DIR_0M0])[ks ]; - real mfbbc = (D.f[DIR_00P])[k];//[kt ];// + c2over27 ;(D.f[DIR_00P])[k ];//kt - real mfbba = (D.f[DIR_00M])[kb];//[kb ];// + c2over27 ;(D.f[DIR_00M])[kb ]; - real mfccb = (D.f[DIR_PP0])[k];//[kne ];// + c1over54 ;(D.f[DIR_PP0])[k ];//kne - real mfaab = (D.f[DIR_MM0])[ksw];//[ksw ];// + c1over54 ;(D.f[DIR_MM0])[ksw]; - real mfcab = (D.f[DIR_PM0])[ks];//[kse ];// + c1over54 ;(D.f[DIR_PM0])[ks ];//kse - real mfacb = (D.f[DIR_MP0])[kw];//[knw ];// + c1over54 ;(D.f[DIR_MP0])[kw ];//knw - real mfcbc = (D.f[DIR_P0P])[k];//[kte ];// + c1over54 ;(D.f[DIR_P0P])[k ];//kte - real mfaba = (D.f[DIR_M0M])[kbw];//[kbw ];// + c1over54 ;(D.f[DIR_M0M])[kbw]; - real mfcba = (D.f[DIR_P0M])[kb];//[kbe ];// + c1over54 ;(D.f[DIR_P0M])[kb ];//kbe - real mfabc = (D.f[DIR_M0P])[kw];//[ktw ];// + c1over54 ;(D.f[DIR_M0P])[kw ];//ktw - real mfbcc = (D.f[DIR_0PP])[k];//[ktn ];// + c1over54 ;(D.f[DIR_0PP])[k ];//ktn - real mfbaa = (D.f[DIR_0MM])[kbs];//[kbs ];// + c1over54 ;(D.f[DIR_0MM])[kbs]; - real mfbca = (D.f[DIR_0PM])[kb];//[kbn ];// + c1over54 ;(D.f[DIR_0PM])[kb ];//kbn - real mfbac = (D.f[DIR_0MP])[ks];//[kts ];// + c1over54 ;(D.f[DIR_0MP])[ks ];//kts - real mfbbb = (D.f[DIR_000])[k];//[kzero];// + c8over27 ;(D.f[DIR_000])[k ];//kzero - real mfccc = (D.f[DIR_PPP])[k];//[ktne ];// + c1over216;(D.f[DIR_PPP])[k ];//ktne - real mfaac = (D.f[DIR_MMP])[ksw];//[ktsw ];// + c1over216;(D.f[DIR_MMP])[ksw];//ktsw - real mfcac = (D.f[DIR_PMP])[ks];//[ktse ];// + c1over216;(D.f[DIR_PMP])[ks ];//ktse - real mfacc = (D.f[DIR_MPP])[kw];//[ktnw ];// + c1over216;(D.f[DIR_MPP])[kw ];//ktnw - real mfcca = (D.f[DIR_PPM])[kb];//[kbne ];// + c1over216;(D.f[DIR_PPM])[kb ];//kbne - real mfaaa = (D.f[DIR_MMM])[kbsw];//[kbsw ];// + c1over216;(D.f[DIR_MMM])[kbsw]; - real mfcaa = (D.f[DIR_PMM])[kbs];//[kbse ];// + c1over216;(D.f[DIR_PMM])[kbs];//kbse - real mfaca = (D.f[DIR_MPM])[kbw];//[kbnw ];// + c1over216;(D.f[DIR_MPM])[kbw];//kbnw + real mfcbb = (D.f[dP00])[k];//[ke ];// + c2over27 ;(D.f[dP00])[k ];//ke + real mfabb = (D.f[dM00])[kw];//[kw ];// + c2over27 ;(D.f[dM00])[kw ]; + real mfbcb = (D.f[d0P0])[k];//[kn ];// + c2over27 ;(D.f[d0P0])[k ];//kn + real mfbab = (D.f[d0M0])[ks];//[ks ];// + c2over27 ;(D.f[d0M0])[ks ]; + real mfbbc = (D.f[d00P])[k];//[kt ];// + c2over27 ;(D.f[d00P])[k ];//kt + real mfbba = (D.f[d00M])[kb];//[kb ];// + c2over27 ;(D.f[d00M])[kb ]; + real mfccb = (D.f[dPP0])[k];//[kne ];// + c1over54 ;(D.f[dPP0])[k ];//kne + real mfaab = (D.f[dMM0])[ksw];//[ksw ];// + c1over54 ;(D.f[dMM0])[ksw]; + real mfcab = (D.f[dPM0])[ks];//[kse ];// + c1over54 ;(D.f[dPM0])[ks ];//kse + real mfacb = (D.f[dMP0])[kw];//[knw ];// + c1over54 ;(D.f[dMP0])[kw ];//knw + real mfcbc = (D.f[dP0P])[k];//[kte ];// + c1over54 ;(D.f[dP0P])[k ];//kte + real mfaba = (D.f[dM0M])[kbw];//[kbw ];// + c1over54 ;(D.f[dM0M])[kbw]; + real mfcba = (D.f[dP0M])[kb];//[kbe ];// + c1over54 ;(D.f[dP0M])[kb ];//kbe + real mfabc = (D.f[dM0P])[kw];//[ktw ];// + c1over54 ;(D.f[dM0P])[kw ];//ktw + real mfbcc = (D.f[d0PP])[k];//[ktn ];// + c1over54 ;(D.f[d0PP])[k ];//ktn + real mfbaa = (D.f[d0MM])[kbs];//[kbs ];// + c1over54 ;(D.f[d0MM])[kbs]; + real mfbca = (D.f[d0PM])[kb];//[kbn ];// + c1over54 ;(D.f[d0PM])[kb ];//kbn + real mfbac = (D.f[d0MP])[ks];//[kts ];// + c1over54 ;(D.f[d0MP])[ks ];//kts + real mfbbb = (D.f[d000])[k];//[kzero];// + c8over27 ;(D.f[d000])[k ];//kzero + real mfccc = (D.f[dPPP])[k];//[ktne ];// + c1over216;(D.f[dPPP])[k ];//ktne + real mfaac = (D.f[dMMP])[ksw];//[ktsw ];// + c1over216;(D.f[dMMP])[ksw];//ktsw + real mfcac = (D.f[dPMP])[ks];//[ktse ];// + c1over216;(D.f[dPMP])[ks ];//ktse + real mfacc = (D.f[dMPP])[kw];//[ktnw ];// + c1over216;(D.f[dMPP])[kw ];//ktnw + real mfcca = (D.f[dPPM])[kb];//[kbne ];// + c1over216;(D.f[dPPM])[kb ];//kbne + real mfaaa = (D.f[dMMM])[kbsw];//[kbsw ];// + c1over216;(D.f[dMMM])[kbsw]; + real mfcaa = (D.f[dPMM])[kbs];//[kbse ];// + c1over216;(D.f[dPMM])[kbs];//kbse + real mfaca = (D.f[dMPM])[kbw];//[kbnw ];// + c1over216;(D.f[dMPM])[kbw];//kbnw //////////////////////////////////////////////////////////////////////////////////// real drho = ((((mfccc + mfaaa) + (mfaca + mfcac)) + ((mfacc + mfcaa) + (mfaac + mfcca))) + (((mfbac + mfbca) + (mfbaa + mfbcc)) + ((mfabc + mfcba) + (mfaba + mfcbc)) + ((mfacb + mfcab) + (mfaab + mfccb))) + @@ -886,33 +886,33 @@ __global__ void K17CompressibleNavierStokesBulkViscosity_Device(real omega, //////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////// - (D.f[DIR_P00])[k] = mfabb;//(D.f[ DIR_P00 ])[ke ] = mfabb;// - c2over27 ; (D.f[ DIR_P00 ])[k ] - (D.f[DIR_M00])[kw] = mfcbb;//(D.f[ DIR_M00 ])[kw ] = mfcbb;// - c2over27 ; (D.f[ DIR_M00 ])[kw ] - (D.f[DIR_0P0])[k] = mfbab;//(D.f[ DIR_0P0 ])[kn ] = mfbab;// - c2over27 ; (D.f[ DIR_0P0 ])[k ] - (D.f[DIR_0M0])[ks] = mfbcb;//(D.f[ DIR_0M0 ])[ks ] = mfbcb;// - c2over27 ; (D.f[ DIR_0M0 ])[ks ] - (D.f[DIR_00P])[k] = mfbba;//(D.f[ DIR_00P ])[kt ] = mfbba;// - c2over27 ; (D.f[ DIR_00P ])[k ] - (D.f[DIR_00M])[kb] = mfbbc;//(D.f[ DIR_00M ])[kb ] = mfbbc;// - c2over27 ; (D.f[ DIR_00M ])[kb ] - (D.f[DIR_PP0])[k] = mfaab;//(D.f[ DIR_PP0 ])[kne ] = mfaab;// - c1over54 ; (D.f[ DIR_PP0 ])[k ] - (D.f[DIR_MM0])[ksw] = mfccb;//(D.f[ DIR_MM0 ])[ksw ] = mfccb;// - c1over54 ; (D.f[ DIR_MM0 ])[ksw ] - (D.f[DIR_PM0])[ks] = mfacb;//(D.f[ DIR_PM0 ])[kse ] = mfacb;// - c1over54 ; (D.f[ DIR_PM0 ])[ks ] - (D.f[DIR_MP0])[kw] = mfcab;//(D.f[ DIR_MP0 ])[knw ] = mfcab;// - c1over54 ; (D.f[ DIR_MP0 ])[kw ] - (D.f[DIR_P0P])[k] = mfaba;//(D.f[ DIR_P0P ])[kte ] = mfaba;// - c1over54 ; (D.f[ DIR_P0P ])[k ] - (D.f[DIR_M0M])[kbw] = mfcbc;//(D.f[ DIR_M0M ])[kbw ] = mfcbc;// - c1over54 ; (D.f[ DIR_M0M ])[kbw ] - (D.f[DIR_P0M])[kb] = mfabc;//(D.f[ DIR_P0M ])[kbe ] = mfabc;// - c1over54 ; (D.f[ DIR_P0M ])[kb ] - (D.f[DIR_M0P])[kw] = mfcba;//(D.f[ DIR_M0P ])[ktw ] = mfcba;// - c1over54 ; (D.f[ DIR_M0P ])[kw ] - (D.f[DIR_0PP])[k] = mfbaa;//(D.f[ DIR_0PP ])[ktn ] = mfbaa;// - c1over54 ; (D.f[ DIR_0PP ])[k ] - (D.f[DIR_0MM])[kbs] = mfbcc;//(D.f[ DIR_0MM ])[kbs ] = mfbcc;// - c1over54 ; (D.f[ DIR_0MM ])[kbs ] - (D.f[DIR_0PM])[kb] = mfbac;//(D.f[ DIR_0PM ])[kbn ] = mfbac;// - c1over54 ; (D.f[ DIR_0PM ])[kb ] - (D.f[DIR_0MP])[ks] = mfbca;//(D.f[ DIR_0MP ])[kts ] = mfbca;// - c1over54 ; (D.f[ DIR_0MP ])[ks ] - (D.f[DIR_000])[k] = mfbbb;//(D.f[ DIR_000])[kzero] = mfbbb;// - c8over27 ; (D.f[ DIR_000])[k ] - (D.f[DIR_PPP])[k] = mfaaa;//(D.f[ DIR_PPP ])[ktne ] = mfaaa;// - c1over216; (D.f[ DIR_PPP ])[k ] - (D.f[DIR_PMP])[ks] = mfaca;//(D.f[ DIR_PMP ])[ktse ] = mfaca;// - c1over216; (D.f[ DIR_PMP ])[ks ] - (D.f[DIR_PPM])[kb] = mfaac;//(D.f[ DIR_PPM ])[kbne ] = mfaac;// - c1over216; (D.f[ DIR_PPM ])[kb ] - (D.f[DIR_PMM])[kbs] = mfacc;//(D.f[ DIR_PMM ])[kbse ] = mfacc;// - c1over216; (D.f[ DIR_PMM ])[kbs ] - (D.f[DIR_MPP])[kw] = mfcaa;//(D.f[ DIR_MPP ])[ktnw ] = mfcaa;// - c1over216; (D.f[ DIR_MPP ])[kw ] - (D.f[DIR_MMP])[ksw] = mfcca;//(D.f[ DIR_MMP ])[ktsw ] = mfcca;// - c1over216; (D.f[ DIR_MMP ])[ksw ] - (D.f[DIR_MPM])[kbw] = mfcac;//(D.f[ DIR_MPM ])[kbnw ] = mfcac;// - c1over216; (D.f[ DIR_MPM ])[kbw ] - (D.f[DIR_MMM])[kbsw] = mfccc;//(D.f[ DIR_MMM ])[kbsw ] = mfccc;// - c1over216; (D.f[ DIR_MMM ])[kbsw] + (D.f[dP00])[k] = mfabb;//(D.f[ dP00 ])[ke ] = mfabb;// - c2over27 ; (D.f[ dP00 ])[k ] + (D.f[dM00])[kw] = mfcbb;//(D.f[ dM00 ])[kw ] = mfcbb;// - c2over27 ; (D.f[ dM00 ])[kw ] + (D.f[d0P0])[k] = mfbab;//(D.f[ d0P0 ])[kn ] = mfbab;// - c2over27 ; (D.f[ d0P0 ])[k ] + (D.f[d0M0])[ks] = mfbcb;//(D.f[ d0M0 ])[ks ] = mfbcb;// - c2over27 ; (D.f[ d0M0 ])[ks ] + (D.f[d00P])[k] = mfbba;//(D.f[ d00P ])[kt ] = mfbba;// - c2over27 ; (D.f[ d00P ])[k ] + (D.f[d00M])[kb] = mfbbc;//(D.f[ d00M ])[kb ] = mfbbc;// - c2over27 ; (D.f[ d00M ])[kb ] + (D.f[dPP0])[k] = mfaab;//(D.f[ dPP0 ])[kne ] = mfaab;// - c1over54 ; (D.f[ dPP0 ])[k ] + (D.f[dMM0])[ksw] = mfccb;//(D.f[ dMM0 ])[ksw ] = mfccb;// - c1over54 ; (D.f[ dMM0 ])[ksw ] + (D.f[dPM0])[ks] = mfacb;//(D.f[ dPM0 ])[kse ] = mfacb;// - c1over54 ; (D.f[ dPM0 ])[ks ] + (D.f[dMP0])[kw] = mfcab;//(D.f[ dMP0 ])[knw ] = mfcab;// - c1over54 ; (D.f[ dMP0 ])[kw ] + (D.f[dP0P])[k] = mfaba;//(D.f[ dP0P ])[kte ] = mfaba;// - c1over54 ; (D.f[ dP0P ])[k ] + (D.f[dM0M])[kbw] = mfcbc;//(D.f[ dM0M ])[kbw ] = mfcbc;// - c1over54 ; (D.f[ dM0M ])[kbw ] + (D.f[dP0M])[kb] = mfabc;//(D.f[ dP0M ])[kbe ] = mfabc;// - c1over54 ; (D.f[ dP0M ])[kb ] + (D.f[dM0P])[kw] = mfcba;//(D.f[ dM0P ])[ktw ] = mfcba;// - c1over54 ; (D.f[ dM0P ])[kw ] + (D.f[d0PP])[k] = mfbaa;//(D.f[ d0PP ])[ktn ] = mfbaa;// - c1over54 ; (D.f[ d0PP ])[k ] + (D.f[d0MM])[kbs] = mfbcc;//(D.f[ d0MM ])[kbs ] = mfbcc;// - c1over54 ; (D.f[ d0MM ])[kbs ] + (D.f[d0PM])[kb] = mfbac;//(D.f[ d0PM ])[kbn ] = mfbac;// - c1over54 ; (D.f[ d0PM ])[kb ] + (D.f[d0MP])[ks] = mfbca;//(D.f[ d0MP ])[kts ] = mfbca;// - c1over54 ; (D.f[ d0MP ])[ks ] + (D.f[d000])[k] = mfbbb;//(D.f[ d000])[kzero] = mfbbb;// - c8over27 ; (D.f[ d000])[k ] + (D.f[dPPP])[k] = mfaaa;//(D.f[ dPPP ])[ktne ] = mfaaa;// - c1over216; (D.f[ dPPP ])[k ] + (D.f[dPMP])[ks] = mfaca;//(D.f[ dPMP ])[ktse ] = mfaca;// - c1over216; (D.f[ dPMP ])[ks ] + (D.f[dPPM])[kb] = mfaac;//(D.f[ dPPM ])[kbne ] = mfaac;// - c1over216; (D.f[ dPPM ])[kb ] + (D.f[dPMM])[kbs] = mfacc;//(D.f[ dPMM ])[kbse ] = mfacc;// - c1over216; (D.f[ dPMM ])[kbs ] + (D.f[dMPP])[kw] = mfcaa;//(D.f[ dMPP ])[ktnw ] = mfcaa;// - c1over216; (D.f[ dMPP ])[kw ] + (D.f[dMMP])[ksw] = mfcca;//(D.f[ dMMP ])[ktsw ] = mfcca;// - c1over216; (D.f[ dMMP ])[ksw ] + (D.f[dMPM])[kbw] = mfcac;//(D.f[ dMPM ])[kbnw ] = mfcac;// - c1over216; (D.f[ dMPM ])[kbw ] + (D.f[dMMM])[kbsw] = mfccc;//(D.f[ dMMM ])[kbsw ] = mfccc;// - c1over216; (D.f[ dMMM ])[kbsw] //////////////////////////////////////////////////////////////////////////////////// } } diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/K17/K17CompressibleNavierStokesBulkViscosity_Device.cuh b/src/gpu/core/Kernel/Compressible/NavierStokes/K17/K17CompressibleNavierStokesBulkViscosity_Device.cuh similarity index 100% rename from src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/K17/K17CompressibleNavierStokesBulkViscosity_Device.cuh rename to src/gpu/core/Kernel/Compressible/NavierStokes/K17/K17CompressibleNavierStokesBulkViscosity_Device.cuh diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/K17/K17CompressibleNavierStokesChimeraLegacy.cu b/src/gpu/core/Kernel/Compressible/NavierStokes/K17/K17CompressibleNavierStokesChimeraLegacy.cu similarity index 100% rename from src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/K17/K17CompressibleNavierStokesChimeraLegacy.cu rename to src/gpu/core/Kernel/Compressible/NavierStokes/K17/K17CompressibleNavierStokesChimeraLegacy.cu diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/K17/K17CompressibleNavierStokesChimeraLegacy.h b/src/gpu/core/Kernel/Compressible/NavierStokes/K17/K17CompressibleNavierStokesChimeraLegacy.h similarity index 100% rename from src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/K17/K17CompressibleNavierStokesChimeraLegacy.h rename to src/gpu/core/Kernel/Compressible/NavierStokes/K17/K17CompressibleNavierStokesChimeraLegacy.h diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/K17/K17CompressibleNavierStokesChimeraLegacy_Device.cu b/src/gpu/core/Kernel/Compressible/NavierStokes/K17/K17CompressibleNavierStokesChimeraLegacy_Device.cu similarity index 83% rename from src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/K17/K17CompressibleNavierStokesChimeraLegacy_Device.cu rename to src/gpu/core/Kernel/Compressible/NavierStokes/K17/K17CompressibleNavierStokesChimeraLegacy_Device.cu index d796f38bca8b7c70940515db78160fe460a702f9..b54575fcc1ffe05ee82d7c9c60604cec5bffb90e 100644 --- a/src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/K17/K17CompressibleNavierStokesChimeraLegacy_Device.cu +++ b/src/gpu/core/Kernel/Compressible/NavierStokes/K17/K17CompressibleNavierStokesChimeraLegacy_Device.cu @@ -89,61 +89,61 @@ __global__ void K17CompressibleNavierStokesChimeraLegacy_Device( //! Distributions27 dist; if (isEvenTimestep) { - dist.f[DIR_P00] = &distributions[DIR_P00 * size_Mat]; - dist.f[DIR_M00] = &distributions[DIR_M00 * size_Mat]; - dist.f[DIR_0P0] = &distributions[DIR_0P0 * size_Mat]; - dist.f[DIR_0M0] = &distributions[DIR_0M0 * size_Mat]; - dist.f[DIR_00P] = &distributions[DIR_00P * size_Mat]; - dist.f[DIR_00M] = &distributions[DIR_00M * size_Mat]; - dist.f[DIR_PP0] = &distributions[DIR_PP0 * size_Mat]; - dist.f[DIR_MM0] = &distributions[DIR_MM0 * size_Mat]; - dist.f[DIR_PM0] = &distributions[DIR_PM0 * size_Mat]; - dist.f[DIR_MP0] = &distributions[DIR_MP0 * size_Mat]; - dist.f[DIR_P0P] = &distributions[DIR_P0P * size_Mat]; - dist.f[DIR_M0M] = &distributions[DIR_M0M * size_Mat]; - dist.f[DIR_P0M] = &distributions[DIR_P0M * size_Mat]; - dist.f[DIR_M0P] = &distributions[DIR_M0P * size_Mat]; - dist.f[DIR_0PP] = &distributions[DIR_0PP * size_Mat]; - dist.f[DIR_0MM] = &distributions[DIR_0MM * size_Mat]; - dist.f[DIR_0PM] = &distributions[DIR_0PM * size_Mat]; - dist.f[DIR_0MP] = &distributions[DIR_0MP * size_Mat]; - dist.f[DIR_000] = &distributions[DIR_000 * size_Mat]; - dist.f[DIR_PPP] = &distributions[DIR_PPP * size_Mat]; - dist.f[DIR_MMP] = &distributions[DIR_MMP * size_Mat]; - dist.f[DIR_PMP] = &distributions[DIR_PMP * size_Mat]; - dist.f[DIR_MPP] = &distributions[DIR_MPP * size_Mat]; - dist.f[DIR_PPM] = &distributions[DIR_PPM * size_Mat]; - dist.f[DIR_MMM] = &distributions[DIR_MMM * size_Mat]; - dist.f[DIR_PMM] = &distributions[DIR_PMM * size_Mat]; - dist.f[DIR_MPM] = &distributions[DIR_MPM * size_Mat]; + dist.f[dP00] = &distributions[dP00 * size_Mat]; + dist.f[dM00] = &distributions[dM00 * size_Mat]; + dist.f[d0P0] = &distributions[d0P0 * size_Mat]; + dist.f[d0M0] = &distributions[d0M0 * size_Mat]; + dist.f[d00P] = &distributions[d00P * size_Mat]; + dist.f[d00M] = &distributions[d00M * size_Mat]; + dist.f[dPP0] = &distributions[dPP0 * size_Mat]; + dist.f[dMM0] = &distributions[dMM0 * size_Mat]; + dist.f[dPM0] = &distributions[dPM0 * size_Mat]; + dist.f[dMP0] = &distributions[dMP0 * size_Mat]; + dist.f[dP0P] = &distributions[dP0P * size_Mat]; + dist.f[dM0M] = &distributions[dM0M * size_Mat]; + dist.f[dP0M] = &distributions[dP0M * size_Mat]; + dist.f[dM0P] = &distributions[dM0P * size_Mat]; + dist.f[d0PP] = &distributions[d0PP * size_Mat]; + dist.f[d0MM] = &distributions[d0MM * size_Mat]; + dist.f[d0PM] = &distributions[d0PM * size_Mat]; + dist.f[d0MP] = &distributions[d0MP * size_Mat]; + dist.f[d000] = &distributions[d000 * size_Mat]; + dist.f[dPPP] = &distributions[dPPP * size_Mat]; + dist.f[dMMP] = &distributions[dMMP * size_Mat]; + dist.f[dPMP] = &distributions[dPMP * size_Mat]; + dist.f[dMPP] = &distributions[dMPP * size_Mat]; + dist.f[dPPM] = &distributions[dPPM * size_Mat]; + dist.f[dMMM] = &distributions[dMMM * size_Mat]; + dist.f[dPMM] = &distributions[dPMM * size_Mat]; + dist.f[dMPM] = &distributions[dMPM * size_Mat]; } else { - dist.f[DIR_M00] = &distributions[DIR_P00 * size_Mat]; - dist.f[DIR_P00] = &distributions[DIR_M00 * size_Mat]; - dist.f[DIR_0M0] = &distributions[DIR_0P0 * size_Mat]; - dist.f[DIR_0P0] = &distributions[DIR_0M0 * size_Mat]; - dist.f[DIR_00M] = &distributions[DIR_00P * size_Mat]; - dist.f[DIR_00P] = &distributions[DIR_00M * size_Mat]; - dist.f[DIR_MM0] = &distributions[DIR_PP0 * size_Mat]; - dist.f[DIR_PP0] = &distributions[DIR_MM0 * size_Mat]; - dist.f[DIR_MP0] = &distributions[DIR_PM0 * size_Mat]; - dist.f[DIR_PM0] = &distributions[DIR_MP0 * size_Mat]; - dist.f[DIR_M0M] = &distributions[DIR_P0P * size_Mat]; - dist.f[DIR_P0P] = &distributions[DIR_M0M * size_Mat]; - dist.f[DIR_M0P] = &distributions[DIR_P0M * size_Mat]; - dist.f[DIR_P0M] = &distributions[DIR_M0P * size_Mat]; - dist.f[DIR_0MM] = &distributions[DIR_0PP * size_Mat]; - dist.f[DIR_0PP] = &distributions[DIR_0MM * size_Mat]; - dist.f[DIR_0MP] = &distributions[DIR_0PM * size_Mat]; - dist.f[DIR_0PM] = &distributions[DIR_0MP * size_Mat]; - dist.f[DIR_000] = &distributions[DIR_000 * size_Mat]; - dist.f[DIR_MMM] = &distributions[DIR_PPP * size_Mat]; - dist.f[DIR_PPM] = &distributions[DIR_MMP * size_Mat]; - dist.f[DIR_MPM] = &distributions[DIR_PMP * size_Mat]; - dist.f[DIR_PMM] = &distributions[DIR_MPP * size_Mat]; - dist.f[DIR_MMP] = &distributions[DIR_PPM * size_Mat]; - dist.f[DIR_PPP] = &distributions[DIR_MMM * size_Mat]; - dist.f[DIR_MPP] = &distributions[DIR_PMM * size_Mat]; - dist.f[DIR_PMP] = &distributions[DIR_MPM * size_Mat]; + dist.f[dM00] = &distributions[dP00 * size_Mat]; + dist.f[dP00] = &distributions[dM00 * size_Mat]; + dist.f[d0M0] = &distributions[d0P0 * size_Mat]; + dist.f[d0P0] = &distributions[d0M0 * size_Mat]; + dist.f[d00M] = &distributions[d00P * size_Mat]; + dist.f[d00P] = &distributions[d00M * size_Mat]; + dist.f[dMM0] = &distributions[dPP0 * size_Mat]; + dist.f[dPP0] = &distributions[dMM0 * size_Mat]; + dist.f[dMP0] = &distributions[dPM0 * size_Mat]; + dist.f[dPM0] = &distributions[dMP0 * size_Mat]; + dist.f[dM0M] = &distributions[dP0P * size_Mat]; + dist.f[dP0P] = &distributions[dM0M * size_Mat]; + dist.f[dM0P] = &distributions[dP0M * size_Mat]; + dist.f[dP0M] = &distributions[dM0P * size_Mat]; + dist.f[d0MM] = &distributions[d0PP * size_Mat]; + dist.f[d0PP] = &distributions[d0MM * size_Mat]; + dist.f[d0MP] = &distributions[d0PM * size_Mat]; + dist.f[d0PM] = &distributions[d0MP * size_Mat]; + dist.f[d000] = &distributions[d000 * size_Mat]; + dist.f[dMMM] = &distributions[dPPP * size_Mat]; + dist.f[dPPM] = &distributions[dMMP * size_Mat]; + dist.f[dMPM] = &distributions[dPMP * size_Mat]; + dist.f[dPMM] = &distributions[dMPP * size_Mat]; + dist.f[dMMP] = &distributions[dPPM * size_Mat]; + dist.f[dPPP] = &distributions[dMMM * size_Mat]; + dist.f[dMPP] = &distributions[dPMM * size_Mat]; + dist.f[dPMP] = &distributions[dMPM * size_Mat]; } //////////////////////////////////////////////////////////////////////////////// //! - Set neighbor indices (necessary for indirect addressing) @@ -157,33 +157,33 @@ __global__ void K17CompressibleNavierStokesChimeraLegacy_Device( //////////////////////////////////////////////////////////////////////////////////// //! - Set local distributions //! - real mfcbb = (dist.f[DIR_P00])[k]; - real mfabb = (dist.f[DIR_M00])[kw]; - real mfbcb = (dist.f[DIR_0P0])[k]; - real mfbab = (dist.f[DIR_0M0])[ks]; - real mfbbc = (dist.f[DIR_00P])[k]; - real mfbba = (dist.f[DIR_00M])[kb]; - real mfccb = (dist.f[DIR_PP0])[k]; - real mfaab = (dist.f[DIR_MM0])[ksw]; - real mfcab = (dist.f[DIR_PM0])[ks]; - real mfacb = (dist.f[DIR_MP0])[kw]; - real mfcbc = (dist.f[DIR_P0P])[k]; - real mfaba = (dist.f[DIR_M0M])[kbw]; - real mfcba = (dist.f[DIR_P0M])[kb]; - real mfabc = (dist.f[DIR_M0P])[kw]; - real mfbcc = (dist.f[DIR_0PP])[k]; - real mfbaa = (dist.f[DIR_0MM])[kbs]; - real mfbca = (dist.f[DIR_0PM])[kb]; - real mfbac = (dist.f[DIR_0MP])[ks]; - real mfbbb = (dist.f[DIR_000])[k]; - real mfccc = (dist.f[DIR_PPP])[k]; - real mfaac = (dist.f[DIR_MMP])[ksw]; - real mfcac = (dist.f[DIR_PMP])[ks]; - real mfacc = (dist.f[DIR_MPP])[kw]; - real mfcca = (dist.f[DIR_PPM])[kb]; - real mfaaa = (dist.f[DIR_MMM])[kbsw]; - real mfcaa = (dist.f[DIR_PMM])[kbs]; - real mfaca = (dist.f[DIR_MPM])[kbw]; + real mfcbb = (dist.f[dP00])[k]; + real mfabb = (dist.f[dM00])[kw]; + real mfbcb = (dist.f[d0P0])[k]; + real mfbab = (dist.f[d0M0])[ks]; + real mfbbc = (dist.f[d00P])[k]; + real mfbba = (dist.f[d00M])[kb]; + real mfccb = (dist.f[dPP0])[k]; + real mfaab = (dist.f[dMM0])[ksw]; + real mfcab = (dist.f[dPM0])[ks]; + real mfacb = (dist.f[dMP0])[kw]; + real mfcbc = (dist.f[dP0P])[k]; + real mfaba = (dist.f[dM0M])[kbw]; + real mfcba = (dist.f[dP0M])[kb]; + real mfabc = (dist.f[dM0P])[kw]; + real mfbcc = (dist.f[d0PP])[k]; + real mfbaa = (dist.f[d0MM])[kbs]; + real mfbca = (dist.f[d0PM])[kb]; + real mfbac = (dist.f[d0MP])[ks]; + real mfbbb = (dist.f[d000])[k]; + real mfccc = (dist.f[dPPP])[k]; + real mfaac = (dist.f[dMMP])[ksw]; + real mfcac = (dist.f[dPMP])[ks]; + real mfacc = (dist.f[dMPP])[kw]; + real mfcca = (dist.f[dPPM])[kb]; + real mfaaa = (dist.f[dMMM])[kbsw]; + real mfcaa = (dist.f[dPMM])[kbs]; + real mfaca = (dist.f[dMPM])[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), @@ -331,7 +331,7 @@ __global__ void K17CompressibleNavierStokesChimeraLegacy_Device( real O6 = c1o1; //////////////////////////////////////////////////////////////////////////////////// - //! - A and DIR_00M: parameters for fourth order convergence of the diffusion term according to Eq. (115) and (116) + //! - A and d00M: 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). @@ -624,32 +624,32 @@ __global__ void K17CompressibleNavierStokesChimeraLegacy_Device( //! <a href="https://doi.org/10.3390/computation5020019"><b>[ M. Geier et al. (2017), //! DOI:10.3390/computation5020019 ]</b></a> //! - (dist.f[DIR_P00])[k] = mfabb; - (dist.f[DIR_M00])[kw] = mfcbb; - (dist.f[DIR_0P0])[k] = mfbab; - (dist.f[DIR_0M0])[ks] = mfbcb; - (dist.f[DIR_00P])[k] = mfbba; - (dist.f[DIR_00M])[kb] = mfbbc; - (dist.f[DIR_PP0])[k] = mfaab; - (dist.f[DIR_MM0])[ksw] = mfccb; - (dist.f[DIR_PM0])[ks] = mfacb; - (dist.f[DIR_MP0])[kw] = mfcab; - (dist.f[DIR_P0P])[k] = mfaba; - (dist.f[DIR_M0M])[kbw] = mfcbc; - (dist.f[DIR_P0M])[kb] = mfabc; - (dist.f[DIR_M0P])[kw] = mfcba; - (dist.f[DIR_0PP])[k] = mfbaa; - (dist.f[DIR_0MM])[kbs] = mfbcc; - (dist.f[DIR_0PM])[kb] = mfbac; - (dist.f[DIR_0MP])[ks] = mfbca; - (dist.f[DIR_000])[k] = mfbbb; - (dist.f[DIR_PPP])[k] = mfaaa; - (dist.f[DIR_PMP])[ks] = mfaca; - (dist.f[DIR_PPM])[kb] = mfaac; - (dist.f[DIR_PMM])[kbs] = mfacc; - (dist.f[DIR_MPP])[kw] = mfcaa; - (dist.f[DIR_MMP])[ksw] = mfcca; - (dist.f[DIR_MPM])[kbw] = mfcac; - (dist.f[DIR_MMM])[kbsw] = mfccc; + (dist.f[dP00])[k] = mfabb; + (dist.f[dM00])[kw] = mfcbb; + (dist.f[d0P0])[k] = mfbab; + (dist.f[d0M0])[ks] = mfbcb; + (dist.f[d00P])[k] = mfbba; + (dist.f[d00M])[kb] = mfbbc; + (dist.f[dPP0])[k] = mfaab; + (dist.f[dMM0])[ksw] = mfccb; + (dist.f[dPM0])[ks] = mfacb; + (dist.f[dMP0])[kw] = mfcab; + (dist.f[dP0P])[k] = mfaba; + (dist.f[dM0M])[kbw] = mfcbc; + (dist.f[dP0M])[kb] = mfabc; + (dist.f[dM0P])[kw] = mfcba; + (dist.f[d0PP])[k] = mfbaa; + (dist.f[d0MM])[kbs] = mfbcc; + (dist.f[d0PM])[kb] = mfbac; + (dist.f[d0MP])[ks] = mfbca; + (dist.f[d000])[k] = mfbbb; + (dist.f[dPPP])[k] = mfaaa; + (dist.f[dPMP])[ks] = mfaca; + (dist.f[dPPM])[kb] = mfaac; + (dist.f[dPMM])[kbs] = mfacc; + (dist.f[dMPP])[kw] = mfcaa; + (dist.f[dMMP])[ksw] = mfcca; + (dist.f[dMPM])[kbw] = mfcac; + (dist.f[dMMM])[kbsw] = mfccc; } } \ No newline at end of file diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/K17/K17CompressibleNavierStokesChimeraLegacy_Device.cuh b/src/gpu/core/Kernel/Compressible/NavierStokes/K17/K17CompressibleNavierStokesChimeraLegacy_Device.cuh similarity index 100% rename from src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/K17/K17CompressibleNavierStokesChimeraLegacy_Device.cuh rename to src/gpu/core/Kernel/Compressible/NavierStokes/K17/K17CompressibleNavierStokesChimeraLegacy_Device.cuh diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/K17/K17CompressibleNavierStokesSecondDerivatesFrom5thCumulants.cu b/src/gpu/core/Kernel/Compressible/NavierStokes/K17/K17CompressibleNavierStokesSecondDerivatesFrom5thCumulants.cu similarity index 100% rename from src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/K17/K17CompressibleNavierStokesSecondDerivatesFrom5thCumulants.cu rename to src/gpu/core/Kernel/Compressible/NavierStokes/K17/K17CompressibleNavierStokesSecondDerivatesFrom5thCumulants.cu diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/K17/K17CompressibleNavierStokesSecondDerivatesFrom5thCumulants.h b/src/gpu/core/Kernel/Compressible/NavierStokes/K17/K17CompressibleNavierStokesSecondDerivatesFrom5thCumulants.h similarity index 100% rename from src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/K17/K17CompressibleNavierStokesSecondDerivatesFrom5thCumulants.h rename to src/gpu/core/Kernel/Compressible/NavierStokes/K17/K17CompressibleNavierStokesSecondDerivatesFrom5thCumulants.h diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/K17/K17CompressibleNavierStokesSecondDerivatesFrom5thCumulants_Device.cu b/src/gpu/core/Kernel/Compressible/NavierStokes/K17/K17CompressibleNavierStokesSecondDerivatesFrom5thCumulants_Device.cu similarity index 85% rename from src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/K17/K17CompressibleNavierStokesSecondDerivatesFrom5thCumulants_Device.cu rename to src/gpu/core/Kernel/Compressible/NavierStokes/K17/K17CompressibleNavierStokesSecondDerivatesFrom5thCumulants_Device.cu index 4919f56979ef004d3d74049feadc43895ad7cf28..54361f0a560cc4125767a9965413c2959e0b3b34 100644 --- a/src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/K17/K17CompressibleNavierStokesSecondDerivatesFrom5thCumulants_Device.cu +++ b/src/gpu/core/Kernel/Compressible/NavierStokes/K17/K17CompressibleNavierStokesSecondDerivatesFrom5thCumulants_Device.cu @@ -43,63 +43,63 @@ __global__ void K17CompressibleNavierStokesSecondDerivatesFrom5thCumulants_Devic Distributions27 D; if (EvenOrOdd == true) { - D.f[DIR_P00] = &DDStart[DIR_P00 * size_Mat]; - D.f[DIR_M00] = &DDStart[DIR_M00 * size_Mat]; - D.f[DIR_0P0] = &DDStart[DIR_0P0 * size_Mat]; - D.f[DIR_0M0] = &DDStart[DIR_0M0 * size_Mat]; - D.f[DIR_00P] = &DDStart[DIR_00P * size_Mat]; - D.f[DIR_00M] = &DDStart[DIR_00M * size_Mat]; - D.f[DIR_PP0] = &DDStart[DIR_PP0 * size_Mat]; - D.f[DIR_MM0] = &DDStart[DIR_MM0 * size_Mat]; - D.f[DIR_PM0] = &DDStart[DIR_PM0 * size_Mat]; - D.f[DIR_MP0] = &DDStart[DIR_MP0 * size_Mat]; - D.f[DIR_P0P] = &DDStart[DIR_P0P * size_Mat]; - D.f[DIR_M0M] = &DDStart[DIR_M0M * size_Mat]; - D.f[DIR_P0M] = &DDStart[DIR_P0M * size_Mat]; - D.f[DIR_M0P] = &DDStart[DIR_M0P * size_Mat]; - D.f[DIR_0PP] = &DDStart[DIR_0PP * size_Mat]; - D.f[DIR_0MM] = &DDStart[DIR_0MM * size_Mat]; - D.f[DIR_0PM] = &DDStart[DIR_0PM * size_Mat]; - D.f[DIR_0MP] = &DDStart[DIR_0MP * size_Mat]; - D.f[DIR_000] = &DDStart[DIR_000 * size_Mat]; - D.f[DIR_PPP] = &DDStart[DIR_PPP * size_Mat]; - D.f[DIR_MMP] = &DDStart[DIR_MMP * size_Mat]; - D.f[DIR_PMP] = &DDStart[DIR_PMP * size_Mat]; - D.f[DIR_MPP] = &DDStart[DIR_MPP * size_Mat]; - D.f[DIR_PPM] = &DDStart[DIR_PPM * size_Mat]; - D.f[DIR_MMM] = &DDStart[DIR_MMM * size_Mat]; - D.f[DIR_PMM] = &DDStart[DIR_PMM * size_Mat]; - D.f[DIR_MPM] = &DDStart[DIR_MPM * size_Mat]; + D.f[dP00] = &DDStart[dP00 * size_Mat]; + D.f[dM00] = &DDStart[dM00 * size_Mat]; + D.f[d0P0] = &DDStart[d0P0 * size_Mat]; + D.f[d0M0] = &DDStart[d0M0 * size_Mat]; + D.f[d00P] = &DDStart[d00P * size_Mat]; + D.f[d00M] = &DDStart[d00M * size_Mat]; + D.f[dPP0] = &DDStart[dPP0 * size_Mat]; + D.f[dMM0] = &DDStart[dMM0 * size_Mat]; + D.f[dPM0] = &DDStart[dPM0 * size_Mat]; + D.f[dMP0] = &DDStart[dMP0 * size_Mat]; + D.f[dP0P] = &DDStart[dP0P * size_Mat]; + D.f[dM0M] = &DDStart[dM0M * size_Mat]; + D.f[dP0M] = &DDStart[dP0M * size_Mat]; + D.f[dM0P] = &DDStart[dM0P * size_Mat]; + D.f[d0PP] = &DDStart[d0PP * size_Mat]; + D.f[d0MM] = &DDStart[d0MM * size_Mat]; + D.f[d0PM] = &DDStart[d0PM * size_Mat]; + D.f[d0MP] = &DDStart[d0MP * size_Mat]; + D.f[d000] = &DDStart[d000 * size_Mat]; + D.f[dPPP] = &DDStart[dPPP * size_Mat]; + D.f[dMMP] = &DDStart[dMMP * size_Mat]; + D.f[dPMP] = &DDStart[dPMP * size_Mat]; + D.f[dMPP] = &DDStart[dMPP * size_Mat]; + D.f[dPPM] = &DDStart[dPPM * size_Mat]; + D.f[dMMM] = &DDStart[dMMM * size_Mat]; + D.f[dPMM] = &DDStart[dPMM * size_Mat]; + D.f[dMPM] = &DDStart[dMPM * size_Mat]; } else { - D.f[DIR_M00] = &DDStart[DIR_P00 * size_Mat]; - D.f[DIR_P00] = &DDStart[DIR_M00 * size_Mat]; - D.f[DIR_0M0] = &DDStart[DIR_0P0 * size_Mat]; - D.f[DIR_0P0] = &DDStart[DIR_0M0 * size_Mat]; - D.f[DIR_00M] = &DDStart[DIR_00P * size_Mat]; - D.f[DIR_00P] = &DDStart[DIR_00M * size_Mat]; - D.f[DIR_MM0] = &DDStart[DIR_PP0 * size_Mat]; - D.f[DIR_PP0] = &DDStart[DIR_MM0 * size_Mat]; - D.f[DIR_MP0] = &DDStart[DIR_PM0 * size_Mat]; - D.f[DIR_PM0] = &DDStart[DIR_MP0 * size_Mat]; - D.f[DIR_M0M] = &DDStart[DIR_P0P * size_Mat]; - D.f[DIR_P0P] = &DDStart[DIR_M0M * size_Mat]; - D.f[DIR_M0P] = &DDStart[DIR_P0M * size_Mat]; - D.f[DIR_P0M] = &DDStart[DIR_M0P * size_Mat]; - D.f[DIR_0MM] = &DDStart[DIR_0PP * size_Mat]; - D.f[DIR_0PP] = &DDStart[DIR_0MM * size_Mat]; - D.f[DIR_0MP] = &DDStart[DIR_0PM * size_Mat]; - D.f[DIR_0PM] = &DDStart[DIR_0MP * size_Mat]; - D.f[DIR_000] = &DDStart[DIR_000 * size_Mat]; - D.f[DIR_MMM] = &DDStart[DIR_PPP * size_Mat]; - D.f[DIR_PPM] = &DDStart[DIR_MMP * size_Mat]; - D.f[DIR_MPM] = &DDStart[DIR_PMP * size_Mat]; - D.f[DIR_PMM] = &DDStart[DIR_MPP * size_Mat]; - D.f[DIR_MMP] = &DDStart[DIR_PPM * size_Mat]; - D.f[DIR_PPP] = &DDStart[DIR_MMM * size_Mat]; - D.f[DIR_MPP] = &DDStart[DIR_PMM * size_Mat]; - D.f[DIR_PMP] = &DDStart[DIR_MPM * size_Mat]; + D.f[dM00] = &DDStart[dP00 * size_Mat]; + D.f[dP00] = &DDStart[dM00 * size_Mat]; + D.f[d0M0] = &DDStart[d0P0 * size_Mat]; + D.f[d0P0] = &DDStart[d0M0 * size_Mat]; + D.f[d00M] = &DDStart[d00P * size_Mat]; + D.f[d00P] = &DDStart[d00M * size_Mat]; + D.f[dMM0] = &DDStart[dPP0 * size_Mat]; + D.f[dPP0] = &DDStart[dMM0 * size_Mat]; + D.f[dMP0] = &DDStart[dPM0 * size_Mat]; + D.f[dPM0] = &DDStart[dMP0 * size_Mat]; + D.f[dM0M] = &DDStart[dP0P * size_Mat]; + D.f[dP0P] = &DDStart[dM0M * size_Mat]; + D.f[dM0P] = &DDStart[dP0M * size_Mat]; + D.f[dP0M] = &DDStart[dM0P * size_Mat]; + D.f[d0MM] = &DDStart[d0PP * size_Mat]; + D.f[d0PP] = &DDStart[d0MM * size_Mat]; + D.f[d0MP] = &DDStart[d0PM * size_Mat]; + D.f[d0PM] = &DDStart[d0MP * size_Mat]; + D.f[d000] = &DDStart[d000 * size_Mat]; + D.f[dMMM] = &DDStart[dPPP * size_Mat]; + D.f[dPPM] = &DDStart[dMMP * size_Mat]; + D.f[dMPM] = &DDStart[dPMP * size_Mat]; + D.f[dPMM] = &DDStart[dMPP * size_Mat]; + D.f[dMMP] = &DDStart[dPPM * size_Mat]; + D.f[dPPP] = &DDStart[dMMM * size_Mat]; + D.f[dMPP] = &DDStart[dPMM * size_Mat]; + D.f[dPMP] = &DDStart[dMPM * size_Mat]; } //////////////////////////////////////////////////////////////////////////////// @@ -161,33 +161,33 @@ __global__ void K17CompressibleNavierStokesSecondDerivatesFrom5thCumulants_Devic //unsigned int kbsw = neighborZ[ksw]; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real mfcbb = (D.f[DIR_P00])[k];//[ke ];// + c2over27 ;(D.f[DIR_P00])[k ];//ke - real mfabb = (D.f[DIR_M00])[kw];//[kw ];// + c2over27 ;(D.f[DIR_M00])[kw ]; - real mfbcb = (D.f[DIR_0P0])[k];//[kn ];// + c2over27 ;(D.f[DIR_0P0])[k ];//kn - real mfbab = (D.f[DIR_0M0])[ks];//[ks ];// + c2over27 ;(D.f[DIR_0M0])[ks ]; - real mfbbc = (D.f[DIR_00P])[k];//[kt ];// + c2over27 ;(D.f[DIR_00P])[k ];//kt - real mfbba = (D.f[DIR_00M])[kb];//[kb ];// + c2over27 ;(D.f[DIR_00M])[kb ]; - real mfccb = (D.f[DIR_PP0])[k];//[kne ];// + c1over54 ;(D.f[DIR_PP0])[k ];//kne - real mfaab = (D.f[DIR_MM0])[ksw];//[ksw ];// + c1over54 ;(D.f[DIR_MM0])[ksw]; - real mfcab = (D.f[DIR_PM0])[ks];//[kse ];// + c1over54 ;(D.f[DIR_PM0])[ks ];//kse - real mfacb = (D.f[DIR_MP0])[kw];//[knw ];// + c1over54 ;(D.f[DIR_MP0])[kw ];//knw - real mfcbc = (D.f[DIR_P0P])[k];//[kte ];// + c1over54 ;(D.f[DIR_P0P])[k ];//kte - real mfaba = (D.f[DIR_M0M])[kbw];//[kbw ];// + c1over54 ;(D.f[DIR_M0M])[kbw]; - real mfcba = (D.f[DIR_P0M])[kb];//[kbe ];// + c1over54 ;(D.f[DIR_P0M])[kb ];//kbe - real mfabc = (D.f[DIR_M0P])[kw];//[ktw ];// + c1over54 ;(D.f[DIR_M0P])[kw ];//ktw - real mfbcc = (D.f[DIR_0PP])[k];//[ktn ];// + c1over54 ;(D.f[DIR_0PP])[k ];//ktn - real mfbaa = (D.f[DIR_0MM])[kbs];//[kbs ];// + c1over54 ;(D.f[DIR_0MM])[kbs]; - real mfbca = (D.f[DIR_0PM])[kb];//[kbn ];// + c1over54 ;(D.f[DIR_0PM])[kb ];//kbn - real mfbac = (D.f[DIR_0MP])[ks];//[kts ];// + c1over54 ;(D.f[DIR_0MP])[ks ];//kts - real mfbbb = (D.f[DIR_000])[k];//[kzero];// + c8over27 ;(D.f[DIR_000])[k ];//kzero - real mfccc = (D.f[DIR_PPP])[k];//[ktne ];// + c1over216;(D.f[DIR_PPP])[k ];//ktne - real mfaac = (D.f[DIR_MMP])[ksw];//[ktsw ];// + c1over216;(D.f[DIR_MMP])[ksw];//ktsw - real mfcac = (D.f[DIR_PMP])[ks];//[ktse ];// + c1over216;(D.f[DIR_PMP])[ks ];//ktse - real mfacc = (D.f[DIR_MPP])[kw];//[ktnw ];// + c1over216;(D.f[DIR_MPP])[kw ];//ktnw - real mfcca = (D.f[DIR_PPM])[kb];//[kbne ];// + c1over216;(D.f[DIR_PPM])[kb ];//kbne - real mfaaa = (D.f[DIR_MMM])[kbsw];//[kbsw ];// + c1over216;(D.f[DIR_MMM])[kbsw]; - real mfcaa = (D.f[DIR_PMM])[kbs];//[kbse ];// + c1over216;(D.f[DIR_PMM])[kbs];//kbse - real mfaca = (D.f[DIR_MPM])[kbw];//[kbnw ];// + c1over216;(D.f[DIR_MPM])[kbw];//kbnw + real mfcbb = (D.f[dP00])[k];//[ke ];// + c2over27 ;(D.f[dP00])[k ];//ke + real mfabb = (D.f[dM00])[kw];//[kw ];// + c2over27 ;(D.f[dM00])[kw ]; + real mfbcb = (D.f[d0P0])[k];//[kn ];// + c2over27 ;(D.f[d0P0])[k ];//kn + real mfbab = (D.f[d0M0])[ks];//[ks ];// + c2over27 ;(D.f[d0M0])[ks ]; + real mfbbc = (D.f[d00P])[k];//[kt ];// + c2over27 ;(D.f[d00P])[k ];//kt + real mfbba = (D.f[d00M])[kb];//[kb ];// + c2over27 ;(D.f[d00M])[kb ]; + real mfccb = (D.f[dPP0])[k];//[kne ];// + c1over54 ;(D.f[dPP0])[k ];//kne + real mfaab = (D.f[dMM0])[ksw];//[ksw ];// + c1over54 ;(D.f[dMM0])[ksw]; + real mfcab = (D.f[dPM0])[ks];//[kse ];// + c1over54 ;(D.f[dPM0])[ks ];//kse + real mfacb = (D.f[dMP0])[kw];//[knw ];// + c1over54 ;(D.f[dMP0])[kw ];//knw + real mfcbc = (D.f[dP0P])[k];//[kte ];// + c1over54 ;(D.f[dP0P])[k ];//kte + real mfaba = (D.f[dM0M])[kbw];//[kbw ];// + c1over54 ;(D.f[dM0M])[kbw]; + real mfcba = (D.f[dP0M])[kb];//[kbe ];// + c1over54 ;(D.f[dP0M])[kb ];//kbe + real mfabc = (D.f[dM0P])[kw];//[ktw ];// + c1over54 ;(D.f[dM0P])[kw ];//ktw + real mfbcc = (D.f[d0PP])[k];//[ktn ];// + c1over54 ;(D.f[d0PP])[k ];//ktn + real mfbaa = (D.f[d0MM])[kbs];//[kbs ];// + c1over54 ;(D.f[d0MM])[kbs]; + real mfbca = (D.f[d0PM])[kb];//[kbn ];// + c1over54 ;(D.f[d0PM])[kb ];//kbn + real mfbac = (D.f[d0MP])[ks];//[kts ];// + c1over54 ;(D.f[d0MP])[ks ];//kts + real mfbbb = (D.f[d000])[k];//[kzero];// + c8over27 ;(D.f[d000])[k ];//kzero + real mfccc = (D.f[dPPP])[k];//[ktne ];// + c1over216;(D.f[dPPP])[k ];//ktne + real mfaac = (D.f[dMMP])[ksw];//[ktsw ];// + c1over216;(D.f[dMMP])[ksw];//ktsw + real mfcac = (D.f[dPMP])[ks];//[ktse ];// + c1over216;(D.f[dPMP])[ks ];//ktse + real mfacc = (D.f[dMPP])[kw];//[ktnw ];// + c1over216;(D.f[dMPP])[kw ];//ktnw + real mfcca = (D.f[dPPM])[kb];//[kbne ];// + c1over216;(D.f[dPPM])[kb ];//kbne + real mfaaa = (D.f[dMMM])[kbsw];//[kbsw ];// + c1over216;(D.f[dMMM])[kbsw]; + real mfcaa = (D.f[dPMM])[kbs];//[kbse ];// + c1over216;(D.f[dPMM])[kbs];//kbse + real mfaca = (D.f[dMPM])[kbw];//[kbnw ];// + c1over216;(D.f[dMPM])[kbw];//kbnw //////////////////////////////////////////////////////////////////////////////////// real drho = ((((mfccc + mfaaa) + (mfaca + mfcac)) + ((mfacc + mfcaa) + (mfaac + mfcca))) + (((mfbac + mfbca) + (mfbaa + mfbcc)) + ((mfabc + mfcba) + (mfaba + mfcbc)) + ((mfacb + mfcab) + (mfaab + mfccb))) + @@ -1062,33 +1062,33 @@ __global__ void K17CompressibleNavierStokesSecondDerivatesFrom5thCumulants_Devic //////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////// - (D.f[DIR_P00])[k] = mfabb;//(D.f[ DIR_P00 ])[ke ] = mfabb;// - c2over27 ; (D.f[ DIR_P00 ])[k ] - (D.f[DIR_M00])[kw] = mfcbb;//(D.f[ DIR_M00 ])[kw ] = mfcbb;// - c2over27 ; (D.f[ DIR_M00 ])[kw ] - (D.f[DIR_0P0])[k] = mfbab;//(D.f[ DIR_0P0 ])[kn ] = mfbab;// - c2over27 ; (D.f[ DIR_0P0 ])[k ] - (D.f[DIR_0M0])[ks] = mfbcb;//(D.f[ DIR_0M0 ])[ks ] = mfbcb;// - c2over27 ; (D.f[ DIR_0M0 ])[ks ] - (D.f[DIR_00P])[k] = mfbba;//(D.f[ DIR_00P ])[kt ] = mfbba;// - c2over27 ; (D.f[ DIR_00P ])[k ] - (D.f[DIR_00M])[kb] = mfbbc;//(D.f[ DIR_00M ])[kb ] = mfbbc;// - c2over27 ; (D.f[ DIR_00M ])[kb ] - (D.f[DIR_PP0])[k] = mfaab;//(D.f[ DIR_PP0 ])[kne ] = mfaab;// - c1over54 ; (D.f[ DIR_PP0 ])[k ] - (D.f[DIR_MM0])[ksw] = mfccb;//(D.f[ DIR_MM0 ])[ksw ] = mfccb;// - c1over54 ; (D.f[ DIR_MM0 ])[ksw ] - (D.f[DIR_PM0])[ks] = mfacb;//(D.f[ DIR_PM0 ])[kse ] = mfacb;// - c1over54 ; (D.f[ DIR_PM0 ])[ks ] - (D.f[DIR_MP0])[kw] = mfcab;//(D.f[ DIR_MP0 ])[knw ] = mfcab;// - c1over54 ; (D.f[ DIR_MP0 ])[kw ] - (D.f[DIR_P0P])[k] = mfaba;//(D.f[ DIR_P0P ])[kte ] = mfaba;// - c1over54 ; (D.f[ DIR_P0P ])[k ] - (D.f[DIR_M0M])[kbw] = mfcbc;//(D.f[ DIR_M0M ])[kbw ] = mfcbc;// - c1over54 ; (D.f[ DIR_M0M ])[kbw ] - (D.f[DIR_P0M])[kb] = mfabc;//(D.f[ DIR_P0M ])[kbe ] = mfabc;// - c1over54 ; (D.f[ DIR_P0M ])[kb ] - (D.f[DIR_M0P])[kw] = mfcba;//(D.f[ DIR_M0P ])[ktw ] = mfcba;// - c1over54 ; (D.f[ DIR_M0P ])[kw ] - (D.f[DIR_0PP])[k] = mfbaa;//(D.f[ DIR_0PP ])[ktn ] = mfbaa;// - c1over54 ; (D.f[ DIR_0PP ])[k ] - (D.f[DIR_0MM])[kbs] = mfbcc;//(D.f[ DIR_0MM ])[kbs ] = mfbcc;// - c1over54 ; (D.f[ DIR_0MM ])[kbs ] - (D.f[DIR_0PM])[kb] = mfbac;//(D.f[ DIR_0PM ])[kbn ] = mfbac;// - c1over54 ; (D.f[ DIR_0PM ])[kb ] - (D.f[DIR_0MP])[ks] = mfbca;//(D.f[ DIR_0MP ])[kts ] = mfbca;// - c1over54 ; (D.f[ DIR_0MP ])[ks ] - (D.f[DIR_000])[k] = mfbbb;//(D.f[ DIR_000])[kzero] = mfbbb;// - c8over27 ; (D.f[ DIR_000])[k ] - (D.f[DIR_PPP])[k] = mfaaa;//(D.f[ DIR_PPP ])[ktne ] = mfaaa;// - c1over216; (D.f[ DIR_PPP ])[k ] - (D.f[DIR_PMP])[ks] = mfaca;//(D.f[ DIR_PMP ])[ktse ] = mfaca;// - c1over216; (D.f[ DIR_PMP ])[ks ] - (D.f[DIR_PPM])[kb] = mfaac;//(D.f[ DIR_PPM ])[kbne ] = mfaac;// - c1over216; (D.f[ DIR_PPM ])[kb ] - (D.f[DIR_PMM])[kbs] = mfacc;//(D.f[ DIR_PMM ])[kbse ] = mfacc;// - c1over216; (D.f[ DIR_PMM ])[kbs ] - (D.f[DIR_MPP])[kw] = mfcaa;//(D.f[ DIR_MPP ])[ktnw ] = mfcaa;// - c1over216; (D.f[ DIR_MPP ])[kw ] - (D.f[DIR_MMP])[ksw] = mfcca;//(D.f[ DIR_MMP ])[ktsw ] = mfcca;// - c1over216; (D.f[ DIR_MMP ])[ksw ] - (D.f[DIR_MPM])[kbw] = mfcac;//(D.f[ DIR_MPM ])[kbnw ] = mfcac;// - c1over216; (D.f[ DIR_MPM ])[kbw ] - (D.f[DIR_MMM])[kbsw] = mfccc;//(D.f[ DIR_MMM ])[kbsw ] = mfccc;// - c1over216; (D.f[ DIR_MMM ])[kbsw] + (D.f[dP00])[k] = mfabb;//(D.f[ dP00 ])[ke ] = mfabb;// - c2over27 ; (D.f[ dP00 ])[k ] + (D.f[dM00])[kw] = mfcbb;//(D.f[ dM00 ])[kw ] = mfcbb;// - c2over27 ; (D.f[ dM00 ])[kw ] + (D.f[d0P0])[k] = mfbab;//(D.f[ d0P0 ])[kn ] = mfbab;// - c2over27 ; (D.f[ d0P0 ])[k ] + (D.f[d0M0])[ks] = mfbcb;//(D.f[ d0M0 ])[ks ] = mfbcb;// - c2over27 ; (D.f[ d0M0 ])[ks ] + (D.f[d00P])[k] = mfbba;//(D.f[ d00P ])[kt ] = mfbba;// - c2over27 ; (D.f[ d00P ])[k ] + (D.f[d00M])[kb] = mfbbc;//(D.f[ d00M ])[kb ] = mfbbc;// - c2over27 ; (D.f[ d00M ])[kb ] + (D.f[dPP0])[k] = mfaab;//(D.f[ dPP0 ])[kne ] = mfaab;// - c1over54 ; (D.f[ dPP0 ])[k ] + (D.f[dMM0])[ksw] = mfccb;//(D.f[ dMM0 ])[ksw ] = mfccb;// - c1over54 ; (D.f[ dMM0 ])[ksw ] + (D.f[dPM0])[ks] = mfacb;//(D.f[ dPM0 ])[kse ] = mfacb;// - c1over54 ; (D.f[ dPM0 ])[ks ] + (D.f[dMP0])[kw] = mfcab;//(D.f[ dMP0 ])[knw ] = mfcab;// - c1over54 ; (D.f[ dMP0 ])[kw ] + (D.f[dP0P])[k] = mfaba;//(D.f[ dP0P ])[kte ] = mfaba;// - c1over54 ; (D.f[ dP0P ])[k ] + (D.f[dM0M])[kbw] = mfcbc;//(D.f[ dM0M ])[kbw ] = mfcbc;// - c1over54 ; (D.f[ dM0M ])[kbw ] + (D.f[dP0M])[kb] = mfabc;//(D.f[ dP0M ])[kbe ] = mfabc;// - c1over54 ; (D.f[ dP0M ])[kb ] + (D.f[dM0P])[kw] = mfcba;//(D.f[ dM0P ])[ktw ] = mfcba;// - c1over54 ; (D.f[ dM0P ])[kw ] + (D.f[d0PP])[k] = mfbaa;//(D.f[ d0PP ])[ktn ] = mfbaa;// - c1over54 ; (D.f[ d0PP ])[k ] + (D.f[d0MM])[kbs] = mfbcc;//(D.f[ d0MM ])[kbs ] = mfbcc;// - c1over54 ; (D.f[ d0MM ])[kbs ] + (D.f[d0PM])[kb] = mfbac;//(D.f[ d0PM ])[kbn ] = mfbac;// - c1over54 ; (D.f[ d0PM ])[kb ] + (D.f[d0MP])[ks] = mfbca;//(D.f[ d0MP ])[kts ] = mfbca;// - c1over54 ; (D.f[ d0MP ])[ks ] + (D.f[d000])[k] = mfbbb;//(D.f[ d000])[kzero] = mfbbb;// - c8over27 ; (D.f[ d000])[k ] + (D.f[dPPP])[k] = mfaaa;//(D.f[ dPPP ])[ktne ] = mfaaa;// - c1over216; (D.f[ dPPP ])[k ] + (D.f[dPMP])[ks] = mfaca;//(D.f[ dPMP ])[ktse ] = mfaca;// - c1over216; (D.f[ dPMP ])[ks ] + (D.f[dPPM])[kb] = mfaac;//(D.f[ dPPM ])[kbne ] = mfaac;// - c1over216; (D.f[ dPPM ])[kb ] + (D.f[dPMM])[kbs] = mfacc;//(D.f[ dPMM ])[kbse ] = mfacc;// - c1over216; (D.f[ dPMM ])[kbs ] + (D.f[dMPP])[kw] = mfcaa;//(D.f[ dMPP ])[ktnw ] = mfcaa;// - c1over216; (D.f[ dMPP ])[kw ] + (D.f[dMMP])[ksw] = mfcca;//(D.f[ dMMP ])[ktsw ] = mfcca;// - c1over216; (D.f[ dMMP ])[ksw ] + (D.f[dMPM])[kbw] = mfcac;//(D.f[ dMPM ])[kbnw ] = mfcac;// - c1over216; (D.f[ dMPM ])[kbw ] + (D.f[dMMM])[kbsw] = mfccc;//(D.f[ dMMM ])[kbsw ] = mfccc;// - c1over216; (D.f[ dMMM ])[kbsw] //////////////////////////////////////////////////////////////////////////////////// } } diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/K17/K17CompressibleNavierStokesSecondDerivatesFrom5thCumulants_Device.cuh b/src/gpu/core/Kernel/Compressible/NavierStokes/K17/K17CompressibleNavierStokesSecondDerivatesFrom5thCumulants_Device.cuh similarity index 100% rename from src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/K17/K17CompressibleNavierStokesSecondDerivatesFrom5thCumulants_Device.cuh rename to src/gpu/core/Kernel/Compressible/NavierStokes/K17/K17CompressibleNavierStokesSecondDerivatesFrom5thCumulants_Device.cuh diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/WaleKernels/FluidFlow/Compressible/CumulantK17/WaleCumulantK17Comp.cu b/src/gpu/core/Kernel/Compressible/NavierStokes/K17Wale/K17CompressibleNavierStokesWale.cu similarity index 63% rename from src/gpu/VirtualFluids_GPU/Kernel/Kernels/WaleKernels/FluidFlow/Compressible/CumulantK17/WaleCumulantK17Comp.cu rename to src/gpu/core/Kernel/Compressible/NavierStokes/K17Wale/K17CompressibleNavierStokesWale.cu index b7f4038c6b67cc4d1cf521bc7a904801650d1e8d..58de3b738d5dfba9f3a4ef7a83f239f9976d1ee9 100644 --- a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/WaleKernels/FluidFlow/Compressible/CumulantK17/WaleCumulantK17Comp.cu +++ b/src/gpu/core/Kernel/Compressible/NavierStokes/K17Wale/K17CompressibleNavierStokesWale.cu @@ -1,14 +1,14 @@ -#include "WaleCumulantK17Comp.h" +#include "K17CompressibleNavierStokesWale.h" -#include "WaleCumulantK17Comp_Device.cuh" +#include "K17CompressibleNavierStokesWale_Device.cuh" #include "Parameter/Parameter.h" -std::shared_ptr<WaleCumulantK17Comp> WaleCumulantK17Comp::getNewInstance(std::shared_ptr<Parameter> para, int level) +std::shared_ptr<K17CompressibleNavierStokesWale> K17CompressibleNavierStokesWale::getNewInstance(std::shared_ptr<Parameter> para, int level) { - return std::shared_ptr<WaleCumulantK17Comp>(new WaleCumulantK17Comp(para, level)); + return std::shared_ptr<K17CompressibleNavierStokesWale>(new K17CompressibleNavierStokesWale(para, level)); } -void WaleCumulantK17Comp::run() +void K17CompressibleNavierStokesWale::run() { int size_Mat = (int)para->getParD(level)->numberOfNodes; int numberOfThreads = para->getParD(level)->numberofthreads; @@ -32,7 +32,7 @@ void WaleCumulantK17Comp::run() dim3 grid(Grid1, Grid2, 1); dim3 threads(numberOfThreads, 1, 1); - LB_Kernel_WaleCumulantK17Comp <<< grid, threads >>>( + K17CompressibleNavierStokesWale_Device <<< grid, threads >>>( para->getParD(level)->omega, para->getParD(level)->typeOfGridNode, para->getParD(level)->neighborX, @@ -50,10 +50,10 @@ void WaleCumulantK17Comp::run() para->getForcesDev(), para->getQuadricLimitersDev(), para->getParD(level)->isEvenTimestep); - getLastCudaError("LB_Kernel_WaleCumulantK17Comp execution failed"); + getLastCudaError("K17CompressibleNavierStokesWale_Device execution failed"); } -WaleCumulantK17Comp::WaleCumulantK17Comp(std::shared_ptr<Parameter> para, int level) +K17CompressibleNavierStokesWale::K17CompressibleNavierStokesWale(std::shared_ptr<Parameter> para, int level) { this->para = para; this->level = level; @@ -63,6 +63,6 @@ WaleCumulantK17Comp::WaleCumulantK17Comp(std::shared_ptr<Parameter> para, int le } -WaleCumulantK17Comp::WaleCumulantK17Comp() +K17CompressibleNavierStokesWale::K17CompressibleNavierStokesWale() { } diff --git a/src/gpu/core/Kernel/Compressible/NavierStokes/K17Wale/K17CompressibleNavierStokesWale.h b/src/gpu/core/Kernel/Compressible/NavierStokes/K17Wale/K17CompressibleNavierStokesWale.h new file mode 100644 index 0000000000000000000000000000000000000000..2aa010e83c52392a8326b22ac658774d51cf7a42 --- /dev/null +++ b/src/gpu/core/Kernel/Compressible/NavierStokes/K17Wale/K17CompressibleNavierStokesWale.h @@ -0,0 +1,17 @@ +#ifndef K17CompressibleNavierStokesWale_H +#define K17CompressibleNavierStokesWale_H + +#include "Kernel/KernelImp.h" + +class K17CompressibleNavierStokesWale : public KernelImp +{ +public: + static std::shared_ptr<K17CompressibleNavierStokesWale> getNewInstance(std::shared_ptr< Parameter> para, int level); + void run(); + +private: + K17CompressibleNavierStokesWale(); + K17CompressibleNavierStokesWale(std::shared_ptr< Parameter> para, int level); + +}; +#endif \ No newline at end of file diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/WaleKernels/FluidFlow/Compressible/CumulantK17/WaleCumulantK17Comp_Device.cu b/src/gpu/core/Kernel/Compressible/NavierStokes/K17Wale/K17CompressibleNavierStokesWale_Device.cu similarity index 90% rename from src/gpu/VirtualFluids_GPU/Kernel/Kernels/WaleKernels/FluidFlow/Compressible/CumulantK17/WaleCumulantK17Comp_Device.cu rename to src/gpu/core/Kernel/Compressible/NavierStokes/K17Wale/K17CompressibleNavierStokesWale_Device.cu index 71d3ed0604feb43422e3e738bb2ca9bca147ab17..c51f047aeb4de412d4001e8dee8337c072dea743 100644 --- a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/WaleKernels/FluidFlow/Compressible/CumulantK17/WaleCumulantK17Comp_Device.cu +++ b/src/gpu/core/Kernel/Compressible/NavierStokes/K17Wale/K17CompressibleNavierStokesWale_Device.cu @@ -6,7 +6,7 @@ using namespace vf::basics::constant; using namespace vf::lbm::dir; #include "math.h" -__global__ void LB_Kernel_WaleCumulantK17Comp( +__global__ void K17CompressibleNavierStokesWale_Device( real omega_in, unsigned int* bcMatD, unsigned int* neighborX, @@ -47,63 +47,63 @@ __global__ void LB_Kernel_WaleCumulantK17Comp( Distributions27 D; if (EvenOrOdd==true) { - D.f[DIR_P00] = &DDStart[DIR_P00 * size_Mat]; - D.f[DIR_M00] = &DDStart[DIR_M00 * size_Mat]; - D.f[DIR_0P0] = &DDStart[DIR_0P0 * size_Mat]; - D.f[DIR_0M0] = &DDStart[DIR_0M0 * size_Mat]; - D.f[DIR_00P] = &DDStart[DIR_00P * size_Mat]; - D.f[DIR_00M] = &DDStart[DIR_00M * size_Mat]; - D.f[DIR_PP0] = &DDStart[DIR_PP0 * size_Mat]; - D.f[DIR_MM0] = &DDStart[DIR_MM0 * size_Mat]; - D.f[DIR_PM0] = &DDStart[DIR_PM0 * size_Mat]; - D.f[DIR_MP0] = &DDStart[DIR_MP0 * size_Mat]; - D.f[DIR_P0P] = &DDStart[DIR_P0P * size_Mat]; - D.f[DIR_M0M] = &DDStart[DIR_M0M * size_Mat]; - D.f[DIR_P0M] = &DDStart[DIR_P0M * size_Mat]; - D.f[DIR_M0P] = &DDStart[DIR_M0P * size_Mat]; - D.f[DIR_0PP] = &DDStart[DIR_0PP * size_Mat]; - D.f[DIR_0MM] = &DDStart[DIR_0MM * size_Mat]; - D.f[DIR_0PM] = &DDStart[DIR_0PM * size_Mat]; - D.f[DIR_0MP] = &DDStart[DIR_0MP * size_Mat]; - D.f[DIR_000] = &DDStart[DIR_000 * size_Mat]; - D.f[DIR_PPP] = &DDStart[DIR_PPP * size_Mat]; - D.f[DIR_MMP] = &DDStart[DIR_MMP * size_Mat]; - D.f[DIR_PMP] = &DDStart[DIR_PMP * size_Mat]; - D.f[DIR_MPP] = &DDStart[DIR_MPP * size_Mat]; - D.f[DIR_PPM] = &DDStart[DIR_PPM * size_Mat]; - D.f[DIR_MMM] = &DDStart[DIR_MMM * size_Mat]; - D.f[DIR_PMM] = &DDStart[DIR_PMM * size_Mat]; - D.f[DIR_MPM] = &DDStart[DIR_MPM * size_Mat]; + D.f[dP00] = &DDStart[dP00 * size_Mat]; + D.f[dM00] = &DDStart[dM00 * size_Mat]; + D.f[d0P0] = &DDStart[d0P0 * size_Mat]; + D.f[d0M0] = &DDStart[d0M0 * size_Mat]; + D.f[d00P] = &DDStart[d00P * size_Mat]; + D.f[d00M] = &DDStart[d00M * size_Mat]; + D.f[dPP0] = &DDStart[dPP0 * size_Mat]; + D.f[dMM0] = &DDStart[dMM0 * size_Mat]; + D.f[dPM0] = &DDStart[dPM0 * size_Mat]; + D.f[dMP0] = &DDStart[dMP0 * size_Mat]; + D.f[dP0P] = &DDStart[dP0P * size_Mat]; + D.f[dM0M] = &DDStart[dM0M * size_Mat]; + D.f[dP0M] = &DDStart[dP0M * size_Mat]; + D.f[dM0P] = &DDStart[dM0P * size_Mat]; + D.f[d0PP] = &DDStart[d0PP * size_Mat]; + D.f[d0MM] = &DDStart[d0MM * size_Mat]; + D.f[d0PM] = &DDStart[d0PM * size_Mat]; + D.f[d0MP] = &DDStart[d0MP * size_Mat]; + D.f[d000] = &DDStart[d000 * size_Mat]; + D.f[dPPP] = &DDStart[dPPP * size_Mat]; + D.f[dMMP] = &DDStart[dMMP * size_Mat]; + D.f[dPMP] = &DDStart[dPMP * size_Mat]; + D.f[dMPP] = &DDStart[dMPP * size_Mat]; + D.f[dPPM] = &DDStart[dPPM * size_Mat]; + D.f[dMMM] = &DDStart[dMMM * size_Mat]; + D.f[dPMM] = &DDStart[dPMM * size_Mat]; + D.f[dMPM] = &DDStart[dMPM * size_Mat]; } else { - D.f[DIR_M00] = &DDStart[DIR_P00 * size_Mat]; - D.f[DIR_P00] = &DDStart[DIR_M00 * size_Mat]; - D.f[DIR_0M0] = &DDStart[DIR_0P0 * size_Mat]; - D.f[DIR_0P0] = &DDStart[DIR_0M0 * size_Mat]; - D.f[DIR_00M] = &DDStart[DIR_00P * size_Mat]; - D.f[DIR_00P] = &DDStart[DIR_00M * size_Mat]; - D.f[DIR_MM0] = &DDStart[DIR_PP0 * size_Mat]; - D.f[DIR_PP0] = &DDStart[DIR_MM0 * size_Mat]; - D.f[DIR_MP0] = &DDStart[DIR_PM0 * size_Mat]; - D.f[DIR_PM0] = &DDStart[DIR_MP0 * size_Mat]; - D.f[DIR_M0M] = &DDStart[DIR_P0P * size_Mat]; - D.f[DIR_P0P] = &DDStart[DIR_M0M * size_Mat]; - D.f[DIR_M0P] = &DDStart[DIR_P0M * size_Mat]; - D.f[DIR_P0M] = &DDStart[DIR_M0P * size_Mat]; - D.f[DIR_0MM] = &DDStart[DIR_0PP * size_Mat]; - D.f[DIR_0PP] = &DDStart[DIR_0MM * size_Mat]; - D.f[DIR_0MP] = &DDStart[DIR_0PM * size_Mat]; - D.f[DIR_0PM] = &DDStart[DIR_0MP * size_Mat]; - D.f[DIR_000] = &DDStart[DIR_000 * size_Mat]; - D.f[DIR_MMM] = &DDStart[DIR_PPP * size_Mat]; - D.f[DIR_PPM] = &DDStart[DIR_MMP * size_Mat]; - D.f[DIR_MPM] = &DDStart[DIR_PMP * size_Mat]; - D.f[DIR_PMM] = &DDStart[DIR_MPP * size_Mat]; - D.f[DIR_MMP] = &DDStart[DIR_PPM * size_Mat]; - D.f[DIR_PPP] = &DDStart[DIR_MMM * size_Mat]; - D.f[DIR_MPP] = &DDStart[DIR_PMM * size_Mat]; - D.f[DIR_PMP] = &DDStart[DIR_MPM * size_Mat]; + D.f[dM00] = &DDStart[dP00 * size_Mat]; + D.f[dP00] = &DDStart[dM00 * size_Mat]; + D.f[d0M0] = &DDStart[d0P0 * size_Mat]; + D.f[d0P0] = &DDStart[d0M0 * size_Mat]; + D.f[d00M] = &DDStart[d00P * size_Mat]; + D.f[d00P] = &DDStart[d00M * size_Mat]; + D.f[dMM0] = &DDStart[dPP0 * size_Mat]; + D.f[dPP0] = &DDStart[dMM0 * size_Mat]; + D.f[dMP0] = &DDStart[dPM0 * size_Mat]; + D.f[dPM0] = &DDStart[dMP0 * size_Mat]; + D.f[dM0M] = &DDStart[dP0P * size_Mat]; + D.f[dP0P] = &DDStart[dM0M * size_Mat]; + D.f[dM0P] = &DDStart[dP0M * size_Mat]; + D.f[dP0M] = &DDStart[dM0P * size_Mat]; + D.f[d0MM] = &DDStart[d0PP * size_Mat]; + D.f[d0PP] = &DDStart[d0MM * size_Mat]; + D.f[d0MP] = &DDStart[d0PM * size_Mat]; + D.f[d0PM] = &DDStart[d0MP * size_Mat]; + D.f[d000] = &DDStart[d000 * size_Mat]; + D.f[dMMM] = &DDStart[dPPP * size_Mat]; + D.f[dPPM] = &DDStart[dMMP * size_Mat]; + D.f[dMPM] = &DDStart[dPMP * size_Mat]; + D.f[dPMM] = &DDStart[dMPP * size_Mat]; + D.f[dMMP] = &DDStart[dPPM * size_Mat]; + D.f[dPPP] = &DDStart[dMMM * size_Mat]; + D.f[dMPP] = &DDStart[dPMM * size_Mat]; + D.f[dPMP] = &DDStart[dMPM * size_Mat]; } //////////////////////////////////////////////////////////////////////////////// @@ -137,33 +137,33 @@ __global__ void LB_Kernel_WaleCumulantK17Comp( unsigned int kbsw = neighborZ[ksw]; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real mfcbb = (D.f[DIR_P00])[k ]; - real mfabb = (D.f[DIR_M00])[kw ]; - real mfbcb = (D.f[DIR_0P0])[k ]; - real mfbab = (D.f[DIR_0M0])[ks ]; - real mfbbc = (D.f[DIR_00P])[k ]; - real mfbba = (D.f[DIR_00M])[kb ]; - real mfccb = (D.f[DIR_PP0])[k ]; - real mfaab = (D.f[DIR_MM0])[ksw]; - real mfcab = (D.f[DIR_PM0])[ks ]; - real mfacb = (D.f[DIR_MP0])[kw ]; - real mfcbc = (D.f[DIR_P0P])[k ]; - real mfaba = (D.f[DIR_M0M])[kbw]; - real mfcba = (D.f[DIR_P0M])[kb ]; - real mfabc = (D.f[DIR_M0P])[kw ]; - real mfbcc = (D.f[DIR_0PP])[k ]; - real mfbaa = (D.f[DIR_0MM])[kbs]; - real mfbca = (D.f[DIR_0PM])[kb ]; - real mfbac = (D.f[DIR_0MP])[ks ]; - real mfbbb = (D.f[DIR_000])[k ]; - real mfccc = (D.f[DIR_PPP])[k ]; - real mfaac = (D.f[DIR_MMP])[ksw]; - real mfcac = (D.f[DIR_PMP])[ks ]; - real mfacc = (D.f[DIR_MPP])[kw ]; - real mfcca = (D.f[DIR_PPM])[kb ]; - real mfaaa = (D.f[DIR_MMM])[kbsw]; - real mfcaa = (D.f[DIR_PMM])[kbs]; - real mfaca = (D.f[DIR_MPM])[kbw]; + real mfcbb = (D.f[dP00])[k ]; + real mfabb = (D.f[dM00])[kw ]; + real mfbcb = (D.f[d0P0])[k ]; + real mfbab = (D.f[d0M0])[ks ]; + real mfbbc = (D.f[d00P])[k ]; + real mfbba = (D.f[d00M])[kb ]; + real mfccb = (D.f[dPP0])[k ]; + real mfaab = (D.f[dMM0])[ksw]; + real mfcab = (D.f[dPM0])[ks ]; + real mfacb = (D.f[dMP0])[kw ]; + real mfcbc = (D.f[dP0P])[k ]; + real mfaba = (D.f[dM0M])[kbw]; + real mfcba = (D.f[dP0M])[kb ]; + real mfabc = (D.f[dM0P])[kw ]; + real mfbcc = (D.f[d0PP])[k ]; + real mfbaa = (D.f[d0MM])[kbs]; + real mfbca = (D.f[d0PM])[kb ]; + real mfbac = (D.f[d0MP])[ks ]; + real mfbbb = (D.f[d000])[k ]; + real mfccc = (D.f[dPPP])[k ]; + real mfaac = (D.f[dMMP])[ksw]; + real mfcac = (D.f[dPMP])[ks ]; + real mfacc = (D.f[dMPP])[kw ]; + real mfcca = (D.f[dPPM])[kb ]; + real mfaaa = (D.f[dMMM])[kbsw]; + real mfcaa = (D.f[dPMM])[kbs]; + real mfaca = (D.f[dMPM])[kbw]; //////////////////////////////////////////////////////////////////////////////////// real drho = ((((mfccc+mfaaa) + (mfaca+mfcac)) + ((mfacc+mfcaa) + (mfaac+mfcca))) + (((mfbac+mfbca) + (mfbaa+mfbcc)) + ((mfabc+mfcba) + (mfaba+mfcbc)) + ((mfacb+mfcab) + (mfaab+mfccb))) + @@ -421,9 +421,9 @@ __global__ void LB_Kernel_WaleCumulantK17Comp( //real SumSDsq = SumSd * SumSd; real SumSsq = SumS; real SumSDsq = SumSd; - //nuTurb = powf(delta, two) * powf(SumSDsq, c3o2) / (powf(SumSsq, c5o2) + powf(SumSDsq, c5o4) + smallSingle); //powf - //nuTurb = pow(delta, two) * pow(SumSDsq, c3o2) / (pow(SumSsq, c5o2) + pow(SumSDsq, c5o4) + smallSingle); //pow - //nuTurb = (delta * delta) * (real)pow((double)SumSDsq, 1.5) / ((real)pow((double)SumSsq, 2.5) + (real)pow((double)SumSDsq, 1.25) + smallSingle); //SMversion// + //nuTurb = powf(delta, two) * powf(SumSDsq, c3o2) / (powf(SumSsq, c5o2) + powf(SumSDsq, c5o4) + cSmallSingle); //powf + //nuTurb = pow(delta, two) * pow(SumSDsq, c3o2) / (pow(SumSsq, c5o2) + pow(SumSDsq, c5o4) + cSmallSingle); //pow + //nuTurb = (delta * delta) * (real)pow((double)SumSDsq, 1.5) / ((real)pow((double)SumSsq, 2.5) + (real)pow((double)SumSDsq, 1.25) + cSmallSingle); //SMversion// nuTurb = (delta * delta) * (real)pow((double)SumSDsq, 0.25) / ((real)pow(((double)pow((double)SumSsq, 0.5) / ((real)pow((double)SumSDsq, 0.25) + c10eM10)), 5.0) + c1o1); //SMversion2// ///////////////////////////////// @@ -1142,33 +1142,33 @@ __global__ void LB_Kernel_WaleCumulantK17Comp( //////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////// - (D.f[ DIR_P00 ])[k ] = mfabb; - (D.f[ DIR_M00 ])[kw ] = mfcbb; - (D.f[ DIR_0P0 ])[k ] = mfbab; - (D.f[ DIR_0M0 ])[ks ] = mfbcb; - (D.f[ DIR_00P ])[k ] = mfbba; - (D.f[ DIR_00M ])[kb ] = mfbbc; - (D.f[ DIR_PP0 ])[k ] = mfaab; - (D.f[ DIR_MM0 ])[ksw ] = mfccb; - (D.f[ DIR_PM0 ])[ks ] = mfacb; - (D.f[ DIR_MP0 ])[kw ] = mfcab; - (D.f[ DIR_P0P ])[k ] = mfaba; - (D.f[ DIR_M0M ])[kbw ] = mfcbc; - (D.f[ DIR_P0M ])[kb ] = mfabc; - (D.f[ DIR_M0P ])[kw ] = mfcba; - (D.f[ DIR_0PP ])[k ] = mfbaa; - (D.f[ DIR_0MM ])[kbs ] = mfbcc; - (D.f[ DIR_0PM ])[kb ] = mfbac; - (D.f[ DIR_0MP ])[ks ] = mfbca; - (D.f[ DIR_000 ])[k ] = mfbbb; - (D.f[ DIR_PPP ])[k ] = mfaaa; - (D.f[ DIR_PMP ])[ks ] = mfaca; - (D.f[ DIR_PPM ])[kb ] = mfaac; - (D.f[ DIR_PMM ])[kbs ] = mfacc; - (D.f[ DIR_MPP ])[kw ] = mfcaa; - (D.f[ DIR_MMP ])[ksw ] = mfcca; - (D.f[ DIR_MPM ])[kbw ] = mfcac; - (D.f[ DIR_MMM ])[kbsw] = mfccc; + (D.f[ dP00 ])[k ] = mfabb; + (D.f[ dM00 ])[kw ] = mfcbb; + (D.f[ d0P0 ])[k ] = mfbab; + (D.f[ d0M0 ])[ks ] = mfbcb; + (D.f[ d00P ])[k ] = mfbba; + (D.f[ d00M ])[kb ] = mfbbc; + (D.f[ dPP0 ])[k ] = mfaab; + (D.f[ dMM0 ])[ksw ] = mfccb; + (D.f[ dPM0 ])[ks ] = mfacb; + (D.f[ dMP0 ])[kw ] = mfcab; + (D.f[ dP0P ])[k ] = mfaba; + (D.f[ dM0M ])[kbw ] = mfcbc; + (D.f[ dP0M ])[kb ] = mfabc; + (D.f[ dM0P ])[kw ] = mfcba; + (D.f[ d0PP ])[k ] = mfbaa; + (D.f[ d0MM ])[kbs ] = mfbcc; + (D.f[ d0PM ])[kb ] = mfbac; + (D.f[ d0MP ])[ks ] = mfbca; + (D.f[ d000 ])[k ] = mfbbb; + (D.f[ dPPP ])[k ] = mfaaa; + (D.f[ dPMP ])[ks ] = mfaca; + (D.f[ dPPM ])[kb ] = mfaac; + (D.f[ dPMM ])[kbs ] = mfacc; + (D.f[ dMPP ])[kw ] = mfcaa; + (D.f[ dMMP ])[ksw ] = mfcca; + (D.f[ dMPM ])[kbw ] = mfcac; + (D.f[ dMMM ])[kbsw] = mfccc; //////////////////////////////////////////////////////////////////////////////////// } } diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/WaleKernels/FluidFlow/Compressible/CumulantK17/WaleCumulantK17Comp_Device.cuh b/src/gpu/core/Kernel/Compressible/NavierStokes/K17Wale/K17CompressibleNavierStokesWale_Device.cuh similarity index 71% rename from src/gpu/VirtualFluids_GPU/Kernel/Kernels/WaleKernels/FluidFlow/Compressible/CumulantK17/WaleCumulantK17Comp_Device.cuh rename to src/gpu/core/Kernel/Compressible/NavierStokes/K17Wale/K17CompressibleNavierStokesWale_Device.cuh index 459c833e2bd3f0bfd2a0c214a9d366bcfb3a4b49..6f6cc80f498d707e97876b350ff7e53d8c713f32 100644 --- a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/WaleKernels/FluidFlow/Compressible/CumulantK17/WaleCumulantK17Comp_Device.cuh +++ b/src/gpu/core/Kernel/Compressible/NavierStokes/K17Wale/K17CompressibleNavierStokesWale_Device.cuh @@ -1,10 +1,10 @@ -#ifndef LB_KERNEL_WALE_CUMULANT_K17_COMP_H -#define LB_KERNEL_WALE_CUMULANT_K17_COMP_H +#ifndef K17CompressibleNavierStokesWale_Device_H +#define K17CompressibleNavierStokesWale_Device_H #include <DataTypes.h> #include <curand.h> -__global__ void LB_Kernel_WaleCumulantK17Comp( +__global__ void K17CompressibleNavierStokesWale_Device( real omega, unsigned int* bcMatD, unsigned int* neighborX, diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/WaleKernels/FluidFlow/Compressible/CumulantK17Debug/WaleCumulantK17DebugComp.cu b/src/gpu/core/Kernel/Compressible/NavierStokes/K17WaleDebug/K17CompressibleNavierStokesWaleDebug.cu similarity index 66% rename from src/gpu/VirtualFluids_GPU/Kernel/Kernels/WaleKernels/FluidFlow/Compressible/CumulantK17Debug/WaleCumulantK17DebugComp.cu rename to src/gpu/core/Kernel/Compressible/NavierStokes/K17WaleDebug/K17CompressibleNavierStokesWaleDebug.cu index 5fe0284e675785691e51a58e7e0869ba4164ad5f..5a39c27d51d0888918e43cb8f132a79d64bbca33 100644 --- a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/WaleKernels/FluidFlow/Compressible/CumulantK17Debug/WaleCumulantK17DebugComp.cu +++ b/src/gpu/core/Kernel/Compressible/NavierStokes/K17WaleDebug/K17CompressibleNavierStokesWaleDebug.cu @@ -1,14 +1,14 @@ -#include "WaleCumulantK17DebugComp.h" +#include "K17CompressibleNavierStokesWaleDebug.h" -#include "WaleCumulantK17DebugComp_Device.cuh" +#include "K17CompressibleNavierStokesWaleDebug_Device.cuh" #include "Parameter/Parameter.h" -std::shared_ptr<WaleCumulantK17DebugComp> WaleCumulantK17DebugComp::getNewInstance(std::shared_ptr<Parameter> para, int level) +std::shared_ptr<K17CompressibleNavierStokesWaleDebug> K17CompressibleNavierStokesWaleDebug::getNewInstance(std::shared_ptr<Parameter> para, int level) { - return std::shared_ptr<WaleCumulantK17DebugComp>(new WaleCumulantK17DebugComp(para, level)); + return std::shared_ptr<K17CompressibleNavierStokesWaleDebug>(new K17CompressibleNavierStokesWaleDebug(para, level)); } -void WaleCumulantK17DebugComp::run() +void K17CompressibleNavierStokesWaleDebug::run() { int size_Mat = (int)para->getParD(level)->numberOfNodes; int numberOfThreads = para->getParD(level)->numberofthreads; @@ -32,7 +32,7 @@ void WaleCumulantK17DebugComp::run() dim3 grid(Grid1, Grid2, 1); dim3 threads(numberOfThreads, 1, 1); - LB_Kernel_WaleCumulantK17DebugComp <<< grid, threads >>>( + K17CompressibleNavierStokesWaleDebug_Device <<< grid, threads >>>( para->getParD(level)->omega, para->getParD(level)->typeOfGridNode, para->getParD(level)->neighborX, @@ -60,10 +60,10 @@ void WaleCumulantK17DebugComp::run() para->getForcesDev(), para->getQuadricLimitersDev(), para->getParD(level)->isEvenTimestep); - getLastCudaError("LB_Kernel_WaleCumulantK17DebugComp execution failed"); + getLastCudaError("K17CompressibleNavierStokesWaleDebug_Device execution failed"); } -WaleCumulantK17DebugComp::WaleCumulantK17DebugComp(std::shared_ptr<Parameter> para, int level) +K17CompressibleNavierStokesWaleDebug::K17CompressibleNavierStokesWaleDebug(std::shared_ptr<Parameter> para, int level) { this->para = para; this->level = level; @@ -73,6 +73,6 @@ WaleCumulantK17DebugComp::WaleCumulantK17DebugComp(std::shared_ptr<Parameter> pa } -WaleCumulantK17DebugComp::WaleCumulantK17DebugComp() +K17CompressibleNavierStokesWaleDebug::K17CompressibleNavierStokesWaleDebug() { } diff --git a/src/gpu/core/Kernel/Compressible/NavierStokes/K17WaleDebug/K17CompressibleNavierStokesWaleDebug.h b/src/gpu/core/Kernel/Compressible/NavierStokes/K17WaleDebug/K17CompressibleNavierStokesWaleDebug.h new file mode 100644 index 0000000000000000000000000000000000000000..675d7f6b40db91a8b757a543c3997092023fbb6b --- /dev/null +++ b/src/gpu/core/Kernel/Compressible/NavierStokes/K17WaleDebug/K17CompressibleNavierStokesWaleDebug.h @@ -0,0 +1,17 @@ +#ifndef K17CompressibleNavierStokesWaleDebug_H +#define K17CompressibleNavierStokesWaleDebug_H + +#include "Kernel/KernelImp.h" + +class K17CompressibleNavierStokesWaleDebug : public KernelImp +{ +public: + static std::shared_ptr<K17CompressibleNavierStokesWaleDebug> getNewInstance(std::shared_ptr< Parameter> para, int level); + void run(); + +private: + K17CompressibleNavierStokesWaleDebug(); + K17CompressibleNavierStokesWaleDebug(std::shared_ptr< Parameter> para, int level); + +}; +#endif \ No newline at end of file diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/WaleKernels/FluidFlow/Compressible/CumulantK17Debug/WaleCumulantK17DebugComp_Device.cu b/src/gpu/core/Kernel/Compressible/NavierStokes/K17WaleDebug/K17CompressibleNavierStokesWaleDebug_Device.cu similarity index 90% rename from src/gpu/VirtualFluids_GPU/Kernel/Kernels/WaleKernels/FluidFlow/Compressible/CumulantK17Debug/WaleCumulantK17DebugComp_Device.cu rename to src/gpu/core/Kernel/Compressible/NavierStokes/K17WaleDebug/K17CompressibleNavierStokesWaleDebug_Device.cu index 0a48c68059d794ddd7aed85c266604d51809d978..6d1a0d219990fb53e190e47caa6b033062714247 100644 --- a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/WaleKernels/FluidFlow/Compressible/CumulantK17Debug/WaleCumulantK17DebugComp_Device.cu +++ b/src/gpu/core/Kernel/Compressible/NavierStokes/K17WaleDebug/K17CompressibleNavierStokesWaleDebug_Device.cu @@ -6,7 +6,7 @@ using namespace vf::basics::constant; using namespace vf::lbm::dir; #include "math.h" -__global__ void LB_Kernel_WaleCumulantK17DebugComp( +__global__ void K17CompressibleNavierStokesWaleDebug_Device( real omega_in, unsigned int* bcMatD, unsigned int* neighborX, @@ -57,63 +57,63 @@ __global__ void LB_Kernel_WaleCumulantK17DebugComp( Distributions27 D; if (EvenOrOdd == true) { - D.f[DIR_P00] = &DDStart[DIR_P00 * size_Mat]; - D.f[DIR_M00] = &DDStart[DIR_M00 * size_Mat]; - D.f[DIR_0P0] = &DDStart[DIR_0P0 * size_Mat]; - D.f[DIR_0M0] = &DDStart[DIR_0M0 * size_Mat]; - D.f[DIR_00P] = &DDStart[DIR_00P * size_Mat]; - D.f[DIR_00M] = &DDStart[DIR_00M * size_Mat]; - D.f[DIR_PP0] = &DDStart[DIR_PP0 * size_Mat]; - D.f[DIR_MM0] = &DDStart[DIR_MM0 * size_Mat]; - D.f[DIR_PM0] = &DDStart[DIR_PM0 * size_Mat]; - D.f[DIR_MP0] = &DDStart[DIR_MP0 * size_Mat]; - D.f[DIR_P0P] = &DDStart[DIR_P0P * size_Mat]; - D.f[DIR_M0M] = &DDStart[DIR_M0M * size_Mat]; - D.f[DIR_P0M] = &DDStart[DIR_P0M * size_Mat]; - D.f[DIR_M0P] = &DDStart[DIR_M0P * size_Mat]; - D.f[DIR_0PP] = &DDStart[DIR_0PP * size_Mat]; - D.f[DIR_0MM] = &DDStart[DIR_0MM * size_Mat]; - D.f[DIR_0PM] = &DDStart[DIR_0PM * size_Mat]; - D.f[DIR_0MP] = &DDStart[DIR_0MP * size_Mat]; - D.f[DIR_000] = &DDStart[DIR_000 * size_Mat]; - D.f[DIR_PPP] = &DDStart[DIR_PPP * size_Mat]; - D.f[DIR_MMP] = &DDStart[DIR_MMP * size_Mat]; - D.f[DIR_PMP] = &DDStart[DIR_PMP * size_Mat]; - D.f[DIR_MPP] = &DDStart[DIR_MPP * size_Mat]; - D.f[DIR_PPM] = &DDStart[DIR_PPM * size_Mat]; - D.f[DIR_MMM] = &DDStart[DIR_MMM * size_Mat]; - D.f[DIR_PMM]= &DDStart[DIR_PMM * size_Mat]; - D.f[DIR_MPM]= &DDStart[DIR_MPM * size_Mat]; + D.f[dP00] = &DDStart[dP00 * size_Mat]; + D.f[dM00] = &DDStart[dM00 * size_Mat]; + D.f[d0P0] = &DDStart[d0P0 * size_Mat]; + D.f[d0M0] = &DDStart[d0M0 * size_Mat]; + D.f[d00P] = &DDStart[d00P * size_Mat]; + D.f[d00M] = &DDStart[d00M * size_Mat]; + D.f[dPP0] = &DDStart[dPP0 * size_Mat]; + D.f[dMM0] = &DDStart[dMM0 * size_Mat]; + D.f[dPM0] = &DDStart[dPM0 * size_Mat]; + D.f[dMP0] = &DDStart[dMP0 * size_Mat]; + D.f[dP0P] = &DDStart[dP0P * size_Mat]; + D.f[dM0M] = &DDStart[dM0M * size_Mat]; + D.f[dP0M] = &DDStart[dP0M * size_Mat]; + D.f[dM0P] = &DDStart[dM0P * size_Mat]; + D.f[d0PP] = &DDStart[d0PP * size_Mat]; + D.f[d0MM] = &DDStart[d0MM * size_Mat]; + D.f[d0PM] = &DDStart[d0PM * size_Mat]; + D.f[d0MP] = &DDStart[d0MP * size_Mat]; + D.f[d000] = &DDStart[d000 * size_Mat]; + D.f[dPPP] = &DDStart[dPPP * size_Mat]; + D.f[dMMP] = &DDStart[dMMP * size_Mat]; + D.f[dPMP] = &DDStart[dPMP * size_Mat]; + D.f[dMPP] = &DDStart[dMPP * size_Mat]; + D.f[dPPM] = &DDStart[dPPM * size_Mat]; + D.f[dMMM] = &DDStart[dMMM * size_Mat]; + D.f[dPMM]= &DDStart[dPMM * size_Mat]; + D.f[dMPM]= &DDStart[dMPM * size_Mat]; } else { - D.f[DIR_M00] = &DDStart[DIR_P00 * size_Mat]; - D.f[DIR_P00] = &DDStart[DIR_M00 * size_Mat]; - D.f[DIR_0M0] = &DDStart[DIR_0P0 * size_Mat]; - D.f[DIR_0P0] = &DDStart[DIR_0M0 * size_Mat]; - D.f[DIR_00M] = &DDStart[DIR_00P * size_Mat]; - D.f[DIR_00P] = &DDStart[DIR_00M * size_Mat]; - D.f[DIR_MM0] = &DDStart[DIR_PP0 * size_Mat]; - D.f[DIR_PP0] = &DDStart[DIR_MM0 * size_Mat]; - D.f[DIR_MP0] = &DDStart[DIR_PM0 * size_Mat]; - D.f[DIR_PM0] = &DDStart[DIR_MP0 * size_Mat]; - D.f[DIR_M0M] = &DDStart[DIR_P0P * size_Mat]; - D.f[DIR_P0P] = &DDStart[DIR_M0M * size_Mat]; - D.f[DIR_M0P] = &DDStart[DIR_P0M * size_Mat]; - D.f[DIR_P0M] = &DDStart[DIR_M0P * size_Mat]; - D.f[DIR_0MM] = &DDStart[DIR_0PP * size_Mat]; - D.f[DIR_0PP] = &DDStart[DIR_0MM * size_Mat]; - D.f[DIR_0MP] = &DDStart[DIR_0PM * size_Mat]; - D.f[DIR_0PM] = &DDStart[DIR_0MP * size_Mat]; - D.f[DIR_000] = &DDStart[DIR_000 * size_Mat]; - D.f[DIR_MMM] = &DDStart[DIR_PPP * size_Mat]; - D.f[DIR_PPM] = &DDStart[DIR_MMP * size_Mat]; - D.f[DIR_MPM]= &DDStart[DIR_PMP * size_Mat]; - D.f[DIR_PMM]= &DDStart[DIR_MPP * size_Mat]; - D.f[DIR_MMP] = &DDStart[DIR_PPM * size_Mat]; - D.f[DIR_PPP] = &DDStart[DIR_MMM * size_Mat]; - D.f[DIR_MPP] = &DDStart[DIR_PMM * size_Mat]; - D.f[DIR_PMP] = &DDStart[DIR_MPM * size_Mat]; + D.f[dM00] = &DDStart[dP00 * size_Mat]; + D.f[dP00] = &DDStart[dM00 * size_Mat]; + D.f[d0M0] = &DDStart[d0P0 * size_Mat]; + D.f[d0P0] = &DDStart[d0M0 * size_Mat]; + D.f[d00M] = &DDStart[d00P * size_Mat]; + D.f[d00P] = &DDStart[d00M * size_Mat]; + D.f[dMM0] = &DDStart[dPP0 * size_Mat]; + D.f[dPP0] = &DDStart[dMM0 * size_Mat]; + D.f[dMP0] = &DDStart[dPM0 * size_Mat]; + D.f[dPM0] = &DDStart[dMP0 * size_Mat]; + D.f[dM0M] = &DDStart[dP0P * size_Mat]; + D.f[dP0P] = &DDStart[dM0M * size_Mat]; + D.f[dM0P] = &DDStart[dP0M * size_Mat]; + D.f[dP0M] = &DDStart[dM0P * size_Mat]; + D.f[d0MM] = &DDStart[d0PP * size_Mat]; + D.f[d0PP] = &DDStart[d0MM * size_Mat]; + D.f[d0MP] = &DDStart[d0PM * size_Mat]; + D.f[d0PM] = &DDStart[d0MP * size_Mat]; + D.f[d000] = &DDStart[d000 * size_Mat]; + D.f[dMMM] = &DDStart[dPPP * size_Mat]; + D.f[dPPM] = &DDStart[dMMP * size_Mat]; + D.f[dMPM]= &DDStart[dPMP * size_Mat]; + D.f[dPMM]= &DDStart[dMPP * size_Mat]; + D.f[dMMP] = &DDStart[dPPM * size_Mat]; + D.f[dPPP] = &DDStart[dMMM * size_Mat]; + D.f[dMPP] = &DDStart[dPMM * size_Mat]; + D.f[dPMP] = &DDStart[dMPM * size_Mat]; } //////////////////////////////////////////////////////////////////////////////// @@ -147,33 +147,33 @@ __global__ void LB_Kernel_WaleCumulantK17DebugComp( unsigned int kbsw = neighborZ[ksw]; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real mfcbb = (D.f[DIR_P00])[k]; - real mfabb = (D.f[DIR_M00])[kw]; - real mfbcb = (D.f[DIR_0P0])[k]; - real mfbab = (D.f[DIR_0M0])[ks]; - real mfbbc = (D.f[DIR_00P])[k]; - real mfbba = (D.f[DIR_00M])[kb]; - real mfccb = (D.f[DIR_PP0])[k]; - real mfaab = (D.f[DIR_MM0])[ksw]; - real mfcab = (D.f[DIR_PM0])[ks]; - real mfacb = (D.f[DIR_MP0])[kw]; - real mfcbc = (D.f[DIR_P0P])[k]; - real mfaba = (D.f[DIR_M0M])[kbw]; - real mfcba = (D.f[DIR_P0M])[kb]; - real mfabc = (D.f[DIR_M0P])[kw]; - real mfbcc = (D.f[DIR_0PP])[k]; - real mfbaa = (D.f[DIR_0MM])[kbs]; - real mfbca = (D.f[DIR_0PM])[kb]; - real mfbac = (D.f[DIR_0MP])[ks]; - real mfbbb = (D.f[DIR_000])[k]; - real mfccc = (D.f[DIR_PPP])[k]; - real mfaac = (D.f[DIR_MMP])[ksw]; - real mfcac = (D.f[DIR_PMP])[ks]; - real mfacc = (D.f[DIR_MPP])[kw]; - real mfcca = (D.f[DIR_PPM])[kb]; - real mfaaa = (D.f[DIR_MMM])[kbsw]; - real mfcaa = (D.f[DIR_PMM])[kbs]; - real mfaca = (D.f[DIR_MPM])[kbw]; + real mfcbb = (D.f[dP00])[k]; + real mfabb = (D.f[dM00])[kw]; + real mfbcb = (D.f[d0P0])[k]; + real mfbab = (D.f[d0M0])[ks]; + real mfbbc = (D.f[d00P])[k]; + real mfbba = (D.f[d00M])[kb]; + real mfccb = (D.f[dPP0])[k]; + real mfaab = (D.f[dMM0])[ksw]; + real mfcab = (D.f[dPM0])[ks]; + real mfacb = (D.f[dMP0])[kw]; + real mfcbc = (D.f[dP0P])[k]; + real mfaba = (D.f[dM0M])[kbw]; + real mfcba = (D.f[dP0M])[kb]; + real mfabc = (D.f[dM0P])[kw]; + real mfbcc = (D.f[d0PP])[k]; + real mfbaa = (D.f[d0MM])[kbs]; + real mfbca = (D.f[d0PM])[kb]; + real mfbac = (D.f[d0MP])[ks]; + real mfbbb = (D.f[d000])[k]; + real mfccc = (D.f[dPPP])[k]; + real mfaac = (D.f[dMMP])[ksw]; + real mfcac = (D.f[dPMP])[ks]; + real mfacc = (D.f[dMPP])[kw]; + real mfcca = (D.f[dPPM])[kb]; + real mfaaa = (D.f[dMMM])[kbsw]; + real mfcaa = (D.f[dPMM])[kbs]; + real mfaca = (D.f[dMPM])[kbw]; //////////////////////////////////////////////////////////////////////////////////// real drho = ((((mfccc + mfaaa) + (mfaca + mfcac)) + ((mfacc + mfcaa) + (mfaac + mfcca))) + (((mfbac + mfbca) + (mfbaa + mfbcc)) + ((mfabc + mfcba) + (mfaba + mfcbc)) + ((mfacb + mfcab) + (mfaab + mfccb))) + @@ -430,9 +430,9 @@ __global__ void LB_Kernel_WaleCumulantK17DebugComp( //real SumSDsq = SumSd * SumSd; real SumSsq = SumS; real SumSDsq = SumSd; - //nuTurb = powf(delta, two) * powf(SumSDsq, c3o2) / (powf(SumSsq, c5o2) + powf(SumSDsq, c5o4) + smallSingle); //powf - //nuTurb = pow(delta, two) * pow(SumSDsq, c3o2) / (pow(SumSsq, c5o2) + pow(SumSDsq, c5o4) + smallSingle); //pow - nuTurb = (delta * delta) * (real)pow((double)SumSDsq, 1.5) / ((real)pow((double)SumSsq, 2.5) + (real)pow((double)SumSDsq, 1.25) + smallSingle); //SMversion// + //nuTurb = powf(delta, two) * powf(SumSDsq, c3o2) / (powf(SumSsq, c5o2) + powf(SumSDsq, c5o4) + cSmallSingle); //powf + //nuTurb = pow(delta, two) * pow(SumSDsq, c3o2) / (pow(SumSsq, c5o2) + pow(SumSDsq, c5o4) + cSmallSingle); //pow + nuTurb = (delta * delta) * (real)pow((double)SumSDsq, 1.5) / ((real)pow((double)SumSsq, 2.5) + (real)pow((double)SumSDsq, 1.25) + cSmallSingle); //SMversion// ///////////////////////////////// //nuTurb = rho * powf(delta, two) * powf(SumSd*SumSd, c3o2) / (powf(SumS*SumS, c5o2) + powf(SumSd*SumSd, c5o4)); //nuTurb = powf(delta, two) * powf(SumSd*SumSd, c3o2) / (powf(SumS*SumS, c5o2) + powf(SumSd*SumSd, c5o4)); @@ -1158,33 +1158,33 @@ __global__ void LB_Kernel_WaleCumulantK17DebugComp( //////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////// - (D.f[DIR_P00])[k] = mfabb; - (D.f[DIR_M00])[kw] = mfcbb; - (D.f[DIR_0P0])[k] = mfbab; - (D.f[DIR_0M0])[ks] = mfbcb; - (D.f[DIR_00P])[k] = mfbba; - (D.f[DIR_00M])[kb] = mfbbc; - (D.f[DIR_PP0])[k] = mfaab; - (D.f[DIR_MM0])[ksw] = mfccb; - (D.f[DIR_PM0])[ks] = mfacb; - (D.f[DIR_MP0])[kw] = mfcab; - (D.f[DIR_P0P])[k] = mfaba; - (D.f[DIR_M0M])[kbw] = mfcbc; - (D.f[DIR_P0M])[kb] = mfabc; - (D.f[DIR_M0P])[kw] = mfcba; - (D.f[DIR_0PP])[k] = mfbaa; - (D.f[DIR_0MM])[kbs] = mfbcc; - (D.f[DIR_0PM])[kb] = mfbac; - (D.f[DIR_0MP])[ks] = mfbca; - (D.f[DIR_000])[k] = mfbbb; - (D.f[DIR_PPP])[k] = mfaaa; - (D.f[DIR_PMP])[ks] = mfaca; - (D.f[DIR_PPM])[kb] = mfaac; - (D.f[DIR_PMM])[kbs] = mfacc; - (D.f[DIR_MPP])[kw] = mfcaa; - (D.f[DIR_MMP])[ksw] = mfcca; - (D.f[DIR_MPM])[kbw] = mfcac; - (D.f[DIR_MMM])[kbsw] = mfccc; + (D.f[dP00])[k] = mfabb; + (D.f[dM00])[kw] = mfcbb; + (D.f[d0P0])[k] = mfbab; + (D.f[d0M0])[ks] = mfbcb; + (D.f[d00P])[k] = mfbba; + (D.f[d00M])[kb] = mfbbc; + (D.f[dPP0])[k] = mfaab; + (D.f[dMM0])[ksw] = mfccb; + (D.f[dPM0])[ks] = mfacb; + (D.f[dMP0])[kw] = mfcab; + (D.f[dP0P])[k] = mfaba; + (D.f[dM0M])[kbw] = mfcbc; + (D.f[dP0M])[kb] = mfabc; + (D.f[dM0P])[kw] = mfcba; + (D.f[d0PP])[k] = mfbaa; + (D.f[d0MM])[kbs] = mfbcc; + (D.f[d0PM])[kb] = mfbac; + (D.f[d0MP])[ks] = mfbca; + (D.f[d000])[k] = mfbbb; + (D.f[dPPP])[k] = mfaaa; + (D.f[dPMP])[ks] = mfaca; + (D.f[dPPM])[kb] = mfaac; + (D.f[dPMM])[kbs] = mfacc; + (D.f[dMPP])[kw] = mfcaa; + (D.f[dMMP])[ksw] = mfcca; + (D.f[dMPM])[kbw] = mfcac; + (D.f[dMMM])[kbsw] = mfccc; //////////////////////////////////////////////////////////////////////////////////// } } diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/WaleKernels/FluidFlow/Compressible/CumulantK17Debug/WaleCumulantK17DebugComp_Device.cuh b/src/gpu/core/Kernel/Compressible/NavierStokes/K17WaleDebug/K17CompressibleNavierStokesWaleDebug_Device.cuh similarity index 75% rename from src/gpu/VirtualFluids_GPU/Kernel/Kernels/WaleKernels/FluidFlow/Compressible/CumulantK17Debug/WaleCumulantK17DebugComp_Device.cuh rename to src/gpu/core/Kernel/Compressible/NavierStokes/K17WaleDebug/K17CompressibleNavierStokesWaleDebug_Device.cuh index 50da48fa702862b71dc13b8b21b34cd1e2b39250..b8321b5c05e4c8e79321d2cc37b92020b9b159f8 100644 --- a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/WaleKernels/FluidFlow/Compressible/CumulantK17Debug/WaleCumulantK17DebugComp_Device.cuh +++ b/src/gpu/core/Kernel/Compressible/NavierStokes/K17WaleDebug/K17CompressibleNavierStokesWaleDebug_Device.cuh @@ -1,10 +1,10 @@ -#ifndef LB_KERNEL_WALE_CUMULANT_K17_DEBUG_COMP_H -#define LB_KERNEL_WALE_CUMULANT_K17_DEBUG_COMP_H +#ifndef K17CompressibleNavierStokesWaleDebug_Device_H +#define K17CompressibleNavierStokesWaleDebug_Device_H #include <DataTypes.h> #include <curand.h> -__global__ void LB_Kernel_WaleCumulantK17DebugComp( +__global__ void K17CompressibleNavierStokesWaleDebug_Device( real omega_in, unsigned int* bcMatD, unsigned int* neighborX, diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/K18/K18CompressibleNavierStokes.cu b/src/gpu/core/Kernel/Compressible/NavierStokes/K18/K18CompressibleNavierStokes.cu similarity index 100% rename from src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/K18/K18CompressibleNavierStokes.cu rename to src/gpu/core/Kernel/Compressible/NavierStokes/K18/K18CompressibleNavierStokes.cu diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/K18/K18CompressibleNavierStokes.h b/src/gpu/core/Kernel/Compressible/NavierStokes/K18/K18CompressibleNavierStokes.h similarity index 100% rename from src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/K18/K18CompressibleNavierStokes.h rename to src/gpu/core/Kernel/Compressible/NavierStokes/K18/K18CompressibleNavierStokes.h diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/K18/K18CompressibleNavierStokes_Device.cu b/src/gpu/core/Kernel/Compressible/NavierStokes/K18/K18CompressibleNavierStokes_Device.cu similarity index 87% rename from src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/K18/K18CompressibleNavierStokes_Device.cu rename to src/gpu/core/Kernel/Compressible/NavierStokes/K18/K18CompressibleNavierStokes_Device.cu index 169dedd3660ba9fc3c5e15bdfb60941bad2856c3..0388bd4e15fa12f465e3d534231b012f6f081790 100644 --- a/src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/K18/K18CompressibleNavierStokes_Device.cu +++ b/src/gpu/core/Kernel/Compressible/NavierStokes/K18/K18CompressibleNavierStokes_Device.cu @@ -42,83 +42,83 @@ __global__ void K18CompressibleNavierStokes_Device( Distributions27 D; if (EvenOrOdd == true) { - D.f[DIR_P00] = &DDStart[DIR_P00 * size_Mat]; - D.f[DIR_M00] = &DDStart[DIR_M00 * size_Mat]; - D.f[DIR_0P0] = &DDStart[DIR_0P0 * size_Mat]; - D.f[DIR_0M0] = &DDStart[DIR_0M0 * size_Mat]; - D.f[DIR_00P] = &DDStart[DIR_00P * size_Mat]; - D.f[DIR_00M] = &DDStart[DIR_00M * size_Mat]; - D.f[DIR_PP0] = &DDStart[DIR_PP0 * size_Mat]; - D.f[DIR_MM0] = &DDStart[DIR_MM0 * size_Mat]; - D.f[DIR_PM0] = &DDStart[DIR_PM0 * size_Mat]; - D.f[DIR_MP0] = &DDStart[DIR_MP0 * size_Mat]; - D.f[DIR_P0P] = &DDStart[DIR_P0P * size_Mat]; - D.f[DIR_M0M] = &DDStart[DIR_M0M * size_Mat]; - D.f[DIR_P0M] = &DDStart[DIR_P0M * size_Mat]; - D.f[DIR_M0P] = &DDStart[DIR_M0P * size_Mat]; - D.f[DIR_0PP] = &DDStart[DIR_0PP * size_Mat]; - D.f[DIR_0MM] = &DDStart[DIR_0MM * size_Mat]; - D.f[DIR_0PM] = &DDStart[DIR_0PM * size_Mat]; - D.f[DIR_0MP] = &DDStart[DIR_0MP * size_Mat]; - D.f[DIR_000] = &DDStart[DIR_000 * size_Mat]; - D.f[DIR_PPP] = &DDStart[DIR_PPP * size_Mat]; - D.f[DIR_MMP] = &DDStart[DIR_MMP * size_Mat]; - D.f[DIR_PMP] = &DDStart[DIR_PMP * size_Mat]; - D.f[DIR_MPP] = &DDStart[DIR_MPP * size_Mat]; - D.f[DIR_PPM] = &DDStart[DIR_PPM * size_Mat]; - D.f[DIR_MMM] = &DDStart[DIR_MMM * size_Mat]; - D.f[DIR_PMM] = &DDStart[DIR_PMM * size_Mat]; - D.f[DIR_MPM] = &DDStart[DIR_MPM * size_Mat]; + D.f[dP00] = &DDStart[dP00 * size_Mat]; + D.f[dM00] = &DDStart[dM00 * size_Mat]; + D.f[d0P0] = &DDStart[d0P0 * size_Mat]; + D.f[d0M0] = &DDStart[d0M0 * size_Mat]; + D.f[d00P] = &DDStart[d00P * size_Mat]; + D.f[d00M] = &DDStart[d00M * size_Mat]; + D.f[dPP0] = &DDStart[dPP0 * size_Mat]; + D.f[dMM0] = &DDStart[dMM0 * size_Mat]; + D.f[dPM0] = &DDStart[dPM0 * size_Mat]; + D.f[dMP0] = &DDStart[dMP0 * size_Mat]; + D.f[dP0P] = &DDStart[dP0P * size_Mat]; + D.f[dM0M] = &DDStart[dM0M * size_Mat]; + D.f[dP0M] = &DDStart[dP0M * size_Mat]; + D.f[dM0P] = &DDStart[dM0P * size_Mat]; + D.f[d0PP] = &DDStart[d0PP * size_Mat]; + D.f[d0MM] = &DDStart[d0MM * size_Mat]; + D.f[d0PM] = &DDStart[d0PM * size_Mat]; + D.f[d0MP] = &DDStart[d0MP * size_Mat]; + D.f[d000] = &DDStart[d000 * size_Mat]; + D.f[dPPP] = &DDStart[dPPP * size_Mat]; + D.f[dMMP] = &DDStart[dMMP * size_Mat]; + D.f[dPMP] = &DDStart[dPMP * size_Mat]; + D.f[dMPP] = &DDStart[dMPP * size_Mat]; + D.f[dPPM] = &DDStart[dPPM * size_Mat]; + D.f[dMMM] = &DDStart[dMMM * size_Mat]; + D.f[dPMM] = &DDStart[dPMM * size_Mat]; + D.f[dMPM] = &DDStart[dMPM * size_Mat]; } else { - D.f[DIR_M00] = &DDStart[DIR_P00 * size_Mat]; - D.f[DIR_P00] = &DDStart[DIR_M00 * size_Mat]; - D.f[DIR_0M0] = &DDStart[DIR_0P0 * size_Mat]; - D.f[DIR_0P0] = &DDStart[DIR_0M0 * size_Mat]; - D.f[DIR_00M] = &DDStart[DIR_00P * size_Mat]; - D.f[DIR_00P] = &DDStart[DIR_00M * size_Mat]; - D.f[DIR_MM0] = &DDStart[DIR_PP0 * size_Mat]; - D.f[DIR_PP0] = &DDStart[DIR_MM0 * size_Mat]; - D.f[DIR_MP0] = &DDStart[DIR_PM0 * size_Mat]; - D.f[DIR_PM0] = &DDStart[DIR_MP0 * size_Mat]; - D.f[DIR_M0M] = &DDStart[DIR_P0P * size_Mat]; - D.f[DIR_P0P] = &DDStart[DIR_M0M * size_Mat]; - D.f[DIR_M0P] = &DDStart[DIR_P0M * size_Mat]; - D.f[DIR_P0M] = &DDStart[DIR_M0P * size_Mat]; - D.f[DIR_0MM] = &DDStart[DIR_0PP * size_Mat]; - D.f[DIR_0PP] = &DDStart[DIR_0MM * size_Mat]; - D.f[DIR_0MP] = &DDStart[DIR_0PM * size_Mat]; - D.f[DIR_0PM] = &DDStart[DIR_0MP * size_Mat]; - D.f[DIR_000] = &DDStart[DIR_000 * size_Mat]; - D.f[DIR_MMM] = &DDStart[DIR_PPP * size_Mat]; - D.f[DIR_PPM] = &DDStart[DIR_MMP * size_Mat]; - D.f[DIR_MPM] = &DDStart[DIR_PMP * size_Mat]; - D.f[DIR_PMM] = &DDStart[DIR_MPP * size_Mat]; - D.f[DIR_MMP] = &DDStart[DIR_PPM * size_Mat]; - D.f[DIR_PPP] = &DDStart[DIR_MMM * size_Mat]; - D.f[DIR_MPP] = &DDStart[DIR_PMM * size_Mat]; - D.f[DIR_PMP] = &DDStart[DIR_MPM * size_Mat]; + D.f[dM00] = &DDStart[dP00 * size_Mat]; + D.f[dP00] = &DDStart[dM00 * size_Mat]; + D.f[d0M0] = &DDStart[d0P0 * size_Mat]; + D.f[d0P0] = &DDStart[d0M0 * size_Mat]; + D.f[d00M] = &DDStart[d00P * size_Mat]; + D.f[d00P] = &DDStart[d00M * size_Mat]; + D.f[dMM0] = &DDStart[dPP0 * size_Mat]; + D.f[dPP0] = &DDStart[dMM0 * size_Mat]; + D.f[dMP0] = &DDStart[dPM0 * size_Mat]; + D.f[dPM0] = &DDStart[dMP0 * size_Mat]; + D.f[dM0M] = &DDStart[dP0P * size_Mat]; + D.f[dP0P] = &DDStart[dM0M * size_Mat]; + D.f[dM0P] = &DDStart[dP0M * size_Mat]; + D.f[dP0M] = &DDStart[dM0P * size_Mat]; + D.f[d0MM] = &DDStart[d0PP * size_Mat]; + D.f[d0PP] = &DDStart[d0MM * size_Mat]; + D.f[d0MP] = &DDStart[d0PM * size_Mat]; + D.f[d0PM] = &DDStart[d0MP * size_Mat]; + D.f[d000] = &DDStart[d000 * size_Mat]; + D.f[dMMM] = &DDStart[dPPP * size_Mat]; + D.f[dPPM] = &DDStart[dMMP * size_Mat]; + D.f[dMPM] = &DDStart[dPMP * size_Mat]; + D.f[dPMM] = &DDStart[dMPP * size_Mat]; + D.f[dMMP] = &DDStart[dPPM * size_Mat]; + D.f[dPPP] = &DDStart[dMMM * size_Mat]; + D.f[dMPP] = &DDStart[dPMM * size_Mat]; + D.f[dPMP] = &DDStart[dMPM * size_Mat]; } Distributions6 G; if (EvenOrOdd == true) { - G.g[DIR_P00] = &G6[DIR_P00 * size_Mat]; - G.g[DIR_M00] = &G6[DIR_M00 * size_Mat]; - G.g[DIR_0P0] = &G6[DIR_0P0 * size_Mat]; - G.g[DIR_0M0] = &G6[DIR_0M0 * size_Mat]; - G.g[DIR_00P] = &G6[DIR_00P * size_Mat]; - G.g[DIR_00M] = &G6[DIR_00M * size_Mat]; + G.g[dP00] = &G6[dP00 * size_Mat]; + G.g[dM00] = &G6[dM00 * size_Mat]; + G.g[d0P0] = &G6[d0P0 * size_Mat]; + G.g[d0M0] = &G6[d0M0 * size_Mat]; + G.g[d00P] = &G6[d00P * size_Mat]; + G.g[d00M] = &G6[d00M * size_Mat]; } else { - G.g[DIR_M00] = &G6[DIR_P00 * size_Mat]; - G.g[DIR_P00] = &G6[DIR_M00 * size_Mat]; - G.g[DIR_0M0] = &G6[DIR_0P0 * size_Mat]; - G.g[DIR_0P0] = &G6[DIR_0M0 * size_Mat]; - G.g[DIR_00M] = &G6[DIR_00P * size_Mat]; - G.g[DIR_00P] = &G6[DIR_00M * size_Mat]; + G.g[dM00] = &G6[dP00 * size_Mat]; + G.g[dP00] = &G6[dM00 * size_Mat]; + G.g[d0M0] = &G6[d0P0 * size_Mat]; + G.g[d0P0] = &G6[d0M0 * size_Mat]; + G.g[d00M] = &G6[d00P * size_Mat]; + G.g[d00P] = &G6[d00M * size_Mat]; } //////////////////////////////////////////////////////////////////////////////// @@ -152,43 +152,43 @@ __global__ void K18CompressibleNavierStokes_Device( unsigned int kbsw = neighborZ[ksw]; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real mgcbb = (G.g[DIR_P00])[k]; - real mgabb = (G.g[DIR_M00])[kw]; - real mgbcb = (G.g[DIR_0P0])[k]; - real mgbab = (G.g[DIR_0M0])[ks]; - real mgbbc = (G.g[DIR_00P])[k]; - real mgbba = (G.g[DIR_00M])[kb]; + real mgcbb = (G.g[dP00])[k]; + real mgabb = (G.g[dM00])[kw]; + real mgbcb = (G.g[d0P0])[k]; + real mgbab = (G.g[d0M0])[ks]; + real mgbbc = (G.g[d00P])[k]; + real mgbba = (G.g[d00M])[kb]; real dxxux = c1o2 * (-mgcbb + mgabb); real dyyuy = c1o2 * (-mgbcb + mgbab); real dzzuz = c1o2 * (-mgbbc + mgbba); ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real mfcbb = (D.f[DIR_P00])[k]; - real mfabb = (D.f[DIR_M00])[kw]; - real mfbcb = (D.f[DIR_0P0])[k]; - real mfbab = (D.f[DIR_0M0])[ks]; - real mfbbc = (D.f[DIR_00P])[k]; - real mfbba = (D.f[DIR_00M])[kb]; - real mfccb = (D.f[DIR_PP0])[k]; - real mfaab = (D.f[DIR_MM0])[ksw]; - real mfcab = (D.f[DIR_PM0])[ks]; - real mfacb = (D.f[DIR_MP0])[kw]; - real mfcbc = (D.f[DIR_P0P])[k]; - real mfaba = (D.f[DIR_M0M])[kbw]; - real mfcba = (D.f[DIR_P0M])[kb]; - real mfabc = (D.f[DIR_M0P])[kw]; - real mfbcc = (D.f[DIR_0PP])[k]; - real mfbaa = (D.f[DIR_0MM])[kbs]; - real mfbca = (D.f[DIR_0PM])[kb]; - real mfbac = (D.f[DIR_0MP])[ks]; - real mfbbb = (D.f[DIR_000])[k]; - real mfccc = (D.f[DIR_PPP])[k]; - real mfaac = (D.f[DIR_MMP])[ksw]; - real mfcac = (D.f[DIR_PMP])[ks]; - real mfacc = (D.f[DIR_MPP])[kw]; - real mfcca = (D.f[DIR_PPM])[kb]; - real mfaaa = (D.f[DIR_MMM])[kbsw]; - real mfcaa = (D.f[DIR_PMM])[kbs]; - real mfaca = (D.f[DIR_MPM])[kbw]; + real mfcbb = (D.f[dP00])[k]; + real mfabb = (D.f[dM00])[kw]; + real mfbcb = (D.f[d0P0])[k]; + real mfbab = (D.f[d0M0])[ks]; + real mfbbc = (D.f[d00P])[k]; + real mfbba = (D.f[d00M])[kb]; + real mfccb = (D.f[dPP0])[k]; + real mfaab = (D.f[dMM0])[ksw]; + real mfcab = (D.f[dPM0])[ks]; + real mfacb = (D.f[dMP0])[kw]; + real mfcbc = (D.f[dP0P])[k]; + real mfaba = (D.f[dM0M])[kbw]; + real mfcba = (D.f[dP0M])[kb]; + real mfabc = (D.f[dM0P])[kw]; + real mfbcc = (D.f[d0PP])[k]; + real mfbaa = (D.f[d0MM])[kbs]; + real mfbca = (D.f[d0PM])[kb]; + real mfbac = (D.f[d0MP])[ks]; + real mfbbb = (D.f[d000])[k]; + real mfccc = (D.f[dPPP])[k]; + real mfaac = (D.f[dMMP])[ksw]; + real mfcac = (D.f[dPMP])[ks]; + real mfacc = (D.f[dMPP])[kw]; + real mfcca = (D.f[dPPM])[kb]; + real mfaaa = (D.f[dMMM])[kbsw]; + real mfcaa = (D.f[dPMM])[kbs]; + real mfaca = (D.f[dMPM])[kbw]; //////////////////////////////////////////////////////////////////////////////////// real drho = ((((mfccc + mfaaa) + (mfaca + mfcac)) + ((mfacc + mfcaa) + (mfaac + mfcca))) + (((mfbac + mfbca) + (mfbaa + mfbcc)) + ((mfabc + mfcba) + (mfaba + mfcbc)) + ((mfacb + mfcab) + (mfaab + mfccb))) + @@ -915,41 +915,41 @@ __global__ void K18CompressibleNavierStokes_Device( //////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////// - (D.f[DIR_P00])[k] = mfabb; - (D.f[DIR_M00])[kw] = mfcbb; - (D.f[DIR_0P0])[k] = mfbab; - (D.f[DIR_0M0])[ks] = mfbcb; - (D.f[DIR_00P])[k] = mfbba; - (D.f[DIR_00M])[kb] = mfbbc; - (D.f[DIR_PP0])[k] = mfaab; - (D.f[DIR_MM0])[ksw] = mfccb; - (D.f[DIR_PM0])[ks] = mfacb; - (D.f[DIR_MP0])[kw] = mfcab; - (D.f[DIR_P0P])[k] = mfaba; - (D.f[DIR_M0M])[kbw] = mfcbc; - (D.f[DIR_P0M])[kb] = mfabc; - (D.f[DIR_M0P])[kw] = mfcba; - (D.f[DIR_0PP])[k] = mfbaa; - (D.f[DIR_0MM])[kbs] = mfbcc; - (D.f[DIR_0PM])[kb] = mfbac; - (D.f[DIR_0MP])[ks] = mfbca; - (D.f[DIR_000])[k] = mfbbb; - (D.f[DIR_PPP])[k] = mfaaa; - (D.f[DIR_PMP])[ks] = mfaca; - (D.f[DIR_PPM])[kb] = mfaac; - (D.f[DIR_PMM])[kbs] = mfacc; - (D.f[DIR_MPP])[kw] = mfcaa; - (D.f[DIR_MMP])[ksw] = mfcca; - (D.f[DIR_MPM])[kbw] = mfcac; - (D.f[DIR_MMM])[kbsw] = mfccc; - //////////////////////////////////////////////////////////////////////////////////// - - (G.g[DIR_P00])[k] = mgabb; - (G.g[DIR_M00])[kw] = mgcbb; - (G.g[DIR_0P0])[k] = mgbab; - (G.g[DIR_0M0])[ks] = mgbcb; - (G.g[DIR_00P])[k] = mgbba; - (G.g[DIR_00M])[kb] = mgbbc; + (D.f[dP00])[k] = mfabb; + (D.f[dM00])[kw] = mfcbb; + (D.f[d0P0])[k] = mfbab; + (D.f[d0M0])[ks] = mfbcb; + (D.f[d00P])[k] = mfbba; + (D.f[d00M])[kb] = mfbbc; + (D.f[dPP0])[k] = mfaab; + (D.f[dMM0])[ksw] = mfccb; + (D.f[dPM0])[ks] = mfacb; + (D.f[dMP0])[kw] = mfcab; + (D.f[dP0P])[k] = mfaba; + (D.f[dM0M])[kbw] = mfcbc; + (D.f[dP0M])[kb] = mfabc; + (D.f[dM0P])[kw] = mfcba; + (D.f[d0PP])[k] = mfbaa; + (D.f[d0MM])[kbs] = mfbcc; + (D.f[d0PM])[kb] = mfbac; + (D.f[d0MP])[ks] = mfbca; + (D.f[d000])[k] = mfbbb; + (D.f[dPPP])[k] = mfaaa; + (D.f[dPMP])[ks] = mfaca; + (D.f[dPPM])[kb] = mfaac; + (D.f[dPMM])[kbs] = mfacc; + (D.f[dMPP])[kw] = mfcaa; + (D.f[dMMP])[ksw] = mfcca; + (D.f[dMPM])[kbw] = mfcac; + (D.f[dMMM])[kbsw] = mfccc; + //////////////////////////////////////////////////////////////////////////////////// + + (G.g[dP00])[k] = mgabb; + (G.g[dM00])[kw] = mgcbb; + (G.g[d0P0])[k] = mgbab; + (G.g[d0M0])[ks] = mgbcb; + (G.g[d00P])[k] = mgbba; + (G.g[d00M])[kb] = mgbbc; } } } \ No newline at end of file diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/K18/K18CompressibleNavierStokes_Device.cuh b/src/gpu/core/Kernel/Compressible/NavierStokes/K18/K18CompressibleNavierStokes_Device.cuh similarity index 100% rename from src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/K18/K18CompressibleNavierStokes_Device.cuh rename to src/gpu/core/Kernel/Compressible/NavierStokes/K18/K18CompressibleNavierStokes_Device.cuh diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/K20/K20CompressibleNavierStokes.cu b/src/gpu/core/Kernel/Compressible/NavierStokes/K20/K20CompressibleNavierStokes.cu similarity index 100% rename from src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/K20/K20CompressibleNavierStokes.cu rename to src/gpu/core/Kernel/Compressible/NavierStokes/K20/K20CompressibleNavierStokes.cu diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/K20/K20CompressibleNavierStokes.h b/src/gpu/core/Kernel/Compressible/NavierStokes/K20/K20CompressibleNavierStokes.h similarity index 100% rename from src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/K20/K20CompressibleNavierStokes.h rename to src/gpu/core/Kernel/Compressible/NavierStokes/K20/K20CompressibleNavierStokes.h diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/K20/K20CompressibleNavierStokes_Device.cu b/src/gpu/core/Kernel/Compressible/NavierStokes/K20/K20CompressibleNavierStokes_Device.cu similarity index 87% rename from src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/K20/K20CompressibleNavierStokes_Device.cu rename to src/gpu/core/Kernel/Compressible/NavierStokes/K20/K20CompressibleNavierStokes_Device.cu index d722baa512dea2d7cc01ebf4f986f3239345fb40..083692388f5607a4d47ad73feb09797db0f93f01 100644 --- a/src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/K20/K20CompressibleNavierStokes_Device.cu +++ b/src/gpu/core/Kernel/Compressible/NavierStokes/K20/K20CompressibleNavierStokes_Device.cu @@ -42,83 +42,83 @@ __global__ void K20CompressibleNavierStokes_Device( Distributions27 D; if (EvenOrOdd == true) { - D.f[DIR_P00] = &DDStart[DIR_P00 * size_Mat]; - D.f[DIR_M00] = &DDStart[DIR_M00 * size_Mat]; - D.f[DIR_0P0] = &DDStart[DIR_0P0 * size_Mat]; - D.f[DIR_0M0] = &DDStart[DIR_0M0 * size_Mat]; - D.f[DIR_00P] = &DDStart[DIR_00P * size_Mat]; - D.f[DIR_00M] = &DDStart[DIR_00M * size_Mat]; - D.f[DIR_PP0] = &DDStart[DIR_PP0 * size_Mat]; - D.f[DIR_MM0] = &DDStart[DIR_MM0 * size_Mat]; - D.f[DIR_PM0] = &DDStart[DIR_PM0 * size_Mat]; - D.f[DIR_MP0] = &DDStart[DIR_MP0 * size_Mat]; - D.f[DIR_P0P] = &DDStart[DIR_P0P * size_Mat]; - D.f[DIR_M0M] = &DDStart[DIR_M0M * size_Mat]; - D.f[DIR_P0M] = &DDStart[DIR_P0M * size_Mat]; - D.f[DIR_M0P] = &DDStart[DIR_M0P * size_Mat]; - D.f[DIR_0PP] = &DDStart[DIR_0PP * size_Mat]; - D.f[DIR_0MM] = &DDStart[DIR_0MM * size_Mat]; - D.f[DIR_0PM] = &DDStart[DIR_0PM * size_Mat]; - D.f[DIR_0MP] = &DDStart[DIR_0MP * size_Mat]; - D.f[DIR_000] = &DDStart[DIR_000 * size_Mat]; - D.f[DIR_PPP] = &DDStart[DIR_PPP * size_Mat]; - D.f[DIR_MMP] = &DDStart[DIR_MMP * size_Mat]; - D.f[DIR_PMP] = &DDStart[DIR_PMP * size_Mat]; - D.f[DIR_MPP] = &DDStart[DIR_MPP * size_Mat]; - D.f[DIR_PPM] = &DDStart[DIR_PPM * size_Mat]; - D.f[DIR_MMM] = &DDStart[DIR_MMM * size_Mat]; - D.f[DIR_PMM] = &DDStart[DIR_PMM * size_Mat]; - D.f[DIR_MPM] = &DDStart[DIR_MPM * size_Mat]; + D.f[dP00] = &DDStart[dP00 * size_Mat]; + D.f[dM00] = &DDStart[dM00 * size_Mat]; + D.f[d0P0] = &DDStart[d0P0 * size_Mat]; + D.f[d0M0] = &DDStart[d0M0 * size_Mat]; + D.f[d00P] = &DDStart[d00P * size_Mat]; + D.f[d00M] = &DDStart[d00M * size_Mat]; + D.f[dPP0] = &DDStart[dPP0 * size_Mat]; + D.f[dMM0] = &DDStart[dMM0 * size_Mat]; + D.f[dPM0] = &DDStart[dPM0 * size_Mat]; + D.f[dMP0] = &DDStart[dMP0 * size_Mat]; + D.f[dP0P] = &DDStart[dP0P * size_Mat]; + D.f[dM0M] = &DDStart[dM0M * size_Mat]; + D.f[dP0M] = &DDStart[dP0M * size_Mat]; + D.f[dM0P] = &DDStart[dM0P * size_Mat]; + D.f[d0PP] = &DDStart[d0PP * size_Mat]; + D.f[d0MM] = &DDStart[d0MM * size_Mat]; + D.f[d0PM] = &DDStart[d0PM * size_Mat]; + D.f[d0MP] = &DDStart[d0MP * size_Mat]; + D.f[d000] = &DDStart[d000 * size_Mat]; + D.f[dPPP] = &DDStart[dPPP * size_Mat]; + D.f[dMMP] = &DDStart[dMMP * size_Mat]; + D.f[dPMP] = &DDStart[dPMP * size_Mat]; + D.f[dMPP] = &DDStart[dMPP * size_Mat]; + D.f[dPPM] = &DDStart[dPPM * size_Mat]; + D.f[dMMM] = &DDStart[dMMM * size_Mat]; + D.f[dPMM] = &DDStart[dPMM * size_Mat]; + D.f[dMPM] = &DDStart[dMPM * size_Mat]; } else { - D.f[DIR_M00] = &DDStart[DIR_P00 * size_Mat]; - D.f[DIR_P00] = &DDStart[DIR_M00 * size_Mat]; - D.f[DIR_0M0] = &DDStart[DIR_0P0 * size_Mat]; - D.f[DIR_0P0] = &DDStart[DIR_0M0 * size_Mat]; - D.f[DIR_00M] = &DDStart[DIR_00P * size_Mat]; - D.f[DIR_00P] = &DDStart[DIR_00M * size_Mat]; - D.f[DIR_MM0] = &DDStart[DIR_PP0 * size_Mat]; - D.f[DIR_PP0] = &DDStart[DIR_MM0 * size_Mat]; - D.f[DIR_MP0] = &DDStart[DIR_PM0 * size_Mat]; - D.f[DIR_PM0] = &DDStart[DIR_MP0 * size_Mat]; - D.f[DIR_M0M] = &DDStart[DIR_P0P * size_Mat]; - D.f[DIR_P0P] = &DDStart[DIR_M0M * size_Mat]; - D.f[DIR_M0P] = &DDStart[DIR_P0M * size_Mat]; - D.f[DIR_P0M] = &DDStart[DIR_M0P * size_Mat]; - D.f[DIR_0MM] = &DDStart[DIR_0PP * size_Mat]; - D.f[DIR_0PP] = &DDStart[DIR_0MM * size_Mat]; - D.f[DIR_0MP] = &DDStart[DIR_0PM * size_Mat]; - D.f[DIR_0PM] = &DDStart[DIR_0MP * size_Mat]; - D.f[DIR_000] = &DDStart[DIR_000 * size_Mat]; - D.f[DIR_MMM] = &DDStart[DIR_PPP * size_Mat]; - D.f[DIR_PPM] = &DDStart[DIR_MMP * size_Mat]; - D.f[DIR_MPM] = &DDStart[DIR_PMP * size_Mat]; - D.f[DIR_PMM] = &DDStart[DIR_MPP * size_Mat]; - D.f[DIR_MMP] = &DDStart[DIR_PPM * size_Mat]; - D.f[DIR_PPP] = &DDStart[DIR_MMM * size_Mat]; - D.f[DIR_MPP] = &DDStart[DIR_PMM * size_Mat]; - D.f[DIR_PMP] = &DDStart[DIR_MPM * size_Mat]; + D.f[dM00] = &DDStart[dP00 * size_Mat]; + D.f[dP00] = &DDStart[dM00 * size_Mat]; + D.f[d0M0] = &DDStart[d0P0 * size_Mat]; + D.f[d0P0] = &DDStart[d0M0 * size_Mat]; + D.f[d00M] = &DDStart[d00P * size_Mat]; + D.f[d00P] = &DDStart[d00M * size_Mat]; + D.f[dMM0] = &DDStart[dPP0 * size_Mat]; + D.f[dPP0] = &DDStart[dMM0 * size_Mat]; + D.f[dMP0] = &DDStart[dPM0 * size_Mat]; + D.f[dPM0] = &DDStart[dMP0 * size_Mat]; + D.f[dM0M] = &DDStart[dP0P * size_Mat]; + D.f[dP0P] = &DDStart[dM0M * size_Mat]; + D.f[dM0P] = &DDStart[dP0M * size_Mat]; + D.f[dP0M] = &DDStart[dM0P * size_Mat]; + D.f[d0MM] = &DDStart[d0PP * size_Mat]; + D.f[d0PP] = &DDStart[d0MM * size_Mat]; + D.f[d0MP] = &DDStart[d0PM * size_Mat]; + D.f[d0PM] = &DDStart[d0MP * size_Mat]; + D.f[d000] = &DDStart[d000 * size_Mat]; + D.f[dMMM] = &DDStart[dPPP * size_Mat]; + D.f[dPPM] = &DDStart[dMMP * size_Mat]; + D.f[dMPM] = &DDStart[dPMP * size_Mat]; + D.f[dPMM] = &DDStart[dMPP * size_Mat]; + D.f[dMMP] = &DDStart[dPPM * size_Mat]; + D.f[dPPP] = &DDStart[dMMM * size_Mat]; + D.f[dMPP] = &DDStart[dPMM * size_Mat]; + D.f[dPMP] = &DDStart[dMPM * size_Mat]; } Distributions6 G; if (EvenOrOdd == true) { - G.g[DIR_P00] = &G6[DIR_P00 * size_Mat]; - G.g[DIR_M00] = &G6[DIR_M00 * size_Mat]; - G.g[DIR_0P0] = &G6[DIR_0P0 * size_Mat]; - G.g[DIR_0M0] = &G6[DIR_0M0 * size_Mat]; - G.g[DIR_00P] = &G6[DIR_00P * size_Mat]; - G.g[DIR_00M] = &G6[DIR_00M * size_Mat]; + G.g[dP00] = &G6[dP00 * size_Mat]; + G.g[dM00] = &G6[dM00 * size_Mat]; + G.g[d0P0] = &G6[d0P0 * size_Mat]; + G.g[d0M0] = &G6[d0M0 * size_Mat]; + G.g[d00P] = &G6[d00P * size_Mat]; + G.g[d00M] = &G6[d00M * size_Mat]; } else { - G.g[DIR_M00] = &G6[DIR_P00 * size_Mat]; - G.g[DIR_P00] = &G6[DIR_M00 * size_Mat]; - G.g[DIR_0M0] = &G6[DIR_0P0 * size_Mat]; - G.g[DIR_0P0] = &G6[DIR_0M0 * size_Mat]; - G.g[DIR_00M] = &G6[DIR_00P * size_Mat]; - G.g[DIR_00P] = &G6[DIR_00M * size_Mat]; + G.g[dM00] = &G6[dP00 * size_Mat]; + G.g[dP00] = &G6[dM00 * size_Mat]; + G.g[d0M0] = &G6[d0P0 * size_Mat]; + G.g[d0P0] = &G6[d0M0 * size_Mat]; + G.g[d00M] = &G6[d00P * size_Mat]; + G.g[d00P] = &G6[d00M * size_Mat]; } //////////////////////////////////////////////////////////////////////////////// @@ -151,43 +151,43 @@ __global__ void K20CompressibleNavierStokes_Device( //unsigned int ktne = k; unsigned int kbsw = neighborZ[ksw]; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real mgcbb = (G.g[DIR_P00])[k]; - real mgabb = (G.g[DIR_M00])[kw]; - real mgbcb = (G.g[DIR_0P0])[k]; - real mgbab = (G.g[DIR_0M0])[ks]; - real mgbbc = (G.g[DIR_00P])[k]; - real mgbba = (G.g[DIR_00M])[kb]; + real mgcbb = (G.g[dP00])[k]; + real mgabb = (G.g[dM00])[kw]; + real mgbcb = (G.g[d0P0])[k]; + real mgbab = (G.g[d0M0])[ks]; + real mgbbc = (G.g[d00P])[k]; + real mgbba = (G.g[d00M])[kb]; real dxuxdxux = c1o2 * (-mgcbb + mgabb); real dyuydyuy = c1o2 * (-mgbcb + mgbab); real dzuzdzuz = c1o2 * (-mgbbc + mgbba); ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real mfcbb = (D.f[DIR_P00])[k]; - real mfabb = (D.f[DIR_M00])[kw]; - real mfbcb = (D.f[DIR_0P0])[k]; - real mfbab = (D.f[DIR_0M0])[ks]; - real mfbbc = (D.f[DIR_00P])[k]; - real mfbba = (D.f[DIR_00M])[kb]; - real mfccb = (D.f[DIR_PP0])[k]; - real mfaab = (D.f[DIR_MM0])[ksw]; - real mfcab = (D.f[DIR_PM0])[ks]; - real mfacb = (D.f[DIR_MP0])[kw]; - real mfcbc = (D.f[DIR_P0P])[k]; - real mfaba = (D.f[DIR_M0M])[kbw]; - real mfcba = (D.f[DIR_P0M])[kb]; - real mfabc = (D.f[DIR_M0P])[kw]; - real mfbcc = (D.f[DIR_0PP])[k]; - real mfbaa = (D.f[DIR_0MM])[kbs]; - real mfbca = (D.f[DIR_0PM])[kb]; - real mfbac = (D.f[DIR_0MP])[ks]; - real mfbbb = (D.f[DIR_000])[k]; - real mfccc = (D.f[DIR_PPP])[k]; - real mfaac = (D.f[DIR_MMP])[ksw]; - real mfcac = (D.f[DIR_PMP])[ks]; - real mfacc = (D.f[DIR_MPP])[kw]; - real mfcca = (D.f[DIR_PPM])[kb]; - real mfaaa = (D.f[DIR_MMM])[kbsw]; - real mfcaa = (D.f[DIR_PMM])[kbs]; - real mfaca = (D.f[DIR_MPM])[kbw]; + real mfcbb = (D.f[dP00])[k]; + real mfabb = (D.f[dM00])[kw]; + real mfbcb = (D.f[d0P0])[k]; + real mfbab = (D.f[d0M0])[ks]; + real mfbbc = (D.f[d00P])[k]; + real mfbba = (D.f[d00M])[kb]; + real mfccb = (D.f[dPP0])[k]; + real mfaab = (D.f[dMM0])[ksw]; + real mfcab = (D.f[dPM0])[ks]; + real mfacb = (D.f[dMP0])[kw]; + real mfcbc = (D.f[dP0P])[k]; + real mfaba = (D.f[dM0M])[kbw]; + real mfcba = (D.f[dP0M])[kb]; + real mfabc = (D.f[dM0P])[kw]; + real mfbcc = (D.f[d0PP])[k]; + real mfbaa = (D.f[d0MM])[kbs]; + real mfbca = (D.f[d0PM])[kb]; + real mfbac = (D.f[d0MP])[ks]; + real mfbbb = (D.f[d000])[k]; + real mfccc = (D.f[dPPP])[k]; + real mfaac = (D.f[dMMP])[ksw]; + real mfcac = (D.f[dPMP])[ks]; + real mfacc = (D.f[dMPP])[kw]; + real mfcca = (D.f[dPPM])[kb]; + real mfaaa = (D.f[dMMM])[kbsw]; + real mfcaa = (D.f[dPMM])[kbs]; + real mfaca = (D.f[dMPM])[kbw]; //////////////////////////////////////////////////////////////////////////////////// real drho = ((((mfccc + mfaaa) + (mfaca + mfcac)) + ((mfacc + mfcaa) + (mfaac + mfcca))) + (((mfbac + mfbca) + (mfbaa + mfbcc)) + ((mfabc + mfcba) + (mfaba + mfcbc)) + ((mfacb + mfcab) + (mfaab + mfccb))) + @@ -919,41 +919,41 @@ __global__ void K20CompressibleNavierStokes_Device( //////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////// - (D.f[DIR_P00])[k] = mfabb; - (D.f[DIR_M00])[kw] = mfcbb; - (D.f[DIR_0P0])[k] = mfbab; - (D.f[DIR_0M0])[ks] = mfbcb; - (D.f[DIR_00P])[k] = mfbba; - (D.f[DIR_00M])[kb] = mfbbc; - (D.f[DIR_PP0])[k] = mfaab; - (D.f[DIR_MM0])[ksw] = mfccb; - (D.f[DIR_PM0])[ks] = mfacb; - (D.f[DIR_MP0])[kw] = mfcab; - (D.f[DIR_P0P])[k] = mfaba; - (D.f[DIR_M0M])[kbw] = mfcbc; - (D.f[DIR_P0M])[kb] = mfabc; - (D.f[DIR_M0P])[kw] = mfcba; - (D.f[DIR_0PP])[k] = mfbaa; - (D.f[DIR_0MM])[kbs] = mfbcc; - (D.f[DIR_0PM])[kb] = mfbac; - (D.f[DIR_0MP])[ks] = mfbca; - (D.f[DIR_000])[k] = mfbbb; - (D.f[DIR_PPP])[k] = mfaaa; - (D.f[DIR_PMP])[ks] = mfaca; - (D.f[DIR_PPM])[kb] = mfaac; - (D.f[DIR_PMM])[kbs] = mfacc; - (D.f[DIR_MPP])[kw] = mfcaa; - (D.f[DIR_MMP])[ksw] = mfcca; - (D.f[DIR_MPM])[kbw] = mfcac; - (D.f[DIR_MMM])[kbsw] = mfccc; - //////////////////////////////////////////////////////////////////////////////////// - - (G.g[DIR_P00])[k] = mgabb; - (G.g[DIR_M00])[kw] = mgcbb; - (G.g[DIR_0P0])[k] = mgbab; - (G.g[DIR_0M0])[ks] = mgbcb; - (G.g[DIR_00P])[k] = mgbba; - (G.g[DIR_00M])[kb] = mgbbc; + (D.f[dP00])[k] = mfabb; + (D.f[dM00])[kw] = mfcbb; + (D.f[d0P0])[k] = mfbab; + (D.f[d0M0])[ks] = mfbcb; + (D.f[d00P])[k] = mfbba; + (D.f[d00M])[kb] = mfbbc; + (D.f[dPP0])[k] = mfaab; + (D.f[dMM0])[ksw] = mfccb; + (D.f[dPM0])[ks] = mfacb; + (D.f[dMP0])[kw] = mfcab; + (D.f[dP0P])[k] = mfaba; + (D.f[dM0M])[kbw] = mfcbc; + (D.f[dP0M])[kb] = mfabc; + (D.f[dM0P])[kw] = mfcba; + (D.f[d0PP])[k] = mfbaa; + (D.f[d0MM])[kbs] = mfbcc; + (D.f[d0PM])[kb] = mfbac; + (D.f[d0MP])[ks] = mfbca; + (D.f[d000])[k] = mfbbb; + (D.f[dPPP])[k] = mfaaa; + (D.f[dPMP])[ks] = mfaca; + (D.f[dPPM])[kb] = mfaac; + (D.f[dPMM])[kbs] = mfacc; + (D.f[dMPP])[kw] = mfcaa; + (D.f[dMMP])[ksw] = mfcca; + (D.f[dMPM])[kbw] = mfcac; + (D.f[dMMM])[kbsw] = mfccc; + //////////////////////////////////////////////////////////////////////////////////// + + (G.g[dP00])[k] = mgabb; + (G.g[dM00])[kw] = mgcbb; + (G.g[d0P0])[k] = mgbab; + (G.g[d0M0])[ks] = mgbcb; + (G.g[d00P])[k] = mgbba; + (G.g[d00M])[kb] = mgbbc; } } } \ No newline at end of file diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/K20/K20CompressibleNavierStokes_Device.cuh b/src/gpu/core/Kernel/Compressible/NavierStokes/K20/K20CompressibleNavierStokes_Device.cuh similarity index 100% rename from src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/K20/K20CompressibleNavierStokes_Device.cuh rename to src/gpu/core/Kernel/Compressible/NavierStokes/K20/K20CompressibleNavierStokes_Device.cuh diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/M02/M02CompressibleNavierStokes.cu b/src/gpu/core/Kernel/Compressible/NavierStokes/M02/M02CompressibleNavierStokes.cu similarity index 100% rename from src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/M02/M02CompressibleNavierStokes.cu rename to src/gpu/core/Kernel/Compressible/NavierStokes/M02/M02CompressibleNavierStokes.cu diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/M02/M02CompressibleNavierStokes.h b/src/gpu/core/Kernel/Compressible/NavierStokes/M02/M02CompressibleNavierStokes.h similarity index 100% rename from src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/M02/M02CompressibleNavierStokes.h rename to src/gpu/core/Kernel/Compressible/NavierStokes/M02/M02CompressibleNavierStokes.h diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/M02/M02CompressibleNavierStokes_Device.cu b/src/gpu/core/Kernel/Compressible/NavierStokes/M02/M02CompressibleNavierStokes_Device.cu similarity index 78% rename from src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/M02/M02CompressibleNavierStokes_Device.cu rename to src/gpu/core/Kernel/Compressible/NavierStokes/M02/M02CompressibleNavierStokes_Device.cu index ae0f67fdb44884ffbcdf555fd48b275b64499c85..a9af77511b03a44858b23991375c6a947c39692b 100644 --- a/src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/M02/M02CompressibleNavierStokes_Device.cu +++ b/src/gpu/core/Kernel/Compressible/NavierStokes/M02/M02CompressibleNavierStokes_Device.cu @@ -37,63 +37,63 @@ __global__ void M02CompressibleNavierStokes_Device(real omega, Distributions27 D; if (EvenOrOdd == true) { - D.f[DIR_P00] = &DDStart[DIR_P00 * size_Mat]; - D.f[DIR_M00] = &DDStart[DIR_M00 * size_Mat]; - D.f[DIR_0P0] = &DDStart[DIR_0P0 * size_Mat]; - D.f[DIR_0M0] = &DDStart[DIR_0M0 * size_Mat]; - D.f[DIR_00P] = &DDStart[DIR_00P * size_Mat]; - D.f[DIR_00M] = &DDStart[DIR_00M * size_Mat]; - D.f[DIR_PP0] = &DDStart[DIR_PP0 * size_Mat]; - D.f[DIR_MM0] = &DDStart[DIR_MM0 * size_Mat]; - D.f[DIR_PM0] = &DDStart[DIR_PM0 * size_Mat]; - D.f[DIR_MP0] = &DDStart[DIR_MP0 * size_Mat]; - D.f[DIR_P0P] = &DDStart[DIR_P0P * size_Mat]; - D.f[DIR_M0M] = &DDStart[DIR_M0M * size_Mat]; - D.f[DIR_P0M] = &DDStart[DIR_P0M * size_Mat]; - D.f[DIR_M0P] = &DDStart[DIR_M0P * size_Mat]; - D.f[DIR_0PP] = &DDStart[DIR_0PP * size_Mat]; - D.f[DIR_0MM] = &DDStart[DIR_0MM * size_Mat]; - D.f[DIR_0PM] = &DDStart[DIR_0PM * size_Mat]; - D.f[DIR_0MP] = &DDStart[DIR_0MP * size_Mat]; - D.f[DIR_000] = &DDStart[DIR_000 * size_Mat]; - D.f[DIR_PPP] = &DDStart[DIR_PPP * size_Mat]; - D.f[DIR_MMP] = &DDStart[DIR_MMP * size_Mat]; - D.f[DIR_PMP] = &DDStart[DIR_PMP * size_Mat]; - D.f[DIR_MPP] = &DDStart[DIR_MPP * size_Mat]; - D.f[DIR_PPM] = &DDStart[DIR_PPM * size_Mat]; - D.f[DIR_MMM] = &DDStart[DIR_MMM * size_Mat]; - D.f[DIR_PMM] = &DDStart[DIR_PMM * size_Mat]; - D.f[DIR_MPM] = &DDStart[DIR_MPM * size_Mat]; + D.f[dP00] = &DDStart[dP00 * size_Mat]; + D.f[dM00] = &DDStart[dM00 * size_Mat]; + D.f[d0P0] = &DDStart[d0P0 * size_Mat]; + D.f[d0M0] = &DDStart[d0M0 * size_Mat]; + D.f[d00P] = &DDStart[d00P * size_Mat]; + D.f[d00M] = &DDStart[d00M * size_Mat]; + D.f[dPP0] = &DDStart[dPP0 * size_Mat]; + D.f[dMM0] = &DDStart[dMM0 * size_Mat]; + D.f[dPM0] = &DDStart[dPM0 * size_Mat]; + D.f[dMP0] = &DDStart[dMP0 * size_Mat]; + D.f[dP0P] = &DDStart[dP0P * size_Mat]; + D.f[dM0M] = &DDStart[dM0M * size_Mat]; + D.f[dP0M] = &DDStart[dP0M * size_Mat]; + D.f[dM0P] = &DDStart[dM0P * size_Mat]; + D.f[d0PP] = &DDStart[d0PP * size_Mat]; + D.f[d0MM] = &DDStart[d0MM * size_Mat]; + D.f[d0PM] = &DDStart[d0PM * size_Mat]; + D.f[d0MP] = &DDStart[d0MP * size_Mat]; + D.f[d000] = &DDStart[d000 * size_Mat]; + D.f[dPPP] = &DDStart[dPPP * size_Mat]; + D.f[dMMP] = &DDStart[dMMP * size_Mat]; + D.f[dPMP] = &DDStart[dPMP * size_Mat]; + D.f[dMPP] = &DDStart[dMPP * size_Mat]; + D.f[dPPM] = &DDStart[dPPM * size_Mat]; + D.f[dMMM] = &DDStart[dMMM * size_Mat]; + D.f[dPMM] = &DDStart[dPMM * size_Mat]; + D.f[dMPM] = &DDStart[dMPM * size_Mat]; } else { - D.f[DIR_M00] = &DDStart[DIR_P00 * size_Mat]; - D.f[DIR_P00] = &DDStart[DIR_M00 * size_Mat]; - D.f[DIR_0M0] = &DDStart[DIR_0P0 * size_Mat]; - D.f[DIR_0P0] = &DDStart[DIR_0M0 * size_Mat]; - D.f[DIR_00M] = &DDStart[DIR_00P * size_Mat]; - D.f[DIR_00P] = &DDStart[DIR_00M * size_Mat]; - D.f[DIR_MM0] = &DDStart[DIR_PP0 * size_Mat]; - D.f[DIR_PP0] = &DDStart[DIR_MM0 * size_Mat]; - D.f[DIR_MP0] = &DDStart[DIR_PM0 * size_Mat]; - D.f[DIR_PM0] = &DDStart[DIR_MP0 * size_Mat]; - D.f[DIR_M0M] = &DDStart[DIR_P0P * size_Mat]; - D.f[DIR_P0P] = &DDStart[DIR_M0M * size_Mat]; - D.f[DIR_M0P] = &DDStart[DIR_P0M * size_Mat]; - D.f[DIR_P0M] = &DDStart[DIR_M0P * size_Mat]; - D.f[DIR_0MM] = &DDStart[DIR_0PP * size_Mat]; - D.f[DIR_0PP] = &DDStart[DIR_0MM * size_Mat]; - D.f[DIR_0MP] = &DDStart[DIR_0PM * size_Mat]; - D.f[DIR_0PM] = &DDStart[DIR_0MP * size_Mat]; - D.f[DIR_000] = &DDStart[DIR_000 * size_Mat]; - D.f[DIR_MMM] = &DDStart[DIR_PPP * size_Mat]; - D.f[DIR_PPM] = &DDStart[DIR_MMP * size_Mat]; - D.f[DIR_MPM] = &DDStart[DIR_PMP * size_Mat]; - D.f[DIR_PMM] = &DDStart[DIR_MPP * size_Mat]; - D.f[DIR_MMP] = &DDStart[DIR_PPM * size_Mat]; - D.f[DIR_PPP] = &DDStart[DIR_MMM * size_Mat]; - D.f[DIR_MPP] = &DDStart[DIR_PMM * size_Mat]; - D.f[DIR_PMP] = &DDStart[DIR_MPM * size_Mat]; + D.f[dM00] = &DDStart[dP00 * size_Mat]; + D.f[dP00] = &DDStart[dM00 * size_Mat]; + D.f[d0M0] = &DDStart[d0P0 * size_Mat]; + D.f[d0P0] = &DDStart[d0M0 * size_Mat]; + D.f[d00M] = &DDStart[d00P * size_Mat]; + D.f[d00P] = &DDStart[d00M * size_Mat]; + D.f[dMM0] = &DDStart[dPP0 * size_Mat]; + D.f[dPP0] = &DDStart[dMM0 * size_Mat]; + D.f[dMP0] = &DDStart[dPM0 * size_Mat]; + D.f[dPM0] = &DDStart[dMP0 * size_Mat]; + D.f[dM0M] = &DDStart[dP0P * size_Mat]; + D.f[dP0P] = &DDStart[dM0M * size_Mat]; + D.f[dM0P] = &DDStart[dP0M * size_Mat]; + D.f[dP0M] = &DDStart[dM0P * size_Mat]; + D.f[d0MM] = &DDStart[d0PP * size_Mat]; + D.f[d0PP] = &DDStart[d0MM * size_Mat]; + D.f[d0MP] = &DDStart[d0PM * size_Mat]; + D.f[d0PM] = &DDStart[d0MP * size_Mat]; + D.f[d000] = &DDStart[d000 * size_Mat]; + D.f[dMMM] = &DDStart[dPPP * size_Mat]; + D.f[dPPM] = &DDStart[dMMP * size_Mat]; + D.f[dMPM] = &DDStart[dPMP * size_Mat]; + D.f[dPMM] = &DDStart[dMPP * size_Mat]; + D.f[dMMP] = &DDStart[dPPM * size_Mat]; + D.f[dPPP] = &DDStart[dMMM * size_Mat]; + D.f[dMPP] = &DDStart[dPMM * size_Mat]; + D.f[dPMP] = &DDStart[dMPM * size_Mat]; } //////////////////////////////////////////////////////////////////////////////// @@ -126,33 +126,33 @@ __global__ void M02CompressibleNavierStokes_Device(real omega, //unsigned int ktne = k; unsigned int kbsw = neighborZ[ksw]; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real mfcbb = (D.f[DIR_P00])[k];//[ke ];// + c2over27 ;(D.f[DIR_P00])[k ];//ke - real mfabb = (D.f[DIR_M00])[kw];//[kw ];// + c2over27 ;(D.f[DIR_M00])[kw ]; - real mfbcb = (D.f[DIR_0P0])[k];//[kn ];// + c2over27 ;(D.f[DIR_0P0])[k ];//kn - real mfbab = (D.f[DIR_0M0])[ks];//[ks ];// + c2over27 ;(D.f[DIR_0M0])[ks ]; - real mfbbc = (D.f[DIR_00P])[k];//[kt ];// + c2over27 ;(D.f[DIR_00P])[k ];//kt - real mfbba = (D.f[DIR_00M])[kb];//[kb ];// + c2over27 ;(D.f[DIR_00M])[kb ]; - real mfccb = (D.f[DIR_PP0])[k];//[kne ];// + c1over54 ;(D.f[DIR_PP0])[k ];//kne - real mfaab = (D.f[DIR_MM0])[ksw];//[ksw ];// + c1over54 ;(D.f[DIR_MM0])[ksw]; - real mfcab = (D.f[DIR_PM0])[ks];//[kse ];// + c1over54 ;(D.f[DIR_PM0])[ks ];//kse - real mfacb = (D.f[DIR_MP0])[kw];//[knw ];// + c1over54 ;(D.f[DIR_MP0])[kw ];//knw - real mfcbc = (D.f[DIR_P0P])[k];//[kte ];// + c1over54 ;(D.f[DIR_P0P])[k ];//kte - real mfaba = (D.f[DIR_M0M])[kbw];//[kbw ];// + c1over54 ;(D.f[DIR_M0M])[kbw]; - real mfcba = (D.f[DIR_P0M])[kb];//[kbe ];// + c1over54 ;(D.f[DIR_P0M])[kb ];//kbe - real mfabc = (D.f[DIR_M0P])[kw];//[ktw ];// + c1over54 ;(D.f[DIR_M0P])[kw ];//ktw - real mfbcc = (D.f[DIR_0PP])[k];//[ktn ];// + c1over54 ;(D.f[DIR_0PP])[k ];//ktn - real mfbaa = (D.f[DIR_0MM])[kbs];//[kbs ];// + c1over54 ;(D.f[DIR_0MM])[kbs]; - real mfbca = (D.f[DIR_0PM])[kb];//[kbn ];// + c1over54 ;(D.f[DIR_0PM])[kb ];//kbn - real mfbac = (D.f[DIR_0MP])[ks];//[kts ];// + c1over54 ;(D.f[DIR_0MP])[ks ];//kts - real mfbbb = (D.f[DIR_000])[k];//[kzero];// + c8over27 ;(D.f[DIR_000])[k ];//kzero - real mfccc = (D.f[DIR_PPP])[k];//[ktne ];// + c1over216;(D.f[DIR_PPP])[k ];//ktne - real mfaac = (D.f[DIR_MMP])[ksw];//[ktsw ];// + c1over216;(D.f[DIR_MMP])[ksw];//ktsw - real mfcac = (D.f[DIR_PMP])[ks];//[ktse ];// + c1over216;(D.f[DIR_PMP])[ks ];//ktse - real mfacc = (D.f[DIR_MPP])[kw];//[ktnw ];// + c1over216;(D.f[DIR_MPP])[kw ];//ktnw - real mfcca = (D.f[DIR_PPM])[kb];//[kbne ];// + c1over216;(D.f[DIR_PPM])[kb ];//kbne - real mfaaa = (D.f[DIR_MMM])[kbsw];//[kbsw ];// + c1over216;(D.f[DIR_MMM])[kbsw]; - real mfcaa = (D.f[DIR_PMM])[kbs];//[kbse ];// + c1over216;(D.f[DIR_PMM])[kbs];//kbse - real mfaca = (D.f[DIR_MPM])[kbw];//[kbnw ];// + c1over216;(D.f[DIR_MPM])[kbw];//kbnw + real mfcbb = (D.f[dP00])[k];//[ke ];// + c2over27 ;(D.f[dP00])[k ];//ke + real mfabb = (D.f[dM00])[kw];//[kw ];// + c2over27 ;(D.f[dM00])[kw ]; + real mfbcb = (D.f[d0P0])[k];//[kn ];// + c2over27 ;(D.f[d0P0])[k ];//kn + real mfbab = (D.f[d0M0])[ks];//[ks ];// + c2over27 ;(D.f[d0M0])[ks ]; + real mfbbc = (D.f[d00P])[k];//[kt ];// + c2over27 ;(D.f[d00P])[k ];//kt + real mfbba = (D.f[d00M])[kb];//[kb ];// + c2over27 ;(D.f[d00M])[kb ]; + real mfccb = (D.f[dPP0])[k];//[kne ];// + c1over54 ;(D.f[dPP0])[k ];//kne + real mfaab = (D.f[dMM0])[ksw];//[ksw ];// + c1over54 ;(D.f[dMM0])[ksw]; + real mfcab = (D.f[dPM0])[ks];//[kse ];// + c1over54 ;(D.f[dPM0])[ks ];//kse + real mfacb = (D.f[dMP0])[kw];//[knw ];// + c1over54 ;(D.f[dMP0])[kw ];//knw + real mfcbc = (D.f[dP0P])[k];//[kte ];// + c1over54 ;(D.f[dP0P])[k ];//kte + real mfaba = (D.f[dM0M])[kbw];//[kbw ];// + c1over54 ;(D.f[dM0M])[kbw]; + real mfcba = (D.f[dP0M])[kb];//[kbe ];// + c1over54 ;(D.f[dP0M])[kb ];//kbe + real mfabc = (D.f[dM0P])[kw];//[ktw ];// + c1over54 ;(D.f[dM0P])[kw ];//ktw + real mfbcc = (D.f[d0PP])[k];//[ktn ];// + c1over54 ;(D.f[d0PP])[k ];//ktn + real mfbaa = (D.f[d0MM])[kbs];//[kbs ];// + c1over54 ;(D.f[d0MM])[kbs]; + real mfbca = (D.f[d0PM])[kb];//[kbn ];// + c1over54 ;(D.f[d0PM])[kb ];//kbn + real mfbac = (D.f[d0MP])[ks];//[kts ];// + c1over54 ;(D.f[d0MP])[ks ];//kts + real mfbbb = (D.f[d000])[k];//[kzero];// + c8over27 ;(D.f[d000])[k ];//kzero + real mfccc = (D.f[dPPP])[k];//[ktne ];// + c1over216;(D.f[dPPP])[k ];//ktne + real mfaac = (D.f[dMMP])[ksw];//[ktsw ];// + c1over216;(D.f[dMMP])[ksw];//ktsw + real mfcac = (D.f[dPMP])[ks];//[ktse ];// + c1over216;(D.f[dPMP])[ks ];//ktse + real mfacc = (D.f[dMPP])[kw];//[ktnw ];// + c1over216;(D.f[dMPP])[kw ];//ktnw + real mfcca = (D.f[dPPM])[kb];//[kbne ];// + c1over216;(D.f[dPPM])[kb ];//kbne + real mfaaa = (D.f[dMMM])[kbsw];//[kbsw ];// + c1over216;(D.f[dMMM])[kbsw]; + real mfcaa = (D.f[dPMM])[kbs];//[kbse ];// + c1over216;(D.f[dPMM])[kbs];//kbse + real mfaca = (D.f[dMPM])[kbw];//[kbnw ];// + c1over216;(D.f[dMPM])[kbw];//kbnw //////////////////////////////////////////////////////////////////////////////////// real rho = (mfccc + mfaaa + mfaca + mfcac + mfacc + mfcaa + mfaac + mfcca + mfbac + mfbca + mfbaa + mfbcc + mfabc + mfcba + mfaba + mfcbc + mfacb + mfcab + mfaab + mfccb + @@ -739,33 +739,33 @@ __global__ void M02CompressibleNavierStokes_Device(real omega, //////////////////////////////////////////////////////////////////////////////////// - (D.f[DIR_P00])[k] = mfabb;//(D.f[ DIR_P00 ])[ke ] = mfabb;// - c2over27 ; (D.f[ DIR_P00 ])[k ] - (D.f[DIR_M00])[kw] = mfcbb;//(D.f[ DIR_M00 ])[kw ] = mfcbb;// - c2over27 ; (D.f[ DIR_M00 ])[kw ] - (D.f[DIR_0P0])[k] = mfbab;//(D.f[ DIR_0P0 ])[kn ] = mfbab;// - c2over27 ; (D.f[ DIR_0P0 ])[k ] - (D.f[DIR_0M0])[ks] = mfbcb;//(D.f[ DIR_0M0 ])[ks ] = mfbcb;// - c2over27 ; (D.f[ DIR_0M0 ])[ks ] - (D.f[DIR_00P])[k] = mfbba;//(D.f[ DIR_00P ])[kt ] = mfbba;// - c2over27 ; (D.f[ DIR_00P ])[k ] - (D.f[DIR_00M])[kb] = mfbbc;//(D.f[ DIR_00M ])[kb ] = mfbbc;// - c2over27 ; (D.f[ DIR_00M ])[kb ] - (D.f[DIR_PP0])[k] = mfaab;//(D.f[ DIR_PP0 ])[kne ] = mfaab;// - c1over54 ; (D.f[ DIR_PP0 ])[k ] - (D.f[DIR_MM0])[ksw] = mfccb;//(D.f[ DIR_MM0 ])[ksw ] = mfccb;// - c1over54 ; (D.f[ DIR_MM0 ])[ksw ] - (D.f[DIR_PM0])[ks] = mfacb;//(D.f[ DIR_PM0 ])[kse ] = mfacb;// - c1over54 ; (D.f[ DIR_PM0 ])[ks ] - (D.f[DIR_MP0])[kw] = mfcab;//(D.f[ DIR_MP0 ])[knw ] = mfcab;// - c1over54 ; (D.f[ DIR_MP0 ])[kw ] - (D.f[DIR_P0P])[k] = mfaba;//(D.f[ DIR_P0P ])[kte ] = mfaba;// - c1over54 ; (D.f[ DIR_P0P ])[k ] - (D.f[DIR_M0M])[kbw] = mfcbc;//(D.f[ DIR_M0M ])[kbw ] = mfcbc;// - c1over54 ; (D.f[ DIR_M0M ])[kbw ] - (D.f[DIR_P0M])[kb] = mfabc;//(D.f[ DIR_P0M ])[kbe ] = mfabc;// - c1over54 ; (D.f[ DIR_P0M ])[kb ] - (D.f[DIR_M0P])[kw] = mfcba;//(D.f[ DIR_M0P ])[ktw ] = mfcba;// - c1over54 ; (D.f[ DIR_M0P ])[kw ] - (D.f[DIR_0PP])[k] = mfbaa;//(D.f[ DIR_0PP ])[ktn ] = mfbaa;// - c1over54 ; (D.f[ DIR_0PP ])[k ] - (D.f[DIR_0MM])[kbs] = mfbcc;//(D.f[ DIR_0MM ])[kbs ] = mfbcc;// - c1over54 ; (D.f[ DIR_0MM ])[kbs ] - (D.f[DIR_0PM])[kb] = mfbac;//(D.f[ DIR_0PM ])[kbn ] = mfbac;// - c1over54 ; (D.f[ DIR_0PM ])[kb ] - (D.f[DIR_0MP])[ks] = mfbca;//(D.f[ DIR_0MP ])[kts ] = mfbca;// - c1over54 ; (D.f[ DIR_0MP ])[ks ] - (D.f[DIR_000])[k] = mfbbb;//(D.f[ DIR_000])[kzero] = mfbbb;// - c8over27 ; (D.f[ DIR_000])[k ] - (D.f[DIR_PPP])[k] = mfaaa;//(D.f[ DIR_PPP ])[ktne ] = mfaaa;// - c1over216; (D.f[ DIR_PPP ])[k ] - (D.f[DIR_PMP])[ks] = mfaca;//(D.f[ DIR_PMP ])[ktse ] = mfaca;// - c1over216; (D.f[ DIR_PMP ])[ks ] - (D.f[DIR_PPM])[kb] = mfaac;//(D.f[ DIR_PPM ])[kbne ] = mfaac;// - c1over216; (D.f[ DIR_PPM ])[kb ] - (D.f[DIR_PMM])[kbs] = mfacc;//(D.f[ DIR_PMM ])[kbse ] = mfacc;// - c1over216; (D.f[ DIR_PMM ])[kbs ] - (D.f[DIR_MPP])[kw] = mfcaa;//(D.f[ DIR_MPP ])[ktnw ] = mfcaa;// - c1over216; (D.f[ DIR_MPP ])[kw ] - (D.f[DIR_MMP])[ksw] = mfcca;//(D.f[ DIR_MMP ])[ktsw ] = mfcca;// - c1over216; (D.f[ DIR_MMP ])[ksw ] - (D.f[DIR_MPM])[kbw] = mfcac;//(D.f[ DIR_MPM ])[kbnw ] = mfcac;// - c1over216; (D.f[ DIR_MPM ])[kbw ] - (D.f[DIR_MMM])[kbsw] = mfccc;//(D.f[ DIR_MMM ])[kbsw ] = mfccc;// - c1over216; (D.f[ DIR_MMM ])[kbsw] + (D.f[dP00])[k] = mfabb;//(D.f[ dP00 ])[ke ] = mfabb;// - c2over27 ; (D.f[ dP00 ])[k ] + (D.f[dM00])[kw] = mfcbb;//(D.f[ dM00 ])[kw ] = mfcbb;// - c2over27 ; (D.f[ dM00 ])[kw ] + (D.f[d0P0])[k] = mfbab;//(D.f[ d0P0 ])[kn ] = mfbab;// - c2over27 ; (D.f[ d0P0 ])[k ] + (D.f[d0M0])[ks] = mfbcb;//(D.f[ d0M0 ])[ks ] = mfbcb;// - c2over27 ; (D.f[ d0M0 ])[ks ] + (D.f[d00P])[k] = mfbba;//(D.f[ d00P ])[kt ] = mfbba;// - c2over27 ; (D.f[ d00P ])[k ] + (D.f[d00M])[kb] = mfbbc;//(D.f[ d00M ])[kb ] = mfbbc;// - c2over27 ; (D.f[ d00M ])[kb ] + (D.f[dPP0])[k] = mfaab;//(D.f[ dPP0 ])[kne ] = mfaab;// - c1over54 ; (D.f[ dPP0 ])[k ] + (D.f[dMM0])[ksw] = mfccb;//(D.f[ dMM0 ])[ksw ] = mfccb;// - c1over54 ; (D.f[ dMM0 ])[ksw ] + (D.f[dPM0])[ks] = mfacb;//(D.f[ dPM0 ])[kse ] = mfacb;// - c1over54 ; (D.f[ dPM0 ])[ks ] + (D.f[dMP0])[kw] = mfcab;//(D.f[ dMP0 ])[knw ] = mfcab;// - c1over54 ; (D.f[ dMP0 ])[kw ] + (D.f[dP0P])[k] = mfaba;//(D.f[ dP0P ])[kte ] = mfaba;// - c1over54 ; (D.f[ dP0P ])[k ] + (D.f[dM0M])[kbw] = mfcbc;//(D.f[ dM0M ])[kbw ] = mfcbc;// - c1over54 ; (D.f[ dM0M ])[kbw ] + (D.f[dP0M])[kb] = mfabc;//(D.f[ dP0M ])[kbe ] = mfabc;// - c1over54 ; (D.f[ dP0M ])[kb ] + (D.f[dM0P])[kw] = mfcba;//(D.f[ dM0P ])[ktw ] = mfcba;// - c1over54 ; (D.f[ dM0P ])[kw ] + (D.f[d0PP])[k] = mfbaa;//(D.f[ d0PP ])[ktn ] = mfbaa;// - c1over54 ; (D.f[ d0PP ])[k ] + (D.f[d0MM])[kbs] = mfbcc;//(D.f[ d0MM ])[kbs ] = mfbcc;// - c1over54 ; (D.f[ d0MM ])[kbs ] + (D.f[d0PM])[kb] = mfbac;//(D.f[ d0PM ])[kbn ] = mfbac;// - c1over54 ; (D.f[ d0PM ])[kb ] + (D.f[d0MP])[ks] = mfbca;//(D.f[ d0MP ])[kts ] = mfbca;// - c1over54 ; (D.f[ d0MP ])[ks ] + (D.f[d000])[k] = mfbbb;//(D.f[ d000])[kzero] = mfbbb;// - c8over27 ; (D.f[ d000])[k ] + (D.f[dPPP])[k] = mfaaa;//(D.f[ dPPP ])[ktne ] = mfaaa;// - c1over216; (D.f[ dPPP ])[k ] + (D.f[dPMP])[ks] = mfaca;//(D.f[ dPMP ])[ktse ] = mfaca;// - c1over216; (D.f[ dPMP ])[ks ] + (D.f[dPPM])[kb] = mfaac;//(D.f[ dPPM ])[kbne ] = mfaac;// - c1over216; (D.f[ dPPM ])[kb ] + (D.f[dPMM])[kbs] = mfacc;//(D.f[ dPMM ])[kbse ] = mfacc;// - c1over216; (D.f[ dPMM ])[kbs ] + (D.f[dMPP])[kw] = mfcaa;//(D.f[ dMPP ])[ktnw ] = mfcaa;// - c1over216; (D.f[ dMPP ])[kw ] + (D.f[dMMP])[ksw] = mfcca;//(D.f[ dMMP ])[ktsw ] = mfcca;// - c1over216; (D.f[ dMMP ])[ksw ] + (D.f[dMPM])[kbw] = mfcac;//(D.f[ dMPM ])[kbnw ] = mfcac;// - c1over216; (D.f[ dMPM ])[kbw ] + (D.f[dMMM])[kbsw] = mfccc;//(D.f[ dMMM ])[kbsw ] = mfccc;// - c1over216; (D.f[ dMMM ])[kbsw] //////////////////////////////////////////////////////////////////////////////////// } } diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/M02/M02CompressibleNavierStokes_Device.cuh b/src/gpu/core/Kernel/Compressible/NavierStokes/M02/M02CompressibleNavierStokes_Device.cuh similarity index 100% rename from src/gpu/VirtualFluids_GPU/Kernel/Compressible/FluidFlow/M02/M02CompressibleNavierStokes_Device.cuh rename to src/gpu/core/Kernel/Compressible/NavierStokes/M02/M02CompressibleNavierStokes_Device.cuh diff --git a/src/gpu/core/Kernel/Incompressible/AdvectionDiffusion/D3Q27/F16/F16IncompressibleAdvectionDiffusion.cu b/src/gpu/core/Kernel/Incompressible/AdvectionDiffusion/D3Q27/F16/F16IncompressibleAdvectionDiffusion.cu new file mode 100644 index 0000000000000000000000000000000000000000..7d7211a97ee7988abbda78e3c1e054bba2b1bd73 --- /dev/null +++ b/src/gpu/core/Kernel/Incompressible/AdvectionDiffusion/D3Q27/F16/F16IncompressibleAdvectionDiffusion.cu @@ -0,0 +1,40 @@ +#include "F16IncompressibleAdvectionDiffusion.h" + +#include "F16IncompressibleAdvectionDiffusion_Device.cuh" +#include "Parameter/Parameter.h" +#include <cuda_helper/CudaGrid.h> + +std::shared_ptr<F16IncompressibleAdvectionDiffusion> F16IncompressibleAdvectionDiffusion::getNewInstance(std::shared_ptr<Parameter> para, int level) +{ + return std::shared_ptr<F16IncompressibleAdvectionDiffusion>(new F16IncompressibleAdvectionDiffusion(para, level)); +} + +void F16IncompressibleAdvectionDiffusion::run() +{ + vf::cuda::CudaGrid grid = vf::cuda::CudaGrid(para->getParD(level)->numberofthreads, para->getParD(level)->numberOfNodes); + + F16IncompressibleAdvectionDiffusion_Device<<< grid.grid, grid.threads >>>( + para->getParD(level)->diffusivity, + para->getParD(level)->typeOfGridNode, + para->getParD(level)->neighborX, + para->getParD(level)->neighborY, + para->getParD(level)->neighborZ, + para->getParD(level)->distributions.f[0], + para->getParD(level)->distributionsAD.f[0], + para->getParD(level)->numberOfNodes, + para->getParD(level)->isEvenTimestep); + getLastCudaError("F16IncompressibleAdvectionDiffusion_Device execution failed"); +} + +F16IncompressibleAdvectionDiffusion::F16IncompressibleAdvectionDiffusion(std::shared_ptr<Parameter> para, int level) +{ + this->para = para; + this->level = level; + + myPreProcessorTypes.push_back(InitIncompAD27); + +} + +F16IncompressibleAdvectionDiffusion::F16IncompressibleAdvectionDiffusion() +{ +} diff --git a/src/gpu/core/Kernel/Incompressible/AdvectionDiffusion/D3Q27/F16/F16IncompressibleAdvectionDiffusion.h b/src/gpu/core/Kernel/Incompressible/AdvectionDiffusion/D3Q27/F16/F16IncompressibleAdvectionDiffusion.h new file mode 100644 index 0000000000000000000000000000000000000000..e7ebfac181a4f1cbeca97dc9349ef6107560730d --- /dev/null +++ b/src/gpu/core/Kernel/Incompressible/AdvectionDiffusion/D3Q27/F16/F16IncompressibleAdvectionDiffusion.h @@ -0,0 +1,17 @@ +#ifndef F16IncompressibleAdvectionDiffusion_H +#define F16IncompressibleAdvectionDiffusion_H + +#include "Kernel/AdvectionDiffusionKernel.h" + + +class F16IncompressibleAdvectionDiffusion : public AdvectionDiffusionKernel +{ +public: + static std::shared_ptr<F16IncompressibleAdvectionDiffusion> getNewInstance(std::shared_ptr<Parameter> para, int level); + void run(); + +private: + F16IncompressibleAdvectionDiffusion(); + F16IncompressibleAdvectionDiffusion(std::shared_ptr< Parameter> para, int level); +}; +#endif \ No newline at end of file diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/AdvectionDiffusion/Incompressible/Mod27/ADIncomp27/ADIncomp27_Device.cu b/src/gpu/core/Kernel/Incompressible/AdvectionDiffusion/D3Q27/F16/F16IncompressibleAdvectionDiffusion_Device.cu similarity index 65% rename from src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/AdvectionDiffusion/Incompressible/Mod27/ADIncomp27/ADIncomp27_Device.cu rename to src/gpu/core/Kernel/Incompressible/AdvectionDiffusion/D3Q27/F16/F16IncompressibleAdvectionDiffusion_Device.cu index 4a5cbb1168940bd6bfc9d9a48568b5964b736ae4..a144744a7d5ead1e4fef12f35d5cc43b7620fa0f 100644 --- a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/AdvectionDiffusion/Incompressible/Mod27/ADIncomp27/ADIncomp27_Device.cu +++ b/src/gpu/core/Kernel/Incompressible/AdvectionDiffusion/D3Q27/F16/F16IncompressibleAdvectionDiffusion_Device.cu @@ -6,7 +6,7 @@ using namespace vf::basics::constant; using namespace vf::lbm::dir; #include "math.h" -__global__ void LB_Kernel_AD_Incomp_27(real diffusivity, +__global__ void F16IncompressibleAdvectionDiffusion_Device(real diffusivity, unsigned int* bcMatD, unsigned int* neighborX, unsigned int* neighborY, @@ -38,125 +38,125 @@ __global__ void LB_Kernel_AD_Incomp_27(real diffusivity, Distributions27 D; if (EvenOrOdd == true) { - D.f[DIR_P00] = &DDStart[DIR_P00 * numberOfLBnodes]; - D.f[DIR_M00] = &DDStart[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0P0] = &DDStart[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0M0] = &DDStart[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00P] = &DDStart[DIR_00P * numberOfLBnodes]; - D.f[DIR_00M] = &DDStart[DIR_00M * numberOfLBnodes]; - D.f[DIR_PP0] = &DDStart[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_MM0] = &DDStart[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DDStart[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DDStart[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_P0P] = &DDStart[DIR_P0P * numberOfLBnodes]; - D.f[DIR_M0M] = &DDStart[DIR_M0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DDStart[DIR_P0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DDStart[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0PP] = &DDStart[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0MM] = &DDStart[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0PM] = &DDStart[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0MP] = &DDStart[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DDStart[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DDStart[DIR_PPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DDStart[DIR_MMP * numberOfLBnodes]; - D.f[DIR_PMP] = &DDStart[DIR_PMP * numberOfLBnodes]; - D.f[DIR_MPP] = &DDStart[DIR_MPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DDStart[DIR_PPM * numberOfLBnodes]; - D.f[DIR_MMM] = &DDStart[DIR_MMM * numberOfLBnodes]; - D.f[DIR_PMM] = &DDStart[DIR_PMM * numberOfLBnodes]; - D.f[DIR_MPM] = &DDStart[DIR_MPM * numberOfLBnodes]; + D.f[dP00] = &DDStart[dP00 * numberOfLBnodes]; + D.f[dM00] = &DDStart[dM00 * numberOfLBnodes]; + D.f[d0P0] = &DDStart[d0P0 * numberOfLBnodes]; + D.f[d0M0] = &DDStart[d0M0 * numberOfLBnodes]; + D.f[d00P] = &DDStart[d00P * numberOfLBnodes]; + D.f[d00M] = &DDStart[d00M * numberOfLBnodes]; + D.f[dPP0] = &DDStart[dPP0 * numberOfLBnodes]; + D.f[dMM0] = &DDStart[dMM0 * numberOfLBnodes]; + D.f[dPM0] = &DDStart[dPM0 * numberOfLBnodes]; + D.f[dMP0] = &DDStart[dMP0 * numberOfLBnodes]; + D.f[dP0P] = &DDStart[dP0P * numberOfLBnodes]; + D.f[dM0M] = &DDStart[dM0M * numberOfLBnodes]; + D.f[dP0M] = &DDStart[dP0M * numberOfLBnodes]; + D.f[dM0P] = &DDStart[dM0P * numberOfLBnodes]; + D.f[d0PP] = &DDStart[d0PP * numberOfLBnodes]; + D.f[d0MM] = &DDStart[d0MM * numberOfLBnodes]; + D.f[d0PM] = &DDStart[d0PM * numberOfLBnodes]; + D.f[d0MP] = &DDStart[d0MP * numberOfLBnodes]; + D.f[d000] = &DDStart[d000 * numberOfLBnodes]; + D.f[dPPP] = &DDStart[dPPP * numberOfLBnodes]; + D.f[dMMP] = &DDStart[dMMP * numberOfLBnodes]; + D.f[dPMP] = &DDStart[dPMP * numberOfLBnodes]; + D.f[dMPP] = &DDStart[dMPP * numberOfLBnodes]; + D.f[dPPM] = &DDStart[dPPM * numberOfLBnodes]; + D.f[dMMM] = &DDStart[dMMM * numberOfLBnodes]; + D.f[dPMM] = &DDStart[dPMM * numberOfLBnodes]; + D.f[dMPM] = &DDStart[dMPM * numberOfLBnodes]; } else { - D.f[DIR_M00] = &DDStart[DIR_P00 * numberOfLBnodes]; - D.f[DIR_P00] = &DDStart[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0M0] = &DDStart[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0P0] = &DDStart[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00M] = &DDStart[DIR_00P * numberOfLBnodes]; - D.f[DIR_00P] = &DDStart[DIR_00M * numberOfLBnodes]; - D.f[DIR_MM0] = &DDStart[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_PP0] = &DDStart[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DDStart[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DDStart[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_M0M] = &DDStart[DIR_P0P * numberOfLBnodes]; - D.f[DIR_P0P] = &DDStart[DIR_M0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DDStart[DIR_P0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DDStart[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0MM] = &DDStart[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0PP] = &DDStart[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0MP] = &DDStart[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0PM] = &DDStart[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DDStart[DIR_000 * numberOfLBnodes]; - D.f[DIR_MMM] = &DDStart[DIR_PPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DDStart[DIR_MMP * numberOfLBnodes]; - D.f[DIR_MPM] = &DDStart[DIR_PMP * numberOfLBnodes]; - D.f[DIR_PMM] = &DDStart[DIR_MPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DDStart[DIR_PPM * numberOfLBnodes]; - D.f[DIR_PPP] = &DDStart[DIR_MMM * numberOfLBnodes]; - D.f[DIR_MPP] = &DDStart[DIR_PMM * numberOfLBnodes]; - D.f[DIR_PMP] = &DDStart[DIR_MPM * numberOfLBnodes]; + D.f[dM00] = &DDStart[dP00 * numberOfLBnodes]; + D.f[dP00] = &DDStart[dM00 * numberOfLBnodes]; + D.f[d0M0] = &DDStart[d0P0 * numberOfLBnodes]; + D.f[d0P0] = &DDStart[d0M0 * numberOfLBnodes]; + D.f[d00M] = &DDStart[d00P * numberOfLBnodes]; + D.f[d00P] = &DDStart[d00M * numberOfLBnodes]; + D.f[dMM0] = &DDStart[dPP0 * numberOfLBnodes]; + D.f[dPP0] = &DDStart[dMM0 * numberOfLBnodes]; + D.f[dMP0] = &DDStart[dPM0 * numberOfLBnodes]; + D.f[dPM0] = &DDStart[dMP0 * numberOfLBnodes]; + D.f[dM0M] = &DDStart[dP0P * numberOfLBnodes]; + D.f[dP0P] = &DDStart[dM0M * numberOfLBnodes]; + D.f[dM0P] = &DDStart[dP0M * numberOfLBnodes]; + D.f[dP0M] = &DDStart[dM0P * numberOfLBnodes]; + D.f[d0MM] = &DDStart[d0PP * numberOfLBnodes]; + D.f[d0PP] = &DDStart[d0MM * numberOfLBnodes]; + D.f[d0MP] = &DDStart[d0PM * numberOfLBnodes]; + D.f[d0PM] = &DDStart[d0MP * numberOfLBnodes]; + D.f[d000] = &DDStart[d000 * numberOfLBnodes]; + D.f[dMMM] = &DDStart[dPPP * numberOfLBnodes]; + D.f[dPPM] = &DDStart[dMMP * numberOfLBnodes]; + D.f[dMPM] = &DDStart[dPMP * numberOfLBnodes]; + D.f[dPMM] = &DDStart[dMPP * numberOfLBnodes]; + D.f[dMMP] = &DDStart[dPPM * numberOfLBnodes]; + D.f[dPPP] = &DDStart[dMMM * numberOfLBnodes]; + D.f[dMPP] = &DDStart[dPMM * numberOfLBnodes]; + D.f[dPMP] = &DDStart[dMPM * numberOfLBnodes]; } Distributions27 D27; if (EvenOrOdd == true) { - D27.f[DIR_P00] = &DD27[DIR_P00 * numberOfLBnodes]; - D27.f[DIR_M00] = &DD27[DIR_M00 * numberOfLBnodes]; - D27.f[DIR_0P0] = &DD27[DIR_0P0 * numberOfLBnodes]; - D27.f[DIR_0M0] = &DD27[DIR_0M0 * numberOfLBnodes]; - D27.f[DIR_00P] = &DD27[DIR_00P * numberOfLBnodes]; - D27.f[DIR_00M] = &DD27[DIR_00M * numberOfLBnodes]; - D27.f[DIR_PP0] = &DD27[DIR_PP0 * numberOfLBnodes]; - D27.f[DIR_MM0] = &DD27[DIR_MM0 * numberOfLBnodes]; - D27.f[DIR_PM0] = &DD27[DIR_PM0 * numberOfLBnodes]; - D27.f[DIR_MP0] = &DD27[DIR_MP0 * numberOfLBnodes]; - D27.f[DIR_P0P] = &DD27[DIR_P0P * numberOfLBnodes]; - D27.f[DIR_M0M] = &DD27[DIR_M0M * numberOfLBnodes]; - D27.f[DIR_P0M] = &DD27[DIR_P0M * numberOfLBnodes]; - D27.f[DIR_M0P] = &DD27[DIR_M0P * numberOfLBnodes]; - D27.f[DIR_0PP] = &DD27[DIR_0PP * numberOfLBnodes]; - D27.f[DIR_0MM] = &DD27[DIR_0MM * numberOfLBnodes]; - D27.f[DIR_0PM] = &DD27[DIR_0PM * numberOfLBnodes]; - D27.f[DIR_0MP] = &DD27[DIR_0MP * numberOfLBnodes]; - D27.f[DIR_000] = &DD27[DIR_000 * numberOfLBnodes]; - D27.f[DIR_PPP] = &DD27[DIR_PPP * numberOfLBnodes]; - D27.f[DIR_MMP] = &DD27[DIR_MMP * numberOfLBnodes]; - D27.f[DIR_PMP] = &DD27[DIR_PMP * numberOfLBnodes]; - D27.f[DIR_MPP] = &DD27[DIR_MPP * numberOfLBnodes]; - D27.f[DIR_PPM] = &DD27[DIR_PPM * numberOfLBnodes]; - D27.f[DIR_MMM] = &DD27[DIR_MMM * numberOfLBnodes]; - D27.f[DIR_PMM] = &DD27[DIR_PMM * numberOfLBnodes]; - D27.f[DIR_MPM] = &DD27[DIR_MPM * numberOfLBnodes]; + D27.f[dP00] = &DD27[dP00 * numberOfLBnodes]; + D27.f[dM00] = &DD27[dM00 * numberOfLBnodes]; + D27.f[d0P0] = &DD27[d0P0 * numberOfLBnodes]; + D27.f[d0M0] = &DD27[d0M0 * numberOfLBnodes]; + D27.f[d00P] = &DD27[d00P * numberOfLBnodes]; + D27.f[d00M] = &DD27[d00M * numberOfLBnodes]; + D27.f[dPP0] = &DD27[dPP0 * numberOfLBnodes]; + D27.f[dMM0] = &DD27[dMM0 * numberOfLBnodes]; + D27.f[dPM0] = &DD27[dPM0 * numberOfLBnodes]; + D27.f[dMP0] = &DD27[dMP0 * numberOfLBnodes]; + D27.f[dP0P] = &DD27[dP0P * numberOfLBnodes]; + D27.f[dM0M] = &DD27[dM0M * numberOfLBnodes]; + D27.f[dP0M] = &DD27[dP0M * numberOfLBnodes]; + D27.f[dM0P] = &DD27[dM0P * numberOfLBnodes]; + D27.f[d0PP] = &DD27[d0PP * numberOfLBnodes]; + D27.f[d0MM] = &DD27[d0MM * numberOfLBnodes]; + D27.f[d0PM] = &DD27[d0PM * numberOfLBnodes]; + D27.f[d0MP] = &DD27[d0MP * numberOfLBnodes]; + D27.f[d000] = &DD27[d000 * numberOfLBnodes]; + D27.f[dPPP] = &DD27[dPPP * numberOfLBnodes]; + D27.f[dMMP] = &DD27[dMMP * numberOfLBnodes]; + D27.f[dPMP] = &DD27[dPMP * numberOfLBnodes]; + D27.f[dMPP] = &DD27[dMPP * numberOfLBnodes]; + D27.f[dPPM] = &DD27[dPPM * numberOfLBnodes]; + D27.f[dMMM] = &DD27[dMMM * numberOfLBnodes]; + D27.f[dPMM] = &DD27[dPMM * numberOfLBnodes]; + D27.f[dMPM] = &DD27[dMPM * numberOfLBnodes]; } else { - D27.f[DIR_M00] = &DD27[DIR_P00 * numberOfLBnodes]; - D27.f[DIR_P00] = &DD27[DIR_M00 * numberOfLBnodes]; - D27.f[DIR_0M0] = &DD27[DIR_0P0 * numberOfLBnodes]; - D27.f[DIR_0P0] = &DD27[DIR_0M0 * numberOfLBnodes]; - D27.f[DIR_00M] = &DD27[DIR_00P * numberOfLBnodes]; - D27.f[DIR_00P] = &DD27[DIR_00M * numberOfLBnodes]; - D27.f[DIR_MM0] = &DD27[DIR_PP0 * numberOfLBnodes]; - D27.f[DIR_PP0] = &DD27[DIR_MM0 * numberOfLBnodes]; - D27.f[DIR_MP0] = &DD27[DIR_PM0 * numberOfLBnodes]; - D27.f[DIR_PM0] = &DD27[DIR_MP0 * numberOfLBnodes]; - D27.f[DIR_M0M] = &DD27[DIR_P0P * numberOfLBnodes]; - D27.f[DIR_P0P] = &DD27[DIR_M0M * numberOfLBnodes]; - D27.f[DIR_M0P] = &DD27[DIR_P0M * numberOfLBnodes]; - D27.f[DIR_P0M] = &DD27[DIR_M0P * numberOfLBnodes]; - D27.f[DIR_0MM] = &DD27[DIR_0PP * numberOfLBnodes]; - D27.f[DIR_0PP] = &DD27[DIR_0MM * numberOfLBnodes]; - D27.f[DIR_0MP] = &DD27[DIR_0PM * numberOfLBnodes]; - D27.f[DIR_0PM] = &DD27[DIR_0MP * numberOfLBnodes]; - D27.f[DIR_000] = &DD27[DIR_000 * numberOfLBnodes]; - D27.f[DIR_MMM] = &DD27[DIR_PPP * numberOfLBnodes]; - D27.f[DIR_PPM] = &DD27[DIR_MMP * numberOfLBnodes]; - D27.f[DIR_MPM] = &DD27[DIR_PMP * numberOfLBnodes]; - D27.f[DIR_PMM] = &DD27[DIR_MPP * numberOfLBnodes]; - D27.f[DIR_MMP] = &DD27[DIR_PPM * numberOfLBnodes]; - D27.f[DIR_PPP] = &DD27[DIR_MMM * numberOfLBnodes]; - D27.f[DIR_MPP] = &DD27[DIR_PMM * numberOfLBnodes]; - D27.f[DIR_PMP] = &DD27[DIR_MPM * numberOfLBnodes]; + D27.f[dM00] = &DD27[dP00 * numberOfLBnodes]; + D27.f[dP00] = &DD27[dM00 * numberOfLBnodes]; + D27.f[d0M0] = &DD27[d0P0 * numberOfLBnodes]; + D27.f[d0P0] = &DD27[d0M0 * numberOfLBnodes]; + D27.f[d00M] = &DD27[d00P * numberOfLBnodes]; + D27.f[d00P] = &DD27[d00M * numberOfLBnodes]; + D27.f[dMM0] = &DD27[dPP0 * numberOfLBnodes]; + D27.f[dPP0] = &DD27[dMM0 * numberOfLBnodes]; + D27.f[dMP0] = &DD27[dPM0 * numberOfLBnodes]; + D27.f[dPM0] = &DD27[dMP0 * numberOfLBnodes]; + D27.f[dM0M] = &DD27[dP0P * numberOfLBnodes]; + D27.f[dP0P] = &DD27[dM0M * numberOfLBnodes]; + D27.f[dM0P] = &DD27[dP0M * numberOfLBnodes]; + D27.f[dP0M] = &DD27[dM0P * numberOfLBnodes]; + D27.f[d0MM] = &DD27[d0PP * numberOfLBnodes]; + D27.f[d0PP] = &DD27[d0MM * numberOfLBnodes]; + D27.f[d0MP] = &DD27[d0PM * numberOfLBnodes]; + D27.f[d0PM] = &DD27[d0MP * numberOfLBnodes]; + D27.f[d000] = &DD27[d000 * numberOfLBnodes]; + D27.f[dMMM] = &DD27[dPPP * numberOfLBnodes]; + D27.f[dPPM] = &DD27[dMMP * numberOfLBnodes]; + D27.f[dMPM] = &DD27[dPMP * numberOfLBnodes]; + D27.f[dPMM] = &DD27[dMPP * numberOfLBnodes]; + D27.f[dMMP] = &DD27[dPPM * numberOfLBnodes]; + D27.f[dPPP] = &DD27[dMMM * numberOfLBnodes]; + D27.f[dMPP] = &DD27[dPMM * numberOfLBnodes]; + D27.f[dPMP] = &DD27[dMPM * numberOfLBnodes]; } //////////////////////////////////////////////////////////////////////////////// @@ -169,61 +169,61 @@ __global__ void LB_Kernel_AD_Incomp_27(real diffusivity, unsigned int kbs = neighborZ[ks]; unsigned int kbsw = neighborZ[ksw]; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real fW = (D.f[DIR_P00])[k];//ke - real fE = (D.f[DIR_M00])[kw]; - real fS = (D.f[DIR_0P0])[k];//kn - real fN = (D.f[DIR_0M0])[ks]; - real fB = (D.f[DIR_00P])[k];//kt - real fT = (D.f[DIR_00M])[kb]; - real fSW = (D.f[DIR_PP0])[k];//kne - real fNE = (D.f[DIR_MM0])[ksw]; - real fNW = (D.f[DIR_PM0])[ks];//kse - real fSE = (D.f[DIR_MP0])[kw];//knw - real fBW = (D.f[DIR_P0P])[k];//kte - real fTE = (D.f[DIR_M0M])[kbw]; - real fTW = (D.f[DIR_P0M])[kb];//kbe - real fBE = (D.f[DIR_M0P])[kw];//ktw - real fBS = (D.f[DIR_0PP])[k];//ktn - real fTN = (D.f[DIR_0MM])[kbs]; - real fTS = (D.f[DIR_0PM])[kb];//kbn - real fBN = (D.f[DIR_0MP])[ks];//kts - //real fZERO = (D.f[DIR_000])[k];//kzero - real fBSW = (D.f[DIR_PPP])[k];//ktne - real fBNE = (D.f[DIR_MMP])[ksw];//ktsw - real fBNW = (D.f[DIR_PMP])[ks];//ktse - real fBSE = (D.f[DIR_MPP])[kw];//ktnw - real fTSW = (D.f[DIR_PPM])[kb];//kbne - real fTNE = (D.f[DIR_MMM])[kbsw]; - real fTNW = (D.f[DIR_PMM])[kbs];//kbse - real fTSE = (D.f[DIR_MPM])[kbw];//kbnw + real fW = (D.f[dP00])[k];//ke + real fE = (D.f[dM00])[kw]; + real fS = (D.f[d0P0])[k];//kn + real fN = (D.f[d0M0])[ks]; + real fB = (D.f[d00P])[k];//kt + real fT = (D.f[d00M])[kb]; + real fSW = (D.f[dPP0])[k];//kne + real fNE = (D.f[dMM0])[ksw]; + real fNW = (D.f[dPM0])[ks];//kse + real fSE = (D.f[dMP0])[kw];//knw + real fBW = (D.f[dP0P])[k];//kte + real fTE = (D.f[dM0M])[kbw]; + real fTW = (D.f[dP0M])[kb];//kbe + real fBE = (D.f[dM0P])[kw];//ktw + real fBS = (D.f[d0PP])[k];//ktn + real fTN = (D.f[d0MM])[kbs]; + real fTS = (D.f[d0PM])[kb];//kbn + real fBN = (D.f[d0MP])[ks];//kts + //real fZERO = (D.f[d000])[k];//kzero + real fBSW = (D.f[dPPP])[k];//ktne + real fBNE = (D.f[dMMP])[ksw];//ktsw + real fBNW = (D.f[dPMP])[ks];//ktse + real fBSE = (D.f[dMPP])[kw];//ktnw + real fTSW = (D.f[dPPM])[kb];//kbne + real fTNE = (D.f[dMMM])[kbsw]; + real fTNW = (D.f[dPMM])[kbs];//kbse + real fTSE = (D.f[dMPM])[kbw];//kbnw //////////////////////////////////////////////////////////////////////////////// - //real f27E = (D27.f[DIR_P00])[k ];//ke - //real f27W = (D27.f[DIR_M00])[kw ]; - //real f27N = (D27.f[DIR_0P0])[k ];//kn - //real f27S = (D27.f[DIR_0M0])[ks ]; - //real f27T = (D27.f[DIR_00P])[k ];//kt - //real f27B = (D27.f[DIR_00M])[kb ]; - //real f27NE = (D27.f[DIR_PP0])[k ];//kne - //real f27SW = (D27.f[DIR_MM0])[ksw]; - //real f27SE = (D27.f[DIR_PM0])[ks ];//kse - //real f27NW = (D27.f[DIR_MP0])[kw ];//knw - //real f27TE = (D27.f[DIR_P0P])[k ];//kte - //real f27BW = (D27.f[DIR_M0M])[kbw]; - //real f27BE = (D27.f[DIR_P0M])[kb ];//kbe - //real f27TW = (D27.f[DIR_M0P])[kw ];//ktw - //real f27TN = (D27.f[DIR_0PP])[k ];//ktn - //real f27BS = (D27.f[DIR_0MM])[kbs]; - //real f27BN = (D27.f[DIR_0PM])[kb ];//kbn - //real f27TS = (D27.f[DIR_0MP])[ks ];//kts - //real f27ZERO = (D27.f[DIR_000])[k ];//kzero - //real f27TNE = (D27.f[DIR_PPP])[k ];//ktne - //real f27TSW = (D27.f[DIR_MMP])[ksw];//ktsw - //real f27TSE = (D27.f[DIR_PMP])[ks ];//ktse - //real f27TNW = (D27.f[DIR_MPP])[kw ];//ktnw - //real f27BNE = (D27.f[DIR_PPM])[kb ];//kbne - //real f27BSW = (D27.f[DIR_MMM])[kbsw]; - //real f27BSE = (D27.f[DIR_PMM])[kbs];//kbse - //real f27BNW = (D27.f[DIR_MPM])[kbw];//kbnw + //real f27E = (D27.f[dP00])[k ];//ke + //real f27W = (D27.f[dM00])[kw ]; + //real f27N = (D27.f[d0P0])[k ];//kn + //real f27S = (D27.f[d0M0])[ks ]; + //real f27T = (D27.f[d00P])[k ];//kt + //real f27B = (D27.f[d00M])[kb ]; + //real f27NE = (D27.f[dPP0])[k ];//kne + //real f27SW = (D27.f[dMM0])[ksw]; + //real f27SE = (D27.f[dPM0])[ks ];//kse + //real f27NW = (D27.f[dMP0])[kw ];//knw + //real f27TE = (D27.f[dP0P])[k ];//kte + //real f27BW = (D27.f[dM0M])[kbw]; + //real f27BE = (D27.f[dP0M])[kb ];//kbe + //real f27TW = (D27.f[dM0P])[kw ];//ktw + //real f27TN = (D27.f[d0PP])[k ];//ktn + //real f27BS = (D27.f[d0MM])[kbs]; + //real f27BN = (D27.f[d0PM])[kb ];//kbn + //real f27TS = (D27.f[d0MP])[ks ];//kts + //real f27ZERO = (D27.f[d000])[k ];//kzero + //real f27TNE = (D27.f[dPPP])[k ];//ktne + //real f27TSW = (D27.f[dMMP])[ksw];//ktsw + //real f27TSE = (D27.f[dPMP])[ks ];//ktse + //real f27TNW = (D27.f[dMPP])[kw ];//ktnw + //real f27BNE = (D27.f[dPPM])[kb ];//kbne + //real f27BSW = (D27.f[dMMM])[kbsw]; + //real f27BSE = (D27.f[dPMM])[kbs];//kbse + //real f27BNW = (D27.f[dMPM])[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)); @@ -231,33 +231,33 @@ __global__ void LB_Kernel_AD_Incomp_27(real diffusivity, //////////////////////////////////////////////////////////////////////////////// - real mfcbb = (D27.f[DIR_P00])[k]; - real mfabb = (D27.f[DIR_M00])[kw]; - real mfbcb = (D27.f[DIR_0P0])[k]; - real mfbab = (D27.f[DIR_0M0])[ks]; - real mfbbc = (D27.f[DIR_00P])[k]; - real mfbba = (D27.f[DIR_00M])[kb]; - real mfccb = (D27.f[DIR_PP0])[k]; - real mfaab = (D27.f[DIR_MM0])[ksw]; - real mfcab = (D27.f[DIR_PM0])[ks]; - real mfacb = (D27.f[DIR_MP0])[kw]; - real mfcbc = (D27.f[DIR_P0P])[k]; - real mfaba = (D27.f[DIR_M0M])[kbw]; - real mfcba = (D27.f[DIR_P0M])[kb]; - real mfabc = (D27.f[DIR_M0P])[kw]; - real mfbcc = (D27.f[DIR_0PP])[k]; - real mfbaa = (D27.f[DIR_0MM])[kbs]; - real mfbca = (D27.f[DIR_0PM])[kb]; - real mfbac = (D27.f[DIR_0MP])[ks]; - real mfbbb = (D27.f[DIR_000])[k]; - real mfccc = (D27.f[DIR_PPP])[k]; - real mfaac = (D27.f[DIR_MMP])[ksw]; - real mfcac = (D27.f[DIR_PMP])[ks]; - real mfacc = (D27.f[DIR_MPP])[kw]; - real mfcca = (D27.f[DIR_PPM])[kb]; - real mfaaa = (D27.f[DIR_MMM])[kbsw]; - real mfcaa = (D27.f[DIR_PMM])[kbs]; - real mfaca = (D27.f[DIR_MPM])[kbw]; + real mfcbb = (D27.f[dP00])[k]; + real mfabb = (D27.f[dM00])[kw]; + real mfbcb = (D27.f[d0P0])[k]; + real mfbab = (D27.f[d0M0])[ks]; + real mfbbc = (D27.f[d00P])[k]; + real mfbba = (D27.f[d00M])[kb]; + real mfccb = (D27.f[dPP0])[k]; + real mfaab = (D27.f[dMM0])[ksw]; + real mfcab = (D27.f[dPM0])[ks]; + real mfacb = (D27.f[dMP0])[kw]; + real mfcbc = (D27.f[dP0P])[k]; + real mfaba = (D27.f[dM0M])[kbw]; + real mfcba = (D27.f[dP0M])[kb]; + real mfabc = (D27.f[dM0P])[kw]; + real mfbcc = (D27.f[d0PP])[k]; + real mfbaa = (D27.f[d0MM])[kbs]; + real mfbca = (D27.f[d0PM])[kb]; + real mfbac = (D27.f[d0MP])[ks]; + real mfbbb = (D27.f[d000])[k]; + real mfccc = (D27.f[dPPP])[k]; + real mfaac = (D27.f[dMMP])[ksw]; + real mfcac = (D27.f[dPMP])[ks]; + real mfacc = (D27.f[dMPP])[kw]; + real mfcca = (D27.f[dPPM])[kb]; + real mfaaa = (D27.f[dMMM])[kbsw]; + real mfcaa = (D27.f[dPMM])[kbs]; + real mfaca = (D27.f[dMPM])[kbw]; //////////////////////////////////////////////////////////////////////////////////// //Conc real drho = ((((mfccc + mfaaa) + (mfaca + mfcac)) + ((mfacc + mfcaa) + (mfaac + mfcca))) + @@ -301,33 +301,33 @@ __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[ DIR_P00 ])[k ] = f27W *(one-omegaD)+omegaD* c2over27* ConcD*(one+three*(-vx1 )+c9over2*(-vx1 )*(-vx1 )-cusq); - //(D27.f[ DIR_M00 ])[kw ] = f27E *(one-omegaD)+omegaD* c2over27* ConcD*(one+three*( vx1 )+c9over2*( vx1 )*( vx1 )-cusq); - //(D27.f[ DIR_0P0 ])[k ] = f27S *(one-omegaD)+omegaD* c2over27* ConcD*(one+three*( -vx2 )+c9over2*( -vx2 )*( -vx2 )-cusq); - //(D27.f[ DIR_0M0 ])[ks ] = f27N *(one-omegaD)+omegaD* c2over27* ConcD*(one+three*( vx2 )+c9over2*( vx2 )*( vx2 )-cusq); - //(D27.f[ DIR_00P ])[k ] = f27B *(one-omegaD)+omegaD* c2over27* ConcD*(one+three*( -vx3)+c9over2*( -vx3)*( -vx3)-cusq); - //(D27.f[ DIR_00M ])[kb ] = f27T *(one-omegaD)+omegaD* c2over27* ConcD*(one+three*( vx3)+c9over2*( vx3)*( vx3)-cusq); - //(D27.f[ DIR_PP0 ])[k ] = f27SW *(one-omegaD)+omegaD* c1over54* ConcD*(one+three*(-vx1-vx2 )+c9over2*(-vx1-vx2 )*(-vx1-vx2 )-cusq); - //(D27.f[ DIR_MM0 ])[ksw ] = f27NE *(one-omegaD)+omegaD* c1over54* ConcD*(one+three*( vx1+vx2 )+c9over2*( vx1+vx2 )*( vx1+vx2 )-cusq); - //(D27.f[ DIR_PM0 ])[ks ] = f27NW *(one-omegaD)+omegaD* c1over54* ConcD*(one+three*(-vx1+vx2 )+c9over2*(-vx1+vx2 )*(-vx1+vx2 )-cusq); - //(D27.f[ DIR_MP0 ])[kw ] = f27SE *(one-omegaD)+omegaD* c1over54* ConcD*(one+three*( vx1-vx2 )+c9over2*( vx1-vx2 )*( vx1-vx2 )-cusq); - //(D27.f[ DIR_P0P ])[k ] = f27BW *(one-omegaD)+omegaD* c1over54* ConcD*(one+three*(-vx1 -vx3)+c9over2*(-vx1 -vx3)*(-vx1 -vx3)-cusq); - //(D27.f[ DIR_M0M ])[kbw ] = f27TE *(one-omegaD)+omegaD* c1over54* ConcD*(one+three*( vx1 +vx3)+c9over2*( vx1 +vx3)*( vx1 +vx3)-cusq); - //(D27.f[ DIR_P0M ])[kb ] = f27TW *(one-omegaD)+omegaD* c1over54* ConcD*(one+three*(-vx1 +vx3)+c9over2*(-vx1 +vx3)*(-vx1 +vx3)-cusq); - //(D27.f[ DIR_M0P ])[kw ] = f27BE *(one-omegaD)+omegaD* c1over54* ConcD*(one+three*( vx1 -vx3)+c9over2*( vx1 -vx3)*( vx1 -vx3)-cusq); - //(D27.f[ DIR_0PP ])[k ] = f27BS *(one-omegaD)+omegaD* c1over54* ConcD*(one+three*( -vx2-vx3)+c9over2*( -vx2-vx3)*( -vx2-vx3)-cusq); - //(D27.f[ DIR_0MM ])[kbs ] = f27TN *(one-omegaD)+omegaD* c1over54* ConcD*(one+three*( vx2+vx3)+c9over2*( vx2+vx3)*( vx2+vx3)-cusq); - //(D27.f[ DIR_0PM ])[kb ] = f27TS *(one-omegaD)+omegaD* c1over54* ConcD*(one+three*( -vx2+vx3)+c9over2*( -vx2+vx3)*( -vx2+vx3)-cusq); - //(D27.f[ DIR_0MP ])[ks ] = f27BN *(one-omegaD)+omegaD* c1over54* ConcD*(one+three*( vx2-vx3)+c9over2*( vx2-vx3)*( vx2-vx3)-cusq); - //(D27.f[ DIR_000])[k ] = f27ZERO *(one-omegaD)+omegaD* c8over27* ConcD*(one-cusq); - //(D27.f[ DIR_PPP ])[k ] = f27BSW *(one-omegaD)+omegaD* c1over216*ConcD*(one+three*(-vx1-vx2-vx3)+c9over2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cusq); - //(D27.f[ DIR_PMP ])[ks ] = f27BNW *(one-omegaD)+omegaD* c1over216*ConcD*(one+three*(-vx1+vx2-vx3)+c9over2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cusq); - //(D27.f[ DIR_PPM ])[kb ] = f27TSW *(one-omegaD)+omegaD* c1over216*ConcD*(one+three*(-vx1-vx2+vx3)+c9over2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cusq); - //(D27.f[ DIR_PMM ])[kbs ] = f27TNW *(one-omegaD)+omegaD* c1over216*ConcD*(one+three*(-vx1+vx2+vx3)+c9over2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cusq); - //(D27.f[ DIR_MPP ])[kw ] = f27BSE *(one-omegaD)+omegaD* c1over216*ConcD*(one+three*( vx1-vx2-vx3)+c9over2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cusq); - //(D27.f[ DIR_MMP ])[ksw ] = f27BNE *(one-omegaD)+omegaD* c1over216*ConcD*(one+three*( vx1+vx2-vx3)+c9over2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cusq); - //(D27.f[ DIR_MPM ])[kbw ] = f27TSE *(one-omegaD)+omegaD* c1over216*ConcD*(one+three*( vx1-vx2+vx3)+c9over2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cusq); - //(D27.f[ DIR_MMM ])[kbsw] = f27TNE *(one-omegaD)+omegaD* c1over216*ConcD*(one+three*( vx1+vx2+vx3)+c9over2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cusq); + //(D27.f[ dP00 ])[k ] = f27W *(one-omegaD)+omegaD* c2over27* ConcD*(one+three*(-vx1 )+c9over2*(-vx1 )*(-vx1 )-cusq); + //(D27.f[ dM00 ])[kw ] = f27E *(one-omegaD)+omegaD* c2over27* ConcD*(one+three*( vx1 )+c9over2*( vx1 )*( vx1 )-cusq); + //(D27.f[ d0P0 ])[k ] = f27S *(one-omegaD)+omegaD* c2over27* ConcD*(one+three*( -vx2 )+c9over2*( -vx2 )*( -vx2 )-cusq); + //(D27.f[ d0M0 ])[ks ] = f27N *(one-omegaD)+omegaD* c2over27* ConcD*(one+three*( vx2 )+c9over2*( vx2 )*( vx2 )-cusq); + //(D27.f[ d00P ])[k ] = f27B *(one-omegaD)+omegaD* c2over27* ConcD*(one+three*( -vx3)+c9over2*( -vx3)*( -vx3)-cusq); + //(D27.f[ d00M ])[kb ] = f27T *(one-omegaD)+omegaD* c2over27* ConcD*(one+three*( vx3)+c9over2*( vx3)*( vx3)-cusq); + //(D27.f[ dPP0 ])[k ] = f27SW *(one-omegaD)+omegaD* c1over54* ConcD*(one+three*(-vx1-vx2 )+c9over2*(-vx1-vx2 )*(-vx1-vx2 )-cusq); + //(D27.f[ dMM0 ])[ksw ] = f27NE *(one-omegaD)+omegaD* c1over54* ConcD*(one+three*( vx1+vx2 )+c9over2*( vx1+vx2 )*( vx1+vx2 )-cusq); + //(D27.f[ dPM0 ])[ks ] = f27NW *(one-omegaD)+omegaD* c1over54* ConcD*(one+three*(-vx1+vx2 )+c9over2*(-vx1+vx2 )*(-vx1+vx2 )-cusq); + //(D27.f[ dMP0 ])[kw ] = f27SE *(one-omegaD)+omegaD* c1over54* ConcD*(one+three*( vx1-vx2 )+c9over2*( vx1-vx2 )*( vx1-vx2 )-cusq); + //(D27.f[ dP0P ])[k ] = f27BW *(one-omegaD)+omegaD* c1over54* ConcD*(one+three*(-vx1 -vx3)+c9over2*(-vx1 -vx3)*(-vx1 -vx3)-cusq); + //(D27.f[ dM0M ])[kbw ] = f27TE *(one-omegaD)+omegaD* c1over54* ConcD*(one+three*( vx1 +vx3)+c9over2*( vx1 +vx3)*( vx1 +vx3)-cusq); + //(D27.f[ dP0M ])[kb ] = f27TW *(one-omegaD)+omegaD* c1over54* ConcD*(one+three*(-vx1 +vx3)+c9over2*(-vx1 +vx3)*(-vx1 +vx3)-cusq); + //(D27.f[ dM0P ])[kw ] = f27BE *(one-omegaD)+omegaD* c1over54* ConcD*(one+three*( vx1 -vx3)+c9over2*( vx1 -vx3)*( vx1 -vx3)-cusq); + //(D27.f[ d0PP ])[k ] = f27BS *(one-omegaD)+omegaD* c1over54* ConcD*(one+three*( -vx2-vx3)+c9over2*( -vx2-vx3)*( -vx2-vx3)-cusq); + //(D27.f[ d0MM ])[kbs ] = f27TN *(one-omegaD)+omegaD* c1over54* ConcD*(one+three*( vx2+vx3)+c9over2*( vx2+vx3)*( vx2+vx3)-cusq); + //(D27.f[ d0PM ])[kb ] = f27TS *(one-omegaD)+omegaD* c1over54* ConcD*(one+three*( -vx2+vx3)+c9over2*( -vx2+vx3)*( -vx2+vx3)-cusq); + //(D27.f[ d0MP ])[ks ] = f27BN *(one-omegaD)+omegaD* c1over54* ConcD*(one+three*( vx2-vx3)+c9over2*( vx2-vx3)*( vx2-vx3)-cusq); + //(D27.f[ d000])[k ] = f27ZERO *(one-omegaD)+omegaD* c8over27* ConcD*(one-cusq); + //(D27.f[ dPPP ])[k ] = f27BSW *(one-omegaD)+omegaD* c1over216*ConcD*(one+three*(-vx1-vx2-vx3)+c9over2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cusq); + //(D27.f[ dPMP ])[ks ] = f27BNW *(one-omegaD)+omegaD* c1over216*ConcD*(one+three*(-vx1+vx2-vx3)+c9over2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cusq); + //(D27.f[ dPPM ])[kb ] = f27TSW *(one-omegaD)+omegaD* c1over216*ConcD*(one+three*(-vx1-vx2+vx3)+c9over2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cusq); + //(D27.f[ dPMM ])[kbs ] = f27TNW *(one-omegaD)+omegaD* c1over216*ConcD*(one+three*(-vx1+vx2+vx3)+c9over2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cusq); + //(D27.f[ dMPP ])[kw ] = f27BSE *(one-omegaD)+omegaD* c1over216*ConcD*(one+three*( vx1-vx2-vx3)+c9over2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cusq); + //(D27.f[ dMMP ])[ksw ] = f27BNE *(one-omegaD)+omegaD* c1over216*ConcD*(one+three*( vx1+vx2-vx3)+c9over2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cusq); + //(D27.f[ dMPM ])[kbw ] = f27TSE *(one-omegaD)+omegaD* c1over216*ConcD*(one+three*( vx1-vx2+vx3)+c9over2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cusq); + //(D27.f[ dMMM ])[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 @@ -861,33 +861,33 @@ __global__ void LB_Kernel_AD_Incomp_27(real diffusivity, //////////////////////////////////////////////////////////////////////////////////// - (D27.f[DIR_P00])[k] = mfabb; - (D27.f[DIR_M00])[kw] = mfcbb; - (D27.f[DIR_0P0])[k] = mfbab; - (D27.f[DIR_0M0])[ks] = mfbcb; - (D27.f[DIR_00P])[k] = mfbba; - (D27.f[DIR_00M])[kb] = mfbbc; - (D27.f[DIR_PP0])[k] = mfaab; - (D27.f[DIR_MM0])[ksw] = mfccb; - (D27.f[DIR_PM0])[ks] = mfacb; - (D27.f[DIR_MP0])[kw] = mfcab; - (D27.f[DIR_P0P])[k] = mfaba; - (D27.f[DIR_M0M])[kbw] = mfcbc; - (D27.f[DIR_P0M])[kb] = mfabc; - (D27.f[DIR_M0P])[kw] = mfcba; - (D27.f[DIR_0PP])[k] = mfbaa; - (D27.f[DIR_0MM])[kbs] = mfbcc; - (D27.f[DIR_0PM])[kb] = mfbac; - (D27.f[DIR_0MP])[ks] = mfbca; - (D27.f[DIR_000])[k] = mfbbb; - (D27.f[DIR_PPP])[k] = mfaaa; - (D27.f[DIR_PMP])[ks] = mfaca; - (D27.f[DIR_PPM])[kb] = mfaac; - (D27.f[DIR_PMM])[kbs] = mfacc; - (D27.f[DIR_MPP])[kw] = mfcaa; - (D27.f[DIR_MMP])[ksw] = mfcca; - (D27.f[DIR_MPM])[kbw] = mfcac; - (D27.f[DIR_MMM])[kbsw] = mfccc; + (D27.f[dP00])[k] = mfabb; + (D27.f[dM00])[kw] = mfcbb; + (D27.f[d0P0])[k] = mfbab; + (D27.f[d0M0])[ks] = mfbcb; + (D27.f[d00P])[k] = mfbba; + (D27.f[d00M])[kb] = mfbbc; + (D27.f[dPP0])[k] = mfaab; + (D27.f[dMM0])[ksw] = mfccb; + (D27.f[dPM0])[ks] = mfacb; + (D27.f[dMP0])[kw] = mfcab; + (D27.f[dP0P])[k] = mfaba; + (D27.f[dM0M])[kbw] = mfcbc; + (D27.f[dP0M])[kb] = mfabc; + (D27.f[dM0P])[kw] = mfcba; + (D27.f[d0PP])[k] = mfbaa; + (D27.f[d0MM])[kbs] = mfbcc; + (D27.f[d0PM])[kb] = mfbac; + (D27.f[d0MP])[ks] = mfbca; + (D27.f[d000])[k] = mfbbb; + (D27.f[dPPP])[k] = mfaaa; + (D27.f[dPMP])[ks] = mfaca; + (D27.f[dPPM])[kb] = mfaac; + (D27.f[dPMM])[kbs] = mfacc; + (D27.f[dMPP])[kw] = mfcaa; + (D27.f[dMMP])[ksw] = mfcca; + (D27.f[dMPM])[kbw] = mfcac; + (D27.f[dMMM])[kbsw] = mfccc; //////////////////////////////////////////////////////////////////////////////////// } diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/AdvectionDiffusion/Incompressible/Mod27/ADIncomp27/ADIncomp27_Device.cuh b/src/gpu/core/Kernel/Incompressible/AdvectionDiffusion/D3Q27/F16/F16IncompressibleAdvectionDiffusion_Device.cuh similarity index 56% rename from src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/AdvectionDiffusion/Incompressible/Mod27/ADIncomp27/ADIncomp27_Device.cuh rename to src/gpu/core/Kernel/Incompressible/AdvectionDiffusion/D3Q27/F16/F16IncompressibleAdvectionDiffusion_Device.cuh index 3abee563f676910f422bba0930060c2a0b0c0e21..141e2fce7f8f2142550c17d11593ec707553981d 100644 --- a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/AdvectionDiffusion/Incompressible/Mod27/ADIncomp27/ADIncomp27_Device.cuh +++ b/src/gpu/core/Kernel/Incompressible/AdvectionDiffusion/D3Q27/F16/F16IncompressibleAdvectionDiffusion_Device.cuh @@ -1,10 +1,10 @@ -#ifndef LB_KERNEL_AD_INCOMP_27_H -#define LB_KERNEL_AD_INCOMP_27_H +#ifndef F16IncompressibleAdvectionDiffusion_Device_H +#define F16IncompressibleAdvectionDiffusion_Device_H #include <DataTypes.h> #include <curand.h> -__global__ void LB_Kernel_AD_Incomp_27(real diffusivity, +__global__ void F16IncompressibleAdvectionDiffusion_Device(real diffusivity, unsigned int* bcMatD, unsigned int* neighborX, unsigned int* neighborY, diff --git a/src/gpu/core/Kernel/Incompressible/AdvectionDiffusion/D3Q7/B12/B12IncompressibleAdvectionDiffusionD3Q7.cu b/src/gpu/core/Kernel/Incompressible/AdvectionDiffusion/D3Q7/B12/B12IncompressibleAdvectionDiffusionD3Q7.cu new file mode 100644 index 0000000000000000000000000000000000000000..fa1652d06e0137aae185a37938460e96234a36e4 --- /dev/null +++ b/src/gpu/core/Kernel/Incompressible/AdvectionDiffusion/D3Q7/B12/B12IncompressibleAdvectionDiffusionD3Q7.cu @@ -0,0 +1,40 @@ +#include "B12IncompressibleAdvectionDiffusionD3Q7.h" + +#include "B12IncompressibleAdvectionDiffusionD3Q7_Device.cuh" +#include "Parameter/Parameter.h" +#include <cuda_helper/CudaGrid.h> + +std::shared_ptr<B12IncompressibleAdvectionDiffusionD3Q7> B12IncompressibleAdvectionDiffusionD3Q7::getNewInstance(std::shared_ptr<Parameter> para, int level) +{ + return std::shared_ptr<B12IncompressibleAdvectionDiffusionD3Q7>(new B12IncompressibleAdvectionDiffusionD3Q7(para, level)); +} + +void B12IncompressibleAdvectionDiffusionD3Q7::run() +{ + vf::cuda::CudaGrid grid = vf::cuda::CudaGrid(para->getParD(level)->numberofthreads, para->getParD(level)->numberOfNodes); + + B12IncompressibleAdvectionDiffusionD3Q7_Device<<< grid.grid, grid.threads >>>( + para->getParD(level)->diffusivity, + para->getParD(level)->typeOfGridNode, + para->getParD(level)->neighborX, + para->getParD(level)->neighborY, + para->getParD(level)->neighborZ, + para->getParD(level)->distributions.f[0], + para->getParD(level)->distributionsAD7.f[0], + para->getParD(level)->numberOfNodes, + para->getParD(level)->isEvenTimestep); + getLastCudaError("B12IncompressibleAdvectionDiffusionD3Q7_Device execution failed"); +} + +B12IncompressibleAdvectionDiffusionD3Q7::B12IncompressibleAdvectionDiffusionD3Q7(std::shared_ptr<Parameter> para, int level) +{ + this->para = para; + this->level = level; + + myPreProcessorTypes.push_back(InitIncompAD7); + +} + +B12IncompressibleAdvectionDiffusionD3Q7::B12IncompressibleAdvectionDiffusionD3Q7() +{ +} diff --git a/src/gpu/core/Kernel/Incompressible/AdvectionDiffusion/D3Q7/B12/B12IncompressibleAdvectionDiffusionD3Q7.h b/src/gpu/core/Kernel/Incompressible/AdvectionDiffusion/D3Q7/B12/B12IncompressibleAdvectionDiffusionD3Q7.h new file mode 100644 index 0000000000000000000000000000000000000000..52113c30f13795621dea0cc2ff1d624d9bc26f1f --- /dev/null +++ b/src/gpu/core/Kernel/Incompressible/AdvectionDiffusion/D3Q7/B12/B12IncompressibleAdvectionDiffusionD3Q7.h @@ -0,0 +1,16 @@ +#ifndef B12IncompressibleAdvectionDiffusionD3Q7_H +#define B12IncompressibleAdvectionDiffusionD3Q7_H + +#include "Kernel/AdvectionDiffusionKernel.h" + +class B12IncompressibleAdvectionDiffusionD3Q7 : public AdvectionDiffusionKernel +{ +public: + static std::shared_ptr<B12IncompressibleAdvectionDiffusionD3Q7> getNewInstance(std::shared_ptr< Parameter> para, int level); + void run(); + +private: + B12IncompressibleAdvectionDiffusionD3Q7(); + B12IncompressibleAdvectionDiffusionD3Q7(std::shared_ptr< Parameter> para, int level); +}; +#endif \ No newline at end of file diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/AdvectionDiffusion/Incompressible/Mod7/ADIncomp7/ADIncomp7_Device.cu b/src/gpu/core/Kernel/Incompressible/AdvectionDiffusion/D3Q7/B12/B12IncompressibleAdvectionDiffusionD3Q7_Device.cu similarity index 55% rename from src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/AdvectionDiffusion/Incompressible/Mod7/ADIncomp7/ADIncomp7_Device.cu rename to src/gpu/core/Kernel/Incompressible/AdvectionDiffusion/D3Q7/B12/B12IncompressibleAdvectionDiffusionD3Q7_Device.cu index 1d393e0c4a5f80fb331c109311876673a86a9d8d..0392674181f1384100bd512791e36bc84cb783e1 100644 --- a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/AdvectionDiffusion/Incompressible/Mod7/ADIncomp7/ADIncomp7_Device.cu +++ b/src/gpu/core/Kernel/Incompressible/AdvectionDiffusion/D3Q7/B12/B12IncompressibleAdvectionDiffusionD3Q7_Device.cu @@ -6,7 +6,7 @@ using namespace vf::basics::constant; using namespace vf::lbm::dir; #include "math.h" -__global__ void LB_Kernel_AD_Incomp_7(real diffusivity, +__global__ void B12IncompressibleAdvectionDiffusionD3Q7_Device(real diffusivity, unsigned int* bcMatD, unsigned int* neighborX, unsigned int* neighborY, @@ -38,63 +38,63 @@ __global__ void LB_Kernel_AD_Incomp_7(real diffusivity, Distributions27 D; if (EvenOrOdd == true) { - D.f[DIR_P00] = &DDStart[DIR_P00 * numberOfLBnodes]; - D.f[DIR_M00] = &DDStart[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0P0] = &DDStart[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0M0] = &DDStart[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00P] = &DDStart[DIR_00P * numberOfLBnodes]; - D.f[DIR_00M] = &DDStart[DIR_00M * numberOfLBnodes]; - D.f[DIR_PP0] = &DDStart[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_MM0] = &DDStart[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DDStart[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DDStart[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_P0P] = &DDStart[DIR_P0P * numberOfLBnodes]; - D.f[DIR_M0M] = &DDStart[DIR_M0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DDStart[DIR_P0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DDStart[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0PP] = &DDStart[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0MM] = &DDStart[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0PM] = &DDStart[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0MP] = &DDStart[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DDStart[DIR_000 * numberOfLBnodes]; - D.f[DIR_PPP] = &DDStart[DIR_PPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DDStart[DIR_MMP * numberOfLBnodes]; - D.f[DIR_PMP] = &DDStart[DIR_PMP * numberOfLBnodes]; - D.f[DIR_MPP] = &DDStart[DIR_MPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DDStart[DIR_PPM * numberOfLBnodes]; - D.f[DIR_MMM] = &DDStart[DIR_MMM * numberOfLBnodes]; - D.f[DIR_PMM] = &DDStart[DIR_PMM * numberOfLBnodes]; - D.f[DIR_MPM] = &DDStart[DIR_MPM * numberOfLBnodes]; + D.f[dP00] = &DDStart[dP00 * numberOfLBnodes]; + D.f[dM00] = &DDStart[dM00 * numberOfLBnodes]; + D.f[d0P0] = &DDStart[d0P0 * numberOfLBnodes]; + D.f[d0M0] = &DDStart[d0M0 * numberOfLBnodes]; + D.f[d00P] = &DDStart[d00P * numberOfLBnodes]; + D.f[d00M] = &DDStart[d00M * numberOfLBnodes]; + D.f[dPP0] = &DDStart[dPP0 * numberOfLBnodes]; + D.f[dMM0] = &DDStart[dMM0 * numberOfLBnodes]; + D.f[dPM0] = &DDStart[dPM0 * numberOfLBnodes]; + D.f[dMP0] = &DDStart[dMP0 * numberOfLBnodes]; + D.f[dP0P] = &DDStart[dP0P * numberOfLBnodes]; + D.f[dM0M] = &DDStart[dM0M * numberOfLBnodes]; + D.f[dP0M] = &DDStart[dP0M * numberOfLBnodes]; + D.f[dM0P] = &DDStart[dM0P * numberOfLBnodes]; + D.f[d0PP] = &DDStart[d0PP * numberOfLBnodes]; + D.f[d0MM] = &DDStart[d0MM * numberOfLBnodes]; + D.f[d0PM] = &DDStart[d0PM * numberOfLBnodes]; + D.f[d0MP] = &DDStart[d0MP * numberOfLBnodes]; + D.f[d000] = &DDStart[d000 * numberOfLBnodes]; + D.f[dPPP] = &DDStart[dPPP * numberOfLBnodes]; + D.f[dMMP] = &DDStart[dMMP * numberOfLBnodes]; + D.f[dPMP] = &DDStart[dPMP * numberOfLBnodes]; + D.f[dMPP] = &DDStart[dMPP * numberOfLBnodes]; + D.f[dPPM] = &DDStart[dPPM * numberOfLBnodes]; + D.f[dMMM] = &DDStart[dMMM * numberOfLBnodes]; + D.f[dPMM] = &DDStart[dPMM * numberOfLBnodes]; + D.f[dMPM] = &DDStart[dMPM * numberOfLBnodes]; } else { - D.f[DIR_M00] = &DDStart[DIR_P00 * numberOfLBnodes]; - D.f[DIR_P00] = &DDStart[DIR_M00 * numberOfLBnodes]; - D.f[DIR_0M0] = &DDStart[DIR_0P0 * numberOfLBnodes]; - D.f[DIR_0P0] = &DDStart[DIR_0M0 * numberOfLBnodes]; - D.f[DIR_00M] = &DDStart[DIR_00P * numberOfLBnodes]; - D.f[DIR_00P] = &DDStart[DIR_00M * numberOfLBnodes]; - D.f[DIR_MM0] = &DDStart[DIR_PP0 * numberOfLBnodes]; - D.f[DIR_PP0] = &DDStart[DIR_MM0 * numberOfLBnodes]; - D.f[DIR_MP0] = &DDStart[DIR_PM0 * numberOfLBnodes]; - D.f[DIR_PM0] = &DDStart[DIR_MP0 * numberOfLBnodes]; - D.f[DIR_M0M] = &DDStart[DIR_P0P * numberOfLBnodes]; - D.f[DIR_P0P] = &DDStart[DIR_M0M * numberOfLBnodes]; - D.f[DIR_M0P] = &DDStart[DIR_P0M * numberOfLBnodes]; - D.f[DIR_P0M] = &DDStart[DIR_M0P * numberOfLBnodes]; - D.f[DIR_0MM] = &DDStart[DIR_0PP * numberOfLBnodes]; - D.f[DIR_0PP] = &DDStart[DIR_0MM * numberOfLBnodes]; - D.f[DIR_0MP] = &DDStart[DIR_0PM * numberOfLBnodes]; - D.f[DIR_0PM] = &DDStart[DIR_0MP * numberOfLBnodes]; - D.f[DIR_000] = &DDStart[DIR_000 * numberOfLBnodes]; - D.f[DIR_MMM] = &DDStart[DIR_PPP * numberOfLBnodes]; - D.f[DIR_PPM] = &DDStart[DIR_MMP * numberOfLBnodes]; - D.f[DIR_MPM] = &DDStart[DIR_PMP * numberOfLBnodes]; - D.f[DIR_PMM] = &DDStart[DIR_MPP * numberOfLBnodes]; - D.f[DIR_MMP] = &DDStart[DIR_PPM * numberOfLBnodes]; - D.f[DIR_PPP] = &DDStart[DIR_MMM * numberOfLBnodes]; - D.f[DIR_MPP] = &DDStart[DIR_PMM * numberOfLBnodes]; - D.f[DIR_PMP] = &DDStart[DIR_MPM * numberOfLBnodes]; + D.f[dM00] = &DDStart[dP00 * numberOfLBnodes]; + D.f[dP00] = &DDStart[dM00 * numberOfLBnodes]; + D.f[d0M0] = &DDStart[d0P0 * numberOfLBnodes]; + D.f[d0P0] = &DDStart[d0M0 * numberOfLBnodes]; + D.f[d00M] = &DDStart[d00P * numberOfLBnodes]; + D.f[d00P] = &DDStart[d00M * numberOfLBnodes]; + D.f[dMM0] = &DDStart[dPP0 * numberOfLBnodes]; + D.f[dPP0] = &DDStart[dMM0 * numberOfLBnodes]; + D.f[dMP0] = &DDStart[dPM0 * numberOfLBnodes]; + D.f[dPM0] = &DDStart[dMP0 * numberOfLBnodes]; + D.f[dM0M] = &DDStart[dP0P * numberOfLBnodes]; + D.f[dP0P] = &DDStart[dM0M * numberOfLBnodes]; + D.f[dM0P] = &DDStart[dP0M * numberOfLBnodes]; + D.f[dP0M] = &DDStart[dM0P * numberOfLBnodes]; + D.f[d0MM] = &DDStart[d0PP * numberOfLBnodes]; + D.f[d0PP] = &DDStart[d0MM * numberOfLBnodes]; + D.f[d0MP] = &DDStart[d0PM * numberOfLBnodes]; + D.f[d0PM] = &DDStart[d0MP * numberOfLBnodes]; + D.f[d000] = &DDStart[d000 * numberOfLBnodes]; + D.f[dMMM] = &DDStart[dPPP * numberOfLBnodes]; + D.f[dPPM] = &DDStart[dMMP * numberOfLBnodes]; + D.f[dMPM] = &DDStart[dPMP * numberOfLBnodes]; + D.f[dPMM] = &DDStart[dMPP * numberOfLBnodes]; + D.f[dMMP] = &DDStart[dPPM * numberOfLBnodes]; + D.f[dPPP] = &DDStart[dMMM * numberOfLBnodes]; + D.f[dMPP] = &DDStart[dPMM * numberOfLBnodes]; + D.f[dPMP] = &DDStart[dMPM * numberOfLBnodes]; } Distributions7 D7; @@ -129,60 +129,60 @@ __global__ void LB_Kernel_AD_Incomp_7(real diffusivity, unsigned int kbs = neighborZ[ks]; unsigned int kbsw = neighborZ[ksw]; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real fW = (D.f[DIR_P00])[k];//ke - real fE = (D.f[DIR_M00])[kw]; - real fS = (D.f[DIR_0P0])[k];//kn - real fN = (D.f[DIR_0M0])[ks]; - real fB = (D.f[DIR_00P])[k];//kt - real fT = (D.f[DIR_00M])[kb]; - real fSW = (D.f[DIR_PP0])[k];//kne - real fNE = (D.f[DIR_MM0])[ksw]; - real fNW = (D.f[DIR_PM0])[ks];//kse - real fSE = (D.f[DIR_MP0])[kw];//knw - real fBW = (D.f[DIR_P0P])[k];//kte - real fTE = (D.f[DIR_M0M])[kbw]; - real fTW = (D.f[DIR_P0M])[kb];//kbe - real fBE = (D.f[DIR_M0P])[kw];//ktw - real fBS = (D.f[DIR_0PP])[k];//ktn - real fTN = (D.f[DIR_0MM])[kbs]; - real fTS = (D.f[DIR_0PM])[kb];//kbn - real fBN = (D.f[DIR_0MP])[ks];//kts - //real fZERO = (D.f[DIR_000])[k];//kzero - real fBSW = (D.f[DIR_PPP])[k];//ktne - real fBNE = (D.f[DIR_MMP])[ksw];//ktsw - real fBNW = (D.f[DIR_PMP])[ks];//ktse - real fBSE = (D.f[DIR_MPP])[kw];//ktnw - real fTSW = (D.f[DIR_PPM])[kb];//kbne - real fTNE = (D.f[DIR_MMM])[kbsw]; - real fTNW = (D.f[DIR_PMM])[kbs];//kbse - real fTSE = (D.f[DIR_MPM])[kbw];//kbnw - //real fE = (D.f[DIR_P00])[k ];//ke - //real fW = (D.f[DIR_M00])[kw ]; - //real fN = (D.f[DIR_0P0])[k ];//kn - //real fS = (D.f[DIR_0M0])[ks ]; - //real fT = (D.f[DIR_00P])[k ];//kt - //real fB = (D.f[DIR_00M])[kb ]; - //real fNE = (D.f[DIR_PP0])[k ];//kne - //real fSW = (D.f[DIR_MM0])[ksw]; - //real fSE = (D.f[DIR_PM0])[ks ];//kse - //real fNW = (D.f[DIR_MP0])[kw ];//knw - //real fTE = (D.f[DIR_P0P])[k ];//kte - //real fBW = (D.f[DIR_M0M])[kbw]; - //real fBE = (D.f[DIR_P0M])[kb ];//kbe - //real fTW = (D.f[DIR_M0P])[kw ];//ktw - //real fTN = (D.f[DIR_0PP])[k ];//ktn - //real fBS = (D.f[DIR_0MM])[kbs]; - //real fBN = (D.f[DIR_0PM])[kb ];//kbn - //real fTS = (D.f[DIR_0MP])[ks ];//kts - //real fZERO = (D.f[DIR_000])[k ];//kzero - //real fTNE = (D.f[DIR_PPP])[k ];//ktne - //real fTSW = (D.f[DIR_MMP])[ksw];//ktsw - //real fTSE = (D.f[DIR_PMP])[ks ];//ktse - //real fTNW = (D.f[DIR_MPP])[kw ];//ktnw - //real fBNE = (D.f[DIR_PPM])[kb ];//kbne - //real fBSW = (D.f[DIR_MMM])[kbsw]; - //real fBSE = (D.f[DIR_PMM])[kbs];//kbse - //real fBNW = (D.f[DIR_MPM])[kbw];//kbnw + real fW = (D.f[dP00])[k];//ke + real fE = (D.f[dM00])[kw]; + real fS = (D.f[d0P0])[k];//kn + real fN = (D.f[d0M0])[ks]; + real fB = (D.f[d00P])[k];//kt + real fT = (D.f[d00M])[kb]; + real fSW = (D.f[dPP0])[k];//kne + real fNE = (D.f[dMM0])[ksw]; + real fNW = (D.f[dPM0])[ks];//kse + real fSE = (D.f[dMP0])[kw];//knw + real fBW = (D.f[dP0P])[k];//kte + real fTE = (D.f[dM0M])[kbw]; + real fTW = (D.f[dP0M])[kb];//kbe + real fBE = (D.f[dM0P])[kw];//ktw + real fBS = (D.f[d0PP])[k];//ktn + real fTN = (D.f[d0MM])[kbs]; + real fTS = (D.f[d0PM])[kb];//kbn + real fBN = (D.f[d0MP])[ks];//kts + //real fZERO = (D.f[d000])[k];//kzero + real fBSW = (D.f[dPPP])[k];//ktne + real fBNE = (D.f[dMMP])[ksw];//ktsw + real fBNW = (D.f[dPMP])[ks];//ktse + real fBSE = (D.f[dMPP])[kw];//ktnw + real fTSW = (D.f[dPPM])[kb];//kbne + real fTNE = (D.f[dMMM])[kbsw]; + real fTNW = (D.f[dPMM])[kbs];//kbse + real fTSE = (D.f[dMPM])[kbw];//kbnw + //real fE = (D.f[dP00])[k ];//ke + //real fW = (D.f[dM00])[kw ]; + //real fN = (D.f[d0P0])[k ];//kn + //real fS = (D.f[d0M0])[ks ]; + //real fT = (D.f[d00P])[k ];//kt + //real fB = (D.f[d00M])[kb ]; + //real fNE = (D.f[dPP0])[k ];//kne + //real fSW = (D.f[dMM0])[ksw]; + //real fSE = (D.f[dPM0])[ks ];//kse + //real fNW = (D.f[dMP0])[kw ];//knw + //real fTE = (D.f[dP0P])[k ];//kte + //real fBW = (D.f[dM0M])[kbw]; + //real fBE = (D.f[dP0M])[kb ];//kbe + //real fTW = (D.f[dM0P])[kw ];//ktw + //real fTN = (D.f[d0PP])[k ];//ktn + //real fBS = (D.f[d0MM])[kbs]; + //real fBN = (D.f[d0PM])[kb ];//kbn + //real fTS = (D.f[d0MP])[ks ];//kts + //real fZERO = (D.f[d000])[k ];//kzero + //real fTNE = (D.f[dPPP])[k ];//ktne + //real fTSW = (D.f[dMMP])[ksw];//ktsw + //real fTSE = (D.f[dPMP])[ks ];//ktse + //real fTNW = (D.f[dMPP])[kw ];//ktnw + //real fBNE = (D.f[dPPM])[kb ];//kbne + //real fBSW = (D.f[dMMM])[kbsw]; + //real fBSE = (D.f[dPMM])[kbs];//kbse + //real fBNW = (D.f[dMPM])[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/Mod7/ADIncomp7/ADIncomp7_Device.cuh b/src/gpu/core/Kernel/Incompressible/AdvectionDiffusion/D3Q7/B12/B12IncompressibleAdvectionDiffusionD3Q7_Device.cuh similarity index 54% rename from src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/AdvectionDiffusion/Incompressible/Mod7/ADIncomp7/ADIncomp7_Device.cuh rename to src/gpu/core/Kernel/Incompressible/AdvectionDiffusion/D3Q7/B12/B12IncompressibleAdvectionDiffusionD3Q7_Device.cuh index 845ecda946a4e45678082b72b5c74dc96e5810c5..e15d77a37351964e9fe3a23b45dfdec5289ea348 100644 --- a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/AdvectionDiffusion/Incompressible/Mod7/ADIncomp7/ADIncomp7_Device.cuh +++ b/src/gpu/core/Kernel/Incompressible/AdvectionDiffusion/D3Q7/B12/B12IncompressibleAdvectionDiffusionD3Q7_Device.cuh @@ -1,10 +1,10 @@ -#ifndef LB_KERNEL_AD_INCOMP_7_H -#define LB_KERNEL_AD_INCOMP_7_H +#ifndef B12IncompressibleAdvectionDiffusionD3Q7_Device_H +#define B12IncompressibleAdvectionDiffusionD3Q7_Device_H #include <DataTypes.h> #include <curand.h> -__global__ void LB_Kernel_AD_Incomp_7(real diffusivity, +__global__ void B12IncompressibleAdvectionDiffusionD3Q7_Device(real diffusivity, unsigned int* bcMatD, unsigned int* neighborX, unsigned int* neighborY, diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Incompressible/FluidFlow/B15/B15IncompressibleNavierStokesBGKplus.cu b/src/gpu/core/Kernel/Incompressible/NavierStokes/B15/B15IncompressibleNavierStokesBGKplus.cu similarity index 100% rename from src/gpu/VirtualFluids_GPU/Kernel/Incompressible/FluidFlow/B15/B15IncompressibleNavierStokesBGKplus.cu rename to src/gpu/core/Kernel/Incompressible/NavierStokes/B15/B15IncompressibleNavierStokesBGKplus.cu diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Incompressible/FluidFlow/B15/B15IncompressibleNavierStokesBGKplus.h b/src/gpu/core/Kernel/Incompressible/NavierStokes/B15/B15IncompressibleNavierStokesBGKplus.h similarity index 100% rename from src/gpu/VirtualFluids_GPU/Kernel/Incompressible/FluidFlow/B15/B15IncompressibleNavierStokesBGKplus.h rename to src/gpu/core/Kernel/Incompressible/NavierStokes/B15/B15IncompressibleNavierStokesBGKplus.h diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Incompressible/FluidFlow/B15/B15IncompressibleNavierStokesBGKplus_Device.cu b/src/gpu/core/Kernel/Incompressible/NavierStokes/B15/B15IncompressibleNavierStokesBGKplus_Device.cu similarity index 77% rename from src/gpu/VirtualFluids_GPU/Kernel/Incompressible/FluidFlow/B15/B15IncompressibleNavierStokesBGKplus_Device.cu rename to src/gpu/core/Kernel/Incompressible/NavierStokes/B15/B15IncompressibleNavierStokesBGKplus_Device.cu index 49764bc07bc910911dff0668105252f75d062205..626f33bae48e880a14734281c884a4e0b309fac1 100644 --- a/src/gpu/VirtualFluids_GPU/Kernel/Incompressible/FluidFlow/B15/B15IncompressibleNavierStokesBGKplus_Device.cu +++ b/src/gpu/core/Kernel/Incompressible/NavierStokes/B15/B15IncompressibleNavierStokesBGKplus_Device.cu @@ -37,63 +37,63 @@ __global__ void B15IncompressibleNavierStokesBGKplus_Device(real omega, Distributions27 D; if (EvenOrOdd == true) { - D.f[DIR_P00] = &DDStart[DIR_P00 * size_Mat]; - D.f[DIR_M00] = &DDStart[DIR_M00 * size_Mat]; - D.f[DIR_0P0] = &DDStart[DIR_0P0 * size_Mat]; - D.f[DIR_0M0] = &DDStart[DIR_0M0 * size_Mat]; - D.f[DIR_00P] = &DDStart[DIR_00P * size_Mat]; - D.f[DIR_00M] = &DDStart[DIR_00M * size_Mat]; - D.f[DIR_PP0] = &DDStart[DIR_PP0 * size_Mat]; - D.f[DIR_MM0] = &DDStart[DIR_MM0 * size_Mat]; - D.f[DIR_PM0] = &DDStart[DIR_PM0 * size_Mat]; - D.f[DIR_MP0] = &DDStart[DIR_MP0 * size_Mat]; - D.f[DIR_P0P] = &DDStart[DIR_P0P * size_Mat]; - D.f[DIR_M0M] = &DDStart[DIR_M0M * size_Mat]; - D.f[DIR_P0M] = &DDStart[DIR_P0M * size_Mat]; - D.f[DIR_M0P] = &DDStart[DIR_M0P * size_Mat]; - D.f[DIR_0PP] = &DDStart[DIR_0PP * size_Mat]; - D.f[DIR_0MM] = &DDStart[DIR_0MM * size_Mat]; - D.f[DIR_0PM] = &DDStart[DIR_0PM * size_Mat]; - D.f[DIR_0MP] = &DDStart[DIR_0MP * size_Mat]; - D.f[DIR_000] = &DDStart[DIR_000 * size_Mat]; - D.f[DIR_PPP] = &DDStart[DIR_PPP * size_Mat]; - D.f[DIR_MMP] = &DDStart[DIR_MMP * size_Mat]; - D.f[DIR_PMP] = &DDStart[DIR_PMP * size_Mat]; - D.f[DIR_MPP] = &DDStart[DIR_MPP * size_Mat]; - D.f[DIR_PPM] = &DDStart[DIR_PPM * size_Mat]; - D.f[DIR_MMM] = &DDStart[DIR_MMM * size_Mat]; - D.f[DIR_PMM] = &DDStart[DIR_PMM * size_Mat]; - D.f[DIR_MPM] = &DDStart[DIR_MPM * size_Mat]; + D.f[dP00] = &DDStart[dP00 * size_Mat]; + D.f[dM00] = &DDStart[dM00 * size_Mat]; + D.f[d0P0] = &DDStart[d0P0 * size_Mat]; + D.f[d0M0] = &DDStart[d0M0 * size_Mat]; + D.f[d00P] = &DDStart[d00P * size_Mat]; + D.f[d00M] = &DDStart[d00M * size_Mat]; + D.f[dPP0] = &DDStart[dPP0 * size_Mat]; + D.f[dMM0] = &DDStart[dMM0 * size_Mat]; + D.f[dPM0] = &DDStart[dPM0 * size_Mat]; + D.f[dMP0] = &DDStart[dMP0 * size_Mat]; + D.f[dP0P] = &DDStart[dP0P * size_Mat]; + D.f[dM0M] = &DDStart[dM0M * size_Mat]; + D.f[dP0M] = &DDStart[dP0M * size_Mat]; + D.f[dM0P] = &DDStart[dM0P * size_Mat]; + D.f[d0PP] = &DDStart[d0PP * size_Mat]; + D.f[d0MM] = &DDStart[d0MM * size_Mat]; + D.f[d0PM] = &DDStart[d0PM * size_Mat]; + D.f[d0MP] = &DDStart[d0MP * size_Mat]; + D.f[d000] = &DDStart[d000 * size_Mat]; + D.f[dPPP] = &DDStart[dPPP * size_Mat]; + D.f[dMMP] = &DDStart[dMMP * size_Mat]; + D.f[dPMP] = &DDStart[dPMP * size_Mat]; + D.f[dMPP] = &DDStart[dMPP * size_Mat]; + D.f[dPPM] = &DDStart[dPPM * size_Mat]; + D.f[dMMM] = &DDStart[dMMM * size_Mat]; + D.f[dPMM] = &DDStart[dPMM * size_Mat]; + D.f[dMPM] = &DDStart[dMPM * size_Mat]; } else { - D.f[DIR_M00] = &DDStart[DIR_P00 * size_Mat]; - D.f[DIR_P00] = &DDStart[DIR_M00 * size_Mat]; - D.f[DIR_0M0] = &DDStart[DIR_0P0 * size_Mat]; - D.f[DIR_0P0] = &DDStart[DIR_0M0 * size_Mat]; - D.f[DIR_00M] = &DDStart[DIR_00P * size_Mat]; - D.f[DIR_00P] = &DDStart[DIR_00M * size_Mat]; - D.f[DIR_MM0] = &DDStart[DIR_PP0 * size_Mat]; - D.f[DIR_PP0] = &DDStart[DIR_MM0 * size_Mat]; - D.f[DIR_MP0] = &DDStart[DIR_PM0 * size_Mat]; - D.f[DIR_PM0] = &DDStart[DIR_MP0 * size_Mat]; - D.f[DIR_M0M] = &DDStart[DIR_P0P * size_Mat]; - D.f[DIR_P0P] = &DDStart[DIR_M0M * size_Mat]; - D.f[DIR_M0P] = &DDStart[DIR_P0M * size_Mat]; - D.f[DIR_P0M] = &DDStart[DIR_M0P * size_Mat]; - D.f[DIR_0MM] = &DDStart[DIR_0PP * size_Mat]; - D.f[DIR_0PP] = &DDStart[DIR_0MM * size_Mat]; - D.f[DIR_0MP] = &DDStart[DIR_0PM * size_Mat]; - D.f[DIR_0PM] = &DDStart[DIR_0MP * size_Mat]; - D.f[DIR_000] = &DDStart[DIR_000 * size_Mat]; - D.f[DIR_MMM] = &DDStart[DIR_PPP * size_Mat]; - D.f[DIR_PPM] = &DDStart[DIR_MMP * size_Mat]; - D.f[DIR_MPM] = &DDStart[DIR_PMP * size_Mat]; - D.f[DIR_PMM] = &DDStart[DIR_MPP * size_Mat]; - D.f[DIR_MMP] = &DDStart[DIR_PPM * size_Mat]; - D.f[DIR_PPP] = &DDStart[DIR_MMM * size_Mat]; - D.f[DIR_MPP] = &DDStart[DIR_PMM * size_Mat]; - D.f[DIR_PMP] = &DDStart[DIR_MPM * size_Mat]; + D.f[dM00] = &DDStart[dP00 * size_Mat]; + D.f[dP00] = &DDStart[dM00 * size_Mat]; + D.f[d0M0] = &DDStart[d0P0 * size_Mat]; + D.f[d0P0] = &DDStart[d0M0 * size_Mat]; + D.f[d00M] = &DDStart[d00P * size_Mat]; + D.f[d00P] = &DDStart[d00M * size_Mat]; + D.f[dMM0] = &DDStart[dPP0 * size_Mat]; + D.f[dPP0] = &DDStart[dMM0 * size_Mat]; + D.f[dMP0] = &DDStart[dPM0 * size_Mat]; + D.f[dPM0] = &DDStart[dMP0 * size_Mat]; + D.f[dM0M] = &DDStart[dP0P * size_Mat]; + D.f[dP0P] = &DDStart[dM0M * size_Mat]; + D.f[dM0P] = &DDStart[dP0M * size_Mat]; + D.f[dP0M] = &DDStart[dM0P * size_Mat]; + D.f[d0MM] = &DDStart[d0PP * size_Mat]; + D.f[d0PP] = &DDStart[d0MM * size_Mat]; + D.f[d0MP] = &DDStart[d0PM * size_Mat]; + D.f[d0PM] = &DDStart[d0MP * size_Mat]; + D.f[d000] = &DDStart[d000 * size_Mat]; + D.f[dMMM] = &DDStart[dPPP * size_Mat]; + D.f[dPPM] = &DDStart[dMMP * size_Mat]; + D.f[dMPM] = &DDStart[dPMP * size_Mat]; + D.f[dPMM] = &DDStart[dMPP * size_Mat]; + D.f[dMMP] = &DDStart[dPPM * size_Mat]; + D.f[dPPP] = &DDStart[dMMM * size_Mat]; + D.f[dMPP] = &DDStart[dPMM * size_Mat]; + D.f[dPMP] = &DDStart[dMPM * size_Mat]; } //////////////////////////////////////////////////////////////////////////////// @@ -126,33 +126,33 @@ __global__ void B15IncompressibleNavierStokesBGKplus_Device(real omega, //unsigned int ktne = k; unsigned int kbsw = neighborZ[ksw]; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real mfcbb = (D.f[DIR_P00])[k];//[ke ];// + c2over27 ;(D.f[DIR_P00])[k ];//ke - real mfabb = (D.f[DIR_M00])[kw];//[kw ];// + c2over27 ;(D.f[DIR_M00])[kw ]; - real mfbcb = (D.f[DIR_0P0])[k];//[kn ];// + c2over27 ;(D.f[DIR_0P0])[k ];//kn - real mfbab = (D.f[DIR_0M0])[ks];//[ks ];// + c2over27 ;(D.f[DIR_0M0])[ks ]; - real mfbbc = (D.f[DIR_00P])[k];//[kt ];// + c2over27 ;(D.f[DIR_00P])[k ];//kt - real mfbba = (D.f[DIR_00M])[kb];//[kb ];// + c2over27 ;(D.f[DIR_00M])[kb ]; - real mfccb = (D.f[DIR_PP0])[k];//[kne ];// + c1over54 ;(D.f[DIR_PP0])[k ];//kne - real mfaab = (D.f[DIR_MM0])[ksw];//[ksw ];// + c1over54 ;(D.f[DIR_MM0])[ksw]; - real mfcab = (D.f[DIR_PM0])[ks];//[kse ];// + c1over54 ;(D.f[DIR_PM0])[ks ];//kse - real mfacb = (D.f[DIR_MP0])[kw];//[knw ];// + c1over54 ;(D.f[DIR_MP0])[kw ];//knw - real mfcbc = (D.f[DIR_P0P])[k];//[kte ];// + c1over54 ;(D.f[DIR_P0P])[k ];//kte - real mfaba = (D.f[DIR_M0M])[kbw];//[kbw ];// + c1over54 ;(D.f[DIR_M0M])[kbw]; - real mfcba = (D.f[DIR_P0M])[kb];//[kbe ];// + c1over54 ;(D.f[DIR_P0M])[kb ];//kbe - real mfabc = (D.f[DIR_M0P])[kw];//[ktw ];// + c1over54 ;(D.f[DIR_M0P])[kw ];//ktw - real mfbcc = (D.f[DIR_0PP])[k];//[ktn ];// + c1over54 ;(D.f[DIR_0PP])[k ];//ktn - real mfbaa = (D.f[DIR_0MM])[kbs];//[kbs ];// + c1over54 ;(D.f[DIR_0MM])[kbs]; - real mfbca = (D.f[DIR_0PM])[kb];//[kbn ];// + c1over54 ;(D.f[DIR_0PM])[kb ];//kbn - real mfbac = (D.f[DIR_0MP])[ks];//[kts ];// + c1over54 ;(D.f[DIR_0MP])[ks ];//kts - real mfbbb = (D.f[DIR_000])[k];//[kzero];// + c8over27 ;(D.f[DIR_000])[k ];//kzero - real mfccc = (D.f[DIR_PPP])[k];//[ktne ];// + c1over216;(D.f[DIR_PPP])[k ];//ktne - real mfaac = (D.f[DIR_MMP])[ksw];//[ktsw ];// + c1over216;(D.f[DIR_MMP])[ksw];//ktsw - real mfcac = (D.f[DIR_PMP])[ks];//[ktse ];// + c1over216;(D.f[DIR_PMP])[ks ];//ktse - real mfacc = (D.f[DIR_MPP])[kw];//[ktnw ];// + c1over216;(D.f[DIR_MPP])[kw ];//ktnw - real mfcca = (D.f[DIR_PPM])[kb];//[kbne ];// + c1over216;(D.f[DIR_PPM])[kb ];//kbne - real mfaaa = (D.f[DIR_MMM])[kbsw];//[kbsw ];// + c1over216;(D.f[DIR_MMM])[kbsw]; - real mfcaa = (D.f[DIR_PMM])[kbs];//[kbse ];// + c1over216;(D.f[DIR_PMM])[kbs];//kbse - real mfaca = (D.f[DIR_MPM])[kbw];//[kbnw ];// + c1over216;(D.f[DIR_MPM])[kbw];//kbnw + real mfcbb = (D.f[dP00])[k];//[ke ];// + c2over27 ;(D.f[dP00])[k ];//ke + real mfabb = (D.f[dM00])[kw];//[kw ];// + c2over27 ;(D.f[dM00])[kw ]; + real mfbcb = (D.f[d0P0])[k];//[kn ];// + c2over27 ;(D.f[d0P0])[k ];//kn + real mfbab = (D.f[d0M0])[ks];//[ks ];// + c2over27 ;(D.f[d0M0])[ks ]; + real mfbbc = (D.f[d00P])[k];//[kt ];// + c2over27 ;(D.f[d00P])[k ];//kt + real mfbba = (D.f[d00M])[kb];//[kb ];// + c2over27 ;(D.f[d00M])[kb ]; + real mfccb = (D.f[dPP0])[k];//[kne ];// + c1over54 ;(D.f[dPP0])[k ];//kne + real mfaab = (D.f[dMM0])[ksw];//[ksw ];// + c1over54 ;(D.f[dMM0])[ksw]; + real mfcab = (D.f[dPM0])[ks];//[kse ];// + c1over54 ;(D.f[dPM0])[ks ];//kse + real mfacb = (D.f[dMP0])[kw];//[knw ];// + c1over54 ;(D.f[dMP0])[kw ];//knw + real mfcbc = (D.f[dP0P])[k];//[kte ];// + c1over54 ;(D.f[dP0P])[k ];//kte + real mfaba = (D.f[dM0M])[kbw];//[kbw ];// + c1over54 ;(D.f[dM0M])[kbw]; + real mfcba = (D.f[dP0M])[kb];//[kbe ];// + c1over54 ;(D.f[dP0M])[kb ];//kbe + real mfabc = (D.f[dM0P])[kw];//[ktw ];// + c1over54 ;(D.f[dM0P])[kw ];//ktw + real mfbcc = (D.f[d0PP])[k];//[ktn ];// + c1over54 ;(D.f[d0PP])[k ];//ktn + real mfbaa = (D.f[d0MM])[kbs];//[kbs ];// + c1over54 ;(D.f[d0MM])[kbs]; + real mfbca = (D.f[d0PM])[kb];//[kbn ];// + c1over54 ;(D.f[d0PM])[kb ];//kbn + real mfbac = (D.f[d0MP])[ks];//[kts ];// + c1over54 ;(D.f[d0MP])[ks ];//kts + real mfbbb = (D.f[d000])[k];//[kzero];// + c8over27 ;(D.f[d000])[k ];//kzero + real mfccc = (D.f[dPPP])[k];//[ktne ];// + c1over216;(D.f[dPPP])[k ];//ktne + real mfaac = (D.f[dMMP])[ksw];//[ktsw ];// + c1over216;(D.f[dMMP])[ksw];//ktsw + real mfcac = (D.f[dPMP])[ks];//[ktse ];// + c1over216;(D.f[dPMP])[ks ];//ktse + real mfacc = (D.f[dMPP])[kw];//[ktnw ];// + c1over216;(D.f[dMPP])[kw ];//ktnw + real mfcca = (D.f[dPPM])[kb];//[kbne ];// + c1over216;(D.f[dPPM])[kb ];//kbne + real mfaaa = (D.f[dMMM])[kbsw];//[kbsw ];// + c1over216;(D.f[dMMM])[kbsw]; + real mfcaa = (D.f[dPMM])[kbs];//[kbse ];// + c1over216;(D.f[dPMM])[kbs];//kbse + real mfaca = (D.f[dMPM])[kbw];//[kbnw ];// + c1over216;(D.f[dMPM])[kbw];//kbnw //////////////////////////////////////////////////////////////////////////////////// //slow //real oMdrho = one - ((((mfccc+mfaaa) + (mfaca+mfcac)) + ((mfacc+mfcaa) + (mfaac+mfcca))) + @@ -724,33 +724,33 @@ __global__ void B15IncompressibleNavierStokesBGKplus_Device(real omega, //////////////////////////////////////////////////////////////////////////////////// - (D.f[DIR_P00])[k] = mfabb;//(D.f[ DIR_P00 ])[ke ] = mfabb;// - c2over27 ; (D.f[ DIR_P00 ])[k ] - (D.f[DIR_M00])[kw] = mfcbb;//(D.f[ DIR_M00 ])[kw ] = mfcbb;// - c2over27 ; (D.f[ DIR_M00 ])[kw ] - (D.f[DIR_0P0])[k] = mfbab;//(D.f[ DIR_0P0 ])[kn ] = mfbab;// - c2over27 ; (D.f[ DIR_0P0 ])[k ] - (D.f[DIR_0M0])[ks] = mfbcb;//(D.f[ DIR_0M0 ])[ks ] = mfbcb;// - c2over27 ; (D.f[ DIR_0M0 ])[ks ] - (D.f[DIR_00P])[k] = mfbba;//(D.f[ DIR_00P ])[kt ] = mfbba;// - c2over27 ; (D.f[ DIR_00P ])[k ] - (D.f[DIR_00M])[kb] = mfbbc;//(D.f[ DIR_00M ])[kb ] = mfbbc;// - c2over27 ; (D.f[ DIR_00M ])[kb ] - (D.f[DIR_PP0])[k] = mfaab;//(D.f[ DIR_PP0 ])[kne ] = mfaab;// - c1over54 ; (D.f[ DIR_PP0 ])[k ] - (D.f[DIR_MM0])[ksw] = mfccb;//(D.f[ DIR_MM0 ])[ksw ] = mfccb;// - c1over54 ; (D.f[ DIR_MM0 ])[ksw ] - (D.f[DIR_PM0])[ks] = mfacb;//(D.f[ DIR_PM0 ])[kse ] = mfacb;// - c1over54 ; (D.f[ DIR_PM0 ])[ks ] - (D.f[DIR_MP0])[kw] = mfcab;//(D.f[ DIR_MP0 ])[knw ] = mfcab;// - c1over54 ; (D.f[ DIR_MP0 ])[kw ] - (D.f[DIR_P0P])[k] = mfaba;//(D.f[ DIR_P0P ])[kte ] = mfaba;// - c1over54 ; (D.f[ DIR_P0P ])[k ] - (D.f[DIR_M0M])[kbw] = mfcbc;//(D.f[ DIR_M0M ])[kbw ] = mfcbc;// - c1over54 ; (D.f[ DIR_M0M ])[kbw ] - (D.f[DIR_P0M])[kb] = mfabc;//(D.f[ DIR_P0M ])[kbe ] = mfabc;// - c1over54 ; (D.f[ DIR_P0M ])[kb ] - (D.f[DIR_M0P])[kw] = mfcba;//(D.f[ DIR_M0P ])[ktw ] = mfcba;// - c1over54 ; (D.f[ DIR_M0P ])[kw ] - (D.f[DIR_0PP])[k] = mfbaa;//(D.f[ DIR_0PP ])[ktn ] = mfbaa;// - c1over54 ; (D.f[ DIR_0PP ])[k ] - (D.f[DIR_0MM])[kbs] = mfbcc;//(D.f[ DIR_0MM ])[kbs ] = mfbcc;// - c1over54 ; (D.f[ DIR_0MM ])[kbs ] - (D.f[DIR_0PM])[kb] = mfbac;//(D.f[ DIR_0PM ])[kbn ] = mfbac;// - c1over54 ; (D.f[ DIR_0PM ])[kb ] - (D.f[DIR_0MP])[ks] = mfbca;//(D.f[ DIR_0MP ])[kts ] = mfbca;// - c1over54 ; (D.f[ DIR_0MP ])[ks ] - (D.f[DIR_000])[k] = mfbbb;//(D.f[ DIR_000])[kzero] = mfbbb;// - c8over27 ; (D.f[ DIR_000])[k ] - (D.f[DIR_PPP])[k] = mfaaa;//(D.f[ DIR_PPP ])[ktne ] = mfaaa;// - c1over216; (D.f[ DIR_PPP ])[k ] - (D.f[DIR_PMP])[ks] = mfaca;//(D.f[ DIR_PMP ])[ktse ] = mfaca;// - c1over216; (D.f[ DIR_PMP ])[ks ] - (D.f[DIR_PPM])[kb] = mfaac;//(D.f[ DIR_PPM ])[kbne ] = mfaac;// - c1over216; (D.f[ DIR_PPM ])[kb ] - (D.f[DIR_PMM])[kbs] = mfacc;//(D.f[ DIR_PMM ])[kbse ] = mfacc;// - c1over216; (D.f[ DIR_PMM ])[kbs ] - (D.f[DIR_MPP])[kw] = mfcaa;//(D.f[ DIR_MPP ])[ktnw ] = mfcaa;// - c1over216; (D.f[ DIR_MPP ])[kw ] - (D.f[DIR_MMP])[ksw] = mfcca;//(D.f[ DIR_MMP ])[ktsw ] = mfcca;// - c1over216; (D.f[ DIR_MMP ])[ksw ] - (D.f[DIR_MPM])[kbw] = mfcac;//(D.f[ DIR_MPM ])[kbnw ] = mfcac;// - c1over216; (D.f[ DIR_MPM ])[kbw ] - (D.f[DIR_MMM])[kbsw] = mfccc;//(D.f[ DIR_MMM ])[kbsw ] = mfccc;// - c1over216; (D.f[ DIR_MMM ])[kbsw] + (D.f[dP00])[k] = mfabb;//(D.f[ dP00 ])[ke ] = mfabb;// - c2over27 ; (D.f[ dP00 ])[k ] + (D.f[dM00])[kw] = mfcbb;//(D.f[ dM00 ])[kw ] = mfcbb;// - c2over27 ; (D.f[ dM00 ])[kw ] + (D.f[d0P0])[k] = mfbab;//(D.f[ d0P0 ])[kn ] = mfbab;// - c2over27 ; (D.f[ d0P0 ])[k ] + (D.f[d0M0])[ks] = mfbcb;//(D.f[ d0M0 ])[ks ] = mfbcb;// - c2over27 ; (D.f[ d0M0 ])[ks ] + (D.f[d00P])[k] = mfbba;//(D.f[ d00P ])[kt ] = mfbba;// - c2over27 ; (D.f[ d00P ])[k ] + (D.f[d00M])[kb] = mfbbc;//(D.f[ d00M ])[kb ] = mfbbc;// - c2over27 ; (D.f[ d00M ])[kb ] + (D.f[dPP0])[k] = mfaab;//(D.f[ dPP0 ])[kne ] = mfaab;// - c1over54 ; (D.f[ dPP0 ])[k ] + (D.f[dMM0])[ksw] = mfccb;//(D.f[ dMM0 ])[ksw ] = mfccb;// - c1over54 ; (D.f[ dMM0 ])[ksw ] + (D.f[dPM0])[ks] = mfacb;//(D.f[ dPM0 ])[kse ] = mfacb;// - c1over54 ; (D.f[ dPM0 ])[ks ] + (D.f[dMP0])[kw] = mfcab;//(D.f[ dMP0 ])[knw ] = mfcab;// - c1over54 ; (D.f[ dMP0 ])[kw ] + (D.f[dP0P])[k] = mfaba;//(D.f[ dP0P ])[kte ] = mfaba;// - c1over54 ; (D.f[ dP0P ])[k ] + (D.f[dM0M])[kbw] = mfcbc;//(D.f[ dM0M ])[kbw ] = mfcbc;// - c1over54 ; (D.f[ dM0M ])[kbw ] + (D.f[dP0M])[kb] = mfabc;//(D.f[ dP0M ])[kbe ] = mfabc;// - c1over54 ; (D.f[ dP0M ])[kb ] + (D.f[dM0P])[kw] = mfcba;//(D.f[ dM0P ])[ktw ] = mfcba;// - c1over54 ; (D.f[ dM0P ])[kw ] + (D.f[d0PP])[k] = mfbaa;//(D.f[ d0PP ])[ktn ] = mfbaa;// - c1over54 ; (D.f[ d0PP ])[k ] + (D.f[d0MM])[kbs] = mfbcc;//(D.f[ d0MM ])[kbs ] = mfbcc;// - c1over54 ; (D.f[ d0MM ])[kbs ] + (D.f[d0PM])[kb] = mfbac;//(D.f[ d0PM ])[kbn ] = mfbac;// - c1over54 ; (D.f[ d0PM ])[kb ] + (D.f[d0MP])[ks] = mfbca;//(D.f[ d0MP ])[kts ] = mfbca;// - c1over54 ; (D.f[ d0MP ])[ks ] + (D.f[d000])[k] = mfbbb;//(D.f[ d000])[kzero] = mfbbb;// - c8over27 ; (D.f[ d000])[k ] + (D.f[dPPP])[k] = mfaaa;//(D.f[ dPPP ])[ktne ] = mfaaa;// - c1over216; (D.f[ dPPP ])[k ] + (D.f[dPMP])[ks] = mfaca;//(D.f[ dPMP ])[ktse ] = mfaca;// - c1over216; (D.f[ dPMP ])[ks ] + (D.f[dPPM])[kb] = mfaac;//(D.f[ dPPM ])[kbne ] = mfaac;// - c1over216; (D.f[ dPPM ])[kb ] + (D.f[dPMM])[kbs] = mfacc;//(D.f[ dPMM ])[kbse ] = mfacc;// - c1over216; (D.f[ dPMM ])[kbs ] + (D.f[dMPP])[kw] = mfcaa;//(D.f[ dMPP ])[ktnw ] = mfcaa;// - c1over216; (D.f[ dMPP ])[kw ] + (D.f[dMMP])[ksw] = mfcca;//(D.f[ dMMP ])[ktsw ] = mfcca;// - c1over216; (D.f[ dMMP ])[ksw ] + (D.f[dMPM])[kbw] = mfcac;//(D.f[ dMPM ])[kbnw ] = mfcac;// - c1over216; (D.f[ dMPM ])[kbw ] + (D.f[dMMM])[kbsw] = mfccc;//(D.f[ dMMM ])[kbsw ] = mfccc;// - c1over216; (D.f[ dMMM ])[kbsw] //////////////////////////////////////////////////////////////////////////////////// } } diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Incompressible/FluidFlow/B15/B15IncompressibleNavierStokesBGKplus_Device.cuh b/src/gpu/core/Kernel/Incompressible/NavierStokes/B15/B15IncompressibleNavierStokesBGKplus_Device.cuh similarity index 100% rename from src/gpu/VirtualFluids_GPU/Kernel/Incompressible/FluidFlow/B15/B15IncompressibleNavierStokesBGKplus_Device.cuh rename to src/gpu/core/Kernel/Incompressible/NavierStokes/B15/B15IncompressibleNavierStokesBGKplus_Device.cuh diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Incompressible/FluidFlow/B92/B92IncompressibleNavierStokes.cu b/src/gpu/core/Kernel/Incompressible/NavierStokes/B92/B92IncompressibleNavierStokes.cu similarity index 100% rename from src/gpu/VirtualFluids_GPU/Kernel/Incompressible/FluidFlow/B92/B92IncompressibleNavierStokes.cu rename to src/gpu/core/Kernel/Incompressible/NavierStokes/B92/B92IncompressibleNavierStokes.cu diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Incompressible/FluidFlow/B92/B92IncompressibleNavierStokes.h b/src/gpu/core/Kernel/Incompressible/NavierStokes/B92/B92IncompressibleNavierStokes.h similarity index 100% rename from src/gpu/VirtualFluids_GPU/Kernel/Incompressible/FluidFlow/B92/B92IncompressibleNavierStokes.h rename to src/gpu/core/Kernel/Incompressible/NavierStokes/B92/B92IncompressibleNavierStokes.h diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Incompressible/FluidFlow/B92/B92IncompressibleNavierStokes_Device.cu b/src/gpu/core/Kernel/Incompressible/NavierStokes/B92/B92IncompressibleNavierStokes_Device.cu similarity index 61% rename from src/gpu/VirtualFluids_GPU/Kernel/Incompressible/FluidFlow/B92/B92IncompressibleNavierStokes_Device.cu rename to src/gpu/core/Kernel/Incompressible/NavierStokes/B92/B92IncompressibleNavierStokes_Device.cu index 1d343eb3020816fe3114538a5362162e4a86169e..8c8197b815f0060d5612656617c1236d0e0b01fc 100644 --- a/src/gpu/VirtualFluids_GPU/Kernel/Incompressible/FluidFlow/B92/B92IncompressibleNavierStokes_Device.cu +++ b/src/gpu/core/Kernel/Incompressible/NavierStokes/B92/B92IncompressibleNavierStokes_Device.cu @@ -37,63 +37,63 @@ __global__ void B92IncompressibleNavierStokes_Device(real omega, Distributions27 D; if (EvenOrOdd == true) { - D.f[DIR_P00] = &DDStart[DIR_P00 * size_Mat]; - D.f[DIR_M00] = &DDStart[DIR_M00 * size_Mat]; - D.f[DIR_0P0] = &DDStart[DIR_0P0 * size_Mat]; - D.f[DIR_0M0] = &DDStart[DIR_0M0 * size_Mat]; - D.f[DIR_00P] = &DDStart[DIR_00P * size_Mat]; - D.f[DIR_00M] = &DDStart[DIR_00M * size_Mat]; - D.f[DIR_PP0] = &DDStart[DIR_PP0 * size_Mat]; - D.f[DIR_MM0] = &DDStart[DIR_MM0 * size_Mat]; - D.f[DIR_PM0] = &DDStart[DIR_PM0 * size_Mat]; - D.f[DIR_MP0] = &DDStart[DIR_MP0 * size_Mat]; - D.f[DIR_P0P] = &DDStart[DIR_P0P * size_Mat]; - D.f[DIR_M0M] = &DDStart[DIR_M0M * size_Mat]; - D.f[DIR_P0M] = &DDStart[DIR_P0M * size_Mat]; - D.f[DIR_M0P] = &DDStart[DIR_M0P * size_Mat]; - D.f[DIR_0PP] = &DDStart[DIR_0PP * size_Mat]; - D.f[DIR_0MM] = &DDStart[DIR_0MM * size_Mat]; - D.f[DIR_0PM] = &DDStart[DIR_0PM * size_Mat]; - D.f[DIR_0MP] = &DDStart[DIR_0MP * size_Mat]; - D.f[DIR_000] = &DDStart[DIR_000 * size_Mat]; - D.f[DIR_PPP] = &DDStart[DIR_PPP * size_Mat]; - D.f[DIR_MMP] = &DDStart[DIR_MMP * size_Mat]; - D.f[DIR_PMP] = &DDStart[DIR_PMP * size_Mat]; - D.f[DIR_MPP] = &DDStart[DIR_MPP * size_Mat]; - D.f[DIR_PPM] = &DDStart[DIR_PPM * size_Mat]; - D.f[DIR_MMM] = &DDStart[DIR_MMM * size_Mat]; - D.f[DIR_PMM] = &DDStart[DIR_PMM * size_Mat]; - D.f[DIR_MPM] = &DDStart[DIR_MPM * size_Mat]; + D.f[dP00] = &DDStart[dP00 * size_Mat]; + D.f[dM00] = &DDStart[dM00 * size_Mat]; + D.f[d0P0] = &DDStart[d0P0 * size_Mat]; + D.f[d0M0] = &DDStart[d0M0 * size_Mat]; + D.f[d00P] = &DDStart[d00P * size_Mat]; + D.f[d00M] = &DDStart[d00M * size_Mat]; + D.f[dPP0] = &DDStart[dPP0 * size_Mat]; + D.f[dMM0] = &DDStart[dMM0 * size_Mat]; + D.f[dPM0] = &DDStart[dPM0 * size_Mat]; + D.f[dMP0] = &DDStart[dMP0 * size_Mat]; + D.f[dP0P] = &DDStart[dP0P * size_Mat]; + D.f[dM0M] = &DDStart[dM0M * size_Mat]; + D.f[dP0M] = &DDStart[dP0M * size_Mat]; + D.f[dM0P] = &DDStart[dM0P * size_Mat]; + D.f[d0PP] = &DDStart[d0PP * size_Mat]; + D.f[d0MM] = &DDStart[d0MM * size_Mat]; + D.f[d0PM] = &DDStart[d0PM * size_Mat]; + D.f[d0MP] = &DDStart[d0MP * size_Mat]; + D.f[d000] = &DDStart[d000 * size_Mat]; + D.f[dPPP] = &DDStart[dPPP * size_Mat]; + D.f[dMMP] = &DDStart[dMMP * size_Mat]; + D.f[dPMP] = &DDStart[dPMP * size_Mat]; + D.f[dMPP] = &DDStart[dMPP * size_Mat]; + D.f[dPPM] = &DDStart[dPPM * size_Mat]; + D.f[dMMM] = &DDStart[dMMM * size_Mat]; + D.f[dPMM] = &DDStart[dPMM * size_Mat]; + D.f[dMPM] = &DDStart[dMPM * size_Mat]; } else { - D.f[DIR_M00] = &DDStart[DIR_P00 * size_Mat]; - D.f[DIR_P00] = &DDStart[DIR_M00 * size_Mat]; - D.f[DIR_0M0] = &DDStart[DIR_0P0 * size_Mat]; - D.f[DIR_0P0] = &DDStart[DIR_0M0 * size_Mat]; - D.f[DIR_00M] = &DDStart[DIR_00P * size_Mat]; - D.f[DIR_00P] = &DDStart[DIR_00M * size_Mat]; - D.f[DIR_MM0] = &DDStart[DIR_PP0 * size_Mat]; - D.f[DIR_PP0] = &DDStart[DIR_MM0 * size_Mat]; - D.f[DIR_MP0] = &DDStart[DIR_PM0 * size_Mat]; - D.f[DIR_PM0] = &DDStart[DIR_MP0 * size_Mat]; - D.f[DIR_M0M] = &DDStart[DIR_P0P * size_Mat]; - D.f[DIR_P0P] = &DDStart[DIR_M0M * size_Mat]; - D.f[DIR_M0P] = &DDStart[DIR_P0M * size_Mat]; - D.f[DIR_P0M] = &DDStart[DIR_M0P * size_Mat]; - D.f[DIR_0MM] = &DDStart[DIR_0PP * size_Mat]; - D.f[DIR_0PP] = &DDStart[DIR_0MM * size_Mat]; - D.f[DIR_0MP] = &DDStart[DIR_0PM * size_Mat]; - D.f[DIR_0PM] = &DDStart[DIR_0MP * size_Mat]; - D.f[DIR_000] = &DDStart[DIR_000 * size_Mat]; - D.f[DIR_MMM] = &DDStart[DIR_PPP * size_Mat]; - D.f[DIR_PPM] = &DDStart[DIR_MMP * size_Mat]; - D.f[DIR_MPM] = &DDStart[DIR_PMP * size_Mat]; - D.f[DIR_PMM] = &DDStart[DIR_MPP * size_Mat]; - D.f[DIR_MMP] = &DDStart[DIR_PPM * size_Mat]; - D.f[DIR_PPP] = &DDStart[DIR_MMM * size_Mat]; - D.f[DIR_MPP] = &DDStart[DIR_PMM * size_Mat]; - D.f[DIR_PMP] = &DDStart[DIR_MPM * size_Mat]; + D.f[dM00] = &DDStart[dP00 * size_Mat]; + D.f[dP00] = &DDStart[dM00 * size_Mat]; + D.f[d0M0] = &DDStart[d0P0 * size_Mat]; + D.f[d0P0] = &DDStart[d0M0 * size_Mat]; + D.f[d00M] = &DDStart[d00P * size_Mat]; + D.f[d00P] = &DDStart[d00M * size_Mat]; + D.f[dMM0] = &DDStart[dPP0 * size_Mat]; + D.f[dPP0] = &DDStart[dMM0 * size_Mat]; + D.f[dMP0] = &DDStart[dPM0 * size_Mat]; + D.f[dPM0] = &DDStart[dMP0 * size_Mat]; + D.f[dM0M] = &DDStart[dP0P * size_Mat]; + D.f[dP0P] = &DDStart[dM0M * size_Mat]; + D.f[dM0P] = &DDStart[dP0M * size_Mat]; + D.f[dP0M] = &DDStart[dM0P * size_Mat]; + D.f[d0MM] = &DDStart[d0PP * size_Mat]; + D.f[d0PP] = &DDStart[d0MM * size_Mat]; + D.f[d0MP] = &DDStart[d0PM * size_Mat]; + D.f[d0PM] = &DDStart[d0MP * size_Mat]; + D.f[d000] = &DDStart[d000 * size_Mat]; + D.f[dMMM] = &DDStart[dPPP * size_Mat]; + D.f[dPPM] = &DDStart[dMMP * size_Mat]; + D.f[dMPM] = &DDStart[dPMP * size_Mat]; + D.f[dPMM] = &DDStart[dMPP * size_Mat]; + D.f[dMMP] = &DDStart[dPPM * size_Mat]; + D.f[dPPP] = &DDStart[dMMM * size_Mat]; + D.f[dMPP] = &DDStart[dPMM * size_Mat]; + D.f[dPMP] = &DDStart[dMPM * size_Mat]; } //////////////////////////////////////////////////////////////////////////////// @@ -126,33 +126,33 @@ __global__ void B92IncompressibleNavierStokes_Device(real omega, //unsigned int ktne = k; unsigned int kbsw = neighborZ[ksw]; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real fE = (D.f[DIR_P00])[k];//ke - real fW = (D.f[DIR_M00])[kw]; - real fN = (D.f[DIR_0P0])[k];//kn - real fS = (D.f[DIR_0M0])[ks]; - real fT = (D.f[DIR_00P])[k];//kt - real fB = (D.f[DIR_00M])[kb]; - real fNE = (D.f[DIR_PP0])[k];//kne - real fSW = (D.f[DIR_MM0])[ksw]; - real fSE = (D.f[DIR_PM0])[ks];//kse - real fNW = (D.f[DIR_MP0])[kw];//knw - real fTE = (D.f[DIR_P0P])[k];//kte - real fBW = (D.f[DIR_M0M])[kbw]; - real fBE = (D.f[DIR_P0M])[kb];//kbe - real fTW = (D.f[DIR_M0P])[kw];//ktw - real fTN = (D.f[DIR_0PP])[k];//ktn - real fBS = (D.f[DIR_0MM])[kbs]; - real fBN = (D.f[DIR_0PM])[kb];//kbn - real fTS = (D.f[DIR_0MP])[ks];//kts - real fZERO = (D.f[DIR_000])[k];//kzero - real fTNE = (D.f[DIR_PPP])[k];//ktne - real fTSW = (D.f[DIR_MMP])[ksw];//ktsw - real fTSE = (D.f[DIR_PMP])[ks];//ktse - real fTNW = (D.f[DIR_MPP])[kw];//ktnw - real fBNE = (D.f[DIR_PPM])[kb];//kbne - real fBSW = (D.f[DIR_MMM])[kbsw]; - real fBSE = (D.f[DIR_PMM])[kbs];//kbse - real fBNW = (D.f[DIR_MPM])[kbw];//kbnw + real fE = (D.f[dP00])[k];//ke + real fW = (D.f[dM00])[kw]; + real fN = (D.f[d0P0])[k];//kn + real fS = (D.f[d0M0])[ks]; + real fT = (D.f[d00P])[k];//kt + real fB = (D.f[d00M])[kb]; + real fNE = (D.f[dPP0])[k];//kne + real fSW = (D.f[dMM0])[ksw]; + real fSE = (D.f[dPM0])[ks];//kse + real fNW = (D.f[dMP0])[kw];//knw + real fTE = (D.f[dP0P])[k];//kte + real fBW = (D.f[dM0M])[kbw]; + real fBE = (D.f[dP0M])[kb];//kbe + real fTW = (D.f[dM0P])[kw];//ktw + real fTN = (D.f[d0PP])[k];//ktn + real fBS = (D.f[d0MM])[kbs]; + real fBN = (D.f[d0PM])[kb];//kbn + real fTS = (D.f[d0MP])[ks];//kts + real fZERO = (D.f[d000])[k];//kzero + real fTNE = (D.f[dPPP])[k];//ktne + real fTSW = (D.f[dMMP])[ksw];//ktsw + real fTSE = (D.f[dPMP])[ks];//ktse + real fTNW = (D.f[dMPP])[kw];//ktnw + real fBNE = (D.f[dPPM])[kb];//kbne + real fBSW = (D.f[dMMM])[kbsw]; + real fBSE = (D.f[dPMM])[kbs];//kbse + real fBNW = (D.f[dMPM])[kbw];//kbnw //////////////////////////////////////////////////////////////////////////////// @@ -206,33 +206,33 @@ __global__ void B92IncompressibleNavierStokes_Device(real omega, ////////////////////////////////////////////////////////////////////////// - (D.f[DIR_P00])[k] = fW; - (D.f[DIR_M00])[kw] = fE; - (D.f[DIR_0P0])[k] = fS; - (D.f[DIR_0M0])[ks] = fN; - (D.f[DIR_00P])[k] = fB; - (D.f[DIR_00M])[kb] = fT; - (D.f[DIR_PP0])[k] = fSW; - (D.f[DIR_MM0])[ksw] = fNE; - (D.f[DIR_PM0])[ks] = fNW; - (D.f[DIR_MP0])[kw] = fSE; - (D.f[DIR_P0P])[k] = fBW; - (D.f[DIR_M0M])[kbw] = fTE; - (D.f[DIR_P0M])[kb] = fTW; - (D.f[DIR_M0P])[kw] = fBE; - (D.f[DIR_0PP])[k] = fBS; - (D.f[DIR_0MM])[kbs] = fTN; - (D.f[DIR_0PM])[kb] = fTS; - (D.f[DIR_0MP])[ks] = fBN; - (D.f[DIR_000])[k] = fZERO; - (D.f[DIR_PPP])[k] = fBSW; - (D.f[DIR_PMP])[ks] = fBNW; - (D.f[DIR_PPM])[kb] = fTSW; - (D.f[DIR_PMM])[kbs] = fTNW; - (D.f[DIR_MPP])[kw] = fBSE; - (D.f[DIR_MMP])[ksw] = fBNE; - (D.f[DIR_MPM])[kbw] = fTSE; - (D.f[DIR_MMM])[kbsw] = fTNE; + (D.f[dP00])[k] = fW; + (D.f[dM00])[kw] = fE; + (D.f[d0P0])[k] = fS; + (D.f[d0M0])[ks] = fN; + (D.f[d00P])[k] = fB; + (D.f[d00M])[kb] = fT; + (D.f[dPP0])[k] = fSW; + (D.f[dMM0])[ksw] = fNE; + (D.f[dPM0])[ks] = fNW; + (D.f[dMP0])[kw] = fSE; + (D.f[dP0P])[k] = fBW; + (D.f[dM0M])[kbw] = fTE; + (D.f[dP0M])[kb] = fTW; + (D.f[dM0P])[kw] = fBE; + (D.f[d0PP])[k] = fBS; + (D.f[d0MM])[kbs] = fTN; + (D.f[d0PM])[kb] = fTS; + (D.f[d0MP])[ks] = fBN; + (D.f[d000])[k] = fZERO; + (D.f[dPPP])[k] = fBSW; + (D.f[dPMP])[ks] = fBNW; + (D.f[dPPM])[kb] = fTSW; + (D.f[dPMM])[kbs] = fTNW; + (D.f[dMPP])[kw] = fBSE; + (D.f[dMMP])[ksw] = fBNE; + (D.f[dMPM])[kbw] = fTSE; + (D.f[dMMM])[kbsw] = fTNE; ////////////////////////////////////////////////////////////////////////// } } diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Incompressible/FluidFlow/B92/B92IncompressibleNavierStokes_Device.cuh b/src/gpu/core/Kernel/Incompressible/NavierStokes/B92/B92IncompressibleNavierStokes_Device.cuh similarity index 100% rename from src/gpu/VirtualFluids_GPU/Kernel/Incompressible/FluidFlow/B92/B92IncompressibleNavierStokes_Device.cuh rename to src/gpu/core/Kernel/Incompressible/NavierStokes/B92/B92IncompressibleNavierStokes_Device.cuh diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Incompressible/FluidFlow/C06/C06IncompressibleNavierStokes.cu b/src/gpu/core/Kernel/Incompressible/NavierStokes/C06/C06IncompressibleNavierStokes.cu similarity index 100% rename from src/gpu/VirtualFluids_GPU/Kernel/Incompressible/FluidFlow/C06/C06IncompressibleNavierStokes.cu rename to src/gpu/core/Kernel/Incompressible/NavierStokes/C06/C06IncompressibleNavierStokes.cu diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Incompressible/FluidFlow/C06/C06IncompressibleNavierStokes.h b/src/gpu/core/Kernel/Incompressible/NavierStokes/C06/C06IncompressibleNavierStokes.h similarity index 100% rename from src/gpu/VirtualFluids_GPU/Kernel/Incompressible/FluidFlow/C06/C06IncompressibleNavierStokes.h rename to src/gpu/core/Kernel/Incompressible/NavierStokes/C06/C06IncompressibleNavierStokes.h diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Incompressible/FluidFlow/C06/CascadeIncompSP27_Device.cu b/src/gpu/core/Kernel/Incompressible/NavierStokes/C06/CascadeIncompSP27_Device.cu similarity index 78% rename from src/gpu/VirtualFluids_GPU/Kernel/Incompressible/FluidFlow/C06/CascadeIncompSP27_Device.cu rename to src/gpu/core/Kernel/Incompressible/NavierStokes/C06/CascadeIncompSP27_Device.cu index 3f51dd4044887803a1b6b5f2470639ce4537b8d2..15f5ba6495639325d28bc35ebe999b89134b7393 100644 --- a/src/gpu/VirtualFluids_GPU/Kernel/Incompressible/FluidFlow/C06/CascadeIncompSP27_Device.cu +++ b/src/gpu/core/Kernel/Incompressible/NavierStokes/C06/CascadeIncompSP27_Device.cu @@ -38,63 +38,63 @@ __global__ void C06IncompressibleNavierStokes_Device( Distributions27 D; if (EvenOrOdd == true) { - D.f[DIR_P00] = &DDStart[DIR_P00 * size_Mat]; - D.f[DIR_M00] = &DDStart[DIR_M00 * size_Mat]; - D.f[DIR_0P0] = &DDStart[DIR_0P0 * size_Mat]; - D.f[DIR_0M0] = &DDStart[DIR_0M0 * size_Mat]; - D.f[DIR_00P] = &DDStart[DIR_00P * size_Mat]; - D.f[DIR_00M] = &DDStart[DIR_00M * size_Mat]; - D.f[DIR_PP0] = &DDStart[DIR_PP0 * size_Mat]; - D.f[DIR_MM0] = &DDStart[DIR_MM0 * size_Mat]; - D.f[DIR_PM0] = &DDStart[DIR_PM0 * size_Mat]; - D.f[DIR_MP0] = &DDStart[DIR_MP0 * size_Mat]; - D.f[DIR_P0P] = &DDStart[DIR_P0P * size_Mat]; - D.f[DIR_M0M] = &DDStart[DIR_M0M * size_Mat]; - D.f[DIR_P0M] = &DDStart[DIR_P0M * size_Mat]; - D.f[DIR_M0P] = &DDStart[DIR_M0P * size_Mat]; - D.f[DIR_0PP] = &DDStart[DIR_0PP * size_Mat]; - D.f[DIR_0MM] = &DDStart[DIR_0MM * size_Mat]; - D.f[DIR_0PM] = &DDStart[DIR_0PM * size_Mat]; - D.f[DIR_0MP] = &DDStart[DIR_0MP * size_Mat]; - D.f[DIR_000] = &DDStart[DIR_000 * size_Mat]; - D.f[DIR_PPP] = &DDStart[DIR_PPP * size_Mat]; - D.f[DIR_MMP] = &DDStart[DIR_MMP * size_Mat]; - D.f[DIR_PMP] = &DDStart[DIR_PMP * size_Mat]; - D.f[DIR_MPP] = &DDStart[DIR_MPP * size_Mat]; - D.f[DIR_PPM] = &DDStart[DIR_PPM * size_Mat]; - D.f[DIR_MMM] = &DDStart[DIR_MMM * size_Mat]; - D.f[DIR_PMM] = &DDStart[DIR_PMM * size_Mat]; - D.f[DIR_MPM] = &DDStart[DIR_MPM * size_Mat]; + D.f[dP00] = &DDStart[dP00 * size_Mat]; + D.f[dM00] = &DDStart[dM00 * size_Mat]; + D.f[d0P0] = &DDStart[d0P0 * size_Mat]; + D.f[d0M0] = &DDStart[d0M0 * size_Mat]; + D.f[d00P] = &DDStart[d00P * size_Mat]; + D.f[d00M] = &DDStart[d00M * size_Mat]; + D.f[dPP0] = &DDStart[dPP0 * size_Mat]; + D.f[dMM0] = &DDStart[dMM0 * size_Mat]; + D.f[dPM0] = &DDStart[dPM0 * size_Mat]; + D.f[dMP0] = &DDStart[dMP0 * size_Mat]; + D.f[dP0P] = &DDStart[dP0P * size_Mat]; + D.f[dM0M] = &DDStart[dM0M * size_Mat]; + D.f[dP0M] = &DDStart[dP0M * size_Mat]; + D.f[dM0P] = &DDStart[dM0P * size_Mat]; + D.f[d0PP] = &DDStart[d0PP * size_Mat]; + D.f[d0MM] = &DDStart[d0MM * size_Mat]; + D.f[d0PM] = &DDStart[d0PM * size_Mat]; + D.f[d0MP] = &DDStart[d0MP * size_Mat]; + D.f[d000] = &DDStart[d000 * size_Mat]; + D.f[dPPP] = &DDStart[dPPP * size_Mat]; + D.f[dMMP] = &DDStart[dMMP * size_Mat]; + D.f[dPMP] = &DDStart[dPMP * size_Mat]; + D.f[dMPP] = &DDStart[dMPP * size_Mat]; + D.f[dPPM] = &DDStart[dPPM * size_Mat]; + D.f[dMMM] = &DDStart[dMMM * size_Mat]; + D.f[dPMM] = &DDStart[dPMM * size_Mat]; + D.f[dMPM] = &DDStart[dMPM * size_Mat]; } else { - D.f[DIR_M00] = &DDStart[DIR_P00 * size_Mat]; - D.f[DIR_P00] = &DDStart[DIR_M00 * size_Mat]; - D.f[DIR_0M0] = &DDStart[DIR_0P0 * size_Mat]; - D.f[DIR_0P0] = &DDStart[DIR_0M0 * size_Mat]; - D.f[DIR_00M] = &DDStart[DIR_00P * size_Mat]; - D.f[DIR_00P] = &DDStart[DIR_00M * size_Mat]; - D.f[DIR_MM0] = &DDStart[DIR_PP0 * size_Mat]; - D.f[DIR_PP0] = &DDStart[DIR_MM0 * size_Mat]; - D.f[DIR_MP0] = &DDStart[DIR_PM0 * size_Mat]; - D.f[DIR_PM0] = &DDStart[DIR_MP0 * size_Mat]; - D.f[DIR_M0M] = &DDStart[DIR_P0P * size_Mat]; - D.f[DIR_P0P] = &DDStart[DIR_M0M * size_Mat]; - D.f[DIR_M0P] = &DDStart[DIR_P0M * size_Mat]; - D.f[DIR_P0M] = &DDStart[DIR_M0P * size_Mat]; - D.f[DIR_0MM] = &DDStart[DIR_0PP * size_Mat]; - D.f[DIR_0PP] = &DDStart[DIR_0MM * size_Mat]; - D.f[DIR_0MP] = &DDStart[DIR_0PM * size_Mat]; - D.f[DIR_0PM] = &DDStart[DIR_0MP * size_Mat]; - D.f[DIR_000] = &DDStart[DIR_000 * size_Mat]; - D.f[DIR_MMM] = &DDStart[DIR_PPP * size_Mat]; - D.f[DIR_PPM] = &DDStart[DIR_MMP * size_Mat]; - D.f[DIR_MPM] = &DDStart[DIR_PMP * size_Mat]; - D.f[DIR_PMM] = &DDStart[DIR_MPP * size_Mat]; - D.f[DIR_MMP] = &DDStart[DIR_PPM * size_Mat]; - D.f[DIR_PPP] = &DDStart[DIR_MMM * size_Mat]; - D.f[DIR_MPP] = &DDStart[DIR_PMM * size_Mat]; - D.f[DIR_PMP] = &DDStart[DIR_MPM * size_Mat]; + D.f[dM00] = &DDStart[dP00 * size_Mat]; + D.f[dP00] = &DDStart[dM00 * size_Mat]; + D.f[d0M0] = &DDStart[d0P0 * size_Mat]; + D.f[d0P0] = &DDStart[d0M0 * size_Mat]; + D.f[d00M] = &DDStart[d00P * size_Mat]; + D.f[d00P] = &DDStart[d00M * size_Mat]; + D.f[dMM0] = &DDStart[dPP0 * size_Mat]; + D.f[dPP0] = &DDStart[dMM0 * size_Mat]; + D.f[dMP0] = &DDStart[dPM0 * size_Mat]; + D.f[dPM0] = &DDStart[dMP0 * size_Mat]; + D.f[dM0M] = &DDStart[dP0P * size_Mat]; + D.f[dP0P] = &DDStart[dM0M * size_Mat]; + D.f[dM0P] = &DDStart[dP0M * size_Mat]; + D.f[dP0M] = &DDStart[dM0P * size_Mat]; + D.f[d0MM] = &DDStart[d0PP * size_Mat]; + D.f[d0PP] = &DDStart[d0MM * size_Mat]; + D.f[d0MP] = &DDStart[d0PM * size_Mat]; + D.f[d0PM] = &DDStart[d0MP * size_Mat]; + D.f[d000] = &DDStart[d000 * size_Mat]; + D.f[dMMM] = &DDStart[dPPP * size_Mat]; + D.f[dPPM] = &DDStart[dMMP * size_Mat]; + D.f[dMPM] = &DDStart[dPMP * size_Mat]; + D.f[dPMM] = &DDStart[dMPP * size_Mat]; + D.f[dMMP] = &DDStart[dPPM * size_Mat]; + D.f[dPPP] = &DDStart[dMMM * size_Mat]; + D.f[dMPP] = &DDStart[dPMM * size_Mat]; + D.f[dPMP] = &DDStart[dMPM * size_Mat]; } //////////////////////////////////////////////////////////////////////////////// @@ -127,33 +127,33 @@ __global__ void C06IncompressibleNavierStokes_Device( //unsigned int ktne = k; unsigned int kbsw = neighborZ[ksw]; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real mfcbb = (D.f[DIR_P00])[k];//[ke ];// + c2over27 ;(D.f[DIR_P00])[k ];//ke - real mfabb = (D.f[DIR_M00])[kw];//[kw ];// + c2over27 ;(D.f[DIR_M00])[kw ]; - real mfbcb = (D.f[DIR_0P0])[k];//[kn ];// + c2over27 ;(D.f[DIR_0P0])[k ];//kn - real mfbab = (D.f[DIR_0M0])[ks];//[ks ];// + c2over27 ;(D.f[DIR_0M0])[ks ]; - real mfbbc = (D.f[DIR_00P])[k];//[kt ];// + c2over27 ;(D.f[DIR_00P])[k ];//kt - real mfbba = (D.f[DIR_00M])[kb];//[kb ];// + c2over27 ;(D.f[DIR_00M])[kb ]; - real mfccb = (D.f[DIR_PP0])[k];//[kne ];// + c1over54 ;(D.f[DIR_PP0])[k ];//kne - real mfaab = (D.f[DIR_MM0])[ksw];//[ksw ];// + c1over54 ;(D.f[DIR_MM0])[ksw]; - real mfcab = (D.f[DIR_PM0])[ks];//[kse ];// + c1over54 ;(D.f[DIR_PM0])[ks ];//kse - real mfacb = (D.f[DIR_MP0])[kw];//[knw ];// + c1over54 ;(D.f[DIR_MP0])[kw ];//knw - real mfcbc = (D.f[DIR_P0P])[k];//[kte ];// + c1over54 ;(D.f[DIR_P0P])[k ];//kte - real mfaba = (D.f[DIR_M0M])[kbw];//[kbw ];// + c1over54 ;(D.f[DIR_M0M])[kbw]; - real mfcba = (D.f[DIR_P0M])[kb];//[kbe ];// + c1over54 ;(D.f[DIR_P0M])[kb ];//kbe - real mfabc = (D.f[DIR_M0P])[kw];//[ktw ];// + c1over54 ;(D.f[DIR_M0P])[kw ];//ktw - real mfbcc = (D.f[DIR_0PP])[k];//[ktn ];// + c1over54 ;(D.f[DIR_0PP])[k ];//ktn - real mfbaa = (D.f[DIR_0MM])[kbs];//[kbs ];// + c1over54 ;(D.f[DIR_0MM])[kbs]; - real mfbca = (D.f[DIR_0PM])[kb];//[kbn ];// + c1over54 ;(D.f[DIR_0PM])[kb ];//kbn - real mfbac = (D.f[DIR_0MP])[ks];//[kts ];// + c1over54 ;(D.f[DIR_0MP])[ks ];//kts - real mfbbb = (D.f[DIR_000])[k];//[kzero];// + c8over27 ;(D.f[DIR_000])[k ];//kzero - real mfccc = (D.f[DIR_PPP])[k];//[ktne ];// + c1over216;(D.f[DIR_PPP])[k ];//ktne - real mfaac = (D.f[DIR_MMP])[ksw];//[ktsw ];// + c1over216;(D.f[DIR_MMP])[ksw];//ktsw - real mfcac = (D.f[DIR_PMP])[ks];//[ktse ];// + c1over216;(D.f[DIR_PMP])[ks ];//ktse - real mfacc = (D.f[DIR_MPP])[kw];//[ktnw ];// + c1over216;(D.f[DIR_MPP])[kw ];//ktnw - real mfcca = (D.f[DIR_PPM])[kb];//[kbne ];// + c1over216;(D.f[DIR_PPM])[kb ];//kbne - real mfaaa = (D.f[DIR_MMM])[kbsw];//[kbsw ];// + c1over216;(D.f[DIR_MMM])[kbsw]; - real mfcaa = (D.f[DIR_PMM])[kbs];//[kbse ];// + c1over216;(D.f[DIR_PMM])[kbs];//kbse - real mfaca = (D.f[DIR_MPM])[kbw];//[kbnw ];// + c1over216;(D.f[DIR_MPM])[kbw];//kbnw + real mfcbb = (D.f[dP00])[k];//[ke ];// + c2over27 ;(D.f[dP00])[k ];//ke + real mfabb = (D.f[dM00])[kw];//[kw ];// + c2over27 ;(D.f[dM00])[kw ]; + real mfbcb = (D.f[d0P0])[k];//[kn ];// + c2over27 ;(D.f[d0P0])[k ];//kn + real mfbab = (D.f[d0M0])[ks];//[ks ];// + c2over27 ;(D.f[d0M0])[ks ]; + real mfbbc = (D.f[d00P])[k];//[kt ];// + c2over27 ;(D.f[d00P])[k ];//kt + real mfbba = (D.f[d00M])[kb];//[kb ];// + c2over27 ;(D.f[d00M])[kb ]; + real mfccb = (D.f[dPP0])[k];//[kne ];// + c1over54 ;(D.f[dPP0])[k ];//kne + real mfaab = (D.f[dMM0])[ksw];//[ksw ];// + c1over54 ;(D.f[dMM0])[ksw]; + real mfcab = (D.f[dPM0])[ks];//[kse ];// + c1over54 ;(D.f[dPM0])[ks ];//kse + real mfacb = (D.f[dMP0])[kw];//[knw ];// + c1over54 ;(D.f[dMP0])[kw ];//knw + real mfcbc = (D.f[dP0P])[k];//[kte ];// + c1over54 ;(D.f[dP0P])[k ];//kte + real mfaba = (D.f[dM0M])[kbw];//[kbw ];// + c1over54 ;(D.f[dM0M])[kbw]; + real mfcba = (D.f[dP0M])[kb];//[kbe ];// + c1over54 ;(D.f[dP0M])[kb ];//kbe + real mfabc = (D.f[dM0P])[kw];//[ktw ];// + c1over54 ;(D.f[dM0P])[kw ];//ktw + real mfbcc = (D.f[d0PP])[k];//[ktn ];// + c1over54 ;(D.f[d0PP])[k ];//ktn + real mfbaa = (D.f[d0MM])[kbs];//[kbs ];// + c1over54 ;(D.f[d0MM])[kbs]; + real mfbca = (D.f[d0PM])[kb];//[kbn ];// + c1over54 ;(D.f[d0PM])[kb ];//kbn + real mfbac = (D.f[d0MP])[ks];//[kts ];// + c1over54 ;(D.f[d0MP])[ks ];//kts + real mfbbb = (D.f[d000])[k];//[kzero];// + c8over27 ;(D.f[d000])[k ];//kzero + real mfccc = (D.f[dPPP])[k];//[ktne ];// + c1over216;(D.f[dPPP])[k ];//ktne + real mfaac = (D.f[dMMP])[ksw];//[ktsw ];// + c1over216;(D.f[dMMP])[ksw];//ktsw + real mfcac = (D.f[dPMP])[ks];//[ktse ];// + c1over216;(D.f[dPMP])[ks ];//ktse + real mfacc = (D.f[dMPP])[kw];//[ktnw ];// + c1over216;(D.f[dMPP])[kw ];//ktnw + real mfcca = (D.f[dPPM])[kb];//[kbne ];// + c1over216;(D.f[dPPM])[kb ];//kbne + real mfaaa = (D.f[dMMM])[kbsw];//[kbsw ];// + c1over216;(D.f[dMMM])[kbsw]; + real mfcaa = (D.f[dPMM])[kbs];//[kbse ];// + c1over216;(D.f[dPMM])[kbs];//kbse + real mfaca = (D.f[dMPM])[kbw];//[kbnw ];// + c1over216;(D.f[dMPM])[kbw];//kbnw //////////////////////////////////////////////////////////////////////////////////// //slow //real oMdrho = one - ((((mfccc+mfaaa) + (mfaca+mfcac)) + ((mfacc+mfcaa) + (mfaac+mfcca))) + @@ -729,33 +729,33 @@ __global__ void C06IncompressibleNavierStokes_Device( //////////////////////////////////////////////////////////////////////////////////// - (D.f[DIR_P00])[k] = mfabb;//(D.f[ DIR_P00 ])[ke ] = mfabb;// - c2over27 ; (D.f[ DIR_P00 ])[k ] - (D.f[DIR_M00])[kw] = mfcbb;//(D.f[ DIR_M00 ])[kw ] = mfcbb;// - c2over27 ; (D.f[ DIR_M00 ])[kw ] - (D.f[DIR_0P0])[k] = mfbab;//(D.f[ DIR_0P0 ])[kn ] = mfbab;// - c2over27 ; (D.f[ DIR_0P0 ])[k ] - (D.f[DIR_0M0])[ks] = mfbcb;//(D.f[ DIR_0M0 ])[ks ] = mfbcb;// - c2over27 ; (D.f[ DIR_0M0 ])[ks ] - (D.f[DIR_00P])[k] = mfbba;//(D.f[ DIR_00P ])[kt ] = mfbba;// - c2over27 ; (D.f[ DIR_00P ])[k ] - (D.f[DIR_00M])[kb] = mfbbc;//(D.f[ DIR_00M ])[kb ] = mfbbc;// - c2over27 ; (D.f[ DIR_00M ])[kb ] - (D.f[DIR_PP0])[k] = mfaab;//(D.f[ DIR_PP0 ])[kne ] = mfaab;// - c1over54 ; (D.f[ DIR_PP0 ])[k ] - (D.f[DIR_MM0])[ksw] = mfccb;//(D.f[ DIR_MM0 ])[ksw ] = mfccb;// - c1over54 ; (D.f[ DIR_MM0 ])[ksw ] - (D.f[DIR_PM0])[ks] = mfacb;//(D.f[ DIR_PM0 ])[kse ] = mfacb;// - c1over54 ; (D.f[ DIR_PM0 ])[ks ] - (D.f[DIR_MP0])[kw] = mfcab;//(D.f[ DIR_MP0 ])[knw ] = mfcab;// - c1over54 ; (D.f[ DIR_MP0 ])[kw ] - (D.f[DIR_P0P])[k] = mfaba;//(D.f[ DIR_P0P ])[kte ] = mfaba;// - c1over54 ; (D.f[ DIR_P0P ])[k ] - (D.f[DIR_M0M])[kbw] = mfcbc;//(D.f[ DIR_M0M ])[kbw ] = mfcbc;// - c1over54 ; (D.f[ DIR_M0M ])[kbw ] - (D.f[DIR_P0M])[kb] = mfabc;//(D.f[ DIR_P0M ])[kbe ] = mfabc;// - c1over54 ; (D.f[ DIR_P0M ])[kb ] - (D.f[DIR_M0P])[kw] = mfcba;//(D.f[ DIR_M0P ])[ktw ] = mfcba;// - c1over54 ; (D.f[ DIR_M0P ])[kw ] - (D.f[DIR_0PP])[k] = mfbaa;//(D.f[ DIR_0PP ])[ktn ] = mfbaa;// - c1over54 ; (D.f[ DIR_0PP ])[k ] - (D.f[DIR_0MM])[kbs] = mfbcc;//(D.f[ DIR_0MM ])[kbs ] = mfbcc;// - c1over54 ; (D.f[ DIR_0MM ])[kbs ] - (D.f[DIR_0PM])[kb] = mfbac;//(D.f[ DIR_0PM ])[kbn ] = mfbac;// - c1over54 ; (D.f[ DIR_0PM ])[kb ] - (D.f[DIR_0MP])[ks] = mfbca;//(D.f[ DIR_0MP ])[kts ] = mfbca;// - c1over54 ; (D.f[ DIR_0MP ])[ks ] - (D.f[DIR_000])[k] = mfbbb;//(D.f[ DIR_000])[kzero] = mfbbb;// - c8over27 ; (D.f[ DIR_000])[k ] - (D.f[DIR_PPP])[k] = mfaaa;//(D.f[ DIR_PPP ])[ktne ] = mfaaa;// - c1over216; (D.f[ DIR_PPP ])[k ] - (D.f[DIR_PMP])[ks] = mfaca;//(D.f[ DIR_PMP ])[ktse ] = mfaca;// - c1over216; (D.f[ DIR_PMP ])[ks ] - (D.f[DIR_PPM])[kb] = mfaac;//(D.f[ DIR_PPM ])[kbne ] = mfaac;// - c1over216; (D.f[ DIR_PPM ])[kb ] - (D.f[DIR_PMM])[kbs] = mfacc;//(D.f[ DIR_PMM ])[kbse ] = mfacc;// - c1over216; (D.f[ DIR_PMM ])[kbs ] - (D.f[DIR_MPP])[kw] = mfcaa;//(D.f[ DIR_MPP ])[ktnw ] = mfcaa;// - c1over216; (D.f[ DIR_MPP ])[kw ] - (D.f[DIR_MMP])[ksw] = mfcca;//(D.f[ DIR_MMP ])[ktsw ] = mfcca;// - c1over216; (D.f[ DIR_MMP ])[ksw ] - (D.f[DIR_MPM])[kbw] = mfcac;//(D.f[ DIR_MPM ])[kbnw ] = mfcac;// - c1over216; (D.f[ DIR_MPM ])[kbw ] - (D.f[DIR_MMM])[kbsw] = mfccc;//(D.f[ DIR_MMM ])[kbsw ] = mfccc;// - c1over216; (D.f[ DIR_MMM ])[kbsw] + (D.f[dP00])[k] = mfabb;//(D.f[ dP00 ])[ke ] = mfabb;// - c2over27 ; (D.f[ dP00 ])[k ] + (D.f[dM00])[kw] = mfcbb;//(D.f[ dM00 ])[kw ] = mfcbb;// - c2over27 ; (D.f[ dM00 ])[kw ] + (D.f[d0P0])[k] = mfbab;//(D.f[ d0P0 ])[kn ] = mfbab;// - c2over27 ; (D.f[ d0P0 ])[k ] + (D.f[d0M0])[ks] = mfbcb;//(D.f[ d0M0 ])[ks ] = mfbcb;// - c2over27 ; (D.f[ d0M0 ])[ks ] + (D.f[d00P])[k] = mfbba;//(D.f[ d00P ])[kt ] = mfbba;// - c2over27 ; (D.f[ d00P ])[k ] + (D.f[d00M])[kb] = mfbbc;//(D.f[ d00M ])[kb ] = mfbbc;// - c2over27 ; (D.f[ d00M ])[kb ] + (D.f[dPP0])[k] = mfaab;//(D.f[ dPP0 ])[kne ] = mfaab;// - c1over54 ; (D.f[ dPP0 ])[k ] + (D.f[dMM0])[ksw] = mfccb;//(D.f[ dMM0 ])[ksw ] = mfccb;// - c1over54 ; (D.f[ dMM0 ])[ksw ] + (D.f[dPM0])[ks] = mfacb;//(D.f[ dPM0 ])[kse ] = mfacb;// - c1over54 ; (D.f[ dPM0 ])[ks ] + (D.f[dMP0])[kw] = mfcab;//(D.f[ dMP0 ])[knw ] = mfcab;// - c1over54 ; (D.f[ dMP0 ])[kw ] + (D.f[dP0P])[k] = mfaba;//(D.f[ dP0P ])[kte ] = mfaba;// - c1over54 ; (D.f[ dP0P ])[k ] + (D.f[dM0M])[kbw] = mfcbc;//(D.f[ dM0M ])[kbw ] = mfcbc;// - c1over54 ; (D.f[ dM0M ])[kbw ] + (D.f[dP0M])[kb] = mfabc;//(D.f[ dP0M ])[kbe ] = mfabc;// - c1over54 ; (D.f[ dP0M ])[kb ] + (D.f[dM0P])[kw] = mfcba;//(D.f[ dM0P ])[ktw ] = mfcba;// - c1over54 ; (D.f[ dM0P ])[kw ] + (D.f[d0PP])[k] = mfbaa;//(D.f[ d0PP ])[ktn ] = mfbaa;// - c1over54 ; (D.f[ d0PP ])[k ] + (D.f[d0MM])[kbs] = mfbcc;//(D.f[ d0MM ])[kbs ] = mfbcc;// - c1over54 ; (D.f[ d0MM ])[kbs ] + (D.f[d0PM])[kb] = mfbac;//(D.f[ d0PM ])[kbn ] = mfbac;// - c1over54 ; (D.f[ d0PM ])[kb ] + (D.f[d0MP])[ks] = mfbca;//(D.f[ d0MP ])[kts ] = mfbca;// - c1over54 ; (D.f[ d0MP ])[ks ] + (D.f[d000])[k] = mfbbb;//(D.f[ d000])[kzero] = mfbbb;// - c8over27 ; (D.f[ d000])[k ] + (D.f[dPPP])[k] = mfaaa;//(D.f[ dPPP ])[ktne ] = mfaaa;// - c1over216; (D.f[ dPPP ])[k ] + (D.f[dPMP])[ks] = mfaca;//(D.f[ dPMP ])[ktse ] = mfaca;// - c1over216; (D.f[ dPMP ])[ks ] + (D.f[dPPM])[kb] = mfaac;//(D.f[ dPPM ])[kbne ] = mfaac;// - c1over216; (D.f[ dPPM ])[kb ] + (D.f[dPMM])[kbs] = mfacc;//(D.f[ dPMM ])[kbse ] = mfacc;// - c1over216; (D.f[ dPMM ])[kbs ] + (D.f[dMPP])[kw] = mfcaa;//(D.f[ dMPP ])[ktnw ] = mfcaa;// - c1over216; (D.f[ dMPP ])[kw ] + (D.f[dMMP])[ksw] = mfcca;//(D.f[ dMMP ])[ktsw ] = mfcca;// - c1over216; (D.f[ dMMP ])[ksw ] + (D.f[dMPM])[kbw] = mfcac;//(D.f[ dMPM ])[kbnw ] = mfcac;// - c1over216; (D.f[ dMPM ])[kbw ] + (D.f[dMMM])[kbsw] = mfccc;//(D.f[ dMMM ])[kbsw ] = mfccc;// - c1over216; (D.f[ dMMM ])[kbsw] //////////////////////////////////////////////////////////////////////////////////// } } diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Incompressible/FluidFlow/C06/CascadeIncompSP27_Device.cuh b/src/gpu/core/Kernel/Incompressible/NavierStokes/C06/CascadeIncompSP27_Device.cuh similarity index 100% rename from src/gpu/VirtualFluids_GPU/Kernel/Incompressible/FluidFlow/C06/CascadeIncompSP27_Device.cuh rename to src/gpu/core/Kernel/Incompressible/NavierStokes/C06/CascadeIncompSP27_Device.cuh diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Incompressible/FluidFlow/K15/K15IncompressibleNavierStokes.cu b/src/gpu/core/Kernel/Incompressible/NavierStokes/K15/K15IncompressibleNavierStokes.cu similarity index 100% rename from src/gpu/VirtualFluids_GPU/Kernel/Incompressible/FluidFlow/K15/K15IncompressibleNavierStokes.cu rename to src/gpu/core/Kernel/Incompressible/NavierStokes/K15/K15IncompressibleNavierStokes.cu diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Incompressible/FluidFlow/K15/K15IncompressibleNavierStokes.h b/src/gpu/core/Kernel/Incompressible/NavierStokes/K15/K15IncompressibleNavierStokes.h similarity index 100% rename from src/gpu/VirtualFluids_GPU/Kernel/Incompressible/FluidFlow/K15/K15IncompressibleNavierStokes.h rename to src/gpu/core/Kernel/Incompressible/NavierStokes/K15/K15IncompressibleNavierStokes.h diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Incompressible/FluidFlow/K15/K15IncompressibleNavierStokesIsoCheck.cu b/src/gpu/core/Kernel/Incompressible/NavierStokes/K15/K15IncompressibleNavierStokesIsoCheck.cu similarity index 100% rename from src/gpu/VirtualFluids_GPU/Kernel/Incompressible/FluidFlow/K15/K15IncompressibleNavierStokesIsoCheck.cu rename to src/gpu/core/Kernel/Incompressible/NavierStokes/K15/K15IncompressibleNavierStokesIsoCheck.cu diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Incompressible/FluidFlow/K15/K15IncompressibleNavierStokesIsoCheck.h b/src/gpu/core/Kernel/Incompressible/NavierStokes/K15/K15IncompressibleNavierStokesIsoCheck.h similarity index 100% rename from src/gpu/VirtualFluids_GPU/Kernel/Incompressible/FluidFlow/K15/K15IncompressibleNavierStokesIsoCheck.h rename to src/gpu/core/Kernel/Incompressible/NavierStokes/K15/K15IncompressibleNavierStokesIsoCheck.h diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Incompressible/FluidFlow/K15/K15IncompressibleNavierStokesIsoCheck_Device.cu b/src/gpu/core/Kernel/Incompressible/NavierStokes/K15/K15IncompressibleNavierStokesIsoCheck_Device.cu similarity index 82% rename from src/gpu/VirtualFluids_GPU/Kernel/Incompressible/FluidFlow/K15/K15IncompressibleNavierStokesIsoCheck_Device.cu rename to src/gpu/core/Kernel/Incompressible/NavierStokes/K15/K15IncompressibleNavierStokesIsoCheck_Device.cu index 6c91d9bfc4cf2c39b812a493986da29b45165407..dd404227d1cdc1e0ce0903f3ad5b2da3a5943635 100644 --- a/src/gpu/VirtualFluids_GPU/Kernel/Incompressible/FluidFlow/K15/K15IncompressibleNavierStokesIsoCheck_Device.cu +++ b/src/gpu/core/Kernel/Incompressible/NavierStokes/K15/K15IncompressibleNavierStokesIsoCheck_Device.cu @@ -41,63 +41,63 @@ __global__ void K15IncompressibleNavierStokesIsoCheck_Device( Distributions27 D; if (EvenOrOdd == true) { - D.f[DIR_P00] = &DDStart[DIR_P00 * size_Mat]; - D.f[DIR_M00] = &DDStart[DIR_M00 * size_Mat]; - D.f[DIR_0P0] = &DDStart[DIR_0P0 * size_Mat]; - D.f[DIR_0M0] = &DDStart[DIR_0M0 * size_Mat]; - D.f[DIR_00P] = &DDStart[DIR_00P * size_Mat]; - D.f[DIR_00M] = &DDStart[DIR_00M * size_Mat]; - D.f[DIR_PP0] = &DDStart[DIR_PP0 * size_Mat]; - D.f[DIR_MM0] = &DDStart[DIR_MM0 * size_Mat]; - D.f[DIR_PM0] = &DDStart[DIR_PM0 * size_Mat]; - D.f[DIR_MP0] = &DDStart[DIR_MP0 * size_Mat]; - D.f[DIR_P0P] = &DDStart[DIR_P0P * size_Mat]; - D.f[DIR_M0M] = &DDStart[DIR_M0M * size_Mat]; - D.f[DIR_P0M] = &DDStart[DIR_P0M * size_Mat]; - D.f[DIR_M0P] = &DDStart[DIR_M0P * size_Mat]; - D.f[DIR_0PP] = &DDStart[DIR_0PP * size_Mat]; - D.f[DIR_0MM] = &DDStart[DIR_0MM * size_Mat]; - D.f[DIR_0PM] = &DDStart[DIR_0PM * size_Mat]; - D.f[DIR_0MP] = &DDStart[DIR_0MP * size_Mat]; - D.f[DIR_000] = &DDStart[DIR_000 * size_Mat]; - D.f[DIR_PPP] = &DDStart[DIR_PPP * size_Mat]; - D.f[DIR_MMP] = &DDStart[DIR_MMP * size_Mat]; - D.f[DIR_PMP] = &DDStart[DIR_PMP * size_Mat]; - D.f[DIR_MPP] = &DDStart[DIR_MPP * size_Mat]; - D.f[DIR_PPM] = &DDStart[DIR_PPM * size_Mat]; - D.f[DIR_MMM] = &DDStart[DIR_MMM * size_Mat]; - D.f[DIR_PMM] = &DDStart[DIR_PMM * size_Mat]; - D.f[DIR_MPM] = &DDStart[DIR_MPM * size_Mat]; + D.f[dP00] = &DDStart[dP00 * size_Mat]; + D.f[dM00] = &DDStart[dM00 * size_Mat]; + D.f[d0P0] = &DDStart[d0P0 * size_Mat]; + D.f[d0M0] = &DDStart[d0M0 * size_Mat]; + D.f[d00P] = &DDStart[d00P * size_Mat]; + D.f[d00M] = &DDStart[d00M * size_Mat]; + D.f[dPP0] = &DDStart[dPP0 * size_Mat]; + D.f[dMM0] = &DDStart[dMM0 * size_Mat]; + D.f[dPM0] = &DDStart[dPM0 * size_Mat]; + D.f[dMP0] = &DDStart[dMP0 * size_Mat]; + D.f[dP0P] = &DDStart[dP0P * size_Mat]; + D.f[dM0M] = &DDStart[dM0M * size_Mat]; + D.f[dP0M] = &DDStart[dP0M * size_Mat]; + D.f[dM0P] = &DDStart[dM0P * size_Mat]; + D.f[d0PP] = &DDStart[d0PP * size_Mat]; + D.f[d0MM] = &DDStart[d0MM * size_Mat]; + D.f[d0PM] = &DDStart[d0PM * size_Mat]; + D.f[d0MP] = &DDStart[d0MP * size_Mat]; + D.f[d000] = &DDStart[d000 * size_Mat]; + D.f[dPPP] = &DDStart[dPPP * size_Mat]; + D.f[dMMP] = &DDStart[dMMP * size_Mat]; + D.f[dPMP] = &DDStart[dPMP * size_Mat]; + D.f[dMPP] = &DDStart[dMPP * size_Mat]; + D.f[dPPM] = &DDStart[dPPM * size_Mat]; + D.f[dMMM] = &DDStart[dMMM * size_Mat]; + D.f[dPMM] = &DDStart[dPMM * size_Mat]; + D.f[dMPM] = &DDStart[dMPM * size_Mat]; } else { - D.f[DIR_M00] = &DDStart[DIR_P00 * size_Mat]; - D.f[DIR_P00] = &DDStart[DIR_M00 * size_Mat]; - D.f[DIR_0M0] = &DDStart[DIR_0P0 * size_Mat]; - D.f[DIR_0P0] = &DDStart[DIR_0M0 * size_Mat]; - D.f[DIR_00M] = &DDStart[DIR_00P * size_Mat]; - D.f[DIR_00P] = &DDStart[DIR_00M * size_Mat]; - D.f[DIR_MM0] = &DDStart[DIR_PP0 * size_Mat]; - D.f[DIR_PP0] = &DDStart[DIR_MM0 * size_Mat]; - D.f[DIR_MP0] = &DDStart[DIR_PM0 * size_Mat]; - D.f[DIR_PM0] = &DDStart[DIR_MP0 * size_Mat]; - D.f[DIR_M0M] = &DDStart[DIR_P0P * size_Mat]; - D.f[DIR_P0P] = &DDStart[DIR_M0M * size_Mat]; - D.f[DIR_M0P] = &DDStart[DIR_P0M * size_Mat]; - D.f[DIR_P0M] = &DDStart[DIR_M0P * size_Mat]; - D.f[DIR_0MM] = &DDStart[DIR_0PP * size_Mat]; - D.f[DIR_0PP] = &DDStart[DIR_0MM * size_Mat]; - D.f[DIR_0MP] = &DDStart[DIR_0PM * size_Mat]; - D.f[DIR_0PM] = &DDStart[DIR_0MP * size_Mat]; - D.f[DIR_000] = &DDStart[DIR_000 * size_Mat]; - D.f[DIR_MMM] = &DDStart[DIR_PPP * size_Mat]; - D.f[DIR_PPM] = &DDStart[DIR_MMP * size_Mat]; - D.f[DIR_MPM] = &DDStart[DIR_PMP * size_Mat]; - D.f[DIR_PMM] = &DDStart[DIR_MPP * size_Mat]; - D.f[DIR_MMP] = &DDStart[DIR_PPM * size_Mat]; - D.f[DIR_PPP] = &DDStart[DIR_MMM * size_Mat]; - D.f[DIR_MPP] = &DDStart[DIR_PMM * size_Mat]; - D.f[DIR_PMP] = &DDStart[DIR_MPM * size_Mat]; + D.f[dM00] = &DDStart[dP00 * size_Mat]; + D.f[dP00] = &DDStart[dM00 * size_Mat]; + D.f[d0M0] = &DDStart[d0P0 * size_Mat]; + D.f[d0P0] = &DDStart[d0M0 * size_Mat]; + D.f[d00M] = &DDStart[d00P * size_Mat]; + D.f[d00P] = &DDStart[d00M * size_Mat]; + D.f[dMM0] = &DDStart[dPP0 * size_Mat]; + D.f[dPP0] = &DDStart[dMM0 * size_Mat]; + D.f[dMP0] = &DDStart[dPM0 * size_Mat]; + D.f[dPM0] = &DDStart[dMP0 * size_Mat]; + D.f[dM0M] = &DDStart[dP0P * size_Mat]; + D.f[dP0P] = &DDStart[dM0M * size_Mat]; + D.f[dM0P] = &DDStart[dP0M * size_Mat]; + D.f[dP0M] = &DDStart[dM0P * size_Mat]; + D.f[d0MM] = &DDStart[d0PP * size_Mat]; + D.f[d0PP] = &DDStart[d0MM * size_Mat]; + D.f[d0MP] = &DDStart[d0PM * size_Mat]; + D.f[d0PM] = &DDStart[d0MP * size_Mat]; + D.f[d000] = &DDStart[d000 * size_Mat]; + D.f[dMMM] = &DDStart[dPPP * size_Mat]; + D.f[dPPM] = &DDStart[dMMP * size_Mat]; + D.f[dMPM] = &DDStart[dPMP * size_Mat]; + D.f[dPMM] = &DDStart[dMPP * size_Mat]; + D.f[dMMP] = &DDStart[dPPM * size_Mat]; + D.f[dPPP] = &DDStart[dMMM * size_Mat]; + D.f[dMPP] = &DDStart[dPMM * size_Mat]; + D.f[dPMP] = &DDStart[dMPM * size_Mat]; } //////////////////////////////////////////////////////////////////////////////// @@ -130,33 +130,33 @@ __global__ void K15IncompressibleNavierStokesIsoCheck_Device( //unsigned int ktne = k; unsigned int kbsw = neighborZ[ksw]; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real mfcbb = (D.f[DIR_P00])[k];//[ke ];// + c2over27 ;(D.f[DIR_P00])[k ];//ke - real mfabb = (D.f[DIR_M00])[kw];//[kw ];// + c2over27 ;(D.f[DIR_M00])[kw ]; - real mfbcb = (D.f[DIR_0P0])[k];//[kn ];// + c2over27 ;(D.f[DIR_0P0])[k ];//kn - real mfbab = (D.f[DIR_0M0])[ks];//[ks ];// + c2over27 ;(D.f[DIR_0M0])[ks ]; - real mfbbc = (D.f[DIR_00P])[k];//[kt ];// + c2over27 ;(D.f[DIR_00P])[k ];//kt - real mfbba = (D.f[DIR_00M])[kb];//[kb ];// + c2over27 ;(D.f[DIR_00M])[kb ]; - real mfccb = (D.f[DIR_PP0])[k];//[kne ];// + c1over54 ;(D.f[DIR_PP0])[k ];//kne - real mfaab = (D.f[DIR_MM0])[ksw];//[ksw ];// + c1over54 ;(D.f[DIR_MM0])[ksw]; - real mfcab = (D.f[DIR_PM0])[ks];//[kse ];// + c1over54 ;(D.f[DIR_PM0])[ks ];//kse - real mfacb = (D.f[DIR_MP0])[kw];//[knw ];// + c1over54 ;(D.f[DIR_MP0])[kw ];//knw - real mfcbc = (D.f[DIR_P0P])[k];//[kte ];// + c1over54 ;(D.f[DIR_P0P])[k ];//kte - real mfaba = (D.f[DIR_M0M])[kbw];//[kbw ];// + c1over54 ;(D.f[DIR_M0M])[kbw]; - real mfcba = (D.f[DIR_P0M])[kb];//[kbe ];// + c1over54 ;(D.f[DIR_P0M])[kb ];//kbe - real mfabc = (D.f[DIR_M0P])[kw];//[ktw ];// + c1over54 ;(D.f[DIR_M0P])[kw ];//ktw - real mfbcc = (D.f[DIR_0PP])[k];//[ktn ];// + c1over54 ;(D.f[DIR_0PP])[k ];//ktn - real mfbaa = (D.f[DIR_0MM])[kbs];//[kbs ];// + c1over54 ;(D.f[DIR_0MM])[kbs]; - real mfbca = (D.f[DIR_0PM])[kb];//[kbn ];// + c1over54 ;(D.f[DIR_0PM])[kb ];//kbn - real mfbac = (D.f[DIR_0MP])[ks];//[kts ];// + c1over54 ;(D.f[DIR_0MP])[ks ];//kts - real mfbbb = (D.f[DIR_000])[k];//[kzero];// + c8over27 ;(D.f[DIR_000])[k ];//kzero - real mfccc = (D.f[DIR_PPP])[k];//[ktne ];// + c1over216;(D.f[DIR_PPP])[k ];//ktne - real mfaac = (D.f[DIR_MMP])[ksw];//[ktsw ];// + c1over216;(D.f[DIR_MMP])[ksw];//ktsw - real mfcac = (D.f[DIR_PMP])[ks];//[ktse ];// + c1over216;(D.f[DIR_PMP])[ks ];//ktse - real mfacc = (D.f[DIR_MPP])[kw];//[ktnw ];// + c1over216;(D.f[DIR_MPP])[kw ];//ktnw - real mfcca = (D.f[DIR_PPM])[kb];//[kbne ];// + c1over216;(D.f[DIR_PPM])[kb ];//kbne - real mfaaa = (D.f[DIR_MMM])[kbsw];//[kbsw ];// + c1over216;(D.f[DIR_MMM])[kbsw]; - real mfcaa = (D.f[DIR_PMM])[kbs];//[kbse ];// + c1over216;(D.f[DIR_PMM])[kbs];//kbse - real mfaca = (D.f[DIR_MPM])[kbw];//[kbnw ];// + c1over216;(D.f[DIR_MPM])[kbw];//kbnw + real mfcbb = (D.f[dP00])[k];//[ke ];// + c2over27 ;(D.f[dP00])[k ];//ke + real mfabb = (D.f[dM00])[kw];//[kw ];// + c2over27 ;(D.f[dM00])[kw ]; + real mfbcb = (D.f[d0P0])[k];//[kn ];// + c2over27 ;(D.f[d0P0])[k ];//kn + real mfbab = (D.f[d0M0])[ks];//[ks ];// + c2over27 ;(D.f[d0M0])[ks ]; + real mfbbc = (D.f[d00P])[k];//[kt ];// + c2over27 ;(D.f[d00P])[k ];//kt + real mfbba = (D.f[d00M])[kb];//[kb ];// + c2over27 ;(D.f[d00M])[kb ]; + real mfccb = (D.f[dPP0])[k];//[kne ];// + c1over54 ;(D.f[dPP0])[k ];//kne + real mfaab = (D.f[dMM0])[ksw];//[ksw ];// + c1over54 ;(D.f[dMM0])[ksw]; + real mfcab = (D.f[dPM0])[ks];//[kse ];// + c1over54 ;(D.f[dPM0])[ks ];//kse + real mfacb = (D.f[dMP0])[kw];//[knw ];// + c1over54 ;(D.f[dMP0])[kw ];//knw + real mfcbc = (D.f[dP0P])[k];//[kte ];// + c1over54 ;(D.f[dP0P])[k ];//kte + real mfaba = (D.f[dM0M])[kbw];//[kbw ];// + c1over54 ;(D.f[dM0M])[kbw]; + real mfcba = (D.f[dP0M])[kb];//[kbe ];// + c1over54 ;(D.f[dP0M])[kb ];//kbe + real mfabc = (D.f[dM0P])[kw];//[ktw ];// + c1over54 ;(D.f[dM0P])[kw ];//ktw + real mfbcc = (D.f[d0PP])[k];//[ktn ];// + c1over54 ;(D.f[d0PP])[k ];//ktn + real mfbaa = (D.f[d0MM])[kbs];//[kbs ];// + c1over54 ;(D.f[d0MM])[kbs]; + real mfbca = (D.f[d0PM])[kb];//[kbn ];// + c1over54 ;(D.f[d0PM])[kb ];//kbn + real mfbac = (D.f[d0MP])[ks];//[kts ];// + c1over54 ;(D.f[d0MP])[ks ];//kts + real mfbbb = (D.f[d000])[k];//[kzero];// + c8over27 ;(D.f[d000])[k ];//kzero + real mfccc = (D.f[dPPP])[k];//[ktne ];// + c1over216;(D.f[dPPP])[k ];//ktne + real mfaac = (D.f[dMMP])[ksw];//[ktsw ];// + c1over216;(D.f[dMMP])[ksw];//ktsw + real mfcac = (D.f[dPMP])[ks];//[ktse ];// + c1over216;(D.f[dPMP])[ks ];//ktse + real mfacc = (D.f[dMPP])[kw];//[ktnw ];// + c1over216;(D.f[dMPP])[kw ];//ktnw + real mfcca = (D.f[dPPM])[kb];//[kbne ];// + c1over216;(D.f[dPPM])[kb ];//kbne + real mfaaa = (D.f[dMMM])[kbsw];//[kbsw ];// + c1over216;(D.f[dMMM])[kbsw]; + real mfcaa = (D.f[dPMM])[kbs];//[kbse ];// + c1over216;(D.f[dPMM])[kbs];//kbse + real mfaca = (D.f[dMPM])[kbw];//[kbnw ];// + c1over216;(D.f[dMPM])[kbw];//kbnw //////////////////////////////////////////////////////////////////////////////////// //slow //real oMdrho = one - ((((mfccc+mfaaa) + (mfaca+mfcac)) + ((mfacc+mfcaa) + (mfaac+mfcca))) + @@ -974,33 +974,33 @@ __global__ void K15IncompressibleNavierStokesIsoCheck_Device( //////////////////////////////////////////////////////////////////////////////////// - (D.f[DIR_P00])[k] = mfabb;//(D.f[ DIR_P00 ])[ke ] = mfabb;// - c2over27 ; (D.f[ DIR_P00 ])[k ] - (D.f[DIR_M00])[kw] = mfcbb;//(D.f[ DIR_M00 ])[kw ] = mfcbb;// - c2over27 ; (D.f[ DIR_M00 ])[kw ] - (D.f[DIR_0P0])[k] = mfbab;//(D.f[ DIR_0P0 ])[kn ] = mfbab;// - c2over27 ; (D.f[ DIR_0P0 ])[k ] - (D.f[DIR_0M0])[ks] = mfbcb;//(D.f[ DIR_0M0 ])[ks ] = mfbcb;// - c2over27 ; (D.f[ DIR_0M0 ])[ks ] - (D.f[DIR_00P])[k] = mfbba;//(D.f[ DIR_00P ])[kt ] = mfbba;// - c2over27 ; (D.f[ DIR_00P ])[k ] - (D.f[DIR_00M])[kb] = mfbbc;//(D.f[ DIR_00M ])[kb ] = mfbbc;// - c2over27 ; (D.f[ DIR_00M ])[kb ] - (D.f[DIR_PP0])[k] = mfaab;//(D.f[ DIR_PP0 ])[kne ] = mfaab;// - c1over54 ; (D.f[ DIR_PP0 ])[k ] - (D.f[DIR_MM0])[ksw] = mfccb;//(D.f[ DIR_MM0 ])[ksw ] = mfccb;// - c1over54 ; (D.f[ DIR_MM0 ])[ksw ] - (D.f[DIR_PM0])[ks] = mfacb;//(D.f[ DIR_PM0 ])[kse ] = mfacb;// - c1over54 ; (D.f[ DIR_PM0 ])[ks ] - (D.f[DIR_MP0])[kw] = mfcab;//(D.f[ DIR_MP0 ])[knw ] = mfcab;// - c1over54 ; (D.f[ DIR_MP0 ])[kw ] - (D.f[DIR_P0P])[k] = mfaba;//(D.f[ DIR_P0P ])[kte ] = mfaba;// - c1over54 ; (D.f[ DIR_P0P ])[k ] - (D.f[DIR_M0M])[kbw] = mfcbc;//(D.f[ DIR_M0M ])[kbw ] = mfcbc;// - c1over54 ; (D.f[ DIR_M0M ])[kbw ] - (D.f[DIR_P0M])[kb] = mfabc;//(D.f[ DIR_P0M ])[kbe ] = mfabc;// - c1over54 ; (D.f[ DIR_P0M ])[kb ] - (D.f[DIR_M0P])[kw] = mfcba;//(D.f[ DIR_M0P ])[ktw ] = mfcba;// - c1over54 ; (D.f[ DIR_M0P ])[kw ] - (D.f[DIR_0PP])[k] = mfbaa;//(D.f[ DIR_0PP ])[ktn ] = mfbaa;// - c1over54 ; (D.f[ DIR_0PP ])[k ] - (D.f[DIR_0MM])[kbs] = mfbcc;//(D.f[ DIR_0MM ])[kbs ] = mfbcc;// - c1over54 ; (D.f[ DIR_0MM ])[kbs ] - (D.f[DIR_0PM])[kb] = mfbac;//(D.f[ DIR_0PM ])[kbn ] = mfbac;// - c1over54 ; (D.f[ DIR_0PM ])[kb ] - (D.f[DIR_0MP])[ks] = mfbca;//(D.f[ DIR_0MP ])[kts ] = mfbca;// - c1over54 ; (D.f[ DIR_0MP ])[ks ] - (D.f[DIR_000])[k] = mfbbb;//(D.f[ DIR_000])[kzero] = mfbbb;// - c8over27 ; (D.f[ DIR_000])[k ] - (D.f[DIR_PPP])[k] = mfaaa;//(D.f[ DIR_PPP ])[ktne ] = mfaaa;// - c1over216; (D.f[ DIR_PPP ])[k ] - (D.f[DIR_PMP])[ks] = mfaca;//(D.f[ DIR_PMP ])[ktse ] = mfaca;// - c1over216; (D.f[ DIR_PMP ])[ks ] - (D.f[DIR_PPM])[kb] = mfaac;//(D.f[ DIR_PPM ])[kbne ] = mfaac;// - c1over216; (D.f[ DIR_PPM ])[kb ] - (D.f[DIR_PMM])[kbs] = mfacc;//(D.f[ DIR_PMM ])[kbse ] = mfacc;// - c1over216; (D.f[ DIR_PMM ])[kbs ] - (D.f[DIR_MPP])[kw] = mfcaa;//(D.f[ DIR_MPP ])[ktnw ] = mfcaa;// - c1over216; (D.f[ DIR_MPP ])[kw ] - (D.f[DIR_MMP])[ksw] = mfcca;//(D.f[ DIR_MMP ])[ktsw ] = mfcca;// - c1over216; (D.f[ DIR_MMP ])[ksw ] - (D.f[DIR_MPM])[kbw] = mfcac;//(D.f[ DIR_MPM ])[kbnw ] = mfcac;// - c1over216; (D.f[ DIR_MPM ])[kbw ] - (D.f[DIR_MMM])[kbsw] = mfccc;//(D.f[ DIR_MMM ])[kbsw ] = mfccc;// - c1over216; (D.f[ DIR_MMM ])[kbsw] + (D.f[dP00])[k] = mfabb;//(D.f[ dP00 ])[ke ] = mfabb;// - c2over27 ; (D.f[ dP00 ])[k ] + (D.f[dM00])[kw] = mfcbb;//(D.f[ dM00 ])[kw ] = mfcbb;// - c2over27 ; (D.f[ dM00 ])[kw ] + (D.f[d0P0])[k] = mfbab;//(D.f[ d0P0 ])[kn ] = mfbab;// - c2over27 ; (D.f[ d0P0 ])[k ] + (D.f[d0M0])[ks] = mfbcb;//(D.f[ d0M0 ])[ks ] = mfbcb;// - c2over27 ; (D.f[ d0M0 ])[ks ] + (D.f[d00P])[k] = mfbba;//(D.f[ d00P ])[kt ] = mfbba;// - c2over27 ; (D.f[ d00P ])[k ] + (D.f[d00M])[kb] = mfbbc;//(D.f[ d00M ])[kb ] = mfbbc;// - c2over27 ; (D.f[ d00M ])[kb ] + (D.f[dPP0])[k] = mfaab;//(D.f[ dPP0 ])[kne ] = mfaab;// - c1over54 ; (D.f[ dPP0 ])[k ] + (D.f[dMM0])[ksw] = mfccb;//(D.f[ dMM0 ])[ksw ] = mfccb;// - c1over54 ; (D.f[ dMM0 ])[ksw ] + (D.f[dPM0])[ks] = mfacb;//(D.f[ dPM0 ])[kse ] = mfacb;// - c1over54 ; (D.f[ dPM0 ])[ks ] + (D.f[dMP0])[kw] = mfcab;//(D.f[ dMP0 ])[knw ] = mfcab;// - c1over54 ; (D.f[ dMP0 ])[kw ] + (D.f[dP0P])[k] = mfaba;//(D.f[ dP0P ])[kte ] = mfaba;// - c1over54 ; (D.f[ dP0P ])[k ] + (D.f[dM0M])[kbw] = mfcbc;//(D.f[ dM0M ])[kbw ] = mfcbc;// - c1over54 ; (D.f[ dM0M ])[kbw ] + (D.f[dP0M])[kb] = mfabc;//(D.f[ dP0M ])[kbe ] = mfabc;// - c1over54 ; (D.f[ dP0M ])[kb ] + (D.f[dM0P])[kw] = mfcba;//(D.f[ dM0P ])[ktw ] = mfcba;// - c1over54 ; (D.f[ dM0P ])[kw ] + (D.f[d0PP])[k] = mfbaa;//(D.f[ d0PP ])[ktn ] = mfbaa;// - c1over54 ; (D.f[ d0PP ])[k ] + (D.f[d0MM])[kbs] = mfbcc;//(D.f[ d0MM ])[kbs ] = mfbcc;// - c1over54 ; (D.f[ d0MM ])[kbs ] + (D.f[d0PM])[kb] = mfbac;//(D.f[ d0PM ])[kbn ] = mfbac;// - c1over54 ; (D.f[ d0PM ])[kb ] + (D.f[d0MP])[ks] = mfbca;//(D.f[ d0MP ])[kts ] = mfbca;// - c1over54 ; (D.f[ d0MP ])[ks ] + (D.f[d000])[k] = mfbbb;//(D.f[ d000])[kzero] = mfbbb;// - c8over27 ; (D.f[ d000])[k ] + (D.f[dPPP])[k] = mfaaa;//(D.f[ dPPP ])[ktne ] = mfaaa;// - c1over216; (D.f[ dPPP ])[k ] + (D.f[dPMP])[ks] = mfaca;//(D.f[ dPMP ])[ktse ] = mfaca;// - c1over216; (D.f[ dPMP ])[ks ] + (D.f[dPPM])[kb] = mfaac;//(D.f[ dPPM ])[kbne ] = mfaac;// - c1over216; (D.f[ dPPM ])[kb ] + (D.f[dPMM])[kbs] = mfacc;//(D.f[ dPMM ])[kbse ] = mfacc;// - c1over216; (D.f[ dPMM ])[kbs ] + (D.f[dMPP])[kw] = mfcaa;//(D.f[ dMPP ])[ktnw ] = mfcaa;// - c1over216; (D.f[ dMPP ])[kw ] + (D.f[dMMP])[ksw] = mfcca;//(D.f[ dMMP ])[ktsw ] = mfcca;// - c1over216; (D.f[ dMMP ])[ksw ] + (D.f[dMPM])[kbw] = mfcac;//(D.f[ dMPM ])[kbnw ] = mfcac;// - c1over216; (D.f[ dMPM ])[kbw ] + (D.f[dMMM])[kbsw] = mfccc;//(D.f[ dMMM ])[kbsw ] = mfccc;// - c1over216; (D.f[ dMMM ])[kbsw] //////////////////////////////////////////////////////////////////////////////////// } } diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Incompressible/FluidFlow/K15/K15IncompressibleNavierStokesIsoCheck_Device.cuh b/src/gpu/core/Kernel/Incompressible/NavierStokes/K15/K15IncompressibleNavierStokesIsoCheck_Device.cuh similarity index 100% rename from src/gpu/VirtualFluids_GPU/Kernel/Incompressible/FluidFlow/K15/K15IncompressibleNavierStokesIsoCheck_Device.cuh rename to src/gpu/core/Kernel/Incompressible/NavierStokes/K15/K15IncompressibleNavierStokesIsoCheck_Device.cuh diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Incompressible/FluidFlow/K15/K15IncompressibleNavierStokesRotatingVelocityField.cu b/src/gpu/core/Kernel/Incompressible/NavierStokes/K15/K15IncompressibleNavierStokesRotatingVelocityField.cu similarity index 100% rename from src/gpu/VirtualFluids_GPU/Kernel/Incompressible/FluidFlow/K15/K15IncompressibleNavierStokesRotatingVelocityField.cu rename to src/gpu/core/Kernel/Incompressible/NavierStokes/K15/K15IncompressibleNavierStokesRotatingVelocityField.cu diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Incompressible/FluidFlow/K15/K15IncompressibleNavierStokesRotatingVelocityField.h b/src/gpu/core/Kernel/Incompressible/NavierStokes/K15/K15IncompressibleNavierStokesRotatingVelocityField.h similarity index 100% rename from src/gpu/VirtualFluids_GPU/Kernel/Incompressible/FluidFlow/K15/K15IncompressibleNavierStokesRotatingVelocityField.h rename to src/gpu/core/Kernel/Incompressible/NavierStokes/K15/K15IncompressibleNavierStokesRotatingVelocityField.h diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Incompressible/FluidFlow/K15/K15IncompressibleNavierStokesRotatingVelocityField_Device.cu b/src/gpu/core/Kernel/Incompressible/NavierStokes/K15/K15IncompressibleNavierStokesRotatingVelocityField_Device.cu similarity index 85% rename from src/gpu/VirtualFluids_GPU/Kernel/Incompressible/FluidFlow/K15/K15IncompressibleNavierStokesRotatingVelocityField_Device.cu rename to src/gpu/core/Kernel/Incompressible/NavierStokes/K15/K15IncompressibleNavierStokesRotatingVelocityField_Device.cu index 082a5dc3882a498838d174e0c7b24ae134dca622..7694553b7885449fc965bfbf3721e986313d3d60 100644 --- a/src/gpu/VirtualFluids_GPU/Kernel/Incompressible/FluidFlow/K15/K15IncompressibleNavierStokesRotatingVelocityField_Device.cu +++ b/src/gpu/core/Kernel/Incompressible/NavierStokes/K15/K15IncompressibleNavierStokesRotatingVelocityField_Device.cu @@ -43,63 +43,63 @@ __global__ void K15IncompressibleNavierStokesRotatingVelocityField_Device( Distributions27 D; if (EvenOrOdd == true) { - D.f[DIR_P00] = &DDStart[DIR_P00 * size_Mat]; - D.f[DIR_M00] = &DDStart[DIR_M00 * size_Mat]; - D.f[DIR_0P0] = &DDStart[DIR_0P0 * size_Mat]; - D.f[DIR_0M0] = &DDStart[DIR_0M0 * size_Mat]; - D.f[DIR_00P] = &DDStart[DIR_00P * size_Mat]; - D.f[DIR_00M] = &DDStart[DIR_00M * size_Mat]; - D.f[DIR_PP0] = &DDStart[DIR_PP0 * size_Mat]; - D.f[DIR_MM0] = &DDStart[DIR_MM0 * size_Mat]; - D.f[DIR_PM0] = &DDStart[DIR_PM0 * size_Mat]; - D.f[DIR_MP0] = &DDStart[DIR_MP0 * size_Mat]; - D.f[DIR_P0P] = &DDStart[DIR_P0P * size_Mat]; - D.f[DIR_M0M] = &DDStart[DIR_M0M * size_Mat]; - D.f[DIR_P0M] = &DDStart[DIR_P0M * size_Mat]; - D.f[DIR_M0P] = &DDStart[DIR_M0P * size_Mat]; - D.f[DIR_0PP] = &DDStart[DIR_0PP * size_Mat]; - D.f[DIR_0MM] = &DDStart[DIR_0MM * size_Mat]; - D.f[DIR_0PM] = &DDStart[DIR_0PM * size_Mat]; - D.f[DIR_0MP] = &DDStart[DIR_0MP * size_Mat]; - D.f[DIR_000] = &DDStart[DIR_000 * size_Mat]; - D.f[DIR_PPP] = &DDStart[DIR_PPP * size_Mat]; - D.f[DIR_MMP] = &DDStart[DIR_MMP * size_Mat]; - D.f[DIR_PMP] = &DDStart[DIR_PMP * size_Mat]; - D.f[DIR_MPP] = &DDStart[DIR_MPP * size_Mat]; - D.f[DIR_PPM] = &DDStart[DIR_PPM * size_Mat]; - D.f[DIR_MMM] = &DDStart[DIR_MMM * size_Mat]; - D.f[DIR_PMM] = &DDStart[DIR_PMM * size_Mat]; - D.f[DIR_MPM] = &DDStart[DIR_MPM * size_Mat]; + D.f[dP00] = &DDStart[dP00 * size_Mat]; + D.f[dM00] = &DDStart[dM00 * size_Mat]; + D.f[d0P0] = &DDStart[d0P0 * size_Mat]; + D.f[d0M0] = &DDStart[d0M0 * size_Mat]; + D.f[d00P] = &DDStart[d00P * size_Mat]; + D.f[d00M] = &DDStart[d00M * size_Mat]; + D.f[dPP0] = &DDStart[dPP0 * size_Mat]; + D.f[dMM0] = &DDStart[dMM0 * size_Mat]; + D.f[dPM0] = &DDStart[dPM0 * size_Mat]; + D.f[dMP0] = &DDStart[dMP0 * size_Mat]; + D.f[dP0P] = &DDStart[dP0P * size_Mat]; + D.f[dM0M] = &DDStart[dM0M * size_Mat]; + D.f[dP0M] = &DDStart[dP0M * size_Mat]; + D.f[dM0P] = &DDStart[dM0P * size_Mat]; + D.f[d0PP] = &DDStart[d0PP * size_Mat]; + D.f[d0MM] = &DDStart[d0MM * size_Mat]; + D.f[d0PM] = &DDStart[d0PM * size_Mat]; + D.f[d0MP] = &DDStart[d0MP * size_Mat]; + D.f[d000] = &DDStart[d000 * size_Mat]; + D.f[dPPP] = &DDStart[dPPP * size_Mat]; + D.f[dMMP] = &DDStart[dMMP * size_Mat]; + D.f[dPMP] = &DDStart[dPMP * size_Mat]; + D.f[dMPP] = &DDStart[dMPP * size_Mat]; + D.f[dPPM] = &DDStart[dPPM * size_Mat]; + D.f[dMMM] = &DDStart[dMMM * size_Mat]; + D.f[dPMM] = &DDStart[dPMM * size_Mat]; + D.f[dMPM] = &DDStart[dMPM * size_Mat]; } else { - D.f[DIR_M00] = &DDStart[DIR_P00 * size_Mat]; - D.f[DIR_P00] = &DDStart[DIR_M00 * size_Mat]; - D.f[DIR_0M0] = &DDStart[DIR_0P0 * size_Mat]; - D.f[DIR_0P0] = &DDStart[DIR_0M0 * size_Mat]; - D.f[DIR_00M] = &DDStart[DIR_00P * size_Mat]; - D.f[DIR_00P] = &DDStart[DIR_00M * size_Mat]; - D.f[DIR_MM0] = &DDStart[DIR_PP0 * size_Mat]; - D.f[DIR_PP0] = &DDStart[DIR_MM0 * size_Mat]; - D.f[DIR_MP0] = &DDStart[DIR_PM0 * size_Mat]; - D.f[DIR_PM0] = &DDStart[DIR_MP0 * size_Mat]; - D.f[DIR_M0M] = &DDStart[DIR_P0P * size_Mat]; - D.f[DIR_P0P] = &DDStart[DIR_M0M * size_Mat]; - D.f[DIR_M0P] = &DDStart[DIR_P0M * size_Mat]; - D.f[DIR_P0M] = &DDStart[DIR_M0P * size_Mat]; - D.f[DIR_0MM] = &DDStart[DIR_0PP * size_Mat]; - D.f[DIR_0PP] = &DDStart[DIR_0MM * size_Mat]; - D.f[DIR_0MP] = &DDStart[DIR_0PM * size_Mat]; - D.f[DIR_0PM] = &DDStart[DIR_0MP * size_Mat]; - D.f[DIR_000] = &DDStart[DIR_000 * size_Mat]; - D.f[DIR_MMM] = &DDStart[DIR_PPP * size_Mat]; - D.f[DIR_PPM] = &DDStart[DIR_MMP * size_Mat]; - D.f[DIR_MPM] = &DDStart[DIR_PMP * size_Mat]; - D.f[DIR_PMM] = &DDStart[DIR_MPP * size_Mat]; - D.f[DIR_MMP] = &DDStart[DIR_PPM * size_Mat]; - D.f[DIR_PPP] = &DDStart[DIR_MMM * size_Mat]; - D.f[DIR_MPP] = &DDStart[DIR_PMM * size_Mat]; - D.f[DIR_PMP] = &DDStart[DIR_MPM * size_Mat]; + D.f[dM00] = &DDStart[dP00 * size_Mat]; + D.f[dP00] = &DDStart[dM00 * size_Mat]; + D.f[d0M0] = &DDStart[d0P0 * size_Mat]; + D.f[d0P0] = &DDStart[d0M0 * size_Mat]; + D.f[d00M] = &DDStart[d00P * size_Mat]; + D.f[d00P] = &DDStart[d00M * size_Mat]; + D.f[dMM0] = &DDStart[dPP0 * size_Mat]; + D.f[dPP0] = &DDStart[dMM0 * size_Mat]; + D.f[dMP0] = &DDStart[dPM0 * size_Mat]; + D.f[dPM0] = &DDStart[dMP0 * size_Mat]; + D.f[dM0M] = &DDStart[dP0P * size_Mat]; + D.f[dP0P] = &DDStart[dM0M * size_Mat]; + D.f[dM0P] = &DDStart[dP0M * size_Mat]; + D.f[dP0M] = &DDStart[dM0P * size_Mat]; + D.f[d0MM] = &DDStart[d0PP * size_Mat]; + D.f[d0PP] = &DDStart[d0MM * size_Mat]; + D.f[d0MP] = &DDStart[d0PM * size_Mat]; + D.f[d0PM] = &DDStart[d0MP * size_Mat]; + D.f[d000] = &DDStart[d000 * size_Mat]; + D.f[dMMM] = &DDStart[dPPP * size_Mat]; + D.f[dPPM] = &DDStart[dMMP * size_Mat]; + D.f[dMPM] = &DDStart[dPMP * size_Mat]; + D.f[dPMM] = &DDStart[dMPP * size_Mat]; + D.f[dMMP] = &DDStart[dPPM * size_Mat]; + D.f[dPPP] = &DDStart[dMMM * size_Mat]; + D.f[dMPP] = &DDStart[dPMM * size_Mat]; + D.f[dPMP] = &DDStart[dMPM * size_Mat]; } //////////////////////////////////////////////////////////////////////////////// @@ -160,33 +160,33 @@ __global__ void K15IncompressibleNavierStokesRotatingVelocityField_Device( //unsigned int ktne = k; //unsigned int kbsw = neighborZ[ksw]; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real mfcbb = (D.f[DIR_P00])[k];//[ke ];// + c2over27 ;(D.f[DIR_P00])[k ];//ke - real mfabb = (D.f[DIR_M00])[kw];//[kw ];// + c2over27 ;(D.f[DIR_M00])[kw ]; - real mfbcb = (D.f[DIR_0P0])[k];//[kn ];// + c2over27 ;(D.f[DIR_0P0])[k ];//kn - real mfbab = (D.f[DIR_0M0])[ks];//[ks ];// + c2over27 ;(D.f[DIR_0M0])[ks ]; - real mfbbc = (D.f[DIR_00P])[k];//[kt ];// + c2over27 ;(D.f[DIR_00P])[k ];//kt - real mfbba = (D.f[DIR_00M])[kb];//[kb ];// + c2over27 ;(D.f[DIR_00M])[kb ]; - real mfccb = (D.f[DIR_PP0])[k];//[kne ];// + c1over54 ;(D.f[DIR_PP0])[k ];//kne - real mfaab = (D.f[DIR_MM0])[ksw];//[ksw ];// + c1over54 ;(D.f[DIR_MM0])[ksw]; - real mfcab = (D.f[DIR_PM0])[ks];//[kse ];// + c1over54 ;(D.f[DIR_PM0])[ks ];//kse - real mfacb = (D.f[DIR_MP0])[kw];//[knw ];// + c1over54 ;(D.f[DIR_MP0])[kw ];//knw - real mfcbc = (D.f[DIR_P0P])[k];//[kte ];// + c1over54 ;(D.f[DIR_P0P])[k ];//kte - real mfaba = (D.f[DIR_M0M])[kbw];//[kbw ];// + c1over54 ;(D.f[DIR_M0M])[kbw]; - real mfcba = (D.f[DIR_P0M])[kb];//[kbe ];// + c1over54 ;(D.f[DIR_P0M])[kb ];//kbe - real mfabc = (D.f[DIR_M0P])[kw];//[ktw ];// + c1over54 ;(D.f[DIR_M0P])[kw ];//ktw - real mfbcc = (D.f[DIR_0PP])[k];//[ktn ];// + c1over54 ;(D.f[DIR_0PP])[k ];//ktn - real mfbaa = (D.f[DIR_0MM])[kbs];//[kbs ];// + c1over54 ;(D.f[DIR_0MM])[kbs]; - real mfbca = (D.f[DIR_0PM])[kb];//[kbn ];// + c1over54 ;(D.f[DIR_0PM])[kb ];//kbn - real mfbac = (D.f[DIR_0MP])[ks];//[kts ];// + c1over54 ;(D.f[DIR_0MP])[ks ];//kts - real mfbbb = (D.f[DIR_000])[k];//[kzero];// + c8over27 ;(D.f[DIR_000])[k ];//kzero - real mfccc = (D.f[DIR_PPP])[k];//[ktne ];// + c1over216;(D.f[DIR_PPP])[k ];//ktne - real mfaac = (D.f[DIR_MMP])[ksw];//[ktsw ];// + c1over216;(D.f[DIR_MMP])[ksw];//ktsw - real mfcac = (D.f[DIR_PMP])[ks];//[ktse ];// + c1over216;(D.f[DIR_PMP])[ks ];//ktse - real mfacc = (D.f[DIR_MPP])[kw];//[ktnw ];// + c1over216;(D.f[DIR_MPP])[kw ];//ktnw - real mfcca = (D.f[DIR_PPM])[kb];//[kbne ];// + c1over216;(D.f[DIR_PPM])[kb ];//kbne - real mfaaa = (D.f[DIR_MMM])[kbsw];//[kbsw ];// + c1over216;(D.f[DIR_MMM])[kbsw]; - real mfcaa = (D.f[DIR_PMM])[kbs];//[kbse ];// + c1over216;(D.f[DIR_PMM])[kbs];//kbse - real mfaca = (D.f[DIR_MPM])[kbw];//[kbnw ];// + c1over216;(D.f[DIR_MPM])[kbw];//kbnw + real mfcbb = (D.f[dP00])[k];//[ke ];// + c2over27 ;(D.f[dP00])[k ];//ke + real mfabb = (D.f[dM00])[kw];//[kw ];// + c2over27 ;(D.f[dM00])[kw ]; + real mfbcb = (D.f[d0P0])[k];//[kn ];// + c2over27 ;(D.f[d0P0])[k ];//kn + real mfbab = (D.f[d0M0])[ks];//[ks ];// + c2over27 ;(D.f[d0M0])[ks ]; + real mfbbc = (D.f[d00P])[k];//[kt ];// + c2over27 ;(D.f[d00P])[k ];//kt + real mfbba = (D.f[d00M])[kb];//[kb ];// + c2over27 ;(D.f[d00M])[kb ]; + real mfccb = (D.f[dPP0])[k];//[kne ];// + c1over54 ;(D.f[dPP0])[k ];//kne + real mfaab = (D.f[dMM0])[ksw];//[ksw ];// + c1over54 ;(D.f[dMM0])[ksw]; + real mfcab = (D.f[dPM0])[ks];//[kse ];// + c1over54 ;(D.f[dPM0])[ks ];//kse + real mfacb = (D.f[dMP0])[kw];//[knw ];// + c1over54 ;(D.f[dMP0])[kw ];//knw + real mfcbc = (D.f[dP0P])[k];//[kte ];// + c1over54 ;(D.f[dP0P])[k ];//kte + real mfaba = (D.f[dM0M])[kbw];//[kbw ];// + c1over54 ;(D.f[dM0M])[kbw]; + real mfcba = (D.f[dP0M])[kb];//[kbe ];// + c1over54 ;(D.f[dP0M])[kb ];//kbe + real mfabc = (D.f[dM0P])[kw];//[ktw ];// + c1over54 ;(D.f[dM0P])[kw ];//ktw + real mfbcc = (D.f[d0PP])[k];//[ktn ];// + c1over54 ;(D.f[d0PP])[k ];//ktn + real mfbaa = (D.f[d0MM])[kbs];//[kbs ];// + c1over54 ;(D.f[d0MM])[kbs]; + real mfbca = (D.f[d0PM])[kb];//[kbn ];// + c1over54 ;(D.f[d0PM])[kb ];//kbn + real mfbac = (D.f[d0MP])[ks];//[kts ];// + c1over54 ;(D.f[d0MP])[ks ];//kts + real mfbbb = (D.f[d000])[k];//[kzero];// + c8over27 ;(D.f[d000])[k ];//kzero + real mfccc = (D.f[dPPP])[k];//[ktne ];// + c1over216;(D.f[dPPP])[k ];//ktne + real mfaac = (D.f[dMMP])[ksw];//[ktsw ];// + c1over216;(D.f[dMMP])[ksw];//ktsw + real mfcac = (D.f[dPMP])[ks];//[ktse ];// + c1over216;(D.f[dPMP])[ks ];//ktse + real mfacc = (D.f[dMPP])[kw];//[ktnw ];// + c1over216;(D.f[dMPP])[kw ];//ktnw + real mfcca = (D.f[dPPM])[kb];//[kbne ];// + c1over216;(D.f[dPPM])[kb ];//kbne + real mfaaa = (D.f[dMMM])[kbsw];//[kbsw ];// + c1over216;(D.f[dMMM])[kbsw]; + real mfcaa = (D.f[dPMM])[kbs];//[kbse ];// + c1over216;(D.f[dPMM])[kbs];//kbse + real mfaca = (D.f[dMPM])[kbw];//[kbnw ];// + c1over216;(D.f[dMPM])[kbw];//kbnw //////////////////////////////////////////////////////////////////////////////////// //Ship real coord0X = 281.125f;//7.5f; @@ -1162,33 +1162,33 @@ __global__ void K15IncompressibleNavierStokesRotatingVelocityField_Device( //////////////////////////////////////////////////////////////////////////////////// - (D.f[DIR_P00])[k] = mfabb;//(D.f[ DIR_P00 ])[ke ] = mfabb;// - c2over27 ; (D.f[ DIR_P00 ])[k ] - (D.f[DIR_M00])[kw] = mfcbb;//(D.f[ DIR_M00 ])[kw ] = mfcbb;// - c2over27 ; (D.f[ DIR_M00 ])[kw ] - (D.f[DIR_0P0])[k] = mfbab;//(D.f[ DIR_0P0 ])[kn ] = mfbab;// - c2over27 ; (D.f[ DIR_0P0 ])[k ] - (D.f[DIR_0M0])[ks] = mfbcb;//(D.f[ DIR_0M0 ])[ks ] = mfbcb;// - c2over27 ; (D.f[ DIR_0M0 ])[ks ] - (D.f[DIR_00P])[k] = mfbba;//(D.f[ DIR_00P ])[kt ] = mfbba;// - c2over27 ; (D.f[ DIR_00P ])[k ] - (D.f[DIR_00M])[kb] = mfbbc;//(D.f[ DIR_00M ])[kb ] = mfbbc;// - c2over27 ; (D.f[ DIR_00M ])[kb ] - (D.f[DIR_PP0])[k] = mfaab;//(D.f[ DIR_PP0 ])[kne ] = mfaab;// - c1over54 ; (D.f[ DIR_PP0 ])[k ] - (D.f[DIR_MM0])[ksw] = mfccb;//(D.f[ DIR_MM0 ])[ksw ] = mfccb;// - c1over54 ; (D.f[ DIR_MM0 ])[ksw ] - (D.f[DIR_PM0])[ks] = mfacb;//(D.f[ DIR_PM0 ])[kse ] = mfacb;// - c1over54 ; (D.f[ DIR_PM0 ])[ks ] - (D.f[DIR_MP0])[kw] = mfcab;//(D.f[ DIR_MP0 ])[knw ] = mfcab;// - c1over54 ; (D.f[ DIR_MP0 ])[kw ] - (D.f[DIR_P0P])[k] = mfaba;//(D.f[ DIR_P0P ])[kte ] = mfaba;// - c1over54 ; (D.f[ DIR_P0P ])[k ] - (D.f[DIR_M0M])[kbw] = mfcbc;//(D.f[ DIR_M0M ])[kbw ] = mfcbc;// - c1over54 ; (D.f[ DIR_M0M ])[kbw ] - (D.f[DIR_P0M])[kb] = mfabc;//(D.f[ DIR_P0M ])[kbe ] = mfabc;// - c1over54 ; (D.f[ DIR_P0M ])[kb ] - (D.f[DIR_M0P])[kw] = mfcba;//(D.f[ DIR_M0P ])[ktw ] = mfcba;// - c1over54 ; (D.f[ DIR_M0P ])[kw ] - (D.f[DIR_0PP])[k] = mfbaa;//(D.f[ DIR_0PP ])[ktn ] = mfbaa;// - c1over54 ; (D.f[ DIR_0PP ])[k ] - (D.f[DIR_0MM])[kbs] = mfbcc;//(D.f[ DIR_0MM ])[kbs ] = mfbcc;// - c1over54 ; (D.f[ DIR_0MM ])[kbs ] - (D.f[DIR_0PM])[kb] = mfbac;//(D.f[ DIR_0PM ])[kbn ] = mfbac;// - c1over54 ; (D.f[ DIR_0PM ])[kb ] - (D.f[DIR_0MP])[ks] = mfbca;//(D.f[ DIR_0MP ])[kts ] = mfbca;// - c1over54 ; (D.f[ DIR_0MP ])[ks ] - (D.f[DIR_000])[k] = mfbbb;//(D.f[ DIR_000])[kzero] = mfbbb;// - c8over27 ; (D.f[ DIR_000])[k ] - (D.f[DIR_PPP])[k] = mfaaa;//(D.f[ DIR_PPP ])[ktne ] = mfaaa;// - c1over216; (D.f[ DIR_PPP ])[k ] - (D.f[DIR_PMP])[ks] = mfaca;//(D.f[ DIR_PMP ])[ktse ] = mfaca;// - c1over216; (D.f[ DIR_PMP ])[ks ] - (D.f[DIR_PPM])[kb] = mfaac;//(D.f[ DIR_PPM ])[kbne ] = mfaac;// - c1over216; (D.f[ DIR_PPM ])[kb ] - (D.f[DIR_PMM])[kbs] = mfacc;//(D.f[ DIR_PMM ])[kbse ] = mfacc;// - c1over216; (D.f[ DIR_PMM ])[kbs ] - (D.f[DIR_MPP])[kw] = mfcaa;//(D.f[ DIR_MPP ])[ktnw ] = mfcaa;// - c1over216; (D.f[ DIR_MPP ])[kw ] - (D.f[DIR_MMP])[ksw] = mfcca;//(D.f[ DIR_MMP ])[ktsw ] = mfcca;// - c1over216; (D.f[ DIR_MMP ])[ksw ] - (D.f[DIR_MPM])[kbw] = mfcac;//(D.f[ DIR_MPM ])[kbnw ] = mfcac;// - c1over216; (D.f[ DIR_MPM ])[kbw ] - (D.f[DIR_MMM])[kbsw] = mfccc;//(D.f[ DIR_MMM ])[kbsw ] = mfccc;// - c1over216; (D.f[ DIR_MMM ])[kbsw] + (D.f[dP00])[k] = mfabb;//(D.f[ dP00 ])[ke ] = mfabb;// - c2over27 ; (D.f[ dP00 ])[k ] + (D.f[dM00])[kw] = mfcbb;//(D.f[ dM00 ])[kw ] = mfcbb;// - c2over27 ; (D.f[ dM00 ])[kw ] + (D.f[d0P0])[k] = mfbab;//(D.f[ d0P0 ])[kn ] = mfbab;// - c2over27 ; (D.f[ d0P0 ])[k ] + (D.f[d0M0])[ks] = mfbcb;//(D.f[ d0M0 ])[ks ] = mfbcb;// - c2over27 ; (D.f[ d0M0 ])[ks ] + (D.f[d00P])[k] = mfbba;//(D.f[ d00P ])[kt ] = mfbba;// - c2over27 ; (D.f[ d00P ])[k ] + (D.f[d00M])[kb] = mfbbc;//(D.f[ d00M ])[kb ] = mfbbc;// - c2over27 ; (D.f[ d00M ])[kb ] + (D.f[dPP0])[k] = mfaab;//(D.f[ dPP0 ])[kne ] = mfaab;// - c1over54 ; (D.f[ dPP0 ])[k ] + (D.f[dMM0])[ksw] = mfccb;//(D.f[ dMM0 ])[ksw ] = mfccb;// - c1over54 ; (D.f[ dMM0 ])[ksw ] + (D.f[dPM0])[ks] = mfacb;//(D.f[ dPM0 ])[kse ] = mfacb;// - c1over54 ; (D.f[ dPM0 ])[ks ] + (D.f[dMP0])[kw] = mfcab;//(D.f[ dMP0 ])[knw ] = mfcab;// - c1over54 ; (D.f[ dMP0 ])[kw ] + (D.f[dP0P])[k] = mfaba;//(D.f[ dP0P ])[kte ] = mfaba;// - c1over54 ; (D.f[ dP0P ])[k ] + (D.f[dM0M])[kbw] = mfcbc;//(D.f[ dM0M ])[kbw ] = mfcbc;// - c1over54 ; (D.f[ dM0M ])[kbw ] + (D.f[dP0M])[kb] = mfabc;//(D.f[ dP0M ])[kbe ] = mfabc;// - c1over54 ; (D.f[ dP0M ])[kb ] + (D.f[dM0P])[kw] = mfcba;//(D.f[ dM0P ])[ktw ] = mfcba;// - c1over54 ; (D.f[ dM0P ])[kw ] + (D.f[d0PP])[k] = mfbaa;//(D.f[ d0PP ])[ktn ] = mfbaa;// - c1over54 ; (D.f[ d0PP ])[k ] + (D.f[d0MM])[kbs] = mfbcc;//(D.f[ d0MM ])[kbs ] = mfbcc;// - c1over54 ; (D.f[ d0MM ])[kbs ] + (D.f[d0PM])[kb] = mfbac;//(D.f[ d0PM ])[kbn ] = mfbac;// - c1over54 ; (D.f[ d0PM ])[kb ] + (D.f[d0MP])[ks] = mfbca;//(D.f[ d0MP ])[kts ] = mfbca;// - c1over54 ; (D.f[ d0MP ])[ks ] + (D.f[d000])[k] = mfbbb;//(D.f[ d000])[kzero] = mfbbb;// - c8over27 ; (D.f[ d000])[k ] + (D.f[dPPP])[k] = mfaaa;//(D.f[ dPPP ])[ktne ] = mfaaa;// - c1over216; (D.f[ dPPP ])[k ] + (D.f[dPMP])[ks] = mfaca;//(D.f[ dPMP ])[ktse ] = mfaca;// - c1over216; (D.f[ dPMP ])[ks ] + (D.f[dPPM])[kb] = mfaac;//(D.f[ dPPM ])[kbne ] = mfaac;// - c1over216; (D.f[ dPPM ])[kb ] + (D.f[dPMM])[kbs] = mfacc;//(D.f[ dPMM ])[kbse ] = mfacc;// - c1over216; (D.f[ dPMM ])[kbs ] + (D.f[dMPP])[kw] = mfcaa;//(D.f[ dMPP ])[ktnw ] = mfcaa;// - c1over216; (D.f[ dMPP ])[kw ] + (D.f[dMMP])[ksw] = mfcca;//(D.f[ dMMP ])[ktsw ] = mfcca;// - c1over216; (D.f[ dMMP ])[ksw ] + (D.f[dMPM])[kbw] = mfcac;//(D.f[ dMPM ])[kbnw ] = mfcac;// - c1over216; (D.f[ dMPM ])[kbw ] + (D.f[dMMM])[kbsw] = mfccc;//(D.f[ dMMM ])[kbsw ] = mfccc;// - c1over216; (D.f[ dMMM ])[kbsw] //////////////////////////////////////////////////////////////////////////////////// } } diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Incompressible/FluidFlow/K15/K15IncompressibleNavierStokesRotatingVelocityField_Device.cuh b/src/gpu/core/Kernel/Incompressible/NavierStokes/K15/K15IncompressibleNavierStokesRotatingVelocityField_Device.cuh similarity index 100% rename from src/gpu/VirtualFluids_GPU/Kernel/Incompressible/FluidFlow/K15/K15IncompressibleNavierStokesRotatingVelocityField_Device.cuh rename to src/gpu/core/Kernel/Incompressible/NavierStokes/K15/K15IncompressibleNavierStokesRotatingVelocityField_Device.cuh diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Incompressible/FluidFlow/K15/K15IncompressibleNavierStokes_Device.cu b/src/gpu/core/Kernel/Incompressible/NavierStokes/K15/K15IncompressibleNavierStokes_Device.cu similarity index 85% rename from src/gpu/VirtualFluids_GPU/Kernel/Incompressible/FluidFlow/K15/K15IncompressibleNavierStokes_Device.cu rename to src/gpu/core/Kernel/Incompressible/NavierStokes/K15/K15IncompressibleNavierStokes_Device.cu index 5b666eb73c7a19d472d26f2047b04462f83d0d23..4438d69ecd25ac21dc6f944f450cfa1b61e273e3 100644 --- a/src/gpu/VirtualFluids_GPU/Kernel/Incompressible/FluidFlow/K15/K15IncompressibleNavierStokes_Device.cu +++ b/src/gpu/core/Kernel/Incompressible/NavierStokes/K15/K15IncompressibleNavierStokes_Device.cu @@ -38,63 +38,63 @@ __global__ void K15IncompressibleNavierStokes_Device( Distributions27 D; if (EvenOrOdd == true) { - D.f[DIR_P00] = &DDStart[DIR_P00 * size_Mat]; - D.f[DIR_M00] = &DDStart[DIR_M00 * size_Mat]; - D.f[DIR_0P0] = &DDStart[DIR_0P0 * size_Mat]; - D.f[DIR_0M0] = &DDStart[DIR_0M0 * size_Mat]; - D.f[DIR_00P] = &DDStart[DIR_00P * size_Mat]; - D.f[DIR_00M] = &DDStart[DIR_00M * size_Mat]; - D.f[DIR_PP0] = &DDStart[DIR_PP0 * size_Mat]; - D.f[DIR_MM0] = &DDStart[DIR_MM0 * size_Mat]; - D.f[DIR_PM0] = &DDStart[DIR_PM0 * size_Mat]; - D.f[DIR_MP0] = &DDStart[DIR_MP0 * size_Mat]; - D.f[DIR_P0P] = &DDStart[DIR_P0P * size_Mat]; - D.f[DIR_M0M] = &DDStart[DIR_M0M * size_Mat]; - D.f[DIR_P0M] = &DDStart[DIR_P0M * size_Mat]; - D.f[DIR_M0P] = &DDStart[DIR_M0P * size_Mat]; - D.f[DIR_0PP] = &DDStart[DIR_0PP * size_Mat]; - D.f[DIR_0MM] = &DDStart[DIR_0MM * size_Mat]; - D.f[DIR_0PM] = &DDStart[DIR_0PM * size_Mat]; - D.f[DIR_0MP] = &DDStart[DIR_0MP * size_Mat]; - D.f[DIR_000] = &DDStart[DIR_000 * size_Mat]; - D.f[DIR_PPP] = &DDStart[DIR_PPP * size_Mat]; - D.f[DIR_MMP] = &DDStart[DIR_MMP * size_Mat]; - D.f[DIR_PMP] = &DDStart[DIR_PMP * size_Mat]; - D.f[DIR_MPP] = &DDStart[DIR_MPP * size_Mat]; - D.f[DIR_PPM] = &DDStart[DIR_PPM * size_Mat]; - D.f[DIR_MMM] = &DDStart[DIR_MMM * size_Mat]; - D.f[DIR_PMM] = &DDStart[DIR_PMM * size_Mat]; - D.f[DIR_MPM] = &DDStart[DIR_MPM * size_Mat]; + D.f[dP00] = &DDStart[dP00 * size_Mat]; + D.f[dM00] = &DDStart[dM00 * size_Mat]; + D.f[d0P0] = &DDStart[d0P0 * size_Mat]; + D.f[d0M0] = &DDStart[d0M0 * size_Mat]; + D.f[d00P] = &DDStart[d00P * size_Mat]; + D.f[d00M] = &DDStart[d00M * size_Mat]; + D.f[dPP0] = &DDStart[dPP0 * size_Mat]; + D.f[dMM0] = &DDStart[dMM0 * size_Mat]; + D.f[dPM0] = &DDStart[dPM0 * size_Mat]; + D.f[dMP0] = &DDStart[dMP0 * size_Mat]; + D.f[dP0P] = &DDStart[dP0P * size_Mat]; + D.f[dM0M] = &DDStart[dM0M * size_Mat]; + D.f[dP0M] = &DDStart[dP0M * size_Mat]; + D.f[dM0P] = &DDStart[dM0P * size_Mat]; + D.f[d0PP] = &DDStart[d0PP * size_Mat]; + D.f[d0MM] = &DDStart[d0MM * size_Mat]; + D.f[d0PM] = &DDStart[d0PM * size_Mat]; + D.f[d0MP] = &DDStart[d0MP * size_Mat]; + D.f[d000] = &DDStart[d000 * size_Mat]; + D.f[dPPP] = &DDStart[dPPP * size_Mat]; + D.f[dMMP] = &DDStart[dMMP * size_Mat]; + D.f[dPMP] = &DDStart[dPMP * size_Mat]; + D.f[dMPP] = &DDStart[dMPP * size_Mat]; + D.f[dPPM] = &DDStart[dPPM * size_Mat]; + D.f[dMMM] = &DDStart[dMMM * size_Mat]; + D.f[dPMM] = &DDStart[dPMM * size_Mat]; + D.f[dMPM] = &DDStart[dMPM * size_Mat]; } else { - D.f[DIR_M00] = &DDStart[DIR_P00 * size_Mat]; - D.f[DIR_P00] = &DDStart[DIR_M00 * size_Mat]; - D.f[DIR_0M0] = &DDStart[DIR_0P0 * size_Mat]; - D.f[DIR_0P0] = &DDStart[DIR_0M0 * size_Mat]; - D.f[DIR_00M] = &DDStart[DIR_00P * size_Mat]; - D.f[DIR_00P] = &DDStart[DIR_00M * size_Mat]; - D.f[DIR_MM0] = &DDStart[DIR_PP0 * size_Mat]; - D.f[DIR_PP0] = &DDStart[DIR_MM0 * size_Mat]; - D.f[DIR_MP0] = &DDStart[DIR_PM0 * size_Mat]; - D.f[DIR_PM0] = &DDStart[DIR_MP0 * size_Mat]; - D.f[DIR_M0M] = &DDStart[DIR_P0P * size_Mat]; - D.f[DIR_P0P] = &DDStart[DIR_M0M * size_Mat]; - D.f[DIR_M0P] = &DDStart[DIR_P0M * size_Mat]; - D.f[DIR_P0M] = &DDStart[DIR_M0P * size_Mat]; - D.f[DIR_0MM] = &DDStart[DIR_0PP * size_Mat]; - D.f[DIR_0PP] = &DDStart[DIR_0MM * size_Mat]; - D.f[DIR_0MP] = &DDStart[DIR_0PM * size_Mat]; - D.f[DIR_0PM] = &DDStart[DIR_0MP * size_Mat]; - D.f[DIR_000] = &DDStart[DIR_000 * size_Mat]; - D.f[DIR_MMM] = &DDStart[DIR_PPP * size_Mat]; - D.f[DIR_PPM] = &DDStart[DIR_MMP * size_Mat]; - D.f[DIR_MPM] = &DDStart[DIR_PMP * size_Mat]; - D.f[DIR_PMM] = &DDStart[DIR_MPP * size_Mat]; - D.f[DIR_MMP] = &DDStart[DIR_PPM * size_Mat]; - D.f[DIR_PPP] = &DDStart[DIR_MMM * size_Mat]; - D.f[DIR_MPP] = &DDStart[DIR_PMM * size_Mat]; - D.f[DIR_PMP] = &DDStart[DIR_MPM * size_Mat]; + D.f[dM00] = &DDStart[dP00 * size_Mat]; + D.f[dP00] = &DDStart[dM00 * size_Mat]; + D.f[d0M0] = &DDStart[d0P0 * size_Mat]; + D.f[d0P0] = &DDStart[d0M0 * size_Mat]; + D.f[d00M] = &DDStart[d00P * size_Mat]; + D.f[d00P] = &DDStart[d00M * size_Mat]; + D.f[dMM0] = &DDStart[dPP0 * size_Mat]; + D.f[dPP0] = &DDStart[dMM0 * size_Mat]; + D.f[dMP0] = &DDStart[dPM0 * size_Mat]; + D.f[dPM0] = &DDStart[dMP0 * size_Mat]; + D.f[dM0M] = &DDStart[dP0P * size_Mat]; + D.f[dP0P] = &DDStart[dM0M * size_Mat]; + D.f[dM0P] = &DDStart[dP0M * size_Mat]; + D.f[dP0M] = &DDStart[dM0P * size_Mat]; + D.f[d0MM] = &DDStart[d0PP * size_Mat]; + D.f[d0PP] = &DDStart[d0MM * size_Mat]; + D.f[d0MP] = &DDStart[d0PM * size_Mat]; + D.f[d0PM] = &DDStart[d0MP * size_Mat]; + D.f[d000] = &DDStart[d000 * size_Mat]; + D.f[dMMM] = &DDStart[dPPP * size_Mat]; + D.f[dPPM] = &DDStart[dMMP * size_Mat]; + D.f[dMPM] = &DDStart[dPMP * size_Mat]; + D.f[dPMM] = &DDStart[dMPP * size_Mat]; + D.f[dMMP] = &DDStart[dPPM * size_Mat]; + D.f[dPPP] = &DDStart[dMMM * size_Mat]; + D.f[dMPP] = &DDStart[dPMM * size_Mat]; + D.f[dPMP] = &DDStart[dMPM * size_Mat]; } //////////////////////////////////////////////////////////////////////////////// @@ -155,33 +155,33 @@ __global__ void K15IncompressibleNavierStokes_Device( //unsigned int ktne = k; //unsigned int kbsw = neighborZ[ksw]; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real mfcbb = (D.f[DIR_P00])[k];//[ke ];// + c2over27 ;(D.f[DIR_P00])[k ];//ke - real mfabb = (D.f[DIR_M00])[kw];//[kw ];// + c2over27 ;(D.f[DIR_M00])[kw ]; - real mfbcb = (D.f[DIR_0P0])[k];//[kn ];// + c2over27 ;(D.f[DIR_0P0])[k ];//kn - real mfbab = (D.f[DIR_0M0])[ks];//[ks ];// + c2over27 ;(D.f[DIR_0M0])[ks ]; - real mfbbc = (D.f[DIR_00P])[k];//[kt ];// + c2over27 ;(D.f[DIR_00P])[k ];//kt - real mfbba = (D.f[DIR_00M])[kb];//[kb ];// + c2over27 ;(D.f[DIR_00M])[kb ]; - real mfccb = (D.f[DIR_PP0])[k];//[kne ];// + c1over54 ;(D.f[DIR_PP0])[k ];//kne - real mfaab = (D.f[DIR_MM0])[ksw];//[ksw ];// + c1over54 ;(D.f[DIR_MM0])[ksw]; - real mfcab = (D.f[DIR_PM0])[ks];//[kse ];// + c1over54 ;(D.f[DIR_PM0])[ks ];//kse - real mfacb = (D.f[DIR_MP0])[kw];//[knw ];// + c1over54 ;(D.f[DIR_MP0])[kw ];//knw - real mfcbc = (D.f[DIR_P0P])[k];//[kte ];// + c1over54 ;(D.f[DIR_P0P])[k ];//kte - real mfaba = (D.f[DIR_M0M])[kbw];//[kbw ];// + c1over54 ;(D.f[DIR_M0M])[kbw]; - real mfcba = (D.f[DIR_P0M])[kb];//[kbe ];// + c1over54 ;(D.f[DIR_P0M])[kb ];//kbe - real mfabc = (D.f[DIR_M0P])[kw];//[ktw ];// + c1over54 ;(D.f[DIR_M0P])[kw ];//ktw - real mfbcc = (D.f[DIR_0PP])[k];//[ktn ];// + c1over54 ;(D.f[DIR_0PP])[k ];//ktn - real mfbaa = (D.f[DIR_0MM])[kbs];//[kbs ];// + c1over54 ;(D.f[DIR_0MM])[kbs]; - real mfbca = (D.f[DIR_0PM])[kb];//[kbn ];// + c1over54 ;(D.f[DIR_0PM])[kb ];//kbn - real mfbac = (D.f[DIR_0MP])[ks];//[kts ];// + c1over54 ;(D.f[DIR_0MP])[ks ];//kts - real mfbbb = (D.f[DIR_000])[k];//[kzero];// + c8over27 ;(D.f[DIR_000])[k ];//kzero - real mfccc = (D.f[DIR_PPP])[k];//[ktne ];// + c1over216;(D.f[DIR_PPP])[k ];//ktne - real mfaac = (D.f[DIR_MMP])[ksw];//[ktsw ];// + c1over216;(D.f[DIR_MMP])[ksw];//ktsw - real mfcac = (D.f[DIR_PMP])[ks];//[ktse ];// + c1over216;(D.f[DIR_PMP])[ks ];//ktse - real mfacc = (D.f[DIR_MPP])[kw];//[ktnw ];// + c1over216;(D.f[DIR_MPP])[kw ];//ktnw - real mfcca = (D.f[DIR_PPM])[kb];//[kbne ];// + c1over216;(D.f[DIR_PPM])[kb ];//kbne - real mfaaa = (D.f[DIR_MMM])[kbsw];//[kbsw ];// + c1over216;(D.f[DIR_MMM])[kbsw]; - real mfcaa = (D.f[DIR_PMM])[kbs];//[kbse ];// + c1over216;(D.f[DIR_PMM])[kbs];//kbse - real mfaca = (D.f[DIR_MPM])[kbw];//[kbnw ];// + c1over216;(D.f[DIR_MPM])[kbw];//kbnw + real mfcbb = (D.f[dP00])[k];//[ke ];// + c2over27 ;(D.f[dP00])[k ];//ke + real mfabb = (D.f[dM00])[kw];//[kw ];// + c2over27 ;(D.f[dM00])[kw ]; + real mfbcb = (D.f[d0P0])[k];//[kn ];// + c2over27 ;(D.f[d0P0])[k ];//kn + real mfbab = (D.f[d0M0])[ks];//[ks ];// + c2over27 ;(D.f[d0M0])[ks ]; + real mfbbc = (D.f[d00P])[k];//[kt ];// + c2over27 ;(D.f[d00P])[k ];//kt + real mfbba = (D.f[d00M])[kb];//[kb ];// + c2over27 ;(D.f[d00M])[kb ]; + real mfccb = (D.f[dPP0])[k];//[kne ];// + c1over54 ;(D.f[dPP0])[k ];//kne + real mfaab = (D.f[dMM0])[ksw];//[ksw ];// + c1over54 ;(D.f[dMM0])[ksw]; + real mfcab = (D.f[dPM0])[ks];//[kse ];// + c1over54 ;(D.f[dPM0])[ks ];//kse + real mfacb = (D.f[dMP0])[kw];//[knw ];// + c1over54 ;(D.f[dMP0])[kw ];//knw + real mfcbc = (D.f[dP0P])[k];//[kte ];// + c1over54 ;(D.f[dP0P])[k ];//kte + real mfaba = (D.f[dM0M])[kbw];//[kbw ];// + c1over54 ;(D.f[dM0M])[kbw]; + real mfcba = (D.f[dP0M])[kb];//[kbe ];// + c1over54 ;(D.f[dP0M])[kb ];//kbe + real mfabc = (D.f[dM0P])[kw];//[ktw ];// + c1over54 ;(D.f[dM0P])[kw ];//ktw + real mfbcc = (D.f[d0PP])[k];//[ktn ];// + c1over54 ;(D.f[d0PP])[k ];//ktn + real mfbaa = (D.f[d0MM])[kbs];//[kbs ];// + c1over54 ;(D.f[d0MM])[kbs]; + real mfbca = (D.f[d0PM])[kb];//[kbn ];// + c1over54 ;(D.f[d0PM])[kb ];//kbn + real mfbac = (D.f[d0MP])[ks];//[kts ];// + c1over54 ;(D.f[d0MP])[ks ];//kts + real mfbbb = (D.f[d000])[k];//[kzero];// + c8over27 ;(D.f[d000])[k ];//kzero + real mfccc = (D.f[dPPP])[k];//[ktne ];// + c1over216;(D.f[dPPP])[k ];//ktne + real mfaac = (D.f[dMMP])[ksw];//[ktsw ];// + c1over216;(D.f[dMMP])[ksw];//ktsw + real mfcac = (D.f[dPMP])[ks];//[ktse ];// + c1over216;(D.f[dPMP])[ks ];//ktse + real mfacc = (D.f[dMPP])[kw];//[ktnw ];// + c1over216;(D.f[dMPP])[kw ];//ktnw + real mfcca = (D.f[dPPM])[kb];//[kbne ];// + c1over216;(D.f[dPPM])[kb ];//kbne + real mfaaa = (D.f[dMMM])[kbsw];//[kbsw ];// + c1over216;(D.f[dMMM])[kbsw]; + real mfcaa = (D.f[dPMM])[kbs];//[kbse ];// + c1over216;(D.f[dPMM])[kbs];//kbse + real mfaca = (D.f[dMPM])[kbw];//[kbnw ];// + c1over216;(D.f[dMPM])[kbw];//kbnw //////////////////////////////////////////////////////////////////////////////////// //slow //real oMdrho = one - ((((mfccc+mfaaa) + (mfaca+mfcac)) + ((mfacc+mfcaa) + (mfaac+mfcca))) + @@ -1207,33 +1207,33 @@ __global__ void K15IncompressibleNavierStokes_Device( //////////////////////////////////////////////////////////////////////////////////// - (D.f[DIR_P00])[k] = mfabb;//(D.f[ DIR_P00 ])[ke ] = mfabb;// - c2over27 ; (D.f[ DIR_P00 ])[k ] - (D.f[DIR_M00])[kw] = mfcbb;//(D.f[ DIR_M00 ])[kw ] = mfcbb;// - c2over27 ; (D.f[ DIR_M00 ])[kw ] - (D.f[DIR_0P0])[k] = mfbab;//(D.f[ DIR_0P0 ])[kn ] = mfbab;// - c2over27 ; (D.f[ DIR_0P0 ])[k ] - (D.f[DIR_0M0])[ks] = mfbcb;//(D.f[ DIR_0M0 ])[ks ] = mfbcb;// - c2over27 ; (D.f[ DIR_0M0 ])[ks ] - (D.f[DIR_00P])[k] = mfbba;//(D.f[ DIR_00P ])[kt ] = mfbba;// - c2over27 ; (D.f[ DIR_00P ])[k ] - (D.f[DIR_00M])[kb] = mfbbc;//(D.f[ DIR_00M ])[kb ] = mfbbc;// - c2over27 ; (D.f[ DIR_00M ])[kb ] - (D.f[DIR_PP0])[k] = mfaab;//(D.f[ DIR_PP0 ])[kne ] = mfaab;// - c1over54 ; (D.f[ DIR_PP0 ])[k ] - (D.f[DIR_MM0])[ksw] = mfccb;//(D.f[ DIR_MM0 ])[ksw ] = mfccb;// - c1over54 ; (D.f[ DIR_MM0 ])[ksw ] - (D.f[DIR_PM0])[ks] = mfacb;//(D.f[ DIR_PM0 ])[kse ] = mfacb;// - c1over54 ; (D.f[ DIR_PM0 ])[ks ] - (D.f[DIR_MP0])[kw] = mfcab;//(D.f[ DIR_MP0 ])[knw ] = mfcab;// - c1over54 ; (D.f[ DIR_MP0 ])[kw ] - (D.f[DIR_P0P])[k] = mfaba;//(D.f[ DIR_P0P ])[kte ] = mfaba;// - c1over54 ; (D.f[ DIR_P0P ])[k ] - (D.f[DIR_M0M])[kbw] = mfcbc;//(D.f[ DIR_M0M ])[kbw ] = mfcbc;// - c1over54 ; (D.f[ DIR_M0M ])[kbw ] - (D.f[DIR_P0M])[kb] = mfabc;//(D.f[ DIR_P0M ])[kbe ] = mfabc;// - c1over54 ; (D.f[ DIR_P0M ])[kb ] - (D.f[DIR_M0P])[kw] = mfcba;//(D.f[ DIR_M0P ])[ktw ] = mfcba;// - c1over54 ; (D.f[ DIR_M0P ])[kw ] - (D.f[DIR_0PP])[k] = mfbaa;//(D.f[ DIR_0PP ])[ktn ] = mfbaa;// - c1over54 ; (D.f[ DIR_0PP ])[k ] - (D.f[DIR_0MM])[kbs] = mfbcc;//(D.f[ DIR_0MM ])[kbs ] = mfbcc;// - c1over54 ; (D.f[ DIR_0MM ])[kbs ] - (D.f[DIR_0PM])[kb] = mfbac;//(D.f[ DIR_0PM ])[kbn ] = mfbac;// - c1over54 ; (D.f[ DIR_0PM ])[kb ] - (D.f[DIR_0MP])[ks] = mfbca;//(D.f[ DIR_0MP ])[kts ] = mfbca;// - c1over54 ; (D.f[ DIR_0MP ])[ks ] - (D.f[DIR_000])[k] = mfbbb;//(D.f[ DIR_000])[kzero] = mfbbb;// - c8over27 ; (D.f[ DIR_000])[k ] - (D.f[DIR_PPP])[k] = mfaaa;//(D.f[ DIR_PPP ])[ktne ] = mfaaa;// - c1over216; (D.f[ DIR_PPP ])[k ] - (D.f[DIR_PMP])[ks] = mfaca;//(D.f[ DIR_PMP ])[ktse ] = mfaca;// - c1over216; (D.f[ DIR_PMP ])[ks ] - (D.f[DIR_PPM])[kb] = mfaac;//(D.f[ DIR_PPM ])[kbne ] = mfaac;// - c1over216; (D.f[ DIR_PPM ])[kb ] - (D.f[DIR_PMM])[kbs] = mfacc;//(D.f[ DIR_PMM ])[kbse ] = mfacc;// - c1over216; (D.f[ DIR_PMM ])[kbs ] - (D.f[DIR_MPP])[kw] = mfcaa;//(D.f[ DIR_MPP ])[ktnw ] = mfcaa;// - c1over216; (D.f[ DIR_MPP ])[kw ] - (D.f[DIR_MMP])[ksw] = mfcca;//(D.f[ DIR_MMP ])[ktsw ] = mfcca;// - c1over216; (D.f[ DIR_MMP ])[ksw ] - (D.f[DIR_MPM])[kbw] = mfcac;//(D.f[ DIR_MPM ])[kbnw ] = mfcac;// - c1over216; (D.f[ DIR_MPM ])[kbw ] - (D.f[DIR_MMM])[kbsw] = mfccc;//(D.f[ DIR_MMM ])[kbsw ] = mfccc;// - c1over216; (D.f[ DIR_MMM ])[kbsw] + (D.f[dP00])[k] = mfabb;//(D.f[ dP00 ])[ke ] = mfabb;// - c2over27 ; (D.f[ dP00 ])[k ] + (D.f[dM00])[kw] = mfcbb;//(D.f[ dM00 ])[kw ] = mfcbb;// - c2over27 ; (D.f[ dM00 ])[kw ] + (D.f[d0P0])[k] = mfbab;//(D.f[ d0P0 ])[kn ] = mfbab;// - c2over27 ; (D.f[ d0P0 ])[k ] + (D.f[d0M0])[ks] = mfbcb;//(D.f[ d0M0 ])[ks ] = mfbcb;// - c2over27 ; (D.f[ d0M0 ])[ks ] + (D.f[d00P])[k] = mfbba;//(D.f[ d00P ])[kt ] = mfbba;// - c2over27 ; (D.f[ d00P ])[k ] + (D.f[d00M])[kb] = mfbbc;//(D.f[ d00M ])[kb ] = mfbbc;// - c2over27 ; (D.f[ d00M ])[kb ] + (D.f[dPP0])[k] = mfaab;//(D.f[ dPP0 ])[kne ] = mfaab;// - c1over54 ; (D.f[ dPP0 ])[k ] + (D.f[dMM0])[ksw] = mfccb;//(D.f[ dMM0 ])[ksw ] = mfccb;// - c1over54 ; (D.f[ dMM0 ])[ksw ] + (D.f[dPM0])[ks] = mfacb;//(D.f[ dPM0 ])[kse ] = mfacb;// - c1over54 ; (D.f[ dPM0 ])[ks ] + (D.f[dMP0])[kw] = mfcab;//(D.f[ dMP0 ])[knw ] = mfcab;// - c1over54 ; (D.f[ dMP0 ])[kw ] + (D.f[dP0P])[k] = mfaba;//(D.f[ dP0P ])[kte ] = mfaba;// - c1over54 ; (D.f[ dP0P ])[k ] + (D.f[dM0M])[kbw] = mfcbc;//(D.f[ dM0M ])[kbw ] = mfcbc;// - c1over54 ; (D.f[ dM0M ])[kbw ] + (D.f[dP0M])[kb] = mfabc;//(D.f[ dP0M ])[kbe ] = mfabc;// - c1over54 ; (D.f[ dP0M ])[kb ] + (D.f[dM0P])[kw] = mfcba;//(D.f[ dM0P ])[ktw ] = mfcba;// - c1over54 ; (D.f[ dM0P ])[kw ] + (D.f[d0PP])[k] = mfbaa;//(D.f[ d0PP ])[ktn ] = mfbaa;// - c1over54 ; (D.f[ d0PP ])[k ] + (D.f[d0MM])[kbs] = mfbcc;//(D.f[ d0MM ])[kbs ] = mfbcc;// - c1over54 ; (D.f[ d0MM ])[kbs ] + (D.f[d0PM])[kb] = mfbac;//(D.f[ d0PM ])[kbn ] = mfbac;// - c1over54 ; (D.f[ d0PM ])[kb ] + (D.f[d0MP])[ks] = mfbca;//(D.f[ d0MP ])[kts ] = mfbca;// - c1over54 ; (D.f[ d0MP ])[ks ] + (D.f[d000])[k] = mfbbb;//(D.f[ d000])[kzero] = mfbbb;// - c8over27 ; (D.f[ d000])[k ] + (D.f[dPPP])[k] = mfaaa;//(D.f[ dPPP ])[ktne ] = mfaaa;// - c1over216; (D.f[ dPPP ])[k ] + (D.f[dPMP])[ks] = mfaca;//(D.f[ dPMP ])[ktse ] = mfaca;// - c1over216; (D.f[ dPMP ])[ks ] + (D.f[dPPM])[kb] = mfaac;//(D.f[ dPPM ])[kbne ] = mfaac;// - c1over216; (D.f[ dPPM ])[kb ] + (D.f[dPMM])[kbs] = mfacc;//(D.f[ dPMM ])[kbse ] = mfacc;// - c1over216; (D.f[ dPMM ])[kbs ] + (D.f[dMPP])[kw] = mfcaa;//(D.f[ dMPP ])[ktnw ] = mfcaa;// - c1over216; (D.f[ dMPP ])[kw ] + (D.f[dMMP])[ksw] = mfcca;//(D.f[ dMMP ])[ktsw ] = mfcca;// - c1over216; (D.f[ dMMP ])[ksw ] + (D.f[dMPM])[kbw] = mfcac;//(D.f[ dMPM ])[kbnw ] = mfcac;// - c1over216; (D.f[ dMPM ])[kbw ] + (D.f[dMMM])[kbsw] = mfccc;//(D.f[ dMMM ])[kbsw ] = mfccc;// - c1over216; (D.f[ dMMM ])[kbsw] //////////////////////////////////////////////////////////////////////////////////// } } diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Incompressible/FluidFlow/K15/K15IncompressibleNavierStokes_Device.cuh b/src/gpu/core/Kernel/Incompressible/NavierStokes/K15/K15IncompressibleNavierStokes_Device.cuh similarity index 100% rename from src/gpu/VirtualFluids_GPU/Kernel/Incompressible/FluidFlow/K15/K15IncompressibleNavierStokes_Device.cuh rename to src/gpu/core/Kernel/Incompressible/NavierStokes/K15/K15IncompressibleNavierStokes_Device.cuh diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Incompressible/FluidFlow/M02/M02IncompressibleNavierStokes.cu b/src/gpu/core/Kernel/Incompressible/NavierStokes/M02/M02IncompressibleNavierStokes.cu similarity index 100% rename from src/gpu/VirtualFluids_GPU/Kernel/Incompressible/FluidFlow/M02/M02IncompressibleNavierStokes.cu rename to src/gpu/core/Kernel/Incompressible/NavierStokes/M02/M02IncompressibleNavierStokes.cu diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Incompressible/FluidFlow/M02/M02IncompressibleNavierStokes.h b/src/gpu/core/Kernel/Incompressible/NavierStokes/M02/M02IncompressibleNavierStokes.h similarity index 100% rename from src/gpu/VirtualFluids_GPU/Kernel/Incompressible/FluidFlow/M02/M02IncompressibleNavierStokes.h rename to src/gpu/core/Kernel/Incompressible/NavierStokes/M02/M02IncompressibleNavierStokes.h diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Incompressible/FluidFlow/M02/M02IncompressibleNavierStokes_Device.cu b/src/gpu/core/Kernel/Incompressible/NavierStokes/M02/M02IncompressibleNavierStokes_Device.cu similarity index 77% rename from src/gpu/VirtualFluids_GPU/Kernel/Incompressible/FluidFlow/M02/M02IncompressibleNavierStokes_Device.cu rename to src/gpu/core/Kernel/Incompressible/NavierStokes/M02/M02IncompressibleNavierStokes_Device.cu index 4c94c960e0bf9521c558ede0c00076f2bfe82ce4..c5af4088d5f4ba2d67e0eed5e8e919fbaaa9153f 100644 --- a/src/gpu/VirtualFluids_GPU/Kernel/Incompressible/FluidFlow/M02/M02IncompressibleNavierStokes_Device.cu +++ b/src/gpu/core/Kernel/Incompressible/NavierStokes/M02/M02IncompressibleNavierStokes_Device.cu @@ -38,63 +38,63 @@ __global__ void M02IncompressibleNavierStokes_Device( Distributions27 D; if (EvenOrOdd == true) { - D.f[DIR_P00] = &DDStart[DIR_P00 * size_Mat]; - D.f[DIR_M00] = &DDStart[DIR_M00 * size_Mat]; - D.f[DIR_0P0] = &DDStart[DIR_0P0 * size_Mat]; - D.f[DIR_0M0] = &DDStart[DIR_0M0 * size_Mat]; - D.f[DIR_00P] = &DDStart[DIR_00P * size_Mat]; - D.f[DIR_00M] = &DDStart[DIR_00M * size_Mat]; - D.f[DIR_PP0] = &DDStart[DIR_PP0 * size_Mat]; - D.f[DIR_MM0] = &DDStart[DIR_MM0 * size_Mat]; - D.f[DIR_PM0] = &DDStart[DIR_PM0 * size_Mat]; - D.f[DIR_MP0] = &DDStart[DIR_MP0 * size_Mat]; - D.f[DIR_P0P] = &DDStart[DIR_P0P * size_Mat]; - D.f[DIR_M0M] = &DDStart[DIR_M0M * size_Mat]; - D.f[DIR_P0M] = &DDStart[DIR_P0M * size_Mat]; - D.f[DIR_M0P] = &DDStart[DIR_M0P * size_Mat]; - D.f[DIR_0PP] = &DDStart[DIR_0PP * size_Mat]; - D.f[DIR_0MM] = &DDStart[DIR_0MM * size_Mat]; - D.f[DIR_0PM] = &DDStart[DIR_0PM * size_Mat]; - D.f[DIR_0MP] = &DDStart[DIR_0MP * size_Mat]; - D.f[DIR_000] = &DDStart[DIR_000 * size_Mat]; - D.f[DIR_PPP] = &DDStart[DIR_PPP * size_Mat]; - D.f[DIR_MMP] = &DDStart[DIR_MMP * size_Mat]; - D.f[DIR_PMP] = &DDStart[DIR_PMP * size_Mat]; - D.f[DIR_MPP] = &DDStart[DIR_MPP * size_Mat]; - D.f[DIR_PPM] = &DDStart[DIR_PPM * size_Mat]; - D.f[DIR_MMM] = &DDStart[DIR_MMM * size_Mat]; - D.f[DIR_PMM] = &DDStart[DIR_PMM * size_Mat]; - D.f[DIR_MPM] = &DDStart[DIR_MPM * size_Mat]; + D.f[dP00] = &DDStart[dP00 * size_Mat]; + D.f[dM00] = &DDStart[dM00 * size_Mat]; + D.f[d0P0] = &DDStart[d0P0 * size_Mat]; + D.f[d0M0] = &DDStart[d0M0 * size_Mat]; + D.f[d00P] = &DDStart[d00P * size_Mat]; + D.f[d00M] = &DDStart[d00M * size_Mat]; + D.f[dPP0] = &DDStart[dPP0 * size_Mat]; + D.f[dMM0] = &DDStart[dMM0 * size_Mat]; + D.f[dPM0] = &DDStart[dPM0 * size_Mat]; + D.f[dMP0] = &DDStart[dMP0 * size_Mat]; + D.f[dP0P] = &DDStart[dP0P * size_Mat]; + D.f[dM0M] = &DDStart[dM0M * size_Mat]; + D.f[dP0M] = &DDStart[dP0M * size_Mat]; + D.f[dM0P] = &DDStart[dM0P * size_Mat]; + D.f[d0PP] = &DDStart[d0PP * size_Mat]; + D.f[d0MM] = &DDStart[d0MM * size_Mat]; + D.f[d0PM] = &DDStart[d0PM * size_Mat]; + D.f[d0MP] = &DDStart[d0MP * size_Mat]; + D.f[d000] = &DDStart[d000 * size_Mat]; + D.f[dPPP] = &DDStart[dPPP * size_Mat]; + D.f[dMMP] = &DDStart[dMMP * size_Mat]; + D.f[dPMP] = &DDStart[dPMP * size_Mat]; + D.f[dMPP] = &DDStart[dMPP * size_Mat]; + D.f[dPPM] = &DDStart[dPPM * size_Mat]; + D.f[dMMM] = &DDStart[dMMM * size_Mat]; + D.f[dPMM] = &DDStart[dPMM * size_Mat]; + D.f[dMPM] = &DDStart[dMPM * size_Mat]; } else { - D.f[DIR_M00] = &DDStart[DIR_P00 * size_Mat]; - D.f[DIR_P00] = &DDStart[DIR_M00 * size_Mat]; - D.f[DIR_0M0] = &DDStart[DIR_0P0 * size_Mat]; - D.f[DIR_0P0] = &DDStart[DIR_0M0 * size_Mat]; - D.f[DIR_00M] = &DDStart[DIR_00P * size_Mat]; - D.f[DIR_00P] = &DDStart[DIR_00M * size_Mat]; - D.f[DIR_MM0] = &DDStart[DIR_PP0 * size_Mat]; - D.f[DIR_PP0] = &DDStart[DIR_MM0 * size_Mat]; - D.f[DIR_MP0] = &DDStart[DIR_PM0 * size_Mat]; - D.f[DIR_PM0] = &DDStart[DIR_MP0 * size_Mat]; - D.f[DIR_M0M] = &DDStart[DIR_P0P * size_Mat]; - D.f[DIR_P0P] = &DDStart[DIR_M0M * size_Mat]; - D.f[DIR_M0P] = &DDStart[DIR_P0M * size_Mat]; - D.f[DIR_P0M] = &DDStart[DIR_M0P * size_Mat]; - D.f[DIR_0MM] = &DDStart[DIR_0PP * size_Mat]; - D.f[DIR_0PP] = &DDStart[DIR_0MM * size_Mat]; - D.f[DIR_0MP] = &DDStart[DIR_0PM * size_Mat]; - D.f[DIR_0PM] = &DDStart[DIR_0MP * size_Mat]; - D.f[DIR_000] = &DDStart[DIR_000 * size_Mat]; - D.f[DIR_MMM] = &DDStart[DIR_PPP * size_Mat]; - D.f[DIR_PPM] = &DDStart[DIR_MMP * size_Mat]; - D.f[DIR_MPM] = &DDStart[DIR_PMP * size_Mat]; - D.f[DIR_PMM] = &DDStart[DIR_MPP * size_Mat]; - D.f[DIR_MMP] = &DDStart[DIR_PPM * size_Mat]; - D.f[DIR_PPP] = &DDStart[DIR_MMM * size_Mat]; - D.f[DIR_MPP] = &DDStart[DIR_PMM * size_Mat]; - D.f[DIR_PMP] = &DDStart[DIR_MPM * size_Mat]; + D.f[dM00] = &DDStart[dP00 * size_Mat]; + D.f[dP00] = &DDStart[dM00 * size_Mat]; + D.f[d0M0] = &DDStart[d0P0 * size_Mat]; + D.f[d0P0] = &DDStart[d0M0 * size_Mat]; + D.f[d00M] = &DDStart[d00P * size_Mat]; + D.f[d00P] = &DDStart[d00M * size_Mat]; + D.f[dMM0] = &DDStart[dPP0 * size_Mat]; + D.f[dPP0] = &DDStart[dMM0 * size_Mat]; + D.f[dMP0] = &DDStart[dPM0 * size_Mat]; + D.f[dPM0] = &DDStart[dMP0 * size_Mat]; + D.f[dM0M] = &DDStart[dP0P * size_Mat]; + D.f[dP0P] = &DDStart[dM0M * size_Mat]; + D.f[dM0P] = &DDStart[dP0M * size_Mat]; + D.f[dP0M] = &DDStart[dM0P * size_Mat]; + D.f[d0MM] = &DDStart[d0PP * size_Mat]; + D.f[d0PP] = &DDStart[d0MM * size_Mat]; + D.f[d0MP] = &DDStart[d0PM * size_Mat]; + D.f[d0PM] = &DDStart[d0MP * size_Mat]; + D.f[d000] = &DDStart[d000 * size_Mat]; + D.f[dMMM] = &DDStart[dPPP * size_Mat]; + D.f[dPPM] = &DDStart[dMMP * size_Mat]; + D.f[dMPM] = &DDStart[dPMP * size_Mat]; + D.f[dPMM] = &DDStart[dMPP * size_Mat]; + D.f[dMMP] = &DDStart[dPPM * size_Mat]; + D.f[dPPP] = &DDStart[dMMM * size_Mat]; + D.f[dMPP] = &DDStart[dPMM * size_Mat]; + D.f[dPMP] = &DDStart[dMPM * size_Mat]; } //////////////////////////////////////////////////////////////////////////////// @@ -127,33 +127,33 @@ __global__ void M02IncompressibleNavierStokes_Device( //unsigned int ktne = k; unsigned int kbsw = neighborZ[ksw]; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - real mfcbb = (D.f[DIR_P00])[k];//[ke ];// + c2over27 ;(D.f[DIR_P00])[k ];//ke - real mfabb = (D.f[DIR_M00])[kw];//[kw ];// + c2over27 ;(D.f[DIR_M00])[kw ]; - real mfbcb = (D.f[DIR_0P0])[k];//[kn ];// + c2over27 ;(D.f[DIR_0P0])[k ];//kn - real mfbab = (D.f[DIR_0M0])[ks];//[ks ];// + c2over27 ;(D.f[DIR_0M0])[ks ]; - real mfbbc = (D.f[DIR_00P])[k];//[kt ];// + c2over27 ;(D.f[DIR_00P])[k ];//kt - real mfbba = (D.f[DIR_00M])[kb];//[kb ];// + c2over27 ;(D.f[DIR_00M])[kb ]; - real mfccb = (D.f[DIR_PP0])[k];//[kne ];// + c1over54 ;(D.f[DIR_PP0])[k ];//kne - real mfaab = (D.f[DIR_MM0])[ksw];//[ksw ];// + c1over54 ;(D.f[DIR_MM0])[ksw]; - real mfcab = (D.f[DIR_PM0])[ks];//[kse ];// + c1over54 ;(D.f[DIR_PM0])[ks ];//kse - real mfacb = (D.f[DIR_MP0])[kw];//[knw ];// + c1over54 ;(D.f[DIR_MP0])[kw ];//knw - real mfcbc = (D.f[DIR_P0P])[k];//[kte ];// + c1over54 ;(D.f[DIR_P0P])[k ];//kte - real mfaba = (D.f[DIR_M0M])[kbw];//[kbw ];// + c1over54 ;(D.f[DIR_M0M])[kbw]; - real mfcba = (D.f[DIR_P0M])[kb];//[kbe ];// + c1over54 ;(D.f[DIR_P0M])[kb ];//kbe - real mfabc = (D.f[DIR_M0P])[kw];//[ktw ];// + c1over54 ;(D.f[DIR_M0P])[kw ];//ktw - real mfbcc = (D.f[DIR_0PP])[k];//[ktn ];// + c1over54 ;(D.f[DIR_0PP])[k ];//ktn - real mfbaa = (D.f[DIR_0MM])[kbs];//[kbs ];// + c1over54 ;(D.f[DIR_0MM])[kbs]; - real mfbca = (D.f[DIR_0PM])[kb];//[kbn ];// + c1over54 ;(D.f[DIR_0PM])[kb ];//kbn - real mfbac = (D.f[DIR_0MP])[ks];//[kts ];// + c1over54 ;(D.f[DIR_0MP])[ks ];//kts - real mfbbb = (D.f[DIR_000])[k];//[kzero];// + c8over27 ;(D.f[DIR_000])[k ];//kzero - real mfccc = (D.f[DIR_PPP])[k];//[ktne ];// + c1over216;(D.f[DIR_PPP])[k ];//ktne - real mfaac = (D.f[DIR_MMP])[ksw];//[ktsw ];// + c1over216;(D.f[DIR_MMP])[ksw];//ktsw - real mfcac = (D.f[DIR_PMP])[ks];//[ktse ];// + c1over216;(D.f[DIR_PMP])[ks ];//ktse - real mfacc = (D.f[DIR_MPP])[kw];//[ktnw ];// + c1over216;(D.f[DIR_MPP])[kw ];//ktnw - real mfcca = (D.f[DIR_PPM])[kb];//[kbne ];// + c1over216;(D.f[DIR_PPM])[kb ];//kbne - real mfaaa = (D.f[DIR_MMM])[kbsw];//[kbsw ];// + c1over216;(D.f[DIR_MMM])[kbsw]; - real mfcaa = (D.f[DIR_PMM])[kbs];//[kbse ];// + c1over216;(D.f[DIR_PMM])[kbs];//kbse - real mfaca = (D.f[DIR_MPM])[kbw];//[kbnw ];// + c1over216;(D.f[DIR_MPM])[kbw];//kbnw + real mfcbb = (D.f[dP00])[k];//[ke ];// + c2over27 ;(D.f[dP00])[k ];//ke + real mfabb = (D.f[dM00])[kw];//[kw ];// + c2over27 ;(D.f[dM00])[kw ]; + real mfbcb = (D.f[d0P0])[k];//[kn ];// + c2over27 ;(D.f[d0P0])[k ];//kn + real mfbab = (D.f[d0M0])[ks];//[ks ];// + c2over27 ;(D.f[d0M0])[ks ]; + real mfbbc = (D.f[d00P])[k];//[kt ];// + c2over27 ;(D.f[d00P])[k ];//kt + real mfbba = (D.f[d00M])[kb];//[kb ];// + c2over27 ;(D.f[d00M])[kb ]; + real mfccb = (D.f[dPP0])[k];//[kne ];// + c1over54 ;(D.f[dPP0])[k ];//kne + real mfaab = (D.f[dMM0])[ksw];//[ksw ];// + c1over54 ;(D.f[dMM0])[ksw]; + real mfcab = (D.f[dPM0])[ks];//[kse ];// + c1over54 ;(D.f[dPM0])[ks ];//kse + real mfacb = (D.f[dMP0])[kw];//[knw ];// + c1over54 ;(D.f[dMP0])[kw ];//knw + real mfcbc = (D.f[dP0P])[k];//[kte ];// + c1over54 ;(D.f[dP0P])[k ];//kte + real mfaba = (D.f[dM0M])[kbw];//[kbw ];// + c1over54 ;(D.f[dM0M])[kbw]; + real mfcba = (D.f[dP0M])[kb];//[kbe ];// + c1over54 ;(D.f[dP0M])[kb ];//kbe + real mfabc = (D.f[dM0P])[kw];//[ktw ];// + c1over54 ;(D.f[dM0P])[kw ];//ktw + real mfbcc = (D.f[d0PP])[k];//[ktn ];// + c1over54 ;(D.f[d0PP])[k ];//ktn + real mfbaa = (D.f[d0MM])[kbs];//[kbs ];// + c1over54 ;(D.f[d0MM])[kbs]; + real mfbca = (D.f[d0PM])[kb];//[kbn ];// + c1over54 ;(D.f[d0PM])[kb ];//kbn + real mfbac = (D.f[d0MP])[ks];//[kts ];// + c1over54 ;(D.f[d0MP])[ks ];//kts + real mfbbb = (D.f[d000])[k];//[kzero];// + c8over27 ;(D.f[d000])[k ];//kzero + real mfccc = (D.f[dPPP])[k];//[ktne ];// + c1over216;(D.f[dPPP])[k ];//ktne + real mfaac = (D.f[dMMP])[ksw];//[ktsw ];// + c1over216;(D.f[dMMP])[ksw];//ktsw + real mfcac = (D.f[dPMP])[ks];//[ktse ];// + c1over216;(D.f[dPMP])[ks ];//ktse + real mfacc = (D.f[dMPP])[kw];//[ktnw ];// + c1over216;(D.f[dMPP])[kw ];//ktnw + real mfcca = (D.f[dPPM])[kb];//[kbne ];// + c1over216;(D.f[dPPM])[kb ];//kbne + real mfaaa = (D.f[dMMM])[kbsw];//[kbsw ];// + c1over216;(D.f[dMMM])[kbsw]; + real mfcaa = (D.f[dPMM])[kbs];//[kbse ];// + c1over216;(D.f[dPMM])[kbs];//kbse + real mfaca = (D.f[dMPM])[kbw];//[kbnw ];// + c1over216;(D.f[dMPM])[kbw];//kbnw //////////////////////////////////////////////////////////////////////////////////// //slow //real oMdrho = one - ((((mfccc+mfaaa) + (mfaca+mfcac)) + ((mfacc+mfcaa) + (mfaac+mfcca))) + @@ -732,33 +732,33 @@ __global__ void M02IncompressibleNavierStokes_Device( //////////////////////////////////////////////////////////////////////////////////// - (D.f[DIR_P00])[k] = mfabb;//(D.f[ DIR_P00 ])[ke ] = mfabb;// - c2over27 ; (D.f[ DIR_P00 ])[k ] - (D.f[DIR_M00])[kw] = mfcbb;//(D.f[ DIR_M00 ])[kw ] = mfcbb;// - c2over27 ; (D.f[ DIR_M00 ])[kw ] - (D.f[DIR_0P0])[k] = mfbab;//(D.f[ DIR_0P0 ])[kn ] = mfbab;// - c2over27 ; (D.f[ DIR_0P0 ])[k ] - (D.f[DIR_0M0])[ks] = mfbcb;//(D.f[ DIR_0M0 ])[ks ] = mfbcb;// - c2over27 ; (D.f[ DIR_0M0 ])[ks ] - (D.f[DIR_00P])[k] = mfbba;//(D.f[ DIR_00P ])[kt ] = mfbba;// - c2over27 ; (D.f[ DIR_00P ])[k ] - (D.f[DIR_00M])[kb] = mfbbc;//(D.f[ DIR_00M ])[kb ] = mfbbc;// - c2over27 ; (D.f[ DIR_00M ])[kb ] - (D.f[DIR_PP0])[k] = mfaab;//(D.f[ DIR_PP0 ])[kne ] = mfaab;// - c1over54 ; (D.f[ DIR_PP0 ])[k ] - (D.f[DIR_MM0])[ksw] = mfccb;//(D.f[ DIR_MM0 ])[ksw ] = mfccb;// - c1over54 ; (D.f[ DIR_MM0 ])[ksw ] - (D.f[DIR_PM0])[ks] = mfacb;//(D.f[ DIR_PM0 ])[kse ] = mfacb;// - c1over54 ; (D.f[ DIR_PM0 ])[ks ] - (D.f[DIR_MP0])[kw] = mfcab;//(D.f[ DIR_MP0 ])[knw ] = mfcab;// - c1over54 ; (D.f[ DIR_MP0 ])[kw ] - (D.f[DIR_P0P])[k] = mfaba;//(D.f[ DIR_P0P ])[kte ] = mfaba;// - c1over54 ; (D.f[ DIR_P0P ])[k ] - (D.f[DIR_M0M])[kbw] = mfcbc;//(D.f[ DIR_M0M ])[kbw ] = mfcbc;// - c1over54 ; (D.f[ DIR_M0M ])[kbw ] - (D.f[DIR_P0M])[kb] = mfabc;//(D.f[ DIR_P0M ])[kbe ] = mfabc;// - c1over54 ; (D.f[ DIR_P0M ])[kb ] - (D.f[DIR_M0P])[kw] = mfcba;//(D.f[ DIR_M0P ])[ktw ] = mfcba;// - c1over54 ; (D.f[ DIR_M0P ])[kw ] - (D.f[DIR_0PP])[k] = mfbaa;//(D.f[ DIR_0PP ])[ktn ] = mfbaa;// - c1over54 ; (D.f[ DIR_0PP ])[k ] - (D.f[DIR_0MM])[kbs] = mfbcc;//(D.f[ DIR_0MM ])[kbs ] = mfbcc;// - c1over54 ; (D.f[ DIR_0MM ])[kbs ] - (D.f[DIR_0PM])[kb] = mfbac;//(D.f[ DIR_0PM ])[kbn ] = mfbac;// - c1over54 ; (D.f[ DIR_0PM ])[kb ] - (D.f[DIR_0MP])[ks] = mfbca;//(D.f[ DIR_0MP ])[kts ] = mfbca;// - c1over54 ; (D.f[ DIR_0MP ])[ks ] - (D.f[DIR_000])[k] = mfbbb;//(D.f[ DIR_000])[kzero] = mfbbb;// - c8over27 ; (D.f[ DIR_000])[k ] - (D.f[DIR_PPP])[k] = mfaaa;//(D.f[ DIR_PPP ])[ktne ] = mfaaa;// - c1over216; (D.f[ DIR_PPP ])[k ] - (D.f[DIR_PMP])[ks] = mfaca;//(D.f[ DIR_PMP ])[ktse ] = mfaca;// - c1over216; (D.f[ DIR_PMP ])[ks ] - (D.f[DIR_PPM])[kb] = mfaac;//(D.f[ DIR_PPM ])[kbne ] = mfaac;// - c1over216; (D.f[ DIR_PPM ])[kb ] - (D.f[DIR_PMM])[kbs] = mfacc;//(D.f[ DIR_PMM ])[kbse ] = mfacc;// - c1over216; (D.f[ DIR_PMM ])[kbs ] - (D.f[DIR_MPP])[kw] = mfcaa;//(D.f[ DIR_MPP ])[ktnw ] = mfcaa;// - c1over216; (D.f[ DIR_MPP ])[kw ] - (D.f[DIR_MMP])[ksw] = mfcca;//(D.f[ DIR_MMP ])[ktsw ] = mfcca;// - c1over216; (D.f[ DIR_MMP ])[ksw ] - (D.f[DIR_MPM])[kbw] = mfcac;//(D.f[ DIR_MPM ])[kbnw ] = mfcac;// - c1over216; (D.f[ DIR_MPM ])[kbw ] - (D.f[DIR_MMM])[kbsw] = mfccc;//(D.f[ DIR_MMM ])[kbsw ] = mfccc;// - c1over216; (D.f[ DIR_MMM ])[kbsw] + (D.f[dP00])[k] = mfabb;//(D.f[ dP00 ])[ke ] = mfabb;// - c2over27 ; (D.f[ dP00 ])[k ] + (D.f[dM00])[kw] = mfcbb;//(D.f[ dM00 ])[kw ] = mfcbb;// - c2over27 ; (D.f[ dM00 ])[kw ] + (D.f[d0P0])[k] = mfbab;//(D.f[ d0P0 ])[kn ] = mfbab;// - c2over27 ; (D.f[ d0P0 ])[k ] + (D.f[d0M0])[ks] = mfbcb;//(D.f[ d0M0 ])[ks ] = mfbcb;// - c2over27 ; (D.f[ d0M0 ])[ks ] + (D.f[d00P])[k] = mfbba;//(D.f[ d00P ])[kt ] = mfbba;// - c2over27 ; (D.f[ d00P ])[k ] + (D.f[d00M])[kb] = mfbbc;//(D.f[ d00M ])[kb ] = mfbbc;// - c2over27 ; (D.f[ d00M ])[kb ] + (D.f[dPP0])[k] = mfaab;//(D.f[ dPP0 ])[kne ] = mfaab;// - c1over54 ; (D.f[ dPP0 ])[k ] + (D.f[dMM0])[ksw] = mfccb;//(D.f[ dMM0 ])[ksw ] = mfccb;// - c1over54 ; (D.f[ dMM0 ])[ksw ] + (D.f[dPM0])[ks] = mfacb;//(D.f[ dPM0 ])[kse ] = mfacb;// - c1over54 ; (D.f[ dPM0 ])[ks ] + (D.f[dMP0])[kw] = mfcab;//(D.f[ dMP0 ])[knw ] = mfcab;// - c1over54 ; (D.f[ dMP0 ])[kw ] + (D.f[dP0P])[k] = mfaba;//(D.f[ dP0P ])[kte ] = mfaba;// - c1over54 ; (D.f[ dP0P ])[k ] + (D.f[dM0M])[kbw] = mfcbc;//(D.f[ dM0M ])[kbw ] = mfcbc;// - c1over54 ; (D.f[ dM0M ])[kbw ] + (D.f[dP0M])[kb] = mfabc;//(D.f[ dP0M ])[kbe ] = mfabc;// - c1over54 ; (D.f[ dP0M ])[kb ] + (D.f[dM0P])[kw] = mfcba;//(D.f[ dM0P ])[ktw ] = mfcba;// - c1over54 ; (D.f[ dM0P ])[kw ] + (D.f[d0PP])[k] = mfbaa;//(D.f[ d0PP ])[ktn ] = mfbaa;// - c1over54 ; (D.f[ d0PP ])[k ] + (D.f[d0MM])[kbs] = mfbcc;//(D.f[ d0MM ])[kbs ] = mfbcc;// - c1over54 ; (D.f[ d0MM ])[kbs ] + (D.f[d0PM])[kb] = mfbac;//(D.f[ d0PM ])[kbn ] = mfbac;// - c1over54 ; (D.f[ d0PM ])[kb ] + (D.f[d0MP])[ks] = mfbca;//(D.f[ d0MP ])[kts ] = mfbca;// - c1over54 ; (D.f[ d0MP ])[ks ] + (D.f[d000])[k] = mfbbb;//(D.f[ d000])[kzero] = mfbbb;// - c8over27 ; (D.f[ d000])[k ] + (D.f[dPPP])[k] = mfaaa;//(D.f[ dPPP ])[ktne ] = mfaaa;// - c1over216; (D.f[ dPPP ])[k ] + (D.f[dPMP])[ks] = mfaca;//(D.f[ dPMP ])[ktse ] = mfaca;// - c1over216; (D.f[ dPMP ])[ks ] + (D.f[dPPM])[kb] = mfaac;//(D.f[ dPPM ])[kbne ] = mfaac;// - c1over216; (D.f[ dPPM ])[kb ] + (D.f[dPMM])[kbs] = mfacc;//(D.f[ dPMM ])[kbse ] = mfacc;// - c1over216; (D.f[ dPMM ])[kbs ] + (D.f[dMPP])[kw] = mfcaa;//(D.f[ dMPP ])[ktnw ] = mfcaa;// - c1over216; (D.f[ dMPP ])[kw ] + (D.f[dMMP])[ksw] = mfcca;//(D.f[ dMMP ])[ktsw ] = mfcca;// - c1over216; (D.f[ dMMP ])[ksw ] + (D.f[dMPM])[kbw] = mfcac;//(D.f[ dMPM ])[kbnw ] = mfcac;// - c1over216; (D.f[ dMPM ])[kbw ] + (D.f[dMMM])[kbsw] = mfccc;//(D.f[ dMMM ])[kbsw ] = mfccc;// - c1over216; (D.f[ dMMM ])[kbsw] //////////////////////////////////////////////////////////////////////////////////// } } diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Incompressible/FluidFlow/M02/M02IncompressibleNavierStokes_Device.cuh b/src/gpu/core/Kernel/Incompressible/NavierStokes/M02/M02IncompressibleNavierStokes_Device.cuh similarity index 100% rename from src/gpu/VirtualFluids_GPU/Kernel/Incompressible/FluidFlow/M02/M02IncompressibleNavierStokes_Device.cuh rename to src/gpu/core/Kernel/Incompressible/NavierStokes/M02/M02IncompressibleNavierStokes_Device.cuh diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Kernel.h b/src/gpu/core/Kernel/Kernel.h similarity index 88% rename from src/gpu/VirtualFluids_GPU/Kernel/Kernel.h rename to src/gpu/core/Kernel/Kernel.h index d83901a0f7d6a7df8120673a4b14371a6e935aef..bb944d6ed876a2fa6b6582eb2995cc20d1430d85 100644 --- a/src/gpu/VirtualFluids_GPU/Kernel/Kernel.h +++ b/src/gpu/core/Kernel/Kernel.h @@ -17,7 +17,6 @@ public: virtual void run() = 0; virtual void runOnIndices(const unsigned int *indices, unsigned int size_indices, CollisionTemplate collisionTemplate, CudaStreamIndex streamIdx=CudaStreamIndex::Legacy) = 0; - virtual bool checkParameter() = 0; virtual std::vector<PreProcessorType> getPreProcessorTypes() = 0; }; #endif diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Utilities/KernelFactory/KernelFactory.h b/src/gpu/core/Kernel/KernelFactory/KernelFactory.h similarity index 66% rename from src/gpu/VirtualFluids_GPU/Kernel/Utilities/KernelFactory/KernelFactory.h rename to src/gpu/core/Kernel/KernelFactory/KernelFactory.h index 26c68f74a3650ea43261fdd66b567ecbd391cb10..05755f0eba9c0c0c0bd8fdbab2a2ce4f4590293b 100644 --- a/src/gpu/VirtualFluids_GPU/Kernel/Utilities/KernelFactory/KernelFactory.h +++ b/src/gpu/core/Kernel/KernelFactory/KernelFactory.h @@ -6,19 +6,19 @@ #include <string> #include <vector> -#include "VirtualFluids_GPU_export.h" + class Kernel; -class ADKernel; +class AdvectionDiffusionKernel; class Parameter; class PorousMedia; -class VIRTUALFLUIDS_GPU_EXPORT KernelFactory +class KernelFactory { public: virtual ~KernelFactory() = default; virtual std::vector< std::shared_ptr< Kernel>> makeKernels(std::shared_ptr<Parameter> para) = 0; - virtual std::vector< std::shared_ptr< ADKernel>> makeAdvDifKernels(std::shared_ptr<Parameter> para) = 0; + virtual std::vector< std::shared_ptr< AdvectionDiffusionKernel>> makeAdvDifKernels(std::shared_ptr<Parameter> para) = 0; virtual void setPorousMedia(std::vector<std::shared_ptr<PorousMedia>> pm) = 0; }; diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Utilities/KernelFactory/KernelFactoryImp.cpp b/src/gpu/core/Kernel/KernelFactory/KernelFactoryImp.cpp similarity index 50% rename from src/gpu/VirtualFluids_GPU/Kernel/Utilities/KernelFactory/KernelFactoryImp.cpp rename to src/gpu/core/Kernel/KernelFactory/KernelFactoryImp.cpp index 1ae8519670a93dcf6c3e3b1ca7a160e98167d27d..aa4e80920f7613a7e470e7cc90fdd258a6f90279 100644 --- a/src/gpu/VirtualFluids_GPU/Kernel/Utilities/KernelFactory/KernelFactoryImp.cpp +++ b/src/gpu/core/Kernel/KernelFactory/KernelFactoryImp.cpp @@ -4,59 +4,49 @@ #include "Parameter/Parameter.h" -#include "Kernel/Utilities/KernelTypes.h" +#include "Kernel/KernelTypes.h" //LBM kernel (compressible) -#include "Kernel/Compressible/FluidFlow/B92/B92CompressibleNavierStokes.h" -#include "Kernel/Compressible/FluidFlow/B15/B15CompressibleNavierStokesBGKplus.h" -#include "Kernel/Compressible/FluidFlow/M02/M02CompressibleNavierStokes.h" -#include "Kernel/Compressible/FluidFlow/C06/C06CompressibleNavierStokes.h" -#include "Kernel/Compressible/FluidFlow/K08/K08CompressibleNavierStokes.h" -#include "Kernel/Compressible/FluidFlow/K15/K15CompressibleNavierStokes.h" -#include "Kernel/Compressible/FluidFlow/K15/K15CompressibleNavierStokesBulkViscosity.h" -#include "Kernel/Compressible/FluidFlow/K15/K15CompressibleNavierStokesSponge.h" -#include "Kernel/Compressible/FluidFlow/K17/K17CompressibleNavierStokes.h" -#include "Kernel/Compressible/FluidFlow/K17/K17CompressibleNavierStokesChimeraLegacy.h" -#include "Kernel/Compressible/FluidFlow/K17/K17CompressibleNavierStokesBulkViscosity.h" -#include "Kernel/Compressible/FluidFlow/K17/K17CompressibleNavierStokesSecondDerivatesFrom5thCumulants.h" -#include "Kernel/Compressible/FluidFlow/K18/K18CompressibleNavierStokes.h" -#include "Kernel/Compressible/FluidFlow/K20/K20CompressibleNavierStokes.h" +#include "Kernel/Compressible/NavierStokes/B92/B92CompressibleNavierStokes.h" +#include "Kernel/Compressible/NavierStokes/B15/B15CompressibleNavierStokesBGKplus.h" +#include "Kernel/Compressible/NavierStokes/M02/M02CompressibleNavierStokes.h" +#include "Kernel/Compressible/NavierStokes/C06/C06CompressibleNavierStokes.h" +#include "Kernel/Compressible/NavierStokes/K08/K08CompressibleNavierStokes.h" +#include "Kernel/Compressible/NavierStokes/K15/K15CompressibleNavierStokes.h" +#include "Kernel/Compressible/NavierStokes/K15/K15CompressibleNavierStokesBulkViscosity.h" +#include "Kernel/Compressible/NavierStokes/K15/K15CompressibleNavierStokesSponge.h" +#include "Kernel/Compressible/NavierStokes/K17/K17CompressibleNavierStokes.h" +#include "Kernel/Compressible/NavierStokes/K17/K17CompressibleNavierStokesChimeraLegacy.h" +#include "Kernel/Compressible/NavierStokes/K17/K17CompressibleNavierStokesBulkViscosity.h" +#include "Kernel/Compressible/NavierStokes/K17/K17CompressibleNavierStokesSecondDerivatesFrom5thCumulants.h" +#include "Kernel/Compressible/NavierStokes/K18/K18CompressibleNavierStokes.h" +#include "Kernel/Compressible/NavierStokes/K20/K20CompressibleNavierStokes.h" //LBM kernel (inkompressible) -#include "Kernel/Incompressible/FluidFlow/B92/B92IncompressibleNavierStokes.h" -#include "Kernel/Incompressible/FluidFlow/B15/B15IncompressibleNavierStokesBGKplus.h" -#include "Kernel/Incompressible/FluidFlow/C06/C06IncompressibleNavierStokes.h" -#include "Kernel/Incompressible/FluidFlow/K15/K15IncompressibleNavierStokesRotatingVelocityField.h" -#include "Kernel/Incompressible/FluidFlow/K15/K15IncompressibleNavierStokesIsoCheck.h" -#include "Kernel/Incompressible/FluidFlow/K15/K15IncompressibleNavierStokes.h" -#include "Kernel/Incompressible/FluidFlow/M02/M02IncompressibleNavierStokes.h" +#include "Kernel/Incompressible/NavierStokes/B92/B92IncompressibleNavierStokes.h" +#include "Kernel/Incompressible/NavierStokes/B15/B15IncompressibleNavierStokesBGKplus.h" +#include "Kernel/Incompressible/NavierStokes/C06/C06IncompressibleNavierStokes.h" +#include "Kernel/Incompressible/NavierStokes/K15/K15IncompressibleNavierStokesRotatingVelocityField.h" +#include "Kernel/Incompressible/NavierStokes/K15/K15IncompressibleNavierStokesIsoCheck.h" +#include "Kernel/Incompressible/NavierStokes/K15/K15IncompressibleNavierStokes.h" +#include "Kernel/Incompressible/NavierStokes/M02/M02IncompressibleNavierStokes.h" //advection diffusion kernel (compressible) -#include "Kernel/Kernels/BasicKernels/AdvectionDiffusion/Compressible/Mod27/ADComp27/ADComp27.h" -#include "Kernel/Kernels/BasicKernels/AdvectionDiffusion/Compressible/Mod7/ADComp7/ADComp7.h" +#include "Kernel/Compressible/AdvectionDiffusion/D3Q27/F16/F16CompressibleAdvectionDiffusion.h" +#include "Kernel/Compressible/AdvectionDiffusion/D3Q7/B12/B12CompressibleAdvectionDiffusionD3Q7.h" //advection diffusion kernel (incompressible) -#include "Kernel/Kernels/BasicKernels/AdvectionDiffusion/Incompressible/Mod27/ADIncomp27/ADIncomp27.h" -#include "Kernel/Kernels/BasicKernels/AdvectionDiffusion/Incompressible/Mod7/ADIncomp7/ADIncomp7.h" +#include "Kernel/Incompressible/AdvectionDiffusion/D3Q27/F16/F16IncompressibleAdvectionDiffusion.h" +#include "Kernel/Incompressible/AdvectionDiffusion/D3Q7/B12/B12IncompressibleAdvectionDiffusionD3Q7.h" //porous media kernel -#include "Kernel/Kernels/PorousMediaKernels/FluidFlow/Compressible/CumulantOne/PMCumulantOneCompSP27.h" - -//wale kernel -#include "Kernel/Kernels/WaleKernels/FluidFlow/Compressible/CumulantK17/WaleCumulantK17Comp.h" -#include "Kernel/Kernels/WaleKernels/FluidFlow/Compressible/CumulantK17Debug/WaleCumulantK17DebugComp.h" -#include "Kernel/Kernels/WaleKernels/FluidFlow/Compressible/CumulantK15/WaleCumulantK15Comp.h" -#include "Kernel/Kernels/WaleKernels/FluidFlow/Compressible/CumulantK15BySoniMalav/WaleBySoniMalavCumulantK15Comp.h" - -//strategies -#include "Kernel/Compressible/FluidFlow/FluidFlowCompStrategy.h" -#include "Kernel/Incompressible/FluidFlow/FluidFlowIncompStrategy.h" -#include "Kernel/Kernels/BasicKernels/AdvectionDiffusion/Compressible/Mod27/ADMod27CompStrategy.h" -#include "Kernel/Kernels/BasicKernels/AdvectionDiffusion/Compressible/Mod7/ADMod7CompStrategy.h" -#include "Kernel/Kernels/BasicKernels/AdvectionDiffusion/Incompressible/Mod27/ADMod27IncompStrategy.h" -#include "Kernel/Kernels/BasicKernels/AdvectionDiffusion/Incompressible/Mod7/ADMod7IncompStrategy.h" -#include "Kernel/Kernels/PorousMediaKernels/FluidFlow/Compressible/PMFluidFlowCompStrategy.h" -#include "Kernel/Kernels/WaleKernels/FluidFlow/Compressible/WaleFluidFlowCompStrategy.h" +#include "Kernel/Compressible/NavierStokes/K15PorousMedia/K15CompressibleNavierStokesPorousMedia.h" + +//wale kernel+ +#include "Kernel/Compressible/NavierStokes/K17Wale/K17CompressibleNavierStokesWale.h" +#include "Kernel/Compressible/NavierStokes/K17WaleDebug/K17CompressibleNavierStokesWaleDebug.h" +#include "Kernel/Compressible/NavierStokes/K15Wale/K15CompressibleNavierStokesWale.h" +#include "Kernel/Compressible/NavierStokes/K15WaleSM/K15CompressibleNavierStokesWaleBySoniMalav.h" #include <lbm/collision/TurbulentViscosity.h> @@ -75,9 +65,9 @@ std::vector<std::shared_ptr<Kernel>> KernelFactoryImp::makeKernels(std::shared_p return kernels; } -std::vector<std::shared_ptr<ADKernel>> KernelFactoryImp::makeAdvDifKernels(std::shared_ptr<Parameter> para) +std::vector<std::shared_ptr<AdvectionDiffusionKernel>> KernelFactoryImp::makeAdvDifKernels(std::shared_ptr<Parameter> para) { - std::vector< std::shared_ptr< ADKernel>> aDKernels; + std::vector< std::shared_ptr< AdvectionDiffusionKernel>> aDKernels; for (int level = 0; level <= para->getMaxLevel(); level++) aDKernels.push_back(makeAdvDifKernel(para, para->getADKernel(), level)); return aDKernels; @@ -97,29 +87,21 @@ std::shared_ptr<Kernel> KernelFactoryImp::makeKernel(std::shared_ptr<Parameter> { VF_LOG_INFO("Instantiating Kernel: {}", kernel); std::shared_ptr<KernelImp> newKernel; - std::shared_ptr<CheckParameterStrategy> checkStrategy; if (kernel == collisionKernel::compressible::BGK) { newKernel = B92CompressibleNavierStokes::getNewInstance(para, level); // compressible - checkStrategy = FluidFlowCompStrategy::getInstance(); // || } else if (kernel == collisionKernel::compressible::BGKPlus) { newKernel = B15CompressibleNavierStokesBGKplus::getNewInstance(para, level); - checkStrategy = FluidFlowCompStrategy::getInstance(); } else if (kernel == collisionKernel::compressible::MRT) { newKernel = M02CompressibleNavierStokes::getNewInstance(para, level); - checkStrategy = FluidFlowCompStrategy::getInstance(); } else if (kernel == collisionKernel::compressible::Cascade) { newKernel = C06CompressibleNavierStokes::getNewInstance(para, level); - checkStrategy = FluidFlowCompStrategy::getInstance(); } else if (kernel == collisionKernel::compressible::CumulantClassic) { newKernel = K08CompressibleNavierStokes::getNewInstance(para, level); - checkStrategy = FluidFlowCompStrategy::getInstance(); } else if (kernel == collisionKernel::compressible::K17CompressibleNavierStokesBulkViscosity) { newKernel = K17CompressibleNavierStokesBulkViscosity::getNewInstance(para, level); - checkStrategy = FluidFlowCompStrategy::getInstance(); } else if (kernel == collisionKernel::compressible::K17CompressibleNavierStokesChimeraLegacy) { newKernel = K17CompressibleNavierStokesChimeraLegacy::getNewInstance(para, level); - checkStrategy = FluidFlowCompStrategy::getInstance(); } else if (kernel == collisionKernel::compressible::K17CompressibleNavierStokes){ switch(para->getTurbulenceModel()) { @@ -139,98 +121,66 @@ std::shared_ptr<Kernel> KernelFactoryImp::makeKernel(std::shared_ptr<Parameter> throw std::runtime_error("Unknown turbulence model!"); break; } - checkStrategy = FluidFlowCompStrategy::getInstance(); } else if (kernel == collisionKernel::compressible::CumulantAll4SP27) { newKernel = K17CompressibleNavierStokesSecondDerivatesFrom5thCumulants::getNewInstance(para, level); - checkStrategy = FluidFlowCompStrategy::getInstance(); } else if (kernel == collisionKernel::compressible::CumulantK18) { newKernel = K18CompressibleNavierStokes::getNewInstance(para, level); - checkStrategy = FluidFlowCompStrategy::getInstance(); } else if (kernel == collisionKernel::compressible::CumulantK20) { newKernel = K20CompressibleNavierStokes::getNewInstance(para, level); - checkStrategy = FluidFlowCompStrategy::getInstance(); } else if (kernel == collisionKernel::compressible::K15CompressibleNavierStokes) { newKernel = K15CompressibleNavierStokes::getNewInstance(para, level); - checkStrategy = FluidFlowCompStrategy::getInstance(); } else if (kernel == collisionKernel::compressible::K15CompressibleNavierStokesBulk) { newKernel = K15CompressibleNavierStokesBulkViscosity::getNewInstance(para, level); - checkStrategy = FluidFlowCompStrategy::getInstance(); } else if (kernel == collisionKernel::compressible::K15CompressibleNavierStokesSponge) { // /\ // newKernel = K15CompressibleNavierStokesSponge::getNewInstance(para, level); // || - checkStrategy = FluidFlowCompStrategy::getInstance(); // compressible } //=============== else if ( kernel == collisionKernel::incompressible::BGK) { // incompressible newKernel = B92IncompressibleNavierStokes::getNewInstance(para, level); // || - checkStrategy = FluidFlowIncompStrategy::getInstance(); // \/ } else if (kernel == collisionKernel::incompressible::BGKPlus) { newKernel = B15IncompressibleNavierStokesBGKplus::getNewInstance(para, level); - checkStrategy = FluidFlowIncompStrategy::getInstance(); } else if (kernel == collisionKernel::incompressible::MRT) { newKernel = M02IncompressibleNavierStokes::getNewInstance(para, level); - checkStrategy = FluidFlowIncompStrategy::getInstance(); } else if (kernel == collisionKernel::incompressible::Cascade) { newKernel = C06IncompressibleNavierStokes::getNewInstance(para, level); - checkStrategy = FluidFlowIncompStrategy::getInstance(); } else if (kernel == collisionKernel::incompressible::Cumulant1h) { newKernel = K15IncompressibleNavierStokesRotatingVelocityField::getNewInstance(para, level); - checkStrategy = FluidFlowIncompStrategy::getInstance(); - //} else if (kernel == collisionKernel::incompressible::CumulantIsometric) { - // newKernel = K15IncompressibleNavierStokesIsoTest::getNewInstance(para, level); - // checkStrategy = FluidFlowIncompStrategy::getInstance(); } else if (kernel == collisionKernel::incompressible::CumulantK15) { // /\ // newKernel = K15IncompressibleNavierStokes::getNewInstance(para, level); // || - checkStrategy = FluidFlowIncompStrategy::getInstance(); // incompressible } //=============== else if (kernel == collisionKernel::porousMedia::CumulantOne) { // porous media - newKernel = PMCumulantOneCompSP27::getNewInstance(para, pm, level); // || - checkStrategy = PMFluidFlowCompStrategy::getInstance(); // porous media + newKernel = K15CompressibleNavierStokesPorousMedia::getNewInstance(para, pm, level); // || } //=============== else if (kernel == collisionKernel::wale::CumulantK17) { // wale model - newKernel = WaleCumulantK17Comp::getNewInstance(para, level); // || - checkStrategy = WaleFluidFlowCompStrategy::getInstance(); // \/ + newKernel = K17CompressibleNavierStokesWale::getNewInstance(para, level); // || } else if (kernel == collisionKernel::wale::CumulantK17Debug) { - newKernel = WaleCumulantK17DebugComp::getNewInstance(para, level); - checkStrategy = WaleFluidFlowCompStrategy::getInstance(); + newKernel = K17CompressibleNavierStokesWaleDebug::getNewInstance(para, level); } else if (kernel == collisionKernel::wale::CumulantK15) { - newKernel = WaleCumulantK15Comp::getNewInstance(para, level); - checkStrategy = WaleFluidFlowCompStrategy::getInstance(); + newKernel = K15CompressibleNavierStokesWale::getNewInstance(para, level); } else if (kernel == collisionKernel::wale::CumulantK15SoniMalav) { // /\ // - newKernel = WaleBySoniMalavCumulantK15Comp::getNewInstance(para, level); // || - checkStrategy = WaleFluidFlowCompStrategy::getInstance(); // wale model + newKernel = K15CompressibleNavierStokesWaleBySoniMalav::getNewInstance(para, level); // || } //=============== else { throw std::runtime_error("KernelFactory does not know the KernelType."); } - newKernel->setCheckParameterStrategy(checkStrategy); para->setKernelNeedsFluidNodeIndicesToRun(newKernel->getKernelUsesFluidNodeIndices()); return newKernel; } -std::shared_ptr<ADKernel> KernelFactoryImp::makeAdvDifKernel(std::shared_ptr<Parameter> para, std::string kernel, int level) +std::shared_ptr<AdvectionDiffusionKernel> KernelFactoryImp::makeAdvDifKernel(std::shared_ptr<Parameter> para, std::string kernel, int level) { - std::shared_ptr<ADKernel> newKernel; - std::shared_ptr<CheckParameterStrategy> checkStrategy; + std::shared_ptr<AdvectionDiffusionKernel> newKernel; if (kernel == "ADComp27") { - newKernel = ADComp27::getNewInstance(para, level); - checkStrategy = ADMod27CompStrategy::getInstance(); + newKernel = F16CompressibleAdvectionDiffusion::getNewInstance(para, level); } else if(kernel == "ADComp7") { - newKernel = ADComp7::getNewInstance(para, level); - checkStrategy = ADMod7CompStrategy::getInstance(); + newKernel = B12CompressibleAdvectionDiffusionD3Q7::getNewInstance(para, level); } else if (kernel == "ADIncomp27") { - newKernel = ADIncomp27::getNewInstance(para, level); - checkStrategy = ADMod7IncompStrategy::getInstance(); + newKernel = F16IncompressibleAdvectionDiffusion::getNewInstance(para, level); } else if (kernel == "ADIncomp7") { - newKernel = ADIncomp7::getNewInstance(para, level); - checkStrategy = ADMod7IncompStrategy::getInstance(); + newKernel = B12IncompressibleAdvectionDiffusionD3Q7::getNewInstance(para, level); } else { throw std::runtime_error("KernelFactory does not know the KernelType."); } - if (newKernel) { - newKernel->setCheckParameterStrategy(checkStrategy); - return newKernel; - } - else - throw std::runtime_error("KernelFactory does not know the KernelType."); + return newKernel; } diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Utilities/KernelFactory/KernelFactoryImp.h b/src/gpu/core/Kernel/KernelFactory/KernelFactoryImp.h similarity index 66% rename from src/gpu/VirtualFluids_GPU/Kernel/Utilities/KernelFactory/KernelFactoryImp.h rename to src/gpu/core/Kernel/KernelFactory/KernelFactoryImp.h index 064e9fbddfce4ddc71195536bfd5c20cd88660ee..3f1539413f69c178c1cba68f42cb6121e235ea62 100644 --- a/src/gpu/VirtualFluids_GPU/Kernel/Utilities/KernelFactory/KernelFactoryImp.h +++ b/src/gpu/core/Kernel/KernelFactory/KernelFactoryImp.h @@ -5,16 +5,16 @@ class PorousMedia; -class VIRTUALFLUIDS_GPU_EXPORT KernelFactoryImp : public KernelFactory +class KernelFactoryImp : public KernelFactory { public: std::vector< std::shared_ptr< Kernel>> makeKernels(std::shared_ptr<Parameter> para); - std::vector< std::shared_ptr< ADKernel>> makeAdvDifKernels(std::shared_ptr<Parameter> para); + std::vector< std::shared_ptr< AdvectionDiffusionKernel>> makeAdvDifKernels(std::shared_ptr<Parameter> para); void setPorousMedia(std::vector<std::shared_ptr<PorousMedia>> pm); std::shared_ptr<Kernel> makeKernel(std::shared_ptr<Parameter> para, std::string kernel, int level); - std::shared_ptr<ADKernel> makeAdvDifKernel(std::shared_ptr<Parameter> para, std::string kernel, int level); + std::shared_ptr<AdvectionDiffusionKernel> makeAdvDifKernel(std::shared_ptr<Parameter> para, std::string kernel, int level); void setKernelAtLevel(std::vector< std::shared_ptr<Kernel>> kernels, std::shared_ptr<Parameter> para, std::string kernel, int level); std::vector<std::shared_ptr<PorousMedia>> pm; diff --git a/src/gpu/VirtualFluids_GPU/Kernel/KernelImp.cpp b/src/gpu/core/Kernel/KernelImp.cpp similarity index 66% rename from src/gpu/VirtualFluids_GPU/Kernel/KernelImp.cpp rename to src/gpu/core/Kernel/KernelImp.cpp index 328cf8db260bc0092cb2081998961d1e9fb17233..aee14eb73fd5324980fb73827ab81f344e1d402c 100644 --- a/src/gpu/VirtualFluids_GPU/Kernel/KernelImp.cpp +++ b/src/gpu/core/Kernel/KernelImp.cpp @@ -2,28 +2,17 @@ #include "LBM/LB.h" -#include "Kernel/Utilities/CheckParameterStrategy/CheckParameterStrategy.h" - void KernelImp::runOnIndices(const unsigned int *indices, unsigned int size_indices, CollisionTemplate collisionTemplate, CudaStreamIndex streamIndex) { printf("Method not implemented for this Kernel \n"); } -bool KernelImp::checkParameter() { - return checkStrategy->checkParameter(para); -} - std::vector<PreProcessorType> KernelImp::getPreProcessorTypes() { return myPreProcessorTypes; } -void KernelImp::setCheckParameterStrategy(std::shared_ptr<CheckParameterStrategy> strategy) -{ - this->checkStrategy = strategy; -} - bool KernelImp::getKernelUsesFluidNodeIndices(){ return this->kernelUsesFluidNodeIndices; } diff --git a/src/gpu/VirtualFluids_GPU/Kernel/KernelImp.h b/src/gpu/core/Kernel/KernelImp.h similarity index 80% rename from src/gpu/VirtualFluids_GPU/Kernel/KernelImp.h rename to src/gpu/core/Kernel/KernelImp.h index 00d392c9e8ff7b8c55b75f50327946b0140a3d68..c3397dc7fa23a54334d10c328f6ca1cf9cfc03ee 100644 --- a/src/gpu/VirtualFluids_GPU/Kernel/KernelImp.h +++ b/src/gpu/core/Kernel/KernelImp.h @@ -9,7 +9,6 @@ #include <cuda_helper/CudaGrid.h> -class CheckParameterStrategy; class Parameter; class CudaStreamManager; class KernelImp : public Kernel @@ -18,10 +17,8 @@ public: virtual void run() = 0; virtual void runOnIndices(const unsigned int *indices, unsigned int size_indices, CollisionTemplate collisionTemplate, CudaStreamIndex streamIndex=CudaStreamIndex::Legacy); - bool checkParameter(); std::vector<PreProcessorType> getPreProcessorTypes(); - void setCheckParameterStrategy(std::shared_ptr<CheckParameterStrategy> strategy); bool getKernelUsesFluidNodeIndices(); protected: @@ -29,7 +26,6 @@ protected: KernelImp(); std::shared_ptr<Parameter> para; - std::shared_ptr<CheckParameterStrategy> checkStrategy; int level; std::vector<PreProcessorType> myPreProcessorTypes; vf::cuda::CudaGrid cudaGrid; diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Utilities/KernelTypes.h b/src/gpu/core/Kernel/KernelTypes.h similarity index 100% rename from src/gpu/VirtualFluids_GPU/Kernel/Utilities/KernelTypes.h rename to src/gpu/core/Kernel/KernelTypes.h diff --git a/src/gpu/VirtualFluids_GPU/KernelManager/ADKernelManager.cpp b/src/gpu/core/KernelManager/ADKernelManager.cpp similarity index 100% rename from src/gpu/VirtualFluids_GPU/KernelManager/ADKernelManager.cpp rename to src/gpu/core/KernelManager/ADKernelManager.cpp diff --git a/src/gpu/VirtualFluids_GPU/KernelManager/ADKernelManager.h b/src/gpu/core/KernelManager/ADKernelManager.h similarity index 96% rename from src/gpu/VirtualFluids_GPU/KernelManager/ADKernelManager.h rename to src/gpu/core/KernelManager/ADKernelManager.h index d961452575b905acb96fbc1c30ff0d5e71af2722..30a3b0530d842fdb4a97bfa59d554c983952a579 100644 --- a/src/gpu/VirtualFluids_GPU/KernelManager/ADKernelManager.h +++ b/src/gpu/core/KernelManager/ADKernelManager.h @@ -33,9 +33,9 @@ #ifndef ADVECTION_DIFFUSION_H #define ADVECTION_DIFFUSION_H -#include "DataTypes.h" -#include "PointerDefinitions.h" -#include "VirtualFluids_GPU_export.h" +#include <basics/DataTypes.h> +#include <basics/PointerDefinitions.h> + //! \brief Class forwarding for Parameter, CudaMemoryManager class Parameter; @@ -43,7 +43,7 @@ class CudaMemoryManager; //! \class ADKernelManager //! \brief manage the advection diffusion kernel calls -class VIRTUALFLUIDS_GPU_EXPORT ADKernelManager +class ADKernelManager { public: diff --git a/src/gpu/VirtualFluids_GPU/KernelManager/BCKernelManager.cpp b/src/gpu/core/KernelManager/BCKernelManager.cpp similarity index 100% rename from src/gpu/VirtualFluids_GPU/KernelManager/BCKernelManager.cpp rename to src/gpu/core/KernelManager/BCKernelManager.cpp diff --git a/src/gpu/VirtualFluids_GPU/KernelManager/BCKernelManager.h b/src/gpu/core/KernelManager/BCKernelManager.h similarity index 98% rename from src/gpu/VirtualFluids_GPU/KernelManager/BCKernelManager.h rename to src/gpu/core/KernelManager/BCKernelManager.h index 339100e6b5307e8e60f8d0846560bf89c6eea1a1..1961f25f4f9d6ca899d07158aaeeb7caab2b2738 100644 --- a/src/gpu/VirtualFluids_GPU/KernelManager/BCKernelManager.h +++ b/src/gpu/core/KernelManager/BCKernelManager.h @@ -38,8 +38,8 @@ #include <string> #include "LBM/LB.h" -#include "PointerDefinitions.h" -#include "VirtualFluids_GPU_export.h" +#include <basics/PointerDefinitions.h> + class CudaMemoryManager; @@ -54,7 +54,7 @@ using precursorBoundaryCondition = std::function<void(LBMSimulationParameter *, //! \class BCKernelManager //! \brief manage the cuda kernel calls to boundary conditions //! \details This class stores the boundary conditions and manages the calls to the boundary condition kernels. -class VIRTUALFLUIDS_GPU_EXPORT BCKernelManager +class BCKernelManager { public: //! Class constructor diff --git a/src/gpu/VirtualFluids_GPU/KernelManager/BCKernelManagerTest.cpp b/src/gpu/core/KernelManager/BCKernelManagerTest.cpp similarity index 99% rename from src/gpu/VirtualFluids_GPU/KernelManager/BCKernelManagerTest.cpp rename to src/gpu/core/KernelManager/BCKernelManagerTest.cpp index 6b429d2d9c03e546286d3d2b0ced3612c0a4649a..3cb6138ca203f70fb65dad44cb1d317c098cb3b2 100644 --- a/src/gpu/VirtualFluids_GPU/KernelManager/BCKernelManagerTest.cpp +++ b/src/gpu/core/KernelManager/BCKernelManagerTest.cpp @@ -5,7 +5,7 @@ #include "BCKernelManager.h" #include "Factories/BoundaryConditionFactory.h" #include "Parameter/Parameter.h" -#include "PointerDefinitions.h" +#include <basics/PointerDefinitions.h> class BCKernelManagerTest_BCsNotSpecified : public testing::Test { diff --git a/src/gpu/VirtualFluids_GPU/KernelManager/GridScalingKernelManager.cpp b/src/gpu/core/KernelManager/GridScalingKernelManager.cpp similarity index 100% rename from src/gpu/VirtualFluids_GPU/KernelManager/GridScalingKernelManager.cpp rename to src/gpu/core/KernelManager/GridScalingKernelManager.cpp diff --git a/src/gpu/VirtualFluids_GPU/KernelManager/GridScalingKernelManager.h b/src/gpu/core/KernelManager/GridScalingKernelManager.h similarity index 97% rename from src/gpu/VirtualFluids_GPU/KernelManager/GridScalingKernelManager.h rename to src/gpu/core/KernelManager/GridScalingKernelManager.h index 0c24801506b9a19985d1a805b349d0b58e9bbf84..6bfafef8e3b20519b2ad7e6a267476f465a47ecf 100644 --- a/src/gpu/VirtualFluids_GPU/KernelManager/GridScalingKernelManager.h +++ b/src/gpu/core/KernelManager/GridScalingKernelManager.h @@ -34,8 +34,8 @@ #define GridScalingKernelManager_H #include "LBM/LB.h" -#include "PointerDefinitions.h" -#include "VirtualFluids_GPU_export.h" +#include <basics/PointerDefinitions.h> + #include <logger/Logger.h> #include <functional> #include <memory> @@ -53,7 +53,7 @@ using gridScaling = //! \class GridScalingKernelManager //! \brief manage the cuda kernel calls -class VIRTUALFLUIDS_GPU_EXPORT GridScalingKernelManager +class GridScalingKernelManager { public: //! Class constructor diff --git a/src/gpu/VirtualFluids_GPU/KernelManager/GridScalingKernelManagerTest.cpp b/src/gpu/core/KernelManager/GridScalingKernelManagerTest.cpp similarity index 98% rename from src/gpu/VirtualFluids_GPU/KernelManager/GridScalingKernelManagerTest.cpp rename to src/gpu/core/KernelManager/GridScalingKernelManagerTest.cpp index b86e167ca8d2f95897b1a87d4b850acbfbe8a1b3..6972cec264e9407f79641618cbe08a4077e70b6b 100644 --- a/src/gpu/VirtualFluids_GPU/KernelManager/GridScalingKernelManagerTest.cpp +++ b/src/gpu/core/KernelManager/GridScalingKernelManagerTest.cpp @@ -4,7 +4,7 @@ #include "GridScalingKernelManager.h" #include "Factories/GridScalingFactory.h" #include "Parameter/Parameter.h" -#include "PointerDefinitions.h" +#include <basics/PointerDefinitions.h> class GridScalingKernelManagerTest_Initialization : public testing::Test { diff --git a/src/gpu/VirtualFluids_GPU/LBM/GPUHelperFunctions/ChimeraTransformation.h b/src/gpu/core/LBM/GPUHelperFunctions/ChimeraTransformation.h similarity index 100% rename from src/gpu/VirtualFluids_GPU/LBM/GPUHelperFunctions/ChimeraTransformation.h rename to src/gpu/core/LBM/GPUHelperFunctions/ChimeraTransformation.h diff --git a/src/gpu/VirtualFluids_GPU/LBM/GPUHelperFunctions/CoordinateTransformation.h b/src/gpu/core/LBM/GPUHelperFunctions/CoordinateTransformation.h similarity index 100% rename from src/gpu/VirtualFluids_GPU/LBM/GPUHelperFunctions/CoordinateTransformation.h rename to src/gpu/core/LBM/GPUHelperFunctions/CoordinateTransformation.h diff --git a/src/gpu/VirtualFluids_GPU/LBM/GPUHelperFunctions/CoordinateTransformationTest.h b/src/gpu/core/LBM/GPUHelperFunctions/CoordinateTransformationTest.h similarity index 100% rename from src/gpu/VirtualFluids_GPU/LBM/GPUHelperFunctions/CoordinateTransformationTest.h rename to src/gpu/core/LBM/GPUHelperFunctions/CoordinateTransformationTest.h diff --git a/src/gpu/VirtualFluids_GPU/LBM/GPUHelperFunctions/GridTraversion.h b/src/gpu/core/LBM/GPUHelperFunctions/GridTraversion.h similarity index 100% rename from src/gpu/VirtualFluids_GPU/LBM/GPUHelperFunctions/GridTraversion.h rename to src/gpu/core/LBM/GPUHelperFunctions/GridTraversion.h diff --git a/src/gpu/core/LBM/GPUHelperFunctions/KernelUtilities.h b/src/gpu/core/LBM/GPUHelperFunctions/KernelUtilities.h new file mode 100644 index 0000000000000000000000000000000000000000..ad75d197ee661b003ef71c01b01314df377fb6a0 --- /dev/null +++ b/src/gpu/core/LBM/GPUHelperFunctions/KernelUtilities.h @@ -0,0 +1,394 @@ +//======================================================================================= +// ____ ____ __ ______ __________ __ __ __ __ +// \ \ | | | | | _ \ |___ ___| | | | | / \ | | +// \ \ | | | | | |_) | | | | | | | / \ | | +// \ \ | | | | | _ / | | | | | | / /\ \ | | +// \ \ | | | | | | \ \ | | | \__/ | / ____ \ | |____ +// \ \ | | |__| |__| \__\ |__| \________/ /__/ \__\ |_______| +// \ \ | | ________________________________________________________________ +// \ \ | | | ______________________________________________________________| +// \ \| | | | __ __ __ __ ______ _______ +// \ | | |_____ | | | | | | | | | _ \ / _____) +// \ | | _____| | | | | | | | | | | \ \ \_______ +// \ | | | | |_____ | \_/ | | | | |_/ / _____ | +// \ _____| |__| |________| \_______/ |__| |______/ (_______/ +// +// 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 LBM/GPUHelperFunctions +//! \author Martin Schoenherr, Anna Wellmann, Soeren Peters +//======================================================================================= +#ifndef GPU_DISTRIBUTION_HELPER_H +#define GPU_DISTRIBUTION_HELPER_H + +#include "LBM/LB.h" + +#include <array> +#include <cassert> +#include <optional> + +#include <cuda_runtime.h> + +#include <lbm/constants/D3Q27.h> + +#include <basics/constants/NumericConstants.h> + +using namespace vf::basics::constant; +using namespace vf::lbm::dir; + +namespace vf::gpu +{ + +inline real getForceFactor(int level) +{ + real factor = c1o1; + for (size_t i = 1; i <= level; i++) { + factor *= c2o1; + } + factor = 1 / factor; + return factor; +} + +__inline__ __device__ __host__ void getPointersToDistributions(Distributions27 &dist, real *distributionArray, const unsigned long long numberOfLBnodes, const bool isEvenTimestep) +{ + if (isEvenTimestep) { + dist.f[d000] = &distributionArray[d000 * numberOfLBnodes]; + dist.f[dP00] = &distributionArray[dP00 * numberOfLBnodes]; + dist.f[dM00] = &distributionArray[dM00 * numberOfLBnodes]; + dist.f[d0P0] = &distributionArray[d0P0 * numberOfLBnodes]; + dist.f[d0M0] = &distributionArray[d0M0 * numberOfLBnodes]; + dist.f[d00P] = &distributionArray[d00P * numberOfLBnodes]; + dist.f[d00M] = &distributionArray[d00M * numberOfLBnodes]; + dist.f[dPP0] = &distributionArray[dPP0 * numberOfLBnodes]; + dist.f[dMM0] = &distributionArray[dMM0 * numberOfLBnodes]; + dist.f[dPM0] = &distributionArray[dPM0 * numberOfLBnodes]; + dist.f[dMP0] = &distributionArray[dMP0 * numberOfLBnodes]; + dist.f[dP0P] = &distributionArray[dP0P * numberOfLBnodes]; + dist.f[dM0M] = &distributionArray[dM0M * numberOfLBnodes]; + dist.f[dP0M] = &distributionArray[dP0M * numberOfLBnodes]; + dist.f[dM0P] = &distributionArray[dM0P * numberOfLBnodes]; + dist.f[d0PP] = &distributionArray[d0PP * numberOfLBnodes]; + dist.f[d0MM] = &distributionArray[d0MM * numberOfLBnodes]; + dist.f[d0PM] = &distributionArray[d0PM * numberOfLBnodes]; + dist.f[d0MP] = &distributionArray[d0MP * numberOfLBnodes]; + dist.f[dPPP] = &distributionArray[dPPP * numberOfLBnodes]; + dist.f[dMMP] = &distributionArray[dMMP * numberOfLBnodes]; + dist.f[dPMP] = &distributionArray[dPMP * numberOfLBnodes]; + dist.f[dMPP] = &distributionArray[dMPP * numberOfLBnodes]; + dist.f[dPPM] = &distributionArray[dPPM * numberOfLBnodes]; + dist.f[dMMM] = &distributionArray[dMMM * numberOfLBnodes]; + dist.f[dPMM] = &distributionArray[dPMM * numberOfLBnodes]; + dist.f[dMPM] = &distributionArray[dMPM * numberOfLBnodes]; + } else { + dist.f[dM00] = &distributionArray[dP00 * numberOfLBnodes]; + dist.f[dP00] = &distributionArray[dM00 * numberOfLBnodes]; + dist.f[d0M0] = &distributionArray[d0P0 * numberOfLBnodes]; + dist.f[d0P0] = &distributionArray[d0M0 * numberOfLBnodes]; + dist.f[d00M] = &distributionArray[d00P * numberOfLBnodes]; + dist.f[d00P] = &distributionArray[d00M * numberOfLBnodes]; + dist.f[dMM0] = &distributionArray[dPP0 * numberOfLBnodes]; + dist.f[dPP0] = &distributionArray[dMM0 * numberOfLBnodes]; + dist.f[dMP0] = &distributionArray[dPM0 * numberOfLBnodes]; + dist.f[dPM0] = &distributionArray[dMP0 * numberOfLBnodes]; + dist.f[dM0M] = &distributionArray[dP0P * numberOfLBnodes]; + dist.f[dP0P] = &distributionArray[dM0M * numberOfLBnodes]; + dist.f[dM0P] = &distributionArray[dP0M * numberOfLBnodes]; + dist.f[dP0M] = &distributionArray[dM0P * numberOfLBnodes]; + dist.f[d0MM] = &distributionArray[d0PP * numberOfLBnodes]; + dist.f[d0PP] = &distributionArray[d0MM * numberOfLBnodes]; + dist.f[d0MP] = &distributionArray[d0PM * numberOfLBnodes]; + dist.f[d0PM] = &distributionArray[d0MP * numberOfLBnodes]; + dist.f[d000] = &distributionArray[d000 * numberOfLBnodes]; + dist.f[dPPP] = &distributionArray[dMMM * numberOfLBnodes]; + dist.f[dMMP] = &distributionArray[dPPM * numberOfLBnodes]; + dist.f[dPMP] = &distributionArray[dMPM * numberOfLBnodes]; + dist.f[dMPP] = &distributionArray[dPMM * numberOfLBnodes]; + dist.f[dPPM] = &distributionArray[dMMP * numberOfLBnodes]; + dist.f[dMMM] = &distributionArray[dPPP * numberOfLBnodes]; + dist.f[dPMM] = &distributionArray[dMPP * numberOfLBnodes]; + dist.f[dMPM] = &distributionArray[dPMP * numberOfLBnodes]; + } +} + +/** + * Getting references to the 27 directions. + * @params distributions 1D real* array containing all data (number of elements = 27 * matrix_size) + * @params matrix_size number of discretizations nodes + * @params isEvenTimestep: stored data dependent on timestep is based on the esoteric twist algorithm + * @return a data struct containing the addresses to the 27 directions within the 1D distribution array + */ +__inline__ __device__ __host__ DistributionReferences27 getDistributionReferences27(real* distributions, const unsigned long long numberOfLBnodes, const bool isEvenTimestep){ + DistributionReferences27 distribution_references; + getPointersToDistributions(distribution_references, distributions, numberOfLBnodes, isEvenTimestep); + return distribution_references; +} + +__inline__ __device__ void getPointersToSubgridDistances(SubgridDistances27& subgridD, real* subgridDistances, const unsigned int numberOfSubgridIndices) +{ + subgridD.q[dP00] = &subgridDistances[dP00 * numberOfSubgridIndices]; + subgridD.q[dM00] = &subgridDistances[dM00 * numberOfSubgridIndices]; + subgridD.q[d0P0] = &subgridDistances[d0P0 * numberOfSubgridIndices]; + subgridD.q[d0M0] = &subgridDistances[d0M0 * numberOfSubgridIndices]; + subgridD.q[d00P] = &subgridDistances[d00P * numberOfSubgridIndices]; + subgridD.q[d00M] = &subgridDistances[d00M * numberOfSubgridIndices]; + subgridD.q[dPP0] = &subgridDistances[dPP0 * numberOfSubgridIndices]; + subgridD.q[dMM0] = &subgridDistances[dMM0 * numberOfSubgridIndices]; + subgridD.q[dPM0] = &subgridDistances[dPM0 * numberOfSubgridIndices]; + subgridD.q[dMP0] = &subgridDistances[dMP0 * numberOfSubgridIndices]; + subgridD.q[dP0P] = &subgridDistances[dP0P * numberOfSubgridIndices]; + subgridD.q[dM0M] = &subgridDistances[dM0M * numberOfSubgridIndices]; + subgridD.q[dP0M] = &subgridDistances[dP0M * numberOfSubgridIndices]; + subgridD.q[dM0P] = &subgridDistances[dM0P * numberOfSubgridIndices]; + subgridD.q[d0PP] = &subgridDistances[d0PP * numberOfSubgridIndices]; + subgridD.q[d0MM] = &subgridDistances[d0MM * numberOfSubgridIndices]; + subgridD.q[d0PM] = &subgridDistances[d0PM * numberOfSubgridIndices]; + subgridD.q[d0MP] = &subgridDistances[d0MP * numberOfSubgridIndices]; + subgridD.q[d000] = &subgridDistances[d000 * numberOfSubgridIndices]; + subgridD.q[dPPP] = &subgridDistances[dPPP * numberOfSubgridIndices]; + subgridD.q[dMMP] = &subgridDistances[dMMP * numberOfSubgridIndices]; + subgridD.q[dPMP] = &subgridDistances[dPMP * numberOfSubgridIndices]; + subgridD.q[dMPP] = &subgridDistances[dMPP * numberOfSubgridIndices]; + subgridD.q[dPPM] = &subgridDistances[dPPM * numberOfSubgridIndices]; + subgridD.q[dMMM] = &subgridDistances[dMMM * numberOfSubgridIndices]; + subgridD.q[dPMM] = &subgridDistances[dPMM * numberOfSubgridIndices]; + subgridD.q[dMPM] = &subgridDistances[dMPM * 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 getBounceBackDistributionForVeloBC( const real& f, + const real& velocity, const real weight) +{ + + return f - (c6o1 * weight * velocity); +} + +__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 getInterpolatedDistributionForNoSlipWithPressureBC(const real& q, const real& f, const real& fInverse, const real& feq, + const real& omega, const real& drho, const real weight) +{ + + return (c1o1-q) / (c1o1+q) * (f - fInverse + (f + fInverse - c2o1 * feq * omega) / (c1o1 - omega)) * c1o2 + + (q * (f + fInverse)) / (c1o1 + q) - weight * drho; +} + + +__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; +} + +__inline__ __device__ unsigned int getNodeIndex() +{ + // get node index from CUDA threadIdx, blockIdx, blockDim and gridDim. + const unsigned x = threadIdx.x; + const unsigned y = blockIdx.x; + const unsigned z = blockIdx.y; + + const unsigned nx = blockDim.x; + const unsigned ny = gridDim.x; + + return nx * (ny * z + y) + x; +} + +__inline__ __device__ bool isValidFluidNode(uint nodeType) +{ + return (nodeType == GEO_FLUID || nodeType == GEO_PM_0 || nodeType == GEO_PM_1 || nodeType == GEO_PM_2); +} + +struct ListIndices +{ + __device__ ListIndices() = default; + __device__ ListIndices(unsigned int index, const unsigned int* neighborX, const unsigned int* neighborY, + const unsigned int* neighborZ) + { + k_000 = index; + k_M00 = neighborX[k_000]; + k_0M0 = neighborY[k_000]; + k_00M = neighborZ[k_000]; + k_MM0 = neighborY[k_M00]; + k_M0M = neighborZ[k_M00]; + k_0MM = neighborZ[k_0M0]; + k_MMM = neighborZ[k_MM0]; + } + + unsigned int k_000 { 0 }; + unsigned int k_M00 { 0 }; + unsigned int k_0M0 { 0 }; + unsigned int k_00M { 0 }; + unsigned int k_MM0 { 0 }; + unsigned int k_M0M { 0 }; + unsigned int k_0MM { 0 }; + unsigned int k_MMM { 0 }; +}; + +//////////////////////////////////////////////////////////////////////////////////// +//! - Read distributions: style of reading and writing the distributions from/to +//! 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> +__device__ __inline__ void getPreCollisionDistribution(real* local, const Distributions27& global, const ListIndices& indices) +{ + local[d000] = (global.f[d000])[indices.k_000]; + local[dP00] = (global.f[dP00])[indices.k_000]; + local[dM00] = (global.f[dM00])[indices.k_M00]; + local[d0P0] = (global.f[d0P0])[indices.k_000]; + local[d0M0] = (global.f[d0M0])[indices.k_0M0]; + local[d00P] = (global.f[d00P])[indices.k_000]; + local[d00M] = (global.f[d00M])[indices.k_00M]; + local[dPP0] = (global.f[dPP0])[indices.k_000]; + local[dMM0] = (global.f[dMM0])[indices.k_MM0]; + local[dPM0] = (global.f[dPM0])[indices.k_0M0]; + local[dMP0] = (global.f[dMP0])[indices.k_M00]; + local[dP0P] = (global.f[dP0P])[indices.k_000]; + local[dM0M] = (global.f[dM0M])[indices.k_M0M]; + local[dP0M] = (global.f[dP0M])[indices.k_00M]; + local[dM0P] = (global.f[dM0P])[indices.k_M00]; + local[d0PP] = (global.f[d0PP])[indices.k_000]; + local[d0MM] = (global.f[d0MM])[indices.k_0MM]; + local[d0PM] = (global.f[d0PM])[indices.k_00M]; + local[d0MP] = (global.f[d0MP])[indices.k_0M0]; + local[dPPP] = (global.f[dPPP])[indices.k_000]; + local[dMPP] = (global.f[dMPP])[indices.k_M00]; + local[dPMP] = (global.f[dPMP])[indices.k_0M0]; + local[dMMP] = (global.f[dMMP])[indices.k_MM0]; + local[dPPM] = (global.f[dPPM])[indices.k_00M]; + local[dMPM] = (global.f[dMPM])[indices.k_M0M]; + local[dPMM] = (global.f[dPMM])[indices.k_0MM]; + local[dMMM] = (global.f[dMMM])[indices.k_MMM]; +} + +__device__ __inline__ void getPostCollisionDistribution(real* local, const Distributions27& global, const ListIndices& indices) +{ + local[d000] = (global.f[d000])[indices.k_000]; + local[dP00] = (global.f[dP00])[indices.k_000]; + local[dM00] = (global.f[dM00])[indices.k_M00]; + local[d0P0] = (global.f[d0P0])[indices.k_000]; + local[d0M0] = (global.f[d0M0])[indices.k_0M0]; + local[d00P] = (global.f[d00P])[indices.k_000]; + local[d00M] = (global.f[d00M])[indices.k_00M]; + local[dPP0] = (global.f[dPP0])[indices.k_000]; + local[dMM0] = (global.f[dMM0])[indices.k_MM0]; + local[dPM0] = (global.f[dPM0])[indices.k_0M0]; + local[dMP0] = (global.f[dMP0])[indices.k_M00]; + local[dP0P] = (global.f[dP0P])[indices.k_000]; + local[dM0M] = (global.f[dM0M])[indices.k_M0M]; + local[dP0M] = (global.f[dP0M])[indices.k_00M]; + local[dM0P] = (global.f[dM0P])[indices.k_M00]; + local[d0PP] = (global.f[d0PP])[indices.k_000]; + local[d0MM] = (global.f[d0MM])[indices.k_0MM]; + local[d0PM] = (global.f[d0PM])[indices.k_00M]; + local[d0MP] = (global.f[d0MP])[indices.k_0M0]; + local[dPPP] = (global.f[dPPP])[indices.k_000]; + local[dMPP] = (global.f[dMPP])[indices.k_M00]; + local[dPMP] = (global.f[dPMP])[indices.k_0M0]; + local[dMMP] = (global.f[dMMP])[indices.k_MM0]; + local[dPPM] = (global.f[dPPM])[indices.k_00M]; + local[dMPM] = (global.f[dMPM])[indices.k_M0M]; + local[dPMM] = (global.f[dPMM])[indices.k_0MM]; + local[dMMM] = (global.f[dMMM])[indices.k_MMM]; +} + +//////////////////////////////////////////////////////////////////////////////////// +//! - Write distributions: style of reading and writing the distributions from/to +//! 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> +__inline__ __device__ void setPreCollisionDistribution(Distributions27& global, const ListIndices& indices, const real* local) +{ + (global.f[d000])[indices.k_000] = local[d000]; + (global.f[dP00])[indices.k_000] = local[dP00]; + (global.f[dM00])[indices.k_M00] = local[dM00]; + (global.f[d0P0])[indices.k_000] = local[d0P0]; + (global.f[d0M0])[indices.k_0M0] = local[d0M0]; + (global.f[d00P])[indices.k_000] = local[d00P]; + (global.f[d00M])[indices.k_00M] = local[d00M]; + (global.f[dPP0])[indices.k_000] = local[dPP0]; + (global.f[dMM0])[indices.k_MM0] = local[dMM0]; + (global.f[dPM0])[indices.k_0M0] = local[dPM0]; + (global.f[dMP0])[indices.k_M00] = local[dMP0]; + (global.f[dP0P])[indices.k_000] = local[dP0P]; + (global.f[dM0M])[indices.k_M0M] = local[dM0M]; + (global.f[dP0M])[indices.k_00M] = local[dP0M]; + (global.f[dM0P])[indices.k_M00] = local[dM0P]; + (global.f[d0PP])[indices.k_000] = local[d0PP]; + (global.f[d0MM])[indices.k_0MM] = local[d0MM]; + (global.f[d0PM])[indices.k_00M] = local[d0PM]; + (global.f[d0MP])[indices.k_0M0] = local[d0MP]; + (global.f[dPPP])[indices.k_000] = local[dPPP]; + (global.f[dMPP])[indices.k_M00] = local[dMPP]; + (global.f[dPMP])[indices.k_0M0] = local[dPMP]; + (global.f[dMMP])[indices.k_MM0] = local[dMMP]; + (global.f[dPPM])[indices.k_00M] = local[dPPM]; + (global.f[dMPM])[indices.k_M0M] = local[dMPM]; + (global.f[dPMM])[indices.k_0MM] = local[dPMM]; + (global.f[dMMM])[indices.k_MMM] = local[dMMM]; +} + +__inline__ __device__ void setPostCollisionDistribution(Distributions27& global, const ListIndices& indices, const real* local) +{ + (global.f[d000])[indices.k_000] = local[d000]; + (global.f[dP00])[indices.k_000] = local[dM00]; + (global.f[dM00])[indices.k_M00] = local[dP00]; + (global.f[d0P0])[indices.k_000] = local[d0M0]; + (global.f[d0M0])[indices.k_0M0] = local[d0P0]; + (global.f[d00P])[indices.k_000] = local[d00M]; + (global.f[d00M])[indices.k_00M] = local[d00P]; + (global.f[dPP0])[indices.k_000] = local[dMM0]; + (global.f[dMM0])[indices.k_MM0] = local[dPP0]; + (global.f[dPM0])[indices.k_0M0] = local[dMP0]; + (global.f[dMP0])[indices.k_M00] = local[dPM0]; + (global.f[dP0P])[indices.k_000] = local[dM0M]; + (global.f[dM0M])[indices.k_M0M] = local[dP0P]; + (global.f[dP0M])[indices.k_00M] = local[dM0P]; + (global.f[dM0P])[indices.k_M00] = local[dP0M]; + (global.f[d0PP])[indices.k_000] = local[d0MM]; + (global.f[d0MM])[indices.k_0MM] = local[d0PP]; + (global.f[d0PM])[indices.k_00M] = local[d0MP]; + (global.f[d0MP])[indices.k_0M0] = local[d0PM]; + (global.f[dPPP])[indices.k_000] = local[dMMM]; + (global.f[dMPP])[indices.k_M00] = local[dPMM]; + (global.f[dPMP])[indices.k_0M0] = local[dMPM]; + (global.f[dMMP])[indices.k_MM0] = local[dPPM]; + (global.f[dPPM])[indices.k_00M] = local[dMMP]; + (global.f[dMPM])[indices.k_M0M] = local[dPMP]; + (global.f[dPMM])[indices.k_0MM] = local[dMPP]; + (global.f[dMMM])[indices.k_MMM] = local[dPPP]; +} + +} + +#endif diff --git a/src/gpu/core/LBM/GPUHelperFunctions/KernelUtilitiesTests.cpp b/src/gpu/core/LBM/GPUHelperFunctions/KernelUtilitiesTests.cpp new file mode 100644 index 0000000000000000000000000000000000000000..24c690ba4dfaef64665b24ab35a8211b7bd8f52d --- /dev/null +++ b/src/gpu/core/LBM/GPUHelperFunctions/KernelUtilitiesTests.cpp @@ -0,0 +1,87 @@ +#include <gmock/gmock.h> + +#include <basics/tests/testUtilities.h> + +#include "KernelUtilities.h" + +#include <lbm/constants/D3Q27.h> + +using namespace vf::lbm::dir; + +TEST(DistributionHelperTests, getPointerToDistribution_WhenEvenTimeStep_ShouldBeEqualToInput) +{ + real distributions_in[27]; + for (int i = 0; i < 27; i++) + distributions_in[i] = i; + const uint size_Mat = 1; + const bool isEvenTimeStep = true; + + Distributions27 distribution_out = vf::gpu::getDistributionReferences27(distributions_in, size_Mat, isEvenTimeStep); + + EXPECT_THAT(*distribution_out.f[dP00], RealEq(distributions_in[dP00])); + EXPECT_THAT(*distribution_out.f[dM00], RealEq(distributions_in[dM00])); + EXPECT_THAT(*distribution_out.f[d0P0], RealEq(distributions_in[d0P0])); + EXPECT_THAT(*distribution_out.f[d0M0], RealEq(distributions_in[d0M0])); + EXPECT_THAT(*distribution_out.f[d00P], RealEq(distributions_in[d00P])); + EXPECT_THAT(*distribution_out.f[d00M], RealEq(distributions_in[d00M])); + EXPECT_THAT(*distribution_out.f[dPP0], RealEq(distributions_in[dPP0])); + EXPECT_THAT(*distribution_out.f[dMM0], RealEq(distributions_in[dMM0])); + EXPECT_THAT(*distribution_out.f[dPM0], RealEq(distributions_in[dPM0])); + EXPECT_THAT(*distribution_out.f[dMP0], RealEq(distributions_in[dMP0])); + EXPECT_THAT(*distribution_out.f[dP0P], RealEq(distributions_in[dP0P])); + EXPECT_THAT(*distribution_out.f[dM0M], RealEq(distributions_in[dM0M])); + EXPECT_THAT(*distribution_out.f[dP0M], RealEq(distributions_in[dP0M])); + EXPECT_THAT(*distribution_out.f[dM0P], RealEq(distributions_in[dM0P])); + EXPECT_THAT(*distribution_out.f[d0PP], RealEq(distributions_in[d0PP])); + EXPECT_THAT(*distribution_out.f[d0MM], RealEq(distributions_in[d0MM])); + EXPECT_THAT(*distribution_out.f[d0PM], RealEq(distributions_in[d0PM])); + EXPECT_THAT(*distribution_out.f[d0MP], RealEq(distributions_in[d0MP])); + EXPECT_THAT(*distribution_out.f[d000], RealEq(distributions_in[d000])); + EXPECT_THAT(*distribution_out.f[dPPP], RealEq(distributions_in[dPPP])); + EXPECT_THAT(*distribution_out.f[dMMP], RealEq(distributions_in[dMMP])); + EXPECT_THAT(*distribution_out.f[dPMP], RealEq(distributions_in[dPMP])); + EXPECT_THAT(*distribution_out.f[dMPP], RealEq(distributions_in[dMPP])); + EXPECT_THAT(*distribution_out.f[dPPM], RealEq(distributions_in[dPPM])); + EXPECT_THAT(*distribution_out.f[dMMM], RealEq(distributions_in[dMMM])); + EXPECT_THAT(*distribution_out.f[dPMM], RealEq(distributions_in[dPMM])); + EXPECT_THAT(*distribution_out.f[dMPM], RealEq(distributions_in[dMPM])); +} + +TEST(DistributionHelperTests, getPointerToDistribution_WhenOddTimeStep_ShouldBeSwapped) +{ + real distributions_in[27]; + for (int i = 0; i < 27; i++) + distributions_in[i] = i; + const int size_Mat = 1; + const bool isEvenTimeStep = false; + + Distributions27 distribution_out = vf::gpu::getDistributionReferences27(distributions_in, size_Mat, isEvenTimeStep); + + EXPECT_THAT(*distribution_out.f[dM00], RealEq(distributions_in[dP00])); + EXPECT_THAT(*distribution_out.f[dP00], RealEq(distributions_in[dM00])); + EXPECT_THAT(*distribution_out.f[d0M0], RealEq(distributions_in[d0P0])); + EXPECT_THAT(*distribution_out.f[d0P0], RealEq(distributions_in[d0M0])); + EXPECT_THAT(*distribution_out.f[d00M], RealEq(distributions_in[d00P])); + EXPECT_THAT(*distribution_out.f[d00P], RealEq(distributions_in[d00M])); + EXPECT_THAT(*distribution_out.f[dMM0], RealEq(distributions_in[dPP0])); + EXPECT_THAT(*distribution_out.f[dPP0], RealEq(distributions_in[dMM0])); + EXPECT_THAT(*distribution_out.f[dMP0], RealEq(distributions_in[dPM0])); + EXPECT_THAT(*distribution_out.f[dPM0], RealEq(distributions_in[dMP0])); + EXPECT_THAT(*distribution_out.f[dM0M], RealEq(distributions_in[dP0P])); + EXPECT_THAT(*distribution_out.f[dP0P], RealEq(distributions_in[dM0M])); + EXPECT_THAT(*distribution_out.f[dM0P], RealEq(distributions_in[dP0M])); + EXPECT_THAT(*distribution_out.f[dP0M], RealEq(distributions_in[dM0P])); + EXPECT_THAT(*distribution_out.f[d0MM], RealEq(distributions_in[d0PP])); + EXPECT_THAT(*distribution_out.f[d0PP], RealEq(distributions_in[d0MM])); + EXPECT_THAT(*distribution_out.f[d0MP], RealEq(distributions_in[d0PM])); + EXPECT_THAT(*distribution_out.f[d0PM], RealEq(distributions_in[d0MP])); + EXPECT_THAT(*distribution_out.f[d000], RealEq(distributions_in[d000])); + EXPECT_THAT(*distribution_out.f[dMMM], RealEq(distributions_in[dPPP])); + EXPECT_THAT(*distribution_out.f[dPPM], RealEq(distributions_in[dMMP])); + EXPECT_THAT(*distribution_out.f[dMPM], RealEq(distributions_in[dPMP])); + EXPECT_THAT(*distribution_out.f[dPMM], RealEq(distributions_in[dMPP])); + EXPECT_THAT(*distribution_out.f[dMMP], RealEq(distributions_in[dPPM])); + EXPECT_THAT(*distribution_out.f[dPPP], RealEq(distributions_in[dMMM])); + EXPECT_THAT(*distribution_out.f[dMPP], RealEq(distributions_in[dPMM])); + EXPECT_THAT(*distribution_out.f[dPMP], RealEq(distributions_in[dMPM])); +} diff --git a/src/gpu/VirtualFluids_GPU/LBM/GPUHelperFunctions/RunCollision.cuh b/src/gpu/core/LBM/GPUHelperFunctions/RunCollision.cuh similarity index 96% rename from src/gpu/VirtualFluids_GPU/LBM/GPUHelperFunctions/RunCollision.cuh rename to src/gpu/core/LBM/GPUHelperFunctions/RunCollision.cuh index 9c5b17adf7b5c41fa774511a0797f311a6f1296d..063fa2a709704fa4131443399c96838bb546ee09 100644 --- a/src/gpu/VirtualFluids_GPU/LBM/GPUHelperFunctions/RunCollision.cuh +++ b/src/gpu/core/LBM/GPUHelperFunctions/RunCollision.cuh @@ -92,7 +92,7 @@ __global__ void runCollision(CollisionFunctor collision, GPUCollisionParameter c ListIndices listIndices(k_000, collisionParameter.neighborX, collisionParameter.neighborY, collisionParameter.neighborZ); - read(para.distribution, dist, listIndices); + getPreCollisionDistribution(para.distribution, dist, listIndices); vf::lbm::MacroscopicValues macroscopicValues; collision(para, macroscopicValues, turbulentViscosity); @@ -106,7 +106,7 @@ __global__ void runCollision(CollisionFunctor collision, GPUCollisionParameter c if (turbulenceModel != vf::lbm::TurbulenceModel::None) collisionParameter.turbulentViscosity[k_000] = turbulentViscosity.value; - writeInverse(dist, listIndices, para.distribution); + setPostCollisionDistribution(dist, listIndices, para.distribution); } } // namespace vf::gpu diff --git a/src/gpu/VirtualFluids_GPU/LBM/GPUHelperFunctions/ScalingUtilities.h b/src/gpu/core/LBM/GPUHelperFunctions/ScalingUtilities.h similarity index 96% rename from src/gpu/VirtualFluids_GPU/LBM/GPUHelperFunctions/ScalingUtilities.h rename to src/gpu/core/LBM/GPUHelperFunctions/ScalingUtilities.h index d337d7330c0fccf412d4ab2710c35ee6df39f509..ab10261054fde3adffec9e05dc613e2d281265d0 100644 --- a/src/gpu/VirtualFluids_GPU/LBM/GPUHelperFunctions/ScalingUtilities.h +++ b/src/gpu/core/LBM/GPUHelperFunctions/ScalingUtilities.h @@ -102,7 +102,7 @@ template<bool hasTurbulentViscosity> __device__ void calculateMomentSet( real f_fine[27]; - read(f_fine, distFine, indices); + getPreCollisionDistribution(f_fine, distFine, indices); if (forcesForAllNodesX) momentsSet.calculateMMM(f_fine, omega_, forcesForAllNodesX[InterpolationVertex::MMM], @@ -126,7 +126,7 @@ template<bool hasTurbulentViscosity> __device__ void calculateMomentSet( omega_ = hasTurbulentViscosity ? vf::lbm::calculateOmegaWithturbulentViscosity(omega, turbulentViscosity[indices.k_000]) : omega; - read(f_fine, distFine, indices); + getPreCollisionDistribution(f_fine, distFine, indices); if (forcesForAllNodesX) momentsSet.calculateMMP(f_fine, omega_, forcesForAllNodesX[InterpolationVertex::MMP], @@ -149,7 +149,7 @@ template<bool hasTurbulentViscosity> __device__ void calculateMomentSet( omega_ = hasTurbulentViscosity ? vf::lbm::calculateOmegaWithturbulentViscosity(omega, turbulentViscosity[indices.k_000]) : omega; - read(f_fine, distFine, indices); + getPreCollisionDistribution(f_fine, distFine, indices); if (forcesForAllNodesX) momentsSet.calculatePMP(f_fine, omega_, forcesForAllNodesX[InterpolationVertex::PMP], forcesForAllNodesY[InterpolationVertex::PMP], forcesForAllNodesZ[InterpolationVertex::PMP]); @@ -171,7 +171,7 @@ template<bool hasTurbulentViscosity> __device__ void calculateMomentSet( omega_ = hasTurbulentViscosity ? vf::lbm::calculateOmegaWithturbulentViscosity(omega, turbulentViscosity[indices.k_000]) : omega; - read(f_fine, distFine, indices); + getPreCollisionDistribution(f_fine, distFine, indices); if (forcesForAllNodesX) momentsSet.calculatePMM(f_fine, omega_, forcesForAllNodesX[InterpolationVertex::PMM], forcesForAllNodesY[InterpolationVertex::PMM], forcesForAllNodesZ[InterpolationVertex::PMM]); @@ -204,7 +204,7 @@ template<bool hasTurbulentViscosity> __device__ void calculateMomentSet( omega_ = hasTurbulentViscosity ? vf::lbm::calculateOmegaWithturbulentViscosity(omega, turbulentViscosity[indices.k_000]) : omega; - read(f_fine, distFine, indices); + getPreCollisionDistribution(f_fine, distFine, indices); if (forcesForAllNodesX) momentsSet.calculateMPM(f_fine, omega_, forcesForAllNodesX[InterpolationVertex::MPM], forcesForAllNodesY[InterpolationVertex::MPM], forcesForAllNodesZ[InterpolationVertex::MPM]); @@ -226,7 +226,7 @@ template<bool hasTurbulentViscosity> __device__ void calculateMomentSet( omega_ = hasTurbulentViscosity ? vf::lbm::calculateOmegaWithturbulentViscosity(omega, turbulentViscosity[indices.k_000]) : omega; - read(f_fine, distFine, indices); + getPreCollisionDistribution(f_fine, distFine, indices); if (forcesForAllNodesX) momentsSet.calculateMPP(f_fine, omega_, forcesForAllNodesX[InterpolationVertex::MPP], forcesForAllNodesY[InterpolationVertex::MPP], forcesForAllNodesZ[InterpolationVertex::MPP]); @@ -248,7 +248,7 @@ template<bool hasTurbulentViscosity> __device__ void calculateMomentSet( omega_ = hasTurbulentViscosity ? vf::lbm::calculateOmegaWithturbulentViscosity(omega, turbulentViscosity[indices.k_000]) : omega; - read(f_fine, distFine, indices); + getPreCollisionDistribution(f_fine, distFine, indices); if (forcesForAllNodesX) momentsSet.calculatePPP(f_fine, omega_, forcesForAllNodesX[InterpolationVertex::PPP], forcesForAllNodesY[InterpolationVertex::PPP], forcesForAllNodesZ[InterpolationVertex::PPP]); @@ -270,7 +270,7 @@ template<bool hasTurbulentViscosity> __device__ void calculateMomentSet( omega_ = hasTurbulentViscosity ? vf::lbm::calculateOmegaWithturbulentViscosity(omega, turbulentViscosity[indices.k_000]) : omega; - read(f_fine, distFine, indices); + getPreCollisionDistribution(f_fine, distFine, indices); if (forcesForAllNodesX) momentsSet.calculatePPM(f_fine, omega_, forcesForAllNodesX[InterpolationVertex::PPM], forcesForAllNodesY[InterpolationVertex::PPM], forcesForAllNodesZ[InterpolationVertex::PPM]); diff --git a/src/gpu/VirtualFluids_GPU/LBM/LB.h b/src/gpu/core/LBM/LB.h similarity index 99% rename from src/gpu/VirtualFluids_GPU/LBM/LB.h rename to src/gpu/core/LBM/LB.h index 979e08d87e170207451e7ba80304cca8d45d1dd4..8cef301f55ceccfa3842d35464b9c9dfbe63885e 100644 --- a/src/gpu/VirtualFluids_GPU/LBM/LB.h +++ b/src/gpu/core/LBM/LB.h @@ -70,7 +70,7 @@ #define INTERFACE_B 5 -#include "DataTypes.h" +#include <basics/DataTypes.h> #include <string> #include <vector> diff --git a/src/gpu/VirtualFluids_GPU/LBM/Simulation.cpp b/src/gpu/core/LBM/Simulation.cpp similarity index 99% rename from src/gpu/VirtualFluids_GPU/LBM/Simulation.cpp rename to src/gpu/core/LBM/Simulation.cpp index e04c0ae72b1b9e08979972ecfb9bdc54146b7bb6..af3b3e70ff1c7bd822f659dcf7f0d63e5a3b6e81 100644 --- a/src/gpu/VirtualFluids_GPU/LBM/Simulation.cpp +++ b/src/gpu/core/LBM/Simulation.cpp @@ -52,10 +52,10 @@ #include "DataStructureInitializer/GridProvider.h" #include "Output/DataWriter.h" #include "Output/DistributionDebugWriter.h" -#include "Kernel/Utilities/KernelFactory/KernelFactory.h" +#include "Kernel/KernelFactory/KernelFactory.h" #include "PreProcessor/PreProcessorFactory/PreProcessorFactory.h" #include "PreProcessor/PreProcessorFactory/PreProcessorFactoryImp.h" -#include "Kernel/Utilities/KernelFactory/KernelFactoryImp.h" +#include "Kernel/KernelFactory/KernelFactoryImp.h" #include "Kernel/Kernel.h" #include "TurbulenceModels/TurbulenceModelFactory.h" diff --git a/src/gpu/VirtualFluids_GPU/LBM/Simulation.h b/src/gpu/core/LBM/Simulation.h similarity index 97% rename from src/gpu/VirtualFluids_GPU/LBM/Simulation.h rename to src/gpu/core/LBM/Simulation.h index 146ab4cf6aebe395bff695f3e99aa7b6b1e776d3..b89d8fdec4ac432e3c4a4504857fa4f8f2a9c57e 100644 --- a/src/gpu/VirtualFluids_GPU/LBM/Simulation.h +++ b/src/gpu/core/LBM/Simulation.h @@ -22,7 +22,7 @@ class RestartObject; class ForceCalculations; class DataWriter; class Kernel; -class ADKernel; +class AdvectionDiffusionKernel; class KernelFactory; class PreProcessor; class PreProcessorFactory; @@ -83,7 +83,7 @@ private: std::shared_ptr<DataWriter> dataWriter; std::shared_ptr<CudaMemoryManager> cudaMemoryManager; std::vector < SPtr< Kernel>> kernels; - std::vector < SPtr< ADKernel>> adKernels; + std::vector < SPtr< AdvectionDiffusionKernel>> adKernels; std::shared_ptr<PreProcessor> preProcessor; SPtr<TurbulenceModelFactory> tmFactory; diff --git a/src/gpu/VirtualFluids_GPU/Output/AnalysisData.hpp b/src/gpu/core/Output/AnalysisData.hpp similarity index 100% rename from src/gpu/VirtualFluids_GPU/Output/AnalysisData.hpp rename to src/gpu/core/Output/AnalysisData.hpp diff --git a/src/gpu/VirtualFluids_GPU/Output/ClogWriter.cpp b/src/gpu/core/Output/ClogWriter.cpp similarity index 100% rename from src/gpu/VirtualFluids_GPU/Output/ClogWriter.cpp rename to src/gpu/core/Output/ClogWriter.cpp diff --git a/src/gpu/VirtualFluids_GPU/Output/ClogWriter.h b/src/gpu/core/Output/ClogWriter.h similarity index 100% rename from src/gpu/VirtualFluids_GPU/Output/ClogWriter.h rename to src/gpu/core/Output/ClogWriter.h diff --git a/src/gpu/VirtualFluids_GPU/Output/DataWriter.h b/src/gpu/core/Output/DataWriter.h similarity index 88% rename from src/gpu/VirtualFluids_GPU/Output/DataWriter.h rename to src/gpu/core/Output/DataWriter.h index 67a50867c1ef957c2e80b338f8597262508c468d..51bc38565803c4393665943d1159884a47246ba7 100644 --- a/src/gpu/VirtualFluids_GPU/Output/DataWriter.h +++ b/src/gpu/core/Output/DataWriter.h @@ -1,8 +1,8 @@ #ifndef DATA_WRITER_H #define DATA_WRITER_H -#include "PointerDefinitions.h" -#include "DataTypes.h" +#include <basics/PointerDefinitions.h> +#include <basics/DataTypes.h> #include <memory> #include <vector> diff --git a/src/gpu/VirtualFluids_GPU/Output/DistributionDebugInspector.cu b/src/gpu/core/Output/DistributionDebugInspector.cu similarity index 85% rename from src/gpu/VirtualFluids_GPU/Output/DistributionDebugInspector.cu rename to src/gpu/core/Output/DistributionDebugInspector.cu index df6b2e6623977331bf4b64f2ea798deb7700020f..0515cb1547ee17cc5b46e9b7bacd80a6e1ab3a8c 100644 --- a/src/gpu/VirtualFluids_GPU/Output/DistributionDebugInspector.cu +++ b/src/gpu/core/Output/DistributionDebugInspector.cu @@ -94,33 +94,33 @@ __global__ void printFs( //////////////////////////////////////////////////////////////////////////////////// //! - Set local distributions //! - real f_000 = (dist.f[DIR_000])[k_000]; - real f_P00 = (dist.f[DIR_P00])[k_000]; - real f_M00 = (dist.f[DIR_M00])[k_M00]; - real f_0P0 = (dist.f[DIR_0P0])[k_000]; - real f_0M0 = (dist.f[DIR_0M0])[k_0M0]; - real f_00P = (dist.f[DIR_00P])[k_000]; - real f_00M = (dist.f[DIR_00M])[k_00M]; - real f_PP0 = (dist.f[DIR_PP0])[k_000]; - real f_MM0 = (dist.f[DIR_MM0])[k_MM0]; - real f_PM0 = (dist.f[DIR_PM0])[k_0M0]; - real f_MP0 = (dist.f[DIR_MP0])[k_M00]; - real f_P0P = (dist.f[DIR_P0P])[k_000]; - real f_M0M = (dist.f[DIR_M0M])[k_M0M]; - real f_P0M = (dist.f[DIR_P0M])[k_00M]; - real f_M0P = (dist.f[DIR_M0P])[k_M00]; - real f_0PP = (dist.f[DIR_0PP])[k_000]; - real f_0MM = (dist.f[DIR_0MM])[k_0MM]; - real f_0PM = (dist.f[DIR_0PM])[k_00M]; - real f_0MP = (dist.f[DIR_0MP])[k_0M0]; - real f_PPP = (dist.f[DIR_PPP])[k_000]; - real f_MPP = (dist.f[DIR_MPP])[k_M00]; - real f_PMP = (dist.f[DIR_PMP])[k_0M0]; - real f_MMP = (dist.f[DIR_MMP])[k_MM0]; - real f_PPM = (dist.f[DIR_PPM])[k_00M]; - real f_MPM = (dist.f[DIR_MPM])[k_M0M]; - real f_PMM = (dist.f[DIR_PMM])[k_0MM]; - real f_MMM = (dist.f[DIR_MMM])[k_MMM]; + real f_000 = (dist.f[d000])[k_000]; + real f_P00 = (dist.f[dP00])[k_000]; + real f_M00 = (dist.f[dM00])[k_M00]; + real f_0P0 = (dist.f[d0P0])[k_000]; + real f_0M0 = (dist.f[d0M0])[k_0M0]; + real f_00P = (dist.f[d00P])[k_000]; + real f_00M = (dist.f[d00M])[k_00M]; + real f_PP0 = (dist.f[dPP0])[k_000]; + real f_MM0 = (dist.f[dMM0])[k_MM0]; + real f_PM0 = (dist.f[dPM0])[k_0M0]; + real f_MP0 = (dist.f[dMP0])[k_M00]; + real f_P0P = (dist.f[dP0P])[k_000]; + real f_M0M = (dist.f[dM0M])[k_M0M]; + real f_P0M = (dist.f[dP0M])[k_00M]; + real f_M0P = (dist.f[dM0P])[k_M00]; + real f_0PP = (dist.f[d0PP])[k_000]; + real f_0MM = (dist.f[d0MM])[k_0MM]; + real f_0PM = (dist.f[d0PM])[k_00M]; + real f_0MP = (dist.f[d0MP])[k_0M0]; + real f_PPP = (dist.f[dPPP])[k_000]; + real f_MPP = (dist.f[dMPP])[k_M00]; + real f_PMP = (dist.f[dPMP])[k_0M0]; + real f_MMP = (dist.f[dMMP])[k_MM0]; + real f_PPM = (dist.f[dPPM])[k_00M]; + real f_MPM = (dist.f[dMPM])[k_M0M]; + real f_PMM = (dist.f[dPMM])[k_0MM]; + real f_MMM = (dist.f[dMMM])[k_MMM]; real drho = ((((f_PPP + f_MMM) + (f_MPM + f_PMP)) + ((f_MPP + f_PMM) + (f_MMP + f_PPM))) + (((f_0MP + f_0PM) + (f_0MM + f_0PP)) + ((f_M0P + f_P0M) + (f_M0M + f_P0P)) + diff --git a/src/gpu/VirtualFluids_GPU/Output/DistributionDebugInspector.h b/src/gpu/core/Output/DistributionDebugInspector.h similarity index 100% rename from src/gpu/VirtualFluids_GPU/Output/DistributionDebugInspector.h rename to src/gpu/core/Output/DistributionDebugInspector.h diff --git a/src/gpu/VirtualFluids_GPU/Output/DistributionDebugWriter.cpp b/src/gpu/core/Output/DistributionDebugWriter.cpp similarity index 100% rename from src/gpu/VirtualFluids_GPU/Output/DistributionDebugWriter.cpp rename to src/gpu/core/Output/DistributionDebugWriter.cpp diff --git a/src/gpu/VirtualFluids_GPU/Output/DistributionDebugWriter.h b/src/gpu/core/Output/DistributionDebugWriter.h similarity index 100% rename from src/gpu/VirtualFluids_GPU/Output/DistributionDebugWriter.h rename to src/gpu/core/Output/DistributionDebugWriter.h diff --git a/src/gpu/VirtualFluids_GPU/Output/EdgeNodeDebugWriter.hpp b/src/gpu/core/Output/EdgeNodeDebugWriter.hpp similarity index 100% rename from src/gpu/VirtualFluids_GPU/Output/EdgeNodeDebugWriter.hpp rename to src/gpu/core/Output/EdgeNodeDebugWriter.hpp diff --git a/src/gpu/VirtualFluids_GPU/Output/FileWriter.cpp b/src/gpu/core/Output/FileWriter.cpp similarity index 98% rename from src/gpu/VirtualFluids_GPU/Output/FileWriter.cpp rename to src/gpu/core/Output/FileWriter.cpp index 5bf066a7350b59ebda8a822d42fb936169fb5a53..0e923204bfbe4b477d0698561b2167229ff91818 100644 --- a/src/gpu/VirtualFluids_GPU/Output/FileWriter.cpp +++ b/src/gpu/core/Output/FileWriter.cpp @@ -165,7 +165,7 @@ std::vector<std::string> FileWriter::getMedianNodeDataNames(std::shared_ptr<Para return nodeDataNames; } -std::string VIRTUALFLUIDS_GPU_EXPORT FileWriter::writeCollectionFile(std::shared_ptr<Parameter> para, unsigned int timestep) +std::string FileWriter::writeCollectionFile(std::shared_ptr<Parameter> para, unsigned int timestep) { std::string filename = makeCollectionFileName(para->getFName(), para->getMyProcessID(), timestep); auto nodeDataNames = this->getNodeDataNames(para); @@ -175,7 +175,7 @@ std::string VIRTUALFLUIDS_GPU_EXPORT FileWriter::writeCollectionFile(std::shared return pFileName; } -std::string VIRTUALFLUIDS_GPU_EXPORT FileWriter::writeCollectionFileMedian(std::shared_ptr<Parameter> para, unsigned int timestep) +std::string FileWriter::writeCollectionFileMedian(std::shared_ptr<Parameter> para, unsigned int timestep) { std::string filename = makeMedianCollectionFileName(para->getFName(), para->getMyProcessID(), timestep); std::vector<std::string> nodeDataNames = getMedianNodeDataNames(para); diff --git a/src/gpu/VirtualFluids_GPU/Output/FileWriter.h b/src/gpu/core/Output/FileWriter.h similarity index 100% rename from src/gpu/VirtualFluids_GPU/Output/FileWriter.h rename to src/gpu/core/Output/FileWriter.h diff --git a/src/gpu/VirtualFluids_GPU/Output/InterfaceDebugWriter.cpp b/src/gpu/core/Output/InterfaceDebugWriter.cpp similarity index 100% rename from src/gpu/VirtualFluids_GPU/Output/InterfaceDebugWriter.cpp rename to src/gpu/core/Output/InterfaceDebugWriter.cpp diff --git a/src/gpu/VirtualFluids_GPU/Output/InterfaceDebugWriter.h b/src/gpu/core/Output/InterfaceDebugWriter.h similarity index 100% rename from src/gpu/VirtualFluids_GPU/Output/InterfaceDebugWriter.h rename to src/gpu/core/Output/InterfaceDebugWriter.h diff --git a/src/gpu/VirtualFluids_GPU/Output/MeasurePointWriter.hpp b/src/gpu/core/Output/MeasurePointWriter.hpp similarity index 100% rename from src/gpu/VirtualFluids_GPU/Output/MeasurePointWriter.hpp rename to src/gpu/core/Output/MeasurePointWriter.hpp diff --git a/src/gpu/VirtualFluids_GPU/Output/NeighborDebugWriter.cpp b/src/gpu/core/Output/NeighborDebugWriter.cpp similarity index 100% rename from src/gpu/VirtualFluids_GPU/Output/NeighborDebugWriter.cpp rename to src/gpu/core/Output/NeighborDebugWriter.cpp diff --git a/src/gpu/VirtualFluids_GPU/Output/NeighborDebugWriter.h b/src/gpu/core/Output/NeighborDebugWriter.h similarity index 100% rename from src/gpu/VirtualFluids_GPU/Output/NeighborDebugWriter.h rename to src/gpu/core/Output/NeighborDebugWriter.h diff --git a/src/gpu/core/Output/NeighborDebugWriter.hpp b/src/gpu/core/Output/NeighborDebugWriter.hpp new file mode 100644 index 0000000000000000000000000000000000000000..71ee3eb1c97206153ddf5f8a3040c9203fb59862 --- /dev/null +++ b/src/gpu/core/Output/NeighborDebugWriter.hpp @@ -0,0 +1,56 @@ +#include "NeighborDebugWriter.h" + +#include "LBM/LB.h" +#include "Logger.h" +#include "Parameter/Parameter.h" +#include "basics/utilities/UbSystem.h" +#include "gpu/GridGenerator/grid/NodeValues.h" +#include "lbm/constants/D3Q27.h" +#include <basics/writer/WbWriterVtkXmlBinary.h> + +#include "StringUtilities/StringUtil.h" +#include "Utilities/FindNeighbors.h" + +void NeighborDebugWriter::writeNeighborLinkLines(LBMSimulationParameter *parH, int direction, const std::string &name, + WbWriter *writer) +{ + VF_LOG_INFO("Write node links in direction {}.", direction); + + const unsigned long long numberOfNodes = parH->numberOfNodes; + std::vector<UbTupleFloat3> nodes; + nodes.reserve(numberOfNodes); + std::vector<UbTupleInt2> cells; + cells.reserve(numberOfNodes/2); + + for (size_t position = 0; position < numberOfNodes; position++) { + if (parH->typeOfGridNode[position] != GEO_FLUID) + continue; + + const double x1 = parH->coordinateX[position]; + const double x2 = parH->coordinateY[position]; + const double x3 = parH->coordinateZ[position]; + + const uint positionNeighbor = getNeighborIndex(parH, (uint)position, direction); + + const double x1Neighbor = parH->coordinateX[positionNeighbor]; + const double x2Neighbor = parH->coordinateY[positionNeighbor]; + const double x3Neighbor = parH->coordinateZ[positionNeighbor]; + + nodes.emplace_back(float(x1), float(x2), float(x3)); + nodes.emplace_back(float(x1Neighbor), float(x2Neighbor), float(x3Neighbor)); + + cells.emplace_back((int)nodes.size() - 2, (int)nodes.size() - 1); + } + writer->writeLines(name, nodes, cells); +} + +void NeighborDebugWriter::writeNeighborLinkLinesDebug(Parameter *para) +{ + for (int level = 0; level <= para->getMaxLevel(); level++) { + for (size_t direction = vf::lbm::dir::STARTDIR; direction <= vf::lbm::dir::ENDDIR; direction++) { + const std::string fileName = para->getFName() + "_" + StringUtil::toString<int>(level) + "_Link_" + + std::to_string(direction) + "_Debug.vtk"; + writeNeighborLinkLines(para->getParH(level).get(), (int)direction, fileName, WbWriterVtkXmlBinary::getInstance()); + } + } +} \ No newline at end of file diff --git a/src/gpu/VirtualFluids_GPU/Output/NeighborDebugWriterTest.cpp b/src/gpu/core/Output/NeighborDebugWriterTest.cpp similarity index 96% rename from src/gpu/VirtualFluids_GPU/Output/NeighborDebugWriterTest.cpp rename to src/gpu/core/Output/NeighborDebugWriterTest.cpp index 2f17c3fb6b3b878a57955d7c870c7dbee6fdd565..5ce899f60c8c8dbdaae20332bd6c15d76c3052b6 100644 --- a/src/gpu/VirtualFluids_GPU/Output/NeighborDebugWriterTest.cpp +++ b/src/gpu/core/Output/NeighborDebugWriterTest.cpp @@ -1,6 +1,6 @@ #include <gmock/gmock.h> #include "NeighborDebugWriter.h" -#include "gpu/VirtualFluids_GPU/Utilities/testUtilitiesGPU.h" +#include "gpu/core/Utilities/testUtilitiesGPU.h" #include <basics/writer/WbWriterVtkXmlBinary.h> class WbWriterSpy : public WbWriter @@ -42,7 +42,7 @@ protected: const int level = 0; const unsigned long long numberOfNodes = 3; - const uint direction = vf::lbm::dir::DIR_P00; // x + const uint direction = vf::lbm::dir::dP00; // x std::unique_ptr<LBMSimulationParameter> parH = std::make_unique<LBMSimulationParameter>(); WbWriterSpy writerSpy; std::vector<uint> typeOfGridNode; diff --git a/src/gpu/VirtualFluids_GPU/Output/OffsetWriter.hpp b/src/gpu/core/Output/OffsetWriter.hpp similarity index 100% rename from src/gpu/VirtualFluids_GPU/Output/OffsetWriter.hpp rename to src/gpu/core/Output/OffsetWriter.hpp diff --git a/src/gpu/VirtualFluids_GPU/Output/PosVecIntWriter.hpp b/src/gpu/core/Output/PosVecIntWriter.hpp similarity index 100% rename from src/gpu/VirtualFluids_GPU/Output/PosVecIntWriter.hpp rename to src/gpu/core/Output/PosVecIntWriter.hpp diff --git a/src/gpu/VirtualFluids_GPU/Output/PosWriter.hpp b/src/gpu/core/Output/PosWriter.hpp similarity index 100% rename from src/gpu/VirtualFluids_GPU/Output/PosWriter.hpp rename to src/gpu/core/Output/PosWriter.hpp diff --git a/src/gpu/VirtualFluids_GPU/Output/QDebugVtkWriter.hpp b/src/gpu/core/Output/QDebugVtkWriter.hpp similarity index 95% rename from src/gpu/VirtualFluids_GPU/Output/QDebugVtkWriter.hpp rename to src/gpu/core/Output/QDebugVtkWriter.hpp index 5448db1329885ca542c951b3d068f3ab48fe502c..30ffe603ab2d6c8f3e3edd469f2e9d0bc85cfab1 100644 --- a/src/gpu/VirtualFluids_GPU/Output/QDebugVtkWriter.hpp +++ b/src/gpu/core/Output/QDebugVtkWriter.hpp @@ -11,9 +11,9 @@ #include <logger/Logger.h> #include "gpu/GridGenerator/grid/NodeValues.h" -#include "gpu/VirtualFluids_GPU/LBM/LB.h" -#include "gpu/VirtualFluids_GPU/Parameter/Parameter.h" -#include "gpu/VirtualFluids_GPU/Utilities/FindNeighbors.h" +#include "gpu/core/LBM/LB.h" +#include "gpu/core/Parameter/Parameter.h" +#include "gpu/core/Utilities/FindNeighbors.h" namespace QDebugVtkWriter { diff --git a/src/gpu/VirtualFluids_GPU/Output/QDebugVtkWriterTest.cpp b/src/gpu/core/Output/QDebugVtkWriterTest.cpp similarity index 100% rename from src/gpu/VirtualFluids_GPU/Output/QDebugVtkWriterTest.cpp rename to src/gpu/core/Output/QDebugVtkWriterTest.cpp diff --git a/src/gpu/VirtualFluids_GPU/Output/QDebugWriter.hpp b/src/gpu/core/Output/QDebugWriter.hpp similarity index 100% rename from src/gpu/VirtualFluids_GPU/Output/QDebugWriter.hpp rename to src/gpu/core/Output/QDebugWriter.hpp diff --git a/src/gpu/VirtualFluids_GPU/Output/TimeStepTimer.cpp b/src/gpu/core/Output/TimeStepTimer.cpp similarity index 99% rename from src/gpu/VirtualFluids_GPU/Output/TimeStepTimer.cpp rename to src/gpu/core/Output/TimeStepTimer.cpp index 979c4349a084342a897a0269ffb86a3714065e96..9c7edb0bf02cff0b076648c2fbf665d0ffdd4aa8 100644 --- a/src/gpu/VirtualFluids_GPU/Output/TimeStepTimer.cpp +++ b/src/gpu/core/Output/TimeStepTimer.cpp @@ -1,6 +1,6 @@ #include "helper_cuda.h" #include <cuda_runtime.h> -#include "DataTypes.h" +#include <basics/DataTypes.h> #include "UbScheduler.h" #include "Parameter/Parameter.h" diff --git a/src/gpu/VirtualFluids_GPU/Output/TimeStepTimer.h b/src/gpu/core/Output/TimeStepTimer.h similarity index 98% rename from src/gpu/VirtualFluids_GPU/Output/TimeStepTimer.h rename to src/gpu/core/Output/TimeStepTimer.h index 41bb9eba7ba09ddb092e644894eca0fde71fa27b..350a7d1e72b2a50f28abcdd2f6cc0e455cdd633e 100644 --- a/src/gpu/VirtualFluids_GPU/Output/TimeStepTimer.h +++ b/src/gpu/core/Output/TimeStepTimer.h @@ -3,7 +3,7 @@ #include "helper_cuda.h" #include <cuda_runtime.h> -#include "DataTypes.h" +#include <basics/DataTypes.h> #include "UbScheduler.h" #include "Parameter/Parameter.h" diff --git a/src/gpu/VirtualFluids_GPU/Output/Timer.cpp b/src/gpu/core/Output/Timer.cpp similarity index 100% rename from src/gpu/VirtualFluids_GPU/Output/Timer.cpp rename to src/gpu/core/Output/Timer.cpp diff --git a/src/gpu/VirtualFluids_GPU/Output/Timer.h b/src/gpu/core/Output/Timer.h similarity index 96% rename from src/gpu/VirtualFluids_GPU/Output/Timer.h rename to src/gpu/core/Output/Timer.h index fd76c66703c2a60d9aed26365f415fe3c93e7e1f..e586dd6881bbe0275758a516a7127b46a8b21bae 100644 --- a/src/gpu/VirtualFluids_GPU/Output/Timer.h +++ b/src/gpu/core/Output/Timer.h @@ -2,7 +2,7 @@ #define TIMER_H #include <cuda_runtime.h> -#include "DataTypes.h" +#include <basics/DataTypes.h> #include "Parameter/Parameter.h" #include <logger/Logger.h> diff --git a/src/gpu/VirtualFluids_GPU/Output/UnstructuredGridWriter.hpp b/src/gpu/core/Output/UnstructuredGridWriter.hpp similarity index 100% rename from src/gpu/VirtualFluids_GPU/Output/UnstructuredGridWriter.hpp rename to src/gpu/core/Output/UnstructuredGridWriter.hpp diff --git a/src/gpu/VirtualFluids_GPU/Output/VeloASCIIWriter.hpp b/src/gpu/core/Output/VeloASCIIWriter.hpp similarity index 100% rename from src/gpu/VirtualFluids_GPU/Output/VeloASCIIWriter.hpp rename to src/gpu/core/Output/VeloASCIIWriter.hpp diff --git a/src/gpu/VirtualFluids_GPU/Output/VtkSGWriter.hpp b/src/gpu/core/Output/VtkSGWriter.hpp similarity index 100% rename from src/gpu/VirtualFluids_GPU/Output/VtkSGWriter.hpp rename to src/gpu/core/Output/VtkSGWriter.hpp diff --git a/src/gpu/VirtualFluids_GPU/Output/WriterUtilities.cpp b/src/gpu/core/Output/WriterUtilities.cpp similarity index 100% rename from src/gpu/VirtualFluids_GPU/Output/WriterUtilities.cpp rename to src/gpu/core/Output/WriterUtilities.cpp diff --git a/src/gpu/VirtualFluids_GPU/Output/WriterUtilities.h b/src/gpu/core/Output/WriterUtilities.h similarity index 100% rename from src/gpu/VirtualFluids_GPU/Output/WriterUtilities.h rename to src/gpu/core/Output/WriterUtilities.h diff --git a/src/gpu/VirtualFluids_GPU/Output/WriterUtilitiesTest.cpp b/src/gpu/core/Output/WriterUtilitiesTest.cpp similarity index 100% rename from src/gpu/VirtualFluids_GPU/Output/WriterUtilitiesTest.cpp rename to src/gpu/core/Output/WriterUtilitiesTest.cpp diff --git a/src/gpu/VirtualFluids_GPU/Output/interfaceWriter.hpp b/src/gpu/core/Output/interfaceWriter.hpp similarity index 100% rename from src/gpu/VirtualFluids_GPU/Output/interfaceWriter.hpp rename to src/gpu/core/Output/interfaceWriter.hpp diff --git a/src/gpu/VirtualFluids_GPU/Output/kFullWriter.hpp b/src/gpu/core/Output/kFullWriter.hpp similarity index 100% rename from src/gpu/VirtualFluids_GPU/Output/kFullWriter.hpp rename to src/gpu/core/Output/kFullWriter.hpp diff --git a/src/gpu/VirtualFluids_GPU/Parameter/CudaStreamManager.cpp b/src/gpu/core/Parameter/CudaStreamManager.cpp similarity index 100% rename from src/gpu/VirtualFluids_GPU/Parameter/CudaStreamManager.cpp rename to src/gpu/core/Parameter/CudaStreamManager.cpp diff --git a/src/gpu/VirtualFluids_GPU/Parameter/CudaStreamManager.h b/src/gpu/core/Parameter/CudaStreamManager.h similarity index 99% rename from src/gpu/VirtualFluids_GPU/Parameter/CudaStreamManager.h rename to src/gpu/core/Parameter/CudaStreamManager.h index 98032ef16adebf56f10d8ed5e9c04bbf517876c3..35d6b462c949b7d43aeb0bdd61e4fc185eab25ad 100644 --- a/src/gpu/VirtualFluids_GPU/Parameter/CudaStreamManager.h +++ b/src/gpu/core/Parameter/CudaStreamManager.h @@ -33,7 +33,7 @@ #include <map> #include <cuda.h> #include <cuda_runtime.h> -#include "DataTypes.h" +#include <basics/DataTypes.h> enum class CudaStreamIndex { diff --git a/src/gpu/VirtualFluids_GPU/Parameter/EdgeNodeFinder.cpp b/src/gpu/core/Parameter/EdgeNodeFinder.cpp similarity index 100% rename from src/gpu/VirtualFluids_GPU/Parameter/EdgeNodeFinder.cpp rename to src/gpu/core/Parameter/EdgeNodeFinder.cpp diff --git a/src/gpu/VirtualFluids_GPU/Parameter/EdgeNodeFinder.h b/src/gpu/core/Parameter/EdgeNodeFinder.h similarity index 100% rename from src/gpu/VirtualFluids_GPU/Parameter/EdgeNodeFinder.h rename to src/gpu/core/Parameter/EdgeNodeFinder.h diff --git a/src/gpu/VirtualFluids_GPU/Parameter/EdgeNodeFinderTest.cpp b/src/gpu/core/Parameter/EdgeNodeFinderTest.cpp similarity index 100% rename from src/gpu/VirtualFluids_GPU/Parameter/EdgeNodeFinderTest.cpp rename to src/gpu/core/Parameter/EdgeNodeFinderTest.cpp diff --git a/src/gpu/VirtualFluids_GPU/Parameter/Parameter.cpp b/src/gpu/core/Parameter/Parameter.cpp similarity index 100% rename from src/gpu/VirtualFluids_GPU/Parameter/Parameter.cpp rename to src/gpu/core/Parameter/Parameter.cpp diff --git a/src/gpu/VirtualFluids_GPU/Parameter/Parameter.h b/src/gpu/core/Parameter/Parameter.h similarity index 99% rename from src/gpu/VirtualFluids_GPU/Parameter/Parameter.h rename to src/gpu/core/Parameter/Parameter.h index 5193f15e278e870410ca1ac1c9a34fb3904d6743..3db46194f24742c07a3c1f3e6d00ab11d0b5e285 100644 --- a/src/gpu/VirtualFluids_GPU/Parameter/Parameter.h +++ b/src/gpu/core/Parameter/Parameter.h @@ -43,11 +43,11 @@ #include "LBM/LB.h" #include "PreCollisionInteractor/PreCollisionInteractor.h" #include "TurbulenceModels/TurbulenceModelFactory.h" -#include "VirtualFluids_GPU/Kernel/Utilities/KernelTypes.h" +#include "gpu/core/Kernel/KernelTypes.h" #include <lbm/collision/TurbulentViscosity.h> -#include "VirtualFluids_GPU_export.h" + struct curandStateXORWOW; using curandState = struct curandStateXORWOW; @@ -456,7 +456,7 @@ struct LBMSimulationParameter { //! \brief Class for LBM-parameter management -class VIRTUALFLUIDS_GPU_EXPORT Parameter +class Parameter { public: Parameter(); diff --git a/src/gpu/VirtualFluids_GPU/Parameter/ParameterRotatingGrid.cpp b/src/gpu/core/Parameter/ParameterRotatingGrid.cpp similarity index 100% rename from src/gpu/VirtualFluids_GPU/Parameter/ParameterRotatingGrid.cpp rename to src/gpu/core/Parameter/ParameterRotatingGrid.cpp diff --git a/src/gpu/VirtualFluids_GPU/Parameter/ParameterRotatingGrid.h b/src/gpu/core/Parameter/ParameterRotatingGrid.h similarity index 100% rename from src/gpu/VirtualFluids_GPU/Parameter/ParameterRotatingGrid.h rename to src/gpu/core/Parameter/ParameterRotatingGrid.h diff --git a/src/gpu/VirtualFluids_GPU/Parameter/ParameterRotatingGridTest.cpp b/src/gpu/core/Parameter/ParameterRotatingGridTest.cpp similarity index 100% rename from src/gpu/VirtualFluids_GPU/Parameter/ParameterRotatingGridTest.cpp rename to src/gpu/core/Parameter/ParameterRotatingGridTest.cpp diff --git a/src/gpu/VirtualFluids_GPU/Parameter/ParameterTest.cpp b/src/gpu/core/Parameter/ParameterTest.cpp similarity index 99% rename from src/gpu/VirtualFluids_GPU/Parameter/ParameterTest.cpp rename to src/gpu/core/Parameter/ParameterTest.cpp index 3700669a5be7962a7c464cf35f18f02be67c41c4..042195106e6c9efcb33ea1f6dd278a83e94bb7c8 100644 --- a/src/gpu/VirtualFluids_GPU/Parameter/ParameterTest.cpp +++ b/src/gpu/core/Parameter/ParameterTest.cpp @@ -6,7 +6,7 @@ #include "LBM/Simulation.h" #include "Parameter.h" -#include "PointerDefinitions.h" +#include <basics/PointerDefinitions.h> #include "basics/config/ConfigurationFile.h" #include "DataStructureInitializer/GridReaderGenerator/GridGenerator.h" @@ -14,7 +14,7 @@ #include "Factories/GridScalingFactory.h" #include "GPU/CudaMemoryManager.h" #include "gpu/GridGenerator/grid/GridBuilder/MultipleGridBuilder.h" -#include "VirtualFluids_GPU/Kernel/Utilities/KernelTypes.h" +#include "gpu/core/Kernel/KernelTypes.h" #include <parallel/Communicator.h> diff --git a/src/gpu/VirtualFluids_GPU/Parameter/parameterTest.cfg b/src/gpu/core/Parameter/parameterTest.cfg similarity index 100% rename from src/gpu/VirtualFluids_GPU/Parameter/parameterTest.cfg rename to src/gpu/core/Parameter/parameterTest.cfg diff --git a/src/gpu/VirtualFluids_GPU/Parameter/parameterTest_emptyfile.cfg b/src/gpu/core/Parameter/parameterTest_emptyfile.cfg similarity index 100% rename from src/gpu/VirtualFluids_GPU/Parameter/parameterTest_emptyfile.cfg rename to src/gpu/core/Parameter/parameterTest_emptyfile.cfg diff --git a/src/gpu/VirtualFluids_GPU/Particles/Particles.cpp b/src/gpu/core/Particles/Particles.cpp similarity index 100% rename from src/gpu/VirtualFluids_GPU/Particles/Particles.cpp rename to src/gpu/core/Particles/Particles.cpp diff --git a/src/gpu/VirtualFluids_GPU/Particles/Particles.h b/src/gpu/core/Particles/Particles.h similarity index 100% rename from src/gpu/VirtualFluids_GPU/Particles/Particles.h rename to src/gpu/core/Particles/Particles.h diff --git a/src/gpu/VirtualFluids_GPU/PreCollisionInteractor/ActuatorFarm.cu b/src/gpu/core/PreCollisionInteractor/ActuatorFarm.cu similarity index 99% rename from src/gpu/VirtualFluids_GPU/PreCollisionInteractor/ActuatorFarm.cu rename to src/gpu/core/PreCollisionInteractor/ActuatorFarm.cu index c09e58d9dd664e7b513131ffa1bdb548eb35a244..fac6b3cb70c8bb2694f89e886b9192dfeed86782 100644 --- a/src/gpu/VirtualFluids_GPU/PreCollisionInteractor/ActuatorFarm.cu +++ b/src/gpu/core/PreCollisionInteractor/ActuatorFarm.cu @@ -42,7 +42,7 @@ #include <basics/constants/NumericConstants.h> #include <basics/writer/WbWriterVtkXmlBinary.h> -#include "VirtualFluids_GPU/GPU/GeometryUtils.h" +#include "gpu/core/GPU/GeometryUtils.h" #include "LBM/GPUHelperFunctions/KernelUtilities.h" #include "Parameter/Parameter.h" #include "Parameter/CudaStreamManager.h" diff --git a/src/gpu/VirtualFluids_GPU/PreCollisionInteractor/ActuatorFarm.h b/src/gpu/core/PreCollisionInteractor/ActuatorFarm.h similarity index 99% rename from src/gpu/VirtualFluids_GPU/PreCollisionInteractor/ActuatorFarm.h rename to src/gpu/core/PreCollisionInteractor/ActuatorFarm.h index c71bb9407e686ce14a957d120f233958359f243d..74f23f3e6a4dc9e3e798ca13aa3632171d0e3bd0 100644 --- a/src/gpu/VirtualFluids_GPU/PreCollisionInteractor/ActuatorFarm.h +++ b/src/gpu/core/PreCollisionInteractor/ActuatorFarm.h @@ -2,7 +2,7 @@ #define ActuatorFarm_H #include "PreCollisionInteractor.h" -#include "PointerDefinitions.h" +#include <basics/PointerDefinitions.h> #include "basics/constants/NumericConstants.h" #include <stdexcept> diff --git a/src/gpu/VirtualFluids_GPU/PreCollisionInteractor/ActuatorFarmInlines.h b/src/gpu/core/PreCollisionInteractor/ActuatorFarmInlines.h similarity index 100% rename from src/gpu/VirtualFluids_GPU/PreCollisionInteractor/ActuatorFarmInlines.h rename to src/gpu/core/PreCollisionInteractor/ActuatorFarmInlines.h diff --git a/src/gpu/VirtualFluids_GPU/PreCollisionInteractor/ActuatorFarmInlinesTest.cpp b/src/gpu/core/PreCollisionInteractor/ActuatorFarmInlinesTest.cpp similarity index 100% rename from src/gpu/VirtualFluids_GPU/PreCollisionInteractor/ActuatorFarmInlinesTest.cpp rename to src/gpu/core/PreCollisionInteractor/ActuatorFarmInlinesTest.cpp diff --git a/src/gpu/VirtualFluids_GPU/PreCollisionInteractor/PreCollisionInteractor.h b/src/gpu/core/PreCollisionInteractor/PreCollisionInteractor.h similarity index 83% rename from src/gpu/VirtualFluids_GPU/PreCollisionInteractor/PreCollisionInteractor.h rename to src/gpu/core/PreCollisionInteractor/PreCollisionInteractor.h index 90c434bd60e623175d5c8bfbbf23fa41f01e8a37..65149ed8b52404cb54a5cfba29120ca56fd7bf50 100644 --- a/src/gpu/VirtualFluids_GPU/PreCollisionInteractor/PreCollisionInteractor.h +++ b/src/gpu/core/PreCollisionInteractor/PreCollisionInteractor.h @@ -4,9 +4,9 @@ #include <string> #include <vector> -#include "DataTypes.h" -#include "PointerDefinitions.h" -#include "VirtualFluids_GPU_export.h" +#include <basics/DataTypes.h> +#include <basics/PointerDefinitions.h> + #include <cassert> @@ -14,7 +14,7 @@ class Parameter; class GridProvider; class CudaMemoryManager; -class VIRTUALFLUIDS_GPU_EXPORT PreCollisionInteractor +class PreCollisionInteractor { protected: diff --git a/src/gpu/VirtualFluids_GPU/PreCollisionInteractor/PrecursorWriter.cu b/src/gpu/core/PreCollisionInteractor/PrecursorWriter.cu similarity index 98% rename from src/gpu/VirtualFluids_GPU/PreCollisionInteractor/PrecursorWriter.cu rename to src/gpu/core/PreCollisionInteractor/PrecursorWriter.cu index ca1ed594829682ad94b98a59349e082bf3b315a4..cae1ca5620caf5086f38f81dc81b931ae8ad0288 100644 --- a/src/gpu/VirtualFluids_GPU/PreCollisionInteractor/PrecursorWriter.cu +++ b/src/gpu/core/PreCollisionInteractor/PrecursorWriter.cu @@ -129,15 +129,15 @@ __global__ void fillArrayDistributions( uint numberOfPrecursorNodes, //////////////////////////////////////////////////////////////////////////////////// //! - Get local distributions in PX directions //! - precursorData[linearIdx(PrecP00, nodeIndex, numberOfPrecursorNodes)] = (dist.f[DIR_P00])[k_000]; - precursorData[linearIdx(PrecPP0, nodeIndex, numberOfPrecursorNodes)] = (dist.f[DIR_PP0])[k_000]; - precursorData[linearIdx(PrecPM0, nodeIndex, numberOfPrecursorNodes)] = (dist.f[DIR_PM0])[k_0M0]; - precursorData[linearIdx(PrecP0P, nodeIndex, numberOfPrecursorNodes)] = (dist.f[DIR_P0P])[k_000]; - precursorData[linearIdx(PrecP0M, nodeIndex, numberOfPrecursorNodes)] = (dist.f[DIR_P0M])[k_00M]; - precursorData[linearIdx(PrecPPP, nodeIndex, numberOfPrecursorNodes)] = (dist.f[DIR_PPP])[k_000]; - precursorData[linearIdx(PrecPMP, nodeIndex, numberOfPrecursorNodes)] = (dist.f[DIR_PMP])[k_0M0]; - precursorData[linearIdx(PrecPPM, nodeIndex, numberOfPrecursorNodes)] = (dist.f[DIR_PPM])[k_00M]; - precursorData[linearIdx(PrecPMM, nodeIndex, numberOfPrecursorNodes)] = (dist.f[DIR_PMM])[k_0MM]; + precursorData[linearIdx(PrecP00, nodeIndex, numberOfPrecursorNodes)] = (dist.f[dP00])[k_000]; + precursorData[linearIdx(PrecPP0, nodeIndex, numberOfPrecursorNodes)] = (dist.f[dPP0])[k_000]; + precursorData[linearIdx(PrecPM0, nodeIndex, numberOfPrecursorNodes)] = (dist.f[dPM0])[k_0M0]; + precursorData[linearIdx(PrecP0P, nodeIndex, numberOfPrecursorNodes)] = (dist.f[dP0P])[k_000]; + precursorData[linearIdx(PrecP0M, nodeIndex, numberOfPrecursorNodes)] = (dist.f[dP0M])[k_00M]; + precursorData[linearIdx(PrecPPP, nodeIndex, numberOfPrecursorNodes)] = (dist.f[dPPP])[k_000]; + precursorData[linearIdx(PrecPMP, nodeIndex, numberOfPrecursorNodes)] = (dist.f[dPMP])[k_0M0]; + precursorData[linearIdx(PrecPPM, nodeIndex, numberOfPrecursorNodes)] = (dist.f[dPPM])[k_00M]; + precursorData[linearIdx(PrecPMM, nodeIndex, numberOfPrecursorNodes)] = (dist.f[dPMM])[k_0MM]; } diff --git a/src/gpu/VirtualFluids_GPU/PreCollisionInteractor/PrecursorWriter.h b/src/gpu/core/PreCollisionInteractor/PrecursorWriter.h similarity index 99% rename from src/gpu/VirtualFluids_GPU/PreCollisionInteractor/PrecursorWriter.h rename to src/gpu/core/PreCollisionInteractor/PrecursorWriter.h index 264023b58ba6db46b50f6a85b334c530864a0b8f..1419aec6d9a4303ea211a49c83842c209ceaa3b1 100644 --- a/src/gpu/VirtualFluids_GPU/PreCollisionInteractor/PrecursorWriter.h +++ b/src/gpu/core/PreCollisionInteractor/PrecursorWriter.h @@ -45,7 +45,7 @@ #include <string> #include <vector> #include <future> -#include "PointerDefinitions.h" +#include <basics/PointerDefinitions.h> #include "Logger.h" class Parameter; diff --git a/src/gpu/VirtualFluids_GPU/PreCollisionInteractor/Probes/PlanarAverageProbe.cu b/src/gpu/core/PreCollisionInteractor/Probes/PlanarAverageProbe.cu similarity index 100% rename from src/gpu/VirtualFluids_GPU/PreCollisionInteractor/Probes/PlanarAverageProbe.cu rename to src/gpu/core/PreCollisionInteractor/Probes/PlanarAverageProbe.cu diff --git a/src/gpu/VirtualFluids_GPU/PreCollisionInteractor/Probes/PlanarAverageProbe.h b/src/gpu/core/PreCollisionInteractor/Probes/PlanarAverageProbe.h similarity index 100% rename from src/gpu/VirtualFluids_GPU/PreCollisionInteractor/Probes/PlanarAverageProbe.h rename to src/gpu/core/PreCollisionInteractor/Probes/PlanarAverageProbe.h diff --git a/src/gpu/VirtualFluids_GPU/PreCollisionInteractor/Probes/PlaneProbe.cu b/src/gpu/core/PreCollisionInteractor/Probes/PlaneProbe.cu similarity index 100% rename from src/gpu/VirtualFluids_GPU/PreCollisionInteractor/Probes/PlaneProbe.cu rename to src/gpu/core/PreCollisionInteractor/Probes/PlaneProbe.cu diff --git a/src/gpu/VirtualFluids_GPU/PreCollisionInteractor/Probes/PlaneProbe.h b/src/gpu/core/PreCollisionInteractor/Probes/PlaneProbe.h similarity index 100% rename from src/gpu/VirtualFluids_GPU/PreCollisionInteractor/Probes/PlaneProbe.h rename to src/gpu/core/PreCollisionInteractor/Probes/PlaneProbe.h diff --git a/src/gpu/VirtualFluids_GPU/PreCollisionInteractor/Probes/PointProbe.cu b/src/gpu/core/PreCollisionInteractor/Probes/PointProbe.cu similarity index 100% rename from src/gpu/VirtualFluids_GPU/PreCollisionInteractor/Probes/PointProbe.cu rename to src/gpu/core/PreCollisionInteractor/Probes/PointProbe.cu diff --git a/src/gpu/VirtualFluids_GPU/PreCollisionInteractor/Probes/PointProbe.h b/src/gpu/core/PreCollisionInteractor/Probes/PointProbe.h similarity index 100% rename from src/gpu/VirtualFluids_GPU/PreCollisionInteractor/Probes/PointProbe.h rename to src/gpu/core/PreCollisionInteractor/Probes/PointProbe.h diff --git a/src/gpu/VirtualFluids_GPU/PreCollisionInteractor/Probes/Probe.cu b/src/gpu/core/PreCollisionInteractor/Probes/Probe.cu similarity index 99% rename from src/gpu/VirtualFluids_GPU/PreCollisionInteractor/Probes/Probe.cu rename to src/gpu/core/PreCollisionInteractor/Probes/Probe.cu index 0e4e9ee8b20eff4c16d8cb356ceb051fbdec5bb4..5aa106e8c86bddeb75b9d3a0c1a6cc810a08d965 100644 --- a/src/gpu/VirtualFluids_GPU/PreCollisionInteractor/Probes/Probe.cu +++ b/src/gpu/core/PreCollisionInteractor/Probes/Probe.cu @@ -36,7 +36,7 @@ #include <cuda_runtime.h> #include <helper_cuda.h> -#include "VirtualFluids_GPU/GPU/GeometryUtils.h" +#include "gpu/core/GPU/GeometryUtils.h" #include <basics/constants/NumericConstants.h> #include "basics/writer/WbWriterVtkXmlBinary.h" #include <StringUtilities/StringUtil.h> diff --git a/src/gpu/VirtualFluids_GPU/PreCollisionInteractor/Probes/Probe.h b/src/gpu/core/PreCollisionInteractor/Probes/Probe.h similarity index 99% rename from src/gpu/VirtualFluids_GPU/PreCollisionInteractor/Probes/Probe.h rename to src/gpu/core/PreCollisionInteractor/Probes/Probe.h index 007e996284c8e7f2a431a927d1f6887e6b4435cd..4836a1102cd16df7ea373a36f8d67384c0392d5f 100644 --- a/src/gpu/VirtualFluids_GPU/PreCollisionInteractor/Probes/Probe.h +++ b/src/gpu/core/PreCollisionInteractor/Probes/Probe.h @@ -48,7 +48,7 @@ #include <cuda.h> #include "PreCollisionInteractor/PreCollisionInteractor.h" -#include "PointerDefinitions.h" +#include <basics/PointerDefinitions.h> #include "WbWriterVtkXmlBinary.h" //======================================================================================= diff --git a/src/gpu/VirtualFluids_GPU/PreCollisionInteractor/Probes/WallModelProbe.cu b/src/gpu/core/PreCollisionInteractor/Probes/WallModelProbe.cu similarity index 100% rename from src/gpu/VirtualFluids_GPU/PreCollisionInteractor/Probes/WallModelProbe.cu rename to src/gpu/core/PreCollisionInteractor/Probes/WallModelProbe.cu diff --git a/src/gpu/VirtualFluids_GPU/PreCollisionInteractor/Probes/WallModelProbe.h b/src/gpu/core/PreCollisionInteractor/Probes/WallModelProbe.h similarity index 100% rename from src/gpu/VirtualFluids_GPU/PreCollisionInteractor/Probes/WallModelProbe.h rename to src/gpu/core/PreCollisionInteractor/Probes/WallModelProbe.h diff --git a/src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessor.h b/src/gpu/core/PreProcessor/PreProcessor.h similarity index 100% rename from src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessor.h rename to src/gpu/core/PreProcessor/PreProcessor.h diff --git a/src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorFactory/PreProcessorFactory.h b/src/gpu/core/PreProcessor/PreProcessorFactory/PreProcessorFactory.h similarity index 81% rename from src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorFactory/PreProcessorFactory.h rename to src/gpu/core/PreProcessor/PreProcessorFactory/PreProcessorFactory.h index 80413722b0266d19daae03eb3d0a539b95c62507..8a7c30b62b7a2efdb27f40f86a6430ccc8c76437 100644 --- a/src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorFactory/PreProcessorFactory.h +++ b/src/gpu/core/PreProcessor/PreProcessorFactory/PreProcessorFactory.h @@ -6,12 +6,12 @@ #include <memory> #include <vector> -#include "VirtualFluids_GPU_export.h" + class PreProcessor; class Parameter; -class VIRTUALFLUIDS_GPU_EXPORT PreProcessorFactory +class PreProcessorFactory { public: virtual ~PreProcessorFactory() = default; diff --git a/src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorFactory/PreProcessorFactoryImp.cpp b/src/gpu/core/PreProcessor/PreProcessorFactory/PreProcessorFactoryImp.cpp similarity index 100% rename from src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorFactory/PreProcessorFactoryImp.cpp rename to src/gpu/core/PreProcessor/PreProcessorFactory/PreProcessorFactoryImp.cpp diff --git a/src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorFactory/PreProcessorFactoryImp.h b/src/gpu/core/PreProcessor/PreProcessorFactory/PreProcessorFactoryImp.h similarity index 83% rename from src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorFactory/PreProcessorFactoryImp.h rename to src/gpu/core/PreProcessor/PreProcessorFactory/PreProcessorFactoryImp.h index e61c8e442f0d90cc16fc4125402265787fc1ed38..43ab0ccbf38462f260e3518112b2a8fb5e398985 100644 --- a/src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorFactory/PreProcessorFactoryImp.h +++ b/src/gpu/core/PreProcessor/PreProcessorFactory/PreProcessorFactoryImp.h @@ -5,7 +5,7 @@ class PreProcessorStrategy; -class VIRTUALFLUIDS_GPU_EXPORT PreProcessorFactoryImp : public PreProcessorFactory +class PreProcessorFactoryImp : public PreProcessorFactory { public: std::shared_ptr<PreProcessor> makePreProcessor(std::vector<PreProcessorType> preProcessorTypes, std::shared_ptr<Parameter> para); diff --git a/src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorImp.cpp b/src/gpu/core/PreProcessor/PreProcessorImp.cpp similarity index 100% rename from src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorImp.cpp rename to src/gpu/core/PreProcessor/PreProcessorImp.cpp diff --git a/src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorImp.h b/src/gpu/core/PreProcessor/PreProcessorImp.h similarity index 100% rename from src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorImp.h rename to src/gpu/core/PreProcessor/PreProcessorImp.h diff --git a/src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorStrategy/InitCompAD27/InitCompAD27.cu b/src/gpu/core/PreProcessor/PreProcessorStrategy/InitCompAD27/InitCompAD27.cu similarity index 100% rename from src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorStrategy/InitCompAD27/InitCompAD27.cu rename to src/gpu/core/PreProcessor/PreProcessorStrategy/InitCompAD27/InitCompAD27.cu diff --git a/src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorStrategy/InitCompAD27/InitCompAD27.h b/src/gpu/core/PreProcessor/PreProcessorStrategy/InitCompAD27/InitCompAD27.h similarity index 100% rename from src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorStrategy/InitCompAD27/InitCompAD27.h rename to src/gpu/core/PreProcessor/PreProcessorStrategy/InitCompAD27/InitCompAD27.h diff --git a/src/gpu/core/PreProcessor/PreProcessorStrategy/InitCompAD27/InitCompAD27_Device.cu b/src/gpu/core/PreProcessor/PreProcessorStrategy/InitCompAD27/InitCompAD27_Device.cu new file mode 100644 index 0000000000000000000000000000000000000000..69576864681d00d33451c68324fe86ae299713ac --- /dev/null +++ b/src/gpu/core/PreProcessor/PreProcessorStrategy/InitCompAD27/InitCompAD27_Device.cu @@ -0,0 +1,200 @@ +#include "LBM/LB.h" +#include "lbm/constants/D3Q27.h" +#include <basics/constants/NumericConstants.h> + +using namespace vf::basics::constant; +using namespace vf::lbm::dir; + + +__global__ void LB_Init_Comp_AD_27(unsigned int* neighborX, + unsigned int* neighborY, + unsigned int* neighborZ, + unsigned int* geoD, + real* Conc, + real* ux, + real* uy, + real* uz, + unsigned int size_Mat, + real* DD27, + bool EvenOrOdd) +{ + //////////////////////////////////////////////////////////////////////////////// + const unsigned x = threadIdx.x; // Globaler x-Index + const unsigned y = blockIdx.x; // Globaler y-Index + const unsigned z = blockIdx.y; // Globaler z-Index + + const unsigned nx = blockDim.x; + const unsigned ny = gridDim.x; + + const unsigned k = nx*(ny*z + y) + x; + ////////////////////////////////////////////////////////////////////////// + + if (k<size_Mat) + { + //////////////////////////////////////////////////////////////////////////////// + unsigned int BC; + BC = geoD[k]; + + if (BC != GEO_SOLID && BC != GEO_VOID) + { + Distributions27 D27; + if (EvenOrOdd == true) + { + D27.f[dP00] = &DD27[dP00 *size_Mat]; + D27.f[dM00] = &DD27[dM00 *size_Mat]; + D27.f[d0P0] = &DD27[d0P0 *size_Mat]; + D27.f[d0M0] = &DD27[d0M0 *size_Mat]; + D27.f[d00P] = &DD27[d00P *size_Mat]; + D27.f[d00M] = &DD27[d00M *size_Mat]; + D27.f[dPP0] = &DD27[dPP0 *size_Mat]; + D27.f[dMM0] = &DD27[dMM0 *size_Mat]; + D27.f[dPM0] = &DD27[dPM0 *size_Mat]; + D27.f[dMP0] = &DD27[dMP0 *size_Mat]; + D27.f[dP0P] = &DD27[dP0P *size_Mat]; + D27.f[dM0M] = &DD27[dM0M *size_Mat]; + D27.f[dP0M] = &DD27[dP0M *size_Mat]; + D27.f[dM0P] = &DD27[dM0P *size_Mat]; + D27.f[d0PP] = &DD27[d0PP *size_Mat]; + D27.f[d0MM] = &DD27[d0MM *size_Mat]; + D27.f[d0PM] = &DD27[d0PM *size_Mat]; + D27.f[d0MP] = &DD27[d0MP *size_Mat]; + D27.f[d000] = &DD27[d000*size_Mat]; + D27.f[dPPP] = &DD27[dPPP *size_Mat]; + D27.f[dMMP] = &DD27[dMMP *size_Mat]; + D27.f[dPMP] = &DD27[dPMP *size_Mat]; + D27.f[dMPP] = &DD27[dMPP *size_Mat]; + D27.f[dPPM] = &DD27[dPPM *size_Mat]; + D27.f[dMMM] = &DD27[dMMM *size_Mat]; + D27.f[dPMM]= &DD27[dPMM *size_Mat]; + D27.f[dMPM]= &DD27[dMPM *size_Mat]; + } + else + { + D27.f[dM00] = &DD27[dP00 *size_Mat]; + D27.f[dP00] = &DD27[dM00 *size_Mat]; + D27.f[d0M0] = &DD27[d0P0 *size_Mat]; + D27.f[d0P0] = &DD27[d0M0 *size_Mat]; + D27.f[d00M] = &DD27[d00P *size_Mat]; + D27.f[d00P] = &DD27[d00M *size_Mat]; + D27.f[dMM0] = &DD27[dPP0 *size_Mat]; + D27.f[dPP0] = &DD27[dMM0 *size_Mat]; + D27.f[dMP0] = &DD27[dPM0 *size_Mat]; + D27.f[dPM0] = &DD27[dMP0 *size_Mat]; + D27.f[dM0M] = &DD27[dP0P *size_Mat]; + D27.f[dP0P] = &DD27[dM0M *size_Mat]; + D27.f[dM0P] = &DD27[dP0M *size_Mat]; + D27.f[dP0M] = &DD27[dM0P *size_Mat]; + D27.f[d0MM] = &DD27[d0PP *size_Mat]; + D27.f[d0PP] = &DD27[d0MM *size_Mat]; + D27.f[d0MP] = &DD27[d0PM *size_Mat]; + D27.f[d0PM] = &DD27[d0MP *size_Mat]; + D27.f[d000] = &DD27[d000*size_Mat]; + D27.f[dMMM] = &DD27[dPPP *size_Mat]; + D27.f[dPPM] = &DD27[dMMP *size_Mat]; + D27.f[dMPM]= &DD27[dPMP *size_Mat]; + D27.f[dPMM]= &DD27[dMPP *size_Mat]; + D27.f[dMMP] = &DD27[dPPM *size_Mat]; + D27.f[dPPP] = &DD27[dMMM *size_Mat]; + D27.f[dMPP] = &DD27[dPMM *size_Mat]; + D27.f[dPMP] = &DD27[dMPM *size_Mat]; + } + ////////////////////////////////////////////////////////////////////////// + real ConcD = Conc[k]; + real vx1 = ux[k]; + real vx2 = uy[k]; + real vx3 = uz[k]; + //real lambdaD = -three + sqrt(three); + //real Diffusivity = c1o20; + //real Lam = -(c1o2+one/lambdaD); + //real nue_d = Lam/three; + //real ae = Diffusivity/nue_d - one; + //real ux_sq = vx1 * vx1; + //real uy_sq = vx2 * vx2; + //real uz_sq = vx3 * vx3; + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //D3Q7 + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //index + //unsigned int kzero= k; + //unsigned int ke = k; + //unsigned int kw = neighborX[k]; + //unsigned int kn = k; + //unsigned int ks = neighborY[k]; + //unsigned int kt = k; + //unsigned int kb = neighborZ[k]; + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //(D7.f[0])[kzero] = ConcD*(c1o3*(ae*(-three))-(ux_sq+uy_sq+uz_sq)); + //(D7.f[1])[ke ] = ConcD*(c1o6*(ae+one)+c1o2*(ux_sq)+vx1*c1o2); + //(D7.f[2])[kw ] = ConcD*(c1o6*(ae+one)+c1o2*(ux_sq)-vx1*c1o2); + //(D7.f[3])[kn ] = ConcD*(c1o6*(ae+one)+c1o2*(uy_sq)+vx2*c1o2); + //(D7.f[4])[ks ] = ConcD*(c1o6*(ae+one)+c1o2*(uy_sq)-vx2*c1o2); + //(D7.f[5])[kt ] = ConcD*(c1o6*(ae+one)+c1o2*(uz_sq)+vx3*c1o2); + //(D7.f[6])[kb ] = ConcD*(c1o6*(ae+one)+c1o2*(uz_sq)-vx3*c1o2); + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //D3Q27 + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //index + unsigned int kzero = k; + unsigned int ke = k; + unsigned int kw = neighborX[k]; + unsigned int kn = k; + unsigned int ks = neighborY[k]; + unsigned int kt = k; + unsigned int kb = neighborZ[k]; + unsigned int ksw = neighborY[kw]; + unsigned int kne = k; + unsigned int kse = ks; + unsigned int knw = kw; + unsigned int kbw = neighborZ[kw]; + unsigned int kte = k; + unsigned int kbe = kb; + unsigned int ktw = kw; + unsigned int kbs = neighborZ[ks]; + unsigned int ktn = k; + 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 = k; + unsigned int kbsw = neighborZ[ksw]; + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + real cu_sq = c3o2*(vx1*vx1 + vx2*vx2 + vx3*vx3); + + (D27.f[d000])[kzero] = c8o27* ConcD*(c1o1 - cu_sq); + (D27.f[dP00])[ke] = c2o27* ConcD*(c1o1 + c3o1*(vx1)+c9o2*(vx1)*(vx1)-cu_sq); + (D27.f[dM00])[kw] = c2o27* ConcD*(c1o1 + c3o1*(-vx1) + c9o2*(-vx1)*(-vx1) - cu_sq); + (D27.f[d0P0])[kn] = c2o27* ConcD*(c1o1 + c3o1*(vx2)+c9o2*(vx2)*(vx2)-cu_sq); + (D27.f[d0M0])[ks] = c2o27* ConcD*(c1o1 + c3o1*(-vx2) + c9o2*(-vx2)*(-vx2) - cu_sq); + (D27.f[d00P])[kt] = c2o27* ConcD*(c1o1 + c3o1*(vx3)+c9o2*(vx3)*(vx3)-cu_sq); + (D27.f[d00M])[kb] = c2o27* ConcD*(c1o1 + c3o1*(-vx3) + c9o2*(-vx3)*(-vx3) - cu_sq); + (D27.f[dPP0])[kne] = c1o54* ConcD*(c1o1 + c3o1*(vx1 + vx2) + c9o2*(vx1 + vx2)*(vx1 + vx2) - cu_sq); + (D27.f[dMM0])[ksw] = c1o54* ConcD*(c1o1 + c3o1*(-vx1 - vx2) + c9o2*(-vx1 - vx2)*(-vx1 - vx2) - cu_sq); + (D27.f[dPM0])[kse] = c1o54* ConcD*(c1o1 + c3o1*(vx1 - vx2) + c9o2*(vx1 - vx2)*(vx1 - vx2) - cu_sq); + (D27.f[dMP0])[knw] = c1o54* ConcD*(c1o1 + c3o1*(-vx1 + vx2) + c9o2*(-vx1 + vx2)*(-vx1 + vx2) - cu_sq); + (D27.f[dP0P])[kte] = c1o54* ConcD*(c1o1 + c3o1*(vx1 + vx3) + c9o2*(vx1 + vx3)*(vx1 + vx3) - cu_sq); + (D27.f[dM0M])[kbw] = c1o54* ConcD*(c1o1 + c3o1*(-vx1 - vx3) + c9o2*(-vx1 - vx3)*(-vx1 - vx3) - cu_sq); + (D27.f[dP0M])[kbe] = c1o54* ConcD*(c1o1 + c3o1*(vx1 - vx3) + c9o2*(vx1 - vx3)*(vx1 - vx3) - cu_sq); + (D27.f[dM0P])[ktw] = c1o54* ConcD*(c1o1 + c3o1*(-vx1 + vx3) + c9o2*(-vx1 + vx3)*(-vx1 + vx3) - cu_sq); + (D27.f[d0PP])[ktn] = c1o54* ConcD*(c1o1 + c3o1*(vx2 + vx3) + c9o2*(vx2 + vx3)*(vx2 + vx3) - cu_sq); + (D27.f[d0MM])[kbs] = c1o54* ConcD*(c1o1 + c3o1*(-vx2 - vx3) + c9o2*(-vx2 - vx3)*(-vx2 - vx3) - cu_sq); + (D27.f[d0PM])[kbn] = c1o54* ConcD*(c1o1 + c3o1*(vx2 - vx3) + c9o2*(vx2 - vx3)*(vx2 - vx3) - cu_sq); + (D27.f[d0MP])[kts] = c1o54* ConcD*(c1o1 + c3o1*(-vx2 + vx3) + c9o2*(-vx2 + vx3)*(-vx2 + vx3) - cu_sq); + (D27.f[dPPP])[ktne] = c1o216*ConcD*(c1o1 + c3o1*(vx1 + vx2 + vx3) + c9o2*(vx1 + vx2 + vx3)*(vx1 + vx2 + vx3) - cu_sq); + (D27.f[dMMM])[kbsw] = c1o216*ConcD*(c1o1 + c3o1*(-vx1 - vx2 - vx3) + c9o2*(-vx1 - vx2 - vx3)*(-vx1 - vx2 - vx3) - cu_sq); + (D27.f[dPPM])[kbne] = c1o216*ConcD*(c1o1 + c3o1*(vx1 + vx2 - vx3) + c9o2*(vx1 + vx2 - vx3)*(vx1 + vx2 - vx3) - cu_sq); + (D27.f[dMMP])[ktsw] = c1o216*ConcD*(c1o1 + c3o1*(-vx1 - vx2 + vx3) + c9o2*(-vx1 - vx2 + vx3)*(-vx1 - vx2 + vx3) - cu_sq); + (D27.f[dPMP])[ktse] = c1o216*ConcD*(c1o1 + c3o1*(vx1 - vx2 + vx3) + c9o2*(vx1 - vx2 + vx3)*(vx1 - vx2 + vx3) - cu_sq); + (D27.f[dMPM])[kbnw] = c1o216*ConcD*(c1o1 + c3o1*(-vx1 + vx2 - vx3) + c9o2*(-vx1 + vx2 - vx3)*(-vx1 + vx2 - vx3) - cu_sq); + (D27.f[dPMM])[kbse] = c1o216*ConcD*(c1o1 + c3o1*(vx1 - vx2 - vx3) + c9o2*(vx1 - vx2 - vx3)*(vx1 - vx2 - vx3) - cu_sq); + (D27.f[dMPP])[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/InitCompAD27/InitCompAD27_Device.cuh b/src/gpu/core/PreProcessor/PreProcessorStrategy/InitCompAD27/InitCompAD27_Device.cuh similarity index 100% rename from src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorStrategy/InitCompAD27/InitCompAD27_Device.cuh rename to src/gpu/core/PreProcessor/PreProcessorStrategy/InitCompAD27/InitCompAD27_Device.cuh diff --git a/src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorStrategy/InitCompAD7/InitCompAD7.cu b/src/gpu/core/PreProcessor/PreProcessorStrategy/InitCompAD7/InitCompAD7.cu similarity index 100% rename from src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorStrategy/InitCompAD7/InitCompAD7.cu rename to src/gpu/core/PreProcessor/PreProcessorStrategy/InitCompAD7/InitCompAD7.cu diff --git a/src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorStrategy/InitCompAD7/InitCompAD7.h b/src/gpu/core/PreProcessor/PreProcessorStrategy/InitCompAD7/InitCompAD7.h similarity index 100% rename from src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorStrategy/InitCompAD7/InitCompAD7.h rename to src/gpu/core/PreProcessor/PreProcessorStrategy/InitCompAD7/InitCompAD7.h diff --git a/src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorStrategy/InitCompAD7/InitCompAD7_Device.cu b/src/gpu/core/PreProcessor/PreProcessorStrategy/InitCompAD7/InitCompAD7_Device.cu similarity index 100% rename from src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorStrategy/InitCompAD7/InitCompAD7_Device.cu rename to src/gpu/core/PreProcessor/PreProcessorStrategy/InitCompAD7/InitCompAD7_Device.cu diff --git a/src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorStrategy/InitCompAD7/InitCompAD7_Device.cuh b/src/gpu/core/PreProcessor/PreProcessorStrategy/InitCompAD7/InitCompAD7_Device.cuh similarity index 100% rename from src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorStrategy/InitCompAD7/InitCompAD7_Device.cuh rename to src/gpu/core/PreProcessor/PreProcessorStrategy/InitCompAD7/InitCompAD7_Device.cuh diff --git a/src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorStrategy/InitCompSP27/InitCompSP27.cu b/src/gpu/core/PreProcessor/PreProcessorStrategy/InitCompSP27/InitCompSP27.cu similarity index 100% rename from src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorStrategy/InitCompSP27/InitCompSP27.cu rename to src/gpu/core/PreProcessor/PreProcessorStrategy/InitCompSP27/InitCompSP27.cu diff --git a/src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorStrategy/InitCompSP27/InitCompSP27.h b/src/gpu/core/PreProcessor/PreProcessorStrategy/InitCompSP27/InitCompSP27.h similarity index 100% rename from src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorStrategy/InitCompSP27/InitCompSP27.h rename to src/gpu/core/PreProcessor/PreProcessorStrategy/InitCompSP27/InitCompSP27.h diff --git a/src/gpu/core/PreProcessor/PreProcessorStrategy/InitCompSP27/InitCompSP27_Device.cu b/src/gpu/core/PreProcessor/PreProcessorStrategy/InitCompSP27/InitCompSP27_Device.cu new file mode 100644 index 0000000000000000000000000000000000000000..92725eea736985443a8ba8caeeda002fa1ac7bdd --- /dev/null +++ b/src/gpu/core/PreProcessor/PreProcessorStrategy/InitCompSP27/InitCompSP27_Device.cu @@ -0,0 +1,466 @@ +#include "LBM/LB.h" +#include "lbm/constants/D3Q27.h" +#include <basics/constants/NumericConstants.h> + +using namespace vf::basics::constant; +using namespace vf::lbm::dir; +#include "math.h" + +#include <stdio.h> + +__global__ void LB_Init_Comp_SP_27(unsigned int* neighborX, + unsigned int* neighborY, + unsigned int* neighborZ, + unsigned int* geoD, + real* rho, + real* ux, + real* uy, + real* uz, + unsigned int size_Mat, + real* DD, + bool EvenOrOdd) +{ + //////////////////////////////////////////////////////////////////////////////// + const unsigned x = threadIdx.x; // Globaler x-Index + const unsigned y = blockIdx.x; // Globaler y-Index + const unsigned z = blockIdx.y; // Globaler z-Index + + const unsigned nx = blockDim.x; + const unsigned ny = gridDim.x; + + const unsigned k = nx*(ny*z + y) + x; + ////////////////////////////////////////////////////////////////////////// + + if(k<size_Mat) + { + //////////////////////////////////////////////////////////////////////////////// + unsigned int BC; + BC = geoD[k]; + + if( BC != GEO_SOLID && BC != GEO_VOID) + { + Distributions27 D; + if (EvenOrOdd==true) + { + D.f[dP00 ] = &DD[dP00 *size_Mat]; + D.f[dM00 ] = &DD[dM00 *size_Mat]; + D.f[d0P0 ] = &DD[d0P0 *size_Mat]; + D.f[d0M0 ] = &DD[d0M0 *size_Mat]; + D.f[d00P ] = &DD[d00P *size_Mat]; + D.f[d00M ] = &DD[d00M *size_Mat]; + D.f[dPP0 ] = &DD[dPP0 *size_Mat]; + D.f[dMM0 ] = &DD[dMM0 *size_Mat]; + D.f[dPM0 ] = &DD[dPM0 *size_Mat]; + D.f[dMP0 ] = &DD[dMP0 *size_Mat]; + D.f[dP0P ] = &DD[dP0P *size_Mat]; + D.f[dM0M ] = &DD[dM0M *size_Mat]; + D.f[dP0M ] = &DD[dP0M *size_Mat]; + D.f[dM0P ] = &DD[dM0P *size_Mat]; + D.f[d0PP ] = &DD[d0PP *size_Mat]; + D.f[d0MM ] = &DD[d0MM *size_Mat]; + D.f[d0PM ] = &DD[d0PM *size_Mat]; + D.f[d0MP ] = &DD[d0MP *size_Mat]; + D.f[d000] = &DD[d000*size_Mat]; + D.f[dPPP ] = &DD[dPPP *size_Mat]; + D.f[dMMP ] = &DD[dMMP *size_Mat]; + D.f[dPMP ] = &DD[dPMP *size_Mat]; + D.f[dMPP ] = &DD[dMPP *size_Mat]; + D.f[dPPM ] = &DD[dPPM *size_Mat]; + D.f[dMMM ] = &DD[dMMM *size_Mat]; + D.f[dPMM ] = &DD[dPMM *size_Mat]; + D.f[dMPM ] = &DD[dMPM *size_Mat]; + } + else + { + D.f[dM00 ] = &DD[dP00 *size_Mat]; + D.f[dP00 ] = &DD[dM00 *size_Mat]; + D.f[d0M0 ] = &DD[d0P0 *size_Mat]; + D.f[d0P0 ] = &DD[d0M0 *size_Mat]; + D.f[d00M ] = &DD[d00P *size_Mat]; + D.f[d00P ] = &DD[d00M *size_Mat]; + D.f[dMM0 ] = &DD[dPP0 *size_Mat]; + D.f[dPP0 ] = &DD[dMM0 *size_Mat]; + D.f[dMP0 ] = &DD[dPM0 *size_Mat]; + D.f[dPM0 ] = &DD[dMP0 *size_Mat]; + D.f[dM0M ] = &DD[dP0P *size_Mat]; + D.f[dP0P ] = &DD[dM0M *size_Mat]; + D.f[dM0P ] = &DD[dP0M *size_Mat]; + D.f[dP0M ] = &DD[dM0P *size_Mat]; + D.f[d0MM ] = &DD[d0PP *size_Mat]; + D.f[d0PP ] = &DD[d0MM *size_Mat]; + D.f[d0MP ] = &DD[d0PM *size_Mat]; + D.f[d0PM ] = &DD[d0MP *size_Mat]; + D.f[d000] = &DD[d000*size_Mat]; + D.f[dMMM ] = &DD[dPPP *size_Mat]; + D.f[dPPM ] = &DD[dMMP *size_Mat]; + D.f[dMPM ] = &DD[dPMP *size_Mat]; + D.f[dPMM ] = &DD[dMPP *size_Mat]; + D.f[dMMP ] = &DD[dPPM *size_Mat]; + D.f[dPPP ] = &DD[dMMM *size_Mat]; + D.f[dMPP ] = &DD[dPMM *size_Mat]; + D.f[dPMP ] = &DD[dMPM *size_Mat]; + } + ////////////////////////////////////////////////////////////////////////// + real drho = rho[k];//0.0f;// + real vx1 = ux[k]; //0.0f;// + real vx2 = uy[k]; //0.0f;// + real vx3 = uz[k]; //0.0f;// + ////////////////////////////////////////////////////////////////////////// + //index + ////////////////////////////////////////////////////////////////////////// + unsigned int kzero= k; + unsigned int ke = k; + unsigned int kw = neighborX[k]; + unsigned int kn = k; + unsigned int ks = neighborY[k]; + unsigned int kt = k; + unsigned int kb = neighborZ[k]; + unsigned int ksw = neighborY[kw]; + unsigned int kne = k; + unsigned int kse = ks; + unsigned int knw = kw; + unsigned int kbw = neighborZ[kw]; + unsigned int kte = k; + unsigned int kbe = kb; + unsigned int ktw = kw; + unsigned int kbs = neighborZ[ks]; + unsigned int ktn = k; + 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 = k; + unsigned int kbsw = neighborZ[ksw]; + ////////////////////////////////////////////////////////////////////////// + real cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3); + + (D.f[d000])[kzero] = c8o27* (drho-cu_sq*(c1o1+drho)); + (D.f[dP00 ])[ke ] = c2o27* (drho+ (c1o1+drho) * (c3o1*( vx1 )+c9o2*( vx1 )*( vx1 )-cu_sq)); + (D.f[dM00 ])[kw ] = c2o27* (drho+ (c1o1+drho) * (c3o1*(-vx1 )+c9o2*(-vx1 )*(-vx1 )-cu_sq)); + (D.f[d0P0 ])[kn ] = c2o27* (drho+ (c1o1+drho) * (c3o1*( vx2 )+c9o2*( vx2 )*( vx2 )-cu_sq)); + (D.f[d0M0 ])[ks ] = c2o27* (drho+ (c1o1+drho) * (c3o1*( -vx2 )+c9o2*( -vx2 )*( -vx2 )-cu_sq)); + (D.f[d00P ])[kt ] = c2o27* (drho+ (c1o1+drho) * (c3o1*( vx3)+c9o2*( vx3)*( vx3)-cu_sq)); + (D.f[d00M ])[kb ] = c2o27* (drho+ (c1o1+drho) * (c3o1*( -vx3)+c9o2*( -vx3)*( -vx3)-cu_sq)); + (D.f[dPP0 ])[kne ] = c1o54* (drho+ (c1o1+drho) * (c3o1*( vx1+vx2 )+c9o2*( vx1+vx2 )*( vx1+vx2 )-cu_sq)); + (D.f[dMM0 ])[ksw ] = c1o54* (drho+ (c1o1+drho) * (c3o1*(-vx1-vx2 )+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq)); + (D.f[dPM0 ])[kse ] = c1o54* (drho+ (c1o1+drho) * (c3o1*( vx1-vx2 )+c9o2*( vx1-vx2 )*( vx1-vx2 )-cu_sq)); + (D.f[dMP0 ])[knw ] = c1o54* (drho+ (c1o1+drho) * (c3o1*(-vx1+vx2 )+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq)); + (D.f[dP0P ])[kte ] = c1o54* (drho+ (c1o1+drho) * (c3o1*( vx1 +vx3)+c9o2*( vx1 +vx3)*( vx1 +vx3)-cu_sq)); + (D.f[dM0M ])[kbw ] = c1o54* (drho+ (c1o1+drho) * (c3o1*(-vx1 -vx3)+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq)); + (D.f[dP0M ])[kbe ] = c1o54* (drho+ (c1o1+drho) * (c3o1*( vx1 -vx3)+c9o2*( vx1 -vx3)*( vx1 -vx3)-cu_sq)); + (D.f[dM0P ])[ktw ] = c1o54* (drho+ (c1o1+drho) * (c3o1*(-vx1 +vx3)+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq)); + (D.f[d0PP ])[ktn ] = c1o54* (drho+ (c1o1+drho) * (c3o1*( vx2+vx3)+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq)); + (D.f[d0MM ])[kbs ] = c1o54* (drho+ (c1o1+drho) * (c3o1*( -vx2-vx3)+c9o2*( -vx2-vx3)*( -vx2-vx3)-cu_sq)); + (D.f[d0PM ])[kbn ] = c1o54* (drho+ (c1o1+drho) * (c3o1*( vx2-vx3)+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq)); + (D.f[d0MP ])[kts ] = c1o54* (drho+ (c1o1+drho) * (c3o1*( -vx2+vx3)+c9o2*( -vx2+vx3)*( -vx2+vx3)-cu_sq)); + (D.f[dPPP ])[ktne ] = c1o216*(drho+ (c1o1+drho) * (c3o1*( vx1+vx2+vx3)+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq)); + (D.f[dMMM ])[kbsw ] = c1o216*(drho+ (c1o1+drho) * (c3o1*(-vx1-vx2-vx3)+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq)); + (D.f[dPPM ])[kbne ] = c1o216*(drho+ (c1o1+drho) * (c3o1*( vx1+vx2-vx3)+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq)); + (D.f[dMMP ])[ktsw ] = c1o216*(drho+ (c1o1+drho) * (c3o1*(-vx1-vx2+vx3)+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq)); + (D.f[dPMP ])[ktse ] = c1o216*(drho+ (c1o1+drho) * (c3o1*( vx1-vx2+vx3)+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq)); + (D.f[dMPM ])[kbnw ] = c1o216*(drho+ (c1o1+drho) * (c3o1*(-vx1+vx2-vx3)+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq)); + (D.f[dPMM ])[kbse ] = c1o216*(drho+ (c1o1+drho) * (c3o1*( vx1-vx2-vx3)+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq)); + (D.f[dMPP ])[ktnw ] = c1o216*(drho+ (c1o1+drho) * (c3o1*(-vx1+vx2+vx3)+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq)); + } + } +} + + + + + + + + + + +//////////////////////////////////////////////////////////////////////////////// +__global__ void LB_Init_Comp_Neq_SP_27( unsigned int* neighborX, + unsigned int* neighborY, + unsigned int* neighborZ, + unsigned int* neighborWSB, + unsigned int* geoD, + real* rho, + real* ux, + real* uy, + real* uz, + unsigned int size_Mat, + real* DD, + real omega, + bool EvenOrOdd) +{ + //////////////////////////////////////////////////////////////////////////////// + const unsigned x = threadIdx.x; // Globaler x-Index + const unsigned y = blockIdx.x; // Globaler y-Index + const unsigned z = blockIdx.y; // Globaler z-Index + + const unsigned nx = blockDim.x; + const unsigned ny = gridDim.x; + + const unsigned k = nx*(ny*z + y) + x; + ////////////////////////////////////////////////////////////////////////// + + if(k<size_Mat) + { + //////////////////////////////////////////////////////////////////////////////// + unsigned int BC; + BC = geoD[k]; + + if( BC != GEO_SOLID && BC != GEO_VOID) + { + Distributions27 D; + if (EvenOrOdd==true) + { + D.f[dP00 ] = &DD[dP00 *size_Mat]; + D.f[dM00 ] = &DD[dM00 *size_Mat]; + D.f[d0P0 ] = &DD[d0P0 *size_Mat]; + D.f[d0M0 ] = &DD[d0M0 *size_Mat]; + D.f[d00P ] = &DD[d00P *size_Mat]; + D.f[d00M ] = &DD[d00M *size_Mat]; + D.f[dPP0 ] = &DD[dPP0 *size_Mat]; + D.f[dMM0 ] = &DD[dMM0 *size_Mat]; + D.f[dPM0 ] = &DD[dPM0 *size_Mat]; + D.f[dMP0 ] = &DD[dMP0 *size_Mat]; + D.f[dP0P ] = &DD[dP0P *size_Mat]; + D.f[dM0M ] = &DD[dM0M *size_Mat]; + D.f[dP0M ] = &DD[dP0M *size_Mat]; + D.f[dM0P ] = &DD[dM0P *size_Mat]; + D.f[d0PP ] = &DD[d0PP *size_Mat]; + D.f[d0MM ] = &DD[d0MM *size_Mat]; + D.f[d0PM ] = &DD[d0PM *size_Mat]; + D.f[d0MP ] = &DD[d0MP *size_Mat]; + D.f[d000] = &DD[d000*size_Mat]; + D.f[dPPP ] = &DD[dPPP *size_Mat]; + D.f[dMMP ] = &DD[dMMP *size_Mat]; + D.f[dPMP ] = &DD[dPMP *size_Mat]; + D.f[dMPP ] = &DD[dMPP *size_Mat]; + D.f[dPPM ] = &DD[dPPM *size_Mat]; + D.f[dMMM ] = &DD[dMMM *size_Mat]; + D.f[dPMM ] = &DD[dPMM *size_Mat]; + D.f[dMPM ] = &DD[dMPM *size_Mat]; + } + else + { + D.f[dM00 ] = &DD[dP00 *size_Mat]; + D.f[dP00 ] = &DD[dM00 *size_Mat]; + D.f[d0M0 ] = &DD[d0P0 *size_Mat]; + D.f[d0P0 ] = &DD[d0M0 *size_Mat]; + D.f[d00M ] = &DD[d00P *size_Mat]; + D.f[d00P ] = &DD[d00M *size_Mat]; + D.f[dMM0 ] = &DD[dPP0 *size_Mat]; + D.f[dPP0 ] = &DD[dMM0 *size_Mat]; + D.f[dMP0 ] = &DD[dPM0 *size_Mat]; + D.f[dPM0 ] = &DD[dMP0 *size_Mat]; + D.f[dM0M ] = &DD[dP0P *size_Mat]; + D.f[dP0P ] = &DD[dM0M *size_Mat]; + D.f[dM0P ] = &DD[dP0M *size_Mat]; + D.f[dP0M ] = &DD[dM0P *size_Mat]; + D.f[d0MM ] = &DD[d0PP *size_Mat]; + D.f[d0PP ] = &DD[d0MM *size_Mat]; + D.f[d0MP ] = &DD[d0PM *size_Mat]; + D.f[d0PM ] = &DD[d0MP *size_Mat]; + D.f[d000] = &DD[d000*size_Mat]; + D.f[dMMM ] = &DD[dPPP *size_Mat]; + D.f[dPPM ] = &DD[dMMP *size_Mat]; + D.f[dMPM ] = &DD[dPMP *size_Mat]; + D.f[dPMM ] = &DD[dMPP *size_Mat]; + D.f[dMMP ] = &DD[dPPM *size_Mat]; + D.f[dPPP ] = &DD[dMMM *size_Mat]; + D.f[dMPP ] = &DD[dPMM *size_Mat]; + D.f[dPMP ] = &DD[dMPM *size_Mat]; + } + ////////////////////////////////////////////////////////////////////////// + real drho = rho[k];//0.0f;// + real vx1 = ux[k]; //0.0f;// + real vx2 = uy[k]; //0.0f;// + real vx3 = uz[k]; //0.0f;// + ////////////////////////////////////////////////////////////////////////// + //index + ////////////////////////////////////////////////////////////////////////// + unsigned int kzero= k; + unsigned int ke = k; + unsigned int kw = neighborX[k]; + unsigned int kn = k; + unsigned int ks = neighborY[k]; + unsigned int kt = k; + unsigned int kb = neighborZ[k]; + unsigned int ksw = neighborY[kw]; + unsigned int kne = k; + unsigned int kse = ks; + unsigned int knw = kw; + unsigned int kbw = neighborZ[kw]; + unsigned int kte = k; + unsigned int kbe = kb; + unsigned int ktw = kw; + unsigned int kbs = neighborZ[ks]; + unsigned int ktn = k; + 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 = k; + unsigned int kbsw = neighborZ[ksw]; + ////////////////////////////////////////////////////////////////////////////// + //neighbor index + uint kPx = neighborX[k]; + uint kPy = neighborY[k]; + uint kPz = neighborZ[k]; + uint kMxyz = neighborWSB[k]; + uint kMx = neighborZ[neighborY[kMxyz]]; + uint kMy = neighborZ[neighborX[kMxyz]]; + uint kMz = neighborY[neighborX[kMxyz]]; + ////////////////////////////////////////////////////////////////////////// + //getVeloX// + real vx1NeighborPx = ux[kPx]; + real vx1NeighborMx = ux[kMx]; + real vx1NeighborPy = ux[kPy]; + real vx1NeighborMy = ux[kMy]; + real vx1NeighborPz = ux[kPz]; + real vx1NeighborMz = ux[kMz]; + //getVeloY// + real vx2NeighborPx = uy[kPx]; + real vx2NeighborMx = uy[kMx]; + real vx2NeighborPy = uy[kPy]; + real vx2NeighborMy = uy[kMy]; + real vx2NeighborPz = uy[kPz]; + real vx2NeighborMz = uy[kMz]; + //getVeloZ// + real vx3NeighborPx = uz[kPx]; + real vx3NeighborMx = uz[kMx]; + real vx3NeighborPy = uz[kPy]; + real vx3NeighborMy = uz[kMy]; + real vx3NeighborPz = uz[kPz]; + real vx3NeighborMz = uz[kMz]; + ////////////////////////////////////////////////////////////////////////// + + real dvx1dx = (vx1NeighborPx - vx1NeighborMx) / c2o1; + real dvx1dy = (vx1NeighborPy - vx1NeighborMy) / c2o1; + real dvx1dz = (vx1NeighborPz - vx1NeighborMz) / c2o1; + + real dvx2dx = (vx2NeighborPx - vx2NeighborMx) / c2o1; + real dvx2dy = (vx2NeighborPy - vx2NeighborMy) / c2o1; + real dvx2dz = (vx2NeighborPz - vx2NeighborMz) / c2o1; + + real dvx3dx = (vx3NeighborPx - vx3NeighborMx) / c2o1; + real dvx3dy = (vx3NeighborPy - vx3NeighborMy) / c2o1; + real dvx3dz = (vx3NeighborPz - vx3NeighborMz) / c2o1; + + ////////////////////////////////////////////////////////////////////////// + + // the following code is copy and pasted from VirtualFluidsVisitors/InitDistributionsBlockVisitor.cpp + // i.e. Konstantins code + + real ax = dvx1dx; + real ay = dvx1dy; + real az = dvx1dz; + + real bx = dvx2dx; + real by = dvx2dy; + real bz = dvx2dz; + + real cx = dvx3dx; + real cy = dvx3dy; + real cz = dvx3dz; + + real eps_new = c1o1; + real op = c1o1; + real o = omega; + + real f_E = eps_new *((5.*ax*o + 5.*by*o + 5.*cz*o - 8.*ax*op + 4.*by*op + 4.*cz*op)/(54.*o*op)); + + real f_N = f_E + eps_new *((2.*(ax - by))/(9.*o)); + real f_T = f_E + eps_new *((2.*(ax - cz))/(9.*o)); + real f_NE = eps_new *(-(5.*cz*o + 3.*(ay + bx)*op - 2.*cz*op + ax*(5.*o + op) + by*(5.*o + op))/(54.*o*op)); + real f_SE = f_NE + eps_new *(( ay + bx )/(9.*o)); + real f_TE = eps_new *(-(5.*cz*o + by*(5.*o - 2.*op) + 3.*(az + cx)*op + cz*op + ax*(5.*o + op))/(54.*o*op)); + real f_BE = f_TE + eps_new *(( az + cx )/(9.*o)); + real f_TN = eps_new *(-(5.*ax*o + 5.*by*o + 5.*cz*o - 2.*ax*op + by*op + 3.*bz*op + 3.*cy*op + cz*op)/(54.*o*op)); + real f_BN = f_TN + eps_new *(( bz + cy )/(9.*o)); + real f_ZERO = eps_new *((5.*(ax + by + cz))/(9.*op)); + real f_TNE = eps_new *(-(ay + az + bx + bz + cx + cy)/(72.*o)); + real f_TSW = - f_TNE - eps_new *((ay + bx)/(36.*o)); + real f_TSE = - f_TNE - eps_new *((az + cx)/(36.*o)); + real f_TNW = - f_TNE - eps_new *((bz + cy)/(36.*o)); + + ////////////////////////////////////////////////////////////////////////// + real cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3); + + (D.f[d000])[kzero] = c8o27* (drho-cu_sq*(c1o1+drho)); + (D.f[dP00 ])[ke ] = c2o27* (drho+ (c1o1+drho) * (c3o1*( vx1 )+c9o2*( vx1 )*( vx1 )-cu_sq)); + (D.f[dM00 ])[kw ] = c2o27* (drho+ (c1o1+drho) * (c3o1*(-vx1 )+c9o2*(-vx1 )*(-vx1 )-cu_sq)); + (D.f[d0P0 ])[kn ] = c2o27* (drho+ (c1o1+drho) * (c3o1*( vx2 )+c9o2*( vx2 )*( vx2 )-cu_sq)); + (D.f[d0M0 ])[ks ] = c2o27* (drho+ (c1o1+drho) * (c3o1*( -vx2 )+c9o2*( -vx2 )*( -vx2 )-cu_sq)); + (D.f[d00P ])[kt ] = c2o27* (drho+ (c1o1+drho) * (c3o1*( vx3)+c9o2*( vx3)*( vx3)-cu_sq)); + (D.f[d00M ])[kb ] = c2o27* (drho+ (c1o1+drho) * (c3o1*( -vx3)+c9o2*( -vx3)*( -vx3)-cu_sq)); + (D.f[dPP0 ])[kne ] = c1o54* (drho+ (c1o1+drho) * (c3o1*( vx1+vx2 )+c9o2*( vx1+vx2 )*( vx1+vx2 )-cu_sq)); + (D.f[dMM0 ])[ksw ] = c1o54* (drho+ (c1o1+drho) * (c3o1*(-vx1-vx2 )+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq)); + (D.f[dPM0 ])[kse ] = c1o54* (drho+ (c1o1+drho) * (c3o1*( vx1-vx2 )+c9o2*( vx1-vx2 )*( vx1-vx2 )-cu_sq)); + (D.f[dMP0 ])[knw ] = c1o54* (drho+ (c1o1+drho) * (c3o1*(-vx1+vx2 )+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq)); + (D.f[dP0P ])[kte ] = c1o54* (drho+ (c1o1+drho) * (c3o1*( vx1 +vx3)+c9o2*( vx1 +vx3)*( vx1 +vx3)-cu_sq)); + (D.f[dM0M ])[kbw ] = c1o54* (drho+ (c1o1+drho) * (c3o1*(-vx1 -vx3)+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq)); + (D.f[dP0M ])[kbe ] = c1o54* (drho+ (c1o1+drho) * (c3o1*( vx1 -vx3)+c9o2*( vx1 -vx3)*( vx1 -vx3)-cu_sq)); + (D.f[dM0P ])[ktw ] = c1o54* (drho+ (c1o1+drho) * (c3o1*(-vx1 +vx3)+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq)); + (D.f[d0PP ])[ktn ] = c1o54* (drho+ (c1o1+drho) * (c3o1*( vx2+vx3)+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq)); + (D.f[d0MM ])[kbs ] = c1o54* (drho+ (c1o1+drho) * (c3o1*( -vx2-vx3)+c9o2*( -vx2-vx3)*( -vx2-vx3)-cu_sq)); + (D.f[d0PM ])[kbn ] = c1o54* (drho+ (c1o1+drho) * (c3o1*( vx2-vx3)+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq)); + (D.f[d0MP ])[kts ] = c1o54* (drho+ (c1o1+drho) * (c3o1*( -vx2+vx3)+c9o2*( -vx2+vx3)*( -vx2+vx3)-cu_sq)); + (D.f[dPPP ])[ktne ] = c1o216*(drho+ (c1o1+drho) * (c3o1*( vx1+vx2+vx3)+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq)); + (D.f[dMMM ])[kbsw ] = c1o216*(drho+ (c1o1+drho) * (c3o1*(-vx1-vx2-vx3)+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq)); + (D.f[dPPM ])[kbne ] = c1o216*(drho+ (c1o1+drho) * (c3o1*( vx1+vx2-vx3)+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq)); + (D.f[dMMP ])[ktsw ] = c1o216*(drho+ (c1o1+drho) * (c3o1*(-vx1-vx2+vx3)+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq)); + (D.f[dPMP ])[ktse ] = c1o216*(drho+ (c1o1+drho) * (c3o1*( vx1-vx2+vx3)+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq)); + (D.f[dMPM ])[kbnw ] = c1o216*(drho+ (c1o1+drho) * (c3o1*(-vx1+vx2-vx3)+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq)); + (D.f[dPMM ])[kbse ] = c1o216*(drho+ (c1o1+drho) * (c3o1*( vx1-vx2-vx3)+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq)); + (D.f[dMPP ])[ktnw ] = c1o216*(drho+ (c1o1+drho) * (c3o1*(-vx1+vx2+vx3)+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq)); + + ////////////////////////////////////////////////////////////////////////// + + (D.f[d000])[kzero] += (c1o1+drho) * f_ZERO; + (D.f[dP00 ])[ke ] += (c1o1+drho) * f_E ; + (D.f[dM00 ])[kw ] += (c1o1+drho) * f_E ; + (D.f[d0P0 ])[kn ] += (c1o1+drho) * f_N ; + (D.f[d0M0 ])[ks ] += (c1o1+drho) * f_N ; + (D.f[d00P ])[kt ] += (c1o1+drho) * f_T ; + (D.f[d00M ])[kb ] += (c1o1+drho) * f_T ; + (D.f[dPP0 ])[kne ] += (c1o1+drho) * f_NE ; + (D.f[dMM0 ])[ksw ] += (c1o1+drho) * f_NE ; + (D.f[dPM0 ])[kse ] += (c1o1+drho) * f_SE ; + (D.f[dMP0 ])[knw ] += (c1o1+drho) * f_SE ; + (D.f[dP0P ])[kte ] += (c1o1+drho) * f_TE ; + (D.f[dM0M ])[kbw ] += (c1o1+drho) * f_TE ; + (D.f[dP0M ])[kbe ] += (c1o1+drho) * f_BE ; + (D.f[dM0P ])[ktw ] += (c1o1+drho) * f_BE ; + (D.f[d0PP ])[ktn ] += (c1o1+drho) * f_TN ; + (D.f[d0MM ])[kbs ] += (c1o1+drho) * f_TN ; + (D.f[d0PM ])[kbn ] += (c1o1+drho) * f_BN ; + (D.f[d0MP ])[kts ] += (c1o1+drho) * f_BN ; + (D.f[dPPP ])[ktne ] += (c1o1+drho) * f_TNE ; + (D.f[dMMM ])[kbsw ] += (c1o1+drho) * f_TNE ; + (D.f[dPPM ])[kbne ] += (c1o1+drho) * f_TSW ; + (D.f[dMMP ])[ktsw ] += (c1o1+drho) * f_TSW ; + (D.f[dPMP ])[ktse ] += (c1o1+drho) * f_TSE ; + (D.f[dMPM ])[kbnw ] += (c1o1+drho) * f_TSE ; + (D.f[dPMM ])[kbse ] += (c1o1+drho) * f_TNW ; + (D.f[dMPP ])[ktnw ] += (c1o1+drho) * f_TNW ; + + ////////////////////////////////////////////////////////////////////////// + } + else + { + ////////////////////////////////////////////////////////////////////////// + Distributions27 D; + D.f[d000] = &DD[d000*size_Mat]; + ////////////////////////////////////////////////////////////////////////// + (D.f[d000])[k] = c96o1; + ////////////////////////////////////////////////////////////////////////// + } + } +} \ No newline at end of file diff --git a/src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorStrategy/InitCompSP27/InitCompSP27_Device.cuh b/src/gpu/core/PreProcessor/PreProcessorStrategy/InitCompSP27/InitCompSP27_Device.cuh similarity index 100% rename from src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorStrategy/InitCompSP27/InitCompSP27_Device.cuh rename to src/gpu/core/PreProcessor/PreProcessorStrategy/InitCompSP27/InitCompSP27_Device.cuh diff --git a/src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorStrategy/InitF3/InitF3.cu b/src/gpu/core/PreProcessor/PreProcessorStrategy/InitF3/InitF3.cu similarity index 100% rename from src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorStrategy/InitF3/InitF3.cu rename to src/gpu/core/PreProcessor/PreProcessorStrategy/InitF3/InitF3.cu diff --git a/src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorStrategy/InitF3/InitF3.h b/src/gpu/core/PreProcessor/PreProcessorStrategy/InitF3/InitF3.h similarity index 100% rename from src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorStrategy/InitF3/InitF3.h rename to src/gpu/core/PreProcessor/PreProcessorStrategy/InitF3/InitF3.h diff --git a/src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorStrategy/InitF3/InitF3_Device.cu b/src/gpu/core/PreProcessor/PreProcessorStrategy/InitF3/InitF3_Device.cu similarity index 68% rename from src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorStrategy/InitF3/InitF3_Device.cu rename to src/gpu/core/PreProcessor/PreProcessorStrategy/InitF3/InitF3_Device.cu index 349bfda9824483bf08d09f267d5fc4b0f6a13ac1..76e81ae844298a44df1dc55937e83b590d43d1d3 100644 --- a/src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorStrategy/InitF3/InitF3_Device.cu +++ b/src/gpu/core/PreProcessor/PreProcessorStrategy/InitF3/InitF3_Device.cu @@ -41,21 +41,21 @@ __global__ void LB_Init_F3(unsigned int* neighborX, Distributions6 D; if (EvenOrOdd == true) { - D.g[DIR_P00] = &G6[DIR_P00 *size_Mat]; - D.g[DIR_M00] = &G6[DIR_M00 *size_Mat]; - D.g[DIR_0P0] = &G6[DIR_0P0 *size_Mat]; - D.g[DIR_0M0] = &G6[DIR_0M0 *size_Mat]; - D.g[DIR_00P] = &G6[DIR_00P *size_Mat]; - D.g[DIR_00M] = &G6[DIR_00M *size_Mat]; + D.g[dP00] = &G6[dP00 *size_Mat]; + D.g[dM00] = &G6[dM00 *size_Mat]; + D.g[d0P0] = &G6[d0P0 *size_Mat]; + D.g[d0M0] = &G6[d0M0 *size_Mat]; + D.g[d00P] = &G6[d00P *size_Mat]; + D.g[d00M] = &G6[d00M *size_Mat]; } else { - D.g[DIR_M00] = &G6[DIR_P00 *size_Mat]; - D.g[DIR_P00] = &G6[DIR_M00 *size_Mat]; - D.g[DIR_0M0] = &G6[DIR_0P0 *size_Mat]; - D.g[DIR_0P0] = &G6[DIR_0M0 *size_Mat]; - D.g[DIR_00M] = &G6[DIR_00P *size_Mat]; - D.g[DIR_00P] = &G6[DIR_00M *size_Mat]; + D.g[dM00] = &G6[dP00 *size_Mat]; + D.g[dP00] = &G6[dM00 *size_Mat]; + D.g[d0M0] = &G6[d0P0 *size_Mat]; + D.g[d0P0] = &G6[d0M0 *size_Mat]; + D.g[d00M] = &G6[d00P *size_Mat]; + D.g[d00P] = &G6[d00M *size_Mat]; } ////////////////////////////////////////////////////////////////////////// //index @@ -69,12 +69,12 @@ __global__ void LB_Init_F3(unsigned int* neighborX, unsigned int kb = neighborZ[k]; ////////////////////////////////////////////////////////////////////////// - (D.g[DIR_P00])[ke] = 0.0f; - (D.g[DIR_M00])[kw] = 0.0f; - (D.g[DIR_0P0])[kn] = 0.0f; - (D.g[DIR_0M0])[ks] = 0.0f; - (D.g[DIR_00P])[kt] = 0.0f; - (D.g[DIR_00M])[kb] = 0.0f; + (D.g[dP00])[ke] = 0.0f; + (D.g[dM00])[kw] = 0.0f; + (D.g[d0P0])[kn] = 0.0f; + (D.g[d0M0])[ks] = 0.0f; + (D.g[d00P])[kt] = 0.0f; + (D.g[d00M])[kb] = 0.0f; } } } \ No newline at end of file diff --git a/src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorStrategy/InitF3/InitF3_Device.cuh b/src/gpu/core/PreProcessor/PreProcessorStrategy/InitF3/InitF3_Device.cuh similarity index 100% rename from src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorStrategy/InitF3/InitF3_Device.cuh rename to src/gpu/core/PreProcessor/PreProcessorStrategy/InitF3/InitF3_Device.cuh diff --git a/src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorStrategy/InitIncompAD27/InitIncompAD27.cu b/src/gpu/core/PreProcessor/PreProcessorStrategy/InitIncompAD27/InitIncompAD27.cu similarity index 100% rename from src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorStrategy/InitIncompAD27/InitIncompAD27.cu rename to src/gpu/core/PreProcessor/PreProcessorStrategy/InitIncompAD27/InitIncompAD27.cu diff --git a/src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorStrategy/InitIncompAD27/InitIncompAD27.h b/src/gpu/core/PreProcessor/PreProcessorStrategy/InitIncompAD27/InitIncompAD27.h similarity index 100% rename from src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorStrategy/InitIncompAD27/InitIncompAD27.h rename to src/gpu/core/PreProcessor/PreProcessorStrategy/InitIncompAD27/InitIncompAD27.h diff --git a/src/gpu/core/PreProcessor/PreProcessorStrategy/InitIncompAD27/InitIncompAD27_Device.cu b/src/gpu/core/PreProcessor/PreProcessorStrategy/InitIncompAD27/InitIncompAD27_Device.cu new file mode 100644 index 0000000000000000000000000000000000000000..1b7a5cf350dd9ee2272856a910e8c780c5cfbd78 --- /dev/null +++ b/src/gpu/core/PreProcessor/PreProcessorStrategy/InitIncompAD27/InitIncompAD27_Device.cu @@ -0,0 +1,173 @@ +#include "LBM/LB.h" +#include "lbm/constants/D3Q27.h" +#include <basics/constants/NumericConstants.h> + +using namespace vf::basics::constant; +using namespace vf::lbm::dir; +#include "math.h" + +__global__ void LB_Init_Incomp_AD_27(unsigned int* neighborX, + unsigned int* neighborY, + unsigned int* neighborZ, + unsigned int* geoD, + real* Conc, + real* ux, + real* uy, + real* uz, + unsigned int size_Mat, + real* DD27, + bool EvenOrOdd) +{ + //////////////////////////////////////////////////////////////////////////////// + const unsigned x = threadIdx.x; // Globaler x-Index + const unsigned y = blockIdx.x; // Globaler y-Index + const unsigned z = blockIdx.y; // Globaler z-Index + + const unsigned nx = blockDim.x; + const unsigned ny = gridDim.x; + + const unsigned k = nx*(ny*z + y) + x; + ////////////////////////////////////////////////////////////////////////// + + if(k<size_Mat) + { + //////////////////////////////////////////////////////////////////////////////// + unsigned int BC; + BC = geoD[k]; + + if( BC != GEO_SOLID && BC != GEO_VOID) + { + Distributions27 D27; + if (EvenOrOdd==true) + { + D27.f[dP00 ] = &DD27[dP00 *size_Mat]; + D27.f[dM00 ] = &DD27[dM00 *size_Mat]; + D27.f[d0P0 ] = &DD27[d0P0 *size_Mat]; + D27.f[d0M0 ] = &DD27[d0M0 *size_Mat]; + D27.f[d00P ] = &DD27[d00P *size_Mat]; + D27.f[d00M ] = &DD27[d00M *size_Mat]; + D27.f[dPP0 ] = &DD27[dPP0 *size_Mat]; + D27.f[dMM0 ] = &DD27[dMM0 *size_Mat]; + D27.f[dPM0 ] = &DD27[dPM0 *size_Mat]; + D27.f[dMP0 ] = &DD27[dMP0 *size_Mat]; + D27.f[dP0P ] = &DD27[dP0P *size_Mat]; + D27.f[dM0M ] = &DD27[dM0M *size_Mat]; + D27.f[dP0M ] = &DD27[dP0M *size_Mat]; + D27.f[dM0P ] = &DD27[dM0P *size_Mat]; + D27.f[d0PP ] = &DD27[d0PP *size_Mat]; + D27.f[d0MM ] = &DD27[d0MM *size_Mat]; + D27.f[d0PM ] = &DD27[d0PM *size_Mat]; + D27.f[d0MP ] = &DD27[d0MP *size_Mat]; + D27.f[d000] = &DD27[d000*size_Mat]; + D27.f[dPPP ] = &DD27[dPPP *size_Mat]; + D27.f[dMMP ] = &DD27[dMMP *size_Mat]; + D27.f[dPMP ] = &DD27[dPMP *size_Mat]; + D27.f[dMPP ] = &DD27[dMPP *size_Mat]; + D27.f[dPPM ] = &DD27[dPPM *size_Mat]; + D27.f[dMMM ] = &DD27[dMMM *size_Mat]; + D27.f[dPMM ] = &DD27[dPMM *size_Mat]; + D27.f[dMPM ] = &DD27[dMPM *size_Mat]; + } + else + { + D27.f[dM00 ] = &DD27[dP00 *size_Mat]; + D27.f[dP00 ] = &DD27[dM00 *size_Mat]; + D27.f[d0M0 ] = &DD27[d0P0 *size_Mat]; + D27.f[d0P0 ] = &DD27[d0M0 *size_Mat]; + D27.f[d00M ] = &DD27[d00P *size_Mat]; + D27.f[d00P ] = &DD27[d00M *size_Mat]; + D27.f[dMM0 ] = &DD27[dPP0 *size_Mat]; + D27.f[dPP0 ] = &DD27[dMM0 *size_Mat]; + D27.f[dMP0 ] = &DD27[dPM0 *size_Mat]; + D27.f[dPM0 ] = &DD27[dMP0 *size_Mat]; + D27.f[dM0M ] = &DD27[dP0P *size_Mat]; + D27.f[dP0P ] = &DD27[dM0M *size_Mat]; + D27.f[dM0P ] = &DD27[dP0M *size_Mat]; + D27.f[dP0M ] = &DD27[dM0P *size_Mat]; + D27.f[d0MM ] = &DD27[d0PP *size_Mat]; + D27.f[d0PP ] = &DD27[d0MM *size_Mat]; + D27.f[d0MP ] = &DD27[d0PM *size_Mat]; + D27.f[d0PM ] = &DD27[d0MP *size_Mat]; + D27.f[d000] = &DD27[d000*size_Mat]; + D27.f[dMMM ] = &DD27[dPPP *size_Mat]; + D27.f[dPPM ] = &DD27[dMMP *size_Mat]; + D27.f[dMPM ] = &DD27[dPMP *size_Mat]; + D27.f[dPMM ] = &DD27[dMPP *size_Mat]; + D27.f[dMMP ] = &DD27[dPPM *size_Mat]; + D27.f[dPPP ] = &DD27[dMMM *size_Mat]; + D27.f[dMPP ] = &DD27[dPMM *size_Mat]; + D27.f[dPMP ] = &DD27[dMPM *size_Mat]; + } + ////////////////////////////////////////////////////////////////////////// + real ConcD = Conc[k]; + real vx1 = ux[k]; + real vx2 = uy[k]; + real vx3 = uz[k]; + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //D3Q27 + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + //index + unsigned int kzero= k; + unsigned int ke = k; + unsigned int kw = neighborX[k]; + unsigned int kn = k; + unsigned int ks = neighborY[k]; + unsigned int kt = k; + unsigned int kb = neighborZ[k]; + unsigned int ksw = neighborY[kw]; + unsigned int kne = k; + unsigned int kse = ks; + unsigned int knw = kw; + unsigned int kbw = neighborZ[kw]; + unsigned int kte = k; + unsigned int kbe = kb; + unsigned int ktw = kw; + unsigned int kbs = neighborZ[ks]; + unsigned int ktn = k; + 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 = k; + unsigned int kbsw = neighborZ[ksw]; + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + real cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3); + + (D27.f[d000])[kzero] = c8o27* ConcD*(c1o1-cu_sq); + (D27.f[dP00 ])[ke ] = c2o27* ConcD*(c1o1+c3o1*( vx1 )+c9o2*( vx1 )*( vx1 )-cu_sq); + (D27.f[dM00 ])[kw ] = c2o27* ConcD*(c1o1+c3o1*(-vx1 )+c9o2*(-vx1 )*(-vx1 )-cu_sq); + (D27.f[d0P0 ])[kn ] = c2o27* ConcD*(c1o1+c3o1*( vx2 )+c9o2*( vx2 )*( vx2 )-cu_sq); + (D27.f[d0M0 ])[ks ] = c2o27* ConcD*(c1o1+c3o1*( -vx2 )+c9o2*( -vx2 )*( -vx2 )-cu_sq); + (D27.f[d00P ])[kt ] = c2o27* ConcD*(c1o1+c3o1*( vx3)+c9o2*( vx3)*( vx3)-cu_sq); + (D27.f[d00M ])[kb ] = c2o27* ConcD*(c1o1+c3o1*( -vx3)+c9o2*( -vx3)*( -vx3)-cu_sq); + (D27.f[dPP0 ])[kne ] = c1o54* ConcD*(c1o1+c3o1*( vx1+vx2 )+c9o2*( vx1+vx2 )*( vx1+vx2 )-cu_sq); + (D27.f[dMM0 ])[ksw ] = c1o54* ConcD*(c1o1+c3o1*(-vx1-vx2 )+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq); + (D27.f[dPM0 ])[kse ] = c1o54* ConcD*(c1o1+c3o1*( vx1-vx2 )+c9o2*( vx1-vx2 )*( vx1-vx2 )-cu_sq); + (D27.f[dMP0 ])[knw ] = c1o54* ConcD*(c1o1+c3o1*(-vx1+vx2 )+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq); + (D27.f[dP0P ])[kte ] = c1o54* ConcD*(c1o1+c3o1*( vx1 +vx3)+c9o2*( vx1 +vx3)*( vx1 +vx3)-cu_sq); + (D27.f[dM0M ])[kbw ] = c1o54* ConcD*(c1o1+c3o1*(-vx1 -vx3)+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq); + (D27.f[dP0M ])[kbe ] = c1o54* ConcD*(c1o1+c3o1*( vx1 -vx3)+c9o2*( vx1 -vx3)*( vx1 -vx3)-cu_sq); + (D27.f[dM0P ])[ktw ] = c1o54* ConcD*(c1o1+c3o1*(-vx1 +vx3)+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq); + (D27.f[d0PP ])[ktn ] = c1o54* ConcD*(c1o1+c3o1*( vx2+vx3)+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq); + (D27.f[d0MM ])[kbs ] = c1o54* ConcD*(c1o1+c3o1*( -vx2-vx3)+c9o2*( -vx2-vx3)*( -vx2-vx3)-cu_sq); + (D27.f[d0PM ])[kbn ] = c1o54* ConcD*(c1o1+c3o1*( vx2-vx3)+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq); + (D27.f[d0MP ])[kts ] = c1o54* ConcD*(c1o1+c3o1*( -vx2+vx3)+c9o2*( -vx2+vx3)*( -vx2+vx3)-cu_sq); + (D27.f[dPPP ])[ktne ] = c1o216*ConcD*(c1o1+c3o1*( vx1+vx2+vx3)+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq); + (D27.f[dMMM ])[kbsw ] = c1o216*ConcD*(c1o1+c3o1*(-vx1-vx2-vx3)+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq); + (D27.f[dPPM ])[kbne ] = c1o216*ConcD*(c1o1+c3o1*( vx1+vx2-vx3)+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq); + (D27.f[dMMP ])[ktsw ] = c1o216*ConcD*(c1o1+c3o1*(-vx1-vx2+vx3)+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq); + (D27.f[dPMP ])[ktse ] = c1o216*ConcD*(c1o1+c3o1*( vx1-vx2+vx3)+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq); + (D27.f[dMPM ])[kbnw ] = c1o216*ConcD*(c1o1+c3o1*(-vx1+vx2-vx3)+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq); + (D27.f[dPMM ])[kbse ] = c1o216*ConcD*(c1o1+c3o1*( vx1-vx2-vx3)+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq); + (D27.f[dMPP ])[ktnw ] = c1o216*ConcD*(c1o1+c3o1*(-vx1+vx2+vx3)+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq); + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + } + } +} \ No newline at end of file diff --git a/src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorStrategy/InitIncompAD27/InitIncompAD27_Device.cuh b/src/gpu/core/PreProcessor/PreProcessorStrategy/InitIncompAD27/InitIncompAD27_Device.cuh similarity index 100% rename from src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorStrategy/InitIncompAD27/InitIncompAD27_Device.cuh rename to src/gpu/core/PreProcessor/PreProcessorStrategy/InitIncompAD27/InitIncompAD27_Device.cuh diff --git a/src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorStrategy/InitIncompAD7/InitIncompAD7.cu b/src/gpu/core/PreProcessor/PreProcessorStrategy/InitIncompAD7/InitIncompAD7.cu similarity index 100% rename from src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorStrategy/InitIncompAD7/InitIncompAD7.cu rename to src/gpu/core/PreProcessor/PreProcessorStrategy/InitIncompAD7/InitIncompAD7.cu diff --git a/src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorStrategy/InitIncompAD7/InitIncompAD7.h b/src/gpu/core/PreProcessor/PreProcessorStrategy/InitIncompAD7/InitIncompAD7.h similarity index 100% rename from src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorStrategy/InitIncompAD7/InitIncompAD7.h rename to src/gpu/core/PreProcessor/PreProcessorStrategy/InitIncompAD7/InitIncompAD7.h diff --git a/src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorStrategy/InitIncompAD7/InitIncompAD7_Device.cu b/src/gpu/core/PreProcessor/PreProcessorStrategy/InitIncompAD7/InitIncompAD7_Device.cu similarity index 100% rename from src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorStrategy/InitIncompAD7/InitIncompAD7_Device.cu rename to src/gpu/core/PreProcessor/PreProcessorStrategy/InitIncompAD7/InitIncompAD7_Device.cu diff --git a/src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorStrategy/InitIncompAD7/InitIncompAD7_Device.cuh b/src/gpu/core/PreProcessor/PreProcessorStrategy/InitIncompAD7/InitIncompAD7_Device.cuh similarity index 100% rename from src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorStrategy/InitIncompAD7/InitIncompAD7_Device.cuh rename to src/gpu/core/PreProcessor/PreProcessorStrategy/InitIncompAD7/InitIncompAD7_Device.cuh diff --git a/src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorStrategy/InitSP27/InitSP27.cu b/src/gpu/core/PreProcessor/PreProcessorStrategy/InitSP27/InitSP27.cu similarity index 100% rename from src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorStrategy/InitSP27/InitSP27.cu rename to src/gpu/core/PreProcessor/PreProcessorStrategy/InitSP27/InitSP27.cu diff --git a/src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorStrategy/InitSP27/InitSP27.h b/src/gpu/core/PreProcessor/PreProcessorStrategy/InitSP27/InitSP27.h similarity index 100% rename from src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorStrategy/InitSP27/InitSP27.h rename to src/gpu/core/PreProcessor/PreProcessorStrategy/InitSP27/InitSP27.h diff --git a/src/gpu/core/PreProcessor/PreProcessorStrategy/InitSP27/InitSP27_Device.cu b/src/gpu/core/PreProcessor/PreProcessorStrategy/InitSP27/InitSP27_Device.cu new file mode 100644 index 0000000000000000000000000000000000000000..c050a9e69b9c902e05a549a89ae816dd392b177a --- /dev/null +++ b/src/gpu/core/PreProcessor/PreProcessorStrategy/InitSP27/InitSP27_Device.cu @@ -0,0 +1,177 @@ +#include "LBM/LB.h" +#include "lbm/constants/D3Q27.h" +#include <basics/constants/NumericConstants.h> + +using namespace vf::basics::constant; +using namespace vf::lbm::dir; +#include "math.h" + +__global__ void LB_Init_SP_27(unsigned int* neighborX, + unsigned int* neighborY, + unsigned int* neighborZ, + unsigned int* geoD, + real* rho, + real* ux, + real* uy, + real* uz, + unsigned int size_Mat, + real* DD, + bool EvenOrOdd) +{ + //////////////////////////////////////////////////////////////////////////////// + const unsigned x = threadIdx.x; // Globaler x-Index + const unsigned y = blockIdx.x; // Globaler y-Index + const unsigned z = blockIdx.y; // Globaler z-Index + + const unsigned nx = blockDim.x; + const unsigned ny = gridDim.x; + + const unsigned k = nx*(ny*z + y) + x; + ////////////////////////////////////////////////////////////////////////// + + if(k<size_Mat) + { + //////////////////////////////////////////////////////////////////////////////// + unsigned int BC; + BC = geoD[k]; + + if( BC != GEO_SOLID && BC != GEO_VOID) + { + Distributions27 D; + if (EvenOrOdd==true) + { + D.f[dP00 ] = &DD[dP00 *size_Mat]; + D.f[dM00 ] = &DD[dM00 *size_Mat]; + D.f[d0P0 ] = &DD[d0P0 *size_Mat]; + D.f[d0M0 ] = &DD[d0M0 *size_Mat]; + D.f[d00P ] = &DD[d00P *size_Mat]; + D.f[d00M ] = &DD[d00M *size_Mat]; + D.f[dPP0 ] = &DD[dPP0 *size_Mat]; + D.f[dMM0 ] = &DD[dMM0 *size_Mat]; + D.f[dPM0 ] = &DD[dPM0 *size_Mat]; + D.f[dMP0 ] = &DD[dMP0 *size_Mat]; + D.f[dP0P ] = &DD[dP0P *size_Mat]; + D.f[dM0M ] = &DD[dM0M *size_Mat]; + D.f[dP0M ] = &DD[dP0M *size_Mat]; + D.f[dM0P ] = &DD[dM0P *size_Mat]; + D.f[d0PP ] = &DD[d0PP *size_Mat]; + D.f[d0MM ] = &DD[d0MM *size_Mat]; + D.f[d0PM ] = &DD[d0PM *size_Mat]; + D.f[d0MP ] = &DD[d0MP *size_Mat]; + D.f[d000] = &DD[d000*size_Mat]; + D.f[dPPP ] = &DD[dPPP *size_Mat]; + D.f[dMMP ] = &DD[dMMP *size_Mat]; + D.f[dPMP ] = &DD[dPMP *size_Mat]; + D.f[dMPP ] = &DD[dMPP *size_Mat]; + D.f[dPPM ] = &DD[dPPM *size_Mat]; + D.f[dMMM ] = &DD[dMMM *size_Mat]; + D.f[dPMM ] = &DD[dPMM *size_Mat]; + D.f[dMPM ] = &DD[dMPM *size_Mat]; + } + else + { + D.f[dM00 ] = &DD[dP00 *size_Mat]; + D.f[dP00 ] = &DD[dM00 *size_Mat]; + D.f[d0M0 ] = &DD[d0P0 *size_Mat]; + D.f[d0P0 ] = &DD[d0M0 *size_Mat]; + D.f[d00M ] = &DD[d00P *size_Mat]; + D.f[d00P ] = &DD[d00M *size_Mat]; + D.f[dMM0 ] = &DD[dPP0 *size_Mat]; + D.f[dPP0 ] = &DD[dMM0 *size_Mat]; + D.f[dMP0 ] = &DD[dPM0 *size_Mat]; + D.f[dPM0 ] = &DD[dMP0 *size_Mat]; + D.f[dM0M ] = &DD[dP0P *size_Mat]; + D.f[dP0P ] = &DD[dM0M *size_Mat]; + D.f[dM0P ] = &DD[dP0M *size_Mat]; + D.f[dP0M ] = &DD[dM0P *size_Mat]; + D.f[d0MM ] = &DD[d0PP *size_Mat]; + D.f[d0PP ] = &DD[d0MM *size_Mat]; + D.f[d0MP ] = &DD[d0PM *size_Mat]; + D.f[d0PM ] = &DD[d0MP *size_Mat]; + D.f[d000] = &DD[d000*size_Mat]; + D.f[dMMM ] = &DD[dPPP *size_Mat]; + D.f[dPPM ] = &DD[dMMP *size_Mat]; + D.f[dMPM ] = &DD[dPMP *size_Mat]; + D.f[dPMM ] = &DD[dMPP *size_Mat]; + D.f[dMMP ] = &DD[dPPM *size_Mat]; + D.f[dPPP ] = &DD[dMMM *size_Mat]; + D.f[dMPP ] = &DD[dPMM *size_Mat]; + D.f[dPMP ] = &DD[dMPM *size_Mat]; + } + ////////////////////////////////////////////////////////////////////////// + real drho = rho[k];//0.0f;// + real vx1 = ux[k]; //0.0f;// + real vx2 = uy[k]; //0.0f;// + real vx3 = uz[k]; //0.0f;// + ////////////////////////////////////////////////////////////////////////// + //index + ////////////////////////////////////////////////////////////////////////// + unsigned int kzero= k; + unsigned int ke = k; + unsigned int kw = neighborX[k]; + unsigned int kn = k; + unsigned int ks = neighborY[k]; + unsigned int kt = k; + unsigned int kb = neighborZ[k]; + unsigned int ksw = neighborY[kw]; + unsigned int kne = k; + unsigned int kse = ks; + unsigned int knw = kw; + unsigned int kbw = neighborZ[kw]; + unsigned int kte = k; + unsigned int kbe = kb; + unsigned int ktw = kw; + unsigned int kbs = neighborZ[ks]; + unsigned int ktn = k; + 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 = k; + unsigned int kbsw = neighborZ[ksw]; + ////////////////////////////////////////////////////////////////////////// + real cu_sq=c3o2*(vx1*vx1+vx2*vx2+vx3*vx3); + + (D.f[d000])[kzero] = c8o27* (drho-cu_sq); + (D.f[dP00 ])[ke ] = c2o27* (drho+c3o1*( vx1 )+c9o2*( vx1 )*( vx1 )-cu_sq); + (D.f[dM00 ])[kw ] = c2o27* (drho+c3o1*(-vx1 )+c9o2*(-vx1 )*(-vx1 )-cu_sq); + (D.f[d0P0 ])[kn ] = c2o27* (drho+c3o1*( vx2 )+c9o2*( vx2 )*( vx2 )-cu_sq); + (D.f[d0M0 ])[ks ] = c2o27* (drho+c3o1*( -vx2 )+c9o2*( -vx2 )*( -vx2 )-cu_sq); + (D.f[d00P ])[kt ] = c2o27* (drho+c3o1*( vx3)+c9o2*( vx3)*( vx3)-cu_sq); + (D.f[d00M ])[kb ] = c2o27* (drho+c3o1*( -vx3)+c9o2*( -vx3)*( -vx3)-cu_sq); + (D.f[dPP0 ])[kne ] = c1o54* (drho+c3o1*( vx1+vx2 )+c9o2*( vx1+vx2 )*( vx1+vx2 )-cu_sq); + (D.f[dMM0 ])[ksw ] = c1o54* (drho+c3o1*(-vx1-vx2 )+c9o2*(-vx1-vx2 )*(-vx1-vx2 )-cu_sq); + (D.f[dPM0 ])[kse ] = c1o54* (drho+c3o1*( vx1-vx2 )+c9o2*( vx1-vx2 )*( vx1-vx2 )-cu_sq); + (D.f[dMP0 ])[knw ] = c1o54* (drho+c3o1*(-vx1+vx2 )+c9o2*(-vx1+vx2 )*(-vx1+vx2 )-cu_sq); + (D.f[dP0P ])[kte ] = c1o54* (drho+c3o1*( vx1 +vx3)+c9o2*( vx1 +vx3)*( vx1 +vx3)-cu_sq); + (D.f[dM0M ])[kbw ] = c1o54* (drho+c3o1*(-vx1 -vx3)+c9o2*(-vx1 -vx3)*(-vx1 -vx3)-cu_sq); + (D.f[dP0M ])[kbe ] = c1o54* (drho+c3o1*( vx1 -vx3)+c9o2*( vx1 -vx3)*( vx1 -vx3)-cu_sq); + (D.f[dM0P ])[ktw ] = c1o54* (drho+c3o1*(-vx1 +vx3)+c9o2*(-vx1 +vx3)*(-vx1 +vx3)-cu_sq); + (D.f[d0PP ])[ktn ] = c1o54* (drho+c3o1*( vx2+vx3)+c9o2*( vx2+vx3)*( vx2+vx3)-cu_sq); + (D.f[d0MM ])[kbs ] = c1o54* (drho+c3o1*( -vx2-vx3)+c9o2*( -vx2-vx3)*( -vx2-vx3)-cu_sq); + (D.f[d0PM ])[kbn ] = c1o54* (drho+c3o1*( vx2-vx3)+c9o2*( vx2-vx3)*( vx2-vx3)-cu_sq); + (D.f[d0MP ])[kts ] = c1o54* (drho+c3o1*( -vx2+vx3)+c9o2*( -vx2+vx3)*( -vx2+vx3)-cu_sq); + (D.f[dPPP ])[ktne ] = c1o216*(drho+c3o1*( vx1+vx2+vx3)+c9o2*( vx1+vx2+vx3)*( vx1+vx2+vx3)-cu_sq); + (D.f[dMMM ])[kbsw ] = c1o216*(drho+c3o1*(-vx1-vx2-vx3)+c9o2*(-vx1-vx2-vx3)*(-vx1-vx2-vx3)-cu_sq); + (D.f[dPPM ])[kbne ] = c1o216*(drho+c3o1*( vx1+vx2-vx3)+c9o2*( vx1+vx2-vx3)*( vx1+vx2-vx3)-cu_sq); + (D.f[dMMP ])[ktsw ] = c1o216*(drho+c3o1*(-vx1-vx2+vx3)+c9o2*(-vx1-vx2+vx3)*(-vx1-vx2+vx3)-cu_sq); + (D.f[dPMP ])[ktse ] = c1o216*(drho+c3o1*( vx1-vx2+vx3)+c9o2*( vx1-vx2+vx3)*( vx1-vx2+vx3)-cu_sq); + (D.f[dMPM ])[kbnw ] = c1o216*(drho+c3o1*(-vx1+vx2-vx3)+c9o2*(-vx1+vx2-vx3)*(-vx1+vx2-vx3)-cu_sq); + (D.f[dPMM ])[kbse ] = c1o216*(drho+c3o1*( vx1-vx2-vx3)+c9o2*( vx1-vx2-vx3)*( vx1-vx2-vx3)-cu_sq); + (D.f[dMPP ])[ktnw ] = c1o216*(drho+c3o1*(-vx1+vx2+vx3)+c9o2*(-vx1+vx2+vx3)*(-vx1+vx2+vx3)-cu_sq); + } + else + { + ////////////////////////////////////////////////////////////////////////// + Distributions27 D; + D.f[d000] = &DD[d000*size_Mat]; + ////////////////////////////////////////////////////////////////////////// + (D.f[d000])[k] = c96o1; + ////////////////////////////////////////////////////////////////////////// + } + } +} \ No newline at end of file diff --git a/src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorStrategy/InitSP27/InitSP27_Device.cuh b/src/gpu/core/PreProcessor/PreProcessorStrategy/InitSP27/InitSP27_Device.cuh similarity index 100% rename from src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorStrategy/InitSP27/InitSP27_Device.cuh rename to src/gpu/core/PreProcessor/PreProcessorStrategy/InitSP27/InitSP27_Device.cuh diff --git a/src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorStrategy/PreProcessorStrategy.h b/src/gpu/core/PreProcessor/PreProcessorStrategy/PreProcessorStrategy.h similarity index 100% rename from src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorStrategy/PreProcessorStrategy.h rename to src/gpu/core/PreProcessor/PreProcessorStrategy/PreProcessorStrategy.h diff --git a/src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorType.h b/src/gpu/core/PreProcessor/PreProcessorType.h similarity index 100% rename from src/gpu/VirtualFluids_GPU/PreProcessor/PreProcessorType.h rename to src/gpu/core/PreProcessor/PreProcessorType.h diff --git a/src/gpu/VirtualFluids_GPU/Restart/RestartObject.cpp b/src/gpu/core/Restart/RestartObject.cpp similarity index 100% rename from src/gpu/VirtualFluids_GPU/Restart/RestartObject.cpp rename to src/gpu/core/Restart/RestartObject.cpp diff --git a/src/gpu/VirtualFluids_GPU/Restart/RestartObject.h b/src/gpu/core/Restart/RestartObject.h similarity index 100% rename from src/gpu/VirtualFluids_GPU/Restart/RestartObject.h rename to src/gpu/core/Restart/RestartObject.h diff --git a/src/gpu/VirtualFluids_GPU/Restart/RestartObjectTests.cpp b/src/gpu/core/Restart/RestartObjectTests.cpp similarity index 100% rename from src/gpu/VirtualFluids_GPU/Restart/RestartObjectTests.cpp rename to src/gpu/core/Restart/RestartObjectTests.cpp diff --git a/src/gpu/VirtualFluids_GPU/Temperature/FindQTemp.cpp b/src/gpu/core/Temperature/FindQTemp.cpp similarity index 100% rename from src/gpu/VirtualFluids_GPU/Temperature/FindQTemp.cpp rename to src/gpu/core/Temperature/FindQTemp.cpp diff --git a/src/gpu/VirtualFluids_GPU/Temperature/FindQTemp.h b/src/gpu/core/Temperature/FindQTemp.h similarity index 100% rename from src/gpu/VirtualFluids_GPU/Temperature/FindQTemp.h rename to src/gpu/core/Temperature/FindQTemp.h diff --git a/src/gpu/VirtualFluids_GPU/Temperature/FindTemperature.cpp b/src/gpu/core/Temperature/FindTemperature.cpp similarity index 100% rename from src/gpu/VirtualFluids_GPU/Temperature/FindTemperature.cpp rename to src/gpu/core/Temperature/FindTemperature.cpp diff --git a/src/gpu/VirtualFluids_GPU/Temperature/FindTemperature.h b/src/gpu/core/Temperature/FindTemperature.h similarity index 100% rename from src/gpu/VirtualFluids_GPU/Temperature/FindTemperature.h rename to src/gpu/core/Temperature/FindTemperature.h diff --git a/src/gpu/VirtualFluids_GPU/TurbulenceModels/TurbulenceModelFactory.cpp b/src/gpu/core/TurbulenceModels/TurbulenceModelFactory.cpp similarity index 100% rename from src/gpu/VirtualFluids_GPU/TurbulenceModels/TurbulenceModelFactory.cpp rename to src/gpu/core/TurbulenceModels/TurbulenceModelFactory.cpp diff --git a/src/gpu/VirtualFluids_GPU/TurbulenceModels/TurbulenceModelFactory.h b/src/gpu/core/TurbulenceModels/TurbulenceModelFactory.h similarity index 100% rename from src/gpu/VirtualFluids_GPU/TurbulenceModels/TurbulenceModelFactory.h rename to src/gpu/core/TurbulenceModels/TurbulenceModelFactory.h diff --git a/src/gpu/VirtualFluids_GPU/Utilities/Buffer2D.hpp b/src/gpu/core/Utilities/Buffer2D.hpp similarity index 100% rename from src/gpu/VirtualFluids_GPU/Utilities/Buffer2D.hpp rename to src/gpu/core/Utilities/Buffer2D.hpp diff --git a/src/gpu/core/Utilities/FindNeighbors.h b/src/gpu/core/Utilities/FindNeighbors.h new file mode 100644 index 0000000000000000000000000000000000000000..0e0a9b5691b03a567821f684c40fb1a20bf2d232 --- /dev/null +++ b/src/gpu/core/Utilities/FindNeighbors.h @@ -0,0 +1,76 @@ +#ifndef FIND_NEIGHBORS_H +#define FIND_NEIGHBORS_H + +#include <map> + +#include "Parameter/Parameter.h" +#include "lbm/constants/D3Q27.h" + +using namespace vf::lbm::dir; + +struct countersForPointerChasing +{ + uint counterInverse; + uint counterX; + uint counterY; + uint counterZ; +}; + +const std::map<const size_t, const countersForPointerChasing> mapForPointerChasing = +{ + {d000, countersForPointerChasing{0, 0, 0, 0}}, + {dP00, countersForPointerChasing{0, 1, 0, 0}}, + {dM00, countersForPointerChasing{1, 0, 1, 1}}, + {d0P0, countersForPointerChasing{0, 0, 1, 0}}, + {d0M0, countersForPointerChasing{1, 1, 0, 1}}, + {d00P, countersForPointerChasing{0, 0, 0, 1}}, + {d00M, countersForPointerChasing{1, 1, 1, 0}}, + + {dPP0, countersForPointerChasing{0, 1, 1, 0}}, + {dMM0, countersForPointerChasing{1, 0, 0, 1}}, + {dPM0, countersForPointerChasing{1, 2, 0, 1}}, + {dMP0, countersForPointerChasing{1, 0, 2, 1}}, + {dP0P, countersForPointerChasing{0, 1, 0, 1}}, + {dM0M, countersForPointerChasing{1, 0, 1, 0}}, + {dP0M, countersForPointerChasing{1, 2, 1, 0}}, + {dM0P, countersForPointerChasing{1, 0, 1, 2}}, + {d0PP, countersForPointerChasing{0, 0, 1, 1}}, + {d0MM, countersForPointerChasing{1, 1, 0, 0}}, + {d0PM, countersForPointerChasing{1, 1, 2, 0}}, + {d0MP, countersForPointerChasing{1, 1, 0, 2}}, + + {dPPP, countersForPointerChasing{0, 1, 1, 1}}, + {dMPP, countersForPointerChasing{1, 0, 2, 2}}, + {dPMP, countersForPointerChasing{1, 2, 0, 2}}, + {dMMP, countersForPointerChasing{1, 0, 0, 2}}, + {dPPM, countersForPointerChasing{1, 2, 2, 0}}, + {dMPM, countersForPointerChasing{1, 0, 2, 0}}, + {dPMM, countersForPointerChasing{1, 2, 0, 0}}, + {dMMM, countersForPointerChasing{1, 0, 0, 0}} +}; + +// Only use for fluid nodes! +inline uint getNeighborIndex(LBMSimulationParameter* parH, const uint position, const int direction) +{ + uint nodeIndex = position; + + if (mapForPointerChasing.at(direction).counterInverse != 0) { + nodeIndex = parH->neighborInverse[nodeIndex]; + } + + for (uint x = 0; x < mapForPointerChasing.at(direction).counterX; x++) { + nodeIndex = parH->neighborX[nodeIndex]; + } + + for (uint y = 0; y < mapForPointerChasing.at(direction).counterY; y++) { + nodeIndex = parH->neighborY[nodeIndex]; + } + + for (uint z = 0; z < mapForPointerChasing.at(direction).counterZ; z++) { + nodeIndex = parH->neighborZ[nodeIndex]; + } + + return nodeIndex; +} + +#endif diff --git a/src/gpu/VirtualFluids_GPU/Utilities/testUtilitiesGPU.h b/src/gpu/core/Utilities/testUtilitiesGPU.h similarity index 100% rename from src/gpu/VirtualFluids_GPU/Utilities/testUtilitiesGPU.h rename to src/gpu/core/Utilities/testUtilitiesGPU.h diff --git a/src/lbm/MacroscopicQuantities.h b/src/lbm/MacroscopicQuantities.h index 1af676d61941d4d78a422cb39729ddf52d3fbe02..269bbe325afda2c65905350d3e2c8ffaafbdda74 100644 --- a/src/lbm/MacroscopicQuantities.h +++ b/src/lbm/MacroscopicQuantities.h @@ -24,13 +24,13 @@ namespace vf::lbm //! inline __host__ __device__ real getDensity(const real *const &f /*[27]*/) { - return ((((f[dir::DIR_PPP] + f[dir::DIR_MMM]) + (f[dir::DIR_MPM] + f[dir::DIR_PMP])) + - ((f[dir::DIR_MPP] + f[dir::DIR_PMM]) + (f[dir::DIR_MMP] + f[dir::DIR_PPM]))) + - (((f[dir::DIR_0MP] + f[dir::DIR_0PM]) + (f[dir::DIR_0MM] + f[dir::DIR_0PP])) + - ((f[dir::DIR_M0P] + f[dir::DIR_P0M]) + (f[dir::DIR_M0M] + f[dir::DIR_P0P])) + - ((f[dir::DIR_MP0] + f[dir::DIR_PM0]) + (f[dir::DIR_MM0] + f[dir::DIR_PP0]))) + - f[dir::DIR_000]) + - ((f[dir::DIR_M00] + f[dir::DIR_P00]) + (f[dir::DIR_0M0] + f[dir::DIR_0P0]) + (f[dir::DIR_00M] + f[dir::DIR_00P])); + return ((((f[dir::dPPP] + f[dir::dMMM]) + (f[dir::dMPM] + f[dir::dPMP])) + + ((f[dir::dMPP] + f[dir::dPMM]) + (f[dir::dMMP] + f[dir::dPPM]))) + + (((f[dir::d0MP] + f[dir::d0PM]) + (f[dir::d0MM] + f[dir::d0PP])) + + ((f[dir::dM0P] + f[dir::dP0M]) + (f[dir::dM0M] + f[dir::dP0P])) + + ((f[dir::dMP0] + f[dir::dPM0]) + (f[dir::dMM0] + f[dir::dPP0]))) + + f[dir::d000]) + + ((f[dir::dM00] + f[dir::dP00]) + (f[dir::d0M0] + f[dir::d0P0]) + (f[dir::d00M] + f[dir::d00P])); } /* @@ -38,20 +38,20 @@ inline __host__ __device__ real getDensity(const real *const &f /*[27]*/) */ inline __host__ __device__ real getIncompressibleVelocityX1(const real *const &f /*[27]*/) { - return ((((f[dir::DIR_PPP] - f[dir::DIR_MMM]) + (f[dir::DIR_PMP] - f[dir::DIR_MPM])) + ((f[dir::DIR_PMM] - f[dir::DIR_MPP]) + (f[dir::DIR_PPM] - f[dir::DIR_MMP]))) + - (((f[dir::DIR_P0M] - f[dir::DIR_M0P]) + (f[dir::DIR_P0P] - f[dir::DIR_M0M])) + ((f[dir::DIR_PM0] - f[dir::DIR_MP0]) + (f[dir::DIR_PP0] - f[dir::DIR_MM0]))) + (f[dir::DIR_P00] - f[dir::DIR_M00])); + return ((((f[dir::dPPP] - f[dir::dMMM]) + (f[dir::dPMP] - f[dir::dMPM])) + ((f[dir::dPMM] - f[dir::dMPP]) + (f[dir::dPPM] - f[dir::dMMP]))) + + (((f[dir::dP0M] - f[dir::dM0P]) + (f[dir::dP0P] - f[dir::dM0M])) + ((f[dir::dPM0] - f[dir::dMP0]) + (f[dir::dPP0] - f[dir::dMM0]))) + (f[dir::dP00] - f[dir::dM00])); } inline __host__ __device__ real getIncompressibleVelocityX2(const real *const &f /*[27]*/) { - return ((((f[dir::DIR_PPP] - f[dir::DIR_MMM]) + (f[dir::DIR_MPM] - f[dir::DIR_PMP])) + ((f[dir::DIR_MPP] - f[dir::DIR_PMM]) + (f[dir::DIR_PPM] - f[dir::DIR_MMP]))) + - (((f[dir::DIR_0PM] - f[dir::DIR_0MP]) + (f[dir::DIR_0PP] - f[dir::DIR_0MM])) + ((f[dir::DIR_MP0] - f[dir::DIR_PM0]) + (f[dir::DIR_PP0] - f[dir::DIR_MM0]))) + (f[dir::DIR_0P0] - f[dir::DIR_0M0])); + return ((((f[dir::dPPP] - f[dir::dMMM]) + (f[dir::dMPM] - f[dir::dPMP])) + ((f[dir::dMPP] - f[dir::dPMM]) + (f[dir::dPPM] - f[dir::dMMP]))) + + (((f[dir::d0PM] - f[dir::d0MP]) + (f[dir::d0PP] - f[dir::d0MM])) + ((f[dir::dMP0] - f[dir::dPM0]) + (f[dir::dPP0] - f[dir::dMM0]))) + (f[dir::d0P0] - f[dir::d0M0])); } inline __host__ __device__ real getIncompressibleVelocityX3(const real *const &f /*[27]*/) { - return ((((f[dir::DIR_PPP] - f[dir::DIR_MMM]) + (f[dir::DIR_PMP] - f[dir::DIR_MPM])) + ((f[dir::DIR_MPP] - f[dir::DIR_PMM]) + (f[dir::DIR_MMP] - f[dir::DIR_PPM]))) + - (((f[dir::DIR_0MP] - f[dir::DIR_0PM]) + (f[dir::DIR_0PP] - f[dir::DIR_0MM])) + ((f[dir::DIR_M0P] - f[dir::DIR_P0M]) + (f[dir::DIR_P0P] - f[dir::DIR_M0M]))) + (f[dir::DIR_00P] - f[dir::DIR_00M])); + return ((((f[dir::dPPP] - f[dir::dMMM]) + (f[dir::dPMP] - f[dir::dMPM])) + ((f[dir::dMPP] - f[dir::dPMM]) + (f[dir::dMMP] - f[dir::dPPM]))) + + (((f[dir::d0MP] - f[dir::d0PM]) + (f[dir::d0PP] - f[dir::d0MM])) + ((f[dir::dM0P] - f[dir::dP0M]) + (f[dir::dP0P] - f[dir::dM0M]))) + (f[dir::d00P] - f[dir::d00M])); } inline __host__ __device__ void getIncompressibleMacroscopicValues(const real *const &f /*[27]*/, real &rho, real &vx1, real &vx2, real &vx3) @@ -159,12 +159,12 @@ inline __host__ __device__ void getCompressibleMacroscopicValues(const Distribut */ inline __host__ __device__ real getPressure(const real *const &f27, const real& rho, const real& vx, const real& vy, const real& vz) { - return (f27[dir::DIR_P00] + f27[dir::DIR_M00] + f27[dir::DIR_0P0] + f27[dir::DIR_0M0] + f27[dir::DIR_00P] + f27[dir::DIR_00M] + - basics::constant::c2o1 * (f27[dir::DIR_PP0] + f27[dir::DIR_MM0] + f27[dir::DIR_PM0] + f27[dir::DIR_MP0] + f27[dir::DIR_P0P] + - f27[dir::DIR_M0M] + f27[dir::DIR_P0M] + f27[dir::DIR_M0P] + f27[dir::DIR_0PP] + f27[dir::DIR_0MM] + - f27[dir::DIR_0PM] + f27[dir::DIR_0MP]) + - basics::constant::c3o1 * (f27[dir::DIR_PPP] + f27[dir::DIR_MMP] + f27[dir::DIR_PMP] + f27[dir::DIR_MPP] + - f27[dir::DIR_PPM] + f27[dir::DIR_MMM] + f27[dir::DIR_PMM] + f27[dir::DIR_MPM]) - + return (f27[dir::dP00] + f27[dir::dM00] + f27[dir::d0P0] + f27[dir::d0M0] + f27[dir::d00P] + f27[dir::d00M] + + basics::constant::c2o1 * (f27[dir::dPP0] + f27[dir::dMM0] + f27[dir::dPM0] + f27[dir::dMP0] + f27[dir::dP0P] + + f27[dir::dM0M] + f27[dir::dP0M] + f27[dir::dM0P] + f27[dir::d0PP] + f27[dir::d0MM] + + f27[dir::d0PM] + f27[dir::d0MP]) + + basics::constant::c3o1 * (f27[dir::dPPP] + f27[dir::dMMP] + f27[dir::dPMP] + f27[dir::dMPP] + + f27[dir::dPPM] + f27[dir::dMMM] + f27[dir::dPMM] + f27[dir::dMPM]) - rho - (vx * vx + vy * vy + vz * vz) * (basics::constant::c1o1 + rho)) * basics::constant::c1o2 + rho; // times zero for incompressible case // Attention: op defined directly to op = 1 ; ^^^^(1.0/op-0.5)=0.5 diff --git a/src/lbm/MacroscopicQuantitiesTests.cpp b/src/lbm/MacroscopicQuantitiesTests.cpp index b39387ae7ac741cc4dc36b4c58de4bad43052793..246c3370e48225c2b31b6d89d0bc6314e18975da 100644 --- a/src/lbm/MacroscopicQuantitiesTests.cpp +++ b/src/lbm/MacroscopicQuantitiesTests.cpp @@ -47,7 +47,7 @@ TEST_F(MacroscopicQuantitiesTest, whenFsAreEqual_velocityInEachDirectionShouldBe TEST_F(MacroscopicQuantitiesTest, givenAllFsAreOne_when_Eis2_velocityInX1ShouldBeOne) { - f[dir::DIR_P00] = 2.; + f[dir::dP00] = 2.; const double velocityX1 = getIncompressibleVelocityX1(f.data()); const double velocityX2 = getIncompressibleVelocityX2(f.data()); @@ -64,7 +64,7 @@ TEST_F(MacroscopicQuantitiesTest, givenAllFsAreOne_when_Eis2_velocityInX1ShouldB TEST_F(MacroscopicQuantitiesTest, givenAllFsAreOne_when_Nis2_velocityInX2ShouldBeOne) { - f[dir::DIR_0P0] = 2.; + f[dir::d0P0] = 2.; const double velocity = getIncompressibleVelocityX2(f.data()); @@ -75,7 +75,7 @@ TEST_F(MacroscopicQuantitiesTest, givenAllFsAreOne_when_Nis2_velocityInX2ShouldB TEST_F(MacroscopicQuantitiesTest, givenAllFsAreOne_when_Tis2_velocityInX3ShouldBeOne) { - f[dir::DIR_00P] = 2.; + f[dir::d00P] = 2.; const double velocity = getIncompressibleVelocityX3(f.data()); @@ -85,7 +85,7 @@ TEST_F(MacroscopicQuantitiesTest, givenAllFsAreOne_when_Tis2_velocityInX3ShouldB TEST_F(MacroscopicQuantitiesTest, givenAllFsAreOne_checkCompressibleValues) { - f[dir::DIR_P00] = 2.; + f[dir::dP00] = 2.; real rho{0}, vx1{0}, vx2{0}, vx3{0}; getCompressibleMacroscopicValues(f.data(), rho, vx1, vx2, vx3); diff --git a/src/lbm/collision/K17CompressibleNavierStokes.h b/src/lbm/collision/K17CompressibleNavierStokes.h index 33fd0afcef01f580427b2cc940ff06e13216bc6f..a0a4b9dcd70582952b4b77c6db2a7866b82186bc 100644 --- a/src/lbm/collision/K17CompressibleNavierStokes.h +++ b/src/lbm/collision/K17CompressibleNavierStokes.h @@ -29,16 +29,17 @@ //! \file CumlantK17_Device.cu //! \author Anna Wellmann, Martin Schönherr, Henry Korb, Henrik Asmuth //! \date 05/12/2022 -//! \brief Kernel for CumulantK17 including different turbulence models and options for local body forces and writing macroscopic variables +//! \brief Kernel for CumulantK17 including different turbulence models and options for local body forces and writing +//! macroscopic variables //! -//! CumulantK17 kernel using chimera transformations and quartic limiters as present in Geier et al. (2017). Additional options are three different -//! eddy-viscosity turbulence models (Smagorinsky, AMD, QR) that can be set via the template parameter turbulenceModel (with default -//! TurbulenceModel::None). -//! The kernel is executed separately for each subset of fluid node indices with a different tag CollisionTemplate. For each subset, only the locally -//! required options are switched on ( \param writeMacroscopicVariables and/or \param applyBodyForce) in order to minimize memory accesses. The default -//! refers to the plain cumlant kernel (CollisionTemplate::Default). -//! Nodes are added to subsets (taggedFluidNodes) in Simulation::init using a corresponding tag with different values of CollisionTemplate. These subsets -//! are provided by the utilized PostCollisionInteractiors depending on they specific requirements (e.g. writeMacroscopicVariables for probes). +//! CumulantK17 kernel using chimera transformations and quartic limiters as present in Geier et al. (2017). Additional +//! options are three different eddy-viscosity turbulence models (Smagorinsky, AMD, QR) that can be set via the template +//! parameter turbulenceModel (with default TurbulenceModel::None). The kernel is executed separately for each subset of +//! fluid node indices with a different tag CollisionTemplate. For each subset, only the locally required options are +//! switched on ( \param writeMacroscopicVariables and/or \param applyBodyForce) in order to minimize memory accesses. The +//! default refers to the plain cumlant kernel (CollisionTemplate::Default). Nodes are added to subsets (taggedFluidNodes) in +//! Simulation::init using a corresponding tag with different values of CollisionTemplate. These subsets are provided by the +//! utilized PostCollisionInteractiors depending on they specific requirements (e.g. writeMacroscopicVariables for probes). //======================================================================================= #include <basics/constants/NumericConstants.h> @@ -84,64 +85,64 @@ __host__ __device__ void runK17CompressibleNavierStokes(CollisionParameter& para { auto& distribution = parameter.distribution; - real f_000 = distribution[DIR_000]; - real f_P00 = distribution[DIR_P00]; - real f_M00 = distribution[DIR_M00]; - real f_0P0 = distribution[DIR_0P0]; - real f_0M0 = distribution[DIR_0M0]; - real f_00P = distribution[DIR_00P]; - real f_00M = distribution[DIR_00M]; - real f_PP0 = distribution[DIR_PP0]; - real f_MM0 = distribution[DIR_MM0]; - real f_PM0 = distribution[DIR_PM0]; - real f_MP0 = distribution[DIR_MP0]; - real f_P0P = distribution[DIR_P0P]; - real f_M0M = distribution[DIR_M0M]; - real f_P0M = distribution[DIR_P0M]; - real f_M0P = distribution[DIR_M0P]; - real f_0PP = distribution[DIR_0PP]; - real f_0MM = distribution[DIR_0MM]; - real f_0PM = distribution[DIR_0PM]; - real f_0MP = distribution[DIR_0MP]; - real f_PPP = distribution[DIR_PPP]; - real f_MPP = distribution[DIR_MPP]; - real f_PMP = distribution[DIR_PMP]; - real f_MMP = distribution[DIR_MMP]; - real f_PPM = distribution[DIR_PPM]; - real f_MPM = distribution[DIR_MPM]; - real f_PMM = distribution[DIR_PMM]; - real f_MMM = distribution[DIR_MMM]; + real& f000 = distribution[d000]; + real& fP00 = distribution[dP00]; + real& fM00 = distribution[dM00]; + real& f0P0 = distribution[d0P0]; + real& f0M0 = distribution[d0M0]; + real& f00P = distribution[d00P]; + real& f00M = distribution[d00M]; + real& fPP0 = distribution[dPP0]; + real& fMM0 = distribution[dMM0]; + real& fPM0 = distribution[dPM0]; + real& fMP0 = distribution[dMP0]; + real& fP0P = distribution[dP0P]; + real& fM0M = distribution[dM0M]; + real& fP0M = distribution[dP0M]; + real& fM0P = distribution[dM0P]; + real& f0PP = distribution[d0PP]; + real& f0MM = distribution[d0MM]; + real& f0PM = distribution[d0PM]; + real& f0MP = distribution[d0MP]; + real& fPPP = distribution[dPPP]; + real& fMPP = distribution[dMPP]; + real& fPMP = distribution[dPMP]; + real& fMMP = distribution[dMMP]; + real& fPPM = distribution[dPPM]; + real& fMPM = distribution[dMPM]; + real& fPMM = distribution[dPMM]; + real& fMMM = distribution[dMMM]; //////////////////////////////////////////////////////////////////////////////////// //! - Define aliases to use the same variable for the moments (m's): //! - real& m_111 = f_000; - real& m_211 = f_P00; - real& m_011 = f_M00; - real& m_121 = f_0P0; - real& m_101 = f_0M0; - real& m_112 = f_00P; - real& m_110 = f_00M; - real& m_221 = f_PP0; - real& m_001 = f_MM0; - real& m_201 = f_PM0; - real& m_021 = f_MP0; - real& m_212 = f_P0P; - real& m_010 = f_M0M; - real& m_210 = f_P0M; - real& m_012 = f_M0P; - real& m_122 = f_0PP; - real& m_100 = f_0MM; - real& m_120 = f_0PM; - real& m_102 = f_0MP; - real& m_222 = f_PPP; - real& m_022 = f_MPP; - real& m_202 = f_PMP; - real& m_002 = f_MMP; - real& m_220 = f_PPM; - real& m_020 = f_MPM; - real& m_200 = f_PMM; - real& m_000 = f_MMM; + real& m111 = f000; + real& m211 = fP00; + real& m011 = fM00; + real& m121 = f0P0; + real& m101 = f0M0; + real& m112 = f00P; + real& m110 = f00M; + real& m221 = fPP0; + real& m001 = fMM0; + real& m201 = fPM0; + real& m021 = fMP0; + real& m212 = fP0P; + real& m010 = fM0M; + real& m210 = fP0M; + real& m012 = fM0P; + real& m122 = f0PP; + real& m100 = f0MM; + real& m120 = f0PM; + real& m102 = f0MP; + real& m222 = fPPP; + real& m022 = fMPP; + real& m202 = fPMP; + real& m002 = fMMP; + real& m220 = fPPM; + real& m020 = fMPM; + real& m200 = fPMM; + real& m000 = fMMM; //////////////////////////////////////////////////////(unsigned long)////////////////////////////// //! - Calculate density and velocity using pyramid summation for low round-off errors as in Eq. (J1)-(J3) \ref @@ -182,57 +183,57 @@ __host__ __device__ void runK17CompressibleNavierStokes(CollisionParameter& para //! //////////////////////////////////////////////////////////////////////////////////// // Z - Dir - forwardInverseChimeraWithK(f_MMM, f_MM0, f_MMP, vvz, vz2, c36o1, c1o36); - forwardInverseChimeraWithK(f_M0M, f_M00, f_M0P, vvz, vz2, c9o1, c1o9); - forwardInverseChimeraWithK(f_MPM, f_MP0, f_MPP, vvz, vz2, c36o1, c1o36); - forwardInverseChimeraWithK(f_0MM, f_0M0, f_0MP, vvz, vz2, c9o1, c1o9); - forwardInverseChimeraWithK(f_00M, f_000, f_00P, vvz, vz2, c9o4, c4o9); - forwardInverseChimeraWithK(f_0PM, f_0P0, f_0PP, vvz, vz2, c9o1, c1o9); - forwardInverseChimeraWithK(f_PMM, f_PM0, f_PMP, vvz, vz2, c36o1, c1o36); - forwardInverseChimeraWithK(f_P0M, f_P00, f_P0P, vvz, vz2, c9o1, c1o9); - forwardInverseChimeraWithK(f_PPM, f_PP0, f_PPP, vvz, vz2, c36o1, c1o36); + forwardInverseChimeraWithK(fMMM, fMM0, fMMP, vvz, vz2, c36o1, c1o36); + forwardInverseChimeraWithK(fM0M, fM00, fM0P, vvz, vz2, c9o1, c1o9); + forwardInverseChimeraWithK(fMPM, fMP0, fMPP, vvz, vz2, c36o1, c1o36); + forwardInverseChimeraWithK(f0MM, f0M0, f0MP, vvz, vz2, c9o1, c1o9); + forwardInverseChimeraWithK(f00M, f000, f00P, vvz, vz2, c9o4, c4o9); + forwardInverseChimeraWithK(f0PM, f0P0, f0PP, vvz, vz2, c9o1, c1o9); + forwardInverseChimeraWithK(fPMM, fPM0, fPMP, vvz, vz2, c36o1, c1o36); + forwardInverseChimeraWithK(fP0M, fP00, fP0P, vvz, vz2, c9o1, c1o9); + forwardInverseChimeraWithK(fPPM, fPP0, fPPP, vvz, vz2, c36o1, c1o36); //////////////////////////////////////////////////////////////////////////////////// // Y - Dir - forwardInverseChimeraWithK(f_MMM, f_M0M, f_MPM, vvy, vy2, c6o1, c1o6); - forwardChimera( f_MM0, f_M00, f_MP0, vvy, vy2); - forwardInverseChimeraWithK(f_MMP, f_M0P, f_MPP, vvy, vy2, c18o1, c1o18); - forwardInverseChimeraWithK(f_0MM, f_00M, f_0PM, vvy, vy2, c3o2, c2o3); - forwardChimera( f_0M0, f_000, f_0P0, vvy, vy2); - forwardInverseChimeraWithK(f_0MP, f_00P, f_0PP, vvy, vy2, c9o2, c2o9); - forwardInverseChimeraWithK(f_PMM, f_P0M, f_PPM, vvy, vy2, c6o1, c1o6); - forwardChimera( f_PM0, f_P00, f_PP0, vvy, vy2); - forwardInverseChimeraWithK(f_PMP, f_P0P, f_PPP, vvy, vy2, c18o1, c1o18); + forwardInverseChimeraWithK(fMMM, fM0M, fMPM, vvy, vy2, c6o1, c1o6); + forwardChimera( fMM0, fM00, fMP0, vvy, vy2); + forwardInverseChimeraWithK(fMMP, fM0P, fMPP, vvy, vy2, c18o1, c1o18); + forwardInverseChimeraWithK(f0MM, f00M, f0PM, vvy, vy2, c3o2, c2o3); + forwardChimera( f0M0, f000, f0P0, vvy, vy2); + forwardInverseChimeraWithK(f0MP, f00P, f0PP, vvy, vy2, c9o2, c2o9); + forwardInverseChimeraWithK(fPMM, fP0M, fPPM, vvy, vy2, c6o1, c1o6); + forwardChimera( fPM0, fP00, fPP0, vvy, vy2); + forwardInverseChimeraWithK(fPMP, fP0P, fPPP, vvy, vy2, c18o1, c1o18); //////////////////////////////////////////////////////////////////////////////////// // X - Dir - forwardInverseChimeraWithK(f_MMM, f_0MM, f_PMM, vvx, vx2, c1o1, c1o1); - forwardChimera( f_M0M, f_00M, f_P0M, vvx, vx2); - forwardInverseChimeraWithK(f_MPM, f_0PM, f_PPM, vvx, vx2, c3o1, c1o3); - forwardChimera( f_MM0, f_0M0, f_PM0, vvx, vx2); - forwardChimera( f_M00, f_000, f_P00, vvx, vx2); - forwardChimera( f_MP0, f_0P0, f_PP0, vvx, vx2); - forwardInverseChimeraWithK(f_MMP, f_0MP, f_PMP, vvx, vx2, c3o1, c1o3); - forwardChimera( f_M0P, f_00P, f_P0P, vvx, vx2); - forwardInverseChimeraWithK(f_MPP, f_0PP, f_PPP, vvx, vx2, c3o1, c1o9); + forwardInverseChimeraWithK(fMMM, f0MM, fPMM, vvx, vx2, c1o1, c1o1); + forwardChimera( fM0M, f00M, fP0M, vvx, vx2); + forwardInverseChimeraWithK(fMPM, f0PM, fPPM, vvx, vx2, c3o1, c1o3); + forwardChimera( fMM0, f0M0, fPM0, vvx, vx2); + forwardChimera( fM00, f000, fP00, vvx, vx2); + forwardChimera( fMP0, f0P0, fPP0, vvx, vx2); + forwardInverseChimeraWithK(fMMP, f0MP, fPMP, vvx, vx2, c3o1, c1o3); + forwardChimera( fM0P, f00P, fP0P, vvx, vx2); + forwardInverseChimeraWithK(fMPP, f0PP, fPPP, vvx, vx2, c3o1, c1o9); //////////////////////////////////////////////////////////////////////////////////// //! - Setting relaxation rates for non-hydrodynamic cumulants (default values). Variable names and equations //! according to <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> //! => [NAME IN PAPER]=[NAME IN CODE]=[DEFAULT VALUE]. - //! - Trace of second order cumulants \f$ C_{200}+C_{020}+C_{002} \f$ used to adjust bulk - //! viscosity:\f$\omega_2=OxxPyyPzz=1.0 \f$. - //! - Third order cumulants \f$ C_{120}+C_{102}, C_{210}+C_{012}, C_{201}+C_{021} \f$: \f$ \omega_3=OxyyPxzz - //! \f$ set according to Eq. (111) with simplifications assuming \f$ \omega_2=1.0\f$. - //! - Third order cumulants \f$ C_{120}-C_{102}, C_{210}-C_{012}, C_{201}-C_{021} \f$: \f$ \omega_4 = OxyyMxzz - //! \f$ set according to Eq. (112) with simplifications assuming \f$ \omega_2 = 1.0\f$. - //! - Third order cumulants \f$ C_{111} \f$: \f$ \omega_5 = Oxyz \f$ set according to Eq. (113) with - //! simplifications assuming \f$ \omega_2 = 1.0\f$ (modify for different bulk viscosity). - //! - Fourth order cumulants \f$ C_{220}, C_{202}, C_{022}, C_{211}, C_{121}, C_{112} \f$: for simplification - //! all set to the same default value \f$ \omega_6=\omega_7=\omega_8=O4=1.0 \f$. - //! - Fifth order cumulants \f$ C_{221}, C_{212}, C_{122}\f$: \f$\omega_9=O5=1.0\f$. - //! - Sixth order cumulant \f$ C_{222}\f$: \f$\omega_{10}=O6=1.0\f$. + //! - Trace of second order cumulants \f$ C{200}+C{020}+C{002} \f$ used to adjust bulk + //! viscosity:\f$\omega2=OxxPyyPzz=1.0 \f$. + //! - Third order cumulants \f$ C{120}+C{102}, C{210}+C{012}, C{201}+C{021} \f$: \f$ \omega3=OxyyPxzz + //! \f$ set according to Eq. (111) with simplifications assuming \f$ \omega2=1.0\f$. + //! - Third order cumulants \f$ C{120}-C{102}, C{210}-C{012}, C{201}-C{021} \f$: \f$ \omega4 = OxyyMxzz + //! \f$ set according to Eq. (112) with simplifications assuming \f$ \omega2 = 1.0\f$. + //! - Third order cumulants \f$ C{111} \f$: \f$ \omega5 = Oxyz \f$ set according to Eq. (113) with + //! simplifications assuming \f$ \omega2 = 1.0\f$ (modify for different bulk viscosity). + //! - Fourth order cumulants \f$ C{220}, C{202}, C{022}, C{211}, C{121}, C{112} \f$: for simplification + //! all set to the same default value \f$ \omega6=\omega7=\omega8=O4=1.0 \f$. + //! - Fifth order cumulants \f$ C{221}, C{212}, C{122}\f$: \f$\omega9=O5=1.0\f$. + //! - Sixth order cumulant \f$ C{222}\f$: \f$\omega{10}=O6=1.0\f$. //! //////////////////////////////////////////////////////////////////////////////////// //! - Calculate modified omega with turbulent viscosity @@ -259,7 +260,7 @@ __host__ __device__ void runK17CompressibleNavierStokes(CollisionParameter& para real O6 = c1o1; //////////////////////////////////////////////////////////////////////////////////// - //! - A and DIR_00M: parameters for fourth order convergence of the diffusion term according to Eq. (115) and (116) + //! - A and d00M: 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). @@ -274,39 +275,39 @@ __host__ __device__ void runK17CompressibleNavierStokes(CollisionParameter& para //! //////////////////////////////////////////////////////////// // 4. - real c_211 = m_211 - ((m_200 + c1o3) * m_011 + c2o1 * m_110 * m_101) * oneOverRho; - real c_121 = m_121 - ((m_020 + c1o3) * m_101 + c2o1 * m_110 * m_011) * oneOverRho; - real c_112 = m_112 - ((m_002 + c1o3) * m_110 + c2o1 * m_101 * m_011) * oneOverRho; + real cm211 = m211 - ((m200 + c1o3) * m011 + c2o1 * m110 * m101) * oneOverRho; + real cm121 = m121 - ((m020 + c1o3) * m101 + c2o1 * m110 * m011) * oneOverRho; + real cm112 = m112 - ((m002 + c1o3) * m110 + c2o1 * m101 * m011) * oneOverRho; - real c_220 = m_220 - (((m_200 * m_020 + c2o1 * m_110 * m_110) + c1o3 * (m_200 + m_020)) * oneOverRho - c1o9 * (drho * oneOverRho)); - real c_202 = m_202 - (((m_200 * m_002 + c2o1 * m_101 * m_101) + c1o3 * (m_200 + m_002)) * oneOverRho - c1o9 * (drho * oneOverRho)); - real c_022 = m_022 - (((m_002 * m_020 + c2o1 * m_011 * m_011) + c1o3 * (m_002 + m_020)) * oneOverRho - c1o9 * (drho * oneOverRho)); + real cm220 = m220 - (((m200 * m020 + c2o1 * m110 * m110) + c1o3 * (m200 + m020)) * oneOverRho - c1o9 * (drho * oneOverRho)); + real cm202 = m202 - (((m200 * m002 + c2o1 * m101 * m101) + c1o3 * (m200 + m002)) * oneOverRho - c1o9 * (drho * oneOverRho)); + real cm022 = m022 - (((m002 * m020 + c2o1 * m011 * m011) + c1o3 * (m002 + m020)) * oneOverRho - c1o9 * (drho * oneOverRho)); //////////////////////////////////////////////////////////// // 5. - real c_122 = - m_122 - ((m_002 * m_120 + m_020 * m_102 + c4o1 * m_011 * m_111 + c2o1 * (m_101 * m_021 + m_110 * m_012)) + - c1o3 * (m_120 + m_102)) * + real cm122 = + m122 - ((m002 * m120 + m020 * m102 + c4o1 * m011 * m111 + c2o1 * (m101 * m021 + m110 * m012)) + + c1o3 * (m120 + m102)) * oneOverRho; - real c_212 = - m_212 - ((m_002 * m_210 + m_200 * m_012 + c4o1 * m_101 * m_111 + c2o1 * (m_011 * m_201 + m_110 * m_102)) + - c1o3 * (m_210 + m_012)) * + real cm212 = + m212 - ((m002 * m210 + m200 * m012 + c4o1 * m101 * m111 + c2o1 * (m011 * m201 + m110 * m102)) + + c1o3 * (m210 + m012)) * oneOverRho; - real c_221 = - m_221 - ((m_200 * m_021 + m_020 * m_201 + c4o1 * m_110 * m_111 + c2o1 * (m_101 * m_120 + m_011 * m_210)) + - c1o3 * (m_021 + m_201)) * + real cm221 = + m221 - ((m200 * m021 + m020 * m201 + c4o1 * m110 * m111 + c2o1 * (m101 * m120 + m011 * m210)) + + c1o3 * (m021 + m201)) * oneOverRho; //////////////////////////////////////////////////////////// // 6. - real c_222 = m_222 + ((-c4o1 * m_111 * m_111 - (m_200 * m_022 + m_020 * m_202 + m_002 * m_220) - - c4o1 * (m_011 * m_211 + m_101 * m_121 + m_110 * m_112) - - c2o1 * (m_120 * m_102 + m_210 * m_012 + m_201 * m_021)) * + real cm222 = m222 + ((-c4o1 * m111 * m111 - (m200 * m022 + m020 * m202 + m002 * m220) - + c4o1 * (m011 * m211 + m101 * m121 + m110 * m112) - + c2o1 * (m120 * m102 + m210 * m012 + m201 * m021)) * oneOverRho + - (c4o1 * (m_101 * m_101 * m_020 + m_011 * m_011 * m_200 + m_110 * m_110 * m_002) + - c2o1 * (m_200 * m_020 * m_002) + c16o1 * m_110 * m_101 * m_011) * + (c4o1 * (m101 * m101 * m020 + m011 * m011 * m200 + m110 * m110 * m002) + + c2o1 * (m200 * m020 * m002) + c16o1 * m110 * m101 * m011) * oneOverRho * oneOverRho - - c1o3 * (m_022 + m_202 + m_220) * oneOverRho - c1o9 * (m_200 + m_020 + m_002) * oneOverRho + - (c2o1 * (m_101 * m_101 + m_011 * m_011 + m_110 * m_110) + - (m_002 * m_020 + m_002 * m_200 + m_020 * m_200) + c1o3 * (m_002 + m_020 + m_200)) * + c1o3 * (m022 + m202 + m220) * oneOverRho - c1o9 * (m200 + m020 + m002) * oneOverRho + + (c2o1 * (m101 * m101 + m011 * m011 + m110 * m110) + + (m002 * m020 + m002 * m200 + m020 * m200) + c1o3 * (m002 + m020 + m200)) * oneOverRho * oneOverRho * c2o3 + c1o27 * ((drho * drho - drho) * oneOverRho * oneOverRho)); @@ -315,19 +316,19 @@ __host__ __device__ void runK17CompressibleNavierStokes(CollisionParameter& para //! //////////////////////////////////////////////////////////// // 2. - real mxxPyyPzz = m_200 + m_020 + m_002; - real mxxMyy = m_200 - m_020; - real mxxMzz = m_200 - m_002; + real mxxPyyPzz = m200 + m020 + m002; + real mxxMyy = m200 - m020; + real mxxMzz = m200 - m002; //////////////////////////////////////////////////////////// // 3. - real mxxyPyzz = m_210 + m_012; - real mxxyMyzz = m_210 - m_012; + real mxxyPyzz = m210 + m012; + real mxxyMyzz = m210 - m012; - real mxxzPyyz = m_201 + m_021; - real mxxzMyyz = m_201 - m_021; + real mxxzPyyz = m201 + m021; + real mxxzMyyz = m201 - m021; - real mxyyPxzz = m_120 + m_102; - real mxyyMxzz = m_120 - m_102; + real mxyyPxzz = m120 + m102; + real mxyyMxzz = m120 - m102; //////////////////////////////////////////////////////////////////////////////////// // incl. correction @@ -339,34 +340,35 @@ __host__ __device__ void runK17CompressibleNavierStokes(CollisionParameter& para //! DOI:10.1016/j.camwa.2015.05.001 ]</b></a> Note that the division by rho is omitted here as we need rho times //! the gradients later. //! - real Dxy = -c3o1 * omega * m_110; - real Dxz = -c3o1 * omega * m_101; - real Dyz = -c3o1 * omega * m_011; - real dxux = c1o2 * (-omega) * (mxxMyy + mxxMzz) + c1o2 * OxxPyyPzz * (m_000 - mxxPyyPzz); + real Dxy = -c3o1 * omega * m110; + real Dxz = -c3o1 * omega * m101; + real Dyz = -c3o1 * omega * m011; + real dxux = c1o2 * (-omega) * (mxxMyy + mxxMzz) + c1o2 * OxxPyyPzz * (m000 - mxxPyyPzz); real dyuy = dxux + omega * c3o2 * mxxMyy; real dzuz = dxux + omega * c3o2 * mxxMzz; //////////////////////////////////////////////////////////////////////////////////// - switch (turbulenceModel) - { - case TurbulenceModel::None: - case TurbulenceModel::AMD: //AMD is computed in separate kernel - break; - case TurbulenceModel::Smagorinsky: - turbulentViscosity.value = calcTurbulentViscositySmagorinsky(turbulentViscosity.SGSconstant, dxux, dyuy, dzuz, Dxy, Dxz , Dyz); - break; - case TurbulenceModel::QR: - turbulentViscosity.value = calcTurbulentViscosityQR(turbulentViscosity.SGSconstant, dxux, dyuy, dzuz, Dxy, Dxz , Dyz); - break; - default: - break; + switch (turbulenceModel) { + case TurbulenceModel::None: + case TurbulenceModel::AMD: // AMD is computed in separate kernel + break; + case TurbulenceModel::Smagorinsky: + turbulentViscosity.value = + calcTurbulentViscositySmagorinsky(turbulentViscosity.SGSconstant, dxux, dyuy, dzuz, Dxy, Dxz, Dyz); + break; + case TurbulenceModel::QR: + turbulentViscosity.value = + calcTurbulentViscosityQR(turbulentViscosity.SGSconstant, dxux, dyuy, dzuz, Dxy, Dxz, Dyz); + break; + default: + break; } //////////////////////////////////////////////////////////// //! - Relaxation of second order cumulants with correction terms according to Eq. (33)-(35) in //! <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> //! - mxxPyyPzz += OxxPyyPzz * (m_000 - mxxPyyPzz) - c3o1 * (c1o1 - c1o2 * OxxPyyPzz) * (vx2 * dxux + vy2 * dyuy + vz2 * dzuz); + mxxPyyPzz += OxxPyyPzz * (m000 - mxxPyyPzz) - c3o1 * (c1o1 - c1o2 * OxxPyyPzz) * (vx2 * dxux + vy2 * dyuy + vz2 * dzuz); mxxMyy += omega * (-mxxMyy) - c3o1 * (c1o1 + c1o2 * (-omega)) * (vx2 * dxux - vy2 * dyuy); mxxMzz += omega * (-mxxMzz) - c3o1 * (c1o1 + c1o2 * (-omega)) * (vx2 * dxux - vz2 * dzuz); @@ -376,9 +378,9 @@ __host__ __device__ void runK17CompressibleNavierStokes(CollisionParameter& para // mxxMyy += -(-omega) * (-mxxMyy); // mxxMzz += -(-omega) * (-mxxMzz); ////////////////////////////////////////////////////////////////////////// - m_011 += omega * (-m_011); - m_101 += omega * (-m_101); - m_110 += omega * (-m_110); + m011 += omega * (-m011); + m101 += omega * (-m101); + m110 += omega * (-m110); //////////////////////////////////////////////////////////////////////////////////// // relax @@ -388,8 +390,8 @@ __host__ __device__ void runK17CompressibleNavierStokes(CollisionParameter& para //! <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> //! - real wadjust = Oxyz + (c1o1 - Oxyz) * KERNEL_ABS(m_111) / (KERNEL_ABS(m_111) + quadricLimitD); - m_111 += wadjust * (-m_111); + real wadjust = Oxyz + (c1o1 - Oxyz) * KERNEL_ABS(m111) / (KERNEL_ABS(m111) + quadricLimitD); + m111 += wadjust * (-m111); wadjust = OxyyPxzz + (c1o1 - OxyyPxzz) * KERNEL_ABS(mxxyPyzz) / (KERNEL_ABS(mxxyPyzz) + quadricLimitP); mxxyPyzz += wadjust * (-mxxyPyzz); wadjust = OxyyMxzz + (c1o1 - OxyyMxzz) * KERNEL_ABS(mxxyMyzz) / (KERNEL_ABS(mxxyMyzz) + quadricLimitM); @@ -415,16 +417,16 @@ __host__ __device__ void runK17CompressibleNavierStokes(CollisionParameter& para //////////////////////////////////////////////////////////////////////////////////// //! - Compute inverse linear combinations of second and third order cumulants //! - m_200 = c1o3 * (mxxMyy + mxxMzz + mxxPyyPzz); - m_020 = c1o3 * (-c2o1 * mxxMyy + mxxMzz + mxxPyyPzz); - m_002 = c1o3 * (mxxMyy - c2o1 * mxxMzz + mxxPyyPzz); - - m_210 = ( mxxyMyzz + mxxyPyzz) * c1o2; - m_012 = (-mxxyMyzz + mxxyPyzz) * c1o2; - m_201 = ( mxxzMyyz + mxxzPyyz) * c1o2; - m_021 = (-mxxzMyyz + mxxzPyyz) * c1o2; - m_120 = ( mxyyMxzz + mxyyPxzz) * c1o2; - m_102 = (-mxyyMxzz + mxyyPxzz) * c1o2; + m200 = c1o3 * (mxxMyy + mxxMzz + mxxPyyPzz); + m020 = c1o3 * (-c2o1 * mxxMyy + mxxMzz + mxxPyyPzz); + m002 = c1o3 * (mxxMyy - c2o1 * mxxMzz + mxxPyyPzz); + + m210 = ( mxxyMyzz + mxxyPyzz) * c1o2; + m012 = (-mxxyMyzz + mxxyPyzz) * c1o2; + m201 = ( mxxzMyyz + mxxzPyyz) * c1o2; + m021 = (-mxxzMyyz + mxxzPyyz) * c1o2; + m120 = ( mxyyMxzz + mxyyPxzz) * c1o2; + m102 = (-mxyyMxzz + mxyyPxzz) * c1o2; ////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////// @@ -434,23 +436,23 @@ __host__ __device__ void runK17CompressibleNavierStokes(CollisionParameter& para //! 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> //! - c_022 = -O4 * (c1o1 / omega - c1o2) * (dyuy + dzuz) * c2o3 * factorA + (c1o1 - O4) * (c_022); - c_202 = -O4 * (c1o1 / omega - c1o2) * (dxux + dzuz) * c2o3 * factorA + (c1o1 - O4) * (c_202); - c_220 = -O4 * (c1o1 / omega - c1o2) * (dyuy + dxux) * c2o3 * factorA + (c1o1 - O4) * (c_220); - c_112 = -O4 * (c1o1 / omega - c1o2) * Dxy * c1o3 * factorB + (c1o1 - O4) * (c_112); - c_121 = -O4 * (c1o1 / omega - c1o2) * Dxz * c1o3 * factorB + (c1o1 - O4) * (c_121); - c_211 = -O4 * (c1o1 / omega - c1o2) * Dyz * c1o3 * factorB + (c1o1 - O4) * (c_211); + cm022 = -O4 * (c1o1 / omega - c1o2) * (dyuy + dzuz) * c2o3 * factorA + (c1o1 - O4) * (cm022); + cm202 = -O4 * (c1o1 / omega - c1o2) * (dxux + dzuz) * c2o3 * factorA + (c1o1 - O4) * (cm202); + cm220 = -O4 * (c1o1 / omega - c1o2) * (dyuy + dxux) * c2o3 * factorA + (c1o1 - O4) * (cm220); + cm112 = -O4 * (c1o1 / omega - c1o2) * Dxy * c1o3 * factorB + (c1o1 - O4) * (cm112); + cm121 = -O4 * (c1o1 / omega - c1o2) * Dxz * c1o3 * factorB + (c1o1 - O4) * (cm121); + cm211 = -O4 * (c1o1 / omega - c1o2) * Dyz * c1o3 * factorB + (c1o1 - O4) * (cm211); ////////////////////////////////////////////////////////////////////////// // 5. - c_122 += O5 * (-c_122); - c_212 += O5 * (-c_212); - c_221 += O5 * (-c_221); + cm122 += O5 * (-cm122); + cm212 += O5 * (-cm212); + cm221 += O5 * (-cm221); ////////////////////////////////////////////////////////////////////////// // 6. - c_222 += O6 * (-c_222); + cm222 += O6 * (-cm222); //////////////////////////////////////////////////////////////////////////////////// //! - Compute central moments from post collision cumulants according to Eq. (53)-(56) in @@ -460,41 +462,41 @@ __host__ __device__ void runK17CompressibleNavierStokes(CollisionParameter& para ////////////////////////////////////////////////////////////////////////// // 4. - m_211 = c_211 + c1o3 * ((c3o1 * m_200 + c1o1) * m_011 + c6o1 * m_110 * m_101) * oneOverRho; - m_121 = c_121 + c1o3 * ((c3o1 * m_020 + c1o1) * m_101 + c6o1 * m_110 * m_011) * oneOverRho; - m_112 = c_112 + c1o3 * ((c3o1 * m_002 + c1o1) * m_110 + c6o1 * m_101 * m_011) * oneOverRho; + m211 = cm211 + c1o3 * ((c3o1 * m200 + c1o1) * m011 + c6o1 * m110 * m101) * oneOverRho; + m121 = cm121 + c1o3 * ((c3o1 * m020 + c1o1) * m101 + c6o1 * m110 * m011) * oneOverRho; + m112 = cm112 + c1o3 * ((c3o1 * m002 + c1o1) * m110 + c6o1 * m101 * m011) * oneOverRho; - m_220 = - c_220 + (((m_200 * m_020 + c2o1 * m_110 * m_110) * c9o1 + c3o1 * (m_200 + m_020)) * oneOverRho - (drho * oneOverRho)) * c1o9; - m_202 = - c_202 + (((m_200 * m_002 + c2o1 * m_101 * m_101) * c9o1 + c3o1 * (m_200 + m_002)) * oneOverRho - (drho * oneOverRho)) * c1o9; - m_022 = - c_022 + (((m_002 * m_020 + c2o1 * m_011 * m_011) * c9o1 + c3o1 * (m_002 + m_020)) * oneOverRho - (drho * oneOverRho)) * c1o9; + m220 = + cm220 + (((m200 * m020 + c2o1 * m110 * m110) * c9o1 + c3o1 * (m200 + m020)) * oneOverRho - (drho * oneOverRho)) * c1o9; + m202 = + cm202 + (((m200 * m002 + c2o1 * m101 * m101) * c9o1 + c3o1 * (m200 + m002)) * oneOverRho - (drho * oneOverRho)) * c1o9; + m022 = + cm022 + (((m002 * m020 + c2o1 * m011 * m011) * c9o1 + c3o1 * (m002 + m020)) * oneOverRho - (drho * oneOverRho)) * c1o9; ////////////////////////////////////////////////////////////////////////// // 5. - m_122 = c_122 + c1o3 * - (c3o1 * (m_002 * m_120 + m_020 * m_102 + c4o1 * m_011 * m_111 + c2o1 * (m_101 * m_021 + m_110 * m_012)) + - (m_120 + m_102)) * oneOverRho; - m_212 = c_212 + c1o3 * - (c3o1 * (m_002 * m_210 + m_200 * m_012 + c4o1 * m_101 * m_111 + c2o1 * (m_011 * m_201 + m_110 * m_102)) + - (m_210 + m_012)) * oneOverRho; - m_221 = c_221 + c1o3 * - (c3o1 * (m_200 * m_021 + m_020 * m_201 + c4o1 * m_110 * m_111 + c2o1 * (m_101 * m_120 + m_011 * m_210)) + - (m_021 + m_201)) * oneOverRho; + m122 = cm122 + c1o3 * + (c3o1 * (m002 * m120 + m020 * m102 + c4o1 * m011 * m111 + c2o1 * (m101 * m021 + m110 * m012)) + + (m120 + m102)) * oneOverRho; + m212 = cm212 + c1o3 * + (c3o1 * (m002 * m210 + m200 * m012 + c4o1 * m101 * m111 + c2o1 * (m011 * m201 + m110 * m102)) + + (m210 + m012)) * oneOverRho; + m221 = cm221 + c1o3 * + (c3o1 * (m200 * m021 + m020 * m201 + c4o1 * m110 * m111 + c2o1 * (m101 * m120 + m011 * m210)) + + (m021 + m201)) * oneOverRho; ////////////////////////////////////////////////////////////////////////// // 6. - m_222 = c_222 - ((-c4o1 * m_111 * m_111 - (m_200 * m_022 + m_020 * m_202 + m_002 * m_220) - - c4o1 * (m_011 * m_211 + m_101 * m_121 + m_110 * m_112) - - c2o1 * (m_120 * m_102 + m_210 * m_012 + m_201 * m_021)) * + m222 = cm222 - ((-c4o1 * m111 * m111 - (m200 * m022 + m020 * m202 + m002 * m220) - + c4o1 * (m011 * m211 + m101 * m121 + m110 * m112) - + c2o1 * (m120 * m102 + m210 * m012 + m201 * m021)) * oneOverRho + - (c4o1 * (m_101 * m_101 * m_020 + m_011 * m_011 * m_200 + m_110 * m_110 * m_002) + - c2o1 * (m_200 * m_020 * m_002) + c16o1 * m_110 * m_101 * m_011) * + (c4o1 * (m101 * m101 * m020 + m011 * m011 * m200 + m110 * m110 * m002) + + c2o1 * (m200 * m020 * m002) + c16o1 * m110 * m101 * m011) * oneOverRho * oneOverRho - - c1o3 * (m_022 + m_202 + m_220) * oneOverRho - c1o9 * (m_200 + m_020 + m_002) * oneOverRho + - (c2o1 * (m_101 * m_101 + m_011 * m_011 + m_110 * m_110) + - (m_002 * m_020 + m_002 * m_200 + m_020 * m_200) + c1o3 * (m_002 + m_020 + m_200)) * + c1o3 * (m022 + m202 + m220) * oneOverRho - c1o9 * (m200 + m020 + m002) * oneOverRho + + (c2o1 * (m101 * m101 + m011 * m011 + m110 * m110) + + (m002 * m020 + m002 * m200 + m020 * m200) + c1o3 * (m002 + m020 + m200)) * oneOverRho * oneOverRho * c2o3 + c1o27 * ((drho * drho - drho) * oneOverRho * oneOverRho)); @@ -503,9 +505,9 @@ __host__ __device__ void runK17CompressibleNavierStokes(CollisionParameter& para //! <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> //! - m_100 = -m_100; - m_010 = -m_010; - m_001 = -m_001; + m100 = -m100; + m010 = -m010; + m001 = -m001; //////////////////////////////////////////////////////////////////////////////////// //! - Chimera transform from central moments to well conditioned distributions as defined in Appendix J in @@ -516,67 +518,67 @@ __host__ __device__ void runK17CompressibleNavierStokes(CollisionParameter& para //! //////////////////////////////////////////////////////////////////////////////////// // X - Dir - backwardInverseChimeraWithK(m_000, m_100, m_200, vvx, vx2, c1o1, c1o1); - backwardChimera( m_010, m_110, m_210, vvx, vx2); - backwardInverseChimeraWithK(m_020, m_120, m_220, vvx, vx2, c3o1, c1o3); - backwardChimera( m_001, m_101, m_201, vvx, vx2); - backwardChimera( m_011, m_111, m_211, vvx, vx2); - backwardChimera( m_021, m_121, m_221, vvx, vx2); - backwardInverseChimeraWithK(m_002, m_102, m_202, vvx, vx2, c3o1, c1o3); - backwardChimera( m_012, m_112, m_212, vvx, vx2); - backwardInverseChimeraWithK(m_022, m_122, m_222, vvx, vx2, c9o1, c1o9); + backwardInverseChimeraWithK(m000, m100, m200, vvx, vx2, c1o1, c1o1); + backwardChimera( m010, m110, m210, vvx, vx2); + backwardInverseChimeraWithK(m020, m120, m220, vvx, vx2, c3o1, c1o3); + backwardChimera( m001, m101, m201, vvx, vx2); + backwardChimera( m011, m111, m211, vvx, vx2); + backwardChimera( m021, m121, m221, vvx, vx2); + backwardInverseChimeraWithK(m002, m102, m202, vvx, vx2, c3o1, c1o3); + backwardChimera( m012, m112, m212, vvx, vx2); + backwardInverseChimeraWithK(m022, m122, m222, vvx, vx2, c9o1, c1o9); //////////////////////////////////////////////////////////////////////////////////// // Y - Dir - backwardInverseChimeraWithK(m_000, m_010, m_020, vvy, vy2, c6o1, c1o6); - backwardChimera( m_001, m_011, m_021, vvy, vy2); - backwardInverseChimeraWithK(m_002, m_012, m_022, vvy, vy2, c18o1, c1o18); - backwardInverseChimeraWithK(m_100, m_110, m_120, vvy, vy2, c3o2, c2o3); - backwardChimera( m_101, m_111, m_121, vvy, vy2); - backwardInverseChimeraWithK(m_102, m_112, m_122, vvy, vy2, c9o2, c2o9); - backwardInverseChimeraWithK(m_200, m_210, m_220, vvy, vy2, c6o1, c1o6); - backwardChimera( m_201, m_211, m_221, vvy, vy2); - backwardInverseChimeraWithK(m_202, m_212, m_222, vvy, vy2, c18o1, c1o18); + backwardInverseChimeraWithK(m000, m010, m020, vvy, vy2, c6o1, c1o6); + backwardChimera( m001, m011, m021, vvy, vy2); + backwardInverseChimeraWithK(m002, m012, m022, vvy, vy2, c18o1, c1o18); + backwardInverseChimeraWithK(m100, m110, m120, vvy, vy2, c3o2, c2o3); + backwardChimera( m101, m111, m121, vvy, vy2); + backwardInverseChimeraWithK(m102, m112, m122, vvy, vy2, c9o2, c2o9); + backwardInverseChimeraWithK(m200, m210, m220, vvy, vy2, c6o1, c1o6); + backwardChimera( m201, m211, m221, vvy, vy2); + backwardInverseChimeraWithK(m202, m212, m222, vvy, vy2, c18o1, c1o18); //////////////////////////////////////////////////////////////////////////////////// // Z - Dir - backwardInverseChimeraWithK(m_000, m_001, m_002, vvz, vz2, c36o1, c1o36); - backwardInverseChimeraWithK(m_010, m_011, m_012, vvz, vz2, c9o1, c1o9); - backwardInverseChimeraWithK(m_020, m_021, m_022, vvz, vz2, c36o1, c1o36); - backwardInverseChimeraWithK(m_100, m_101, m_102, vvz, vz2, c9o1, c1o9); - backwardInverseChimeraWithK(m_110, m_111, m_112, vvz, vz2, c9o4, c4o9); - backwardInverseChimeraWithK(m_120, m_121, m_122, vvz, vz2, c9o1, c1o9); - backwardInverseChimeraWithK(m_200, m_201, m_202, vvz, vz2, c36o1, c1o36); - backwardInverseChimeraWithK(m_210, m_211, m_212, vvz, vz2, c9o1, c1o9); - backwardInverseChimeraWithK(m_220, m_221, m_222, vvz, vz2, c36o1, c1o36); - - distribution[DIR_P00] = f_P00; - distribution[DIR_M00] = f_M00; - distribution[DIR_0P0] = f_0P0; - distribution[DIR_0M0] = f_0M0; - distribution[DIR_00P] = f_00P; - distribution[DIR_00M] = f_00M; - distribution[DIR_PP0] = f_PP0; - distribution[DIR_MM0] = f_MM0; - distribution[DIR_PM0] = f_PM0; - distribution[DIR_MP0] = f_MP0; - distribution[DIR_P0P] = f_P0P; - distribution[DIR_M0M] = f_M0M; - distribution[DIR_P0M] = f_P0M; - distribution[DIR_M0P] = f_M0P; - distribution[DIR_0PP] = f_0PP; - distribution[DIR_0MM] = f_0MM; - distribution[DIR_0PM] = f_0PM; - distribution[DIR_0MP] = f_0MP; - distribution[DIR_000] = f_000; - distribution[DIR_PPP] = f_PPP; - distribution[DIR_PMP] = f_PMP; - distribution[DIR_PPM] = f_PPM; - distribution[DIR_PMM] = f_PMM; - distribution[DIR_MPP] = f_MPP; - distribution[DIR_MMP] = f_MMP; - distribution[DIR_MPM] = f_MPM; - distribution[DIR_MMM] = f_MMM; + backwardInverseChimeraWithK(m000, m001, m002, vvz, vz2, c36o1, c1o36); + backwardInverseChimeraWithK(m010, m011, m012, vvz, vz2, c9o1, c1o9); + backwardInverseChimeraWithK(m020, m021, m022, vvz, vz2, c36o1, c1o36); + backwardInverseChimeraWithK(m100, m101, m102, vvz, vz2, c9o1, c1o9); + backwardInverseChimeraWithK(m110, m111, m112, vvz, vz2, c9o4, c4o9); + backwardInverseChimeraWithK(m120, m121, m122, vvz, vz2, c9o1, c1o9); + backwardInverseChimeraWithK(m200, m201, m202, vvz, vz2, c36o1, c1o36); + backwardInverseChimeraWithK(m210, m211, m212, vvz, vz2, c9o1, c1o9); + backwardInverseChimeraWithK(m220, m221, m222, vvz, vz2, c36o1, c1o36); + + distribution[dP00] = fP00; + distribution[dM00] = fM00; + distribution[d0P0] = f0P0; + distribution[d0M0] = f0M0; + distribution[d00P] = f00P; + distribution[d00M] = f00M; + distribution[dPP0] = fPP0; + distribution[dMM0] = fMM0; + distribution[dPM0] = fPM0; + distribution[dMP0] = fMP0; + distribution[dP0P] = fP0P; + distribution[dM0M] = fM0M; + distribution[dP0M] = fP0M; + distribution[dM0P] = fM0P; + distribution[d0PP] = f0PP; + distribution[d0MM] = f0MM; + distribution[d0PM] = f0PM; + distribution[d0MP] = f0MP; + distribution[d000] = f000; + distribution[dPPP] = fPPP; + distribution[dPMP] = fPMP; + distribution[dPPM] = fPPM; + distribution[dPMM] = fPMM; + distribution[dMPP] = fMPP; + distribution[dMMP] = fMMP; + distribution[dMPM] = fMPM; + distribution[dMMM] = fMMM; macroscopicValues.rho = drho; macroscopicValues.vx = vvx; diff --git a/src/lbm/constants/D3Q27.h b/src/lbm/constants/D3Q27.h index 8b0c8febd0143540a70541c5c9802f9e606f4b9b..292af239e333b79d118150f0cfee5477e895d200 100644 --- a/src/lbm/constants/D3Q27.h +++ b/src/lbm/constants/D3Q27.h @@ -1,226 +1,68 @@ #ifndef LBM_D3Q27_H #define LBM_D3Q27_H -#include <map> - #include <basics/DataTypes.h> namespace vf::lbm::dir { - static constexpr size_t STARTDIR = 0; static constexpr size_t ENDDIR = 26; static constexpr size_t NUMBER_Of_DIRECTIONS = ENDDIR + 1; -// used in the CPU and the GPU version -static constexpr size_t DIR_000 = 0; -static constexpr size_t DIR_P00 = 1; -static constexpr size_t DIR_M00 = 2; -static constexpr size_t DIR_0P0 = 3; -static constexpr size_t DIR_0M0 = 4; -static constexpr size_t DIR_00P = 5; -static constexpr size_t DIR_00M = 6; -static constexpr size_t DIR_PP0 = 7; -static constexpr size_t DIR_MM0 = 8; -static constexpr size_t DIR_PM0 = 9; -static constexpr size_t DIR_MP0 = 10; -static constexpr size_t DIR_P0P = 11; -static constexpr size_t DIR_M0M = 12; -static constexpr size_t DIR_P0M = 13; -static constexpr size_t DIR_M0P = 14; -static constexpr size_t DIR_0PP = 15; -static constexpr size_t DIR_0MM = 16; -static constexpr size_t DIR_0PM = 17; -static constexpr size_t DIR_0MP = 18; -static constexpr size_t DIR_PPP = 19; -static constexpr size_t DIR_MPP = 20; -static constexpr size_t DIR_PMP = 21; -static constexpr size_t DIR_MMP = 22; -static constexpr size_t DIR_PPM = 23; -static constexpr size_t DIR_MPM = 24; -static constexpr size_t DIR_PMM = 25; -static constexpr size_t DIR_MMM = 26; - -static constexpr size_t INV_P00 = DIR_M00; -static constexpr size_t INV_M00 = DIR_P00; -static constexpr size_t INV_0P0 = DIR_0M0; -static constexpr size_t INV_0M0 = DIR_0P0; -static constexpr size_t INV_00P = DIR_00M; -static constexpr size_t INV_00M = DIR_00P; -static constexpr size_t INV_PP0 = DIR_MM0; -static constexpr size_t INV_MM0 = DIR_PP0; -static constexpr size_t INV_PM0 = DIR_MP0; -static constexpr size_t INV_MP0 = DIR_PM0; -static constexpr size_t INV_P0P = DIR_M0M; -static constexpr size_t INV_M0M = DIR_P0P; -static constexpr size_t INV_P0M = DIR_M0P; -static constexpr size_t INV_M0P = DIR_P0M; -static constexpr size_t INV_0PP = DIR_0MM; -static constexpr size_t INV_0MM = DIR_0PP; -static constexpr size_t INV_0PM = DIR_0MP; -static constexpr size_t INV_0MP = DIR_0PM; -static constexpr size_t INV_PPP = DIR_MMM; -static constexpr size_t INV_MPP = DIR_PMM; -static constexpr size_t INV_PMP = DIR_MPM; -static constexpr size_t INV_MMP = DIR_PPM; -static constexpr size_t INV_PPM = DIR_MMP; -static constexpr size_t INV_MPM = DIR_PMP; -static constexpr size_t INV_PMM = DIR_MPP; -static constexpr size_t INV_MMM = DIR_PPP; - -static constexpr size_t SGD_P00 = 0; -static constexpr size_t SGD_M00 = 1; -static constexpr size_t SGD_0P0 = 2; -static constexpr size_t SGD_0M0 = 3; -static constexpr size_t SGD_00P = 4; -static constexpr size_t SGD_00M = 5; -static constexpr size_t SGD_PP0 = 6; -static constexpr size_t SGD_MM0 = 7; -static constexpr size_t SGD_PM0 = 8; -static constexpr size_t SGD_MP0 = 9; -static constexpr size_t SGD_P0P = 10; -static constexpr size_t SGD_M0M = 11; -static constexpr size_t SGD_P0M = 12; -static constexpr size_t SGD_M0P = 13; -static constexpr size_t SGD_0PP = 14; -static constexpr size_t SGD_0MM = 15; -static constexpr size_t SGD_0PM = 16; -static constexpr size_t SGD_0MP = 17; -static constexpr size_t SGD_PPP = 18; -static constexpr size_t SGD_MPP = 19; -static constexpr size_t SGD_PMP = 20; -static constexpr size_t SGD_MMP = 21; -static constexpr size_t SGD_PPM = 22; -static constexpr size_t SGD_MPM = 23; -static constexpr size_t SGD_PMM = 24; -static constexpr size_t SGD_MMM = 25; - -struct countersForPointerChasing -{ - uint counterInverse; - uint counterX; - uint counterY; - uint counterZ; -}; - -const std::map<const size_t, const countersForPointerChasing> mapForPointerChasing = -{ - {DIR_000, countersForPointerChasing{0, 0, 0, 0}}, - {DIR_P00, countersForPointerChasing{0, 1, 0, 0}}, - {DIR_M00, countersForPointerChasing{1, 0, 1, 1}}, - {DIR_0P0, countersForPointerChasing{0, 0, 1, 0}}, - {DIR_0M0, countersForPointerChasing{1, 1, 0, 1}}, - {DIR_00P, countersForPointerChasing{0, 0, 0, 1}}, - {DIR_00M, countersForPointerChasing{1, 1, 1, 0}}, - - {DIR_PP0, countersForPointerChasing{0, 1, 1, 0}}, - {DIR_MM0, countersForPointerChasing{1, 0, 0, 1}}, - {DIR_PM0, countersForPointerChasing{1, 2, 0, 1}}, - {DIR_MP0, countersForPointerChasing{1, 0, 2, 1}}, - {DIR_P0P, countersForPointerChasing{0, 1, 0, 1}}, - {DIR_M0M, countersForPointerChasing{1, 0, 1, 0}}, - {DIR_P0M, countersForPointerChasing{1, 2, 1, 0}}, - {DIR_M0P, countersForPointerChasing{1, 0, 1, 2}}, - {DIR_0PP, countersForPointerChasing{0, 0, 1, 1}}, - {DIR_0MM, countersForPointerChasing{1, 1, 0, 0}}, - {DIR_0PM, countersForPointerChasing{1, 1, 2, 0}}, - {DIR_0MP, countersForPointerChasing{1, 1, 0, 2}}, - - {DIR_PPP, countersForPointerChasing{0, 1, 1, 1}}, - {DIR_MPP, countersForPointerChasing{1, 0, 2, 2}}, - {DIR_PMP, countersForPointerChasing{1, 2, 0, 2}}, - {DIR_MMP, countersForPointerChasing{1, 0, 0, 2}}, - {DIR_PPM, countersForPointerChasing{1, 2, 2, 0}}, - {DIR_MPM, countersForPointerChasing{1, 0, 2, 0}}, - {DIR_PMM, countersForPointerChasing{1, 2, 0, 0}}, - {DIR_MMM, countersForPointerChasing{1, 0, 0, 0}} -}; - - - -// used in the CPU version -// static constexpr int INV_P00 = DIR_M00; -// static constexpr int INV_M00 = DIR_P00; -// static constexpr int INV_0P0 = DIR_0M0; -// static constexpr int INV_0M0 = DIR_0P0; -// static constexpr int INV_00P = DIR_00M; -// static constexpr int INV_00M = DIR_00P; -// static constexpr int INV_PP0 = DIR_MM0; -// static constexpr int INV_MM0 = DIR_PP0; -// static constexpr int INV_PM0 = DIR_MP0; -// static constexpr int INV_MP0 = DIR_PM0; -// static constexpr int INV_P0P = DIR_M0M; -// static constexpr int INV_M0M = DIR_P0P; -// static constexpr int INV_P0M = DIR_M0P; -// static constexpr int INV_M0P = DIR_P0M; -// static constexpr int INV_0PP = DIR_0MM; -// static constexpr int INV_0MM = DIR_0PP; -// static constexpr int INV_0PM = DIR_0MP; -// static constexpr int INV_0MP = DIR_0PM; -// static constexpr int INV_PPP = DIR_MMM; -// static constexpr int INV_MPP = DIR_PMM; -// static constexpr int INV_PMP = DIR_MPM; -// static constexpr int INV_MMP = DIR_PPM; -// static constexpr int INV_PPM = DIR_MMP; -// static constexpr int INV_MPM = DIR_PMP; -// static constexpr int INV_PMM = DIR_MPP; -// static constexpr int INV_MMM = DIR_PPP; - -// static constexpr int SGD_P00 = 0; -// static constexpr int SGD_M00 = 1; -// static constexpr int SGD_0P0 = 2; -// static constexpr int SGD_0M0 = 3; -// static constexpr int SGD_00P = 4; -// static constexpr int SGD_00M = 5; -// static constexpr int SGD_PP0 = 6; -// static constexpr int SGD_MM0 = 7; -// static constexpr int SGD_PM0 = 8; -// static constexpr int SGD_MP0 = 9; -// static constexpr int SGD_P0P = 10; -// static constexpr int SGD_M0M = 11; -// static constexpr int SGD_P0M = 12; -// static constexpr int SGD_M0P = 13; -// static constexpr int SGD_0PP = 14; -// static constexpr int SGD_0MM = 15; -// static constexpr int SGD_0PM = 16; -// static constexpr int SGD_0MP = 17; -// static constexpr int SGD_PPP = 18; -// static constexpr int SGD_MPP = 19; -// static constexpr int SGD_PMP = 20; -// static constexpr int SGD_MMP = 21; -// static constexpr int SGD_PPM = 22; -// static constexpr int SGD_MPM = 23; -// static constexpr int SGD_PMM = 24; -// static constexpr int SGD_MMM = 25; - - -// DEPRECATED -static constexpr int ZZZ = DIR_000; -static constexpr int PZZ = DIR_P00; -static constexpr int MZZ = DIR_M00; -static constexpr int ZPZ = DIR_0P0; -static constexpr int ZMZ = DIR_0M0; -static constexpr int ZZP = DIR_00P; -static constexpr int ZZM = DIR_00M; -static constexpr int PPZ = DIR_PP0; -static constexpr int MMZ = DIR_MM0; -static constexpr int PMZ = DIR_PM0; -static constexpr int MPZ = DIR_MP0; -static constexpr int PZP = DIR_P0P; -static constexpr int MZM = DIR_M0M; -static constexpr int PZM = DIR_P0M; -static constexpr int MZP = DIR_M0P; -static constexpr int ZPP = DIR_0PP; -static constexpr int ZMM = DIR_0MM; -static constexpr int ZPM = DIR_0PM; -static constexpr int ZMP = DIR_0MP; -static constexpr int PPP = DIR_PPP; -static constexpr int MPP = DIR_MPP; -static constexpr int PMP = DIR_PMP; -static constexpr int MMP = DIR_MMP; -static constexpr int PPM = DIR_PPM; -static constexpr int MPM = DIR_MPM; -static constexpr int PMM = DIR_PMM; -static constexpr int MMM = DIR_MMM; -} +static constexpr size_t d000 = 0; +static constexpr size_t dP00 = 1; +static constexpr size_t dM00 = 2; +static constexpr size_t d0P0 = 3; +static constexpr size_t d0M0 = 4; +static constexpr size_t d00P = 5; +static constexpr size_t d00M = 6; +static constexpr size_t dPP0 = 7; +static constexpr size_t dMM0 = 8; +static constexpr size_t dPM0 = 9; +static constexpr size_t dMP0 = 10; +static constexpr size_t dP0P = 11; +static constexpr size_t dM0M = 12; +static constexpr size_t dP0M = 13; +static constexpr size_t dM0P = 14; +static constexpr size_t d0PP = 15; +static constexpr size_t d0MM = 16; +static constexpr size_t d0PM = 17; +static constexpr size_t d0MP = 18; +static constexpr size_t dPPP = 19; +static constexpr size_t dMPP = 20; +static constexpr size_t dPMP = 21; +static constexpr size_t dMMP = 22; +static constexpr size_t dPPM = 23; +static constexpr size_t dMPM = 24; +static constexpr size_t dPMM = 25; +static constexpr size_t dMMM = 26; + +static constexpr size_t iP00 = dM00; +static constexpr size_t iM00 = dP00; +static constexpr size_t i0P0 = d0M0; +static constexpr size_t i0M0 = d0P0; +static constexpr size_t i00P = d00M; +static constexpr size_t i00M = d00P; +static constexpr size_t iPP0 = dMM0; +static constexpr size_t iMM0 = dPP0; +static constexpr size_t iPM0 = dMP0; +static constexpr size_t iMP0 = dPM0; +static constexpr size_t iP0P = dM0M; +static constexpr size_t iM0M = dP0P; +static constexpr size_t iP0M = dM0P; +static constexpr size_t iM0P = dP0M; +static constexpr size_t i0PP = d0MM; +static constexpr size_t i0MM = d0PP; +static constexpr size_t i0PM = d0MP; +static constexpr size_t i0MP = d0PM; +static constexpr size_t iPPP = dMMM; +static constexpr size_t iMPP = dPMM; +static constexpr size_t iPMP = dMPM; +static constexpr size_t iMMP = dPPM; +static constexpr size_t iPPM = dMMP; +static constexpr size_t iMPM = dPMP; +static constexpr size_t iPMM = dMPP; +static constexpr size_t iMMM = dPPP; + +} // namespace vf::lbm::dir #endif diff --git a/src/lbm/interpolation/InterpolationCoefficients.h b/src/lbm/interpolation/InterpolationCoefficients.h index 70e38d57709247f7263dd8f7f4d93a624a0e8ab2..e657e72d0c49ba67ee479c0e902ebee974cadb2c 100644 --- a/src/lbm/interpolation/InterpolationCoefficients.h +++ b/src/lbm/interpolation/InterpolationCoefficients.h @@ -93,33 +93,33 @@ struct MomentsOnSourceNode __host__ __device__ void calculate(const real* const f, const real omega, real forceX, real forceY, real forceZ) { - // const real f_000 = f[dir::DIR_000]; - const real fP00 = f[dir::DIR_P00]; - const real fM00 = f[dir::DIR_M00]; - const real f0P0 = f[dir::DIR_0P0]; - const real f0M0 = f[dir::DIR_0M0]; - const real f00P = f[dir::DIR_00P]; - const real f00M = f[dir::DIR_00M]; - const real fPP0 = f[dir::DIR_PP0]; - const real fMM0 = f[dir::DIR_MM0]; - const real fPM0 = f[dir::DIR_PM0]; - const real fMP0 = f[dir::DIR_MP0]; - const real fP0P = f[dir::DIR_P0P]; - const real fM0M = f[dir::DIR_M0M]; - const real fP0M = f[dir::DIR_P0M]; - const real fM0P = f[dir::DIR_M0P]; - const real f0PP = f[dir::DIR_0PP]; - const real f0MM = f[dir::DIR_0MM]; - const real f0PM = f[dir::DIR_0PM]; - const real f0MP = f[dir::DIR_0MP]; - const real fPPP = f[dir::DIR_PPP]; - const real fMPP = f[dir::DIR_MPP]; - const real fPMP = f[dir::DIR_PMP]; - const real fMMP = f[dir::DIR_MMP]; - const real fPPM = f[dir::DIR_PPM]; - const real fMPM = f[dir::DIR_MPM]; - const real fPMM = f[dir::DIR_PMM]; - const real fMMM = f[dir::DIR_MMM]; + // const real f_000 = f[dir::d000]; + const real fP00 = f[dir::dP00]; + const real fM00 = f[dir::dM00]; + const real f0P0 = f[dir::d0P0]; + const real f0M0 = f[dir::d0M0]; + const real f00P = f[dir::d00P]; + const real f00M = f[dir::d00M]; + const real fPP0 = f[dir::dPP0]; + const real fMM0 = f[dir::dMM0]; + const real fPM0 = f[dir::dPM0]; + const real fMP0 = f[dir::dMP0]; + const real fP0P = f[dir::dP0P]; + const real fM0M = f[dir::dM0M]; + const real fP0M = f[dir::dP0M]; + const real fM0P = f[dir::dM0P]; + const real f0PP = f[dir::d0PP]; + const real f0MM = f[dir::d0MM]; + const real f0PM = f[dir::d0PM]; + const real f0MP = f[dir::d0MP]; + const real fPPP = f[dir::dPPP]; + const real fMPP = f[dir::dMPP]; + const real fPMP = f[dir::dPMP]; + const real fMMP = f[dir::dMMP]; + const real fPPM = f[dir::dPPM]; + const real fMPM = f[dir::dMPM]; + const real fPMM = f[dir::dPMM]; + const real fMMM = f[dir::dMMM]; real oneOverRho; getCompressibleMacroscopicValues(f, this->drho, oneOverRho, this->velocityX, this->velocityY, this->velocityZ); diff --git a/src/lbm/refinement/InterpolationCF.h b/src/lbm/refinement/InterpolationCF.h index fb08d3c12502717c2d8fec1ac81064405bd89cd6..49f91fdc6a7b5c8760b99a651b8affbf39d85172 100644 --- a/src/lbm/refinement/InterpolationCF.h +++ b/src/lbm/refinement/InterpolationCF.h @@ -273,33 +273,33 @@ inline __host__ __device__ void interpolateCF(real* const f, const real& omegaF, backwardInverseChimeraWithK(m210, m211, m212, vvz, vzsq, c9o1, c1o9); backwardInverseChimeraWithK(m220, m221, m222, vvz, vzsq, c36o1, c1o36); - f[DIR_000] = f000; - f[DIR_P00] = fP00; - f[DIR_M00] = fM00; - f[DIR_0P0] = f0P0; - f[DIR_0M0] = f0M0; - f[DIR_00P] = f00P; - f[DIR_00M] = f00M; - f[DIR_PP0] = fPP0; - f[DIR_MM0] = fMM0; - f[DIR_PM0] = fPM0; - f[DIR_MP0] = fMP0; - f[DIR_P0P] = fP0P; - f[DIR_M0M] = fM0M; - f[DIR_P0M] = fP0M; - f[DIR_M0P] = fM0P; - f[DIR_0PP] = f0PP; - f[DIR_0MM] = f0MM; - f[DIR_0PM] = f0PM; - f[DIR_0MP] = f0MP; - f[DIR_PPP] = fPPP; - f[DIR_MPP] = fMPP; - f[DIR_PMP] = fPMP; - f[DIR_MMP] = fMMP; - f[DIR_PPM] = fPPM; - f[DIR_MPM] = fMPM; - f[DIR_PMM] = fPMM; - f[DIR_MMM] = fMMM; + f[dir::d000] = f000; + f[dP00] = fP00; + f[dM00] = fM00; + f[d0P0] = f0P0; + f[d0M0] = f0M0; + f[d00P] = f00P; + f[d00M] = f00M; + f[dPP0] = fPP0; + f[dMM0] = fMM0; + f[dPM0] = fPM0; + f[dMP0] = fMP0; + f[dP0P] = fP0P; + f[dM0M] = fM0M; + f[dP0M] = fP0M; + f[dM0P] = fM0P; + f[d0PP] = f0PP; + f[d0MM] = f0MM; + f[d0PM] = f0PM; + f[d0MP] = f0MP; + f[dPPP] = fPPP; + f[dMPP] = fMPP; + f[dPMP] = fPMP; + f[dMMP] = fMMP; + f[dPPM] = fPPM; + f[dMPM] = fMPM; + f[dPMM] = fPMM; + f[dMMM] = fMMM; } diff --git a/src/lbm/refinement/InterpolationFC.h b/src/lbm/refinement/InterpolationFC.h index 63ed388dbe076136702491d345bc2987703795c9..4f27978df257b641514c8486f39769eaef71fa3d 100644 --- a/src/lbm/refinement/InterpolationFC.h +++ b/src/lbm/refinement/InterpolationFC.h @@ -230,33 +230,33 @@ inline __host__ __device__ void interpolateFC(real* const f, const real epsnew, backwardInverseChimeraWithK(m210, m211, m212, vvz, vzsq, c9o1, c1o9); backwardInverseChimeraWithK(m220, m221, m222, vvz, vzsq, c36o1, c1o36); - f[DIR_000] = f000; - f[DIR_P00] = fP00; - f[DIR_M00] = fM00; - f[DIR_0P0] = f0P0; - f[DIR_0M0] = f0M0; - f[DIR_00P] = f00P; - f[DIR_00M] = f00M; - f[DIR_PP0] = fPP0; - f[DIR_MM0] = fMM0; - f[DIR_PM0] = fPM0; - f[DIR_MP0] = fMP0; - f[DIR_P0P] = fP0P; - f[DIR_M0M] = fM0M; - f[DIR_P0M] = fP0M; - f[DIR_M0P] = fM0P; - f[DIR_0PP] = f0PP; - f[DIR_0MM] = f0MM; - f[DIR_0PM] = f0PM; - f[DIR_0MP] = f0MP; - f[DIR_PPP] = fPPP; - f[DIR_MPP] = fMPP; - f[DIR_PMP] = fPMP; - f[DIR_MMP] = fMMP; - f[DIR_PPM] = fPPM; - f[DIR_MPM] = fMPM; - f[DIR_PMM] = fPMM; - f[DIR_MMM] = fMMM; + f[d000] = f000; + f[dP00] = fP00; + f[dM00] = fM00; + f[d0P0] = f0P0; + f[d0M0] = f0M0; + f[d00P] = f00P; + f[d00M] = f00M; + f[dPP0] = fPP0; + f[dMM0] = fMM0; + f[dPM0] = fPM0; + f[dMP0] = fMP0; + f[dP0P] = fP0P; + f[dM0M] = fM0M; + f[dP0M] = fP0M; + f[dM0P] = fM0P; + f[d0PP] = f0PP; + f[d0MM] = f0MM; + f[d0PM] = f0PM; + f[d0MP] = f0MP; + f[dPPP] = fPPP; + f[dMPP] = fMPP; + f[dPMP] = fPMP; + f[dMMP] = fMMP; + f[dPPM] = fPPM; + f[dMPM] = fMPM; + f[dPMM] = fPMM; + f[dMMM] = fMMM; } } diff --git a/src/logger/Logger.h b/src/logger/Logger.h index f3c41c0e3bfb8aa12c94677040273fdaaaff64a3..01c84b4315c668d318d0d71432731f378d602e91 100644 --- a/src/logger/Logger.h +++ b/src/logger/Logger.h @@ -37,7 +37,7 @@ // spdlog supports 5 log level, which can be changed at runtime e.g.: // spdlog::set_level(spdlog::level::debug) // The default log level is set to trace. Supported levels: trace < debug < info < warning < critical -// +// // The logging is realized in 3 different log sinks: // 1. colored console output // 2. a daily log file diff --git a/utilities/DirRename.py b/utilities/DirRename.py index 2d0bd0541c5b86b1ca9746b8e7e6beb2cc7ef005..61c74923051f4a2a7cdb4b02d1e7f9a5bdb31156 100644 --- a/utilities/DirRename.py +++ b/utilities/DirRename.py @@ -12,7 +12,7 @@ fin = open(filename, "rt") #read file contents to string data = fin.read() #replace all occurrences of the required string -data = data.replace('[REST]','[DIR_000]') +data = data.replace('[REST]','[d000]') data = data.replace('[TNE]', '[DIR_PPP]') data = data.replace('[TNW]', '[DIR_MPP]') data = data.replace('[TSE]', '[DIR_PMP]') @@ -45,16 +45,16 @@ data = data.replace('[TN]', '[DIR_0PP]') data = data.replace('[BS]', '[DIR_0MM]') data = data.replace('[BN]', '[DIR_0PM]') data = data.replace('[TS]', '[DIR_0MP]') -data = data.replace('[E]', '[DIR_P00]') -data = data.replace('[W]', '[DIR_M00]') +data = data.replace('[E]', '[dP00]') +data = data.replace('[W]', '[dM00]') data = data.replace('[N]', '[DIR_0P0]') data = data.replace('[S]', '[DIR_0M0]') data = data.replace('[T]', '[DIR_00P]') data = data.replace('[B]', '[DIR_00M]') -# data = data.replace('[REST]','[DIR_000]') -# data = data.replace('[E ]', '[DIR_P00]') -# data = data.replace('[W ]', '[DIR_M00]') +# data = data.replace('[REST]','[d000]') +# data = data.replace('[E ]', '[dP00]') +# data = data.replace('[W ]', '[dM00]') # data = data.replace('[N ]', '[DIR_0P0]') # data = data.replace('[S ]', '[DIR_0M0]') # data = data.replace('[T ]', '[DIR_00P]') @@ -80,9 +80,9 @@ data = data.replace('[B]', '[DIR_00M]') # data = data.replace('[BSE]', '[DIR_PMM]') # data = data.replace('[BSW]', '[DIR_MMM]') -# data = data.replace('D3Q27System::REST','[DIR_000]') -# data = data.replace('D3Q27System::E', '[DIR_P00]') -# data = data.replace('D3Q27System::W', '[DIR_M00]') +# data = data.replace('D3Q27System::REST','[d000]') +# data = data.replace('D3Q27System::E', '[dP00]') +# data = data.replace('D3Q27System::W', '[dM00]') # data = data.replace('D3Q27System::N', '[DIR_0P0]') # data = data.replace('D3Q27System::S', '[DIR_0M0]') # data = data.replace('D3Q27System::T', '[DIR_00P]') @@ -108,7 +108,7 @@ data = data.replace('[B]', '[DIR_00M]') # data = data.replace('D3Q27System::BSE', '[DIR_PMM]') # data = data.replace('D3Q27System::BSW', '[DIR_MMM]') -# data = data.replace('REST)','DIR_000)') +# data = data.replace('REST)','d000)') # data = data.replace('TNE)', 'DIR_PPP)') # data = data.replace('TNW)', 'DIR_MPP)') # data = data.replace('TSE)', 'DIR_PMP)') @@ -129,14 +129,14 @@ data = data.replace('[B]', '[DIR_00M]') # data = data.replace('BS)', 'DIR_0MM)') # data = data.replace('BN)', 'DIR_0PM)') # data = data.replace('TS)', 'DIR_0MP)') -# data = data.replace('E)', 'DIR_P00)') -# data = data.replace('W)', 'DIR_M00)') +# data = data.replace('E)', 'dP00)') +# data = data.replace('W)', 'dM00)') # data = data.replace('N)', 'DIR_0P0)') # data = data.replace('S)', 'DIR_0M0)') # data = data.replace('T)', 'DIR_00P)') # data = data.replace('B)', 'DIR_00M)') -# data = data.replace('REST','DIR_000') +# data = data.replace('REST','d000') # data = data.replace('TNE', 'DIR_PPP') # data = data.replace('TNW', 'DIR_MPP') # data = data.replace('TSE', 'DIR_PMP') @@ -157,8 +157,8 @@ data = data.replace('[B]', '[DIR_00M]') # data = data.replace('BS', 'DIR_0MM') # data = data.replace('BN', 'DIR_0PM') # data = data.replace('TS', 'DIR_0MP') -# data = data.replace('E', 'DIR_P00') -# data = data.replace('W', 'DIR_M00') +# data = data.replace('E', 'dP00') +# data = data.replace('W', 'dM00') # data = data.replace('N', 'DIR_0P0') # data = data.replace('S', 'DIR_0M0') # data = data.replace('T', 'DIR_00P')