From 2ac145b3bb6d2de3887ab08e0cf26423b5e6c5ee Mon Sep 17 00:00:00 2001 From: "Claudius \"keldu\" Holeksa" Date: Wed, 25 Feb 2026 20:33:36 +0100 Subject: Changes to run, reworking meta reporting for easier estimation of runtime parameters --- examples/meta/meta.cpp | 96 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 examples/meta/meta.cpp (limited to 'examples/meta/meta.cpp') diff --git a/examples/meta/meta.cpp b/examples/meta/meta.cpp new file mode 100644 index 0000000..5d3aaa4 --- /dev/null +++ b/examples/meta/meta.cpp @@ -0,0 +1,96 @@ +#include + +#include + +namespace sch { +using namespace saw::schema; + +using MetaArgsStruct = Struct< + Member, + Member, + Member, + Member, + Member +>; + +using MetaArgs = Args< + MetaArgsStruct, + Tuple +>; +} + +template< + +saw::error_or meta_main(int argc, char** argv){ + using namespace kel::lbm; + + std::string_view cfg_file_name = "config.json"; + if(argc > 1){ + cfg_file_name = argv[1]; + } + + saw::data args_dat; + { + saw::data args_enc{argc,argv}; + saw::codec args_codec; + + auto eov = args_codec.decode(args_enc,args_dat); + if(eov.is_error()){ + return eov; + } + + auto& args_str = args_dat.template get<"args">(); + auto& args_pos = args_dat.template get<"positionals">(); + + converter conv{ + {args_str.template get<"delta_x">()}, + {args_str.template get<"delta_t">()} + }; + + switch(args_pos.get<0u>().get()){ + case 1u: + { + } + break; + case 2u: + { + switch(args_pos.get<1u>().get()){ + case 5u: + break; + case 9u: + break; + default: + return saw::make_error("Second positional needs to be a valid velocity set"); + } + } + break; + case 3u: + { + + } + break; + default: + return saw::make_error("First positional needs to be Dimension 1,2 or 3"); + } + print_lbm_meta>(conv, {args_str.template get<"kinematic_viscosity">()},{args_str.template get<"char_vel">()},{args_str.template get<"char_len">()}); + + return saw::make_void(); +} + +int main(int argc, char** argv){ + auto eov = meta_main(argc,argv); + if(eov.is_error()){ + auto& err = eov.get_error(); + + std::cerr<<"[Error]: "<