ParMooN
 All Classes Functions Variables Friends Pages
BF_N_T_BDDF1_3D.h
1 // ***********************************************************************
2 // Brezzi-Douglas-Duran-Fortin element of first order on tetrahedra, 3D
3 // ***********************************************************************
4 
5 static double N_T_BDDF1_3D_CM[144] = {
6  0,-0,0,0,0,-0,0,0,-0,-1.666666667,0.3333333333,0.3333333333,
7  0,0,0,-1.666666667,0.3333333333,0.3333333333,0,0,0,0,0,-0,
8  -1.666666667,0.3333333333,0.3333333333,0,0,0,0,0,0,0,0,-0,
9  -0.3333333333,1.666666667,-0.3333333333,-0.3333333333,-0.3333333333,1.666666667,-0.3333333333,1.666666667,-0.3333333333,1.666666667,-0.3333333333,-0.3333333333,
10  0,0,0,2,0,-2,0,0,0,0,0,-0,
11  2,-2,0,0,0,0,0,0,0,0,0,-0,
12  -0,-0,0,0,-0,-0,0,-0,-0,2,-2,-0,
13  -0.3333333333,-0.3333333333,1.666666667,1.666666667,-0.3333333333,-0.3333333333,1.666666667,-0.3333333333,-0.3333333333,-0.3333333333,1.666666667,-0.3333333333,
14  2,0,-2,0,0,0,0,0,0,0,0,-0,
15  0,0,0,0,0,0,0,0,0,2,0,-2,
16  0,0,0,2,-2,0,0,0,0,0,0,-0,
17  1.666666667,-0.3333333333,-0.3333333333,-0.3333333333,1.666666667,-0.3333333333,-0.3333333333,-0.3333333333,1.666666667,-0.3333333333,-0.3333333333,1.666666667
18 };
19 
20 static void N_T_BDDF1_3D_Funct(double xi, double eta, double zeta,
21  double *values)
22 {
23  int nBF = 12; // number of basis functions
24  // monomials x-component, y-component and z-component
25  double mon_x[]={1,0,0,xi,0,0,eta,0,0,zeta,0,0};
26  double mon_y[]={0,1,0,0,xi,0,0,eta,0,0,zeta,0};
27  double mon_z[]={0,0,1,0,0,xi,0,0,eta,0,0,zeta};
28 
29  memset(values, 0.0, 3*nBF*SizeOfDouble); // 3 is the space dimension
30  for(int i=0; i<nBF; i++)
31  {
32  for(int j=0; j<nBF; j++)
33  {
34  values[i ] += N_T_BDDF1_3D_CM[i+j*nBF]*mon_x[j];
35  values[i+ nBF] += N_T_BDDF1_3D_CM[i+j*nBF]*mon_y[j];
36  values[i+2*nBF] += N_T_BDDF1_3D_CM[i+j*nBF]*mon_z[j];
37  }
38  }
39 }
40 
41 static void N_T_BDDF1_3D_DeriveXi(double xi, double eta, double zeta,
42  double *values)
43 {
44  int nBF = 12; // number of basis functions
45  // monomials x-component, y-component and z-component
46  double mon_x[]={0,0,0,1,0,0,0,0,0,0,0,0};
47  double mon_y[]={0,0,0,0,1,0,0,0,0,0,0,0};
48  double mon_z[]={0,0,0,0,0,1,0,0,0,0,0,0};
49 
50  memset(values, 0.0, 3*nBF*SizeOfDouble); // 3 is the space dimension
51  for(int i=0; i<nBF; i++)
52  {
53  for(int j=0; j<nBF; j++)
54  {
55  values[i ] += N_T_BDDF1_3D_CM[i+j*nBF]*mon_x[j];
56  values[i+ nBF] += N_T_BDDF1_3D_CM[i+j*nBF]*mon_y[j];
57  values[i+2*nBF] += N_T_BDDF1_3D_CM[i+j*nBF]*mon_z[j];
58  }
59  }
60 }
61 
62 static void N_T_BDDF1_3D_DeriveEta(double xi, double eta, double zeta,
63  double *values)
64 {
65  int nBF = 12; // number of basis functions
66  // monomials x-component, y-component and z-component
67  double mon_x[]={0,0,0,0,0,0,1,0,0,0,0,0};
68  double mon_y[]={0,0,0,0,0,0,0,1,0,0,0,0};
69  double mon_z[]={0,0,0,0,0,0,0,0,1,0,0,0};
70 
71  memset(values, 0.0, 3*nBF*SizeOfDouble); // 3 is the space dimension
72  for(int i=0; i<nBF; i++)
73  {
74  for(int j=0; j<nBF; j++)
75  {
76  values[i ] += N_T_BDDF1_3D_CM[i+j*nBF]*mon_x[j];
77  values[i+ nBF] += N_T_BDDF1_3D_CM[i+j*nBF]*mon_y[j];
78  values[i+2*nBF] += N_T_BDDF1_3D_CM[i+j*nBF]*mon_z[j];
79  }
80  }
81 }
82 
83 static void N_T_BDDF1_3D_DeriveZeta(double xi, double eta, double zeta,
84  double *values)
85 {
86  int nBF = 12; // number of basis functions
87  // monomials x-component, y-component and z-component
88  double mon_x[]={0,0,0,0,0,0,0,0,0,1,0,0};
89  double mon_y[]={0,0,0,0,0,0,0,0,0,0,1,0};
90  double mon_z[]={0,0,0,0,0,0,0,0,0,0,0,1};
91 
92  memset(values, 0.0, 3*nBF*SizeOfDouble); // 3 is the space dimension
93  for(int i=0; i<nBF; i++)
94  {
95  for(int j=0; j<nBF; j++)
96  {
97  values[i ] += N_T_BDDF1_3D_CM[i+j*nBF]*mon_x[j];
98  values[i+ nBF] += N_T_BDDF1_3D_CM[i+j*nBF]*mon_y[j];
99  values[i+2*nBF] += N_T_BDDF1_3D_CM[i+j*nBF]*mon_z[j];
100  }
101  }
102 }
103 
104 static void N_T_BDDF1_3D_DeriveXiXi(double xi, double eta, double zeta,
105  double *values)
106 {
107  int nBF = 12; // number of basis functions
108  memset(values, 0.0, 3*nBF*SizeOfDouble); // 3 is the space dimension
109 }
110 
111 static void N_T_BDDF1_3D_DeriveXiEta(double xi, double eta, double zeta,
112  double *values)
113 {
114  int nBF = 12; // number of basis functions
115  memset(values, 0.0, 3*nBF*SizeOfDouble); // 3 is the space dimension
116 }
117 
118 static void N_T_BDDF1_3D_DeriveXiZeta(double xi, double eta, double zeta,
119  double *values)
120 {
121  int nBF = 12; // number of basis functions
122  memset(values, 0.0, 3*nBF*SizeOfDouble); // 3 is the space dimension
123 }
124 
125 static void N_T_BDDF1_3D_DeriveEtaEta(double xi, double eta, double zeta,
126  double *values)
127 {
128  int nBF = 12; // number of basis functions
129  memset(values, 0.0, 3*nBF*SizeOfDouble); // 3 is the space dimension
130 }
131 
132 static void N_T_BDDF1_3D_DeriveEtaZeta(double xi, double eta, double zeta,
133  double *values)
134 {
135  int nBF = 12; // number of basis functions
136  memset(values, 0.0, 3*nBF*SizeOfDouble); // 3 is the space dimension
137 }
138 
139 static void N_T_BDDF1_3D_DeriveZetaZeta(double xi, double eta, double zeta,
140  double *values)
141 {
142  int nBF = 12; // number of basis functions
143  memset(values, 0.0, 3*nBF*SizeOfDouble); // 3 is the space dimension
144 }
145 
146 TBaseFunct3D *BF_N_T_BDDF1_3D_Obj =
147 new TBaseFunct3D(12, BF_N_T_BDDF1_3D, BFUnitTetrahedron,
148  N_T_BDDF1_3D_Funct, N_T_BDDF1_3D_DeriveXi,
149  N_T_BDDF1_3D_DeriveEta, N_T_BDDF1_3D_DeriveZeta,
150  N_T_BDDF1_3D_DeriveXiXi, N_T_BDDF1_3D_DeriveXiEta,
151  N_T_BDDF1_3D_DeriveXiZeta, N_T_BDDF1_3D_DeriveEtaEta,
152  N_T_BDDF1_3D_DeriveEtaZeta, N_T_BDDF1_3D_DeriveZetaZeta,
153  1, 1,
154  0, NULL, 3);
Definition: BaseFunct3D.h:27