12#ifndef MFEM_BLOCK_STATIC_CONDENSATION 
   13#define MFEM_BLOCK_STATIC_CONDENSATION 
   33   Mesh * mesh = 
nullptr;
 
   34   bool parallel = 
false;
 
   73   bool Parallel()
 const { 
return parallel; }
 
   78   void GetReducedElementIndicesAndOffsets(
int el, 
Array<int> & tr_idx,
 
   82   void GetReducedElementVDofs(
int el, 
Array<int> & rdofs) 
const;
 
   83   void GetElementVDofs(
int el, 
Array<int> & vdofs) 
const;
 
   88   void GetLocalSchurComplement(
int el, 
const Array<int> & tr_idx,
 
   93   void ComputeOffsets();
 
   95   void BuildProlongation();
 
   97   void BuildParallelProlongation();
 
  102   void FillEssTdofLists(
const Array<int> & ess_tdof_list);
 
  104   void ConformingAssemble(
int skip_zeros);
 
  108   void ConvertMarkerToReducedTrueDofs(
Array<int> & tdof_marker,
 
  177                     int copy_interior = 0) 
const;
 
 
A class to handle Block systems in a matrix-free implementation.
Class that performs static condensation of interior dofs for multiple FE spaces. This class is used i...
~BlockStaticCondensation()
BlockMatrix & GetSchurMatrix()
Return the serial Schur complement matrix.
void ConvertListToReducedTrueDofs(const Array< int > &ess_tdof_list, Array< int > &ess_rtdof_list) const
void FormSystemMatrix(Operator::DiagonalPolicy diag_policy)
void EliminateReducedTrueDofs(const Array< int > &ess_rtdof_list, Matrix::DiagonalPolicy dpolicy)
Eliminate the given reduced true dofs from the Schur complement matrix S.
void SetEssentialTrueDofs(const Array< int > &ess_tdof_list)
Determine and save internally essential reduced true dofs.
BlockMatrix & GetSchurMatrixElim()
Return the eliminated part of the serial Schur complement matrix.
BlockStaticCondensation(Array< FiniteElementSpace * > &fes_)
void ParallelAssemble(BlockMatrix *m)
BlockOperator & GetParallelSchurMatrix()
Return the parallel Schur complement matrix.
bool HasEliminatedBC() const
void ReduceSystem(Vector &x, 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....
void ComputeSolution(const Vector &sc_sol, Vector &sol) const
void ReduceSolution(const Vector &sol, Vector &sc_sol) const
BlockOperator & GetParallelSchurMatrixElim()
Return the eliminated part of the parallel Schur complement matrix.
void Finalize(int skip_zeros=0)
Finalize the construction of the Schur complement matrix.
void AssembleReducedSystem(int el, DenseMatrix &elmat, Vector &elvect)
A class to handle Vectors in a block fashion.
Data type dense matrix using column-major storage.
A class to initialize the size of a Tensor.
DiagonalPolicy
Defines operator diagonal policy upon elimination of rows and/or columns.