From 7fd9bfd5946472230a3b74c52f88e19c15741faf Mon Sep 17 00:00:00 2001 From: "Claudius \"keldu\" Holeksa" Date: Mon, 1 Jun 2026 17:21:44 +0200 Subject: I seem to have no clue what I'm doing --- lib/core/c++/collision.hpp | 3 ++- lib/core/c++/math/n_closest.hpp | 18 ++++++++++++++---- 2 files changed, 16 insertions(+), 5 deletions(-) (limited to 'lib') diff --git a/lib/core/c++/collision.hpp b/lib/core/c++/collision.hpp index 9c76c1a..023f61f 100644 --- a/lib/core/c++/collision.hpp +++ b/lib/core/c++/collision.hpp @@ -146,7 +146,8 @@ public: saw::data> half; half.at({}).set(0.5); - saw::data> vel = vel_f.at(index) + total_force * ( half / rho ); + auto& vel = vel_f.at(index); + vel = vel + total_force * ( half / rho ); compute_rho_u(dfs_old_f.at(index),rho,vel); auto eq = equilibrium(rho,vel); diff --git a/lib/core/c++/math/n_closest.hpp b/lib/core/c++/math/n_closest.hpp index 13414e2..ac0fe2f 100644 --- a/lib/core/c++/math/n_closest.hpp +++ b/lib/core/c++/math/n_closest.hpp @@ -7,7 +7,7 @@ namespace kel { namespace lbm { template -saw::data n_closest_read(const saw::data,Encode>& f, const saw::data>& frac_ind){ +saw::data n_closest_read(const saw::data,Encode>& f, const saw::data>& frac_ind){ auto shift_frac_ind = frac_ind; for(uint64_t i{0u}; i < D; ++i){ @@ -18,13 +18,16 @@ saw::data n_closest_read(const saw::data } } - auto shift_ind = frac_ind.template cast_to(); + saw::data> shift_ind; + for(uint64_t i{0u}; i < D; ++i){ + shift_ind.at({i}) = frac_ind.at({{i}}).template cast_to(); + } return f.at(shift_ind); } template -void n_closest_add(saw::data,Encode>& f, const saw::data>& frac_ind, const saw::data& val){ +void n_closest_add(const saw::data,Encode>& f, const saw::data>& frac_ind, const saw::data& val){ auto shift_frac_ind = frac_ind; for(uint64_t i{0u}; i < D; ++i){ @@ -34,7 +37,14 @@ void n_closest_add(saw::data,Encode>& f, const saw::data(); + auto f_meta = f.meta(); + saw::data> shift_ind; + for(uint64_t i{0u}; i < D; ++i){ + shift_ind.at({i}) = frac_ind.at({{i}}).template cast_to(); + if(shift_ind.at({i}) < f_meta.at({i})){ + shift_ind.at({i}) = f_meta.at({i}) - 1u; + } + } auto& f_i = f.at(shift_ind); f_i = f_i + val; -- cgit v1.2.3