summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClaudius "keldu" Holeksa <mail@keldu.de>2026-07-05 00:04:16 +0200
committerClaudius "keldu" Holeksa <mail@keldu.de>2026-07-05 00:04:16 +0200
commit52326efc80dfeae6e830527df2e7803ecf61b00a (patch)
treef1dee71024c65ebeb1431f6e1b08d7e62383e971
parenta31a302fb9fdf28b105eea55d98d2164dbeb7357 (diff)
parent4476303fae9dfe44b1b0aee35a1978f9c885ff1d (diff)
downloadlibs-lbm-52326efc80dfeae6e830527df2e7803ecf61b00a.tar.gz
Merge branch 'dev'
-rw-r--r--examples/stokes_drag_particle_2d_hlbm_gpu/sim.cpp21
-rw-r--r--vtk_to_png.py75
2 files changed, 6 insertions, 90 deletions
diff --git a/examples/stokes_drag_particle_2d_hlbm_gpu/sim.cpp b/examples/stokes_drag_particle_2d_hlbm_gpu/sim.cpp
index 18b5258..a919bbe 100644
--- a/examples/stokes_drag_particle_2d_hlbm_gpu/sim.cpp
+++ b/examples/stokes_drag_particle_2d_hlbm_gpu/sim.cpp
@@ -377,20 +377,6 @@ saw::error_or<void> lbm_main(int argc, char** argv){
}
}
sycl_q.wait();
- if(i.get() % 32u == 0u){
- {
- auto eov = dev.copy_to_host(lbm_sycl_macro_data,*lbm_macro_data_ptr);
- if(eov.is_error()){
- return eov;
- }
- }
- {
- auto eov = write_csv_file(out_dir,"m",i.get(), *lbm_macro_data_ptr);
- if(eov.is_error()){
- return eov;
- }
- }
- }
// Stream
sycl_q.submit([&](acpp::sycl::handler& h){
component<T,Desc,cmpt::Stream,encode::Sycl<saw::encode::Native>> stream;
@@ -430,7 +416,12 @@ saw::error_or<void> lbm_main(int argc, char** argv){
return eov;
}
}
-
+ {
+ auto eov = write_csv_file(out_dir,"m",time_steps.get(), *lbm_macro_data_ptr);
+ if(eov.is_error()){
+ return eov;
+ }
+ }
sycl_q.wait();
return saw::make_void();
}
diff --git a/vtk_to_png.py b/vtk_to_png.py
deleted file mode 100644
index 9c3f4f3..0000000
--- a/vtk_to_png.py
+++ /dev/null
@@ -1,75 +0,0 @@
-import vtk
-import glob
-import os
-
-vtk_files = sorted(glob.glob("*.vtk"))
-output_dir = "frames"
-os.makedirs(output_dir, exist_ok=True)
-
-renderer = vtk.vtkRenderer()
-render_window = vtk.vtkRenderWindow()
-render_window.SetOffScreenRendering(1)
-render_window.SetSize(1024, 512)
-render_window.AddRenderer(renderer)
-
-renderer.SetBackground(1, 1, 1)
-
-camera_initialized = False
-
-for i, vtk_file in enumerate(vtk_files):
- reader = vtk.vtkStructuredPointsReader()
- reader.SetFileName(vtk_file)
- reader.Update()
-
- image = reader.GetOutput()
-
- mag = vtk.vtkImageMagnitude();
- mag.SetInputData(image);
- mag.Update();
- image = mag.GetOutput();
- scalar_name = "Velocity magnitude";
-
- scalars = image.GetPointData().GetScalars()
- if scalars is None:
- raise RuntimeError("No scalar data found")
-
- vmin, vmax = scalars.GetRange()
-
- # Image slice mapper (2D!)
- slice_mapper = vtk.vtkImageSliceMapper()
- slice_mapper.SetInputData(image)
-
- # Pick the only slice (or middle if dimension >1)
- extent = image.GetExtent()
- slice_mapper.SetSliceNumber(extent[4]) # Z slice
-
- slice_actor = vtk.vtkImageSlice()
- slice_actor.SetMapper(slice_mapper)
-
- # Grayscale mapping
- prop = slice_actor.GetProperty()
- prop.SetColorWindow(vmax - vmin)
- prop.SetColorLevel(0.5 * (vmax + vmin))
-
- renderer.RemoveAllViewProps()
- renderer.AddViewProp(slice_actor)
-
- if not camera_initialized:
- renderer.ResetCamera()
- camera_initialized = True
-
- render_window.Render()
-
- # Capture to PNG
- w2i = vtk.vtkWindowToImageFilter()
- w2i.SetInput(render_window)
- w2i.ReadFrontBufferOff()
- w2i.Update()
-
- writer = vtk.vtkPNGWriter()
- writer.SetFileName(f"{output_dir}/frame_{i:04d}.png")
- writer.SetInputConnection(w2i.GetOutputPort())
- writer.Write()
-
- print(f"Saved frame {i} range=({vmin},{vmax})")
-