ParMooN
 All Classes Functions Variables Friends Pages
NSE2D_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 __NSE2DFIXPO__
8 #define __NSE2DFIXPO__
9 
10 #include <Enumerations.h>
11 
12 // ======================================================================
13 // compute parameter for RFB stabilization
14 // Brezzi, Marini, Russo, CMAME 194 (2005) 127 - 148
15 // ======================================================================
16 
17 double RFB_Parameter(double hK, double eps, double* b);
18 
19 // ======================================================================
20 // compute parameter for SUPG stabilization
21 // ======================================================================
22 double SUPG_Parameter(double hK, double eps, double b1, double b2, double c);
23 
24 
25 void NSParamsVelo(double *in, double *out);
26 
27 // ======================================================================
28 // Type 1, Standard Galerkin
29 // ======================================================================
30 void NSType1Galerkin(double Mult, double *coeff,
31 double *param, double hK,
32 double **OrigValues, int *N_BaseFuncts,
33 double ***LocMatrices, double **LocRhs);
34 
35 // ======================================================================
36 // Type 1, (reduced) SDFEM
37 // ======================================================================
38 void NSType1SDFEM(double Mult, double *coeff,
39 double *param, double hK,
40 double **OrigValues, int *N_BaseFuncts,
41 double ***LocMatrices, double **LocRhs);
42 
43 // ======================================================================
44 // Type 1, for upwind (only laplacian in A block)
45 // ======================================================================
46 void NSType1Upwind(double Mult, double *coeff,
47 double *param, double hK,
48 double **OrigValues, int *N_BaseFuncts,
49 double ***LocMatrices, double **LocRhs);
50 
51 // ======================================================================
52 // Type 1, Smagorinsky
53 // ======================================================================
54 void NSType1Smagorinsky(double Mult, double *coeff,
55 double *param, double hK,
56 double **OrigValues, int *N_BaseFuncts,
57 double ***LocMatrices, double **LocRhs);
58 
59 // ======================================================================
60 // Type 1, VMSProjection, nabla form
61 // ======================================================================
62 void NSType1VMSProjection(double Mult, double *coeff,
63 double *param, double hK,
64 double **OrigValues, int *N_BaseFuncts,
65 double ***LocMatrices, double **LocRhs);
66 
67 // ======================================================================
68 // Type 1, Standard Galerkin + divergence term
69 // ======================================================================
70 void NSType1GalerkinDiv(double Mult, double *coeff,
71 double *param, double hK,
72 double **OrigValues, int *N_BaseFuncts,
73 double ***LocMatrices, double **LocRhs);
74 
75 // ======================================================================
76 // Type 2, Standard Galerkin
77 // ======================================================================
78 void NSType2Galerkin(double Mult, double *coeff,
79 double *param, double hK,
80 double **OrigValues, int *N_BaseFuncts,
81 double ***LocMatrices, double **LocRhs);
82 
83 // ======================================================================
84 // Type 2, SDFEM
85 // ======================================================================
86 void NSType2SDFEM(double Mult, double *coeff,
87 double *param, double hK,
88 double **OrigValues, int *N_BaseFuncts,
89 double ***LocMatrices, double **LocRhs);
90 
91 // ======================================================================
92 // Type 2, Upwind (only Laplacian in A block)
93 // ======================================================================
94 void NSType2Upwind(double Mult, double *coeff,
95 double *param, double hK,
96 double **OrigValues, int *N_BaseFuncts,
97 double ***LocMatrices, double **LocRhs);
98 
99 // ======================================================================
100 // Type 2, Smagorinsky
101 // ======================================================================
102 void NSType2Smagorinsky(double Mult, double *coeff,
103 double *param, double hK,
104 double **OrigValues, int *N_BaseFuncts,
105 double ***LocMatrices, double **LocRhs);
106 
107 // ======================================================================
108 // Type 2, Standard Galerkin + divergence term
109 // ======================================================================
110 void NSType2GalerkinDiv(double Mult, double *coeff,
111 double *param, double hK,
112 double **OrigValues, int *N_BaseFuncts,
113 double ***LocMatrices, double **LocRhs);
114 
115 // ======================================================================
116 // Type 3, Standard Galerkin, (grad u, grad v)
117 // ======================================================================
118 void NSType3Galerkin(double Mult, double *coeff,
119 double *param, double hK,
120 double **OrigValues, int *N_BaseFuncts,
121 double ***LocMatrices, double **LocRhs);
122 
123 // ======================================================================
124 // Type 3, Standard Galerkin, D(u):D(v)
125 // ======================================================================
126 void NSType3GalerkinDD(double Mult, double *coeff,
127 double *param, double hK,
128 double **OrigValues, int *N_BaseFuncts,
129 double ***LocMatrices, double **LocRhs);
130 
131 // ======================================================================
132 // for Type 3 is SDFEM not available
133 // ======================================================================
134 
135 // ======================================================================
136 // Type 3, Upwind (no convection term), (grad u, grad v)
137 // ======================================================================
138 void NSType3Upwind(double Mult, double *coeff,
139 double *param, double hK,
140 double **OrigValues, int *N_BaseFuncts,
141 double ***LocMatrices, double **LocRhs);
142 
143 // ======================================================================
144 // Type 3, Upwind (no convection term), D(u):D(v)
145 // ======================================================================
146 void NSType3UpwindDD(double Mult, double *coeff,
147 double *param, double hK,
148 double **OrigValues, int *N_BaseFuncts,
149 double ***LocMatrices, double **LocRhs);
150 
151 // ======================================================================
152 // Type 3, Smagorinsky, (grad u, grad v)
153 // ======================================================================
154 void NSType3Smagorinsky(double Mult, double *coeff,
155 double *param, double hK,
156 double **OrigValues, int *N_BaseFuncts,
157 double ***LocMatrices, double **LocRhs);
158 
159 // ======================================================================
160 // Type 3, Smagorinsky, D(u):D(v)
161 // ======================================================================
162 void NSType3SmagorinskyDD(double Mult, double *coeff,
163 double *param, double hK,
164 double **OrigValues, int *N_BaseFuncts,
165 double ***LocMatrices, double **LocRhs);
166 
167 // ======================================================================
168 // Type 3, Standard Galerkin +div term, (grad u, grad v)
169 // ======================================================================
170 void NSType3GalerkinDiv(double Mult, double *coeff,
171 double *param, double hK,
172 double **OrigValues, int *N_BaseFuncts,
173 double ***LocMatrices, double **LocRhs);
174 
175 // ======================================================================
176 // Type 4, Standard Galerkin, (grad u, grad v)
177 // ======================================================================
178 void NSType4Galerkin(double Mult, double *coeff,
179 double *param, double hK,
180 double **OrigValues, int *N_BaseFuncts,
181 double ***LocMatrices, double **LocRhs);
182 
183 // ======================================================================
184 // Type 4, Standard Galerkin, D(u):D(v)
185 // ======================================================================
186 void NSType4GalerkinDD(double Mult, double *coeff,
187 double *param, double hK,
188 double **OrigValues, int *N_BaseFuncts,
189 double ***LocMatrices, double **LocRhs);
190 
191 // ======================================================================
192 // Type 4, SDFEM, (grad u, grad v)
193 // ======================================================================
194 void NSType4SDFEM(double Mult, double *coeff,
195 double *param, double hK,
196 double **OrigValues, int *N_BaseFuncts,
197 double ***LocMatrices, double **LocRhs);
198 
199 // ======================================================================
200 // Type 4, SDFEM, D(u):D(v)
201 // ======================================================================
202 void NSType4SDFEMDD(double Mult, double *coeff,
203 double *param, double hK,
204 double **OrigValues, int *N_BaseFuncts,
205 double ***LocMatrices, double **LocRhs);
206 
207 // ======================================================================
208 // Type 4, Upwind (no convection terms), (grad u, grad v)
209 // ======================================================================
210 void NSType4Upwind(double Mult, double *coeff,
211 double *param, double hK,
212 double **OrigValues, int *N_BaseFuncts,
213 double ***LocMatrices, double **LocRhs);
214 
215 // ======================================================================
216 // Type 4, Upwind (no convection terms), D(u):D(v)
217 // ======================================================================
218 void NSType4UpwindDD(double Mult, double *coeff,
219 double *param, double hK,
220 double **OrigValues, int *N_BaseFuncts,
221 double ***LocMatrices, double **LocRhs);
222 
223 // ======================================================================
224 // Type 4, Smagorinsky, (grad u, grad v)
225 // ======================================================================
226 void NSType4Smagorinsky(double Mult, double *coeff,
227 double *param, double hK,
228 double **OrigValues, int *N_BaseFuncts,
229 double ***LocMatrices, double **LocRhs);
230 
231 // ======================================================================
232 // Type 4, Smagorinsky, D(u):D(v)
233 // ======================================================================
234 void NSType4SmagorinskyDD(double Mult, double *coeff,
235 double *param, double hK,
236 double **OrigValues, int *N_BaseFuncts,
237 double ***LocMatrices, double **LocRhs);
238 
239 // ======================================================================
240 // Type 4, VMSProjection, D(u):D(v)
241 // ======================================================================
242 void NSType4VMSProjectionDD(double Mult, double *coeff,
243 double *param, double hK,
244 double **OrigValues, int *N_BaseFuncts,
245 double ***LocMatrices, double **LocRhs);
246 
247 // ======================================================================
248 // Type 1, Standard Galerkin, only nonlinear part
249 // ======================================================================
250 void NSType1_2NLGalerkin(double Mult, double *coeff,
251 double *param, double hK,
252 double **OrigValues, int *N_BaseFuncts,
253 double ***LocMatrices, double **LocRhs);
254 
255 // ======================================================================
256 // Type 1,(reduced) SDFEM
257 // ======================================================================
258 void NSType1NLSDFEM(double Mult, double *coeff,
259 double *param, double hK,
260 double **OrigValues, int *N_BaseFuncts,
261 double ***LocMatrices, double **LocRhs);
262 
263 // ======================================================================
264 // Type 1, for upwind (only laplacian in A block)
265 // ======================================================================
266 void NSType1_2NLUpwind(double Mult, double *coeff,
267 double *param, double hK,
268 double **OrigValues, int *N_BaseFuncts,
269 double ***LocMatrices, double **LocRhs);
270 
271 // ======================================================================
272 // Type 1, Smagorinsky, only nonlinear part
273 // ======================================================================
274 void NSType1_2NLSmagorinsky(double Mult, double *coeff,
275 double *param, double hK,
276 double **OrigValues, int *N_BaseFuncts,
277 double ***LocMatrices, double **LocRhs);
278 
279 // ======================================================================
280 // Type 1, VMSProjection, nabla form
281 // Type 2, VMSProjection, nabla form
282 // ======================================================================
283 void NSType1_2NLVMSProjection(double Mult, double *coeff,
284 double *param, double hK,
285 double **OrigValues, int *N_BaseFuncts,
286 double ***LocMatrices, double **LocRhs);
287 
288 // ======================================================================
289 // Type 1, Standard Galerkin + div term, only nonlinear part
290 // ======================================================================
291 void NSType1_2NLGalerkinDiv(double Mult, double *coeff,
292 double *param, double hK,
293 double **OrigValues, int *N_BaseFuncts,
294 double ***LocMatrices, double **LocRhs);
295 
296 // ======================================================================
297 // Type 2, SDFEM
298 // ======================================================================
299 void NSType2NLSDFEM(double Mult, double *coeff,
300 double *param, double hK,
301 double **OrigValues, int *N_BaseFuncts,
302 double ***LocMatrices, double **LocRhs);
303 
304 // ======================================================================
305 // Type 3, Standard Galerkin, (grad u, grad v)
306 // ======================================================================
307 void NSType3_4NLGalerkin(double Mult, double *coeff,
308 double *param, double hK,
309 double **OrigValues, int *N_BaseFuncts,
310 double ***LocMatrices, double **LocRhs);
311 
312 // ======================================================================
313 // Type 3, Standard Galerkin, D(u):D(v)
314 // ======================================================================
315 void NSType3_4NLGalerkinDD(double Mult, double *coeff,
316 double *param, double hK,
317 double **OrigValues, int *N_BaseFuncts,
318 double ***LocMatrices, double **LocRhs);
319 
320 // ======================================================================
321 // Type 3, Upwind (no convection term), (grad u, grad v)
322 // ======================================================================
323 void NSType3_4NLUpwind(double Mult, double *coeff,
324 double *param, double hK,
325 double **OrigValues, int *N_BaseFuncts,
326 double ***LocMatrices, double **LocRhs);
327 
328 // ======================================================================
329 // Type 3, Upwind (no convection term), D(u):D(v)
330 // ======================================================================
331 void NSType3_4NLUpwindDD(double Mult, double *coeff,
332 double *param, double hK,
333 double **OrigValues, int *N_BaseFuncts,
334 double ***LocMatrices, double **LocRhs);
335 
336 // ======================================================================
337 // Type 3, Smagorinsky, (grad u, grad v)
338 // ======================================================================
339 void NSType3_4NLSmagorinsky(double Mult, double *coeff,
340 double *param, double hK,
341 double **OrigValues, int *N_BaseFuncts,
342 double ***LocMatrices, double **LocRhs);
343 
344 // ======================================================================
345 // Type 3, Smagorinsky, D(u):D(v)
346 // ======================================================================
347 void NSType3_4NLSmagorinskyDD(double Mult, double *coeff,
348 double *param, double hK,
349 double **OrigValues, int *N_BaseFuncts,
350 double ***LocMatrices, double **LocRhs);
351 
352 // ======================================================================
353 // Type 3, Standard Galerkin + div term, (grad u, grad v)
354 // ======================================================================
355 void NSType3_4NLGalerkinDiv(double Mult, double *coeff,
356 double *param, double hK,
357 double **OrigValues, int *N_BaseFuncts,
358 double ***LocMatrices, double **LocRhs);
359 
360 // ======================================================================
361 // Type 4, SDFEM, (grad u, grad v)
362 // ======================================================================
363 void NSType4NLSDFEM(double Mult, double *coeff,
364 double *param, double hK,
365 double **OrigValues, int *N_BaseFuncts,
366 double ***LocMatrices, double **LocRhs);
367 
368 // ======================================================================
369 // Type 4, SDFEM, D(u):D(v)
370 // ======================================================================
371 void NSType4NLSDFEMDD(double Mult, double *coeff,
372 double *param, double hK,
373 double **OrigValues, int *N_BaseFuncts,
374 double ***LocMatrices, double **LocRhs);
375 
376 // ======================================================================
377 // rhs for RFB stabilization
378 // ======================================================================
379 void NSRFBRhs(double Mult, double *coeff,
380 double *param, double hK,
381 double **OrigValues, int *N_BaseFuncts,
382  double ***LocMatrices, double **LocRhs);
383 
384 // ======================================================================
385 // pressure separation
386 // ======================================================================
387 void NSPressSep(double Mult, double *coeff,
388 double *param, double hK,
389 double **OrigValues, int *N_BaseFuncts,
390 double ***LocMatrices, double **LocRhs);
391 
392 // ======================================================================
393 // pressure separation with auxiliary problem
394 // ======================================================================
395 void NSPressSepAuxProb(double Mult, double *coeff,
396 double *param, double hK,
397 double **OrigValues, int *N_BaseFuncts,
398 double ***LocMatrices, double **LocRhs);
399 
400 // ======================================================================
401 // Standard Galerkin for CST
402 // ======================================================================
403 void CSTGalerkin(double Mult, double *coeff,
404 double *param, double hK,
405 double **OrigValues, int *N_BaseFuncts,
406 double ***LocMatrices, double **LocRhs);
407 // ======================================================================
408 // SUPG for CST
409 // ======================================================================
410 void CST_SDFEM(double Mult, double *coeff,
411 double *param, double hK,
412 double **OrigValues, int *N_BaseFuncts,
413 double ***LocMatrices, double **LocRhs);
414 // ======================================================================
415 // SUPG non-consistent for CST
416 // ======================================================================
417 void CST_SUFEM(double Mult, double *coeff,
418 double *param, double hK,
419 double **OrigValues, int *N_BaseFuncts,
420 double ***LocMatrices, double **LocRhs);
421 
422 // ======================================================================
423 // Standard Galerkin for CST (Giesekus type)
424 // ======================================================================
425 void CST_GiesekusGalerkin(double Mult, double *coeff,
426 double *param, double hK,
427 double **OrigValues, int *N_BaseFuncts,
428 double ***LocMatrices, double **LocRhs);
429 
430 // ======================================================================
431 // Standard Galerkin for DFT
432 // ======================================================================
433 void DFTGalerkin(double Mult, double *coeff,
434 double *param, double hK,
435 double **OrigValues, int *N_BaseFuncts,
436 double ***LocMatrices, double **LocRhs);
437 
438 
439 // ======================================================================
440 // Rhs only for NSE due to CST
441 // ======================================================================
442 void NSCSTRhs(double Mult, double *coeff,
443 double *param, double hK,
444 double **OrigValues, int *N_BaseFuncts,
445 double ***LocMatrices, double **LocRhs);
446 
447 // ======================================================================
448 // Rhs only for NSE due to CST
449 // ======================================================================
450 void NSCSTRhs_DEVSS(double Mult, double *coeff,
451 double *param, double hK,
452 double **OrigValues, int *N_BaseFuncts,
453 double ***LocMatrices, double **LocRhs);
454 
455 // ========================================================================
456 // routines for FJMT07
457 // ========================================================================
458 
459 // ======================================================================
460 // Type 1, Standard Galerkin
461 // ======================================================================
462 void NSType1GalerkinFJMT07(double Mult, double *coeff,
463 double *param, double hK,
464 double **OrigValues, int *N_BaseFuncts,
465 double ***LocMatrices, double **LocRhs);
466 
467 // ======================================================================
468 // Type 1, Standard Galerkin, only nonlinear part
469 // ======================================================================
470 void NSType1_2NLGalerkinFJMT07(double Mult, double *coeff,
471 double *param, double hK,
472 double **OrigValues, int *N_BaseFuncts,
473 double ***LocMatrices, double **LocRhs);
474 
475 /*// ======================================================================
476 // auxiliary problem for differential filter
477 // ======================================================================
478 void Filter_Galerkin(double Mult, double *coeff,
479  double *param, double hK,
480  double **OrigValues, int *N_BaseFuncts,
481  double ***LocMatrices, double **LocRhs);
482 */
483 /*
484 // ======================================================================
485 // auxiliary problem
486 // ======================================================================
487 void NSAuxProblem(double Mult, double *coeff,
488  double *param, double hK,
489  double **OrigValues, int *N_BaseFuncts,
490  double ***LocMatrices, double **LocRhs);
491 
492 int NSAuxProblemN_Terms = 3;
493 MultiIndex2D NSAuxProblemDerivatives[3] = { D10, D01, D00};
494 int NSAuxProblemSpaceNumbers[3] = { 0, 0, 0};
495 int NSAuxProblemN_Matrices = 1;
496 int NSAuxProblemRowSpace[1] = { 0 };
497 int NSAuxProblemColumnSpace[1] = { 0 };
498 int NSAuxProblemN_Rhs = 2;
499 int NSAuxProblemRhsSpace[2] = { 0, 0 };
500 */
501 #endif