MFEM
v4.6.0
Finite element discretization library

Class that performs static condensation of interior dofs for multiple FE spaces. This class is used in class DPGWeakFrom. It is suitable for systems resulting from the discretization of multiple FE spaces. It eliminates the dofs associated with the interior of the elements and returns the reduced system which contains only the interfacial dofs. The ordering of the dofs in the matrix is implied by the ordering given by the FE spaces, but there is no assumption on the ordering of the FE spaces. This class handles both serial and parallel FE spaces. More...
#include <blockstaticcond.hpp>
Public Member Functions  
BlockStaticCondensation (Array< FiniteElementSpace *> &fes_)  
~BlockStaticCondensation ()  
void  AssembleReducedSystem (int el, DenseMatrix &elmat, Vector &elvect) 
void  Finalize (int skip_zeros=0) 
Finalize the construction of the Schur complement matrix. More...  
void  SetEssentialTrueDofs (const Array< int > &ess_tdof_list) 
Determine and save internally essential reduced true dofs. More...  
void  EliminateReducedTrueDofs (const Array< int > &ess_rtdof_list, Matrix::DiagonalPolicy dpolicy) 
Eliminate the given reduced true dofs from the Schur complement matrix S. More...  
bool  HasEliminatedBC () const 
BlockMatrix &  GetSchurMatrix () 
Return the serial Schur complement matrix. More...  
BlockMatrix &  GetSchurMatrixElim () 
Return the eliminated part of the serial Schur complement matrix. More...  
BlockOperator &  GetParallelSchurMatrix () 
Return the parallel Schur complement matrix. More...  
BlockOperator &  GetParallelSchurMatrixElim () 
Return the eliminated part of the parallel Schur complement matrix. More...  
void  ParallelAssemble (BlockMatrix *m) 
void  FormSystemMatrix (Operator::DiagonalPolicy diag_policy) 
void  ReduceSolution (const Vector &sol, Vector &sc_sol) 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.h.s. b vectors. This method should be called after the internal reduced essential dofs have been set using SetEssentialTrueDofs() and both the Schur complement and its eliminated part have been finalized. More...  
void  ConvertListToReducedTrueDofs (const Array< int > &ess_tdof_list, Array< int > &ess_rtdof_list) const 
void  ComputeSolution (const Vector &sc_sol, Vector &sol) const 
Class that performs static condensation of interior dofs for multiple FE spaces. This class is used in class DPGWeakFrom. It is suitable for systems resulting from the discretization of multiple FE spaces. It eliminates the dofs associated with the interior of the elements and returns the reduced system which contains only the interfacial dofs. The ordering of the dofs in the matrix is implied by the ordering given by the FE spaces, but there is no assumption on the ordering of the FE spaces. This class handles both serial and parallel FE spaces.
Definition at line 28 of file blockstaticcond.hpp.
mfem::BlockStaticCondensation::BlockStaticCondensation  (  Array< FiniteElementSpace *> &  fes_  ) 
Definition at line 17 of file blockstaticcond.cpp.
mfem::BlockStaticCondensation::~BlockStaticCondensation  (  ) 
Definition at line 958 of file blockstaticcond.cpp.
void mfem::BlockStaticCondensation::AssembleReducedSystem  (  int  el, 
DenseMatrix &  elmat,  
Vector &  elvect  
) 
Assemble the contribution to the Schur complement from the given element matrix 'elmat'; save the other blocks internally: A_bb_inv, A_bi, and A_bi.
Definition at line 408 of file blockstaticcond.cpp.
Given a solution of the reduced system 'sc_sol' and the RHS 'b' for the full linear system, compute the solution of the full system 'sol'.
Definition at line 884 of file blockstaticcond.cpp.
void mfem::BlockStaticCondensation::ConvertListToReducedTrueDofs  (  const Array< int > &  ess_tdof_list, 
Array< int > &  ess_rtdof_list  
)  const 
Restrict a list of true FE space dofs to a list of reduced/trace true FE space dofs.
void mfem::BlockStaticCondensation::EliminateReducedTrueDofs  (  const Array< int > &  ess_rtdof_list, 
Matrix::DiagonalPolicy  dpolicy  
) 
Eliminate the given reduced true dofs from the Schur complement matrix S.
Definition at line 780 of file blockstaticcond.cpp.
void mfem::BlockStaticCondensation::Finalize  (  int  skip_zeros = 0  ) 
Finalize the construction of the Schur complement matrix.
Definition at line 651 of file blockstaticcond.cpp.
void mfem::BlockStaticCondensation::FormSystemMatrix  (  Operator::DiagonalPolicy  diag_policy  ) 
Form the global reduced system matrix using the given diag_policy. This method can be called after Assemble() is called.
Definition at line 657 of file blockstaticcond.cpp.

inline 
Return the parallel Schur complement matrix.
Definition at line 155 of file blockstaticcond.hpp.

inline 
Return the eliminated part of the parallel Schur complement matrix.
Definition at line 158 of file blockstaticcond.hpp.

inline 
Return the serial Schur complement matrix.
Definition at line 148 of file blockstaticcond.hpp.

inline 
Return the eliminated part of the serial Schur complement matrix.
Definition at line 151 of file blockstaticcond.hpp.

inline 
Definition at line 137 of file blockstaticcond.hpp.
void mfem::BlockStaticCondensation::ParallelAssemble  (  BlockMatrix *  m  ) 
Definition at line 570 of file blockstaticcond.cpp.
Restrict a solution vector on the full FE space dofs to a vector on the reduced/trace true FE space dofs.
Definition at line 807 of file blockstaticcond.cpp.
void mfem::BlockStaticCondensation::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.h.s. b
vectors. This method should be called after the internal reduced essential dofs have been set using SetEssentialTrueDofs() and both the Schur complement and its eliminated part have been finalized.
Definition at line 835 of file blockstaticcond.cpp.
void mfem::BlockStaticCondensation::SetEssentialTrueDofs  (  const Array< int > &  ess_tdof_list  ) 
Determine and save internally essential reduced true dofs.
Definition at line 770 of file blockstaticcond.cpp.