From f7c4b7883d5b9808f73eaa215c852d7978a59438 Mon Sep 17 00:00:00 2001 From: djairoh Date: Thu, 16 May 2024 12:48:28 +0200 Subject: [PATCH] fix LGlyph dt tracking --- particle-track-and-trace/src/layers/LGlyphLayer.cpp | 8 ++++++-- particle-track-and-trace/src/layers/LGlyphLayer.h | 8 +++++++- particle-track-and-trace/src/main.cpp | 1 + 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/particle-track-and-trace/src/layers/LGlyphLayer.cpp b/particle-track-and-trace/src/layers/LGlyphLayer.cpp index 26a0fda..58d3442 100644 --- a/particle-track-and-trace/src/layers/LGlyphLayer.cpp +++ b/particle-track-and-trace/src/layers/LGlyphLayer.cpp @@ -139,7 +139,7 @@ void LGlyphLayer::updateData(int t) { // supersampling for (int i=0; i < SUPERSAMPLINGRATE; i++) { - std::tie(point[1], point[0]) = advector->advect(t, point[1], point[0], (t-this->lastT)/SUPERSAMPLINGRATE); + std::tie(point[1], point[0]) = advector->advect(t, point[1], point[0], this->dt/SUPERSAMPLINGRATE); } // if the particle's location remains unchanged, increase beachedFor number. Else, decrease it and update point position. @@ -153,7 +153,6 @@ void LGlyphLayer::updateData(int t) { } } if (modifiedData) this->points->Modified(); - this->lastT = t; } void LGlyphLayer::addObservers(vtkSmartPointer interactor) { @@ -162,3 +161,8 @@ void LGlyphLayer::addObservers(vtkSmartPointer intera interactor->AddObserver(vtkCommand::LeftButtonReleaseEvent, newPointCallBack); interactor->AddObserver(vtkCommand::MouseMoveEvent, newPointCallBack); } + + +void LGlyphLayer::setDt(int dt) { + this->dt = dt; +} diff --git a/particle-track-and-trace/src/layers/LGlyphLayer.h b/particle-track-and-trace/src/layers/LGlyphLayer.h index 08c5358..16af044 100644 --- a/particle-track-and-trace/src/layers/LGlyphLayer.h +++ b/particle-track-and-trace/src/layers/LGlyphLayer.h @@ -17,7 +17,7 @@ private: vtkSmartPointer particlesBeached; std::unique_ptr advector; std::shared_ptr uvGrid; - int lastT = 1000; + int dt = 3600; int beachedAtNumberOfTimes = 20; public: @@ -39,6 +39,12 @@ public: vtkSmartPointer createSpawnPointCallback(); void addObservers(vtkSmartPointer interactor) override; + + + /** + * Sets a custom DT value, needed for advect calls to the simulation logic. + */ + void setDt(int dt); }; #endif diff --git a/particle-track-and-trace/src/main.cpp b/particle-track-and-trace/src/main.cpp index 131755c..e48d5e9 100644 --- a/particle-track-and-trace/src/main.cpp +++ b/particle-track-and-trace/src/main.cpp @@ -30,6 +30,7 @@ int main() { auto l = new LGlyphLayer(uvGrid, std::move(kernelRK4BoundaryChecked)); l->spoofPoints(); + l->setDt(DT); unique_ptr program = make_unique(DT); program->addLayer(new BackgroundImage("../../../../data/map_661-661.png"));