From 4a291705f46086d5adcf68de6d6d1441c4b9e4f9 Mon Sep 17 00:00:00 2001 From: "Claudius \"keldu\" Holeksa" Date: Thu, 8 May 2025 14:37:06 +0200 Subject: Built a working vtk file writer. Would prefer a lambda writer tbh --- c++/macroscopic.hpp | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) (limited to 'c++/macroscopic.hpp') diff --git a/c++/macroscopic.hpp b/c++/macroscopic.hpp index 43c727b..e126bbe 100644 --- a/c++/macroscopic.hpp +++ b/c++/macroscopic.hpp @@ -9,7 +9,7 @@ namespace lbm { */ template void compute_rho_u ( - saw::data>& dfs, + const saw::data>& dfs, typename saw::native_data_type::type& rho, std::array::type, 2>& vel ) @@ -30,5 +30,34 @@ void compute_rho_u ( vel[i] /= rho; } } + +/** + * Calculate the macroscopic variables rho and u in Lattice Units. + */ +template +void compute_rho_u ( + const saw::data>& dfs, + saw::ref> rho, + saw::ref>> vel + ) +{ + using dfi = df_info; + + rho().set(0); + for(uint64_t i = 0; i < Desc::D; ++i){ + vel().at({i}).set(0); + } + + for(size_t j = 0; j < Desc::Q; ++j){ + rho = rho + dfs(j); + for(size_t i = 0; i < Desc::D; ++i){ + vel[i] = vel[i] + saw::data{dfi::directions[j][i]} * dfs(j); + } + } + + for(size_t i = 0; i < Desc::D; ++i){ + vel[i] = vel[i] / rho; + } +} } } -- cgit v1.2.3