From 9cf15bb50e7e4425d5ba5219a37afd6aa06a7f4b Mon Sep 17 00:00:00 2001 From: HenrikAsmuth <henrik.asmuth@geo.uu.se> Date: Wed, 12 Oct 2022 16:53:18 +0200 Subject: [PATCH] Add functionalities to pass indices from interactors to gridBuilder --- src/gpu/GridGenerator/grid/Grid.h | 4 ++++ .../grid/GridBuilder/GridBuilder.h | 5 ++++ .../grid/GridBuilder/LevelGridBuilder.cpp | 16 +++++++++++++ .../grid/GridBuilder/LevelGridBuilder.h | 4 ++++ src/gpu/GridGenerator/grid/GridImp.cpp | 15 ++++++++++++ src/gpu/GridGenerator/grid/GridImp.h | 10 ++++++-- .../Calculation/CollisisionStrategy.cpp | 6 ++--- .../DataStructureInitializer/GridProvider.h | 4 +++- .../GridReaderFiles/GridReader.cpp | 4 ++++ .../GridReaderFiles/GridReader.h | 2 ++ .../GridReaderGenerator/GridGenerator.cpp | 23 +++++++++++++++++++ .../GridReaderGenerator/GridGenerator.h | 2 ++ src/gpu/VirtualFluids_GPU/LBM/Simulation.cpp | 14 +++++++---- .../PreCollisionInteractor/ActuatorLine.cu | 5 ++++ .../PreCollisionInteractor/ActuatorLine.h | 2 ++ .../PreCollisionInteractor.h | 1 + .../Probes/PlaneProbe.cu | 10 ++++++++ .../Probes/PlaneProbe.h | 2 ++ .../Probes/PointProbe.cu | 10 ++++++++ .../Probes/PointProbe.h | 1 + .../PreCollisionInteractor/Probes/Probe.cu | 6 +++++ .../PreCollisionInteractor/Probes/Probe.h | 1 + 22 files changed, 136 insertions(+), 11 deletions(-) diff --git a/src/gpu/GridGenerator/grid/Grid.h b/src/gpu/GridGenerator/grid/Grid.h index 3f28120a5..ef21f1e22 100644 --- a/src/gpu/GridGenerator/grid/Grid.h +++ b/src/gpu/GridGenerator/grid/Grid.h @@ -178,6 +178,10 @@ public: virtual void findFluidNodeIndicesBorder() = 0; virtual uint getNumberOfFluidNodesBorder() const = 0; virtual void getFluidNodeIndicesBorder(uint *fluidNodeIndicesBorder) const = 0; + + virtual void addFluidNodeIndicesMacroVars(std::vector<uint> _fluidNodeIndicesMacroVars) = 0; + virtual void addFluidNodeIndicesApplyBodyForce(std::vector<uint> _fluidNodeIndicesApplyBodyForce) = 0; + virtual void addFluidNodeIndicesAllFeatures(std::vector<uint> _fluidNodeIndicesAllFeatures) = 0; }; #endif diff --git a/src/gpu/GridGenerator/grid/GridBuilder/GridBuilder.h b/src/gpu/GridGenerator/grid/GridBuilder/GridBuilder.h index 739aef59f..448737e90 100644 --- a/src/gpu/GridGenerator/grid/GridBuilder/GridBuilder.h +++ b/src/gpu/GridGenerator/grid/GridBuilder/GridBuilder.h @@ -136,6 +136,11 @@ public: virtual void getReceiveIndices(int *sendIndices, int direction, int level) = 0; virtual void findFluidNodes(bool splitDomain) = 0; + + virtual void addFluidNodeIndicesMacroVars(std::vector<uint> fluidNodeIndicesMacroVars, uint level) = 0; + virtual void addFluidNodeIndicesApplyBodyForce(std::vector<uint> fluidNodeIndicesApplyBodyForce, uint level) = 0; + virtual void addFluidNodeIndicesAllFeatures(std::vector<uint> fluidNodeIndicesAllFeatures, uint level) = 0; + }; #endif \ No newline at end of file diff --git a/src/gpu/GridGenerator/grid/GridBuilder/LevelGridBuilder.cpp b/src/gpu/GridGenerator/grid/GridBuilder/LevelGridBuilder.cpp index 083b9a51e..e29ef28c2 100644 --- a/src/gpu/GridGenerator/grid/GridBuilder/LevelGridBuilder.cpp +++ b/src/gpu/GridGenerator/grid/GridBuilder/LevelGridBuilder.cpp @@ -674,4 +674,20 @@ void LevelGridBuilder::findFluidNodes(bool splitDomain) for (uint i = 0; i < grids.size(); i++) grids[i]->findFluidNodeIndices(splitDomain); *logging::out << logging::Logger::INFO_HIGH << "Done with findFluidNodes()\n"; +} + + +void LevelGridBuilder::addFluidNodeIndicesMacroVars(std::vector<uint> fluidNodeIndicesMacroVars, uint level) +{ + grids[level]->addFluidNodeIndicesMacroVars(fluidNodeIndicesMacroVars); +} + +void LevelGridBuilder::addFluidNodeIndicesApplyBodyForce(std::vector<uint> fluidNodeIndicesApplyBodyForce, uint level) +{ + grids[level]->addFluidNodeIndicesApplyBodyForce(fluidNodeIndicesApplyBodyForce); +} + +void LevelGridBuilder::addFluidNodeIndicesAllFeatures(std::vector<uint> fluidNodeIndicesAllFeatures, uint level) +{ + grids[level]->addFluidNodeIndicesAllFeatures(fluidNodeIndicesAllFeatures); } \ No newline at end of file diff --git a/src/gpu/GridGenerator/grid/GridBuilder/LevelGridBuilder.h b/src/gpu/GridGenerator/grid/GridBuilder/LevelGridBuilder.h index 4d73b8b04..8efb3de4c 100644 --- a/src/gpu/GridGenerator/grid/GridBuilder/LevelGridBuilder.h +++ b/src/gpu/GridGenerator/grid/GridBuilder/LevelGridBuilder.h @@ -194,6 +194,10 @@ public: // needed for CUDA Streams MultiGPU (Communication Hiding) void findFluidNodes(bool splitDomain) override; + + void addFluidNodeIndicesMacroVars(std::vector<uint> fluidNodeIndicesMacroVars, uint level) override; + void addFluidNodeIndicesApplyBodyForce(std::vector<uint> fluidNodeIndicesApplyBodyForce, uint level) override; + void addFluidNodeIndicesAllFeatures(std::vector<uint> fluidNodeIndicesAllFeatures, uint level) override; }; #endif diff --git a/src/gpu/GridGenerator/grid/GridImp.cpp b/src/gpu/GridGenerator/grid/GridImp.cpp index 18f7a3bdd..b79ace78c 100644 --- a/src/gpu/GridGenerator/grid/GridImp.cpp +++ b/src/gpu/GridGenerator/grid/GridImp.cpp @@ -2099,6 +2099,21 @@ void GridImp::getFluidNodeIndicesBorder(uint *fluidNodeIndicesBorder) const fluidNodeIndicesBorder[nodeNumber] = this->fluidNodeIndicesBorder[nodeNumber]; } +void GridImp::addFluidNodeIndicesMacroVars(std::vector<uint> _fluidNodeIndicesMacroVars) +{ + this->fluidNodeIndicesMacroVars.insert(fluidNodeIndicesMacroVars.end(), fluidNodeIndicesMacroVars.begin(), _fluidNodeIndicesMacroVars.end()); +} + +void GridImp::addFluidNodeIndicesApplyBodyForce(std::vector<uint> _fluidNodeIndicesApplyBodyForce) +{ + this->fluidNodeIndicesApplyBodyForce.insert(_fluidNodeIndicesApplyBodyForce.end(), _fluidNodeIndicesApplyBodyForce.begin(), fluidNodeIndicesApplyBodyForce.end()); +} + +void GridImp::addFluidNodeIndicesAllFeatures(std::vector<uint> _fluidNodeIndicesAllFeatures) +{ + this->fluidNodeIndicesAllFeatures.insert(fluidNodeIndicesAllFeatures.end(), fluidNodeIndicesAllFeatures.begin(), _fluidNodeIndicesAllFeatures.end()); +} + void GridImp::print() const { printf("min: (%2.4f, %2.4f, %2.4f), max: (%2.4f, %2.4f, %2.4f), size: %d, delta: %2.4f\n", startX, startY, startZ, diff --git a/src/gpu/GridGenerator/grid/GridImp.h b/src/gpu/GridGenerator/grid/GridImp.h index 158cba9e6..51510a90e 100644 --- a/src/gpu/GridGenerator/grid/GridImp.h +++ b/src/gpu/GridGenerator/grid/GridImp.h @@ -114,8 +114,11 @@ private: int *sparseIndices; - std::vector<uint> fluidNodeIndices; - std::vector<uint> fluidNodeIndicesBorder; + std::vector<uint> fluidNodeIndices; // run on CollisionTemplate::Default + std::vector<uint> fluidNodeIndicesBorder; // run on border nodes + std::vector<uint> fluidNodeIndicesMacroVars; // run on CollisionTemplate::MacroVars + std::vector<uint> fluidNodeIndicesApplyBodyForce; // run on CollisionTemplate::ApplyBodyForce + std::vector<uint> fluidNodeIndicesAllFeatures; // run on CollisionTemplate::AllFeatures uint *qIndices; //maps from matrix index to qIndex real *qValues; @@ -363,6 +366,9 @@ public: uint getNumberOfFluidNodesBorder() const override; void getFluidNodeIndicesBorder(uint *fluidNodeIndicesBorder) const override; + void addFluidNodeIndicesMacroVars(std::vector<uint> _fluidNodeIndicesMacroVars) override; + void addFluidNodeIndicesApplyBodyForce(std::vector<uint> _fluidNodeIndicesApplyBodyForce) override; + void addFluidNodeIndicesAllFeatures(std::vector<uint> _fluidNodeIndicesAllFeatures) override; public: struct CommunicationIndices { diff --git a/src/gpu/VirtualFluids_GPU/Calculation/CollisisionStrategy.cpp b/src/gpu/VirtualFluids_GPU/Calculation/CollisisionStrategy.cpp index 773d6d2aa..776ff31c1 100644 --- a/src/gpu/VirtualFluids_GPU/Calculation/CollisisionStrategy.cpp +++ b/src/gpu/VirtualFluids_GPU/Calculation/CollisisionStrategy.cpp @@ -68,12 +68,12 @@ void CollisionAndExchange_streams::operator()(UpdateGrid27 *updateGrid, Paramete //! \details steps: //! - //! 1. run collision for nodes which are at the border of the gpus/processes - //! + //! 1. run collision for nodes which are at the border of the gpus/processes, running with WriteMacroVars in case probes sample on these nodes + //! updateGrid->collisionUsingIndices( level, t, para->getParD(level)->fluidNodeIndicesBorder, para->getParD(level)->numberOfFluidNodesBorder, - CollisionTemplate::Default, + CollisionTemplate::WriteMacroVars, borderStreamIndex); //! 2. prepare the exchange between gpus (collect the send nodes for communication in a buffer on the gpu) and trigger bulk kernel execution when finished diff --git a/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridProvider.h b/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridProvider.h index d2fa6e64e..c6c703cd3 100644 --- a/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridProvider.h +++ b/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridProvider.h @@ -5,7 +5,7 @@ #include <vector> #include <memory> - +#include "LBM/LB.h" #include "PointerDefinitions.h" #include "VirtualFluids_GPU_export.h" #include "gpu/GridGenerator/io/SimulationFileWriter/SimulationFileWriter.h" @@ -31,6 +31,8 @@ public: virtual void allocArrays_fluidNodeIndices() = 0; virtual void allocArrays_fluidNodeIndicesBorder() = 0; + virtual void tagFluidNodeIndices(std::vector<uint> taggedFluidNodeIndices, CollisionTemplate tag, uint level) = 0; + virtual void setDimensions() = 0; virtual void setBoundingBox() = 0; virtual void initPeriodicNeigh(std::vector<std::vector<std::vector<unsigned int> > > periodV, std::vector<std::vector<unsigned int> > periodIndex, std::string way) = 0; diff --git a/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/GridReader.cpp b/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/GridReader.cpp index fa432a1d9..92c9688d9 100644 --- a/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/GridReader.cpp +++ b/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/GridReader.cpp @@ -228,6 +228,10 @@ void GridReader::allocArrays_fluidNodeIndicesBorder() { // TODO } +void GridReader::tagFluidNodeIndices(std::vector<uint> taggedFluidNodeIndices, CollisionTemplate tag, uint level){ + std::cout << "GridReader::tagFluidNodeIndices not implemented" << std::endl; + // TODO +} void GridReader::setPressureValues(int channelSide) const { diff --git a/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/GridReader.h b/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/GridReader.h index 18efb6a78..128e90222 100644 --- a/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/GridReader.h +++ b/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderFiles/GridReader.h @@ -42,6 +42,8 @@ public: void allocArrays_fluidNodeIndices() override; void allocArrays_fluidNodeIndicesBorder() override; + void tagFluidNodeIndices(std::vector<uint> taggedFluidNodeIndices, CollisionTemplate tag, uint level) override; + void initalValuesDomainDecompostion(int level); void setChannelBoundaryCondition(); diff --git a/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/GridGenerator.cpp b/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/GridGenerator.cpp index 31e831837..1975f9a6c 100644 --- a/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/GridGenerator.cpp +++ b/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/GridGenerator.cpp @@ -1,5 +1,6 @@ #include "GridGenerator.h" +#include "LBM/LB.h" #include "Parameter/Parameter.h" #include "GridGenerator/grid/GridBuilder/GridBuilder.h" #include "GPU/CudaMemoryManager.h" @@ -112,6 +113,28 @@ void GridGenerator::allocArrays_fluidNodeIndicesBorder() { } } +void GridGenerator::tagFluidNodeIndices(std::vector<uint> taggedFluidNodeIndices, CollisionTemplate tag, uint level) { + switch(tag) + { + case CollisionTemplate::WriteMacroVars: + builder->addFluidNodeIndicesMacroVars( taggedFluidNodeIndices, level ); + break; + case CollisionTemplate::ApplyBodyForce: + builder->addFluidNodeIndicesApplyBodyForce( taggedFluidNodeIndices, level ); + break; + case CollisionTemplate::AllFeatures: + builder->addFluidNodeIndicesAllFeatures( taggedFluidNodeIndices, level ); + break; + case CollisionTemplate::Default: + throw std::runtime_error("Cannot tag fluid nodes as CollisionTemplate::Default!"); + default: + throw std::runtime_error("Tagging fluid nodes with invald tag!"); + break; + + } + +} + void GridGenerator::allocArrays_BoundaryValues() { std::cout << "------read BoundaryValues------" << std::endl; diff --git a/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/GridGenerator.h b/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/GridGenerator.h index 3d277be80..7b72564f3 100644 --- a/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/GridGenerator.h +++ b/src/gpu/VirtualFluids_GPU/DataStructureInitializer/GridReaderGenerator/GridGenerator.h @@ -74,6 +74,8 @@ public: void allocArrays_fluidNodeIndices() override; void allocArrays_fluidNodeIndicesBorder() override; + void tagFluidNodeIndices(std::vector<uint> taggedFluidNodeIndices, CollisionTemplate tag, uint level) override; + virtual void setDimensions() override; virtual void setBoundingBox() override; diff --git a/src/gpu/VirtualFluids_GPU/LBM/Simulation.cpp b/src/gpu/VirtualFluids_GPU/LBM/Simulation.cpp index f3638e967..3a0f251d2 100644 --- a/src/gpu/VirtualFluids_GPU/LBM/Simulation.cpp +++ b/src/gpu/VirtualFluids_GPU/LBM/Simulation.cpp @@ -97,11 +97,7 @@ void Simulation::init(GridProvider &gridProvider, BoundaryConditionFactory *bcFa gridProvider.allocAndCopyForcing(); gridProvider.allocAndCopyQuadricLimiters(); - if (para->getKernelNeedsFluidNodeIndicesToRun()) { - gridProvider.allocArrays_fluidNodeIndices(); - gridProvider.allocArrays_fluidNodeIndicesBorder(); - } - + gridProvider.setDimensions(); gridProvider.setBoundingBox(); @@ -136,10 +132,18 @@ void Simulation::init(GridProvider &gridProvider, BoundaryConditionFactory *bcFa for (SPtr<PreCollisionInteractor> actuator : para->getActuators()) { actuator->init(para.get(), &gridProvider, cudaMemoryManager.get()); + actuator->getInteractorFluidNodes( para.get(), &gridProvider ); } for (SPtr<PreCollisionInteractor> probe : para->getProbes()) { probe->init(para.get(), &gridProvider, cudaMemoryManager.get()); + probe->getInteractorFluidNodes( para.get(), &gridProvider ); + } + + ////////////////////////////////////////////////////////////////////////// + if (para->getKernelNeedsFluidNodeIndicesToRun()) { + gridProvider.allocArrays_fluidNodeIndices(); + gridProvider.allocArrays_fluidNodeIndicesBorder(); } ////////////////////////////////////////////////////////////////////////// diff --git a/src/gpu/VirtualFluids_GPU/PreCollisionInteractor/ActuatorLine.cu b/src/gpu/VirtualFluids_GPU/PreCollisionInteractor/ActuatorLine.cu index 71897bd21..b489269d0 100644 --- a/src/gpu/VirtualFluids_GPU/PreCollisionInteractor/ActuatorLine.cu +++ b/src/gpu/VirtualFluids_GPU/PreCollisionInteractor/ActuatorLine.cu @@ -258,6 +258,11 @@ void ActuatorLine::free(Parameter* para, CudaMemoryManager* cudaMemoryManager) cudaMemoryManager->cudaFreeSphereIndices(this); } +void ActuatorLine::getInteractorFluidNodes(Parameter *para, GridProvider* gridProvider) +{ + std::vector<uint> indicesInSphere(this->boundingSphereIndicesH, this->boundingSphereIndicesH+this->nIndices); + gridProvider->tagFluidNodeIndices(indicesInSphere, CollisionTemplate::AllFeatures, this->level); +} void ActuatorLine::calcForcesEllipticWing() { diff --git a/src/gpu/VirtualFluids_GPU/PreCollisionInteractor/ActuatorLine.h b/src/gpu/VirtualFluids_GPU/PreCollisionInteractor/ActuatorLine.h index b44c89c50..c107f4576 100644 --- a/src/gpu/VirtualFluids_GPU/PreCollisionInteractor/ActuatorLine.h +++ b/src/gpu/VirtualFluids_GPU/PreCollisionInteractor/ActuatorLine.h @@ -49,6 +49,8 @@ public: void interact(Parameter* para, CudaMemoryManager* cudaMemoryManager, int level, uint t) override; void free(Parameter* para, CudaMemoryManager* cudaMemoryManager) override; void write(uint t); + void getInteractorFluidNodes(Parameter *para, GridProvider* gridProvider) override; + uint getNBladeNodes(){ return this->nBladeNodes; }; uint getNBlades(){ return this->nBlades;}; diff --git a/src/gpu/VirtualFluids_GPU/PreCollisionInteractor/PreCollisionInteractor.h b/src/gpu/VirtualFluids_GPU/PreCollisionInteractor/PreCollisionInteractor.h index a9b233f30..368b85c2f 100644 --- a/src/gpu/VirtualFluids_GPU/PreCollisionInteractor/PreCollisionInteractor.h +++ b/src/gpu/VirtualFluids_GPU/PreCollisionInteractor/PreCollisionInteractor.h @@ -33,6 +33,7 @@ public: virtual void init(Parameter *para, GridProvider *gridProvider, CudaMemoryManager *cudaMemoryManager) = 0; virtual void interact(Parameter *para, CudaMemoryManager *cudaMemoryManager, int level, uint t) = 0; virtual void free(Parameter *para, CudaMemoryManager *cudaMemoryManager) = 0; + virtual void getInteractorFluidNodes(Parameter *para, GridProvider* gridProvider) = 0; protected: uint updateInterval; diff --git a/src/gpu/VirtualFluids_GPU/PreCollisionInteractor/Probes/PlaneProbe.cu b/src/gpu/VirtualFluids_GPU/PreCollisionInteractor/Probes/PlaneProbe.cu index 7d1c02052..e0c574bba 100644 --- a/src/gpu/VirtualFluids_GPU/PreCollisionInteractor/Probes/PlaneProbe.cu +++ b/src/gpu/VirtualFluids_GPU/PreCollisionInteractor/Probes/PlaneProbe.cu @@ -106,4 +106,14 @@ void PlaneProbe::calculateQuantities(SPtr<ProbeStruct> probeStruct, Parameter* p para->getParD(level)->velocityX, para->getParD(level)->velocityY, para->getParD(level)->velocityZ, para->getParD(level)->rho, para->getParD(level)->neighborX, para->getParD(level)->neighborY, para->getParD(level)->neighborZ, probeStruct->quantitiesD, probeStruct->arrayOffsetsD, probeStruct->quantitiesArrayD); +} + +void PlaneProbe::getInteractorFluidNodes(Parameter *para, GridProvider* gridProvider) +{ + for(int level=0; level<=para->getMaxLevel(); level++) + { + SPtr<ProbeStruct> probeStruct = this->getProbeStruct(level); + std::vector<uint> probeIndices( probeStruct->pointIndicesH, probeStruct->pointIndicesH+probeStruct->nIndices); + gridProvider->tagFluidNodeIndices( probeIndices, CollisionTemplate::WriteMacroVars, level); + } } \ No newline at end of file diff --git a/src/gpu/VirtualFluids_GPU/PreCollisionInteractor/Probes/PlaneProbe.h b/src/gpu/VirtualFluids_GPU/PreCollisionInteractor/Probes/PlaneProbe.h index 3440c0102..559ed7497 100644 --- a/src/gpu/VirtualFluids_GPU/PreCollisionInteractor/Probes/PlaneProbe.h +++ b/src/gpu/VirtualFluids_GPU/PreCollisionInteractor/Probes/PlaneProbe.h @@ -72,6 +72,8 @@ public: this->deltaZ = _deltaZ; } + void getInteractorFluidNodes(Parameter *para, GridProvider* gridProvider) override; + private: bool isAvailableStatistic(Statistic _variable) override; diff --git a/src/gpu/VirtualFluids_GPU/PreCollisionInteractor/Probes/PointProbe.cu b/src/gpu/VirtualFluids_GPU/PreCollisionInteractor/Probes/PointProbe.cu index e78a98f02..25956f3db 100644 --- a/src/gpu/VirtualFluids_GPU/PreCollisionInteractor/Probes/PointProbe.cu +++ b/src/gpu/VirtualFluids_GPU/PreCollisionInteractor/Probes/PointProbe.cu @@ -140,4 +140,14 @@ void PointProbe::addProbePointsFromXNormalPlane(real pos_x, real pos0_y, real po } printf("Added %u points \n", n_y*n_z); +} + +void PointProbe::getInteractorFluidNodes(Parameter *para, GridProvider* gridProvider) +{ + for(int level=0; level<=para->getMaxLevel(); level++) + { + SPtr<ProbeStruct> probeStruct = this->getProbeStruct(level); + std::vector<uint> probeIndices( probeStruct->pointIndicesH, probeStruct->pointIndicesH+probeStruct->nIndices); + gridProvider->tagFluidNodeIndices( probeIndices, CollisionTemplate::WriteMacroVars, level); + } } \ No newline at end of file diff --git a/src/gpu/VirtualFluids_GPU/PreCollisionInteractor/Probes/PointProbe.h b/src/gpu/VirtualFluids_GPU/PreCollisionInteractor/Probes/PointProbe.h index 6a6fbe76f..8cdf225eb 100644 --- a/src/gpu/VirtualFluids_GPU/PreCollisionInteractor/Probes/PointProbe.h +++ b/src/gpu/VirtualFluids_GPU/PreCollisionInteractor/Probes/PointProbe.h @@ -64,6 +64,7 @@ public: void addProbePointsFromList(std::vector<real>& _pointCoordsX, std::vector<real>& _pointCoordsY, std::vector<real>& _pointCoordsZ); void addProbePointsFromXNormalPlane(real pos_x, real pos0_y, real pos0_z, real pos1_y, real pos1_z, uint n_y, uint n_z); + void getInteractorFluidNodes(Parameter *para, GridProvider* gridProvider) override; private: bool isAvailableStatistic(Statistic _variable) override; diff --git a/src/gpu/VirtualFluids_GPU/PreCollisionInteractor/Probes/Probe.cu b/src/gpu/VirtualFluids_GPU/PreCollisionInteractor/Probes/Probe.cu index cc027b07b..a4fd7c0ec 100644 --- a/src/gpu/VirtualFluids_GPU/PreCollisionInteractor/Probes/Probe.cu +++ b/src/gpu/VirtualFluids_GPU/PreCollisionInteractor/Probes/Probe.cu @@ -315,6 +315,12 @@ void Probe::free(Parameter* para, CudaMemoryManager* cudaMemoryManager) } } +void Probe::getInteractorFluidNodes(Parameter *para, GridProvider* gridProvider) +{ + // Do nothing +}; + + void Probe::addStatistic(Statistic variable) { if (!this->isAvailableStatistic(variable)) throw std::runtime_error("Probe::addStatistic(): Statistic not available for this probe type!"); diff --git a/src/gpu/VirtualFluids_GPU/PreCollisionInteractor/Probes/Probe.h b/src/gpu/VirtualFluids_GPU/PreCollisionInteractor/Probes/Probe.h index 9cb0bd43e..3012fdbc5 100644 --- a/src/gpu/VirtualFluids_GPU/PreCollisionInteractor/Probes/Probe.h +++ b/src/gpu/VirtualFluids_GPU/PreCollisionInteractor/Probes/Probe.h @@ -159,6 +159,7 @@ public: void init(Parameter* para, GridProvider* gridProvider, CudaMemoryManager* cudaMemoryManager) override; void interact(Parameter* para, CudaMemoryManager* cudaMemoryManager, int level, uint t) override; void free(Parameter* para, CudaMemoryManager* cudaMemoryManager) override; + virtual void getInteractorFluidNodes(Parameter *para, GridProvider* gridProvider); SPtr<ProbeStruct> getProbeStruct(int level){ return this->probeParams[level]; } -- GitLab