28 MFEM_ABORT(
"Currently MFEM + Algoim supports only quads and hexes.");
42 if (vir!=
nullptr) {
return vir;}
45 int np1d=int_order/2+1;
48 LevelSet2D ls(pe,lsvec);
49 auto q = Algoim::quadGen<2>(ls,Algoim::BoundingBox<double,2>(0.0,1.0),
54 for (
size_t i=0; i<q.nodes.size(); i++)
57 ip.
Set2w(q.nodes[i].x(0),q.nodes[i].x(1),q.nodes[i].w);
62 LevelSet3D ls(pe,lsvec);
63 auto q = Algoim::quadGen<3>(ls,Algoim::BoundingBox<double,3>(0.0,1.0),
68 for (
size_t i=0; i<q.nodes.size(); i++)
71 ip.
Set(q.nodes[i].x(0),q.nodes[i].x(1),q.nodes[i].x(2),q.nodes[i].w);
80 if (sir!=
nullptr) {
return sir;}
82 int np1d=int_order/2+1;
86 LevelSet2D ls(pe,lsvec);
87 auto q = Algoim::quadGen<2>(ls,Algoim::BoundingBox<double,2>(0.0,1.0),
92 for (
size_t i=0; i<q.nodes.size(); i++)
95 ip.
Set2w(q.nodes[i].x(0),q.nodes[i].x(1),q.nodes[i].w);
100 LevelSet3D ls(pe,lsvec);
101 auto q = Algoim::quadGen<3>(ls,Algoim::BoundingBox<double,3>(0.0,1.0),
106 for (
size_t i=0; i<q.nodes.size(); i++)
109 ip.
Set(q.nodes[i].x(0),q.nodes[i].x(1),q.nodes[i].x(2),q.nodes[i].w);
Abstract class for all finite elements.
void Set(const double *p, const int dim)
void trans(const Vector &u, Vector &x)
Class for an integration rule - an Array of IntegrationPoint.
const IntegrationRule * GetSurfaceIntegrationRule()
void SetSize(int s)
Resize the vector to size s.
const IntegrationRule * GetVolumeIntegrationRule()
Data type dense matrix using column-major storage.
Geometry::Type GetGeomType() const
Returns the Geometry::Type of the reference element.
int GetDim() const
Returns the reference space dimension for the finite element.
Arbitrary order H1 elements in 3D utilizing the Bernstein basis on a cube.
int GetDof() const
Returns the number of degrees of freedom in the finite element.
void SetOrder(const int order)
Sets the order of the integration rule. This is only for keeping order information, it does not alter any data in the IntegrationRule.
virtual void Project(Coefficient &coeff, ElementTransformation &Trans, Vector &dofs) const
Given a coefficient and a transformation, compute its projection (approximation) in the local finite ...
Class for integration point with weight.
AlgoimIntegrationRule(int o, const FiniteElement &el, ElementTransformation &trans, const Vector &lsfun)
Arbitrary order H1 elements in 2D utilizing the Bernstein basis on a square.
void Set2w(const double x1, const double x2, const double w)
int GetOrder() const
Returns the order of the finite element. In the case of anisotropic orders, returns the maximum order...