MFEM v4.7.0
Finite element discretization library
Loading...
Searching...
No Matches
fe_nd.hpp
Go to the documentation of this file.
1// Copyright (c) 2010-2024, 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_ND
13#define MFEM_FE_ND
14
15#include "fe_base.hpp"
16#include "fe_h1.hpp"
17
18namespace mfem
19{
20
21/// Arbitrary order Nedelec elements in 3D on a cube
23{
24 static const real_t tk[18];
25#ifndef MFEM_THREAD_SAFE
26 mutable Vector shape_cx, shape_ox, shape_cy, shape_oy, shape_cz, shape_oz;
27 mutable Vector dshape_cx, dshape_cy, dshape_cz;
28#endif
29 Array<int> dof2tk;
30 const real_t *cp;
31
32public:
33 /** @brief Construct the ND_HexahedronElement of order @a p and closed and
34 open BasisType @a cb_type and @a ob_type */
35 ND_HexahedronElement(const int p,
36 const int cb_type = BasisType::GaussLobatto,
37 const int ob_type = BasisType::GaussLegendre);
38
39 virtual void CalcVShape(const IntegrationPoint &ip,
40 DenseMatrix &shape) const;
41
42 virtual void CalcVShape(ElementTransformation &Trans,
43 DenseMatrix &shape) const
44 { CalcVShape_ND(Trans, shape); }
45
46 virtual void CalcCurlShape(const IntegrationPoint &ip,
47 DenseMatrix &curl_shape) const;
48
50 DenseMatrix &I) const
51 { LocalInterpolation_ND(*this, tk, dof2tk, Trans, I); }
52
54 DenseMatrix &R) const
55 { LocalRestriction_ND(tk, dof2tk, Trans, R); }
56
57 virtual void GetTransferMatrix(const FiniteElement &fe,
59 DenseMatrix &I) const
60 { LocalInterpolation_ND(CheckVectorFE(fe), tk, dof2tk, Trans, I); }
61
63
64 virtual void Project(VectorCoefficient &vc,
65 ElementTransformation &Trans, Vector &dofs) const
66 {
67 if (obasis1d.IsIntegratedType()) { ProjectIntegrated(vc, Trans, dofs); }
68 else { Project_ND(tk, dof2tk, vc, Trans, dofs); }
69 }
70
72 Vector &dofs) const
73 { Project_ND(tk, dof2tk, vc, Trans, dofs); }
74
77 { ProjectMatrixCoefficient_ND(tk, dof2tk, mc, T, dofs); }
78
79 virtual void Project(const FiniteElement &fe,
81 DenseMatrix &I) const
82 { Project_ND(tk, dof2tk, fe, Trans, I); }
83
84 virtual void ProjectGrad(const FiniteElement &fe,
86 DenseMatrix &grad) const
87 { ProjectGrad_ND(tk, dof2tk, fe, Trans, grad); }
88
89 virtual void ProjectCurl(const FiniteElement &fe,
91 DenseMatrix &curl) const
92 { ProjectCurl_ND(tk, dof2tk, fe, Trans, curl); }
93
94 virtual void GetFaceMap(const int face_id, Array<int> &face_map) const;
95
96protected:
99 Vector &dofs) const;
100};
101
102
103/// Arbitrary order Nedelec elements in 2D on a square
105{
106 static const real_t tk[8];
107
108#ifndef MFEM_THREAD_SAFE
109 mutable Vector shape_cx, shape_ox, shape_cy, shape_oy;
110 mutable Vector dshape_cx, dshape_cy;
111#endif
112 Array<int> dof2tk;
113 const real_t *cp;
114
115public:
116 /** @brief Construct the ND_QuadrilateralElement of order @a p and closed and
117 open BasisType @a cb_type and @a ob_type */
118 ND_QuadrilateralElement(const int p,
119 const int cb_type = BasisType::GaussLobatto,
120 const int ob_type = BasisType::GaussLegendre);
121 virtual void CalcVShape(const IntegrationPoint &ip,
122 DenseMatrix &shape) const;
124 DenseMatrix &shape) const
125 { CalcVShape_ND(Trans, shape); }
126 virtual void CalcCurlShape(const IntegrationPoint &ip,
127 DenseMatrix &curl_shape) const;
129 DenseMatrix &I) const
130 { LocalInterpolation_ND(*this, tk, dof2tk, Trans, I); }
132 DenseMatrix &R) const
133 { LocalRestriction_ND(tk, dof2tk, Trans, R); }
134 virtual void GetTransferMatrix(const FiniteElement &fe,
136 DenseMatrix &I) const
137 { LocalInterpolation_ND(CheckVectorFE(fe), tk, dof2tk, Trans, I); }
139 virtual void Project(VectorCoefficient &vc,
140 ElementTransformation &Trans, Vector &dofs) const
141 {
142 if (obasis1d.IsIntegratedType()) { ProjectIntegrated(vc, Trans, dofs); }
143 else { Project_ND(tk, dof2tk, vc, Trans, dofs); }
144 }
146 Vector &dofs) const
147 { Project_ND(tk, dof2tk, vc, Trans, dofs); }
150 { ProjectMatrixCoefficient_ND(tk, dof2tk, mc, T, dofs); }
151 virtual void Project(const FiniteElement &fe,
153 DenseMatrix &I) const
154 { Project_ND(tk, dof2tk, fe, Trans, I); }
155 virtual void ProjectGrad(const FiniteElement &fe,
157 DenseMatrix &grad) const
158 { ProjectGrad_ND(tk, dof2tk, fe, Trans, grad); }
159
160 virtual void GetFaceMap(const int face_id, Array<int> &face_map) const;
161
162protected:
165 Vector &dofs) const;
166};
167
168
169/// Arbitrary order Nedelec elements in 3D on a tetrahedron
171{
172 static const real_t tk[18], c;
173
174#ifndef MFEM_THREAD_SAFE
175 mutable Vector shape_x, shape_y, shape_z, shape_l;
176 mutable Vector dshape_x, dshape_y, dshape_z, dshape_l;
177 mutable DenseMatrix u;
178#endif
179 Array<int> dof2tk;
181
183
184public:
185 /// Construct the ND_TetrahedronElement of order @a p
186 ND_TetrahedronElement(const int p);
187 virtual void CalcVShape(const IntegrationPoint &ip,
188 DenseMatrix &shape) const;
190 DenseMatrix &shape) const
191 { CalcVShape_ND(Trans, shape); }
192 virtual void CalcCurlShape(const IntegrationPoint &ip,
193 DenseMatrix &curl_shape) const;
195 DenseMatrix &I) const
196 { LocalInterpolation_ND(*this, tk, dof2tk, Trans, I); }
198 DenseMatrix &R) const
199 { LocalRestriction_ND(tk, dof2tk, Trans, R); }
200 virtual void GetTransferMatrix(const FiniteElement &fe,
202 DenseMatrix &I) const
203 { LocalInterpolation_ND(CheckVectorFE(fe), tk, dof2tk, Trans, I); }
205 { return &doftrans; }
207 virtual void Project(VectorCoefficient &vc,
208 ElementTransformation &Trans, Vector &dofs) const
209 { Project_ND(tk, dof2tk, vc, Trans, dofs); }
211 Vector &dofs) const
212 { Project_ND(tk, dof2tk, vc, Trans, dofs); }
215 { ProjectMatrixCoefficient_ND(tk, dof2tk, mc, T, dofs); }
216 virtual void Project(const FiniteElement &fe,
218 DenseMatrix &I) const
219 { Project_ND(tk, dof2tk, fe, Trans, I); }
220 virtual void ProjectGrad(const FiniteElement &fe,
222 DenseMatrix &grad) const
223 { ProjectGrad_ND(tk, dof2tk, fe, Trans, grad); }
224
225 virtual void ProjectCurl(const FiniteElement &fe,
227 DenseMatrix &curl) const
228 { ProjectCurl_ND(tk, dof2tk, fe, Trans, curl); }
229};
230
231/// Arbitrary order Nedelec elements in 2D on a triangle
233{
234 static const real_t tk[8], c;
235
236#ifndef MFEM_THREAD_SAFE
237 mutable Vector shape_x, shape_y, shape_l;
238 mutable Vector dshape_x, dshape_y, dshape_l;
239 mutable DenseMatrix u;
240 mutable Vector curlu;
241#endif
242 Array<int> dof2tk;
244
246
247public:
248 /// Construct the ND_TriangleElement of order @a p
249 ND_TriangleElement(const int p);
250 virtual void CalcVShape(const IntegrationPoint &ip,
251 DenseMatrix &shape) const;
253 DenseMatrix &shape) const
254 { CalcVShape_ND(Trans, shape); }
255 virtual void CalcCurlShape(const IntegrationPoint &ip,
256 DenseMatrix &curl_shape) const;
258 DenseMatrix &I) const
259 { LocalInterpolation_ND(*this, tk, dof2tk, Trans, I); }
261 DenseMatrix &R) const
262 { LocalRestriction_ND(tk, dof2tk, Trans, R); }
263 virtual void GetTransferMatrix(const FiniteElement &fe,
265 DenseMatrix &I) const
266 { LocalInterpolation_ND(CheckVectorFE(fe), tk, dof2tk, Trans, I); }
268 { return &doftrans; }
270 virtual void Project(VectorCoefficient &vc,
271 ElementTransformation &Trans, Vector &dofs) const
272 { Project_ND(tk, dof2tk, vc, Trans, dofs); }
274 Vector &dofs) const
275 { Project_ND(tk, dof2tk, vc, Trans, dofs); }
278 { ProjectMatrixCoefficient_ND(tk, dof2tk, mc, T, dofs); }
279 virtual void Project(const FiniteElement &fe,
281 DenseMatrix &I) const
282 { Project_ND(tk, dof2tk, fe, Trans, I); }
283 virtual void ProjectGrad(const FiniteElement &fe,
285 DenseMatrix &grad) const
286 { ProjectGrad_ND(tk, dof2tk, fe, Trans, grad); }
287};
288
289
290/// Arbitrary order Nedelec elements in 1D on a segment
292{
293 static const real_t tk[1];
294
295 Array<int> dof2tk;
296
297public:
298 /** @brief Construct the ND_SegmentElement of order @a p and open
299 BasisType @a ob_type */
300 ND_SegmentElement(const int p, const int ob_type = BasisType::GaussLegendre);
301 virtual void CalcShape(const IntegrationPoint &ip, Vector &shape) const
302 { obasis1d.Eval(ip.x, shape); }
303 virtual void CalcVShape(const IntegrationPoint &ip,
304 DenseMatrix &shape) const;
306 DenseMatrix &shape) const
307 { CalcVShape_ND(Trans, shape); }
308 // virtual void CalcCurlShape(const IntegrationPoint &ip,
309 // DenseMatrix &curl_shape) const;
311 DenseMatrix &I) const
312 { LocalInterpolation_ND(*this, tk, dof2tk, Trans, I); }
314 DenseMatrix &R) const
315 { LocalRestriction_ND(tk, dof2tk, Trans, R); }
316 virtual void GetTransferMatrix(const FiniteElement &fe,
318 DenseMatrix &I) const
319 { LocalInterpolation_ND(CheckVectorFE(fe), tk, dof2tk, Trans, I); }
321 virtual void Project(VectorCoefficient &vc,
322 ElementTransformation &Trans, Vector &dofs) const
323 { Project_ND(tk, dof2tk, vc, Trans, dofs); }
326 { ProjectMatrixCoefficient_ND(tk, dof2tk, mc, T, dofs); }
327 virtual void Project(const FiniteElement &fe,
329 DenseMatrix &I) const
330 { Project_ND(tk, dof2tk, fe, Trans, I); }
331 virtual void ProjectGrad(const FiniteElement &fe,
333 DenseMatrix &grad) const
334 { ProjectGrad_ND(tk, dof2tk, fe, Trans, grad); }
335};
336
338{
339private:
340 static const real_t tk[15];
341
342#ifndef MFEM_THREAD_SAFE
343 mutable Vector t1_shape, s1_shape;
344 mutable DenseMatrix tn_shape, sn_shape;
345 mutable DenseMatrix t1_dshape, s1_dshape, tn_dshape;
346#endif
347 Array<int> dof2tk, t_dof, s_dof;
348
350
351 H1_TriangleElement H1TriangleFE;
352 ND_TriangleElement NDTriangleFE;
353 H1_SegmentElement H1SegmentFE;
354 ND_SegmentElement NDSegmentFE;
355
356public:
357 ND_WedgeElement(const int p,
358 const int cb_type = BasisType::GaussLobatto,
359 const int ob_type = BasisType::GaussLegendre);
360
361 virtual void CalcVShape(const IntegrationPoint &ip,
362 DenseMatrix &shape) const;
363
365 DenseMatrix &shape) const
366 { CalcVShape_ND(Trans, shape); }
367
368 virtual void CalcCurlShape(const IntegrationPoint &ip,
369 DenseMatrix &curl_shape) const;
370
372 DenseMatrix &I) const
373 { LocalInterpolation_ND(*this, tk, dof2tk, Trans, I); }
375 DenseMatrix &R) const
376 { LocalRestriction_ND(tk, dof2tk, Trans, R); }
377 virtual void GetTransferMatrix(const FiniteElement &fe,
379 DenseMatrix &I) const
380 { LocalInterpolation_ND(CheckVectorFE(fe), tk, dof2tk, Trans, I); }
381
383 { return &doftrans; }
384
386
387 virtual void Project(VectorCoefficient &vc,
388 ElementTransformation &Trans, Vector &dofs) const
389 { Project_ND(tk, dof2tk, vc, Trans, dofs); }
390
393 { ProjectMatrixCoefficient_ND(tk, dof2tk, mc, T, dofs); }
394
395 virtual void Project(const FiniteElement &fe,
397 DenseMatrix &I) const
398 { Project_ND(tk, dof2tk, fe, Trans, I); }
399
400 virtual void ProjectGrad(const FiniteElement &fe,
402 DenseMatrix &grad) const
403 { ProjectGrad_ND(tk, dof2tk, fe, Trans, grad); }
404
405 virtual void ProjectCurl(const FiniteElement &fe,
407 DenseMatrix &curl) const
408 { ProjectCurl_ND(tk, dof2tk, fe, Trans, curl); }
409};
410
411
412/// A 0D Nedelec finite element for the boundary of a 1D domain
413/** ND_R1D_PointElement provides a representation of the trace of a three
414 component Nedelec basis restricted to 1D.
415*/
417{
418 static const real_t tk[9];
419
420public:
421 /** @brief Construct the ND_R1D_PointElement */
423
425
426 virtual void CalcVShape(const IntegrationPoint &ip,
427 DenseMatrix &shape) const;
428
429 virtual void CalcVShape(ElementTransformation &Trans,
430 DenseMatrix &shape) const;
431};
432
433/// Arbitrary order, three component, Nedelec elements in 1D on a segment
434/** ND_R1D_SegmentElement provides a representation of a three component Nedelec
435 basis where the vector components vary along only one dimension.
436*/
438{
439 static const real_t tk[9];
440#ifndef MFEM_THREAD_SAFE
441 mutable Vector shape_cx, shape_ox;
442 mutable Vector dshape_cx;
443#endif
444 Array<int> dof_map, dof2tk;
445
446 Poly_1D::Basis &cbasis1d, &obasis1d;
447
448public:
449 /** @brief Construct the ND_R1D_SegmentElement of order @a p and closed and
450 open BasisType @a cb_type and @a ob_type */
451 ND_R1D_SegmentElement(const int p,
452 const int cb_type = BasisType::GaussLobatto,
453 const int ob_type = BasisType::GaussLegendre);
454
457
458 virtual void CalcVShape(const IntegrationPoint &ip,
459 DenseMatrix &shape) const;
460
461 virtual void CalcVShape(ElementTransformation &Trans,
462 DenseMatrix &shape) const;
463
464 virtual void CalcCurlShape(const IntegrationPoint &ip,
465 DenseMatrix &curl_shape) const;
466
467 virtual void CalcPhysCurlShape(ElementTransformation &Trans,
468 DenseMatrix &curl_shape) const;
469
471 DenseMatrix &I) const
472 { LocalInterpolation_ND(*this, tk, dof2tk, Trans, I); }
473
475 DenseMatrix &R) const
476 { LocalRestriction_ND(tk, dof2tk, Trans, R); }
477
478 virtual void GetTransferMatrix(const FiniteElement &fe,
480 DenseMatrix &I) const
481 { LocalInterpolation_ND(CheckVectorFE(fe), tk, dof2tk, Trans, I); }
482
484
485 virtual void Project(VectorCoefficient &vc,
486 ElementTransformation &Trans, Vector &dofs) const;
487
489 Vector &dofs) const
490 { Project_ND(tk, dof2tk, vc, Trans, dofs); }
491
494 { ProjectMatrixCoefficient_ND(tk, dof2tk, mc, T, dofs); }
495
496 virtual void Project(const FiniteElement &fe,
498 DenseMatrix &I) const;
499
500 virtual void ProjectGrad(const FiniteElement &fe,
502 DenseMatrix &grad) const
503 { ProjectGrad_ND(tk, dof2tk, fe, Trans, grad); }
504
505 virtual void ProjectCurl(const FiniteElement &fe,
507 DenseMatrix &curl) const
508 { ProjectCurl_ND(tk, dof2tk, fe, Trans, curl); }
509};
510
511
512/** ND_R2D_SegmentElement provides a representation of a 3D Nedelec
513 basis where the vector field is assumed constant in the third dimension.
514*/
516{
517 static const real_t tk[4];
518#ifndef MFEM_THREAD_SAFE
519 mutable Vector shape_cx, shape_ox;
520 mutable Vector dshape_cx;
521#endif
522 Array<int> dof_map, dof2tk;
523
524 Poly_1D::Basis &cbasis1d, &obasis1d;
525
526private:
527 void LocalInterpolation(const VectorFiniteElement &cfe,
529 DenseMatrix &I) const;
530
531public:
532 /** @brief Construct the ND_R2D_SegmentElement of order @a p and closed and
533 open BasisType @a cb_type and @a ob_type */
534 ND_R2D_SegmentElement(const int p,
535 const int cb_type = BasisType::GaussLobatto,
536 const int ob_type = BasisType::GaussLegendre);
537
538 virtual void CalcVShape(const IntegrationPoint &ip,
539 DenseMatrix &shape) const;
540
541 virtual void CalcVShape(ElementTransformation &Trans,
542 DenseMatrix &shape) const;
543
544 virtual void CalcCurlShape(const IntegrationPoint &ip,
545 DenseMatrix &curl_shape) const;
546
548 DenseMatrix &I) const
549 { LocalInterpolation(*this, Trans, I); }
550
552 DenseMatrix &R) const
553 { MFEM_ABORT("method is not overloaded"); }
554
555 virtual void GetTransferMatrix(const FiniteElement &fe,
557 DenseMatrix &I) const
558 { LocalInterpolation(CheckVectorFE(fe), Trans, I); }
559
561
562 virtual void Project(VectorCoefficient &vc,
563 ElementTransformation &Trans, Vector &dofs) const;
564};
565
567{
568protected:
569 const real_t *tk;
571
572 ND_R2D_FiniteElement(int p, Geometry::Type G, int Do, const real_t *tk_fe);
573
574private:
575 void LocalInterpolation(const VectorFiniteElement &cfe,
577 DenseMatrix &I) const;
578
579public:
582
583 virtual void CalcVShape(ElementTransformation &Trans,
584 DenseMatrix &shape) const;
585
586 virtual void CalcPhysCurlShape(ElementTransformation &Trans,
587 DenseMatrix &curl_shape) const;
588
590 DenseMatrix &I) const
591 { LocalInterpolation(*this, Trans, I); }
592
593 virtual void GetLocalRestriction(ElementTransformation &Trans,
594 DenseMatrix &R) const;
595
596 virtual void GetTransferMatrix(const FiniteElement &fe,
598 DenseMatrix &I) const
599 { LocalInterpolation(CheckVectorFE(fe), Trans, I); }
600
602
603 virtual void Project(VectorCoefficient &vc,
604 ElementTransformation &Trans, Vector &dofs) const;
605
606 virtual void Project(const FiniteElement &fe, ElementTransformation &Trans,
607 DenseMatrix &I) const;
608
609 virtual void ProjectGrad(const FiniteElement &fe,
611 DenseMatrix &grad) const;
612};
613
614/// Arbitrary order Nedelec 3D elements in 2D on a triangle
616{
617private:
618 static const real_t tk_t[15];
619
620#ifndef MFEM_THREAD_SAFE
621 mutable DenseMatrix nd_shape;
622 mutable Vector h1_shape;
623 mutable DenseMatrix nd_dshape;
624 mutable DenseMatrix h1_dshape;
625#endif
626
627 ND_TriangleElement ND_FE;
628 H1_TriangleElement H1_FE;
629
630public:
631 /// Construct the ND_R2D_TriangleElement of order @a p
632 ND_R2D_TriangleElement(const int p,
633 const int cb_type = BasisType::GaussLobatto);
634
637
638 virtual void CalcVShape(const IntegrationPoint &ip,
639 DenseMatrix &shape) const;
640 virtual void CalcCurlShape(const IntegrationPoint &ip,
641 DenseMatrix &curl_shape) const;
642};
643
644
645/// Arbitrary order Nedelec 3D elements in 2D on a square
647{
648 static const real_t tk_q[15];
649
650#ifndef MFEM_THREAD_SAFE
651 mutable Vector shape_cx, shape_ox, shape_cy, shape_oy;
652 mutable Vector dshape_cx, dshape_cy;
653#endif
654
655 Poly_1D::Basis &cbasis1d, &obasis1d;
656
657public:
658 /** @brief Construct the ND_R2D_QuadrilateralElement of order @a p and
659 closed and open BasisType @a cb_type and @a ob_type */
661 const int cb_type = BasisType::GaussLobatto,
662 const int ob_type = BasisType::GaussLegendre);
663
666
667 virtual void CalcVShape(const IntegrationPoint &ip,
668 DenseMatrix &shape) const;
669 virtual void CalcCurlShape(const IntegrationPoint &ip,
670 DenseMatrix &curl_shape) const;
671};
672
673
674} // namespace mfem
675
676#endif
@ GaussLobatto
Closed type.
Definition fe_base.hpp:32
@ GaussLegendre
Open type.
Definition fe_base.hpp:31
Data type dense matrix using column-major storage.
Definition densemat.hpp:24
Abstract class for all finite elements.
Definition fe_base.hpp:239
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...
Definition fe_base.cpp:40
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:126
virtual void CalcPhysCurlShape(ElementTransformation &Trans, DenseMatrix &curl_shape) const
Evaluate the curl of all shape functions of a vector finite element in physical space at the point de...
Definition fe_base.cpp:71
Arbitrary order H1 elements in 1D.
Definition fe_h1.hpp:22
Arbitrary order H1 elements in 2D on a triangle.
Definition fe_h1.hpp:84
Class for integration point with weight.
Definition intrules.hpp:35
Base class for Matrix Coefficients that optionally depend on time and space.
Arbitrary order Nedelec elements in 3D on a cube.
Definition fe_nd.hpp:23
virtual void ProjectGrad(const FiniteElement &fe, ElementTransformation &Trans, DenseMatrix &grad) const
Compute the discrete gradient matrix from the given FiniteElement onto 'this' FiniteElement....
Definition fe_nd.hpp:84
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 ...
Definition fe_nd.hpp:42
virtual void GetTransferMatrix(const FiniteElement &fe, ElementTransformation &Trans, DenseMatrix &I) const
Return interpolation matrix, I, which maps dofs from a coarse element, fe, to the fine dofs on this f...
Definition fe_nd.hpp:57
ND_HexahedronElement(const int p, const int cb_type=BasisType::GaussLobatto, const int ob_type=BasisType::GaussLegendre)
Construct the ND_HexahedronElement of order p and closed and open BasisType cb_type and ob_type.
Definition fe_nd.cpp:26
virtual void ProjectCurl(const FiniteElement &fe, ElementTransformation &Trans, DenseMatrix &curl) const
Compute the discrete curl matrix from the given FiniteElement onto 'this' FiniteElement....
Definition fe_nd.hpp:89
virtual void Project(VectorCoefficient &vc, ElementTransformation &Trans, Vector &dofs) const
Given a vector coefficient and a transformation, compute its projection (approximation) in the local ...
Definition fe_nd.hpp:64
virtual void ProjectMatrixCoefficient(MatrixCoefficient &mc, ElementTransformation &T, Vector &dofs) const
Given a matrix coefficient and a transformation, compute an approximation ("projection") in the local...
Definition fe_nd.hpp:75
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...
Definition fe_nd.cpp:400
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...
Definition fe_nd.hpp:49
virtual void ProjectFromNodes(Vector &vc, ElementTransformation &Trans, Vector &dofs) const
Given a vector of values at the finite element nodes and a transformation, compute its projection (ap...
Definition fe_nd.hpp:71
virtual void Project(const FiniteElement &fe, ElementTransformation &Trans, DenseMatrix &I) const
Compute the embedding/projection matrix from the given FiniteElement onto 'this' FiniteElement....
Definition fe_nd.hpp:79
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...
Definition fe_nd.cpp:310
virtual void GetLocalRestriction(ElementTransformation &Trans, DenseMatrix &R) const
Return a local restriction matrix R (Dof x Dof) mapping fine dofs to coarse dofs.
Definition fe_nd.hpp:53
void ProjectIntegrated(VectorCoefficient &vc, ElementTransformation &Trans, Vector &dofs) const
Definition fe_nd.cpp:245
virtual void GetFaceMap(const int face_id, Array< int > &face_map) const
Return the mapping from lexicographic face DOFs to lexicographic element DOFs for the given local fac...
Definition fe_nd.cpp:485
Arbitrary order Nedelec elements in 2D on a square.
Definition fe_nd.hpp:105
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 ...
Definition fe_nd.hpp:123
virtual void GetLocalRestriction(ElementTransformation &Trans, DenseMatrix &R) const
Return a local restriction matrix R (Dof x Dof) mapping fine dofs to coarse dofs.
Definition fe_nd.hpp:131
ND_QuadrilateralElement(const int p, const int cb_type=BasisType::GaussLobatto, const int ob_type=BasisType::GaussLegendre)
Construct the ND_QuadrilateralElement of order p and closed and open BasisType cb_type and ob_type.
Definition fe_nd.cpp:533
virtual void GetTransferMatrix(const FiniteElement &fe, ElementTransformation &Trans, DenseMatrix &I) const
Return interpolation matrix, I, which maps dofs from a coarse element, fe, to the fine dofs on this f...
Definition fe_nd.hpp:134
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...
Definition fe_nd.cpp:700
virtual void Project(const FiniteElement &fe, ElementTransformation &Trans, DenseMatrix &I) const
Compute the embedding/projection matrix from the given FiniteElement onto 'this' FiniteElement....
Definition fe_nd.hpp:151
void ProjectIntegrated(VectorCoefficient &vc, ElementTransformation &Trans, Vector &dofs) const
Definition fe_nd.cpp:624
virtual void GetFaceMap(const int face_id, Array< int > &face_map) const
Return the mapping from lexicographic face DOFs to lexicographic element DOFs for the given local fac...
Definition fe_nd.cpp:820
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...
Definition fe_nd.hpp:128
virtual void Project(VectorCoefficient &vc, ElementTransformation &Trans, Vector &dofs) const
Given a vector coefficient and a transformation, compute its projection (approximation) in the local ...
Definition fe_nd.hpp:139
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...
Definition fe_nd.cpp:763
virtual void ProjectFromNodes(Vector &vc, ElementTransformation &Trans, Vector &dofs) const
Given a vector of values at the finite element nodes and a transformation, compute its projection (ap...
Definition fe_nd.hpp:145
virtual void ProjectGrad(const FiniteElement &fe, ElementTransformation &Trans, DenseMatrix &grad) const
Compute the discrete gradient matrix from the given FiniteElement onto 'this' FiniteElement....
Definition fe_nd.hpp:155
virtual void ProjectMatrixCoefficient(MatrixCoefficient &mc, ElementTransformation &T, Vector &dofs) const
Given a matrix coefficient and a transformation, compute an approximation ("projection") in the local...
Definition fe_nd.hpp:148
A 0D Nedelec finite element for the boundary of a 1D domain.
Definition fe_nd.hpp:417
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...
Definition fe_nd.cpp:1595
ND_R1D_PointElement(int p)
Construct the ND_R1D_PointElement.
Definition fe_nd.cpp:1584
Arbitrary order, three component, Nedelec elements in 1D on a segment.
Definition fe_nd.hpp:438
virtual void GetTransferMatrix(const FiniteElement &fe, ElementTransformation &Trans, DenseMatrix &I) const
Return interpolation matrix, I, which maps dofs from a coarse element, fe, to the fine dofs on this f...
Definition fe_nd.hpp:478
ND_R1D_SegmentElement(const int p, const int cb_type=BasisType::GaussLobatto, const int ob_type=BasisType::GaussLegendre)
Construct the ND_R1D_SegmentElement of order p and closed and open BasisType cb_type and ob_type.
Definition fe_nd.cpp:1613
virtual void GetLocalRestriction(ElementTransformation &Trans, DenseMatrix &R) const
Return a local restriction matrix R (Dof x Dof) mapping fine dofs to coarse dofs.
Definition fe_nd.hpp:474
virtual void CalcPhysCurlShape(ElementTransformation &Trans, DenseMatrix &curl_shape) const
Evaluate the curl of all shape functions of a vector finite element in physical space at the point de...
Definition fe_nd.cpp:1770
virtual void ProjectFromNodes(Vector &vc, ElementTransformation &Trans, Vector &dofs) const
Given a vector of values at the finite element nodes and a transformation, compute its projection (ap...
Definition fe_nd.hpp:488
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...
Definition fe_nd.hpp:470
virtual void ProjectGrad(const FiniteElement &fe, ElementTransformation &Trans, DenseMatrix &grad) const
Compute the discrete gradient matrix from the given FiniteElement onto 'this' FiniteElement....
Definition fe_nd.hpp:500
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...
Definition fe_nd.cpp:1730
virtual void ProjectMatrixCoefficient(MatrixCoefficient &mc, ElementTransformation &T, Vector &dofs) const
Given a matrix coefficient and a transformation, compute an approximation ("projection") in the local...
Definition fe_nd.hpp:492
virtual void Project(VectorCoefficient &vc, ElementTransformation &Trans, Vector &dofs) const
Given a vector coefficient and a transformation, compute its projection (approximation) in the local ...
Definition fe_nd.cpp:1781
virtual void ProjectCurl(const FiniteElement &fe, ElementTransformation &Trans, DenseMatrix &curl) const
Compute the discrete curl matrix from the given FiniteElement onto 'this' FiniteElement....
Definition fe_nd.hpp:505
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...
Definition fe_nd.cpp:1677
virtual void CalcPhysCurlShape(ElementTransformation &Trans, DenseMatrix &curl_shape) const
Evaluate the curl of all shape functions of a vector finite element in physical space at the point de...
Definition fe_nd.cpp:2110
virtual void Project(VectorCoefficient &vc, ElementTransformation &Trans, Vector &dofs) const
Given a vector coefficient and a transformation, compute its projection (approximation) in the local ...
Definition fe_nd.cpp:2219
ND_R2D_FiniteElement(int p, Geometry::Type G, int Do, const real_t *tk_fe)
Definition fe_nd.cpp:2075
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 ...
Definition fe_nd.cpp:2093
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...
Definition fe_nd.hpp:589
virtual void GetTransferMatrix(const FiniteElement &fe, ElementTransformation &Trans, DenseMatrix &I) const
Return interpolation matrix, I, which maps dofs from a coarse element, fe, to the fine dofs on this f...
Definition fe_nd.hpp:596
virtual void ProjectGrad(const FiniteElement &fe, ElementTransformation &Trans, DenseMatrix &grad) const
Compute the discrete gradient matrix from the given FiniteElement onto 'this' FiniteElement....
Definition fe_nd.cpp:2331
virtual void GetLocalRestriction(ElementTransformation &Trans, DenseMatrix &R) const
Return a local restriction matrix R (Dof x Dof) mapping fine dofs to coarse dofs.
Definition fe_nd.cpp:2173
Arbitrary order Nedelec 3D elements in 2D on a square.
Definition fe_nd.hpp:647
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...
Definition fe_nd.cpp:2623
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...
Definition fe_nd.cpp:2683
ND_R2D_QuadrilateralElement(const int p, const int cb_type=BasisType::GaussLobatto, const int ob_type=BasisType::GaussLegendre)
Construct the ND_R2D_QuadrilateralElement of order p and closed and open BasisType cb_type and ob_typ...
Definition fe_nd.cpp:2496
ND_R2D_SegmentElement(const int p, const int cb_type=BasisType::GaussLobatto, const int ob_type=BasisType::GaussLegendre)
Construct the ND_R2D_SegmentElement of order p and closed and open BasisType cb_type and ob_type.
Definition fe_nd.cpp:1890
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...
Definition fe_nd.cpp:1939
virtual void Project(VectorCoefficient &vc, ElementTransformation &Trans, Vector &dofs) const
Given a vector coefficient and a transformation, compute its projection (approximation) in the local ...
Definition fe_nd.cpp:2050
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...
Definition fe_nd.cpp:1982
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...
Definition fe_nd.hpp:547
virtual void GetTransferMatrix(const FiniteElement &fe, ElementTransformation &Trans, DenseMatrix &I) const
Return interpolation matrix, I, which maps dofs from a coarse element, fe, to the fine dofs on this f...
Definition fe_nd.hpp:555
virtual void GetLocalRestriction(ElementTransformation &Trans, DenseMatrix &R) const
Return a local restriction matrix R (Dof x Dof) mapping fine dofs to coarse dofs.
Definition fe_nd.hpp:551
Arbitrary order Nedelec 3D elements in 2D on a triangle.
Definition fe_nd.hpp:616
ND_R2D_TriangleElement(const int p, const int cb_type=BasisType::GaussLobatto)
Construct the ND_R2D_TriangleElement of order p.
Definition fe_nd.cpp:2355
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...
Definition fe_nd.cpp:2463
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...
Definition fe_nd.cpp:2434
Arbitrary order Nedelec elements in 1D on a segment.
Definition fe_nd.hpp:292
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 ...
Definition fe_nd.hpp:305
ND_SegmentElement(const int p, const int ob_type=BasisType::GaussLegendre)
Construct the ND_SegmentElement of order p and open BasisType ob_type.
Definition fe_nd.cpp:1268
virtual void Project(const FiniteElement &fe, ElementTransformation &Trans, DenseMatrix &I) const
Compute the embedding/projection matrix from the given FiniteElement onto 'this' FiniteElement....
Definition fe_nd.hpp:327
virtual void GetTransferMatrix(const FiniteElement &fe, ElementTransformation &Trans, DenseMatrix &I) const
Return interpolation matrix, I, which maps dofs from a coarse element, fe, to the fine dofs on this f...
Definition fe_nd.hpp:316
virtual void Project(VectorCoefficient &vc, ElementTransformation &Trans, Vector &dofs) const
Given a vector coefficient and a transformation, compute its projection (approximation) in the local ...
Definition fe_nd.hpp:321
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...
Definition fe_nd.cpp:1285
virtual void GetLocalRestriction(ElementTransformation &Trans, DenseMatrix &R) const
Return a local restriction matrix R (Dof x Dof) mapping fine dofs to coarse dofs.
Definition fe_nd.hpp:313
virtual void ProjectMatrixCoefficient(MatrixCoefficient &mc, ElementTransformation &T, Vector &dofs) const
Given a matrix coefficient and a transformation, compute an approximation ("projection") in the local...
Definition fe_nd.hpp:324
virtual void CalcShape(const IntegrationPoint &ip, Vector &shape) const
Evaluate the values of all shape functions of a scalar finite element in reference space at the given...
Definition fe_nd.hpp:301
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...
Definition fe_nd.hpp:310
virtual void ProjectGrad(const FiniteElement &fe, ElementTransformation &Trans, DenseMatrix &grad) const
Compute the discrete gradient matrix from the given FiniteElement onto 'this' FiniteElement....
Definition fe_nd.hpp:331
DoF transformation implementation for the Nedelec basis on tetrahedra.
Definition doftrans.hpp:345
Arbitrary order Nedelec elements in 3D on a tetrahedron.
Definition fe_nd.hpp:171
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...
Definition fe_nd.cpp:1036
virtual void ProjectGrad(const FiniteElement &fe, ElementTransformation &Trans, DenseMatrix &grad) const
Compute the discrete gradient matrix from the given FiniteElement onto 'this' FiniteElement....
Definition fe_nd.hpp:220
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...
Definition fe_nd.cpp:994
virtual const StatelessDofTransformation * GetDofTransformation() const
Return a DoF transformation object for this particular type of basis.
Definition fe_nd.hpp:204
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...
Definition fe_nd.hpp:194
virtual void ProjectFromNodes(Vector &vc, ElementTransformation &Trans, Vector &dofs) const
Given a vector of values at the finite element nodes and a transformation, compute its projection (ap...
Definition fe_nd.hpp:210
virtual void GetTransferMatrix(const FiniteElement &fe, ElementTransformation &Trans, DenseMatrix &I) const
Return interpolation matrix, I, which maps dofs from a coarse element, fe, to the fine dofs on this f...
Definition fe_nd.hpp:200
virtual void Project(VectorCoefficient &vc, ElementTransformation &Trans, Vector &dofs) const
Given a vector coefficient and a transformation, compute its projection (approximation) in the local ...
Definition fe_nd.hpp:207
ND_TetrahedronElement(const int p)
Construct the ND_TetrahedronElement of order p.
Definition fe_nd.cpp:846
virtual void ProjectMatrixCoefficient(MatrixCoefficient &mc, ElementTransformation &T, Vector &dofs) const
Given a matrix coefficient and a transformation, compute an approximation ("projection") in the local...
Definition fe_nd.hpp:213
virtual void ProjectCurl(const FiniteElement &fe, ElementTransformation &Trans, DenseMatrix &curl) const
Compute the discrete curl matrix from the given FiniteElement onto 'this' FiniteElement....
Definition fe_nd.hpp:225
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 ...
Definition fe_nd.hpp:189
virtual void GetLocalRestriction(ElementTransformation &Trans, DenseMatrix &R) const
Return a local restriction matrix R (Dof x Dof) mapping fine dofs to coarse dofs.
Definition fe_nd.hpp:197
virtual void Project(const FiniteElement &fe, ElementTransformation &Trans, DenseMatrix &I) const
Compute the embedding/projection matrix from the given FiniteElement onto 'this' FiniteElement....
Definition fe_nd.hpp:216
Arbitrary order Nedelec elements in 2D on a triangle.
Definition fe_nd.hpp:233
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...
Definition fe_nd.cpp:1189
virtual void Project(const FiniteElement &fe, ElementTransformation &Trans, DenseMatrix &I) const
Compute the embedding/projection matrix from the given FiniteElement onto 'this' FiniteElement....
Definition fe_nd.hpp:279
virtual void ProjectMatrixCoefficient(MatrixCoefficient &mc, ElementTransformation &T, Vector &dofs) const
Given a matrix coefficient and a transformation, compute an approximation ("projection") in the local...
Definition fe_nd.hpp:276
virtual void Project(VectorCoefficient &vc, ElementTransformation &Trans, Vector &dofs) const
Given a vector coefficient and a transformation, compute its projection (approximation) in the local ...
Definition fe_nd.hpp:270
virtual void GetTransferMatrix(const FiniteElement &fe, ElementTransformation &Trans, DenseMatrix &I) const
Return interpolation matrix, I, which maps dofs from a coarse element, fe, to the fine dofs on this f...
Definition fe_nd.hpp:263
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...
Definition fe_nd.hpp:257
virtual void GetLocalRestriction(ElementTransformation &Trans, DenseMatrix &R) const
Return a local restriction matrix R (Dof x Dof) mapping fine dofs to coarse dofs.
Definition fe_nd.hpp:260
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 ...
Definition fe_nd.hpp:252
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...
Definition fe_nd.cpp:1223
ND_TriangleElement(const int p)
Construct the ND_TriangleElement of order p.
Definition fe_nd.cpp:1108
virtual void ProjectFromNodes(Vector &vc, ElementTransformation &Trans, Vector &dofs) const
Given a vector of values at the finite element nodes and a transformation, compute its projection (ap...
Definition fe_nd.hpp:273
virtual const StatelessDofTransformation * GetDofTransformation() const
Return a DoF transformation object for this particular type of basis.
Definition fe_nd.hpp:267
virtual void ProjectGrad(const FiniteElement &fe, ElementTransformation &Trans, DenseMatrix &grad) const
Compute the discrete gradient matrix from the given FiniteElement onto 'this' FiniteElement....
Definition fe_nd.hpp:283
DoF transformation implementation for the Nedelec basis on wedge elements.
Definition doftrans.hpp:354
virtual const StatelessDofTransformation * GetDofTransformation() const
Return a DoF transformation object for this particular type of basis.
Definition fe_nd.hpp:382
virtual void ProjectCurl(const FiniteElement &fe, ElementTransformation &Trans, DenseMatrix &curl) const
Compute the discrete curl matrix from the given FiniteElement onto 'this' FiniteElement....
Definition fe_nd.hpp:405
virtual void GetTransferMatrix(const FiniteElement &fe, ElementTransformation &Trans, DenseMatrix &I) const
Return interpolation matrix, I, which maps dofs from a coarse element, fe, to the fine dofs on this f...
Definition fe_nd.hpp:377
virtual void GetLocalRestriction(ElementTransformation &Trans, DenseMatrix &R) const
Return a local restriction matrix R (Dof x Dof) mapping fine dofs to coarse dofs.
Definition fe_nd.hpp:374
virtual void ProjectGrad(const FiniteElement &fe, ElementTransformation &Trans, DenseMatrix &grad) const
Compute the discrete gradient matrix from the given FiniteElement onto 'this' FiniteElement....
Definition fe_nd.hpp:400
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...
Definition fe_nd.cpp:1546
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...
Definition fe_nd.hpp:371
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...
Definition fe_nd.cpp:1512
virtual void Project(const FiniteElement &fe, ElementTransformation &Trans, DenseMatrix &I) const
Compute the embedding/projection matrix from the given FiniteElement onto 'this' FiniteElement....
Definition fe_nd.hpp:395
virtual void ProjectMatrixCoefficient(MatrixCoefficient &mc, ElementTransformation &T, Vector &dofs) const
Given a matrix coefficient and a transformation, compute an approximation ("projection") in the local...
Definition fe_nd.hpp:391
virtual void Project(VectorCoefficient &vc, ElementTransformation &Trans, Vector &dofs) const
Given a vector coefficient and a transformation, compute its projection (approximation) in the local ...
Definition fe_nd.hpp:387
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 ...
Definition fe_nd.hpp:364
ND_WedgeElement(const int p, const int cb_type=BasisType::GaussLobatto, const int ob_type=BasisType::GaussLegendre)
Definition fe_nd.cpp:1296
Class for evaluating 1D nodal, positive (Bernstein), or integrated (Gerritsma) bases.
Definition fe_base.hpp:991
void Eval(const real_t x, Vector &u) const
Evaluate the basis functions at point x in [0,1].
Definition fe_base.cpp:1761
bool IsIntegratedType() const
Returns true if the basis is "integrated", false otherwise.
Definition fe_base.hpp:1035
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:801
void Project_ND(const real_t *tk, const Array< int > &d2t, VectorCoefficient &vc, ElementTransformation &Trans, Vector &dofs) const
Project a vector coefficient onto the ND basis functions.
Definition fe_base.cpp:1290
void ProjectMatrixCoefficient_ND(const real_t *tk, const Array< int > &d2t, MatrixCoefficient &mc, ElementTransformation &T, Vector &dofs) const
Project the rows of the matrix coefficient in an ND space.
Definition fe_base.cpp:1319
void LocalRestriction_ND(const real_t *tk, const Array< int > &d2t, ElementTransformation &Trans, DenseMatrix &R) const
Definition fe_base.cpp:1655
void ProjectGrad_ND(const real_t *tk, const Array< int > &d2t, const FiniteElement &fe, ElementTransformation &Trans, DenseMatrix &grad) const
Definition fe_base.cpp:1418
void CalcVShape_ND(ElementTransformation &Trans, DenseMatrix &shape) const
Definition fe_base.cpp:1055
void LocalInterpolation_ND(const VectorFiniteElement &cfe, const real_t *tk, const Array< int > &d2t, ElementTransformation &Trans, DenseMatrix &I) const
Definition fe_base.cpp:1573
static const VectorFiniteElement & CheckVectorFE(const FiniteElement &fe)
Definition fe_base.hpp:961
void ProjectCurl_ND(const real_t *tk, const Array< int > &d2t, const FiniteElement &fe, ElementTransformation &Trans, DenseMatrix &curl) const
Definition fe_base.cpp:1233
Vector data type.
Definition vector.hpp:80
float real_t
Definition config.hpp:43
real_t p(const Vector &x, real_t t)