Rheolef  7.2
an efficient C++ finite element environment
 
Loading...
Searching...
No Matches
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"
24namespace rheolef {
25using namespace std;
26template<class T>
27class basis_P1_p {
28public:
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};
35template<class T>
36class basis_P1_e {
37public:
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};
44template<class T>
45class basis_P1_t {
46public:
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};
53template<class T>
54class basis_P1_q {
55public:
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};
62template<class T>
63class basis_P1_T {
64public:
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};
71template<class T>
72class basis_P1_P {
73public:
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};
80template<class T>
81class basis_P1_H {
82public:
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};
89template<class T>
90void
91basis_P1_p<T>::evaluate (
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}
98template<class T>
99void
100basis_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}
106template<class T>
107void
108basis_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}
113template<class T>
114void
115basis_P1_e<T>::evaluate (
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}
123template<class T>
124void
125basis_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}
133template<class T>
134void
135basis_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}
141template<class T>
142void
143basis_P1_t<T>::evaluate (
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[1]-hat_x[0]+1.0;
149 values[1] = hat_x[0];
150 values[2] = hat_x[1];
151}
152template<class T>
153void
154basis_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}
166template<class T>
167void
168basis_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}
175template<class T>
176void
177basis_P1_q<T>::evaluate (
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[1]*( hat_x[0]-1.0)/4.0-hat_x[0]/4.0+(1.0/4.0);
183 values[1] = -( hat_x[0]+1.0)*hat_x[1]/4.0+hat_x[0]/4.0+(1.0/4.0);
184 values[2] = hat_x[0]/4.0+hat_x[1]*( hat_x[0]+1.0)/4.0+(1.0/4.0);
185 values[3] = -( hat_x[0]-1.0)*hat_x[1]/4.0-hat_x[0]/4.0+(1.0/4.0);
186}
187template<class T>
188void
189basis_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}
203template<class T>
204void
205basis_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}
213template<class T>
214void
215basis_P1_T<T>::evaluate (
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[2]-hat_x[0]-hat_x[1]+1.0;
221 values[1] = hat_x[0];
222 values[2] = hat_x[1];
223 values[3] = hat_x[2];
224}
225template<class T>
226void
227basis_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}
245template<class T>
246void
247basis_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}
255template<class T>
256void
257basis_P1_P<T>::evaluate (
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[0]/2.0+( hat_x[1]+hat_x[0]-1.0)*hat_x[2]/2.0+(1.0/2.0);
263 values[1] = -hat_x[2]*hat_x[0]/2.0+hat_x[0]/2.0;
264 values[2] = -hat_x[1]*hat_x[2]/2.0+hat_x[1]/2.0;
265 values[3] = -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);
266 values[4] = hat_x[2]*hat_x[0]/2.0+hat_x[0]/2.0;
267 values[5] = hat_x[2]*hat_x[1]/2.0+hat_x[1]/2.0;
268}
269template<class T>
270void
271basis_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[1]/2.0-hat_x[0]/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}
295template<class T>
296void
297basis_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}
307template<class T>
308void
309basis_P1_H<T>::evaluate (
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[1]*( hat_x[0]-1.0)-hat_x[0]+1.0)/8.0+hat_x[1]*( hat_x[0]-1.0)/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[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);
317 values[3] = hat_x[2]*( hat_x[0]+( hat_x[0]-1.0)*hat_x[1]-1.0)/8.0-hat_x[0]/8.0-( hat_x[0]-1.0)*hat_x[1]/8.0+(1.0/8.0);
318 values[4] = -hat_x[2]*( hat_x[0]-( hat_x[0]-1.0)*hat_x[1]-1.0)/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[0]+1.0)*hat_x[1]/8.0+hat_x[0]/8.0-hat_x[2]*( ( hat_x[0]+1.0)*hat_x[1]-hat_x[0]-1.0)/8.0+(1.0/8.0);
320 values[6] = ( hat_x[0]+1.0)*hat_x[1]/8.0+hat_x[0]/8.0+hat_x[2]*( ( hat_x[0]+1.0)*hat_x[1]+hat_x[0]+1.0)/8.0+(1.0/8.0);
321 values[7] = -( hat_x[0]-1.0)*hat_x[1]/8.0-hat_x[0]/8.0-hat_x[2]*( ( hat_x[0]-1.0)*hat_x[1]+hat_x[0]-1.0)/8.0+(1.0/8.0);
322}
323template<class T>
324void
325basis_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[0]-1.0)*hat_x[1]/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]/8.0+hat_x[2]*( hat_x[0]+1.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[1]+1.0)*hat_x[2]/8.0+(1.0/8.0);
337 values[2][1] = -( hat_x[0]+1.0)*hat_x[2]/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]/8.0+hat_x[2]*( hat_x[1]+1.0)/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[1]*( hat_x[0]-1.0)/8.0+hat_x[0]/8.0-(1.0/8.0);
342 values[4][0] = hat_x[1]/8.0+( hat_x[1]-1.0)*hat_x[2]/8.0-(1.0/8.0);
343 values[4][1] = hat_x[0]/8.0+hat_x[2]*( hat_x[0]-1.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[2]*( hat_x[1]-1.0)/8.0-hat_x[1]/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[2]*( hat_x[1]+1.0)/8.0+hat_x[1]/8.0+(1.0/8.0);
349 values[6][1] = ( hat_x[0]+1.0)*hat_x[2]/8.0+hat_x[0]/8.0+(1.0/8.0);
350 values[6][2] = ( hat_x[0]+1.0)*hat_x[1]/8.0+hat_x[0]/8.0+(1.0/8.0);
351 values[7][0] = -hat_x[2]*( hat_x[1]+1.0)/8.0-hat_x[1]/8.0-(1.0/8.0);
352 values[7][1] = -hat_x[0]/8.0-( hat_x[0]-1.0)*hat_x[2]/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}
355template<class T>
356void
357basis_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}
369template<class T>
371 : base(sopt), _hat_node()
372{
374 base::_name = base::standard_naming (family_name(), 1, base::_sopt);
375 base::_piola_fem.piola_fem<T>::base::operator= (new_macro(piola_fem_lagrange<T>));
376}
377template<class T>
381template<class T>
384{
385 return 1;
386}
387template<class T>
388void
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()) {
396 return basis_P1_p<T>::evaluate (hat_x, values);
397 }
399 return basis_P1_e<T>::evaluate (hat_x, values);
400 }
402 return basis_P1_t<T>::evaluate (hat_x, values);
403 }
405 return basis_P1_q<T>::evaluate (hat_x, values);
406 }
408 return basis_P1_T<T>::evaluate (hat_x, values);
409 }
411 return basis_P1_P<T>::evaluate (hat_x, values);
412 }
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}
421template<class T>
422void
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()) {
430 return basis_P1_p<T>::grad_evaluate (hat_x, values);
431 }
433 return basis_P1_e<T>::grad_evaluate (hat_x, values);
434 }
436 return basis_P1_t<T>::grad_evaluate (hat_x, values);
437 }
439 return basis_P1_q<T>::grad_evaluate (hat_x, values);
440 }
442 return basis_P1_T<T>::grad_evaluate (hat_x, values);
443 }
445 return basis_P1_P<T>::grad_evaluate (hat_x, values);
446 }
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}
455template<class T>
456void
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}
464template<class T>
465void
467{
469 1,
470 base::is_continuous(),
471 base::_ndof_on_subgeo_internal,
472 base::_ndof_on_subgeo,
473 base::_nnod_on_subgeo_internal,
474 base::_nnod_on_subgeo,
475 base::_first_idof_by_dimension_internal,
476 base::_first_idof_by_dimension,
477 base::_first_inod_by_dimension_internal,
478 base::_first_inod_by_dimension);
479}
480template<class T>
481void
483 reference_element hat_K) const
484{
485 switch (hat_K.variant()) {
487 return basis_P1_p<T>::hat_node (_hat_node[hat_K.variant()]);
488 }
490 return basis_P1_e<T>::hat_node (_hat_node[hat_K.variant()]);
491 }
493 return basis_P1_t<T>::hat_node (_hat_node[hat_K.variant()]);
494 }
496 return basis_P1_q<T>::hat_node (_hat_node[hat_K.variant()]);
497 }
499 return basis_P1_T<T>::hat_node (_hat_node[hat_K.variant()]);
500 }
502 return basis_P1_P<T>::hat_node (_hat_node[hat_K.variant()]);
503 }
505 return basis_P1_H<T>::hat_node (_hat_node[hat_K.variant()]);
506 }
507 default : {
508 error_macro ("hat_node: unsupported `" << hat_K.name() << "' element type");
509 }
510 }
511}
512// instantiation in library:
513template class basis_P1<Float>;
514} // namespace rheolef
field::size_type size_type
Definition branch.cc:430
basis_rep< T > base
Definition P1.h:33
basis_P1(const basis_option &sopt)
Definition P1.cc:370
size_type degree() const
Definition P1.cc:383
base::size_type size_type
Definition P1.h:34
void _initialize_cstor_sizes() const
Definition P1.cc:466
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
void evaluate(reference_element hat_K, const point_basic< T > &hat_x, Eigen::Matrix< T, Eigen::Dynamic, 1 > &values) const
Definition P1.cc:389
std::string family_name() const
Definition P1.h:38
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
void _initialize_data(reference_element hat_K) const
Definition P1.cc:482
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_internal, 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_internal, 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_internal, 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_internal, std::array< std::array< size_type, 5 >, reference_element::max_variant > &first_inod_by_dimension)
see the basis_option page for the full documentation
see the reference_element page for the full documentation
static const variant_type H
static const variant_type q
static const variant_type e
static const variant_type p
variant_type variant() const
static const variant_type T
static const variant_type P
static const variant_type t
#define error_macro(message)
Definition dis_macros.h:49
Expr1::float_type T
Definition field_expr.h:230
This file is part of Rheolef.
void evaluate(const geo_basic< float_type, M > &omega_K, const geo_element &K, Eigen::Matrix< Result, Eigen::Dynamic, 1 > &value) const
STL namespace.