summaryrefslogtreecommitdiff
path: root/lib/core/c++/macroscopic.hpp
diff options
context:
space:
mode:
authorClaudius "keldu" Holeksa <mail@keldu.de>2026-01-27 09:17:33 +0100
committerClaudius "keldu" Holeksa <mail@keldu.de>2026-01-27 09:17:33 +0100
commit624f5d8181a449f36950503859271e1a052e8a65 (patch)
tree1e7217f411099f7d0b7ad9faf357b69a13aecd0c /lib/core/c++/macroscopic.hpp
parent6d6452b24e15e6291ba5790ede485f59d4ca28b8 (diff)
downloadlibs-lbm-624f5d8181a449f36950503859271e1a052e8a65.tar.gz
Double free, but constexpr things compile now
Diffstat (limited to 'lib/core/c++/macroscopic.hpp')
-rw-r--r--lib/core/c++/macroscopic.hpp25
1 files changed, 25 insertions, 0 deletions
diff --git a/lib/core/c++/macroscopic.hpp b/lib/core/c++/macroscopic.hpp
index 51368e9..1532873 100644
--- a/lib/core/c++/macroscopic.hpp
+++ b/lib/core/c++/macroscopic.hpp
@@ -4,6 +4,31 @@
namespace kel {
namespace lbm {
+template<typename T, typename Desc>
+void compute_rho_u (
+ const saw::data<sch::FixedArray<T,Desc::Q>>& dfs,
+ saw::data<T>& rho,
+ saw::data<sch::FixedArray<T,Desc::D>>& vel
+ )
+{
+ using dfi = df_info<T, Desc>;
+
+ rho = 0;
+ for(size_t j = 0; j < Desc::D; ++j){
+ vel.at({{j}}).set(0);
+ }
+
+ for(size_t j = 0; j < Desc::Q; ++j){
+ rho = rho + dfs.at({j});
+ for(size_t i = 0; i < Desc::D; ++i){
+ vel.at({{i}}) = vel.at({{i}}) + dfi::directions[j][i] * dfs.at({j}).get();
+ }
+ }
+
+ for(size_t i = 0; i < Desc::D; ++i){
+ vel.at({i}) = vel.at({i}) / rho;
+ }
+}
/**
* Calculate the macroscopic variables rho and u in Lattice Units.
*/