From 8b03561640fbb9d4e1aea742c3a59c9d7766fec7 Mon Sep 17 00:00:00 2001 From: "Claudius \"keldu\" Holeksa" Date: Fri, 20 Feb 2026 18:46:10 +0100 Subject: PSM and HLBM work :) --- lib/core/c++/psm.hpp | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) (limited to 'lib') diff --git a/lib/core/c++/psm.hpp b/lib/core/c++/psm.hpp index 74ba58e..3bd3520 100644 --- a/lib/core/c++/psm.hpp +++ b/lib/core/c++/psm.hpp @@ -14,17 +14,18 @@ struct PSM {}; * PSM collision operator for LBM */ template -class component { +class component { private: - saw::data> relaxation_; - saw::data> frequency_; + saw::data relaxation_; + saw::data frequency_; public: component( typename saw::native_data_type::type relaxation__ ): relaxation_{relaxation__} { - saw::data> one; + saw::data one; + one = 1.0; frequency_ = one / relaxation_; } @@ -35,7 +36,7 @@ public: bool is_even = ((time_step.get() % 2) == 0); auto& dfs_old_f = (is_even) ? field.template get<"dfs_old">() : field.template get<"dfs">(); - auto& porous = field.template get<"porosity">(); + auto& porous_f = macros.template get<"porosity">(); auto& rho_f = macros.template get<"density">(); auto& vel_f = macros.template get<"velocity">(); @@ -47,9 +48,9 @@ public: auto eq = equilibrium(rho,vel); - saw::data> one; - one.at({}) = 1.0; - auto flip_porous = one - porous; + saw::data one{1.0}; + auto& porous = porous_f.at(index); + auto flip_porous = one - porous.at({}); auto& dfs = dfs_old_f.at(index); @@ -57,7 +58,7 @@ public: for(uint64_t i = 0u; i < Descriptor::Q; ++i){ uint64_t i_opp = dfi::opposite_index[i]; - dfs.at({i}) = dfs_cpy.at({i}) + frequency_ * (eq.at(i) - dfs_cpy.at({i})) * flip_porous + (dfs_cpy.at({i_opp}) - dfs_cpy.at({i}) ) * porous; + dfs.at({i}) = dfs_cpy.at({i}) + frequency_ * (eq.at(i) - dfs_cpy.at({i})) * porous.at({}) + (dfs_cpy.at({i_opp}) - dfs_cpy.at({i}) ) * flip_porous; } } }; -- cgit v1.2.3