12#ifndef MFEM_COMPLEX_BLOCK_STATIC_CONDENSATION
13#define MFEM_COMPLEX_BLOCK_STATIC_CONDENSATION
29 Mesh * mesh =
nullptr;
30 bool parallel =
false;
76 bool Parallel()
const {
return parallel; }
81 void GetReduceElementIndicesAndOffsets(
int el,
Array<int> & tr_idx,
85 void GetReduceElementVDofs(
int el,
Array<int> & rdofs)
const;
86 void GetElementVDofs(
int el,
Array<int> & vdofs)
const;
99 void ComputeOffsets();
101 void BuildProlongation();
103 void BuildParallelProlongation();
108 void FillEssTdofLists(
const Array<int> & ess_tdof_list);
110 void ConformingAssemble(
int skip_zeros);
114 void ConvertMarkerToReducedTrueDofs(
Array<int> & tdof_marker,
148 return S_e_r || pS_e_r;
206 int copy_interior = 0)
const;
A class to handle Block systems in a matrix-free implementation.
A class to handle Vectors in a block fashion.
Class that performs static condensation of interior dofs for multiple FE spaces for complex systems (...
void EliminateReducedTrueDofs(const Array< int > &ess_rtdof_list, Matrix::DiagonalPolicy dpolicy)
Eliminate the given reduced true dofs from the Schur complement matrix S.
ComplexBlockStaticCondensation(Array< FiniteElementSpace * > &fes_)
void ParallelAssemble(BlockMatrix *m_r, BlockMatrix *m_i)
void Finalize(int skip_zeros=0)
Finalize the construction of the Schur complement matrix.
BlockOperator & GetParallelSchurMatrixElim_r()
Return the eliminated part of the parallel Schur complement matrix.
BlockOperator & GetParallelSchurMatrix_i()
BlockMatrix & GetSchurMatrix_i()
BlockMatrix & GetSchurMatrixElim_i()
BlockOperator & GetParallelSchurMatrix_r()
Return the parallel Schur complement matrix.
void AssembleReducedSystem(int el, ComplexDenseMatrix &elmat, Vector &elvect_r, Vector &elvect_i)
bool HasEliminatedBC() const
void FormSystemMatrix(Operator::DiagonalPolicy diag_policy)
void ConvertListToReducedTrueDofs(const Array< int > &ess_tdof_list, Array< int > &ess_rtdof_list) const
void SetEssentialTrueDofs(const Array< int > &ess_tdof_list)
Determine and save internally essential reduced true dofs.
void ComputeSolution(const Vector &sc_sol, Vector &sol) const
BlockOperator & GetParallelSchurMatrixElim_i()
BlockMatrix & GetSchurMatrix_r()
Return the serial Schur complement matrix.
~ComplexBlockStaticCondensation()
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....
ComplexOperator & GetSchurComplexOperator()
void ReduceSolution(const Vector &sol, Vector &sc_sol) const
BlockMatrix & GetSchurMatrixElim_r()
Return the eliminated part of the serial Schur complement matrix.
Specialization of the ComplexOperator built from a pair of Dense Matrices. The purpose of this specia...
Mimic the action of a complex operator using two real operators.
A class to initialize the size of a Tensor.
DiagonalPolicy
Defines operator diagonal policy upon elimination of rows and/or columns.