From 79196db2ac3d31543056b3b7abe90ad609c51b4f Mon Sep 17 00:00:00 2001 From: "Claudius \"keldu\" Holeksa" Date: Tue, 22 Sep 2026 09:27:15 +0200 Subject: Fixing two way coupling --- modules/core/c++/collision.hpp | 6 ++++++ modules/core/c++/converter.hpp | 5 +++++ modules/core/c++/fplbm.hpp | 11 ++++++++--- modules/core/c++/hlbm.hpp | 5 +++++ modules/core/c++/psm.hpp | 5 +++++ 5 files changed, 29 insertions(+), 3 deletions(-) (limited to 'modules/core/c++') diff --git a/modules/core/c++/collision.hpp b/modules/core/c++/collision.hpp index 39514b8..ec21b5f 100644 --- a/modules/core/c++/collision.hpp +++ b/modules/core/c++/collision.hpp @@ -4,6 +4,7 @@ #include "component.hpp" #include "equilibrium.hpp" #include "chunk.hpp" +#include "lbm_unit.hpp" namespace kel { namespace lbm { @@ -31,6 +32,11 @@ public: frequency_{saw::data{1} / relaxation_} {} + component(const saw::data>& relaxation__): + relaxation_{relaxation__.handle()}, + frequency_{saw::data{typename saw::native_data_type::type(1)} / relaxation_} + {} + using Component = cmpt::BGK; /** diff --git a/modules/core/c++/converter.hpp b/modules/core/c++/converter.hpp index 600db0d..3f0638b 100644 --- a/modules/core/c++/converter.hpp +++ b/modules/core/c++/converter.hpp @@ -86,6 +86,11 @@ public: saw::data> kinematic_viscosity_si_to_tau(const saw::data>& kin_si) const { return saw::data>{saw::data, sch::LbmKinematicViscosity>::Schema >{df_info::inv_cs2} * kinematic_viscosity_si_to_lbm(kin_si) + saw::data>{0.5}}; } + + template + saw::data> kinematic_viscosity_lbm_to_tau(const saw::data>& kin_lbm) const { + return saw::data>{saw::data, sch::LbmKinematicViscosity>::Schema >{df_info::inv_cs2} * kin_lbm + saw::data>{0.5}}; + } }; } } diff --git a/modules/core/c++/fplbm.hpp b/modules/core/c++/fplbm.hpp index 0ab7903..d0cf023 100644 --- a/modules/core/c++/fplbm.hpp +++ b/modules/core/c++/fplbm.hpp @@ -60,6 +60,9 @@ private: saw::data relaxation_; saw::data frequency_; public: + using Component = cmpt::FpLbm; +public: + component(typename saw::native_data_type::type relaxation__): relaxation_{{relaxation__}}, frequency_{saw::data{1} / relaxation_} @@ -70,8 +73,10 @@ public: frequency_{saw::data{1} / relaxation_} {} - using Component = cmpt::FpLbm; - + component(const saw::data>& relaxation__): + relaxation_{relaxation__.handle()}, + frequency_{saw::data{typename saw::native_data_type::type(1)} / relaxation_} + {} template void apply(const saw::data& field, const saw::data& macros, saw::data> index, saw::data time_step) const { @@ -359,7 +364,7 @@ public: }, aabb.template get<"a">(), aabb.template get<"b">()); auto& pirb_acc = pirb.template get<"acceleration">(); - pirb_acc = force_p / (pg.template get<"total_mass">().at({})); + pirb_acc = global_force_ + force_p / (pg.template get<"total_mass">().at({})); for(saw::data i{0u}; i < sub_steps; ++i){ verlet_step_lambda(pi,one / sss); diff --git a/modules/core/c++/hlbm.hpp b/modules/core/c++/hlbm.hpp index 0df5896..fc61f6a 100644 --- a/modules/core/c++/hlbm.hpp +++ b/modules/core/c++/hlbm.hpp @@ -59,6 +59,11 @@ public: frequency_{typename saw::native_data_type::type(1) / relaxation_} {} + component(const saw::data>& relaxation__): + relaxation_{relaxation__.handle().get()}, + frequency_{typename saw::native_data_type::type(1) / relaxation_} + {} + template void apply(const saw::data& field, const saw::data& macros, saw::data> index, saw::data time_step) const { diff --git a/modules/core/c++/psm.hpp b/modules/core/c++/psm.hpp index f5a8452..40323b3 100644 --- a/modules/core/c++/psm.hpp +++ b/modules/core/c++/psm.hpp @@ -48,6 +48,11 @@ public: frequency_ = one / relaxation_; } + component(const saw::data>& relaxation__): + relaxation_{relaxation__.handle()}, + frequency_{saw::data{typename saw::native_data_type::type(1)} / relaxation_} + {} + template void apply(const saw::data& field, const saw::data& macros, saw::data> index, saw::data time_step) const { -- cgit v1.3.1