diff options
| author | Claudius "keldu" Holeksa <mail@keldu.de> | 2026-02-09 16:49:12 +0100 |
|---|---|---|
| committer | Claudius "keldu" Holeksa <mail@keldu.de> | 2026-02-09 16:49:12 +0100 |
| commit | 5fee9c698f5f1ebe6ef8bf07f5a75e04dab92681 (patch) | |
| tree | 8c3adef346837c54fa2618e276708e4a8b3bea4d /examples/poiseulle_particles_2d_gpu/sim.cpp | |
| parent | 08d1d887e47ddbd61236c36193b3ef304e69fc0b (diff) | |
| download | libs-lbm-5fee9c698f5f1ebe6ef8bf07f5a75e04dab92681.tar.gz | |
Add rar as dep and implement collision
Diffstat (limited to 'examples/poiseulle_particles_2d_gpu/sim.cpp')
| -rw-r--r-- | examples/poiseulle_particles_2d_gpu/sim.cpp | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/examples/poiseulle_particles_2d_gpu/sim.cpp b/examples/poiseulle_particles_2d_gpu/sim.cpp index d14be91..42d8413 100644 --- a/examples/poiseulle_particles_2d_gpu/sim.cpp +++ b/examples/poiseulle_particles_2d_gpu/sim.cpp @@ -1,6 +1,7 @@ #include <kel/lbm/sycl/lbm.hpp> #include <kel/lbm/lbm.hpp> +#include <forstio/io/io.hpp> #include <forstio/remote/filesystem/easy.hpp> #include <forstio/codec/json/json.hpp> @@ -36,6 +37,9 @@ using MacroStruct = Struct< Member<VelChunk<T,Desc>, "velocity">, Member<RhoChunk<T>, "density"> >; + +// template<typename T, typename Desc> +// using Particles = Particle< } template<typename T, typename Desc> @@ -224,6 +228,22 @@ saw::error_or<void> lbm_main(int argc, char** argv){ auto lbm_data_ptr = saw::heap<saw::data<sch::ChunkStruct<T,Desc>>>(); auto lbm_macro_data_ptr = saw::heap<saw::data<sch::MacroStruct<T,Desc>>>(); + auto eo_aio = saw::setup_async_io(); + if(eo_aio.is_error()){ + return std::move(eo_aio.get_error()); + } + auto& aio = eo_aio.get_value(); + saw::wait_scope wait{aio.event_loop}; + + bool krun = true; + bool print_status = false; + aio.event_port.on_signal(saw::Signal::Terminate).then([&](){ + krun = false; + }).detach(); + aio.event_port.on_signal(saw::Signal::User1).then([&](){ + print_status = true; + }).detach(); + device dev; auto& sycl_q = dev.get_handle(); @@ -256,7 +276,7 @@ saw::error_or<void> lbm_main(int argc, char** argv){ sycl_q.wait(); saw::data<sch::UInt64> time_steps{4096ul}; - for(saw::data<sch::UInt64> i{0u}; i < time_steps; ++i){ + for(saw::data<sch::UInt64> i{0u}; i < time_steps and krun; ++i){ { std::string file_name = "tmp/t_"; file_name += std::to_string(i.get()); @@ -293,6 +313,12 @@ saw::error_or<void> lbm_main(int argc, char** argv){ return eov; } } + + wait.poll(); + if(print_status){ + std::cout<<"Status: "<<i.get()<<" of "<<time_steps.get()<<" - "<<(i.template cast_to<sch::Float64>().get() * 100 / time_steps.get())<<"%"<<std::endl; + print_status = false; + } } sycl_q.wait(); { |
