G+Smo  23.12.0
Geometry + Simulation Modules
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
gsXBraidMultigridBase< T > Struct Template Referenceabstract

Detailed Description

template<class T>
struct gismo::gsXBraidMultigridBase< T >

The p-multigrid base class provides the basic methods (smoothing, prolongation, restriction) for implementing p-multigrid methods.

+ Inheritance diagram for gsXBraidMultigridBase< T >:
+ Collaboration diagram for gsXBraidMultigridBase< T >:

Public Member Functions

virtual gsXBraidMultigridBasecompute (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)
 

Member Function Documentation

virtual gsXBraidMultigridBase& compute ( const gsSparseMatrix< T > &  mat,
const T  tstep,
const int &  numDegree,
index_t  typeMethod 
)
inlinevirtual

Set-up p-multigrid solver

virtual gsMatrix<T> solveWithGuess ( const gsMatrix< T > &  b,
const gsMatrix< T > &  x0 
)
inlinevirtual

Apply p-multigrid solver to given right-hand side on level l