diff options
author | Claudius "keldu" Holeksa <mail@keldu.de> | 2025-07-04 14:33:54 +0200 |
---|---|---|
committer | Claudius "keldu" Holeksa <mail@keldu.de> | 2025-07-04 14:33:54 +0200 |
commit | 96123e1331eabbfb0f5104857035df42096c7548 (patch) | |
tree | 2ba2d09a24effc5f2bbcbec9b920a43b1c2283ff | |
parent | 1698e94edbfd90c178ca65a7d21679c390194e77 (diff) |
Improved geometry configuration setting
-rw-r--r-- | c++/iterator.hpp | 6 | ||||
-rw-r--r-- | c++/term_renderer.hpp | 1 | ||||
-rw-r--r-- | examples/poiseulle_2d.cpp | 31 | ||||
-rw-r--r-- | 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<typename Func> -void iterate_over(Func&& func, const saw::data<sch::FixedArray<sch::UInt64,2u>>& start, const saw::data<sch::FixedArray<sch::UInt64,2u>>& end, const saw::data<sch::UInt64>& dist = {0u}){ +void iterate_over(Func&& func, const saw::data<sch::FixedArray<sch::UInt64,2u>>& start, const saw::data<sch::FixedArray<sch::UInt64,2u>>& end, const saw::data<sch::FixedArray<sch::UInt64,2u>>& dist = {{{0u,0u}}}){ // static_assert(D == 2u, "Currently a lazy implementation for AND combinations of intervalls."); - for(saw::data<sch::UInt64> i{start.at({0u}) + dist}; (i+dist) < end.at({0u}); ++i){ - for(saw::data<sch::UInt64> j{start.at({0u}) + dist}; (j+dist) < end.at({1u}); ++j){ + for(saw::data<sch::UInt64> i{start.at({0u}) + dist.at({0u})}; (i+dist.at({0u})) < end.at({0u}); ++i){ + for(saw::data<sch::UInt64> 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<kel::lbm::sch::CavityFieldD2Q9>& 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<kel::lbm::sch::CavityFieldD2Q9>& 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<kel::lbm::sch::CavityFieldD2Q9>& 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<kel::lbm::sch::CavityFieldD2Q9>& 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<kel::lbm::sch::CavityFieldD2Q9>& latt){ @@ -141,16 +141,35 @@ int main(int argc, char** argv){ auto& conf = eo_conf.get_value(); - converter<sch::Float64> conv{ + converter<sch::Float64> conv { {conf.template get<"delta_x">()}, {conf.template get<"delta_t">()} }; print_lbm_meta<sch::Float64,sch::Descriptor<2u,9u>>(conv, {conf.template get<"kinematic_viscosity">()}); - saw::data<sch::FixedArray<sch::UInt64,sch::D2Q9::D>> dim{{1024, 128}}; + saw::data<sch::FixedArray<sch::UInt64,sch::D2Q9::D>> dim{{32u, 8u}}; saw::data<sch::CavityFieldD2Q9, saw::encode::Native> lattice{dim}; + set_geometry(lattice); + + /** + * Print basic setup info + */ + iterate_over([&](const saw::data<sch::FixedArray<sch::UInt64,2u>>& index){ + auto& cell = lattice(index); + auto& info = cell.template get<"info">(); + auto info_v = info({0u}).get(); + std::cout<<(static_cast<uint32_t>(info_v)); + + if( (index.at({1u}).get()+1u) < dim.at({1u}).get()){ + std::cout<<" "; + }else{ + std::cout<<"\n"; + } + + }, {{0u,0u}}, dim); + saw::data<sch::Array<sch::MacroStruct<sch::T,sch::D2Q9::D>,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<sch::FixedArray<sch::UInt64,2u>>& index){ std::cout<<"Index: "<<index.at({0u}).get()<<" "<<index.at({1u}).get()<<std::endl; - }, start, end, {1u}); + }, start, end, {{1u,1u}}); } } |