OpenLB 1.7
Loading...
Searching...
No Matches
collisionLES.cse.h
Go to the documentation of this file.
1/* This file is part of the OpenLB library
2 *
3 * Copyright (C) 2021 Adrian Kummerlaender
4 * E-mail contact: info@openlb.net
5 * The most recent release of OpenLB can be downloaded at
6 * <http://www.openlb.net/>
7 *
8 * This program is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU General Public License
10 * as published by the Free Software Foundation; either version 2
11 * of the License, or (at your option) any later version.
12 *
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
17 *
18 * You should have received a copy of the GNU General Public
19 * License along with this program; if not, write to the Free
20 * Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
21 * Boston, MA 02110-1301, USA.
22*/
23
24#ifndef DYNAMICS_COLLISION_LES_CSE_H
25#define DYNAMICS_COLLISION_LES_CSE_H
26
27
28#ifndef DISABLE_CSE
29
30#include "equilibrium.h"
31#include "collision.h"
32#include "latticeDescriptors.h"
33
34namespace olb {
35
36namespace collision {
37
38namespace detail {
39
40template <typename... FIELDS>
41struct SmagorinskyEffectiveOmega<BGK,descriptors::D2Q9<FIELDS...>,momenta::BulkTuple,equilibria::SecondOrder> {
42
43template <CONCEPT(MinimalCell) CELL, typename PARAMETERS, typename V=typename CELL::value_t>
44CellStatistic<V> apply(CELL& cell, PARAMETERS& parameters) any_platform
45{
46auto x13 = parameters.template get<olb::collision::LES::Smagorinsky>();
47auto x12 = parameters.template get<olb::descriptors::OMEGA>();
48auto x9 = cell[1] + cell[7];
49auto x10 = x9 + cell[0] + cell[2] + cell[3] + cell[4] + cell[5] + cell[6] + cell[8] + V{1};
50auto x11 = V{1} / (x10);
51auto x14 = V{1}*x11;
52auto x15 = -cell[5];
53auto x16 = x15 + cell[3];
54auto x17 = cell[2] - cell[6];
55auto x18 = x16 + x17 + cell[1] - cell[7];
56auto x19 = x18*x18;
57auto x20 = -V{0.333333333333333}*cell[0] + V{0.666666666666667}*cell[1] + V{0.666666666666667}*cell[3] + V{0.666666666666667}*cell[5] + V{0.666666666666667}*cell[7];
58auto x21 = -x14*x19 + x20 + V{0.666666666666667}*cell[2] - V{0.333333333333333}*cell[4] + V{0.666666666666667}*cell[6] - V{0.333333333333333}*cell[8];
59auto x22 = -cell[4] + cell[8];
60auto x23 = x15 + x22 + x9 - cell[3];
61auto x24 = x23*x23;
62auto x25 = -x14*x24 + x20 - V{0.333333333333333}*cell[2] + V{0.666666666666667}*cell[4] - V{0.333333333333333}*cell[6] + V{0.666666666666667}*cell[8];
63auto x26 = -x11*x18*x23 - x16 + cell[1] - cell[7];
64auto x27 = V{1} / (V{3.00000046417339}*util::sqrt(x11*(x13*x13)*util::sqrt(V{0.5}*(x21*x21) + V{0.5}*(x25*x25) + x26*x26) + V{0.0277777691819762}/((x12)*(x12))) + V{0.5}/x12);
65auto x28 = V{1} / ((x10)*(x10));
66auto x29 = V{1.5}*x28;
67auto x30 = x24*x29;
68auto x31 = -x18;
69auto x32 = x29*(x31*x31) + V{-1};
70auto x33 = x30 + x32;
71auto x34 = V{1} - x27;
72auto x35 = V{0.0277777777777778}*cell[0] + V{0.0277777777777778}*cell[1] + V{0.0277777777777778}*cell[2] + V{0.0277777777777778}*cell[3] + V{0.0277777777777778}*cell[4] + V{0.0277777777777778}*cell[5] + V{0.0277777777777778}*cell[6] + V{0.0277777777777778}*cell[7] + V{0.0277777777777778}*cell[8] + V{0.0277777777777778};
73auto x36 = V{4.5}*x28;
74auto x37 = x17 + x22 + V{2}*cell[1] - V{2}*cell[5];
75auto x38 = x36*(x37*x37);
76auto x39 = V{3}*cell[3];
77auto x40 = V{3}*cell[7];
78auto x41 = V{3}*cell[1] - V{3}*cell[5];
79auto x42 = x39 - x40 + x41 + V{3}*cell[2] - V{3}*cell[6];
80auto x43 = x11*x42;
81auto x44 = -x30 + x43 + V{1};
82auto x45 = -x39 + x40 + x41 - V{3}*cell[4] + V{3}*cell[8];
83auto x46 = x11*x45;
84auto x47 = x19*x29;
85auto x48 = x46 - x47;
86auto x49 = V{0.111111111111111}*cell[0] + V{0.111111111111111}*cell[1] + V{0.111111111111111}*cell[2] + V{0.111111111111111}*cell[3] + V{0.111111111111111}*cell[4] + V{0.111111111111111}*cell[5] + V{0.111111111111111}*cell[6] + V{0.111111111111111}*cell[7] + V{0.111111111111111}*cell[8] + V{0.111111111111111};
87auto x50 = V{3}*x28;
88auto x51 = x17 + V{2}*cell[3] + cell[4] - V{2}*cell[7] - cell[8];
89auto x52 = -x51;
90auto x53 = x24*x50;
91auto x54 = x30 + x43 + V{-1};
92auto x55 = x47 + x54;
93auto x0 = -x27*(x33*(V{0.444444444444444}*cell[0] + V{0.444444444444444}*cell[1] + V{0.444444444444444}*cell[2] + V{0.444444444444444}*cell[3] + V{0.444444444444444}*cell[4] + V{0.444444444444444}*cell[5] + V{0.444444444444444}*cell[6] + V{0.444444444444444}*cell[7] + V{0.444444444444444}*cell[8] + V{0.444444444444444}) + V{0.444444444444444}) + V{1}*x34*cell[0];
94auto x1 = x27*(x35*(x38 + x44 + x48) + V{-0.0277777777777778}) + V{1}*x34*cell[1];
95auto x2 = x27*(x49*(x19*x50 + x44) + V{-0.111111111111111}) + V{1}*x34*cell[2];
96auto x3 = -x27*(x35*(-x11*x42 + x33 - x36*x52*x52 + x46) + V{0.0277777777777778}) + V{1}*x34*cell[3];
97auto x4 = -x27*(x49*(x32 + x46 - x53) + V{0.111111111111111}) + V{1}*x34*cell[4];
98auto x5 = -x27*(x35*(-x38 + x46 + x55) + V{0.0277777777777778}) + V{1}*x34*cell[5];
99auto x6 = x27*(x49*(V{3}*x19*x28 - x54) + V{-0.111111111111111}) + V{1}*x34*cell[6];
100auto x7 = x27*(-x35*(-x11*x45 - V{4.5}*x28*x51*x51 + x55) + V{-0.0277777777777778}) + V{1}*x34*cell[7];
101auto x8 = x27*(x49*(x48 + x53 + V{1}) + V{-0.111111111111111}) + V{1}*x34*cell[8];
102cell[0] = x0;
103cell[1] = x1;
104cell[2] = x2;
105cell[3] = x3;
106cell[4] = x4;
107cell[5] = x5;
108cell[6] = x6;
109cell[7] = x7;
110cell[8] = x8;
111return { x10, V{1}*x28*(x19 + x24) };
112}
113
114template <typename CELL, typename PARAMETERS, typename V=typename CELL::value_t>
115auto computeEffectiveOmega(CELL& cell, PARAMETERS& parameters) any_platform
116{
117auto x13 = parameters.template get<olb::collision::LES::Smagorinsky>();
118auto x12 = parameters.template get<olb::descriptors::OMEGA>();
119auto x0 = cell[1] + cell[2];
120auto x1 = cell[7] + cell[8];
121auto x2 = V{1} / (x0 + x1 + cell[0] + cell[3] + cell[4] + cell[5] + cell[6] + V{1});
122auto x3 = V{1}*x2;
123auto x4 = -cell[5];
124auto x5 = x4 + cell[3];
125auto x6 = x0 + x5 - cell[6] - cell[7];
126auto x7 = -V{0.333333333333333}*cell[0] + V{0.666666666666667}*cell[1] + V{0.666666666666667}*cell[3] + V{0.666666666666667}*cell[5] + V{0.666666666666667}*cell[7];
127auto x8 = -x3*x6*x6 + x7 + V{0.666666666666667}*cell[2] - V{0.333333333333333}*cell[4] + V{0.666666666666667}*cell[6] - V{0.333333333333333}*cell[8];
128auto x9 = x1 + x4 + cell[1] - cell[3] - cell[4];
129auto x10 = -x3*x9*x9 + x7 - V{0.333333333333333}*cell[2] + V{0.666666666666667}*cell[4] - V{0.333333333333333}*cell[6] + V{0.666666666666667}*cell[8];
130auto x11 = -x2*x6*x9 - x5 + cell[1] - cell[7];
131return V{1} / (V{3.00000046417339}*util::sqrt(x2*(x13*x13)*util::sqrt(V{0.5}*(x10*x10) + x11*x11 + V{0.5}*(x8*x8)) + V{0.0277777691819762}/((x12)*(x12))) + V{0.5}/x12);
132}
133
134};
135
136template <typename... FIELDS>
137struct SmagorinskyEffectiveOmega<BGK,descriptors::D3Q19<FIELDS...>,momenta::BulkTuple,equilibria::SecondOrder> {
138
139template <CONCEPT(MinimalCell) CELL, typename PARAMETERS, typename V=typename CELL::value_t>
140CellStatistic<V> apply(CELL& cell, PARAMETERS& parameters) any_platform
141{
142auto x23 = parameters.template get<olb::descriptors::OMEGA>();
143auto x24 = parameters.template get<olb::collision::LES::Smagorinsky>();
144auto x19 = cell[15] + cell[17];
145auto x20 = x19 + cell[12];
146auto x21 = cell[11] + cell[18];
147auto x22 = cell[10] + cell[14] + cell[16];
148auto x25 = cell[2] + cell[8] + cell[9];
149auto x26 = cell[13] + cell[3];
150auto x27 = x20 + x21 + x22 + x25 + x26 + cell[0] + cell[1] + cell[4] + cell[5] + cell[6] + cell[7] + V{1};
151auto x28 = V{1} / (x27);
152auto x29 = V{0.333333333333333}*cell[4];
153auto x30 = V{0.333333333333333}*cell[5];
154auto x31 = V{0.333333333333333}*cell[13];
155auto x32 = V{0.333333333333333}*cell[14];
156auto x33 = V{1}*x28;
157auto x34 = -cell[3];
158auto x35 = -cell[18];
159auto x36 = -cell[8];
160auto x37 = x36 + cell[9];
161auto x38 = x34 + x35 + x37;
162auto x39 = -cell[6];
163auto x40 = x39 + cell[7];
164auto x41 = x40 - cell[16];
165auto x42 = x20 + x38 + x41;
166auto x43 = x42*x42;
167auto x44 = V{0.333333333333333}*cell[0];
168auto x45 = V{0.333333333333333}*cell[1];
169auto x46 = V{0.333333333333333}*cell[10];
170auto x47 = x44 + x45 + x46 - V{0.666666666666667}*cell[17] - V{0.666666666666667}*cell[18] - V{0.666666666666667}*cell[8] - V{0.666666666666667}*cell[9];
171auto x48 = V{0.333333333333333}*cell[2];
172auto x49 = V{0.333333333333333}*cell[11];
173auto x50 = x48 + x49 - V{0.666666666666667}*cell[15] - V{0.666666666666667}*cell[16] - V{0.666666666666667}*cell[6] - V{0.666666666666667}*cell[7];
174auto x51 = x29 + x30 + x31 + x32 + x33*x43 + x47 + x50 - V{0.666666666666667}*cell[12] - V{0.666666666666667}*cell[3];
175auto x52 = V{0.333333333333333}*cell[6];
176auto x53 = V{0.333333333333333}*cell[7];
177auto x54 = V{0.333333333333333}*cell[15];
178auto x55 = V{0.333333333333333}*cell[16];
179auto x56 = cell[13] + cell[17];
180auto x57 = -cell[2];
181auto x58 = -cell[9];
182auto x59 = x21 + x36 + x57 + x58;
183auto x60 = -cell[4];
184auto x61 = x60 + cell[5];
185auto x62 = x61 - cell[14];
186auto x63 = x56 + x59 + x62;
187auto x64 = x63*x63;
188auto x65 = V{0.333333333333333}*cell[3];
189auto x66 = V{0.333333333333333}*cell[12];
190auto x67 = x65 + x66 - V{0.666666666666667}*cell[13] - V{0.666666666666667}*cell[14] - V{0.666666666666667}*cell[4] - V{0.666666666666667}*cell[5];
191auto x68 = x33*x64 + x47 + x52 + x53 + x54 + x55 + x67 - V{0.666666666666667}*cell[11] - V{0.666666666666667}*cell[2];
192auto x69 = V{0.333333333333333}*cell[8];
193auto x70 = V{0.333333333333333}*cell[9];
194auto x71 = V{0.333333333333333}*cell[17];
195auto x72 = V{0.333333333333333}*cell[18];
196auto x73 = cell[13] + cell[15];
197auto x74 = -cell[1];
198auto x75 = -cell[7];
199auto x76 = x39 + x74 + x75;
200auto x77 = x60 - cell[5];
201auto x78 = x22 + x73 + x76 + x77;
202auto x79 = x78*x78;
203auto x80 = x33*x79 + x44 + x50 + x67 + x69 + x70 + x71 + x72 - V{0.666666666666667}*cell[10] - V{0.666666666666667}*cell[1];
204auto x81 = x28*x78;
205auto x82 = x61 + x63*x81 - cell[13] + cell[14];
206auto x83 = -cell[15] + cell[16];
207auto x84 = x40 + x42*x81 + x83;
208auto x85 = -cell[17];
209auto x86 = x85 + cell[18];
210auto x87 = x28*x42*x63 + x37 + x86;
211auto x88 = V{1} / (V{3.00000046417339}*util::sqrt(x28*(x24*x24)*util::sqrt(V{0.5}*(x51*x51) + V{0.5}*(x68*x68) + V{0.5}*(x80*x80) + x82*x82 + x84*x84 + x87*x87) + V{0.0277777691819762}/((x23)*(x23))) + V{0.5}/x23);
212auto x89 = V{1} / ((x27)*(x27));
213auto x90 = V{1.5}*x89;
214auto x91 = x79*x90;
215auto x92 = x64*x90;
216auto x93 = x43*x90;
217auto x94 = x92 + x93 + V{-1};
218auto x95 = x91 + x94;
219auto x96 = V{1} - x88;
220auto x97 = V{0.0555555555555556}*cell[0] + V{0.0555555555555556}*cell[10] + V{0.0555555555555556}*cell[11] + V{0.0555555555555556}*cell[12] + V{0.0555555555555556}*cell[13] + V{0.0555555555555556}*cell[14] + V{0.0555555555555556}*cell[15] + V{0.0555555555555556}*cell[16] + V{0.0555555555555556}*cell[17] + V{0.0555555555555556}*cell[18] + V{0.0555555555555556}*cell[1] + V{0.0555555555555556}*cell[2] + V{0.0555555555555556}*cell[3] + V{0.0555555555555556}*cell[4] + V{0.0555555555555556}*cell[5] + V{0.0555555555555556}*cell[6] + V{0.0555555555555556}*cell[7] + V{0.0555555555555556}*cell[8] + V{0.0555555555555556}*cell[9] + V{0.0555555555555556};
221auto x98 = V{3}*cell[14];
222auto x99 = V{3}*cell[16];
223auto x100 = V{3}*cell[5];
224auto x101 = V{3}*cell[7];
225auto x102 = V{3}*cell[13] - V{3}*cell[4];
226auto x103 = V{3}*cell[15] - V{3}*cell[6];
227auto x104 = x28*(-x100 - x101 + x102 + x103 + x98 + x99 + V{3}*cell[10] - V{3}*cell[1]);
228auto x105 = V{3}*x89;
229auto x106 = x105*x79;
230auto x107 = V{3}*cell[18];
231auto x108 = V{3}*cell[9];
232auto x109 = V{3}*cell[17] - V{3}*cell[8];
233auto x110 = x28*(x100 + x102 + x107 - x108 + x109 - x98 + V{3}*cell[11] - V{3}*cell[2]);
234auto x111 = x105*x64;
235auto x112 = x91 + V{-1};
236auto x113 = x28*(x101 + x103 - x107 + x108 + x109 - x99 + V{3}*cell[12] - V{3}*cell[3]);
237auto x114 = x105*x43;
238auto x115 = V{0.0277777777777778}*cell[0] + V{0.0277777777777778}*cell[10] + V{0.0277777777777778}*cell[11] + V{0.0277777777777778}*cell[12] + V{0.0277777777777778}*cell[13] + V{0.0277777777777778}*cell[14] + V{0.0277777777777778}*cell[15] + V{0.0277777777777778}*cell[16] + V{0.0277777777777778}*cell[17] + V{0.0277777777777778}*cell[18] + V{0.0277777777777778}*cell[1] + V{0.0277777777777778}*cell[2] + V{0.0277777777777778}*cell[3] + V{0.0277777777777778}*cell[4] + V{0.0277777777777778}*cell[5] + V{0.0277777777777778}*cell[6] + V{0.0277777777777778}*cell[7] + V{0.0277777777777778}*cell[8] + V{0.0277777777777778}*cell[9] + V{0.0277777777777778};
239auto x116 = V{4.5}*x89;
240auto x117 = x76 + cell[10] + cell[16];
241auto x118 = x117 + x19 + x59 + V{2}*cell[13] - V{2}*cell[4];
242auto x119 = x116*(x118*x118);
243auto x120 = x104 + x95;
244auto x121 = -x110;
245auto x122 = x117 + x25 + x35 + x85 - cell[11] + V{2}*cell[14] + cell[15] - V{2}*cell[5];
246auto x123 = -x122;
247auto x124 = x74 + x77 + cell[10] + cell[14];
248auto x125 = x124 + x38 + x56 + cell[12] + V{2}*cell[15] - V{2}*cell[6];
249auto x126 = x116*(x125*x125);
250auto x127 = -x113;
251auto x128 = x26 - cell[12];
252auto x129 = x124 + x128 + x58 + x86 + V{2}*cell[16] - V{2}*cell[7] + cell[8];
253auto x130 = -x129;
254auto x131 = x57 + x62 + cell[11];
255auto x132 = x131 + x34 + x41 + x73 + cell[12] + V{2}*cell[17] - V{2}*cell[8];
256auto x133 = x116*(x132*x132);
257auto x134 = x110 + x95;
258auto x135 = x128 + x131 + x75 + x83 + V{2}*cell[18] + cell[6] - V{2}*cell[9];
259auto x136 = -x135;
260auto x137 = -x92;
261auto x138 = V{1} - x93;
262auto x139 = x137 + x138;
263auto x140 = x104 + x139;
264auto x141 = -x91;
265auto x142 = x110 + x141;
266auto x143 = x113 + x141;
267auto x144 = -x104;
268auto x145 = x113 + x95;
269cell[0] = -x88*(x95*(x29 + x30 + x31 + x32 + x44 + x45 + x46 + x48 + x49 + x52 + x53 + x54 + x55 + x65 + x66 + x69 + x70 + x71 + x72 + V{0.333333333333333}) + V{0.333333333333333}) + V{1}*x96*cell[0];
270cell[1] = -x88*(x97*(x104 - x106 + x94) + V{0.0555555555555556}) + V{1}*x96*cell[1];
271cell[2] = -x88*(x97*(x110 - x111 + x112 + x93) + V{0.0555555555555556}) + V{1}*x96*cell[2];
272cell[3] = -x88*(x97*(x112 + x113 - x114 + x92) + V{0.0555555555555556}) + V{1}*x96*cell[3];
273cell[4] = -x88*(x115*(x110 - x119 + x120) + V{0.0277777777777778}) + V{1}*x96*cell[4];
274cell[5] = -x88*(x115*(-x116*x123*x123 + x120 + x121) + V{0.0277777777777778}) + V{1}*x96*cell[5];
275cell[6] = -x88*(x115*(x113 + x120 - x126) + V{0.0277777777777778}) + V{1}*x96*cell[6];
276cell[7] = -x88*(x115*(-x116*x130*x130 + x120 + x127) + V{0.0277777777777778}) + V{1}*x96*cell[7];
277cell[8] = -x88*(x115*(x113 - x133 + x134) + V{0.0277777777777778}) + V{1}*x96*cell[8];
278cell[9] = -x88*(x115*(-x116*x136*x136 + x127 + x134) + V{0.0277777777777778}) + V{1}*x96*cell[9];
279cell[10] = x88*(x97*(x106 + x140) + V{-0.0555555555555556}) + V{1}*x96*cell[10];
280cell[11] = x88*(x97*(x111 + x138 + x142) + V{-0.0555555555555556}) + V{1}*x96*cell[11];
281cell[12] = x88*(x97*(x114 + x137 + x143 + V{1}) + V{-0.0555555555555556}) + V{1}*x96*cell[12];
282cell[13] = x88*(x115*(x119 + x140 + x142) + V{-0.0277777777777778}) + V{1}*x96*cell[13];
283cell[14] = -x88*(x115*(-x116*x122*x122 + x134 + x144) + V{0.0277777777777778}) + V{1}*x96*cell[14];
284cell[15] = x88*(x115*(x126 + x140 + x143) + V{-0.0277777777777778}) + V{1}*x96*cell[15];
285cell[16] = -x88*(x115*(-x116*x129*x129 + x144 + x145) + V{0.0277777777777778}) + V{1}*x96*cell[16];
286cell[17] = x88*(x115*(x113 + x133 + x139 + x142) + V{-0.0277777777777778}) + V{1}*x96*cell[17];
287cell[18] = -x88*(x115*(-x116*x135*x135 + x121 + x145) + V{0.0277777777777778}) + V{1}*x96*cell[18];
288return { x27, V{1}*x89*(x43 + x64 + x79) };
289}
290
291template <typename CELL, typename PARAMETERS, typename V=typename CELL::value_t>
292auto computeEffectiveOmega(CELL& cell, PARAMETERS& parameters) any_platform
293{
294auto x23 = parameters.template get<olb::descriptors::OMEGA>();
295auto x24 = parameters.template get<olb::collision::LES::Smagorinsky>();
296auto x0 = cell[12] + cell[15] + cell[17];
297auto x1 = cell[11] + cell[13] + cell[18];
298auto x2 = cell[10] + cell[14] + cell[16];
299auto x3 = V{1} / (x0 + x1 + x2 + cell[0] + cell[1] + cell[2] + cell[3] + cell[4] + cell[5] + cell[6] + cell[7] + cell[8] + cell[9] + V{1});
300auto x4 = V{1}*x3;
301auto x5 = -cell[6];
302auto x6 = x5 + cell[7];
303auto x7 = -cell[8];
304auto x8 = x7 + cell[9];
305auto x9 = x0 + x6 + x8 - cell[16] - cell[18] - cell[3];
306auto x10 = V{0.333333333333333}*cell[0];
307auto x11 = x10 + V{0.333333333333333}*cell[10] - V{0.666666666666667}*cell[17] - V{0.666666666666667}*cell[18] + V{0.333333333333333}*cell[1] - V{0.666666666666667}*cell[8] - V{0.666666666666667}*cell[9];
308auto x12 = V{0.333333333333333}*cell[11] - V{0.666666666666667}*cell[15] - V{0.666666666666667}*cell[16] + V{0.333333333333333}*cell[2] - V{0.666666666666667}*cell[6] - V{0.666666666666667}*cell[7];
309auto x13 = x11 + x12 + x4*(x9*x9) - V{0.666666666666667}*cell[12] + V{0.333333333333333}*cell[13] + V{0.333333333333333}*cell[14] - V{0.666666666666667}*cell[3] + V{0.333333333333333}*cell[4] + V{0.333333333333333}*cell[5];
310auto x14 = -cell[4];
311auto x15 = x14 + cell[5];
312auto x16 = x1 + x15 + x7 - cell[14] + cell[17] - cell[2] - cell[9];
313auto x17 = V{0.333333333333333}*cell[12] - V{0.666666666666667}*cell[13] - V{0.666666666666667}*cell[14] + V{0.333333333333333}*cell[3] - V{0.666666666666667}*cell[4] - V{0.666666666666667}*cell[5];
314auto x18 = x11 + x17 + x4*(x16*x16) - V{0.666666666666667}*cell[11] + V{0.333333333333333}*cell[15] + V{0.333333333333333}*cell[16] - V{0.666666666666667}*cell[2] + V{0.333333333333333}*cell[6] + V{0.333333333333333}*cell[7];
315auto x19 = x14 + x2 + x5 + cell[13] + cell[15] - cell[1] - cell[5] - cell[7];
316auto x20 = x10 + x12 + x17 + x4*(x19*x19) - V{0.666666666666667}*cell[10] + V{0.333333333333333}*cell[17] + V{0.333333333333333}*cell[18] - V{0.666666666666667}*cell[1] + V{0.333333333333333}*cell[8] + V{0.333333333333333}*cell[9];
317auto x21 = x19*x3;
318auto x22 = x15 + x16*x21 - cell[13] + cell[14];
319auto x25 = x21*x9 + x6 - cell[15] + cell[16];
320auto x26 = x16*x3*x9 + x8 - cell[17] + cell[18];
321return V{1} / (V{3.00000046417339}*util::sqrt(x3*(x24*x24)*util::sqrt(V{0.5}*(x13*x13) + V{0.5}*(x18*x18) + V{0.5}*(x20*x20) + x22*x22 + x25*x25 + x26*x26) + V{0.0277777691819762}/((x23)*(x23))) + V{0.5}/x23);
322}
323
324};
325
326template <typename... FIELDS>
327struct SmagorinskyEffectiveOmega<BGK,descriptors::D3Q27<FIELDS...>,momenta::BulkTuple,equilibria::SecondOrder> {
328
329template <CONCEPT(MinimalCell) CELL, typename PARAMETERS, typename V=typename CELL::value_t>
330CellStatistic<V> apply(CELL& cell, PARAMETERS& parameters) any_platform
331{
332auto x32 = parameters.template get<olb::collision::LES::Smagorinsky>();
333auto x31 = parameters.template get<olb::descriptors::OMEGA>();
334auto x27 = cell[10] + cell[6];
335auto x28 = x27 + cell[13];
336auto x29 = cell[12] + cell[26];
337auto x30 = cell[15] + cell[21];
338auto x33 = cell[19] + cell[7];
339auto x34 = cell[24] + cell[25];
340auto x35 = x34 + cell[14];
341auto x36 = x28 + x29 + x30 + x33 + x35 + cell[0] + cell[11] + cell[16] + cell[17] + cell[18] + cell[1] + cell[20] + cell[22] + cell[23] + cell[2] + cell[3] + cell[4] + cell[5] + cell[8] + cell[9] + V{1};
342auto x37 = V{1} / (x36);
343auto x38 = V{1}*x37;
344auto x39 = -cell[24];
345auto x40 = -cell[19];
346auto x41 = x40 + cell[7];
347auto x42 = -cell[25];
348auto x43 = x42 + cell[11];
349auto x44 = x41 + x43;
350auto x45 = -cell[23];
351auto x46 = -cell[26];
352auto x47 = x45 + x46 + cell[12];
353auto x48 = -cell[20];
354auto x49 = x48 + cell[4];
355auto x50 = -cell[17];
356auto x51 = x50 + cell[5];
357auto x52 = -cell[14] + cell[1];
358auto x53 = x51 + x52 - cell[18];
359auto x54 = x28 + x39 + x44 + x47 + x49 + x53;
360auto x55 = x54*x54;
361auto x56 = V{0.666666666666667}*cell[10];
362auto x57 = V{0.666666666666667}*cell[11];
363auto x58 = V{0.666666666666667}*cell[12];
364auto x59 = V{0.666666666666667}*cell[13];
365auto x60 = V{0.666666666666667}*cell[23];
366auto x61 = V{0.666666666666667}*cell[24];
367auto x62 = V{0.666666666666667}*cell[25];
368auto x63 = V{0.666666666666667}*cell[26];
369auto x64 = -V{0.333333333333333}*cell[0];
370auto x65 = x56 + x57 + x58 + x59 + x60 + x61 + x62 + x63 + x64 - V{0.333333333333333}*cell[16] + V{0.666666666666667}*cell[17] + V{0.666666666666667}*cell[18] - V{0.333333333333333}*cell[3] + V{0.666666666666667}*cell[4] + V{0.666666666666667}*cell[5];
371auto x66 = -V{0.333333333333333}*cell[15] + V{0.666666666666667}*cell[19] + V{0.666666666666667}*cell[20] - V{0.333333333333333}*cell[2] + V{0.666666666666667}*cell[6] + V{0.666666666666667}*cell[7];
372auto x67 = -x38*x55 + x65 + x66 + V{0.666666666666667}*cell[14] + V{0.666666666666667}*cell[1] - V{0.333333333333333}*cell[21] - V{0.333333333333333}*cell[22] - V{0.333333333333333}*cell[8] - V{0.333333333333333}*cell[9];
373auto x68 = -cell[12];
374auto x69 = x68 + cell[26];
375auto x70 = -cell[13];
376auto x71 = -cell[21];
377auto x72 = x71 + cell[9];
378auto x73 = x70 + x72 + cell[11];
379auto x74 = x45 + cell[8];
380auto x75 = -cell[22];
381auto x76 = x75 + cell[4];
382auto x77 = -cell[15] + cell[2];
383auto x78 = x77 + cell[10];
384auto x79 = x50 + cell[18] - cell[5];
385auto x80 = x39 + x69 + x73 + x74 + x76 + x78 + x79 + cell[25];
386auto x81 = x80*x80;
387auto x82 = -V{0.333333333333333}*cell[14] - V{0.333333333333333}*cell[1] + V{0.666666666666667}*cell[21] + V{0.666666666666667}*cell[22] + V{0.666666666666667}*cell[8] + V{0.666666666666667}*cell[9];
388auto x83 = -x38*x81 + x65 + x82 + V{0.666666666666667}*cell[15] - V{0.333333333333333}*cell[19] - V{0.333333333333333}*cell[20] + V{0.666666666666667}*cell[2] - V{0.333333333333333}*cell[6] - V{0.333333333333333}*cell[7];
389auto x84 = -cell[11];
390auto x85 = -cell[16];
391auto x86 = x70 + x85 + cell[3];
392auto x87 = -cell[9];
393auto x88 = x71 + x87 + cell[22];
394auto x89 = x40 + cell[20] - cell[7];
395auto x90 = x27 + x29 + x42 + x74 + x84 + x86 + x88 + x89 + cell[24];
396auto x91 = x90*x90;
397auto x92 = -x38*x91 + x56 + x57 + x58 + x59 + x60 + x61 + x62 + x63 + x64 + x66 + x82 + V{0.666666666666667}*cell[16] - V{0.333333333333333}*cell[17] - V{0.333333333333333}*cell[18] + V{0.666666666666667}*cell[3] - V{0.333333333333333}*cell[4] - V{0.333333333333333}*cell[5];
398auto x93 = -cell[10];
399auto x94 = x37*x54;
400auto x95 = x39 + cell[12] + cell[26];
401auto x96 = x45 + cell[13] + cell[25];
402auto x97 = x51 + x80*x94 + x84 + x93 + x95 + x96 + cell[18] - cell[4];
403auto x98 = -cell[6];
404auto x99 = x45 + cell[13] + cell[24];
405auto x100 = x44 + x69 + x90*x94 + x93 + x98 + x99 + cell[20];
406auto x101 = -cell[8];
407auto x102 = x101 + cell[22];
408auto x103 = x102 + x34 + x37*x80*x90 + x47 + x73 + x93;
409auto x104 = V{1} / (V{3.00000046417339}*util::sqrt(x37*(x32*x32)*util::sqrt(x100*x100 + x103*x103 + V{0.5}*(x67*x67) + V{0.5}*(x83*x83) + V{0.5}*(x92*x92) + x97*x97) + V{0.0277777691819762}/((x31)*(x31))) + V{0.5}/x31);
410auto x105 = V{1} / ((x36)*(x36));
411auto x106 = V{1.5}*x105;
412auto x107 = -x54;
413auto x108 = x107*x107;
414auto x109 = x106*x108;
415auto x110 = -x80;
416auto x111 = x110*x110;
417auto x112 = x106*x111;
418auto x113 = -x90;
419auto x114 = x113*x113;
420auto x115 = x106*x114;
421auto x116 = x112 + x115 + V{-1};
422auto x117 = x109 + x116;
423auto x118 = V{1} - x104;
424auto x119 = V{0.0740740740740741}*cell[0] + V{0.0740740740740741}*cell[10] + V{0.0740740740740741}*cell[11] + V{0.0740740740740741}*cell[12] + V{0.0740740740740741}*cell[13] + V{0.0740740740740741}*cell[14] + V{0.0740740740740741}*cell[15] + V{0.0740740740740741}*cell[16] + V{0.0740740740740741}*cell[17] + V{0.0740740740740741}*cell[18] + V{0.0740740740740741}*cell[19] + V{0.0740740740740741}*cell[1] + V{0.0740740740740741}*cell[20] + V{0.0740740740740741}*cell[21] + V{0.0740740740740741}*cell[22] + V{0.0740740740740741}*cell[23] + V{0.0740740740740741}*cell[24] + V{0.0740740740740741}*cell[25] + V{0.0740740740740741}*cell[26] + V{0.0740740740740741}*cell[2] + V{0.0740740740740741}*cell[3] + V{0.0740740740740741}*cell[4] + V{0.0740740740740741}*cell[5] + V{0.0740740740740741}*cell[6] + V{0.0740740740740741}*cell[7] + V{0.0740740740740741}*cell[8] + V{0.0740740740740741}*cell[9] + V{0.0740740740740741};
425auto x120 = V{3}*cell[5];
426auto x121 = V{3}*cell[7];
427auto x122 = V{3}*cell[13];
428auto x123 = V{3}*cell[18];
429auto x124 = V{3}*cell[20];
430auto x125 = V{3}*cell[26];
431auto x126 = V{3}*cell[10];
432auto x127 = V{3}*cell[11];
433auto x128 = -V{3}*cell[23];
434auto x129 = V{3}*cell[24];
435auto x130 = x126 + x127 + x128 - x129 - V{3}*cell[17] + V{3}*cell[4];
436auto x131 = V{3}*cell[12];
437auto x132 = V{3}*cell[25];
438auto x133 = x131 - x132 - V{3}*cell[19] + V{3}*cell[6];
439auto x134 = x120 + x121 + x122 - x123 - x124 - x125 + x130 + x133 - V{3}*cell[14] + V{3}*cell[1];
440auto x135 = -x134*x37;
441auto x136 = V{3}*x105;
442auto x137 = V{3}*cell[9];
443auto x138 = V{3}*cell[22];
444auto x139 = -x122 + x125 - V{3}*cell[21] + V{3}*cell[8];
445auto x140 = -x120 + x123 + x130 - x131 + x132 + x137 - x138 + x139 - V{3}*cell[15] + V{3}*cell[2];
446auto x141 = -x140*x37;
447auto x142 = x109 + V{-1};
448auto x143 = -x121 + x124 + x126 - x127 + x128 + x129 + x133 - x137 + x138 + x139 - V{3}*cell[16] + V{3}*cell[3];
449auto x144 = -x143*x37;
450auto x145 = V{0.0185185185185185}*cell[0] + V{0.0185185185185185}*cell[10] + V{0.0185185185185185}*cell[11] + V{0.0185185185185185}*cell[12] + V{0.0185185185185185}*cell[13] + V{0.0185185185185185}*cell[14] + V{0.0185185185185185}*cell[15] + V{0.0185185185185185}*cell[16] + V{0.0185185185185185}*cell[17] + V{0.0185185185185185}*cell[18] + V{0.0185185185185185}*cell[19] + V{0.0185185185185185}*cell[1] + V{0.0185185185185185}*cell[20] + V{0.0185185185185185}*cell[21] + V{0.0185185185185185}*cell[22] + V{0.0185185185185185}*cell[23] + V{0.0185185185185185}*cell[24] + V{0.0185185185185185}*cell[25] + V{0.0185185185185185}*cell[26] + V{0.0185185185185185}*cell[2] + V{0.0185185185185185}*cell[3] + V{0.0185185185185185}*cell[4] + V{0.0185185185185185}*cell[5] + V{0.0185185185185185}*cell[6] + V{0.0185185185185185}*cell[7] + V{0.0185185185185185}*cell[8] + V{0.0185185185185185}*cell[9] + V{0.0185185185185185};
451auto x146 = V{4.5}*x105;
452auto x147 = -V{2}*cell[23];
453auto x148 = V{2}*cell[10];
454auto x149 = x147 + x148 + cell[8];
455auto x150 = V{2}*cell[11] - V{2}*cell[24];
456auto x151 = x150 + x77;
457auto x152 = x52 - V{2}*cell[17] + V{2}*cell[4];
458auto x153 = x41 + x48 + cell[6];
459auto x154 = x149 + x151 + x152 + x153 + x72 + x75;
460auto x155 = -x154;
461auto x156 = x117 + x135;
462auto x157 = x141 + x156;
463auto x158 = V{2}*cell[25];
464auto x159 = V{2}*cell[12];
465auto x160 = -x158 + x159;
466auto x161 = V{2}*cell[26];
467auto x162 = V{2}*cell[13];
468auto x163 = -x161 + x162;
469auto x164 = V{2}*cell[18];
470auto x165 = V{2}*cell[5];
471auto x166 = -x164 + x165 + x52 - cell[2];
472auto x167 = x102 + x153 + x160 + x163 + x166 + x30 + x87;
473auto x168 = -x141;
474auto x169 = x156 + x168;
475auto x170 = -V{2}*cell[19] + V{2}*cell[6];
476auto x171 = x85 + cell[3];
477auto x172 = x171 + cell[4];
478auto x173 = x149 + x160 + x170 + x172 + x53 + x88;
479auto x174 = -x173;
480auto x175 = -x144;
481auto x176 = V{2}*cell[20];
482auto x177 = V{2}*cell[7];
483auto x178 = cell[16] - cell[3];
484auto x179 = -x176 + x177 + x178;
485auto x180 = x101 + x150 + x163 + x179 + x53 + x76 + cell[21] + cell[9];
486auto x181 = -V{2}*cell[21] + V{2}*cell[8];
487auto x182 = x181 + x77;
488auto x183 = x147 + x148 + x161 - x162 + x172 + x182 + x79 + x89 + cell[6];
489auto x184 = -x183;
490auto x185 = x117 + x141;
491auto x186 = x144 + x185;
492auto x187 = V{2}*cell[22];
493auto x188 = V{2}*cell[9];
494auto x189 = -x187 + x188;
495auto x190 = x151 + x158 - x159 + x178 + x189 + x33 + x49 + x79 + x98;
496auto x191 = V{0.00462962962962963}*cell[0] + V{0.00462962962962963}*cell[10] + V{0.00462962962962963}*cell[11] + V{0.00462962962962963}*cell[12] + V{0.00462962962962963}*cell[13] + V{0.00462962962962963}*cell[14] + V{0.00462962962962963}*cell[15] + V{0.00462962962962963}*cell[16] + V{0.00462962962962963}*cell[17] + V{0.00462962962962963}*cell[18] + V{0.00462962962962963}*cell[19] + V{0.00462962962962963}*cell[1] + V{0.00462962962962963}*cell[20] + V{0.00462962962962963}*cell[21] + V{0.00462962962962963}*cell[22] + V{0.00462962962962963}*cell[23] + V{0.00462962962962963}*cell[24] + V{0.00462962962962963}*cell[25] + V{0.00462962962962963}*cell[26] + V{0.00462962962962963}*cell[2] + V{0.00462962962962963}*cell[3] + V{0.00462962962962963}*cell[4] + V{0.00462962962962963}*cell[5] + V{0.00462962962962963}*cell[6] + V{0.00462962962962963}*cell[7] + V{0.00462962962962963}*cell[8] + V{0.00462962962962963}*cell[9] + V{0.00462962962962963};
497auto x192 = x152 + x170 + x182 + x43 + x86 + x95 + V{3}*cell[10] - V{3}*cell[23];
498auto x193 = -x192;
499auto x194 = x68 + x78;
500auto x195 = x152 + x179 + x189 + x194 + x46 + x96 + V{3}*cell[11] - V{3}*cell[24];
501auto x196 = x171 + x84;
502auto x197 = x166 + x170 + x187 - x188 + x196 + x46 + x99 + cell[10] + V{3}*cell[12] + cell[15] - V{3}*cell[25];
503auto x198 = x134*x37;
504auto x199 = x164 - x165 + x176 - x177 + x181 + x194 + x196 + x35 + x45 - V{3}*cell[13] - cell[1] + V{3}*cell[26];
505auto x200 = -x199;
506auto x201 = x143*x37;
507auto x202 = x106*x81;
508auto x203 = x106*x91 + V{-1};
509auto x204 = x202 + x203;
510auto x205 = x140*x37;
511auto x206 = x106*x55;
512auto x207 = x205 + x206;
513auto x208 = x201 + x204 + x207;
514auto x209 = x198 + x204;
515auto x210 = x201 + x206;
516auto x211 = x207 + x209;
517auto x212 = -x135;
518auto x213 = -x167;
519auto x214 = x209 + x210;
520auto x215 = -x180;
521auto x216 = x117 + x144;
522auto x217 = -x190;
523auto x218 = -x195;
524auto x219 = -x197;
525auto x0 = -x104*(x117*(V{0.296296296296296}*cell[0] + V{0.296296296296296}*cell[10] + V{0.296296296296296}*cell[11] + V{0.296296296296296}*cell[12] + V{0.296296296296296}*cell[13] + V{0.296296296296296}*cell[14] + V{0.296296296296296}*cell[15] + V{0.296296296296296}*cell[16] + V{0.296296296296296}*cell[17] + V{0.296296296296296}*cell[18] + V{0.296296296296296}*cell[19] + V{0.296296296296296}*cell[1] + V{0.296296296296296}*cell[20] + V{0.296296296296296}*cell[21] + V{0.296296296296296}*cell[22] + V{0.296296296296296}*cell[23] + V{0.296296296296296}*cell[24] + V{0.296296296296296}*cell[25] + V{0.296296296296296}*cell[26] + V{0.296296296296296}*cell[2] + V{0.296296296296296}*cell[3] + V{0.296296296296296}*cell[4] + V{0.296296296296296}*cell[5] + V{0.296296296296296}*cell[6] + V{0.296296296296296}*cell[7] + V{0.296296296296296}*cell[8] + V{0.296296296296296}*cell[9] + V{0.296296296296296}) + V{0.296296296296296}) + V{1}*x118*cell[0];
526auto x1 = -x104*(x119*(-x108*x136 + x116 + x135) + V{0.0740740740740741}) + V{1}*x118*cell[1];
527auto x2 = -x104*(x119*(-x111*x136 + x115 + x141 + x142) + V{0.0740740740740741}) + V{1}*x118*cell[2];
528auto x3 = -x104*(x119*(x112 - x114*x136 + x142 + x144) + V{0.0740740740740741}) + V{1}*x118*cell[3];
529auto x4 = -x104*(x145*(-x146*x155*x155 + x157) + V{0.0185185185185185}) + V{1}*x118*cell[4];
530auto x5 = -x104*(x145*(-x146*x167*x167 + x169) + V{0.0185185185185185}) + V{1}*x118*cell[5];
531auto x6 = -x104*(x145*(x144 - x146*x174*x174 + x156) + V{0.0185185185185185}) + V{1}*x118*cell[6];
532auto x7 = -x104*(x145*(-x146*x180*x180 + x156 + x175) + V{0.0185185185185185}) + V{1}*x118*cell[7];
533auto x8 = -x104*(x145*(-x146*x184*x184 + x186) + V{0.0185185185185185}) + V{1}*x118*cell[8];
534auto x9 = -x104*(x145*(-x146*x190*x190 + x175 + x185) + V{0.0185185185185185}) + V{1}*x118*cell[9];
535auto x10 = -x104*(x191*(x144 - x146*x193*x193 + x157) + V{0.00462962962962963}) + V{1}*x118*cell[10];
536auto x11 = -x104*(x191*(-x146*x195*x195 + x157 + x175) + V{0.00462962962962963}) + V{1}*x118*cell[11];
537auto x12 = -x104*(x191*(x144 - x146*x197*x197 + x169) + V{0.00462962962962963}) + V{1}*x118*cell[12];
538auto x13 = -x104*(x191*(-x146*x200*x200 - x198 + x208) + V{0.00462962962962963}) + V{1}*x118*cell[13];
539auto x14 = -x104*(x119*(-x136*x55 + x209) + V{0.0740740740740741}) + V{1}*x118*cell[14];
540auto x15 = -x104*(x119*(-x136*x81 + x203 + x207) + V{0.0740740740740741}) + V{1}*x118*cell[15];
541auto x16 = -x104*(x119*(-x136*x91 + x202 + x210 + V{-1}) + V{0.0740740740740741}) + V{1}*x118*cell[16];
542auto x17 = -x104*(x145*(-x146*x154*x154 + x211) + V{0.0185185185185185}) + V{1}*x118*cell[17];
543auto x18 = -x104*(x145*(-x146*x213*x213 + x185 + x212) + V{0.0185185185185185}) + V{1}*x118*cell[18];
544auto x19 = -x104*(x145*(-x146*x173*x173 + x214) + V{0.0185185185185185}) + V{1}*x118*cell[19];
545auto x20 = -x104*(x145*(-x146*x215*x215 + x212 + x216) + V{0.0185185185185185}) + V{1}*x118*cell[20];
546auto x21 = -x104*(x145*(-x146*x183*x183 + x208) + V{0.0185185185185185}) + V{1}*x118*cell[21];
547auto x22 = -x104*(x145*(-x146*x217*x217 + x168 + x216) + V{0.0185185185185185}) + V{1}*x118*cell[22];
548auto x23 = -x104*(x191*(-x146*x192*x192 + x201 + x211) + V{0.00462962962962963}) + V{1}*x118*cell[23];
549auto x24 = -x104*(x191*(-x146*x218*x218 - x201 + x211) + V{0.00462962962962963}) + V{1}*x118*cell[24];
550auto x25 = -x104*(x191*(-x146*x219*x219 - x205 + x214) + V{0.00462962962962963}) + V{1}*x118*cell[25];
551auto x26 = -x104*(x191*(-x146*x199*x199 + x186 + x212) + V{0.00462962962962963}) + V{1}*x118*cell[26];
552cell[0] = x0;
553cell[1] = x1;
554cell[2] = x2;
555cell[3] = x3;
556cell[4] = x4;
557cell[5] = x5;
558cell[6] = x6;
559cell[7] = x7;
560cell[8] = x8;
561cell[9] = x9;
562cell[10] = x10;
563cell[11] = x11;
564cell[12] = x12;
565cell[13] = x13;
566cell[14] = x14;
567cell[15] = x15;
568cell[16] = x16;
569cell[17] = x17;
570cell[18] = x18;
571cell[19] = x19;
572cell[20] = x20;
573cell[21] = x21;
574cell[22] = x22;
575cell[23] = x23;
576cell[24] = x24;
577cell[25] = x25;
578cell[26] = x26;
579return { x36, V{1}*x105*(x55 + x81 + x91) };
580}
581
582template <typename CELL, typename PARAMETERS, typename V=typename CELL::value_t>
583auto computeEffectiveOmega(CELL& cell, PARAMETERS& parameters) any_platform
584{
585auto x32 = parameters.template get<olb::collision::LES::Smagorinsky>();
586auto x31 = parameters.template get<olb::descriptors::OMEGA>();
587auto x0 = cell[12] + cell[25];
588auto x1 = x0 + cell[18];
589auto x2 = cell[11] + cell[24];
590auto x3 = x2 + cell[20];
591auto x4 = cell[22] + cell[9];
592auto x5 = cell[13] + cell[1];
593auto x6 = cell[26] + cell[2] + cell[8];
594auto x7 = cell[10] + cell[3];
595auto x8 = V{1} / (x1 + x3 + x4 + x5 + x6 + x7 + cell[0] + cell[14] + cell[15] + cell[16] + cell[17] + cell[19] + cell[21] + cell[23] + cell[4] + cell[5] + cell[6] + cell[7] + V{1});
596auto x9 = V{1}*x8;
597auto x10 = -cell[17];
598auto x11 = -cell[24];
599auto x12 = x10 + x11 + cell[5];
600auto x13 = -cell[19];
601auto x14 = -cell[25];
602auto x15 = x13 + x14 + cell[7];
603auto x16 = -cell[23];
604auto x17 = x16 - cell[26];
605auto x18 = cell[10] + cell[11] + cell[4];
606auto x19 = cell[12] + cell[6];
607auto x20 = x12 + x15 + x17 + x18 + x19 + x5 - cell[14] - cell[18] - cell[20];
608auto x21 = V{0.666666666666667}*cell[10];
609auto x22 = V{0.666666666666667}*cell[11];
610auto x23 = V{0.666666666666667}*cell[12];
611auto x24 = V{0.666666666666667}*cell[13];
612auto x25 = V{0.666666666666667}*cell[23];
613auto x26 = V{0.666666666666667}*cell[24];
614auto x27 = V{0.666666666666667}*cell[25];
615auto x28 = V{0.666666666666667}*cell[26];
616auto x29 = -V{0.333333333333333}*cell[0];
617auto x30 = x21 + x22 + x23 + x24 + x25 + x26 + x27 + x28 + x29 - V{0.333333333333333}*cell[16] + V{0.666666666666667}*cell[17] + V{0.666666666666667}*cell[18] - V{0.333333333333333}*cell[3] + V{0.666666666666667}*cell[4] + V{0.666666666666667}*cell[5];
618auto x33 = -V{0.333333333333333}*cell[15] + V{0.666666666666667}*cell[19] + V{0.666666666666667}*cell[20] - V{0.333333333333333}*cell[2] + V{0.666666666666667}*cell[6] + V{0.666666666666667}*cell[7];
619auto x34 = x30 + x33 - x9*x20*x20 + V{0.666666666666667}*cell[14] + V{0.666666666666667}*cell[1] - V{0.333333333333333}*cell[21] - V{0.333333333333333}*cell[22] - V{0.333333333333333}*cell[8] - V{0.333333333333333}*cell[9];
620auto x35 = -cell[12];
621auto x36 = -cell[13] - cell[21];
622auto x37 = x16 + x36;
623auto x38 = x10 + x11 + x18 + x35 + x37 + x6 - cell[15] + cell[18] - cell[22] + cell[25] - cell[5] + cell[9];
624auto x39 = -V{0.333333333333333}*cell[14] - V{0.333333333333333}*cell[1] + V{0.666666666666667}*cell[21] + V{0.666666666666667}*cell[22] + V{0.666666666666667}*cell[8] + V{0.666666666666667}*cell[9];
625auto x40 = x30 + x39 - x9*x38*x38 + V{0.666666666666667}*cell[15] - V{0.333333333333333}*cell[19] - V{0.333333333333333}*cell[20] + V{0.666666666666667}*cell[2] - V{0.333333333333333}*cell[6] - V{0.333333333333333}*cell[7];
626auto x41 = -cell[11];
627auto x42 = x13 + x14 + x19 + x37 + x41 + x7 - cell[16] + cell[20] + cell[22] + cell[24] + cell[26] - cell[7] + cell[8] - cell[9];
628auto x43 = x21 + x22 + x23 + x24 + x25 + x26 + x27 + x28 + x29 + x33 + x39 - x9*x42*x42 + V{0.666666666666667}*cell[16] - V{0.333333333333333}*cell[17] - V{0.333333333333333}*cell[18] + V{0.666666666666667}*cell[3] - V{0.333333333333333}*cell[4] - V{0.333333333333333}*cell[5];
629auto x44 = x20*x8;
630auto x45 = -cell[10];
631auto x46 = x16 + x45 + cell[13] + cell[26];
632auto x47 = x1 + x12 + x38*x44 + x41 + x46 - cell[4];
633auto x48 = x15 + x3 + x35 + x42*x44 + x46 - cell[6];
634auto x49 = x0 + x17 + x2 + x36 + x38*x42*x8 + x4 + x45 - cell[8];
635return V{1} / (V{3.00000046417339}*util::sqrt(x8*(x32*x32)*util::sqrt(V{0.5}*(x34*x34) + V{0.5}*(x40*x40) + V{0.5}*(x43*x43) + x47*x47 + x48*x48 + x49*x49) + V{0.0277777691819762}/((x31)*(x31))) + V{0.5}/x31);
636}
637
638};
639
640
641template <typename... FIELDS>
642struct SmagorinskyEffectiveOmega<BGK,descriptors::D2Q9<FIELDS...>,momenta::ForcedWithStress<momenta::BulkTuple>,equilibria::SecondOrder> {
643
644template <CONCEPT(MinimalCell) CELL, typename PARAMETERS, typename V=typename CELL::value_t>
645CellStatistic<V> apply(CELL& cell, PARAMETERS& parameters) any_platform
646{
647auto x13 = parameters.template get<olb::collision::LES::Smagorinsky>();
648auto x9 = cell.template getFieldComponent<olb::descriptors::FORCE>(0);
649auto x10 = cell.template getFieldComponent<olb::descriptors::FORCE>(1);
650auto x12 = parameters.template get<olb::descriptors::OMEGA>();
651auto x11 = cell[7] + cell[8];
652auto x14 = cell[2] + cell[3];
653auto x15 = x11 + x14 + cell[0] + cell[1] + cell[4] + cell[5] + cell[6];
654auto x16 = x15 + V{1};
655auto x17 = V{1} / (x16);
656auto x18 = V{1}*cell[5];
657auto x19 = -V{1}*cell[7];
658auto x20 = cell[1] - cell[5];
659auto x21 = x14 + x20 - cell[6] - cell[7];
660auto x22 = x11 + x20 - cell[3] - cell[4];
661auto x23 = x15 + V{1};
662auto x24 = x23*(x10*x21 - x22*x9);
663auto x25 = V{1}*cell[1];
664auto x26 = V{1}*cell[3];
665auto x27 = x25 - x26;
666auto x28 = x17*x23;
667auto x29 = -V{0.333333333333333}*cell[0] + V{0.666666666666667}*cell[1] + V{0.666666666666667}*cell[3] + V{0.666666666666667}*cell[5] + V{0.666666666666667}*cell[7];
668auto x30 = -x17*x21*x21 - x21*x28*x9 + x29 + V{0.666666666666667}*cell[2] - V{0.333333333333333}*cell[4] + V{0.666666666666667}*cell[6] - V{0.333333333333333}*cell[8];
669auto x31 = x10*x22*x28 - x17*x22*x22 + x29 - V{0.333333333333333}*cell[2] + V{0.666666666666667}*cell[4] - V{0.333333333333333}*cell[6] + V{0.666666666666667}*cell[8];
670auto x32 = V{1} / (V{2.52268963608289}*util::sqrt(x17*(x13*x13)*util::sqrt((V{1}*x17*x21*x22 - V{0.5}*x17*x24 - x18 - x19 - x27)*(V{2}*x17*x21*x22 - V{1}*x17*x24 - V{2}*cell[1] + V{2}*cell[3] - V{2}*cell[5] + V{2}*cell[7]) + x30*x30 + x31*x31) + V{0.0392836979096202}/((x12)*(x12))) + V{0.5}/x12);
671auto x33 = V{1}*cell[7];
672auto x34 = V{1}*cell[8];
673auto x35 = V{1}*cell[4];
674auto x36 = -x18;
675auto x37 = V{0.5}*x10 + x17*(x27 + x33 + x34 - x35 + x36);
676auto x38 = x37*x37;
677auto x39 = V{1.5}*x38;
678auto x40 = V{0.5}*x9;
679auto x41 = V{1}*cell[2];
680auto x42 = x19 + x25 + x26 + x36 + x41 - V{1}*cell[6];
681auto x43 = -x42;
682auto x44 = x17*x43 + x40;
683auto x45 = x39 + V{-1} + V{1.5}*(x44*x44);
684auto x46 = V{1} - x32;
685auto x47 = V{0.0277777777777778}*cell[0] + V{0.0277777777777778}*cell[1] + V{0.0277777777777778}*cell[2] + V{0.0277777777777778}*cell[3] + V{0.0277777777777778}*cell[4] + V{0.0277777777777778}*cell[5] + V{0.0277777777777778}*cell[6] + V{0.0277777777777778}*cell[7] + V{0.0277777777777778}*cell[8] + V{0.0277777777777778};
686auto x48 = V{1.5}*x9;
687auto x49 = -x48;
688auto x50 = V{3}*cell[3];
689auto x51 = V{3}*cell[7];
690auto x52 = V{3}*cell[1] - V{3}*cell[5];
691auto x53 = x50 - x51 + x52 + V{3}*cell[2] - V{3}*cell[6];
692auto x54 = x17*x53;
693auto x55 = x17*x42;
694auto x56 = x37 - x40;
695auto x57 = V{4.5}*cell[3];
696auto x58 = V{4.5}*cell[7];
697auto x59 = V{4.5}*cell[1] - V{4.5}*cell[5];
698auto x60 = x57 - x58 + x59 + V{4.5}*cell[2] - V{4.5}*cell[6];
699auto x61 = x17*x60;
700auto x62 = V{2.25}*x9;
701auto x63 = V{2.25}*x10 + x17*(-x57 + x58 + x59 - V{4.5}*cell[4] + V{4.5}*cell[8]);
702auto x64 = -x62 + x63;
703auto x65 = V{1.5}*x10 + x17*(-x50 + x51 + x52 - V{3}*cell[4] + V{3}*cell[8]);
704auto x66 = x40 - x55;
705auto x67 = x66*x66;
706auto x68 = -x39 - V{1.5}*x67 + V{1};
707auto x69 = x65 + x68;
708auto x70 = V{0.111111111111111}*cell[0] + V{0.111111111111111}*cell[1] + V{0.111111111111111}*cell[2] + V{0.111111111111111}*cell[3] + V{0.111111111111111}*cell[4] + V{0.111111111111111}*cell[5] + V{0.111111111111111}*cell[6] + V{0.111111111111111}*cell[7] + V{0.111111111111111}*cell[8] + V{0.111111111111111};
709auto x71 = -x60;
710auto x72 = x17*x71 + x62;
711auto x73 = -x17*x53;
712auto x74 = x45 + x48 + x73;
713auto x75 = x37*x63;
714auto x76 = x45 + x65;
715auto x77 = -x61 + x62;
716auto x78 = x48 - x54 + x68;
717auto x0 = -x32*(x45*(V{0.444444444444444}*cell[0] + V{0.444444444444444}*cell[1] + V{0.444444444444444}*cell[2] + V{0.444444444444444}*cell[3] + V{0.444444444444444}*cell[4] + V{0.444444444444444}*cell[5] + V{0.444444444444444}*cell[6] + V{0.444444444444444}*cell[7] + V{0.444444444444444}*cell[8] + V{0.444444444444444}) + V{0.444444444444444}) + V{1}*x46*cell[0];
718auto x1 = x25*x46 + x32*(x47*(x49 + x54 + x69 + (x55 + x56)*(x61 + x64)) + V{-0.0277777777777778});
719auto x2 = -x32*(x70*(-x44*x72 + x74) + V{0.111111111111111}) + x41*x46;
720auto x3 = x26*x46 - x32*(x47*(x65 + x74 - (x37 + x44)*(x63 + x72)) + V{0.0277777777777778});
721auto x4 = -x32*(x70*(-x75 + x76) + V{0.111111111111111}) + x35*x46;
722auto x5 = x18*x46 - x32*(x47*(x49 - x73 + x76 - (x17*x43 - x56)*(x17*x71 - x64)) + V{0.0277777777777778});
723auto x6 = x32*(x70*(x66*x77 + x78) + V{-0.111111111111111}) + V{1}*x46*cell[6];
724auto x7 = x32*(x47*(x65 + x78 + (x37 + x66)*(x63 + x77)) + V{-0.0277777777777778}) + x33*x46;
725auto x8 = x32*(x70*(x69 + x75) + V{-0.111111111111111}) + x34*x46;
726cell[0] = x0;
727cell[1] = x1;
728cell[2] = x2;
729cell[3] = x3;
730cell[4] = x4;
731cell[5] = x5;
732cell[6] = x6;
733cell[7] = x7;
734cell[8] = x8;
735return { x16, x38 + x67 };
736}
737
738template <typename CELL, typename PARAMETERS, typename V=typename CELL::value_t>
739auto computeEffectiveOmega(CELL& cell, PARAMETERS& parameters) any_platform
740{
741auto x13 = parameters.template get<olb::collision::LES::Smagorinsky>();
742auto x9 = cell.template getFieldComponent<olb::descriptors::FORCE>(0);
743auto x10 = cell.template getFieldComponent<olb::descriptors::FORCE>(1);
744auto x12 = parameters.template get<olb::descriptors::OMEGA>();
745auto x0 = cell[7] + cell[8];
746auto x1 = cell[2] + cell[3];
747auto x2 = x0 + x1 + cell[0] + cell[1] + cell[4] + cell[5] + cell[6];
748auto x3 = V{1} / (x2 + V{1});
749auto x4 = cell[1] - cell[5];
750auto x5 = x1 + x4 - cell[6] - cell[7];
751auto x6 = x0 + x4 - cell[3] - cell[4];
752auto x7 = x2 + V{1};
753auto x8 = x7*(x10*x5 - x6*x9);
754auto x11 = x3*x7;
755auto x14 = -V{0.333333333333333}*cell[0] + V{0.666666666666667}*cell[1] + V{0.666666666666667}*cell[3] + V{0.666666666666667}*cell[5] + V{0.666666666666667}*cell[7];
756auto x15 = -x11*x5*x9 + x14 - x3*x5*x5 + V{0.666666666666667}*cell[2] - V{0.333333333333333}*cell[4] + V{0.666666666666667}*cell[6] - V{0.333333333333333}*cell[8];
757auto x16 = x10*x11*x6 + x14 - x3*x6*x6 - V{0.333333333333333}*cell[2] + V{0.666666666666667}*cell[4] - V{0.333333333333333}*cell[6] + V{0.666666666666667}*cell[8];
758return V{1} / (V{2.52268963608289}*util::sqrt(x3*(x13*x13)*util::sqrt((V{1}*x3*x5*x6 - V{0.5}*x3*x8 - V{1}*cell[1] + V{1}*cell[3] - V{1}*cell[5] + V{1}*cell[7])*(V{2}*x3*x5*x6 - V{1}*x3*x8 - V{2}*cell[1] + V{2}*cell[3] - V{2}*cell[5] + V{2}*cell[7]) + x15*x15 + x16*x16) + V{0.0392836979096202}/((x12)*(x12))) + V{0.5}/x12);
759}
760
761};
762
763template <typename... FIELDS>
764struct SmagorinskyEffectiveOmega<BGK,descriptors::D3Q19<FIELDS...>,momenta::ForcedWithStress<momenta::BulkTuple>,equilibria::SecondOrder> {
765
766template <CONCEPT(MinimalCell) CELL, typename PARAMETERS, typename V=typename CELL::value_t>
767CellStatistic<V> apply(CELL& cell, PARAMETERS& parameters) any_platform
768{
769auto x23 = parameters.template get<olb::descriptors::OMEGA>();
770auto x19 = cell.template getFieldComponent<olb::descriptors::FORCE>(0);
771auto x20 = cell.template getFieldComponent<olb::descriptors::FORCE>(1);
772auto x21 = cell.template getFieldComponent<olb::descriptors::FORCE>(2);
773auto x24 = parameters.template get<olb::collision::LES::Smagorinsky>();
774auto x22 = cell[12] + cell[7] + cell[9];
775auto x25 = cell[10] + cell[14] + cell[16];
776auto x26 = cell[11] + cell[18] + cell[5];
777auto x27 = x22 + x25 + x26 + cell[0] + cell[13] + cell[15] + cell[17] + cell[1] + cell[2] + cell[3] + cell[4] + cell[6] + cell[8];
778auto x28 = x27 + V{1};
779auto x29 = V{1} / (x28);
780auto x30 = V{1}*cell[6];
781auto x31 = V{1}*cell[16];
782auto x32 = -x31;
783auto x33 = cell[15] - cell[6];
784auto x34 = cell[17] - cell[8];
785auto x35 = x22 + x33 + x34 - cell[16] - cell[18] - cell[3];
786auto x36 = cell[13] - cell[4];
787auto x37 = x25 + x33 + x36 - cell[1] - cell[5] - cell[7];
788auto x38 = x29*(x27 + V{1});
789auto x39 = V{0.5}*x38;
790auto x40 = x29*x37;
791auto x41 = V{1}*x40;
792auto x42 = V{1}*cell[15];
793auto x43 = V{1}*cell[7];
794auto x44 = x42 - x43;
795auto x45 = x30 + x32 - x35*x41 + x39*(x19*x35 + x21*x37) + x44;
796auto x46 = V{1}*cell[4];
797auto x47 = V{1}*cell[14];
798auto x48 = -x47;
799auto x49 = x26 + x34 + x36 - cell[14] - cell[2] - cell[9];
800auto x50 = x19*x49 + x20*x37;
801auto x51 = V{1}*cell[13];
802auto x52 = V{1}*cell[5];
803auto x53 = x51 - x52;
804auto x54 = V{1}*x38;
805auto x55 = V{2}*x49;
806auto x56 = V{1}*cell[8];
807auto x57 = V{1}*cell[18];
808auto x58 = -x57;
809auto x59 = x20*x35 + x21*x49;
810auto x60 = x29*x35;
811auto x61 = V{1}*cell[17];
812auto x62 = V{1}*cell[9];
813auto x63 = x61 - x62;
814auto x64 = V{0.333333333333333}*cell[8];
815auto x65 = V{0.333333333333333}*cell[9];
816auto x66 = V{0.333333333333333}*cell[17];
817auto x67 = V{0.333333333333333}*cell[18];
818auto x68 = V{0.333333333333333}*cell[0];
819auto x69 = -x68;
820auto x70 = V{0.333333333333333}*cell[3];
821auto x71 = V{0.333333333333333}*cell[12];
822auto x72 = x69 - x70 - x71 + V{0.666666666666667}*cell[13] + V{0.666666666666667}*cell[14] + V{0.666666666666667}*cell[4] + V{0.666666666666667}*cell[5];
823auto x73 = V{0.333333333333333}*cell[2];
824auto x74 = V{0.333333333333333}*cell[11];
825auto x75 = -x73 - x74 + V{0.666666666666667}*cell[15] + V{0.666666666666667}*cell[16] + V{0.666666666666667}*cell[6] + V{0.666666666666667}*cell[7];
826auto x76 = x19*x37*x38 - x29*x37*x37 - x64 - x65 - x66 - x67 + x72 + x75 + V{0.666666666666667}*cell[10] + V{0.666666666666667}*cell[1];
827auto x77 = V{0.333333333333333}*cell[6];
828auto x78 = V{0.333333333333333}*cell[7];
829auto x79 = V{0.333333333333333}*cell[15];
830auto x80 = V{0.333333333333333}*cell[16];
831auto x81 = V{0.333333333333333}*cell[1];
832auto x82 = V{0.333333333333333}*cell[10];
833auto x83 = -x81 - x82 + V{0.666666666666667}*cell[17] + V{0.666666666666667}*cell[18] + V{0.666666666666667}*cell[8] + V{0.666666666666667}*cell[9];
834auto x84 = x20*x38*x49 - x29*x49*x49 + x72 - x77 - x78 - x79 - x80 + x83 + V{0.666666666666667}*cell[11] + V{0.666666666666667}*cell[2];
835auto x85 = V{0.333333333333333}*cell[4];
836auto x86 = V{0.333333333333333}*cell[5];
837auto x87 = V{0.333333333333333}*cell[13];
838auto x88 = V{0.333333333333333}*cell[14];
839auto x89 = x21*x35*x38 - x29*x35*x35 + x69 + x75 + x83 - x85 - x86 - x87 - x88 + V{0.666666666666667}*cell[12] + V{0.666666666666667}*cell[3];
840auto x90 = V{1} / (V{3.00000046417339}*util::sqrt(x29*(x24*x24)*util::sqrt(V{0.5}*(x39*x50 - x41*x49 + x46 + x48 + x53)*(-x40*x55 + x50*x54 + V{2}*cell[13] - V{2}*cell[14] + V{2}*cell[4] - V{2}*cell[5]) + V{0.5}*(x39*x59 - V{1}*x49*x60 + x56 + x58 + x63)*(x54*x59 - x55*x60 + V{2}*cell[17] - V{2}*cell[18] + V{2}*cell[8] - V{2}*cell[9]) + x45*x45 + V{0.5}*(x76*x76) + V{0.5}*(x84*x84) + V{0.5}*(x89*x89)) + V{0.0277777691819762}/((x23)*(x23))) + V{0.5}/x23);
841auto x91 = V{1}*cell[10];
842auto x92 = V{1}*cell[1];
843auto x93 = -x46;
844auto x94 = -x30;
845auto x95 = V{0.5}*x19 + x29*(x31 + x44 + x47 + x53 + x91 - x92 + x93 + x94);
846auto x96 = x95*x95;
847auto x97 = V{1.5}*x96;
848auto x98 = V{0.5}*x20;
849auto x99 = V{1}*cell[11];
850auto x100 = V{1}*cell[2];
851auto x101 = -x56;
852auto x102 = x29*(-x100 + x101 + x48 + x51 + x52 + x57 + x63 + x93 + x99);
853auto x103 = x102 + x98;
854auto x104 = x103*x103;
855auto x105 = V{1.5}*x104;
856auto x106 = V{1}*cell[12];
857auto x107 = V{1}*cell[3];
858auto x108 = x101 + x106 - x107 + x32 + x42 + x43 + x58 + x61 + x62 + x94;
859auto x109 = x108*x29 + V{0.5}*x21;
860auto x110 = x109*x109;
861auto x111 = V{1.5}*x110;
862auto x112 = x105 + x111 + x97 + V{-1};
863auto x113 = V{1} - x90;
864auto x114 = V{0.0555555555555556}*cell[0] + V{0.0555555555555556}*cell[10] + V{0.0555555555555556}*cell[11] + V{0.0555555555555556}*cell[12] + V{0.0555555555555556}*cell[13] + V{0.0555555555555556}*cell[14] + V{0.0555555555555556}*cell[15] + V{0.0555555555555556}*cell[16] + V{0.0555555555555556}*cell[17] + V{0.0555555555555556}*cell[18] + V{0.0555555555555556}*cell[1] + V{0.0555555555555556}*cell[2] + V{0.0555555555555556}*cell[3] + V{0.0555555555555556}*cell[4] + V{0.0555555555555556}*cell[5] + V{0.0555555555555556}*cell[6] + V{0.0555555555555556}*cell[7] + V{0.0555555555555556}*cell[8] + V{0.0555555555555556}*cell[9] + V{0.0555555555555556};
865auto x115 = V{4.5}*cell[14];
866auto x116 = V{4.5}*cell[16];
867auto x117 = V{4.5}*cell[5];
868auto x118 = V{4.5}*cell[7];
869auto x119 = V{4.5}*cell[13] - V{4.5}*cell[4];
870auto x120 = V{4.5}*cell[15] - V{4.5}*cell[6];
871auto x121 = V{2.25}*x19 + x29*(x115 + x116 - x117 - x118 + x119 + x120 + V{4.5}*cell[10] - V{4.5}*cell[1]);
872auto x122 = x121*x95;
873auto x123 = V{1.5}*x19;
874auto x124 = V{3}*cell[14];
875auto x125 = V{3}*cell[16];
876auto x126 = V{3}*cell[5];
877auto x127 = V{3}*cell[7];
878auto x128 = V{3}*cell[13] - V{3}*cell[4];
879auto x129 = V{3}*cell[15] - V{3}*cell[6];
880auto x130 = x29*(x124 + x125 - x126 - x127 + x128 + x129 + V{3}*cell[10] - V{3}*cell[1]);
881auto x131 = x123 + x130;
882auto x132 = x112 + x131;
883auto x133 = V{2.25}*x20;
884auto x134 = V{4.5}*cell[18];
885auto x135 = V{4.5}*cell[9];
886auto x136 = V{4.5}*cell[17] - V{4.5}*cell[8];
887auto x137 = x29*(-x115 + x117 + x119 + x134 - x135 + x136 + V{4.5}*cell[11] - V{4.5}*cell[2]);
888auto x138 = x133 + x137;
889auto x139 = x103*x138;
890auto x140 = V{1.5}*x20;
891auto x141 = V{3}*cell[18];
892auto x142 = V{3}*cell[9];
893auto x143 = V{3}*cell[17] - V{3}*cell[8];
894auto x144 = x29*(-x124 + x126 + x128 + x141 - x142 + x143 + V{3}*cell[11] - V{3}*cell[2]);
895auto x145 = x140 + x144;
896auto x146 = x112 + x145;
897auto x147 = -x116 + x118 + x120 - x134 + x135 + x136 + V{4.5}*cell[12] - V{4.5}*cell[3];
898auto x148 = x147*x29 + V{2.25}*x21;
899auto x149 = x109*x148;
900auto x150 = V{1.5}*x21;
901auto x151 = x29*(-x125 + x127 + x129 - x141 + x142 + x143 + V{3}*cell[12] - V{3}*cell[3]);
902auto x152 = x150 + x151;
903auto x153 = x112 + x152;
904auto x154 = V{0.0277777777777778}*cell[0] + V{0.0277777777777778}*cell[10] + V{0.0277777777777778}*cell[11] + V{0.0277777777777778}*cell[12] + V{0.0277777777777778}*cell[13] + V{0.0277777777777778}*cell[14] + V{0.0277777777777778}*cell[15] + V{0.0277777777777778}*cell[16] + V{0.0277777777777778}*cell[17] + V{0.0277777777777778}*cell[18] + V{0.0277777777777778}*cell[1] + V{0.0277777777777778}*cell[2] + V{0.0277777777777778}*cell[3] + V{0.0277777777777778}*cell[4] + V{0.0277777777777778}*cell[5] + V{0.0277777777777778}*cell[6] + V{0.0277777777777778}*cell[7] + V{0.0277777777777778}*cell[8] + V{0.0277777777777778}*cell[9] + V{0.0277777777777778};
905auto x155 = (x103 + x95)*(x121 + x138);
906auto x156 = -x102 + x95 - x98;
907auto x157 = x121 - x133 - x137;
908auto x158 = -x140 - x144;
909auto x159 = (x109 + x95)*(x121 + x148);
910auto x160 = -x108*x29 - V{0.5}*x21;
911auto x161 = x160 + x95;
912auto x162 = -x147*x29 - V{2.25}*x21;
913auto x163 = x121 + x162;
914auto x164 = -x150 - x151;
915auto x165 = (x103 + x109)*(x138 + x148);
916auto x166 = x103 + x160;
917auto x167 = x138 + x162;
918auto x168 = -x105 - x111 - x97 + V{1};
919auto x169 = x131 + x168;
920auto x170 = x145 + x168;
921auto x171 = -x123 - x130;
922cell[0] = V{1}*x113*cell[0] - x90*(x112*(x64 + x65 + x66 + x67 + x68 + x70 + x71 + x73 + x74 + x77 + x78 + x79 + x80 + x81 + x82 + x85 + x86 + x87 + x88 + V{0.333333333333333}) + V{0.333333333333333});
923cell[1] = x113*x92 - x90*(x114*(-x122 + x132) + V{0.0555555555555556});
924cell[2] = x100*x113 - x90*(x114*(-x139 + x146) + V{0.0555555555555556});
925cell[3] = x107*x113 - x90*(x114*(-x149 + x153) + V{0.0555555555555556});
926cell[4] = x113*x46 - x90*(x154*(x132 + x145 - x155) + V{0.0277777777777778});
927cell[5] = x113*x52 - x90*(x154*(x132 - x156*x157 + x158) + V{0.0277777777777778});
928cell[6] = x113*x30 - x90*(x154*(x132 + x152 - x159) + V{0.0277777777777778});
929cell[7] = x113*x43 - x90*(x154*(x132 - x161*x163 + x164) + V{0.0277777777777778});
930cell[8] = x113*x56 - x90*(x154*(x146 + x152 - x165) + V{0.0277777777777778});
931cell[9] = x113*x62 - x90*(x154*(x146 + x164 - x166*x167) + V{0.0277777777777778});
932cell[10] = x113*x91 + x90*(x114*(x122 + x169) + V{-0.0555555555555556});
933cell[11] = x113*x99 + x90*(x114*(x139 + x170) + V{-0.0555555555555556});
934cell[12] = x106*x113 + x90*(x114*(x149 + x152 + x168) + V{-0.0555555555555556});
935cell[13] = x113*x51 + x90*(x154*(x145 + x155 + x169) + V{-0.0277777777777778});
936cell[14] = x113*x47 - x90*(x154*(x146 - x156*x157 + x171) + V{0.0277777777777778});
937cell[15] = x113*x42 + x90*(x154*(x152 + x159 + x169) + V{-0.0277777777777778});
938cell[16] = x113*x31 - x90*(x154*(x153 - x161*x163 + x171) + V{0.0277777777777778});
939cell[17] = x113*x61 + x90*(x154*(x152 + x165 + x170) + V{-0.0277777777777778});
940cell[18] = x113*x57 - x90*(x154*(x153 + x158 - x166*x167) + V{0.0277777777777778});
941return { x28, x104 + x110 + x96 };
942}
943
944template <typename CELL, typename PARAMETERS, typename V=typename CELL::value_t>
945auto computeEffectiveOmega(CELL& cell, PARAMETERS& parameters) any_platform
946{
947auto x19 = cell.template getFieldComponent<olb::descriptors::FORCE>(0);
948auto x23 = parameters.template get<olb::descriptors::OMEGA>();
949auto x24 = parameters.template get<olb::collision::LES::Smagorinsky>();
950auto x20 = cell.template getFieldComponent<olb::descriptors::FORCE>(1);
951auto x21 = cell.template getFieldComponent<olb::descriptors::FORCE>(2);
952auto x0 = cell[12] + cell[7] + cell[9];
953auto x1 = cell[10] + cell[14] + cell[16];
954auto x2 = cell[11] + cell[18] + cell[5];
955auto x3 = x0 + x1 + x2 + cell[0] + cell[13] + cell[15] + cell[17] + cell[1] + cell[2] + cell[3] + cell[4] + cell[6] + cell[8];
956auto x4 = V{1} / (x3 + V{1});
957auto x5 = cell[15] - cell[6];
958auto x6 = cell[17] - cell[8];
959auto x7 = x0 + x5 + x6 - cell[16] - cell[18] - cell[3];
960auto x8 = cell[13] - cell[4];
961auto x9 = x1 + x5 + x8 - cell[1] - cell[5] - cell[7];
962auto x10 = x4*(x3 + V{1});
963auto x11 = V{0.5}*x10;
964auto x12 = x4*x9;
965auto x13 = V{1}*x12;
966auto x14 = x11*(x19*x7 + x21*x9) - x13*x7 + V{1}*cell[15] - V{1}*cell[16] + V{1}*cell[6] - V{1}*cell[7];
967auto x15 = x2 + x6 + x8 - cell[14] - cell[2] - cell[9];
968auto x16 = x15*x19 + x20*x9;
969auto x17 = V{1}*x10;
970auto x18 = V{2}*x15;
971auto x22 = x15*x21 + x20*x7;
972auto x25 = x4*x7;
973auto x26 = -V{0.333333333333333}*cell[0];
974auto x27 = x26 - V{0.333333333333333}*cell[12] + V{0.666666666666667}*cell[13] + V{0.666666666666667}*cell[14] - V{0.333333333333333}*cell[3] + V{0.666666666666667}*cell[4] + V{0.666666666666667}*cell[5];
975auto x28 = -V{0.333333333333333}*cell[11] + V{0.666666666666667}*cell[15] + V{0.666666666666667}*cell[16] - V{0.333333333333333}*cell[2] + V{0.666666666666667}*cell[6] + V{0.666666666666667}*cell[7];
976auto x29 = x10*x19*x9 + x27 + x28 - x4*x9*x9 + V{0.666666666666667}*cell[10] - V{0.333333333333333}*cell[17] - V{0.333333333333333}*cell[18] + V{0.666666666666667}*cell[1] - V{0.333333333333333}*cell[8] - V{0.333333333333333}*cell[9];
977auto x30 = -V{0.333333333333333}*cell[10] + V{0.666666666666667}*cell[17] + V{0.666666666666667}*cell[18] - V{0.333333333333333}*cell[1] + V{0.666666666666667}*cell[8] + V{0.666666666666667}*cell[9];
978auto x31 = x10*x15*x20 + x27 + x30 - x4*x15*x15 + V{0.666666666666667}*cell[11] - V{0.333333333333333}*cell[15] - V{0.333333333333333}*cell[16] + V{0.666666666666667}*cell[2] - V{0.333333333333333}*cell[6] - V{0.333333333333333}*cell[7];
979auto x32 = x10*x21*x7 + x26 + x28 + x30 - x4*x7*x7 + V{0.666666666666667}*cell[12] - V{0.333333333333333}*cell[13] - V{0.333333333333333}*cell[14] + V{0.666666666666667}*cell[3] - V{0.333333333333333}*cell[4] - V{0.333333333333333}*cell[5];
980return V{1} / (V{2.52268963608289}*util::sqrt(x4*(x24*x24)*util::sqrt((x11*x16 - x13*x15 + V{1}*cell[13] - V{1}*cell[14] + V{1}*cell[4] - V{1}*cell[5])*(-x12*x18 + x16*x17 + V{2}*cell[13] - V{2}*cell[14] + V{2}*cell[4] - V{2}*cell[5]) + (x11*x22 - V{1}*x15*x25 + V{1}*cell[17] - V{1}*cell[18] + V{1}*cell[8] - V{1}*cell[9])*(x17*x22 - x18*x25 + V{2}*cell[17] - V{2}*cell[18] + V{2}*cell[8] - V{2}*cell[9]) + 2*(x14*x14) + x29*x29 + x31*x31 + x32*x32) + V{0.0392836979096202}/((x23)*(x23))) + V{0.5}/x23);
981}
982
983};
984
985template <typename... FIELDS>
986struct SmagorinskyEffectiveOmega<BGK,descriptors::D3Q27<FIELDS...>,momenta::ForcedWithStress<momenta::BulkTuple>,equilibria::SecondOrder> {
987
988template <CONCEPT(MinimalCell) CELL, typename PARAMETERS, typename V=typename CELL::value_t>
989CellStatistic<V> apply(CELL& cell, PARAMETERS& parameters) any_platform
990{
991auto x27 = cell.template getFieldComponent<olb::descriptors::FORCE>(0);
992auto x28 = cell.template getFieldComponent<olb::descriptors::FORCE>(1);
993auto x29 = cell.template getFieldComponent<olb::descriptors::FORCE>(2);
994auto x32 = parameters.template get<olb::collision::LES::Smagorinsky>();
995auto x31 = parameters.template get<olb::descriptors::OMEGA>();
996auto x30 = cell[20] + cell[22] + cell[24] + cell[3];
997auto x33 = cell[13] + cell[1] + cell[5] + cell[7];
998auto x34 = cell[10] + cell[18] + cell[25] + cell[2] + cell[9];
999auto x35 = x30 + x33 + x34 + cell[0] + cell[11] + cell[12] + cell[14] + cell[15] + cell[16] + cell[17] + cell[19] + cell[21] + cell[23] + cell[26] + cell[4] + cell[6] + cell[8];
1000auto x36 = x35 + V{1};
1001auto x37 = V{1} / (x36);
1002auto x38 = V{1}*cell[20];
1003auto x39 = V{1}*cell[6];
1004auto x40 = V{1}*cell[12];
1005auto x41 = -x40;
1006auto x42 = -cell[23];
1007auto x43 = x42 + cell[10] + cell[12] - cell[19] - cell[25] + cell[6];
1008auto x44 = -cell[13] - cell[21] + cell[26] + cell[8];
1009auto x45 = x30 + x43 + x44 - cell[11] - cell[16] - cell[7] - cell[9];
1010auto x46 = cell[11] - cell[17] - cell[24] + cell[4];
1011auto x47 = x33 + x43 + x46 - cell[14] - cell[18] - cell[20] - cell[26];
1012auto x48 = x37*(x35 + V{1});
1013auto x49 = V{0.5}*x48;
1014auto x50 = x37*x47;
1015auto x51 = V{1}*x50;
1016auto x52 = V{1}*cell[13];
1017auto x53 = V{1}*cell[26];
1018auto x54 = V{1}*cell[10];
1019auto x55 = -x54;
1020auto x56 = -V{1}*cell[23];
1021auto x57 = x52 + x53 + x55 + x56;
1022auto x58 = V{1}*cell[11];
1023auto x59 = V{1}*cell[24];
1024auto x60 = x58 + x59;
1025auto x61 = V{1}*cell[7];
1026auto x62 = -V{1}*cell[19];
1027auto x63 = V{1}*cell[25];
1028auto x64 = -x63;
1029auto x65 = x61 + x62 + x64;
1030auto x66 = -x38 + x39 - x41 - x45*x51 - x49*(x27*x45 + x29*x47) - x57 - x60 - x65;
1031auto x67 = V{1}*cell[18];
1032auto x68 = V{1}*cell[4];
1033auto x69 = -x58;
1034auto x70 = x34 + x42 + x44 + x46 - cell[12] - cell[15] - cell[22] - cell[5];
1035auto x71 = x27*x70 + x28*x47;
1036auto x72 = x40 + x63;
1037auto x73 = V{1}*cell[5];
1038auto x74 = -V{1}*cell[17];
1039auto x75 = -x59;
1040auto x76 = x73 + x74 + x75;
1041auto x77 = V{2}*cell[13];
1042auto x78 = V{2}*cell[26];
1043auto x79 = V{2}*cell[11];
1044auto x80 = V{2}*cell[24];
1045auto x81 = V{1}*x48;
1046auto x82 = V{2}*x70;
1047auto x83 = -V{2}*cell[10] + V{2}*cell[12] - V{2}*cell[23] + V{2}*cell[25];
1048auto x84 = V{1}*cell[22];
1049auto x85 = V{1}*cell[8];
1050auto x86 = x28*x45 + x29*x70;
1051auto x87 = x37*x45;
1052auto x88 = -x53 + x56;
1053auto x89 = V{1}*cell[9];
1054auto x90 = -x52;
1055auto x91 = -V{1}*cell[21];
1056auto x92 = x89 + x90 + x91;
1057auto x93 = V{0.666666666666667}*cell[10];
1058auto x94 = V{0.666666666666667}*cell[11];
1059auto x95 = V{0.666666666666667}*cell[12];
1060auto x96 = V{0.666666666666667}*cell[13];
1061auto x97 = V{0.666666666666667}*cell[23];
1062auto x98 = V{0.666666666666667}*cell[24];
1063auto x99 = V{0.666666666666667}*cell[25];
1064auto x100 = V{0.666666666666667}*cell[26];
1065auto x101 = -V{0.333333333333333}*cell[0];
1066auto x102 = x100 + x101 + x93 + x94 + x95 + x96 + x97 + x98 + x99 - V{0.333333333333333}*cell[16] + V{0.666666666666667}*cell[17] + V{0.666666666666667}*cell[18] - V{0.333333333333333}*cell[3] + V{0.666666666666667}*cell[4] + V{0.666666666666667}*cell[5];
1067auto x103 = -V{0.333333333333333}*cell[15] + V{0.666666666666667}*cell[19] + V{0.666666666666667}*cell[20] - V{0.333333333333333}*cell[2] + V{0.666666666666667}*cell[6] + V{0.666666666666667}*cell[7];
1068auto x104 = x102 + x103 - x27*x47*x48 - x37*x47*x47 + V{0.666666666666667}*cell[14] + V{0.666666666666667}*cell[1] - V{0.333333333333333}*cell[21] - V{0.333333333333333}*cell[22] - V{0.333333333333333}*cell[8] - V{0.333333333333333}*cell[9];
1069auto x105 = -V{0.333333333333333}*cell[14] - V{0.333333333333333}*cell[1] + V{0.666666666666667}*cell[21] + V{0.666666666666667}*cell[22] + V{0.666666666666667}*cell[8] + V{0.666666666666667}*cell[9];
1070auto x106 = x102 + x105 - x28*x48*x70 - x37*x70*x70 + V{0.666666666666667}*cell[15] - V{0.333333333333333}*cell[19] - V{0.333333333333333}*cell[20] + V{0.666666666666667}*cell[2] - V{0.333333333333333}*cell[6] - V{0.333333333333333}*cell[7];
1071auto x107 = x100 + x101 + x103 + x105 - x29*x45*x48 - x37*x45*x45 + x93 + x94 + x95 + x96 + x97 + x98 + x99 + V{0.666666666666667}*cell[16] - V{0.333333333333333}*cell[17] - V{0.333333333333333}*cell[18] + V{0.666666666666667}*cell[3] - V{0.333333333333333}*cell[4] - V{0.333333333333333}*cell[5];
1072auto x108 = V{1} / (V{3.00000046417339}*util::sqrt(x37*(x32*x32)*util::sqrt(V{0.5}*(-x49*x71 - x51*x70 - x57 - x67 + x68 - x69 - x72 - x76)*(-x50*x82 - x71*x81 - x77 - x78 + x79 + x80 - x83 + V{2}*cell[17] - V{2}*cell[18] + V{2}*cell[4] - V{2}*cell[5]) + V{0.5}*(-x49*x86 - x55 - x60 - V{1}*x70*x87 - x72 - x84 + x85 - x88 - x92)*(x77 + x78 - x79 - x80 - x81*x86 - x82*x87 - x83 + V{2}*cell[21] - V{2}*cell[22] + V{2}*cell[8] - V{2}*cell[9]) + V{0.5}*(x104*x104) + V{0.5}*(x106*x106) + V{0.5}*(x107*x107) + x66*x66) + V{0.0277777691819762}/((x31)*(x31))) + V{0.5}/x31);
1073auto x109 = V{0.5}*x27;
1074auto x110 = V{1}*cell[1];
1075auto x111 = x54 + x58 + x68;
1076auto x112 = x39 + x40;
1077auto x113 = x110 + x111 + x112 - x38 + x52 + x65 - x67 + x76 + x88 - V{1}*cell[14];
1078auto x114 = -x113*x37;
1079auto x115 = x109 + x114;
1080auto x116 = V{0.5}*x28;
1081auto x117 = V{1}*cell[2];
1082auto x118 = x53 + x56 + x85;
1083auto x119 = x111 + x117 + x118 + x41 + x63 + x67 - x73 + x74 + x75 - x84 + x92 - V{1}*cell[15];
1084auto x120 = -x119*x37;
1085auto x121 = x116 + x120;
1086auto x122 = V{0.5}*x29;
1087auto x123 = V{1}*cell[3];
1088auto x124 = x112 + x118 + x123 + x38 + x54 + x59 - x61 + x62 + x64 + x69 + x84 - x89 + x90 + x91 - V{1}*cell[16];
1089auto x125 = -x124*x37;
1090auto x126 = x122 + x125;
1091auto x127 = V{-1} + V{1.5}*(x115*x115) + V{1.5}*(x121*x121) + V{1.5}*(x126*x126);
1092auto x128 = V{1} - x108;
1093auto x129 = V{0.0740740740740741}*cell[0] + V{0.0740740740740741}*cell[10] + V{0.0740740740740741}*cell[11] + V{0.0740740740740741}*cell[12] + V{0.0740740740740741}*cell[13] + V{0.0740740740740741}*cell[14] + V{0.0740740740740741}*cell[15] + V{0.0740740740740741}*cell[16] + V{0.0740740740740741}*cell[17] + V{0.0740740740740741}*cell[18] + V{0.0740740740740741}*cell[19] + V{0.0740740740740741}*cell[1] + V{0.0740740740740741}*cell[20] + V{0.0740740740740741}*cell[21] + V{0.0740740740740741}*cell[22] + V{0.0740740740740741}*cell[23] + V{0.0740740740740741}*cell[24] + V{0.0740740740740741}*cell[25] + V{0.0740740740740741}*cell[26] + V{0.0740740740740741}*cell[2] + V{0.0740740740740741}*cell[3] + V{0.0740740740740741}*cell[4] + V{0.0740740740740741}*cell[5] + V{0.0740740740740741}*cell[6] + V{0.0740740740740741}*cell[7] + V{0.0740740740740741}*cell[8] + V{0.0740740740740741}*cell[9] + V{0.0740740740740741};
1094auto x130 = V{2.25}*x27;
1095auto x131 = V{4.5}*cell[5];
1096auto x132 = V{4.5}*cell[7];
1097auto x133 = V{4.5}*cell[13];
1098auto x134 = V{4.5}*cell[18];
1099auto x135 = V{4.5}*cell[20];
1100auto x136 = V{4.5}*cell[26];
1101auto x137 = V{4.5}*cell[10];
1102auto x138 = V{4.5}*cell[11];
1103auto x139 = -V{4.5}*cell[23];
1104auto x140 = V{4.5}*cell[24];
1105auto x141 = x137 + x138 + x139 - x140 - V{4.5}*cell[17] + V{4.5}*cell[4];
1106auto x142 = V{4.5}*cell[12];
1107auto x143 = V{4.5}*cell[25];
1108auto x144 = x142 - x143 - V{4.5}*cell[19] + V{4.5}*cell[6];
1109auto x145 = x131 + x132 + x133 - x134 - x135 - x136 + x141 + x144 - V{4.5}*cell[14] + V{4.5}*cell[1];
1110auto x146 = -x145*x37;
1111auto x147 = x130 + x146;
1112auto x148 = V{1.5}*x27;
1113auto x149 = V{3}*cell[5];
1114auto x150 = V{3}*cell[7];
1115auto x151 = V{3}*cell[13];
1116auto x152 = V{3}*cell[18];
1117auto x153 = V{3}*cell[20];
1118auto x154 = V{3}*cell[26];
1119auto x155 = V{3}*cell[10];
1120auto x156 = V{3}*cell[11];
1121auto x157 = -V{3}*cell[23];
1122auto x158 = V{3}*cell[24];
1123auto x159 = x155 + x156 + x157 - x158 - V{3}*cell[17] + V{3}*cell[4];
1124auto x160 = V{3}*cell[12];
1125auto x161 = V{3}*cell[25];
1126auto x162 = x160 - x161 - V{3}*cell[19] + V{3}*cell[6];
1127auto x163 = x149 + x150 + x151 - x152 - x153 - x154 + x159 + x162 - V{3}*cell[14] + V{3}*cell[1];
1128auto x164 = -x163*x37;
1129auto x165 = x127 + x148 + x164;
1130auto x166 = V{2.25}*x28;
1131auto x167 = V{4.5}*cell[9];
1132auto x168 = V{4.5}*cell[22];
1133auto x169 = -x133 + x136 - V{4.5}*cell[21] + V{4.5}*cell[8];
1134auto x170 = -x131 + x134 + x141 - x142 + x143 + x167 - x168 + x169 - V{4.5}*cell[15] + V{4.5}*cell[2];
1135auto x171 = -x170*x37;
1136auto x172 = x166 + x171;
1137auto x173 = V{1.5}*x28;
1138auto x174 = V{3}*cell[9];
1139auto x175 = V{3}*cell[22];
1140auto x176 = -x151 + x154 - V{3}*cell[21] + V{3}*cell[8];
1141auto x177 = -x149 + x152 + x159 - x160 + x161 + x174 - x175 + x176 - V{3}*cell[15] + V{3}*cell[2];
1142auto x178 = -x177*x37;
1143auto x179 = x173 + x178;
1144auto x180 = x127 + x179;
1145auto x181 = V{2.25}*x29;
1146auto x182 = -x132 + x135 + x137 - x138 + x139 + x140 + x144 - x167 + x168 + x169 - V{4.5}*cell[16] + V{4.5}*cell[3];
1147auto x183 = -x182*x37;
1148auto x184 = x181 + x183;
1149auto x185 = V{1.5}*x29;
1150auto x186 = -x150 + x153 + x155 - x156 + x157 + x158 + x162 - x174 + x175 + x176 - V{3}*cell[16] + V{3}*cell[3];
1151auto x187 = -x186*x37;
1152auto x188 = x185 + x187;
1153auto x189 = x127 + x188;
1154auto x190 = V{0.0185185185185185}*cell[0] + V{0.0185185185185185}*cell[10] + V{0.0185185185185185}*cell[11] + V{0.0185185185185185}*cell[12] + V{0.0185185185185185}*cell[13] + V{0.0185185185185185}*cell[14] + V{0.0185185185185185}*cell[15] + V{0.0185185185185185}*cell[16] + V{0.0185185185185185}*cell[17] + V{0.0185185185185185}*cell[18] + V{0.0185185185185185}*cell[19] + V{0.0185185185185185}*cell[1] + V{0.0185185185185185}*cell[20] + V{0.0185185185185185}*cell[21] + V{0.0185185185185185}*cell[22] + V{0.0185185185185185}*cell[23] + V{0.0185185185185185}*cell[24] + V{0.0185185185185185}*cell[25] + V{0.0185185185185185}*cell[26] + V{0.0185185185185185}*cell[2] + V{0.0185185185185185}*cell[3] + V{0.0185185185185185}*cell[4] + V{0.0185185185185185}*cell[5] + V{0.0185185185185185}*cell[6] + V{0.0185185185185185}*cell[7] + V{0.0185185185185185}*cell[8] + V{0.0185185185185185}*cell[9] + V{0.0185185185185185};
1155auto x191 = x115 + x121;
1156auto x192 = x147 + x172;
1157auto x193 = x165 + x179;
1158auto x194 = -x116;
1159auto x195 = x115 - x120 + x194;
1160auto x196 = -x166;
1161auto x197 = x147 - x171 + x196;
1162auto x198 = -x173;
1163auto x199 = -x178 + x198;
1164auto x200 = x165 + x199;
1165auto x201 = -x122;
1166auto x202 = -x125 + x201;
1167auto x203 = x115 + x202;
1168auto x204 = -x181;
1169auto x205 = -x183 + x204;
1170auto x206 = x147 + x205;
1171auto x207 = -x185;
1172auto x208 = -x187 + x207;
1173auto x209 = x121 + x126;
1174auto x210 = x172 + x184;
1175auto x211 = x180 + x188;
1176auto x212 = x121 + x202;
1177auto x213 = x172 + x205;
1178auto x214 = V{0.00462962962962963}*cell[0] + V{0.00462962962962963}*cell[10] + V{0.00462962962962963}*cell[11] + V{0.00462962962962963}*cell[12] + V{0.00462962962962963}*cell[13] + V{0.00462962962962963}*cell[14] + V{0.00462962962962963}*cell[15] + V{0.00462962962962963}*cell[16] + V{0.00462962962962963}*cell[17] + V{0.00462962962962963}*cell[18] + V{0.00462962962962963}*cell[19] + V{0.00462962962962963}*cell[1] + V{0.00462962962962963}*cell[20] + V{0.00462962962962963}*cell[21] + V{0.00462962962962963}*cell[22] + V{0.00462962962962963}*cell[23] + V{0.00462962962962963}*cell[24] + V{0.00462962962962963}*cell[25] + V{0.00462962962962963}*cell[26] + V{0.00462962962962963}*cell[2] + V{0.00462962962962963}*cell[3] + V{0.00462962962962963}*cell[4] + V{0.00462962962962963}*cell[5] + V{0.00462962962962963}*cell[6] + V{0.00462962962962963}*cell[7] + V{0.00462962962962963}*cell[8] + V{0.00462962962962963}*cell[9] + V{0.00462962962962963};
1179auto x215 = x163*x37;
1180auto x216 = x109 - x113*x37;
1181auto x217 = x124*x37;
1182auto x218 = x201 + x217;
1183auto x219 = x119*x37;
1184auto x220 = x194 + x219;
1185auto x221 = x130 - x145*x37;
1186auto x222 = x182*x37;
1187auto x223 = x204 + x222;
1188auto x224 = x170*x37;
1189auto x225 = x196 + x224;
1190auto x226 = x216*x216;
1191auto x227 = x116 - x219;
1192auto x228 = x227*x227;
1193auto x229 = x122 - x217;
1194auto x230 = x229*x229;
1195auto x231 = V{1.5}*x226 + V{1.5}*x228 + V{1.5}*x230 + V{-1};
1196auto x232 = x177*x37;
1197auto x233 = x198 + x232;
1198auto x234 = x231 + x233;
1199auto x235 = x186*x37;
1200auto x236 = x207 + x235;
1201auto x237 = x234 + x236;
1202auto x238 = -x148;
1203auto x239 = x215 + x231 + x238;
1204auto x240 = x166 - x224;
1205auto x241 = x181 - x222;
1206auto x242 = x216 + x227;
1207auto x243 = x221 + x240;
1208auto x244 = x233 + x239;
1209auto x245 = -x164 + x238;
1210auto x246 = x216 + x229;
1211auto x247 = x221 + x241;
1212auto x248 = x236 + x239;
1213auto x0 = -x108*(x127*(V{0.296296296296296}*cell[0] + V{0.296296296296296}*cell[10] + V{0.296296296296296}*cell[11] + V{0.296296296296296}*cell[12] + V{0.296296296296296}*cell[13] + V{0.296296296296296}*cell[14] + V{0.296296296296296}*cell[15] + V{0.296296296296296}*cell[16] + V{0.296296296296296}*cell[17] + V{0.296296296296296}*cell[18] + V{0.296296296296296}*cell[19] + V{0.296296296296296}*cell[1] + V{0.296296296296296}*cell[20] + V{0.296296296296296}*cell[21] + V{0.296296296296296}*cell[22] + V{0.296296296296296}*cell[23] + V{0.296296296296296}*cell[24] + V{0.296296296296296}*cell[25] + V{0.296296296296296}*cell[26] + V{0.296296296296296}*cell[2] + V{0.296296296296296}*cell[3] + V{0.296296296296296}*cell[4] + V{0.296296296296296}*cell[5] + V{0.296296296296296}*cell[6] + V{0.296296296296296}*cell[7] + V{0.296296296296296}*cell[8] + V{0.296296296296296}*cell[9] + V{0.296296296296296}) + V{0.296296296296296}) + V{1}*x128*cell[0];
1214auto x1 = -x108*(x129*(-x115*x147 + x165) + V{0.0740740740740741}) + x110*x128;
1215auto x2 = -x108*(x129*(-x121*x172 + x180) + V{0.0740740740740741}) + x117*x128;
1216auto x3 = -x108*(x129*(-x126*x184 + x189) + V{0.0740740740740741}) + x123*x128;
1217auto x4 = -x108*(x190*(-x191*x192 + x193) + V{0.0185185185185185}) + x128*x68;
1218auto x5 = -x108*(x190*(-x195*x197 + x200) + V{0.0185185185185185}) + x128*x73;
1219auto x6 = -x108*(x190*(x165 + x188 - (x115 + x126)*(x147 + x184)) + V{0.0185185185185185}) + x128*x39;
1220auto x7 = -x108*(x190*(x165 - x203*x206 + x208) + V{0.0185185185185185}) + x128*x61;
1221auto x8 = -x108*(x190*(-x209*x210 + x211) + V{0.0185185185185185}) + x128*x85;
1222auto x9 = -x108*(x190*(x180 + x208 - x212*x213) + V{0.0185185185185185}) + x128*x89;
1223auto x10 = -x108*(x214*(x188 + x193 - (x126 + x191)*(x184 + x192)) + V{0.00462962962962963}) + x128*x54;
1224auto x11 = -x108*(x214*(x193 + x208 - (-x191 - x202)*(-x192 - x205)) + V{0.00462962962962963}) + x128*x58;
1225auto x12 = -x108*(x214*(x188 + x200 - (-x126 - x195)*(-x184 - x197)) + V{0.00462962962962963}) + x128*x40;
1226auto x13 = -x108*(x214*(x148 - x215 + x237 - (-x216 - x218 - x220)*(-x221 - x223 - x225)) + V{0.00462962962962963}) + x128*x52;
1227auto x14 = -x108*(x129*(-x216*x221 + x239) + V{0.0740740740740741}) + V{1}*x128*cell[14];
1228auto x15 = -x108*(x129*(-x227*x240 + x234) + V{0.0740740740740741}) + V{1}*x128*cell[15];
1229auto x16 = -x108*(x129*(-x229*x241 + x231 + x236) + V{0.0740740740740741}) + V{1}*x128*cell[16];
1230auto x17 = -x108*(x190*(-x242*x243 + x244) + V{0.0185185185185185}) + V{1}*x128*cell[17];
1231auto x18 = -x108*(x190*(x180 - x195*x197 + x245) + V{0.0185185185185185}) + x128*x67;
1232auto x19 = -x108*(x190*(-x246*x247 + x248) + V{0.0185185185185185}) + V{1}*x128*cell[19];
1233auto x20 = -x108*(x190*(x189 - x203*x206 + x245) + V{0.0185185185185185}) + x128*x38;
1234auto x21 = -x108*(x190*(x237 - (x227 + x229)*(x240 + x241)) + V{0.0185185185185185}) + V{1}*x128*cell[21];
1235auto x22 = -x108*(x190*(x189 + x199 - x212*x213) + V{0.0185185185185185}) + x128*x84;
1236auto x23 = -x108*(x214*(x236 + x244 - (x229 + x242)*(x241 + x243)) + V{0.00462962962962963}) + V{1}*x128*cell[23];
1237auto x24 = -x108*(x214*(x185 - x235 + x244 - (x218 + x242)*(x223 + x243)) + V{0.00462962962962963}) + x128*x59;
1238auto x25 = -x108*(x214*(x173 - x232 + x248 - (x220 + x246)*(x225 + x247)) + V{0.00462962962962963}) + x128*x63;
1239auto x26 = -x108*(x214*(x211 + x245 - (x109 + x114 - x209)*(x130 + x146 - x210)) + V{0.00462962962962963}) + x128*x53;
1240cell[0] = x0;
1241cell[1] = x1;
1242cell[2] = x2;
1243cell[3] = x3;
1244cell[4] = x4;
1245cell[5] = x5;
1246cell[6] = x6;
1247cell[7] = x7;
1248cell[8] = x8;
1249cell[9] = x9;
1250cell[10] = x10;
1251cell[11] = x11;
1252cell[12] = x12;
1253cell[13] = x13;
1254cell[14] = x14;
1255cell[15] = x15;
1256cell[16] = x16;
1257cell[17] = x17;
1258cell[18] = x18;
1259cell[19] = x19;
1260cell[20] = x20;
1261cell[21] = x21;
1262cell[22] = x22;
1263cell[23] = x23;
1264cell[24] = x24;
1265cell[25] = x25;
1266cell[26] = x26;
1267return { x36, x226 + x228 + x230 };
1268}
1269
1270template <typename CELL, typename PARAMETERS, typename V=typename CELL::value_t>
1271auto computeEffectiveOmega(CELL& cell, PARAMETERS& parameters) any_platform
1272{
1273auto x27 = cell.template getFieldComponent<olb::descriptors::FORCE>(0);
1274auto x28 = cell.template getFieldComponent<olb::descriptors::FORCE>(1);
1275auto x29 = cell.template getFieldComponent<olb::descriptors::FORCE>(2);
1276auto x32 = parameters.template get<olb::collision::LES::Smagorinsky>();
1277auto x31 = parameters.template get<olb::descriptors::OMEGA>();
1278auto x0 = cell[20] + cell[22] + cell[24] + cell[3];
1279auto x1 = cell[13] + cell[1] + cell[5] + cell[7];
1280auto x2 = cell[10] + cell[18] + cell[25] + cell[2] + cell[9];
1281auto x3 = x0 + x1 + x2 + cell[0] + cell[11] + cell[12] + cell[14] + cell[15] + cell[16] + cell[17] + cell[19] + cell[21] + cell[23] + cell[26] + cell[4] + cell[6] + cell[8];
1282auto x4 = V{1} / (x3 + V{1});
1283auto x5 = V{1}*cell[12];
1284auto x6 = V{1}*cell[25];
1285auto x7 = -cell[23];
1286auto x8 = x7 + cell[10] + cell[12] - cell[19] - cell[25] + cell[6];
1287auto x9 = -cell[13] - cell[21] + cell[26] + cell[8];
1288auto x10 = x0 + x8 + x9 - cell[11] - cell[16] - cell[7] - cell[9];
1289auto x11 = cell[11] - cell[17] - cell[24] + cell[4];
1290auto x12 = x1 + x11 + x8 - cell[14] - cell[18] - cell[20] - cell[26];
1291auto x13 = x4*(x3 + V{1});
1292auto x14 = V{0.5}*x13;
1293auto x15 = x12*x4;
1294auto x16 = V{1}*x15;
1295auto x17 = V{1}*cell[13];
1296auto x18 = V{1}*cell[26];
1297auto x19 = -V{1}*cell[10];
1298auto x20 = -V{1}*cell[23];
1299auto x21 = x17 + x18 + x19 + x20;
1300auto x22 = V{1}*cell[11];
1301auto x23 = V{1}*cell[24];
1302auto x24 = x22 + x23;
1303auto x25 = -x10*x16 - x14*(x10*x27 + x12*x29) - x21 - x24 + x5 + x6 + V{1}*cell[19] - V{1}*cell[20] + V{1}*cell[6] - V{1}*cell[7];
1304auto x26 = x11 + x2 + x7 + x9 - cell[12] - cell[15] - cell[22] - cell[5];
1305auto x30 = x12*x28 + x26*x27;
1306auto x33 = x5 + x6;
1307auto x34 = V{2}*cell[13];
1308auto x35 = V{2}*cell[26];
1309auto x36 = V{2}*cell[11];
1310auto x37 = V{2}*cell[24];
1311auto x38 = V{1}*x13;
1312auto x39 = V{2}*x26;
1313auto x40 = -V{2}*cell[10] + V{2}*cell[12] - V{2}*cell[23] + V{2}*cell[25];
1314auto x41 = x10*x28 + x26*x29;
1315auto x42 = x10*x4;
1316auto x43 = V{0.666666666666667}*cell[10];
1317auto x44 = V{0.666666666666667}*cell[11];
1318auto x45 = V{0.666666666666667}*cell[12];
1319auto x46 = V{0.666666666666667}*cell[13];
1320auto x47 = V{0.666666666666667}*cell[23];
1321auto x48 = V{0.666666666666667}*cell[24];
1322auto x49 = V{0.666666666666667}*cell[25];
1323auto x50 = V{0.666666666666667}*cell[26];
1324auto x51 = -V{0.333333333333333}*cell[0];
1325auto x52 = x43 + x44 + x45 + x46 + x47 + x48 + x49 + x50 + x51 - V{0.333333333333333}*cell[16] + V{0.666666666666667}*cell[17] + V{0.666666666666667}*cell[18] - V{0.333333333333333}*cell[3] + V{0.666666666666667}*cell[4] + V{0.666666666666667}*cell[5];
1326auto x53 = -V{0.333333333333333}*cell[15] + V{0.666666666666667}*cell[19] + V{0.666666666666667}*cell[20] - V{0.333333333333333}*cell[2] + V{0.666666666666667}*cell[6] + V{0.666666666666667}*cell[7];
1327auto x54 = -x12*x13*x27 - x4*x12*x12 + x52 + x53 + V{0.666666666666667}*cell[14] + V{0.666666666666667}*cell[1] - V{0.333333333333333}*cell[21] - V{0.333333333333333}*cell[22] - V{0.333333333333333}*cell[8] - V{0.333333333333333}*cell[9];
1328auto x55 = -V{0.333333333333333}*cell[14] - V{0.333333333333333}*cell[1] + V{0.666666666666667}*cell[21] + V{0.666666666666667}*cell[22] + V{0.666666666666667}*cell[8] + V{0.666666666666667}*cell[9];
1329auto x56 = -x13*x26*x28 - x4*x26*x26 + x52 + x55 + V{0.666666666666667}*cell[15] - V{0.333333333333333}*cell[19] - V{0.333333333333333}*cell[20] + V{0.666666666666667}*cell[2] - V{0.333333333333333}*cell[6] - V{0.333333333333333}*cell[7];
1330auto x57 = -x10*x13*x29 - x4*x10*x10 + x43 + x44 + x45 + x46 + x47 + x48 + x49 + x50 + x51 + x53 + x55 + V{0.666666666666667}*cell[16] - V{0.333333333333333}*cell[17] - V{0.333333333333333}*cell[18] + V{0.666666666666667}*cell[3] - V{0.333333333333333}*cell[4] - V{0.333333333333333}*cell[5];
1331return V{1} / (V{2.52268963608289}*util::sqrt(x4*(x32*x32)*util::sqrt((-x14*x30 - x16*x26 - x21 + x22 + x23 - x33 + V{1}*cell[17] - V{1}*cell[18] + V{1}*cell[4] - V{1}*cell[5])*(-x15*x39 - x30*x38 - x34 - x35 + x36 + x37 - x40 + V{2}*cell[17] - V{2}*cell[18] + V{2}*cell[4] - V{2}*cell[5]) + (x34 + x35 - x36 - x37 - x38*x41 - x39*x42 - x40 + V{2}*cell[21] - V{2}*cell[22] + V{2}*cell[8] - V{2}*cell[9])*(-x14*x41 + x17 + x18 - x19 - x20 - x24 - V{1}*x26*x42 - x33 + V{1}*cell[21] - V{1}*cell[22] + V{1}*cell[8] - V{1}*cell[9]) + 2*(x25*x25) + x54*x54 + x56*x56 + x57*x57) + V{0.0392836979096202}/((x31)*(x31))) + V{0.5}/x31);
1332}
1333
1334};
1335
1336
1337template <typename... FIELDS>
1338struct ShearSmagorinskyEffectiveOmega<BGK,descriptors::D2Q9<FIELDS...>,momenta::BulkTuple,equilibria::SecondOrder> {
1339
1340template <CONCEPT(MinimalCell) CELL, typename PARAMETERS, typename V=typename CELL::value_t>
1341CellStatistic<V> apply(CELL& cell, PARAMETERS& parameters) any_platform
1342{
1343auto x13 = parameters.template get<olb::descriptors::LATTICE_TIME>();
1344auto x14 = parameters.template get<olb::collision::LES::Smagorinsky>();
1345auto x11 = cell.template getFieldComponent<olb::descriptors::AV_SHEAR>(0);
1346auto x12 = parameters.template get<olb::descriptors::OMEGA>();
1347auto x9 = cell[1] + cell[7];
1348auto x10 = x9 + cell[0] + cell[2] + cell[3] + cell[4] + cell[5] + cell[6] + cell[8] + V{1};
1349auto x15 = V{1} / (x10);
1350auto x16 = V{1}*x15;
1351auto x17 = -cell[5];
1352auto x18 = x17 + cell[3];
1353auto x19 = cell[2] - cell[6];
1354auto x20 = x18 + x19 + cell[1] - cell[7];
1355auto x21 = x20*x20;
1356auto x22 = -V{0.333333333333333}*cell[0] + V{0.666666666666667}*cell[1] + V{0.666666666666667}*cell[3] + V{0.666666666666667}*cell[5] + V{0.666666666666667}*cell[7];
1357auto x23 = -x16*x21 + x22 + V{0.666666666666667}*cell[2] - V{0.333333333333333}*cell[4] + V{0.666666666666667}*cell[6] - V{0.333333333333333}*cell[8];
1358auto x24 = -cell[4] + cell[8];
1359auto x25 = x17 + x24 + x9 - cell[3];
1360auto x26 = x25*x25;
1361auto x27 = -x16*x26 + x22 - V{0.333333333333333}*cell[2] + V{0.666666666666667}*cell[4] - V{0.333333333333333}*cell[6] + V{0.666666666666667}*cell[8];
1362auto x28 = -x15*x20*x25 - x18 + cell[1] - cell[7];
1363auto x29 = V{1.4142135623731}*util::sqrt(V{0.5}*(x23*x23) + V{0.5}*(x27*x27) + x28*x28);
1364auto x30 = (x11*x13 + x29)/(x13 + V{1});
1365auto x31 = V{1} / (V{2.52268963608289}*util::sqrt(x15*(x29 - x30)*(x14*x14) + V{0.0392836979096202}/((x12)*(x12))) + V{0.5}/x12);
1366auto x32 = V{1} / ((x10)*(x10));
1367auto x33 = V{1.5}*x32;
1368auto x34 = x26*x33;
1369auto x35 = -x20;
1370auto x36 = x33*(x35*x35) + V{-1};
1371auto x37 = x34 + x36;
1372auto x38 = V{1} - x31;
1373auto x39 = V{0.0277777777777778}*cell[0] + V{0.0277777777777778}*cell[1] + V{0.0277777777777778}*cell[2] + V{0.0277777777777778}*cell[3] + V{0.0277777777777778}*cell[4] + V{0.0277777777777778}*cell[5] + V{0.0277777777777778}*cell[6] + V{0.0277777777777778}*cell[7] + V{0.0277777777777778}*cell[8] + V{0.0277777777777778};
1374auto x40 = V{4.5}*x32;
1375auto x41 = x19 + x24 + V{2}*cell[1] - V{2}*cell[5];
1376auto x42 = x40*(x41*x41);
1377auto x43 = V{3}*cell[3];
1378auto x44 = V{3}*cell[7];
1379auto x45 = V{3}*cell[1] - V{3}*cell[5];
1380auto x46 = x43 - x44 + x45 + V{3}*cell[2] - V{3}*cell[6];
1381auto x47 = x15*x46;
1382auto x48 = -x34 + x47 + V{1};
1383auto x49 = -x43 + x44 + x45 - V{3}*cell[4] + V{3}*cell[8];
1384auto x50 = x15*x49;
1385auto x51 = x21*x33;
1386auto x52 = x50 - x51;
1387auto x53 = V{0.111111111111111}*cell[0] + V{0.111111111111111}*cell[1] + V{0.111111111111111}*cell[2] + V{0.111111111111111}*cell[3] + V{0.111111111111111}*cell[4] + V{0.111111111111111}*cell[5] + V{0.111111111111111}*cell[6] + V{0.111111111111111}*cell[7] + V{0.111111111111111}*cell[8] + V{0.111111111111111};
1388auto x54 = V{3}*x32;
1389auto x55 = x19 + V{2}*cell[3] + cell[4] - V{2}*cell[7] - cell[8];
1390auto x56 = -x55;
1391auto x57 = x26*x54;
1392auto x58 = x34 + x47 + V{-1};
1393auto x59 = x51 + x58;
1394auto x0 = -x31*(x37*(V{0.444444444444444}*cell[0] + V{0.444444444444444}*cell[1] + V{0.444444444444444}*cell[2] + V{0.444444444444444}*cell[3] + V{0.444444444444444}*cell[4] + V{0.444444444444444}*cell[5] + V{0.444444444444444}*cell[6] + V{0.444444444444444}*cell[7] + V{0.444444444444444}*cell[8] + V{0.444444444444444}) + V{0.444444444444444}) + V{1}*x38*cell[0];
1395auto x1 = x31*(x39*(x42 + x48 + x52) + V{-0.0277777777777778}) + V{1}*x38*cell[1];
1396auto x2 = x31*(x53*(x21*x54 + x48) + V{-0.111111111111111}) + V{1}*x38*cell[2];
1397auto x3 = -x31*(x39*(-x15*x46 + x37 - x40*x56*x56 + x50) + V{0.0277777777777778}) + V{1}*x38*cell[3];
1398auto x4 = -x31*(x53*(x36 + x50 - x57) + V{0.111111111111111}) + V{1}*x38*cell[4];
1399auto x5 = -x31*(x39*(-x42 + x50 + x59) + V{0.0277777777777778}) + V{1}*x38*cell[5];
1400auto x6 = x31*(x53*(V{3}*x21*x32 - x58) + V{-0.111111111111111}) + V{1}*x38*cell[6];
1401auto x7 = x31*(-x39*(-x15*x49 - V{4.5}*x32*x55*x55 + x59) + V{-0.0277777777777778}) + V{1}*x38*cell[7];
1402auto x8 = x31*(x53*(x52 + x57 + V{1}) + V{-0.111111111111111}) + V{1}*x38*cell[8];
1403cell.template getFieldPointer<olb::descriptors::AV_SHEAR>()[0] = x30;
1404cell[0] = x0;
1405cell[1] = x1;
1406cell[2] = x2;
1407cell[3] = x3;
1408cell[4] = x4;
1409cell[5] = x5;
1410cell[6] = x6;
1411cell[7] = x7;
1412cell[8] = x8;
1413return { x10, V{1}*x32*(x21 + x26) };
1414}
1415
1416template <typename CELL, typename PARAMETERS, typename V=typename CELL::value_t>
1417auto computeEffectiveOmega(CELL& cell, PARAMETERS& parameters) any_platform
1418{
1419auto x13 = parameters.template get<olb::descriptors::LATTICE_TIME>();
1420auto x14 = parameters.template get<olb::collision::LES::Smagorinsky>();
1421auto x11 = cell.template getFieldComponent<olb::descriptors::AV_SHEAR>(0);
1422auto x12 = parameters.template get<olb::descriptors::OMEGA>();
1423auto x0 = cell[1] + cell[2];
1424auto x1 = cell[7] + cell[8];
1425auto x2 = V{1} / (x0 + x1 + cell[0] + cell[3] + cell[4] + cell[5] + cell[6] + V{1});
1426auto x3 = V{1}*x2;
1427auto x4 = -cell[5];
1428auto x5 = x4 + cell[3];
1429auto x6 = x0 + x5 - cell[6] - cell[7];
1430auto x7 = -V{0.333333333333333}*cell[0] + V{0.666666666666667}*cell[1] + V{0.666666666666667}*cell[3] + V{0.666666666666667}*cell[5] + V{0.666666666666667}*cell[7];
1431auto x8 = -x3*x6*x6 + x7 + V{0.666666666666667}*cell[2] - V{0.333333333333333}*cell[4] + V{0.666666666666667}*cell[6] - V{0.333333333333333}*cell[8];
1432auto x9 = x1 + x4 + cell[1] - cell[3] - cell[4];
1433auto x10 = -x3*x9*x9 + x7 - V{0.333333333333333}*cell[2] + V{0.666666666666667}*cell[4] - V{0.333333333333333}*cell[6] + V{0.666666666666667}*cell[8];
1434auto x15 = -x2*x6*x9 - x5 + cell[1] - cell[7];
1435auto x16 = V{1.4142135623731}*util::sqrt(V{0.5}*(x10*x10) + x15*x15 + V{0.5}*(x8*x8));
1436return V{1} / (V{2.52268963608289}*util::sqrt(x2*(x16 - (x11*x13 + x16)/(x13 + V{1}))*(x14*x14) + V{0.0392836979096202}/((x12)*(x12))) + V{0.5}/x12);
1437}
1438
1439};
1440
1441template <typename... FIELDS>
1442struct ShearSmagorinskyEffectiveOmega<BGK,descriptors::D3Q19<FIELDS...>,momenta::BulkTuple,equilibria::SecondOrder> {
1443
1444template <CONCEPT(MinimalCell) CELL, typename PARAMETERS, typename V=typename CELL::value_t>
1445CellStatistic<V> apply(CELL& cell, PARAMETERS& parameters) any_platform
1446{
1447auto x23 = parameters.template get<olb::descriptors::OMEGA>();
1448auto x22 = cell.template getFieldComponent<olb::descriptors::AV_SHEAR>(0);
1449auto x25 = parameters.template get<olb::collision::LES::Smagorinsky>();
1450auto x24 = parameters.template get<olb::descriptors::LATTICE_TIME>();
1451auto x19 = cell[15] + cell[17];
1452auto x20 = x19 + cell[12];
1453auto x21 = cell[11] + cell[18];
1454auto x26 = cell[10] + cell[14] + cell[16];
1455auto x27 = cell[2] + cell[8] + cell[9];
1456auto x28 = cell[13] + cell[3];
1457auto x29 = x20 + x21 + x26 + x27 + x28 + cell[0] + cell[1] + cell[4] + cell[5] + cell[6] + cell[7] + V{1};
1458auto x30 = V{1} / (x29);
1459auto x31 = V{0.333333333333333}*cell[4];
1460auto x32 = V{0.333333333333333}*cell[5];
1461auto x33 = V{0.333333333333333}*cell[13];
1462auto x34 = V{0.333333333333333}*cell[14];
1463auto x35 = V{1}*x30;
1464auto x36 = -cell[3];
1465auto x37 = -cell[18];
1466auto x38 = -cell[8];
1467auto x39 = x38 + cell[9];
1468auto x40 = x36 + x37 + x39;
1469auto x41 = -cell[6];
1470auto x42 = x41 + cell[7];
1471auto x43 = x42 - cell[16];
1472auto x44 = x20 + x40 + x43;
1473auto x45 = x44*x44;
1474auto x46 = V{0.333333333333333}*cell[0];
1475auto x47 = V{0.333333333333333}*cell[1];
1476auto x48 = V{0.333333333333333}*cell[10];
1477auto x49 = x46 + x47 + x48 - V{0.666666666666667}*cell[17] - V{0.666666666666667}*cell[18] - V{0.666666666666667}*cell[8] - V{0.666666666666667}*cell[9];
1478auto x50 = V{0.333333333333333}*cell[2];
1479auto x51 = V{0.333333333333333}*cell[11];
1480auto x52 = x50 + x51 - V{0.666666666666667}*cell[15] - V{0.666666666666667}*cell[16] - V{0.666666666666667}*cell[6] - V{0.666666666666667}*cell[7];
1481auto x53 = x31 + x32 + x33 + x34 + x35*x45 + x49 + x52 - V{0.666666666666667}*cell[12] - V{0.666666666666667}*cell[3];
1482auto x54 = V{0.333333333333333}*cell[6];
1483auto x55 = V{0.333333333333333}*cell[7];
1484auto x56 = V{0.333333333333333}*cell[15];
1485auto x57 = V{0.333333333333333}*cell[16];
1486auto x58 = cell[13] + cell[17];
1487auto x59 = -cell[2];
1488auto x60 = -cell[9];
1489auto x61 = x21 + x38 + x59 + x60;
1490auto x62 = -cell[4];
1491auto x63 = x62 + cell[5];
1492auto x64 = x63 - cell[14];
1493auto x65 = x58 + x61 + x64;
1494auto x66 = x65*x65;
1495auto x67 = V{0.333333333333333}*cell[3];
1496auto x68 = V{0.333333333333333}*cell[12];
1497auto x69 = x67 + x68 - V{0.666666666666667}*cell[13] - V{0.666666666666667}*cell[14] - V{0.666666666666667}*cell[4] - V{0.666666666666667}*cell[5];
1498auto x70 = x35*x66 + x49 + x54 + x55 + x56 + x57 + x69 - V{0.666666666666667}*cell[11] - V{0.666666666666667}*cell[2];
1499auto x71 = V{0.333333333333333}*cell[8];
1500auto x72 = V{0.333333333333333}*cell[9];
1501auto x73 = V{0.333333333333333}*cell[17];
1502auto x74 = V{0.333333333333333}*cell[18];
1503auto x75 = cell[13] + cell[15];
1504auto x76 = -cell[1];
1505auto x77 = -cell[7];
1506auto x78 = x41 + x76 + x77;
1507auto x79 = x62 - cell[5];
1508auto x80 = x26 + x75 + x78 + x79;
1509auto x81 = x80*x80;
1510auto x82 = x35*x81 + x46 + x52 + x69 + x71 + x72 + x73 + x74 - V{0.666666666666667}*cell[10] - V{0.666666666666667}*cell[1];
1511auto x83 = x30*x80;
1512auto x84 = x63 + x65*x83 - cell[13] + cell[14];
1513auto x85 = -cell[15] + cell[16];
1514auto x86 = x42 + x44*x83 + x85;
1515auto x87 = -cell[17];
1516auto x88 = x87 + cell[18];
1517auto x89 = x30*x44*x65 + x39 + x88;
1518auto x90 = V{1.4142135623731}*util::sqrt(V{0.5}*(x53*x53) + V{0.5}*(x70*x70) + V{0.5}*(x82*x82) + x84*x84 + x86*x86 + x89*x89);
1519auto x91 = (x22*x24 + x90)/(x24 + V{1});
1520auto x92 = V{1} / (V{2.52268963608289}*util::sqrt(x30*(x90 - x91)*(x25*x25) + V{0.0392836979096202}/((x23)*(x23))) + V{0.5}/x23);
1521auto x93 = V{1} / ((x29)*(x29));
1522auto x94 = V{1.5}*x93;
1523auto x95 = x81*x94;
1524auto x96 = x66*x94;
1525auto x97 = x45*x94;
1526auto x98 = x96 + x97 + V{-1};
1527auto x99 = x95 + x98;
1528auto x100 = V{1} - x92;
1529auto x101 = V{0.0555555555555556}*cell[0] + V{0.0555555555555556}*cell[10] + V{0.0555555555555556}*cell[11] + V{0.0555555555555556}*cell[12] + V{0.0555555555555556}*cell[13] + V{0.0555555555555556}*cell[14] + V{0.0555555555555556}*cell[15] + V{0.0555555555555556}*cell[16] + V{0.0555555555555556}*cell[17] + V{0.0555555555555556}*cell[18] + V{0.0555555555555556}*cell[1] + V{0.0555555555555556}*cell[2] + V{0.0555555555555556}*cell[3] + V{0.0555555555555556}*cell[4] + V{0.0555555555555556}*cell[5] + V{0.0555555555555556}*cell[6] + V{0.0555555555555556}*cell[7] + V{0.0555555555555556}*cell[8] + V{0.0555555555555556}*cell[9] + V{0.0555555555555556};
1530auto x102 = V{3}*cell[14];
1531auto x103 = V{3}*cell[16];
1532auto x104 = V{3}*cell[5];
1533auto x105 = V{3}*cell[7];
1534auto x106 = V{3}*cell[13] - V{3}*cell[4];
1535auto x107 = V{3}*cell[15] - V{3}*cell[6];
1536auto x108 = x30*(x102 + x103 - x104 - x105 + x106 + x107 + V{3}*cell[10] - V{3}*cell[1]);
1537auto x109 = V{3}*x93;
1538auto x110 = x109*x81;
1539auto x111 = V{3}*cell[18];
1540auto x112 = V{3}*cell[9];
1541auto x113 = V{3}*cell[17] - V{3}*cell[8];
1542auto x114 = x30*(-x102 + x104 + x106 + x111 - x112 + x113 + V{3}*cell[11] - V{3}*cell[2]);
1543auto x115 = x109*x66;
1544auto x116 = x95 + V{-1};
1545auto x117 = x30*(-x103 + x105 + x107 - x111 + x112 + x113 + V{3}*cell[12] - V{3}*cell[3]);
1546auto x118 = x109*x45;
1547auto x119 = V{0.0277777777777778}*cell[0] + V{0.0277777777777778}*cell[10] + V{0.0277777777777778}*cell[11] + V{0.0277777777777778}*cell[12] + V{0.0277777777777778}*cell[13] + V{0.0277777777777778}*cell[14] + V{0.0277777777777778}*cell[15] + V{0.0277777777777778}*cell[16] + V{0.0277777777777778}*cell[17] + V{0.0277777777777778}*cell[18] + V{0.0277777777777778}*cell[1] + V{0.0277777777777778}*cell[2] + V{0.0277777777777778}*cell[3] + V{0.0277777777777778}*cell[4] + V{0.0277777777777778}*cell[5] + V{0.0277777777777778}*cell[6] + V{0.0277777777777778}*cell[7] + V{0.0277777777777778}*cell[8] + V{0.0277777777777778}*cell[9] + V{0.0277777777777778};
1548auto x120 = V{4.5}*x93;
1549auto x121 = x78 + cell[10] + cell[16];
1550auto x122 = x121 + x19 + x61 + V{2}*cell[13] - V{2}*cell[4];
1551auto x123 = x120*(x122*x122);
1552auto x124 = x108 + x99;
1553auto x125 = -x114;
1554auto x126 = x121 + x27 + x37 + x87 - cell[11] + V{2}*cell[14] + cell[15] - V{2}*cell[5];
1555auto x127 = -x126;
1556auto x128 = x76 + x79 + cell[10] + cell[14];
1557auto x129 = x128 + x40 + x58 + cell[12] + V{2}*cell[15] - V{2}*cell[6];
1558auto x130 = x120*(x129*x129);
1559auto x131 = -x117;
1560auto x132 = x28 - cell[12];
1561auto x133 = x128 + x132 + x60 + x88 + V{2}*cell[16] - V{2}*cell[7] + cell[8];
1562auto x134 = -x133;
1563auto x135 = x59 + x64 + cell[11];
1564auto x136 = x135 + x36 + x43 + x75 + cell[12] + V{2}*cell[17] - V{2}*cell[8];
1565auto x137 = x120*(x136*x136);
1566auto x138 = x114 + x99;
1567auto x139 = x132 + x135 + x77 + x85 + V{2}*cell[18] + cell[6] - V{2}*cell[9];
1568auto x140 = -x139;
1569auto x141 = -x96;
1570auto x142 = V{1} - x97;
1571auto x143 = x141 + x142;
1572auto x144 = x108 + x143;
1573auto x145 = -x95;
1574auto x146 = x114 + x145;
1575auto x147 = x117 + x145;
1576auto x148 = -x108;
1577auto x149 = x117 + x99;
1578cell[0] = V{1}*x100*cell[0] - x92*(x99*(x31 + x32 + x33 + x34 + x46 + x47 + x48 + x50 + x51 + x54 + x55 + x56 + x57 + x67 + x68 + x71 + x72 + x73 + x74 + V{0.333333333333333}) + V{0.333333333333333});
1579cell[1] = V{1}*x100*cell[1] - x92*(x101*(x108 - x110 + x98) + V{0.0555555555555556});
1580cell[2] = V{1}*x100*cell[2] - x92*(x101*(x114 - x115 + x116 + x97) + V{0.0555555555555556});
1581cell[3] = V{1}*x100*cell[3] - x92*(x101*(x116 + x117 - x118 + x96) + V{0.0555555555555556});
1582cell[4] = V{1}*x100*cell[4] - x92*(x119*(x114 - x123 + x124) + V{0.0277777777777778});
1583cell[5] = V{1}*x100*cell[5] - x92*(x119*(-x120*x127*x127 + x124 + x125) + V{0.0277777777777778});
1584cell[6] = V{1}*x100*cell[6] - x92*(x119*(x117 + x124 - x130) + V{0.0277777777777778});
1585cell[7] = V{1}*x100*cell[7] - x92*(x119*(-x120*x134*x134 + x124 + x131) + V{0.0277777777777778});
1586cell[8] = V{1}*x100*cell[8] - x92*(x119*(x117 - x137 + x138) + V{0.0277777777777778});
1587cell[9] = V{1}*x100*cell[9] - x92*(x119*(-x120*x140*x140 + x131 + x138) + V{0.0277777777777778});
1588cell[10] = V{1}*x100*cell[10] + x92*(x101*(x110 + x144) + V{-0.0555555555555556});
1589cell[11] = V{1}*x100*cell[11] + x92*(x101*(x115 + x142 + x146) + V{-0.0555555555555556});
1590cell[12] = V{1}*x100*cell[12] + x92*(x101*(x118 + x141 + x147 + V{1}) + V{-0.0555555555555556});
1591cell[13] = V{1}*x100*cell[13] + x92*(x119*(x123 + x144 + x146) + V{-0.0277777777777778});
1592cell[14] = V{1}*x100*cell[14] - x92*(x119*(-x120*x126*x126 + x138 + x148) + V{0.0277777777777778});
1593cell[15] = V{1}*x100*cell[15] + x92*(x119*(x130 + x144 + x147) + V{-0.0277777777777778});
1594cell[16] = V{1}*x100*cell[16] - x92*(x119*(-x120*x133*x133 + x148 + x149) + V{0.0277777777777778});
1595cell[17] = V{1}*x100*cell[17] + x92*(x119*(x117 + x137 + x143 + x146) + V{-0.0277777777777778});
1596cell[18] = V{1}*x100*cell[18] - x92*(x119*(-x120*x139*x139 + x125 + x149) + V{0.0277777777777778});
1597cell.template getFieldPointer<olb::descriptors::AV_SHEAR>()[0] = x91;
1598return { x29, V{1}*x93*(x45 + x66 + x81) };
1599}
1600
1601template <typename CELL, typename PARAMETERS, typename V=typename CELL::value_t>
1602auto computeEffectiveOmega(CELL& cell, PARAMETERS& parameters) any_platform
1603{
1604auto x23 = parameters.template get<olb::descriptors::OMEGA>();
1605auto x24 = parameters.template get<olb::descriptors::LATTICE_TIME>();
1606auto x22 = cell.template getFieldComponent<olb::descriptors::AV_SHEAR>(0);
1607auto x25 = parameters.template get<olb::collision::LES::Smagorinsky>();
1608auto x0 = cell[12] + cell[15] + cell[17];
1609auto x1 = cell[11] + cell[13] + cell[18];
1610auto x2 = cell[10] + cell[14] + cell[16];
1611auto x3 = V{1} / (x0 + x1 + x2 + cell[0] + cell[1] + cell[2] + cell[3] + cell[4] + cell[5] + cell[6] + cell[7] + cell[8] + cell[9] + V{1});
1612auto x4 = V{1}*x3;
1613auto x5 = -cell[6];
1614auto x6 = x5 + cell[7];
1615auto x7 = -cell[8];
1616auto x8 = x7 + cell[9];
1617auto x9 = x0 + x6 + x8 - cell[16] - cell[18] - cell[3];
1618auto x10 = V{0.333333333333333}*cell[0];
1619auto x11 = x10 + V{0.333333333333333}*cell[10] - V{0.666666666666667}*cell[17] - V{0.666666666666667}*cell[18] + V{0.333333333333333}*cell[1] - V{0.666666666666667}*cell[8] - V{0.666666666666667}*cell[9];
1620auto x12 = V{0.333333333333333}*cell[11] - V{0.666666666666667}*cell[15] - V{0.666666666666667}*cell[16] + V{0.333333333333333}*cell[2] - V{0.666666666666667}*cell[6] - V{0.666666666666667}*cell[7];
1621auto x13 = x11 + x12 + x4*(x9*x9) - V{0.666666666666667}*cell[12] + V{0.333333333333333}*cell[13] + V{0.333333333333333}*cell[14] - V{0.666666666666667}*cell[3] + V{0.333333333333333}*cell[4] + V{0.333333333333333}*cell[5];
1622auto x14 = -cell[4];
1623auto x15 = x14 + cell[5];
1624auto x16 = x1 + x15 + x7 - cell[14] + cell[17] - cell[2] - cell[9];
1625auto x17 = V{0.333333333333333}*cell[12] - V{0.666666666666667}*cell[13] - V{0.666666666666667}*cell[14] + V{0.333333333333333}*cell[3] - V{0.666666666666667}*cell[4] - V{0.666666666666667}*cell[5];
1626auto x18 = x11 + x17 + x4*(x16*x16) - V{0.666666666666667}*cell[11] + V{0.333333333333333}*cell[15] + V{0.333333333333333}*cell[16] - V{0.666666666666667}*cell[2] + V{0.333333333333333}*cell[6] + V{0.333333333333333}*cell[7];
1627auto x19 = x14 + x2 + x5 + cell[13] + cell[15] - cell[1] - cell[5] - cell[7];
1628auto x20 = x10 + x12 + x17 + x4*(x19*x19) - V{0.666666666666667}*cell[10] + V{0.333333333333333}*cell[17] + V{0.333333333333333}*cell[18] - V{0.666666666666667}*cell[1] + V{0.333333333333333}*cell[8] + V{0.333333333333333}*cell[9];
1629auto x21 = x19*x3;
1630auto x26 = x15 + x16*x21 - cell[13] + cell[14];
1631auto x27 = x21*x9 + x6 - cell[15] + cell[16];
1632auto x28 = x16*x3*x9 + x8 - cell[17] + cell[18];
1633auto x29 = V{1.4142135623731}*util::sqrt(V{0.5}*(x13*x13) + V{0.5}*(x18*x18) + V{0.5}*(x20*x20) + x26*x26 + x27*x27 + x28*x28);
1634return V{1} / (V{2.52268963608289}*util::sqrt(x3*(x29 - (x22*x24 + x29)/(x24 + V{1}))*(x25*x25) + V{0.0392836979096202}/((x23)*(x23))) + V{0.5}/x23);
1635}
1636
1637};
1638
1639template <typename... FIELDS>
1640struct ShearSmagorinskyEffectiveOmega<BGK,descriptors::D3Q27<FIELDS...>,momenta::BulkTuple,equilibria::SecondOrder> {
1641
1642template <CONCEPT(MinimalCell) CELL, typename PARAMETERS, typename V=typename CELL::value_t>
1643CellStatistic<V> apply(CELL& cell, PARAMETERS& parameters) any_platform
1644{
1645auto x33 = parameters.template get<olb::collision::LES::Smagorinsky>();
1646auto x32 = parameters.template get<olb::descriptors::LATTICE_TIME>();
1647auto x31 = parameters.template get<olb::descriptors::OMEGA>();
1648auto x30 = cell.template getFieldComponent<olb::descriptors::AV_SHEAR>(0);
1649auto x27 = cell[10] + cell[6];
1650auto x28 = x27 + cell[13];
1651auto x29 = cell[12] + cell[26];
1652auto x34 = cell[15] + cell[21];
1653auto x35 = cell[19] + cell[7];
1654auto x36 = cell[24] + cell[25];
1655auto x37 = x36 + cell[14];
1656auto x38 = x28 + x29 + x34 + x35 + x37 + cell[0] + cell[11] + cell[16] + cell[17] + cell[18] + cell[1] + cell[20] + cell[22] + cell[23] + cell[2] + cell[3] + cell[4] + cell[5] + cell[8] + cell[9] + V{1};
1657auto x39 = V{1} / (x38);
1658auto x40 = V{1}*x39;
1659auto x41 = -cell[24];
1660auto x42 = -cell[19];
1661auto x43 = x42 + cell[7];
1662auto x44 = -cell[25];
1663auto x45 = x44 + cell[11];
1664auto x46 = x43 + x45;
1665auto x47 = -cell[23];
1666auto x48 = -cell[26];
1667auto x49 = x47 + x48 + cell[12];
1668auto x50 = -cell[20];
1669auto x51 = x50 + cell[4];
1670auto x52 = -cell[17];
1671auto x53 = x52 + cell[5];
1672auto x54 = -cell[14] + cell[1];
1673auto x55 = x53 + x54 - cell[18];
1674auto x56 = x28 + x41 + x46 + x49 + x51 + x55;
1675auto x57 = x56*x56;
1676auto x58 = V{0.666666666666667}*cell[10];
1677auto x59 = V{0.666666666666667}*cell[11];
1678auto x60 = V{0.666666666666667}*cell[12];
1679auto x61 = V{0.666666666666667}*cell[13];
1680auto x62 = V{0.666666666666667}*cell[23];
1681auto x63 = V{0.666666666666667}*cell[24];
1682auto x64 = V{0.666666666666667}*cell[25];
1683auto x65 = V{0.666666666666667}*cell[26];
1684auto x66 = -V{0.333333333333333}*cell[0];
1685auto x67 = x58 + x59 + x60 + x61 + x62 + x63 + x64 + x65 + x66 - V{0.333333333333333}*cell[16] + V{0.666666666666667}*cell[17] + V{0.666666666666667}*cell[18] - V{0.333333333333333}*cell[3] + V{0.666666666666667}*cell[4] + V{0.666666666666667}*cell[5];
1686auto x68 = -V{0.333333333333333}*cell[15] + V{0.666666666666667}*cell[19] + V{0.666666666666667}*cell[20] - V{0.333333333333333}*cell[2] + V{0.666666666666667}*cell[6] + V{0.666666666666667}*cell[7];
1687auto x69 = -x40*x57 + x67 + x68 + V{0.666666666666667}*cell[14] + V{0.666666666666667}*cell[1] - V{0.333333333333333}*cell[21] - V{0.333333333333333}*cell[22] - V{0.333333333333333}*cell[8] - V{0.333333333333333}*cell[9];
1688auto x70 = -cell[12];
1689auto x71 = x70 + cell[26];
1690auto x72 = -cell[13];
1691auto x73 = -cell[21];
1692auto x74 = x73 + cell[9];
1693auto x75 = x72 + x74 + cell[11];
1694auto x76 = x47 + cell[8];
1695auto x77 = -cell[22];
1696auto x78 = x77 + cell[4];
1697auto x79 = -cell[15] + cell[2];
1698auto x80 = x79 + cell[10];
1699auto x81 = x52 + cell[18] - cell[5];
1700auto x82 = x41 + x71 + x75 + x76 + x78 + x80 + x81 + cell[25];
1701auto x83 = x82*x82;
1702auto x84 = -V{0.333333333333333}*cell[14] - V{0.333333333333333}*cell[1] + V{0.666666666666667}*cell[21] + V{0.666666666666667}*cell[22] + V{0.666666666666667}*cell[8] + V{0.666666666666667}*cell[9];
1703auto x85 = -x40*x83 + x67 + x84 + V{0.666666666666667}*cell[15] - V{0.333333333333333}*cell[19] - V{0.333333333333333}*cell[20] + V{0.666666666666667}*cell[2] - V{0.333333333333333}*cell[6] - V{0.333333333333333}*cell[7];
1704auto x86 = -cell[11];
1705auto x87 = -cell[16];
1706auto x88 = x72 + x87 + cell[3];
1707auto x89 = -cell[9];
1708auto x90 = x73 + x89 + cell[22];
1709auto x91 = x42 + cell[20] - cell[7];
1710auto x92 = x27 + x29 + x44 + x76 + x86 + x88 + x90 + x91 + cell[24];
1711auto x93 = x92*x92;
1712auto x94 = -x40*x93 + x58 + x59 + x60 + x61 + x62 + x63 + x64 + x65 + x66 + x68 + x84 + V{0.666666666666667}*cell[16] - V{0.333333333333333}*cell[17] - V{0.333333333333333}*cell[18] + V{0.666666666666667}*cell[3] - V{0.333333333333333}*cell[4] - V{0.333333333333333}*cell[5];
1713auto x95 = -cell[10];
1714auto x96 = x39*x56;
1715auto x97 = x41 + cell[12] + cell[26];
1716auto x98 = x47 + cell[13] + cell[25];
1717auto x99 = x53 + x82*x96 + x86 + x95 + x97 + x98 + cell[18] - cell[4];
1718auto x100 = -cell[6];
1719auto x101 = x47 + cell[13] + cell[24];
1720auto x102 = x100 + x101 + x46 + x71 + x92*x96 + x95 + cell[20];
1721auto x103 = -cell[8];
1722auto x104 = x103 + cell[22];
1723auto x105 = x104 + x36 + x39*x82*x92 + x49 + x75 + x95;
1724auto x106 = V{1.4142135623731}*util::sqrt(x102*x102 + x105*x105 + V{0.5}*(x69*x69) + V{0.5}*(x85*x85) + V{0.5}*(x94*x94) + x99*x99);
1725auto x107 = (x106 + x30*x32)/(x32 + V{1});
1726auto x108 = V{1} / (V{2.52268963608289}*util::sqrt(x39*(x106 - x107)*(x33*x33) + V{0.0392836979096202}/((x31)*(x31))) + V{0.5}/x31);
1727auto x109 = V{1} / ((x38)*(x38));
1728auto x110 = V{1.5}*x109;
1729auto x111 = -x56;
1730auto x112 = x111*x111;
1731auto x113 = x110*x112;
1732auto x114 = -x82;
1733auto x115 = x114*x114;
1734auto x116 = x110*x115;
1735auto x117 = -x92;
1736auto x118 = x117*x117;
1737auto x119 = x110*x118;
1738auto x120 = x116 + x119 + V{-1};
1739auto x121 = x113 + x120;
1740auto x122 = V{1} - x108;
1741auto x123 = V{0.0740740740740741}*cell[0] + V{0.0740740740740741}*cell[10] + V{0.0740740740740741}*cell[11] + V{0.0740740740740741}*cell[12] + V{0.0740740740740741}*cell[13] + V{0.0740740740740741}*cell[14] + V{0.0740740740740741}*cell[15] + V{0.0740740740740741}*cell[16] + V{0.0740740740740741}*cell[17] + V{0.0740740740740741}*cell[18] + V{0.0740740740740741}*cell[19] + V{0.0740740740740741}*cell[1] + V{0.0740740740740741}*cell[20] + V{0.0740740740740741}*cell[21] + V{0.0740740740740741}*cell[22] + V{0.0740740740740741}*cell[23] + V{0.0740740740740741}*cell[24] + V{0.0740740740740741}*cell[25] + V{0.0740740740740741}*cell[26] + V{0.0740740740740741}*cell[2] + V{0.0740740740740741}*cell[3] + V{0.0740740740740741}*cell[4] + V{0.0740740740740741}*cell[5] + V{0.0740740740740741}*cell[6] + V{0.0740740740740741}*cell[7] + V{0.0740740740740741}*cell[8] + V{0.0740740740740741}*cell[9] + V{0.0740740740740741};
1742auto x124 = V{3}*cell[5];
1743auto x125 = V{3}*cell[7];
1744auto x126 = V{3}*cell[13];
1745auto x127 = V{3}*cell[18];
1746auto x128 = V{3}*cell[20];
1747auto x129 = V{3}*cell[26];
1748auto x130 = V{3}*cell[10];
1749auto x131 = V{3}*cell[11];
1750auto x132 = -V{3}*cell[23];
1751auto x133 = V{3}*cell[24];
1752auto x134 = x130 + x131 + x132 - x133 - V{3}*cell[17] + V{3}*cell[4];
1753auto x135 = V{3}*cell[12];
1754auto x136 = V{3}*cell[25];
1755auto x137 = x135 - x136 - V{3}*cell[19] + V{3}*cell[6];
1756auto x138 = x124 + x125 + x126 - x127 - x128 - x129 + x134 + x137 - V{3}*cell[14] + V{3}*cell[1];
1757auto x139 = -x138*x39;
1758auto x140 = V{3}*x109;
1759auto x141 = V{3}*cell[9];
1760auto x142 = V{3}*cell[22];
1761auto x143 = -x126 + x129 - V{3}*cell[21] + V{3}*cell[8];
1762auto x144 = -x124 + x127 + x134 - x135 + x136 + x141 - x142 + x143 - V{3}*cell[15] + V{3}*cell[2];
1763auto x145 = -x144*x39;
1764auto x146 = x113 + V{-1};
1765auto x147 = -x125 + x128 + x130 - x131 + x132 + x133 + x137 - x141 + x142 + x143 - V{3}*cell[16] + V{3}*cell[3];
1766auto x148 = -x147*x39;
1767auto x149 = V{0.0185185185185185}*cell[0] + V{0.0185185185185185}*cell[10] + V{0.0185185185185185}*cell[11] + V{0.0185185185185185}*cell[12] + V{0.0185185185185185}*cell[13] + V{0.0185185185185185}*cell[14] + V{0.0185185185185185}*cell[15] + V{0.0185185185185185}*cell[16] + V{0.0185185185185185}*cell[17] + V{0.0185185185185185}*cell[18] + V{0.0185185185185185}*cell[19] + V{0.0185185185185185}*cell[1] + V{0.0185185185185185}*cell[20] + V{0.0185185185185185}*cell[21] + V{0.0185185185185185}*cell[22] + V{0.0185185185185185}*cell[23] + V{0.0185185185185185}*cell[24] + V{0.0185185185185185}*cell[25] + V{0.0185185185185185}*cell[26] + V{0.0185185185185185}*cell[2] + V{0.0185185185185185}*cell[3] + V{0.0185185185185185}*cell[4] + V{0.0185185185185185}*cell[5] + V{0.0185185185185185}*cell[6] + V{0.0185185185185185}*cell[7] + V{0.0185185185185185}*cell[8] + V{0.0185185185185185}*cell[9] + V{0.0185185185185185};
1768auto x150 = V{4.5}*x109;
1769auto x151 = -V{2}*cell[23];
1770auto x152 = V{2}*cell[10];
1771auto x153 = x151 + x152 + cell[8];
1772auto x154 = V{2}*cell[11] - V{2}*cell[24];
1773auto x155 = x154 + x79;
1774auto x156 = x54 - V{2}*cell[17] + V{2}*cell[4];
1775auto x157 = x43 + x50 + cell[6];
1776auto x158 = x153 + x155 + x156 + x157 + x74 + x77;
1777auto x159 = -x158;
1778auto x160 = x121 + x139;
1779auto x161 = x145 + x160;
1780auto x162 = V{2}*cell[25];
1781auto x163 = V{2}*cell[12];
1782auto x164 = -x162 + x163;
1783auto x165 = V{2}*cell[26];
1784auto x166 = V{2}*cell[13];
1785auto x167 = -x165 + x166;
1786auto x168 = V{2}*cell[18];
1787auto x169 = V{2}*cell[5];
1788auto x170 = -x168 + x169 + x54 - cell[2];
1789auto x171 = x104 + x157 + x164 + x167 + x170 + x34 + x89;
1790auto x172 = -x145;
1791auto x173 = x160 + x172;
1792auto x174 = -V{2}*cell[19] + V{2}*cell[6];
1793auto x175 = x87 + cell[3];
1794auto x176 = x175 + cell[4];
1795auto x177 = x153 + x164 + x174 + x176 + x55 + x90;
1796auto x178 = -x177;
1797auto x179 = -x148;
1798auto x180 = V{2}*cell[20];
1799auto x181 = V{2}*cell[7];
1800auto x182 = cell[16] - cell[3];
1801auto x183 = -x180 + x181 + x182;
1802auto x184 = x103 + x154 + x167 + x183 + x55 + x78 + cell[21] + cell[9];
1803auto x185 = -V{2}*cell[21] + V{2}*cell[8];
1804auto x186 = x185 + x79;
1805auto x187 = x151 + x152 + x165 - x166 + x176 + x186 + x81 + x91 + cell[6];
1806auto x188 = -x187;
1807auto x189 = x121 + x145;
1808auto x190 = x148 + x189;
1809auto x191 = V{2}*cell[22];
1810auto x192 = V{2}*cell[9];
1811auto x193 = -x191 + x192;
1812auto x194 = x100 + x155 + x162 - x163 + x182 + x193 + x35 + x51 + x81;
1813auto x195 = V{0.00462962962962963}*cell[0] + V{0.00462962962962963}*cell[10] + V{0.00462962962962963}*cell[11] + V{0.00462962962962963}*cell[12] + V{0.00462962962962963}*cell[13] + V{0.00462962962962963}*cell[14] + V{0.00462962962962963}*cell[15] + V{0.00462962962962963}*cell[16] + V{0.00462962962962963}*cell[17] + V{0.00462962962962963}*cell[18] + V{0.00462962962962963}*cell[19] + V{0.00462962962962963}*cell[1] + V{0.00462962962962963}*cell[20] + V{0.00462962962962963}*cell[21] + V{0.00462962962962963}*cell[22] + V{0.00462962962962963}*cell[23] + V{0.00462962962962963}*cell[24] + V{0.00462962962962963}*cell[25] + V{0.00462962962962963}*cell[26] + V{0.00462962962962963}*cell[2] + V{0.00462962962962963}*cell[3] + V{0.00462962962962963}*cell[4] + V{0.00462962962962963}*cell[5] + V{0.00462962962962963}*cell[6] + V{0.00462962962962963}*cell[7] + V{0.00462962962962963}*cell[8] + V{0.00462962962962963}*cell[9] + V{0.00462962962962963};
1814auto x196 = x156 + x174 + x186 + x45 + x88 + x97 + V{3}*cell[10] - V{3}*cell[23];
1815auto x197 = -x196;
1816auto x198 = x70 + x80;
1817auto x199 = x156 + x183 + x193 + x198 + x48 + x98 + V{3}*cell[11] - V{3}*cell[24];
1818auto x200 = x175 + x86;
1819auto x201 = x101 + x170 + x174 + x191 - x192 + x200 + x48 + cell[10] + V{3}*cell[12] + cell[15] - V{3}*cell[25];
1820auto x202 = x138*x39;
1821auto x203 = x168 - x169 + x180 - x181 + x185 + x198 + x200 + x37 + x47 - V{3}*cell[13] - cell[1] + V{3}*cell[26];
1822auto x204 = -x203;
1823auto x205 = x147*x39;
1824auto x206 = x110*x83;
1825auto x207 = x110*x93 + V{-1};
1826auto x208 = x206 + x207;
1827auto x209 = x144*x39;
1828auto x210 = x110*x57;
1829auto x211 = x209 + x210;
1830auto x212 = x205 + x208 + x211;
1831auto x213 = x202 + x208;
1832auto x214 = x205 + x210;
1833auto x215 = x211 + x213;
1834auto x216 = -x139;
1835auto x217 = -x171;
1836auto x218 = x213 + x214;
1837auto x219 = -x184;
1838auto x220 = x121 + x148;
1839auto x221 = -x194;
1840auto x222 = -x199;
1841auto x223 = -x201;
1842auto x0 = -x108*(x121*(V{0.296296296296296}*cell[0] + V{0.296296296296296}*cell[10] + V{0.296296296296296}*cell[11] + V{0.296296296296296}*cell[12] + V{0.296296296296296}*cell[13] + V{0.296296296296296}*cell[14] + V{0.296296296296296}*cell[15] + V{0.296296296296296}*cell[16] + V{0.296296296296296}*cell[17] + V{0.296296296296296}*cell[18] + V{0.296296296296296}*cell[19] + V{0.296296296296296}*cell[1] + V{0.296296296296296}*cell[20] + V{0.296296296296296}*cell[21] + V{0.296296296296296}*cell[22] + V{0.296296296296296}*cell[23] + V{0.296296296296296}*cell[24] + V{0.296296296296296}*cell[25] + V{0.296296296296296}*cell[26] + V{0.296296296296296}*cell[2] + V{0.296296296296296}*cell[3] + V{0.296296296296296}*cell[4] + V{0.296296296296296}*cell[5] + V{0.296296296296296}*cell[6] + V{0.296296296296296}*cell[7] + V{0.296296296296296}*cell[8] + V{0.296296296296296}*cell[9] + V{0.296296296296296}) + V{0.296296296296296}) + V{1}*x122*cell[0];
1843auto x1 = -x108*(x123*(-x112*x140 + x120 + x139) + V{0.0740740740740741}) + V{1}*x122*cell[1];
1844auto x2 = -x108*(x123*(-x115*x140 + x119 + x145 + x146) + V{0.0740740740740741}) + V{1}*x122*cell[2];
1845auto x3 = -x108*(x123*(x116 - x118*x140 + x146 + x148) + V{0.0740740740740741}) + V{1}*x122*cell[3];
1846auto x4 = -x108*(x149*(-x150*x159*x159 + x161) + V{0.0185185185185185}) + V{1}*x122*cell[4];
1847auto x5 = -x108*(x149*(-x150*x171*x171 + x173) + V{0.0185185185185185}) + V{1}*x122*cell[5];
1848auto x6 = -x108*(x149*(x148 - x150*x178*x178 + x160) + V{0.0185185185185185}) + V{1}*x122*cell[6];
1849auto x7 = -x108*(x149*(-x150*x184*x184 + x160 + x179) + V{0.0185185185185185}) + V{1}*x122*cell[7];
1850auto x8 = -x108*(x149*(-x150*x188*x188 + x190) + V{0.0185185185185185}) + V{1}*x122*cell[8];
1851auto x9 = -x108*(x149*(-x150*x194*x194 + x179 + x189) + V{0.0185185185185185}) + V{1}*x122*cell[9];
1852auto x10 = -x108*(x195*(x148 - x150*x197*x197 + x161) + V{0.00462962962962963}) + V{1}*x122*cell[10];
1853auto x11 = -x108*(x195*(-x150*x199*x199 + x161 + x179) + V{0.00462962962962963}) + V{1}*x122*cell[11];
1854auto x12 = -x108*(x195*(x148 - x150*x201*x201 + x173) + V{0.00462962962962963}) + V{1}*x122*cell[12];
1855auto x13 = -x108*(x195*(-x150*x204*x204 - x202 + x212) + V{0.00462962962962963}) + V{1}*x122*cell[13];
1856auto x14 = -x108*(x123*(-x140*x57 + x213) + V{0.0740740740740741}) + V{1}*x122*cell[14];
1857auto x15 = -x108*(x123*(-x140*x83 + x207 + x211) + V{0.0740740740740741}) + V{1}*x122*cell[15];
1858auto x16 = -x108*(x123*(-x140*x93 + x206 + x214 + V{-1}) + V{0.0740740740740741}) + V{1}*x122*cell[16];
1859auto x17 = -x108*(x149*(-x150*x158*x158 + x215) + V{0.0185185185185185}) + V{1}*x122*cell[17];
1860auto x18 = -x108*(x149*(-x150*x217*x217 + x189 + x216) + V{0.0185185185185185}) + V{1}*x122*cell[18];
1861auto x19 = -x108*(x149*(-x150*x177*x177 + x218) + V{0.0185185185185185}) + V{1}*x122*cell[19];
1862auto x20 = -x108*(x149*(-x150*x219*x219 + x216 + x220) + V{0.0185185185185185}) + V{1}*x122*cell[20];
1863auto x21 = -x108*(x149*(-x150*x187*x187 + x212) + V{0.0185185185185185}) + V{1}*x122*cell[21];
1864auto x22 = -x108*(x149*(-x150*x221*x221 + x172 + x220) + V{0.0185185185185185}) + V{1}*x122*cell[22];
1865auto x23 = -x108*(x195*(-x150*x196*x196 + x205 + x215) + V{0.00462962962962963}) + V{1}*x122*cell[23];
1866auto x24 = -x108*(x195*(-x150*x222*x222 - x205 + x215) + V{0.00462962962962963}) + V{1}*x122*cell[24];
1867auto x25 = -x108*(x195*(-x150*x223*x223 - x209 + x218) + V{0.00462962962962963}) + V{1}*x122*cell[25];
1868auto x26 = -x108*(x195*(-x150*x203*x203 + x190 + x216) + V{0.00462962962962963}) + V{1}*x122*cell[26];
1869cell.template getFieldPointer<olb::descriptors::AV_SHEAR>()[0] = x107;
1870cell[0] = x0;
1871cell[1] = x1;
1872cell[2] = x2;
1873cell[3] = x3;
1874cell[4] = x4;
1875cell[5] = x5;
1876cell[6] = x6;
1877cell[7] = x7;
1878cell[8] = x8;
1879cell[9] = x9;
1880cell[10] = x10;
1881cell[11] = x11;
1882cell[12] = x12;
1883cell[13] = x13;
1884cell[14] = x14;
1885cell[15] = x15;
1886cell[16] = x16;
1887cell[17] = x17;
1888cell[18] = x18;
1889cell[19] = x19;
1890cell[20] = x20;
1891cell[21] = x21;
1892cell[22] = x22;
1893cell[23] = x23;
1894cell[24] = x24;
1895cell[25] = x25;
1896cell[26] = x26;
1897return { x38, V{1}*x109*(x57 + x83 + x93) };
1898}
1899
1900template <typename CELL, typename PARAMETERS, typename V=typename CELL::value_t>
1901auto computeEffectiveOmega(CELL& cell, PARAMETERS& parameters) any_platform
1902{
1903auto x33 = parameters.template get<olb::collision::LES::Smagorinsky>();
1904auto x32 = parameters.template get<olb::descriptors::LATTICE_TIME>();
1905auto x31 = parameters.template get<olb::descriptors::OMEGA>();
1906auto x30 = cell.template getFieldComponent<olb::descriptors::AV_SHEAR>(0);
1907auto x0 = cell[12] + cell[25];
1908auto x1 = x0 + cell[18];
1909auto x2 = cell[11] + cell[24];
1910auto x3 = x2 + cell[20];
1911auto x4 = cell[22] + cell[9];
1912auto x5 = cell[13] + cell[1];
1913auto x6 = cell[26] + cell[2] + cell[8];
1914auto x7 = cell[10] + cell[3];
1915auto x8 = V{1} / (x1 + x3 + x4 + x5 + x6 + x7 + cell[0] + cell[14] + cell[15] + cell[16] + cell[17] + cell[19] + cell[21] + cell[23] + cell[4] + cell[5] + cell[6] + cell[7] + V{1});
1916auto x9 = V{1}*x8;
1917auto x10 = -cell[17];
1918auto x11 = -cell[24];
1919auto x12 = x10 + x11 + cell[5];
1920auto x13 = -cell[19];
1921auto x14 = -cell[25];
1922auto x15 = x13 + x14 + cell[7];
1923auto x16 = -cell[23];
1924auto x17 = x16 - cell[26];
1925auto x18 = cell[10] + cell[11] + cell[4];
1926auto x19 = cell[12] + cell[6];
1927auto x20 = x12 + x15 + x17 + x18 + x19 + x5 - cell[14] - cell[18] - cell[20];
1928auto x21 = V{0.666666666666667}*cell[10];
1929auto x22 = V{0.666666666666667}*cell[11];
1930auto x23 = V{0.666666666666667}*cell[12];
1931auto x24 = V{0.666666666666667}*cell[13];
1932auto x25 = V{0.666666666666667}*cell[23];
1933auto x26 = V{0.666666666666667}*cell[24];
1934auto x27 = V{0.666666666666667}*cell[25];
1935auto x28 = V{0.666666666666667}*cell[26];
1936auto x29 = -V{0.333333333333333}*cell[0];
1937auto x34 = x21 + x22 + x23 + x24 + x25 + x26 + x27 + x28 + x29 - V{0.333333333333333}*cell[16] + V{0.666666666666667}*cell[17] + V{0.666666666666667}*cell[18] - V{0.333333333333333}*cell[3] + V{0.666666666666667}*cell[4] + V{0.666666666666667}*cell[5];
1938auto x35 = -V{0.333333333333333}*cell[15] + V{0.666666666666667}*cell[19] + V{0.666666666666667}*cell[20] - V{0.333333333333333}*cell[2] + V{0.666666666666667}*cell[6] + V{0.666666666666667}*cell[7];
1939auto x36 = x34 + x35 - x9*x20*x20 + V{0.666666666666667}*cell[14] + V{0.666666666666667}*cell[1] - V{0.333333333333333}*cell[21] - V{0.333333333333333}*cell[22] - V{0.333333333333333}*cell[8] - V{0.333333333333333}*cell[9];
1940auto x37 = -cell[12];
1941auto x38 = -cell[13] - cell[21];
1942auto x39 = x16 + x38;
1943auto x40 = x10 + x11 + x18 + x37 + x39 + x6 - cell[15] + cell[18] - cell[22] + cell[25] - cell[5] + cell[9];
1944auto x41 = -V{0.333333333333333}*cell[14] - V{0.333333333333333}*cell[1] + V{0.666666666666667}*cell[21] + V{0.666666666666667}*cell[22] + V{0.666666666666667}*cell[8] + V{0.666666666666667}*cell[9];
1945auto x42 = x34 + x41 - x9*x40*x40 + V{0.666666666666667}*cell[15] - V{0.333333333333333}*cell[19] - V{0.333333333333333}*cell[20] + V{0.666666666666667}*cell[2] - V{0.333333333333333}*cell[6] - V{0.333333333333333}*cell[7];
1946auto x43 = -cell[11];
1947auto x44 = x13 + x14 + x19 + x39 + x43 + x7 - cell[16] + cell[20] + cell[22] + cell[24] + cell[26] - cell[7] + cell[8] - cell[9];
1948auto x45 = x21 + x22 + x23 + x24 + x25 + x26 + x27 + x28 + x29 + x35 + x41 - x9*x44*x44 + V{0.666666666666667}*cell[16] - V{0.333333333333333}*cell[17] - V{0.333333333333333}*cell[18] + V{0.666666666666667}*cell[3] - V{0.333333333333333}*cell[4] - V{0.333333333333333}*cell[5];
1949auto x46 = x20*x8;
1950auto x47 = -cell[10];
1951auto x48 = x16 + x47 + cell[13] + cell[26];
1952auto x49 = x1 + x12 + x40*x46 + x43 + x48 - cell[4];
1953auto x50 = x15 + x3 + x37 + x44*x46 + x48 - cell[6];
1954auto x51 = x0 + x17 + x2 + x38 + x4 + x40*x44*x8 + x47 - cell[8];
1955auto x52 = V{1.4142135623731}*util::sqrt(V{0.5}*(x36*x36) + V{0.5}*(x42*x42) + V{0.5}*(x45*x45) + x49*x49 + x50*x50 + x51*x51);
1956return V{1} / (V{2.52268963608289}*util::sqrt(x8*(x52 - (x30*x32 + x52)/(x32 + V{1}))*(x33*x33) + V{0.0392836979096202}/((x31)*(x31))) + V{0.5}/x31);
1957}
1958
1959};
1960
1961
1962template <typename... FIELDS>
1963struct ConSmagorinskyEffectiveOmega<BGK,descriptors::D2Q9<FIELDS...>,momenta::BulkTuple,equilibria::SecondOrder> {
1964
1965template <CONCEPT(MinimalCell) CELL, typename PARAMETERS, typename V=typename CELL::value_t>
1966CellStatistic<V> apply(CELL& cell, PARAMETERS& parameters) any_platform
1967{
1968auto x13 = parameters.template get<olb::collision::LES::Smagorinsky>();
1969auto x12 = parameters.template get<olb::descriptors::OMEGA>();
1970auto x9 = cell[1] + cell[7];
1971auto x10 = x9 + cell[0] + cell[2] + cell[3] + cell[4] + cell[5] + cell[6] + cell[8];
1972auto x11 = x10 + V{1};
1973auto x14 = V{1} / (x11);
1974auto x15 = V{1} / ((x11)*(x11));
1975auto x16 = x15/util::pow(x13, 4);
1976auto x17 = -cell[3];
1977auto x18 = -cell[5];
1978auto x19 = cell[1] - cell[7];
1979auto x20 = cell[2] - cell[6];
1980auto x21 = x18 + x19 + x20 + cell[3];
1981auto x22 = -x21;
1982auto x23 = -cell[4] + cell[8];
1983auto x24 = x17 + x18 + x23 + x9;
1984auto x25 = x14*x22*x24 + x17 + x19 + cell[5];
1985auto x26 = -x25;
1986auto x27 = x26*x26;
1987auto x28 = x27;
1988auto x29 = V{1}*x14;
1989auto x30 = x22*x22;
1990auto x31 = -x29*x30;
1991auto x32 = -V{0.333333333333333}*cell[0] + V{0.666666666666667}*cell[1] + V{0.666666666666667}*cell[3] + V{0.666666666666667}*cell[5] + V{0.666666666666667}*cell[7];
1992auto x33 = x32 + V{0.666666666666667}*cell[2] - V{0.333333333333333}*cell[4] + V{0.666666666666667}*cell[6] - V{0.333333333333333}*cell[8];
1993auto x34 = x31 + x33;
1994auto x35 = x34*x34;
1995auto x36 = x24*x24;
1996auto x37 = -x29*x36;
1997auto x38 = x32 + x37 - V{0.333333333333333}*cell[2] + V{0.666666666666667}*cell[4] - V{0.333333333333333}*cell[6] + V{0.666666666666667}*cell[8];
1998auto x39 = x38*x38;
1999auto x40 = V{0.5}*x39;
2000auto x41 = V{0.5}*x35 + x40;
2001auto x42 = util::sqrt(x28 + x41);
2002auto x43 = util::sqrt(x11*(V{1.4142135623731}*x42*(x13*x13) + (V{0.0392837100659193}*cell[0] + V{0.0392837100659193}*cell[1] + V{0.0392837100659193}*cell[2] + V{0.0392837100659193}*cell[3] + V{0.0392837100659193}*cell[4] + V{0.0392837100659193}*cell[5] + V{0.0392837100659193}*cell[6] + V{0.0392837100659193}*cell[7] + V{0.0392837100659193}*cell[8] + V{0.0392837100659193})/((x12)*(x12))));
2003auto x44 = V{1} / (x12);
2004auto x45 = x43 - x44*(V{0.198201185833787}*cell[0] + V{0.198201185833787}*cell[1] + V{0.198201185833787}*cell[2] + V{0.198201185833787}*cell[3] + V{0.198201185833787}*cell[4] + V{0.198201185833787}*cell[5] + V{0.198201185833787}*cell[6] + V{0.198201185833787}*cell[7] + V{0.198201185833787}*cell[8] + V{0.198201185833787});
2005auto x46 = -x45;
2006auto x47 = V{1} / (x42);
2007auto x48 = -V{0.140149402542286}*x43 + V{0.166666666666667}*x44*(V{0.166666666666667}*cell[0] + V{0.166666666666667}*cell[1] + V{0.166666666666667}*cell[2] + V{0.166666666666667}*cell[3] + V{0.166666666666667}*cell[4] + V{0.166666666666667}*cell[5] + V{0.166666666666667}*cell[6] + V{0.166666666666667}*cell[7] + V{0.166666666666667}*cell[8] + V{0.166666666666667});
2008auto x49 = x31 + x37 - V{0.666666666666667}*cell[0] + V{1.33333333333333}*cell[1] + V{0.333333333333333}*cell[2] + V{1.33333333333333}*cell[3] + V{0.333333333333333}*cell[4] + V{1.33333333333333}*cell[5] + V{0.333333333333333}*cell[6] + V{1.33333333333333}*cell[7] + V{0.333333333333333}*cell[8];
2009auto x50 = V{13.4543468074917}*x14*x47*x48*x49*util::sqrt(x16*(x46*x46)*(x41 + x27)/(V{2}*x28 + x35 + x39)) + V{1};
2010auto x51 = x25*x25;
2011auto x52 = x21*x21;
2012auto x53 = -x29*x52 + x33;
2013auto x54 = x53*x53;
2014auto x55 = util::sqrt(x16*(x45*x45)*V{1} / (x39 + x54 + V{2}*x51)*(x40 + V{0.5}*x54 + x51));
2015auto x56 = x10 + V{1};
2016auto x57 = V{1.5}*x15;
2017auto x58 = x36*x57;
2018auto x59 = x30*x57 + V{-1};
2019auto x60 = x58 + x59;
2020auto x61 = V{0.373731855763657}*x14;
2021auto x62 = V{4.5}*x15;
2022auto x63 = x20 + x23 + V{2}*cell[1] - V{2}*cell[5];
2023auto x64 = -x63;
2024auto x65 = V{3}*cell[3];
2025auto x66 = V{3}*cell[7];
2026auto x67 = V{3}*cell[1] - V{3}*cell[5];
2027auto x68 = x65 - x66 + x67 + V{3}*cell[2] - V{3}*cell[6];
2028auto x69 = x14*x68;
2029auto x70 = -x58 + x69 + V{1};
2030auto x71 = x14*(-x65 + x66 + x67 - V{3}*cell[4] + V{3}*cell[8]);
2031auto x72 = x52*x57;
2032auto x73 = x71 - x72;
2033auto x74 = V{1.49492742305463}*x14;
2034auto x75 = V{3}*x15;
2035auto x76 = -x20 - V{2}*cell[3] - cell[4] + V{2}*cell[7] + cell[8];
2036auto x77 = -x62*x76*x76;
2037auto x78 = x36*x75;
2038auto x79 = x58 + x69 + V{-1};
2039auto x80 = x72 + x79;
2040cell[0] = V{5.97970969221852}*x14*x47*x48*x49*x55*(x56*x60 + V{1}) + x50*cell[0];
2041cell[1] = -x47*x48*x49*x55*x61*(x56*(x62*(x64*x64) + x70 + x73) + V{-1}) + x50*cell[1];
2042cell[2] = -x47*x48*x49*x55*x74*(x56*(x52*x75 + x70) + V{-1}) + x50*cell[2];
2043cell[3] = x47*x48*x49*x55*x61*(x56*(-x14*x68 + x60 + x71 + x77) + V{1}) + x50*cell[3];
2044cell[4] = x47*x48*x49*x55*x74*(x56*(x59 + x71 - x78) + V{1}) + x50*cell[4];
2045cell[5] = -x47*x48*x49*x55*x61*(-x56*(-V{4.5}*x15*x63*x63 + x71 + x80) + V{-1}) + x50*cell[5];
2046cell[6] = -x47*x48*x49*x55*x74*(x56*(V{3}*x15*x52 - x79) + V{-1}) + x50*cell[6];
2047cell[7] = -x47*x48*x49*x55*x61*(x56*(x71 - x77 - x80) + V{-1}) + x50*cell[7];
2048cell[8] = -x47*x48*x49*x55*x74*(x56*(x73 + x78 + V{1}) + V{-1}) + x50*cell[8];
2049return { x11, V{1}*x15*(x36 + x52) };
2050}
2051
2052template <typename CELL, typename PARAMETERS, typename V=typename CELL::value_t>
2053auto computeEffectiveOmega(CELL& cell, PARAMETERS& parameters) any_platform
2054{
2055auto x13 = parameters.template get<olb::collision::LES::Smagorinsky>();
2056auto x12 = parameters.template get<olb::descriptors::OMEGA>();
2057auto x0 = cell[1] + cell[7] + cell[8];
2058auto x1 = x0 + cell[0] + cell[2] + cell[3] + cell[4] + cell[5] + cell[6] + V{1};
2059auto x2 = V{1} / (x1);
2060auto x3 = (V{0.0392837100659193}*cell[0] + V{0.0392837100659193}*cell[1] + V{0.0392837100659193}*cell[2] + V{0.0392837100659193}*cell[3] + V{0.0392837100659193}*cell[4] + V{0.0392837100659193}*cell[5] + V{0.0392837100659193}*cell[6] + V{0.0392837100659193}*cell[7] + V{0.0392837100659193}*cell[8] + V{0.0392837100659193})/((x12)*(x12));
2061auto x4 = x13*x13;
2062auto x5 = -cell[3];
2063auto x6 = cell[1] - cell[7];
2064auto x7 = -cell[5];
2065auto x8 = x7 + cell[3];
2066auto x9 = x6 + x8 + cell[2] - cell[6];
2067auto x10 = -x9;
2068auto x11 = x0 + x5 + x7 - cell[4];
2069auto x14 = x11*x2;
2070auto x15 = x10*x14 + x5 + x6 + cell[5];
2071auto x16 = V{1}*x2;
2072auto x17 = -x16*x9*x9;
2073auto x18 = -V{0.333333333333333}*cell[0] + V{0.666666666666667}*cell[1] + V{0.666666666666667}*cell[3] + V{0.666666666666667}*cell[5] + V{0.666666666666667}*cell[7];
2074auto x19 = x18 + V{0.666666666666667}*cell[2] - V{0.333333333333333}*cell[4] + V{0.666666666666667}*cell[6] - V{0.333333333333333}*cell[8];
2075auto x20 = x17 + x19;
2076auto x21 = x20*x20;
2077auto x22 = -x16*x11*x11;
2078auto x23 = x18 + x22 - V{0.333333333333333}*cell[2] + V{0.666666666666667}*cell[4] - V{0.333333333333333}*cell[6] + V{0.666666666666667}*cell[8];
2079auto x24 = x23*x23;
2080auto x25 = V{0.5}*x24;
2081auto x26 = V{0.5}*x21 + x25;
2082auto x27 = util::sqrt(x26 + x15*x15);
2083auto x28 = V{1} / (x12);
2084auto x29 = -x28*(V{0.198201185833787}*cell[0] + V{0.198201185833787}*cell[1] + V{0.198201185833787}*cell[2] + V{0.198201185833787}*cell[3] + V{0.198201185833787}*cell[4] + V{0.198201185833787}*cell[5] + V{0.198201185833787}*cell[6] + V{0.198201185833787}*cell[7] + V{0.198201185833787}*cell[8] + V{0.198201185833787}) + util::sqrt(x1*(V{1.4142135623731}*x27*x4 + x3));
2085auto x30 = -x14*x9 - x8 + cell[1] - cell[7];
2086auto x31 = x30*x30;
2087auto x32 = -x16*x10*x10 + x19;
2088auto x33 = -x15;
2089return V{13.4543468074917}*x2*(x17 + x22 - V{0.666666666666667}*cell[0] + V{1.33333333333333}*cell[1] + V{0.333333333333333}*cell[2] + V{1.33333333333333}*cell[3] + V{0.333333333333333}*cell[4] + V{1.33333333333333}*cell[5] + V{0.333333333333333}*cell[6] + V{1.33333333333333}*cell[7] + V{0.333333333333333}*cell[8])*util::sqrt((x29*x29)*V{1} / (x21 + x24 + V{2}*x31)*(x26 + x31)/(((x1)*(x1))*util::pow(x13, 4)))*(-V{0.166666666666667}*x28*(V{0.166666666666667}*cell[0] + V{0.166666666666667}*cell[1] + V{0.166666666666667}*cell[2] + V{0.166666666666667}*cell[3] + V{0.166666666666667}*cell[4] + V{0.166666666666667}*cell[5] + V{0.166666666666667}*cell[6] + V{0.166666666666667}*cell[7] + V{0.166666666666667}*cell[8] + V{0.166666666666667}) + V{0.140149402542286}*util::sqrt(x1*(x3 + V{1.4142135623731}*x4*util::sqrt(x25 + V{0.5}*(x32*x32) + x33*x33))))/x27;
2090}
2091
2092};
2093
2094template <typename... FIELDS>
2095struct ConSmagorinskyEffectiveOmega<BGK,descriptors::D3Q19<FIELDS...>,momenta::BulkTuple,equilibria::SecondOrder> {
2096
2097template <CONCEPT(MinimalCell) CELL, typename PARAMETERS, typename V=typename CELL::value_t>
2098CellStatistic<V> apply(CELL& cell, PARAMETERS& parameters) any_platform
2099{
2100auto x23 = parameters.template get<olb::descriptors::OMEGA>();
2101auto x24 = parameters.template get<olb::collision::LES::Smagorinsky>();
2102auto x19 = cell[13] + cell[15];
2103auto x20 = x19 + cell[10];
2104auto x21 = cell[11] + cell[5];
2105auto x22 = cell[12] + cell[7] + cell[9];
2106auto x25 = cell[2] + cell[8];
2107auto x26 = cell[18] + cell[3];
2108auto x27 = cell[16] + cell[6];
2109auto x28 = x20 + x21 + x22 + x25 + x26 + x27 + cell[0] + cell[14] + cell[17] + cell[1] + cell[4];
2110auto x29 = x28 + V{1};
2111auto x30 = V{1} / (x29);
2112auto x31 = V{1} / ((x29)*(x29));
2113auto x32 = x31/util::pow(x24, 4);
2114auto x33 = V{1}*x30;
2115auto x34 = -cell[1];
2116auto x35 = -cell[7];
2117auto x36 = -cell[6];
2118auto x37 = x36 + cell[16];
2119auto x38 = x34 + x35 + x37;
2120auto x39 = -cell[4];
2121auto x40 = x39 + cell[14];
2122auto x41 = x40 - cell[5];
2123auto x42 = x20 + x38 + x41;
2124auto x43 = x42*x42;
2125auto x44 = x33*x43;
2126auto x45 = V{0.333333333333333}*cell[0];
2127auto x46 = x45 + V{0.333333333333333}*cell[12] - V{0.666666666666667}*cell[13] - V{0.666666666666667}*cell[14] + V{0.333333333333333}*cell[3] - V{0.666666666666667}*cell[4] - V{0.666666666666667}*cell[5];
2128auto x47 = V{0.333333333333333}*cell[11] - V{0.666666666666667}*cell[15] - V{0.666666666666667}*cell[16] + V{0.333333333333333}*cell[2] - V{0.666666666666667}*cell[6] - V{0.666666666666667}*cell[7];
2129auto x48 = -x44 - x46 - x47 + V{0.666666666666667}*cell[10] - V{0.333333333333333}*cell[17] - V{0.333333333333333}*cell[18] + V{0.666666666666667}*cell[1] - V{0.333333333333333}*cell[8] - V{0.333333333333333}*cell[9];
2130auto x49 = cell[13] + cell[17];
2131auto x50 = -cell[2];
2132auto x51 = -cell[9];
2133auto x52 = -cell[8];
2134auto x53 = x52 + cell[18];
2135auto x54 = x50 + x51 + x53;
2136auto x55 = x21 + x39 - cell[14];
2137auto x56 = x49 + x54 + x55;
2138auto x57 = x56*x56;
2139auto x58 = x33*x57;
2140auto x59 = V{0.333333333333333}*cell[10] - V{0.666666666666667}*cell[17] - V{0.666666666666667}*cell[18] + V{0.333333333333333}*cell[1] - V{0.666666666666667}*cell[8] - V{0.666666666666667}*cell[9];
2141auto x60 = -x46 - x58 - x59 + V{0.666666666666667}*cell[11] - V{0.333333333333333}*cell[15] - V{0.333333333333333}*cell[16] + V{0.666666666666667}*cell[2] - V{0.333333333333333}*cell[6] - V{0.333333333333333}*cell[7];
2142auto x61 = cell[15] + cell[17];
2143auto x62 = -cell[3];
2144auto x63 = -cell[18];
2145auto x64 = x52 + x62 + x63;
2146auto x65 = x36 - cell[16];
2147auto x66 = x22 + x61 + x64 + x65;
2148auto x67 = x66*x66;
2149auto x68 = x33*x67;
2150auto x69 = -x45 - x47 - x59 - x68 + V{0.666666666666667}*cell[12] - V{0.333333333333333}*cell[13] - V{0.333333333333333}*cell[14] + V{0.666666666666667}*cell[3] - V{0.333333333333333}*cell[4] - V{0.333333333333333}*cell[5];
2151auto x70 = x30*x42;
2152auto x71 = -x40 - x56*x70 + cell[13] - cell[5];
2153auto x72 = -cell[15];
2154auto x73 = -x37 - x66*x70 - x72 - cell[7];
2155auto x74 = -cell[17];
2156auto x75 = x74 + cell[9];
2157auto x76 = -x30*x56*x66 - x53 - x75;
2158auto x77 = util::sqrt(V{0.5}*(x48*x48) + V{0.5}*(x60*x60) + V{0.5}*(x69*x69) + x71*x71 + x73*x73 + x76*x76);
2159auto x78 = x29*(x77*(x24*x24) + (V{0.0277777777777778}*cell[0] + V{0.0277777777777778}*cell[10] + V{0.0277777777777778}*cell[11] + V{0.0277777777777778}*cell[12] + V{0.0277777777777778}*cell[13] + V{0.0277777777777778}*cell[14] + V{0.0277777777777778}*cell[15] + V{0.0277777777777778}*cell[16] + V{0.0277777777777778}*cell[17] + V{0.0277777777777778}*cell[18] + V{0.0277777777777778}*cell[1] + V{0.0277777777777778}*cell[2] + V{0.0277777777777778}*cell[3] + V{0.0277777777777778}*cell[4] + V{0.0277777777777778}*cell[5] + V{0.0277777777777778}*cell[6] + V{0.0277777777777778}*cell[7] + V{0.0277777777777778}*cell[8] + V{0.0277777777777778}*cell[9] + V{0.0277777777777778})/((x23)*(x23)));
2160auto x79 = V{1} / (x23);
2161auto x80 = V{0.166666666666667}*cell[0] + V{0.166666666666667}*cell[10] + V{0.166666666666667}*cell[11] + V{0.166666666666667}*cell[12] + V{0.166666666666667}*cell[13] + V{0.166666666666667}*cell[14] + V{0.166666666666667}*cell[15] + V{0.166666666666667}*cell[16] + V{0.166666666666667}*cell[17] + V{0.166666666666667}*cell[18] + V{0.166666666666667}*cell[1] + V{0.166666666666667}*cell[2] + V{0.166666666666667}*cell[3] + V{0.166666666666667}*cell[4] + V{0.166666666666667}*cell[5] + V{0.166666666666667}*cell[6] + V{0.166666666666667}*cell[7] + V{0.166666666666667}*cell[8] + V{0.166666666666667}*cell[9] + V{0.166666666666667};
2162auto x81 = util::sqrt(x78) - x79*x80;
2163auto x82 = -x81;
2164auto x83 = V{1} / (x77);
2165auto x84 = -V{0.166666666666667}*util::sqrt(x78) + V{0.166666666666667}*x79*x80;
2166auto x85 = -x44 - x58 - x68 - V{1}*cell[0] + V{1.11022302462516e-16}*cell[10] + V{1.11022302462516e-16}*cell[11] + V{1.11022302462516e-16}*cell[12] + V{1}*cell[13] + V{1}*cell[14] + V{1}*cell[15] + V{1}*cell[16] + V{1}*cell[17] + V{1}*cell[18] + V{1.11022302462516e-16}*cell[1] + V{1.11022302462516e-16}*cell[2] + V{1.11022302462516e-16}*cell[3] + V{1}*cell[4] + V{1}*cell[5] + V{1}*cell[6] + V{1}*cell[7] + V{1}*cell[8] + V{1}*cell[9];
2167auto x86 = V{8.485284}*x30*x83*x84*x85*util::sqrt(x32*(x82*x82)) + V{1};
2168auto x87 = util::sqrt(x32*(x81*x81));
2169auto x88 = x28 + V{1};
2170auto x89 = V{1.5}*x31;
2171auto x90 = x43*x89;
2172auto x91 = x57*x89;
2173auto x92 = x67*x89;
2174auto x93 = x91 + x92 + V{-1};
2175auto x94 = x90 + x93;
2176auto x95 = V{0.471404666666667}*x30;
2177auto x96 = V{3}*cell[14];
2178auto x97 = V{3}*cell[16];
2179auto x98 = V{3}*cell[5];
2180auto x99 = V{3}*cell[7];
2181auto x100 = V{3}*cell[13] - V{3}*cell[4];
2182auto x101 = V{3}*cell[15] - V{3}*cell[6];
2183auto x102 = x30*(x100 + x101 + x96 + x97 - x98 - x99 + V{3}*cell[10] - V{3}*cell[1]);
2184auto x103 = V{3}*x31;
2185auto x104 = x103*x43;
2186auto x105 = V{3}*cell[18];
2187auto x106 = V{3}*cell[9];
2188auto x107 = V{3}*cell[17] - V{3}*cell[8];
2189auto x108 = x30*(x100 + x105 - x106 + x107 - x96 + x98 + V{3}*cell[11] - V{3}*cell[2]);
2190auto x109 = x103*x57;
2191auto x110 = x90 + V{-1};
2192auto x111 = x30*(x101 - x105 + x106 + x107 - x97 + x99 + V{3}*cell[12] - V{3}*cell[3]);
2193auto x112 = x103*x67;
2194auto x113 = V{0.235702333333333}*x30;
2195auto x114 = V{4.5}*x31;
2196auto x115 = x38 + cell[10];
2197auto x116 = x115 + x54 + x61 + cell[11] + V{2}*cell[13] - V{2}*cell[4];
2198auto x117 = x114*(x116*x116);
2199auto x118 = x102 + x94;
2200auto x119 = -x108;
2201auto x120 = x115 + x25 + x63 + x75 - cell[11] + V{2}*cell[14] + cell[15] - V{2}*cell[5];
2202auto x121 = -x120;
2203auto x122 = x34 + x41 + cell[10];
2204auto x123 = x122 + x49 + x64 + cell[12] + V{2}*cell[15] - V{2}*cell[6] + cell[9];
2205auto x124 = x114*(x123*x123);
2206auto x125 = -x111;
2207auto x126 = -cell[12] + cell[13];
2208auto x127 = x122 + x126 + x26 + x51 + x74 + V{2}*cell[16] - V{2}*cell[7] + cell[8];
2209auto x128 = -x127;
2210auto x129 = x50 + x55;
2211auto x130 = x129 + x19 + x62 + x65 + cell[12] + V{2}*cell[17] + cell[7] - V{2}*cell[8];
2212auto x131 = x114*(x130*x130);
2213auto x132 = x108 + x94;
2214auto x133 = x126 + x129 + x27 + x35 + x72 + V{2}*cell[18] + cell[3] - V{2}*cell[9];
2215auto x134 = -x133;
2216auto x135 = -x91;
2217auto x136 = V{1} - x92;
2218auto x137 = x135 + x136;
2219auto x138 = x102 + x137;
2220auto x139 = -x90;
2221auto x140 = x108 + x139;
2222auto x141 = x111 + x139;
2223auto x142 = -x102;
2224auto x143 = x111 + x94;
2225cell[0] = V{2.828428}*x30*x83*x84*x85*x87*(x88*x94 + V{1}) + x86*cell[0];
2226cell[1] = x83*x84*x85*x87*x95*(x88*(x102 - x104 + x93) + V{1}) + x86*cell[1];
2227cell[2] = x83*x84*x85*x87*x95*(x88*(x108 - x109 + x110 + x92) + V{1}) + x86*cell[2];
2228cell[3] = x83*x84*x85*x87*x95*(x88*(x110 + x111 - x112 + x91) + V{1}) + x86*cell[3];
2229cell[4] = x113*x83*x84*x85*x87*(x88*(x108 - x117 + x118) + V{1}) + x86*cell[4];
2230cell[5] = x113*x83*x84*x85*x87*(x88*(-x114*x121*x121 + x118 + x119) + V{1}) + x86*cell[5];
2231cell[6] = x113*x83*x84*x85*x87*(x88*(x111 + x118 - x124) + V{1}) + x86*cell[6];
2232cell[7] = x113*x83*x84*x85*x87*(x88*(-x114*x128*x128 + x118 + x125) + V{1}) + x86*cell[7];
2233cell[8] = x113*x83*x84*x85*x87*(x88*(x111 - x131 + x132) + V{1}) + x86*cell[8];
2234cell[9] = x113*x83*x84*x85*x87*(x88*(-x114*x134*x134 + x125 + x132) + V{1}) + x86*cell[9];
2235cell[10] = -x83*x84*x85*x87*x95*(x88*(x104 + x138) + V{-1}) + x86*cell[10];
2236cell[11] = -x83*x84*x85*x87*x95*(x88*(x109 + x136 + x140) + V{-1}) + x86*cell[11];
2237cell[12] = -x83*x84*x85*x87*x95*(x88*(x112 + x135 + x141 + V{1}) + V{-1}) + x86*cell[12];
2238cell[13] = -x113*x83*x84*x85*x87*(x88*(x117 + x138 + x140) + V{-1}) + x86*cell[13];
2239cell[14] = x113*x83*x84*x85*x87*(x88*(-x114*x120*x120 + x132 + x142) + V{1}) + x86*cell[14];
2240cell[15] = -x113*x83*x84*x85*x87*(x88*(x124 + x138 + x141) + V{-1}) + x86*cell[15];
2241cell[16] = x113*x83*x84*x85*x87*(x88*(-x114*x127*x127 + x142 + x143) + V{1}) + x86*cell[16];
2242cell[17] = -x113*x83*x84*x85*x87*(x88*(x111 + x131 + x137 + x140) + V{-1}) + x86*cell[17];
2243cell[18] = x113*x83*x84*x85*x87*(x88*(-x114*x133*x133 + x119 + x143) + V{1}) + x86*cell[18];
2244return { x29, V{1}*x31*(x43 + x57 + x67) };
2245}
2246
2247template <typename CELL, typename PARAMETERS, typename V=typename CELL::value_t>
2248auto computeEffectiveOmega(CELL& cell, PARAMETERS& parameters) any_platform
2249{
2250auto x23 = parameters.template get<olb::descriptors::OMEGA>();
2251auto x24 = parameters.template get<olb::collision::LES::Smagorinsky>();
2252auto x0 = cell[12] + cell[15] + cell[17];
2253auto x1 = cell[11] + cell[13] + cell[18];
2254auto x2 = cell[10] + cell[14] + cell[16];
2255auto x3 = x0 + x1 + x2 + cell[0] + cell[1] + cell[2] + cell[3] + cell[4] + cell[5] + cell[6] + cell[7] + cell[8] + cell[9] + V{1};
2256auto x4 = V{1} / (x3);
2257auto x5 = (V{0.0277777777777778}*cell[0] + V{0.0277777777777778}*cell[10] + V{0.0277777777777778}*cell[11] + V{0.0277777777777778}*cell[12] + V{0.0277777777777778}*cell[13] + V{0.0277777777777778}*cell[14] + V{0.0277777777777778}*cell[15] + V{0.0277777777777778}*cell[16] + V{0.0277777777777778}*cell[17] + V{0.0277777777777778}*cell[18] + V{0.0277777777777778}*cell[1] + V{0.0277777777777778}*cell[2] + V{0.0277777777777778}*cell[3] + V{0.0277777777777778}*cell[4] + V{0.0277777777777778}*cell[5] + V{0.0277777777777778}*cell[6] + V{0.0277777777777778}*cell[7] + V{0.0277777777777778}*cell[8] + V{0.0277777777777778}*cell[9] + V{0.0277777777777778})/((x23)*(x23));
2258auto x6 = x24*x24;
2259auto x7 = V{1}*x4;
2260auto x8 = -cell[6];
2261auto x9 = x8 + cell[7];
2262auto x10 = -cell[8];
2263auto x11 = x10 + cell[9];
2264auto x12 = x0 + x11 + x9 - cell[16] - cell[18] - cell[3];
2265auto x13 = x7*(x12*x12);
2266auto x14 = V{0.333333333333333}*cell[0];
2267auto x15 = x14 + V{0.333333333333333}*cell[10] - V{0.666666666666667}*cell[17] - V{0.666666666666667}*cell[18] + V{0.333333333333333}*cell[1] - V{0.666666666666667}*cell[8] - V{0.666666666666667}*cell[9];
2268auto x16 = V{0.333333333333333}*cell[11] - V{0.666666666666667}*cell[15] - V{0.666666666666667}*cell[16] + V{0.333333333333333}*cell[2] - V{0.666666666666667}*cell[6] - V{0.666666666666667}*cell[7];
2269auto x17 = x13 + x15 + x16 - V{0.666666666666667}*cell[12] + V{0.333333333333333}*cell[13] + V{0.333333333333333}*cell[14] - V{0.666666666666667}*cell[3] + V{0.333333333333333}*cell[4] + V{0.333333333333333}*cell[5];
2270auto x18 = -cell[4];
2271auto x19 = x18 + cell[5];
2272auto x20 = x1 + x10 + x19 - cell[14] + cell[17] - cell[2] - cell[9];
2273auto x21 = x7*(x20*x20);
2274auto x22 = V{0.333333333333333}*cell[12] - V{0.666666666666667}*cell[13] - V{0.666666666666667}*cell[14] + V{0.333333333333333}*cell[3] - V{0.666666666666667}*cell[4] - V{0.666666666666667}*cell[5];
2275auto x25 = x15 + x21 + x22 - V{0.666666666666667}*cell[11] + V{0.333333333333333}*cell[15] + V{0.333333333333333}*cell[16] - V{0.666666666666667}*cell[2] + V{0.333333333333333}*cell[6] + V{0.333333333333333}*cell[7];
2276auto x26 = x18 + x2 + x8 + cell[13] + cell[15] - cell[1] - cell[5] - cell[7];
2277auto x27 = x7*(x26*x26);
2278auto x28 = x14 + x16 + x22 + x27 - V{0.666666666666667}*cell[10] + V{0.333333333333333}*cell[17] + V{0.333333333333333}*cell[18] - V{0.666666666666667}*cell[1] + V{0.333333333333333}*cell[8] + V{0.333333333333333}*cell[9];
2279auto x29 = x26*x4;
2280auto x30 = x19 + x20*x29 - cell[13] + cell[14];
2281auto x31 = x12*x29 + x9 - cell[15] + cell[16];
2282auto x32 = x11 + x12*x20*x4 - cell[17] + cell[18];
2283auto x33 = util::sqrt(V{0.5}*(x17*x17) + V{0.5}*(x25*x25) + V{0.5}*(x28*x28) + x30*x30 + x31*x31 + x32*x32);
2284auto x34 = (V{0.166666666666667}*cell[0] + V{0.166666666666667}*cell[10] + V{0.166666666666667}*cell[11] + V{0.166666666666667}*cell[12] + V{0.166666666666667}*cell[13] + V{0.166666666666667}*cell[14] + V{0.166666666666667}*cell[15] + V{0.166666666666667}*cell[16] + V{0.166666666666667}*cell[17] + V{0.166666666666667}*cell[18] + V{0.166666666666667}*cell[1] + V{0.166666666666667}*cell[2] + V{0.166666666666667}*cell[3] + V{0.166666666666667}*cell[4] + V{0.166666666666667}*cell[5] + V{0.166666666666667}*cell[6] + V{0.166666666666667}*cell[7] + V{0.166666666666667}*cell[8] + V{0.166666666666667}*cell[9] + V{0.166666666666667})/x23;
2285auto x35 = -x34 + util::sqrt(x3*(x33*x6 + x5));
2286auto x36 = -x28;
2287auto x37 = -x25;
2288auto x38 = -x17;
2289auto x39 = -x30;
2290auto x40 = -x31;
2291auto x41 = -x32;
2292return -V{8.485284}*x4*(x13 + x21 + x27 + V{1}*cell[0] - V{1.11022302462516e-16}*cell[10] - V{1.11022302462516e-16}*cell[11] - V{1.11022302462516e-16}*cell[12] - V{1}*cell[13] - V{1}*cell[14] - V{1}*cell[15] - V{1}*cell[16] - V{1}*cell[17] - V{1}*cell[18] - V{1.11022302462516e-16}*cell[1] - V{1.11022302462516e-16}*cell[2] - V{1.11022302462516e-16}*cell[3] - V{1}*cell[4] - V{1}*cell[5] - V{1}*cell[6] - V{1}*cell[7] - V{1}*cell[8] - V{1}*cell[9])*util::sqrt((x35*x35)/(util::pow(x24, 4)*((x3)*(x3))))*(-V{0.166666666666667}*x34 + V{0.166666666666667}*util::sqrt(x3*(x5 + x6*util::sqrt(V{0.5}*(x36*x36) + V{0.5}*(x37*x37) + V{0.5}*(x38*x38) + x39*x39 + x40*x40 + x41*x41))))/x33;
2293}
2294
2295};
2296
2297template <typename... FIELDS>
2298struct ConSmagorinskyEffectiveOmega<BGK,descriptors::D3Q27<FIELDS...>,momenta::BulkTuple,equilibria::SecondOrder> {
2299
2300template <CONCEPT(MinimalCell) CELL, typename PARAMETERS, typename V=typename CELL::value_t>
2301CellStatistic<V> apply(CELL& cell, PARAMETERS& parameters) any_platform
2302{
2303auto x31 = parameters.template get<olb::descriptors::OMEGA>();
2304auto x32 = parameters.template get<olb::collision::LES::Smagorinsky>();
2305auto x27 = cell[10] + cell[6];
2306auto x28 = x27 + cell[13];
2307auto x29 = cell[12] + cell[26];
2308auto x30 = cell[15] + cell[21];
2309auto x33 = cell[19] + cell[7];
2310auto x34 = cell[24] + cell[25];
2311auto x35 = x34 + cell[14];
2312auto x36 = x28 + x29 + x30 + x33 + x35 + cell[0] + cell[11] + cell[16] + cell[17] + cell[18] + cell[1] + cell[20] + cell[22] + cell[23] + cell[2] + cell[3] + cell[4] + cell[5] + cell[8] + cell[9];
2313auto x37 = x36 + V{1};
2314auto x38 = V{1} / (x37);
2315auto x39 = V{1} / ((x37)*(x37));
2316auto x40 = x39/util::pow(x32, 4);
2317auto x41 = V{1}*x38;
2318auto x42 = -cell[24];
2319auto x43 = -cell[19];
2320auto x44 = x43 + cell[7];
2321auto x45 = -cell[25];
2322auto x46 = x45 + cell[11];
2323auto x47 = x44 + x46;
2324auto x48 = -cell[23];
2325auto x49 = -cell[26];
2326auto x50 = x48 + x49 + cell[12];
2327auto x51 = -cell[20];
2328auto x52 = x51 + cell[4];
2329auto x53 = -cell[17];
2330auto x54 = x53 + cell[5];
2331auto x55 = -cell[14] + cell[1];
2332auto x56 = x54 + x55 - cell[18];
2333auto x57 = x28 + x42 + x47 + x50 + x52 + x56;
2334auto x58 = -x57;
2335auto x59 = x58*x58;
2336auto x60 = -x41*x59;
2337auto x61 = V{0.666666666666667}*cell[10];
2338auto x62 = V{0.666666666666667}*cell[11];
2339auto x63 = V{0.666666666666667}*cell[12];
2340auto x64 = V{0.666666666666667}*cell[13];
2341auto x65 = V{0.666666666666667}*cell[23];
2342auto x66 = V{0.666666666666667}*cell[24];
2343auto x67 = V{0.666666666666667}*cell[25];
2344auto x68 = V{0.666666666666667}*cell[26];
2345auto x69 = -V{0.333333333333333}*cell[0];
2346auto x70 = x61 + x62 + x63 + x64 + x65 + x66 + x67 + x68 + x69 - V{0.333333333333333}*cell[16] + V{0.666666666666667}*cell[17] + V{0.666666666666667}*cell[18] - V{0.333333333333333}*cell[3] + V{0.666666666666667}*cell[4] + V{0.666666666666667}*cell[5];
2347auto x71 = -V{0.333333333333333}*cell[15] + V{0.666666666666667}*cell[19] + V{0.666666666666667}*cell[20] - V{0.333333333333333}*cell[2] + V{0.666666666666667}*cell[6] + V{0.666666666666667}*cell[7];
2348auto x72 = x60 + x70 + x71 + V{0.666666666666667}*cell[14] + V{0.666666666666667}*cell[1] - V{0.333333333333333}*cell[21] - V{0.333333333333333}*cell[22] - V{0.333333333333333}*cell[8] - V{0.333333333333333}*cell[9];
2349auto x73 = -cell[12];
2350auto x74 = x73 + cell[26];
2351auto x75 = -cell[13];
2352auto x76 = -cell[21];
2353auto x77 = x76 + cell[9];
2354auto x78 = x75 + x77 + cell[11];
2355auto x79 = x48 + cell[8];
2356auto x80 = -cell[22];
2357auto x81 = x80 + cell[4];
2358auto x82 = -cell[15] + cell[2];
2359auto x83 = x82 + cell[10];
2360auto x84 = x53 + cell[18] - cell[5];
2361auto x85 = x42 + x74 + x78 + x79 + x81 + x83 + x84 + cell[25];
2362auto x86 = -x85;
2363auto x87 = x86*x86;
2364auto x88 = -x41*x87;
2365auto x89 = -V{0.333333333333333}*cell[14] - V{0.333333333333333}*cell[1] + V{0.666666666666667}*cell[21] + V{0.666666666666667}*cell[22] + V{0.666666666666667}*cell[8] + V{0.666666666666667}*cell[9];
2366auto x90 = x70 + x88 + x89 + V{0.666666666666667}*cell[15] - V{0.333333333333333}*cell[19] - V{0.333333333333333}*cell[20] + V{0.666666666666667}*cell[2] - V{0.333333333333333}*cell[6] - V{0.333333333333333}*cell[7];
2367auto x91 = -cell[11];
2368auto x92 = -cell[16];
2369auto x93 = x75 + x92 + cell[3];
2370auto x94 = -cell[9];
2371auto x95 = x76 + x94 + cell[22];
2372auto x96 = x43 + cell[20] - cell[7];
2373auto x97 = x27 + x29 + x45 + x79 + x91 + x93 + x95 + x96 + cell[24];
2374auto x98 = -x97;
2375auto x99 = x98*x98;
2376auto x100 = -x41*x99;
2377auto x101 = x100 + x61 + x62 + x63 + x64 + x65 + x66 + x67 + x68 + x69 + x71 + x89 + V{0.666666666666667}*cell[16] - V{0.333333333333333}*cell[17] - V{0.333333333333333}*cell[18] + V{0.666666666666667}*cell[3] - V{0.333333333333333}*cell[4] - V{0.333333333333333}*cell[5];
2378auto x102 = -cell[10];
2379auto x103 = x38*x58;
2380auto x104 = x42 + cell[12] + cell[26];
2381auto x105 = x48 + cell[13] + cell[25];
2382auto x106 = -x102 - x103*x86 - x104 - x105 - x54 - x91 - cell[18] + cell[4];
2383auto x107 = -cell[6];
2384auto x108 = x48 + cell[13] + cell[24];
2385auto x109 = -x102 - x103*x98 - x107 - x108 - x47 - x74 - cell[20];
2386auto x110 = -cell[8];
2387auto x111 = x110 + cell[22];
2388auto x112 = -x102 - x111 - x34 - x38*x86*x98 - x50 - x78;
2389auto x113 = util::sqrt(V{0.5}*(x101*x101) + x106*x106 + x109*x109 + x112*x112 + V{0.5}*(x72*x72) + V{0.5}*(x90*x90));
2390auto x114 = x37*(x113*(x32*x32) + (V{0.0277777777777778}*cell[0] + V{0.0277777777777778}*cell[10] + V{0.0277777777777778}*cell[11] + V{0.0277777777777778}*cell[12] + V{0.0277777777777778}*cell[13] + V{0.0277777777777778}*cell[14] + V{0.0277777777777778}*cell[15] + V{0.0277777777777778}*cell[16] + V{0.0277777777777778}*cell[17] + V{0.0277777777777778}*cell[18] + V{0.0277777777777778}*cell[19] + V{0.0277777777777778}*cell[1] + V{0.0277777777777778}*cell[20] + V{0.0277777777777778}*cell[21] + V{0.0277777777777778}*cell[22] + V{0.0277777777777778}*cell[23] + V{0.0277777777777778}*cell[24] + V{0.0277777777777778}*cell[25] + V{0.0277777777777778}*cell[26] + V{0.0277777777777778}*cell[2] + V{0.0277777777777778}*cell[3] + V{0.0277777777777778}*cell[4] + V{0.0277777777777778}*cell[5] + V{0.0277777777777778}*cell[6] + V{0.0277777777777778}*cell[7] + V{0.0277777777777778}*cell[8] + V{0.0277777777777778}*cell[9] + V{0.0277777777777778})/((x31)*(x31)));
2391auto x115 = V{1} / (x31);
2392auto x116 = V{0.166666666666667}*cell[0] + V{0.166666666666667}*cell[10] + V{0.166666666666667}*cell[11] + V{0.166666666666667}*cell[12] + V{0.166666666666667}*cell[13] + V{0.166666666666667}*cell[14] + V{0.166666666666667}*cell[15] + V{0.166666666666667}*cell[16] + V{0.166666666666667}*cell[17] + V{0.166666666666667}*cell[18] + V{0.166666666666667}*cell[19] + V{0.166666666666667}*cell[1] + V{0.166666666666667}*cell[20] + V{0.166666666666667}*cell[21] + V{0.166666666666667}*cell[22] + V{0.166666666666667}*cell[23] + V{0.166666666666667}*cell[24] + V{0.166666666666667}*cell[25] + V{0.166666666666667}*cell[26] + V{0.166666666666667}*cell[2] + V{0.166666666666667}*cell[3] + V{0.166666666666667}*cell[4] + V{0.166666666666667}*cell[5] + V{0.166666666666667}*cell[6] + V{0.166666666666667}*cell[7] + V{0.166666666666667}*cell[8] + V{0.166666666666667}*cell[9] + V{0.166666666666667};
2393auto x117 = util::sqrt(x114) - x115*x116;
2394auto x118 = -x117;
2395auto x119 = V{1} / (x113);
2396auto x120 = -V{0.166666666666667}*util::sqrt(x114) + V{0.166666666666667}*x115*x116;
2397auto x121 = x100 + x60 + x88 - V{1}*cell[0] + V{2}*cell[10] + V{2}*cell[11] + V{2}*cell[12] + V{2}*cell[13] + V{1.11022302462516e-16}*cell[14] + V{1.11022302462516e-16}*cell[15] + V{1.11022302462516e-16}*cell[16] + V{1}*cell[17] + V{1}*cell[18] + V{1}*cell[19] + V{1.11022302462516e-16}*cell[1] + V{1}*cell[20] + V{1}*cell[21] + V{1}*cell[22] + V{2}*cell[23] + V{2}*cell[24] + V{2}*cell[25] + V{2}*cell[26] + V{1.11022302462516e-16}*cell[2] + V{1.11022302462516e-16}*cell[3] + V{1}*cell[4] + V{1}*cell[5] + V{1}*cell[6] + V{1}*cell[7] + V{1}*cell[8] + V{1}*cell[9];
2398auto x122 = V{7.54247466666667}*x119*x120*x121*x38*util::sqrt(x40*(x118*x118)) + V{1};
2399auto x123 = util::sqrt(x40*(x117*x117));
2400auto x124 = x36 + V{1};
2401auto x125 = V{1.5}*x39;
2402auto x126 = x125*x59;
2403auto x127 = x125*x87;
2404auto x128 = x125*x99;
2405auto x129 = x127 + x128 + V{-1};
2406auto x130 = x126 + x129;
2407auto x131 = V{0.558701827160494}*x38;
2408auto x132 = V{3}*cell[5];
2409auto x133 = V{3}*cell[7];
2410auto x134 = V{3}*cell[13];
2411auto x135 = V{3}*cell[18];
2412auto x136 = V{3}*cell[20];
2413auto x137 = V{3}*cell[26];
2414auto x138 = V{3}*cell[10];
2415auto x139 = V{3}*cell[11];
2416auto x140 = -V{3}*cell[23];
2417auto x141 = V{3}*cell[24];
2418auto x142 = x138 + x139 + x140 - x141 - V{3}*cell[17] + V{3}*cell[4];
2419auto x143 = V{3}*cell[12];
2420auto x144 = V{3}*cell[25];
2421auto x145 = x143 - x144 - V{3}*cell[19] + V{3}*cell[6];
2422auto x146 = x132 + x133 + x134 - x135 - x136 - x137 + x142 + x145 - V{3}*cell[14] + V{3}*cell[1];
2423auto x147 = -x146*x38;
2424auto x148 = V{3}*x39;
2425auto x149 = V{3}*cell[9];
2426auto x150 = V{3}*cell[22];
2427auto x151 = -x134 + x137 - V{3}*cell[21] + V{3}*cell[8];
2428auto x152 = -x132 + x135 + x142 - x143 + x144 + x149 - x150 + x151 - V{3}*cell[15] + V{3}*cell[2];
2429auto x153 = -x152*x38;
2430auto x154 = x126 + V{-1};
2431auto x155 = -x133 + x136 + x138 - x139 + x140 + x141 + x145 - x149 + x150 + x151 - V{3}*cell[16] + V{3}*cell[3];
2432auto x156 = -x155*x38;
2433auto x157 = V{0.139675456790123}*x38;
2434auto x158 = V{4.5}*x39;
2435auto x159 = -V{2}*cell[23];
2436auto x160 = V{2}*cell[10];
2437auto x161 = x159 + x160 + cell[8];
2438auto x162 = V{2}*cell[11] - V{2}*cell[24];
2439auto x163 = x162 + x82;
2440auto x164 = x55 - V{2}*cell[17] + V{2}*cell[4];
2441auto x165 = x44 + x51 + cell[6];
2442auto x166 = x161 + x163 + x164 + x165 + x77 + x80;
2443auto x167 = -x166;
2444auto x168 = x130 + x147;
2445auto x169 = x153 + x168;
2446auto x170 = V{2}*cell[25];
2447auto x171 = V{2}*cell[12];
2448auto x172 = -x170 + x171;
2449auto x173 = V{2}*cell[26];
2450auto x174 = V{2}*cell[13];
2451auto x175 = -x173 + x174;
2452auto x176 = V{2}*cell[18];
2453auto x177 = V{2}*cell[5];
2454auto x178 = -x176 + x177 + x55 - cell[2];
2455auto x179 = x111 + x165 + x172 + x175 + x178 + x30 + x94;
2456auto x180 = -x153;
2457auto x181 = x168 + x180;
2458auto x182 = -V{2}*cell[19] + V{2}*cell[6];
2459auto x183 = x92 + cell[3];
2460auto x184 = x183 + cell[4];
2461auto x185 = x161 + x172 + x182 + x184 + x56 + x95;
2462auto x186 = -x185;
2463auto x187 = -x156;
2464auto x188 = V{2}*cell[20];
2465auto x189 = V{2}*cell[7];
2466auto x190 = cell[16] - cell[3];
2467auto x191 = -x188 + x189 + x190;
2468auto x192 = x110 + x162 + x175 + x191 + x56 + x81 + cell[21] + cell[9];
2469auto x193 = -V{2}*cell[21] + V{2}*cell[8];
2470auto x194 = x193 + x82;
2471auto x195 = x159 + x160 + x173 - x174 + x184 + x194 + x84 + x96 + cell[6];
2472auto x196 = -x195;
2473auto x197 = x130 + x153;
2474auto x198 = x156 + x197;
2475auto x199 = V{2}*cell[22];
2476auto x200 = V{2}*cell[9];
2477auto x201 = -x199 + x200;
2478auto x202 = x107 + x163 + x170 - x171 + x190 + x201 + x33 + x52 + x84;
2479auto x203 = V{0.0349188641975309}*x38;
2480auto x204 = x104 + x164 + x182 + x194 + x46 + x93 + V{3}*cell[10] - V{3}*cell[23];
2481auto x205 = -x204;
2482auto x206 = x73 + x83;
2483auto x207 = x105 + x164 + x191 + x201 + x206 + x49 + V{3}*cell[11] - V{3}*cell[24];
2484auto x208 = x183 + x91;
2485auto x209 = x108 + x178 + x182 + x199 - x200 + x208 + x49 + cell[10] + V{3}*cell[12] + cell[15] - V{3}*cell[25];
2486auto x210 = x146*x38;
2487auto x211 = x176 - x177 + x188 - x189 + x193 + x206 + x208 + x35 + x48 - V{3}*cell[13] - cell[1] + V{3}*cell[26];
2488auto x212 = -x211;
2489auto x213 = x155*x38;
2490auto x214 = x85*x85;
2491auto x215 = x125*x214;
2492auto x216 = x97*x97;
2493auto x217 = x125*x216 + V{-1};
2494auto x218 = x215 + x217;
2495auto x219 = x152*x38;
2496auto x220 = x57*x57;
2497auto x221 = x125*x220;
2498auto x222 = x219 + x221;
2499auto x223 = x213 + x218 + x222;
2500auto x224 = x210 + x218;
2501auto x225 = x213 + x221;
2502auto x226 = x222 + x224;
2503auto x227 = -x147;
2504auto x228 = -x179;
2505auto x229 = x224 + x225;
2506auto x230 = -x192;
2507auto x231 = x130 + x156;
2508auto x232 = -x202;
2509auto x233 = -x207;
2510auto x234 = -x209;
2511cell[0] = V{2.23480730864198}*x119*x120*x121*x123*x38*(x124*x130 + V{1}) + x122*cell[0];
2512cell[1] = x119*x120*x121*x123*x131*(x124*(x129 + x147 - x148*x59) + V{1}) + x122*cell[1];
2513cell[2] = x119*x120*x121*x123*x131*(x124*(x128 - x148*x87 + x153 + x154) + V{1}) + x122*cell[2];
2514cell[3] = x119*x120*x121*x123*x131*(x124*(x127 - x148*x99 + x154 + x156) + V{1}) + x122*cell[3];
2515cell[4] = x119*x120*x121*x123*x157*(x124*(-x158*x167*x167 + x169) + V{1}) + x122*cell[4];
2516cell[5] = x119*x120*x121*x123*x157*(x124*(-x158*x179*x179 + x181) + V{1}) + x122*cell[5];
2517cell[6] = x119*x120*x121*x123*x157*(x124*(x156 - x158*x186*x186 + x168) + V{1}) + x122*cell[6];
2518cell[7] = x119*x120*x121*x123*x157*(x124*(-x158*x192*x192 + x168 + x187) + V{1}) + x122*cell[7];
2519cell[8] = x119*x120*x121*x123*x157*(x124*(-x158*x196*x196 + x198) + V{1}) + x122*cell[8];
2520cell[9] = x119*x120*x121*x123*x157*(x124*(-x158*x202*x202 + x187 + x197) + V{1}) + x122*cell[9];
2521cell[10] = x119*x120*x121*x123*x203*(x124*(x156 - x158*x205*x205 + x169) + V{1}) + x122*cell[10];
2522cell[11] = x119*x120*x121*x123*x203*(x124*(-x158*x207*x207 + x169 + x187) + V{1}) + x122*cell[11];
2523cell[12] = x119*x120*x121*x123*x203*(x124*(x156 - x158*x209*x209 + x181) + V{1}) + x122*cell[12];
2524cell[13] = -x119*x120*x121*x123*x203*(-x124*(-x210 + x223 - V{4.5}*x39*x212*x212) + V{-1}) + x122*cell[13];
2525cell[14] = -x119*x120*x121*x123*x131*(x124*(V{3}*x220*x39 - x224) + V{-1}) + x122*cell[14];
2526cell[15] = -x119*x120*x121*x123*x131*(x124*(V{3}*x214*x39 - x217 - x222) + V{-1}) + x122*cell[15];
2527cell[16] = -x119*x120*x121*x123*x131*(x124*(-x215 + V{3}*x216*x39 - x225 + V{1}) + V{-1}) + x122*cell[16];
2528cell[17] = -x119*x120*x121*x123*x157*(-x124*(x226 - V{4.5}*x39*x166*x166) + V{-1}) + x122*cell[17];
2529cell[18] = x119*x120*x121*x123*x157*(x124*(-x158*x228*x228 + x197 + x227) + V{1}) + x122*cell[18];
2530cell[19] = -x119*x120*x121*x123*x157*(-x124*(x229 - V{4.5}*x39*x185*x185) + V{-1}) + x122*cell[19];
2531cell[20] = x119*x120*x121*x123*x157*(x124*(-x158*x230*x230 + x227 + x231) + V{1}) + x122*cell[20];
2532cell[21] = -x119*x120*x121*x123*x157*(-x124*(x223 - V{4.5}*x39*x195*x195) + V{-1}) + x122*cell[21];
2533cell[22] = x119*x120*x121*x123*x157*(x124*(-x158*x232*x232 + x180 + x231) + V{1}) + x122*cell[22];
2534cell[23] = -x119*x120*x121*x123*x203*(-x124*(x213 + x226 - V{4.5}*x39*x204*x204) + V{-1}) + x122*cell[23];
2535cell[24] = -x119*x120*x121*x123*x203*(-x124*(-x213 + x226 - V{4.5}*x39*x233*x233) + V{-1}) + x122*cell[24];
2536cell[25] = -x119*x120*x121*x123*x203*(-x124*(-x219 + x229 - V{4.5}*x39*x234*x234) + V{-1}) + x122*cell[25];
2537cell[26] = x119*x120*x121*x123*x203*(x124*(-x158*x211*x211 + x198 + x227) + V{1}) + x122*cell[26];
2538return { x37, V{1}*x39*(x214 + x216 + x220) };
2539}
2540
2541template <typename CELL, typename PARAMETERS, typename V=typename CELL::value_t>
2542auto computeEffectiveOmega(CELL& cell, PARAMETERS& parameters) any_platform
2543{
2544auto x32 = parameters.template get<olb::collision::LES::Smagorinsky>();
2545auto x31 = parameters.template get<olb::descriptors::OMEGA>();
2546auto x0 = cell[12] + cell[25];
2547auto x1 = x0 + cell[18];
2548auto x2 = cell[11] + cell[24];
2549auto x3 = x2 + cell[20];
2550auto x4 = cell[22] + cell[9];
2551auto x5 = cell[13] + cell[1];
2552auto x6 = cell[26] + cell[2] + cell[8];
2553auto x7 = cell[10] + cell[3];
2554auto x8 = x1 + x3 + x4 + x5 + x6 + x7 + cell[0] + cell[14] + cell[15] + cell[16] + cell[17] + cell[19] + cell[21] + cell[23] + cell[4] + cell[5] + cell[6] + cell[7] + V{1};
2555auto x9 = V{1} / (x8);
2556auto x10 = (V{0.0277777777777778}*cell[0] + V{0.0277777777777778}*cell[10] + V{0.0277777777777778}*cell[11] + V{0.0277777777777778}*cell[12] + V{0.0277777777777778}*cell[13] + V{0.0277777777777778}*cell[14] + V{0.0277777777777778}*cell[15] + V{0.0277777777777778}*cell[16] + V{0.0277777777777778}*cell[17] + V{0.0277777777777778}*cell[18] + V{0.0277777777777778}*cell[19] + V{0.0277777777777778}*cell[1] + V{0.0277777777777778}*cell[20] + V{0.0277777777777778}*cell[21] + V{0.0277777777777778}*cell[22] + V{0.0277777777777778}*cell[23] + V{0.0277777777777778}*cell[24] + V{0.0277777777777778}*cell[25] + V{0.0277777777777778}*cell[26] + V{0.0277777777777778}*cell[2] + V{0.0277777777777778}*cell[3] + V{0.0277777777777778}*cell[4] + V{0.0277777777777778}*cell[5] + V{0.0277777777777778}*cell[6] + V{0.0277777777777778}*cell[7] + V{0.0277777777777778}*cell[8] + V{0.0277777777777778}*cell[9] + V{0.0277777777777778})/((x31)*(x31));
2557auto x11 = x32*x32;
2558auto x12 = V{1}*x9;
2559auto x13 = -cell[17];
2560auto x14 = -cell[24];
2561auto x15 = x13 + x14 + cell[5];
2562auto x16 = -cell[19];
2563auto x17 = -cell[25];
2564auto x18 = x16 + x17 + cell[7];
2565auto x19 = -cell[23];
2566auto x20 = x19 - cell[26];
2567auto x21 = cell[10] + cell[11] + cell[4];
2568auto x22 = cell[12] + cell[6];
2569auto x23 = x15 + x18 + x20 + x21 + x22 + x5 - cell[14] - cell[18] - cell[20];
2570auto x24 = -x12*x23*x23;
2571auto x25 = V{0.666666666666667}*cell[10];
2572auto x26 = V{0.666666666666667}*cell[11];
2573auto x27 = V{0.666666666666667}*cell[12];
2574auto x28 = V{0.666666666666667}*cell[13];
2575auto x29 = V{0.666666666666667}*cell[23];
2576auto x30 = V{0.666666666666667}*cell[24];
2577auto x33 = V{0.666666666666667}*cell[25];
2578auto x34 = V{0.666666666666667}*cell[26];
2579auto x35 = -V{0.333333333333333}*cell[0];
2580auto x36 = x25 + x26 + x27 + x28 + x29 + x30 + x33 + x34 + x35 - V{0.333333333333333}*cell[16] + V{0.666666666666667}*cell[17] + V{0.666666666666667}*cell[18] - V{0.333333333333333}*cell[3] + V{0.666666666666667}*cell[4] + V{0.666666666666667}*cell[5];
2581auto x37 = -V{0.333333333333333}*cell[15] + V{0.666666666666667}*cell[19] + V{0.666666666666667}*cell[20] - V{0.333333333333333}*cell[2] + V{0.666666666666667}*cell[6] + V{0.666666666666667}*cell[7];
2582auto x38 = x36 + x37 + V{0.666666666666667}*cell[14] + V{0.666666666666667}*cell[1] - V{0.333333333333333}*cell[21] - V{0.333333333333333}*cell[22] - V{0.333333333333333}*cell[8] - V{0.333333333333333}*cell[9];
2583auto x39 = x24 + x38;
2584auto x40 = -cell[12];
2585auto x41 = -cell[13] - cell[21];
2586auto x42 = x19 + x41;
2587auto x43 = x13 + x14 + x21 + x40 + x42 + x6 - cell[15] + cell[18] - cell[22] + cell[25] - cell[5] + cell[9];
2588auto x44 = -x12*x43*x43;
2589auto x45 = -V{0.333333333333333}*cell[14] - V{0.333333333333333}*cell[1] + V{0.666666666666667}*cell[21] + V{0.666666666666667}*cell[22] + V{0.666666666666667}*cell[8] + V{0.666666666666667}*cell[9];
2590auto x46 = x36 + x45 + V{0.666666666666667}*cell[15] - V{0.333333333333333}*cell[19] - V{0.333333333333333}*cell[20] + V{0.666666666666667}*cell[2] - V{0.333333333333333}*cell[6] - V{0.333333333333333}*cell[7];
2591auto x47 = x44 + x46;
2592auto x48 = -cell[11];
2593auto x49 = x16 + x17 + x22 + x42 + x48 + x7 - cell[16] + cell[20] + cell[22] + cell[24] + cell[26] - cell[7] + cell[8] - cell[9];
2594auto x50 = -x12*x49*x49;
2595auto x51 = x25 + x26 + x27 + x28 + x29 + x30 + x33 + x34 + x35 + x37 + x45 + V{0.666666666666667}*cell[16] - V{0.333333333333333}*cell[17] - V{0.333333333333333}*cell[18] + V{0.666666666666667}*cell[3] - V{0.333333333333333}*cell[4] - V{0.333333333333333}*cell[5];
2596auto x52 = x50 + x51;
2597auto x53 = -x43;
2598auto x54 = -x23;
2599auto x55 = x54*x9;
2600auto x56 = -cell[10];
2601auto x57 = x19 + x56 + cell[13] + cell[26];
2602auto x58 = x1 + x15 + x48 + x53*x55 + x57 - cell[4];
2603auto x59 = -x49;
2604auto x60 = x18 + x3 + x40 + x55*x59 + x57 - cell[6];
2605auto x61 = x0 + x2 + x20 + x4 + x41 + x53*x59*x9 + x56 - cell[8];
2606auto x62 = util::sqrt(V{0.5}*(x39*x39) + V{0.5}*(x47*x47) + V{0.5}*(x52*x52) + x58*x58 + x60*x60 + x61*x61);
2607auto x63 = (V{0.166666666666667}*cell[0] + V{0.166666666666667}*cell[10] + V{0.166666666666667}*cell[11] + V{0.166666666666667}*cell[12] + V{0.166666666666667}*cell[13] + V{0.166666666666667}*cell[14] + V{0.166666666666667}*cell[15] + V{0.166666666666667}*cell[16] + V{0.166666666666667}*cell[17] + V{0.166666666666667}*cell[18] + V{0.166666666666667}*cell[19] + V{0.166666666666667}*cell[1] + V{0.166666666666667}*cell[20] + V{0.166666666666667}*cell[21] + V{0.166666666666667}*cell[22] + V{0.166666666666667}*cell[23] + V{0.166666666666667}*cell[24] + V{0.166666666666667}*cell[25] + V{0.166666666666667}*cell[26] + V{0.166666666666667}*cell[2] + V{0.166666666666667}*cell[3] + V{0.166666666666667}*cell[4] + V{0.166666666666667}*cell[5] + V{0.166666666666667}*cell[6] + V{0.166666666666667}*cell[7] + V{0.166666666666667}*cell[8] + V{0.166666666666667}*cell[9] + V{0.166666666666667})/x31;
2608auto x64 = -x63 + util::sqrt(x8*(x10 + x11*x62));
2609auto x65 = -x12*x54*x54 + x38;
2610auto x66 = -x12*x53*x53 + x46;
2611auto x67 = -x12*x59*x59 + x51;
2612auto x68 = -x58;
2613auto x69 = -x60;
2614auto x70 = -x61;
2615return V{7.54247466666667}*x9*(x24 + x44 + x50 - V{1}*cell[0] + V{2}*cell[10] + V{2}*cell[11] + V{2}*cell[12] + V{2}*cell[13] + V{1.11022302462516e-16}*cell[14] + V{1.11022302462516e-16}*cell[15] + V{1.11022302462516e-16}*cell[16] + V{1}*cell[17] + V{1}*cell[18] + V{1}*cell[19] + V{1.11022302462516e-16}*cell[1] + V{1}*cell[20] + V{1}*cell[21] + V{1}*cell[22] + V{2}*cell[23] + V{2}*cell[24] + V{2}*cell[25] + V{2}*cell[26] + V{1.11022302462516e-16}*cell[2] + V{1.11022302462516e-16}*cell[3] + V{1}*cell[4] + V{1}*cell[5] + V{1}*cell[6] + V{1}*cell[7] + V{1}*cell[8] + V{1}*cell[9])*util::sqrt((x64*x64)/(util::pow(x32, 4)*((x8)*(x8))))*(-V{0.166666666666667}*x63 + V{0.166666666666667}*util::sqrt(x8*(x10 + x11*util::sqrt(V{0.5}*(x65*x65) + V{0.5}*(x66*x66) + V{0.5}*(x67*x67) + x68*x68 + x69*x69 + x70*x70))))/x62;
2616}
2617
2618};
2619
2620
2621template <typename... FIELDS>
2622struct ConStrainSmagorinskyEffectiveOmega<BGK,descriptors::D2Q9<FIELDS...>,momenta::BulkTuple,equilibria::SecondOrder> {
2623
2624template <CONCEPT(MinimalCell) CELL, typename PARAMETERS, typename V=typename CELL::value_t>
2625CellStatistic<V> apply(CELL& cell, PARAMETERS& parameters) any_platform
2626{
2627auto x13 = parameters.template get<olb::collision::LES::Smagorinsky>();
2628auto x12 = parameters.template get<olb::descriptors::OMEGA>();
2629auto x9 = V{1} / (x12);
2630auto x10 = x13*x13;
2631auto x11 = cell[1] + cell[7];
2632auto x14 = x11 + cell[0] + cell[2] + cell[3] + cell[4] + cell[5] + cell[6] + cell[8] + V{1};
2633auto x15 = V{1} / ((x14)*(x14));
2634auto x16 = -cell[3];
2635auto x17 = cell[1] - cell[7];
2636auto x18 = -cell[5];
2637auto x19 = x18 + cell[3];
2638auto x20 = cell[2] - cell[6];
2639auto x21 = x17 + x19 + x20;
2640auto x22 = -x21;
2641auto x23 = V{1} / (x14);
2642auto x24 = -cell[4] + cell[8];
2643auto x25 = x11 + x16 + x18 + x24;
2644auto x26 = x23*x25;
2645auto x27 = x16 + x17 + x22*x26 + cell[5];
2646auto x28 = V{1}*x23;
2647auto x29 = x21*x21;
2648auto x30 = -V{0.333333333333333}*cell[0] + V{0.666666666666667}*cell[1] + V{0.666666666666667}*cell[3] + V{0.666666666666667}*cell[5] + V{0.666666666666667}*cell[7];
2649auto x31 = -x28*x29 + x30 + V{0.666666666666667}*cell[2] - V{0.333333333333333}*cell[4] + V{0.666666666666667}*cell[6] - V{0.333333333333333}*cell[8];
2650auto x32 = x31*x31;
2651auto x33 = x25*x25;
2652auto x34 = -x28*x33 + x30 - V{0.333333333333333}*cell[2] + V{0.666666666666667}*cell[4] - V{0.333333333333333}*cell[6] + V{0.666666666666667}*cell[8];
2653auto x35 = x34*x34;
2654auto x36 = V{0.5}*x32 + V{0.5}*x35;
2655auto x37 = -x9*(V{0.198201185833787}*cell[0] + V{0.198201185833787}*cell[1] + V{0.198201185833787}*cell[2] + V{0.198201185833787}*cell[3] + V{0.198201185833787}*cell[4] + V{0.198201185833787}*cell[5] + V{0.198201185833787}*cell[6] + V{0.198201185833787}*cell[7] + V{0.198201185833787}*cell[8] + V{0.198201185833787}) + util::sqrt(x14*(V{1.4142135623731}*x10*util::sqrt(x36 + x27*x27) + (V{0.0392837100659193}*cell[0] + V{0.0392837100659193}*cell[1] + V{0.0392837100659193}*cell[2] + V{0.0392837100659193}*cell[3] + V{0.0392837100659193}*cell[4] + V{0.0392837100659193}*cell[5] + V{0.0392837100659193}*cell[6] + V{0.0392837100659193}*cell[7] + V{0.0392837100659193}*cell[8] + V{0.0392837100659193})/((x12)*(x12))));
2656auto x38 = -x19 - x21*x26 + cell[1] - cell[7];
2657auto x39 = x38*x38;
2658auto x40 = V{1} / (V{3.56762134500816}*x10*util::sqrt(x15*(x37*x37)*V{1} / (x32 + x35 + V{2}*x39)*(x36 + x39)/util::pow(x13, 4)) + V{1}*x9);
2659auto x41 = V{1.5}*x15;
2660auto x42 = x33*x41;
2661auto x43 = x41*(x22*x22) + V{-1};
2662auto x44 = x42 + x43;
2663auto x45 = V{1} - x40;
2664auto x46 = V{0.0277777777777778}*cell[0] + V{0.0277777777777778}*cell[1] + V{0.0277777777777778}*cell[2] + V{0.0277777777777778}*cell[3] + V{0.0277777777777778}*cell[4] + V{0.0277777777777778}*cell[5] + V{0.0277777777777778}*cell[6] + V{0.0277777777777778}*cell[7] + V{0.0277777777777778}*cell[8] + V{0.0277777777777778};
2665auto x47 = V{4.5}*x15;
2666auto x48 = x20 + x24 + V{2}*cell[1] - V{2}*cell[5];
2667auto x49 = x47*(x48*x48);
2668auto x50 = V{3}*cell[3];
2669auto x51 = V{3}*cell[7];
2670auto x52 = V{3}*cell[1] - V{3}*cell[5];
2671auto x53 = x50 - x51 + x52 + V{3}*cell[2] - V{3}*cell[6];
2672auto x54 = x23*x53;
2673auto x55 = -x42 + x54 + V{1};
2674auto x56 = -x50 + x51 + x52 - V{3}*cell[4] + V{3}*cell[8];
2675auto x57 = x23*x56;
2676auto x58 = x29*x41;
2677auto x59 = x57 - x58;
2678auto x60 = V{0.111111111111111}*cell[0] + V{0.111111111111111}*cell[1] + V{0.111111111111111}*cell[2] + V{0.111111111111111}*cell[3] + V{0.111111111111111}*cell[4] + V{0.111111111111111}*cell[5] + V{0.111111111111111}*cell[6] + V{0.111111111111111}*cell[7] + V{0.111111111111111}*cell[8] + V{0.111111111111111};
2679auto x61 = V{3}*x15;
2680auto x62 = x20 + V{2}*cell[3] + cell[4] - V{2}*cell[7] - cell[8];
2681auto x63 = -x62;
2682auto x64 = x33*x61;
2683auto x65 = x42 + x54 + V{-1};
2684auto x66 = x58 + x65;
2685auto x0 = -x40*(x44*(V{0.444444444444444}*cell[0] + V{0.444444444444444}*cell[1] + V{0.444444444444444}*cell[2] + V{0.444444444444444}*cell[3] + V{0.444444444444444}*cell[4] + V{0.444444444444444}*cell[5] + V{0.444444444444444}*cell[6] + V{0.444444444444444}*cell[7] + V{0.444444444444444}*cell[8] + V{0.444444444444444}) + V{0.444444444444444}) + V{1}*x45*cell[0];
2686auto x1 = x40*(x46*(x49 + x55 + x59) + V{-0.0277777777777778}) + V{1}*x45*cell[1];
2687auto x2 = x40*(x60*(x29*x61 + x55) + V{-0.111111111111111}) + V{1}*x45*cell[2];
2688auto x3 = -x40*(x46*(-x23*x53 + x44 - x47*x63*x63 + x57) + V{0.0277777777777778}) + V{1}*x45*cell[3];
2689auto x4 = -x40*(x60*(x43 + x57 - x64) + V{0.111111111111111}) + V{1}*x45*cell[4];
2690auto x5 = -x40*(x46*(-x49 + x57 + x66) + V{0.0277777777777778}) + V{1}*x45*cell[5];
2691auto x6 = x40*(x60*(V{3}*x15*x29 - x65) + V{-0.111111111111111}) + V{1}*x45*cell[6];
2692auto x7 = x40*(-x46*(-V{4.5}*x15*x62*x62 - x23*x56 + x66) + V{-0.0277777777777778}) + V{1}*x45*cell[7];
2693auto x8 = x40*(x60*(x59 + x64 + V{1}) + V{-0.111111111111111}) + V{1}*x45*cell[8];
2694cell[0] = x0;
2695cell[1] = x1;
2696cell[2] = x2;
2697cell[3] = x3;
2698cell[4] = x4;
2699cell[5] = x5;
2700cell[6] = x6;
2701cell[7] = x7;
2702cell[8] = x8;
2703return { x14, V{1}*x15*(x29 + x33) };
2704}
2705
2706template <typename CELL, typename PARAMETERS, typename V=typename CELL::value_t>
2707auto computeEffectiveOmega(CELL& cell, PARAMETERS& parameters) any_platform
2708{
2709auto x13 = parameters.template get<olb::collision::LES::Smagorinsky>();
2710auto x12 = parameters.template get<olb::descriptors::OMEGA>();
2711auto x0 = V{1} / (x12);
2712auto x1 = x13*x13;
2713auto x2 = cell[1] + cell[7] + cell[8];
2714auto x3 = x2 + cell[0] + cell[2] + cell[3] + cell[4] + cell[5] + cell[6] + V{1};
2715auto x4 = -cell[3];
2716auto x5 = cell[1] - cell[7];
2717auto x6 = -cell[5];
2718auto x7 = x6 + cell[3];
2719auto x8 = x5 + x7 + cell[2] - cell[6];
2720auto x9 = V{1} / (x3);
2721auto x10 = x2 + x4 + x6 - cell[4];
2722auto x11 = x10*x9;
2723auto x14 = -x11*x8 + x4 + x5 + cell[5];
2724auto x15 = V{1}*x9;
2725auto x16 = -V{0.333333333333333}*cell[0] + V{0.666666666666667}*cell[1] + V{0.666666666666667}*cell[3] + V{0.666666666666667}*cell[5] + V{0.666666666666667}*cell[7];
2726auto x17 = -x15*x8*x8 + x16 + V{0.666666666666667}*cell[2] - V{0.333333333333333}*cell[4] + V{0.666666666666667}*cell[6] - V{0.333333333333333}*cell[8];
2727auto x18 = x17*x17;
2728auto x19 = -x15*x10*x10 + x16 - V{0.333333333333333}*cell[2] + V{0.666666666666667}*cell[4] - V{0.333333333333333}*cell[6] + V{0.666666666666667}*cell[8];
2729auto x20 = x19*x19;
2730auto x21 = V{0.5}*x18 + V{0.5}*x20;
2731auto x22 = -x0*(V{0.198201185833787}*cell[0] + V{0.198201185833787}*cell[1] + V{0.198201185833787}*cell[2] + V{0.198201185833787}*cell[3] + V{0.198201185833787}*cell[4] + V{0.198201185833787}*cell[5] + V{0.198201185833787}*cell[6] + V{0.198201185833787}*cell[7] + V{0.198201185833787}*cell[8] + V{0.198201185833787}) + util::sqrt(x3*(V{1.4142135623731}*x1*util::sqrt(x21 + x14*x14) + (V{0.0392837100659193}*cell[0] + V{0.0392837100659193}*cell[1] + V{0.0392837100659193}*cell[2] + V{0.0392837100659193}*cell[3] + V{0.0392837100659193}*cell[4] + V{0.0392837100659193}*cell[5] + V{0.0392837100659193}*cell[6] + V{0.0392837100659193}*cell[7] + V{0.0392837100659193}*cell[8] + V{0.0392837100659193})/((x12)*(x12))));
2732auto x23 = -x11*x8 - x7 + cell[1] - cell[7];
2733auto x24 = x23*x23;
2734return V{1} / (V{1}*x0 + V{3.56762134500816}*x1*util::sqrt((x22*x22)*V{1} / (x18 + x20 + V{2}*x24)*(x21 + x24)/(util::pow(x13, 4)*((x3)*(x3)))));
2735}
2736
2737};
2738
2739template <typename... FIELDS>
2740struct ConStrainSmagorinskyEffectiveOmega<BGK,descriptors::D3Q19<FIELDS...>,momenta::BulkTuple,equilibria::SecondOrder> {
2741
2742template <CONCEPT(MinimalCell) CELL, typename PARAMETERS, typename V=typename CELL::value_t>
2743CellStatistic<V> apply(CELL& cell, PARAMETERS& parameters) any_platform
2744{
2745auto x23 = parameters.template get<olb::descriptors::OMEGA>();
2746auto x24 = parameters.template get<olb::collision::LES::Smagorinsky>();
2747auto x19 = V{1} / (x23);
2748auto x20 = x24*x24;
2749auto x21 = cell[15] + cell[17];
2750auto x22 = x21 + cell[12];
2751auto x25 = cell[11] + cell[18];
2752auto x26 = cell[10] + cell[14] + cell[16];
2753auto x27 = cell[2] + cell[8] + cell[9];
2754auto x28 = cell[13] + cell[3];
2755auto x29 = x22 + x25 + x26 + x27 + x28 + cell[0] + cell[1] + cell[4] + cell[5] + cell[6] + cell[7] + V{1};
2756auto x30 = V{1} / ((x29)*(x29));
2757auto x31 = V{0.0277777777777778}*cell[0] + V{0.0277777777777778}*cell[10] + V{0.0277777777777778}*cell[11] + V{0.0277777777777778}*cell[12] + V{0.0277777777777778}*cell[13] + V{0.0277777777777778}*cell[14] + V{0.0277777777777778}*cell[15] + V{0.0277777777777778}*cell[16] + V{0.0277777777777778}*cell[17] + V{0.0277777777777778}*cell[18] + V{0.0277777777777778}*cell[1] + V{0.0277777777777778}*cell[2] + V{0.0277777777777778}*cell[3] + V{0.0277777777777778}*cell[4] + V{0.0277777777777778}*cell[5] + V{0.0277777777777778}*cell[6] + V{0.0277777777777778}*cell[7] + V{0.0277777777777778}*cell[8] + V{0.0277777777777778}*cell[9] + V{0.0277777777777778};
2758auto x32 = V{0.333333333333333}*cell[4];
2759auto x33 = V{0.333333333333333}*cell[5];
2760auto x34 = V{0.333333333333333}*cell[13];
2761auto x35 = V{0.333333333333333}*cell[14];
2762auto x36 = V{1} / (x29);
2763auto x37 = V{1}*x36;
2764auto x38 = -cell[3];
2765auto x39 = -cell[18];
2766auto x40 = -cell[8];
2767auto x41 = x40 + cell[9];
2768auto x42 = x38 + x39 + x41;
2769auto x43 = -cell[6];
2770auto x44 = x43 + cell[7];
2771auto x45 = x44 - cell[16];
2772auto x46 = x22 + x42 + x45;
2773auto x47 = x46*x46;
2774auto x48 = V{0.333333333333333}*cell[0];
2775auto x49 = V{0.333333333333333}*cell[1];
2776auto x50 = V{0.333333333333333}*cell[10];
2777auto x51 = x48 + x49 + x50 - V{0.666666666666667}*cell[17] - V{0.666666666666667}*cell[18] - V{0.666666666666667}*cell[8] - V{0.666666666666667}*cell[9];
2778auto x52 = V{0.333333333333333}*cell[2];
2779auto x53 = V{0.333333333333333}*cell[11];
2780auto x54 = x52 + x53 - V{0.666666666666667}*cell[15] - V{0.666666666666667}*cell[16] - V{0.666666666666667}*cell[6] - V{0.666666666666667}*cell[7];
2781auto x55 = x32 + x33 + x34 + x35 + x37*x47 + x51 + x54 - V{0.666666666666667}*cell[12] - V{0.666666666666667}*cell[3];
2782auto x56 = V{0.333333333333333}*cell[6];
2783auto x57 = V{0.333333333333333}*cell[7];
2784auto x58 = V{0.333333333333333}*cell[15];
2785auto x59 = V{0.333333333333333}*cell[16];
2786auto x60 = cell[13] + cell[17];
2787auto x61 = -cell[2];
2788auto x62 = -cell[9];
2789auto x63 = x25 + x40 + x61 + x62;
2790auto x64 = -cell[4];
2791auto x65 = x64 + cell[5];
2792auto x66 = x65 - cell[14];
2793auto x67 = x60 + x63 + x66;
2794auto x68 = x67*x67;
2795auto x69 = V{0.333333333333333}*cell[3];
2796auto x70 = V{0.333333333333333}*cell[12];
2797auto x71 = x69 + x70 - V{0.666666666666667}*cell[13] - V{0.666666666666667}*cell[14] - V{0.666666666666667}*cell[4] - V{0.666666666666667}*cell[5];
2798auto x72 = x37*x68 + x51 + x56 + x57 + x58 + x59 + x71 - V{0.666666666666667}*cell[11] - V{0.666666666666667}*cell[2];
2799auto x73 = V{0.333333333333333}*cell[8];
2800auto x74 = V{0.333333333333333}*cell[9];
2801auto x75 = V{0.333333333333333}*cell[17];
2802auto x76 = V{0.333333333333333}*cell[18];
2803auto x77 = cell[13] + cell[15];
2804auto x78 = -cell[1];
2805auto x79 = -cell[7];
2806auto x80 = x43 + x78 + x79;
2807auto x81 = x64 - cell[5];
2808auto x82 = x26 + x77 + x80 + x81;
2809auto x83 = x82*x82;
2810auto x84 = x37*x83 + x48 + x54 + x71 + x73 + x74 + x75 + x76 - V{0.666666666666667}*cell[10] - V{0.666666666666667}*cell[1];
2811auto x85 = x36*x82;
2812auto x86 = x65 + x67*x85 - cell[13] + cell[14];
2813auto x87 = -cell[15] + cell[16];
2814auto x88 = x44 + x46*x85 + x87;
2815auto x89 = -cell[17];
2816auto x90 = x89 + cell[18];
2817auto x91 = x36*x46*x67 + x41 + x90;
2818auto x92 = -x19*(V{0.166666666666667}*cell[0] + V{0.166666666666667}*cell[10] + V{0.166666666666667}*cell[11] + V{0.166666666666667}*cell[12] + V{0.166666666666667}*cell[13] + V{0.166666666666667}*cell[14] + V{0.166666666666667}*cell[15] + V{0.166666666666667}*cell[16] + V{0.166666666666667}*cell[17] + V{0.166666666666667}*cell[18] + V{0.166666666666667}*cell[1] + V{0.166666666666667}*cell[2] + V{0.166666666666667}*cell[3] + V{0.166666666666667}*cell[4] + V{0.166666666666667}*cell[5] + V{0.166666666666667}*cell[6] + V{0.166666666666667}*cell[7] + V{0.166666666666667}*cell[8] + V{0.166666666666667}*cell[9] + V{0.166666666666667}) + util::sqrt(x29*(x20*util::sqrt(V{0.5}*(x55*x55) + V{0.5}*(x72*x72) + V{0.5}*(x84*x84) + x86*x86 + x88*x88 + x91*x91) + x31/((x23)*(x23))));
2819auto x93 = V{1} / (V{1}*x19 + V{3}*x20*util::sqrt(x30*(x92*x92)/util::pow(x24, 4)));
2820auto x94 = V{1.5}*x30;
2821auto x95 = x83*x94;
2822auto x96 = x68*x94;
2823auto x97 = x47*x94;
2824auto x98 = x96 + x97 + V{-1};
2825auto x99 = x95 + x98;
2826auto x100 = V{1} - x93;
2827auto x101 = V{0.0555555555555556}*cell[0] + V{0.0555555555555556}*cell[10] + V{0.0555555555555556}*cell[11] + V{0.0555555555555556}*cell[12] + V{0.0555555555555556}*cell[13] + V{0.0555555555555556}*cell[14] + V{0.0555555555555556}*cell[15] + V{0.0555555555555556}*cell[16] + V{0.0555555555555556}*cell[17] + V{0.0555555555555556}*cell[18] + V{0.0555555555555556}*cell[1] + V{0.0555555555555556}*cell[2] + V{0.0555555555555556}*cell[3] + V{0.0555555555555556}*cell[4] + V{0.0555555555555556}*cell[5] + V{0.0555555555555556}*cell[6] + V{0.0555555555555556}*cell[7] + V{0.0555555555555556}*cell[8] + V{0.0555555555555556}*cell[9] + V{0.0555555555555556};
2828auto x102 = V{3}*cell[14];
2829auto x103 = V{3}*cell[16];
2830auto x104 = V{3}*cell[5];
2831auto x105 = V{3}*cell[7];
2832auto x106 = V{3}*cell[13] - V{3}*cell[4];
2833auto x107 = V{3}*cell[15] - V{3}*cell[6];
2834auto x108 = x36*(x102 + x103 - x104 - x105 + x106 + x107 + V{3}*cell[10] - V{3}*cell[1]);
2835auto x109 = V{3}*x30;
2836auto x110 = x109*x83;
2837auto x111 = V{3}*cell[18];
2838auto x112 = V{3}*cell[9];
2839auto x113 = V{3}*cell[17] - V{3}*cell[8];
2840auto x114 = x36*(-x102 + x104 + x106 + x111 - x112 + x113 + V{3}*cell[11] - V{3}*cell[2]);
2841auto x115 = x109*x68;
2842auto x116 = x95 + V{-1};
2843auto x117 = x36*(-x103 + x105 + x107 - x111 + x112 + x113 + V{3}*cell[12] - V{3}*cell[3]);
2844auto x118 = x109*x47;
2845auto x119 = V{4.5}*x30;
2846auto x120 = x80 + cell[10] + cell[16];
2847auto x121 = x120 + x21 + x63 + V{2}*cell[13] - V{2}*cell[4];
2848auto x122 = x119*(x121*x121);
2849auto x123 = x108 + x99;
2850auto x124 = -x114;
2851auto x125 = x120 + x27 + x39 + x89 - cell[11] + V{2}*cell[14] + cell[15] - V{2}*cell[5];
2852auto x126 = -x125;
2853auto x127 = x78 + x81 + cell[10] + cell[14];
2854auto x128 = x127 + x42 + x60 + cell[12] + V{2}*cell[15] - V{2}*cell[6];
2855auto x129 = x119*(x128*x128);
2856auto x130 = -x117;
2857auto x131 = x28 - cell[12];
2858auto x132 = x127 + x131 + x62 + x90 + V{2}*cell[16] - V{2}*cell[7] + cell[8];
2859auto x133 = -x132;
2860auto x134 = x61 + x66 + cell[11];
2861auto x135 = x134 + x38 + x45 + x77 + cell[12] + V{2}*cell[17] - V{2}*cell[8];
2862auto x136 = x119*(x135*x135);
2863auto x137 = x114 + x99;
2864auto x138 = x131 + x134 + x79 + x87 + V{2}*cell[18] + cell[6] - V{2}*cell[9];
2865auto x139 = -x138;
2866auto x140 = -x96;
2867auto x141 = V{1} - x97;
2868auto x142 = x140 + x141;
2869auto x143 = x108 + x142;
2870auto x144 = -x95;
2871auto x145 = x114 + x144;
2872auto x146 = x117 + x144;
2873auto x147 = -x108;
2874auto x148 = x117 + x99;
2875cell[0] = V{1}*x100*cell[0] - x93*(x99*(x32 + x33 + x34 + x35 + x48 + x49 + x50 + x52 + x53 + x56 + x57 + x58 + x59 + x69 + x70 + x73 + x74 + x75 + x76 + V{0.333333333333333}) + V{0.333333333333333});
2876cell[1] = V{1}*x100*cell[1] - x93*(x101*(x108 - x110 + x98) + V{0.0555555555555556});
2877cell[2] = V{1}*x100*cell[2] - x93*(x101*(x114 - x115 + x116 + x97) + V{0.0555555555555556});
2878cell[3] = V{1}*x100*cell[3] - x93*(x101*(x116 + x117 - x118 + x96) + V{0.0555555555555556});
2879cell[4] = V{1}*x100*cell[4] - x93*(x31*(x114 - x122 + x123) + V{0.0277777777777778});
2880cell[5] = V{1}*x100*cell[5] - x93*(x31*(-x119*x126*x126 + x123 + x124) + V{0.0277777777777778});
2881cell[6] = V{1}*x100*cell[6] - x93*(x31*(x117 + x123 - x129) + V{0.0277777777777778});
2882cell[7] = V{1}*x100*cell[7] - x93*(x31*(-x119*x133*x133 + x123 + x130) + V{0.0277777777777778});
2883cell[8] = V{1}*x100*cell[8] - x93*(x31*(x117 - x136 + x137) + V{0.0277777777777778});
2884cell[9] = V{1}*x100*cell[9] - x93*(x31*(-x119*x139*x139 + x130 + x137) + V{0.0277777777777778});
2885cell[10] = V{1}*x100*cell[10] + x93*(x101*(x110 + x143) + V{-0.0555555555555556});
2886cell[11] = V{1}*x100*cell[11] + x93*(x101*(x115 + x141 + x145) + V{-0.0555555555555556});
2887cell[12] = V{1}*x100*cell[12] + x93*(x101*(x118 + x140 + x146 + V{1}) + V{-0.0555555555555556});
2888cell[13] = V{1}*x100*cell[13] + x93*(x31*(x122 + x143 + x145) + V{-0.0277777777777778});
2889cell[14] = V{1}*x100*cell[14] - x93*(x31*(-x119*x125*x125 + x137 + x147) + V{0.0277777777777778});
2890cell[15] = V{1}*x100*cell[15] + x93*(x31*(x129 + x143 + x146) + V{-0.0277777777777778});
2891cell[16] = V{1}*x100*cell[16] - x93*(x31*(-x119*x132*x132 + x147 + x148) + V{0.0277777777777778});
2892cell[17] = V{1}*x100*cell[17] + x93*(x31*(x117 + x136 + x142 + x145) + V{-0.0277777777777778});
2893cell[18] = V{1}*x100*cell[18] - x93*(x31*(-x119*x138*x138 + x124 + x148) + V{0.0277777777777778});
2894return { x29, V{1}*x30*(x47 + x68 + x83) };
2895}
2896
2897template <typename CELL, typename PARAMETERS, typename V=typename CELL::value_t>
2898auto computeEffectiveOmega(CELL& cell, PARAMETERS& parameters) any_platform
2899{
2900auto x23 = parameters.template get<olb::descriptors::OMEGA>();
2901auto x24 = parameters.template get<olb::collision::LES::Smagorinsky>();
2902auto x0 = V{1} / (x23);
2903auto x1 = x24*x24;
2904auto x2 = cell[12] + cell[15] + cell[17];
2905auto x3 = cell[11] + cell[13] + cell[18];
2906auto x4 = cell[10] + cell[14] + cell[16];
2907auto x5 = x2 + x3 + x4 + cell[0] + cell[1] + cell[2] + cell[3] + cell[4] + cell[5] + cell[6] + cell[7] + cell[8] + cell[9] + V{1};
2908auto x6 = V{1} / (x5);
2909auto x7 = V{1}*x6;
2910auto x8 = -cell[6];
2911auto x9 = x8 + cell[7];
2912auto x10 = -cell[8];
2913auto x11 = x10 + cell[9];
2914auto x12 = x11 + x2 + x9 - cell[16] - cell[18] - cell[3];
2915auto x13 = V{0.333333333333333}*cell[0];
2916auto x14 = x13 + V{0.333333333333333}*cell[10] - V{0.666666666666667}*cell[17] - V{0.666666666666667}*cell[18] + V{0.333333333333333}*cell[1] - V{0.666666666666667}*cell[8] - V{0.666666666666667}*cell[9];
2917auto x15 = V{0.333333333333333}*cell[11] - V{0.666666666666667}*cell[15] - V{0.666666666666667}*cell[16] + V{0.333333333333333}*cell[2] - V{0.666666666666667}*cell[6] - V{0.666666666666667}*cell[7];
2918auto x16 = x14 + x15 + x7*(x12*x12) - V{0.666666666666667}*cell[12] + V{0.333333333333333}*cell[13] + V{0.333333333333333}*cell[14] - V{0.666666666666667}*cell[3] + V{0.333333333333333}*cell[4] + V{0.333333333333333}*cell[5];
2919auto x17 = -cell[4];
2920auto x18 = x17 + cell[5];
2921auto x19 = x10 + x18 + x3 - cell[14] + cell[17] - cell[2] - cell[9];
2922auto x20 = V{0.333333333333333}*cell[12] - V{0.666666666666667}*cell[13] - V{0.666666666666667}*cell[14] + V{0.333333333333333}*cell[3] - V{0.666666666666667}*cell[4] - V{0.666666666666667}*cell[5];
2923auto x21 = x14 + x20 + x7*(x19*x19) - V{0.666666666666667}*cell[11] + V{0.333333333333333}*cell[15] + V{0.333333333333333}*cell[16] - V{0.666666666666667}*cell[2] + V{0.333333333333333}*cell[6] + V{0.333333333333333}*cell[7];
2924auto x22 = x17 + x4 + x8 + cell[13] + cell[15] - cell[1] - cell[5] - cell[7];
2925auto x25 = x13 + x15 + x20 + x7*(x22*x22) - V{0.666666666666667}*cell[10] + V{0.333333333333333}*cell[17] + V{0.333333333333333}*cell[18] - V{0.666666666666667}*cell[1] + V{0.333333333333333}*cell[8] + V{0.333333333333333}*cell[9];
2926auto x26 = x22*x6;
2927auto x27 = x18 + x19*x26 - cell[13] + cell[14];
2928auto x28 = x12*x26 + x9 - cell[15] + cell[16];
2929auto x29 = x11 + x12*x19*x6 - cell[17] + cell[18];
2930auto x30 = -x0*(V{0.166666666666667}*cell[0] + V{0.166666666666667}*cell[10] + V{0.166666666666667}*cell[11] + V{0.166666666666667}*cell[12] + V{0.166666666666667}*cell[13] + V{0.166666666666667}*cell[14] + V{0.166666666666667}*cell[15] + V{0.166666666666667}*cell[16] + V{0.166666666666667}*cell[17] + V{0.166666666666667}*cell[18] + V{0.166666666666667}*cell[1] + V{0.166666666666667}*cell[2] + V{0.166666666666667}*cell[3] + V{0.166666666666667}*cell[4] + V{0.166666666666667}*cell[5] + V{0.166666666666667}*cell[6] + V{0.166666666666667}*cell[7] + V{0.166666666666667}*cell[8] + V{0.166666666666667}*cell[9] + V{0.166666666666667}) + util::sqrt(x5*(x1*util::sqrt(V{0.5}*(x16*x16) + V{0.5}*(x21*x21) + V{0.5}*(x25*x25) + x27*x27 + x28*x28 + x29*x29) + (V{0.0277777777777778}*cell[0] + V{0.0277777777777778}*cell[10] + V{0.0277777777777778}*cell[11] + V{0.0277777777777778}*cell[12] + V{0.0277777777777778}*cell[13] + V{0.0277777777777778}*cell[14] + V{0.0277777777777778}*cell[15] + V{0.0277777777777778}*cell[16] + V{0.0277777777777778}*cell[17] + V{0.0277777777777778}*cell[18] + V{0.0277777777777778}*cell[1] + V{0.0277777777777778}*cell[2] + V{0.0277777777777778}*cell[3] + V{0.0277777777777778}*cell[4] + V{0.0277777777777778}*cell[5] + V{0.0277777777777778}*cell[6] + V{0.0277777777777778}*cell[7] + V{0.0277777777777778}*cell[8] + V{0.0277777777777778}*cell[9] + V{0.0277777777777778})/((x23)*(x23))));
2931return V{1} / (V{1}*x0 + V{3}*x1*util::sqrt((x30*x30)/(util::pow(x24, 4)*((x5)*(x5)))));
2932}
2933
2934};
2935
2936template <typename... FIELDS>
2937struct ConStrainSmagorinskyEffectiveOmega<BGK,descriptors::D3Q27<FIELDS...>,momenta::BulkTuple,equilibria::SecondOrder> {
2938
2939template <CONCEPT(MinimalCell) CELL, typename PARAMETERS, typename V=typename CELL::value_t>
2940CellStatistic<V> apply(CELL& cell, PARAMETERS& parameters) any_platform
2941{
2942auto x32 = parameters.template get<olb::collision::LES::Smagorinsky>();
2943auto x31 = parameters.template get<olb::descriptors::OMEGA>();
2944auto x27 = V{1} / (x31);
2945auto x28 = x32*x32;
2946auto x29 = cell[10] + cell[6];
2947auto x30 = x29 + cell[13];
2948auto x33 = cell[12] + cell[26];
2949auto x34 = cell[15] + cell[21];
2950auto x35 = cell[19] + cell[7];
2951auto x36 = cell[24] + cell[25];
2952auto x37 = x36 + cell[14];
2953auto x38 = x30 + x33 + x34 + x35 + x37 + cell[0] + cell[11] + cell[16] + cell[17] + cell[18] + cell[1] + cell[20] + cell[22] + cell[23] + cell[2] + cell[3] + cell[4] + cell[5] + cell[8] + cell[9] + V{1};
2954auto x39 = V{1} / ((x38)*(x38));
2955auto x40 = V{1} / (x38);
2956auto x41 = V{1}*x40;
2957auto x42 = -cell[24];
2958auto x43 = -cell[19];
2959auto x44 = x43 + cell[7];
2960auto x45 = -cell[25];
2961auto x46 = x45 + cell[11];
2962auto x47 = x44 + x46;
2963auto x48 = -cell[23];
2964auto x49 = -cell[26];
2965auto x50 = x48 + x49 + cell[12];
2966auto x51 = -cell[20];
2967auto x52 = x51 + cell[4];
2968auto x53 = -cell[17];
2969auto x54 = x53 + cell[5];
2970auto x55 = -cell[14] + cell[1];
2971auto x56 = x54 + x55 - cell[18];
2972auto x57 = x30 + x42 + x47 + x50 + x52 + x56;
2973auto x58 = x57*x57;
2974auto x59 = V{0.666666666666667}*cell[10];
2975auto x60 = V{0.666666666666667}*cell[11];
2976auto x61 = V{0.666666666666667}*cell[12];
2977auto x62 = V{0.666666666666667}*cell[13];
2978auto x63 = V{0.666666666666667}*cell[23];
2979auto x64 = V{0.666666666666667}*cell[24];
2980auto x65 = V{0.666666666666667}*cell[25];
2981auto x66 = V{0.666666666666667}*cell[26];
2982auto x67 = -V{0.333333333333333}*cell[0];
2983auto x68 = x59 + x60 + x61 + x62 + x63 + x64 + x65 + x66 + x67 - V{0.333333333333333}*cell[16] + V{0.666666666666667}*cell[17] + V{0.666666666666667}*cell[18] - V{0.333333333333333}*cell[3] + V{0.666666666666667}*cell[4] + V{0.666666666666667}*cell[5];
2984auto x69 = -V{0.333333333333333}*cell[15] + V{0.666666666666667}*cell[19] + V{0.666666666666667}*cell[20] - V{0.333333333333333}*cell[2] + V{0.666666666666667}*cell[6] + V{0.666666666666667}*cell[7];
2985auto x70 = -x41*x58 + x68 + x69 + V{0.666666666666667}*cell[14] + V{0.666666666666667}*cell[1] - V{0.333333333333333}*cell[21] - V{0.333333333333333}*cell[22] - V{0.333333333333333}*cell[8] - V{0.333333333333333}*cell[9];
2986auto x71 = -cell[12];
2987auto x72 = x71 + cell[26];
2988auto x73 = -cell[13];
2989auto x74 = -cell[21];
2990auto x75 = x74 + cell[9];
2991auto x76 = x73 + x75 + cell[11];
2992auto x77 = x48 + cell[8];
2993auto x78 = -cell[22];
2994auto x79 = x78 + cell[4];
2995auto x80 = -cell[15] + cell[2];
2996auto x81 = x80 + cell[10];
2997auto x82 = x53 + cell[18] - cell[5];
2998auto x83 = x42 + x72 + x76 + x77 + x79 + x81 + x82 + cell[25];
2999auto x84 = x83*x83;
3000auto x85 = -V{0.333333333333333}*cell[14] - V{0.333333333333333}*cell[1] + V{0.666666666666667}*cell[21] + V{0.666666666666667}*cell[22] + V{0.666666666666667}*cell[8] + V{0.666666666666667}*cell[9];
3001auto x86 = -x41*x84 + x68 + x85 + V{0.666666666666667}*cell[15] - V{0.333333333333333}*cell[19] - V{0.333333333333333}*cell[20] + V{0.666666666666667}*cell[2] - V{0.333333333333333}*cell[6] - V{0.333333333333333}*cell[7];
3002auto x87 = -cell[11];
3003auto x88 = -cell[16];
3004auto x89 = x73 + x88 + cell[3];
3005auto x90 = -cell[9];
3006auto x91 = x74 + x90 + cell[22];
3007auto x92 = x43 + cell[20] - cell[7];
3008auto x93 = x29 + x33 + x45 + x77 + x87 + x89 + x91 + x92 + cell[24];
3009auto x94 = x93*x93;
3010auto x95 = -x41*x94 + x59 + x60 + x61 + x62 + x63 + x64 + x65 + x66 + x67 + x69 + x85 + V{0.666666666666667}*cell[16] - V{0.333333333333333}*cell[17] - V{0.333333333333333}*cell[18] + V{0.666666666666667}*cell[3] - V{0.333333333333333}*cell[4] - V{0.333333333333333}*cell[5];
3011auto x96 = -cell[10];
3012auto x97 = -x83;
3013auto x98 = -x57;
3014auto x99 = x40*x98;
3015auto x100 = x42 + cell[12] + cell[26];
3016auto x101 = x48 + cell[13] + cell[25];
3017auto x102 = x100 + x101 + x54 + x87 + x96 + x97*x99 + cell[18] - cell[4];
3018auto x103 = -cell[6];
3019auto x104 = -x93;
3020auto x105 = x48 + cell[13] + cell[24];
3021auto x106 = x103 + x104*x99 + x105 + x47 + x72 + x96 + cell[20];
3022auto x107 = -cell[8];
3023auto x108 = x107 + cell[22];
3024auto x109 = x104*x40*x97 + x108 + x36 + x50 + x76 + x96;
3025auto x110 = -x27*(V{0.166666666666667}*cell[0] + V{0.166666666666667}*cell[10] + V{0.166666666666667}*cell[11] + V{0.166666666666667}*cell[12] + V{0.166666666666667}*cell[13] + V{0.166666666666667}*cell[14] + V{0.166666666666667}*cell[15] + V{0.166666666666667}*cell[16] + V{0.166666666666667}*cell[17] + V{0.166666666666667}*cell[18] + V{0.166666666666667}*cell[19] + V{0.166666666666667}*cell[1] + V{0.166666666666667}*cell[20] + V{0.166666666666667}*cell[21] + V{0.166666666666667}*cell[22] + V{0.166666666666667}*cell[23] + V{0.166666666666667}*cell[24] + V{0.166666666666667}*cell[25] + V{0.166666666666667}*cell[26] + V{0.166666666666667}*cell[2] + V{0.166666666666667}*cell[3] + V{0.166666666666667}*cell[4] + V{0.166666666666667}*cell[5] + V{0.166666666666667}*cell[6] + V{0.166666666666667}*cell[7] + V{0.166666666666667}*cell[8] + V{0.166666666666667}*cell[9] + V{0.166666666666667}) + util::sqrt(x38*(x28*util::sqrt(x102*x102 + x106*x106 + x109*x109 + V{0.5}*(x70*x70) + V{0.5}*(x86*x86) + V{0.5}*(x95*x95)) + (V{0.0277777777777778}*cell[0] + V{0.0277777777777778}*cell[10] + V{0.0277777777777778}*cell[11] + V{0.0277777777777778}*cell[12] + V{0.0277777777777778}*cell[13] + V{0.0277777777777778}*cell[14] + V{0.0277777777777778}*cell[15] + V{0.0277777777777778}*cell[16] + V{0.0277777777777778}*cell[17] + V{0.0277777777777778}*cell[18] + V{0.0277777777777778}*cell[19] + V{0.0277777777777778}*cell[1] + V{0.0277777777777778}*cell[20] + V{0.0277777777777778}*cell[21] + V{0.0277777777777778}*cell[22] + V{0.0277777777777778}*cell[23] + V{0.0277777777777778}*cell[24] + V{0.0277777777777778}*cell[25] + V{0.0277777777777778}*cell[26] + V{0.0277777777777778}*cell[2] + V{0.0277777777777778}*cell[3] + V{0.0277777777777778}*cell[4] + V{0.0277777777777778}*cell[5] + V{0.0277777777777778}*cell[6] + V{0.0277777777777778}*cell[7] + V{0.0277777777777778}*cell[8] + V{0.0277777777777778}*cell[9] + V{0.0277777777777778})/((x31)*(x31))));
3026auto x111 = V{1} / (V{1}*x27 + V{3}*x28*util::sqrt(x39*(x110*x110)/util::pow(x32, 4)));
3027auto x112 = V{1.5}*x39;
3028auto x113 = x98*x98;
3029auto x114 = x112*x113;
3030auto x115 = x97*x97;
3031auto x116 = x112*x115;
3032auto x117 = x104*x104;
3033auto x118 = x112*x117;
3034auto x119 = x116 + x118 + V{-1};
3035auto x120 = x114 + x119;
3036auto x121 = V{1} - x111;
3037auto x122 = V{0.0740740740740741}*cell[0] + V{0.0740740740740741}*cell[10] + V{0.0740740740740741}*cell[11] + V{0.0740740740740741}*cell[12] + V{0.0740740740740741}*cell[13] + V{0.0740740740740741}*cell[14] + V{0.0740740740740741}*cell[15] + V{0.0740740740740741}*cell[16] + V{0.0740740740740741}*cell[17] + V{0.0740740740740741}*cell[18] + V{0.0740740740740741}*cell[19] + V{0.0740740740740741}*cell[1] + V{0.0740740740740741}*cell[20] + V{0.0740740740740741}*cell[21] + V{0.0740740740740741}*cell[22] + V{0.0740740740740741}*cell[23] + V{0.0740740740740741}*cell[24] + V{0.0740740740740741}*cell[25] + V{0.0740740740740741}*cell[26] + V{0.0740740740740741}*cell[2] + V{0.0740740740740741}*cell[3] + V{0.0740740740740741}*cell[4] + V{0.0740740740740741}*cell[5] + V{0.0740740740740741}*cell[6] + V{0.0740740740740741}*cell[7] + V{0.0740740740740741}*cell[8] + V{0.0740740740740741}*cell[9] + V{0.0740740740740741};
3038auto x123 = V{3}*cell[5];
3039auto x124 = V{3}*cell[7];
3040auto x125 = V{3}*cell[13];
3041auto x126 = V{3}*cell[18];
3042auto x127 = V{3}*cell[20];
3043auto x128 = V{3}*cell[26];
3044auto x129 = V{3}*cell[10];
3045auto x130 = V{3}*cell[11];
3046auto x131 = -V{3}*cell[23];
3047auto x132 = V{3}*cell[24];
3048auto x133 = x129 + x130 + x131 - x132 - V{3}*cell[17] + V{3}*cell[4];
3049auto x134 = V{3}*cell[12];
3050auto x135 = V{3}*cell[25];
3051auto x136 = x134 - x135 - V{3}*cell[19] + V{3}*cell[6];
3052auto x137 = x123 + x124 + x125 - x126 - x127 - x128 + x133 + x136 - V{3}*cell[14] + V{3}*cell[1];
3053auto x138 = -x137*x40;
3054auto x139 = V{3}*x39;
3055auto x140 = V{3}*cell[9];
3056auto x141 = V{3}*cell[22];
3057auto x142 = -x125 + x128 - V{3}*cell[21] + V{3}*cell[8];
3058auto x143 = -x123 + x126 + x133 - x134 + x135 + x140 - x141 + x142 - V{3}*cell[15] + V{3}*cell[2];
3059auto x144 = -x143*x40;
3060auto x145 = x114 + V{-1};
3061auto x146 = -x124 + x127 + x129 - x130 + x131 + x132 + x136 - x140 + x141 + x142 - V{3}*cell[16] + V{3}*cell[3];
3062auto x147 = -x146*x40;
3063auto x148 = V{0.0185185185185185}*cell[0] + V{0.0185185185185185}*cell[10] + V{0.0185185185185185}*cell[11] + V{0.0185185185185185}*cell[12] + V{0.0185185185185185}*cell[13] + V{0.0185185185185185}*cell[14] + V{0.0185185185185185}*cell[15] + V{0.0185185185185185}*cell[16] + V{0.0185185185185185}*cell[17] + V{0.0185185185185185}*cell[18] + V{0.0185185185185185}*cell[19] + V{0.0185185185185185}*cell[1] + V{0.0185185185185185}*cell[20] + V{0.0185185185185185}*cell[21] + V{0.0185185185185185}*cell[22] + V{0.0185185185185185}*cell[23] + V{0.0185185185185185}*cell[24] + V{0.0185185185185185}*cell[25] + V{0.0185185185185185}*cell[26] + V{0.0185185185185185}*cell[2] + V{0.0185185185185185}*cell[3] + V{0.0185185185185185}*cell[4] + V{0.0185185185185185}*cell[5] + V{0.0185185185185185}*cell[6] + V{0.0185185185185185}*cell[7] + V{0.0185185185185185}*cell[8] + V{0.0185185185185185}*cell[9] + V{0.0185185185185185};
3064auto x149 = V{4.5}*x39;
3065auto x150 = -V{2}*cell[23];
3066auto x151 = V{2}*cell[10];
3067auto x152 = x150 + x151 + cell[8];
3068auto x153 = V{2}*cell[11] - V{2}*cell[24];
3069auto x154 = x153 + x80;
3070auto x155 = x55 - V{2}*cell[17] + V{2}*cell[4];
3071auto x156 = x44 + x51 + cell[6];
3072auto x157 = x152 + x154 + x155 + x156 + x75 + x78;
3073auto x158 = -x157;
3074auto x159 = x120 + x138;
3075auto x160 = x144 + x159;
3076auto x161 = V{2}*cell[25];
3077auto x162 = V{2}*cell[12];
3078auto x163 = -x161 + x162;
3079auto x164 = V{2}*cell[26];
3080auto x165 = V{2}*cell[13];
3081auto x166 = -x164 + x165;
3082auto x167 = V{2}*cell[18];
3083auto x168 = V{2}*cell[5];
3084auto x169 = -x167 + x168 + x55 - cell[2];
3085auto x170 = x108 + x156 + x163 + x166 + x169 + x34 + x90;
3086auto x171 = -x144;
3087auto x172 = x159 + x171;
3088auto x173 = -V{2}*cell[19] + V{2}*cell[6];
3089auto x174 = x88 + cell[3];
3090auto x175 = x174 + cell[4];
3091auto x176 = x152 + x163 + x173 + x175 + x56 + x91;
3092auto x177 = -x176;
3093auto x178 = -x147;
3094auto x179 = V{2}*cell[20];
3095auto x180 = V{2}*cell[7];
3096auto x181 = cell[16] - cell[3];
3097auto x182 = -x179 + x180 + x181;
3098auto x183 = x107 + x153 + x166 + x182 + x56 + x79 + cell[21] + cell[9];
3099auto x184 = -V{2}*cell[21] + V{2}*cell[8];
3100auto x185 = x184 + x80;
3101auto x186 = x150 + x151 + x164 - x165 + x175 + x185 + x82 + x92 + cell[6];
3102auto x187 = -x186;
3103auto x188 = x120 + x144;
3104auto x189 = x147 + x188;
3105auto x190 = V{2}*cell[22];
3106auto x191 = V{2}*cell[9];
3107auto x192 = -x190 + x191;
3108auto x193 = x103 + x154 + x161 - x162 + x181 + x192 + x35 + x52 + x82;
3109auto x194 = V{0.00462962962962963}*cell[0] + V{0.00462962962962963}*cell[10] + V{0.00462962962962963}*cell[11] + V{0.00462962962962963}*cell[12] + V{0.00462962962962963}*cell[13] + V{0.00462962962962963}*cell[14] + V{0.00462962962962963}*cell[15] + V{0.00462962962962963}*cell[16] + V{0.00462962962962963}*cell[17] + V{0.00462962962962963}*cell[18] + V{0.00462962962962963}*cell[19] + V{0.00462962962962963}*cell[1] + V{0.00462962962962963}*cell[20] + V{0.00462962962962963}*cell[21] + V{0.00462962962962963}*cell[22] + V{0.00462962962962963}*cell[23] + V{0.00462962962962963}*cell[24] + V{0.00462962962962963}*cell[25] + V{0.00462962962962963}*cell[26] + V{0.00462962962962963}*cell[2] + V{0.00462962962962963}*cell[3] + V{0.00462962962962963}*cell[4] + V{0.00462962962962963}*cell[5] + V{0.00462962962962963}*cell[6] + V{0.00462962962962963}*cell[7] + V{0.00462962962962963}*cell[8] + V{0.00462962962962963}*cell[9] + V{0.00462962962962963};
3110auto x195 = x100 + x155 + x173 + x185 + x46 + x89 + V{3}*cell[10] - V{3}*cell[23];
3111auto x196 = -x195;
3112auto x197 = x71 + x81;
3113auto x198 = x101 + x155 + x182 + x192 + x197 + x49 + V{3}*cell[11] - V{3}*cell[24];
3114auto x199 = x174 + x87;
3115auto x200 = x105 + x169 + x173 + x190 - x191 + x199 + x49 + cell[10] + V{3}*cell[12] + cell[15] - V{3}*cell[25];
3116auto x201 = x137*x40;
3117auto x202 = x167 - x168 + x179 - x180 + x184 + x197 + x199 + x37 + x48 - V{3}*cell[13] - cell[1] + V{3}*cell[26];
3118auto x203 = -x202;
3119auto x204 = x146*x40;
3120auto x205 = x112*x84;
3121auto x206 = x112*x94 + V{-1};
3122auto x207 = x205 + x206;
3123auto x208 = x143*x40;
3124auto x209 = x112*x58;
3125auto x210 = x208 + x209;
3126auto x211 = x204 + x207 + x210;
3127auto x212 = x201 + x207;
3128auto x213 = x204 + x209;
3129auto x214 = x210 + x212;
3130auto x215 = -x138;
3131auto x216 = -x170;
3132auto x217 = x212 + x213;
3133auto x218 = -x183;
3134auto x219 = x120 + x147;
3135auto x220 = -x193;
3136auto x221 = -x198;
3137auto x222 = -x200;
3138auto x0 = -x111*(x120*(V{0.296296296296296}*cell[0] + V{0.296296296296296}*cell[10] + V{0.296296296296296}*cell[11] + V{0.296296296296296}*cell[12] + V{0.296296296296296}*cell[13] + V{0.296296296296296}*cell[14] + V{0.296296296296296}*cell[15] + V{0.296296296296296}*cell[16] + V{0.296296296296296}*cell[17] + V{0.296296296296296}*cell[18] + V{0.296296296296296}*cell[19] + V{0.296296296296296}*cell[1] + V{0.296296296296296}*cell[20] + V{0.296296296296296}*cell[21] + V{0.296296296296296}*cell[22] + V{0.296296296296296}*cell[23] + V{0.296296296296296}*cell[24] + V{0.296296296296296}*cell[25] + V{0.296296296296296}*cell[26] + V{0.296296296296296}*cell[2] + V{0.296296296296296}*cell[3] + V{0.296296296296296}*cell[4] + V{0.296296296296296}*cell[5] + V{0.296296296296296}*cell[6] + V{0.296296296296296}*cell[7] + V{0.296296296296296}*cell[8] + V{0.296296296296296}*cell[9] + V{0.296296296296296}) + V{0.296296296296296}) + V{1}*x121*cell[0];
3139auto x1 = -x111*(x122*(-x113*x139 + x119 + x138) + V{0.0740740740740741}) + V{1}*x121*cell[1];
3140auto x2 = -x111*(x122*(-x115*x139 + x118 + x144 + x145) + V{0.0740740740740741}) + V{1}*x121*cell[2];
3141auto x3 = -x111*(x122*(x116 - x117*x139 + x145 + x147) + V{0.0740740740740741}) + V{1}*x121*cell[3];
3142auto x4 = -x111*(x148*(-x149*x158*x158 + x160) + V{0.0185185185185185}) + V{1}*x121*cell[4];
3143auto x5 = -x111*(x148*(-x149*x170*x170 + x172) + V{0.0185185185185185}) + V{1}*x121*cell[5];
3144auto x6 = -x111*(x148*(x147 - x149*x177*x177 + x159) + V{0.0185185185185185}) + V{1}*x121*cell[6];
3145auto x7 = -x111*(x148*(-x149*x183*x183 + x159 + x178) + V{0.0185185185185185}) + V{1}*x121*cell[7];
3146auto x8 = -x111*(x148*(-x149*x187*x187 + x189) + V{0.0185185185185185}) + V{1}*x121*cell[8];
3147auto x9 = -x111*(x148*(-x149*x193*x193 + x178 + x188) + V{0.0185185185185185}) + V{1}*x121*cell[9];
3148auto x10 = -x111*(x194*(x147 - x149*x196*x196 + x160) + V{0.00462962962962963}) + V{1}*x121*cell[10];
3149auto x11 = -x111*(x194*(-x149*x198*x198 + x160 + x178) + V{0.00462962962962963}) + V{1}*x121*cell[11];
3150auto x12 = -x111*(x194*(x147 - x149*x200*x200 + x172) + V{0.00462962962962963}) + V{1}*x121*cell[12];
3151auto x13 = -x111*(x194*(-x149*x203*x203 - x201 + x211) + V{0.00462962962962963}) + V{1}*x121*cell[13];
3152auto x14 = -x111*(x122*(-x139*x58 + x212) + V{0.0740740740740741}) + V{1}*x121*cell[14];
3153auto x15 = -x111*(x122*(-x139*x84 + x206 + x210) + V{0.0740740740740741}) + V{1}*x121*cell[15];
3154auto x16 = -x111*(x122*(-x139*x94 + x205 + x213 + V{-1}) + V{0.0740740740740741}) + V{1}*x121*cell[16];
3155auto x17 = -x111*(x148*(-x149*x157*x157 + x214) + V{0.0185185185185185}) + V{1}*x121*cell[17];
3156auto x18 = -x111*(x148*(-x149*x216*x216 + x188 + x215) + V{0.0185185185185185}) + V{1}*x121*cell[18];
3157auto x19 = -x111*(x148*(-x149*x176*x176 + x217) + V{0.0185185185185185}) + V{1}*x121*cell[19];
3158auto x20 = -x111*(x148*(-x149*x218*x218 + x215 + x219) + V{0.0185185185185185}) + V{1}*x121*cell[20];
3159auto x21 = -x111*(x148*(-x149*x186*x186 + x211) + V{0.0185185185185185}) + V{1}*x121*cell[21];
3160auto x22 = -x111*(x148*(-x149*x220*x220 + x171 + x219) + V{0.0185185185185185}) + V{1}*x121*cell[22];
3161auto x23 = -x111*(x194*(-x149*x195*x195 + x204 + x214) + V{0.00462962962962963}) + V{1}*x121*cell[23];
3162auto x24 = -x111*(x194*(-x149*x221*x221 - x204 + x214) + V{0.00462962962962963}) + V{1}*x121*cell[24];
3163auto x25 = -x111*(x194*(-x149*x222*x222 - x208 + x217) + V{0.00462962962962963}) + V{1}*x121*cell[25];
3164auto x26 = -x111*(x194*(-x149*x202*x202 + x189 + x215) + V{0.00462962962962963}) + V{1}*x121*cell[26];
3165cell[0] = x0;
3166cell[1] = x1;
3167cell[2] = x2;
3168cell[3] = x3;
3169cell[4] = x4;
3170cell[5] = x5;
3171cell[6] = x6;
3172cell[7] = x7;
3173cell[8] = x8;
3174cell[9] = x9;
3175cell[10] = x10;
3176cell[11] = x11;
3177cell[12] = x12;
3178cell[13] = x13;
3179cell[14] = x14;
3180cell[15] = x15;
3181cell[16] = x16;
3182cell[17] = x17;
3183cell[18] = x18;
3184cell[19] = x19;
3185cell[20] = x20;
3186cell[21] = x21;
3187cell[22] = x22;
3188cell[23] = x23;
3189cell[24] = x24;
3190cell[25] = x25;
3191cell[26] = x26;
3192return { x38, V{1}*x39*(x58 + x84 + x94) };
3193}
3194
3195template <typename CELL, typename PARAMETERS, typename V=typename CELL::value_t>
3196auto computeEffectiveOmega(CELL& cell, PARAMETERS& parameters) any_platform
3197{
3198auto x32 = parameters.template get<olb::collision::LES::Smagorinsky>();
3199auto x31 = parameters.template get<olb::descriptors::OMEGA>();
3200auto x0 = V{1} / (x31);
3201auto x1 = x32*x32;
3202auto x2 = cell[12] + cell[25];
3203auto x3 = x2 + cell[18];
3204auto x4 = cell[11] + cell[24];
3205auto x5 = x4 + cell[20];
3206auto x6 = cell[22] + cell[9];
3207auto x7 = cell[13] + cell[1];
3208auto x8 = cell[26] + cell[2] + cell[8];
3209auto x9 = cell[10] + cell[3];
3210auto x10 = x3 + x5 + x6 + x7 + x8 + x9 + cell[0] + cell[14] + cell[15] + cell[16] + cell[17] + cell[19] + cell[21] + cell[23] + cell[4] + cell[5] + cell[6] + cell[7] + V{1};
3211auto x11 = V{1} / (x10);
3212auto x12 = V{1}*x11;
3213auto x13 = -cell[17];
3214auto x14 = -cell[24];
3215auto x15 = x13 + x14 + cell[5];
3216auto x16 = -cell[19];
3217auto x17 = -cell[25];
3218auto x18 = x16 + x17 + cell[7];
3219auto x19 = -cell[23];
3220auto x20 = x19 - cell[26];
3221auto x21 = cell[10] + cell[11] + cell[4];
3222auto x22 = cell[12] + cell[6];
3223auto x23 = x15 + x18 + x20 + x21 + x22 + x7 - cell[14] - cell[18] - cell[20];
3224auto x24 = V{0.666666666666667}*cell[10];
3225auto x25 = V{0.666666666666667}*cell[11];
3226auto x26 = V{0.666666666666667}*cell[12];
3227auto x27 = V{0.666666666666667}*cell[13];
3228auto x28 = V{0.666666666666667}*cell[23];
3229auto x29 = V{0.666666666666667}*cell[24];
3230auto x30 = V{0.666666666666667}*cell[25];
3231auto x33 = V{0.666666666666667}*cell[26];
3232auto x34 = -V{0.333333333333333}*cell[0];
3233auto x35 = x24 + x25 + x26 + x27 + x28 + x29 + x30 + x33 + x34 - V{0.333333333333333}*cell[16] + V{0.666666666666667}*cell[17] + V{0.666666666666667}*cell[18] - V{0.333333333333333}*cell[3] + V{0.666666666666667}*cell[4] + V{0.666666666666667}*cell[5];
3234auto x36 = -V{0.333333333333333}*cell[15] + V{0.666666666666667}*cell[19] + V{0.666666666666667}*cell[20] - V{0.333333333333333}*cell[2] + V{0.666666666666667}*cell[6] + V{0.666666666666667}*cell[7];
3235auto x37 = -x12*x23*x23 + x35 + x36 + V{0.666666666666667}*cell[14] + V{0.666666666666667}*cell[1] - V{0.333333333333333}*cell[21] - V{0.333333333333333}*cell[22] - V{0.333333333333333}*cell[8] - V{0.333333333333333}*cell[9];
3236auto x38 = -cell[12];
3237auto x39 = -cell[13] - cell[21];
3238auto x40 = x19 + x39;
3239auto x41 = x13 + x14 + x21 + x38 + x40 + x8 - cell[15] + cell[18] - cell[22] + cell[25] - cell[5] + cell[9];
3240auto x42 = -V{0.333333333333333}*cell[14] - V{0.333333333333333}*cell[1] + V{0.666666666666667}*cell[21] + V{0.666666666666667}*cell[22] + V{0.666666666666667}*cell[8] + V{0.666666666666667}*cell[9];
3241auto x43 = -x12*x41*x41 + x35 + x42 + V{0.666666666666667}*cell[15] - V{0.333333333333333}*cell[19] - V{0.333333333333333}*cell[20] + V{0.666666666666667}*cell[2] - V{0.333333333333333}*cell[6] - V{0.333333333333333}*cell[7];
3242auto x44 = -cell[11];
3243auto x45 = x16 + x17 + x22 + x40 + x44 + x9 - cell[16] + cell[20] + cell[22] + cell[24] + cell[26] - cell[7] + cell[8] - cell[9];
3244auto x46 = -x12*x45*x45 + x24 + x25 + x26 + x27 + x28 + x29 + x30 + x33 + x34 + x36 + x42 + V{0.666666666666667}*cell[16] - V{0.333333333333333}*cell[17] - V{0.333333333333333}*cell[18] + V{0.666666666666667}*cell[3] - V{0.333333333333333}*cell[4] - V{0.333333333333333}*cell[5];
3245auto x47 = -x41;
3246auto x48 = -x11*x23;
3247auto x49 = -cell[10];
3248auto x50 = x19 + x49 + cell[13] + cell[26];
3249auto x51 = x15 + x3 + x44 + x47*x48 + x50 - cell[4];
3250auto x52 = -x45;
3251auto x53 = x18 + x38 + x48*x52 + x5 + x50 - cell[6];
3252auto x54 = x11*x47*x52 + x2 + x20 + x39 + x4 + x49 + x6 - cell[8];
3253auto x55 = -x0*(V{0.166666666666667}*cell[0] + V{0.166666666666667}*cell[10] + V{0.166666666666667}*cell[11] + V{0.166666666666667}*cell[12] + V{0.166666666666667}*cell[13] + V{0.166666666666667}*cell[14] + V{0.166666666666667}*cell[15] + V{0.166666666666667}*cell[16] + V{0.166666666666667}*cell[17] + V{0.166666666666667}*cell[18] + V{0.166666666666667}*cell[19] + V{0.166666666666667}*cell[1] + V{0.166666666666667}*cell[20] + V{0.166666666666667}*cell[21] + V{0.166666666666667}*cell[22] + V{0.166666666666667}*cell[23] + V{0.166666666666667}*cell[24] + V{0.166666666666667}*cell[25] + V{0.166666666666667}*cell[26] + V{0.166666666666667}*cell[2] + V{0.166666666666667}*cell[3] + V{0.166666666666667}*cell[4] + V{0.166666666666667}*cell[5] + V{0.166666666666667}*cell[6] + V{0.166666666666667}*cell[7] + V{0.166666666666667}*cell[8] + V{0.166666666666667}*cell[9] + V{0.166666666666667}) + util::sqrt(x10*(x1*util::sqrt(V{0.5}*(x37*x37) + V{0.5}*(x43*x43) + V{0.5}*(x46*x46) + x51*x51 + x53*x53 + x54*x54) + (V{0.0277777777777778}*cell[0] + V{0.0277777777777778}*cell[10] + V{0.0277777777777778}*cell[11] + V{0.0277777777777778}*cell[12] + V{0.0277777777777778}*cell[13] + V{0.0277777777777778}*cell[14] + V{0.0277777777777778}*cell[15] + V{0.0277777777777778}*cell[16] + V{0.0277777777777778}*cell[17] + V{0.0277777777777778}*cell[18] + V{0.0277777777777778}*cell[19] + V{0.0277777777777778}*cell[1] + V{0.0277777777777778}*cell[20] + V{0.0277777777777778}*cell[21] + V{0.0277777777777778}*cell[22] + V{0.0277777777777778}*cell[23] + V{0.0277777777777778}*cell[24] + V{0.0277777777777778}*cell[25] + V{0.0277777777777778}*cell[26] + V{0.0277777777777778}*cell[2] + V{0.0277777777777778}*cell[3] + V{0.0277777777777778}*cell[4] + V{0.0277777777777778}*cell[5] + V{0.0277777777777778}*cell[6] + V{0.0277777777777778}*cell[7] + V{0.0277777777777778}*cell[8] + V{0.0277777777777778}*cell[9] + V{0.0277777777777778})/((x31)*(x31))));
3254return V{1} / (V{1}*x0 + V{3}*x1*util::sqrt((x55*x55)/(((x10)*(x10))*util::pow(x32, 4))));
3255}
3256
3257};
3258
3259
3260template <typename... FIELDS>
3261struct KrauseEffectiveOmega<PerPopulationBGK,descriptors::D2Q9<FIELDS...>,momenta::BulkTuple,equilibria::SecondOrder> {
3262
3263template <CONCEPT(MinimalCell) CELL, typename PARAMETERS, typename V=typename CELL::value_t>
3264CellStatistic<V> apply(CELL& cell, PARAMETERS& parameters) any_platform
3265{
3266auto x22 = parameters.template get<olb::collision::LES::Smagorinsky>();
3267auto x21 = parameters.template get<olb::descriptors::OMEGA>();
3268auto x9 = V{0.5}/x21;
3269auto x10 = V{0.0130945659698734}/((x21)*(x21));
3270auto x11 = cell[0] + cell[1] + cell[2] + cell[3] + cell[4] + cell[5] + cell[6] + cell[7] + cell[8] + V{1};
3271auto x12 = V{1} / (x11);
3272auto x13 = V{0.444444444444444}*cell[0] + V{0.444444444444444}*cell[1] + V{0.444444444444444}*cell[2] + V{0.444444444444444}*cell[3] + V{0.444444444444444}*cell[4] + V{0.444444444444444}*cell[5] + V{0.444444444444444}*cell[6] + V{0.444444444444444}*cell[7] + V{0.444444444444444}*cell[8] + V{0.444444444444444};
3273auto x14 = V{1} / ((x11)*(x11));
3274auto x15 = V{1.5}*x14;
3275auto x16 = cell[1] - cell[5];
3276auto x17 = cell[2] - cell[6];
3277auto x18 = x16 + x17 + cell[3] - cell[7];
3278auto x19 = x18*x18;
3279auto x20 = x15*x19;
3280auto x23 = -cell[4] + cell[8];
3281auto x24 = x16 + x23 - cell[3] + cell[7];
3282auto x25 = x24*x24;
3283auto x26 = x15*x25;
3284auto x27 = x26 + V{-1};
3285auto x28 = x20 + x27;
3286auto x29 = x22*x22;
3287auto x30 = V{1} / (x9 + V{4.369426621423}*util::sqrt(x10 + x12*x29*util::fabs(x13*x28 + cell[0] + V{0.444444444444444})));
3288auto x31 = -x18;
3289auto x32 = x15*(x31*x31);
3290auto x33 = x27 + x32;
3291auto x34 = V{0.0277777777777778}*cell[0] + V{0.0277777777777778}*cell[1] + V{0.0277777777777778}*cell[2] + V{0.0277777777777778}*cell[3] + V{0.0277777777777778}*cell[4] + V{0.0277777777777778}*cell[5] + V{0.0277777777777778}*cell[6] + V{0.0277777777777778}*cell[7] + V{0.0277777777777778}*cell[8] + V{0.0277777777777778};
3292auto x35 = V{4.5}*x14;
3293auto x36 = x17 + x23 + V{2}*cell[1] - V{2}*cell[5];
3294auto x37 = x35*(x36*x36);
3295auto x38 = V{3}*cell[3];
3296auto x39 = V{3}*cell[7];
3297auto x40 = V{3}*cell[1] - V{3}*cell[5];
3298auto x41 = x38 - x39 + x40 + V{3}*cell[2] - V{3}*cell[6];
3299auto x42 = x12*x41;
3300auto x43 = -x26 + x42 + V{1};
3301auto x44 = -x38 + x39 + x40 - V{3}*cell[4] + V{3}*cell[8];
3302auto x45 = x12*x44;
3303auto x46 = -x20;
3304auto x47 = x45 + x46;
3305auto x48 = x34*(x37 + x43 + x47);
3306auto x49 = V{1} / (x9 + V{4.369426621423}*util::sqrt(x10 + x12*x29*util::fabs(-x48 + cell[1] + V{0.0277777777777778})));
3307auto x50 = V{0.111111111111111}*cell[0] + V{0.111111111111111}*cell[1] + V{0.111111111111111}*cell[2] + V{0.111111111111111}*cell[3] + V{0.111111111111111}*cell[4] + V{0.111111111111111}*cell[5] + V{0.111111111111111}*cell[6] + V{0.111111111111111}*cell[7] + V{0.111111111111111}*cell[8] + V{0.111111111111111};
3308auto x51 = V{3}*x14;
3309auto x52 = x50*(x19*x51 + x43);
3310auto x53 = V{1} / (x9 + V{4.369426621423}*util::sqrt(x10 + x12*x29*util::fabs(-x52 + cell[2] + V{0.111111111111111})));
3311auto x54 = -x12*x44;
3312auto x55 = x17 + V{2}*cell[3] + cell[4] - V{2}*cell[7] - cell[8];
3313auto x56 = -x55;
3314auto x57 = x35*(x56*x56);
3315auto x58 = V{1} / (x9 + V{4.369426621423}*util::sqrt(x10 + x12*x29*util::fabs(x34*(-x43 - x46 - x54 - x57) + cell[3] + V{0.0277777777777778})));
3316auto x59 = x25*x51;
3317auto x60 = x45 - x59 + V{-1};
3318auto x61 = V{1} / (x9 + V{4.369426621423}*util::sqrt(x10 + x12*x29*util::fabs(x50*(x20 + x60) + cell[4] + V{0.111111111111111})));
3319auto x62 = x28 + x42;
3320auto x63 = x34*(-x37 + x45 + x62) + V{0.0277777777777778};
3321auto x64 = V{1} / (x9 + V{4.369426621423}*util::sqrt(x10 + x12*x29*util::fabs(x63 + cell[5])));
3322auto x65 = x50*(V{3}*x14*x19 - x27 - x42);
3323auto x66 = V{1} / (x9 + V{4.369426621423}*util::sqrt(x10 + x12*x29*util::fabs(-x65 + cell[6] + V{0.111111111111111})));
3324auto x67 = -x34*(-V{4.5}*x14*x55*x55 + x54 + x62);
3325auto x68 = V{1} / (x9 + V{4.369426621423}*util::sqrt(x10 + x12*x29*util::fabs(-x67 + cell[7] + V{0.0277777777777778})));
3326auto x69 = x50*(x47 + x59 + V{1});
3327auto x70 = V{1} / (x9 + V{4.369426621423}*util::sqrt(x10 + x12*x29*util::fabs(-x69 + cell[8] + V{0.111111111111111})));
3328cell[0] = -x30*(x13*x33 + V{0.444444444444444}) + V{1}*(V{1} - x30)*cell[0];
3329cell[1] = x49*(x48 + V{-0.0277777777777778}) + V{1}*(V{1} - x49)*cell[1];
3330cell[2] = x53*(x52 + V{-0.111111111111111}) + V{1}*(V{1} - x53)*cell[2];
3331cell[3] = -x58*(x34*(-x12*x41 + x33 + x45 - x57) + V{0.0277777777777778}) + V{1}*(V{1} - x58)*cell[3];
3332cell[4] = -x61*(x50*(x32 + x60) + V{0.111111111111111}) + V{1}*(V{1} - x61)*cell[4];
3333cell[5] = -x63*x64 + V{1}*(V{1} - x64)*cell[5];
3334cell[6] = x66*(x65 + V{-0.111111111111111}) + V{1}*(V{1} - x66)*cell[6];
3335cell[7] = x68*(x67 + V{-0.0277777777777778}) + V{1}*(V{1} - x68)*cell[7];
3336cell[8] = x70*(x69 + V{-0.111111111111111}) + V{1}*(V{1} - x70)*cell[8];
3337return { x11, V{1}*x14*(x19 + x25) };
3338}
3339
3340template <typename CELL, typename PARAMETERS, typename V=typename CELL::value_t>
3341auto computeEffectiveOmega(CELL& cell, PARAMETERS& parameters) any_platform
3342{
3343auto x22 = parameters.template get<olb::collision::LES::Smagorinsky>();
3344auto x21 = parameters.template get<olb::descriptors::OMEGA>();
3345auto x0 = V{0.5}/x21;
3346auto x1 = V{0.0130945659698734}/((x21)*(x21));
3347auto x2 = cell[0] + cell[1] + cell[2] + cell[3] + cell[4] + cell[5] + cell[6] + cell[7] + cell[8] + V{1};
3348auto x3 = V{1} / (x2);
3349auto x4 = V{0.0277777777777778}*cell[0] + V{0.0277777777777778}*cell[1] + V{0.0277777777777778}*cell[2] + V{0.0277777777777778}*cell[3] + V{0.0277777777777778}*cell[4] + V{0.0277777777777778}*cell[5] + V{0.0277777777777778}*cell[6] + V{0.0277777777777778}*cell[7] + V{0.0277777777777778}*cell[8] + V{0.0277777777777778};
3350auto x5 = V{3}*cell[7];
3351auto x6 = V{3}*cell[3];
3352auto x7 = V{3}*cell[1] - V{3}*cell[5];
3353auto x8 = x5 - x6 + x7 - V{3}*cell[4] + V{3}*cell[8];
3354auto x9 = x3*x8;
3355auto x10 = V{1} / ((x2)*(x2));
3356auto x11 = V{4.5}*x10;
3357auto x12 = -cell[4] + cell[8];
3358auto x13 = cell[2] - cell[6];
3359auto x14 = x12 + x13 + V{2}*cell[1] - V{2}*cell[5];
3360auto x15 = x11*(x14*x14);
3361auto x16 = x3*(-x5 + x6 + x7 + V{3}*cell[2] - V{3}*cell[6]);
3362auto x17 = V{1.5}*x10;
3363auto x18 = cell[1] - cell[5];
3364auto x19 = x12 + x18 - cell[3] + cell[7];
3365auto x20 = x19*x19;
3366auto x23 = x17*x20;
3367auto x24 = x13 + x18 + cell[3] - cell[7];
3368auto x25 = x24*x24;
3369auto x26 = x17*x25;
3370auto x27 = x26 + V{-1};
3371auto x28 = x23 + x27;
3372auto x29 = x16 + x28;
3373auto x30 = x22*x22;
3374auto x31 = -x26;
3375auto x32 = -x3*x8;
3376auto x33 = x13 + V{2}*cell[3] + cell[4] - V{2}*cell[7] - cell[8];
3377auto x34 = -x33;
3378auto x35 = x16 - x23 + V{1};
3379auto x36 = x31 + x9;
3380auto x37 = V{0.111111111111111}*cell[0] + V{0.111111111111111}*cell[1] + V{0.111111111111111}*cell[2] + V{0.111111111111111}*cell[3] + V{0.111111111111111}*cell[4] + V{0.111111111111111}*cell[5] + V{0.111111111111111}*cell[6] + V{0.111111111111111}*cell[7] + V{0.111111111111111}*cell[8] + V{0.111111111111111};
3381auto x38 = V{3}*x10;
3382auto x39 = x20*x38;
3383return V{0.111111111111111}/(x0 + V{4.369426621423}*util::sqrt(x1 + x3*x30*util::fabs(-x4*(x11*(x34*x34) + x31 + x32 + x35) + cell[3] + V{0.0277777777777778}))) + V{0.111111111111111}/(x0 + V{4.369426621423}*util::sqrt(x1 + x3*x30*util::fabs(x4*(-V{4.5}*x10*x33*x33 + x29 + x32) + cell[7] + V{0.0277777777777778}))) + V{0.111111111111111}/(x0 + V{4.369426621423}*util::sqrt(x1 + x3*x30*util::fabs(-x4*(x15 + x35 + x36) + cell[1] + V{0.0277777777777778}))) + V{0.111111111111111}/(x0 + V{4.369426621423}*util::sqrt(x1 + x3*x30*util::fabs(x4*(-x15 + x29 + x9) + cell[5] + V{0.0277777777777778}))) + V{0.111111111111111}/(x0 + V{4.369426621423}*util::sqrt(x1 + x3*x30*util::fabs(-x37*(V{3}*x10*x25 - x16 - x23 + V{1}) + cell[6] + V{0.111111111111111}))) + V{0.111111111111111}/(x0 + V{4.369426621423}*util::sqrt(x1 + x3*x30*util::fabs(-x37*(x36 + x39 + V{1}) + cell[8] + V{0.111111111111111}))) + V{0.111111111111111}/(x0 + V{4.369426621423}*util::sqrt(x1 + x3*x30*util::fabs(x37*(x27 - x39 + x9) + cell[4] + V{0.111111111111111}))) + V{0.111111111111111}/(x0 + V{4.369426621423}*util::sqrt(x1 + x3*x30*util::fabs(-x37*(x25*x38 + x35) + cell[2] + V{0.111111111111111}))) + V{0.111111111111111}/(x0 + V{4.369426621423}*util::sqrt(x1 + x3*x30*util::fabs(x28*(V{0.444444444444444}*cell[0] + V{0.444444444444444}*cell[1] + V{0.444444444444444}*cell[2] + V{0.444444444444444}*cell[3] + V{0.444444444444444}*cell[4] + V{0.444444444444444}*cell[5] + V{0.444444444444444}*cell[6] + V{0.444444444444444}*cell[7] + V{0.444444444444444}*cell[8] + V{0.444444444444444}) + cell[0] + V{0.444444444444444})));
3384}
3385
3386};
3387
3388template <typename... FIELDS>
3389struct KrauseEffectiveOmega<PerPopulationBGK,descriptors::D3Q19<FIELDS...>,momenta::BulkTuple,equilibria::SecondOrder> {
3390
3391template <CONCEPT(MinimalCell) CELL, typename PARAMETERS, typename V=typename CELL::value_t>
3392CellStatistic<V> apply(CELL& cell, PARAMETERS& parameters) any_platform
3393{
3394auto x43 = parameters.template get<olb::collision::LES::Smagorinsky>();
3395auto x42 = parameters.template get<olb::descriptors::OMEGA>();
3396auto x19 = V{0.5}/x42;
3397auto x20 = V{0.0130945659698734}/((x42)*(x42));
3398auto x21 = cell[10] + cell[14];
3399auto x22 = cell[12] + cell[7];
3400auto x23 = x21 + x22 + cell[0] + cell[11] + cell[13] + cell[15] + cell[16] + cell[17] + cell[18] + cell[1] + cell[2] + cell[3] + cell[4] + cell[5] + cell[6] + cell[8] + cell[9] + V{1};
3401auto x24 = V{1} / (x23);
3402auto x25 = V{1} / ((x23)*(x23));
3403auto x26 = V{1.5}*x25;
3404auto x27 = cell[13] - cell[4];
3405auto x28 = cell[15] - cell[6];
3406auto x29 = x27 + x28;
3407auto x30 = -cell[1];
3408auto x31 = cell[16] - cell[7];
3409auto x32 = x30 + x31;
3410auto x33 = x21 - cell[5];
3411auto x34 = x29 + x32 + x33;
3412auto x35 = x34*x34;
3413auto x36 = x26*x35;
3414auto x37 = cell[17] - cell[8];
3415auto x38 = x27 + x37;
3416auto x39 = cell[18] - cell[9];
3417auto x40 = -cell[2];
3418auto x41 = x40 + cell[11] - cell[14] + cell[5];
3419auto x44 = x38 + x39 + x41;
3420auto x45 = x44*x44;
3421auto x46 = x26*x45;
3422auto x47 = x28 + x37;
3423auto x48 = -cell[3];
3424auto x49 = -cell[18] + cell[9];
3425auto x50 = x48 + x49;
3426auto x51 = x22 - cell[16];
3427auto x52 = x47 + x50 + x51;
3428auto x53 = x52*x52;
3429auto x54 = x26*x53;
3430auto x55 = x46 + x54 + V{-1};
3431auto x56 = x36 + x55;
3432auto x57 = x56*(V{0.333333333333333}*cell[0] + V{0.333333333333333}*cell[10] + V{0.333333333333333}*cell[11] + V{0.333333333333333}*cell[12] + V{0.333333333333333}*cell[13] + V{0.333333333333333}*cell[14] + V{0.333333333333333}*cell[15] + V{0.333333333333333}*cell[16] + V{0.333333333333333}*cell[17] + V{0.333333333333333}*cell[18] + V{0.333333333333333}*cell[1] + V{0.333333333333333}*cell[2] + V{0.333333333333333}*cell[3] + V{0.333333333333333}*cell[4] + V{0.333333333333333}*cell[5] + V{0.333333333333333}*cell[6] + V{0.333333333333333}*cell[7] + V{0.333333333333333}*cell[8] + V{0.333333333333333}*cell[9] + V{0.333333333333333}) + V{0.333333333333333};
3433auto x58 = x43*x43;
3434auto x59 = V{1} / (x19 + V{4.369426621423}*util::sqrt(x20 + x24*x58*util::fabs(x57 + cell[0])));
3435auto x60 = V{0.0555555555555556}*cell[0] + V{0.0555555555555556}*cell[10] + V{0.0555555555555556}*cell[11] + V{0.0555555555555556}*cell[12] + V{0.0555555555555556}*cell[13] + V{0.0555555555555556}*cell[14] + V{0.0555555555555556}*cell[15] + V{0.0555555555555556}*cell[16] + V{0.0555555555555556}*cell[17] + V{0.0555555555555556}*cell[18] + V{0.0555555555555556}*cell[1] + V{0.0555555555555556}*cell[2] + V{0.0555555555555556}*cell[3] + V{0.0555555555555556}*cell[4] + V{0.0555555555555556}*cell[5] + V{0.0555555555555556}*cell[6] + V{0.0555555555555556}*cell[7] + V{0.0555555555555556}*cell[8] + V{0.0555555555555556}*cell[9] + V{0.0555555555555556};
3436auto x61 = V{3}*cell[14];
3437auto x62 = V{3}*cell[16];
3438auto x63 = V{3}*cell[5];
3439auto x64 = V{3}*cell[7];
3440auto x65 = V{3}*cell[13] - V{3}*cell[4];
3441auto x66 = V{3}*cell[15] - V{3}*cell[6];
3442auto x67 = x24*(x61 + x62 - x63 - x64 + x65 + x66 + V{3}*cell[10] - V{3}*cell[1]);
3443auto x68 = V{3}*x25;
3444auto x69 = x35*x68;
3445auto x70 = x60*(x55 + x67 - x69) + V{0.0555555555555556};
3446auto x71 = V{1} / (x19 + V{4.369426621423}*util::sqrt(x20 + x24*x58*util::fabs(x70 + cell[1])));
3447auto x72 = V{3}*cell[18];
3448auto x73 = V{3}*cell[9];
3449auto x74 = V{3}*cell[17] - V{3}*cell[8];
3450auto x75 = x24*(-x61 + x63 + x65 + x72 - x73 + x74 + V{3}*cell[11] - V{3}*cell[2]);
3451auto x76 = x45*x68;
3452auto x77 = x36 + V{-1};
3453auto x78 = x60*(x54 + x75 - x76 + x77) + V{0.0555555555555556};
3454auto x79 = V{1} / (x19 + V{4.369426621423}*util::sqrt(x20 + x24*x58*util::fabs(x78 + cell[2])));
3455auto x80 = x24*(-x62 + x64 + x66 - x72 + x73 + x74 + V{3}*cell[12] - V{3}*cell[3]);
3456auto x81 = x53*x68;
3457auto x82 = x60*(x46 + x77 + x80 - x81) + V{0.0555555555555556};
3458auto x83 = V{1} / (x19 + V{4.369426621423}*util::sqrt(x20 + x24*x58*util::fabs(x82 + cell[3])));
3459auto x84 = V{0.0277777777777778}*cell[0] + V{0.0277777777777778}*cell[10] + V{0.0277777777777778}*cell[11] + V{0.0277777777777778}*cell[12] + V{0.0277777777777778}*cell[13] + V{0.0277777777777778}*cell[14] + V{0.0277777777777778}*cell[15] + V{0.0277777777777778}*cell[16] + V{0.0277777777777778}*cell[17] + V{0.0277777777777778}*cell[18] + V{0.0277777777777778}*cell[1] + V{0.0277777777777778}*cell[2] + V{0.0277777777777778}*cell[3] + V{0.0277777777777778}*cell[4] + V{0.0277777777777778}*cell[5] + V{0.0277777777777778}*cell[6] + V{0.0277777777777778}*cell[7] + V{0.0277777777777778}*cell[8] + V{0.0277777777777778}*cell[9] + V{0.0277777777777778};
3460auto x85 = V{4.5}*x25;
3461auto x86 = x32 + cell[10];
3462auto x87 = x39 + x40 + x47 + x86 + cell[11] + V{2}*cell[13] - V{2}*cell[4];
3463auto x88 = x85*(x87*x87);
3464auto x89 = x56 + x67;
3465auto x90 = x84*(x75 - x88 + x89) + V{0.0277777777777778};
3466auto x91 = V{1} / (x19 + V{4.369426621423}*util::sqrt(x20 + x24*x58*util::fabs(x90 + cell[4])));
3467auto x92 = -cell[17] + cell[8];
3468auto x93 = x28 + x49 + x86 + x92 - cell[11] + V{2}*cell[14] + cell[2] - V{2}*cell[5];
3469auto x94 = -x85*x93*x93;
3470auto x95 = -x75;
3471auto x96 = x89 + x95;
3472auto x97 = V{1} / (x19 + V{4.369426621423}*util::sqrt(x20 + x24*x58*util::fabs(x84*(x94 + x96) + cell[5] + V{0.0277777777777778})));
3473auto x98 = -x93;
3474auto x99 = x30 + x33;
3475auto x100 = x38 + x50 + x99 + cell[12] + V{2}*cell[15] - V{2}*cell[6];
3476auto x101 = x85*(x100*x100);
3477auto x102 = x84*(-x101 + x80 + x89) + V{0.0277777777777778};
3478auto x103 = V{1} / (x19 + V{4.369426621423}*util::sqrt(x20 + x24*x58*util::fabs(x102 + cell[6])));
3479auto x104 = x27 - cell[12] + cell[3];
3480auto x105 = x104 + x39 + x92 + x99 + V{2}*cell[16] - V{2}*cell[7];
3481auto x106 = -x85*x105*x105;
3482auto x107 = -x80;
3483auto x108 = x107 + x89;
3484auto x109 = V{1} / (x19 + V{4.369426621423}*util::sqrt(x20 + x24*x58*util::fabs(x84*(x106 + x108) + cell[7] + V{0.0277777777777778})));
3485auto x110 = -x105;
3486auto x111 = x29 + x41 + x48 + x51 + V{2}*cell[17] - V{2}*cell[8];
3487auto x112 = x85*(x111*x111);
3488auto x113 = x56 + x75;
3489auto x114 = x84*(-x112 + x113 + x80) + V{0.0277777777777778};
3490auto x115 = V{1} / (x19 + V{4.369426621423}*util::sqrt(x20 + x24*x58*util::fabs(x114 + cell[8])));
3491auto x116 = x104 + x31 + x41 - cell[15] + V{2}*cell[18] + cell[6] - V{2}*cell[9];
3492auto x117 = -x85*x116*x116;
3493auto x118 = x107 + x113;
3494auto x119 = V{1} / (x19 + V{4.369426621423}*util::sqrt(x20 + x24*x58*util::fabs(x84*(x117 + x118) + cell[9] + V{0.0277777777777778})));
3495auto x120 = -x116;
3496auto x121 = -x46;
3497auto x122 = V{1} - x54;
3498auto x123 = x121 + x122;
3499auto x124 = x123 + x67;
3500auto x125 = x60*(x124 + x69);
3501auto x126 = V{1} / (x19 + V{4.369426621423}*util::sqrt(x20 + x24*x58*util::fabs(-x125 + cell[10] + V{0.0555555555555556})));
3502auto x127 = -x36;
3503auto x128 = x127 + x75;
3504auto x129 = x60*(x122 + x128 + x76);
3505auto x130 = V{1} / (x19 + V{4.369426621423}*util::sqrt(x20 + x24*x58*util::fabs(-x129 + cell[11] + V{0.0555555555555556})));
3506auto x131 = x127 + x80;
3507auto x132 = x60*(x121 + x131 + x81 + V{1});
3508auto x133 = V{1} / (x19 + V{4.369426621423}*util::sqrt(x20 + x24*x58*util::fabs(-x132 + cell[12] + V{0.0555555555555556})));
3509auto x134 = x84*(x124 + x128 + x88);
3510auto x135 = V{1} / (x19 + V{4.369426621423}*util::sqrt(x20 + x24*x58*util::fabs(-x134 + cell[13] + V{0.0277777777777778})));
3511auto x136 = -x67;
3512auto x137 = x84*(x113 + x136 + x94) + V{0.0277777777777778};
3513auto x138 = V{1} / (x19 + V{4.369426621423}*util::sqrt(x20 + x24*x58*util::fabs(x137 + cell[14])));
3514auto x139 = x84*(x101 + x124 + x131);
3515auto x140 = V{1} / (x19 + V{4.369426621423}*util::sqrt(x20 + x24*x58*util::fabs(-x139 + cell[15] + V{0.0277777777777778})));
3516auto x141 = x56 + x80;
3517auto x142 = x84*(x106 + x136 + x141) + V{0.0277777777777778};
3518auto x143 = V{1} / (x19 + V{4.369426621423}*util::sqrt(x20 + x24*x58*util::fabs(x142 + cell[16])));
3519auto x144 = x84*(x112 + x123 + x128 + x80);
3520auto x145 = V{1} / (x19 + V{4.369426621423}*util::sqrt(x20 + x24*x58*util::fabs(-x144 + cell[17] + V{0.0277777777777778})));
3521auto x146 = x84*(x117 + x141 + x95) + V{0.0277777777777778};
3522auto x147 = V{1} / (x19 + V{4.369426621423}*util::sqrt(x20 + x24*x58*util::fabs(x146 + cell[18])));
3523cell[0] = -x57*x59 + V{1}*(V{1} - x59)*cell[0];
3524cell[1] = -x70*x71 + V{1}*(V{1} - x71)*cell[1];
3525cell[2] = -x78*x79 + V{1}*(V{1} - x79)*cell[2];
3526cell[3] = -x82*x83 + V{1}*(V{1} - x83)*cell[3];
3527cell[4] = -x90*x91 + V{1}*(V{1} - x91)*cell[4];
3528cell[5] = -x97*(x84*(-x85*x98*x98 + x96) + V{0.0277777777777778}) + V{1}*(V{1} - x97)*cell[5];
3529cell[6] = -x102*x103 + V{1}*(V{1} - x103)*cell[6];
3530cell[7] = -x109*(x84*(x108 - x85*x110*x110) + V{0.0277777777777778}) + V{1}*(V{1} - x109)*cell[7];
3531cell[8] = -x114*x115 + V{1}*(V{1} - x115)*cell[8];
3532cell[9] = -x119*(x84*(x118 - x85*x120*x120) + V{0.0277777777777778}) + V{1}*(V{1} - x119)*cell[9];
3533cell[10] = x126*(x125 + V{-0.0555555555555556}) + V{1}*(V{1} - x126)*cell[10];
3534cell[11] = x130*(x129 + V{-0.0555555555555556}) + V{1}*(V{1} - x130)*cell[11];
3535cell[12] = x133*(x132 + V{-0.0555555555555556}) + V{1}*(V{1} - x133)*cell[12];
3536cell[13] = x135*(x134 + V{-0.0277777777777778}) + V{1}*(V{1} - x135)*cell[13];
3537cell[14] = -x137*x138 + V{1}*(V{1} - x138)*cell[14];
3538cell[15] = x140*(x139 + V{-0.0277777777777778}) + V{1}*(V{1} - x140)*cell[15];
3539cell[16] = -x142*x143 + V{1}*(V{1} - x143)*cell[16];
3540cell[17] = x145*(x144 + V{-0.0277777777777778}) + V{1}*(V{1} - x145)*cell[17];
3541cell[18] = -x146*x147 + V{1}*(V{1} - x147)*cell[18];
3542return { x23, V{1}*x25*(x35 + x45 + x53) };
3543}
3544
3545template <typename CELL, typename PARAMETERS, typename V=typename CELL::value_t>
3546auto computeEffectiveOmega(CELL& cell, PARAMETERS& parameters) any_platform
3547{
3548auto x42 = parameters.template get<olb::descriptors::OMEGA>();
3549auto x43 = parameters.template get<olb::collision::LES::Smagorinsky>();
3550auto x0 = V{0.5}/x42;
3551auto x1 = V{0.0130945659698734}/((x42)*(x42));
3552auto x2 = cell[10] + cell[14];
3553auto x3 = cell[12] + cell[7];
3554auto x4 = cell[3] + cell[6];
3555auto x5 = x2 + x3 + x4 + cell[0] + cell[11] + cell[13] + cell[15] + cell[16] + cell[17] + cell[18] + cell[1] + cell[2] + cell[4] + cell[5] + cell[8] + cell[9] + V{1};
3556auto x6 = V{1} / (x5);
3557auto x7 = V{0.0277777777777778}*cell[0] + V{0.0277777777777778}*cell[10] + V{0.0277777777777778}*cell[11] + V{0.0277777777777778}*cell[12] + V{0.0277777777777778}*cell[13] + V{0.0277777777777778}*cell[14] + V{0.0277777777777778}*cell[15] + V{0.0277777777777778}*cell[16] + V{0.0277777777777778}*cell[17] + V{0.0277777777777778}*cell[18] + V{0.0277777777777778}*cell[1] + V{0.0277777777777778}*cell[2] + V{0.0277777777777778}*cell[3] + V{0.0277777777777778}*cell[4] + V{0.0277777777777778}*cell[5] + V{0.0277777777777778}*cell[6] + V{0.0277777777777778}*cell[7] + V{0.0277777777777778}*cell[8] + V{0.0277777777777778}*cell[9] + V{0.0277777777777778};
3558auto x8 = V{3}*cell[7];
3559auto x9 = V{3}*cell[9];
3560auto x10 = V{3}*cell[16];
3561auto x11 = V{3}*cell[18];
3562auto x12 = V{3}*cell[17] - V{3}*cell[8];
3563auto x13 = V{3}*cell[15] - V{3}*cell[6];
3564auto x14 = x6*(-x10 - x11 + x12 + x13 + x8 + x9 + V{3}*cell[12] - V{3}*cell[3]);
3565auto x15 = V{1} / ((x5)*(x5));
3566auto x16 = V{4.5}*x15;
3567auto x17 = cell[13] - cell[4];
3568auto x18 = cell[15] - cell[6];
3569auto x19 = x17 + x18;
3570auto x20 = -cell[2];
3571auto x21 = x20 + cell[11] - cell[14] + cell[5];
3572auto x22 = -cell[3];
3573auto x23 = x22 + x3 - cell[16];
3574auto x24 = x19 + x21 + x23 + V{2}*cell[17] - V{2}*cell[8];
3575auto x25 = x16*(x24*x24);
3576auto x26 = V{3}*cell[5];
3577auto x27 = V{3}*cell[14];
3578auto x28 = V{3}*cell[13] - V{3}*cell[4];
3579auto x29 = x6*(x11 + x12 + x26 - x27 + x28 - x9 + V{3}*cell[11] - V{3}*cell[2]);
3580auto x30 = V{1.5}*x15;
3581auto x31 = cell[17] - cell[8];
3582auto x32 = x17 + x31;
3583auto x33 = cell[18] - cell[9];
3584auto x34 = x21 + x32 + x33;
3585auto x35 = x34*x34;
3586auto x36 = x30*x35;
3587auto x37 = -cell[1];
3588auto x38 = cell[16] - cell[7];
3589auto x39 = x37 + x38;
3590auto x40 = x2 - cell[5];
3591auto x41 = x19 + x39 + x40;
3592auto x44 = x41*x41;
3593auto x45 = x30*x44;
3594auto x46 = x18 + x31;
3595auto x47 = -cell[18] + cell[9];
3596auto x48 = x23 + x46 + x47;
3597auto x49 = x48*x48;
3598auto x50 = x30*x49;
3599auto x51 = x45 + x50 + V{-1};
3600auto x52 = x36 + x51;
3601auto x53 = x29 + x52;
3602auto x54 = x43*x43;
3603auto x55 = x6*(x10 + x13 - x26 + x27 + x28 - x8 + V{3}*cell[10] - V{3}*cell[1]);
3604auto x56 = x39 + cell[10];
3605auto x57 = x20 + x33 + x46 + x56 + cell[11] + V{2}*cell[13] - V{2}*cell[4];
3606auto x58 = x16*(x57*x57);
3607auto x59 = -x14;
3608auto x60 = x17 - cell[12];
3609auto x61 = x21 + x38 + x4 + x60 - cell[15] + V{2}*cell[18] - V{2}*cell[9];
3610auto x62 = -x16*x61*x61;
3611auto x63 = -x55;
3612auto x64 = -cell[17] + cell[8];
3613auto x65 = x18 + x47 + x56 + x64 - cell[11] + V{2}*cell[14] + cell[2] - V{2}*cell[5];
3614auto x66 = -x16*x65*x65;
3615auto x67 = x37 + x40;
3616auto x68 = x22 + x32 + x47 + x67 + cell[12] + V{2}*cell[15] - V{2}*cell[6];
3617auto x69 = x16*(x68*x68);
3618auto x70 = x14 + x52;
3619auto x71 = -x29;
3620auto x72 = x33 + x60 + x64 + x67 + V{2}*cell[16] + cell[3] - V{2}*cell[7];
3621auto x73 = -x16*x72*x72;
3622auto x74 = x52 + x55;
3623auto x75 = -x50;
3624auto x76 = V{1} - x45;
3625auto x77 = x75 + x76;
3626auto x78 = x29 + x77;
3627auto x79 = -x36;
3628auto x80 = x14 + x79;
3629auto x81 = x55 + x79;
3630auto x82 = V{0.0555555555555556}*cell[0] + V{0.0555555555555556}*cell[10] + V{0.0555555555555556}*cell[11] + V{0.0555555555555556}*cell[12] + V{0.0555555555555556}*cell[13] + V{0.0555555555555556}*cell[14] + V{0.0555555555555556}*cell[15] + V{0.0555555555555556}*cell[16] + V{0.0555555555555556}*cell[17] + V{0.0555555555555556}*cell[18] + V{0.0555555555555556}*cell[1] + V{0.0555555555555556}*cell[2] + V{0.0555555555555556}*cell[3] + V{0.0555555555555556}*cell[4] + V{0.0555555555555556}*cell[5] + V{0.0555555555555556}*cell[6] + V{0.0555555555555556}*cell[7] + V{0.0555555555555556}*cell[8] + V{0.0555555555555556}*cell[9] + V{0.0555555555555556};
3631auto x83 = V{3}*x15;
3632auto x84 = x35*x83;
3633auto x85 = x49*x83;
3634auto x86 = x36 + V{-1};
3635auto x87 = x44*x83;
3636return V{0.0526315789473684}/(x0 + V{4.369426621423}*util::sqrt(x1 + x54*x6*util::fabs(-x82*(x75 + x81 + x87 + V{1}) + cell[10] + V{0.0555555555555556}))) + V{0.0526315789473684}/(x0 + V{4.369426621423}*util::sqrt(x1 + x54*x6*util::fabs(x82*(x50 + x55 + x86 - x87) + cell[1] + V{0.0555555555555556}))) + V{0.0526315789473684}/(x0 + V{4.369426621423}*util::sqrt(x1 + x54*x6*util::fabs(x82*(x14 + x45 - x85 + x86) + cell[3] + V{0.0555555555555556}))) + V{0.0526315789473684}/(x0 + V{4.369426621423}*util::sqrt(x1 + x54*x6*util::fabs(-x82*(x76 + x80 + x85) + cell[12] + V{0.0555555555555556}))) + V{0.0526315789473684}/(x0 + V{4.369426621423}*util::sqrt(x1 + x54*x6*util::fabs(x82*(x29 + x51 - x84) + cell[2] + V{0.0555555555555556}))) + V{0.0526315789473684}/(x0 + V{4.369426621423}*util::sqrt(x1 + x54*x6*util::fabs(-x82*(x78 + x84) + cell[11] + V{0.0555555555555556}))) + V{0.0526315789473684}/(x0 + V{4.369426621423}*util::sqrt(x1 + x54*x6*util::fabs(-x7*(x55 + x69 + x77 + x80) + cell[15] + V{0.0277777777777778}))) + V{0.0526315789473684}/(x0 + V{4.369426621423}*util::sqrt(x1 + x54*x6*util::fabs(x7*(x66 + x71 + x74) + cell[5] + V{0.0277777777777778}))) + V{0.0526315789473684}/(x0 + V{4.369426621423}*util::sqrt(x1 + x54*x6*util::fabs(x7*(x63 + x70 + x73) + cell[16] + V{0.0277777777777778}))) + V{0.0526315789473684}/(x0 + V{4.369426621423}*util::sqrt(x1 + x54*x6*util::fabs(x7*(x62 + x70 + x71) + cell[18] + V{0.0277777777777778}))) + V{0.0526315789473684}/(x0 + V{4.369426621423}*util::sqrt(x1 + x54*x6*util::fabs(x7*(x59 + x73 + x74) + cell[7] + V{0.0277777777777778}))) + V{0.0526315789473684}/(x0 + V{4.369426621423}*util::sqrt(x1 + x54*x6*util::fabs(-x7*(x58 + x78 + x81) + cell[13] + V{0.0277777777777778}))) + V{0.0526315789473684}/(x0 + V{4.369426621423}*util::sqrt(x1 + x54*x6*util::fabs(x7*(x55 - x69 + x70) + cell[6] + V{0.0277777777777778}))) + V{0.0526315789473684}/(x0 + V{4.369426621423}*util::sqrt(x1 + x54*x6*util::fabs(x7*(x53 + x63 + x66) + cell[14] + V{0.0277777777777778}))) + V{0.0526315789473684}/(x0 + V{4.369426621423}*util::sqrt(x1 + x54*x6*util::fabs(x7*(x53 + x59 + x62) + cell[9] + V{0.0277777777777778}))) + V{0.0526315789473684}/(x0 + V{4.369426621423}*util::sqrt(x1 + x54*x6*util::fabs(x7*(x53 + x55 - x58) + cell[4] + V{0.0277777777777778}))) + V{0.0526315789473684}/(x0 + V{4.369426621423}*util::sqrt(x1 + x54*x6*util::fabs(-x7*(x25 + x78 + x80) + cell[17] + V{0.0277777777777778}))) + V{0.0526315789473684}/(x0 + V{4.369426621423}*util::sqrt(x1 + x54*x6*util::fabs(x7*(x14 - x25 + x53) + cell[8] + V{0.0277777777777778}))) + V{0.0526315789473684}/(x0 + V{4.369426621423}*util::sqrt(x1 + x54*x6*util::fabs(x52*(V{0.333333333333333}*cell[0] + V{0.333333333333333}*cell[10] + V{0.333333333333333}*cell[11] + V{0.333333333333333}*cell[12] + V{0.333333333333333}*cell[13] + V{0.333333333333333}*cell[14] + V{0.333333333333333}*cell[15] + V{0.333333333333333}*cell[16] + V{0.333333333333333}*cell[17] + V{0.333333333333333}*cell[18] + V{0.333333333333333}*cell[1] + V{0.333333333333333}*cell[2] + V{0.333333333333333}*cell[3] + V{0.333333333333333}*cell[4] + V{0.333333333333333}*cell[5] + V{0.333333333333333}*cell[6] + V{0.333333333333333}*cell[7] + V{0.333333333333333}*cell[8] + V{0.333333333333333}*cell[9] + V{0.333333333333333}) + cell[0] + V{0.333333333333333})));
3637}
3638
3639};
3640
3641template <typename... FIELDS>
3642struct KrauseEffectiveOmega<PerPopulationBGK,descriptors::D3Q27<FIELDS...>,momenta::BulkTuple,equilibria::SecondOrder> {
3643
3644template <CONCEPT(MinimalCell) CELL, typename PARAMETERS, typename V=typename CELL::value_t>
3645CellStatistic<V> apply(CELL& cell, PARAMETERS& parameters) any_platform
3646{
3647auto x58 = parameters.template get<olb::descriptors::OMEGA>();
3648auto x59 = parameters.template get<olb::collision::LES::Smagorinsky>();
3649auto x27 = V{0.5}/x58;
3650auto x28 = V{0.0130945659698734}/((x58)*(x58));
3651auto x29 = cell[15] + cell[21];
3652auto x30 = cell[12] + cell[26];
3653auto x31 = x29 + x30 + cell[0] + cell[10] + cell[11] + cell[13] + cell[14] + cell[16] + cell[17] + cell[18] + cell[19] + cell[1] + cell[20] + cell[22] + cell[23] + cell[24] + cell[25] + cell[2] + cell[3] + cell[4] + cell[5] + cell[6] + cell[7] + cell[8] + cell[9] + V{1};
3654auto x32 = V{1} / (x31);
3655auto x33 = V{0.296296296296296}*cell[0] + V{0.296296296296296}*cell[10] + V{0.296296296296296}*cell[11] + V{0.296296296296296}*cell[12] + V{0.296296296296296}*cell[13] + V{0.296296296296296}*cell[14] + V{0.296296296296296}*cell[15] + V{0.296296296296296}*cell[16] + V{0.296296296296296}*cell[17] + V{0.296296296296296}*cell[18] + V{0.296296296296296}*cell[19] + V{0.296296296296296}*cell[1] + V{0.296296296296296}*cell[20] + V{0.296296296296296}*cell[21] + V{0.296296296296296}*cell[22] + V{0.296296296296296}*cell[23] + V{0.296296296296296}*cell[24] + V{0.296296296296296}*cell[25] + V{0.296296296296296}*cell[26] + V{0.296296296296296}*cell[2] + V{0.296296296296296}*cell[3] + V{0.296296296296296}*cell[4] + V{0.296296296296296}*cell[5] + V{0.296296296296296}*cell[6] + V{0.296296296296296}*cell[7] + V{0.296296296296296}*cell[8] + V{0.296296296296296}*cell[9] + V{0.296296296296296};
3656auto x34 = V{1} / ((x31)*(x31));
3657auto x35 = V{1.5}*x34;
3658auto x36 = -cell[19];
3659auto x37 = -cell[25];
3660auto x38 = x36 + x37 + cell[12] + cell[6];
3661auto x39 = -cell[14];
3662auto x40 = cell[11] - cell[24];
3663auto x41 = x39 + x40 + cell[1];
3664auto x42 = -cell[18] + cell[5];
3665auto x43 = -cell[17];
3666auto x44 = x43 + cell[4];
3667auto x45 = -cell[20] + cell[7];
3668auto x46 = x44 + x45;
3669auto x47 = cell[10] - cell[23];
3670auto x48 = x47 + cell[13] - cell[26];
3671auto x49 = x38 + x41 + x42 + x46 + x48;
3672auto x50 = x49*x49;
3673auto x51 = x35*x50;
3674auto x52 = -cell[21];
3675auto x53 = x43 + x52 + cell[4] + cell[8];
3676auto x54 = -cell[13];
3677auto x55 = x47 + x54 + cell[26];
3678auto x56 = -cell[15];
3679auto x57 = -cell[22] + cell[9];
3680auto x60 = x56 + x57 + cell[2];
3681auto x61 = cell[18] - cell[5];
3682auto x62 = -cell[12] + cell[25];
3683auto x63 = x40 + x53 + x55 + x60 + x61 + x62;
3684auto x64 = x63*x63;
3685auto x65 = x35*x64;
3686auto x66 = x52 + cell[8];
3687auto x67 = -cell[16];
3688auto x68 = cell[22] - cell[9];
3689auto x69 = x67 + x68 + cell[3];
3690auto x70 = -cell[11] + cell[24];
3691auto x71 = cell[20] - cell[7];
3692auto x72 = x38 + x55 + x66 + x69 + x70 + x71;
3693auto x73 = x72*x72;
3694auto x74 = x35*x73;
3695auto x75 = x65 + x74 + V{-1};
3696auto x76 = x51 + x75;
3697auto x77 = x59*x59;
3698auto x78 = V{1} / (x27 + V{4.369426621423}*util::sqrt(x28 + x32*x77*util::fabs(x33*x76 + cell[0] + V{0.296296296296296})));
3699auto x79 = -x49;
3700auto x80 = x79*x79;
3701auto x81 = x35*x80;
3702auto x82 = -x63;
3703auto x83 = x82*x82;
3704auto x84 = x35*x83;
3705auto x85 = -x72;
3706auto x86 = x85*x85;
3707auto x87 = x35*x86;
3708auto x88 = x84 + x87 + V{-1};
3709auto x89 = x81 + x88;
3710auto x90 = V{0.0740740740740741}*cell[0] + V{0.0740740740740741}*cell[10] + V{0.0740740740740741}*cell[11] + V{0.0740740740740741}*cell[12] + V{0.0740740740740741}*cell[13] + V{0.0740740740740741}*cell[14] + V{0.0740740740740741}*cell[15] + V{0.0740740740740741}*cell[16] + V{0.0740740740740741}*cell[17] + V{0.0740740740740741}*cell[18] + V{0.0740740740740741}*cell[19] + V{0.0740740740740741}*cell[1] + V{0.0740740740740741}*cell[20] + V{0.0740740740740741}*cell[21] + V{0.0740740740740741}*cell[22] + V{0.0740740740740741}*cell[23] + V{0.0740740740740741}*cell[24] + V{0.0740740740740741}*cell[25] + V{0.0740740740740741}*cell[26] + V{0.0740740740740741}*cell[2] + V{0.0740740740740741}*cell[3] + V{0.0740740740740741}*cell[4] + V{0.0740740740740741}*cell[5] + V{0.0740740740740741}*cell[6] + V{0.0740740740740741}*cell[7] + V{0.0740740740740741}*cell[8] + V{0.0740740740740741}*cell[9] + V{0.0740740740740741};
3711auto x91 = V{3}*x34;
3712auto x92 = x50*x91;
3713auto x93 = V{3}*cell[5];
3714auto x94 = V{3}*cell[7];
3715auto x95 = V{3}*cell[13];
3716auto x96 = V{3}*cell[18];
3717auto x97 = V{3}*cell[20];
3718auto x98 = V{3}*cell[26];
3719auto x99 = V{3}*cell[10];
3720auto x100 = V{3}*cell[11];
3721auto x101 = -V{3}*cell[23];
3722auto x102 = V{3}*cell[24];
3723auto x103 = x100 + x101 - x102 + x99 - V{3}*cell[17] + V{3}*cell[4];
3724auto x104 = V{3}*cell[12];
3725auto x105 = V{3}*cell[25];
3726auto x106 = x104 - x105 - V{3}*cell[19] + V{3}*cell[6];
3727auto x107 = x103 + x106 + x93 + x94 + x95 - x96 - x97 - x98 - V{3}*cell[14] + V{3}*cell[1];
3728auto x108 = x107*x32;
3729auto x109 = -V{1.5}*x34*x64;
3730auto x110 = -V{1.5}*x34*x73 + V{1};
3731auto x111 = x109 + x110;
3732auto x112 = x108 + x111;
3733auto x113 = V{1} / (x27 + V{4.369426621423}*util::sqrt(x28 + x32*x77*util::fabs(x90*(-x112 - x92) + cell[1] + V{0.0740740740740741})));
3734auto x114 = -x107*x32;
3735auto x115 = x64*x91;
3736auto x116 = V{3}*cell[9];
3737auto x117 = V{3}*cell[22];
3738auto x118 = -x95 + x98 - V{3}*cell[21] + V{3}*cell[8];
3739auto x119 = x103 - x104 + x105 + x116 - x117 + x118 - x93 + x96 - V{3}*cell[15] + V{3}*cell[2];
3740auto x120 = x119*x32;
3741auto x121 = -V{1.5}*x34*x50;
3742auto x122 = x120 + x121;
3743auto x123 = V{1} / (x27 + V{4.369426621423}*util::sqrt(x28 + x32*x77*util::fabs(x90*(-x110 - x115 - x122) + cell[2] + V{0.0740740740740741})));
3744auto x124 = -x119*x32;
3745auto x125 = x81 + V{-1};
3746auto x126 = x73*x91;
3747auto x127 = -x100 + x101 + x102 + x106 - x116 + x117 + x118 - x94 + x97 + x99 - V{3}*cell[16] + V{3}*cell[3];
3748auto x128 = x127*x32;
3749auto x129 = x121 + x128;
3750auto x130 = V{1} / (x27 + V{4.369426621423}*util::sqrt(x28 + x32*x77*util::fabs(x90*(-x109 - x126 - x129 + V{-1}) + cell[3] + V{0.0740740740740741})));
3751auto x131 = -x127*x32;
3752auto x132 = V{0.0185185185185185}*cell[0] + V{0.0185185185185185}*cell[10] + V{0.0185185185185185}*cell[11] + V{0.0185185185185185}*cell[12] + V{0.0185185185185185}*cell[13] + V{0.0185185185185185}*cell[14] + V{0.0185185185185185}*cell[15] + V{0.0185185185185185}*cell[16] + V{0.0185185185185185}*cell[17] + V{0.0185185185185185}*cell[18] + V{0.0185185185185185}*cell[19] + V{0.0185185185185185}*cell[1] + V{0.0185185185185185}*cell[20] + V{0.0185185185185185}*cell[21] + V{0.0185185185185185}*cell[22] + V{0.0185185185185185}*cell[23] + V{0.0185185185185185}*cell[24] + V{0.0185185185185185}*cell[25] + V{0.0185185185185185}*cell[26] + V{0.0185185185185185}*cell[2] + V{0.0185185185185185}*cell[3] + V{0.0185185185185185}*cell[4] + V{0.0185185185185185}*cell[5] + V{0.0185185185185185}*cell[6] + V{0.0185185185185185}*cell[7] + V{0.0185185185185185}*cell[8] + V{0.0185185185185185}*cell[9] + V{0.0185185185185185};
3753auto x133 = V{4.5}*x34;
3754auto x134 = V{2}*cell[11] - V{2}*cell[24];
3755auto x135 = -V{2}*cell[17] + V{2}*cell[4];
3756auto x136 = -V{2}*cell[23];
3757auto x137 = V{2}*cell[10];
3758auto x138 = x39 + cell[1];
3759auto x139 = x136 + x137 + x138;
3760auto x140 = x36 + cell[6];
3761auto x141 = x140 + x45;
3762auto x142 = x134 + x135 + x139 + x141 + x60 + x66;
3763auto x143 = -x142;
3764auto x144 = x133*(x143*x143);
3765auto x145 = x112 + x122;
3766auto x146 = V{1} / (x27 + V{4.369426621423}*util::sqrt(x28 + x32*x77*util::fabs(x132*(-x144 - x145) + cell[4] + V{0.0185185185185185})));
3767auto x147 = x114 + x89;
3768auto x148 = x124 + x147;
3769auto x149 = V{2}*cell[25];
3770auto x150 = V{2}*cell[12];
3771auto x151 = -x149 + x150;
3772auto x152 = V{2}*cell[26];
3773auto x153 = V{2}*cell[13];
3774auto x154 = x138 - x152 + x153 - cell[8];
3775auto x155 = V{2}*cell[18];
3776auto x156 = V{2}*cell[5];
3777auto x157 = -x155 + x156 - cell[2];
3778auto x158 = x141 + x151 + x154 + x157 + x29 + x68;
3779auto x159 = -x158;
3780auto x160 = -x133*x159*x159;
3781auto x161 = -x108;
3782auto x162 = x161 + x76;
3783auto x163 = x120 + x162;
3784auto x164 = V{1} / (x27 + V{4.369426621423}*util::sqrt(x28 + x32*x77*util::fabs(x132*(x160 + x163) + cell[5] + V{0.0185185185185185})));
3785auto x165 = -x124;
3786auto x166 = x147 + x165;
3787auto x167 = -V{2}*cell[19] + V{2}*cell[6];
3788auto x168 = x139 + x151 + x167 + x42 + x53 + x69;
3789auto x169 = -x168;
3790auto x170 = x133*(x169*x169);
3791auto x171 = x112 + x129;
3792auto x172 = V{1} / (x27 + V{4.369426621423}*util::sqrt(x28 + x32*x77*util::fabs(x132*(-x170 - x171) + cell[6] + V{0.0185185185185185})));
3793auto x173 = -cell[3];
3794auto x174 = x134 + x173 + cell[16];
3795auto x175 = V{2}*cell[20];
3796auto x176 = V{2}*cell[7];
3797auto x177 = -x175 + x176;
3798auto x178 = x154 + x174 + x177 + x42 + x44 + x57 + cell[21];
3799auto x179 = -x178;
3800auto x180 = -x133*x179*x179;
3801auto x181 = x128 + x162;
3802auto x182 = V{1} / (x27 + V{4.369426621423}*util::sqrt(x28 + x32*x77*util::fabs(x132*(x180 + x181) + cell[7] + V{0.0185185185185185})));
3803auto x183 = -x131;
3804auto x184 = x56 + cell[2];
3805auto x185 = x184 + x61;
3806auto x186 = x67 + cell[3];
3807auto x187 = x186 - V{2}*cell[21] + V{2}*cell[8];
3808auto x188 = x136 + x137 + x140 + x152 - x153 + x185 + x187 + x44 + x71;
3809auto x189 = -x188;
3810auto x190 = x133*(x189*x189);
3811auto x191 = x111 + x122 + x128;
3812auto x192 = V{1} / (x27 + V{4.369426621423}*util::sqrt(x28 + x32*x77*util::fabs(x132*(-x190 - x191) + cell[8] + V{0.0185185185185185})));
3813auto x193 = x124 + x89;
3814auto x194 = x131 + x193;
3815auto x195 = V{2}*cell[22];
3816auto x196 = V{2}*cell[9];
3817auto x197 = -x195 + x196;
3818auto x198 = x149 - x150 + x174 + x185 + x197 + x46 + cell[19] - cell[6];
3819auto x199 = -x198;
3820auto x200 = -x133*x199*x199;
3821auto x201 = -x120;
3822auto x202 = x201 + x76;
3823auto x203 = x128 + x202;
3824auto x204 = V{1} / (x27 + V{4.369426621423}*util::sqrt(x28 + x32*x77*util::fabs(x132*(x200 + x203) + cell[9] + V{0.0185185185185185})));
3825auto x205 = V{0.00462962962962963}*cell[0] + V{0.00462962962962963}*cell[10] + V{0.00462962962962963}*cell[11] + V{0.00462962962962963}*cell[12] + V{0.00462962962962963}*cell[13] + V{0.00462962962962963}*cell[14] + V{0.00462962962962963}*cell[15] + V{0.00462962962962963}*cell[16] + V{0.00462962962962963}*cell[17] + V{0.00462962962962963}*cell[18] + V{0.00462962962962963}*cell[19] + V{0.00462962962962963}*cell[1] + V{0.00462962962962963}*cell[20] + V{0.00462962962962963}*cell[21] + V{0.00462962962962963}*cell[22] + V{0.00462962962962963}*cell[23] + V{0.00462962962962963}*cell[24] + V{0.00462962962962963}*cell[25] + V{0.00462962962962963}*cell[26] + V{0.00462962962962963}*cell[2] + V{0.00462962962962963}*cell[3] + V{0.00462962962962963}*cell[4] + V{0.00462962962962963}*cell[5] + V{0.00462962962962963}*cell[6] + V{0.00462962962962963}*cell[7] + V{0.00462962962962963}*cell[8] + V{0.00462962962962963}*cell[9] + V{0.00462962962962963};
3826auto x206 = x135 + x184;
3827auto x207 = x167 + x187 + x206 + x30 + x37 + x41 + x54 + V{3}*cell[10] - V{3}*cell[23];
3828auto x208 = -x207;
3829auto x209 = x133*(x208*x208);
3830auto x210 = V{1} / (x27 + V{4.369426621423}*util::sqrt(x28 + x32*x77*util::fabs(x205*(-x128 - x145 - x209) + cell[10] + V{0.00462962962962963})));
3831auto x211 = x138 + x48;
3832auto x212 = x173 + x177 + x197 + x206 + x211 + x62 + V{3}*cell[11] + cell[16] - V{3}*cell[24];
3833auto x213 = -x212;
3834auto x214 = -x133*x213*x213;
3835auto x215 = V{1} / (x27 + V{4.369426621423}*util::sqrt(x28 + x32*x77*util::fabs(x205*(x181 + x201 + x214) + cell[11] + V{0.00462962962962963})));
3836auto x216 = x157 + x167 + x186 + x195 - x196 + x211 + x70 + V{3}*cell[12] + cell[15] - V{3}*cell[25];
3837auto x217 = -x216;
3838auto x218 = x133*(x217*x217);
3839auto x219 = V{1} / (x27 + V{4.369426621423}*util::sqrt(x28 + x32*x77*util::fabs(x205*(-x171 - x201 - x218) + cell[12] + V{0.00462962962962963})));
3840auto x220 = x155 - x156 + x175 - x176 + x184 + x187 + x47 + x62 + x70 - V{3}*cell[13] + cell[14] - cell[1] + V{3}*cell[26];
3841auto x221 = -x220;
3842auto x222 = x133*(x221*x221);
3843auto x223 = x205*(x128 + x163 - x222) + V{0.00462962962962963};
3844auto x224 = V{1} / (x27 + V{4.369426621423}*util::sqrt(x28 + x32*x77*util::fabs(x223 + cell[13])));
3845auto x225 = x90*(x108 + x75 - x92) + V{0.0740740740740741};
3846auto x226 = V{1} / (x27 + V{4.369426621423}*util::sqrt(x28 + x32*x77*util::fabs(x225 + cell[14])));
3847auto x227 = x51 + V{-1};
3848auto x228 = x90*(-x115 + x120 + x227 + x74) + V{0.0740740740740741};
3849auto x229 = V{1} / (x27 + V{4.369426621423}*util::sqrt(x28 + x32*x77*util::fabs(x228 + cell[15])));
3850auto x230 = x90*(-x126 + x128 + x227 + x65) + V{0.0740740740740741};
3851auto x231 = V{1} / (x27 + V{4.369426621423}*util::sqrt(x28 + x32*x77*util::fabs(x230 + cell[16])));
3852auto x232 = x108 + x76;
3853auto x233 = x120 + x232;
3854auto x234 = x132*(-x133*x142*x142 + x233) + V{0.0185185185185185};
3855auto x235 = V{1} / (x27 + V{4.369426621423}*util::sqrt(x28 + x32*x77*util::fabs(x234 + cell[17])));
3856auto x236 = V{1} / (x27 + V{4.369426621423}*util::sqrt(x28 + x32*x77*util::fabs(x132*(x108 + x160 + x202) + cell[18] + V{0.0185185185185185})));
3857auto x237 = -x114;
3858auto x238 = x132*(x128 - x133*x168*x168 + x232) + V{0.0185185185185185};
3859auto x239 = V{1} / (x27 + V{4.369426621423}*util::sqrt(x28 + x32*x77*util::fabs(x238 + cell[19])));
3860auto x240 = -x128;
3861auto x241 = V{1} / (x27 + V{4.369426621423}*util::sqrt(x28 + x32*x77*util::fabs(x132*(x180 + x232 + x240) + cell[20] + V{0.0185185185185185})));
3862auto x242 = x131 + x89;
3863auto x243 = x120 + x76;
3864auto x244 = x132*(x128 - x133*x188*x188 + x243) + V{0.0185185185185185};
3865auto x245 = V{1} / (x27 + V{4.369426621423}*util::sqrt(x28 + x32*x77*util::fabs(x244 + cell[21])));
3866auto x246 = V{1} / (x27 + V{4.369426621423}*util::sqrt(x28 + x32*x77*util::fabs(x132*(x200 + x240 + x243) + cell[22] + V{0.0185185185185185})));
3867auto x247 = x205*(x128 - x133*x207*x207 + x233) + V{0.00462962962962963};
3868auto x248 = V{1} / (x27 + V{4.369426621423}*util::sqrt(x28 + x32*x77*util::fabs(x247 + cell[23])));
3869auto x249 = x205*(x214 + x233 + x240) + V{0.00462962962962963};
3870auto x250 = V{1} / (x27 + V{4.369426621423}*util::sqrt(x28 + x32*x77*util::fabs(x249 + cell[24])));
3871auto x251 = x205*(x108 + x203 - x218) + V{0.00462962962962963};
3872auto x252 = V{1} / (x27 + V{4.369426621423}*util::sqrt(x28 + x32*x77*util::fabs(x251 + cell[25])));
3873auto x253 = V{1} / (x27 + V{4.369426621423}*util::sqrt(x28 + x32*x77*util::fabs(x205*(-x161 - x191 - x222) + cell[26] + V{0.00462962962962963})));
3874cell[0] = -x78*(x33*x89 + V{0.296296296296296}) + V{1}*(V{1} - x78)*cell[0];
3875cell[1] = -x113*(x90*(x114 - x80*x91 + x88) + V{0.0740740740740741}) + V{1}*(V{1} - x113)*cell[1];
3876cell[2] = -x123*(x90*(x124 + x125 - x83*x91 + x87) + V{0.0740740740740741}) + V{1}*(V{1} - x123)*cell[2];
3877cell[3] = -x130*(x90*(x125 + x131 + x84 - x86*x91) + V{0.0740740740740741}) + V{1}*(V{1} - x130)*cell[3];
3878cell[4] = -x146*(x132*(-x144 + x148) + V{0.0185185185185185}) + V{1}*(V{1} - x146)*cell[4];
3879cell[5] = -x164*(x132*(-x133*x158*x158 + x166) + V{0.0185185185185185}) + V{1}*(V{1} - x164)*cell[5];
3880cell[6] = -x172*(x132*(x131 + x147 - x170) + V{0.0185185185185185}) + V{1}*(V{1} - x172)*cell[6];
3881cell[7] = -x182*(x132*(-x133*x178*x178 + x147 + x183) + V{0.0185185185185185}) + V{1}*(V{1} - x182)*cell[7];
3882cell[8] = -x192*(x132*(-x190 + x194) + V{0.0185185185185185}) + V{1}*(V{1} - x192)*cell[8];
3883cell[9] = -x204*(x132*(-x133*x198*x198 + x183 + x193) + V{0.0185185185185185}) + V{1}*(V{1} - x204)*cell[9];
3884cell[10] = -x210*(x205*(x131 + x148 - x209) + V{0.00462962962962963}) + V{1}*(V{1} - x210)*cell[10];
3885cell[11] = -x215*(x205*(-x133*x212*x212 + x148 + x183) + V{0.00462962962962963}) + V{1}*(V{1} - x215)*cell[11];
3886cell[12] = -x219*(x205*(x131 - x133*x216*x216 + x166) + V{0.00462962962962963}) + V{1}*(V{1} - x219)*cell[12];
3887cell[13] = -x223*x224 + V{1}*(V{1} - x224)*cell[13];
3888cell[14] = -x225*x226 + V{1}*(V{1} - x226)*cell[14];
3889cell[15] = -x228*x229 + V{1}*(V{1} - x229)*cell[15];
3890cell[16] = -x230*x231 + V{1}*(V{1} - x231)*cell[16];
3891cell[17] = -x234*x235 + V{1}*(V{1} - x235)*cell[17];
3892cell[18] = -x236*(x132*(x160 + x193 + x237) + V{0.0185185185185185}) + V{1}*(V{1} - x236)*cell[18];
3893cell[19] = -x238*x239 + V{1}*(V{1} - x239)*cell[19];
3894cell[20] = -x241*(x132*(x180 + x237 + x242) + V{0.0185185185185185}) + V{1}*(V{1} - x241)*cell[20];
3895cell[21] = -x244*x245 + V{1}*(V{1} - x245)*cell[21];
3896cell[22] = -x246*(x132*(x165 + x200 + x242) + V{0.0185185185185185}) + V{1}*(V{1} - x246)*cell[22];
3897cell[23] = -x247*x248 + V{1}*(V{1} - x248)*cell[23];
3898cell[24] = -x249*x250 + V{1}*(V{1} - x250)*cell[24];
3899cell[25] = -x251*x252 + V{1}*(V{1} - x252)*cell[25];
3900cell[26] = -x253*(x205*(-x133*x220*x220 + x194 + x237) + V{0.00462962962962963}) + V{1}*(V{1} - x253)*cell[26];
3901return { x31, V{1}*x34*(x50 + x64 + x73) };
3902}
3903
3904template <typename CELL, typename PARAMETERS, typename V=typename CELL::value_t>
3905auto computeEffectiveOmega(CELL& cell, PARAMETERS& parameters) any_platform
3906{
3907auto x59 = parameters.template get<olb::collision::LES::Smagorinsky>();
3908auto x58 = parameters.template get<olb::descriptors::OMEGA>();
3909auto x0 = V{0.5}/x58;
3910auto x1 = V{0.0130945659698734}/((x58)*(x58));
3911auto x2 = cell[15] + cell[21] + cell[22];
3912auto x3 = cell[12] + cell[26];
3913auto x4 = x2 + x3 + cell[0] + cell[10] + cell[11] + cell[13] + cell[14] + cell[16] + cell[17] + cell[18] + cell[19] + cell[1] + cell[20] + cell[23] + cell[24] + cell[25] + cell[2] + cell[3] + cell[4] + cell[5] + cell[6] + cell[7] + cell[8] + cell[9] + V{1};
3914auto x5 = V{1} / (x4);
3915auto x6 = V{0.00462962962962963}*cell[0] + V{0.00462962962962963}*cell[10] + V{0.00462962962962963}*cell[11] + V{0.00462962962962963}*cell[12] + V{0.00462962962962963}*cell[13] + V{0.00462962962962963}*cell[14] + V{0.00462962962962963}*cell[15] + V{0.00462962962962963}*cell[16] + V{0.00462962962962963}*cell[17] + V{0.00462962962962963}*cell[18] + V{0.00462962962962963}*cell[19] + V{0.00462962962962963}*cell[1] + V{0.00462962962962963}*cell[20] + V{0.00462962962962963}*cell[21] + V{0.00462962962962963}*cell[22] + V{0.00462962962962963}*cell[23] + V{0.00462962962962963}*cell[24] + V{0.00462962962962963}*cell[25] + V{0.00462962962962963}*cell[26] + V{0.00462962962962963}*cell[2] + V{0.00462962962962963}*cell[3] + V{0.00462962962962963}*cell[4] + V{0.00462962962962963}*cell[5] + V{0.00462962962962963}*cell[6] + V{0.00462962962962963}*cell[7] + V{0.00462962962962963}*cell[8] + V{0.00462962962962963}*cell[9] + V{0.00462962962962963};
3916auto x7 = V{3}*cell[10];
3917auto x8 = -V{3}*cell[23];
3918auto x9 = V{3}*cell[20];
3919auto x10 = V{3}*cell[22];
3920auto x11 = V{3}*cell[24];
3921auto x12 = V{3}*cell[7];
3922auto x13 = V{3}*cell[9];
3923auto x14 = V{3}*cell[11];
3924auto x15 = V{3}*cell[12];
3925auto x16 = V{3}*cell[25];
3926auto x17 = x15 - x16 - V{3}*cell[19] + V{3}*cell[6];
3927auto x18 = V{3}*cell[26];
3928auto x19 = V{3}*cell[13];
3929auto x20 = x18 - x19 - V{3}*cell[21] + V{3}*cell[8];
3930auto x21 = x5*(x10 + x11 - x12 - x13 - x14 + x17 + x20 + x7 + x8 + x9 - V{3}*cell[16] + V{3}*cell[3]);
3931auto x22 = V{1} / ((x4)*(x4));
3932auto x23 = V{4.5}*x22;
3933auto x24 = -cell[13];
3934auto x25 = -cell[25];
3935auto x26 = -cell[14];
3936auto x27 = cell[11] - cell[24];
3937auto x28 = x26 + x27 + cell[1];
3938auto x29 = -V{2}*cell[19] + V{2}*cell[6];
3939auto x30 = -cell[16];
3940auto x31 = x30 + cell[3];
3941auto x32 = x31 - V{2}*cell[21] + V{2}*cell[8];
3942auto x33 = -V{2}*cell[17] + V{2}*cell[4];
3943auto x34 = -cell[15];
3944auto x35 = x34 + cell[2];
3945auto x36 = x33 + x35;
3946auto x37 = x24 + x25 + x28 + x29 + x3 + x32 + x36 + V{3}*cell[10] - V{3}*cell[23];
3947auto x38 = V{3}*cell[18];
3948auto x39 = V{3}*cell[5];
3949auto x40 = -x11 + x14 + x7 + x8 - V{3}*cell[17] + V{3}*cell[4];
3950auto x41 = x5*(-x10 + x13 - x15 + x16 + x20 + x38 - x39 + x40 - V{3}*cell[15] + V{3}*cell[2]);
3951auto x42 = x5*(x12 + x17 - x18 + x19 - x38 + x39 + x40 - x9 - V{3}*cell[14] + V{3}*cell[1]);
3952auto x43 = V{1.5}*x22;
3953auto x44 = -cell[19];
3954auto x45 = x25 + x44 + cell[12] + cell[6];
3955auto x46 = -cell[18] + cell[5];
3956auto x47 = -cell[17];
3957auto x48 = x47 + cell[4];
3958auto x49 = -cell[20] + cell[7];
3959auto x50 = x48 + x49;
3960auto x51 = cell[10] - cell[23];
3961auto x52 = x51 + cell[13] - cell[26];
3962auto x53 = x28 + x45 + x46 + x50 + x52;
3963auto x54 = x53*x53;
3964auto x55 = x43*x54;
3965auto x56 = -cell[21];
3966auto x57 = x47 + x56 + cell[4] + cell[8];
3967auto x60 = x24 + x51 + cell[26];
3968auto x61 = -cell[22] + cell[9];
3969auto x62 = x34 + x61 + cell[2];
3970auto x63 = cell[18] - cell[5];
3971auto x64 = -cell[12] + cell[25];
3972auto x65 = x27 + x57 + x60 + x62 + x63 + x64;
3973auto x66 = x65*x65;
3974auto x67 = x43*x66;
3975auto x68 = x56 + cell[8];
3976auto x69 = -cell[9];
3977auto x70 = x30 + x69 + cell[22] + cell[3];
3978auto x71 = -cell[11] + cell[24];
3979auto x72 = cell[20] - cell[7];
3980auto x73 = x45 + x60 + x68 + x70 + x71 + x72;
3981auto x74 = x73*x73;
3982auto x75 = x43*x74;
3983auto x76 = x67 + x75 + V{-1};
3984auto x77 = x55 + x76;
3985auto x78 = x42 + x77;
3986auto x79 = x41 + x78;
3987auto x80 = x59*x59;
3988auto x81 = -x21;
3989auto x82 = -cell[3];
3990auto x83 = V{2}*cell[20];
3991auto x84 = V{2}*cell[7];
3992auto x85 = -x83 + x84;
3993auto x86 = V{2}*cell[22];
3994auto x87 = V{2}*cell[9];
3995auto x88 = -x86 + x87;
3996auto x89 = x26 + cell[1];
3997auto x90 = x52 + x89;
3998auto x91 = -x36 - x64 - x82 - x85 - x88 - x90 - V{3}*cell[11] - cell[16] + V{3}*cell[24];
3999auto x92 = -x23*x91*x91;
4000auto x93 = -x41;
4001auto x94 = V{2}*cell[18];
4002auto x95 = V{2}*cell[5];
4003auto x96 = -x94 + x95 - cell[2];
4004auto x97 = -x29 - x31 - x71 - x86 + x87 - x90 - x96 - V{3}*cell[12] - cell[15] + V{3}*cell[25];
4005auto x98 = x23*(x97*x97);
4006auto x99 = x21 + x78;
4007auto x100 = -x42;
4008auto x101 = -x32 - x35 - x51 - x64 - x71 - x83 + x84 - x94 + x95 + V{3}*cell[13] - cell[14] + cell[1] - V{3}*cell[26];
4009auto x102 = x23*(x101*x101);
4010auto x103 = -V{1.5}*x22*x66;
4011auto x104 = -V{1.5}*x22*x74 + V{1};
4012auto x105 = x103 + x104;
4013auto x106 = -V{1.5}*x22*x54;
4014auto x107 = x106 + x41;
4015auto x108 = x105 + x107 + x21;
4016auto x109 = x41 + x77;
4017auto x110 = x109 + x21;
4018auto x111 = x105 + x42;
4019auto x112 = x106 + x21;
4020auto x113 = x111 + x112;
4021auto x114 = x21 + x77;
4022auto x115 = x100 + x114;
4023auto x116 = -x37;
4024auto x117 = x107 + x111;
4025auto x118 = V{0.0185185185185185}*cell[0] + V{0.0185185185185185}*cell[10] + V{0.0185185185185185}*cell[11] + V{0.0185185185185185}*cell[12] + V{0.0185185185185185}*cell[13] + V{0.0185185185185185}*cell[14] + V{0.0185185185185185}*cell[15] + V{0.0185185185185185}*cell[16] + V{0.0185185185185185}*cell[17] + V{0.0185185185185185}*cell[18] + V{0.0185185185185185}*cell[19] + V{0.0185185185185185}*cell[1] + V{0.0185185185185185}*cell[20] + V{0.0185185185185185}*cell[21] + V{0.0185185185185185}*cell[22] + V{0.0185185185185185}*cell[23] + V{0.0185185185185185}*cell[24] + V{0.0185185185185185}*cell[25] + V{0.0185185185185185}*cell[26] + V{0.0185185185185185}*cell[2] + V{0.0185185185185185}*cell[3] + V{0.0185185185185185}*cell[4] + V{0.0185185185185185}*cell[5] + V{0.0185185185185185}*cell[6] + V{0.0185185185185185}*cell[7] + V{0.0185185185185185}*cell[8] + V{0.0185185185185185}*cell[9] + V{0.0185185185185185};
4026auto x119 = V{2}*cell[11] - V{2}*cell[24];
4027auto x120 = -V{2}*cell[23];
4028auto x121 = V{2}*cell[10];
4029auto x122 = x120 + x121 + x89;
4030auto x123 = x44 + cell[6];
4031auto x124 = x123 + x49;
4032auto x125 = x119 + x122 + x124 + x33 + x62 + x68;
4033auto x126 = V{2}*cell[25];
4034auto x127 = V{2}*cell[12];
4035auto x128 = -x126 + x127;
4036auto x129 = x122 + x128 + x29 + x46 + x57 + x70;
4037auto x130 = V{2}*cell[26];
4038auto x131 = V{2}*cell[13];
4039auto x132 = -x130 + x131 + x89 - cell[8];
4040auto x133 = -x124 - x128 - x132 - x2 - x69 - x96;
4041auto x134 = -x23*x133*x133;
4042auto x135 = x119 + x82 + cell[16];
4043auto x136 = -x132 - x135 - x46 - x48 - x61 - x85 - cell[21];
4044auto x137 = -x23*x136*x136;
4045auto x138 = x35 + x63;
4046auto x139 = x120 + x121 + x123 + x130 - x131 + x138 + x32 + x48 + x72;
4047auto x140 = -x126 + x127 - x135 - x138 - x50 - x88 - cell[19] + cell[6];
4048auto x141 = -x23*x140*x140;
4049auto x142 = -x125;
4050auto x143 = -x129;
4051auto x144 = -x139;
4052auto x145 = V{0.0740740740740741}*cell[0] + V{0.0740740740740741}*cell[10] + V{0.0740740740740741}*cell[11] + V{0.0740740740740741}*cell[12] + V{0.0740740740740741}*cell[13] + V{0.0740740740740741}*cell[14] + V{0.0740740740740741}*cell[15] + V{0.0740740740740741}*cell[16] + V{0.0740740740740741}*cell[17] + V{0.0740740740740741}*cell[18] + V{0.0740740740740741}*cell[19] + V{0.0740740740740741}*cell[1] + V{0.0740740740740741}*cell[20] + V{0.0740740740740741}*cell[21] + V{0.0740740740740741}*cell[22] + V{0.0740740740740741}*cell[23] + V{0.0740740740740741}*cell[24] + V{0.0740740740740741}*cell[25] + V{0.0740740740740741}*cell[26] + V{0.0740740740740741}*cell[2] + V{0.0740740740740741}*cell[3] + V{0.0740740740740741}*cell[4] + V{0.0740740740740741}*cell[5] + V{0.0740740740740741}*cell[6] + V{0.0740740740740741}*cell[7] + V{0.0740740740740741}*cell[8] + V{0.0740740740740741}*cell[9] + V{0.0740740740740741};
4053auto x146 = V{3}*x22;
4054auto x147 = x146*x54;
4055auto x148 = x146*x66;
4056auto x149 = x55 + V{-1};
4057auto x150 = x146*x74;
4058return V{0.037037037037037}/(x0 + V{4.369426621423}*util::sqrt(x1 + x5*x80*util::fabs(x77*(V{0.296296296296296}*cell[0] + V{0.296296296296296}*cell[10] + V{0.296296296296296}*cell[11] + V{0.296296296296296}*cell[12] + V{0.296296296296296}*cell[13] + V{0.296296296296296}*cell[14] + V{0.296296296296296}*cell[15] + V{0.296296296296296}*cell[16] + V{0.296296296296296}*cell[17] + V{0.296296296296296}*cell[18] + V{0.296296296296296}*cell[19] + V{0.296296296296296}*cell[1] + V{0.296296296296296}*cell[20] + V{0.296296296296296}*cell[21] + V{0.296296296296296}*cell[22] + V{0.296296296296296}*cell[23] + V{0.296296296296296}*cell[24] + V{0.296296296296296}*cell[25] + V{0.296296296296296}*cell[26] + V{0.296296296296296}*cell[2] + V{0.296296296296296}*cell[3] + V{0.296296296296296}*cell[4] + V{0.296296296296296}*cell[5] + V{0.296296296296296}*cell[6] + V{0.296296296296296}*cell[7] + V{0.296296296296296}*cell[8] + V{0.296296296296296}*cell[9] + V{0.296296296296296}) + cell[0] + V{0.296296296296296}))) + V{0.037037037037037}/(x0 + V{4.369426621423}*util::sqrt(x1 + x5*x80*util::fabs(x6*(x93 - x98 + x99) + cell[25] + V{0.00462962962962963}))) + V{0.037037037037037}/(x0 + V{4.369426621423}*util::sqrt(x1 + x5*x80*util::fabs(x6*(x79 + x81 + x92) + cell[24] + V{0.00462962962962963}))) + V{0.037037037037037}/(x0 + V{4.369426621423}*util::sqrt(x1 + x5*x80*util::fabs(x6*(x21 - x23*x37*x37 + x79) + cell[23] + V{0.00462962962962963}))) + V{0.037037037037037}/(x0 + V{4.369426621423}*util::sqrt(x1 + x5*x80*util::fabs(-x6*(x117 + x21 + x23*(x116*x116)) + cell[10] + V{0.00462962962962963}))) + V{0.037037037037037}/(x0 + V{4.369426621423}*util::sqrt(x1 + x5*x80*util::fabs(x6*(x115 + x92 + x93) + cell[11] + V{0.00462962962962963}))) + V{0.037037037037037}/(x0 + V{4.369426621423}*util::sqrt(x1 + x5*x80*util::fabs(x6*(-x113 - x93 - x98) + cell[12] + V{0.00462962962962963}))) + V{0.037037037037037}/(x0 + V{4.369426621423}*util::sqrt(x1 + x5*x80*util::fabs(x6*(x100 - x102 + x110) + cell[13] + V{0.00462962962962963}))) + V{0.037037037037037}/(x0 + V{4.369426621423}*util::sqrt(x1 + x5*x80*util::fabs(x6*(-x100 - x102 - x108) + cell[26] + V{0.00462962962962963}))) + V{0.037037037037037}/(x0 + V{4.369426621423}*util::sqrt(x1 + x5*x80*util::fabs(x145*(x149 - x150 + x21 + x67) + cell[16] + V{0.0740740740740741}))) + V{0.037037037037037}/(x0 + V{4.369426621423}*util::sqrt(x1 + x5*x80*util::fabs(x145*(-x148 + x149 + x41 + x75) + cell[15] + V{0.0740740740740741}))) + V{0.037037037037037}/(x0 + V{4.369426621423}*util::sqrt(x1 + x5*x80*util::fabs(x145*(-x103 - x112 - x150 + V{-1}) + cell[3] + V{0.0740740740740741}))) + V{0.037037037037037}/(x0 + V{4.369426621423}*util::sqrt(x1 + x5*x80*util::fabs(x145*(-x147 + x42 + x76) + cell[14] + V{0.0740740740740741}))) + V{0.037037037037037}/(x0 + V{4.369426621423}*util::sqrt(x1 + x5*x80*util::fabs(x145*(-x104 - x107 - x148) + cell[2] + V{0.0740740740740741}))) + V{0.037037037037037}/(x0 + V{4.369426621423}*util::sqrt(x1 + x5*x80*util::fabs(x145*(-x111 - x147) + cell[1] + V{0.0740740740740741}))) + V{0.037037037037037}/(x0 + V{4.369426621423}*util::sqrt(x1 + x5*x80*util::fabs(x118*(x137 + x78 + x81) + cell[20] + V{0.0185185185185185}))) + V{0.037037037037037}/(x0 + V{4.369426621423}*util::sqrt(x1 + x5*x80*util::fabs(x118*(x134 + x78 + x93) + cell[18] + V{0.0185185185185185}))) + V{0.037037037037037}/(x0 + V{4.369426621423}*util::sqrt(x1 + x5*x80*util::fabs(x118*(x114 + x141 + x93) + cell[9] + V{0.0185185185185185}))) + V{0.037037037037037}/(x0 + V{4.369426621423}*util::sqrt(x1 + x5*x80*util::fabs(x118*(x109 + x141 + x81) + cell[22] + V{0.0185185185185185}))) + V{0.037037037037037}/(x0 + V{4.369426621423}*util::sqrt(x1 + x5*x80*util::fabs(x118*(x100 + x109 + x134) + cell[5] + V{0.0185185185185185}))) + V{0.037037037037037}/(x0 + V{4.369426621423}*util::sqrt(x1 + x5*x80*util::fabs(x118*(-x23*x129*x129 + x99) + cell[19] + V{0.0185185185185185}))) + V{0.037037037037037}/(x0 + V{4.369426621423}*util::sqrt(x1 + x5*x80*util::fabs(x118*(-x23*x125*x125 + x79) + cell[17] + V{0.0185185185185185}))) + V{0.037037037037037}/(x0 + V{4.369426621423}*util::sqrt(x1 + x5*x80*util::fabs(-x118*(x117 + x23*(x142*x142)) + cell[4] + V{0.0185185185185185}))) + V{0.037037037037037}/(x0 + V{4.369426621423}*util::sqrt(x1 + x5*x80*util::fabs(x118*(x115 + x137) + cell[7] + V{0.0185185185185185}))) + V{0.037037037037037}/(x0 + V{4.369426621423}*util::sqrt(x1 + x5*x80*util::fabs(-x118*(x113 + x23*(x143*x143)) + cell[6] + V{0.0185185185185185}))) + V{0.037037037037037}/(x0 + V{4.369426621423}*util::sqrt(x1 + x5*x80*util::fabs(x118*(x110 - x23*x139*x139) + cell[21] + V{0.0185185185185185}))) + V{0.037037037037037}/(x0 + V{4.369426621423}*util::sqrt(x1 + x5*x80*util::fabs(-x118*(x108 + x23*(x144*x144)) + cell[8] + V{0.0185185185185185})));
4059}
4060
4061};
4062
4063
4064}
4065
4066}
4067
4068}
4069
4070#endif
4071
4072#endif
Descriptor for all types of 2D and 3D lattices.
Tuple< BulkDensity, BulkMomentum, BulkStress, DefineToNEq > BulkTuple
Standard computation of momenta from the populations in the bulk.
Definition aliases.h:41
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
cpu::simd::Pack< T > fabs(cpu::simd::Pack< T > value)
Definition pack.h:106
Top level namespace for all of OpenLB.
#define any_platform
Define preprocessor macros for device-side functions, constant storage.
Definition platform.h:78
V computeEffectiveOmega(CELL &cell, PARAMETERS &parameters) any_platform
CellStatistic< V > apply(CELL &cell, PARAMETERS &parameters) any_platform
V computeEffectiveOmega(CELL &cell, PARAMETERS &parameters) any_platform
CellStatistic< V > apply(CELL &cell, PARAMETERS &parameters) any_platform
V computeEffectiveOmega(CELL &cell, PARAMETERS &parameters) any_platform
CellStatistic< V > apply(CELL &cell, PARAMETERS &parameters) any_platform
V computeEffectiveOmega(CELL &cell, PARAMETERS &parameters) any_platform
CellStatistic< V > apply(CELL &cell, PARAMETERS &parameters) any_platform
V computeEffectiveOmega(CELL &cell, PARAMETERS &parameters) any_platform
CellStatistic< V > apply(CELL &cell, PARAMETERS &parameters) any_platform