OpenLB 1.7
Loading...
Searching...
No Matches
Static Public Member Functions | List of all members
olb::entropicLbHelpers< T, DESCRIPTOR > Struct Template Reference

#include <entropicLbHelpers.h>

+ Collaboration diagram for olb::entropicLbHelpers< T, DESCRIPTOR >:

Static Public Member Functions

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.
 

Detailed Description

template<typename T, typename DESCRIPTOR>
struct olb::entropicLbHelpers< T, DESCRIPTOR >

Definition at line 36 of file entropicLbHelpers.h.

Member Function Documentation

◆ equilibrium()

template<typename T , typename DESCRIPTOR >
static T olb::entropicLbHelpers< T, DESCRIPTOR >::equilibrium ( int iPop,
T rho,
const T u[DESCRIPTOR::d] )
inlinestatic

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>());
42 const T sqt3 = util::sqrt(3.0);
43 T prod = (T)1;
44 for (int iD=0; iD < DESCRIPTOR::d; ++iD) {
45 T uc = u[iD] * invCs; // u[iD] / c_s
46
47 prod *= ((T)2 - util::sqrt(1.0+uc*uc)) *
48 util::pow((2.0 / sqt3 * uc +
49 util::sqrt(1.0+uc*uc))/(1.0-uc/sqt3),
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)
Definition pack.h:100
cpu::simd::Pack< T > pow(cpu::simd::Pack< T > base, cpu::simd::Pack< T > exp)
Definition pack.h:112

References olb::util::pow(), and olb::util::sqrt().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ 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
68 - 0.5*util::pow(descriptors::invCs2<T,L>(),2)*cu*uSqr + util::pow(cu,3)*util::pow(descriptors::invCs2<T,L>(),3)/6.0
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().

+ Here is the call graph for this function:

The documentation for this struct was generated from the following file: