24#ifndef DYNAMICS_FREE_ENERGY_DYNAMICS_CSE_H
25#define DYNAMICS_FREE_ENERGY_DYNAMICS_CSE_H
36template <
typename... FIELDS>
39template <CONCEPT(MinimalCell) CELL,
typename PARAMETERS,
typename V=
typename CELL::value_t>
42auto x11 = cell.template getFieldComponent<olb::descriptors::FORCE>(1);
43auto x10 = cell.template getFieldComponent<olb::descriptors::FORCE>(0);
44auto x12 =
parameters.template get<olb::descriptors::OMEGA>();
45auto x13 =
parameters.template get<olb::collision::FreeEnergy::GAMMA>();
46auto x9 = cell.template getFieldComponent<olb::descriptors::CHEM_POTENTIAL>(0);
47auto x14 = x12 + V{-1};
48auto x15 = cell[0] + cell[1] + cell[2] + cell[3] + cell[4] + cell[5] + cell[6] + cell[7] + cell[8];
54auto x21 = x20 + V{-1};
57auto x24 = -V{3}*x13*x9 + x23;
58auto x25 = V{0.0277777777777778}*x12;
66auto x33 = V{0.111111111111111}*x12;
69auto x36 = V{4.5}*(x35*x35);
72auto x39 = -x20 + x30 + V{1};
74cell[0] = V{0.555555555555556}*x12*x24 - V{0.444444444444444}*x12*(x16*x22 + V{1}) - x14*cell[0];
75cell[1] = -x14*cell[1] - x25*(x16*(x27 + x31 - V{4.5}*x29*x29) + V{1}) - x32;
76cell[2] = V{0.111111111111111}*x12*(x16*(V{3}*x17 - x21 - x30) + V{-1}) - x14*cell[2] - x34;
77cell[3] = -x14*cell[3] - x25*(x16*(x26 + x31 - x36) + V{1}) - x32;
78cell[4] = -x14*cell[4] - x33*(x16*(x18 + x26 - x37 + V{-1}) + V{1}) - x34;
79cell[5] = -x14*cell[5] - x25*(-x16*(x27 + x38 + x39 + V{4.5}*(x28*x28)) + V{1}) - x32;
80cell[6] = V{0.111111111111111}*x12*(x16*(V{3}*x17 + x39) + V{-1}) - x14*cell[6] - x34;
81cell[7] = V{0.0277777777777778}*x12*(x16*(x36 + x39 + x40) + V{-1}) - x14*cell[7] - x32;
82cell[8] = V{0.111111111111111}*x12*(x16*(x37 + x40 + V{1}) + V{-1}) - x14*cell[8] - x34;
83return { x23, x17 + x19 };
88template <
typename... FIELDS>
91template <CONCEPT(MinimalCell) CELL,
typename PARAMETERS,
typename V=
typename CELL::value_t>
94auto x21 = cell.template getFieldComponent<olb::descriptors::FORCE>(1);
95auto x22 = cell.template getFieldComponent<olb::descriptors::FORCE>(2);
96auto x23 =
parameters.template get<olb::descriptors::OMEGA>();
97auto x24 =
parameters.template get<olb::collision::FreeEnergy::GAMMA>();
98auto x19 = cell.template getFieldComponent<olb::descriptors::CHEM_POTENTIAL>(0);
99auto x20 = cell.template getFieldComponent<olb::descriptors::FORCE>(0);
100auto x25 = x23 + V{-1};
101auto x26 = cell[0] + cell[10] + cell[11] + cell[12] + cell[13] + cell[14] + cell[15] + cell[16] + cell[17] + cell[18] + cell[1] + cell[2] + cell[3] + cell[4] + cell[5] + cell[6] + cell[7] + cell[8] + cell[9];
102auto x27 = x26 + V{1};
104auto x29 = V{1.5}*x28;
106auto x31 = V{1.5}*x30;
108auto x33 = V{1.5}*x32;
109auto x34 = x31 + x33 + V{-1};
111auto x36 = x26 + V{1};
112auto x37 = -V{3}*x19*x24 + x36;
113auto x38 = V{0.0555555555555556}*x23;
119auto x44 = x29 + V{-1};
122auto x47 = V{0.0277777777777778}*x23;
124auto x49 = V{4.5}*(x48*x48);
131auto x56 = V{4.5}*(x55*x55);
137auto x62 = V{4.5}*(x61*x61);
142auto x67 = V{1} - x33;
150cell[0] = V{0.666666666666667}*x23*x37 - V{0.333333333333333}*x23*(x27*x35 + V{1}) - x25*cell[0];
151cell[1] = -x25*cell[1] - x38*(x27*(x34 + x39 - x40) + V{1}) - x41;
152cell[2] = -x25*cell[2] - x38*(x27*(x33 + x42 - x43 + x44) + V{1}) - x41;
153cell[3] = -x25*cell[3] - x38*(x27*(x31 + x44 + x45 - x46) + V{1}) - x41;
154cell[4] = -x25*cell[4] - x47*(x27*(x42 - x49 + x50) + V{1}) - x51;
155cell[5] = -x25*cell[5] - x47*(x27*(x50 + x52 - V{4.5}*x54*x54) + V{1}) - x51;
156cell[6] = -x25*cell[6] - x47*(x27*(x45 + x50 - x56) + V{1}) - x51;
157cell[7] = -x25*cell[7] - x47*(x27*(x50 + x57 - V{4.5}*x60*x60) + V{1}) - x51;
158cell[8] = -x25*cell[8] - x47*(x27*(x45 - x62 + x63) + V{1}) - x51;
159cell[9] = -x25*cell[9] - x47*(x27*(x57 + x63 - V{4.5}*x65*x65) + V{1}) - x51;
160cell[10] = V{0.0555555555555556}*x23*(x27*(x40 + x69) + V{-1}) - x25*cell[10] - x41;
161cell[11] = V{0.0555555555555556}*x23*(x27*(x43 + x67 + x71) + V{-1}) - x25*cell[11] - x41;
162cell[12] = V{0.0555555555555556}*x23*(x27*(x46 + x66 + x72 + V{1}) + V{-1}) - x25*cell[12] - x41;
163cell[13] = V{0.0277777777777778}*x23*(x27*(x49 + x69 + x71) + V{-1}) - x25*cell[13] - x51;
164cell[14] = -x25*cell[14] - x47*(x27*(x63 + x73 - V{4.5}*x53*x53) + V{1}) - x51;
165cell[15] = V{0.0277777777777778}*x23*(x27*(x56 + x69 + x72) + V{-1}) - x25*cell[15] - x51;
166cell[16] = -x25*cell[16] - x47*(x27*(x73 + x74 - V{4.5}*x59*x59) + V{1}) - x51;
167cell[17] = V{0.0277777777777778}*x23*(x27*(x45 + x62 + x68 + x71) + V{-1}) - x25*cell[17] - x51;
168cell[18] = -x25*cell[18] - x47*(x27*(x52 + x74 - V{4.5}*x64*x64) + V{1}) - x51;
169return { x36, x28 + x30 + x32 };
Descriptor for all types of 2D and 3D lattices.
Tuple< BulkDensity, FreeEnergyMomentum, BulkStress, DefineToNEq > FreeEnergyBulkTuple
Top level namespace for all of OpenLB.
CellStatistic< V > apply(CELL &cell, PARAMETERS ¶meters) any_platform
typename meta::list< descriptors::OMEGA, GAMMA > parameters