ParMooN
 All Classes Functions Variables Friends Pages
BF_N_Q_RT0_2D.h
1 // ***********************************************************************
2 // Q0 Raviart-Thomas vector element, nonconforming , 2D
3 // History: 10.06.2010 implementation (Sashi)
4 // 01.07.2010 modification (Alfonso)
5 // ***********************************************************************
6 
7 // base function values
8 // vector function, orthoonal to edges,
9 // function i has
10 // * flux 1 through edge i
11 // * flux 0 through other edges
12 static void N_Q_RT0_2D_Funct(double xi, double eta, double *values)
13 {
14  // first component
15  values[0]= 0.;
16  values[1]= 0.25*(xi+1.);
17  values[2]= 0.;
18  values[3]= 0.25*(xi-1.);
19 
20  // second component
21  values[4]= 0.25*(eta-1.);
22  values[5]= 0.;
23  values[6]= 0.25*(eta+1.);
24  values[7]= 0.;
25 }
26 
27 // values of the derivatives in xi direction
28 static void N_Q_RT0_2D_DeriveXi(double xi, double eta, double *values)
29 {
30  // first component
31  values[0]= 0.;
32  values[1]= .25;
33  values[2]= 0.;
34  values[3]= .25;
35 
36  // second component
37  values[4]= 0;
38  values[5]= 0.;
39  values[6]= 0;
40  values[7]= 0.;
41 }
42 
43 // values of the derivatives in eta direction
44 static void N_Q_RT0_2D_DeriveEta(double xi, double eta, double *values)
45 {
46  // first component
47  values[0]= 0.;
48  values[1]= 0.;
49  values[2]= 0.;
50  values[3]= 0.;
51 
52  // second component
53  values[4]= .25;
54  values[5]= 0;
55  values[6]= .25;
56  values[7]= 0;
57 }
58 
59 // values of derivatives in xi-xi direction
60 static void N_Q_RT0_2D_DeriveXiXi(double xi, double eta, double *values)
61 {
62  // all second derivatives vanish
63  memset(values, 0.0, 2*4*SizeOfDouble); // 2 is the space dimension
64 }
65 
66 // values of derivatives in eta-eta direction
67 static void N_Q_RT0_2D_DeriveEtaEta(double xi, double eta, double *values)
68 {
69  // all second derivatives vanish
70  memset(values, 0.0, 2*4*SizeOfDouble); // 2 is the space dimension
71 }
72 
73 // values of derivatives in xi-eta direction
74 static void N_Q_RT0_2D_DeriveXiEta(double xi, double eta, double *values)
75 {
76  // all second derivatives vanish
77  memset(values, 0.0, 2*4*SizeOfDouble); // 2 is the space dimension
78 }
79 
80 // ***********************************************************************
81 
82 TBaseFunct2D *BF_N_Q_RT0_2D_Obj = new TBaseFunct2D
83  (4, BF_N_Q_RT0_2D, BFUnitSquare,
84  N_Q_RT0_2D_Funct, N_Q_RT0_2D_DeriveXi,
85  N_Q_RT0_2D_DeriveEta, N_Q_RT0_2D_DeriveXiXi,
86  N_Q_RT0_2D_DeriveXiEta, N_Q_RT0_2D_DeriveEtaEta, 2, 1,
87  0, NULL, 2);
Definition: BaseFunct2D.h:27