12 #ifndef MFEM_STATIC_CONDENSATION
13 #define MFEM_STATIC_CONDENSATION
15 #include "../config/config.hpp"
78 bool Parallel()
const {
return (tr_pfes != NULL); }
80 bool Parallel()
const {
return false; }
106 void Init(
bool symmetric,
bool block_diagonal);
147 return S_e || pS_e.
Ptr();
193 int copy_interior = 0)
const;
void SetOperatorType(Operator::Type tid)
Set the operator type id for the parallel reduced matrix/operator.
~StaticCondensation()
Destroy a StaticCondensation object.
bool ReducesTrueVSize() const
void EliminateReducedTrueDofs(int keep_diagonal)
Eliminate the internal reduced true dofs (set using SetEssentialTrueDofs()) from the Schur complement...
void ReduceRHS(const Vector &b, Vector &sc_b) const
Pointer to an Operator of a specified type.
ParFiniteElementSpace * GetParTraceFESpace()
Return a pointer to the parallel reduced/trace FE space.
Data type dense matrix using column-major storage.
void ReduceSystem(Vector &x, Vector &b, Vector &X, Vector &B, int copy_interior=0) const
Set the reduced solution X and r.h.s B vectors from the full linear system solution x and r...
Abstract parallel finite element space.
void GetParallelMatrixElim(OperatorHandle &S_e_h) const
Return the eliminated part of the parallel Schur complement matrix in the format specified by SetOper...
StaticCondensation(FiniteElementSpace *fespace)
Construct a StaticCondensation object.
void ComputeSolution(const Vector &b, const Vector &sc_sol, Vector &sol) const
int GetNExDofs() const
Return the number of vector exposed/reduced dofs.
static void MarkerToList(const Array< int > &marker, Array< int > &list)
Convert a Boolean marker array to a list containing all marked indices.
OpType * Is() const
Return the Operator pointer dynamically cast to a specified OpType.
HypreParMatrix & GetParallelMatrix()
Return the parallel Schur complement matrix.
virtual int GetTrueVSize() const
Return the number of vector true (conforming) dofs.
Operator * Ptr() const
Access the underlying Operator pointer.
Type
Enumeration defining IDs for some classes derived from Operator.
int GetNPrDofs() const
Return the number of vector private dofs.
void GetParallelMatrix(OperatorHandle &S_h) const
Return the parallel Schur complement matrix in the format specified by SetOperatorType().
void Finalize()
Finalize the construction of the Schur complement matrix.
void AssembleBdrMatrix(int el, const DenseMatrix &elmat)
void EliminateReducedTrueDofs(const Array< int > &ess_rtdof_list, int keep_diagonal)
Eliminate the given reduced true dofs from the Schur complement matrix S.
HypreParMatrix & GetParallelMatrixElim()
Return the eliminated part of the parallel Schur complement matrix.
FiniteElementSpace * GetTraceFESpace()
Return a pointer to the reduced/trace FE space.
void AssembleMatrix(int el, const DenseMatrix &elmat)
bool HasEliminatedBC() const
Return true if essential boundary conditions have been eliminated from the Schur complement matrix...
static void ListToMarker(const Array< int > &list, int marker_size, Array< int > &marker, int mark_val=-1)
SparseMatrix & GetMatrix()
Return the serial Schur complement matrix.
void ReduceSolution(const Vector &sol, Vector &sc_sol) const
SparseMatrix & GetMatrixElim()
Return the eliminated part of the serial Schur complement matrix.
void SetEssentialTrueDofs(const Array< int > &ess_tdof_list)
Determine and save internally essential reduced true dofs.
Wrapper for hypre's ParCSR matrix class.
void Init(bool symmetric, bool block_diagonal)
void ConvertListToReducedTrueDofs(const Array< int > &ess_tdof_list, Array< int > &ess_rtdof_list) const
void ConvertMarkerToReducedTrueDofs(const Array< int > &ess_tdof_marker, Array< int > &ess_rtdof_marker) const
void SetType(Operator::Type tid)
Invoke Clear() and set a new type id.