15 #include "../config/config.hpp"
16 #include "../general/array.hpp"
17 #include "../linalg/linalg.hpp"
36 class ElementTransformation;
38 class VectorCoefficient;
137 virtual void GetFaceDofs(
int face,
int **dofs,
int *ndofs)
const;
203 #ifndef MFEM_THREAD_SAFE
210 #ifdef MFEM_THREAD_SAFE
217 void SetMapType(
int M)
271 #ifndef MFEM_THREAD_SAFE
322 #ifdef MFEM_THREAD_SAFE
380 { dofs = 0.0; dofs(vertex) = 1.0; }
404 { dofs = 0.0; dofs(vertex) = 1.0; }
423 static const double p[2];
501 static const double p[2];
549 { dofs = 0.; dofs(vertex) = 1.; }
662 { dofs = 0.0; dofs(vertex) = 1.0; }
664 virtual void GetFaceDofs(
int face,
int **dofs,
int *ndofs)
const;
700 { dofs = 0.0; dofs(vertex) = 1.0; }
737 static const double nk[3][2];
764 static const double nk[4][2];
791 static const double nk[8][2];
818 static const double nk[12][2];
845 static const double M[15][15];
863 static const double nk[24][2];
864 static const double pt[4];
865 static const double dpt[3];
913 #ifndef MFEM_THREAD_SAFE
961 #ifndef MFEM_THREAD_SAFE
962 mutable Vector shape1dx, shape1dy, shape1dz;
963 mutable DenseMatrix dshape1dx, dshape1dy, dshape1dz;
1072 static const double tk[12][3];
1094 static const double tk[6][3];
1116 static const double nk[6][3];
1144 static const double nk[36][3];
1172 static const double nk[4][3];
1219 Basis(
const int p,
const double *nodes,
const int _mode = 1);
1230 static void CalcMono(
const int p,
const double x,
double *u);
1231 static void CalcMono(
const int p,
const double x,
double *u,
double *d);
1233 static void CalcLegendre(
const int p,
const double x,
double *u);
1234 static void CalcLegendre(
const int p,
const double x,
double *u,
double *d);
1236 static void CalcChebyshev(
const int p,
const double x,
double *u);
1237 static void CalcChebyshev(
const int p,
const double x,
double *u,
double *d);
1242 static const int *
Binom(
const int p);
1252 static void CalcBasis(
const int p,
const double x,
double *u)
1258 { CalcChebyshev(p, x, u); }
1261 static void CalcBasis(
const int p,
const double x,
double *u,
double *d)
1265 { CalcChebyshev(p, x, u, d); }
1269 {
return pow(x, (
double) p); }
1277 static void CalcBinomTerms(
const int p,
const double x,
const double y,
1281 static void CalcBinomTerms(
const int p,
const double x,
const double y,
1282 double *u,
double *d);
1285 static void CalcDBinomTerms(
const int p,
const double x,
const double y,
1302 #ifndef MFEM_THREAD_SAFE
1303 mutable Vector shape_x, dshape_x;
1319 #ifndef MFEM_THREAD_SAFE
1320 mutable Vector shape_x, shape_y, dshape_x, dshape_y;
1338 #ifndef MFEM_THREAD_SAFE
1339 mutable Vector shape_x, shape_y, shape_z, dshape_x, dshape_y, dshape_z;
1355 #ifndef MFEM_THREAD_SAFE
1361 mutable Vector shape_x, dshape_x;
1376 #ifndef MFEM_THREAD_SAFE
1378 mutable Vector shape_x, shape_y, dshape_x, dshape_y;
1394 #ifndef MFEM_THREAD_SAFE
1396 mutable Vector shape_x, shape_y, shape_z, dshape_x, dshape_y, dshape_z;
1412 #ifndef MFEM_THREAD_SAFE
1413 mutable Vector shape_x, shape_y, shape_l, dshape_x, dshape_y, dshape_l, u;
1429 #ifndef MFEM_THREAD_SAFE
1430 mutable Vector shape_x, shape_y, shape_z, shape_l;
1431 mutable Vector dshape_x, dshape_y, dshape_z, dshape_l, u;
1452 #ifndef MFEM_THREAD_SAFE
1453 mutable Vector shape_x, dshape_x;
1468 #ifndef MFEM_THREAD_SAFE
1469 mutable Vector shape_x, dshape_x;
1486 #ifndef MFEM_THREAD_SAFE
1487 mutable Vector shape_x, shape_y, dshape_x, dshape_y;
1502 #ifndef MFEM_THREAD_SAFE
1503 mutable Vector shape_x, shape_y, dshape_x, dshape_y;
1520 #ifndef MFEM_THREAD_SAFE
1521 mutable Vector shape_x, shape_y, shape_z, dshape_x, dshape_y, dshape_z;
1536 #ifndef MFEM_THREAD_SAFE
1537 mutable Vector shape_x, shape_y, shape_z, dshape_x, dshape_y, dshape_z;
1553 #ifndef MFEM_THREAD_SAFE
1554 mutable Vector shape_x, shape_y, shape_l, dshape_x, dshape_y, dshape_l, u;
1571 #ifndef MFEM_THREAD_SAFE
1572 mutable Vector dshape_1d;
1588 #ifndef MFEM_THREAD_SAFE
1589 mutable Vector shape_x, shape_y, shape_z, shape_l;
1590 mutable Vector dshape_x, dshape_y, dshape_z, dshape_l, u;
1607 #ifndef MFEM_THREAD_SAFE
1608 mutable Vector dshape_1d;
1623 static const double nk[8];
1626 #ifndef MFEM_THREAD_SAFE
1627 mutable Vector shape_cx, shape_ox, shape_cy, shape_oy;
1628 mutable Vector dshape_cx, dshape_cy;
1660 static const double nk[18];
1663 #ifndef MFEM_THREAD_SAFE
1664 mutable Vector shape_cx, shape_ox, shape_cy, shape_oy, shape_cz, shape_oz;
1665 mutable Vector dshape_cx, dshape_cy, dshape_cz;
1697 static const double nk[6], c;
1699 #ifndef MFEM_THREAD_SAFE
1700 mutable Vector shape_x, shape_y, shape_l;
1701 mutable Vector dshape_x, dshape_y, dshape_l;
1736 static const double nk[12], c;
1738 #ifndef MFEM_THREAD_SAFE
1739 mutable Vector shape_x, shape_y, shape_z, shape_l;
1740 mutable Vector dshape_x, dshape_y, dshape_z, dshape_l;
1775 static const double tk[18];
1778 #ifndef MFEM_THREAD_SAFE
1779 mutable Vector shape_cx, shape_ox, shape_cy, shape_oy, shape_cz, shape_oz;
1780 mutable Vector dshape_cx, dshape_cy, dshape_cz;
1813 static const double tk[8];
1816 #ifndef MFEM_THREAD_SAFE
1817 mutable Vector shape_cx, shape_ox, shape_cy, shape_oy;
1818 mutable Vector dshape_cx, dshape_cy;
1851 static const double tk[18], c;
1853 #ifndef MFEM_THREAD_SAFE
1854 mutable Vector shape_x, shape_y, shape_z, shape_l;
1855 mutable Vector dshape_x, dshape_y, dshape_z, dshape_l;
1889 static const double tk[8], c;
1891 #ifndef MFEM_THREAD_SAFE
1892 mutable Vector shape_x, shape_y, shape_l;
1893 mutable Vector dshape_x, dshape_y, dshape_l;
Abstract class for Finite Elements.
RefinedLinear3DFiniteElement()
Construct a quadratic FE on tetrahedron.
virtual void CalcVShape(ElementTransformation &Trans, DenseMatrix &shape) const
virtual void CalcShape(const IntegrationPoint &ip, Vector &shape) const
virtual void CalcShape(const IntegrationPoint &ip, Vector &shape) const
RT0TriangleFiniteElement()
RT_QuadrilateralElement(const int p)
virtual void Project(VectorCoefficient &vc, ElementTransformation &Trans, Vector &dofs) const
virtual void Project(VectorCoefficient &vc, ElementTransformation &Trans, Vector &dofs) const
RT2TriangleFiniteElement()
int GetDim() const
Returns the space dimension for the finite element.
GaussQuad2DFiniteElement()
virtual void ProjectDelta(int vertex, Vector &dofs) const
L2_TetrahedronElement(const int p, const int _type=0)
virtual void GetLocalInterpolation(ElementTransformation &Trans, DenseMatrix &I) const
virtual void CalcVShape(ElementTransformation &Trans, DenseMatrix &shape) const
virtual void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const
virtual void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const
static void CalcBernstein(const int p, const double x, double *u, double *d)
Class for integration rule.
Linear 1D element with nodes 1/3 and 2/3 (trace of RT1)
Quadratic 1D element with nodes the Gaussian points in [0,1] (trace of RT2)
CrouzeixRaviartQuadFiniteElement()
virtual void ProjectDelta(int vertex, Vector &dofs) const
virtual void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const
Linear3DFiniteElement()
Construct a linear FE on tetrahedron.
static double CalcDelta(const int p, const double x)
virtual void GetLocalInterpolation(ElementTransformation &Trans, DenseMatrix &I) const
RT1TriangleFiniteElement()
virtual void CalcVShape(ElementTransformation &Trans, DenseMatrix &shape) const
virtual void GetLocalInterpolation(ElementTransformation &Trans, DenseMatrix &I) const
H1_HexahedronElement(const int p)
virtual void ProjectDelta(int vertex, Vector &dofs) const
virtual void CalcVShape(const IntegrationPoint &ip, DenseMatrix &shape) const
virtual void CalcVShape(const IntegrationPoint &ip, DenseMatrix &shape) const
RefinedBiLinear2DFiniteElement()
Construct a biquadratic FE on quadrilateral.
ND_QuadrilateralElement(const int p)
virtual void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const
L2Pos_TriangleElement(const int p)
virtual void ProjectGrad(const FiniteElement &fe, ElementTransformation &Trans, DenseMatrix &grad) const
virtual void CalcVShape(ElementTransformation &Trans, DenseMatrix &shape) const
H1Pos_SegmentElement(const int p)
virtual void ProjectCurl(const FiniteElement &fe, ElementTransformation &Trans, DenseMatrix &curl) const
virtual void ProjectDiv(const FiniteElement &fe, ElementTransformation &Trans, DenseMatrix &div) const
virtual void ProjectDelta(int vertex, Vector &dofs) const
virtual void CalcCurlShape(const IntegrationPoint &ip, DenseMatrix &curl_shape) const
virtual void Project(Coefficient &coeff, ElementTransformation &Trans, Vector &dofs) const
virtual void ProjectDelta(int vertex, Vector &dofs) const
virtual void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const
virtual void CalcShape(const IntegrationPoint &ip, Vector &shape) const
virtual void ProjectDelta(int vertex, Vector &dofs) const
virtual void CalcVShape(const IntegrationPoint &ip, DenseMatrix &shape) const
virtual void Project(VectorCoefficient &vc, ElementTransformation &Trans, Vector &dofs) const
virtual void CalcShape(const IntegrationPoint &ip, Vector &shape) const
virtual void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const
L2Pos_TetrahedronElement(const int p)
void CalcVShape_RT(ElementTransformation &Trans, DenseMatrix &shape) const
void SetSize(int s)
Resizes the vector if the new size is different.
virtual void CalcDivShape(const IntegrationPoint &ip, Vector &divshape) const
virtual void GetLocalInterpolation(ElementTransformation &Trans, DenseMatrix &I) const
virtual void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const
virtual void ProjectDelta(int vertex, Vector &dofs) const
virtual void Project(Coefficient &coeff, ElementTransformation &Trans, Vector &dofs) const
virtual void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const
void LocalInterpolation_ND(const double *tk, const Array< int > &d2t, ElementTransformation &Trans, DenseMatrix &I) const
virtual void CalcHessian(const IntegrationPoint &ip, DenseMatrix &h) const
virtual void CalcShape(const IntegrationPoint &ip, Vector &shape) const
virtual void CalcVShape(const IntegrationPoint &ip, DenseMatrix &shape) const
static void UniformPoints(const int p, double *x)
virtual void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const
evaluate derivatives of shape function - constant 0
virtual void CalcVShape(ElementTransformation &Trans, DenseMatrix &shape) const
virtual void CalcVShape(ElementTransformation &Trans, DenseMatrix &shape) const
virtual void CalcShape(const IntegrationPoint &ip, Vector &shape) const
virtual void ProjectDelta(int vertex, Vector &dofs) const
virtual void CalcShape(const IntegrationPoint &ip, Vector &shape) const
virtual void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const
virtual void GetLocalInterpolation(ElementTransformation &Trans, DenseMatrix &I) const
LagrangeHexFiniteElement(int degree)
BiQuadPos2DFiniteElement()
int GetOrder() const
Returns the order of the finite element.
virtual void CalcDivShape(const IntegrationPoint &ip, Vector &divshape) const
virtual void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const
virtual void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const
virtual void CalcVShape(ElementTransformation &Trans, DenseMatrix &shape) const
virtual void CalcShape(const IntegrationPoint &ip, Vector &shape) const
GaussBiQuad2DFiniteElement()
virtual void ProjectGrad(const FiniteElement &fe, ElementTransformation &Trans, DenseMatrix &grad) const
virtual void Project(VectorCoefficient &vc, ElementTransformation &Trans, Vector &dofs) const
Class for quadratic FE on triangle.
virtual void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const
Basis & OpenBasis(const int p)
const double * ClosedPoints(const int p)
PositiveFiniteElement(int D, int G, int Do, int O, int F=FunctionSpace::Pk)
Class for quadratic FE on interval.
virtual void CalcVShape(ElementTransformation &Trans, DenseMatrix &shape) const
virtual void CalcDivShape(const IntegrationPoint &ip, Vector &divshape) const
virtual void GetLocalInterpolation(ElementTransformation &Trans, DenseMatrix &I) const
virtual void CalcShape(const IntegrationPoint &ip, Vector &shape) const
int Space() const
Returns the type of space on each element.
virtual void CalcShape(const IntegrationPoint &ip, Vector &shape) const
virtual void GetLocalInterpolation(ElementTransformation &Trans, DenseMatrix &I) const
virtual void Project(const FiniteElement &fe, ElementTransformation &Trans, DenseMatrix &I) const
RefinedTriLinear3DFiniteElement()
Construct a biquadratic FE on quadrilateral.
virtual void CalcShape(const IntegrationPoint &ip, Vector &shape) const
Quadratic3DFiniteElement()
Construct a quadratic FE on tetrahedron.
virtual void CalcShape(const IntegrationPoint &ip, Vector &shape) const
virtual void CalcVShape(const IntegrationPoint &ip, DenseMatrix &shape) const
virtual void GetLocalInterpolation(ElementTransformation &Trans, DenseMatrix &I) const
virtual void CalcVShape(const IntegrationPoint &ip, DenseMatrix &shape) const
const Array< int > & GetDofMap() const
virtual void ProjectDelta(int vertex, Vector &dofs) const
virtual void CalcShape(const IntegrationPoint &ip, Vector &shape) const
virtual void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const
virtual void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const
virtual void CalcShape(const IntegrationPoint &ip, Vector &shape) const
virtual void CalcShape(const IntegrationPoint &ip, Vector &shape) const
virtual void CalcShape(const IntegrationPoint &ip, Vector &shape) const
virtual void ProjectDelta(int vertex, Vector &dofs) const
void ProjectCurl_RT(const double *nk, const Array< int > &d2n, const FiniteElement &fe, ElementTransformation &Trans, DenseMatrix &curl) const
H1Pos_HexahedronElement(const int p)
virtual void ProjectGrad(const FiniteElement &fe, ElementTransformation &Trans, DenseMatrix &grad) const
virtual void CalcShape(const IntegrationPoint &ip, Vector &shape) const
RT_HexahedronElement(const int p)
virtual void CalcHessian(const IntegrationPoint &ip, DenseMatrix &h) const
virtual void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const
Linear2DFiniteElement()
Construct a linear FE on triangle.
virtual void Project(VectorCoefficient &vc, ElementTransformation &Trans, Vector &dofs) const
virtual void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const
Class for refined bi-linear FE on quadrilateral.
virtual void GetLocalInterpolation(ElementTransformation &Trans, DenseMatrix &I) const
virtual void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const
virtual void CalcVShape(const IntegrationPoint &ip, DenseMatrix &shape) const
virtual void CalcShape(const IntegrationPoint &ip, Vector &shape) const
L2_SegmentElement(const int p, const int _type=0)
virtual void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const
L2Pos_HexahedronElement(const int p)
ND_TriangleElement(const int p)
virtual void CalcDivShape(const IntegrationPoint &ip, Vector &divshape) const
static void CalcBasis(const int p, const double x, double *u)
virtual void CalcVShape(ElementTransformation &Trans, DenseMatrix &shape) const
virtual void CalcShape(const IntegrationPoint &ip, Vector &shape) const
evaluate shape function - constant 1
virtual void CalcHessian(const IntegrationPoint &ip, DenseMatrix &h) const
static void CalcBinomTerms(const int p, const double x, const double y, double *u)
Compute the terms in the expansion of the binomial (x + y)^p.
virtual void CalcHessian(const IntegrationPoint &ip, DenseMatrix &h) const
virtual void CalcVShape(const IntegrationPoint &ip, DenseMatrix &shape) const
Cubic3DFiniteElement()
Construct a cubic FE on tetrahedron.
Linear1DFiniteElement()
Construct a linear FE on interval.
virtual void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const
virtual void CalcDivShape(const IntegrationPoint &ip, Vector &divshape) const
virtual void GetLocalInterpolation(ElementTransformation &Trans, DenseMatrix &I) const
virtual void ProjectCurl(const FiniteElement &fe, ElementTransformation &Trans, DenseMatrix &curl) const
virtual void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const
virtual void GetLocalInterpolation(ElementTransformation &Trans, DenseMatrix &I) const
CrouzeixRaviartFiniteElement()
NURBS1DFiniteElement(int p)
virtual void CalcShape(const IntegrationPoint &ip, Vector &shape) const
virtual void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const
virtual void CalcShape(const IntegrationPoint &ip, Vector &shape) const
virtual void ProjectDelta(int vertex, Vector &dofs) const
Class for bilinear FE on quad with nodes at the 4 Gaussian points.
Class for refined linear FE on interval.
virtual void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const
Class for refined linear FE on triangle.
Class for refined linear FE on tetrahedron.
void SetPatch(int p) const
virtual void CalcShape(const IntegrationPoint &ip, Vector &shape) const
virtual void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const
virtual void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const
Class for constant FE on triangle.
H1_TriangleElement(const int p)
RefinedLinear1DFiniteElement()
Construct a quadratic FE on interval.
virtual void ProjectDelta(int vertex, Vector &dofs) const
virtual void ProjectDelta(int vertex, Vector &dofs) const
virtual void CalcShape(const IntegrationPoint &ip, Vector &shape) const
virtual void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const
virtual void CalcShape(const IntegrationPoint &ip, Vector &shape) const
virtual void ProjectCurl(const FiniteElement &fe, ElementTransformation &Trans, DenseMatrix &curl) const
virtual void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const
void LocalInterpolation_RT(const double *nk, const Array< int > &d2n, ElementTransformation &Trans, DenseMatrix &I) const
virtual void CalcDivShape(const IntegrationPoint &ip, Vector &divshape) const
static void ChebyshevPoints(const int p, double *x)
NURBSFiniteElement(int D, int G, int Do, int O, int F)
virtual void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const
const Array< int > & GetDofMap() const
virtual void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const
virtual void CalcVShape(const IntegrationPoint &ip, DenseMatrix &shape) const
Class for refined trilinear FE on a hexahedron.
ND_TetrahedronElement(const int p)
virtual void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const
Nedelec1TetFiniteElement()
Class for quadratic FE on tetrahedron.
virtual void CalcShape(const IntegrationPoint &ip, Vector &shape) const =0
virtual void CalcVShape(ElementTransformation &Trans, DenseMatrix &shape) const
GaussLinear2DFiniteElement()
virtual void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const
virtual void CalcVShape(ElementTransformation &Trans, DenseMatrix &shape) const
virtual void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const
virtual void GetLocalInterpolation(ElementTransformation &Trans, DenseMatrix &I) const
const IntegrationRule & GetNodes() const
virtual void Project(VectorCoefficient &vc, ElementTransformation &Trans, Vector &dofs) const
virtual void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const
virtual void ProjectDelta(int vertex, Vector &dofs) const
virtual void CalcShape(const IntegrationPoint &ip, Vector &shape) const
virtual void ProjectGrad(const FiniteElement &fe, ElementTransformation &Trans, DenseMatrix &grad) const
L2Pos_QuadrilateralElement(const int p)
P1TetNonConfFiniteElement()
P0SegmentFiniteElement(int Ord=0)
virtual void CalcDivShape(const IntegrationPoint &ip, Vector &divshape) const
virtual void CalcShape(const IntegrationPoint &ip, Vector &shape) const
virtual void Project(VectorCoefficient &vc, ElementTransformation &Trans, Vector &dofs) const
virtual void CalcVShape(ElementTransformation &Trans, DenseMatrix &shape) const
Class for linear FE on tetrahedron.
Nedelec1HexFiniteElement()
Class for linear FE on interval.
virtual void CalcVShape(const IntegrationPoint &ip, DenseMatrix &shape) const
virtual void CalcVShape(const IntegrationPoint &ip, DenseMatrix &shape) const
Crouzeix-Raviart finite element on quadrilateral.
Class for linear FE on triangle.
Class for quadratic FE on triangle with nodes at the "Gaussian" points.
virtual void CalcShape(const IntegrationPoint &ip, Vector &shape) const
virtual void CalcVShape(const IntegrationPoint &ip, DenseMatrix &shape) const
virtual void GetLocalInterpolation(ElementTransformation &Trans, DenseMatrix &I) const
virtual void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const
virtual void GetLocalInterpolation(ElementTransformation &Trans, DenseMatrix &I) const
virtual void GetLocalInterpolation(ElementTransformation &Trans, DenseMatrix &I) const
virtual void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const
virtual void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const
virtual void CalcDivShape(const IntegrationPoint &ip, Vector &divshape) const
virtual void CalcShape(const IntegrationPoint &ip, Vector &shape) const
virtual void CalcHessian(const IntegrationPoint &ip, DenseMatrix &h) const
void SetElement(int e) const
virtual void CalcShape(const IntegrationPoint &ip, Vector &shape) const
void ProjectGrad_ND(const double *tk, const Array< int > &d2t, const FiniteElement &fe, ElementTransformation &Trans, DenseMatrix &grad) const
virtual void CalcShape(const IntegrationPoint &ip, Vector &shape) const
virtual void Project(const FiniteElement &fe, ElementTransformation &Trans, DenseMatrix &I) const
virtual void CalcVShape(ElementTransformation &Trans, DenseMatrix &shape) const
virtual void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const
virtual void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const
int GetGeomType() const
Returns the geometry type:
virtual void CalcCurlShape(const IntegrationPoint &ip, DenseMatrix &curl_shape) const
virtual void CalcShape(const IntegrationPoint &ip, Vector &shape) const
ND_HexahedronElement(const int p)
virtual void CalcShape(const IntegrationPoint &ip, Vector &shape) const
virtual void CalcShape(const IntegrationPoint &ip, Vector &shape) const
virtual void CalcShape(const IntegrationPoint &ip, Vector &shape) const
virtual void ProjectDelta(int vertex, Vector &dofs) const
virtual void Project(VectorCoefficient &vc, ElementTransformation &Trans, Vector &dofs) const
virtual void CalcCurlShape(const IntegrationPoint &ip, DenseMatrix &curl_shape) const
virtual void CalcDivShape(const IntegrationPoint &ip, Vector &divshape) const
virtual void CalcShape(const IntegrationPoint &ip, Vector &shape) const
H1_QuadrilateralElement(const int p)
virtual void GetLocalInterpolation(ElementTransformation &Trans, DenseMatrix &I) const
~LagrangeHexFiniteElement()
void CalcVShape_ND(ElementTransformation &Trans, DenseMatrix &shape) const
virtual void CalcVShape(ElementTransformation &Trans, DenseMatrix &shape) const
virtual void ProjectDelta(int vertex, Vector &dofs) const
int GetDof() const
Returns the degrees of freedom in the FE space.
virtual void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const
Class for bi-quadratic FE on quadrilateral.
Class for tri-linear FE on cube.
Base class Coefficient that may optionally depend on time.
virtual void ProjectDelta(int vertex, Vector &dofs) const
virtual void ProjectDelta(int vertex, Vector &dofs) const
virtual void CalcCurlShape(const IntegrationPoint &ip, DenseMatrix &curl_shape) const
virtual void CalcShape(const IntegrationPoint &ip, Vector &shape) const
virtual void ProjectDelta(int vertex, Vector &dofs) const
virtual void CalcShape(const IntegrationPoint &ip, Vector &shape) const
virtual void CalcShape(const IntegrationPoint &ip, Vector &shape) const
virtual void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const
virtual void ProjectDelta(int vertex, Vector &dofs) const
static const int * Binom(const int p)
virtual void CalcDivShape(const IntegrationPoint &ip, Vector &divshape) const
virtual void CalcDivShape(const IntegrationPoint &ip, Vector &divshape) const
virtual void CalcShape(const IntegrationPoint &ip, Vector &shape) const
virtual void Project(const FiniteElement &fe, ElementTransformation &Trans, DenseMatrix &I) const
static void GaussLobattoPoints(const int p, double *x)
virtual void CalcVShape(ElementTransformation &Trans, DenseMatrix &shape) const
virtual void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const
virtual void CalcVShape(const IntegrationPoint &ip, DenseMatrix &shape) const
virtual void Project(VectorCoefficient &vc, ElementTransformation &Trans, Vector &dofs) const
FiniteElement(int D, int G, int Do, int O, int F=FunctionSpace::Pk)
virtual void ProjectDelta(int vertex, Vector &dofs) const
virtual void CalcShape(const IntegrationPoint &ip, Vector &shape) const
Class for bilinear FE on quadrilateral.
Quad1DFiniteElement()
Construct a quadratic FE on interval.
virtual void CalcShape(const IntegrationPoint &ip, Vector &shape) const
NURBS3DFiniteElement(int p)
virtual void GetFaceDofs(int face, int **dofs, int *ndofs) const
Class for linear FE on triangle with nodes at the 3 "Gaussian" points.
virtual void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const
virtual void GetLocalInterpolation(ElementTransformation &Trans, DenseMatrix &I) const
virtual void CalcVShape(ElementTransformation &Trans, DenseMatrix &shape) const
virtual void CalcShape(const IntegrationPoint &ip, Vector &shape) const
virtual void CalcCurlShape(const IntegrationPoint &ip, DenseMatrix &curl_shape) const
H1Pos_QuadrilateralElement(const int p)
virtual void Project(VectorCoefficient &vc, ElementTransformation &Trans, Vector &dofs) const
Array< KnotVector * > & KnotVectors() const
Class for integration point with weight.
NURBS2DFiniteElement(int p)
virtual void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const
virtual void ProjectDelta(int vertex, Vector &dofs) const
virtual void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const
virtual void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const
virtual void GetLocalInterpolation(ElementTransformation &Trans, DenseMatrix &I) const
virtual void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const
Bi-quadratic element on quad with nodes at the 9 Gaussian points.
virtual void CalcVShape(ElementTransformation &Trans, DenseMatrix &shape) const
virtual void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const
void Project_RT(const double *nk, const Array< int > &d2n, VectorCoefficient &vc, ElementTransformation &Trans, Vector &dofs) const
virtual void CalcShape(const IntegrationPoint &ip, Vector &shape) const
virtual void CalcShape(const IntegrationPoint &ip, Vector &shape) const
virtual void CalcVShape(const IntegrationPoint &ip, DenseMatrix &shape) const
virtual void CalcVShape(const IntegrationPoint &ip, DenseMatrix &shape) const
virtual void CalcVShape(const IntegrationPoint &ip, DenseMatrix &shape) const
virtual void CalcVShape(const IntegrationPoint &ip, DenseMatrix &shape) const
virtual void ProjectDelta(int vertex, Vector &dofs) const
virtual void ProjectGrad(const FiniteElement &fe, ElementTransformation &Trans, DenseMatrix &grad) const
virtual void ProjectDiv(const FiniteElement &fe, ElementTransformation &Trans, DenseMatrix &div) const
virtual void GetLocalInterpolation(ElementTransformation &Trans, DenseMatrix &I) const
virtual void ProjectDelta(int vertex, Vector &dofs) const
RefinedLinear2DFiniteElement()
Construct a quadratic FE on triangle.
void NodalLocalInterpolation(ElementTransformation &Trans, DenseMatrix &I, const NodalFiniteElement &fine_fe) const
virtual void Project(VectorCoefficient &vc, ElementTransformation &Trans, Vector &dofs) const
void SetIJK(int *IJK) const
virtual void Project(VectorCoefficient &vc, ElementTransformation &Trans, Vector &dofs) const
virtual void ProjectGrad(const FiniteElement &fe, ElementTransformation &Trans, DenseMatrix &grad) const
virtual void CalcShape(const IntegrationPoint &ip, Vector &shape) const
virtual void CalcShape(const IntegrationPoint &ip, Vector &shape) const
RT_TetrahedronElement(const int p)
L2_TriangleElement(const int p, const int _type=0)
virtual void GetLocalInterpolation(ElementTransformation &Trans, DenseMatrix &I) const
virtual void CalcShape(const IntegrationPoint &ip, Vector &shape) const
virtual void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const
H1_TetrahedronElement(const int p)
BiQuad2DFiniteElement()
Construct a biquadratic FE on quadrilateral.
virtual void GetFaceDofs(int face, int **dofs, int *ndofs) const
Tensor products of 1D FEs (only degree 2 is functional)
Basis & ClosedBasis(const int p)
virtual void CalcDivShape(const IntegrationPoint &ip, Vector &divshape) const
P0TriangleFiniteElement()
Construct P0 triangle finite element.
virtual void Project(const FiniteElement &fe, ElementTransformation &Trans, DenseMatrix &I) const
virtual void CalcShape(const IntegrationPoint &ip, Vector &shape) const
virtual void Project(const FiniteElement &fe, ElementTransformation &Trans, DenseMatrix &I) const
RT_TriangleElement(const int p)
virtual void CalcShape(const IntegrationPoint &ip, Vector &shape) const
virtual void Project(VectorCoefficient &vc, ElementTransformation &Trans, Vector &dofs) const
virtual void CalcCurlShape(const IntegrationPoint &ip, DenseMatrix &curl_shape) const
void Eval(const double x, Vector &u) const
L2Pos_SegmentElement(const int p)
virtual void CalcShape(const IntegrationPoint &ip, Vector &shape) const
virtual void Project(VectorCoefficient &vc, ElementTransformation &Trans, Vector &dofs) const
Class for cubic FE on tetrahedron.
virtual void CalcDivShape(const IntegrationPoint &ip, Vector &divshape) const
static void CalcBernstein(const int p, const double x, double *u)
virtual void Project(const FiniteElement &fe, ElementTransformation &Trans, DenseMatrix &I) const
virtual void CalcShape(const IntegrationPoint &ip, Vector &shape) const
virtual void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const
virtual void ProjectDelta(int vertex, Vector &dofs) const
virtual void CalcVShape(const IntegrationPoint &ip, DenseMatrix &shape) const
Quad2DFiniteElement()
Construct a quadratic FE on triangle.
virtual void Project(const FiniteElement &fe, ElementTransformation &Trans, DenseMatrix &I) const
virtual void Project(VectorCoefficient &vc, ElementTransformation &Trans, Vector &dofs) const
Describes the space on each element.
virtual void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const
const double * OpenPoints(const int p)
virtual void Project(VectorCoefficient &vc, ElementTransformation &Trans, Vector &dofs) const
virtual void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const
GaussBiLinear2DFiniteElement()
static void GaussPoints(const int p, double *x)
virtual void CalcCurlShape(const IntegrationPoint &ip, DenseMatrix &curl_shape) const
virtual void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const
virtual void Project(Coefficient &coeff, ElementTransformation &Trans, Vector &dofs) const
virtual void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const
H1_SegmentElement(const int p)
virtual void CalcShape(const IntegrationPoint &ip, Vector &shape) const
NodalFiniteElement(int D, int G, int Do, int O, int F=FunctionSpace::Pk)
virtual void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const
virtual void ProjectDelta(int vertex, Vector &dofs) const
L2_HexahedronElement(const int p, const int _type=0)
virtual void ProjectDelta(int vertex, Vector &dofs) const
virtual void CalcVShape(const IntegrationPoint &ip, DenseMatrix &shape) const
virtual void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const
virtual void ProjectDelta(int vertex, Vector &dofs) const
virtual void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const
virtual void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const =0
RotTriLinearHexFiniteElement()
virtual void CalcShape(const IntegrationPoint &ip, Vector &shape) const
virtual void GetLocalInterpolation(ElementTransformation &Trans, DenseMatrix &I) const
virtual void ProjectGrad(const FiniteElement &fe, ElementTransformation &Trans, DenseMatrix &grad) const
void Project_ND(const double *tk, const Array< int > &d2t, VectorCoefficient &vc, ElementTransformation &Trans, Vector &dofs) const
virtual void CalcShape(const IntegrationPoint &ip, Vector &shape) const
virtual void Project(VectorCoefficient &vc, ElementTransformation &Trans, Vector &dofs) const
static void CalcBasis(const int p, const double x, double *u, double *d)
virtual void Project(const FiniteElement &fe, ElementTransformation &Trans, DenseMatrix &I) const
virtual void CalcShape(const IntegrationPoint &ip, Vector &shape) const
virtual void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const
virtual void ProjectGrad(const FiniteElement &fe, ElementTransformation &Trans, DenseMatrix &grad) const
virtual void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const
Basis(const int p, const double *nodes, const int _mode=1)
static void CalcDBinomTerms(const int p, const double x, const double y, double *d)
virtual void CalcVShape(const IntegrationPoint &ip, DenseMatrix &shape) const
TriLinear3DFiniteElement()
Construct a tri-linear FE on cube.
virtual void ProjectDelta(int vertex, Vector &dofs) const
virtual void CalcShape(const IntegrationPoint &ip, Vector &shape) const
VectorFiniteElement(int D, int G, int Do, int O, int M, int F=FunctionSpace::Pk) MapType
virtual void CalcShape(const IntegrationPoint &ip, Vector &shape) const
virtual void CalcVShape(ElementTransformation &Trans, DenseMatrix &shape) const
virtual void CalcShape(const IntegrationPoint &ip, Vector &shape) const
virtual void CalcShape(const IntegrationPoint &ip, Vector &shape) const
BiLinear2DFiniteElement()
Construct a bilinear FE on quadrilateral.
virtual void CalcVShape(ElementTransformation &Trans, DenseMatrix &shape) const
Crouzeix-Raviart finite element on triangle.
L2_QuadrilateralElement(const int p, const int _type=0)
virtual void CalcShape(const IntegrationPoint &ip, Vector &shape) const
Lagrange1DFiniteElement(int degree)
virtual void Project(VectorCoefficient &vc, ElementTransformation &Trans, Vector &dofs) const
virtual void CalcDivShape(const IntegrationPoint &ip, Vector &divshape) const
virtual void ProjectDelta(int vertex, Vector &dofs) const
virtual void ProjectDelta(int vertex, Vector &dofs) const
virtual void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const
virtual void ProjectDelta(int vertex, Vector &dofs) const
virtual void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const
void ProjectGrad_RT(const double *nk, const Array< int > &d2n, const FiniteElement &fe, ElementTransformation &Trans, DenseMatrix &grad) const
virtual void Project(Coefficient &coeff, ElementTransformation &Trans, Vector &dofs) const