diff options
author | Claudius "keldu" Holeksa <mail@keldu.de> | 2025-07-02 14:36:33 +0200 |
---|---|---|
committer | Claudius "keldu" Holeksa <mail@keldu.de> | 2025-07-02 14:36:33 +0200 |
commit | a6d73e49cd17f1c55d4d4718c89df74ef0a03b41 (patch) | |
tree | 432f2bf1aca23dc69d971c77411084744ace8448 | |
parent | 5be771eb356263bf43c57056eba77df7235c78f4 (diff) |
Moving to global equilibrium with proper types and introducing poiseulle
Slowly though
-rw-r--r-- | c++/lbm.hpp | 1 | ||||
-rw-r--r-- | examples/cavity_2d.cpp | 19 | ||||
-rw-r--r-- | 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 <forstio/codec/unit/unit_print.hpp> 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<D2Q9, CellStruct<D2Q9>>; +} /* @@ -149,10 +150,10 @@ void set_geometry(saw::data<kel::lbm::sch::CavityFieldD2Q9>& latt){ void set_initial_conditions(saw::data<kel::lbm::sch::CavityFieldD2Q9>& latt){ using namespace kel::lbm; - typename saw::native_data_type<sch::T>::type rho = 1.0; + saw::data<sch::T> rho{1.0}; { - std::array<typename saw::native_data_type<sch::T>::type, sch::D2Q9::D> vel = {0.0, 0.0}; - auto eq = equilibrium<sch::D2Q9>(rho, vel); + saw::data<sch::FixedArray<sch::T,sch::D2Q9::D>> vel{{0.0,0.0}}; + auto eq = equilibrium<sch::T,sch::D2Q9>(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<kel::lbm::sch::CavityFieldD2Q9>& 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<typename saw::native_data_type<sch::T>::type, sch::D2Q9::D> vel = {0.1, 0.0}; - auto eq = equilibrium<sch::D2Q9>(rho, vel); + saw::data<sch::FixedArray<sch::T,sch::D2Q9::D>> vel{{0.1,0.0}}; + auto eq = equilibrium<sch::T,sch::D2Q9>(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<kel::lbm::sch::CavityFieldD2Q9>& 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<sch::FixedArray<sch::UInt64,sch::D2Q9::D>> dim{{1024, 128}}; saw::data<sch::CavityFieldD2Q9, saw::encode::Native> lattice{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){ + + { + 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; } |