99 Vector &dofs)
const override;
101 Vector &dofs)
const override;
103 { dofs = 0.; dofs(vertex) = 1.; }
123#ifndef MFEM_THREAD_SAFE
129 mutable Vector shape_x, dshape_x;
146#ifndef MFEM_THREAD_SAFE
148 mutable Vector shape_x, shape_y, dshape_x, dshape_y;
165#ifndef MFEM_THREAD_SAFE
167 mutable Vector shape_x, shape_y, shape_z, dshape_x, dshape_y, dshape_z;
184#ifndef MFEM_THREAD_SAFE
213#ifndef MFEM_THREAD_SAFE
241#ifndef MFEM_THREAD_SAFE
272#ifndef MFEM_THREAD_SAFE
284 const int p = i1 + i2 + i3 + i4 + i5;
285 const int min24 = std::min(i2,i4);
290 return i2 + i3 * (
p - i4 - i5) - i4 * i5 * (
p + 2)
291 - ((i3 - 3) * i3) / 2 + i4 * ((
p + 1) * (
p + 2)) / 2
292 + (i4 * i5 * (i4 + i5)) / 2 + ((i4 - 1) * i4 * (i4 +1)) / 6
293 - (
p + 2) * ((i4 - 1) * i4) / 2
294 + (i5 * (5 + 2 *
p - i5) * (i5 * i5 - i5 * (5 + 2 *
p)
295 + 2 * (5 + 5 *
p +
p *
p))) / 24;
327#ifndef MFEM_THREAD_SAFE
328 mutable Vector shape_x, dshape_x;
345#ifndef MFEM_THREAD_SAFE
346 mutable Vector shape_x, shape_y, dshape_x, dshape_y;
363#ifndef MFEM_THREAD_SAFE
364 mutable Vector shape_x, shape_y, shape_z, dshape_x, dshape_y, dshape_z;
381#ifndef MFEM_THREAD_SAFE
400#ifndef MFEM_THREAD_SAFE
418#ifndef MFEM_THREAD_SAFE
441#ifndef MFEM_THREAD_SAFE
453 const int p = i1 + i2 + i3 + i4 + i5;
454 const int min24 = std::min(i2,i4);
459 return i2 + i3 * (
p - i4 - i5) - i4 * i5 * (
p + 2)
460 - ((i3 - 3) * i3) / 2 + i4 * ((
p + 1) * (
p + 2)) / 2
461 + (i4 * i5 * (i4 + i5)) / 2 + ((i4 - 1) * i4 * (i4 +1)) / 6
462 - (
p + 2) * ((i4 - 1) * i4) / 2
463 + (i5 * (5 + 2 *
p - i5) * (i5 * i5 - i5 * (5 + 2 *
p)
464 + 2 * (5 + 5 *
p +
p *
p))) / 24;
BiQuadPos2DFiniteElement()
Construct the BiQuadPos2DFiniteElement.
void Project(Coefficient &coeff, ElementTransformation &Trans, Vector &dofs) const override
Given a coefficient and a transformation, compute its projection (approximation) in the local finite ...
void CalcShape(const IntegrationPoint &ip, Vector &shape) const override
Evaluate the values of all shape functions of a scalar finite element in reference space at the given...
void GetLocalInterpolation(ElementTransformation &Trans, DenseMatrix &I) const override
Return the local interpolation matrix I (Dof x Dof) where the fine element is the image of the base g...
void ProjectDelta(int vertex, Vector &dofs) const override
Project a delta function centered on the given vertex in the local finite dimensional space represent...
void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const override
Evaluate the gradients of all shape functions of a scalar finite element in reference space at the gi...
Base class Coefficients that optionally depend on space and time. These are used by the BilinearFormI...
Data type dense matrix using column-major storage.
Structure representing the matrices/tensors needed to evaluate (in reference space) the values,...
Mode
Type of data stored in the arrays B, Bt, G, and Gt.
@ FULL
Full multidimensional representation which does not use tensor product structure. The ordering of the...
Abstract class for all finite elements.
virtual const DofToQuad & GetDofToQuad(const IntegrationRule &ir, DofToQuad::Mode mode) const
Return a DofToQuad structure corresponding to the given IntegrationRule using the given DofToQuad::Mo...
virtual void Project(Coefficient &coeff, ElementTransformation &Trans, Vector &dofs) const
Given a coefficient and a transformation, compute its projection (approximation) in the local finite ...
Array< DofToQuad * > dof2quad_array
Container for all DofToQuad objects created by the FiniteElement.
@ Pk
Polynomials of order k.
Arbitrary order H1 elements in 3D utilizing the Bernstein basis on a cube.
void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const override
Evaluate the gradients of all shape functions of a scalar finite element in reference space at the gi...
void CalcShape(const IntegrationPoint &ip, Vector &shape) const override
Evaluate the values of all shape functions of a scalar finite element in reference space at the given...
H1Pos_HexahedronElement(const int p)
Construct the H1Pos_HexahedronElement of order p.
void ProjectDelta(int vertex, Vector &dofs) const override
Project a delta function centered on the given vertex in the local finite dimensional space represent...
H1Pos_PyramidElement(const int p)
Construct the H1Pos_PyramidElement of order p.
static void CalcShape(const int p, const real_t x, const real_t y, const real_t z, real_t *shape_1d, real_t *shape)
static void CalcDShape(const int p, const real_t x, const real_t y, const real_t z, real_t *dshape_1d, real_t *dshape)
std::map< int, int > dof_map
Arbitrary order H1 elements in 2D utilizing the Bernstein basis on a square.
void CalcShape(const IntegrationPoint &ip, Vector &shape) const override
Evaluate the values of all shape functions of a scalar finite element in reference space at the given...
void ProjectDelta(int vertex, Vector &dofs) const override
Project a delta function centered on the given vertex in the local finite dimensional space represent...
H1Pos_QuadrilateralElement(const int p)
Construct the H1Pos_QuadrilateralElement of order p.
void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const override
Evaluate the gradients of all shape functions of a scalar finite element in reference space at the gi...
Arbitrary order H1 elements in 1D utilizing the Bernstein basis.
void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const override
Evaluate the gradients of all shape functions of a scalar finite element in reference space at the gi...
void CalcShape(const IntegrationPoint &ip, Vector &shape) const override
Evaluate the values of all shape functions of a scalar finite element in reference space at the given...
void ProjectDelta(int vertex, Vector &dofs) const override
Project a delta function centered on the given vertex in the local finite dimensional space represent...
H1Pos_SegmentElement(const int p)
Construct the H1Pos_SegmentElement of order p.
H1Pos_TetrahedronElement(const int p)
Construct the H1Pos_TetrahedronElement of order p.
static void CalcShape(const int p, const real_t x, const real_t y, const real_t z, real_t *shape)
static void CalcDShape(const int p, const real_t x, const real_t y, const real_t z, real_t *dshape_1d, real_t *dshape)
Arbitrary order H1 elements in 2D utilizing the Bernstein basis on a triangle.
H1Pos_TriangleElement(const int p)
Construct the H1Pos_TriangleElement of order p.
static void CalcDShape(const int p, const real_t x, const real_t y, real_t *dshape_1d, real_t *dshape)
static void CalcShape(const int p, const real_t x, const real_t y, real_t *shape)
Arbitrary order H1 elements in 3D utilizing the Bernstein basis on a wedge.
H1Pos_TriangleElement TriangleFE
void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const override
Evaluate the gradients of all shape functions of a scalar finite element in reference space at the gi...
H1Pos_SegmentElement SegmentFE
void CalcShape(const IntegrationPoint &ip, Vector &shape) const override
Evaluate the values of all shape functions of a scalar finite element in reference space at the given...
H1Pos_WedgeElement(const int p)
Construct the H1Pos_WedgeElement of order p.
Class for integration point with weight.
Class for an integration rule - an Array of IntegrationPoint.
Arbitrary order L2 elements in 3D utilizing the Bernstein basis on a cube.
void CalcShape(const IntegrationPoint &ip, Vector &shape) const override
Evaluate the values of all shape functions of a scalar finite element in reference space at the given...
void ProjectDelta(int vertex, Vector &dofs) const override
Project a delta function centered on the given vertex in the local finite dimensional space represent...
L2Pos_HexahedronElement(const int p)
Construct the L2Pos_HexahedronElement of order p.
void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const override
Evaluate the gradients of all shape functions of a scalar finite element in reference space at the gi...
Arbitrary order L2 elements in 3D utilizing the Bernstein basis on a pyramid.
static void CalcDShape(const int p, const real_t x, const real_t y, const real_t z, real_t *dshape_1d, real_t *dshape)
std::map< int, int > dof_map
static void CalcShape(const int p, const real_t x, const real_t y, const real_t z, real_t *shape_1d, real_t *shape)
L2Pos_PyramidElement(const int p)
Construct the L2Pos_PyramidElement of order p.
Arbitrary order L2 elements in 2D utilizing the Bernstein basis on a square.
void CalcShape(const IntegrationPoint &ip, Vector &shape) const override
Evaluate the values of all shape functions of a scalar finite element in reference space at the given...
void ProjectDelta(int vertex, Vector &dofs) const override
Project a delta function centered on the given vertex in the local finite dimensional space represent...
L2Pos_QuadrilateralElement(const int p)
Construct the L2Pos_QuadrilateralElement of order p.
void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const override
Evaluate the gradients of all shape functions of a scalar finite element in reference space at the gi...
Arbitrary order L2 elements in 1D utilizing the Bernstein basis on a segment.
void CalcShape(const IntegrationPoint &ip, Vector &shape) const override
Evaluate the values of all shape functions of a scalar finite element in reference space at the given...
L2Pos_SegmentElement(const int p)
Construct the L2Pos_SegmentElement of order p.
void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const override
Evaluate the gradients of all shape functions of a scalar finite element in reference space at the gi...
void ProjectDelta(int vertex, Vector &dofs) const override
Project a delta function centered on the given vertex in the local finite dimensional space represent...
L2Pos_TetrahedronElement(const int p)
Construct the L2Pos_TetrahedronElement of order p.
void ProjectDelta(int vertex, Vector &dofs) const override
Project a delta function centered on the given vertex in the local finite dimensional space represent...
void CalcShape(const IntegrationPoint &ip, Vector &shape) const override
Evaluate the values of all shape functions of a scalar finite element in reference space at the given...
void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const override
Evaluate the gradients of all shape functions of a scalar finite element in reference space at the gi...
Arbitrary order L2 elements in 2D utilizing the Bernstein basis on a triangle.
L2Pos_TriangleElement(const int p)
Construct the L2Pos_TriangleElement of order p.
void CalcShape(const IntegrationPoint &ip, Vector &shape) const override
Evaluate the values of all shape functions of a scalar finite element in reference space at the given...
void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const override
Evaluate the gradients of all shape functions of a scalar finite element in reference space at the gi...
void ProjectDelta(int vertex, Vector &dofs) const override
Project a delta function centered on the given vertex in the local finite dimensional space represent...
Arbitrary order L2 elements in 3D utilizing the Bernstein basis on a wedge.
L2Pos_TriangleElement TriangleFE
L2Pos_WedgeElement(const int p)
Construct the L2Pos_WedgeElement of order p.
void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const override
Evaluate the gradients of all shape functions of a scalar finite element in reference space at the gi...
L2Pos_SegmentElement SegmentFE
void CalcShape(const IntegrationPoint &ip, Vector &shape) const override
Evaluate the values of all shape functions of a scalar finite element in reference space at the given...
Class for finite elements utilizing the always positive Bernstein basis.
void GetLocalRestriction(ElementTransformation &Trans, DenseMatrix &R) const override
Return a local restriction matrix R (Dof x Dof) mapping fine dofs to coarse dofs.
PositiveFiniteElement(int D, Geometry::Type G, int Do, int O, int F=FunctionSpace::Pk)
Construct PositiveFiniteElement with given.
void GetTransferMatrix(const FiniteElement &fe, ElementTransformation &Trans, DenseMatrix &I) const override
Return interpolation matrix, I, which maps dofs from a coarse element, fe, to the fine dofs on this f...
void Project(Coefficient &coeff, ElementTransformation &Trans, Vector &dofs) const override
Given a coefficient and a transformation, compute its projection (approximation) in the local finite ...
void GetLocalInterpolation(ElementTransformation &Trans, DenseMatrix &I) const override
Return the local interpolation matrix I (Dof x Dof) where the fine element is the image of the base g...
PositiveTensorFiniteElement(const int dims, const int p, const DofMapType dmtype)
void GetFaceMap(const int face_id, Array< int > &face_map) const override
Return the mapping from lexicographic face DOFs to lexicographic element DOFs for the given local fac...
const DofToQuad & GetDofToQuad(const IntegrationRule &ir, DofToQuad::Mode mode) const override
Return a DofToQuad structure corresponding to the given IntegrationRule using the given DofToQuad::Mo...
A 1D quadratic positive element utilizing the 2nd order Bernstein basis.
void CalcShape(const IntegrationPoint &ip, Vector &shape) const override
Evaluate the values of all shape functions of a scalar finite element in reference space at the given...
QuadPos1DFiniteElement()
Construct the QuadPos1DFiniteElement.
void CalcDShape(const IntegrationPoint &ip, DenseMatrix &dshape) const override
Evaluate the gradients of all shape functions of a scalar finite element in reference space at the gi...
Class for finite elements with basis functions that return scalar values.
void ScalarLocalInterpolation(ElementTransformation &Trans, DenseMatrix &I, const ScalarFiniteElement &fine_fe) const
Get matrix I "Interpolation" defined through local L2-projection in the space defined by the fine_fe.
void ScalarLocalL2Restriction(ElementTransformation &Trans, DenseMatrix &R, const ScalarFiniteElement &coarse_fe) const
Get restriction matrix R defined through local L2-projection in the space defined by the coarse_fe.
static const ScalarFiniteElement & CheckScalarFE(const FiniteElement &fe)
static const DofToQuad & GetTensorDofToQuad(const FiniteElement &fe, const IntegrationRule &ir, DofToQuad::Mode mode, const Poly_1D::Basis &basis, bool closed, Array< DofToQuad * > &dof2quad_array)
Base class for vector Coefficients that optionally depend on time and space.
real_t p(const Vector &x, real_t t)
int operator()(int i1, int i2, int i3, int i4, int i5)
int operator()(int i1, int i2, int i3, int i4, int i5)