dune-istl 2.10
Loading...
Searching...
No Matches

A fast (sequential) algebraic multigrid based on agglomeration that saves memory bandwidth. More...

#include <dune/istl/paamg/fastamg.hh>

Inheritance diagram for Dune::Amg::FastAMG< M, X, PI, A >:
Inheritance graph

Public Types

typedef M Operator
 The matrix operator type.
 
typedef PI ParallelInformation
 The type of the parallel information. Either OwnerOverlapCommunication or another type describing the parallel data distribution and providing communication methods.
 
typedef MatrixHierarchy< M, ParallelInformation, A > OperatorHierarchy
 The operator hierarchy type.
 
typedef OperatorHierarchy::ParallelInformationHierarchy ParallelInformationHierarchy
 The parallal data distribution hierarchy type.
 
typedef X Domain
 The domain type.
 
typedef X Range
 The range type.
 
typedef InverseOperator< X, X > CoarseSolver
 the type of the coarse solver.
 
typedef X domain_type
 The domain type of the preconditioner.
 
typedef X range_type
 The range type of the preconditioner.
 
typedef X::field_type field_type
 The field type of the preconditioner.
 

Public Member Functions

 FastAMG (OperatorHierarchy &matrices, CoarseSolver &coarseSolver, const Parameters &parms, bool symmetric=true)
 Construct a new amg with a specific coarse solver.
 
template<class C >
 FastAMG (std::shared_ptr< const Operator > fineOperator, const C &criterion, const Parameters &parms=Parameters(), bool symmetric=true, const ParallelInformation &pinfo=ParallelInformation())
 Construct an AMG with an inexact coarse solver based on the smoother.
 
template<class C >
 FastAMG (const Operator &fineOperator, const C &criterion, const Parameters &parms=Parameters(), bool symmetric=true, const ParallelInformation &pinfo=ParallelInformation())
 Construct an AMG with an inexact coarse solver based on the smoother.
 
 FastAMG (const FastAMG &amg)
 Copy constructor.
 
void pre (Domain &x, Range &b)
 Prepare the preconditioner.
 
void apply (Domain &v, const Range &d)
 Apply one step of the preconditioner to the system A(v)=d.
 
virtual SolverCategory::Category category () const
 Category of the preconditioner (see SolverCategory::Category)
 
void post (Domain &x)
 Clean up.
 
template<class A1 >
void getCoarsestAggregateNumbers (std::vector< std::size_t, A1 > &cont)
 Get the aggregate number of each unknown on the coarsest level.
 
std::size_t levels ()
 
std::size_t maxlevels ()
 
void recalculateHierarchy ()
 Recalculate the matrix hierarchy.
 
bool usesDirectCoarseLevelSolver () const
 Check whether the coarse solver used is a direct solver.
 

Detailed Description

template<class M, class X, class PI = SequentialInformation, class A = std::allocator<X>>
class Dune::Amg::FastAMG< M, X, PI, A >

A fast (sequential) algebraic multigrid based on agglomeration that saves memory bandwidth.

It combines one Gauss-Seidel smoothing sweep with the defect calculation to reduce memory transfers.

Template Parameters
MThe matrix-operator type, e.g. MatrixAdapter or AssembledLinearOperator
XThe vector type
PICurrently ignored.
AAn allocator for X

Member Typedef Documentation

◆ domain_type

X Dune::Preconditioner< X, X >::domain_type
inherited

The domain type of the preconditioner.

◆ field_type

X::field_type Dune::Preconditioner< X, X >::field_type
inherited

The field type of the preconditioner.

◆ range_type

X Dune::Preconditioner< X, X >::range_type
inherited

The range type of the preconditioner.


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