246 {
247 V rho, u[DESCRIPTOR::d];
248 MomentaF().computeRhoU(cell, rho, u);
249 const auto statistic =
CollisionO().apply(cell, parameters);
250 const V omega = parameters.template get<descriptors::OMEGA>();
251
252 V rt[DESCRIPTOR::q] { };
253 for (int iPop=0; iPop < DESCRIPTOR::q; ++iPop) {
255 }
256 for (int iPop=0; iPop < descriptors::shearIndexes<DESCRIPTOR>(); ++iPop) {
258 }
259 V invM_S[DESCRIPTOR::q][DESCRIPTOR::q];
260 for (int iPop = 0; iPop < DESCRIPTOR::q; ++iPop) {
261 for (int jPop = 0; jPop < DESCRIPTOR::q; ++jPop) {
262 invM_S[iPop][jPop] = V{};
263 for (int kPop = 0; kPop < DESCRIPTOR::q; ++kPop) {
264 if (kPop == jPop) {
266 }
267 }
268 }
269 }
270 const V epsilon = FreeSurface::getClampedEpsilon(cell);
271 const auto force = epsilon * cell.template getField<descriptors::FORCE>();
273 return statistic;
274 };
constexpr T s(unsigned iPop, tag::MRT)
constexpr int shearViscIndexes(unsigned iPop, tag::MRT)
constexpr T invM(unsigned iPop, unsigned jPop, tag::MRT)
typename COLLISION::template type< DESCRIPTOR, MOMENTA, EQUILIBRIUM > CollisionO
typename MOMENTA::template type< DESCRIPTOR > MomentaF
static void addExternalForce(CELL &cell, const RHO &rho, const U &u, const INVM_S &invM_S, const FORCE &force)
Ladd-Verberg-I body force model for MRT A.Ladd, R.