12 #include "../general/forall.hpp"
15 #include "libceed/diffusion.hpp"
29 = IntRule ? IntRule : &DiffusionIntegrator::GetRule(el, el);
30 if (DeviceCanUseCeed())
33 ceedDataPtr =
new CeedData;
34 InitCeedCoeff(Q, *mesh, *ir, ceedDataPtr);
35 return CeedMFDiffusionAssemble(fes, *ir, * ceedDataPtr);
38 mfem_error(
"Error: VectorDiffusionIntegrator::AssembleMF only implemented with libCEED");
41 void VectorDiffusionIntegrator::AddMultMF(
const Vector &x,
Vector &y)
const
44 if (DeviceCanUseCeed())
46 CeedAddMult(ceedDataPtr, x, y);
51 mfem_error(
"Error: VectorDiffusionIntegrator::AssembleDiagonalMF only implemented with libCEED");
55 void VectorDiffusionIntegrator::AssembleDiagonalMF(
Vector &diag)
58 if (DeviceCanUseCeed())
60 CeedAssembleDiagonal(ceedDataPtr, diag);
65 mfem_error(
"Error: VectorDiffusionIntegrator::AddMultMF only implemented with libCEED");
Abstract class for all finite elements.
Class for an integration rule - an Array of IntegrationPoint.
Mesh * GetMesh() const
Returns the mesh.
void mfem_error(const char *msg)
Function called when an error is encountered. Used by the macros MFEM_ABORT, MFEM_ASSERT, MFEM_VERIFY.
Class FiniteElementSpace - responsible for providing FEM view of the mesh, mainly managing the set of...
const FiniteElement * GetFE(int i) const
Returns pointer to the FiniteElement in the FiniteElementCollection associated with i'th element in t...