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.