12 #ifndef MFEM_FE_COLLECTION
13 #define MFEM_FE_COLLECTION
15 #include "../config/config.hpp"
36 virtual const char *
Name()
const {
return "Undefined"; }
58 int *SegDofOrd[2], *TriDofOrd[6], *QuadDofOrd[8];
61 explicit H1_FECollection(
const int p,
const int dim = 3,
const int type = 0);
64 {
return H1_Elements[GeomType]; }
66 {
return H1_dof[GeomType]; }
68 virtual const char *
Name()
const {
return h1_name; }
96 {
return L2_Elements[GeomType]; }
99 if (L2_Elements[GeomType])
100 return L2_Elements[GeomType]->
GetDof();
104 virtual const char *
Name()
const {
return d_name; }
109 return Tr_Elements[GeomType];
128 void InitFaces(
const int p,
const int dim,
const int map_type);
140 {
return RT_dof[GeomType]; }
164 int *SegDofOrd[2], *TriDofOrd[6], *QuadDofOrd[8];
170 {
return ND_Elements[GeomType]; }
172 {
return ND_dof[GeomType]; }
174 virtual const char *
Name()
const {
return nd_name; }
189 void Allocate(
int Order);
203 QuadrilateralFE->
Reset();
204 ParallelepipedFE->
Reset();
214 virtual const char *
Name()
const {
return name; }
240 virtual const char *
Name()
const {
return "Linear"; };
264 virtual const char *
Name()
const {
return "Quadratic"; };
284 virtual const char *
Name()
const {
return "QuadraticPos"; };
308 virtual const char *
Name()
const {
return "Cubic"; };
328 virtual const char *
Name()
const {
return "CrouzeixRaviart"; };
350 virtual const char *
Name()
const {
return "LinearNonConf3D"; };
372 virtual const char *
Name()
const {
return "RT0_2D"; };
393 virtual const char *
Name()
const {
return "RT1_2D"; };
414 virtual const char *
Name()
const {
return "RT2_2D"; };
434 virtual const char *
Name()
const {
return "Const2D"; };
455 virtual const char *
Name()
const {
return "LinearDiscont2D"; };
476 virtual const char *
Name()
const {
return "GaussLinearDiscont2D"; };
490 virtual const char *
Name()
const {
return "P1OnQuad"; };
511 virtual const char *
Name()
const {
return "QuadraticDiscont2D"; };
527 virtual const char *
Name()
const {
return "QuadraticPosDiscont2D"; };
548 virtual const char *
Name()
const {
return "GaussQuadraticDiscont2D"; };
569 virtual const char *
Name()
const {
return "CubicDiscont2D"; };
590 virtual const char *
Name()
const {
return "Const3D"; };
611 virtual const char *
Name()
const {
return "LinearDiscont3D"; };
632 virtual const char *
Name()
const {
return "QuadraticDiscont3D"; };
656 virtual const char *
Name()
const {
return "RefinedLinear"; };
677 virtual const char *
Name()
const {
return "ND1_3D"; };
699 virtual const char *
Name()
const {
return "RT0_3D"; };
720 virtual const char *
Name()
const {
return "RT1_3D"; };
735 {
return (GeomType == _GeomType) ? Local_Element : NULL; }
737 {
return (GeomType == _GeomType) ? Local_Element->
GetDof() : 0; }
740 virtual const char *
Name()
const {
return d_name; }
Abstract class for Finite Elements.
Arbitrary order non-uniform rational B-splines (NURBS) finite elements.
virtual const char * Name() const
virtual const char * Name() const
virtual const char * Name() const
virtual const FiniteElement * FiniteElementForGeometry(int GeomType) const
Version of QuadraticDiscont2DFECollection with dofs in the Gaussian points.
int RT_dof[Geometry::NumGeom]
virtual int * DofOrderForOrientation(int GeomType, int Or) const
void UpdateOrder(int Order)
Change the order of the collection.
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)
virtual const char * Name() const
virtual const char * Name() const
GaussQuadraticDiscont2DFECollection()
virtual int DofForGeometry(int GeomType) const
virtual const char * Name() const
virtual int * DofOrderForOrientation(int GeomType, int Or) const
virtual const char * Name() const
virtual const FiniteElement * FiniteElementForGeometry(int GeomType) const
QuadraticDiscont3DFECollection()
virtual const FiniteElement * FiniteElementForGeometry(int GeomType) const
virtual int * DofOrderForOrientation(int GeomType, int Or) const
virtual ~L2_FECollection()
LinearNonConf3DFECollection()
virtual const char * Name() const
virtual const FiniteElement * FiniteElementForGeometry(int GeomType) const
virtual int DofForGeometry(int GeomType) const
RefinedLinearFECollection()
virtual const FiniteElement * FiniteElementForGeometry(int GeomType) const
void InitFaces(const int p, const int dim, const int map_type)
virtual int * DofOrderForOrientation(int GeomType, int Or) const
virtual const FiniteElement * FiniteElementForGeometry(int GeomType) const
virtual const FiniteElement * FiniteElementForGeometry(int GeomType) const
int GetOrder() const
Returns the order of the finite element.
Piecewise-(bi)linear continuous finite elements.
virtual int * DofOrderForOrientation(int GeomType, int Or) const
virtual int * DofOrderForOrientation(int GeomType, int Or) const
ND_FECollection(const int p, const int dim)
Class for quadratic FE on triangle.
virtual int * DofOrderForOrientation(int GeomType, int Or) const
Class for quadratic FE on interval.
virtual const FiniteElement * FiniteElementForGeometry(int GeomType) const
virtual int DofForGeometry(int GeomType) const
virtual const char * Name() const
virtual int DofForGeometry(int GeomType) const
L2_FECollection(const int p, const int dim, const int type=0)
virtual int * DofOrderForOrientation(int GeomType, int Or) const
virtual int DofForGeometry(int GeomType) const
virtual int * DofOrderForOrientation(int GeomType, int Or) const
virtual const char * Name() const
virtual int * DofOrderForOrientation(int GeomType, int Or) const
RT_FECollection(const int p, const int dim, const int map_type)
virtual const char * Name() const
virtual const FiniteElement * FiniteElementForGeometry(int GeomType) const
virtual const char * Name() const
virtual int DofForGeometry(int GeomType) const
virtual const FiniteElement * FiniteElementForGeometry(int GeomType) const
Finite element collection on a macro-element.
virtual const FiniteElement * FiniteElementForGeometry(int GeomType) const
virtual int DofForGeometry(int GeomType) const
virtual const FiniteElement * FiniteElementForGeometry(int GeomType) const
Class for refined bi-linear FE on quadrilateral.
virtual const FiniteElement * FiniteElementForGeometry(int GeomType) const
virtual const FiniteElement * FiniteElementForGeometry(int GeomType) const
QuadraticPosDiscont2DFECollection()
virtual const char * Name() const
virtual int * DofOrderForOrientation(int GeomType, int Or) const
virtual ~RT_FECollection()
virtual int DofForGeometry(int _GeomType) const
virtual int DofForGeometry(int GeomType) const
virtual int * DofOrderForOrientation(int GeomType, int Or) const
virtual int * DofOrderForOrientation(int GeomType, int Or) const
Piecewise-(bi)cubic continuous finite elements.
virtual int * DofOrderForOrientation(int GeomType, int Or) const
virtual const char * Name() const
Class for bilinear FE on quad with nodes at the 4 Gaussian points.
Class for refined linear FE on interval.
virtual int DofForGeometry(int GeomType) const
Class for refined linear FE on triangle.
Class for refined linear FE on tetrahedron.
FiniteElement * RT_Elements[Geometry::NumGeom]
Class for constant FE on triangle.
virtual int * DofOrderForOrientation(int GeomType, int Or) const
virtual int DofForGeometry(int GeomType) const
virtual int * DofOrderForOrientation(int GeomType, int Or) const
virtual int DofForGeometry(int GeomType) const
virtual int DofForGeometry(int GeomType) const
Class for refined trilinear FE on a hexahedron.
Discontinuous collection defined locally by a given finite element.
virtual const FiniteElement * FiniteElementForGeometry(int GeomType) const
CubicDiscont2DFECollection()
Version of QuadraticDiscont2DFECollection with positive basis functions.
virtual ~ND_FECollection()
virtual int * DofOrderForOrientation(int GeomType, int Or) const
virtual const FiniteElement * FiniteElementForGeometry(int GeomType) const
Class for quadratic FE on tetrahedron.
virtual int * DofOrderForOrientation(int GeomType, int Or) const
RT_Trace_FECollection(const int p, const int dim, const int map_type=FiniteElement::INTEGRAL)
QuadraticDiscont2DFECollection()
H1_FECollection(const int p, const int dim=3, const int type=0)
virtual int DofForGeometry(int GeomType) const
virtual const FiniteElement * FiniteElementForGeometry(int GeomType) const
Version of QuadraticFECollection with positive basis functions.
virtual const FiniteElement * FiniteElementForGeometry(int GeomType) const
virtual ~Local_FECollection()
virtual const char * Name() const
virtual int DofForGeometry(int GeomType) const
virtual ~H1_FECollection()
virtual const FiniteElement * FiniteElementForGeometry(int GeomType) const
LinearDiscont3DFECollection()
Class for linear FE on tetrahedron.
Class for linear FE on interval.
Crouzeix-Raviart finite element on quadrilateral.
Class for linear FE on triangle.
LinearDiscont2DFECollection()
virtual const FiniteElement * FiniteElementForGeometry(int GeomType) const
Class for quadratic FE on triangle with nodes at the "Gaussian" points.
virtual const char * Name() const
virtual const char * Name() const
Piecewise-linear nonconforming finite elements in 3D.
virtual int * DofOrderForOrientation(int GeomType, int Or) const
Crouzeix-Raviart nonconforming elements in 2D.
NURBSFECollection(int Order)
Arbitrary order H(div)-conforming Raviart-Thomas finite elements.
L2_FECollection DG_FECollection
virtual int * DofOrderForOrientation(int GeomType, int Or) const
H1Pos_FECollection(const int p, const int dim=3)
virtual int DofForGeometry(int GeomType) const
virtual int DofForGeometry(int GeomType) const
virtual const char * Name() const
virtual int DofForGeometry(int GeomType) const
virtual const char * Name() const
virtual const char * Name() const
virtual const FiniteElement * TraceFiniteElementForGeometry(int GeomType) const
virtual int DofForGeometry(int GeomType) const
virtual const char * Name() const
virtual int * DofOrderForOrientation(int GeomType, int Or) const
virtual const char * Name() const
int GetDof() const
Returns the degrees of freedom in the FE space.
Class for bi-quadratic FE on quadrilateral.
Class for tri-linear FE on cube.
virtual const FiniteElement * FiniteElementForGeometry(int GeomType) const
virtual int * DofOrderForOrientation(int GeomType, int Or) const
virtual int DofForGeometry(int GeomType) const
virtual const FiniteElement * FiniteElementForGeometry(int GeomType) const
virtual const char * Name() const
Class for bilinear FE on quadrilateral.
virtual int DofForGeometry(int GeomType) const
virtual const FiniteElement * FiniteElementForGeometry(int GeomType) const
virtual int DofForGeometry(int GeomType) const
Version of LinearDiscont2DFECollection with dofs in the Gaussian points.
virtual const FiniteElement * FiniteElementForGeometry(int GeomType) const
virtual int * DofOrderForOrientation(int GeomType, int Or) const =0
virtual const char * Name() const
static FiniteElementCollection * New(const char *name)
virtual const FiniteElement * TraceFiniteElementForGeometry(int GeomType) const
Class for linear FE on triangle with nodes at the 3 "Gaussian" points.
virtual int * DofOrderForOrientation(int GeomType, int Or) const
virtual const FiniteElement * FiniteElementForGeometry(int GeomType) const
virtual int DofForGeometry(int GeomType) const
virtual const char * Name() const
GaussLinearDiscont2DFECollection()
virtual int DofForGeometry(int GeomType) const
virtual const FiniteElement * FiniteElementForGeometry(int GeomType) const
Bi-quadratic element on quad with nodes at the 9 Gaussian points.
virtual const char * Name() const
virtual int * DofOrderForOrientation(int GeomType, int Or) const
virtual int * DofOrderForOrientation(int GeomType, int Or) const
virtual int * DofOrderForOrientation(int GeomType, int Or) const
virtual int * DofOrderForOrientation(int GeomType, int Or) const
virtual int DofForGeometry(int GeomType) const
virtual const char * Name() const
QuadraticPosFECollection()
Tensor products of 1D FEs (only degree 2 is functional)
Piecewise-(bi)quadratic continuous finite elements.
virtual const FiniteElement * FiniteElementForGeometry(int GeomType) const
int HasFaceDofs(int GeomType) const
Arbitrary order H(curl)-conforming Nedelec finite elements.
Class for cubic FE on tetrahedron.
virtual const char * Name() const
virtual int * DofOrderForOrientation(int GeomType, int Or) const
virtual int * DofOrderForOrientation(int GeomType, int Or) const
Arbitrary order H1-conforming (continuous) finite elements.
virtual const char * Name() const
virtual const char * Name() const
virtual const FiniteElement * FiniteElementForGeometry(int _GeomType) const
CrouzeixRaviartFECollection()
virtual int DofForGeometry(int GeomType) const =0
virtual int * DofOrderForOrientation(int GeomType, int Or) const
virtual int DofForGeometry(int GeomType) const
Local_FECollection(const char *fe_name)
virtual int DofForGeometry(int GeomType) const
virtual const char * Name() const
virtual int DofForGeometry(int GeomType) const
Linear (P1) finite elements on quadrilaterals.
virtual int DofForGeometry(int GeomType) const
virtual ~FiniteElementCollection()
virtual ~NURBSFECollection()
virtual int DofForGeometry(int GeomType) const
Crouzeix-Raviart finite element on triangle.
virtual const FiniteElement * FiniteElementForGeometry(int GeomType) const
virtual const FiniteElement * FiniteElementForGeometry(int GeomType) const =0
Arbitrary order "L2-conforming" discontinuous finite elements.
virtual const FiniteElement * FiniteElementForGeometry(int GeomType) const