summaryrefslogtreecommitdiff
path: root/modules/core/c++/descriptor
diff options
context:
space:
mode:
authorClaudius "keldu" Holeksa <mail@keldu.de>2026-08-07 16:14:16 +0200
committerClaudius "keldu" Holeksa <mail@keldu.de>2026-08-07 16:14:16 +0200
commitcf3ee2ab8de44160c24da7850955021142f41da8 (patch)
tree2f8ea947c00208bf986c7778fa7a441ea64bd23e /modules/core/c++/descriptor
parent1f797c2f9716c5b604dc6eee8335d9149d4a0b77 (diff)
downloadlibs-lbm-cf3ee2ab8de44160c24da7850955021142f41da8.tar.gz
Clean up descriptors
Diffstat (limited to 'modules/core/c++/descriptor')
-rw-r--r--modules/core/c++/descriptor/d1q3.hpp31
-rw-r--r--modules/core/c++/descriptor/d2q5.hpp49
-rw-r--r--modules/core/c++/descriptor/d3q19.hpp72
3 files changed, 152 insertions, 0 deletions
diff --git a/modules/core/c++/descriptor/d1q3.hpp b/modules/core/c++/descriptor/d1q3.hpp
index 7fc8591..9ea0a35 100644
--- a/modules/core/c++/descriptor/d1q3.hpp
+++ b/modules/core/c++/descriptor/d1q3.hpp
@@ -4,6 +4,37 @@
namespace kel {
namespace lbm {
+namespace sch {
+using D1Q3 = Descriptor<1u,3u>;
+}
+
+template<typename T>
+class df_info<T,sch::Descriptor<1,3>> {
+public:
+ using Descriptor = sch::Descriptor<1,3>;
+
+ static constexpr uint64_t D = 1u;
+ static constexpr uint64_t Q = 3u;
+
+ static constexpr std::array<std::array<int32_t,D>,Q> directions = {{
+ { 0},
+ {-1},
+ { 1}
+ }};
+
+ static constexpr std::array<typename saw::native_data_type<T>::type, Q> weights = {
+ 2./3.,
+ 1./6.,
+ 1./6.
+ };
+
+ static constexpr std::array<uint64_t,Q> opposite_index = {
+ 0,2,1
+ };
+
+ static constexpr typename saw::native_data_type<T>::type inv_cs2 = 3.0;
+ static constexpr typename saw::native_data_type<T>::type cs2 = 1./3.;
+};
}
}
diff --git a/modules/core/c++/descriptor/d2q5.hpp b/modules/core/c++/descriptor/d2q5.hpp
new file mode 100644
index 0000000..74f8b96
--- /dev/null
+++ b/modules/core/c++/descriptor/d2q5.hpp
@@ -0,0 +1,49 @@
+#pragma once
+
+#include "common.hpp"
+
+namespace kel {
+namespace lbm {
+namespace sch {
+using D2Q9 = Descriptor<2u,5u>;
+}
+
+template<typename T>
+class df_info<T,sch::Descriptor<2, 5>> {
+public:
+ using Descriptor = sch::Descriptor<2,5>;
+
+ static constexpr uint64_t D = 2u;
+ static constexpr uint64_t Q = 5u;
+
+ static constexpr std::array<std::array<int32_t, D>, Q> directions = {{
+ { 0, 0}, // 0
+ {-1, 0}, // 1
+ { 1, 0}, // 2
+ { 0,-1}, // 3
+ { 0, 1} // 4
+ }};
+
+ static constexpr std::array<typename saw::native_data_type<T>::type,Q> weights = {
+ 1./3.,
+ 1./6.,
+ 1./6.,
+ 1./6.,
+ 1./6.
+ };
+
+ static constexpr std::array<uint64_t,Q> opposite_index = {
+ 0,
+ 2,
+ 1,
+ 4,
+ 3
+ };
+
+ static constexpr typename saw::native_data_type<T>::type inv_cs2 = 3.0;
+ static constexpr typename saw::native_data_type<T>::type cs2 = 1./3.;
+};
+
+
+}
+}
diff --git a/modules/core/c++/descriptor/d3q19.hpp b/modules/core/c++/descriptor/d3q19.hpp
new file mode 100644
index 0000000..bbd1bd1
--- /dev/null
+++ b/modules/core/c++/descriptor/d3q19.hpp
@@ -0,0 +1,72 @@
+#pragma once
+
+namespace kel {
+namespace lbm {
+namespace sch {
+using D3Q19 = Descriptor<3u,19u>;
+}
+
+template<typename T>
+class df_info<T, sch::Descriptor<3,19>> {
+public:
+ using Descriptor = sch::Descriptor<3,19>;
+
+ static constexpr uint64_t D = 3u;
+ static constexpr uint64_t Q = 19u;
+
+ static constexpr std::array<std::array<int32_t,D>,Q> directions = {{
+ { 0, 0, 0}, // 0
+
+ {-1, 0, 0}, // 1
+ { 1, 0, 0}, // 2
+ { 0, -1, 0}, // 3
+ { 0, 1, 0}, // 4
+ { 0, 0, -1}, // 5
+ { 0, 0, 1}, // 6
+
+ {-1, -1, 0}, // 7
+ { 1, -1, 0}, // 8
+ {-1, 1, 0}, // 9
+ { 1, 1, 0}, //10
+
+ {-1, 0, -1}, //11
+ { 1, 0, -1}, //12
+ {-1, 0, 1}, //13
+ { 1, 0, 1}, //14
+
+ { 0, -1, -1}, //15
+ { 0, 1, -1}, //16
+ { 0, -1, 1}, //17
+ { 0, 1, 1} //18
+ }};
+
+ static constexpr std::array<typename saw::native_data_type<T>::type,Q> weights = {
+ 1./3.,
+
+ 1./18., 1./18.,
+ 1./18., 1./18.,
+ 1./18., 1./18.,
+
+ 1./36., 1./36.,
+ 1./36., 1./36.,
+ 1./36., 1./36.,
+ 1./36., 1./36.,
+ 1./36., 1./36.,
+ 1./36., 1./36.
+ };
+
+ static constexpr std::array<uint64_t,Q> opposite_index = {
+ 0,
+ 2,1,
+ 4,3,
+ 6,5,
+ 10,9,8,7,
+ 14,13,12,11,
+ 18,17,16,15
+ };
+
+ static constexpr typename saw::native_data_type<T>::type inv_cs2 = 3.0;
+ static constexpr typename saw::native_data_type<T>::type cs2 = 1./3.;
+};
+}
+}