From c5011f993f7c8f59420520734eb80cc309ca78a1 Mon Sep 17 00:00:00 2001 From: Henry Korb <henry.korb@geo.uu.se> Date: Tue, 20 Apr 2021 18:39:41 +0200 Subject: [PATCH] added bodyForce to cumulantK17CompChim --- apps/gpu/LBM/ActuatorLine/ActuatorLine.cpp | 18 +++++++------- .../CumulantK17chim/CumulantK17CompChim.cu | 4 ++++ .../CumulantK17CompChim_Device.cu | 24 ++++++++++++++----- .../CumulantK17CompChim_Device.cuh | 4 ++++ 4 files changed, 35 insertions(+), 15 deletions(-) diff --git a/apps/gpu/LBM/ActuatorLine/ActuatorLine.cpp b/apps/gpu/LBM/ActuatorLine/ActuatorLine.cpp index 6c260587c..b82e2211c 100644 --- a/apps/gpu/LBM/ActuatorLine/ActuatorLine.cpp +++ b/apps/gpu/LBM/ActuatorLine/ActuatorLine.cpp @@ -138,8 +138,8 @@ void multipleLevel(const std::string& configPath) const real dx = D/real(nodes_per_D); - gridBuilder->addCoarseGrid(0.0, 0.0, 0.0 - L_x, L_y, L_z, dx); + gridBuilder->addCoarseGrid(0.0, 0.0, 0.0, + L_x, L_y, L_z, dx); gridBuilder->setPeriodicBoundaryCondition(false, false, false); @@ -203,15 +203,15 @@ void multipleLevel(const std::string& configPath) para->setTOut( timeStepOut ); para->setTEnd( timeStepEnd ); - para->setBodyForce( true ); + para->setIsBodyForce( true ); ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - gridBuilder->setVelocityBoundaryCondition(SideType::MX, vx, 0.0, 0.0); - gridBuilder->setVelocityBoundaryCondition(SideType::PX, vx, 0.0, 0.0); - gridBuilder->setVelocityBoundaryCondition(SideType::MY, vx, 0.0, 0.0); - gridBuilder->setVelocityBoundaryCondition(SideType::PY, vx, 0.0, 0.0); - gridBuilder->setVelocityBoundaryCondition(SideType::MZ, vx, 0.0, 0.0); - gridBuilder->setVelocityBoundaryCondition(SideType::PZ, vx, 0.0, 0.0); + gridBuilder->setVelocityBoundaryCondition(SideType::MX, velocityLB, 0.0, 0.0); + gridBuilder->setVelocityBoundaryCondition(SideType::PX, velocityLB, 0.0, 0.0); + gridBuilder->setVelocityBoundaryCondition(SideType::MY, velocityLB, 0.0, 0.0); + gridBuilder->setVelocityBoundaryCondition(SideType::PY, velocityLB, 0.0, 0.0); + gridBuilder->setVelocityBoundaryCondition(SideType::MZ, velocityLB, 0.0, 0.0); + gridBuilder->setVelocityBoundaryCondition(SideType::PZ, velocityLB, 0.0, 0.0); //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Compressible/CumulantK17chim/CumulantK17CompChim.cu b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Compressible/CumulantK17chim/CumulantK17CompChim.cu index 38df36655..b97b27784 100644 --- a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Compressible/CumulantK17chim/CumulantK17CompChim.cu +++ b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Compressible/CumulantK17chim/CumulantK17CompChim.cu @@ -37,7 +37,11 @@ void CumulantK17CompChim::run() para->getParD(level)->d0SP.f[0], para->getParD(level)->size_Mat_SP, level, + para->getIsBodyForce(), para->getForcesDev(), + para->getParD(level)->forceX_SP, + para->getParD(level)->forceY_SP, + para->getParD(level)->forceZ_SP, para->getQuadricLimitersDev(), para->getParD(level)->evenOrOdd); getLastCudaError("LB_Kernel_CumulantK17CompChim execution failed"); diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Compressible/CumulantK17chim/CumulantK17CompChim_Device.cu b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Compressible/CumulantK17chim/CumulantK17CompChim_Device.cu index 6b316deb8..1a217934a 100644 --- a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Compressible/CumulantK17chim/CumulantK17CompChim_Device.cu +++ b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Compressible/CumulantK17chim/CumulantK17CompChim_Device.cu @@ -46,7 +46,11 @@ extern "C" __global__ void LB_Kernel_CumulantK17CompChim( real* distributions, int size_Mat, int level, + bool bodyForce, real* forces, + real* bodyForceX, + real* bodyForceY, + real* bodyForceZ, real* quadricLimiters, bool isEvenTimestep) { @@ -208,12 +212,20 @@ extern "C" __global__ void LB_Kernel_CumulantK17CompChim( for (size_t i = 1; i <= level; i++) { factor *= c2o1; } - real fx = forces[0] / factor; - real fy = forces[1] / factor; - real fz = forces[2] / factor; - vvx += fx * c1o2; - vvy += fy * c1o2; - vvz += fz * c1o2; + + real fx = forces[0]; + real fy = forces[1]; + real fz = forces[2]; + + if( bodyForce ){ + fx += bodyForceX[k]; + fy += bodyForceY[k]; + fz += bodyForceZ[k]; + } + + vvx += fx * c1o2 / factor; + vvy += fy * c1o2 / factor; + vvz += fz * c1o2 / factor; //////////////////////////////////////////////////////////////////////////////////// // calculate the square of velocities for this lattice node real vx2 = vvx * vvx; diff --git a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Compressible/CumulantK17chim/CumulantK17CompChim_Device.cuh b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Compressible/CumulantK17chim/CumulantK17CompChim_Device.cuh index 557bc08b1..1d42d65f0 100644 --- a/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Compressible/CumulantK17chim/CumulantK17CompChim_Device.cuh +++ b/src/gpu/VirtualFluids_GPU/Kernel/Kernels/BasicKernels/FluidFlow/Compressible/CumulantK17chim/CumulantK17CompChim_Device.cuh @@ -13,7 +13,11 @@ extern "C" __global__ void LB_Kernel_CumulantK17CompChim( real* distributions, int size_Mat, int level, + bool bodyForce, real* forces, + real* bodyForceX, + real* bodyForceY, + real* bodyForceZ, real* quadricLimiters, bool isEvenTimestep); #endif -- GitLab