24#ifndef DESCRIPTOR_FUNCTION_H
25#define DESCRIPTOR_FUNCTION_H
37template <
typename,
unsigned>
class Vector;
39namespace descriptors {
53template <
unsigned D,
unsigned Q>
56template <
unsigned D,
unsigned Q>
59template <
unsigned D,
unsigned Q>
62template <
unsigned D,
unsigned Q>
65template <
unsigned D,
unsigned Q>
68template <
unsigned D,
unsigned Q>
71template <
unsigned D,
unsigned Q>
76template <
unsigned D,
unsigned Q>
79 return data::vicinity<D,Q>;
82template <
unsigned D,
unsigned Q>
85 return data::c<D,Q>[iPop][iDim];
88template <
unsigned D,
unsigned Q>
94template <
unsigned D,
unsigned Q>
97 return data::opposite<D,Q>[iPop];
100template <
typename T,
unsigned D,
unsigned Q>
103 return data::t<D,Q>[iPop].template as<T>();
106template <
typename T,
unsigned D,
unsigned Q>
109 return data::cs2<D,Q>.template inverseAs<T>();
112template <
typename T,
unsigned D,
unsigned Q>
115 return data::lambda_e<D,Q>.template inverseAs<T>();
118template <
typename T,
unsigned D,
unsigned Q>
121 return data::lambda_h<D,Q>.template inverseAs<T>();
126template <
typename DESCRIPTOR>
129 return DESCRIPTOR::d;
133 template <
typename DESCRIPTOR>
135 return d<DESCRIPTOR>;
139template <
typename DESCRIPTOR>
142 return DESCRIPTOR::q;
145template <
typename DESCRIPTOR>
148 return vicinity<DESCRIPTOR::d, DESCRIPTOR::q>();
151template <
typename DESCRIPTOR>
154 return c<DESCRIPTOR::d, DESCRIPTOR::q>(iPop, iDim);
157template <
typename DESCRIPTOR>
160 return c<DESCRIPTOR::d, DESCRIPTOR::q>(iPop);
163template <
typename DESCRIPTOR>
166 return opposite<DESCRIPTOR::d, DESCRIPTOR::q>(iPop);
169template <
typename T,
typename DESCRIPTOR>
172 return t<T, DESCRIPTOR::d, DESCRIPTOR::q>(iPop,
typename DESCRIPTOR::category_tag());
175template <
typename T,
typename DESCRIPTOR>
178 return invCs2<T, DESCRIPTOR::d, DESCRIPTOR::q>();
181template <
typename T,
typename DESCRIPTOR>
184 return lambda_e<T, DESCRIPTOR::d, DESCRIPTOR::q>();
187template <
typename T,
typename DESCRIPTOR>
190 return lambda_h<T, DESCRIPTOR::d, DESCRIPTOR::q>();
194template <
typename DESCRIPTOR,
typename PREDICATE>
197 std::make_index_sequence<DESCRIPTOR::q>());
Floating-point independent fraction type.
platform_constant Fraction lambda_e
platform_constant Fraction lambda_h
platform_constant int opposite[Q]
platform_constant Fraction cs2
platform_constant int vicinity
platform_constant Fraction t[Q]
platform_constant int c[Q][D]
constexpr T lambda_h() any_platform
constexpr int q() any_platform
constexpr T invCs2() any_platform
constexpr T t(unsigned iPop, tag::CUM) any_platform
constexpr int c(unsigned iPop, unsigned iDim) any_platform
constexpr int d() any_platform
constexpr int opposite(unsigned iPop) any_platform
constexpr int vicinity() any_platform
constexpr auto filter_population_indices(PREDICATE predicate) any_platform
Return array of population indices of DESCRIPTOR matching PREDICATE.
constexpr T lambda_e() any_platform
Top level namespace for all of OpenLB.
constexpr auto operator()(meta::id< DESCRIPTOR >=meta::id< DESCRIPTOR >{}) const
Implicit default category of normal descriptors.