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 /examples | |
parent | 5be771eb356263bf43c57056eba77df7235c78f4 (diff) |
Moving to global equilibrium with proper types and introducing poiseulle
Slowly though
Diffstat (limited to 'examples')
-rw-r--r-- | examples/cavity_2d.cpp | 19 | ||||
-rw-r--r-- | examples/poiseulle_2d.cpp | 13 |
2 files changed, 23 insertions, 9 deletions
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; } |