diff options
| author | Claudius "keldu" Holeksa <mail@keldu.de> | 2026-01-06 13:54:02 +0100 |
|---|---|---|
| committer | Claudius "keldu" Holeksa <mail@keldu.de> | 2026-01-06 13:54:02 +0100 |
| commit | f3e4d97af48feea46a82f8d4546e0157e05a4b5c (patch) | |
| tree | c4bc1f3e7a3600623499bbc305841a4cd43e8ad7 /lib/core | |
| parent | b1d61c67c28a9ba4a1de834e401d97cfc9e84764 (diff) | |
| download | libs-lbm-f3e4d97af48feea46a82f8d4546e0157e05a4b5c.tar.gz | |
New heterogenic module for playing around in free time
Also changed particle broadphase
Diffstat (limited to 'lib/core')
| -rw-r--r-- | lib/core/c++/particle/particle.hpp | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/lib/core/c++/particle/particle.hpp b/lib/core/c++/particle/particle.hpp index 3089378..6147a10 100644 --- a/lib/core/c++/particle/particle.hpp +++ b/lib/core/c++/particle/particle.hpp @@ -66,12 +66,9 @@ constexpr auto verlet_step_lambda = [](saw::data<sch::Particle<T,D>>& particle, pos = pos_new; }; -/** -* -* -*/ + template<typename T, uint64_t D> -constexpr auto broadphase_collision_check = [](saw::data<sch::Particle<T,D>>& left, saw::data<sch::Particle<T,D>>& right){ +constexpr auto broadphase_collision_distance = [](saw::data<sch::Particle<T,D>>& left, saw::data<sch::Particle<T,D>>& right) -> std::pair<bool,saw::data<sch::Scalar<T>>>{ auto rad_l = left.template get<"collision">().template get<"radius">(); auto rad_r = right.template get<"collision">().template get<"radius">(); @@ -87,7 +84,15 @@ constexpr auto broadphase_collision_check = [](saw::data<sch::Particle<T,D>>& le auto rad_ab_2 = rad_l * rad_l + rad_r * rad_r + rad_r * rad_l * static_cast<saw::native_data_type<T>::type>(2); - return (norm_2.at({}).get() < rad_ab_2.get()); + return std::make_pair((norm_2.at({}).get() < rad_ab_2.get()), norm_2); +}; +/** +* +* +*/ +template<typename T, uint64_t D> +constexpr auto broadphase_collision_check = [](saw::data<sch::Particle<T,D>>& left, saw::data<sch::Particle<T,D>>& right) -> bool{ + return broadphase_collision_distance<T,D>(left,right).first; }; template<typename T, uint64_t D, typename ParticleCollision = sch::ParticleMask<T,D> > |
