MFEM v4.10.0
Finite element discretization library
Loading...
Searching...
No Matches
fe_fixed_order.hpp
Go to the documentation of this file.
1// Copyright (c) 2010-2026, Lawrence Livermore National Security, LLC. Produced
2// at the Lawrence Livermore National Laboratory. All Rights reserved. See files
3// LICENSE and NOTICE for details. LLNL-CODE-806117.
4//
5// This file is part of the MFEM library. For more information and source code
6// availability visit https://mfem.org.
7//
8// MFEM is free software; you can redistribute it and/or modify it under the
9// terms of the BSD-3 license. We welcome feedback and contributions, see file
10// CONTRIBUTING.md for details.
11
12#ifndef MFEM_FE_FIXED_ORDER
13#define MFEM_FE_FIXED_ORDER
14
15#include "fe_base.hpp"
16#include "fe_h1.hpp"
17#include "fe_l2.hpp"
18
19namespace mfem
20{
21
22/// A 0D point finite element
24{
25public:
26 /// Construct the PointFiniteElement
28
29 void CalcShape(const IntegrationPoint &ip, Vector &shape) const override;
30
31 void CalcDShape(const IntegrationPoint &ip,
32 DenseMatrix &dshape) const override;
33};
34
35/// A 1D linear element with nodes on the endpoints
37{
38public:
39 /// Construct the Linear1DFiniteElement
41
42 /** virtual function which evaluates the values of all
43 shape functions at a given point ip and stores
44 them in the vector shape of dimension Dof (2) */
45 void CalcShape(const IntegrationPoint &ip, Vector &shape) const override;
46
47 /** virtual function which evaluates the derivatives of all
48 shape functions at a given point ip and stores them in
49 the matrix dshape (Dof x Dim) (2 x 1) so that each row
50 contains the derivative of one shape function */
51 void CalcDShape(const IntegrationPoint &ip,
52 DenseMatrix &dshape) const override;
53 void CalcHessian(const IntegrationPoint &ip,
54 DenseMatrix &h) const override;
55};
56
57/// A 2D linear element on triangle with nodes at the vertices of the triangle
59{
60public:
61 /// Construct the Linear2DFiniteElement
63
64 /** virtual function which evaluates the values of all
65 shape functions at a given point ip and stores
66 them in the vector shape of dimension Dof (3) */
67 void CalcShape(const IntegrationPoint &ip, Vector &shape) const override;
68
69 /** virtual function which evaluates the values of all
70 partial derivatives of all shape functions at a given
71 point ip and stores them in the matrix dshape (Dof x Dim) (3 x 2)
72 so that each row contains the derivatives of one shape function */
73 void CalcDShape(const IntegrationPoint &ip,
74 DenseMatrix &dshape) const override;
75 void CalcHessian(const IntegrationPoint &ip,
76 DenseMatrix &h) const override;
77 void ProjectDelta(int vertex, Vector &dofs) const override
78 { dofs = 0.0; dofs(vertex) = 1.0; }
79};
80
81/// A 2D bi-linear element on a square with nodes at the vertices of the square
83{
84public:
85 /// Construct the BiLinear2DFiniteElement
87
88 /** virtual function which evaluates the values of all
89 shape functions at a given point ip and stores
90 them in the vector shape of dimension Dof (4) */
91 void CalcShape(const IntegrationPoint &ip, Vector &shape) const override;
92
93 /** virtual function which evaluates the values of all
94 partial derivatives of all shape functions at a given
95 point ip and stores them in the matrix dshape (Dof x Dim) (4 x 2)
96 so that each row contains the derivatives of one shape function */
97 void CalcDShape(const IntegrationPoint &ip,
98 DenseMatrix &dshape) const override;
99 void CalcHessian(const IntegrationPoint &ip,
100 DenseMatrix &h) const override;
101 void ProjectDelta(int vertex, Vector &dofs) const override
102 { dofs = 0.0; dofs(vertex) = 1.0; } // { dofs = 1.0; }
103};
104
105/// A linear element on a triangle with nodes at the 3 "Gaussian" points
107{
108public:
109 /// Construct the GaussLinear2DFiniteElement
111 void CalcShape(const IntegrationPoint &ip, Vector &shape) const override;
112 void CalcDShape(const IntegrationPoint &ip,
113 DenseMatrix &dshape) const override;
114 void ProjectDelta(int vertex, Vector &dofs) const override;
115};
116
117/// A 2D bi-linear element on a square with nodes at the "Gaussian" points
119{
120private:
121 static const real_t p[2];
122
123public:
124 /// Construct the FiniteElement
126 void CalcShape(const IntegrationPoint &ip, Vector &shape) const override;
127 void CalcDShape(const IntegrationPoint &ip,
128 DenseMatrix &dshape) const override;
129 void ProjectDelta(int vertex, Vector &dofs) const override;
130};
131
132/** @brief A 2D linear element on a square with 3 nodes at the
133 vertices of the lower left triangle */
135{
136public:
137 /// Construct the P1OnQuadFiniteElement
139 void CalcShape(const IntegrationPoint &ip, Vector &shape) const override;
140 void CalcDShape(const IntegrationPoint &ip,
141 DenseMatrix &dshape) const override;
142 void ProjectDelta(int vertex, Vector &dofs) const override
143 { dofs = 1.0; }
144};
145
146/// A 1D quadratic finite element with uniformly spaced nodes
148{
149public:
150 /// Construct the Quad1DFiniteElement
152
153 /** virtual function which evaluates the values of all
154 shape functions at a given point ip and stores
155 them in the vector shape of dimension Dof (3) */
156 void CalcShape(const IntegrationPoint &ip, Vector &shape) const override;
157
158 /** virtual function which evaluates the derivatives of all
159 shape functions at a given point ip and stores them in
160 the matrix dshape (Dof x Dim) (3 x 1) so that each row
161 contains the derivative of one shape function */
162 void CalcDShape(const IntegrationPoint &ip,
163 DenseMatrix &dshape) const override;
164};
165
166/** @brief A 2D quadratic element on triangle with nodes at the
167 vertices and midpoints of the triangle. */
169{
170public:
171 /// Construct the Quad2DFiniteElement
173
174 /** virtual function which evaluates the values of all
175 shape functions at a given point ip and stores
176 them in the vector shape of dimension Dof (6) */
177 void CalcShape(const IntegrationPoint &ip, Vector &shape) const override;
178
179 /** virtual function which evaluates the values of all
180 partial derivatives of all shape functions at a given
181 point ip and stores them in the matrix dshape (Dof x Dim) (6 x 2)
182 so that each row contains the derivatives of one shape function */
183 void CalcDShape(const IntegrationPoint &ip,
184 DenseMatrix &dshape) const override;
185
186 void CalcHessian(const IntegrationPoint &ip,
187 DenseMatrix &h) const override;
188 void ProjectDelta(int vertex, Vector &dofs) const override;
189};
190
191/// A quadratic element on triangle with nodes at the "Gaussian" points
193{
194private:
195 static const real_t p[2];
196 DenseMatrix A;
197 mutable DenseMatrix D;
198 mutable Vector pol;
199public:
200 /// Construct the GaussQuad2DFiniteElement
202 void CalcShape(const IntegrationPoint &ip, Vector &shape) const override;
203 void CalcDShape(const IntegrationPoint &ip,
204 DenseMatrix &dshape) const override;
205 // virtual void ProjectDelta(int vertex, Vector &dofs) const;
206};
207
208/// A 2D bi-quadratic element on a square with uniformly spaced nodes
210{
211public:
212 /// Construct the BiQuad2DFiniteElement
214
215 /** virtual function which evaluates the values of all
216 shape functions at a given point ip and stores
217 them in the vector shape of dimension Dof (9) */
218 void CalcShape(const IntegrationPoint &ip, Vector &shape) const override;
219
220 /** virtual function which evaluates the values of all
221 partial derivatives of all shape functions at a given
222 point ip and stores them in the matrix dshape (Dof x Dim) (9 x 2)
223 so that each row contains the derivatives of one shape function */
224 void CalcDShape(const IntegrationPoint &ip,
225 DenseMatrix &dshape) const override;
226 void ProjectDelta(int vertex, Vector &dofs) const override;
227};
228
229
230/// A 2D bi-quadratic element on a square with nodes at the 9 "Gaussian" points
232{
233public:
234 /// Construct the GaussBiQuad2DFiniteElement
236 void CalcShape(const IntegrationPoint &ip, Vector &shape) const override;
237 void CalcDShape(const IntegrationPoint &ip,
238 DenseMatrix &dshape) const override;
239 // virtual void ProjectDelta(int vertex, Vector &dofs) const { dofs = 1.; }
240};
241
242
243/// A 2D bi-cubic element on a square with uniformly spaces nodes
245{
246public:
247 /// Construct the BiCubic2DFiniteElement
249 void CalcShape(const IntegrationPoint &ip, Vector &shape) const override;
250 void CalcDShape(const IntegrationPoint &ip,
251 DenseMatrix &dshape) const override;
252
253 /// Compute the Hessian of second order partial derivatives at @a ip.
254 void CalcHessian(const IntegrationPoint &ip,
255 DenseMatrix &h) const override;
256};
257
258/// A 1D cubic element with uniformly spaced nodes
260{
261public:
262 /// Construct the Cubic1DFiniteElement
264
265 void CalcShape(const IntegrationPoint &ip, Vector &shape) const override;
266
267 void CalcDShape(const IntegrationPoint &ip,
268 DenseMatrix &dshape) const override;
269};
270
271/// A 2D cubic element on a triangle with uniformly spaced nodes
273{
274public:
275 /// Construct the Cubic2DFiniteElement
277
278 void CalcShape(const IntegrationPoint &ip, Vector &shape) const override;
279
280 void CalcDShape(const IntegrationPoint &ip,
281 DenseMatrix &dshape) const override;
282
283 void CalcHessian(const IntegrationPoint &ip,
284 DenseMatrix &h) const override;
285};
286
287/// A 3D cubic element on a tetrahedron with 20 nodes at the thirds of the
288/// tetrahedron
290{
291public:
292 /// Construct the Cubic3DFiniteElement
294
295 void CalcShape(const IntegrationPoint &ip, Vector &shape) const override;
296
297 void CalcDShape(const IntegrationPoint &ip,
298 DenseMatrix &dshape) const override;
299};
300
301/// A linear element defined on a triangular prism
303{
304public:
305 /// Construct the LinearWedgeFiniteElement
307
308 /** @brief virtual function which evaluates the values of all
309 shape functions at a given point ip and stores
310 them in the vector shape of dimension Dof (6) */
311 void CalcShape(const IntegrationPoint &ip, Vector &shape) const override;
312
313 /** @brief virtual function which evaluates the values of all
314 partial derivatives of all shape functions at a given
315 point ip and stores them in the matrix dshape (Dof x Dim) (6 x 3)
316 so that each row contains the derivatives of one shape function */
317 void CalcDShape(const IntegrationPoint &ip,
318 DenseMatrix &dshape) const override;
319
320 void ProjectDelta(int vertex, Vector &dofs) const override
321 { dofs = 0.0; dofs(vertex) = 1.0; }
322
323 /** @brief Get the dofs associated with the given @a face.
324 @a *dofs is set to an internal array of the local dofc on the
325 face, while *ndofs is set to the number of dofs on that face.
326 */
327 void GetFaceDofs(int face, int **dofs, int *ndofs) const override;
328};
329
330/// A linear element defined on a square pyramid
332{
333public:
334 /// Construct the LinearPyramidFiniteElement
336
337 /** @brief virtual function which evaluates the values of all
338 shape functions at a given point ip and stores
339 them in the vector shape of dimension Dof (5) */
340 void CalcShape(const IntegrationPoint &ip, Vector &shape) const override;
341
342 /** @brief virtual function which evaluates the values of all
343 partial derivatives of all shape functions at a given
344 point ip and stores them in the matrix dshape (Dof x Dim) (5 x 3)
345 so that each row contains the derivatives of one shape function */
346 void CalcDShape(const IntegrationPoint &ip,
347 DenseMatrix &dshape) const override;
348
349 void ProjectDelta(int vertex, Vector &dofs) const override
350 { dofs = 0.0; dofs(vertex) = 1.0; }
351
352 /** @brief Get the dofs associated with the given @a face.
353 @a *dofs is set to an internal array of the local dofc on the
354 face, while *ndofs is set to the number of dofs on that face.
355 */
356 void GetFaceDofs(int face, int **dofs, int *ndofs) const override;
357};
358
359/// A 2D constant element on a triangle
361{
362public:
363 /// Construct the P0TriangleFiniteElement
365
366 /// evaluate shape function - constant 1
367 void CalcShape(const IntegrationPoint &ip, Vector &shape) const override;
368
369 /// evaluate derivatives of shape function - constant 0
370 void CalcDShape(const IntegrationPoint &ip,
371 DenseMatrix &dshape) const override;
372 void ProjectDelta(int vertex, Vector &dofs) const override
373 { dofs(0) = 1.0; }
374};
375
376
377/// A 2D constant element on a square
379{
380public:
381 /// Construct the P0QuadFiniteElement
383 void CalcShape(const IntegrationPoint &ip, Vector &shape) const override;
384 void CalcDShape(const IntegrationPoint &ip,
385 DenseMatrix &dshape) const override;
386 void ProjectDelta(int vertex, Vector &dofs) const override
387 { dofs(0) = 1.0; }
388};
389
390
391/** @brief A 3D linear element on a tetrahedron with nodes at the
392 vertices of the tetrahedron */
394{
395public:
396 /// Construct the Linear3DFiniteElement
398
399 /** @brief virtual function which evaluates the values of all
400 shape functions at a given point ip and stores
401 them in the vector shape of dimension Dof (4) */
402 void CalcShape(const IntegrationPoint &ip, Vector &shape) const override;
403
404 /** @brief virtual function which evaluates the values of all
405 partial derivatives of all shape functions at a given
406 point ip and stores them in the matrix dshape (Dof x Dim) (4 x 3)
407 so that each row contains the derivatives of one shape function */
408 void CalcDShape(const IntegrationPoint &ip,
409 DenseMatrix &dshape) const override;
410
411 void CalcHessian(const IntegrationPoint &ip,
412 DenseMatrix &h) const override;
413
414 void ProjectDelta(int vertex, Vector &dofs) const override
415 { dofs = 0.0; dofs(vertex) = 1.0; }
416
417 /** @brief Get the dofs associated with the given @a face.
418 @a *dofs is set to an internal array of the local dofc on the
419 face, while *ndofs is set to the number of dofs on that face.
420 */
421 void GetFaceDofs(int face, int **dofs, int *ndofs) const override;
422};
423
424/// A 3D quadratic element on a tetrahedron with uniformly spaced nodes
426{
427public:
428 /// Construct the Quadratic3DFiniteElement
430
431 void CalcShape(const IntegrationPoint &ip, Vector &shape) const override;
432
433 void CalcDShape(const IntegrationPoint &ip,
434 DenseMatrix &dshape) const override;
435};
436
437/// A 3D tri-linear element on a cube with nodes at the vertices of the cube
439{
440public:
441 /// Construct the TriLinear3DFiniteElement
443
444 /** virtual function which evaluates the values of all
445 shape functions at a given point ip and stores
446 them in the vector shape of dimension Dof (8) */
447 void CalcShape(const IntegrationPoint &ip, Vector &shape) const override;
448
449 /** virtual function which evaluates the values of all
450 partial derivatives of all shape functions at a given
451 point ip and stores them in the matrix dshape (Dof x Dim) (8 x 3)
452 so that each row contains the derivatives of one shape function */
453 void CalcDShape(const IntegrationPoint &ip,
454 DenseMatrix &dshape) const override;
455 void CalcHessian(const IntegrationPoint &ip,
456 DenseMatrix &h) const override;
457 void ProjectDelta(int vertex, Vector &dofs) const override
458 { dofs = 0.0; dofs(vertex) = 1.0; }
459};
460
461
462/// A 2D Crouzeix-Raviart element on triangle
464{
465public:
466 /// Construct the CrouzeixRaviartFiniteElement
468 void CalcShape(const IntegrationPoint &ip, Vector &shape) const override;
469 void CalcDShape(const IntegrationPoint &ip,
470 DenseMatrix &dshape) const override;
471 void ProjectDelta(int vertex, Vector &dofs) const override
472 { dofs = 1.0; }
473};
474
475/// A 2D Crouzeix-Raviart finite element on square
477{
478public:
479 /// Construct the CrouzeixRaviartQuadFiniteElement
481 void CalcShape(const IntegrationPoint &ip, Vector &shape) const override;
482 void CalcDShape(const IntegrationPoint &ip,
483 DenseMatrix &dshape) const override;
484};
485
486
487/// A 1D constant element on a segment
489{
490public:
491 /// Construct the P0SegmentFiniteElement with dummy order @a Ord
492 P0SegmentFiniteElement(int Ord = 0);
493 void CalcShape(const IntegrationPoint &ip, Vector &shape) const override;
494 void CalcDShape(const IntegrationPoint &ip,
495 DenseMatrix &dshape) const override;
496};
497
498/** @brief A 2D 1st order Raviart-Thomas vector element on a triangle */
500{
501private:
502 static const real_t nk[3][2];
503
504public:
505 /// Construct the RT0TriangleFiniteElement
507
508 void CalcVShape(const IntegrationPoint &ip,
509 DenseMatrix &shape) const override;
510
512 DenseMatrix &shape) const override
513 { CalcVShape_RT(Trans, shape); }
514
515 void CalcDivShape(const IntegrationPoint &ip,
516 Vector &divshape) const override;
517
519 DenseMatrix &I) const override;
520
522
523 void Project(VectorCoefficient &vc,
524 ElementTransformation &Trans, Vector &dofs) const override;
525};
526
527/** @brief A 2D 1st order Raviart-Thomas vector element on a square*/
529{
530private:
531 static const real_t nk[4][2];
532
533public:
534 /// Construct the RT0QuadFiniteElement
536
537 void CalcVShape(const IntegrationPoint &ip,
538 DenseMatrix &shape) const override;
539
541 DenseMatrix &shape) const override
542 { CalcVShape_RT(Trans, shape); }
543
544 void CalcDivShape(const IntegrationPoint &ip,
545 Vector &divshape) const override;
546
548 DenseMatrix &I) const override;
549
551
552 void Project(VectorCoefficient &vc,
553 ElementTransformation &Trans, Vector &dofs) const override;
554};
555
556/** @brief A 2D 2nd order Raviart-Thomas vector element on a triangle */
558{
559private:
560 static const real_t nk[8][2];
561
562public:
563 /// Construct the RT1TriangleFiniteElement
565
566 void CalcVShape(const IntegrationPoint &ip,
567 DenseMatrix &shape) const override;
568
570 DenseMatrix &shape) const override
571 { CalcVShape_RT(Trans, shape); }
572
573 void CalcDivShape(const IntegrationPoint &ip,
574 Vector &divshape) const override;
575
577 DenseMatrix &I) const override;
578
580
581 void Project(VectorCoefficient &vc,
582 ElementTransformation &Trans, Vector &dofs) const override;
583};
584
585/** @brief A 2D 2nd order Raviart-Thomas vector element on a square */
587{
588private:
589 static const real_t nk[12][2];
590
591public:
592 /// Construct the RT1QuadFiniteElement
594
595 void CalcVShape(const IntegrationPoint &ip,
596 DenseMatrix &shape) const override;
597
599 DenseMatrix &shape) const override
600 { CalcVShape_RT(Trans, shape); }
601
602 void CalcDivShape(const IntegrationPoint &ip,
603 Vector &divshape) const override;
604
606 DenseMatrix &I) const override;
607
609
610 void Project(VectorCoefficient &vc,
611 ElementTransformation &Trans, Vector &dofs) const override;
612};
613
614/** @brief A 2D 3rd order Raviart-Thomas vector element on a triangle */
616{
617private:
618 static const real_t M[15][15];
619public:
620 /// Construct the RT2TriangleFiniteElement
622
623 void CalcVShape(const IntegrationPoint &ip,
624 DenseMatrix &shape) const override;
625
627 DenseMatrix &shape) const override
628 { CalcVShape_RT(Trans, shape); }
629
630 void CalcDivShape(const IntegrationPoint &ip,
631 Vector &divshape) const override;
632};
633
634/** @brief A 2D 3rd order Raviart-Thomas vector element on a square */
636{
637private:
638 static const real_t nk[24][2];
639 static const real_t pt[4];
640 static const real_t dpt[3];
641
642public:
643 /// Construct the RT2QuadFiniteElement
645
646 void CalcVShape(const IntegrationPoint &ip,
647 DenseMatrix &shape) const override;
648
650 DenseMatrix &shape) const override
651 { CalcVShape_RT(Trans, shape); }
652
653 void CalcDivShape(const IntegrationPoint &ip,
654 Vector &divshape) const override;
655
657 DenseMatrix &I) const override;
658
660
661 void Project(VectorCoefficient &vc,
662 ElementTransformation &Trans, Vector &dofs) const override;
663};
664
665/// A 1D linear element with nodes at 1/3 and 2/3 (trace of RT1)
667{
668public:
669 /// Construct the P1SegmentFiniteElement
671 void CalcShape(const IntegrationPoint &ip, Vector &shape) const override;
672 void CalcDShape(const IntegrationPoint &ip,
673 DenseMatrix &dshape) const override;
674};
675
676/// A 1D quadratic element with nodes at the Gaussian points (trace of RT2)
678{
679public:
680 /// Construct the P2SegmentFiniteElement
682 void CalcShape(const IntegrationPoint &ip, Vector &shape) const override;
683 void CalcDShape(const IntegrationPoint &ip,
684 DenseMatrix &dshape) const override;
685};
686
687/// A 1D element with uniform nodes
689{
690private:
691 Vector rwk;
692#ifndef MFEM_THREAD_SAFE
693 mutable Vector rxxk;
694#endif
695public:
696 /// Construct the Lagrange1DFiniteElement with the provided @a degree
697 Lagrange1DFiniteElement(int degree);
698 void CalcShape(const IntegrationPoint &ip, Vector &shape) const override;
699 void CalcDShape(const IntegrationPoint &ip,
700 DenseMatrix &dshape) const override;
701};
702
703/// A 3D Crouzeix-Raviart element on the tetrahedron.
705{
706public:
707 /// Construct the P1TetNonConfFiniteElement
709 void CalcShape(const IntegrationPoint &ip, Vector &shape) const override;
710 void CalcDShape(const IntegrationPoint &ip,
711 DenseMatrix &dshape) const override;
712};
713
714/// A 3D constant element on a tetrahedron
716{
717public:
718 /// Construct the P0TetFiniteElement
720 void CalcShape(const IntegrationPoint &ip, Vector &shape) const override;
721 void CalcDShape(const IntegrationPoint &ip,
722 DenseMatrix &dshape) const override;
723 void ProjectDelta(int vertex, Vector &dofs) const override
724 { dofs(0) = 1.0; }
725};
726
727/// A 3D constant element on a cube
729{
730public:
731 /// Construct the P0HexFiniteElement
733 void CalcShape(const IntegrationPoint &ip, Vector &shape) const override;
734 void CalcDShape(const IntegrationPoint &ip,
735 DenseMatrix &dshape) const override;
736 void ProjectDelta(int vertex, Vector &dofs) const override
737 { dofs(0) = 1.0; }
738};
739
740/// A 3D constant element on a wedge
742{
743public:
744 /// Construct the P0WdgFiniteElement
746 void CalcShape(const IntegrationPoint &ip, Vector &shape) const override;
747 void CalcDShape(const IntegrationPoint &ip,
748 DenseMatrix &dshape) const override;
749 void ProjectDelta(int vertex, Vector &dofs) const override
750 { dofs(0) = 1.0; }
751};
752
753/// A 3D constant element on a pyramid
755{
756public:
757 /// Construct the P0PyrFiniteElement
759 void CalcShape(const IntegrationPoint &ip, Vector &shape) const override;
760 void CalcDShape(const IntegrationPoint &ip,
761 DenseMatrix &dshape) const override;
762 void ProjectDelta(int vertex, Vector &dofs) const override
763 { dofs(0) = 1.0; }
764};
765
766/** @brief Tensor products of 1D Lagrange1DFiniteElement
767 (only degree 2 is functional) */
769{
770private:
772 int dof1d;
773 int *I, *J, *K;
774#ifndef MFEM_THREAD_SAFE
775 mutable Vector shape1dx, shape1dy, shape1dz;
776 mutable DenseMatrix dshape1dx, dshape1dy, dshape1dz;
777#endif
778
779public:
780 /// Construct the LagrangeHexFiniteElement with the provided @a degree
781 LagrangeHexFiniteElement(int degree);
782 void CalcShape(const IntegrationPoint &ip, Vector &shape) const override;
783 void CalcDShape(const IntegrationPoint &ip,
784 DenseMatrix &dshape) const override;
786};
787
788
789/// A 1D refined linear element
791{
792public:
793 /// Construct the RefinedLinear1DFiniteElement
795
796 /** virtual function which evaluates the values of all
797 shape functions at a given point ip and stores
798 them in the vector shape of dimension Dof (3) */
799 void CalcShape(const IntegrationPoint &ip, Vector &shape) const override;
800
801 /** virtual function which evaluates the derivatives of all
802 shape functions at a given point ip and stores them in
803 the matrix dshape (Dof x Dim) (3 x 1) so that each row
804 contains the derivative of one shape function */
805 void CalcDShape(const IntegrationPoint &ip,
806 DenseMatrix &dshape) const override;
807};
808
809/// A 2D refined linear element on a triangle
811{
812public:
813 /// Construct the RefinedLinear2DFiniteElement
815
816 /** virtual function which evaluates the values of all
817 shape functions at a given point ip and stores
818 them in the vector shape of dimension Dof (6) */
819 void CalcShape(const IntegrationPoint &ip, Vector &shape) const override;
820
821 /** virtual function which evaluates the values of all
822 partial derivatives of all shape functions at a given
823 point ip and stores them in the matrix dshape (Dof x Dim) (6 x 2)
824 so that each row contains the derivatives of one shape function */
825 void CalcDShape(const IntegrationPoint &ip,
826 DenseMatrix &dshape) const override;
827};
828
829/// A 2D refined linear element on a tetrahedron
831{
832public:
833 /// Construct the RefinedLinear3DFiniteElement
835
836 void CalcShape(const IntegrationPoint &ip, Vector &shape) const override;
837
838 void CalcDShape(const IntegrationPoint &ip,
839 DenseMatrix &dshape) const override;
840};
841
842/// A 2D refined bi-linear FE on a square
844{
845public:
846 /// Construct the RefinedBiLinear2DFiniteElement
848
849 /** virtual function which evaluates the values of all
850 shape functions at a given point ip and stores
851 them in the vector shape of dimension Dof (9) */
852 void CalcShape(const IntegrationPoint &ip, Vector &shape) const override;
853
854 /** virtual function which evaluates the values of all
855 partial derivatives of all shape functions at a given
856 point ip and stores them in the matrix dshape (Dof x Dim) (9 x 2)
857 so that each row contains the derivatives of one shape function */
858 void CalcDShape(const IntegrationPoint &ip,
859 DenseMatrix &dshape) const override;
860};
861
862/// A 3D refined tri-linear element on a cube
864{
865public:
866 /// Construct the RefinedTriLinear3DFiniteElement
868
869 /** virtual function which evaluates the values of all
870 shape functions at a given point ip and stores
871 them in the vector shape of dimension Dof (9) */
872 void CalcShape(const IntegrationPoint &ip, Vector &shape) const override;
873
874 /** virtual function which evaluates the values of all
875 partial derivatives of all shape functions at a given
876 point ip and stores them in the matrix dshape (Dof x Dim) (9 x 2)
877 so that each row contains the derivatives of one shape function */
878 void CalcDShape(const IntegrationPoint &ip,
879 DenseMatrix &dshape) const override;
880};
881
882
883/// Class for linear FE on wedge
885{
886public:
887 /// Construct a linear FE on wedge
889};
890
891/// Class for quadratic FE on wedge
893{
894public:
895 /// Construct a quadratic FE on wedge
897};
898
899/// Class for cubic FE on wedge
901{
902public:
903 /// Construct a cubic FE on wedge
905};
906
907
908/// A 0th order L2 element on a Wedge
910{
911public:
912 /// Construct the P0WedgeFiniteElement
914};
915
916
917/// A 3D 1st order Nedelec element on a cube
919{
920private:
921 static const real_t tk[12][3];
922
923public:
924 /// Construct the Nedelec1HexFiniteElement
926 void CalcVShape(const IntegrationPoint &ip,
927 DenseMatrix &shape) const override;
929 DenseMatrix &shape) const override
930 { CalcVShape_ND(Trans, shape); }
931 void CalcCurlShape(const IntegrationPoint &ip,
932 DenseMatrix &curl_shape) const override;
934 DenseMatrix &I) const override;
936 void Project(VectorCoefficient &vc,
937 ElementTransformation &Trans, Vector &dofs) const override;
938
939 void ProjectGrad(const FiniteElement &fe,
941 DenseMatrix &grad) const override;
942};
943
944
945/// A 3D 1st order Nedelec element on a tetrahedron
947{
948private:
949 static const real_t tk[6][3];
950
951public:
952 /// Construct the Nedelec1TetFiniteElement
954 void CalcVShape(const IntegrationPoint &ip,
955 DenseMatrix &shape) const override;
957 DenseMatrix &shape) const override
958 { CalcVShape_ND(Trans, shape); }
959 void CalcCurlShape(const IntegrationPoint &ip,
960 DenseMatrix &curl_shape) const override;
962 DenseMatrix &I) const override;
964 void Project(VectorCoefficient &vc,
965 ElementTransformation &Trans, Vector &dofs) const override;
966
967 void ProjectGrad(const FiniteElement &fe,
969 DenseMatrix &grad) const override;
970};
971
972
973/// A 3D 1st order Nedelec element on a wedge
975{
976private:
977 static const real_t tk[9][3];
978
979public:
980 /// Construct the Nedelec1WdgFiniteElement
982 void CalcVShape(const IntegrationPoint &ip,
983 DenseMatrix &shape) const override;
985 DenseMatrix &shape) const override
986 { CalcVShape_ND(Trans, shape); }
987 void CalcCurlShape(const IntegrationPoint &ip,
988 DenseMatrix &curl_shape) const override;
990 DenseMatrix &I) const override;
992 void Project(VectorCoefficient &vc,
993 ElementTransformation &Trans, Vector &dofs) const override;
994
995 void ProjectGrad(const FiniteElement &fe,
997 DenseMatrix &grad) const override;
998};
999
1000
1001/// A 3D 1st order Nedelec element on a pyramid
1003{
1004private:
1005 static const real_t tk[8][3];
1006
1007public:
1008 /// Construct the Nedelec1PyrFiniteElement
1010 void CalcVShape(const IntegrationPoint &ip,
1011 DenseMatrix &shape) const override;
1013 DenseMatrix &shape) const override
1014 { CalcVShape_ND(Trans, shape); }
1015 void CalcCurlShape(const IntegrationPoint &ip,
1016 DenseMatrix &curl_shape) const override;
1018 DenseMatrix &I) const override;
1020 void Project(VectorCoefficient &vc,
1021 ElementTransformation &Trans, Vector &dofs) const override;
1022
1023 void ProjectGrad(const FiniteElement &fe,
1024 ElementTransformation &Trans,
1025 DenseMatrix &grad) const override;
1026};
1027
1028
1029/// A 3D 2nd order Nedelec element on a pyramid
1031{
1032private:
1033 static const real_t tk[28][3];
1034
1035public:
1036 /// Construct the Nedelec2PyrFiniteElement
1038 virtual void CalcVShape(const IntegrationPoint &ip,
1039 DenseMatrix &shape) const;
1041 DenseMatrix &shape) const
1042 { CalcVShape_ND(Trans, shape); }
1043 virtual void CalcCurlShape(const IntegrationPoint &ip,
1044 DenseMatrix &curl_shape) const;
1045 virtual void GetLocalInterpolation (ElementTransformation &Trans,
1046 DenseMatrix &I) const;
1048 virtual void Project (VectorCoefficient &vc,
1049 ElementTransformation &Trans, Vector &dofs) const;
1050
1051 virtual void ProjectGrad(const FiniteElement &fe,
1052 ElementTransformation &Trans,
1053 DenseMatrix &grad) const;
1054};
1055
1056
1057/// A 3D 0th order Raviert-Thomas element on a cube
1059{
1060private:
1061 static const real_t nk[6][3];
1062
1063public:
1064 /// Construct the RT0HexFiniteElement
1066
1067 void CalcVShape(const IntegrationPoint &ip,
1068 DenseMatrix &shape) const override;
1069
1071 DenseMatrix &shape) const override
1072 { CalcVShape_RT(Trans, shape); }
1073
1074 void CalcDivShape(const IntegrationPoint &ip,
1075 Vector &divshape) const override;
1076
1078 DenseMatrix &I) const override;
1079
1081
1082 void Project(VectorCoefficient &vc,
1083 ElementTransformation &Trans, Vector &dofs) const override;
1084};
1085
1086
1087/// A 3D 1st order Raviert-Thomas element on a cube
1089{
1090private:
1091 static const real_t nk[36][3];
1092
1093public:
1094 /// Construct the RT1HexFiniteElement
1096
1097 void CalcVShape(const IntegrationPoint &ip,
1098 DenseMatrix &shape) const override;
1099
1101 DenseMatrix &shape) const override
1102 { CalcVShape_RT(Trans, shape); }
1103
1104 void CalcDivShape(const IntegrationPoint &ip,
1105 Vector &divshape) const override;
1106
1108 DenseMatrix &I) const override;
1109
1111
1112 void Project(VectorCoefficient &vc,
1113 ElementTransformation &Trans, Vector &dofs) const override;
1114};
1115
1116
1117/// A 3D 0th order Raviert-Thomas element on a tetrahedron
1119{
1120private:
1121 static const real_t nk[4][3];
1122
1123public:
1124 /// Construct the RT0TetFiniteElement
1126
1127 void CalcVShape(const IntegrationPoint &ip,
1128 DenseMatrix &shape) const override;
1129
1131 DenseMatrix &shape) const override
1132 { CalcVShape_RT(Trans, shape); }
1133
1134 void CalcDivShape(const IntegrationPoint &ip,
1135 Vector &divshape) const override;
1136
1138 DenseMatrix &I) const override;
1139
1141
1142 void Project(VectorCoefficient &vc,
1143 ElementTransformation &Trans, Vector &dofs) const override;
1144};
1145
1146
1147/// A 3D 0th order Raviert-Thomas element on a wedge
1149{
1150private:
1151 static const real_t nk[5][3];
1152
1153public:
1154 /// Construct the RT0WdgFiniteElement
1156
1157 void CalcVShape(const IntegrationPoint &ip,
1158 DenseMatrix &shape) const override;
1159
1161 DenseMatrix &shape) const override
1162 { CalcVShape_RT(Trans, shape); }
1163
1164 void CalcDivShape(const IntegrationPoint &ip,
1165 Vector &divshape) const override;
1166
1168 DenseMatrix &I) const override;
1169
1171
1172 void Project(VectorCoefficient &vc,
1173 ElementTransformation &Trans, Vector &dofs) const override;
1174
1175 void ProjectCurl(const FiniteElement &fe,
1176 ElementTransformation &Trans,
1177 DenseMatrix &curl) const override;
1178};
1179
1180
1181/// A 3D 0th order Raviert-Thomas element on a pyramid
1183{
1184private:
1185 static const real_t nk[5][3];
1186
1187 // If true match RT0TetFiniteElement rather than RT_TetrahedronElement(0)
1188 bool rt0;
1189
1190public:
1191 /// Construct the RT0PyrFiniteElement
1192 RT0PyrFiniteElement(bool rt0tets = true);
1193
1194 void CalcVShape(const IntegrationPoint &ip,
1195 DenseMatrix &shape) const override;
1196
1198 DenseMatrix &shape) const override
1199 { CalcVShape_RT(Trans, shape); }
1200
1201 void CalcDivShape(const IntegrationPoint &ip,
1202 Vector &divshape) const override;
1203
1205 DenseMatrix &I) const override;
1206
1208
1209 void Project(VectorCoefficient &vc,
1210 ElementTransformation &Trans, Vector &dofs) const override;
1211
1212 void ProjectCurl(const FiniteElement &fe,
1213 ElementTransformation &Trans,
1214 DenseMatrix &curl) const override;
1215};
1216
1217
1219{
1220public:
1221 /// Construct the RotTriLinearHexFiniteElement
1223 void CalcShape(const IntegrationPoint &ip, Vector &shape) const override;
1224 void CalcDShape(const IntegrationPoint &ip,
1225 DenseMatrix &dshape) const override;
1226};
1227
1228
1229} // namespace mfem
1230
1231#endif
A 2D bi-cubic element on a square with uniformly spaces nodes.
void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const override
Evaluate the gradients of all shape functions of a scalar finite element in reference space at the gi...
BiCubic2DFiniteElement()
Construct the BiCubic2DFiniteElement.
void CalcShape(const IntegrationPoint &ip, Vector &shape) const override
Evaluate the values of all shape functions of a scalar finite element in reference space at the given...
void CalcHessian(const IntegrationPoint &ip, DenseMatrix &h) const override
Compute the Hessian of second order partial derivatives at ip.
Class for cubic FE on wedge.
BiCubic3DFiniteElement()
Construct a cubic FE on wedge.
A 2D bi-linear element on a square with nodes at the vertices of the square.
void CalcHessian(const IntegrationPoint &ip, DenseMatrix &h) const override
Evaluate the Hessians of all shape functions of a scalar finite element in reference space at the giv...
void ProjectDelta(int vertex, Vector &dofs) const override
Project a delta function centered on the given vertex in the local finite dimensional space represent...
void CalcShape(const IntegrationPoint &ip, Vector &shape) const override
void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const override
BiLinear2DFiniteElement()
Construct the BiLinear2DFiniteElement.
Class for linear FE on wedge.
BiLinear3DFiniteElement()
Construct a linear FE on wedge.
A 2D bi-quadratic element on a square with uniformly spaced nodes.
void CalcShape(const IntegrationPoint &ip, Vector &shape) const override
BiQuad2DFiniteElement()
Construct the BiQuad2DFiniteElement.
void ProjectDelta(int vertex, Vector &dofs) const override
Project a delta function centered on the given vertex in the local finite dimensional space represent...
void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const override
Class for quadratic FE on wedge.
BiQuadratic3DFiniteElement()
Construct a quadratic FE on wedge.
A 2D Crouzeix-Raviart element on triangle.
void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const override
Evaluate the gradients of all shape functions of a scalar finite element in reference space at the gi...
CrouzeixRaviartFiniteElement()
Construct the CrouzeixRaviartFiniteElement.
void ProjectDelta(int vertex, Vector &dofs) const override
Project a delta function centered on the given vertex in the local finite dimensional space represent...
void CalcShape(const IntegrationPoint &ip, Vector &shape) const override
Evaluate the values of all shape functions of a scalar finite element in reference space at the given...
A 2D Crouzeix-Raviart finite element on square.
CrouzeixRaviartQuadFiniteElement()
Construct the CrouzeixRaviartQuadFiniteElement.
void CalcShape(const IntegrationPoint &ip, Vector &shape) const override
Evaluate the values of all shape functions of a scalar finite element in reference space at the given...
void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const override
Evaluate the gradients of all shape functions of a scalar finite element in reference space at the gi...
A 1D cubic element with uniformly spaced nodes.
void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const override
Evaluate the gradients of all shape functions of a scalar finite element in reference space at the gi...
void CalcShape(const IntegrationPoint &ip, Vector &shape) const override
Evaluate the values of all shape functions of a scalar finite element in reference space at the given...
Cubic1DFiniteElement()
Construct the Cubic1DFiniteElement.
A 2D cubic element on a triangle with uniformly spaced nodes.
Cubic2DFiniteElement()
Construct the Cubic2DFiniteElement.
void CalcHessian(const IntegrationPoint &ip, DenseMatrix &h) const override
Evaluate the Hessians of all shape functions of a scalar finite element in reference space at the giv...
void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const override
Evaluate the gradients of all shape functions of a scalar finite element in reference space at the gi...
void CalcShape(const IntegrationPoint &ip, Vector &shape) const override
Evaluate the values of all shape functions of a scalar finite element in reference space at the given...
void CalcShape(const IntegrationPoint &ip, Vector &shape) const override
Evaluate the values of all shape functions of a scalar finite element in reference space at the given...
Cubic3DFiniteElement()
Construct the Cubic3DFiniteElement.
void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const override
Evaluate the gradients of all shape functions of a scalar finite element in reference space at the gi...
Data type dense matrix using column-major storage.
Definition densemat.hpp:24
Abstract class for all finite elements.
Definition fe_base.hpp:294
virtual void Project(Coefficient &coeff, ElementTransformation &Trans, Vector &dofs) const
Given a coefficient and a transformation, compute its projection (approximation) in the local finite ...
Definition fe_base.cpp:136
A 2D bi-linear element on a square with nodes at the "Gaussian" points.
void ProjectDelta(int vertex, Vector &dofs) const override
Project a delta function centered on the given vertex in the local finite dimensional space represent...
void CalcShape(const IntegrationPoint &ip, Vector &shape) const override
Evaluate the values of all shape functions of a scalar finite element in reference space at the given...
void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const override
Evaluate the gradients of all shape functions of a scalar finite element in reference space at the gi...
GaussBiLinear2DFiniteElement()
Construct the FiniteElement.
A 2D bi-quadratic element on a square with nodes at the 9 "Gaussian" points.
GaussBiQuad2DFiniteElement()
Construct the GaussBiQuad2DFiniteElement.
void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const override
Evaluate the gradients of all shape functions of a scalar finite element in reference space at the gi...
void CalcShape(const IntegrationPoint &ip, Vector &shape) const override
Evaluate the values of all shape functions of a scalar finite element in reference space at the given...
A linear element on a triangle with nodes at the 3 "Gaussian" points.
void ProjectDelta(int vertex, Vector &dofs) const override
Project a delta function centered on the given vertex in the local finite dimensional space represent...
void CalcShape(const IntegrationPoint &ip, Vector &shape) const override
Evaluate the values of all shape functions of a scalar finite element in reference space at the given...
GaussLinear2DFiniteElement()
Construct the GaussLinear2DFiniteElement.
void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const override
Evaluate the gradients of all shape functions of a scalar finite element in reference space at the gi...
A quadratic element on triangle with nodes at the "Gaussian" points.
void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const override
Evaluate the gradients of all shape functions of a scalar finite element in reference space at the gi...
void CalcShape(const IntegrationPoint &ip, Vector &shape) const override
Evaluate the values of all shape functions of a scalar finite element in reference space at the given...
GaussQuad2DFiniteElement()
Construct the GaussQuad2DFiniteElement.
Arbitrary order H1 elements in 3D on a wedge.
Definition fe_h1.hpp:132
Class for integration point with weight.
Definition intrules.hpp:35
Arbitrary order L2 elements in 3D on a wedge.
Definition fe_l2.hpp:167
A 1D element with uniform nodes.
void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const override
Evaluate the gradients of all shape functions of a scalar finite element in reference space at the gi...
Lagrange1DFiniteElement(int degree)
Construct the Lagrange1DFiniteElement with the provided degree.
void CalcShape(const IntegrationPoint &ip, Vector &shape) const override
Evaluate the values of all shape functions of a scalar finite element in reference space at the given...
Tensor products of 1D Lagrange1DFiniteElement (only degree 2 is functional)
void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const override
Evaluate the gradients of all shape functions of a scalar finite element in reference space at the gi...
LagrangeHexFiniteElement(int degree)
Construct the LagrangeHexFiniteElement with the provided degree.
void CalcShape(const IntegrationPoint &ip, Vector &shape) const override
Evaluate the values of all shape functions of a scalar finite element in reference space at the given...
A 1D linear element with nodes on the endpoints.
void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const override
void CalcShape(const IntegrationPoint &ip, Vector &shape) const override
Linear1DFiniteElement()
Construct the Linear1DFiniteElement.
void CalcHessian(const IntegrationPoint &ip, DenseMatrix &h) const override
Evaluate the Hessians of all shape functions of a scalar finite element in reference space at the giv...
A 2D linear element on triangle with nodes at the vertices of the triangle.
Linear2DFiniteElement()
Construct the Linear2DFiniteElement.
void CalcShape(const IntegrationPoint &ip, Vector &shape) const override
void CalcHessian(const IntegrationPoint &ip, DenseMatrix &h) const override
Evaluate the Hessians of all shape functions of a scalar finite element in reference space at the giv...
void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const override
void ProjectDelta(int vertex, Vector &dofs) const override
Project a delta function centered on the given vertex in the local finite dimensional space represent...
A 3D linear element on a tetrahedron with nodes at the vertices of the tetrahedron.
void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const override
virtual function which evaluates the values of all partial derivatives of all shape functions at a gi...
void CalcShape(const IntegrationPoint &ip, Vector &shape) const override
virtual function which evaluates the values of all shape functions at a given point ip and stores the...
void GetFaceDofs(int face, int **dofs, int *ndofs) const override
Get the dofs associated with the given face. *dofs is set to an internal array of the local dofc on t...
Linear3DFiniteElement()
Construct the Linear3DFiniteElement.
void CalcHessian(const IntegrationPoint &ip, DenseMatrix &h) const override
Evaluate the Hessians of all shape functions of a scalar finite element in reference space at the giv...
void ProjectDelta(int vertex, Vector &dofs) const override
Project a delta function centered on the given vertex in the local finite dimensional space represent...
A linear element defined on a square pyramid.
void ProjectDelta(int vertex, Vector &dofs) const override
Project a delta function centered on the given vertex in the local finite dimensional space represent...
void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const override
virtual function which evaluates the values of all partial derivatives of all shape functions at a gi...
LinearPyramidFiniteElement()
Construct the LinearPyramidFiniteElement.
void GetFaceDofs(int face, int **dofs, int *ndofs) const override
Get the dofs associated with the given face. *dofs is set to an internal array of the local dofc on t...
void CalcShape(const IntegrationPoint &ip, Vector &shape) const override
virtual function which evaluates the values of all shape functions at a given point ip and stores the...
A linear element defined on a triangular prism.
void ProjectDelta(int vertex, Vector &dofs) const override
Project a delta function centered on the given vertex in the local finite dimensional space represent...
void GetFaceDofs(int face, int **dofs, int *ndofs) const override
Get the dofs associated with the given face. *dofs is set to an internal array of the local dofc on t...
void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const override
virtual function which evaluates the values of all partial derivatives of all shape functions at a gi...
void CalcShape(const IntegrationPoint &ip, Vector &shape) const override
virtual function which evaluates the values of all shape functions at a given point ip and stores the...
LinearWedgeFiniteElement()
Construct the LinearWedgeFiniteElement.
A 3D 1st order Nedelec element on a cube.
void CalcVShape(const IntegrationPoint &ip, DenseMatrix &shape) const override
Evaluate the values of all shape functions of a vector finite element in reference space at the given...
void CalcVShape(ElementTransformation &Trans, DenseMatrix &shape) const override
Evaluate the values of all shape functions of a vector finite element in physical space at the point ...
void GetLocalInterpolation(ElementTransformation &Trans, DenseMatrix &I) const override
Return the local interpolation matrix I (Dof x Dof) where the fine element is the image of the base g...
Nedelec1HexFiniteElement()
Construct the Nedelec1HexFiniteElement.
void Project(VectorCoefficient &vc, ElementTransformation &Trans, Vector &dofs) const override
Given a vector coefficient and a transformation, compute its projection (approximation) in the local ...
void CalcCurlShape(const IntegrationPoint &ip, DenseMatrix &curl_shape) const override
Evaluate the curl of all shape functions of a vector finite element in reference space at the given p...
void ProjectGrad(const FiniteElement &fe, ElementTransformation &Trans, DenseMatrix &grad) const override
Compute the discrete gradient matrix from the given FiniteElement onto 'this' FiniteElement....
A 3D 1st order Nedelec element on a pyramid.
Nedelec1PyrFiniteElement()
Construct the Nedelec1PyrFiniteElement.
void CalcVShape(const IntegrationPoint &ip, DenseMatrix &shape) const override
Evaluate the values of all shape functions of a vector finite element in reference space at the given...
void CalcCurlShape(const IntegrationPoint &ip, DenseMatrix &curl_shape) const override
Evaluate the curl of all shape functions of a vector finite element in reference space at the given p...
void ProjectGrad(const FiniteElement &fe, ElementTransformation &Trans, DenseMatrix &grad) const override
Compute the discrete gradient matrix from the given FiniteElement onto 'this' FiniteElement....
void GetLocalInterpolation(ElementTransformation &Trans, DenseMatrix &I) const override
Return the local interpolation matrix I (Dof x Dof) where the fine element is the image of the base g...
void Project(VectorCoefficient &vc, ElementTransformation &Trans, Vector &dofs) const override
Given a vector coefficient and a transformation, compute its projection (approximation) in the local ...
void CalcVShape(ElementTransformation &Trans, DenseMatrix &shape) const override
Evaluate the values of all shape functions of a vector finite element in physical space at the point ...
A 3D 1st order Nedelec element on a tetrahedron.
Nedelec1TetFiniteElement()
Construct the Nedelec1TetFiniteElement.
void Project(VectorCoefficient &vc, ElementTransformation &Trans, Vector &dofs) const override
Given a vector coefficient and a transformation, compute its projection (approximation) in the local ...
void CalcVShape(const IntegrationPoint &ip, DenseMatrix &shape) const override
Evaluate the values of all shape functions of a vector finite element in reference space at the given...
void CalcCurlShape(const IntegrationPoint &ip, DenseMatrix &curl_shape) const override
Evaluate the curl of all shape functions of a vector finite element in reference space at the given p...
void CalcVShape(ElementTransformation &Trans, DenseMatrix &shape) const override
Evaluate the values of all shape functions of a vector finite element in physical space at the point ...
void ProjectGrad(const FiniteElement &fe, ElementTransformation &Trans, DenseMatrix &grad) const override
Compute the discrete gradient matrix from the given FiniteElement onto 'this' FiniteElement....
void GetLocalInterpolation(ElementTransformation &Trans, DenseMatrix &I) const override
Return the local interpolation matrix I (Dof x Dof) where the fine element is the image of the base g...
A 3D 1st order Nedelec element on a wedge.
void ProjectGrad(const FiniteElement &fe, ElementTransformation &Trans, DenseMatrix &grad) const override
Compute the discrete gradient matrix from the given FiniteElement onto 'this' FiniteElement....
void Project(VectorCoefficient &vc, ElementTransformation &Trans, Vector &dofs) const override
Given a vector coefficient and a transformation, compute its projection (approximation) in the local ...
void CalcCurlShape(const IntegrationPoint &ip, DenseMatrix &curl_shape) const override
Evaluate the curl of all shape functions of a vector finite element in reference space at the given p...
Nedelec1WdgFiniteElement()
Construct the Nedelec1WdgFiniteElement.
void CalcVShape(ElementTransformation &Trans, DenseMatrix &shape) const override
Evaluate the values of all shape functions of a vector finite element in physical space at the point ...
void CalcVShape(const IntegrationPoint &ip, DenseMatrix &shape) const override
Evaluate the values of all shape functions of a vector finite element in reference space at the given...
void GetLocalInterpolation(ElementTransformation &Trans, DenseMatrix &I) const override
Return the local interpolation matrix I (Dof x Dof) where the fine element is the image of the base g...
A 3D 2nd order Nedelec element on a pyramid.
virtual void GetLocalInterpolation(ElementTransformation &Trans, DenseMatrix &I) const
Return the local interpolation matrix I (Dof x Dof) where the fine element is the image of the base g...
Nedelec2PyrFiniteElement()
Construct the Nedelec2PyrFiniteElement.
virtual void Project(VectorCoefficient &vc, ElementTransformation &Trans, Vector &dofs) const
Given a vector coefficient and a transformation, compute its projection (approximation) in the local ...
virtual void ProjectGrad(const FiniteElement &fe, ElementTransformation &Trans, DenseMatrix &grad) const
Compute the discrete gradient matrix from the given FiniteElement onto 'this' FiniteElement....
virtual void CalcVShape(ElementTransformation &Trans, DenseMatrix &shape) const
Evaluate the values of all shape functions of a vector finite element in physical space at the point ...
virtual void CalcVShape(const IntegrationPoint &ip, DenseMatrix &shape) const
Evaluate the values of all shape functions of a vector finite element in reference space at the given...
virtual void CalcCurlShape(const IntegrationPoint &ip, DenseMatrix &curl_shape) const
Evaluate the curl of all shape functions of a vector finite element in reference space at the given p...
Class for standard nodal finite elements.
Definition fe_base.hpp:798
A 3D constant element on a cube.
void ProjectDelta(int vertex, Vector &dofs) const override
Project a delta function centered on the given vertex in the local finite dimensional space represent...
void CalcShape(const IntegrationPoint &ip, Vector &shape) const override
Evaluate the values of all shape functions of a scalar finite element in reference space at the given...
void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const override
Evaluate the gradients of all shape functions of a scalar finite element in reference space at the gi...
P0HexFiniteElement()
Construct the P0HexFiniteElement.
A 3D constant element on a pyramid.
void CalcShape(const IntegrationPoint &ip, Vector &shape) const override
Evaluate the values of all shape functions of a scalar finite element in reference space at the given...
void ProjectDelta(int vertex, Vector &dofs) const override
Project a delta function centered on the given vertex in the local finite dimensional space represent...
void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const override
Evaluate the gradients of all shape functions of a scalar finite element in reference space at the gi...
P0PyrFiniteElement()
Construct the P0PyrFiniteElement.
A 2D constant element on a square.
void CalcShape(const IntegrationPoint &ip, Vector &shape) const override
Evaluate the values of all shape functions of a scalar finite element in reference space at the given...
void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const override
Evaluate the gradients of all shape functions of a scalar finite element in reference space at the gi...
void ProjectDelta(int vertex, Vector &dofs) const override
Project a delta function centered on the given vertex in the local finite dimensional space represent...
P0QuadFiniteElement()
Construct the P0QuadFiniteElement.
A 1D constant element on a segment.
P0SegmentFiniteElement(int Ord=0)
Construct the P0SegmentFiniteElement with dummy order Ord.
void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const override
Evaluate the gradients of all shape functions of a scalar finite element in reference space at the gi...
void CalcShape(const IntegrationPoint &ip, Vector &shape) const override
Evaluate the values of all shape functions of a scalar finite element in reference space at the given...
A 3D constant element on a tetrahedron.
void CalcShape(const IntegrationPoint &ip, Vector &shape) const override
Evaluate the values of all shape functions of a scalar finite element in reference space at the given...
P0TetFiniteElement()
Construct the P0TetFiniteElement.
void ProjectDelta(int vertex, Vector &dofs) const override
Project a delta function centered on the given vertex in the local finite dimensional space represent...
void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const override
Evaluate the gradients of all shape functions of a scalar finite element in reference space at the gi...
A 2D constant element on a triangle.
void ProjectDelta(int vertex, Vector &dofs) const override
Project a delta function centered on the given vertex in the local finite dimensional space represent...
void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const override
evaluate derivatives of shape function - constant 0
P0TriangleFiniteElement()
Construct the P0TriangleFiniteElement.
void CalcShape(const IntegrationPoint &ip, Vector &shape) const override
evaluate shape function - constant 1
A 3D constant element on a wedge.
void CalcShape(const IntegrationPoint &ip, Vector &shape) const override
Evaluate the values of all shape functions of a scalar finite element in reference space at the given...
P0WdgFiniteElement()
Construct the P0WdgFiniteElement.
void ProjectDelta(int vertex, Vector &dofs) const override
Project a delta function centered on the given vertex in the local finite dimensional space represent...
void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const override
Evaluate the gradients of all shape functions of a scalar finite element in reference space at the gi...
A 0th order L2 element on a Wedge.
P0WedgeFiniteElement()
Construct the P0WedgeFiniteElement.
A 2D linear element on a square with 3 nodes at the vertices of the lower left triangle.
void ProjectDelta(int vertex, Vector &dofs) const override
Project a delta function centered on the given vertex in the local finite dimensional space represent...
void CalcShape(const IntegrationPoint &ip, Vector &shape) const override
Evaluate the values of all shape functions of a scalar finite element in reference space at the given...
void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const override
Evaluate the gradients of all shape functions of a scalar finite element in reference space at the gi...
P1OnQuadFiniteElement()
Construct the P1OnQuadFiniteElement.
A 1D linear element with nodes at 1/3 and 2/3 (trace of RT1)
void CalcShape(const IntegrationPoint &ip, Vector &shape) const override
Evaluate the values of all shape functions of a scalar finite element in reference space at the given...
P1SegmentFiniteElement()
Construct the P1SegmentFiniteElement.
void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const override
Evaluate the gradients of all shape functions of a scalar finite element in reference space at the gi...
A 3D Crouzeix-Raviart element on the tetrahedron.
P1TetNonConfFiniteElement()
Construct the P1TetNonConfFiniteElement.
void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const override
Evaluate the gradients of all shape functions of a scalar finite element in reference space at the gi...
void CalcShape(const IntegrationPoint &ip, Vector &shape) const override
Evaluate the values of all shape functions of a scalar finite element in reference space at the given...
A 1D quadratic element with nodes at the Gaussian points (trace of RT2)
P2SegmentFiniteElement()
Construct the P2SegmentFiniteElement.
void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const override
Evaluate the gradients of all shape functions of a scalar finite element in reference space at the gi...
void CalcShape(const IntegrationPoint &ip, Vector &shape) const override
Evaluate the values of all shape functions of a scalar finite element in reference space at the given...
A 0D point finite element.
void CalcShape(const IntegrationPoint &ip, Vector &shape) const override
Evaluate the values of all shape functions of a scalar finite element in reference space at the given...
void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const override
Evaluate the gradients of all shape functions of a scalar finite element in reference space at the gi...
PointFiniteElement()
Construct the PointFiniteElement.
A 1D quadratic finite element with uniformly spaced nodes.
void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const override
void CalcShape(const IntegrationPoint &ip, Vector &shape) const override
Quad1DFiniteElement()
Construct the Quad1DFiniteElement.
A 2D quadratic element on triangle with nodes at the vertices and midpoints of the triangle.
void CalcShape(const IntegrationPoint &ip, Vector &shape) const override
Quad2DFiniteElement()
Construct the Quad2DFiniteElement.
void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const override
void ProjectDelta(int vertex, Vector &dofs) const override
Project a delta function centered on the given vertex in the local finite dimensional space represent...
void CalcHessian(const IntegrationPoint &ip, DenseMatrix &h) const override
Evaluate the Hessians of all shape functions of a scalar finite element in reference space at the giv...
A 3D quadratic element on a tetrahedron with uniformly spaced nodes.
void CalcShape(const IntegrationPoint &ip, Vector &shape) const override
Evaluate the values of all shape functions of a scalar finite element in reference space at the given...
Quadratic3DFiniteElement()
Construct the Quadratic3DFiniteElement.
void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const override
Evaluate the gradients of all shape functions of a scalar finite element in reference space at the gi...
A 3D 0th order Raviert-Thomas element on a cube.
void CalcVShape(ElementTransformation &Trans, DenseMatrix &shape) const override
Evaluate the values of all shape functions of a vector finite element in physical space at the point ...
RT0HexFiniteElement()
Construct the RT0HexFiniteElement.
void CalcDivShape(const IntegrationPoint &ip, Vector &divshape) const override
Evaluate the divergence of all shape functions of a vector finite element in reference space at the g...
void CalcVShape(const IntegrationPoint &ip, DenseMatrix &shape) const override
Evaluate the values of all shape functions of a vector finite element in reference space at the given...
void Project(VectorCoefficient &vc, ElementTransformation &Trans, Vector &dofs) const override
Given a vector coefficient and a transformation, compute its projection (approximation) in the local ...
void GetLocalInterpolation(ElementTransformation &Trans, DenseMatrix &I) const override
Return the local interpolation matrix I (Dof x Dof) where the fine element is the image of the base g...
A 3D 0th order Raviert-Thomas element on a pyramid.
void ProjectCurl(const FiniteElement &fe, ElementTransformation &Trans, DenseMatrix &curl) const override
Compute the discrete curl matrix from the given FiniteElement onto 'this' FiniteElement....
void CalcVShape(const IntegrationPoint &ip, DenseMatrix &shape) const override
Evaluate the values of all shape functions of a vector finite element in reference space at the given...
void Project(VectorCoefficient &vc, ElementTransformation &Trans, Vector &dofs) const override
Given a vector coefficient and a transformation, compute its projection (approximation) in the local ...
void GetLocalInterpolation(ElementTransformation &Trans, DenseMatrix &I) const override
Return the local interpolation matrix I (Dof x Dof) where the fine element is the image of the base g...
void CalcVShape(ElementTransformation &Trans, DenseMatrix &shape) const override
Evaluate the values of all shape functions of a vector finite element in physical space at the point ...
void CalcDivShape(const IntegrationPoint &ip, Vector &divshape) const override
Evaluate the divergence of all shape functions of a vector finite element in reference space at the g...
RT0PyrFiniteElement(bool rt0tets=true)
Construct the RT0PyrFiniteElement.
A 2D 1st order Raviart-Thomas vector element on a square.
RT0QuadFiniteElement()
Construct the RT0QuadFiniteElement.
void Project(VectorCoefficient &vc, ElementTransformation &Trans, Vector &dofs) const override
Given a vector coefficient and a transformation, compute its projection (approximation) in the local ...
void CalcDivShape(const IntegrationPoint &ip, Vector &divshape) const override
Evaluate the divergence of all shape functions of a vector finite element in reference space at the g...
void CalcVShape(ElementTransformation &Trans, DenseMatrix &shape) const override
Evaluate the values of all shape functions of a vector finite element in physical space at the point ...
void GetLocalInterpolation(ElementTransformation &Trans, DenseMatrix &I) const override
Return the local interpolation matrix I (Dof x Dof) where the fine element is the image of the base g...
void CalcVShape(const IntegrationPoint &ip, DenseMatrix &shape) const override
Evaluate the values of all shape functions of a vector finite element in reference space at the given...
A 3D 0th order Raviert-Thomas element on a tetrahedron.
void GetLocalInterpolation(ElementTransformation &Trans, DenseMatrix &I) const override
Return the local interpolation matrix I (Dof x Dof) where the fine element is the image of the base g...
void CalcVShape(const IntegrationPoint &ip, DenseMatrix &shape) const override
Evaluate the values of all shape functions of a vector finite element in reference space at the given...
RT0TetFiniteElement()
Construct the RT0TetFiniteElement.
void CalcDivShape(const IntegrationPoint &ip, Vector &divshape) const override
Evaluate the divergence of all shape functions of a vector finite element in reference space at the g...
void Project(VectorCoefficient &vc, ElementTransformation &Trans, Vector &dofs) const override
Given a vector coefficient and a transformation, compute its projection (approximation) in the local ...
void CalcVShape(ElementTransformation &Trans, DenseMatrix &shape) const override
Evaluate the values of all shape functions of a vector finite element in physical space at the point ...
A 2D 1st order Raviart-Thomas vector element on a triangle.
void CalcVShape(ElementTransformation &Trans, DenseMatrix &shape) const override
Evaluate the values of all shape functions of a vector finite element in physical space at the point ...
void GetLocalInterpolation(ElementTransformation &Trans, DenseMatrix &I) const override
Return the local interpolation matrix I (Dof x Dof) where the fine element is the image of the base g...
void CalcDivShape(const IntegrationPoint &ip, Vector &divshape) const override
Evaluate the divergence of all shape functions of a vector finite element in reference space at the g...
RT0TriangleFiniteElement()
Construct the RT0TriangleFiniteElement.
void CalcVShape(const IntegrationPoint &ip, DenseMatrix &shape) const override
Evaluate the values of all shape functions of a vector finite element in reference space at the given...
void Project(VectorCoefficient &vc, ElementTransformation &Trans, Vector &dofs) const override
Given a vector coefficient and a transformation, compute its projection (approximation) in the local ...
A 3D 0th order Raviert-Thomas element on a wedge.
void ProjectCurl(const FiniteElement &fe, ElementTransformation &Trans, DenseMatrix &curl) const override
Compute the discrete curl matrix from the given FiniteElement onto 'this' FiniteElement....
void CalcVShape(const IntegrationPoint &ip, DenseMatrix &shape) const override
Evaluate the values of all shape functions of a vector finite element in reference space at the given...
void CalcVShape(ElementTransformation &Trans, DenseMatrix &shape) const override
Evaluate the values of all shape functions of a vector finite element in physical space at the point ...
void CalcDivShape(const IntegrationPoint &ip, Vector &divshape) const override
Evaluate the divergence of all shape functions of a vector finite element in reference space at the g...
RT0WdgFiniteElement()
Construct the RT0WdgFiniteElement.
void Project(VectorCoefficient &vc, ElementTransformation &Trans, Vector &dofs) const override
Given a vector coefficient and a transformation, compute its projection (approximation) in the local ...
void GetLocalInterpolation(ElementTransformation &Trans, DenseMatrix &I) const override
Return the local interpolation matrix I (Dof x Dof) where the fine element is the image of the base g...
A 3D 1st order Raviert-Thomas element on a cube.
void CalcVShape(const IntegrationPoint &ip, DenseMatrix &shape) const override
Evaluate the values of all shape functions of a vector finite element in reference space at the given...
RT1HexFiniteElement()
Construct the RT1HexFiniteElement.
void CalcDivShape(const IntegrationPoint &ip, Vector &divshape) const override
Evaluate the divergence of all shape functions of a vector finite element in reference space at the g...
void GetLocalInterpolation(ElementTransformation &Trans, DenseMatrix &I) const override
Return the local interpolation matrix I (Dof x Dof) where the fine element is the image of the base g...
void CalcVShape(ElementTransformation &Trans, DenseMatrix &shape) const override
Evaluate the values of all shape functions of a vector finite element in physical space at the point ...
void Project(VectorCoefficient &vc, ElementTransformation &Trans, Vector &dofs) const override
Given a vector coefficient and a transformation, compute its projection (approximation) in the local ...
A 2D 2nd order Raviart-Thomas vector element on a square.
RT1QuadFiniteElement()
Construct the RT1QuadFiniteElement.
void CalcVShape(ElementTransformation &Trans, DenseMatrix &shape) const override
Evaluate the values of all shape functions of a vector finite element in physical space at the point ...
void CalcDivShape(const IntegrationPoint &ip, Vector &divshape) const override
Evaluate the divergence of all shape functions of a vector finite element in reference space at the g...
void GetLocalInterpolation(ElementTransformation &Trans, DenseMatrix &I) const override
Return the local interpolation matrix I (Dof x Dof) where the fine element is the image of the base g...
void Project(VectorCoefficient &vc, ElementTransformation &Trans, Vector &dofs) const override
Given a vector coefficient and a transformation, compute its projection (approximation) in the local ...
void CalcVShape(const IntegrationPoint &ip, DenseMatrix &shape) const override
Evaluate the values of all shape functions of a vector finite element in reference space at the given...
A 2D 2nd order Raviart-Thomas vector element on a triangle.
void Project(VectorCoefficient &vc, ElementTransformation &Trans, Vector &dofs) const override
Given a vector coefficient and a transformation, compute its projection (approximation) in the local ...
RT1TriangleFiniteElement()
Construct the RT1TriangleFiniteElement.
void CalcVShape(ElementTransformation &Trans, DenseMatrix &shape) const override
Evaluate the values of all shape functions of a vector finite element in physical space at the point ...
void CalcDivShape(const IntegrationPoint &ip, Vector &divshape) const override
Evaluate the divergence of all shape functions of a vector finite element in reference space at the g...
void CalcVShape(const IntegrationPoint &ip, DenseMatrix &shape) const override
Evaluate the values of all shape functions of a vector finite element in reference space at the given...
void GetLocalInterpolation(ElementTransformation &Trans, DenseMatrix &I) const override
Return the local interpolation matrix I (Dof x Dof) where the fine element is the image of the base g...
A 2D 3rd order Raviart-Thomas vector element on a square.
void CalcVShape(const IntegrationPoint &ip, DenseMatrix &shape) const override
Evaluate the values of all shape functions of a vector finite element in reference space at the given...
RT2QuadFiniteElement()
Construct the RT2QuadFiniteElement.
void CalcVShape(ElementTransformation &Trans, DenseMatrix &shape) const override
Evaluate the values of all shape functions of a vector finite element in physical space at the point ...
void GetLocalInterpolation(ElementTransformation &Trans, DenseMatrix &I) const override
Return the local interpolation matrix I (Dof x Dof) where the fine element is the image of the base g...
void Project(VectorCoefficient &vc, ElementTransformation &Trans, Vector &dofs) const override
Given a vector coefficient and a transformation, compute its projection (approximation) in the local ...
void CalcDivShape(const IntegrationPoint &ip, Vector &divshape) const override
Evaluate the divergence of all shape functions of a vector finite element in reference space at the g...
A 2D 3rd order Raviart-Thomas vector element on a triangle.
void CalcDivShape(const IntegrationPoint &ip, Vector &divshape) const override
Evaluate the divergence of all shape functions of a vector finite element in reference space at the g...
void CalcVShape(const IntegrationPoint &ip, DenseMatrix &shape) const override
Evaluate the values of all shape functions of a vector finite element in reference space at the given...
void CalcVShape(ElementTransformation &Trans, DenseMatrix &shape) const override
Evaluate the values of all shape functions of a vector finite element in physical space at the point ...
RT2TriangleFiniteElement()
Construct the RT2TriangleFiniteElement.
A 2D refined bi-linear FE on a square.
void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const override
RefinedBiLinear2DFiniteElement()
Construct the RefinedBiLinear2DFiniteElement.
void CalcShape(const IntegrationPoint &ip, Vector &shape) const override
A 1D refined linear element.
RefinedLinear1DFiniteElement()
Construct the RefinedLinear1DFiniteElement.
void CalcShape(const IntegrationPoint &ip, Vector &shape) const override
void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const override
A 2D refined linear element on a triangle.
RefinedLinear2DFiniteElement()
Construct the RefinedLinear2DFiniteElement.
void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const override
void CalcShape(const IntegrationPoint &ip, Vector &shape) const override
A 2D refined linear element on a tetrahedron.
void CalcShape(const IntegrationPoint &ip, Vector &shape) const override
Evaluate the values of all shape functions of a scalar finite element in reference space at the given...
void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const override
Evaluate the gradients of all shape functions of a scalar finite element in reference space at the gi...
RefinedLinear3DFiniteElement()
Construct the RefinedLinear3DFiniteElement.
A 3D refined tri-linear element on a cube.
RefinedTriLinear3DFiniteElement()
Construct the RefinedTriLinear3DFiniteElement.
void CalcShape(const IntegrationPoint &ip, Vector &shape) const override
void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const override
RotTriLinearHexFiniteElement()
Construct the RotTriLinearHexFiniteElement.
void CalcShape(const IntegrationPoint &ip, Vector &shape) const override
Evaluate the values of all shape functions of a scalar finite element in reference space at the given...
void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const override
Evaluate the gradients of all shape functions of a scalar finite element in reference space at the gi...
A 3D tri-linear element on a cube with nodes at the vertices of the cube.
TriLinear3DFiniteElement()
Construct the TriLinear3DFiniteElement.
void ProjectDelta(int vertex, Vector &dofs) const override
Project a delta function centered on the given vertex in the local finite dimensional space represent...
void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const override
void CalcHessian(const IntegrationPoint &ip, DenseMatrix &h) const override
Evaluate the Hessians of all shape functions of a scalar finite element in reference space at the giv...
void CalcShape(const IntegrationPoint &ip, Vector &shape) const override
Base class for vector Coefficients that optionally depend on time and space.
Intermediate class for finite elements whose basis functions return vector values.
Definition fe_base.hpp:890
void CalcVShape_ND(ElementTransformation &Trans, DenseMatrix &shape) const
Definition fe_base.cpp:1168
void CalcVShape_RT(ElementTransformation &Trans, DenseMatrix &shape) const
Definition fe_base.cpp:1156
Vector data type.
Definition vector.hpp:82
float real_t
Definition config.hpp:46