summaryrefslogtreecommitdiff
path: root/src/LLBM/equilibrium_velocity_wall.h
blob: 2d68e34c56de386f9d2f1686553bcba87eea4b88 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
#pragma once

#include "wall.h"
#include "concepts.h"

struct EquilibriumVelocityWallO {

template <concepts::Arithmetic V, concepts::Arithmetic T>
static void apply(V f_curr[19], V f_next[19], T u_w, WallNormal<1,0,0>) {
	V rho;
	rho = -(f_curr[0] + T{2.00000000000000}*f_curr[11] + f_curr[12] + f_curr[14] + T{2.00000000000000}*f_curr[15] + f_curr[16] + f_curr[18] + T{2.00000000000000}*f_curr[1] + f_curr[2] + f_curr[4] + T{2.00000000000000}*f_curr[5] + f_curr[6] + T{2.00000000000000}*f_curr[8] + f_curr[9])/(u_w + T{-1.00000000000000});
	V u[3] { u_w, 0., 0. };
	V e0 = T{0.0277777777777778}*rho;
	V e1 = u[1] + u[2];
	V e2 = T{4.50000000000000}*(e1*e1);
	V e3 = T{3.00000000000000}*u[2];
	V e4 = u[1]*u[1];
	V e5 = T{1.50000000000000}*e4;
	V e6 = -e5;
	V e7 = u[0]*u[0];
	V e8 = T{1.50000000000000}*e7;
	V e9 = T{1.00000000000000} - e8;
	V e10 = e6 + e9;
	V e11 = e10 + e3;
	V e12 = T{3.00000000000000}*u[1];
	V e13 = u[2]*u[2];
	V e14 = T{1.50000000000000}*e13;
	V e15 = -e14;
	V e16 = e12 + e15;
	V e17 = T{3.00000000000000}*u[0];
	V e18 = -u[2];
	V e19 = e18 + u[0];
	V e20 = -T{4.50000000000000}*e19*e19;
	V e21 = e14 + e5 + T{-1.00000000000000};
	V e22 = e21 + e8;
	V e23 = e22 - e3;
	V e24 = T{0.0555555555555556}*rho;
	V e25 = T{3.00000000000000}*e13;
	V e26 = u[0] + u[2];
	V e27 = T{4.50000000000000}*(e26*e26);
	V e28 = e15 + e17;
	V e29 = e18 + u[1];
	V e30 = -T{4.50000000000000}*e29*e29;
	V e31 = -e12;
	V e32 = u[0] - u[1];
	V e33 = -T{4.50000000000000}*e32*e32;
	V e34 = e17 + e22;
	V e35 = T{3.00000000000000}*e4;
	V e36 = u[0] + u[1];
	V e37 = T{4.50000000000000}*(e36*e36);
	V e38 = T{3.00000000000000}*e7;
	V e39 = e8 + T{-1.00000000000000};
	V e40 = -e17 + e22;
	V e41 = e22 + e3;
	f_next[0] = e0*(e11 + e16 + e2);
	f_next[1] = -e0*(e17 + e20 + e23);
	f_next[2] = e24*(e11 + e25);
	f_next[3] = e0*(e11 + e27 + e28);
	f_next[4] = -e0*(e12 + e23 + e30);
	f_next[5] = -e0*(e31 + e33 + e34);
	f_next[6] = e24*(e16 + e35 + e9);
	f_next[7] = e0*(e10 + e16 + e17 + e37);
	f_next[8] = -e24*(e17 + e21 - e38);
	f_next[9] = -T{0.333333333333333}*e22*rho;
	f_next[10] = e24*(e28 + e38 + e6 + T{1.00000000000000});
	f_next[11] = -e0*(e12 + e34 - e37);
	f_next[12] = -e24*(e12 + e14 - e35 + e39);
	f_next[13] = -e0*(e12 + e33 + e40);
	f_next[14] = -e0*(e30 + e31 + e41);
	f_next[15] = -e0*(-e27 + e3 + e34);
	f_next[16] = -e24*(-e25 + e3 + e39 + e5);
	f_next[17] = -e0*(e20 + e3 + e40);
	f_next[18] = -e0*(e12 - e2 + e41);
}

template <concepts::Arithmetic V, concepts::Arithmetic T>
static void apply(V f_curr[19], V f_next[19], T u_w, WallNormal<-1,0,0>) {
	V rho;
	rho = (f_curr[0] + T{2.00000000000000}*f_curr[10] + f_curr[12] + T{2.00000000000000}*f_curr[13] + f_curr[14] + f_curr[16] + T{2.00000000000000}*f_curr[17] + f_curr[18] + f_curr[2] + T{2.00000000000000}*f_curr[3] + f_curr[4] + f_curr[6] + T{2.00000000000000}*f_curr[7] + f_curr[9])/(u_w + T{1.00000000000000});
	V u[3] { u_w, 0., 0. };
	V e0 = T{0.0277777777777778}*rho;
	V e1 = u[1] + u[2];
	V e2 = T{4.50000000000000}*(e1*e1);
	V e3 = T{3.00000000000000}*u[2];
	V e4 = u[1]*u[1];
	V e5 = T{1.50000000000000}*e4;
	V e6 = -e5;
	V e7 = u[0]*u[0];
	V e8 = T{1.50000000000000}*e7;
	V e9 = T{1.00000000000000} - e8;
	V e10 = e6 + e9;
	V e11 = e10 + e3;
	V e12 = T{3.00000000000000}*u[1];
	V e13 = u[2]*u[2];
	V e14 = T{1.50000000000000}*e13;
	V e15 = -e14;
	V e16 = e12 + e15;
	V e17 = T{3.00000000000000}*u[0];
	V e18 = -u[2];
	V e19 = e18 + u[0];
	V e20 = -T{4.50000000000000}*e19*e19;
	V e21 = e14 + e5 + T{-1.00000000000000};
	V e22 = e21 + e8;
	V e23 = e22 - e3;
	V e24 = T{0.0555555555555556}*rho;
	V e25 = T{3.00000000000000}*e13;
	V e26 = u[0] + u[2];
	V e27 = T{4.50000000000000}*(e26*e26);
	V e28 = e15 + e17;
	V e29 = e18 + u[1];
	V e30 = -T{4.50000000000000}*e29*e29;
	V e31 = -e12;
	V e32 = u[0] - u[1];
	V e33 = -T{4.50000000000000}*e32*e32;
	V e34 = e17 + e22;
	V e35 = T{3.00000000000000}*e4;
	V e36 = u[0] + u[1];
	V e37 = T{4.50000000000000}*(e36*e36);
	V e38 = T{3.00000000000000}*e7;
	V e39 = e8 + T{-1.00000000000000};
	V e40 = -e17 + e22;
	V