summaryrefslogtreecommitdiff
path: root/lib/core/c++/psm.hpp
diff options
context:
space:
mode:
authorClaudius "keldu" Holeksa <mail@keldu.de>2026-06-30 23:52:02 +0200
committerClaudius "keldu" Holeksa <mail@keldu.de>2026-06-30 23:52:02 +0200
commit2bae8b93faf614b1acb5df7269087b4f3786da5a (patch)
treea6db1328ed035c6130b6b29110e0891f6c78c7e4 /lib/core/c++/psm.hpp
parentb88d59477a7973bdee102aaf0e26c13c9059048b (diff)
downloadlibs-lbm-2bae8b93faf614b1acb5df7269087b4f3786da5a.tar.gz
Final run
Diffstat (limited to 'lib/core/c++/psm.hpp')
-rw-r--r--lib/core/c++/psm.hpp18
1 files changed, 17 insertions, 1 deletions
diff --git a/lib/core/c++/psm.hpp b/lib/core/c++/psm.hpp
index 3bd3520..6dc146f 100644
--- a/lib/core/c++/psm.hpp
+++ b/lib/core/c++/psm.hpp
@@ -40,7 +40,7 @@ public:
auto& rho_f = macros.template get<"density">();
auto& vel_f = macros.template get<"velocity">();
-
+
saw::data<sch::Scalar<T>>& rho = rho_f.at(index);
saw::data<sch::Vector<T,Descriptor::D>>& vel = vel_f.at(index);
@@ -60,6 +60,22 @@ public:
uint64_t i_opp = dfi::opposite_index[i];
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;
}
+
+ auto& force_f = macros.template get<"force">();
+ auto& force = force_f.at(index);
+ for(uint64_t k{0u}; k < Descriptor::D; ++k){
+ force.at({{k}}).set(0);
+ }
+
+ for(uint64_t i{0u}; i < Descriptor::Q; ++i){
+ uint64_t i_opp = dfi::opposite_index[i];
+ auto dfs_diff = dfs.at({i}) - dfs.at({i_opp});
+ for(uint64_t k{0u}; k < Descriptor::D; ++k){
+ force.at({{k}}) = force.at({{k}}) + dfs_diff;
+ }
+ }
+
+ force = force * porous;
}
};