summaryrefslogtreecommitdiff
path: root/modules/core/c++/descriptor.hpp
diff options
context:
space:
mode:
authorClaudius "keldu" Holeksa <mail@keldu.de>2026-08-07 18:15:51 +0200
committerClaudius "keldu" Holeksa <mail@keldu.de>2026-08-07 18:15:51 +0200
commit9cc16e97489860ef1989c1bb16745a4dc0155b9f (patch)
tree60636c39dad819388e6fd814a2a9c2efac5dded1 /modules/core/c++/descriptor.hpp
parent5d4192c73c72f29debe0f3b6e73889f0204ab74a (diff)
parent15ee0a4a9b398b86001c7a2542e8e98f9dedba70 (diff)
downloadlibs-lbm-9cc16e97489860ef1989c1bb16745a4dc0155b9f.tar.gz
Merge branch 'dev'HEADmaster
Diffstat (limited to 'modules/core/c++/descriptor.hpp')
-rw-r--r--modules/core/c++/descriptor.hpp220
1 files changed, 6 insertions, 214 deletions
diff --git a/modules/core/c++/descriptor.hpp b/modules/core/c++/descriptor.hpp
index 9f7399a..ac09e7b 100644
--- a/modules/core/c++/descriptor.hpp
+++ b/modules/core/c++/descriptor.hpp
@@ -4,21 +4,17 @@
#include <forstio/codec/data_math.hpp>
#include <forstio/codec/schema_factory.hpp>
+#include "descriptor/d1q3.hpp"
+#include "descriptor/d2q5.hpp"
+#include "descriptor/d2q9.hpp"
+#include "descriptor/d3q19.hpp"
+#include "descriptor/d3q27.hpp"
+
namespace kel {
namespace lbm {
namespace sch {
using namespace saw::schema;
-template<uint64_t DV, uint64_t QV>
-struct Descriptor {
- static constexpr uint64_t D = DV;
- static constexpr uint64_t Q = QV;
-};
-
-using D2Q9 = Descriptor<2u,9u>;
-//using D2Q5 = Descriptor<2u,5u>;
-using D3Q27 = Descriptor<3u,27u>;
-
template<typename Sch, typename Desc, uint64_t SC_V, uint64_t DC_V, uint64_t QC_V>
struct Cell {
using Descriptor = Desc;
@@ -51,9 +47,6 @@ struct CellFieldStruct {
}
-template<typename T, typename Desc>
-class df_info{};
-
/*
namespace impl {
template<typename Desc>
@@ -70,207 +63,6 @@ struct df_ct_helper {
}
*/
-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.;
-};
-
-/**
- * D2Q5 Descriptor
- */
-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},
- {-1, 0},
- { 1, 0},
- { 0,-1},
- { 0, 1},
- }};
-
- 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.;
-};
-
-template<typename T>
-class df_info<T,sch::Descriptor<2, 9>> {
-public:
- using Descriptor = sch::Descriptor<2,9>;
-
- static constexpr uint64_t D = 2u;
- static constexpr uint64_t Q = 9u;
-
- 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
- {-1,-1}, // 5
- { 1, 1}, // 6
- {-1, 1}, // 7
- { 1,-1} // 8
- }};
-
- static constexpr std::array<typename saw::native_data_type<T>::type,Q> weights = {
- 4./9.,
- 1./9.,
- 1./9.,
- 1./9.,
- 1./9.,
- 1./36.,
- 1./36.,
- 1./36.,
- 1./36.
- };
-
- static constexpr std::array<uint64_t,Q> opposite_index = {
- 0,
- 2,
- 1,
- 4,
- 3,
- 6,
- 5,
- 8,
- 7
- };
-
- 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.;
-};
-
-
-template<typename T>
-class df_info<T,sch::Descriptor<3, 27>> {
-public:
- using Descriptor = sch::Descriptor<3,27>;
-
- static constexpr uint64_t D = 3u;
- static constexpr uint64_t Q = 27u;
-
- static constexpr std::array<std::array<int32_t, D>, Q> directions = {{
- { 0, 0, 0}, // 0
- // Into 1D
- {-1, 0, 0}, // 1
- { 1, 0, 0}, // 2
- // Expand into 2D
- { 0, -1, 0}, // 3
- {-1, -1, 0}, // 4
- { 1, -1, 0}, // 5
- { 0, 1, 0}, // 6
- {-1, 1, 0}, // 7
- { 1, 1, 0}, // 8
- // Expand into 3D
- { 0, 0, -1}, // 9
- {-1, 0, -1}, // 10
- { 1, 0, -1}, // 11
- { 0, -1, -1},// 12
- {-1, -1, -1},// 13
- { 1, -1, -1},// 14
- { 0, 1, -1}, // 15
- {-1, 1, -1}, // 16
- { 1, 1, -1}, // 17
- { 0, 0, 1}, // 18
- {-1, 0, 1}, // 19
- { 1, 0, 1}, // 20
- { 0, -1, 1}, // 21
- {-1, -1, 1}, // 22
- { 1, -1, 1}, // 23
- { 0, 1, 1}, // 24
- {-1, 1, 1}, // 25
- { 1, 1, 1} // 26
- }};
-
- static constexpr std::array<typename saw::native_data_type<T>::type,Q> weights = {
- 8./27.,
- // 1D
- 1./36.,
- 1./36.,
- // 2D
- 1./36.,
- 1./54.,
- 1./54.,
- 1./36.,
- 1./54.,
- 1./54.,
- // 3D
- 1./36.,
- 1./54.,
- 1./54.,
- 1./54.,
- 1./216.,
- 1./216.,
- 1./54.,
- 1./216.,
- 1./216.,
- 1./36.,
- 1./54.,
- 1./54.,
- 1./54.,
- 1./216.,
- 1./216.,
- 1./54.,
- 1./216.,
- 1./216.
- };
-
- static constexpr std::array<uint64_t,Q> opposite_index = {
- 0,2,1,
- 6,8,7,3,5,4,
- 18,20,19,24,26,25,21,23,22,9,11,10,15,17,16,12,14,13
- };
-
- 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.;
-};
-
-
template<typename Schema>
class cell_schema_builder {
private: