15 #include "../config/config.hpp"
16 #include "../general/array.hpp"
17 #include "../linalg/linalg.hpp"
38 class ElementTransformation;
40 class VectorCoefficient;
140 virtual void GetFaceDofs(
int face,
int **dofs,
int *ndofs)
const;
210 #ifndef MFEM_THREAD_SAFE
217 #ifdef MFEM_THREAD_SAFE
224 void SetMapType(
int M)
278 #ifndef MFEM_THREAD_SAFE
333 #ifdef MFEM_THREAD_SAFE
392 { dofs = 0.0; dofs(vertex) = 1.0; }
416 { dofs = 0.0; dofs(vertex) = 1.0; }
435 static const double p[2];
513 static const double p[2];
561 { dofs = 0.; dofs(vertex) = 1.; }
674 { dofs = 0.0; dofs(vertex) = 1.0; }
676 virtual void GetFaceDofs(
int face,
int **dofs,
int *ndofs)
const;
712 { dofs = 0.0; dofs(vertex) = 1.0; }
749 static const double nk[3][2];
776 static const double nk[4][2];
803 static const double nk[8][2];
830 static const double nk[12][2];
857 static const double M[15][15];
875 static const double nk[24][2];
876 static const double pt[4];
877 static const double dpt[3];
925 #ifndef MFEM_THREAD_SAFE
973 #ifndef MFEM_THREAD_SAFE
974 mutable Vector shape1dx, shape1dy, shape1dz;
975 mutable DenseMatrix dshape1dx, dshape1dy, dshape1dz;
1084 static const double tk[12][3];
1106 static const double tk[6][3];
1128 static const double nk[6][3];
1156 static const double nk[36][3];
1184 static const double nk[4][3];
1231 Basis(
const int p,
const double *nodes,
const int _mode = 1);
1242 static void CalcMono(
const int p,
const double x,
double *u);
1243 static void CalcMono(
const int p,
const double x,
double *u,
double *d);
1245 static void CalcLegendre(
const int p,
const double x,
double *u);
1246 static void CalcLegendre(
const int p,
const double x,
double *u,
double *d);
1248 static void CalcChebyshev(
const int p,
const double x,
double *u);
1249 static void CalcChebyshev(
const int p,
const double x,
double *u,
double *d);
1254 static const int *
Binom(
const int p);
1264 static void CalcBasis(
const int p,
const double x,
double *u)
1270 { CalcChebyshev(p, x, u); }
1273 static void CalcBasis(
const int p,
const double x,
double *u,
double *d)
1277 { CalcChebyshev(p, x, u, d); }
1281 {
return pow(x, (
double) p); }
1289 static void CalcBinomTerms(
const int p,
const double x,
const double y,
1293 static void CalcBinomTerms(
const int p,
const double x,
const double y,
1294 double *u,
double *d);
1297 static void CalcDBinomTerms(
const int p,
const double x,
const double y,
1314 #ifndef MFEM_THREAD_SAFE
1315 mutable Vector shape_x, dshape_x;
1331 #ifndef MFEM_THREAD_SAFE
1332 mutable Vector shape_x, shape_y, dshape_x, dshape_y;
1350 #ifndef MFEM_THREAD_SAFE
1351 mutable Vector shape_x, shape_y, shape_z, dshape_x, dshape_y, dshape_z;
1367 #ifndef MFEM_THREAD_SAFE
1373 mutable Vector shape_x, dshape_x;
1388 #ifndef MFEM_THREAD_SAFE
1390 mutable Vector shape_x, shape_y, dshape_x, dshape_y;
1406 #ifndef MFEM_THREAD_SAFE
1408 mutable Vector shape_x, shape_y, shape_z, dshape_x, dshape_y, dshape_z;
1424 #ifndef MFEM_THREAD_SAFE
1425 mutable Vector shape_x, shape_y, shape_l, dshape_x, dshape_y, dshape_l, u;
1441 #ifndef MFEM_THREAD_SAFE
1442 mutable Vector shape_x, shape_y, shape_z, shape_l;
1443 mutable Vector dshape_x, dshape_y, dshape_z, dshape_l, u;
1464 #ifndef MFEM_THREAD_SAFE
1465 mutable Vector shape_x, dshape_x;
1480 #ifndef MFEM_THREAD_SAFE
1481 mutable Vector shape_x, dshape_x;
1498 #ifndef MFEM_THREAD_SAFE
1499 mutable Vector shape_x, shape_y, dshape_x, dshape_y;
1518 #ifndef MFEM_THREAD_SAFE
1519 mutable Vector shape_x, shape_y, dshape_x, dshape_y;
1536 #ifndef MFEM_THREAD_SAFE
1537 mutable Vector shape_x, shape_y, shape_z, dshape_x, dshape_y, dshape_z;
1552 #ifndef MFEM_THREAD_SAFE
1553 mutable Vector shape_x, shape_y, shape_z, dshape_x, dshape_y, dshape_z;
1569 #ifndef MFEM_THREAD_SAFE
1570 mutable Vector shape_x, shape_y, shape_l, dshape_x, dshape_y, dshape_l, u;
1591 #ifndef MFEM_THREAD_SAFE
1592 mutable Vector dshape_1d;
1608 #ifndef MFEM_THREAD_SAFE
1609 mutable Vector shape_x, shape_y, shape_z, shape_l;
1610 mutable Vector dshape_x, dshape_y, dshape_z, dshape_l, u;
1627 #ifndef MFEM_THREAD_SAFE
1628 mutable Vector dshape_1d;
1643 static const double nk[8];
1646 #ifndef MFEM_THREAD_SAFE
1647 mutable Vector shape_cx, shape_ox, shape_cy, shape_oy;
1648 mutable Vector dshape_cx, dshape_cy;
1680 static const double nk[18];
1683 #ifndef MFEM_THREAD_SAFE
1684 mutable Vector shape_cx, shape_ox, shape_cy, shape_oy, shape_cz, shape_oz;
1685 mutable Vector dshape_cx, dshape_cy, dshape_cz;
1717 static const double nk[6], c;
1719 #ifndef MFEM_THREAD_SAFE
1720 mutable Vector shape_x, shape_y, shape_l;
1721 mutable Vector dshape_x, dshape_y, dshape_l;
1756 static const double nk[12], c;
1758 #ifndef MFEM_THREAD_SAFE
1759 mutable Vector shape_x, shape_y, shape_z, shape_l;
1760 mutable Vector dshape_x, dshape_y, dshape_z, dshape_l;
1795 static const double tk[18];
1798 #ifndef MFEM_THREAD_SAFE
1799 mutable Vector shape_cx, shape_ox, shape_cy, shape_oy, shape_cz, shape_oz;
1800 mutable Vector dshape_cx, dshape_cy, dshape_cz;
1846 static const double tk[8];
1849 #ifndef MFEM_THREAD_SAFE
1850 mutable Vector shape_cx, shape_ox, shape_cy, shape_oy;
1851 mutable Vector dshape_cx, dshape_cy;
1884 static const double tk[18], c;
1886 #ifndef MFEM_THREAD_SAFE
1887 mutable Vector shape_x, shape_y, shape_z, shape_l;
1888 mutable Vector dshape_x, dshape_y, dshape_z, dshape_l;
1927 static const double tk[8], c;
1929 #ifndef MFEM_THREAD_SAFE
1930 mutable Vector shape_x, shape_y, shape_l;
1931 mutable Vector dshape_x, dshape_y, dshape_l;
1967 static const double tk[1];
1975 { obasis1d.
Eval(ip.
x, shape); }
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 ProjectCurl(const FiniteElement &fe, ElementTransformation &Trans, DenseMatrix &curl) 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
FiniteElement(D, G, Do, O, F)
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
Data type dense matrix using column-major storage.
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
void ProjectCurl_ND(const double *tk, const Array< int > &d2t, const FiniteElement &fe, ElementTransformation &Trans, DenseMatrix &curl) 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 ProjectCurl(const FiniteElement &fe, ElementTransformation &Trans, DenseMatrix &curl) 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 ProjectCurl(const FiniteElement &fe, ElementTransformation &Trans, DenseMatrix &curl) const
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.
virtual void ProjectGrad(const FiniteElement &fe, ElementTransformation &Trans, DenseMatrix &grad) const
ND_SegmentElement(const int p)
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
VectorFiniteElement(int D, int G, int Do, int O, int M, int F=FunctionSpace::Pk)
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 ProjectCurl(const FiniteElement &fe, ElementTransformation &Trans, DenseMatrix &curl) 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 Project(const FiniteElement &fe, ElementTransformation &Trans, DenseMatrix &I) 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
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()
virtual void CalcShape(const IntegrationPoint &ip, Vector &shape) const
Overrides the scalar CalcShape function to print an error.
void CalcVShape_ND(ElementTransformation &Trans, DenseMatrix &shape) const
virtual void CalcVShape(ElementTransformation &Trans, DenseMatrix &shape) const
virtual void Project(VectorCoefficient &vc, ElementTransformation &Trans, Vector &dofs) 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 CalcVShape(ElementTransformation &Trans, DenseMatrix &shape) const
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 ProjectCurl_2D(const FiniteElement &fe, ElementTransformation &Trans, DenseMatrix &curl) 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 CalcVShape(const IntegrationPoint &ip, DenseMatrix &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 GetLocalInterpolation(ElementTransformation &Trans, DenseMatrix &I) const
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
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