12 #ifndef MFEM_RESTRICTION
13 #define MFEM_RESTRICTION
15 #include "../linalg/operator.hpp"
16 #include "../mesh/mesh.hpp"
21 class FiniteElementSpace;
36 static const int MaxNbNbr = 16;
181 const int face_id2,
const int orientation,
182 const int size1d,
const int index);
186 #endif //MFEM_RESTRICTION
void Mult(const Vector &x, Vector &y) const
Operator application: y=A(x).
void MultTransposeUnsigned(const Vector &x, Vector &y) const
Compute MultTranspose without applying signs based on DOF orientations.
Operator that extracts Face degrees of freedom.
virtual void FillI(SparseMatrix &mat, SparseMatrix &face_mat) const
Array< int > gather_indices
void FillJAndData(const Vector &ea_data, SparseMatrix &mat) const
virtual void Mult(const Vector &x, Vector &y) const
Operator application: y=A(x).
void AddFaceMatricesToElementMatrices(Vector &fea_data, Vector &ea_data) const
This methods adds the DG face matrices to the element matrices.
H1FaceRestriction(const FiniteElementSpace &, const ElementDofOrdering, const FaceType)
void MultTranspose(const Vector &x, Vector &y) const
Action of the transpose operator: y=A^t(x). The default behavior in class Operator is to generate an ...
Array< int > gather_indices
L2ElementRestriction(const FiniteElementSpace &)
const FiniteElementSpace & fes
L2FaceRestriction(const FiniteElementSpace &, const FaceType, const L2FaceValues m=L2FaceValues::DoubleValued)
int FillI(SparseMatrix &mat) const
void MultTranspose(const Vector &x, Vector &y) const
Action of the transpose operator: y=A^t(x). The default behavior in class Operator is to generate an ...
void FillI(SparseMatrix &mat) const
Operator that extracts Face degrees of freedom.
void BooleanMask(Vector &y) const
Fills the E-vector y with boolean values 0.0 and 1.0 such that each each entry of the L-vector is uni...
const FiniteElementSpace & fes
void MultUnsigned(const Vector &x, Vector &y) const
Compute Mult without applying signs based on DOF orientations.
ElementRestriction(const FiniteElementSpace &, ElementDofOrdering)
int ToLexOrdering(const int dim, const int face_id, const int size1d, const int index)
const FiniteElementSpace & fes
void Mult(const Vector &x, Vector &y) const
Operator application: y=A(x).
Operator that converts FiniteElementSpace L-vectors to E-vectors.
Class FiniteElementSpace - responsible for providing FEM view of the mesh, mainly managing the set of...
void FillJAndData(const Vector &ea_data, SparseMatrix &mat) const
void Mult(const Vector &x, Vector &y) const
Operator application: y=A(x).
void GetFaceDofs(const int dim, const int face_id, const int dof1d, Array< int > &faceMap)
void MultTranspose(const Vector &x, Vector &y) const
Action of the transpose operator: y=A^t(x). The default behavior in class Operator is to generate an ...
Array< int > scatter_indices1
ElementDofOrdering
Constants describing the possible orderings of the DOFs in one element.
int index(int i, int j, int nx, int ny)
virtual void FillJAndData(const Vector &ea_data, SparseMatrix &mat, SparseMatrix &face_mat) const
int PermuteFaceL2(const int dim, const int face_id1, const int face_id2, const int orientation, const int size1d, const int index)
Operator that converts L2 FiniteElementSpace L-vectors to E-vectors.
Array< int > scatter_indices
Array< int > scatter_indices2
void FillSparseMatrix(const Vector &mat_ea, SparseMatrix &mat) const
Fill a Sparse Matrix with Element Matrices.
void MultTranspose(const Vector &x, Vector &y) const
Action of the transpose operator: y=A^t(x). The default behavior in class Operator is to generate an ...