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"; }
195 return var_orders[
p]->FiniteElementForGeometry(geom);
219 return var_orders[
p]->DofOrderForOrientation(geom, ori);
276 {
return H1_dof[GeomType]; }
279 int Or)
const override;
353 if (L2_Elements[GeomType])
355 return L2_Elements[GeomType]->
GetDof();
361 int Or)
const override;
363 const char *
Name()
const override {
return d_name; }
370 return Tr_Elements[GeomType];
397 void InitFaces(
const int p,
const int dim,
const int map_type,
421 {
return RT_dof[GeomType]; }
424 int Or)
const override;
484 {
return ND_dof[GeomType]; }
490 int Or)
const override;
536 {
return ND_dof[GeomType]; }
539 int Or)
const override;
568 {
return RT_dof[GeomType]; }
571 int Or)
const override;
601 {
return ND_dof[GeomType]; }
604 int Or)
const override;
637 void InitFaces(
const int p,
const int dim,
const int map_type,
655 {
return RT_dof[GeomType]; }
658 int Or)
const override;
695 mutable char name[16];
708 ParallelepipedFE->
Reset();
726 int Or)
const override;
728 const char *
Name()
const override {
return name; }
758 int Or)
const override;
760 const char *
Name()
const override {
return "Linear"; }
787 int Or)
const override;
789 const char *
Name()
const override {
return "Quadratic"; }
810 int Or)
const override;
812 const char *
Name()
const override {
return "QuadraticPos"; }
841 int Or)
const override;
843 const char *
Name()
const override {
return "Cubic"; }
864 int Or)
const override;
866 const char *
Name()
const override {
return "CrouzeixRaviart"; }
889 int Or)
const override;
891 const char *
Name()
const override {
return "LinearNonConf3D"; }
913 int Or)
const override;
915 const char *
Name()
const override {
return "RT0_2D"; }
937 int Or)
const override;
939 const char *
Name()
const override {
return "RT1_2D"; }
961 int Or)
const override;
963 const char *
Name()
const override {
return "RT2_2D"; }
985 int Or)
const override;
987 const char *
Name()
const override {
return "Const2D"; }
1010 int Or)
const override;
1012 const char *
Name()
const override {
return "LinearDiscont2D"; }
1034 int Or)
const override;
1036 const char *
Name()
const override {
return "GaussLinearDiscont2D"; }
1055 int Or)
const override;
1057 const char *
Name()
const override {
return "P1OnQuad"; }
1080 int Or)
const override;
1082 const char *
Name()
const override {
return "QuadraticDiscont2D"; }
1102 int Or)
const override
1105 const char *
Name()
const override {
return "QuadraticPosDiscont2D"; }
1127 int Or)
const override;
1129 const char *
Name()
const override {
return "GaussQuadraticDiscont2D"; }
1152 int Or)
const override;
1154 const char *
Name()
const override {
return "CubicDiscont2D"; }
1179 int Or)
const override;
1181 const char *
Name()
const override {
return "Const3D"; }
1206 int Or)
const override;
1208 const char *
Name()
const override {
return "LinearDiscont3D"; }
1232 int Or)
const override;
1234 const char *
Name()
const override {
return "QuadraticDiscont3D"; }
1259 int Or)
const override;
1261 const char *
Name()
const override {
return "RefinedLinear"; }
1286 int Or)
const override;
1288 const char *
Name()
const override {
return "ND1_3D"; }
1313 int Or)
const override;
1315 const char *
Name()
const override {
return "RT0_3D"; }
1337 int Or)
const override;
1339 const char *
Name()
const override {
return "RT1_3D"; }
1357 {
return (GeomType == GeomType_) ? Local_Element : NULL; }
1360 {
return (GeomType == GeomType_) ? Local_Element->
GetDof() : 0; }
1363 int Or)
const override
1366 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.
@ 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.
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
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()
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.
const FiniteElement * FiniteElementForGeometry(Geometry::Type GeomType) const override
virtual ~H1_FECollection()
H1_FECollection(const int p, const int dim=3, const int btype=BasisType::GaussLobatto)
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
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].
L2_FECollection(const int p, const int dim, const int btype=BasisType::GaussLegendre, const int map_type=FiniteElement::VALUE)
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,...
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
int GetContType() const override
const FiniteElement * FiniteElementForGeometry(Geometry::Type GeomType) const override
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].
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)