KASKADE 7 development version
Public Member Functions | Static Public Attributes | List of all members
Kaskade::PartialDirectPreconditioner< Op > Class Template Reference

DEPRECATED A partial direct preconditioner applicable to assembled operators. More...

#include <partialDirectPreconditioner.hh>

Detailed Description

template<class Op>
class Kaskade::PartialDirectPreconditioner< Op >

DEPRECATED A partial direct preconditioner applicable to assembled operators.

THIS PRECONDITIONER IS DEPRECATED. PREFER A P-MULTIGRID PRECONDITIONER, WHICH IS MUCH MORE EFFECTIVE FOR HIGHER POLYNOMIAL DEGREES AND WORKS WITH SPACES OTHER THAN HIERARCHICAL LAGRANGE.

The specified direct solver is used for preconditioning the submatrix with the given range, and a Jacobi preconditioner is used for the remaining variables.

This approach is effective for elliptic problems discretized with hierarchical FE spaces (e.g., using ContinuousHierarchicMapper) where the first order ansatz functions span the usual linear FE space. This subspace forms a rather good coarse space with relatively small dimension (in 2D with quadratic elements 1/4, for 3D and/or higher polynomial degree less). The small dimension of the linear FE subspace reduces the direct solver fill-in and hence its memory consumption significantly.

The quality of the preconditioner deteriorates with increasing polynomial degree of the ansatz functions. Thus, the preconditioner is not asymptotically optimal for increasing degree. Nevertheless it is very effective in practice for moderate ansatz order (2-5). A (small) benefit is that its relative cost decreases with increasing order.

Template Parameters
Opthe assembled operator type, a AssembledGalerkinOperator<...> type.

Definition at line 51 of file partialDirectPreconditioner.hh.

Inheritance diagram for Kaskade::PartialDirectPreconditioner< Op >:

Public Member Functions

 PartialDirectPreconditioner (Op const &op, size_t first, size_t last, DirectType directType=DirectType::UMFPACK, MatrixProperties matprop=MatrixProperties::SYMMETRIC)
 
virtual void pre (Domain &, Range &)
 
virtual void post (Domain &)
 
virtual void apply (Domain &x, Range const &y)
 

Static Public Attributes

static int const category = Dune::SolverCategory::sequential
 

Constructor & Destructor Documentation

◆ PartialDirectPreconditioner()

template<class Op >
Kaskade::PartialDirectPreconditioner< Op >::PartialDirectPreconditioner ( Op const &  op,
size_t  first,
size_t  last,
DirectType  directType = DirectType::UMFPACK,
MatrixProperties  matprop = MatrixProperties::SYMMETRIC 
)
inline
  • op the assembled operator
  • first,last a half-open index range denoting the range where the direct solver will be applied.
  • directType the type of direct solver to be used
  • matprop the properties of the matrix

Definition at line 66 of file partialDirectPreconditioner.hh.

Member Function Documentation

◆ apply()

template<class Op >
virtual void Kaskade::PartialDirectPreconditioner< Op >::apply ( Domain &  x,
Range const &  y 
)
inlinevirtual

Definition at line 91 of file partialDirectPreconditioner.hh.

◆ post()

template<class Op >
virtual void Kaskade::PartialDirectPreconditioner< Op >::post ( Domain &  )
inlinevirtual

Definition at line 89 of file partialDirectPreconditioner.hh.

◆ pre()

template<class Op >
virtual void Kaskade::PartialDirectPreconditioner< Op >::pre ( Domain &  ,
Range &   
)
inlinevirtual

Definition at line 88 of file partialDirectPreconditioner.hh.

Member Data Documentation

◆ category

template<class Op >
int const Kaskade::PartialDirectPreconditioner< Op >::category = Dune::SolverCategory::sequential
static

Definition at line 58 of file partialDirectPreconditioner.hh.


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