From 300513a4dd964260021bae290b5f2258c2ff96f2 Mon Sep 17 00:00:00 2001 From: HenrikAsmuth <henrik.asmuth@geo.uu.se> Date: Wed, 7 Dec 2022 15:36:15 +0100 Subject: [PATCH] Add check for epsilon in ActuatorFarm --- .../VirtualFluids_GPU/PreCollisionInteractor/ActuatorFarm.cu | 4 +--- .../VirtualFluids_GPU/PreCollisionInteractor/ActuatorFarm.h | 3 +++ 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/gpu/VirtualFluids_GPU/PreCollisionInteractor/ActuatorFarm.cu b/src/gpu/VirtualFluids_GPU/PreCollisionInteractor/ActuatorFarm.cu index 4a9e31993..3e553ad68 100644 --- a/src/gpu/VirtualFluids_GPU/PreCollisionInteractor/ActuatorFarm.cu +++ b/src/gpu/VirtualFluids_GPU/PreCollisionInteractor/ActuatorFarm.cu @@ -483,8 +483,6 @@ void ActuatorFarm::initBoundingSpheres(Parameter* para, CudaMemoryManager* cudaM { std::vector<int> nodesInSpheres; - real dx = para->getScaledLengthRatio(this->level); - for(uint turbine=0; turbine<this->numberOfTurbines; turbine++) { real sphereRadius = c1o2*this->diametersH[turbine]+c4o1*this->epsilon; @@ -495,7 +493,7 @@ void ActuatorFarm::initBoundingSpheres(Parameter* para, CudaMemoryManager* cudaM real sphereRadiusSqrd = sphereRadius*sphereRadius; - uint minimumNumberOfNodesPerSphere = (uint)(c4o3*cPi*pow(sphereRadius, c3o1)/pow(dx, c3o1)); + uint minimumNumberOfNodesPerSphere = (uint)(c4o3*cPi*pow(sphereRadius-this->deltaX, c3o1)/pow(this->deltaX, c3o1)); uint nodesInThisSphere = 0; for (uint j = 1; j <= para->getParH(this->level)->numberOfNodes; j++) diff --git a/src/gpu/VirtualFluids_GPU/PreCollisionInteractor/ActuatorFarm.h b/src/gpu/VirtualFluids_GPU/PreCollisionInteractor/ActuatorFarm.h index 5dcd2fc59..3d05ebea7 100644 --- a/src/gpu/VirtualFluids_GPU/PreCollisionInteractor/ActuatorFarm.h +++ b/src/gpu/VirtualFluids_GPU/PreCollisionInteractor/ActuatorFarm.h @@ -38,6 +38,9 @@ public: this->deltaX = _deltaX*exp2(-this->level); this->invEpsilonSqrd = 1/(epsilon*epsilon); this->invDeltaX = c1o1/this->deltaX; + + if(this->epsilon<this->deltaX) + throw std::runtime_error("ActuatorFarm::ActuatorFarm: epsilon needs to be larger than dx!"); } virtual ~ActuatorFarm() -- GitLab