diff options
| author | Claudius "keldu" Holeksa <mail@keldu.de> | 2026-08-24 19:47:22 +0200 |
|---|---|---|
| committer | Claudius "keldu" Holeksa <mail@keldu.de> | 2026-08-24 19:47:22 +0200 |
| commit | df4fbe3f6776ba25d7267fdb50ce48eca26b9fba (patch) | |
| tree | ed211c81d68102c8035e61d6110aba242017b486 /modules/core/c++/macroscopic.hpp | |
| parent | 4f8ba172c7c6cbe278cbf20927df543cd6c58c28 (diff) | |
| parent | 692b413fec56fbb5c6198813df369106721c33f5 (diff) | |
| download | libs-lbm-df4fbe3f6776ba25d7267fdb50ce48eca26b9fba.tar.gz | |
Merge branch 'dev'
Diffstat (limited to 'modules/core/c++/macroscopic.hpp')
| -rw-r--r-- | modules/core/c++/macroscopic.hpp | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/modules/core/c++/macroscopic.hpp b/modules/core/c++/macroscopic.hpp index 768fef0..9db1538 100644 --- a/modules/core/c++/macroscopic.hpp +++ b/modules/core/c++/macroscopic.hpp @@ -33,5 +33,30 @@ void compute_rho_u ( vel().at({{i}}) = vel().at({{i}}) / rho().at({}); } } + +/** + * Calculate the macroscopic variables rho and u in Lattice Units. + */ +template<typename T, typename Desc> +void compute_rho_momentum ( + const saw::data<sch::FixedArray<T,Desc::Q>>& dfs, + saw::ref<saw::data<sch::Scalar<T>>> rho, + saw::ref<saw::data<sch::Vector<T,Desc::D>>> mom + ) +{ + using dfi = df_info<T, Desc>; + + rho().at({}).set(0); + for(uint64_t i = 0; i < Desc::D; ++i){ + mom().at({{i}}).set(0); + } + + for(size_t j = 0; j < Desc::Q; ++j){ + rho().at({}) = rho().at({}) + dfs.at({j}); + for(size_t i = 0; i < Desc::D; ++i){ + mom().at({{i}}) = mom().at({{i}}) + saw::data<T>{static_cast<typename saw::native_data_type<T>::type>(dfi::directions[j][i])} * dfs.at({j}); + } + } +} } } |
