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);
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; }
int GetNFbyType(FaceType type) const
Returns the number of faces according to the requested type.
int Size() const
Return the logical size of the array.
int GetVSize() const
Return the number of vector dofs, i.e. GetNDofs() x GetVDim().
FaceInformation GetFaceInformation(int f) const
int GetBdrAttribute(int i) const
Return the attribute of boundary element i.
bool IsVariableOrder() const
Returns true if the space contains elements of varying polynomial orders.
void SetSize(int s)
Resize the vector to size s.
int GetNBE() const
Returns number of boundary elements.
Data type dense matrix using column-major storage.
int Size() const
Returns the size of the vector.
int GetBdrElementEdgeIndex(int i) const
bool UsesTensorBasis(const FiniteElementSpace &fes)
Return true if the mesh contains only one topology and the elements are tensor elements.
FaceElementTransformations * GetInteriorFaceTransformations(int FaceNo)
virtual void UseDevice(bool use_dev) const
Enable execution of Vector operations using the mfem::Device.
Vector & operator=(const double *v)
Copy Size() entries from v.
int GetNumFaces() const
Return the number of faces (3D), edges (2D) or vertices (1D).
DofTransformation * GetElementVDofs(int i, Array< int > &vdofs) const
Returns indexes of degrees of freedom in array dofs for i'th element.
double f(const Vector &xvec)
int GetNBE() const
Returns number of boundary elements in the mesh.
int Append(const T &el)
Append element 'el' to array, resize if necessary.
Mesh * GetMesh() const
Returns the mesh.
T Max() const
Find the maximal element in the array, using the comparison operator < for class T.
FaceElementTransformations * GetBdrFaceTransformations(int BdrElemNo)
bool IsDelta() const
Returns true if the derived class instance uses a delta coefficient.
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...
int SpaceDimension() const
ElementTransformation * GetElementTransformation(int i) const
Returns ElementTransformation for the i-th element.
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.
NURBSExtension * NURBSext
Optional NURBS mesh extension.
Class for integration point with weight.
virtual const FiniteElement * GetFE(int i) const
Returns pointer to the FiniteElement in the FiniteElementCollection associated with i'th element in t...
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.
virtual bool UseDevice() const
Return the device flag of the Memory object used by the Vector.
const FiniteElement * GetBE(int i) const
Returns pointer to the FiniteElement in the FiniteElementCollection associated with i'th boundary fac...
int GetAttribute(int i) const
Return the attribute of element i.
Array< int > attributes
A list of all unique element attributes used by the Mesh.