ParMooN
 All Classes Functions Variables Friends Pages
TNSE3D_ParamRout.h
1 // ======================================================================
2 // @(#)TNSE3D_ParamRout.h 1.2 05/05/00
3 //
4 // common declaration for all time dependent Navier-Stokes problems
5 // ======================================================================
6 
7 #ifndef __TNSE3D_PARAMROUT__
8 #define __TNSE3D_PARAMROUT__
9 
10 // ======================================================================
11 // setting for error calculation for all types
12 // ======================================================================
13 MultiIndex3D TimeNSAllDerivatives[4] = { D000, D100, D010, D001 };
14 
15 // ========================================================================
16 // parameter routines
17 // ========================================================================
18 
19 // ========================================================================
20 // parameters: u1old, u2old, u3old
21 // ========================================================================
22 void TimeNSParamsVelo3D(double *in, double *out);
23 
24 int TimeNSN_FESpacesVelo = 1;
25 int TimeNSN_FctVelo = 3;
26 int TimeNSN_ParamFctVelo = 1;
27 int TimeNSN_FEValuesVelo = 3;
28 int TimeNSN_ParamsVelo = 3;
29 int TimeNSFEFctIndexVelo[3] = { 0, 1, 2 };
30 MultiIndex3D TimeNSFEMultiIndexVelo[3] = { D000, D000, D000 };
31 ParamFct *TimeNSFctVelo[1] = { TimeNSParamsVelo3D };
32 int TimeNSBeginParamVelo[1] = { 0 };
33 
34 // ========================================================================
35 // parameters: u1old, u2old, gradient(u1), gradient(u2)
36 // ========================================================================
37 void TimeNSParamsVelo_GradVelo3D(double *in, double *out);
38 
39 int TimeNSN_FESpacesVelo_GradVelo = 1;
40 int TimeNSN_FctVelo_GradVelo = 3;
41 int TimeNSN_ParamFctVelo_GradVelo = 1;
42 int TimeNSN_FEValuesVelo_GradVelo = 12;
43 int TimeNSN_ParamsVelo_GradVelo = 15;
44 int TimeNSFEFctIndexVelo_GradVelo[12] = { 0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2};
45 MultiIndex3D TimeNSFEMultiIndexVelo_GradVelo[12] = { D000, D000, D000,
46  D100, D100, D100,
47  D010, D010, D010,
48  D001, D001, D001};
49 ParamFct *TimeNSFctVelo_GradVelo[1] = { TimeNSParamsVelo_GradVelo3D };
50 int TimeNSBeginParamVelo_GradVelo[1] = { 0 };
51 
52 // ========================================================================
53 // parameters: u1old, u2old, u3old
54 // all partial derivatives
55 // convolution of u1old, u2old, u3old
56 // ========================================================================
57 void TimeNSParamsVelo_GradVelo_ConvVelo3D(double *in, double *out);
58 
59 int TimeNSN_FESpacesVelo_GradVelo_ConvVelo = 2;
60 int TimeNSN_FctVelo_GradVelo_ConvVelo = 6;
61 int TimeNSN_ParamFctVelo_GradVelo_ConvVelo = 1;
62 int TimeNSN_FEValuesVelo_GradVelo_ConvVelo = 15;
63 int TimeNSN_ParamsVelo_GradVelo_ConvVelo = 16;
64 int TimeNSFEFctIndexVelo_GradVelo_ConvVelo[15] = { 0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2,
65  3, 4, 5};
66 MultiIndex3D TimeNSFEMultiIndexVelo_GradVelo_ConvVelo[15] = { D000, D000, D000,
67  D100, D100, D100,
68  D010, D010, D010,
69  D001, D001, D001,
70  D000, D000, D000};
71 ParamFct *TimeNSFctVelo_GradVelo_ConvVelo[1] = { TimeNSParamsVelo_GradVelo_ConvVelo3D };
72 int TimeNSBeginParamVelo_GradVelo_ConvVelo[1] = { 0 };
73 
74 
75 
76 /*// ========================================================================
77 // Galdi/Layton with convolution, without g_\delta \ast u
78 // ========================================================================
79 void TimeNSParamsGL00Convolution(double *in, double *out);
80 int TimeNSN_FESpacesGL00Convolution = 2;
81 int TimeNSN_FctGL00Convolution = 5;
82 int TimeNSN_ParamFctGL00Convolution = 1;
83 int TimeNSN_FEValuesGL00Convolution = 9;
84 int TimeNSN_ParamsGL00Convolution = 9;
85 int TimeNSFEFctIndexGL00Convolution[9] = { 0, 1, 0, 1, 0, 1, 2, 3, 4 };
86 MultiIndex3D TimeNSFEMultiIndexGL00Convolution[9] = { D000, D000, D100, D100, D010, D010,
87  D000, D000, D000};
88 ParamFct *TimeNSFctGL00Convolution[1] = { TimeNSParamsGL00Convolution3D };
89 int TimeNSBeginParamGL00Convolution[1] = { 0 };
90 */
91 /*void TimeNSParamsGL00AuxProblemPaper2(double *in, double *out);
92 int TimeNSN_FESpacesGL00AuxProblemPaper2 = 1;
93 int TimeNSN_FctGL00AuxProblemPaper2 = 8;
94 int TimeNSN_ParamFctGL00AuxProblemPaper2 = 1;
95 int TimeNSN_FEValuesGL00AuxProblemPaper2 = 13;
96 int TimeNSN_ParamsGL00AuxProblemPaper2 = 11;
97 int TimeNSFEFctIndexGL00AuxProblemPaper2[13] = { 0, 1, 0, 1, 0, 1, 2, 3, 4, 5, 6, 6, 7};
98 MultiIndex3D TimeNSFEMultiIndexGL00AuxProblemPaper2[13] = { D00, D00, D10, D10, D01, D01,
99  D00, D00, D00, D10, D10, D01, D01};
100 ParamFct *TimeNSFctGL00AuxProblemPaper2[1] = { TimeNSParamsGL00AuxProblemPaper2 };
101 int TimeNSBeginParamGL00AuxProblemPaper2[1] = { 0 };
102 */
103 
104 // ========================================================================
105 // parameters: u, grad u, G^H
106 // ========================================================================
107 void TimeNSParamsVelo_GradVelo_LargeScale3D(double *in, double *out);
108 
109 int TimeNSN_FESpacesVelo_GradVelo_LargeScale = 4;
110 int TimeNSN_FctVelo_GradVelo_LargeScale = 10;
111 int TimeNSN_ParamFctVelo_GradVelo_LargeScale = 1;
112 int TimeNSN_FEValuesVelo_GradVelo_LargeScale = 19;
113 int TimeNSN_ParamsVelo_GradVelo_LargeScale = 22;
114 int TimeNSFEFctIndexVelo_GradVelo_LargeScale[19] = { 0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2,
115  3, 4, 5, 6, 7, 8, 9};
116 MultiIndex3D TimeNSFEMultiIndexVelo_GradVelo_LargeScale[19] = { D000, D000, D000,
117  D100, D100, D100,
118  D010, D010, D010,
119  D001, D001, D001,
120  D000, D000, D000,
121  D000, D000, D000,
122  D000};
123 ParamFct *TimeNSFctVelo_GradVelo_LargeScale[1] = { TimeNSParamsVelo_GradVelo_LargeScale3D };
124 int TimeNSBeginParamVelo_GradVelo_LargeScale[1] = { 0 };
125 
126 //================used for VMS3D=============================
127 void TimeNSParamsVelo_GradVelo_VMS3D(double *in, double *out);
128 int TimeNSN_FESpacesVelo_GradVelo_VMS3D = 1; //number of fe spaces passed
129 int TimeNSN_FctVelo_GradVelo_VMS3D = 3; // number of fe functions
130 int TimeNSN_ParamFctVelo_GradVelo_VMS3D = 1; // always starts with 1
131 int TimeNSN_FEValuesVelo_GradVelo_VMS3D = 12; // u_1, u_2, u_3,u_1_x,u_2_x,u_3_x,u_1_y,u_2_y,u_3_y,u_1_z,u_2_z,u_3_z
132 int TimeNSN_ParamsVelo_GradVelo_VMS3D = 12; // same as above
133 int TimeNSFEFctIndexVelo_GradVelo_VMS3D[12] = { 0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2 }; // componets of velo
134 MultiIndex3D TimeNSFEMultiIndexVelo_GradVelo_VMS3D[12] = { D000, D000, D000, D100, D100, D100, D010, D010, D010, D001, D001, D001 };
135 ParamFct* TimeNSFctVelo_GradVelo_VMS3D[1] = { TimeNSParamsVelo_GradVelo_VMS3D };
136 int TimeNSBeginParamVelo_GradVelo_VMS3D[1] = { 0 };
137 //=========================================================
138 
139 //====================used for ALEVMS3D============================
140 
141 void TimeNSParamsVelo_GradVelo_VMS3D_ALE(double *in, double *out);
142 int TimeNSN_FESpacesVelo_GradVelo_VMS3D_ALE = 2; //velocity and grid fespace
143 int TimeNSN_FctVelo_GradVelo_VMS3D_ALE = 6; // u1,u2,u3,mesh1,mesh2,mesh3
144 int TimeNSN_ParamFctVelo_GradVelo_VMS3D_ALE = 1; // always starts with 1
145 int TimeNSN_FEValuesVelo_GradVelo_VMS3D_ALE = 15; // u_1, u_2, u_3,
146  //u_1_x,u_2_x,u_3_x,
147  //u_1_y,u_2_y,u_3_y,
148  //u_1_z,u_2_z,u_3_z
149  // w_1,w_2,w_3
150 
151 int TimeNSN_ParamsVelo_GradVelo_VMS3D_ALE = 15; // same as above
152 int TimeNSFEFctIndexVelo_GradVelo_VMS3D_ALE[15] = { 0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2 , 3, 4, 5}; // componets of velo
153 MultiIndex3D TimeNSFEMultiIndexVelo_GradVelo_VMS3D_ALE[15] = { D000, D000, D000,
154  D100, D100, D100,
155  D010, D010, D010,
156  D001, D001, D001,
157  D000, D000, D000};
158  // u_1, u_2, u_3,
159  // u_1_x,u_2_x,u_3_x,
160  // u_1_y,u_2_y,u_3_y,
161  // u_1_z,u_2_z,u_3_z
162  // w_1,w_2,w_3
163 
164 ParamFct* TimeNSFctVelo_GradVelo_VMS3D_ALE[1] = { TimeNSParamsVelo_GradVelo_VMS3D_ALE };
165 int TimeNSBeginParamVelo_GradVelo_VMS3D_ALE[1] = { 0 };
166 //=======================================================================
167 
168 // ========================================================================
169 // parameters for VMS
170 // ========================================================================
171 void TimeNSParams_VMS_SmallRhs3D(double *in, double *out);
172 
173 int TimeNSN_FESpaces_VMS_SmallRhs = 4;
174 int TimeNSN_Fct_VMS_SmallRhs = 7;
175 int TimeNSN_ParamFct_VMS_SmallRhs = 1;
176 int TimeNSN_FEValues_VMS_SmallRhs = 25;
177 int TimeNSN_Params_VMS_SmallRhs = 25;
178 int TimeNSFEFctIndex_VMS_SmallRhs[25] = { 0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2,
179  3, 4, 5, 3, 4, 5, 3, 4, 5, 3, 4, 5,
180  6};
181 MultiIndex3D TimeNSFEMultiIndex_VMS_SmallRhs[25] = { D000, D000, D000,
182  D100, D100, D100,
183  D010, D010, D010,
184  D001, D001, D001,
185  D000, D000, D000,
186  D100, D100, D100,
187  D010, D010, D010,
188  D001, D001, D001,
189  D000 };
190 ParamFct *TimeNSFct_VMS_SmallRhs[1] = { TimeNSParams_VMS_SmallRhs3D };
191 int TimeNSBeginParam_VMS_SmallRhs[1] = { 0 };
192 
193 // ========================================================================
194 // boundary values for higher order fe in VMS
195 // ========================================================================
196 
197 void ho_BoundCondition(double x, double y, double z, BoundCond &cond)
198 {
199  cond = DIRICHLET;
200 }
201 
202 void ho_BoundValue(double x, double y, double z, double &value)
203 {
204  value = 0;
205 }
206 
207 #endif
208 
209 
210 
211 
212