26 MFEM_VERIFY(el != NULL,
"Only VectorTensorFiniteElement is supported!");
32 const int dims = el->
GetDim();
33 MFEM_VERIFY(dims == 2 || dims == 3,
"");
37 MFEM_VERIFY(
dim == 2 ||
dim == 3,
"");
55 const int coeff_dim = coeff.
GetVDim();
57 const int sym_dims = (dims * (dims + 1)) / 2;
63 MFEM_ABORT(
"Unknown kernel.");
88 return internal::SmemPACurlCurlAssembleDiagonal3D<2,3>(
96 return internal::SmemPACurlCurlAssembleDiagonal3D<3,4>(
104 return internal::SmemPACurlCurlAssembleDiagonal3D<4,5>(
112 return internal::SmemPACurlCurlAssembleDiagonal3D<5,6>(
120 return internal::SmemPACurlCurlAssembleDiagonal3D(
143 MFEM_ABORT(
"Unsupported dimension!");
157 return internal::SmemPACurlCurlApply3D<2,3>(
163 return internal::SmemPACurlCurlApply3D<3,4>(
169 return internal::SmemPACurlCurlApply3D<4,5>(
175 return internal::SmemPACurlCurlApply3D<5,6>(
181 return internal::SmemPACurlCurlApply3D(
201 MFEM_ABORT(
"Unsupported dimension!");
Class to represent a coefficient evaluated at quadrature points.
void SetConstant(real_t constant)
Set this vector to the given constant.
void Project(Coefficient &coeff)
Evaluate the given Coefficient at the quadrature points defined by qs.
int GetVDim() const
Return the number of values per quadrature point.
void ProjectTranspose(MatrixCoefficient &coeff)
Project the transpose of coeff.
const GeometricFactors * geom
Not owned.
bool symmetric
False if using a nonsymmetric matrix coefficient.
const DofToQuad * mapsC
Not owned. DOF-to-quad map, closed.
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.
const DofToQuad * mapsO
Not owned. DOF-to-quad map, open.
DiagonalMatrixCoefficient * DQ
static MemoryType GetMemoryType()
(DEPRECATED) Equivalent to GetDeviceMemoryType().
static bool Allows(unsigned long b_mask)
Return true if any of the backends in the backend mask, b_mask, are allowed.
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.
@ CURL
Implements CalcCurlShape 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.
@ SYMMETRIC
Store the triangular part of symmetric matrices.
@ DEVICE_MASK
Biwise-OR of all device backends.