ParMooN
 All Classes Functions Variables Friends Pages
Poiseuille.h
1 // Navier-Stokes problem, Poiseuille-Problem
2 //
3 // u(x,y) = (4*y*(1-y), 0)
4 // p(x,y) = x-1/2
5 
6 void ExampleFile()
7 {
8  OutPut("Example: Poiseuille.h" << endl) ;
9 }
10 
11 // ========================================================================
12 // exact solution
13 // ========================================================================
14 void ExactU1(double x, double y, double *values)
15 {
16  values[0] = 4*y*(1-y);
17  values[1] = 0;
18  values[2] = 4-8*y;
19  values[3] = -8;
20 }
21 
22 void ExactU2(double x, double y, double *values)
23 {
24  values[0] = 0;
25  values[1] = 0;
26  values[2] = 0;
27  values[3] = 0;
28 }
29 
30 void ExactP(double x, double y, double *values)
31 {
32  values[0] = x-0.5;
33  values[1] = 1;
34  values[2] = 0;
35  values[3] = 0;
36 }
37 
38 // ========================================================================
39 // boundary conditions
40 // ========================================================================
41 void BoundCondition(int i, double t, BoundCond &cond)
42 {
43  cond = DIRICHLET;
44 }
45 
46 void U1BoundValue(int BdComp, double Param, double &value)
47 {
48  switch(BdComp)
49  {
50  case 0: value=0;
51  break;
52  case 1: value=4*Param*(1-Param);
53  break;
54  case 2: value=0;
55  break;
56  case 3: value=4*Param*(1-Param);
57  break;
58  default: cout << "wrong boundary part number" << endl;
59  break;
60  }
61 }
62 
63 void U2BoundValue(int BdComp, double Param, double &value)
64 {
65  switch(BdComp)
66  {
67  case 0: value=0;
68  break;
69  case 1: value=0;
70  break;
71  case 2: value=0;
72  break;
73  case 3: value=0;
74  break;
75  default: cout << "wrong boundary part number" << endl;
76  break;
77  }
78 }
79 
80 // ========================================================================
81 // coefficients for Stokes form: A, B1, B2, f1, f2
82 // ========================================================================
83 void LinCoeffs(int n_points, double *x, double *y,
84  double **parameters, double **coeffs)
85 {
86  static double eps = 1./TDatabase::ParamDB->RE_NR;
87  int i;
88  double *coeff;
89 
90  for(i=0;i<n_points;i++)
91  {
92  coeff = coeffs[i];
93 
94  coeff[0] = eps;
95  coeff[1] = 1+8*eps; // f1
96  coeff[2] = 0; // f2
97  }
98 }
99 
100 // ========================================================================
101 // coefficients for Stokes form: A, B1, B2, f1, f2
102 // ========================================================================
103 void NonLinCoeffs(int n_points, double *x, double *y,
104  double **parameters, double **coeffs)
105 {
106  static double eps = 1./TDatabase::ParamDB->RE_NR;
107  int i;
108  double *coeff, *param;
109 
110  for(i=0;i<n_points;i++)
111  {
112  coeff = coeffs[i];
113  param = parameters[i];
114 
115  coeff[0] = eps;
116  coeff[1] = param[0];
117  coeff[2] = param[1];
118  }
119 }
120 
double RE_NR
Definition: Database.h:313
static TParamDB * ParamDB
Definition: Database.h:1134