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; }
104 void Init(
bool symmetric,
bool block_diagonal);
~StaticCondensation()
Destroy a StaticCondensation object.
bool ReducesTrueVSize() const
void ReduceRHS(const Vector &b, Vector &sc_b) const
ParFiniteElementSpace * GetParTraceFESpace()
Return a pointer to the parallel reduced/trace FE space.
Abstract parallel finite element space.
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.
HypreParMatrix & GetParallelMatrix()
Return the parallel Schur complement matrix.
int GetNPrDofs() const
Return the number of vector private dofs.
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.
virtual int GetTrueVSize()
Return the number of vector true (conforming) dofs.
FiniteElementSpace * GetTraceFESpace()
Return a pointer to the reduced/trace FE space.
void AssembleMatrix(int el, const DenseMatrix &elmat)
bool HasEliminatedBC() const
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.
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