summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClaudius "keldu" Holeksa <mail@keldu.de>2025-07-02 14:36:33 +0200
committerClaudius "keldu" Holeksa <mail@keldu.de>2025-07-02 14:36:33 +0200
commita6d73e49cd17f1c55d4d4718c89df74ef0a03b41 (patch)
tree432f2bf1aca23dc69d971c77411084744ace8448
parent5be771eb356263bf43c57056eba77df7235c78f4 (diff)
Moving to global equilibrium with proper types and introducing poiseulle
Slowly though
-rw-r--r--c++/lbm.hpp1
-rw-r--r--examples/cavity_2d.cpp19
-rw-r--r--examples/poiseulle_2d.cpp13
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;
}