22static void DLFEvalAssemble(
const FiniteElementSpace &fes,
23 const IntegrationRule *ir,
24 const Array<int> &markers,
const Vector &coeff,
27 Mesh *mesh = fes.GetMesh();
28 const int dim = mesh->Dimension();
29 const FiniteElement &el = *fes.GetTypicalFE();
32 const int d = maps.ndof, q = maps.nqpt;
34 const GeometricFactors *geom = mesh->GetGeometricFactors(*ir, flags, mt);
35 const int map_type = fes.GetTypicalFE()->GetMapType();
37 const int vdim = fes.GetVDim();
38 const int ne = fes.GetMesh()->GetNE();
39 const real_t *B = maps.B.Read();
40 const int *M = markers.Read();
41 const real_t *detJ = geom->detJ.Read();
42 const real_t *W = ir->GetWeights().Read();
44 DomainLFIntegrator::AssembleKernels::Run(
dim, d, q, vdim, ne, d, q, map_type,
45 M, B, detJ, W, coeff, Y);
49 const Array<int> &markers, Vector &
b)
51 const FiniteElement &fe = *fes.GetTypicalFE();
52 const int qorder = oa * fe.GetOrder() + ob;
56 QuadratureSpace qs(*fes.GetMesh(), *ir);
58 DLFEvalAssemble(fes, ir, markers, coeff,
b);
62 const Array<int> &markers,
65 const FiniteElement &fe = *fes.GetTypicalFE();
66 const int qorder = 2 * fe.GetOrder();
70 QuadratureSpace qs(*fes.GetMesh(), *ir);
72 DLFEvalAssemble(fes, ir, markers, coeff,
b);
76DomainLFIntegrator::AssembleKernels::Fallback(
int DIM,
int,
int)
81 return DLFEvalAssemble1D<0, 0>;
83 return DLFEvalAssemble2D<0, 0>;
85 return DLFEvalAssemble3D<0, 0>;
90DomainLFIntegrator::Kernels::Kernels()
static MemoryType GetDeviceMemoryType()
Get the current Device MemoryType. This is the MemoryType used by most MFEM classes when allocating m...
@ TENSOR
Tensor product representation using 1D matrices/tensors with dimensions using 1D number of quadrature...
void(*)(const int, const int, const int, const int, const int, const int *, const real_t *, const real_t *, const real_t *, const Vector &coeff, real_t *y) AssembleKernelType
args: vdim, ne, d1d, q1d, map_type, markers, B, detJ, W, coeff, y
static void AddSpecialization()
void AssembleDevice(const FiniteElementSpace &fes, const Array< int > &markers, Vector &b) override
Method defining assembly on device.
const IntegrationRule & Get(int GeomType, int Order)
Returns an integration rule for given GeomType and Order.
const IntegrationRule * IntRule
void AssembleDevice(const FiniteElementSpace &fes, const Array< int > &markers, Vector &b) override
Method defining assembly on device.
@ COMPRESSED
Enable all above compressions.
MemoryType
Memory types supported by MFEM.
IntegrationRules IntRules(0, Quadrature1D::GaussLegendre)
A global object with all integration rules (defined in intrules.cpp)