summaryrefslogtreecommitdiff
path: root/lib/core/c++/boundary.hpp
diff options
context:
space:
mode:
authorClaudius "keldu" Holeksa <mail@keldu.de>2026-02-06 20:20:05 +0100
committerClaudius "keldu" Holeksa <mail@keldu.de>2026-02-06 20:20:05 +0100
commit22659a4a4af8be137bcd702b89f1f44cd0fe2455 (patch)
treeeea5ca79f2798b3e8bf4347e1941cc09d26dc0ca /lib/core/c++/boundary.hpp
parent8b35555ef3093fc7900366306ae8c99550459714 (diff)
downloadlibs-lbm-22659a4a4af8be137bcd702b89f1f44cd0fe2455.tar.gz
Equilibrium boundaries
Diffstat (limited to 'lib/core/c++/boundary.hpp')
-rw-r--r--lib/core/c++/boundary.hpp24
1 files changed, 24 insertions, 0 deletions
diff --git a/lib/core/c++/boundary.hpp b/lib/core/c++/boundary.hpp
index 6d83c79..b70ffbf 100644
--- a/lib/core/c++/boundary.hpp
+++ b/lib/core/c++/boundary.hpp
@@ -11,6 +11,8 @@ struct BounceBack {};
template<bool East>
struct ZouHeHorizontal{};
+struct Equilibrium {};
+
template<bool North>
struct ZouHeVertical{};
}
@@ -64,6 +66,28 @@ public:
}
};
+template<typename FP, typename Descriptor, typename Encode>
+class component<FP, Descriptor, cmpt::Equilibrium, Encode> final {
+private:
+ saw::data<FP> density_;
+ saw::data<FP> velocity_;
+public:
+ component(
+ saw::data<FP> density__,
+ saw::Data<FP> velocity__
+ ):
+ density_{density__},
+ velocity_{velocity__}
+ {}
+
+ template<typename CellFieldSchema>
+ void apply(const saw::data<CellFieldSchema, Encode>& field, const saw::data<sch::FixedArray<sch::UInt64,Descriptor::D>>& index, saw::data<sch::UInt64> time_step)const{
+ using dfi = df_info<T,Descriptor>;
+
+ auto& dfs_old_f = (is_even) ? field.template get<"dfs_old">() : field.template get<"dfs">();
+ }
+};
+
/**
* This is massively hacky and expects a lot of conditions
* Either this or mirrored along the horizontal line works