dune-pdelab  2.5-dev
Public Types | Public Member Functions | List of all members
Dune::PDELab::NonoverlappingJacobi< A, X, Y > Class Template Reference

parallel non-overlapping Jacobi preconditioner More...

#include <dune/pdelab/backend/istl/novlpistlsolverbackend.hh>

Inheritance diagram for Dune::PDELab::NonoverlappingJacobi< A, X, Y >:
Inheritance graph

Public Types

typedef X domain_type
 The domain type of the operator. More...
 
typedef Y range_type
 The range type of the operator. More...
 
typedef X::ElementType field_type
 The field type of the preconditioner. More...
 

Public Member Functions

SolverCategory::Category category () const override
 
template<typename GFS >
 NonoverlappingJacobi (const GFS &gfs, const A &m)
 Constructor. More...
 
virtual void pre (X &x, Y &b) override
 Prepare the preconditioner. More...
 
virtual void apply (X &v, const Y &d) override
 Apply the precondioner. More...
 
virtual void post (X &x) override
 Clean up. More...
 

Detailed Description

template<typename A, typename X, typename Y>
class Dune::PDELab::NonoverlappingJacobi< A, X, Y >

parallel non-overlapping Jacobi preconditioner

Template Parameters
DiagonalVector type used to store the diagonal of the matrix
XVector type used to store the result of applying the preconditioner.
YVector type used to store the defect.
AThe matrix type to be used.

The Jacobi preconditioner approximates the inverse of a matrix M by taking the diagonal diag(M) and inverting that. In the parallel case the matrix M is assumed to be inconsistent, so diagonal entries for dofs on the border are summed up over all relevant processes by this precoditioner before the inverse is computed.

Member Typedef Documentation

◆ domain_type

template<typename A , typename X , typename Y >
typedef X Dune::PDELab::NonoverlappingJacobi< A, X, Y >::domain_type

The domain type of the operator.

The preconditioner is an inverse operator, so this is the output type of the preconditioner.

◆ field_type

template<typename A , typename X , typename Y >
typedef X::ElementType Dune::PDELab::NonoverlappingJacobi< A, X, Y >::field_type

The field type of the preconditioner.

◆ range_type

template<typename A , typename X , typename Y >
typedef Y Dune::PDELab::NonoverlappingJacobi< A, X, Y >::range_type

The range type of the operator.

The preconditioner is an inverse operator, so this is the input type of the preconditioner.

Constructor & Destructor Documentation

◆ NonoverlappingJacobi()

template<typename A , typename X , typename Y >
template<typename GFS >
Dune::PDELab::NonoverlappingJacobi< A, X, Y >::NonoverlappingJacobi ( const GFS &  gfs,
const A &  m 
)
inline

Constructor.

Parameters
gfsThe GridFunctionSpace the matrix and the vectors live on.
mThe matrix whose inverse the preconditioner should estimate. m is assumed to be inconsistent (i.e. rows for dofs on the border only contain the contribution of the local process).

The preconditioner does not store any reference to the gfs or the matrix m. The diagonal of m is copied, since it has to be made consistent.

Member Function Documentation

◆ apply()

template<typename A , typename X , typename Y >
virtual void Dune::PDELab::NonoverlappingJacobi< A, X, Y >::apply ( X &  v,
const Y &  d 
)
inlineoverridevirtual

Apply the precondioner.

◆ category()

template<typename A , typename X , typename Y >
SolverCategory::Category Dune::PDELab::NonoverlappingJacobi< A, X, Y >::category ( ) const
inlineoverride

◆ post()

template<typename A , typename X , typename Y >
virtual void Dune::PDELab::NonoverlappingJacobi< A, X, Y >::post ( X &  x)
inlineoverridevirtual

Clean up.

◆ pre()

template<typename A , typename X , typename Y >
virtual void Dune::PDELab::NonoverlappingJacobi< A, X, Y >::pre ( X &  x,
Y &  b 
)
inlineoverridevirtual

Prepare the preconditioner.


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