12 #ifndef MFEM_RESTRICTION
13 #define MFEM_RESTRICTION
15 #include "../linalg/operator.hpp"
16 #include "../mesh/mesh.hpp"
21 class FiniteElementSpace;
32 static const int MaxNbNbr = 16;
274 const bool keep_nbr_block =
false)
const;
291 const int face_id2,
const int orientation,
292 const int size1d,
const int index);
296 #endif //MFEM_RESTRICTION
void Mult(const Vector &x, Vector &y) const
Operator application: y=A(x).
void Mult(const Vector &x, Vector &y) const override
Extract the face degrees of freedom from x into y.
void MultTranspose(const Vector &x, Vector &y) const override
Set the face degrees of freedom in the element degrees of freedom y to the values given in x...
void MultTransposeUnsigned(const Vector &x, Vector &y) const
Compute MultTranspose without applying signs based on DOF orientations.
void Mult(const Vector &x, Vector &y) const override=0
Extract the face degrees of freedom from x into y.
Operator that extracts Face degrees of freedom for H1 FiniteElementSpaces.
virtual void FillJAndData(const Vector &ea_data, SparseMatrix &mat, const bool keep_nbr_block=false) const
Array< int > gather_indices
void AddMultTranspose(const Vector &x, Vector &y) const override
Add the face degrees of freedom x to the element degrees of freedom y.
void FillJAndData(const Vector &ea_data, SparseMatrix &mat) const
void AddFaceMatricesToElementMatrices(Vector &fea_data, Vector &ea_data) const
This methods adds the DG face matrices to the element matrices.
void MultLeftInverse(const Vector &x, Vector &y) const
FaceRestriction(int h, int w)
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 on L2 FiniteElementSpaces.
void Mult(const Vector &x, Vector &y) const override
Extract the face degrees of freedom from x into y.
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
H1FaceRestriction(const FiniteElementSpace &fes, const ElementDofOrdering ordering, const FaceType type)
Constructor for a H1FaceRestriction.
void AddMultTranspose(const Vector &x, Vector &y) const override
Add the face degrees of freedom x to the element degrees of freedom y.
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
virtual void AddMultTranspose(const Vector &x, Vector &y) const =0
Add the face degrees of freedom x to the element degrees of freedom y.
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 GetFaceDofs(const int dim, const int face_id, const int dof1d, Array< int > &faceMap)
virtual ~FaceRestriction()
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)
int PermuteFaceL2(const int dim, const int face_id1, const int face_id2, const int orientation, const int size1d, const int index)
Base class for operators that extracts Face degrees of freedom.
Operator that converts L2 FiniteElementSpace L-vectors to E-vectors.
Array< int > scatter_indices
Array< int > scatter_indices2
virtual void FillI(SparseMatrix &mat, const bool keep_nbr_block=false) const
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 ...