diff options
Diffstat (limited to 'examples/poiseulle_particles_2d_gpu/sim.cpp')
| -rw-r--r-- | examples/poiseulle_particles_2d_gpu/sim.cpp | 41 |
1 files changed, 24 insertions, 17 deletions
diff --git a/examples/poiseulle_particles_2d_gpu/sim.cpp b/examples/poiseulle_particles_2d_gpu/sim.cpp index 865babf..fd6cdca 100644 --- a/examples/poiseulle_particles_2d_gpu/sim.cpp +++ b/examples/poiseulle_particles_2d_gpu/sim.cpp @@ -22,18 +22,11 @@ using LbmArgs = Args< } template<typename T, typename Desc, typename Coll> -saw::error_or<void> lbm_main(int argc, char** argv){ +saw::error_or<void> lbm_main(const saw::data<args::LbmArgs>& args){ using namespace kel::lbm; using dfi = df_info<T,Desc>; - auto eo_args = saw::parse_args<args::LbmArgs>(argc,argv); - if(eo_args.is_error()){ - return std::move(eo_args.get_error()); - } - auto& args = eo_args.get_value(); - (void)args; - auto eo_lbm_dir = output_directory(); if(eo_lbm_dir.is_error()){ return std::move(eo_lbm_dir.get_error()); @@ -88,7 +81,7 @@ saw::error_or<void> lbm_main(int argc, char** argv){ sycl_q.wait(); { - auto eov = setup_initial_conditions<T,Desc>(conv,*lbm_data_ptr,*lbm_macro_data_ptr,*lbm_particle_data_ptr); + auto eov = init<T,Desc,Coll>(conv,*lbm_data_ptr,*lbm_macro_data_ptr,*lbm_particle_data_ptr); if(eov.is_error()){ return eov; } @@ -118,26 +111,25 @@ saw::error_or<void> lbm_main(int argc, char** argv){ } } 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<sch::UInt64> time_steps{16u*4096ul}; + saw::data<sch::UInt64> time_steps{64u*1024ul}; auto& info_f = lsd_view.template get<"info">(); for(saw::data<sch::UInt64> i{0u}; i < time_steps and krun; ++i){ // BC + Collision { - auto eov = step<T,Desc>(conv,lsd_view,lsdm_view,lsdp_view,i,dev); + auto eov = step<T,Desc,Coll>(conv,lsd_view,lsdm_view,lsdp_view,i,dev); if(eov.is_error()){ return eov; } } sycl_q.wait(); - if(i.get() % 32u == 0u){ + if(i.get() % 64u == 0u){ { auto eov = dev.copy_to_host(lbm_sycl_macro_data,*lbm_macro_data_ptr); if(eov.is_error()){ @@ -195,17 +187,32 @@ saw::error_or<void> lbm_main(int argc, char** argv){ return saw::make_void(); } - using FloatT = kel::lbm::sch::Float32; +using DescT = kel::lbm::sch::D2Q9; -saw::error_or<void> kmain(int argc, char** argv){ +saw::error_or<void> k_main(int argc, char** argv){ using namespace kel::lbm; + + saw::data<args::LbmArgs> args; + { + auto eov = saw::parse_args(args,argc,argv); + return eov; + } + auto& an = args.template get<"args">(); + auto& coupling = an.template get<"coupling">(); - // auto eo_args = saw::parse_args< + if(coupling.stl_view() == "hlbm"){ + return lbm_main<FloatT,DescT,method::Hlbm>(args); + //}else if(coupling.view() == "psm"){ + // return kmain<FloatT,DescT,coupling::Psm>(args); + } + + return saw::make_error<saw::err::critical>("Invalid coupling"); } + int main(int argc, char** argv){ - auto eov = lbm_main<FloatT,kel::lbm::sch::D2Q9, >(argc, argv); + auto eov = k_main(argc, argv); if(eov.is_error()){ auto& err = eov.get_error(); std::cerr<<"[Error] "<<err.get_category(); |
