12 #include "../general/forall.hpp"
15 #include "ceed/convection.hpp"
26 if (mesh->
GetNE() == 0) {
return; }
30 if (DeviceCanUseCeed())
32 MFEM_VERIFY(
alpha==-1,
"Only alpha=-1 currently supported with libCEED.");
34 ceedOp =
new ceed::MFConvectionIntegrator(fes, *ir, Q,
alpha);
37 MFEM_ABORT(
"Error: ConvectionIntegrator::AssembleMF only implemented with"
41 void ConvectionIntegrator::AssembleDiagonalMF(
Vector &diag)
43 if (DeviceCanUseCeed())
45 ceedOp->GetDiagonal(diag);
49 MFEM_ABORT(
"Error: ConvectionIntegrator::AssembleDiagonalMF only"
50 " implemented with libCEED");
54 void ConvectionIntegrator::AddMultMF(
const Vector &x,
Vector &y)
const
56 if (DeviceCanUseCeed())
58 ceedOp->AddMult(x, y);
62 MFEM_ABORT(
"Error: ConvectionIntegrator::AddMultMF only implemented with"
Abstract class for all finite elements.
Class for an integration rule - an Array of IntegrationPoint.
int GetNE() const
Returns number of elements.
Mesh * GetMesh() const
Returns the mesh.
ElementTransformation * GetElementTransformation(int i) const
Returns ElementTransformation for the i-th element.
Class FiniteElementSpace - responsible for providing FEM view of the mesh, mainly managing the set of...
virtual const FiniteElement * GetFE(int i) const
Returns pointer to the FiniteElement in the FiniteElementCollection associated with i'th element in t...