32 MFEM_VERIFY(trial_el != NULL,
"Only VectorTensorFiniteElement is supported!");
36 MFEM_VERIFY(test_el != NULL,
"Only NodalTensorFiniteElement is supported!");
42 const int dims = trial_el->
GetDim();
43 MFEM_VERIFY(dims == 2 || dims == 3,
"");
47 MFEM_VERIFY(dim == 2 || dim == 3,
"");
51 ne = trial_fes.
GetNE();
58 L2dofs1D = L2mapsO->
ndof;
60 MFEM_VERIFY(dofs1D == mapsO->
ndof + 1 && quad1D == mapsO->
nqpt,
"");
63 MFEM_VERIFY(nq == quad1D * quad1D,
"");
67 MFEM_VERIFY(nq == quad1D * quad1D * quad1D,
"");
84 internal::PAHdivL2Setup3D(quad1D, ne, ir->
GetWeights(), coeff, pa_data);
88 internal::PAHdivL2Setup2D(quad1D, ne, ir->
GetWeights(), coeff, pa_data);
92 MFEM_ABORT(
"Unknown kernel.");
101 internal::PAHdivL2AssembleDiagonal_ADAt_3D(dofs1D, quad1D, L2dofs1D, ne,
103 mapsC->
Gt, mapsO->
Bt, pa_data, D, diag);
107 internal::PAHdivL2AssembleDiagonal_ADAt_2D(dofs1D, quad1D, L2dofs1D, ne,
109 mapsC->
Gt, mapsO->
Bt, pa_data, D, diag);
113 MFEM_ABORT(
"Unsupported dimension!");
121 internal::PAHdivL2Apply3D(dofs1D, quad1D, L2dofs1D, ne, mapsO->
B, mapsC->
G,
122 L2mapsO->
Bt, pa_data, x, y);
126 internal::PAHdivL2Apply2D(dofs1D, quad1D, L2dofs1D, ne, mapsO->
B, mapsC->
G,
127 L2mapsO->
Bt, pa_data, x, y);
131 MFEM_ABORT(
"Unsupported dimension!");
140 internal::PAHdivL2ApplyTranspose3D(dofs1D, quad1D, L2dofs1D, ne, L2mapsO->
B,
141 mapsC->
Gt, mapsO->
Bt, pa_data, x, y);
145 internal::PAHdivL2ApplyTranspose2D(dofs1D, quad1D, L2dofs1D, ne, L2mapsO->
B,
146 mapsC->
Gt, mapsO->
Bt, pa_data, x, y);
150 MFEM_ABORT(
"Unsupported dimension!");
Class to represent a coefficient evaluated at quadrature points.
static MemoryType GetMemoryType()
(DEPRECATED) Equivalent to GetDeviceMemoryType().
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 GetOrder() const
Returns the order of the finite element. In the case of anisotropic orders, returns the maximum order...
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.
int GetMapType() const
Returns the FiniteElement::MapType of the element describing how reference functions are mapped to ph...
@ DIV
Implements CalcDivShape methods.
Structure for storing mesh geometric factors: coordinates, Jacobians, and determinants of the Jacobia...
Vector detJ
Determinants of the Jacobians 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.
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...
Class representing the storage layout of a QuadratureFunction.
void AddMultPA(const Vector &, Vector &) const override
Method for partially assembled action.
void AddMultTransposePA(const Vector &, Vector &) const override
Method for partially assembled transposed action.
void AssemblePA(const FiniteElementSpace &trial_fes, const FiniteElementSpace &test_fes) override
void AssembleDiagonalPA_ADAt(const Vector &D, Vector &diag) override
Assemble diagonal of ( is this integrator) and add it to diag.
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.