From 96123e1331eabbfb0f5104857035df42096c7548 Mon Sep 17 00:00:00 2001 From: "Claudius \"keldu\" Holeksa" Date: Fri, 4 Jul 2025 14:33:54 +0200 Subject: Improved geometry configuration setting --- c++/iterator.hpp | 6 +++--- c++/term_renderer.hpp | 1 - examples/poiseulle_2d.cpp | 31 +++++++++++++++++++++++++------ tests/iterator.cpp | 2 +- 4 files changed, 29 insertions(+), 11 deletions(-) diff --git a/c++/iterator.hpp b/c++/iterator.hpp index 01163cf..fcc50bc 100644 --- a/c++/iterator.hpp +++ b/c++/iterator.hpp @@ -5,10 +5,10 @@ namespace kel { namespace lbm { template -void iterate_over(Func&& func, const saw::data>& start, const saw::data>& end, const saw::data& dist = {0u}){ +void iterate_over(Func&& func, const saw::data>& start, const saw::data>& end, const saw::data>& dist = {{{0u,0u}}}){ // static_assert(D == 2u, "Currently a lazy implementation for AND combinations of intervalls."); - for(saw::data i{start.at({0u}) + dist}; (i+dist) < end.at({0u}); ++i){ - for(saw::data j{start.at({0u}) + dist}; (j+dist) < end.at({1u}); ++j){ + for(saw::data i{start.at({0u}) + dist.at({0u})}; (i+dist.at({0u})) < end.at({0u}); ++i){ + for(saw::data j{start.at({1u}) + dist.at({1u})}; (j+dist.at({1u})) < end.at({1u}); ++j){ func({{i,j}}); } } diff --git a/c++/term_renderer.hpp b/c++/term_renderer.hpp index f675a99..5cbb551 100644 --- a/c++/term_renderer.hpp +++ b/c++/term_renderer.hpp @@ -2,6 +2,5 @@ namespace kel { namespace lbm { - } } diff --git a/examples/poiseulle_2d.cpp b/examples/poiseulle_2d.cpp index 5670a3c..dcdc7c3 100644 --- a/examples/poiseulle_2d.cpp +++ b/examples/poiseulle_2d.cpp @@ -75,7 +75,7 @@ void set_geometry(saw::data& latt){ info({0u}).set(2u); - }, {{0u,0u}}, meta, {1u}); + }, {{0u,0u}}, meta, {{1u,1u}}); /** * Set fluid @@ -86,7 +86,7 @@ void set_geometry(saw::data& latt){ info({0u}).set(1u); - }, {{0u,0u}}, meta, {2u}); + }, {{0u,0u}}, meta, {{2u,2u}}); /** * Set inflow @@ -97,7 +97,7 @@ void set_geometry(saw::data& latt){ info({0u}).set(3u); - }, {{1u,0u}}, {{2u,meta.at({1u})}}, {0u}); + }, {{1u,0u}}, {{2u,meta.at({1u})}}, {{0u,2u}}); /** * Set outflow @@ -108,7 +108,7 @@ void set_geometry(saw::data& latt){ info({0u}).set(4u); - }, {{meta.at({0u})-2u,0u}}, {{meta.at({0u})-1u, meta.at({1u})}}, {0u}); + }, {{meta.at({0u})-2u,0u}}, {{meta.at({0u})-1u, meta.at({1u})}}, {{0u,2u}}); } void set_initial_conditions(saw::data& latt){ @@ -141,16 +141,35 @@ int main(int argc, char** argv){ auto& conf = eo_conf.get_value(); - converter conv{ + converter conv { {conf.template get<"delta_x">()}, {conf.template get<"delta_t">()} }; print_lbm_meta>(conv, {conf.template get<"kinematic_viscosity">()}); - saw::data> dim{{1024, 128}}; + saw::data> dim{{32u, 8u}}; saw::data lattice{dim}; + set_geometry(lattice); + + /** + * Print basic setup info + */ + iterate_over([&](const saw::data>& index){ + auto& cell = lattice(index); + auto& info = cell.template get<"info">(); + auto info_v = info({0u}).get(); + std::cout<<(static_cast(info_v)); + + if( (index.at({1u}).get()+1u) < dim.at({1u}).get()){ + std::cout<<" "; + }else{ + std::cout<<"\n"; + } + + }, {{0u,0u}}, dim); + saw::data,sch::D2Q9::D>> macros{dim}; for(uint64_t i = 0u; i < 256u; ++i){ diff --git a/tests/iterator.cpp b/tests/iterator.cpp index 85037da..cd1cb7c 100644 --- a/tests/iterator.cpp +++ b/tests/iterator.cpp @@ -28,6 +28,6 @@ SAW_TEST("Iterate with Distance 1"){ lbm::iterate_over([](const saw::data>& index){ std::cout<<"Index: "<