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.