GEOS
Public Types | Public Member Functions | Static Public Member Functions | Protected Attributes | List of all members
geos::multiscale::LevelBuilderBase< LAI > Class Template Referenceabstract

Base class for level builder implementations. More...

#include <LevelBuilderBase.hpp>

Inheritance diagram for geos::multiscale::LevelBuilderBase< LAI >:
Inheritance graph
[legend]

Public Types

using Vector = typename LAI::ParallelVector
 Alias for vector type.
 
using Matrix = typename LAI::ParallelMatrix
 Alias for matrix type.
 
using Operator = LinearOperator< Vector >
 Alias for operator type.
 

Public Member Functions

 LevelBuilderBase (string name, LinearSolverParameters params)
 Constructor. More...
 
virtual ~LevelBuilderBase ()=default
 Destructor.
 
virtual Operator const & prolongation () const =0
 
virtual Operator const & restriction () const =0
 
virtual Matrix const & matrix () const =0
 
virtual Operator const * presmoother () const =0
 
virtual Operator const * postsmoother () const =0
 
virtual void initializeFineLevel (DomainPartition &domain, geos::DofManager const &dofManager, MPI_Comm const &comm)=0
 Initialize the finest level (level 0). More...
 
virtual void initializeCoarseLevel (LevelBuilderBase< LAI > &fineLevel, Matrix const &fineMatrix)=0
 Initialize a coarse level (levels 1 and above). More...
 
virtual void compute (Matrix const &fineMatrix)=0
 Compute the current level. More...
 
virtual std::unique_ptr< PreconditionerBase< LAI > > makeCoarseSolver () const =0
 Instantiate coarsest level solver. More...
 

Static Public Member Functions

static std::unique_ptr< LevelBuilderBase< LAI > > create (string name, LinearSolverParameters params)
 Factory interface to create level instances. More...
 

Protected Attributes

string m_name
 Level name (label)
 
LinearSolverParameters m_params
 Linear solver top-level parameters.
 

Detailed Description

template<typename LAI>
class geos::multiscale::LevelBuilderBase< LAI >

Base class for level builder implementations.

Template Parameters
LAIlinear algebra interface type

Definition at line 41 of file LevelBuilderBase.hpp.

Constructor & Destructor Documentation

◆ LevelBuilderBase()

template<typename LAI >
geos::multiscale::LevelBuilderBase< LAI >::LevelBuilderBase ( string  name,
LinearSolverParameters  params 
)
explicit

Constructor.

Parameters
namelevel name
paramssolver parameters (levels may need access to the full set of them)

Member Function Documentation

◆ compute()

template<typename LAI >
virtual void geos::multiscale::LevelBuilderBase< LAI >::compute ( Matrix const &  fineMatrix)
pure virtual

Compute the current level.

Parameters
fineMatrixthe previous (fine) level system matrix

Implemented in geos::multiscale::MsrsbLevelBuilderBase< LAI >.

◆ create()

template<typename LAI >
static std::unique_ptr< LevelBuilderBase< LAI > > geos::multiscale::LevelBuilderBase< LAI >::create ( string  name,
LinearSolverParameters  params 
)
static

Factory interface to create level instances.

Parameters
namelevel name
paramssolver parameters
Returns
owning pointer to the level instance

◆ initializeCoarseLevel()

template<typename LAI >
virtual void geos::multiscale::LevelBuilderBase< LAI >::initializeCoarseLevel ( LevelBuilderBase< LAI > &  fineLevel,
Matrix const &  fineMatrix 
)
pure virtual

Initialize a coarse level (levels 1 and above).

Parameters
fineLevelthe previous (fine) level
fineMatrixthe previous (fine) level system matrix

Implemented in geos::multiscale::MsrsbLevelBuilderCoupled< LAI >, and geos::multiscale::MsrsbLevelBuilder< LAI >.

◆ initializeFineLevel()

template<typename LAI >
virtual void geos::multiscale::LevelBuilderBase< LAI >::initializeFineLevel ( DomainPartition domain,
geos::DofManager const &  dofManager,
MPI_Comm const &  comm 
)
pure virtual

Initialize the finest level (level 0).

Parameters
domainthe physical domain object
dofManagerthe source DofManager
commMPI communicator

Implemented in geos::multiscale::MsrsbLevelBuilderCoupled< LAI >, and geos::multiscale::MsrsbLevelBuilder< LAI >.

◆ makeCoarseSolver()

template<typename LAI >
virtual std::unique_ptr< PreconditionerBase< LAI > > geos::multiscale::LevelBuilderBase< LAI >::makeCoarseSolver ( ) const
pure virtual

Instantiate coarsest level solver.

Returns
owning pointer to the solver

Implemented in geos::multiscale::MsrsbLevelBuilderCoupled< LAI >, and geos::multiscale::MsrsbLevelBuilder< LAI >.

◆ matrix()

template<typename LAI >
virtual Matrix const& geos::multiscale::LevelBuilderBase< LAI >::matrix ( ) const
pure virtual
Returns
current level's system matrix

Implemented in geos::multiscale::MsrsbLevelBuilderBase< LAI >.

◆ postsmoother()

template<typename LAI >
virtual Operator const* geos::multiscale::LevelBuilderBase< LAI >::postsmoother ( ) const
pure virtual
Returns
current level's post-smoothing operator

Implemented in geos::multiscale::MsrsbLevelBuilderBase< LAI >.

◆ presmoother()

template<typename LAI >
virtual Operator const* geos::multiscale::LevelBuilderBase< LAI >::presmoother ( ) const
pure virtual
Returns
current level's pre-smoothing operator

Implemented in geos::multiscale::MsrsbLevelBuilderBase< LAI >.

◆ prolongation()

template<typename LAI >
virtual Operator const& geos::multiscale::LevelBuilderBase< LAI >::prolongation ( ) const
pure virtual
Returns
current level's prolongation operator

Implemented in geos::multiscale::MsrsbLevelBuilderBase< LAI >.

◆ restriction()

template<typename LAI >
virtual Operator const& geos::multiscale::LevelBuilderBase< LAI >::restriction ( ) const
pure virtual
Returns
current level's restriction operator

Implemented in geos::multiscale::MsrsbLevelBuilderBase< LAI >.


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