MFEM  v4.5.1
Finite element discretization library
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Pages
fe_nd.hpp
Go to the documentation of this file.
1 // Copyright (c) 2010-2022, 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 
18 namespace mfem
19 {
20 
21 /// Arbitrary order Nedelec elements in 3D on a cube
23 {
24  static const double 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 double *cp;
31 
32 public:
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 
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 
76  MatrixCoefficient &mc, ElementTransformation &T, Vector &dofs) const
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 protected:
97  Vector &dofs) const;
98 };
99 
100 
101 /// Arbitrary order Nedelec elements in 2D on a square
103 {
104  static const double tk[8];
105 
106 #ifndef MFEM_THREAD_SAFE
107  mutable Vector shape_cx, shape_ox, shape_cy, shape_oy;
108  mutable Vector dshape_cx, dshape_cy;
109 #endif
110  Array<int> dof2tk;
111  const double *cp;
112 
113 public:
114  /** @brief Construct the ND_QuadrilateralElement of order @a p and closed and
115  open BasisType @a cb_type and @a ob_type */
116  ND_QuadrilateralElement(const int p,
117  const int cb_type = BasisType::GaussLobatto,
118  const int ob_type = BasisType::GaussLegendre);
119  virtual void CalcVShape(const IntegrationPoint &ip,
120  DenseMatrix &shape) const;
122  DenseMatrix &shape) const
123  { CalcVShape_ND(Trans, shape); }
124  virtual void CalcCurlShape(const IntegrationPoint &ip,
125  DenseMatrix &curl_shape) const;
127  DenseMatrix &I) const
128  { LocalInterpolation_ND(*this, tk, dof2tk, Trans, I); }
130  DenseMatrix &R) const
131  { LocalRestriction_ND(tk, dof2tk, Trans, R); }
132  virtual void GetTransferMatrix(const FiniteElement &fe,
134  DenseMatrix &I) const
135  { LocalInterpolation_ND(CheckVectorFE(fe), tk, dof2tk, Trans, I); }
137  virtual void Project(VectorCoefficient &vc,
138  ElementTransformation &Trans, Vector &dofs) const
139  {
140  if (obasis1d.IsIntegratedType()) { ProjectIntegrated(vc, Trans, dofs); }
141  else { Project_ND(tk, dof2tk, vc, Trans, dofs); }
142  }
144  Vector &dofs) const
145  { Project_ND(tk, dof2tk, vc, Trans, dofs); }
147  MatrixCoefficient &mc, ElementTransformation &T, Vector &dofs) const
148  { ProjectMatrixCoefficient_ND(tk, dof2tk, mc, T, dofs); }
149  virtual void Project(const FiniteElement &fe,
151  DenseMatrix &I) const
152  { Project_ND(tk, dof2tk, fe, Trans, I); }
153  virtual void ProjectGrad(const FiniteElement &fe,
155  DenseMatrix &grad) const
156  { ProjectGrad_ND(tk, dof2tk, fe, Trans, grad); }
157 
158 protected:
161  Vector &dofs) const;
162 };
163 
164 
165 /// Arbitrary order Nedelec elements in 3D on a tetrahedron
167 {
168  static const double tk[18], c;
169 
170 #ifndef MFEM_THREAD_SAFE
171  mutable Vector shape_x, shape_y, shape_z, shape_l;
172  mutable Vector dshape_x, dshape_y, dshape_z, dshape_l;
173  mutable DenseMatrix u;
174 #endif
175  Array<int> dof2tk;
177 
178 public:
179  /// Construct the ND_TetrahedronElement of order @a p
180  ND_TetrahedronElement(const int p);
181  virtual void CalcVShape(const IntegrationPoint &ip,
182  DenseMatrix &shape) const;
184  DenseMatrix &shape) const
185  { CalcVShape_ND(Trans, shape); }
186  virtual void CalcCurlShape(const IntegrationPoint &ip,
187  DenseMatrix &curl_shape) const;
189  DenseMatrix &I) const
190  { LocalInterpolation_ND(*this, tk, dof2tk, Trans, I); }
192  DenseMatrix &R) const
193  { LocalRestriction_ND(tk, dof2tk, Trans, R); }
194  virtual void GetTransferMatrix(const FiniteElement &fe,
196  DenseMatrix &I) const
197  { LocalInterpolation_ND(CheckVectorFE(fe), tk, dof2tk, Trans, I); }
199  virtual void Project(VectorCoefficient &vc,
200  ElementTransformation &Trans, Vector &dofs) const
201  { Project_ND(tk, dof2tk, vc, Trans, dofs); }
203  Vector &dofs) const
204  { Project_ND(tk, dof2tk, vc, Trans, dofs); }
206  MatrixCoefficient &mc, ElementTransformation &T, Vector &dofs) const
207  { ProjectMatrixCoefficient_ND(tk, dof2tk, mc, T, dofs); }
208  virtual void Project(const FiniteElement &fe,
210  DenseMatrix &I) const
211  { Project_ND(tk, dof2tk, fe, Trans, I); }
212  virtual void ProjectGrad(const FiniteElement &fe,
214  DenseMatrix &grad) const
215  { ProjectGrad_ND(tk, dof2tk, fe, Trans, grad); }
216 
217  virtual void ProjectCurl(const FiniteElement &fe,
219  DenseMatrix &curl) const
220  { ProjectCurl_ND(tk, dof2tk, fe, Trans, curl); }
221 };
222 
223 /// Arbitrary order Nedelec elements in 2D on a triangle
225 {
226  static const double tk[8], c;
227 
228 #ifndef MFEM_THREAD_SAFE
229  mutable Vector shape_x, shape_y, shape_l;
230  mutable Vector dshape_x, dshape_y, dshape_l;
231  mutable DenseMatrix u;
232  mutable Vector curlu;
233 #endif
234  Array<int> dof2tk;
236 
237 public:
238  /// Construct the ND_TriangleElement of order @a p
239  ND_TriangleElement(const int p);
240  virtual void CalcVShape(const IntegrationPoint &ip,
241  DenseMatrix &shape) const;
243  DenseMatrix &shape) const
244  { CalcVShape_ND(Trans, shape); }
245  virtual void CalcCurlShape(const IntegrationPoint &ip,
246  DenseMatrix &curl_shape) const;
248  DenseMatrix &I) const
249  { LocalInterpolation_ND(*this, tk, dof2tk, Trans, I); }
251  DenseMatrix &R) const
252  { LocalRestriction_ND(tk, dof2tk, Trans, R); }
253  virtual void GetTransferMatrix(const FiniteElement &fe,
255  DenseMatrix &I) const
256  { LocalInterpolation_ND(CheckVectorFE(fe), tk, dof2tk, Trans, I); }
258  virtual void Project(VectorCoefficient &vc,
259  ElementTransformation &Trans, Vector &dofs) const
260  { Project_ND(tk, dof2tk, vc, Trans, dofs); }
262  Vector &dofs) const
263  { Project_ND(tk, dof2tk, vc, Trans, dofs); }
265  MatrixCoefficient &mc, ElementTransformation &T, Vector &dofs) const
266  { ProjectMatrixCoefficient_ND(tk, dof2tk, mc, T, dofs); }
267  virtual void Project(const FiniteElement &fe,
269  DenseMatrix &I) const
270  { Project_ND(tk, dof2tk, fe, Trans, I); }
271  virtual void ProjectGrad(const FiniteElement &fe,
273  DenseMatrix &grad) const
274  { ProjectGrad_ND(tk, dof2tk, fe, Trans, grad); }
275 };
276 
277 
278 /// Arbitrary order Nedelec elements in 1D on a segment
280 {
281  static const double tk[1];
282 
283  Array<int> dof2tk;
284 
285 public:
286  /** @brief Construct the ND_SegmentElement of order @a p and open
287  BasisType @a ob_type */
288  ND_SegmentElement(const int p, const int ob_type = BasisType::GaussLegendre);
289  virtual void CalcShape(const IntegrationPoint &ip, Vector &shape) const
290  { obasis1d.Eval(ip.x, shape); }
291  virtual void CalcVShape(const IntegrationPoint &ip,
292  DenseMatrix &shape) const;
294  DenseMatrix &shape) const
295  { CalcVShape_ND(Trans, shape); }
296  // virtual void CalcCurlShape(const IntegrationPoint &ip,
297  // DenseMatrix &curl_shape) const;
299  DenseMatrix &I) const
300  { LocalInterpolation_ND(*this, tk, dof2tk, Trans, I); }
302  DenseMatrix &R) const
303  { LocalRestriction_ND(tk, dof2tk, Trans, R); }
304  virtual void GetTransferMatrix(const FiniteElement &fe,
306  DenseMatrix &I) const
307  { LocalInterpolation_ND(CheckVectorFE(fe), tk, dof2tk, Trans, I); }
309  virtual void Project(VectorCoefficient &vc,
310  ElementTransformation &Trans, Vector &dofs) const
311  { Project_ND(tk, dof2tk, vc, Trans, dofs); }
313  MatrixCoefficient &mc, ElementTransformation &T, Vector &dofs) const
314  { ProjectMatrixCoefficient_ND(tk, dof2tk, mc, T, dofs); }
315  virtual void Project(const FiniteElement &fe,
317  DenseMatrix &I) const
318  { Project_ND(tk, dof2tk, fe, Trans, I); }
319  virtual void ProjectGrad(const FiniteElement &fe,
321  DenseMatrix &grad) const
322  { ProjectGrad_ND(tk, dof2tk, fe, Trans, grad); }
323 };
324 
326 {
327 private:
328  static const double tk[15];
329 
330 #ifndef MFEM_THREAD_SAFE
331  mutable Vector t1_shape, s1_shape;
332  mutable DenseMatrix tn_shape, sn_shape;
333  mutable DenseMatrix t1_dshape, s1_dshape, tn_dshape;
334 #endif
335  Array<int> dof2tk, t_dof, s_dof;
336 
337  H1_TriangleElement H1TriangleFE;
338  ND_TriangleElement NDTriangleFE;
339  H1_SegmentElement H1SegmentFE;
340  ND_SegmentElement NDSegmentFE;
341 
342 public:
343  ND_WedgeElement(const int p,
344  const int cb_type = BasisType::GaussLobatto,
345  const int ob_type = BasisType::GaussLegendre);
346 
347  virtual void CalcVShape(const IntegrationPoint &ip,
348  DenseMatrix &shape) const;
349 
351  DenseMatrix &shape) const
352  { CalcVShape_ND(Trans, shape); }
353 
354  virtual void CalcCurlShape(const IntegrationPoint &ip,
355  DenseMatrix &curl_shape) const;
356 
358  DenseMatrix &I) const
359  { LocalInterpolation_ND(*this, tk, dof2tk, Trans, I); }
361  DenseMatrix &R) const
362  { LocalRestriction_ND(tk, dof2tk, Trans, R); }
363  virtual void GetTransferMatrix(const FiniteElement &fe,
365  DenseMatrix &I) const
366  { LocalInterpolation_ND(CheckVectorFE(fe), tk, dof2tk, Trans, I); }
367 
369 
370  virtual void Project(VectorCoefficient &vc,
371  ElementTransformation &Trans, Vector &dofs) const
372  { Project_ND(tk, dof2tk, vc, Trans, dofs); }
373 
375  MatrixCoefficient &mc, ElementTransformation &T, Vector &dofs) const
376  { ProjectMatrixCoefficient_ND(tk, dof2tk, mc, T, dofs); }
377 
378  virtual void Project(const FiniteElement &fe,
380  DenseMatrix &I) const
381  { Project_ND(tk, dof2tk, fe, Trans, I); }
382 
383  virtual void ProjectGrad(const FiniteElement &fe,
385  DenseMatrix &grad) const
386  { ProjectGrad_ND(tk, dof2tk, fe, Trans, grad); }
387 
388  virtual void ProjectCurl(const FiniteElement &fe,
390  DenseMatrix &curl) const
391  { ProjectCurl_ND(tk, dof2tk, fe, Trans, curl); }
392 };
393 
394 
395 /// A 0D Nedelec finite element for the boundary of a 1D domain
396 /** ND_R1D_PointElement provides a representation of the trace of a three
397  component Nedelec basis restricted to 1D.
398 */
400 {
401  static const double tk[9];
402 
403 public:
404  /** @brief Construct the ND_R1D_PointElement */
405  ND_R1D_PointElement(int p);
406 
408 
409  virtual void CalcVShape(const IntegrationPoint &ip,
410  DenseMatrix &shape) const;
411 
412  virtual void CalcVShape(ElementTransformation &Trans,
413  DenseMatrix &shape) const;
414 };
415 
416 /// Arbitrary order, three component, Nedelec elements in 1D on a segment
417 /** ND_R1D_SegmentElement provides a representation of a three component Nedelec
418  basis where the vector components vary along only one dimension.
419 */
421 {
422  static const double tk[9];
423 #ifndef MFEM_THREAD_SAFE
424  mutable Vector shape_cx, shape_ox;
425  mutable Vector dshape_cx;
426 #endif
427  Array<int> dof_map, dof2tk;
428 
429  Poly_1D::Basis &cbasis1d, &obasis1d;
430 
431 public:
432  /** @brief Construct the ND_R1D_SegmentElement of order @a p and closed and
433  open BasisType @a cb_type and @a ob_type */
434  ND_R1D_SegmentElement(const int p,
435  const int cb_type = BasisType::GaussLobatto,
436  const int ob_type = BasisType::GaussLegendre);
437 
440 
441  virtual void CalcVShape(const IntegrationPoint &ip,
442  DenseMatrix &shape) const;
443 
444  virtual void CalcVShape(ElementTransformation &Trans,
445  DenseMatrix &shape) const;
446 
447  virtual void CalcCurlShape(const IntegrationPoint &ip,
448  DenseMatrix &curl_shape) const;
449 
450  virtual void CalcPhysCurlShape(ElementTransformation &Trans,
451  DenseMatrix &curl_shape) const;
452 
454  DenseMatrix &I) const
455  { LocalInterpolation_ND(*this, tk, dof2tk, Trans, I); }
456 
458  DenseMatrix &R) const
459  { LocalRestriction_ND(tk, dof2tk, Trans, R); }
460 
461  virtual void GetTransferMatrix(const FiniteElement &fe,
462  ElementTransformation &Trans,
463  DenseMatrix &I) const
464  { LocalInterpolation_ND(CheckVectorFE(fe), tk, dof2tk, Trans, I); }
465 
467 
468  virtual void Project(VectorCoefficient &vc,
469  ElementTransformation &Trans, Vector &dofs) const;
470 
472  Vector &dofs) const
473  { Project_ND(tk, dof2tk, vc, Trans, dofs); }
474 
476  MatrixCoefficient &mc, ElementTransformation &T, Vector &dofs) const
477  { ProjectMatrixCoefficient_ND(tk, dof2tk, mc, T, dofs); }
478 
479  virtual void Project(const FiniteElement &fe,
480  ElementTransformation &Trans,
481  DenseMatrix &I) const;
482 
483  virtual void ProjectGrad(const FiniteElement &fe,
484  ElementTransformation &Trans,
485  DenseMatrix &grad) const
486  { ProjectGrad_ND(tk, dof2tk, fe, Trans, grad); }
487 
488  virtual void ProjectCurl(const FiniteElement &fe,
489  ElementTransformation &Trans,
490  DenseMatrix &curl) const
491  { ProjectCurl_ND(tk, dof2tk, fe, Trans, curl); }
492 };
493 
494 
495 /** ND_R2D_SegmentElement provides a representation of a 3D Nedelec
496  basis where the vector field is assumed constant in the third dimension.
497 */
499 {
500  static const double tk[4];
501 #ifndef MFEM_THREAD_SAFE
502  mutable Vector shape_cx, shape_ox;
503  mutable Vector dshape_cx;
504 #endif
505  Array<int> dof_map, dof2tk;
506 
507  Poly_1D::Basis &cbasis1d, &obasis1d;
508 
509 private:
510  void LocalInterpolation(const VectorFiniteElement &cfe,
512  DenseMatrix &I) const;
513 
514 public:
515  /** @brief Construct the ND_R2D_SegmentElement of order @a p and closed and
516  open BasisType @a cb_type and @a ob_type */
517  ND_R2D_SegmentElement(const int p,
518  const int cb_type = BasisType::GaussLobatto,
519  const int ob_type = BasisType::GaussLegendre);
520 
521  virtual void CalcVShape(const IntegrationPoint &ip,
522  DenseMatrix &shape) const;
523 
524  virtual void CalcVShape(ElementTransformation &Trans,
525  DenseMatrix &shape) const;
526 
527  virtual void CalcCurlShape(const IntegrationPoint &ip,
528  DenseMatrix &curl_shape) const;
529 
531  DenseMatrix &I) const
532  { LocalInterpolation(*this, Trans, I); }
533 
535  DenseMatrix &R) const
536  { MFEM_ABORT("method is not overloaded"); }
537 
538  virtual void GetTransferMatrix(const FiniteElement &fe,
539  ElementTransformation &Trans,
540  DenseMatrix &I) const
541  { LocalInterpolation(CheckVectorFE(fe), Trans, I); }
542 
544 
545  virtual void Project(VectorCoefficient &vc,
546  ElementTransformation &Trans, Vector &dofs) const;
547 };
548 
550 {
551 protected:
552  const double *tk;
554 
555  ND_R2D_FiniteElement(int p, Geometry::Type G, int Do, const double *tk_fe);
556 
557 private:
558  void LocalInterpolation(const VectorFiniteElement &cfe,
560  DenseMatrix &I) const;
561 
562 public:
565 
566  virtual void CalcVShape(ElementTransformation &Trans,
567  DenseMatrix &shape) const;
568 
570  DenseMatrix &curl_shape) const;
571 
573  DenseMatrix &I) const
574  { LocalInterpolation(*this, Trans, I); }
575 
577  DenseMatrix &R) const;
578 
579  virtual void GetTransferMatrix(const FiniteElement &fe,
581  DenseMatrix &I) const
582  { LocalInterpolation(CheckVectorFE(fe), Trans, I); }
583 
585 
586  virtual void Project(VectorCoefficient &vc,
587  ElementTransformation &Trans, Vector &dofs) const;
588 
589  virtual void Project(const FiniteElement &fe, ElementTransformation &Trans,
590  DenseMatrix &I) const;
591 
592  virtual void ProjectGrad(const FiniteElement &fe,
594  DenseMatrix &grad) const;
595 };
596 
597 /// Arbitrary order Nedelec 3D elements in 2D on a triangle
599 {
600 private:
601  static const double tk_t[15];
602 
603 #ifndef MFEM_THREAD_SAFE
604  mutable DenseMatrix nd_shape;
605  mutable Vector h1_shape;
606  mutable DenseMatrix nd_dshape;
607  mutable DenseMatrix h1_dshape;
608 #endif
609 
610  ND_TriangleElement ND_FE;
611  H1_TriangleElement H1_FE;
612 
613 public:
614  /// Construct the ND_R2D_TriangleElement of order @a p
615  ND_R2D_TriangleElement(const int p,
616  const int cb_type = BasisType::GaussLobatto);
617 
620 
621  virtual void CalcVShape(const IntegrationPoint &ip,
622  DenseMatrix &shape) const;
623  virtual void CalcCurlShape(const IntegrationPoint &ip,
624  DenseMatrix &curl_shape) const;
625 };
626 
627 
628 /// Arbitrary order Nedelec 3D elements in 2D on a square
630 {
631  static const double tk_q[15];
632 
633 #ifndef MFEM_THREAD_SAFE
634  mutable Vector shape_cx, shape_ox, shape_cy, shape_oy;
635  mutable Vector dshape_cx, dshape_cy;
636 #endif
637 
638  Poly_1D::Basis &cbasis1d, &obasis1d;
639 
640 public:
641  /** @brief Construct the ND_R2D_QuadrilateralElement of order @a p and
642  closed and open BasisType @a cb_type and @a ob_type */
643  ND_R2D_QuadrilateralElement(const int p,
644  const int cb_type = BasisType::GaussLobatto,
645  const int ob_type = BasisType::GaussLegendre);
646 
649 
650  virtual void CalcVShape(const IntegrationPoint &ip,
651  DenseMatrix &shape) const;
652  virtual void CalcCurlShape(const IntegrationPoint &ip,
653  DenseMatrix &curl_shape) const;
654 };
655 
656 
657 } // namespace mfem
658 
659 #endif
Abstract class for all finite elements.
Definition: fe_base.hpp:235
A 0D Nedelec finite element for the boundary of a 1D domain.
Definition: fe_nd.hpp:399
Arbitrary order Nedelec elements in 1D on a segment.
Definition: fe_nd.hpp:279
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:1198
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:2039
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:202
void ProjectIntegrated(VectorCoefficient &vc, ElementTransformation &Trans, Vector &dofs) const
Definition: fe_nd.cpp:576
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:471
void ProjectMatrixCoefficient_ND(const double *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:1180
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:39
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:350
virtual void ProjectGrad(const FiniteElement &fe, ElementTransformation &Trans, DenseMatrix &grad) const
Compute the discrete gradient matrix from the given FiniteElement onto &#39;this&#39; FiniteElement. The ElementTransformation is included to support cases when the matrix depends on it.
Definition: fe_nd.hpp:153
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:301
bool IsIntegratedType() const
Returns true if the basis is &quot;integrated&quot;, false otherwise.
Definition: fe_base.hpp:1022
virtual void ProjectGrad(const FiniteElement &fe, ElementTransformation &Trans, DenseMatrix &grad) const
Compute the discrete gradient matrix from the given FiniteElement onto &#39;this&#39; FiniteElement. The ElementTransformation is included to support cases when the matrix depends on it.
Definition: fe_nd.hpp:383
Base class for vector Coefficients that optionally depend on time and space.
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:534
Arbitrary order Nedelec 3D elements in 2D on a square.
Definition: fe_nd.hpp:629
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:363
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:125
virtual void ProjectCurl(const FiniteElement &fe, ElementTransformation &Trans, DenseMatrix &curl) const
Compute the discrete curl matrix from the given FiniteElement onto &#39;this&#39; FiniteElement. The ElementTransformation is included to support cases when the matrix depends on it.
Definition: fe_nd.hpp:217
ND_R1D_PointElement(int p)
Construct the ND_R1D_PointElement.
Definition: fe_nd.cpp:1513
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:250
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 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:261
virtual void ProjectCurl(const FiniteElement &fe, ElementTransformation &Trans, DenseMatrix &curl) const
Compute the discrete curl matrix from the given FiniteElement onto &#39;this&#39; FiniteElement. The ElementTransformation is included to support cases when the matrix depends on it.
Definition: fe_nd.hpp:488
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:538
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:121
Data type dense matrix using column-major storage.
Definition: densemat.hpp:23
ND_R2D_TriangleElement(const int p, const int cb_type=BasisType::GaussLobatto)
Construct the ND_R2D_TriangleElement of order p.
Definition: fe_nd.cpp:2284
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:1819
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:1868
Arbitrary order Nedelec elements in 3D on a tetrahedron.
Definition: fe_nd.hpp:166
void ProjectCurl_ND(const double *tk, const Array< int > &d2t, const FiniteElement &fe, ElementTransformation &Trans, DenseMatrix &curl) const
Definition: fe_base.cpp:1093
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:2022
Arbitrary order, three component, Nedelec elements in 1D on a segment.
Definition: fe_nd.hpp:420
Intermediate class for finite elements whose basis functions return vector values.
Definition: fe_base.hpp:786
virtual void ProjectCurl(const FiniteElement &fe, ElementTransformation &Trans, DenseMatrix &curl) const
Compute the discrete curl matrix from the given FiniteElement onto &#39;this&#39; FiniteElement. The ElementTransformation is included to support cases when the matrix depends on it.
Definition: fe_nd.hpp:89
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 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:2363
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:1606
Arbitrary order Nedelec elements in 2D on a triangle.
Definition: fe_nd.hpp:224
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:1911
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:357
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:1524
ND_WedgeElement(const int p, const int cb_type=BasisType::GaussLobatto, const int ob_type=BasisType::GaussLegendre)
Definition: fe_nd.cpp:1226
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:370
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:1659
virtual void ProjectMatrixCoefficient(MatrixCoefficient &mc, ElementTransformation &T, Vector &dofs) const
Given a matrix coefficient and a transformation, compute an approximation (&quot;projection&quot;) in the local...
Definition: fe_nd.hpp:264
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:1119
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:70
ND_TriangleElement(const int p)
Construct the ND_TriangleElement of order p.
Definition: fe_nd.cpp:1038
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:304
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:2425
virtual void ProjectGrad(const FiniteElement &fe, ElementTransformation &Trans, DenseMatrix &grad) const
Compute the discrete gradient matrix from the given FiniteElement onto &#39;this&#39; FiniteElement. The ElementTransformation is included to support cases when the matrix depends on it.
Definition: fe_nd.hpp:319
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:25
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:1699
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:2148
ND_R2D_FiniteElement(int p, Geometry::Type G, int Do, const double *tk_fe)
Definition: fe_nd.cpp:2004
ND_TetrahedronElement(const int p)
Construct the ND_TetrahedronElement of order p.
Definition: fe_nd.cpp:776
virtual void ProjectGrad(const FiniteElement &fe, ElementTransformation &Trans, DenseMatrix &grad) const
Compute the discrete gradient matrix from the given FiniteElement onto &#39;this&#39; FiniteElement. The ElementTransformation is included to support cases when the matrix depends on it.
Definition: fe_nd.hpp:483
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:183
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:453
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:143
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:188
const double * tk
Definition: fe_nd.hpp:552
virtual void ProjectCurl(const FiniteElement &fe, ElementTransformation &Trans, DenseMatrix &curl) const
Compute the discrete curl matrix from the given FiniteElement onto &#39;this&#39; FiniteElement. The ElementTransformation is included to support cases when the matrix depends on it.
Definition: fe_nd.hpp:388
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:360
virtual void Project(const FiniteElement &fe, ElementTransformation &Trans, DenseMatrix &I) const
Compute the embedding/projection matrix from the given FiniteElement onto &#39;this&#39; FiniteElement. The ElementTransformation is included to support cases when the projection depends on it.
Definition: fe_nd.hpp:378
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:199
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:1542
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:461
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:247
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:194
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:2392
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:126
void ProjectGrad_ND(const double *tk, const Array< int > &d2t, const FiniteElement &fe, ElementTransformation &Trans, DenseMatrix &grad) const
Definition: fe_base.cpp:1279
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:713
virtual void Project(const FiniteElement &fe, ElementTransformation &Trans, DenseMatrix &I) const
Compute the embedding/projection matrix from the given FiniteElement onto &#39;this&#39; FiniteElement. The ElementTransformation is included to support cases when the projection depends on it.
Definition: fe_nd.hpp:315
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:1153
void LocalInterpolation_ND(const VectorFiniteElement &cfe, const double *tk, const Array< int > &d2t, ElementTransformation &Trans, DenseMatrix &I) const
Definition: fe_base.cpp:1434
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:485
virtual void CalcShape(const IntegrationPoint &ip, Vector &shape) const
Overrides the scalar CalcShape function to print an error.
Definition: fe_nd.hpp:289
void CalcVShape_ND(ElementTransformation &Trans, DenseMatrix &shape) const
Definition: fe_base.cpp:915
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:309
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:572
virtual void ProjectMatrixCoefficient(MatrixCoefficient &mc, ElementTransformation &T, Vector &dofs) const
Given a matrix coefficient and a transformation, compute an approximation (&quot;projection&quot;) in the local...
Definition: fe_nd.hpp:312
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
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:579
Base class for Matrix Coefficients that optionally depend on time and space.
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:1710
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
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:309
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:1979
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:1475
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:2612
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:129
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:293
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
void LocalRestriction_ND(const double *tk, const Array< int > &d2t, ElementTransformation &Trans, DenseMatrix &R) const
Definition: fe_base.cpp:1516
Arbitrary order Nedelec elements in 2D on a square.
Definition: fe_nd.hpp:102
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:258
virtual void ProjectMatrixCoefficient(MatrixCoefficient &mc, ElementTransformation &T, Vector &dofs) const
Given a matrix coefficient and a transformation, compute an approximation (&quot;projection&quot;) in the local...
Definition: fe_nd.hpp:205
Class for integration point with weight.
Definition: intrules.hpp:25
virtual void ProjectMatrixCoefficient(MatrixCoefficient &mc, ElementTransformation &T, Vector &dofs) const
Given a matrix coefficient and a transformation, compute an approximation (&quot;projection&quot;) in the local...
Definition: fe_nd.hpp:374
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:924
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:652
virtual void ProjectGrad(const FiniteElement &fe, ElementTransformation &Trans, DenseMatrix &grad) const
Compute the discrete gradient matrix from the given FiniteElement onto &#39;this&#39; FiniteElement. The ElementTransformation is included to support cases when the matrix depends on it.
Definition: fe_nd.hpp:271
Arbitrary order H1 elements in 2D on a triangle.
Definition: fe_h1.hpp:83
virtual void ProjectMatrixCoefficient(MatrixCoefficient &mc, ElementTransformation &T, Vector &dofs) const
Given a matrix coefficient and a transformation, compute an approximation (&quot;projection&quot;) in the local...
Definition: fe_nd.hpp:146
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:2552
Arbitrary order H1 elements in 1D.
Definition: fe_h1.hpp:21
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:1441
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:137
virtual void ProjectGrad(const FiniteElement &fe, ElementTransformation &Trans, DenseMatrix &grad) const
Compute the discrete gradient matrix from the given FiniteElement onto &#39;this&#39; FiniteElement. The ElementTransformation is included to support cases when the matrix depends on it.
Definition: fe_nd.hpp:84
Class for evaluating 1D nodal, positive (Bernstein), or integrated (Gerritsma) bases.
Definition: fe_base.hpp:977
Arbitrary order Nedelec 3D elements in 2D on a triangle.
Definition: fe_nd.hpp:598
virtual void Project(const FiniteElement &fe, ElementTransformation &Trans, DenseMatrix &I) const
Compute the embedding/projection matrix from the given FiniteElement onto &#39;this&#39; FiniteElement. The ElementTransformation is included to support cases when the projection depends on it.
Definition: fe_nd.hpp:267
Arbitrary order Nedelec elements in 3D on a cube.
Definition: fe_nd.hpp:22
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:2102
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:1215
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 (&quot;projection&quot;) 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:397
void Eval(const double x, Vector &u) const
Evaluate the basis functions at point x in [0,1].
Definition: fe_base.cpp:1622
Vector data type.
Definition: vector.hpp:60
virtual void Project(const FiniteElement &fe, ElementTransformation &Trans, DenseMatrix &I) const
Compute the embedding/projection matrix from the given FiniteElement onto &#39;this&#39; FiniteElement. The ElementTransformation is included to support cases when the projection depends on it.
Definition: fe_nd.hpp:79
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:530
virtual void ProjectGrad(const FiniteElement &fe, ElementTransformation &Trans, DenseMatrix &grad) const
Compute the discrete gradient matrix from the given FiniteElement onto &#39;this&#39; FiniteElement. The ElementTransformation is included to support cases when the matrix depends on it.
Definition: fe_nd.cpp:2260
virtual void Project(const FiniteElement &fe, ElementTransformation &Trans, DenseMatrix &I) const
Compute the embedding/projection matrix from the given FiniteElement onto &#39;this&#39; FiniteElement. The ElementTransformation is included to support cases when the projection depends on it.
Definition: fe_nd.hpp:149
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:191
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:298
static const VectorFiniteElement & CheckVectorFE(const FiniteElement &fe)
Definition: fe_base.hpp:947
virtual void ProjectMatrixCoefficient(MatrixCoefficient &mc, ElementTransformation &T, Vector &dofs) const
Given a matrix coefficient and a transformation, compute an approximation (&quot;projection&quot;) in the local...
Definition: fe_nd.hpp:475
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:966
Array< int > dof_map
Definition: fe_nd.hpp:553
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:253
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:132
virtual void ProjectGrad(const FiniteElement &fe, ElementTransformation &Trans, DenseMatrix &grad) const
Compute the discrete gradient matrix from the given FiniteElement onto &#39;this&#39; FiniteElement. The ElementTransformation is included to support cases when the matrix depends on it.
Definition: fe_nd.hpp:212
void Project_ND(const double *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:1150
virtual void Project(const FiniteElement &fe, ElementTransformation &Trans, DenseMatrix &I) const
Compute the embedding/projection matrix from the given FiniteElement onto &#39;this&#39; FiniteElement. The ElementTransformation is included to support cases when the projection depends on it.
Definition: fe_nd.hpp:208
void ProjectIntegrated(VectorCoefficient &vc, ElementTransformation &Trans, Vector &dofs) const
Definition: fe_nd.cpp:244
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:457
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:242