summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClaudius "keldu" Holeksa <mail@keldu.de>2026-07-25 23:17:18 +0200
committerClaudius "keldu" Holeksa <mail@keldu.de>2026-07-25 23:17:18 +0200
commit530bd236a0aee9c22b87de236164c59afe6adae7 (patch)
tree61c5400577b487f97da7a831dbdbd3a8b430c7d5
parent3bc151904b7388bcd578f3b81fadd69399932900 (diff)
downloadlibs-lbm-530bd236a0aee9c22b87de236164c59afe6adae7.tar.gz
dangling
-rw-r--r--examples/poiseulle_particles_2d_gpu/sim.cpp29
-rw-r--r--modules/core/c++/hlbm.hpp3
2 files changed, 21 insertions, 11 deletions
diff --git a/examples/poiseulle_particles_2d_gpu/sim.cpp b/examples/poiseulle_particles_2d_gpu/sim.cpp
index 865babf..bb5787f 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<sch::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());
@@ -198,14 +191,28 @@ saw::error_or<void> lbm_main(int argc, char** argv){
using FloatT = kel::lbm::sch::Float32;
-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<sch::LbmArgsStruct> args;
+ {
+ auto eov = saw::parse_args(args,argc,argv);
+ return eov;
+ }
+ auto& an = args.template get<"args">();
+ auto& coupling = an.template get<"coupling">();
+
+ if(coupling.view() == "hlbm"){
+ return lbm_main<T,Desc,method::Hlbm>(args);
+ //}else if(coupling.view() == "psm"){
+ // return kmain<T,Desc,coupling::Psm>(args);
+ }
- // auto eo_args = saw::parse_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<FloatT,kel::lbm::sch::D2Q9>(argc, argv);
if(eov.is_error()){
auto& err = eov.get_error();
std::cerr<<"[Error] "<<err.get_category();
diff --git a/modules/core/c++/hlbm.hpp b/modules/core/c++/hlbm.hpp
index bb21ae5..fc19728 100644
--- a/modules/core/c++/hlbm.hpp
+++ b/modules/core/c++/hlbm.hpp
@@ -17,6 +17,9 @@ struct HlbmOneParticle {};
struct HlbmParticle {};
struct HlbmOneParticleMomentumExchange {};
}
+namespace method {
+struct Hlbm {};
+}
template<typename T, typename Descriptor, typename Encode>
class component<T, Descriptor, cmpt::HlbmReset, Encode> final {