G+Smo
24.08.0
Geometry + Simulation Modules
|
The p-multigrid base class provides the basic methods (smoothing, prolongation, restriction) for implementing p-multigrid methods.
Public Member Functions | |
virtual gsXBraidMultigridBase & | compute (const gsSparseMatrix< T > &mat, const T tstep, const int &numDegree, index_t typeMethod) |
gsXBraidMultigridBase () | |
Constructor. | |
virtual void | postsmoothing (const gsMatrix< T > &rhs, gsMatrix< T > &x, const int &numLevels, gsMatrix< T > &fineCorr, gsMatrix< T > &postRes, const gsMatrix< T > &hp)=0 |
Apply fixed number of smoothing steps (pure virtual method) | |
virtual void | presmoothing (const gsMatrix< T > &rhs, gsMatrix< T > &x, const int &numLevels, gsMatrix< T > &fineRes, const gsMatrix< T > &hp)=0 |
Apply fixed number of smoothing steps (pure virtual method) | |
virtual void | prolongation (const gsMatrix< T > &Xcoarse, gsMatrix< T > &Xfine, const int &numLevels, std::vector< memory::shared_ptr< gsMultiBasis< T > > > m_bases, gsBoundaryConditions< T > bcInfo, gsMultiPatch< T > mp, std::vector< gsSparseMatrix< T > > &m_prolongation_P, std::vector< gsSparseMatrix< T > > &m_restriction_P, std::vector< gsMatrix< T > > &m_prolongation_M, std::vector< gsMatrix< T > > &m_restriction_M, std::vector< gsSparseMatrix< T > > &m_prolongation_H, std::vector< gsSparseMatrix< T > > &m_restriction_H, const gsMatrix< T > &hp) |
Prolongate coarse space function to fine space. | |
virtual gsMatrix< T > | prolongation_M (const int &numLevels, std::vector< memory::shared_ptr< gsMultiBasis< T > > > m_bases)=0 |
Prolongate coarse space function to fine space. | |
virtual gsSparseMatrix< T > | prolongation_P (const int &numLevels, std::vector< memory::shared_ptr< gsMultiBasis< T > > > m_bases)=0 |
Prolongate coarse space function to fine space. | |
virtual void | restriction (const gsMatrix< T > &Xfine, gsMatrix< T > &Xcoarse, const int &numLevels, std::vector< memory::shared_ptr< gsMultiBasis< T > > > m_bases, gsBoundaryConditions< T > bcInfo, gsMultiPatch< T > mp, std::vector< gsSparseMatrix< T > > &m_prolongation_P, std::vector< gsSparseMatrix< T > > &m_restriction_P, std::vector< gsMatrix< T > > &m_prolongation_M, std::vector< gsMatrix< T > > &m_restriction_M, std::vector< gsSparseMatrix< T > > &m_prolongation_H, std::vector< gsSparseMatrix< T > > &m_restriction_H, const gsMatrix< T > &hp) |
Restrict fine space function to coarse space. | |
virtual gsMatrix< T > | restriction_M (const int &numLevels, std::vector< memory::shared_ptr< gsMultiBasis< T > > > m_bases)=0 |
Prolongate coarse space function to fine space. | |
virtual gsSparseMatrix< T > | restriction_P (const int &numLevels, std::vector< memory::shared_ptr< gsMultiBasis< T > > > m_bases)=0 |
Prolongate coarse space function to fine space. | |
virtual void | solvecoarse (const gsMatrix< T > &rhs, gsMatrix< T > &x, const int &numLevels)=0 |
Apply coarse solver (pure virtual method) | |
virtual void | solveMG (const gsMatrix< T > &rhs, std::vector< memory::shared_ptr< gsMultiBasis< T > > > m_bases, gsMatrix< T > &x, const int &numLevels, gsBoundaryConditions< T > bcInfo, gsMultiPatch< T > mp, std::vector< gsSparseMatrix< T > > &m_prolongation_P, std::vector< gsSparseMatrix< T > > &m_restriction_P, std::vector< gsMatrix< T > > &m_prolongation_M, std::vector< gsMatrix< T > > &m_restriction_M, std::vector< gsSparseMatrix< T > > &m_prolongation_H, std::vector< gsSparseMatrix< T > > &m_restriction_H, const gsMatrix< T > &hp) |
Apply p-multigrid solver to given right-hand side on level l. | |
virtual gsMatrix< T > | solveWithGuess (const gsMatrix< T > &b, const gsMatrix< T > &x0) |
|
inlinevirtual |
Set-up p-multigrid solver