ParMooN
 All Classes Functions Variables Friends Pages
LocalProjection.h
1 // =======================================================================
2 // LocalProjection.h
3 //
4 // Purpose: routines for local projection stabilization
5 //
6 // Author: Gunar Matthies 2007/03/06
7 //
8 // =======================================================================
9 
10 #ifndef __LOCAL_PROJECTION__
11 #define __LOCAL_PROJECTION__
12 
13 #include <LinAlg.h>
14 
15 #ifdef __2D__
16 void CoupledDefect(TSquareMatrix *A, TMatrix *B1, TMatrix *B2,
17  TMatrix *B1T, TMatrix *B2T, TMatrix *C,
18  double *x, double *b, double *r);
19 
20 void Defect_NSE2C(TSquareMatrix **A, TMatrix **B, double *x,
21  double *b, double *r);
22 
23 void CoupledMatVect(TSquareMatrix *A, TMatrix *B1, TMatrix *B2,
24  TMatrix *B1T, TMatrix *B2T, TMatrix *C,
25  double *x, double *y);
26 
27 void MatVect_NSE2C(TSquareMatrix **A, TMatrix **B, double *x, double *y);
28 
29 void UltraLocalProjection(void* A, bool ForPressure, CoeffFct2D *Coeff);
30 void UltraLocalProjection(void* A, bool ForPressure);
31 void AddDeformationTensorTerm(TSquareMatrix2D *A11,TSquareMatrix2D *A12,
33  double lpcoeff, double lpexponent, int OrderDiff);
34 void UltraLocalProjectionSD(void* A, bool ForPressure);
35 
36 double UltraLocalError(TFEFunction2D *uh, DoubleFunct2D *ExactU,
37  double lpcoeff, double lpexponent, int OrderDiff);
38 
39 double UltraLocalErrorDivergence(TFEFunction2D *uh1, TFEFunction2D *uh2,
40  DoubleFunct2D *ExactU1, DoubleFunct2D *ExactU2,
41  double lpcoeff, double lpexponent, int OrderDiff);
42 
43 double UltraLocalErrorStreamline(TFEFunction2D *uh, DoubleFunct2D *ExactU,
45  double lpcoeff, double lpexponent, int OrderDiff);
46 
47 double UltraLocalErrorStreamlinePWConst(TFEFunction2D *uh, DoubleFunct2D *ExactU,
49  double lpcoeff, double lpexponent, int OrderDiff);
50 
51 void AddStreamlineTerm(TSquareMatrix2D* A, TFEFunction2D *uh1,
52  TFEFunction2D *uh2,
53  double lpcoeff, double lpexponent, int OrderDiff);
54 
55 void AddStreamlineTermPWConst(TSquareMatrix2D* A, TFEFunction2D *uh1,
56  TFEFunction2D *uh2,
57  double lpcoeff, double lpexponent, int OrderDiff);
58 
59 void AddDivergenceTerm(TSquareMatrix2D *A11,TSquareMatrix2D *A12,
61  double lpcoeff, double lpexponent, int OrderDiff);
62 
63 void CoupledMatVect(TSquareMatrix *A11, TSquareMatrix *A12, TSquareMatrix *A21,
64  TSquareMatrix *A22, TMatrix *B1, TMatrix *B2,
65  TMatrix *B1T, TMatrix *B2T,
66  TMatrix *C,
67  double *x, double *y);
68 
69 void MatVect_NSE4C(TSquareMatrix **A, TMatrix **B, double *x, double *y);
70 
71 void CoupledDefect(TSquareMatrix *A11, TSquareMatrix *A12, TSquareMatrix *A21,
72  TSquareMatrix *A22, TMatrix *B1, TMatrix *B2,
73  TMatrix *B1T, TMatrix *B2T,
74  TMatrix *C,
75  double *x, double *b, double *r);
76 
77 void Defect_NSE4C(TSquareMatrix **A, TMatrix **B, double *x, double *b, double *r);
78 
79 void AddStreamlineTerm(TSquareMatrix2D *G11,TSquareMatrix2D *G22,
81  double lpcoeff, double lpexponent, int OrderDiff);
82 
83 void AddStretchingTerm(TSquareMatrix2D **SQMATRICES, TFEFunction2D *u1, TFEFunction2D *u2,
84  double lpcoeff, double lpexponent, int OrderDiff);
85 
86 
87 double UltraLocalErrorSmooth(TFEFunction2D *uh, DoubleFunct2D *ExactU,
88  double lpcoeff, double lpexponent, int OrderDiff);
89 bool TestCell(TBaseCell *cell);
90 
91 void UltraLocalProjectionFunction(void* A, bool ForPressure);
92 
93 void UltraLocalProjectionStreamlinePLaplacian(TSquareMatrix2D* A,
94  TFEFunction2D *uh,
95  CoeffFct2D *Coeff);
96 
97 void LocalProjectionCoarseGridQ0(TFEFunction2D *uh, TFEFunction2D *uh_proj,
98  CoeffFct2D *Coeff, int convection_flag);
99 
100 void LocalProjectionCrossWindCoarseGridQ0(TDomain *Domain, int mg_level,
101  TFEFunction2D *uh,
102  TFEFunction2D *uh_proj,
103  CoeffFct2D *Coeff,
104  double *rhs, int convection_flag);
105 
106 
107 void AdaptivePostProcess(TFEFunction2D *FeFunction, double *PostSol, bool DirichletBC);
108 
109 
110 void AddALEStreamlineLPS(TSquareMatrix2D* A, int N_FeFunct, TFEFunction2D **FeFunct,
111  double lpcoeff, double lpexponent, int OrderDiff);
112 #else // __3D__
113 
114 void AddStreamlineTerm(TSquareMatrix3D* A, TFEFunction3D *uh1,
115  TFEFunction3D *uh2, TFEFunction3D *uh3,
116  double lpcoeff, double lpexponent, int OrderDiff);
117 
118 void UltraLocalProjection(TSquareMatrix3D* A,
119  double lpcoeff, double lpexponent, int OrderDiff);
120 
121 FE3D GetElement3D(TBaseCell *cell, int CoarseOrder);
122 
123 void UltraLocalProjection3D(void* A, bool ForPressure);
124 
125 double UltraLocalError3D(TFEFunction3D *uh, DoubleFunct3D *ExactU,
126  double lpcoeff, double lpexponent, int OrderDiff);
127 
128 
129 #endif // __3D__
130 
131 #endif // __LOCAL_PROJECTION__
Definition: SquareMatrix2D.h:20
Definition: SquareMatrix3D.h:20
Definition: Matrix.h:21
contains the boundary description, the virtual cell tree and macro grid
Definition: Domain.h:36
Definition: SquareMatrix.h:20
information for finite element data structure
Definition: BaseCell.h:25
Definition: FEFunction3D.h:25
Definition: FEFunction2D.h:24