12#ifndef MFEM_FE_COLLECTION
13#define MFEM_FE_COLLECTION
29 template <Geometry::Type geom>
30 static inline void GetNVE(
int &nv,
int &ne);
32 template <Geometry::Type geom,
typename v_t>
33 static inline void GetEdge(
int &nv, v_t &v,
int &ne,
int &e,
int &eo,
37 typename v_t,
typename e_t,
typename eo_t>
38 static inline void GetFace(
int &nv, v_t &v,
int &ne, e_t &e, eo_t &eo,
79 virtual const char *
Name()
const {
return "Undefined"; }
199 return var_orders[
p]->FiniteElementForGeometry(geom);
210 return var_orders[
p]->TraceFiniteElementForGeometry(geom);
234 return var_orders[
p]->DofOrderForOrientation(geom, ori);
286 const int pyrtype = 1);
292 {
return H1_dof[GeomType]; }
295 int Or)
const override;
363 const int pyrtype = 1);
370 if (L2_Elements[GeomType])
372 return L2_Elements[GeomType]->
GetDof();
378 int Or)
const override;
380 const char *
Name()
const override {
return d_name; }
387 return Tr_Elements[GeomType];
414 void InitFaces(
const int p,
const int dim,
const int map_type,
438 {
return RT_dof[GeomType]; }
441 int Or)
const override;
501 {
return ND_dof[GeomType]; }
507 int Or)
const override;
553 {
return ND_dof[GeomType]; }
556 int Or)
const override;
585 {
return RT_dof[GeomType]; }
588 int Or)
const override;
618 {
return ND_dof[GeomType]; }
621 int Or)
const override;
654 void InitFaces(
const int p,
const int dim,
const int map_type,
672 {
return RT_dof[GeomType]; }
675 int Or)
const override;
737 virtual void SetOrder(
int Order)
const;
745 int Or)
const override;
781 QuadrilateralVFE->
Reset();
782 ParallelepipedVFE->
Reset();
789 void SetOrder(
int Order)
const override;
797 int Or)
const override;
826 const int vdim = -1);
832 QuadrilateralVFE->
Reset();
833 ParallelepipedVFE->
Reset();
840 void SetOrder(
int Order)
const override;
848 int Or)
const override;
880 int Or)
const override;
882 const char *
Name()
const override {
return "Linear"; }
909 int Or)
const override;
911 const char *
Name()
const override {
return "Quadratic"; }
932 int Or)
const override;
934 const char *
Name()
const override {
return "QuadraticPos"; }
963 int Or)
const override;
965 const char *
Name()
const override {
return "Cubic"; }
986 int Or)
const override;
988 const char *
Name()
const override {
return "CrouzeixRaviart"; }
1011 int Or)
const override;
1013 const char *
Name()
const override {
return "LinearNonConf3D"; }
1035 int Or)
const override;
1037 const char *
Name()
const override {
return "RT0_2D"; }
1059 int Or)
const override;
1061 const char *
Name()
const override {
return "RT1_2D"; }
1083 int Or)
const override;
1085 const char *
Name()
const override {
return "RT2_2D"; }
1107 int Or)
const override;
1109 const char *
Name()
const override {
return "Const2D"; }
1132 int Or)
const override;
1134 const char *
Name()
const override {
return "LinearDiscont2D"; }
1156 int Or)
const override;
1158 const char *
Name()
const override {
return "GaussLinearDiscont2D"; }
1177 int Or)
const override;
1179 const char *
Name()
const override {
return "P1OnQuad"; }
1202 int Or)
const override;
1204 const char *
Name()
const override {
return "QuadraticDiscont2D"; }
1224 int Or)
const override
1227 const char *
Name()
const override {
return "QuadraticPosDiscont2D"; }
1249 int Or)
const override;
1251 const char *
Name()
const override {
return "GaussQuadraticDiscont2D"; }
1274 int Or)
const override;
1276 const char *
Name()
const override {
return "CubicDiscont2D"; }
1301 int Or)
const override;
1303 const char *
Name()
const override {
return "Const3D"; }
1328 int Or)
const override;
1330 const char *
Name()
const override {
return "LinearDiscont3D"; }
1354 int Or)
const override;
1356 const char *
Name()
const override {
return "QuadraticDiscont3D"; }
1381 int Or)
const override;
1383 const char *
Name()
const override {
return "RefinedLinear"; }
1408 int Or)
const override;
1410 const char *
Name()
const override {
return "ND1_3D"; }
1435 int Or)
const override;
1437 const char *
Name()
const override {
return "RT0_3D"; }
1459 int Or)
const override;
1461 const char *
Name()
const override {
return "RT1_3D"; }
1479 {
return (GeomType == GeomType_) ? Local_Element : NULL; }
1482 {
return (GeomType == GeomType_) ? Local_Element->
GetDof() : 0; }
1485 int Or)
const override
1488 const char *
Name()
const override {
return d_name; }
Possible basis types. Note that not all elements can use all BasisType(s).
@ GaussLobatto
Closed type.
@ GaussLegendre
Open type.
A 2D bi-cubic element on a square with uniformly spaces nodes.
A 2D bi-linear element on a square with nodes at the vertices of the square.
A 2D bi-quadratic element on a square with uniformly spaced nodes.
Piecewise-constant discontinuous finite elements in 2D. This class is kept only for backward compatib...
const char * Name() const override
int DofForGeometry(Geometry::Type GeomType) const override
int GetContType() const override
const int * DofOrderForOrientation(Geometry::Type GeomType, int Or) const override
Returns an array, say p, that maps a local permuted index i to a local base index: base_i = p[i].
const FiniteElement * FiniteElementForGeometry(Geometry::Type GeomType) const override
Piecewise-constant discontinuous finite elements in 3D. This class is kept only for backward compatib...
int DofForGeometry(Geometry::Type GeomType) const override
const FiniteElement * FiniteElementForGeometry(Geometry::Type GeomType) const override
int GetContType() const override
const int * DofOrderForOrientation(Geometry::Type GeomType, int Or) const override
Returns an array, say p, that maps a local permuted index i to a local base index: base_i = p[i].
const char * Name() const override
Crouzeix-Raviart nonconforming elements in 2D.
CrouzeixRaviartFECollection()
int DofForGeometry(Geometry::Type GeomType) const override
const char * Name() const override
int GetContType() const override
const int * DofOrderForOrientation(Geometry::Type GeomType, int Or) const override
Returns an array, say p, that maps a local permuted index i to a local base index: base_i = p[i].
const FiniteElement * FiniteElementForGeometry(Geometry::Type GeomType) const override
A 2D Crouzeix-Raviart element on triangle.
A 2D Crouzeix-Raviart finite element on square.
A 1D cubic element with uniformly spaced nodes.
A 2D cubic element on a triangle with uniformly spaced nodes.
Piecewise-cubic discontinuous finite elements in 2D. This class is kept only for backward compatibili...
const char * Name() const override
const int * DofOrderForOrientation(Geometry::Type GeomType, int Or) const override
Returns an array, say p, that maps a local permuted index i to a local base index: base_i = p[i].
int GetContType() const override
int DofForGeometry(Geometry::Type GeomType) const override
CubicDiscont2DFECollection()
const FiniteElement * FiniteElementForGeometry(Geometry::Type GeomType) const override
Piecewise-(bi)cubic continuous finite elements.
int DofForGeometry(Geometry::Type GeomType) const override
const int * DofOrderForOrientation(Geometry::Type GeomType, int Or) const override
Returns an array, say p, that maps a local permuted index i to a local base index: base_i = p[i].
const char * Name() const override
int GetContType() const override
const FiniteElement * FiniteElementForGeometry(Geometry::Type GeomType) const override
DG_Interface_FECollection(const int p, const int dim, const int map_type=FiniteElement::VALUE, const int ob_type=BasisType::GaussLegendre)
Collection of finite elements from the same family in multiple dimensions. This class is used to matc...
ErrorMode error_mode
How to treat errors in FiniteElementForGeometry() calls.
virtual const int * DofOrderForOrientation(Geometry::Type GeomType, int Or) const =0
Returns an array, say p, that maps a local permuted index i to a local base index: base_i = p[i].
int GetRangeType(int dim) const
static FiniteElementCollection * New(const char *name)
Factory method: return a newly allocated FiniteElementCollection according to the given name.
const int * GetDofOrdering(Geometry::Type geom, int p, int ori) const
Variable order version of DofOrderForOrientation().
int GetOrder() const
Return the order (polynomial degree) of the FE collection, corresponding to the order/degree returned...
virtual int GetContType() const =0
int HasFaceDofs(Geometry::Type geom, int p) const
int GetDerivRangeType(int dim) const
virtual FiniteElementCollection * Clone(int p) const
Instantiate a new collection of the same type with a different order.
virtual int DofForGeometry(Geometry::Type GeomType) const =0
virtual ~FiniteElementCollection()
int GetNumDof(Geometry::Type geom, int p) const
Variable order version of DofForGeometry().
FiniteElementCollection(int p)
virtual const FiniteElement * TraceFiniteElementForGeometry(Geometry::Type GeomType) const
const FiniteElement * GetTraceFE(Geometry::Type geom, int p) const
Variable order version of TraceFiniteElementForGeometry().
virtual const FiniteElement * FiniteElementForDim(int dim) const
Returns the first non-NULL FiniteElement for the given dimension.
static void GetEdge(int &nv, v_t &v, int &ne, int &e, int &eo, const int edge_info)
void InitVarOrder(int p) const
int GetDerivType(int dim) const
const int base_p
Order as returned by GetOrder().
virtual const char * Name() const
int GetRangeDim(int dim) const
int GetDerivMapType(int dim) const
static void GetFace(int &nv, v_t &v, int &ne, e_t &e, eo_t &eo, int &nf, int &f, Geometry::Type &fg, int &fo, const int face_info)
virtual const StatelessDofTransformation * DofTransformationForGeometry(Geometry::Type GeomType) const
Returns a DoF transformation object compatible with this basis and geometry type.
int GetMapType(int dim) const
const FiniteElement * GetFE(Geometry::Type geom, int p) const
Variable order version of FiniteElementForGeometry().
FiniteElementCollection()
@ DISCONTINUOUS
Field is discontinuous across element interfaces.
@ CONTINUOUS
Field is continuous across element interfaces.
@ NORMAL
Normal component of vector field.
@ TANGENTIAL
Tangential components of vector field.
Array< FiniteElementCollection * > var_orders
virtual const FiniteElement * FiniteElementForGeometry(Geometry::Type GeomType) const =0
virtual FiniteElementCollection * GetTraceCollection() const
void SubDofOrder(Geometry::Type Geom, int SDim, int Info, Array< int > &dofs) const
Get the local dofs for a given sub-manifold.
static void GetNVE(int &nv, int &ne)
ErrorMode
How to treat errors in FiniteElementForGeometry() calls.
@ RETURN_NULL
Return NULL on errors.
Abstract class for all finite elements.
int GetDof() const
Returns the number of degrees of freedom in the finite element.
A 2D bi-linear element on a square with nodes at the "Gaussian" points.
A 2D bi-quadratic element on a square with nodes at the 9 "Gaussian" points.
A linear element on a triangle with nodes at the 3 "Gaussian" points.
Version of LinearDiscont2DFECollection with dofs in the Gaussian points.
int GetContType() const override
GaussLinearDiscont2DFECollection()
const int * DofOrderForOrientation(Geometry::Type GeomType, int Or) const override
Returns an array, say p, that maps a local permuted index i to a local base index: base_i = p[i].
const FiniteElement * FiniteElementForGeometry(Geometry::Type GeomType) const override
const char * Name() const override
int DofForGeometry(Geometry::Type GeomType) const override
A quadratic element on triangle with nodes at the "Gaussian" points.
Version of QuadraticDiscont2DFECollection with dofs in the Gaussian points.
int GetContType() const override
const char * Name() const override
int DofForGeometry(Geometry::Type GeomType) const override
const FiniteElement * FiniteElementForGeometry(Geometry::Type GeomType) const override
const int * DofOrderForOrientation(Geometry::Type GeomType, int Or) const override
Returns an array, say p, that maps a local permuted index i to a local base index: base_i = p[i].
GaussQuadraticDiscont2DFECollection()
Arbitrary order H1-conforming (continuous) finite elements with positive basis functions.
H1Pos_FECollection(const int p, const int dim=3)
H1Ser_FECollection(const int p, const int dim=2)
Arbitrary order H1-conforming (continuous) finite elements.
FiniteElementCollection * Clone(int p) const override
Instantiate a new collection of the same type with a different order.
H1_FECollection(const int p, const int dim=3, const int btype=BasisType::GaussLobatto, const int pyrtype=1)
const FiniteElement * FiniteElementForGeometry(Geometry::Type GeomType) const override
virtual ~H1_FECollection()
int DofForGeometry(Geometry::Type GeomType) const override
FiniteElementCollection * GetTraceCollection() const override
const char * Name() const override
int GetContType() const override
int H1_dof[Geometry::NumGeom]
FiniteElement * H1_Elements[Geometry::NumGeom]
const int * DofOrderForOrientation(Geometry::Type GeomType, int Or) const override
Returns an array, say p, that maps a local permuted index i to a local base index: base_i = p[i].
const int * GetDofMap(Geometry::Type GeomType) const
Get the Cartesian to local H1 dof map.
Arbitrary order "H^{1/2}-conforming" trace finite elements defined on the interface between mesh elem...
H1_Trace_FECollection(const int p, const int dim, const int btype=BasisType::GaussLobatto)
Arbitrary order H1 elements in 3D on a wedge.
Arbitrary order "L2-conforming" discontinuous finite elements.
const FiniteElement * TraceFiniteElementForGeometry(Geometry::Type GeomType) const override
L2_FECollection(const int p, const int dim, const int btype=BasisType::GaussLegendre, const int map_type=FiniteElement::VALUE, const int pyrtype=1)
virtual ~L2_FECollection()
const char * Name() const override
const FiniteElement * FiniteElementForGeometry(Geometry::Type GeomType) const override
int DofForGeometry(Geometry::Type GeomType) const override
int GetContType() const override
const int * DofOrderForOrientation(Geometry::Type GeomType, int Or) const override
Returns an array, say p, that maps a local permuted index i to a local base index: base_i = p[i].
FiniteElementCollection * Clone(int p) const override
Instantiate a new collection of the same type with a different order.
Tensor products of 1D Lagrange1DFiniteElement (only degree 2 is functional)
A 1D linear element with nodes on the endpoints.
A 2D linear element on triangle with nodes at the vertices of the triangle.
A 3D linear element on a tetrahedron with nodes at the vertices of the tetrahedron.
Piecewise-linear discontinuous finite elements in 2D. This class is kept only for backward compatibil...
int GetContType() const override
const FiniteElement * FiniteElementForGeometry(Geometry::Type GeomType) const override
int DofForGeometry(Geometry::Type GeomType) const override
LinearDiscont2DFECollection()
const int * DofOrderForOrientation(Geometry::Type GeomType, int Or) const override
Returns an array, say p, that maps a local permuted index i to a local base index: base_i = p[i].
const char * Name() const override
Piecewise-linear discontinuous finite elements in 3D. This class is kept only for backward compatibil...
const int * DofOrderForOrientation(Geometry::Type GeomType, int Or) const override
Returns an array, say p, that maps a local permuted index i to a local base index: base_i = p[i].
const FiniteElement * FiniteElementForGeometry(Geometry::Type GeomType) const override
LinearDiscont3DFECollection()
const char * Name() const override
int GetContType() const override
int DofForGeometry(Geometry::Type GeomType) const override
Piecewise-(bi/tri)linear continuous finite elements.
int GetContType() const override
const char * Name() const override
int DofForGeometry(Geometry::Type GeomType) const override
const FiniteElement * FiniteElementForGeometry(Geometry::Type GeomType) const override
const int * DofOrderForOrientation(Geometry::Type GeomType, int Or) const override
Returns an array, say p, that maps a local permuted index i to a local base index: base_i = p[i].
Piecewise-linear nonconforming finite elements in 3D.
int GetContType() const override
int DofForGeometry(Geometry::Type GeomType) const override
const char * Name() const override
const int * DofOrderForOrientation(Geometry::Type GeomType, int Or) const override
Returns an array, say p, that maps a local permuted index i to a local base index: base_i = p[i].
LinearNonConf3DFECollection()
const FiniteElement * FiniteElementForGeometry(Geometry::Type GeomType) const override
A linear element defined on a square pyramid.
A linear element defined on a triangular prism.
Discontinuous collection defined locally by a given finite element.
int GetContType() const override
const FiniteElement * FiniteElementForGeometry(Geometry::Type GeomType_) const override
const int * DofOrderForOrientation(Geometry::Type GeomType_, int Or) const override
Returns an array, say p, that maps a local permuted index i to a local base index: base_i = p[i].
virtual ~Local_FECollection()
int DofForGeometry(Geometry::Type GeomType_) const override
const char * Name() const override
Local_FECollection(const char *fe_name)
Lowest order Nedelec finite elements in 3D. This class is kept only for backward compatibility,...
int DofForGeometry(Geometry::Type GeomType) const override
const FiniteElement * FiniteElementForGeometry(Geometry::Type GeomType) const override
const int * DofOrderForOrientation(Geometry::Type GeomType, int Or) const override
Returns an array, say p, that maps a local permuted index i to a local base index: base_i = p[i].
int GetContType() const override
const char * Name() const override
Arbitrary order H(curl)-conforming Nedelec finite elements.
int ND_dof[Geometry::NumGeom]
const char * Name() const override
const FiniteElement * FiniteElementForGeometry(Geometry::Type GeomType) const override
FiniteElementCollection * Clone(int p) const override
Instantiate a new collection of the same type with a different order.
int GetOpenBasisType() const
const int * DofOrderForOrientation(Geometry::Type GeomType, int Or) const override
Returns an array, say p, that maps a local permuted index i to a local base index: base_i = p[i].
FiniteElementCollection * GetTraceCollection() const override
virtual ~ND_FECollection()
int GetClosedBasisType() const
int GetContType() const override
const StatelessDofTransformation * DofTransformationForGeometry(Geometry::Type GeomType) const override
Returns a DoF transformation object compatible with this basis and geometry type.
FiniteElement * ND_Elements[Geometry::NumGeom]
ND_FECollection(const int p, const int dim, const int cb_type=BasisType::GaussLobatto, const int ob_type=BasisType::GaussLegendre)
int DofForGeometry(Geometry::Type GeomType) const override
Arbitrary order 3D H(curl)-conforming Nedelec finite elements in 1D.
const int * DofOrderForOrientation(Geometry::Type GeomType, int Or) const override
Returns an array, say p, that maps a local permuted index i to a local base index: base_i = p[i].
int DofForGeometry(Geometry::Type GeomType) const override
virtual ~ND_R1D_FECollection()
int ND_dof[Geometry::NumGeom]
const FiniteElement * FiniteElementForGeometry(Geometry::Type GeomType) const override
int GetContType() const override
ND_R1D_FECollection(const int p, const int dim, const int cb_type=BasisType::GaussLobatto, const int ob_type=BasisType::GaussLegendre)
const char * Name() const override
FiniteElement * ND_Elements[Geometry::NumGeom]
FiniteElementCollection * GetTraceCollection() const override
Arbitrary order 3D H(curl)-conforming Nedelec finite elements in 2D.
FiniteElementCollection * GetTraceCollection() const override
ND_R2D_FECollection(const int p, const int dim, const int cb_type=BasisType::GaussLobatto, const int ob_type=BasisType::GaussLegendre)
const FiniteElement * FiniteElementForGeometry(Geometry::Type GeomType) const override
int DofForGeometry(Geometry::Type GeomType) const override
virtual ~ND_R2D_FECollection()
FiniteElement * ND_Elements[Geometry::NumGeom]
const int * DofOrderForOrientation(Geometry::Type GeomType, int Or) const override
Returns an array, say p, that maps a local permuted index i to a local base index: base_i = p[i].
int GetContType() const override
const char * Name() const override
int ND_dof[Geometry::NumGeom]
Arbitrary order 3D H(curl)-trace finite elements in 2D defined on the interface between mesh elements...
ND_R2D_Trace_FECollection(const int p, const int dim, const int cb_type=BasisType::GaussLobatto, const int ob_type=BasisType::GaussLegendre)
Arbitrary order H(curl)-trace finite elements defined on the interface between mesh elements (faces,...
ND_Trace_FECollection(const int p, const int dim, const int cb_type=BasisType::GaussLobatto, const int ob_type=BasisType::GaussLegendre)
An arbitrary order 1D NURBS element on a segment.
An arbitrary order 2D NURBS element on a square.
An arbitrary order 3D NURBS element on a cube.
Arbitrary order non-uniform rational B-splines (NURBS) finite elements.
virtual ~NURBSFECollection()
int DofForGeometry(Geometry::Type GeomType) const override
int GetOrder() const
Get the order of the NURBS collection: either a positive number, when using fixed order,...
virtual void Reset() const
virtual void SetOrder(int Order) const
Set the order and the name, based on the given Order: either a positive number for fixed order,...
const char * Name() const override
virtual void SetDim(const int dim)
int GetContType() const override
const FiniteElement * FiniteElementForGeometry(Geometry::Type GeomType) const override
NURBS2DFiniteElement * QuadrilateralFE
NURBS1DFiniteElement * SegmentFE
NURBSFECollection(int Order=VariableOrder)
The parameter Order must be either a positive number, for fixed order, or VariableOrder (default).
FiniteElementCollection * GetTraceCollection() const override
const int * DofOrderForOrientation(Geometry::Type GeomType, int Or) const override
Returns an array, say p, that maps a local permuted index i to a local base index: base_i = p[i].
NURBS3DFiniteElement * ParallelepipedFE
PointFiniteElement * PointFE
void Reset() const
Resets the patch and element data stored in the element.
Arbitrary order H(curl) NURBS finite elements.
const int * DofOrderForOrientation(Geometry::Type GeomType, int Or) const override
Returns an array, say p, that maps a local permuted index i to a local base index: base_i = p[i].
void SetOrder(int Order) const override
Set the order and the name, based on the given Order: either a positive number for fixed order,...
const FiniteElement * FiniteElementForGeometry(Geometry::Type GeomType) const override
const char * Name() const override
NURBS_HCurlFECollection(int Order=VariableOrder, const int vdim=-1)
The parameter Order must be either a positive number, for fixed order, or VariableOrder (default).
void SetDim(const int dim) override
int DofForGeometry(Geometry::Type GeomType) const override
virtual ~NURBS_HCurlFECollection()
void Reset() const override
FiniteElementCollection * GetTraceCollection() const override
int GetContType() const override
Arbitrary order H(div) NURBS finite elements.
void SetDim(const int dim) override
int DofForGeometry(Geometry::Type GeomType) const override
void SetOrder(int Order) const override
Set the order and the name, based on the given Order: either a positive number for fixed order,...
FiniteElementCollection * GetTraceCollection() const override
const int * DofOrderForOrientation(Geometry::Type GeomType, int Or) const override
Returns an array, say p, that maps a local permuted index i to a local base index: base_i = p[i].
int GetContType() const override
const char * Name() const override
const FiniteElement * FiniteElementForGeometry(Geometry::Type GeomType) const override
void Reset() const override
NURBS_HDivFECollection(int Order=VariableOrder, const int vdim=-1)
The parameter Order must be either a positive number, for fixed order, or VariableOrder (default).
virtual ~NURBS_HDivFECollection()
A 3D 1st order Nedelec element on a cube.
A 3D 1st order Nedelec element on a pyramid.
A 3D 1st order Nedelec element on a tetrahedron.
A 3D 1st order Nedelec element on a wedge.
A 3D constant element on a cube.
A 3D constant element on a pyramid.
A 2D constant element on a square.
A 1D constant element on a segment.
A 3D constant element on a tetrahedron.
A 2D constant element on a triangle.
A 3D constant element on a wedge.
Linear (P1) finite elements on quadrilaterals.
const char * Name() const override
int GetContType() const override
const FiniteElement * FiniteElementForGeometry(Geometry::Type GeomType) const override
const int * DofOrderForOrientation(Geometry::Type GeomType, int Or) const override
Returns an array, say p, that maps a local permuted index i to a local base index: base_i = p[i].
int DofForGeometry(Geometry::Type GeomType) const override
A 2D linear element on a square with 3 nodes at the vertices of the lower left triangle.
A 1D linear element with nodes at 1/3 and 2/3 (trace of RT1)
A 3D Crouzeix-Raviart element on the tetrahedron.
A 1D quadratic element with nodes at the Gaussian points (trace of RT2)
A 0D point finite element.
A 1D quadratic finite element with uniformly spaced nodes.
A 2D quadratic element on triangle with nodes at the vertices and midpoints of the triangle.
A 1D quadratic positive element utilizing the 2nd order Bernstein basis.
A 3D quadratic element on a tetrahedron with uniformly spaced nodes.
Piecewise-quadratic discontinuous finite elements in 2D. This class is kept only for backward compati...
int GetContType() const override
const char * Name() const override
int DofForGeometry(Geometry::Type GeomType) const override
const FiniteElement * FiniteElementForGeometry(Geometry::Type GeomType) const override
const int * DofOrderForOrientation(Geometry::Type GeomType, int Or) const override
Returns an array, say p, that maps a local permuted index i to a local base index: base_i = p[i].
QuadraticDiscont2DFECollection()
Piecewise-quadratic discontinuous finite elements in 3D. This class is kept only for backward compati...
const char * Name() const override
int GetContType() const override
QuadraticDiscont3DFECollection()
const FiniteElement * FiniteElementForGeometry(Geometry::Type GeomType) const override
int DofForGeometry(Geometry::Type GeomType) const override
const int * DofOrderForOrientation(Geometry::Type GeomType, int Or) const override
Returns an array, say p, that maps a local permuted index i to a local base index: base_i = p[i].
Piecewise-(bi)quadratic continuous finite elements.
int DofForGeometry(Geometry::Type GeomType) const override
const int * DofOrderForOrientation(Geometry::Type GeomType, int Or) const override
Returns an array, say p, that maps a local permuted index i to a local base index: base_i = p[i].
int GetContType() const override
const FiniteElement * FiniteElementForGeometry(Geometry::Type GeomType) const override
const char * Name() const override
Version of QuadraticDiscont2DFECollection with positive basis functions.
const FiniteElement * FiniteElementForGeometry(Geometry::Type GeomType) const override
const char * Name() const override
QuadraticPosDiscont2DFECollection()
int DofForGeometry(Geometry::Type GeomType) const override
int GetContType() const override
const int * DofOrderForOrientation(Geometry::Type GeomType, int Or) const override
Returns an array, say p, that maps a local permuted index i to a local base index: base_i = p[i].
Version of QuadraticFECollection with positive basis functions.
const FiniteElement * FiniteElementForGeometry(Geometry::Type GeomType) const override
int GetContType() const override
QuadraticPosFECollection()
const int * DofOrderForOrientation(Geometry::Type GeomType, int Or) const override
Returns an array, say p, that maps a local permuted index i to a local base index: base_i = p[i].
const char * Name() const override
int DofForGeometry(Geometry::Type GeomType) const override
A 3D 0th order Raviert-Thomas element on a cube.
A 3D 0th order Raviert-Thomas element on a pyramid.
A 2D 1st order Raviart-Thomas vector element on a square.
A 3D 0th order Raviert-Thomas element on a tetrahedron.
A 2D 1st order Raviart-Thomas vector element on a triangle.
A 3D 0th order Raviert-Thomas element on a wedge.
First order Raviart-Thomas finite elements in 2D. This class is kept only for backward compatibility,...
const char * Name() const override
int GetContType() const override
const FiniteElement * FiniteElementForGeometry(Geometry::Type GeomType) const override
const int * DofOrderForOrientation(Geometry::Type GeomType, int Or) const override
Returns an array, say p, that maps a local permuted index i to a local base index: base_i = p[i].
int DofForGeometry(Geometry::Type GeomType) const override
First order Raviart-Thomas finite elements in 3D. This class is kept only for backward compatibility,...
const int * DofOrderForOrientation(Geometry::Type GeomType, int Or) const override
Returns an array, say p, that maps a local permuted index i to a local base index: base_i = p[i].
const char * Name() const override
int GetContType() const override
const FiniteElement * FiniteElementForGeometry(Geometry::Type GeomType) const override
int DofForGeometry(Geometry::Type GeomType) const override
A 3D 1st order Raviert-Thomas element on a cube.
A 2D 2nd order Raviart-Thomas vector element on a square.
A 2D 2nd order Raviart-Thomas vector element on a triangle.
Second order Raviart-Thomas finite elements in 2D. This class is kept only for backward compatibility...
const FiniteElement * FiniteElementForGeometry(Geometry::Type GeomType) const override
const char * Name() const override
const int * DofOrderForOrientation(Geometry::Type GeomType, int Or) const override
Returns an array, say p, that maps a local permuted index i to a local base index: base_i = p[i].
int DofForGeometry(Geometry::Type GeomType) const override
int GetContType() const override
Second order Raviart-Thomas finite elements in 3D. This class is kept only for backward compatibility...
int DofForGeometry(Geometry::Type GeomType) const override
const FiniteElement * FiniteElementForGeometry(Geometry::Type GeomType) const override
int GetContType() const override
const int * DofOrderForOrientation(Geometry::Type GeomType, int Or) const override
Returns an array, say p, that maps a local permuted index i to a local base index: base_i = p[i].
const char * Name() const override
A 2D 3rd order Raviart-Thomas vector element on a square.
A 2D 3rd order Raviart-Thomas vector element on a triangle.
Third order Raviart-Thomas finite elements in 2D. This class is kept only for backward compatibility,...
const char * Name() const override
int GetContType() const override
int DofForGeometry(Geometry::Type GeomType) const override
const int * DofOrderForOrientation(Geometry::Type GeomType, int Or) const override
Returns an array, say p, that maps a local permuted index i to a local base index: base_i = p[i].
const FiniteElement * FiniteElementForGeometry(Geometry::Type GeomType) const override
Arbitrary order H(div)-conforming Raviart-Thomas finite elements.
int DofForGeometry(Geometry::Type GeomType) const override
int RT_dof[Geometry::NumGeom]
FiniteElement * RT_Elements[Geometry::NumGeom]
void InitFaces(const int p, const int dim, const int map_type, const bool signs)
int GetClosedBasisType() const
virtual ~RT_FECollection()
const int * DofOrderForOrientation(Geometry::Type GeomType, int Or) const override
Returns an array, say p, that maps a local permuted index i to a local base index: base_i = p[i].
const char * Name() const override
FiniteElementCollection * Clone(int p) const override
Instantiate a new collection of the same type with a different order.
const FiniteElement * FiniteElementForGeometry(Geometry::Type GeomType) const override
int GetContType() const override
FiniteElementCollection * GetTraceCollection() const override
int GetOpenBasisType() const
RT_FECollection(const int p, const int dim, const int map_type, const bool signs, const int ob_type=BasisType::GaussLegendre)
Arbitrary order 3D H(div)-conforming Raviart-Thomas finite elements in 1D.
virtual ~RT_R1D_FECollection()
FiniteElementCollection * GetTraceCollection() const override
int GetContType() const override
FiniteElement * RT_Elements[Geometry::NumGeom]
RT_R1D_FECollection(const int p, const int dim, const int cb_type=BasisType::GaussLobatto, const int ob_type=BasisType::GaussLegendre)
int RT_dof[Geometry::NumGeom]
const int * DofOrderForOrientation(Geometry::Type GeomType, int Or) const override
Returns an array, say p, that maps a local permuted index i to a local base index: base_i = p[i].
const FiniteElement * FiniteElementForGeometry(Geometry::Type GeomType) const override
int DofForGeometry(Geometry::Type GeomType) const override
const char * Name() const override
Arbitrary order 3D H(div)-conforming Raviart-Thomas finite elements in 2D.
void InitFaces(const int p, const int dim, const int map_type, const bool signs)
RT_R2D_FECollection(const int p, const int dim, const int map_type, const bool signs, const int ob_type=BasisType::GaussLegendre)
FiniteElement * RT_Elements[Geometry::NumGeom]
const FiniteElement * FiniteElementForGeometry(Geometry::Type GeomType) const override
virtual ~RT_R2D_FECollection()
int DofForGeometry(Geometry::Type GeomType) const override
int RT_dof[Geometry::NumGeom]
const char * Name() const override
const int * DofOrderForOrientation(Geometry::Type GeomType, int Or) const override
Returns an array, say p, that maps a local permuted index i to a local base index: base_i = p[i].
FiniteElementCollection * GetTraceCollection() const override
int GetContType() const override
Arbitrary order 3D "H^{-1/2}-conforming" face finite elements defined on the interface between mesh e...
RT_R2D_Trace_FECollection(const int p, const int dim, const int map_type=FiniteElement::INTEGRAL, const int ob_type=BasisType::GaussLegendre)
Arbitrary order "H^{-1/2}-conforming" face finite elements defined on the interface between mesh elem...
RT_Trace_FECollection(const int p, const int dim, const int map_type=FiniteElement::INTEGRAL, const int ob_type=BasisType::GaussLegendre)
A 2D refined bi-linear FE on a square.
A 1D refined linear element.
A 2D refined linear element on a triangle.
A 2D refined linear element on a tetrahedron.
Finite element collection on a macro-element.
const FiniteElement * FiniteElementForGeometry(Geometry::Type GeomType) const override
int DofForGeometry(Geometry::Type GeomType) const override
int GetContType() const override
const int * DofOrderForOrientation(Geometry::Type GeomType, int Or) const override
Returns an array, say p, that maps a local permuted index i to a local base index: base_i = p[i].
const char * Name() const override
RefinedLinearFECollection()
A 3D refined tri-linear element on a cube.
Class for finite elements with basis functions that return scalar values.
A 3D tri-linear element on a cube with nodes at the vertices of the cube.
Linear1DFiniteElement SegmentFE
MFEM_EXPORT class LinearWedgeFiniteElement WedgeFE
L2_FECollection DG_FECollection
Declare an alternative name for L2_FECollection = DG_FECollection.
BiLinear2DFiniteElement QuadrilateralFE
std::function< real_t(const Vector &)> f(real_t mass_coeff)
real_t p(const Vector &x, real_t t)