ParMooN
 All Classes Functions Variables Friends Pages
ShearFlow.h
1 void ExampleFile()
2 {
3  OutPut("Example: ShearFlow_Oldroyd_DEVSS.h" << endl) ;
4 }
5 
6 // ========================================================================
7 // exact solution
8 // ========================================================================
9 void ExactU1(double x, double y, double *values)
10 {
11  values[0] = 1-y*y;
12  values[1] = 0;
13  values[2] = -2*y;
14  values[3] = -2.0;
15 }
16 
17 void ExactU2(double x, double y, double *values)
18 {
19  values[0] = 0;
20  values[1] = 0;
21  values[2] = 0;
22  values[3] = 0;
23 }
24 
25 void ExactP(double x, double y, double *values)
26 {
27  values[0] = -x;
28  values[1] = -1.0;
29  values[2] = 0;
30  values[3] = 0;
31 }
32 
33 // ========================================================================
34 // boundary conditions
35 // ========================================================================
36 void BoundCondition(int i, double t, BoundCond &cond)
37 {
38  cond = DIRICHLET;
39 }
40 
41 void U1BoundValue(int BdComp, double Param, double &value)
42 {
43  switch(BdComp)
44  {
45  case 0: value=1;
46  break;
47  case 1: value=1-pow(Param,2);
48  break;
49  case 2: value=0;
50  break;
51  case 3: value=1-pow((1-Param),2);
52  break;
53  default: cout << "wrong boundary part number" << endl;
54  break;
55  }
56 }
57 
58 void U2BoundValue(int BdComp, double Param, double &value)
59 {
60  switch(BdComp)
61  {
62  case 0: value=0;
63  break;
64  case 1: value=0;
65  break;
66  case 2: value=0;
67  break;
68  case 3: value=0;
69  break;
70  default: cout << "wrong boundary part number" << endl;
71  break;
72  }
73 }
74 
75 // ========================================================================
76 // coefficients for Stokes form: A, B1, B2, f1, f2
77 // ========================================================================
78 void LinCoeffs(int n_points, double *X, double *Y,
79  double **parameters, double **coeffs)
80 {
81  double eps = 1/TDatabase::ParamDB->RE_NR, beta = TDatabase::ParamDB->P3, nu = 1/TDatabase::ParamDB->WEI_NR;
82  int i;
83  double *coeff, y, x, nondim;
84 
85  if (TDatabase::ParamDB->TENSOR_TYPE == 1)
86  nondim = beta*eps;
87  else if (TDatabase::ParamDB->TENSOR_TYPE == 2)
88  nondim = eps;
89 
90  for(i=0;i<n_points;i++)
91  {
92  coeff = coeffs[i];
93  y = Y[i];
94  x = X[i];
95  coeff[0] = nondim;
96  coeff[1] = 2*eps - 1.0; // f1
97  coeff[2] = 0; // f2
98  }
99 }
100 
101 // ========================================================================
102 // exact solution
103 // ========================================================================
104 void ExactS1(double x, double y, double *values)
105 {
106  values[0] = 1.0 + 8*TDatabase::ParamDB->WEI_NR*TDatabase::ParamDB->WEI_NR*pow(y,2);
107  values[1] = 0;
108  values[2] = 16*TDatabase::ParamDB->WEI_NR*TDatabase::ParamDB->WEI_NR*y;
109  values[3] = 16*TDatabase::ParamDB->WEI_NR*TDatabase::ParamDB->WEI_NR;
110 }
111 
112 void ExactS2(double x, double y, double *values)
113 {
114  values[0] = -2*y*TDatabase::ParamDB->WEI_NR;
115  values[1] = 0;
116  values[2] = -2*TDatabase::ParamDB->WEI_NR;
117  values[3] = 0;
118 }
119 
120 
121 void ExactS3(double x, double y, double *values)
122 {
123  values[0] = 1.0;
124  values[1] = 0;
125  values[2] = 0;
126  values[3] = 0;
127 }
128 
129 // ========================================================================
130 // boundary conditions
131 // ========================================================================
132 void BoundCondition_CST(int i, double t, BoundCond &cond)
133 {
134  cond = DIRICHLET;
135 
136 }
137 
138 void S1BoundValue(int BdComp, double Param, double &value)
139 {
140  double Wei = TDatabase::ParamDB->WEI_NR;
141  switch(BdComp)
142  {
143  case 0: value=1.0;
144  break;
145  case 1: value=1.0 + 8*Wei*Wei*pow(Param,2);
146  break;
147  case 2: value=1.0 + 8*Wei*Wei;
148  break;
149  case 3: value=1.0 + 8*Wei*Wei*pow(1-Param,2);
150  break;
151  default: cout << "wrong boundary part number" << endl;
152  break;
153  }
154  return;
155 }
156 
157 
158 
159 void S2BoundValue(int BdComp, double Param, double &value)
160 {
161  double Wei = TDatabase::ParamDB->WEI_NR;
162  switch(BdComp)
163  {
164  case 0: value=0;
165  break;
166  case 1: value=-2*Wei*Param;
167  break;
168  case 2: value=-2*Wei;
169  break;
170  case 3: value=-2*Wei*(1-Param);
171  break;
172  default: cout << "wrong boundary part number" << endl;
173  break;
174  }
175  return;
176 }
177 
178 
179 
180 
181 void S3BoundValue(int BdComp, double Param, double &value)
182 {
183  switch(BdComp)
184  {
185  case 0: value=1.0;
186  break;
187  case 1: value=1.0;
188  break;
189  case 2: value=1.0;
190  break;
191  case 3: value=1.0;
192  break;
193  default: cout << "wrong boundary part number" << endl;
194  break;
195  }
196  return;
197 }
198 
199 // ========================================================================
200 // coefficients for Stokes form: A, B1, B2, f1, f2
201 // ========================================================================
202 void LinCoeffs_CST(int n_points, double *X, double *Y,
203  double **parameters, double **coeffs)
204 {
205  double nu=1./TDatabase::ParamDB->WEI_NR;
206  int i;
207  double *coeff, *param, x, y;
208  double u1, u1x, u1y, u2, u2x, u2y, tau1, tau2, tau3, tau1x, tau1y, tau2x, tau2y, tau3x, tau3y;
209 
210  for(i=0;i<n_points;i++)
211  {
212  coeff = coeffs[i];
213 
214  x = X[i];
215  y = Y[i];
216 
217  coeff[0] = nu;
218  coeff[1] = nu; // f1
219  coeff[2] = 0; // f2
220  coeff[3] = nu; // f3
221 
222 
223 
224 
225  }
226 }
227 
228 // ========================================================================
229 // exact solution
230 // ========================================================================
231 void ExactD1(double x, double y, double *values)
232 {
233  values[0] = 0;
234  values[1] = 0;
235  values[2] = 0;
236  values[3] = 0;
237 }
238 
239 void ExactD2(double x, double y, double *values)
240 {
241  values[0] = -y;
242  values[1] = 0;
243  values[2] = -1.0;
244  values[3] = 0;
245 }
246 
247 void ExactD3(double x, double y, double *values)
248 {
249  values[0] = 0;
250  values[1] = 0;
251  values[2] = 0;
252  values[3] = 0;
253 }
254 
255 // ========================================================================
256 // boundary conditions
257 // ========================================================================
258 void BoundCondition_DFT(int i, double t, BoundCond &cond)
259 {
260  cond = DIRICHLET;
261 
262 }
263 
264 void D1BoundValue(int BdComp, double Param, double &value)
265 {
266  switch(BdComp)
267  {
268  case 0: value=0;
269  break;
270  case 1: value=0;
271  break;
272  case 2: value=0;
273  break;
274  case 3: value=0;
275  break;
276  default: cout << "wrong boundary part number" << endl;
277  break;
278  }
279  return;
280 }
281 
282 void D2BoundValue(int BdComp, double Param, double &value)
283 {
284  switch(BdComp)
285  {
286  case 0: value=0;
287  break;
288  case 1: value=-Param;
289  break;
290  case 2: value=-1.0;
291  break;
292  case 3: value=-(1-Param);
293  break;
294  default: cout << "wrong boundary part number" << endl;
295  break;
296  }
297  return;
298 }
299 
300 
301 
302 void D3BoundValue(int BdComp, double Param, double &value)
303 {
304 switch(BdComp)
305  {
306  case 0: value=0;
307  break;
308  case 1: value=0;
309  break;
310  case 2: value=0;
311  break;
312  case 3: value=0;
313  break;
314  default: cout << "wrong boundary part number" << endl;
315  break;
316  }
317  return;
318 }
319 
320 
321 void LinCoeffs_DFT(int n_points, double *X, double *Y,
322  double **parameters, double **coeffs)
323 {
324  int i;
325  double *coeff, x, y, *param;
326  double u1x, u1y, u2x, u2y;
327 
328  for(i=0;i<n_points;i++)
329  {
330  coeff = coeffs[i];
331 
332  x = X[i];
333  y = Y[i];
334 
335 // param = parameters[i];
336 //
337 // u1x = param[2];
338 // u1y = param[4];
339 // u2x = param[3];
340 // u2y = param[5];
341 
342  coeff[0] = 1;
343 // coeff[1] = u1x;
344 // coeff[2] = (u1y+u2x)*0.5;
345 // coeff[3] = u2y;
346 
347  }
348 }
double RE_NR
Definition: Database.h:313
static TParamDB * ParamDB
Definition: Database.h:1134