dune-pdelab  2.0.0
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/novlpistlsolverbackend.hh>

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

Public Types

enum  { category =Dune::SolverCategory::nonoverlapping }
 
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

template<typename GFS >
 NonoverlappingJacobi (const GFS &gfs, const A &m)
 Constructor. More...
 
virtual void pre (X &x, Y &b)
 Prepare the preconditioner. More...
 
virtual void apply (X &v, const Y &d)
 Apply the precondioner. More...
 
virtual void post (X &x)
 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.

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

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.

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

The field type of the preconditioner.

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.

Member Enumeration Documentation

template<typename A , typename X , typename Y >
anonymous enum
Enumerator
category 

The category the preconditioner is part of.

Constructor & Destructor Documentation

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.

References Dune::PDELab::istl::BlockMatrixDiagonal< M >::MatrixElementVector::invert().

Member Function Documentation

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

Clean up.

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

Prepare the preconditioner.


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