diff options
| author | Claudius "keldu" Holeksa <mail@keldu.de> | 2026-02-09 16:49:12 +0100 |
|---|---|---|
| committer | Claudius "keldu" Holeksa <mail@keldu.de> | 2026-02-09 16:49:12 +0100 |
| commit | 5fee9c698f5f1ebe6ef8bf07f5a75e04dab92681 (patch) | |
| tree | 8c3adef346837c54fa2618e276708e4a8b3bea4d /lib/core/c++ | |
| parent | 08d1d887e47ddbd61236c36193b3ef304e69fc0b (diff) | |
| download | libs-lbm-5fee9c698f5f1ebe6ef8bf07f5a75e04dab92681.tar.gz | |
Add rar as dep and implement collision
Diffstat (limited to 'lib/core/c++')
| -rw-r--r-- | lib/core/c++/collision.hpp | 6 | ||||
| -rw-r--r-- | lib/core/c++/hlbm.hpp | 10 | ||||
| -rw-r--r-- | lib/core/c++/psm.hpp | 35 |
3 files changed, 47 insertions, 4 deletions
diff --git a/lib/core/c++/collision.hpp b/lib/core/c++/collision.hpp index 6c39646..349833f 100644 --- a/lib/core/c++/collision.hpp +++ b/lib/core/c++/collision.hpp @@ -118,8 +118,8 @@ public: auto& dfs_old = (is_even) ? cell.template get<"dfs_old">() : cell.template get<"dfs">(); // auto& dfs = (not is_even) ? cell.template get<"dfs_old">() : cell.template get<"dfs">(); - saw::data<T> rho; - saw::data<sch::FixedArray<T,Descriptor::D>> vel; + saw::data<sch::Scalar<T>> rho; + saw::data<sch::Vector<T,Descriptor::D>> vel; compute_rho_u<T,Descriptor>(dfs_old,rho,vel); auto eq = equilibrium<T,Descriptor>(rho,vel); @@ -131,7 +131,7 @@ public: // saw::data<T> ci_min_u{0}; saw::data<T> ci_dot_u{0}; for(uint64_t d = 0u; d < Descriptor::D; ++d){ - ci_dot_u = ci_dot_u + vel.at({d}) * saw::data<T>{static_cast<typename saw::native_data_type<T>::type>(dfi::directions[i][d])}; + ci_dot_u = ci_dot_u + vel.at({{d}}) * saw::data<T>{static_cast<typename saw::native_data_type<T>::type>(dfi::directions[i][d])}; } saw::data<T> F_i{0};// = saw::data<T>{dfi::weights[i]} * (ci_dot_F * dfi::inv_cs2 + ci_dot_u * ci_dot_F * (dfi::inv_cs2 * dfi::inv_cs2)); diff --git a/lib/core/c++/hlbm.hpp b/lib/core/c++/hlbm.hpp index 1c665ce..f8f0118 100644 --- a/lib/core/c++/hlbm.hpp +++ b/lib/core/c++/hlbm.hpp @@ -13,11 +13,19 @@ struct HLBM {}; /** * HLBM collision operator for LBM */ -template<typename T, typename Descriptor> +template<typename T, typename Descriptor, typename Encode> class component<T, Descriptor, cmpt::HLBM> { private: public: component() = default; + + template<typename CellFieldSchema, typename MacroFieldSchema> + void apply(const saw::data<CellFieldSchema, Encode>& field, const saw::data<MacroFieldSchema,Encode>& macros, saw::data<sch::FixedArray<sch::UInt64,Descriptor::D>> index, saw::data<sch::UInt64> time_step) const { + + bool is_even = ((time_step.get() % 2) == 0); + + + } }; } diff --git a/lib/core/c++/psm.hpp b/lib/core/c++/psm.hpp new file mode 100644 index 0000000..8e151c3 --- /dev/null +++ b/lib/core/c++/psm.hpp @@ -0,0 +1,35 @@ +#pragma once + +#include "macroscopic.hpp" +#include "component.hpp" +#include "equilibrium.hpp" + +namespace kel { +namespace lbm { +namespace cmpt { +struct PSM {}; +} + +/** + * HLBM collision operator for LBM + */ +template<typename T, typename Descriptor, typename Encode> +class component<T, Descriptor, cmpt::PSM> { +private: +public: + component() = default; + + template<typename CellFieldSchema, typename MacroFieldSchema> + void apply(const saw::data<CellFieldSchema, Encode>& field, const saw::data<MacroFieldSchema,Encode>& macros, saw::data<sch::FixedArray<sch::UInt64,Descriptor::D>> index, saw::data<sch::UInt64> time_step) const { + + bool is_even = ((time_step.get() % 2) == 0); + + auto& dfs_old_f = (is_even) ? field.template get<"dfs_old">() : field.template get<"dfs">(); + auto& porous = field.template get<"porosity">(); + + + } +}; + +} +} |
