summaryrefslogtreecommitdiff
path: root/examples/poiseulle_particles_2d_gpu/sim.cpp
diff options
context:
space:
mode:
authorClaudius "keldu" Holeksa <mail@keldu.de>2026-07-27 21:54:03 +0200
committerClaudius "keldu" Holeksa <mail@keldu.de>2026-07-27 21:54:03 +0200
commitf8071e48dcafc4ecefcfdaece2feeebe4d7c8bf6 (patch)
treecd339b39b404fc2da389f9f8e67ec15cf2d293f8 /examples/poiseulle_particles_2d_gpu/sim.cpp
parentb6f536a44152aa93c697fbeda49500f722c9bcd5 (diff)
parenta826f7d9d4bb48565036dd665cb4c6a54622010d (diff)
downloadlibs-lbm-f8071e48dcafc4ecefcfdaece2feeebe4d7c8bf6.tar.gz
Merge branch 'dev'
Diffstat (limited to 'examples/poiseulle_particles_2d_gpu/sim.cpp')
-rw-r--r--examples/poiseulle_particles_2d_gpu/sim.cpp41
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();