ParMooN
 All Classes Functions Variables Friends Pages
Sin3.h
1 // ======================================================================
2 // instationary problem
3 // ======================================================================
4 
6 // example file
7 // ========================================================================
8 
9 #define __SIN3__
10 
11 void ExampleFile()
12 {
13  OutPut("Example: Sin3.h" << endl);
14 }
15 // exact solution
16 void Exact(double x, double y, double *values)
17 {
18  double t;
19 
20  t = TDatabase::TimeDB->CURRENTTIME;
21 
22  values[0] = sin(t)*(sin(2*Pi*x)*sin(2*Pi*y)+1);
23  values[1] = sin(t)*2*Pi*cos(2*Pi*x)*sin(2*Pi*y);
24  values[2] = sin(t)*2*Pi*sin(2*Pi*x)*cos(2*Pi*y);
25  values[3] = 0;
26 }
27 
28 // kind of boundary condition (for FE space needed)
29 void BoundCondition(int BdComp, double t, BoundCond &cond)
30 {
31  if (TDatabase::ParamDB->SOLD_PARAMETER_TYPE== FEM_FCT)
32  cond = NEUMANN;
33  else
34  cond = DIRICHLET;
35 }
36 
37 // value of boundary condition
38 void BoundValue(int BdComp, double Param, double &value)
39 {
40  double t;
41 
42  t = TDatabase::TimeDB->CURRENTTIME;
43  value = sin(t);
44 }
45 
46 // initial conditon
47 void InitialCondition(double x, double y, double *values)
48 {
49  double t;
50 
51  t = TDatabase::TimeDB->CURRENTTIME;
52 
53  values[0] = sin(t)*(sin(2*Pi*x)*sin(2*Pi*y)+1);
54 }
55 
56 
57 void BilinearCoeffs(int n_points, double *X, double *Y,
58  double **parameters, double **coeffs)
59 {
60  double eps=1/TDatabase::ParamDB->PE_NR;
61  double b1=1, b2=2, c=1;
62  int i;
63  double *coeff, *param;
64  double x, y;
65  double t = TDatabase::TimeDB->CURRENTTIME;
66 
67  for(i=0;i<n_points;i++)
68  {
69  coeff = coeffs[i];
70  param = parameters[i];
71 
72  x = X[i];
73  y = Y[i];
74 
75  coeff[0] = eps;
76  coeff[1] = b1;
77  coeff[2] = b2;
78  coeff[3] = c;
79 
80  coeff[4] = cos(t)*(sin(2*Pi*x)*sin(2*Pi*y)+1)
81  - eps * sin(t)*4*Pi*Pi*(-sin(2*Pi*x)*sin(2*Pi*y)-sin(2*Pi*x)*sin(2*Pi*y))
82  + b1 * sin(t)*2*Pi*cos(2*Pi*x)*sin(2*Pi*y)
83  + b2 * sin(t)*2*Pi*sin(2*Pi*x)*cos(2*Pi*y)
84  + c * sin(t)*(sin(2*Pi*x)*sin(2*Pi*y)+1);
85  }
86 }
static TTimeDB * TimeDB
Definition: Database.h:1137
static TParamDB * ParamDB
Definition: Database.h:1134