ParMooN
 All Classes Functions Variables Friends Pages
NSE3D_FixPo.h
1 // ======================================================================
2 // @(#)NSE2D_FixPo.h 1.2 04/13/00
3 //
4 // common declaration for all Navier-Stokes problems
5 // ======================================================================
6 
7 #ifndef __NSE3DFIXPO__
8 #define __NSE3DFIXPO__
9 
10 #include <Enumerations.h>
11 
12 // ======================================================================
13 // compute parameter for RFB stabilization
14 // Brezzi, Marini, Russo, CMAME 194 (2005) 127 - 148
15 // not clear if 2d situation can be simply used also in 3d
16 // ======================================================================
17 
18 double RFB_Parameter3D(double hK, double eps, double* b);
19 
20 
21 // ======================================================================
22 // Type 1, Standard Galerkin
23 // ======================================================================
24 void NSType1Galerkin3D(double Mult, double *coeff,
25  double *param, double hK,
26  double **OrigValues, int *N_BaseFuncts,
27  double ***LocMatrices, double **LocRhs);
28 
29 // ======================================================================
30 // Type 1, (reduced) SDFEM or (simplified RFB)
31 // ======================================================================
32 void NSType1SDFEM3D(double Mult, double *coeff,
33  double *param, double hK,
34  double **OrigValues, int *N_BaseFuncts,
35  double ***LocMatrices, double **LocRhs);
36 
37 // ======================================================================
38 // Type 1, for upwind (only laplacian in A block)
39 // ======================================================================
40 void NSType1Upwind3D(double Mult, double *coeff,
41  double *param, double hK,
42  double **OrigValues, int *N_BaseFuncts,
43  double ***LocMatrices, double **LocRhs);
44 
45 // ======================================================================
46 // Type 1, Smagorinsky
47 // ======================================================================
48 void NSType1Smagorinsky3D(double Mult, double *coeff,
49  double *param, double hK,
50  double **OrigValues, int *N_BaseFuncts,
51  double ***LocMatrices, double **LocRhs);
52 
53 // ======================================================================
54 // Type 1, VMSProjection, nabla form
55 // ======================================================================
56 void NSType1VMSProjection3D(double Mult, double *coeff,
57 double *param, double hK,
58 double **OrigValues, int *N_BaseFuncts,
59  double ***LocMatrices, double **LocRhs);
60 
61 // ======================================================================
62 // Type 2, Standard Galerkin
63 // ======================================================================
64 void NSType2Galerkin3D(double Mult, double *coeff,
65  double *param, double hK,
66  double **OrigValues, int *N_BaseFuncts,
67  double ***LocMatrices, double **LocRhs);
68 
69 // ======================================================================
70 // Type 2, SDFEM
71 // ======================================================================
72 void NSType2SDFEM3D(double Mult, double *coeff,
73  double *param, double hK,
74  double **OrigValues, int *N_BaseFuncts,
75  double ***LocMatrices, double **LocRhs);
76 
77 // ======================================================================
78 // Type 2, Upwind (only Laplacian in A block)
79 // ======================================================================
80 void NSType2Upwind3D(double Mult, double *coeff,
81  double *param, double hK,
82  double **OrigValues, int *N_BaseFuncts,
83  double ***LocMatrices, double **LocRhs);
84 
85 // ======================================================================
86 // Type 2, Smagorinsky
87 // ======================================================================
88 void NSType2Smagorinsky3D(double Mult, double *coeff,
89  double *param, double hK,
90  double **OrigValues, int *N_BaseFuncts,
91  double ***LocMatrices, double **LocRhs);
92 
93 
94 // ======================================================================
95 // Type 3, Standard Galerkin, (grad u, grad v)
96 // ======================================================================
97 void NSType3Galerkin3D(double Mult, double *coeff,
98  double *param, double hK,
99  double **OrigValues, int *N_BaseFuncts,
100  double ***LocMatrices, double **LocRhs);
101 
102 // ======================================================================
103 // Type 3, Standard Galerkin, D(u):D(v)
104 // ======================================================================
105 void NSType3GalerkinDD3D(double Mult, double *coeff,
106  double *param, double hK,
107  double **OrigValues, int *N_BaseFuncts,
108  double ***LocMatrices, double **LocRhs);
109 
110 // ======================================================================
111 // for Type 3 is SDFEM not available
112 // ======================================================================
113 
114 // ======================================================================
115 // Type 3, Upwind (no convection term), (grad u, grad v)
116 // ======================================================================
117 void NSType3Upwind3D(double Mult, double *coeff,
118  double *param, double hK,
119  double **OrigValues, int *N_BaseFuncts,
120  double ***LocMatrices, double **LocRhs);
121 
122 // ======================================================================
123 // Type 3, Upwind (no convection term), D(u):D(v)
124 // ======================================================================
125 void NSType3UpwindDD3D(double Mult, double *coeff,
126  double *param, double hK,
127  double **OrigValues, int *N_BaseFuncts,
128  double ***LocMatrices, double **LocRhs);
129 
130 // ======================================================================
131 // Type 3, Smagorinsky, (grad u, grad v)
132 // ======================================================================
133 void NSType3Smagorinsky3D(double Mult, double *coeff,
134  double *param, double hK,
135  double **OrigValues, int *N_BaseFuncts,
136  double ***LocMatrices, double **LocRhs);
137 
138 // ======================================================================
139 // Type 3, Smagorinsky, D(u):D(v)
140 // ======================================================================
141 void NSType3SmagorinskyDD3D(double Mult, double *coeff,
142  double *param, double hK,
143  double **OrigValues, int *N_BaseFuncts,
144  double ***LocMatrices, double **LocRhs);
145 
146 // ======================================================================
147 // Type 4, Standard Galerkin, (grad u, grad v)
148 // ======================================================================
149 void NSType4Galerkin3D(double Mult, double *coeff,
150  double *param, double hK,
151  double **OrigValues, int *N_BaseFuncts,
152  double ***LocMatrices, double **LocRhs);
153 
154 // ======================================================================
155 // Type 4, Standard Galerkin, D(u):D(v)
156 // ======================================================================
157 void NSType4GalerkinDD3D(double Mult, double *coeff,
158  double *param, double hK,
159  double **OrigValues, int *N_BaseFuncts,
160  double ***LocMatrices, double **LocRhs);
161 
162 // ======================================================================
163 // Type 4, SDFEM, (grad u, grad v)
164 // ======================================================================
165 void NSType4SDFEM3D(double Mult, double *coeff,
166  double *param, double hK,
167  double **OrigValues, int *N_BaseFuncts,
168  double ***LocMatrices, double **LocRhs);
169 
170 // ======================================================================
171 // Type 4, SDFEM, D(u):D(v)
172 // ======================================================================
173 void NSType4SDFEMDD3D(double Mult, double *coeff,
174  double *param, double hK,
175  double **OrigValues, int *N_BaseFuncts,
176  double ***LocMatrices, double **LocRhs);
177 
178 // ======================================================================
179 // Type 4, Upwind (no convection terms), (grad u, grad v)
180 // ======================================================================
181 void NSType4Upwind3D(double Mult, double *coeff,
182  double *param, double hK,
183  double **OrigValues, int *N_BaseFuncts,
184  double ***LocMatrices, double **LocRhs);
185 
186 // ======================================================================
187 // Type 4, Upwind (no convection terms), D(u):D(v)
188 // ======================================================================
189 void NSType4UpwindDD3D(double Mult, double *coeff,
190  double *param, double hK,
191  double **OrigValues, int *N_BaseFuncts,
192  double ***LocMatrices, double **LocRhs);
193 
194 // ======================================================================
195 // Type 4, Smagorinsky, (grad u, grad v)
196 // ======================================================================
197 void NSType4Smagorinsky3D(double Mult, double *coeff,
198  double *param, double hK,
199  double **OrigValues, int *N_BaseFuncts,
200  double ***LocMatrices, double **LocRhs);
201 
202 // ======================================================================
203 // Type 4, Smagorinsky, D(u):D(v)
204 // ======================================================================
205 void NSType4SmagorinskyDD3D(double Mult, double *coeff,
206  double *param, double hK,
207  double **OrigValues, int *N_BaseFuncts,
208  double ***LocMatrices, double **LocRhs);
209 
210 // ======================================================================
211 // Type 1, Standard Galerkin, only nonlinear part
212 // ======================================================================
213 void NSType1_2NLGalerkin3D(double Mult, double *coeff,
214  double *param, double hK,
215  double **OrigValues, int *N_BaseFuncts,
216  double ***LocMatrices, double **LocRhs);
217 
218 // ======================================================================
219 // Type 1,(reduced) SDFEM or (simplified) RFB
220 // ======================================================================
221 void NSType1NLSDFEM3D(double Mult, double *coeff,
222  double *param, double hK,
223  double **OrigValues, int *N_BaseFuncts,
224  double ***LocMatrices, double **LocRhs);
225 
226 // ======================================================================
227 // Type 1, for upwind (only laplacian in A block)
228 // ======================================================================
229 void NSType1_2NLUpwind3D(double Mult, double *coeff,
230  double *param, double hK,
231  double **OrigValues, int *N_BaseFuncts,
232  double ***LocMatrices, double **LocRhs);
233 
234 // ======================================================================
235 // Type 1, Smagorinsky, only nonlinear part
236 // ======================================================================
237 void NSType1_2NLSmagorinsky3D(double Mult, double *coeff,
238  double *param, double hK,
239  double **OrigValues, int *N_BaseFuncts,
240  double ***LocMatrices, double **LocRhs);
241 
242 
243 // ======================================================================
244 // Type 1, VMSProjection, nabla form
245 // Type 2, VMSProjection, nabla form
246 // ======================================================================
247 void NSType1_2NLVMSProjection3D(double Mult, double *coeff,
248 double *param, double hK,
249 double **OrigValues, int *N_BaseFuncts,
250  double ***LocMatrices, double **LocRhs);
251 
252 // ======================================================================
253 // Type 2, SDFEM
254 // ======================================================================
255 void NSType2NLSDFEM3D(double Mult, double *coeff,
256  double *param, double hK,
257  double **OrigValues, int *N_BaseFuncts,
258  double ***LocMatrices, double **LocRhs);
259 
260 // ======================================================================
261 // Type 3, Standard Galerkin, (grad u, grad v)
262 // ======================================================================
263 void NSType3_4NLGalerkin3D(double Mult, double *coeff,
264  double *param, double hK,
265  double **OrigValues, int *N_BaseFuncts,
266  double ***LocMatrices, double **LocRhs);
267 
268 // ======================================================================
269 // Type 3, Standard Galerkin, D(u):D(v)
270 // ======================================================================
271 void NSType3_4NLGalerkinDD3D(double Mult, double *coeff,
272  double *param, double hK,
273  double **OrigValues, int *N_BaseFuncts,
274  double ***LocMatrices, double **LocRhs);
275 
276 // ======================================================================
277 // Type 3, Upwind (no convection term), (grad u, grad v)
278 // ======================================================================
279 void NSType3_4NLUpwind3D(double Mult, double *coeff,
280  double *param, double hK,
281  double **OrigValues, int *N_BaseFuncts,
282  double ***LocMatrices, double **LocRhs);
283 
284 // ======================================================================
285 // Type 3, Upwind (no convection term), D(u):D(v)
286 // ======================================================================
287 void NSType3_4NLUpwindDD3D(double Mult, double *coeff,
288  double *param, double hK,
289  double **OrigValues, int *N_BaseFuncts,
290  double ***LocMatrices, double **LocRhs);
291 
292 // ======================================================================
293 // Type 3, Smagorinsky, (grad u, grad v)
294 // ======================================================================
295 void NSType3_4NLSmagorinsky3D(double Mult, double *coeff,
296  double *param, double hK,
297  double **OrigValues, int *N_BaseFuncts,
298  double ***LocMatrices, double **LocRhs);
299 
300 // ======================================================================
301 // Type 3, Smagorinsky, D(u):D(v)
302 // ======================================================================
303 void NSType3_4NLSmagorinskyDD3D(double Mult, double *coeff,
304  double *param, double hK,
305  double **OrigValues, int *N_BaseFuncts,
306  double ***LocMatrices, double **LocRhs);
307 
308 // ======================================================================
309 // Type 4, SDFEM, (grad u, grad v)
310 // ======================================================================
311 void NSType4NLSDFEM3D(double Mult, double *coeff,
312  double *param, double hK,
313  double **OrigValues, int *N_BaseFuncts,
314  double ***LocMatrices, double **LocRhs);
315 
316 // ======================================================================
317 // Type 4, SDFEM, D(u):D(v)
318 // ======================================================================
319 void NSType4NLSDFEMDD3D(double Mult, double *coeff,
320  double *param, double hK,
321  double **OrigValues, int *N_BaseFuncts,
322  double ***LocMatrices, double **LocRhs);
323 
324 // ======================================================================
325 // Type 4, SDFEM, (grad u, grad v), with div-div stabilization
326 // ======================================================================
327 void NSType4NLSDFEM_DivDiv_3D(double Mult, double *coeff,
328  double *param, double hK,
329  double **OrigValues, int *N_BaseFuncts,
330  double ***LocMatrices, double **LocRhs);
331 
332 
333 // ======================================================================
334 // Type 4, SDFEM, D(u):D(v) with div-div stabilization
335 // ======================================================================
336 void NSType4NLSDFEM_DivDiv_DD3D(double Mult, double *coeff,
337  double *param, double hK,
338  double **OrigValues, int *N_BaseFuncts,
339  double ***LocMatrices, double **LocRhs);
340 
341 // ======================================================================
342 // rhs for RFB stabilization
343 // ======================================================================
344 void NSRFBRhs3D(double Mult, double *coeff,
345  double *param, double hK,
346  double **OrigValues, int *N_BaseFuncts,
347  double ***LocMatrices, double **LocRhs);
348 // ======================================================================
349 // pressure separation
350 // ======================================================================
351 void NSPressSep(double Mult, double *coeff,
352  double *param, double hK,
353  double **OrigValues, int *N_BaseFuncts,
354  double ***LocMatrices, double **LocRhs);
355 
356 // ======================================================================
357 // pressure separation
358 // ======================================================================
359 void NSPressSepAuxProb(double Mult, double *coeff,
360  double *param, double hK,
361  double **OrigValues, int *N_BaseFuncts,
362  double ***LocMatrices, double **LocRhs);
363 #endif