From 1e2e1755beb592f86f61337524121b98063a0d89 Mon Sep 17 00:00:00 2001 From: "Claudius \"keldu\" Holeksa" Date: Tue, 26 May 2026 19:19:47 +0200 Subject: Dangling --- lib/core/c++/particle/particle.hpp | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) (limited to 'lib/core') diff --git a/lib/core/c++/particle/particle.hpp b/lib/core/c++/particle/particle.hpp index 938131b..7249e6a 100644 --- a/lib/core/c++/particle/particle.hpp +++ b/lib/core/c++/particle/particle.hpp @@ -71,6 +71,10 @@ saw::data>> cre auto& mask = part.template get<"mask">(); auto& density = part.template get<"density">().at({{0u}}); + auto& total_mass = part.template get<"total_mass">(); + // Paranoia + total_mass.at({}) = {}; + static_assert(D >= 1u and D <= 3u, "Dimensions only supported for Dim 1,2 & 3."); density = density_p; @@ -86,6 +90,7 @@ saw::data>> cre mask = {mask_dims}; auto& com = part.template get<"center_of_mass">(); + // Paranoia for(uint64_t i = 0u; i < D; ++i){ com.at({{i}}) = {}; } @@ -97,12 +102,24 @@ saw::data>> cre saw::data> center; for(uint64_t i = 0u; i < D; ++i){ - com.at({{i}}) = ; + center.at({{i}}).set(radius); } iterator::apply([&](const auto& index){ ++ele_ctr; + saw::data> offset_index = saw::math::vectorize_data(index).template cast_to() - center; + + + + auto& dpi = mask.at(index); + + for(uint64_t i = 0u; i < D; ++i){ + com.at({{i}}) = com.at({{i}}) + index.at({i}).template cast_to() * dpi.at({}); + } + + total_mass = total_mass + dpi; + },{},mask_dims); return part; -- cgit v1.2.3