From e6168bb3f656ebab9b63be697c79819b08fc1ae0 Mon Sep 17 00:00:00 2001 From: "Claudius \"keldu\" Holeksa" Date: Sat, 22 Aug 2026 22:24:12 +0200 Subject: Moved folde --- examples/one_particle_sedimentation/sim.cpp | 238 ---------------------------- 1 file changed, 238 deletions(-) delete mode 100644 examples/one_particle_sedimentation/sim.cpp (limited to 'examples/one_particle_sedimentation/sim.cpp') diff --git a/examples/one_particle_sedimentation/sim.cpp b/examples/one_particle_sedimentation/sim.cpp deleted file mode 100644 index b3422a5..0000000 --- a/examples/one_particle_sedimentation/sim.cpp +++ /dev/null @@ -1,238 +0,0 @@ -#include "common.hpp" -#include "init.hpp" -#include "step.hpp" - -#include - -/** - * For deciding what parameters to use maybe? - */ -namespace args { -using namespace saw::schema; - -using LbmArgsStruct = Struct< - Member ->; - -using LbmArgs = Args< - LbmArgsStruct, - Tuple<> ->; -} - -template -saw::error_or lbm_main(const saw::data& args){ - using namespace kel::lbm; - - auto& an = args.template get<"args">(); - - using dfi = df_info; - - auto eo_lbm_dir = output_directory(); - if(eo_lbm_dir.is_error()){ - return std::move(eo_lbm_dir.get_error()); - } - auto& lbm_dir = eo_lbm_dir.get_value(); - - auto out_dir = lbm_dir / "stdkr_2d_gpu" / an.template get<"coupling">().stl_view(); - - { - std::error_code ec; - std::filesystem::create_directories(out_dir,ec); - if(ec != std::errc{}){ - return saw::make_error("Could not create output directory"); - } - } - - converter conv { - // delta_x - {{0.41 / dim_y}}, - // delta_t - {{1.067e-4}} - }; - - print_lbm_meta(conv,{1e-3},{1e-4},{0.5 * dim_y}); - - // saw::data> meta{{dim_x,dim_y}}; - auto lbm_data_ptr = saw::heap>>(); - auto lbm_macro_data_ptr = saw::heap>>(); - auto lbm_particle_data_ptr = saw::heap>>(); - - std::cout<<"Estimated Bytes: "<,sch::MacroStruct>().get()<(conv,*lbm_data_ptr,*lbm_macro_data_ptr,*lbm_particle_data_ptr); - if(eov.is_error()){ - return eov; - } - } - { - auto eov = write_vtk_file(out_dir,"initial_state",0u,*lbm_data_ptr); - if(eov.is_error()){ - return eov; - } - } - - saw::data, encode::Sycl> lbm_sycl_data{sycl_q}; - saw::data, encode::Sycl> lbm_sycl_macro_data{sycl_q}; - saw::data, encode::Sycl> lbm_sycl_particle_data{sycl_q}; - sycl_q.wait(); - - { - auto eov = dev.copy_to_device(*lbm_data_ptr,lbm_sycl_data); - if(eov.is_error()){ - return eov; - } - } - { - auto eov = dev.copy_to_device(*lbm_macro_data_ptr,lbm_sycl_macro_data); - if(eov.is_error()){ - return eov; - } - } - { - auto eov = dev.copy_to_device(*lbm_particle_data_ptr,lbm_sycl_particle_data); - if(eov.is_error()){ - return eov; - } - } - sycl_q.wait(); - auto lsd_view = make_view(lbm_sycl_data); - auto lsdm_view = make_view(lbm_sycl_macro_data); - auto lsdp_view = make_view(lbm_sycl_particle_data); - - saw::data time_steps{64u*1024ul}; - - auto& info_f = lsd_view.template get<"info">(); - - for(saw::data i{0u}; i < time_steps and krun; ++i){ - // BC + Collision - { - auto eov = step(conv,lsd_view,lsdm_view,lsdp_view,i,dev); - if(eov.is_error()){ - return eov; - } - } - - sycl_q.wait(); - if(i.get() % 64u == 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,"stdkr_2d",i.get(), *lbm_macro_data_ptr); - if(eov.is_error()){ - return eov; - } - } - } - // Stream - sycl_q.submit([&](acpp::sycl::handler& h){ - component> stream; - - h.parallel_for(acpp::sycl::range{dim_x,dim_y}, [=](acpp::sycl::id idx){ - saw::data> index; - for(uint64_t i = 0u; i < Desc::D; ++i){ - index.at({{i}}).set(idx[i]); - } - - auto info = info_f.at(index).get(); - - if(info > 0u){ - stream.apply(lsd_view,index,i); - } - }); - }).wait(); - wait.poll(); - - if(print_status){ - std::cout<<"Status: "<().get() * 100 / time_steps.get())<<"%"<().stl_string(),time_steps.get(), *lbm_macro_data_ptr); - if(eov.is_error()){ - return eov; - } - } - - sycl_q.wait(); - return saw::make_void(); -} - -using FloatT = kel::lbm::sch::Float32; -using DescT = kel::lbm::sch::D2Q9; - -saw::error_or k_main(int argc, char** argv){ - using namespace kel::lbm; - - saw::data args; - { - auto eov = saw::parse_args(args,argc,argv); - if(eov.is_error()){ - return eov; - } - } - auto& an = args.template get<"args">(); - auto& coupling = an.template get<"coupling">(); - - if(coupling.stl_view() == "hlbm"){ - return lbm_main(args); - } else if(coupling.stl_view() == "fplbm"){ - return lbm_main(args); - } else if(coupling.stl_view() == "psm"){ - return lbm_main(args); - } - - return saw::make_error("Invalid coupling"); -} - - -int main(int argc, char** argv){ - auto eov = k_main(argc, argv); - if(eov.is_error()){ - auto& err = eov.get_error(); - std::cerr<<"[Error] "< 0u){ - std::cerr<<" - "<