28 MFEM_VERIFY(el != NULL,
"Only VectorTensorFiniteElement is supported!");
33 const int dims = el->
GetDim();
34 MFEM_VERIFY(dims == 2 || dims == 3,
"");
38 MFEM_VERIFY(dim == 2 || dim == 3,
"");
47 MFEM_VERIFY(dofs1D == mapsO->
ndof + 1 && quad1D == mapsO->
nqpt,
"");
56 internal::PADivDivSetup3D(quad1D, ne, ir->
GetWeights(), geom->
J, coeff,
61 internal::PADivDivSetup2D(quad1D, ne, ir->
GetWeights(), geom->
J, coeff,
66 MFEM_ABORT(
"Unknown kernel.");
74 internal::PADivDivAssembleDiagonal3D(dofs1D, quad1D, ne,
75 mapsO->
B, mapsC->
G, pa_data, diag);
79 internal::PADivDivAssembleDiagonal2D(dofs1D, quad1D, ne,
80 mapsO->
B, mapsC->
G, pa_data, diag);
87 internal::PADivDivApply3D(dofs1D, quad1D, ne, mapsO->
B, mapsC->
G,
88 mapsO->
Bt, mapsC->
Gt, pa_data, x, y);
90 internal::PADivDivApply2D(dofs1D, quad1D, ne, mapsO->
B, mapsC->
G,
91 mapsO->
Bt, mapsC->
Gt, pa_data, x, y);
94 MFEM_ABORT(
"Unsupported dimension!");
Class to represent a coefficient evaluated at quadrature points.
static MemoryType GetMemoryType()
(DEPRECATED) Equivalent to GetDeviceMemoryType().
void AddMultPA(const Vector &x, Vector &y) const override
Method for partially assembled action.
void AssembleDiagonalPA(Vector &diag) override
Assemble diagonal and add it to Vector diag.
void AssemblePA(const FiniteElementSpace &fes) override
Method defining partial assembly.
Array< real_t > G
Gradients/divergences/curls of basis functions evaluated at quadrature points.
@ TENSOR
Tensor product representation using 1D matrices/tensors with dimensions using 1D number of quadrature...
Array< real_t > B
Basis functions evaluated at quadrature points.
int ndof
Number of degrees of freedom = number of basis functions. When mode is TENSOR, this is the 1D number.
Array< real_t > Gt
Transpose of G.
int nqpt
Number of quadrature points. When mode is TENSOR, this is the 1D number.
Array< real_t > Bt
Transpose of B.
Class FiniteElementSpace - responsible for providing FEM view of the mesh, mainly managing the set of...
int GetNE() const
Returns number of elements in the mesh.
Mesh * GetMesh() const
Returns the mesh.
const FiniteElement * GetTypicalFE() const
Return GetFE(0) if the local mesh is not empty; otherwise return a typical FE based on the Geometry t...
Abstract class for all finite elements.
int GetDerivType() const
Returns the FiniteElement::DerivType of the element describing the spatial derivative method implemen...
int GetDim() const
Returns the reference space dimension for the finite element.
@ DIV
Implements CalcDivShape methods.
Vector J
Jacobians of the element transformations at all quadrature points.
Class for an integration rule - an Array of IntegrationPoint.
int GetNPoints() const
Returns the number of the points in the integration rule.
const Array< real_t > & GetWeights() const
Return the quadrature weights in a contiguous array.
const IntegrationRule * IntRule
static const IntegrationRule & GetRule(const FiniteElement &trial_fe, const FiniteElement &test_fe, const ElementTransformation &Trans)
int Dimension() const
Dimension of the reference space used within the elements.
ElementTransformation * GetTypicalElementTransformation()
If the local mesh is not empty return GetElementTransformation(0); otherwise, return the identity tra...
const GeometricFactors * GetGeometricFactors(const IntegrationRule &ir, const int flags, MemoryType d_mt=MemoryType::DEFAULT)
Return the mesh geometric factors corresponding to the given integration rule.
Class representing the storage layout of a QuadratureFunction.
const DofToQuad & GetDofToQuadOpen(const IntegrationRule &ir, DofToQuad::Mode mode) const
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...
void SetSize(int s)
Resize the vector to size s.
@ FULL
Store the coefficient as a full QuadratureFunction.