From a6d73e49cd17f1c55d4d4718c89df74ef0a03b41 Mon Sep 17 00:00:00 2001 From: "Claudius \"keldu\" Holeksa" Date: Wed, 2 Jul 2025 14:36:33 +0200 Subject: Moving to global equilibrium with proper types and introducing poiseulle Slowly though --- c++/lbm.hpp | 1 + examples/cavity_2d.cpp | 19 ++++++++++--------- examples/poiseulle_2d.cpp | 13 +++++++++++++ 3 files changed, 24 insertions(+), 9 deletions(-) diff --git a/c++/lbm.hpp b/c++/lbm.hpp index 3f46776..d331c6a 100644 --- a/c++/lbm.hpp +++ b/c++/lbm.hpp @@ -4,6 +4,7 @@ #include "converter.hpp" #include "config.hpp" #include "component.hpp" +#include "equilibrium.hpp" #include "write_vtk.hpp" #include diff --git a/examples/cavity_2d.cpp b/examples/cavity_2d.cpp index 6332bcf..c4a86d5 100644 --- a/examples/cavity_2d.cpp +++ b/examples/cavity_2d.cpp @@ -52,6 +52,7 @@ using MacroStruct = Struct< >; using CavityFieldD2Q9 = CellField>; +} /* @@ -149,10 +150,10 @@ void set_geometry(saw::data& latt){ void set_initial_conditions(saw::data& latt){ using namespace kel::lbm; - typename saw::native_data_type::type rho = 1.0; + saw::data rho{1.0}; { - std::array::type, sch::D2Q9::D> vel = {0.0, 0.0}; - auto eq = equilibrium(rho, vel); + saw::data> vel{{0.0,0.0}}; + auto eq = equilibrium(rho, vel); apply_for_cells([&eq](auto& cell, std::size_t i, std::size_t j){ (void) i; @@ -161,15 +162,15 @@ void set_initial_conditions(saw::data& latt){ auto& dfs_old = cell.template get<"dfs_old">(); auto info = cell.template get<"info">()(0u).get(); for(uint64_t k = 0; k < sch::D2Q9::Q; ++k){ - dfs(k).set(eq[k]); - dfs_old(k).set(eq[k]); + dfs(k) = eq.at({k}); + dfs_old(k) = eq.at({k}); } }, latt); } { - std::array::type, sch::D2Q9::D> vel = {0.1, 0.0}; - auto eq = equilibrium(rho, vel); + saw::data> vel{{0.1,0.0}}; + auto eq = equilibrium(rho, vel); apply_for_cells([&eq](auto& cell, std::size_t i, std::size_t j){ (void) i; @@ -179,8 +180,8 @@ void set_initial_conditions(saw::data& latt){ auto info = cell.template get<"info">()(0u).get(); if(info == 2u){ for(uint64_t k = 0; k < sch::D2Q9::Q; ++k){ - dfs(k).set(eq[k]); - dfs_old(k).set(eq[k]); + dfs(k) = eq.at({k}); + dfs_old(k) = eq.at({k}); } } }, latt); diff --git a/examples/poiseulle_2d.cpp b/examples/poiseulle_2d.cpp index 2f60ffd..a0f2603 100644 --- a/examples/poiseulle_2d.cpp +++ b/examples/poiseulle_2d.cpp @@ -126,5 +126,18 @@ int main(int argc, char** argv){ saw::data> dim{{1024, 128}}; saw::data lattice{dim}; + saw::data,sch::D2Q9::D>> macros{dim}; + + for(uint64_t i = 0u; i < 256u; ++i){ + + { + std::string vtk_f_name{"tmp/poiseulle_2d_"}; + vtk_f_name += std::to_string(i) + ".vtk"; + write_vtk_file(vtk_f_name, macros); + } + + lbm_step(lattice, even_step, step); + } + return 0; } -- cgit v1.2.3