Rheolef  7.1
an efficient C++ finite element environment
P1.cc
Go to the documentation of this file.
1 // file automatically generated by "../../../rheolef/fem/lib/basis_symbolic_cxx.cc"
22 #include "P1.h"
23 #include "piola_fem_lagrange.h"
24 namespace rheolef {
25 using namespace std;
26 template<class T>
27 class basis_P1_p {
28 public:
29  typedef basis_rep<T> base;
30  typedef typename base::size_type size_type;
31  static void evaluate (const point_basic<T>& hat_x, Eigen::Matrix<T,Eigen::Dynamic,1>& values);
32  static void grad_evaluate (const point_basic<T>& hat_x, Eigen::Matrix<point_basic<T>,Eigen::Dynamic,1>& values);
33  static void hat_node (Eigen::Matrix<point_basic<T>,Eigen::Dynamic,1>&);
34 };
35 template<class T>
36 class basis_P1_e {
37 public:
38  typedef basis_rep<T> base;
39  typedef typename base::size_type size_type;
40  static void evaluate (const point_basic<T>& hat_x, Eigen::Matrix<T,Eigen::Dynamic,1>& values);
41  static void grad_evaluate (const point_basic<T>& hat_x, Eigen::Matrix<point_basic<T>,Eigen::Dynamic,1>& values);
42  static void hat_node (Eigen::Matrix<point_basic<T>,Eigen::Dynamic,1>&);
43 };
44 template<class T>
45 class basis_P1_t {
46 public:
47  typedef basis_rep<T> base;
48  typedef typename base::size_type size_type;
49  static void evaluate (const point_basic<T>& hat_x, Eigen::Matrix<T,Eigen::Dynamic,1>& values);
50  static void grad_evaluate (const point_basic<T>& hat_x, Eigen::Matrix<point_basic<T>,Eigen::Dynamic,1>& values);
51  static void hat_node (Eigen::Matrix<point_basic<T>,Eigen::Dynamic,1>&);
52 };
53 template<class T>
54 class basis_P1_q {
55 public:
56  typedef basis_rep<T> base;
57  typedef typename base::size_type size_type;
58  static void evaluate (const point_basic<T>& hat_x, Eigen::Matrix<T,Eigen::Dynamic,1>& values);
59  static void grad_evaluate (const point_basic<T>& hat_x, Eigen::Matrix<point_basic<T>,Eigen::Dynamic,1>& values);
60  static void hat_node (Eigen::Matrix<point_basic<T>,Eigen::Dynamic,1>&);
61 };
62 template<class T>
63 class basis_P1_T {
64 public:
65  typedef basis_rep<T> base;
66  typedef typename base::size_type size_type;
67  static void evaluate (const point_basic<T>& hat_x, Eigen::Matrix<T,Eigen::Dynamic,1>& values);
68  static void grad_evaluate (const point_basic<T>& hat_x, Eigen::Matrix<point_basic<T>,Eigen::Dynamic,1>& values);
69  static void hat_node (Eigen::Matrix<point_basic<T>,Eigen::Dynamic,1>&);
70 };
71 template<class T>
72 class basis_P1_P {
73 public:
74  typedef basis_rep<T> base;
75  typedef typename base::size_type size_type;
76  static void evaluate (const point_basic<T>& hat_x, Eigen::Matrix<T,Eigen::Dynamic,1>& values);
77  static void grad_evaluate (const point_basic<T>& hat_x, Eigen::Matrix<point_basic<T>,Eigen::Dynamic,1>& values);
78  static void hat_node (Eigen::Matrix<point_basic<T>,Eigen::Dynamic,1>&);
79 };
80 template<class T>
81 class basis_P1_H {
82 public:
83  typedef basis_rep<T> base;
84  typedef typename base::size_type size_type;
85  static void evaluate (const point_basic<T>& hat_x, Eigen::Matrix<T,Eigen::Dynamic,1>& values);
86  static void grad_evaluate (const point_basic<T>& hat_x, Eigen::Matrix<point_basic<T>,Eigen::Dynamic,1>& values);
87  static void hat_node (Eigen::Matrix<point_basic<T>,Eigen::Dynamic,1>&);
88 };
89 template<class T>
90 void
92  const point_basic<T>& hat_x,
93  Eigen::Matrix<T,Eigen::Dynamic,1>& values)
94 {
95  values.resize(1);
96  values[0] = 1.0;
97 }
98 template<class T>
99 void
100 basis_P1_p<T>::grad_evaluate (
101  const point_basic<T>& hat_x,
102  Eigen::Matrix<point_basic<T>,Eigen::Dynamic,1>& values)
103 {
104  values.resize(1);
105 }
106 template<class T>
107 void
108 basis_P1_p<T>::hat_node (Eigen::Matrix<point_basic<T>,Eigen::Dynamic,1>& x)
109 {
110  x.resize(1);
111  x[0] = point_basic<T>();
112 }
113 template<class T>
114 void
116  const point_basic<T>& hat_x,
117  Eigen::Matrix<T,Eigen::Dynamic,1>& values)
118 {
119  values.resize(2);
120  values[0] = -hat_x[0]+1.0;
121  values[1] = hat_x[0];
122 }
123 template<class T>
124 void
125 basis_P1_e<T>::grad_evaluate (
126  const point_basic<T>& hat_x,
127  Eigen::Matrix<point_basic<T>,Eigen::Dynamic,1>& values)
128 {
129  values.resize(2);
130  values[0][0] = -1.0;
131  values[1][0] = 1.0;
132 }
133 template<class T>
134 void
135 basis_P1_e<T>::hat_node (Eigen::Matrix<point_basic<T>,Eigen::Dynamic,1>& x)
136 {
137  x.resize(2);
138  x[0] = point_basic<T>(0.0);
139  x[1] = point_basic<T>(1.0);
140 }
141 template<class T>
142 void
144  const point_basic<T>& hat_x,
145  Eigen::Matrix<T,Eigen::Dynamic,1>& values)
146 {
147  values.resize(3);
148  values[0] = -hat_x[0]-hat_x[1]+1.0;
149  values[1] = hat_x[0];
150  values[2] = hat_x[1];
151 }
152 template<class T>
153 void
154 basis_P1_t<T>::grad_evaluate (
155  const point_basic<T>& hat_x,
156  Eigen::Matrix<point_basic<T>,Eigen::Dynamic,1>& values)
157 {
158  values.resize(3);
159  values[0][0] = -1.0;
160  values[0][1] = -1.0;
161  values[1][0] = 1.0;
162  values[1][1] = 0.0;
163  values[2][0] = 0.0;
164  values[2][1] = 1.0;
165 }
166 template<class T>
167 void
168 basis_P1_t<T>::hat_node (Eigen::Matrix<point_basic<T>,Eigen::Dynamic,1>& x)
169 {
170  x.resize(3);
171  x[0] = point_basic<T>(0.0, 0.0);
172  x[1] = point_basic<T>(1.0, 0.0);
173  x[2] = point_basic<T>(0.0, 1.0);
174 }
175 template<class T>
176 void
178  const point_basic<T>& hat_x,
179  Eigen::Matrix<T,Eigen::Dynamic,1>& values)
180 {
181  values.resize(4);
182  values[0] = -hat_x[0]/4.0+hat_x[1]*( hat_x[0]-1.0)/4.0+(1.0/4.0);
183  values[1] = hat_x[0]/4.0-hat_x[1]*( hat_x[0]+1.0)/4.0+(1.0/4.0);
184  values[2] = hat_x[0]/4.0+( hat_x[0]+1.0)*hat_x[1]/4.0+(1.0/4.0);
185  values[3] = -hat_x[0]/4.0-( hat_x[0]-1.0)*hat_x[1]/4.0+(1.0/4.0);
186 }
187 template<class T>
188 void
189 basis_P1_q<T>::grad_evaluate (
190  const point_basic<T>& hat_x,
191  Eigen::Matrix<point_basic<T>,Eigen::Dynamic,1>& values)
192 {
193  values.resize(4);
194  values[0][0] = hat_x[1]/4.0-(1.0/4.0);
195  values[0][1] = hat_x[0]/4.0-(1.0/4.0);
196  values[1][0] = -hat_x[1]/4.0+(1.0/4.0);
197  values[1][1] = -hat_x[0]/4.0-(1.0/4.0);
198  values[2][0] = hat_x[1]/4.0+(1.0/4.0);
199  values[2][1] = hat_x[0]/4.0+(1.0/4.0);
200  values[3][0] = -hat_x[1]/4.0-(1.0/4.0);
201  values[3][1] = -hat_x[0]/4.0+(1.0/4.0);
202 }
203 template<class T>
204 void
205 basis_P1_q<T>::hat_node (Eigen::Matrix<point_basic<T>,Eigen::Dynamic,1>& x)
206 {
207  x.resize(4);
208  x[0] = point_basic<T>(-1.0, -1.0);
209  x[1] = point_basic<T>(1.0, -1.0);
210  x[2] = point_basic<T>(1.0, 1.0);
211  x[3] = point_basic<T>(-1.0, 1.0);
212 }
213 template<class T>
214 void
216  const point_basic<T>& hat_x,
217  Eigen::Matrix<T,Eigen::Dynamic,1>& values)
218 {
219  values.resize(4);
220  values[0] = -hat_x[1]-hat_x[2]-hat_x[0]+1.0;
221  values[1] = hat_x[0];
222  values[2] = hat_x[1];
223  values[3] = hat_x[2];
224 }
225 template<class T>
226 void
227 basis_P1_T<T>::grad_evaluate (
228  const point_basic<T>& hat_x,
229  Eigen::Matrix<point_basic<T>,Eigen::Dynamic,1>& values)
230 {
231  values.resize(4);
232  values[0][0] = -1.0;
233  values[0][1] = -1.0;
234  values[0][2] = -1.0;
235  values[1][0] = 1.0;
236  values[1][1] = 0.0;
237  values[1][2] = 0.0;
238  values[2][0] = 0.0;
239  values[2][1] = 1.0;
240  values[2][2] = 0.0;
241  values[3][0] = 0.0;
242  values[3][1] = 0.0;
243  values[3][2] = 1.0;
244 }
245 template<class T>
246 void
247 basis_P1_T<T>::hat_node (Eigen::Matrix<point_basic<T>,Eigen::Dynamic,1>& x)
248 {
249  x.resize(4);
250  x[0] = point_basic<T>(0.0, 0.0, 0.0);
251  x[1] = point_basic<T>(1.0, 0.0, 0.0);
252  x[2] = point_basic<T>(0.0, 1.0, 0.0);
253  x[3] = point_basic<T>(0.0, 0.0, 1.0);
254 }
255 template<class T>
256 void
258  const point_basic<T>& hat_x,
259  Eigen::Matrix<T,Eigen::Dynamic,1>& values)
260 {
261  values.resize(6);
262  values[0] = -hat_x[1]/2.0+hat_x[2]*( hat_x[1]+hat_x[0]-1.0)/2.0-hat_x[0]/2.0+(1.0/2.0);
263  values[1] = hat_x[0]/2.0-hat_x[2]*hat_x[0]/2.0;
264  values[2] = hat_x[1]/2.0-hat_x[2]*hat_x[1]/2.0;
265  values[3] = -hat_x[2]*( hat_x[0]+hat_x[1]-1.0)/2.0-hat_x[0]/2.0-hat_x[1]/2.0+(1.0/2.0);
266  values[4] = hat_x[2]*hat_x[0]/2.0+hat_x[0]/2.0;
267  values[5] = hat_x[1]*hat_x[2]/2.0+hat_x[1]/2.0;
268 }
269 template<class T>
270 void
271 basis_P1_P<T>::grad_evaluate (
272  const point_basic<T>& hat_x,
273  Eigen::Matrix<point_basic<T>,Eigen::Dynamic,1>& values)
274 {
275  values.resize(6);
276  values[0][0] = hat_x[2]/2.0-(1.0/2.0);
277  values[0][1] = hat_x[2]/2.0-(1.0/2.0);
278  values[0][2] = hat_x[0]/2.0+hat_x[1]/2.0-(1.0/2.0);
279  values[1][0] = -hat_x[2]/2.0+(1.0/2.0);
280  values[1][1] = 0.0;
281  values[1][2] = -(1.0/2.0)*hat_x[0];
282  values[2][0] = 0.0;
283  values[2][1] = -hat_x[2]/2.0+(1.0/2.0);
284  values[2][2] = -(1.0/2.0)*hat_x[1];
285  values[3][0] = -hat_x[2]/2.0-(1.0/2.0);
286  values[3][1] = -hat_x[2]/2.0-(1.0/2.0);
287  values[3][2] = -hat_x[0]/2.0-hat_x[1]/2.0+(1.0/2.0);
288  values[4][0] = hat_x[2]/2.0+(1.0/2.0);
289  values[4][1] = 0.0;
290  values[4][2] = (1.0/2.0)*hat_x[0];
291  values[5][0] = 0.0;
292  values[5][1] = hat_x[2]/2.0+(1.0/2.0);
293  values[5][2] = (1.0/2.0)*hat_x[1];
294 }
295 template<class T>
296 void
297 basis_P1_P<T>::hat_node (Eigen::Matrix<point_basic<T>,Eigen::Dynamic,1>& x)
298 {
299  x.resize(6);
300  x[0] = point_basic<T>(0.0, 0.0, -1.0);
301  x[1] = point_basic<T>(1.0, 0.0, -1.0);
302  x[2] = point_basic<T>(0.0, 1.0, -1.0);
303  x[3] = point_basic<T>(0.0, 0.0, 1.0);
304  x[4] = point_basic<T>(1.0, 0.0, 1.0);
305  x[5] = point_basic<T>(0.0, 1.0, 1.0);
306 }
307 template<class T>
308 void
310  const point_basic<T>& hat_x,
311  Eigen::Matrix<T,Eigen::Dynamic,1>& values)
312 {
313  values.resize(8);
314  values[0] = -hat_x[2]*( ( hat_x[0]-1.0)*hat_x[1]-hat_x[0]+1.0)/8.0+( hat_x[0]-1.0)*hat_x[1]/8.0-hat_x[0]/8.0+(1.0/8.0);
315  values[1] = hat_x[2]*( ( hat_x[0]+1.0)*hat_x[1]-hat_x[0]-1.0)/8.0-( hat_x[0]+1.0)*hat_x[1]/8.0+hat_x[0]/8.0+(1.0/8.0);
316  values[2] = -hat_x[2]*( ( hat_x[0]+1.0)*hat_x[1]+hat_x[0]+1.0)/8.0+( hat_x[0]+1.0)*hat_x[1]/8.0+hat_x[0]/8.0+(1.0/8.0);
317  values[3] = -hat_x[1]*( hat_x[0]-1.0)/8.0-hat_x[0]/8.0+( hat_x[1]*( hat_x[0]-1.0)+hat_x[0]-1.0)*hat_x[2]/8.0+(1.0/8.0);
318  values[4] = -( hat_x[0]-( hat_x[0]-1.0)*hat_x[1]-1.0)*hat_x[2]/8.0-hat_x[0]/8.0+( hat_x[0]-1.0)*hat_x[1]/8.0+(1.0/8.0);
319  values[5] = hat_x[2]*( hat_x[0]-hat_x[1]*( hat_x[0]+1.0)+1.0)/8.0+hat_x[0]/8.0-hat_x[1]*( hat_x[0]+1.0)/8.0+(1.0/8.0);
320  values[6] = hat_x[0]/8.0+hat_x[1]*( hat_x[0]+1.0)/8.0+( hat_x[0]+hat_x[1]*( hat_x[0]+1.0)+1.0)*hat_x[2]/8.0+(1.0/8.0);
321  values[7] = -hat_x[0]/8.0-hat_x[1]*( hat_x[0]-1.0)/8.0-( hat_x[0]+hat_x[1]*( hat_x[0]-1.0)-1.0)*hat_x[2]/8.0+(1.0/8.0);
322 }
323 template<class T>
324 void
325 basis_P1_H<T>::grad_evaluate (
326  const point_basic<T>& hat_x,
327  Eigen::Matrix<point_basic<T>,Eigen::Dynamic,1>& values)
328 {
329  values.resize(8);
330  values[0][0] = -( hat_x[1]-1.0)*hat_x[2]/8.0+hat_x[1]/8.0-(1.0/8.0);
331  values[0][1] = hat_x[0]/8.0-( hat_x[0]-1.0)*hat_x[2]/8.0-(1.0/8.0);
332  values[0][2] = hat_x[0]/8.0-hat_x[1]*( hat_x[0]-1.0)/8.0-(1.0/8.0);
333  values[1][0] = -hat_x[1]/8.0+hat_x[2]*( hat_x[1]-1.0)/8.0+(1.0/8.0);
334  values[1][1] = ( hat_x[0]+1.0)*hat_x[2]/8.0-hat_x[0]/8.0-(1.0/8.0);
335  values[1][2] = -hat_x[0]/8.0+hat_x[1]*( hat_x[0]+1.0)/8.0-(1.0/8.0);
336  values[2][0] = hat_x[1]/8.0-hat_x[2]*( hat_x[1]+1.0)/8.0+(1.0/8.0);
337  values[2][1] = -hat_x[2]*( hat_x[0]+1.0)/8.0+hat_x[0]/8.0+(1.0/8.0);
338  values[2][2] = -( hat_x[0]+1.0)*hat_x[1]/8.0-hat_x[0]/8.0-(1.0/8.0);
339  values[3][0] = ( hat_x[1]+1.0)*hat_x[2]/8.0-hat_x[1]/8.0-(1.0/8.0);
340  values[3][1] = -hat_x[0]/8.0+hat_x[2]*( hat_x[0]-1.0)/8.0+(1.0/8.0);
341  values[3][2] = hat_x[0]/8.0+hat_x[1]*( hat_x[0]-1.0)/8.0-(1.0/8.0);
342  values[4][0] = hat_x[1]/8.0+hat_x[2]*( hat_x[1]-1.0)/8.0-(1.0/8.0);
343  values[4][1] = ( hat_x[0]-1.0)*hat_x[2]/8.0+hat_x[0]/8.0-(1.0/8.0);
344  values[4][2] = ( hat_x[0]-1.0)*hat_x[1]/8.0-hat_x[0]/8.0+(1.0/8.0);
345  values[5][0] = -hat_x[1]/8.0-hat_x[2]*( hat_x[1]-1.0)/8.0+(1.0/8.0);
346  values[5][1] = -hat_x[2]*( hat_x[0]+1.0)/8.0-hat_x[0]/8.0-(1.0/8.0);
347  values[5][2] = -( hat_x[0]+1.0)*hat_x[1]/8.0+hat_x[0]/8.0+(1.0/8.0);
348  values[6][0] = ( hat_x[1]+1.0)*hat_x[2]/8.0+hat_x[1]/8.0+(1.0/8.0);
349  values[6][1] = hat_x[2]*( hat_x[0]+1.0)/8.0+hat_x[0]/8.0+(1.0/8.0);
350  values[6][2] = hat_x[0]/8.0+hat_x[1]*( hat_x[0]+1.0)/8.0+(1.0/8.0);
351  values[7][0] = -hat_x[1]/8.0-( hat_x[1]+1.0)*hat_x[2]/8.0-(1.0/8.0);
352  values[7][1] = -( hat_x[0]-1.0)*hat_x[2]/8.0-hat_x[0]/8.0+(1.0/8.0);
353  values[7][2] = -hat_x[0]/8.0-( hat_x[0]-1.0)*hat_x[1]/8.0+(1.0/8.0);
354 }
355 template<class T>
356 void
357 basis_P1_H<T>::hat_node (Eigen::Matrix<point_basic<T>,Eigen::Dynamic,1>& x)
358 {
359  x.resize(8);
360  x[0] = point_basic<T>(-1.0, -1.0, -1.0);
361  x[1] = point_basic<T>(1.0, -1.0, -1.0);
362  x[2] = point_basic<T>(1.0, 1.0, -1.0);
363  x[3] = point_basic<T>(-1.0, 1.0, -1.0);
364  x[4] = point_basic<T>(-1.0, -1.0, 1.0);
365  x[5] = point_basic<T>(1.0, -1.0, 1.0);
366  x[6] = point_basic<T>(1.0, 1.0, 1.0);
367  x[7] = point_basic<T>(-1.0, 1.0, 1.0);
368 }
369 template<class T>
371  : base(sopt), _hat_node()
372 {
375  base::_piola_fem.piola_fem<T>::base::operator= (new_macro(piola_fem_lagrange<T>));
376 }
377 template<class T>
379 {
380 }
381 template<class T>
382 typename basis_P1<T>::size_type
384 {
385  return 1;
386 }
387 template<class T>
388 void
390  reference_element hat_K,
391  const point_basic<T>& hat_x,
392  Eigen::Matrix<T,Eigen::Dynamic,1>& values) const
393 {
394  switch (hat_K.variant()) {
395  case reference_element::p: {
396  return basis_P1_p<T>::evaluate (hat_x, values);
397  }
398  case reference_element::e: {
399  return basis_P1_e<T>::evaluate (hat_x, values);
400  }
401  case reference_element::t: {
402  return basis_P1_t<T>::evaluate (hat_x, values);
403  }
404  case reference_element::q: {
405  return basis_P1_q<T>::evaluate (hat_x, values);
406  }
407  case reference_element::T: {
408  return basis_P1_T<T>::evaluate (hat_x, values);
409  }
410  case reference_element::P: {
411  return basis_P1_P<T>::evaluate (hat_x, values);
412  }
413  case reference_element::H: {
414  return basis_P1_H<T>::evaluate (hat_x, values);
415  }
416  default : {
417  error_macro ("evaluate: unsupported `" << hat_K.name() << "' element type");
418  }
419  }
420 }
421 template<class T>
422 void
424  reference_element hat_K,
425  const point_basic<T>& hat_x,
426  Eigen::Matrix<point_basic<T>,Eigen::Dynamic,1>& values) const
427 {
428  switch (hat_K.variant()) {
429  case reference_element::p: {
430  return basis_P1_p<T>::grad_evaluate (hat_x, values);
431  }
432  case reference_element::e: {
433  return basis_P1_e<T>::grad_evaluate (hat_x, values);
434  }
435  case reference_element::t: {
436  return basis_P1_t<T>::grad_evaluate (hat_x, values);
437  }
438  case reference_element::q: {
439  return basis_P1_q<T>::grad_evaluate (hat_x, values);
440  }
441  case reference_element::T: {
442  return basis_P1_T<T>::grad_evaluate (hat_x, values);
443  }
444  case reference_element::P: {
445  return basis_P1_P<T>::grad_evaluate (hat_x, values);
446  }
447  case reference_element::H: {
448  return basis_P1_H<T>::grad_evaluate (hat_x, values);
449  }
450  default : {
451  error_macro ("grad_evaluate: unsupported `" << hat_K.name() << "' element type");
452  }
453  }
454 }
455 template<class T>
456 void
458  reference_element hat_K,
459  const Eigen::Matrix<T,Eigen::Dynamic,1>& f_xnod,
460  Eigen::Matrix<T,Eigen::Dynamic,1>& dof) const
461 {
462  dof = f_xnod;
463 }
464 template<class T>
465 void
467 {
469  1,
470  base::is_continuous(),
471  base::_ndof_on_subgeo,
472  base::_nnod_on_subgeo,
473  base::_first_idof_by_dimension,
474  base::_first_inod_by_dimension);
475 }
476 template<class T>
477 void
479  reference_element hat_K) const
480 {
481  switch (hat_K.variant()) {
482  case reference_element::p: {
483  return basis_P1_p<T>::hat_node (_hat_node[hat_K.variant()]);
484  }
485  case reference_element::e: {
486  return basis_P1_e<T>::hat_node (_hat_node[hat_K.variant()]);
487  }
488  case reference_element::t: {
489  return basis_P1_t<T>::hat_node (_hat_node[hat_K.variant()]);
490  }
491  case reference_element::q: {
492  return basis_P1_q<T>::hat_node (_hat_node[hat_K.variant()]);
493  }
494  case reference_element::T: {
495  return basis_P1_T<T>::hat_node (_hat_node[hat_K.variant()]);
496  }
497  case reference_element::P: {
498  return basis_P1_P<T>::hat_node (_hat_node[hat_K.variant()]);
499  }
500  case reference_element::H: {
501  return basis_P1_H<T>::hat_node (_hat_node[hat_K.variant()]);
502  }
503  default : {
504  error_macro ("hat_node: unsupported `" << hat_K.name() << "' element type");
505  }
506  }
507 }
508 // instantiation in library:
509 template class basis_P1<Float>;
510 } // namespace rheolef
P1.h
rheolef::reference_element::e
static const variant_type e
Definition: reference_element.h:76
rheolef::reference_element::H
static const variant_type H
Definition: reference_element.h:81
rheolef::point_basic
Definition: point.h:87
rheolef::piola_fem_lagrange
Definition: piola_fem_lagrange.h:65
rheolef::reference_element::T
static const variant_type T
Definition: reference_element.h:79
rheolef::basis_P1
Definition: P1.h:31
rheolef::basis_P1::degree
size_type degree() const
Definition: P1.cc:383
rheolef::size_type
size_t size_type
Definition: basis_get.cc:76
rheolef::basis_option
see the basis_option page for the full documentation
Definition: basis_option.h:93
rheolef::basis_P1::basis_P1
basis_P1(const basis_option &sopt)
Definition: P1.cc:370
rheolef::reference_element
see the reference_element page for the full documentation
Definition: reference_element.h:66
rheolef::basis_P1::evaluate
void evaluate(reference_element hat_K, const point_basic< T > &hat_x, Eigen::Matrix< T, Eigen::Dynamic, 1 > &values) const
Definition: P1.cc:389
rheolef::basis_rep::_piola_fem
piola_fem< T > _piola_fem
Definition: basis.h:394
rheolef::reference_element::name
char name() const
Definition: reference_element.h:100
rheolef::reference_element::variant
variant_type variant() const
Definition: reference_element.h:99
rheolef::basis_P1::_compute_dofs
void _compute_dofs(reference_element hat_K, const Eigen::Matrix< T, Eigen::Dynamic, 1 > &f_xnod, Eigen::Matrix< T, Eigen::Dynamic, 1 > &dof) const
Definition: P1.cc:457
rheolef::basis_rep::_sopt
basis_option _sopt
Definition: basis.h:393
rheolef::basis_rep::_name
std::string _name
Definition: basis.h:392
rheolef
This file is part of Rheolef.
Definition: compiler_eigen.h:37
rheolef::basis_fem_Pk_lagrange::initialize_local_first
static void initialize_local_first(size_type k, bool is_continuous, std::array< std::array< size_type, reference_element::max_variant >, 4 > &ndof_on_subgeo, std::array< std::array< size_type, reference_element::max_variant >, 4 > &nnod_on_subgeo, std::array< std::array< size_type, 5 >, reference_element::max_variant > &first_idof_by_dimension, std::array< std::array< size_type, 5 >, reference_element::max_variant > &first_inod_by_dimension)
Definition: basis_fem_Pk_lagrange.cc:41
error_macro
#define error_macro(message)
Definition: dis_macros.h:49
rheolef::basis_P1::_initialize_data
void _initialize_data(reference_element hat_K) const
Definition: P1.cc:478
rheolef::point_basic< T >
point_basic< T >
Definition: piola_fem.h:135
rheolef::reference_element::p
static const variant_type p
Definition: reference_element.h:75
rheolef::reference_element::q
static const variant_type q
Definition: reference_element.h:78
rheolef::reference_element::P
static const variant_type P
Definition: reference_element.h:80
rheolef::basis_P1::family_name
std::string family_name() const
Definition: P1.h:38
rheolef::basis_rep::standard_naming
static std::string standard_naming(std::string family_name, size_t degree, const basis_option &sopt)
Definition: basis_rep.cc:44
rheolef::reference_element::t
static const variant_type t
Definition: reference_element.h:77
size_type
field::size_type size_type
Definition: branch.cc:425
piola_fem_lagrange.h
rheolef::basis_P1::size_type
base::size_type size_type
Definition: P1.h:34
rheolef::evaluate
void evaluate(const geo_basic< float_type, M > &omega_K, const geo_element &K, Eigen::Matrix< Result, Eigen::Dynamic, 1 > &value) const
Definition: field_expr_recursive.h:873
rheolef::basis_P1::~basis_P1
~basis_P1()
Definition: P1.cc:378
rheolef::basis_P1::_initialize_cstor_sizes
void _initialize_cstor_sizes() const
Definition: P1.cc:466
rheolef::basis_rep
Definition: basis.h:209
T
Expr1::float_type T
Definition: field_expr.h:261
rheolef::basis_P1::grad_evaluate
void grad_evaluate(reference_element hat_K, const point_basic< T > &hat_x, Eigen::Matrix< point_basic< T >, Eigen::Dynamic, 1 > &values) const
Definition: P1.cc:423