#include <entropicLbHelpers.h>
|
static T | equilibrium (int iPop, T rho, const T u[DESCRIPTOR::d]) |
| Computation of equilibrium distribution.
|
|
static T | equilibriumApprox (int iPop, T rho, const T u[DESCRIPTOR::d]) |
| Computation of equilibrium distribution.
|
|
template<typename T, typename DESCRIPTOR>
struct olb::entropicLbHelpers< T, DESCRIPTOR >
Definition at line 36 of file entropicLbHelpers.h.
◆ equilibrium()
template<typename T , typename DESCRIPTOR >
Computation of equilibrium distribution.
Definition at line 38 of file entropicLbHelpers.h.
39 {
40 typedef DESCRIPTOR L;
41 const T invCs =
util::sqrt(descriptors::invCs2<T,L>());
43 T prod = (T)1;
44 for (int iD=0; iD < DESCRIPTOR::d; ++iD) {
45 T uc = u[iD] * invCs;
46
50 descriptors::c<L>(iPop,iD)/sqt3*invCs);
51 }
52 return rho*descriptors::t<T,L>(iPop)*prod-descriptors::t<T,L>(iPop);
53 }
cpu::simd::Pack< T > sqrt(cpu::simd::Pack< T > value)
cpu::simd::Pack< T > pow(cpu::simd::Pack< T > base, cpu::simd::Pack< T > exp)
References olb::util::pow(), and olb::util::sqrt().
◆ equilibriumApprox()
template<typename T , typename DESCRIPTOR >
static T olb::entropicLbHelpers< T, DESCRIPTOR >::equilibriumApprox |
( |
int | iPop, |
|
|
T | rho, |
|
|
const T | u[DESCRIPTOR::d] ) |
|
inlinestatic |
Computation of equilibrium distribution.
Definition at line 56 of file entropicLbHelpers.h.
57 {
58 typedef DESCRIPTOR L;
59
60 T uSqr = util::normSqr<T,L::d>(u);
61 T cu = T();
62 for (int iD=0; iD < DESCRIPTOR::d; ++iD) {
63 cu += descriptors::c<L>(iPop,iD)*u[iD];
64 }
65
66 return rho * descriptors::t<T,L>(iPop) * (1.0 +
67 cu*descriptors::invCs2<T,L>() - 0.5 * uSqr*descriptors::invCs2<T,L>() + 0.5*
util::pow(descriptors::invCs2<T,L>(),2)*cu*cu
69 + 0.125*uSqr*uSqr*
util::pow(descriptors::invCs2<T,L>(),2) - 0.25*cu*cu*uSqr*
util::pow(descriptors::invCs2<T,L>(),3)
70 +
util::pow(cu,4)*
util::pow(descriptors::invCs2<T,L>(),4)/24.0)-descriptors::t<T,L>(iPop);
71 }
References olb::util::pow().
The documentation for this struct was generated from the following file: