MFEM v4.7.0
Finite element discretization library
Loading...
Searching...
No Matches
mfem::ComplexBlockStaticCondensation Class Reference

Class that performs static condensation of interior dofs for multiple FE spaces for complex systems (see BlockStaticCondensation). It's used by the class ComplexDPGWeakForm. More...

#include <complexstaticcond.hpp>

Public Member Functions

 ComplexBlockStaticCondensation (Array< FiniteElementSpace * > &fes_)
 
 ~ComplexBlockStaticCondensation ()
 
void AssembleReducedSystem (int el, ComplexDenseMatrix &elmat, Vector &elvect_r, Vector &elvect_i)
 
void Finalize (int skip_zeros=0)
 Finalize the construction of the Schur complement matrix.
 
void SetEssentialTrueDofs (const Array< int > &ess_tdof_list)
 Determine and save internally essential reduced true dofs.
 
void EliminateReducedTrueDofs (const Array< int > &ess_rtdof_list, Matrix::DiagonalPolicy dpolicy)
 Eliminate the given reduced true dofs from the Schur complement matrix S.
 
bool HasEliminatedBC () const
 
BlockMatrixGetSchurMatrix_r ()
 Return the serial Schur complement matrix.
 
BlockMatrixGetSchurMatrix_i ()
 
ComplexOperatorGetSchurComplexOperator ()
 
BlockMatrixGetSchurMatrixElim_r ()
 Return the eliminated part of the serial Schur complement matrix.
 
BlockMatrixGetSchurMatrixElim_i ()
 
BlockOperatorGetParallelSchurMatrix_r ()
 Return the parallel Schur complement matrix.
 
BlockOperatorGetParallelSchurMatrix_i ()
 
BlockOperatorGetParallelSchurMatrixElim_r ()
 Return the eliminated part of the parallel Schur complement matrix.
 
BlockOperatorGetParallelSchurMatrixElim_i ()
 
void ParallelAssemble (BlockMatrix *m_r, BlockMatrix *m_i)
 
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.
 
void ConvertListToReducedTrueDofs (const Array< int > &ess_tdof_list, Array< int > &ess_rtdof_list) const
 
void ComputeSolution (const Vector &sc_sol, Vector &sol) const
 

Detailed Description

Class that performs static condensation of interior dofs for multiple FE spaces for complex systems (see BlockStaticCondensation). It's used by the class ComplexDPGWeakForm.

Definition at line 24 of file complexstaticcond.hpp.

Constructor & Destructor Documentation

◆ ComplexBlockStaticCondensation()

mfem::ComplexBlockStaticCondensation::ComplexBlockStaticCondensation ( Array< FiniteElementSpace * > & fes_)

Definition at line 17 of file complexstaticcond.cpp.

◆ ~ComplexBlockStaticCondensation()

mfem::ComplexBlockStaticCondensation::~ComplexBlockStaticCondensation ( )

Definition at line 1132 of file complexstaticcond.cpp.

Member Function Documentation

◆ AssembleReducedSystem()

void mfem::ComplexBlockStaticCondensation::AssembleReducedSystem ( int el,
ComplexDenseMatrix & elmat,
Vector & elvect_r,
Vector & elvect_i )

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 444 of file complexstaticcond.cpp.

◆ ComputeSolution()

void mfem::ComplexBlockStaticCondensation::ComputeSolution ( const Vector & sc_sol,
Vector & sol ) const

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 1024 of file complexstaticcond.cpp.

◆ ConvertListToReducedTrueDofs()

void mfem::ComplexBlockStaticCondensation::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.

◆ EliminateReducedTrueDofs()

void mfem::ComplexBlockStaticCondensation::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 872 of file complexstaticcond.cpp.

◆ Finalize()

void mfem::ComplexBlockStaticCondensation::Finalize ( int skip_zeros = 0)

Finalize the construction of the Schur complement matrix.

Definition at line 731 of file complexstaticcond.cpp.

◆ FormSystemMatrix()

void mfem::ComplexBlockStaticCondensation::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 745 of file complexstaticcond.cpp.

◆ GetParallelSchurMatrix_i()

BlockOperator & mfem::ComplexBlockStaticCondensation::GetParallelSchurMatrix_i ( )
inline

Definition at line 183 of file complexstaticcond.hpp.

◆ GetParallelSchurMatrix_r()

BlockOperator & mfem::ComplexBlockStaticCondensation::GetParallelSchurMatrix_r ( )
inline

Return the parallel Schur complement matrix.

Definition at line 182 of file complexstaticcond.hpp.

◆ GetParallelSchurMatrixElim_i()

BlockOperator & mfem::ComplexBlockStaticCondensation::GetParallelSchurMatrixElim_i ( )
inline

Definition at line 187 of file complexstaticcond.hpp.

◆ GetParallelSchurMatrixElim_r()

BlockOperator & mfem::ComplexBlockStaticCondensation::GetParallelSchurMatrixElim_r ( )
inline

Return the eliminated part of the parallel Schur complement matrix.

Definition at line 186 of file complexstaticcond.hpp.

◆ GetSchurComplexOperator()

ComplexOperator & mfem::ComplexBlockStaticCondensation::GetSchurComplexOperator ( )
inline

Definition at line 156 of file complexstaticcond.hpp.

◆ GetSchurMatrix_i()

BlockMatrix & mfem::ComplexBlockStaticCondensation::GetSchurMatrix_i ( )
inline

Definition at line 155 of file complexstaticcond.hpp.

◆ GetSchurMatrix_r()

BlockMatrix & mfem::ComplexBlockStaticCondensation::GetSchurMatrix_r ( )
inline

Return the serial Schur complement matrix.

Definition at line 154 of file complexstaticcond.hpp.

◆ GetSchurMatrixElim_i()

BlockMatrix & mfem::ComplexBlockStaticCondensation::GetSchurMatrixElim_i ( )
inline

Definition at line 178 of file complexstaticcond.hpp.

◆ GetSchurMatrixElim_r()

BlockMatrix & mfem::ComplexBlockStaticCondensation::GetSchurMatrixElim_r ( )
inline

Return the eliminated part of the serial Schur complement matrix.

Definition at line 177 of file complexstaticcond.hpp.

◆ HasEliminatedBC()

bool mfem::ComplexBlockStaticCondensation::HasEliminatedBC ( ) const
inline

Definition at line 143 of file complexstaticcond.hpp.

◆ ParallelAssemble()

void mfem::ComplexBlockStaticCondensation::ParallelAssemble ( BlockMatrix * m_r,
BlockMatrix * m_i )

Definition at line 615 of file complexstaticcond.cpp.

◆ ReduceSolution()

void mfem::ComplexBlockStaticCondensation::ReduceSolution ( const Vector & sol,
Vector & sc_sol ) const

Restrict a solution vector on the full FE space dofs to a vector on the reduced/trace true FE space dofs.

Definition at line 905 of file complexstaticcond.cpp.

◆ ReduceSystem()

void mfem::ComplexBlockStaticCondensation::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 946 of file complexstaticcond.cpp.

◆ SetEssentialTrueDofs()

void mfem::ComplexBlockStaticCondensation::SetEssentialTrueDofs ( const Array< int > & ess_tdof_list)

Determine and save internally essential reduced true dofs.

Definition at line 862 of file complexstaticcond.cpp.


The documentation for this class was generated from the following files: