45 if (!maybe_delta || !maybe_delta->
IsDelta())
61 if (!maybe_delta || !maybe_delta->
IsDelta())
109 if (mesh.
NURBSext !=
nullptr) {
return false; }
114 for (
int k = 0; k < integ.Size(); k++)
121 if (!IntegratorsSupportDevice(
domain_integs)) {
return false; }
134 for (
int be = 0; be <
fes->
GetNBE(); ++be)
138 if (!face_info.IsBoundary())
150 if (mesh_dim == 1 || mesh_dim != mesh.
SpaceDimension()) {
return false; }
192 "invalid element marker for domain linear form " 193 "integrator #" << k <<
", counting from zero");
197 for (
int i = 0; i <
fes -> GetNE(); i++)
203 if ( markers == NULL || (*markers)[elem_attr-1] == 1 )
205 doftrans =
fes -> GetElementVDofs (i, vdofs);
206 eltrans =
fes -> GetElementTransformation (i);
236 MFEM_ASSERT(bdr_marker.
Size() == bdr_attr_marker.
Size(),
237 "invalid boundary marker for boundary integrator #" 238 << k <<
", counting from zero");
239 for (
int i = 0; i < bdr_attr_marker.
Size(); i++)
241 bdr_attr_marker[i] |= bdr_marker[i];
245 for (
int i = 0; i <
fes -> GetNBE(); i++)
248 if (bdr_attr_marker[bdr_attr-1] == 0) {
continue; }
249 doftrans =
fes -> GetBdrElementVDofs (i, vdofs);
250 eltrans =
fes -> GetBdrElementTransformation (i);
284 MFEM_ASSERT(bdr_marker.
Size() == bdr_attr_marker.
Size(),
285 "invalid boundary marker for boundary face integrator #" 286 << k <<
", counting from zero");
287 for (
int i = 0; i < bdr_attr_marker.
Size(); i++)
289 bdr_attr_marker[i] |= bdr_marker[i];
293 for (
int i = 0; i < mesh->
GetNBE(); i++)
296 if (bdr_attr_marker[bdr_attr-1] == 0) {
continue; }
301 fes -> GetElementVDofs (tr -> Elem1No, vdofs);
329 fes -> GetElementVDofs (tr -> Elem1No, vdofs);
331 fes -> GetElementVDofs (tr -> Elem2No, vdofs2);
352 MFEM_ASSERT(v.
Size() >= v_offset +
f->GetVSize(),
"");
374 for (
int i = 0; i < centers.Width(); i++)
378 MFEM_VERIFY(center.
Size() == sdim,
379 "Point dim " << center.
Size() <<
380 " does not match space dim " << sdim);
393 if (elem_id < 0) {
continue; }
397 Trans.SetIntPoint(&ip);
bool IsVariableOrder() const
Returns true if the space contains elements of varying polynomial orders.
int GetBdrElementEdgeIndex(int i) const
int GetNumFaces() const
Return the number of faces (3D), edges (2D) or vertices (1D).
void SetSize(int s)
Resize the vector to size s.
virtual void UseDevice(bool use_dev) const
Enable execution of Vector operations using the mfem::Device.
int Size() const
Returns the size of the vector.
T Max() const
Find the maximal element in the array, using the comparison operator < for class T.
Data type dense matrix using column-major storage.
bool UsesTensorBasis(const FiniteElementSpace &fes)
Return true if the mesh contains only one topology and the elements are tensor elements.
FaceElementTransformations * GetInteriorFaceTransformations(int FaceNo)
See GetFaceElementTransformations().
int GetNBE() const
Returns number of boundary elements.
virtual const FiniteElement * GetFE(int i) const
Returns pointer to the FiniteElement in the FiniteElementCollection associated with i'th element in t...
int GetNFbyType(FaceType type) const
Returns the number of faces according to the requested type.
Vector & operator=(const double *v)
Copy Size() entries from v.
int GetAttribute(int i) const
Return the attribute of element i.
double f(const Vector &xvec)
int Append(const T &el)
Append element 'el' to array, resize if necessary.
FaceElementTransformations * GetBdrFaceTransformations(int BdrElemNo)
void AddElementVector(const Array< int > &dofs, const Vector &elemvect)
Add elements of the elemvect Vector to the entries listed in dofs. Negative dof values cause the -dof...
DofTransformation * GetElementVDofs(int i, Array< int > &vdofs) const
Returns indexes of degrees of freedom in array dofs for i'th element.
int GetBdrAttribute(int i) const
Return the attribute of boundary element i.
Mesh * GetMesh() const
Returns the mesh.
Array< int > bdr_attributes
A list of all unique boundary attributes used by the Mesh.
Class FiniteElementSpace - responsible for providing FEM view of the mesh, mainly managing the set of...
void GetColumnReference(int c, Vector &col)
Abstract class for integrators that support delta coefficients.
int SpaceDimension() const
NURBSExtension * NURBSext
Optional NURBS mesh extension.
Class for integration point with weight.
int GetNBE() const
Returns number of boundary elements in the mesh.
int GetVSize() const
Return the number of vector dofs, i.e. GetNDofs() x GetVDim().
int Size() const
Return the logical size of the array.
FaceInformation GetFaceInformation(int f) const
virtual bool UseDevice() const
Return the device flag of the Memory object used by the Vector.
virtual int FindPoints(DenseMatrix &point_mat, Array< int > &elem_ids, Array< IntegrationPoint > &ips, bool warn=true, InverseElementTransformation *inv_trans=NULL)
Find the ids of the elements that contain the given points, and their corresponding reference coordin...
void MakeRef(Vector &base, int offset, int size)
Reset the Vector to be a reference to a sub-vector of base.
bool IsDelta() const
Returns true if the derived class instance uses a delta coefficient.
const FiniteElement * GetBE(int i) const
Returns pointer to the FiniteElement in the FiniteElementCollection associated with i'th boundary fac...
Array< int > attributes
A list of all unique element attributes used by the Mesh.
ElementTransformation * GetElementTransformation(int i) const
Returns ElementTransformation for the i-th element.