lbm_reference
D3Q19.h
Go to the documentation of this file.
1 //! \file D3Q19.h
2 //! Specification and definitions for the D3Q19 model of the Lattice Boltzmann
3 //! method
4 //! \date Jan 2, 2009
5 //! \author Florian Rathgeber
6 
7 #ifndef D3Q19_H_
8 #define D3Q19_H_
9 
10 //! Common namespace for all LBM classes
11 
12 namespace lbm {
13 
14 //! Number of distribution functions for each cell
15 
16 const int Dim = 19;
17 
18 //! Directions of the 19 distribution values for each cell
19 
20 enum Direction {
21  C = 0,
22  N = 1,
23  E = 2,
24  S = 3,
25  W = 4,
26  T = 5,
27  B = 6,
28  NE = 7,
29  SE = 8,
30  SW = 9,
31  NW = 10,
32  TN = 11,
33  TE = 12,
34  TS = 13,
35  TW = 14,
36  BN = 15,
37  BE = 16,
38  BS = 17,
39  BW = 18
40 };
41 
42 //! Inverse lattice directions corresponding to numeric directions 0 - 18
43 
44 const int finv[19] = {
45  0, // C 0 -> C
46  3, // N 1 -> S
47  4, // E 2 -> W
48  1, // S 3 -> N
49  2, // W 4 -> E
50  6, // T 5 -> B
51  5, // B 6 -> T
52  9, // NE 7 -> SW
53  10, // SE 8 -> NW
54  7, // SW 9 -> NE
55  8, // NW 10 -> SE
56  17, // TN 11 -> BS
57  18, // TE 12 -> BW
58  15, // TS 13 -> BN
59  16, // TW 14 -> BE
60  13, // BN 15 -> TS
61  14, // BE 16 -> TW
62  11, // BS 17 -> TN
63  12 // BW 18 -> TE
64 };
65 
66 //! Corresponding Direction value for numeric directions 0 - 18
67 
68 const Direction fd[19] = {
69  C,
70  N,
71  E,
72  S,
73  W,
74  T,
75  B,
76  NE,
77  SE,
78  SW,
79  NW,
80  TN,
81  TE,
82  TS,
83  TW,
84  BN,
85  BE,
86  BS,
87  BW
88 };
89 
90 //! Inverse Direction values for numeric directions 0 - 18
91 
92 const Direction fdinv[19] = {
93  C,
94  S,
95  W,
96  N,
97  E,
98  B,
99  T,
100  SW,
101  NW,
102  NE,
103  BS,
104  BW,
105  BN,
106  BE,
107  TS,
108  TW,
109  TN,
110  TE
111 };
112 
113 //! Weights of the distribution values for the collision step
114 
115 const double w[19] = {
116  1. / 3.,
117  1. / 18.,
118  1. / 18.,
119  1. / 18.,
120  1. / 18.,
121  1. / 18.,
122  1. / 18.,
123  1. / 36.,
124  1. / 36.,
125  1. / 36.,
126  1. / 36.,
127  1. / 36.,
128  1. / 36.,
129  1. / 36.,
130  1. / 36.,
131  1. / 36.,
132  1. / 36.,
133  1. / 36.,
134  1. / 36.
135 };
136 
137 //! Lattice velocities in x-direction
138 
139 // C, N, E, S, W, T, B,NE,SE,SW,NW,TN,TE,TS,TW,BN,BE,BS,BW
140 const int ex[19] = { 0, 0, 1, 0,-1, 0, 0, 1, 1,-1,-1, 0, 1, 0,-1, 0, 1, 0,-1 };
141 
142 //! Lattice velocities in y-direction
143 
144 // C, N, E, S, W, T, B,NE,SE,SW,NW,TN,TE,TS,TW,BN,BE,BS,BW
145 const int ey[19] = { 0, 1, 0,-1, 0, 0, 0, 1,-1,-1, 1, 1, 0,-1, 0, 1, 0,-1, 0 };
146 
147 //! Lattice velocities in z-direction
148 
149 // C, N, E, S, W, T, B,NE,SE,SW,NW,TN,TE,TS,TW,BN,BE,BS,BW
150 const int ez[19] = { 0, 0, 0, 0, 0, 1,-1, 0, 0, 0, 0, 1, 1, 1, 1,-1,-1,-1,-1 };
151 
152 //! Products of lattice velocities
153 
154 const int ep[6][19] = {
155 // C, N, E, S, W, T, B,NE,SE,SW,NW,TN,TE,TS,TW,BN,BE,BS,BW
156  { 0, 0, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1 }, // ex * ex
157  { 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0 }, // ey * ey
158  { 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1 }, // ez * ez
159  { 0, 0, 0, 0, 0, 0, 0, 1,-1, 1,-1, 0, 0, 0, 0, 0, 0, 0, 0 }, // ex * ey
160  { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,-1, 0,-1, 0, 1 }, // ex * ez
161  { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,-1, 0,-1, 0, 1, 0 } // ey * ez
162 };
163 
164 //! Normalized lattice velocities in x-direction
165 
166 // C , N , E , S , W, T, B,
167 const RealType exn[19] = { 0 , 0 , 1 , 0 , -1, 0, 0,
168 // NE , SE , SW , NW ,
169  1/sqrt(2), 1/sqrt(2),-1/sqrt(2),-1/sqrt(2),
170 // TN , TE , TS , TW ,
171  0 , 1/sqrt(2), 0 ,-1/sqrt(2),
172 // BN , BE , BS , BW
173  0 , 1/sqrt(2), 0 ,-1/sqrt(2) };
174 
175 //! Normalized lattice velocities in y-direction
176 
177 // C , N , E , S , W, T, B,
178 const RealType eyn[19] = { 0 , 1 , 0 ,-1 , 0, 0, 0,
179 // NE , SE , SW , NW ,
180  1/sqrt(2),-1/sqrt(2),-1/sqrt(2), 1/sqrt(2),
181 // TN , TE , TS , TW ,
182  1/sqrt(2), 0 ,-1/sqrt(2), 0 ,
183 // BN , BE , BS , BW
184  1/sqrt(2), 0 ,-1/sqrt(2), 0 };
185 
186 //! Normalized lattice velocities in z-direction
187 
188 // C , N , E , S , W, T, B,
189 const RealType ezn[19] = { 0 , 0 , 0 , 0 , 0, 1,-1,
190 // NE , SE , SW , NW ,
191  0 , 0 , 0 , 0 ,
192 // TN , TE , TS , TW ,
193  1/sqrt(2), 1/sqrt(2), 1/sqrt(2), 1/sqrt(2),
194 // BN , BE , BS , BW
195  -1/sqrt(2),-1/sqrt(2),-1/sqrt(2),-1/sqrt(2) };
196 
197 //! Lengths of the lattice links
198 // C , N , E , S , W , T , B ,
199 const RealType le[19] = { 1. , 1. , 1. , 1. , 1., 1., 1.,
200 // NE , SE , SW , NW ,
201  sqrt(2), sqrt(2), sqrt(2), sqrt(2),
202 // TN , TE , TS , TW ,
203  sqrt(2), sqrt(2), sqrt(2), sqrt(2),
204 // BN , BE , BS , BW ,
205  sqrt(2), sqrt(2), sqrt(2), sqrt(2) };
206 
207 } // namespace lbm
208 
209 #endif /* D3Q19_H_ */