ParMooN
 All Classes Functions Variables Friends Pages
ConvDiff3D.h
1 // ======================================================================
2 // %W% %G%
3 //
4 // common declaration for all 3D convection diffusion problems
5 // ======================================================================
6 
7 #ifndef __CONVDIFF3D__
8 #define __CONVDIFF3D__
9 
10 // part for standard Galerkin
11 static int N_Terms = 4;
12 static MultiIndex3D Derivatives[4] = { D100, D010, D001, D000 };
13 static int SpacesNumbers[4] = { 0, 0, 0, 0 };
14 
15 // part for SDFEM (without 2nd derivatives)
16 static int N_Terms_SD = 4;
17 static MultiIndex3D Derivatives_SD[4] = { D100, D010, D001, D000};
18 static int SpacesNumbers_SD[4] = { 0, 0, 0, 0 };
19 
20 /*
21 // part for UPWIND with lumping of reaction term and rhs
22 int N_Terms_UPW1 = 2;
23 MultiIndex3D Derivatives_UPW1[2] = { D10, D01 };
24 int SpacesNumbers_UPW1[2] = { 0, 0 };
25 */
26 
27 // part for UPWIND without lumping of reaction term and rhs
28 static int N_Terms_UPW2 = 4;
29 static MultiIndex3D Derivatives_UPW2[4] = { D100, D010, D001, D000 };
30 static int SpacesNumbers_UPW2[4] = { 0, 0, 0, 0 };
31 
32 // part for all
33 static int N_Matrices = 1;
34 static int RowSpace[1] = { 0 };
35 static int ColumnSpace[1] = { 0 };
36 static int N_Rhs = 1;
37 static int RhsSpace[1] = { 0 };
38 
39 static MultiIndex3D AllDerivatives[4] = { D000, D100, D010, D001 };
40 
41 void BilinearAssemble(double Mult, double *coeff, double hK,
42 double **OrigValues, int *N_BaseFuncts,
43 double ***LocMatrices, double **LocRhs);
44 
45 void BilinearAssemble_SD(double Mult, double *coeff, double hK,
46 double **OrigValues, int *N_BaseFuncts,
47 double ***LocMatrices, double **LocRhs);
48 
49 /*
50 void BilinearAssemble_UPW1(double Mult, double *coeff, double hK,
51  double **OrigValues, int *N_BaseFuncts,
52  double ***LocMatrices, double **LocRhs);
53 */
54 
55 void BilinearAssemble_UPW2(double Mult, double *coeff, double hK,
56 double **OrigValues, int *N_BaseFuncts,
57 double ***LocMatrices, double **LocRhs);
58 
59 void BilinearAssemble_SOLD(double Mult, double *coeff, double *param,
60 double hK,
61 double **OrigValues, int *N_BaseFuncts,
62 double ***LocMatrices, double **LocRhs);
63 
64 void BilinearAssemble_SOLD_Orthogonal(double Mult, double *coeff,
65 double *param, double hK,
66 double **OrigValues, int *N_BaseFuncts,
67 double ***LocMatrices, double **LocRhs);
68 
69 // parameters for DC/CD shock capturing scheme
70 void DC_CD_Params(double *in, double *out);
71 
72 int DC_CD_N_FESpaces = 1;
73 int DC_CD_N_Fct = 2;
74 int DC_CD_N_ParamFct = 1;
75 int DC_CD_N_FEValues = 2;
76 int DC_CD_N_Params = 2;
77 int DC_CD_FEFctIndex[2] = { 0, 1 };
78 MultiIndex3D DC_CD_FEMultiIndex[2] = { D000, D000 };
79 ParamFct *DC_CD_Fct[1] = { DC_CD_Params };
80 int DC_CD_BeginParam[1] = { 0 };
81 
82 // parameters for MBE shock capturing scheme
83 void MBE_Params(double *in, double *out);
84 
85 int MBE_N_FESpaces = 1;
86 int MBE_N_Fct = 1;
87 int MBE_N_ParamFct = 1;
88 int MBE_N_FEValues = 4;
89 int MBE_N_Params = 4;
90 int MBE_FEFctIndex[4] = { 0, 0, 0, 0 };
91 MultiIndex3D MBE_FEMultiIndex[4] = { D000, D100, D010, D001 };
92 ParamFct *MBE_Fct[1] = { MBE_Params };
93 int MBE_BeginParam[1] = { 0 };
94 
95 // parameters for SC_2 shock capturing scheme
96 void SC_2_Params(double *in, double *out);
97 
98 int SC_2_N_FESpaces = 2;
99 int SC_2_N_Fct = 3;
100 int SC_2_N_ParamFct = 1;
101 int SC_2_N_FEValues = 5;
102 int SC_2_N_Params = 5;
103 int SC_2_FEFctIndex[5] = { 0, 1, 2, 2, 2 };
104 MultiIndex3D SC_2_FEMultiIndex[5] = { D000, D000, D100, D010, D001 };
105 ParamFct *SC_2_Fct[1] = { SC_2_Params };
106 int SC_2_BeginParam[1] = { 0 };
107 
108 // parameters for SOLD schemes
109 void SOLD_Params(double *in, double *out);
110 
111 int SOLD_N_FESpaces = 2;
112 int SOLD_N_Fct = 3;
113 int SOLD_N_ParamFct = 1;
114 int SOLD_N_FEValues = 6;
115 int SOLD_N_Params = 6;
116 int SOLD_FEFctIndex[6] = { 0, 0, 0, 0, 1, 2 };
117 MultiIndex3D SOLD_FEMultiIndex[6] = { D000, D100, D010, D001, D000, D000 };
118 ParamFct *SOLD_Fct[1] = { SOLD_Params };
119 int SOLD_BeginParam[1] = { 0 };
120 
121 
122 #endif // __CONVDIFF3D__