37 CELL& cell, T rho,
const T u[DESCRIPTOR::d],
40 const T uSqr = util::normSqr<T,DESCRIPTOR::d>(u);
42 constexpr auto onWallIndices = util::populationsContributingToVelocity<DESCRIPTOR,direction,0>();
43 constexpr auto normalIndices = util::populationsContributingToVelocity<DESCRIPTOR,direction,orientation>();
45 T fNeq[DESCRIPTOR::q];
46 for (
unsigned fIndex=0; fIndex<onWallIndices.size(); ++fIndex) {
47 int iPop = onWallIndices[fIndex];
57 for (
unsigned fIndex=0; fIndex<normalIndices.size(); ++fIndex) {
58 int iPop = normalIndices[fIndex];
65 for (
int iAlpha=0; iAlpha < DESCRIPTOR::d; ++iAlpha) {
66 for (
int iBeta=iAlpha; iBeta < DESCRIPTOR::d; ++iBeta) {
68 for (
unsigned fIndex=0; fIndex < onWallIndices.size(); ++fIndex) {
69 const int iPop = onWallIndices[fIndex];
70 pi[iPi] += descriptors::c<DESCRIPTOR>(iPop,iAlpha)
71 * descriptors::c<DESCRIPTOR>(iPop,iBeta)
74 for (
unsigned fIndex=0; fIndex < normalIndices.size(); ++fIndex) {
75 const int iPop = normalIndices[fIndex];
77 * descriptors::c<DESCRIPTOR>(iPop,iAlpha)
78 * descriptors::c<DESCRIPTOR>(iPop,iBeta)