KASKADE 7 development version
Public Types | Public Member Functions | Static Public Attributes | List of all members
Kaskade::BlockDiagonalSchurPreconditioner< Operator, SchurComplement, BlockK, BlockM, LinearSolver, LinearSolver_SchurComplement > Class Template Reference

#include <blockDiagonalSchurPreconditioner.hh>

Detailed Description

template<class Operator, template< class, class, class, class, class, class > class SchurComplement = ApproximateSchurComplement, class BlockK = IstlInterfaceDetail::BlockInfo<2,3,0,1>, class BlockM = IstlInterfaceDetail::BlockInfo<0,1,0,1>, class LinearSolver = SchurPreconditionerDetail::ApplyDirectSolver<typename SchurPreconditionerDetail::ExtractDomainAndRange<Operator,BlockM>::Domain, typename SchurPreconditionerDetail::ExtractDomainAndRange<Operator,BlockM>::Range>, class LinearSolver_SchurComplement = LinearSolver>
class Kaskade::BlockDiagonalSchurPreconditioner< Operator, SchurComplement, BlockK, BlockM, LinearSolver, LinearSolver_SchurComplement >

Preconditioner à la Pearson/Wathen '10

based on an approximation of the schur complement mesh independent and independent of the Tikhonov regularization parameter

Definition at line 356 of file blockDiagonalSchurPreconditioner.hh.

Inheritance diagram for Kaskade::BlockDiagonalSchurPreconditioner< Operator, SchurComplement, BlockK, BlockM, LinearSolver, LinearSolver_SchurComplement >:

Public Types

typedef Operator::Scalar Scalar
 
typedef Operator::Domain Domain
 
typedef Operator::Range Range
 

Public Member Functions

 BlockDiagonalSchurPreconditioner (Operator const &A_, Scalar alpha_, bool symmetricK=false, bool symmetricM=false)
 
virtual ~BlockDiagonalSchurPreconditioner ()
 
virtual void apply (Domain &x, Range const &y)
 
virtual void pre (Domain &, Range &)
 
virtual void post (Domain &)
 

Static Public Attributes

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

Member Typedef Documentation

◆ Domain

template<class Operator , template< class, class, class, class, class, class > class SchurComplement = ApproximateSchurComplement, class BlockK = IstlInterfaceDetail::BlockInfo<2,3,0,1>, class BlockM = IstlInterfaceDetail::BlockInfo<0,1,0,1>, class LinearSolver = SchurPreconditionerDetail::ApplyDirectSolver<typename SchurPreconditionerDetail::ExtractDomainAndRange<Operator,BlockM>::Domain, typename SchurPreconditionerDetail::ExtractDomainAndRange<Operator,BlockM>::Range>, class LinearSolver_SchurComplement = LinearSolver>
typedef Operator::Domain Kaskade::BlockDiagonalSchurPreconditioner< Operator, SchurComplement, BlockK, BlockM, LinearSolver, LinearSolver_SchurComplement >::Domain

Definition at line 365 of file blockDiagonalSchurPreconditioner.hh.

◆ Range

template<class Operator , template< class, class, class, class, class, class > class SchurComplement = ApproximateSchurComplement, class BlockK = IstlInterfaceDetail::BlockInfo<2,3,0,1>, class BlockM = IstlInterfaceDetail::BlockInfo<0,1,0,1>, class LinearSolver = SchurPreconditionerDetail::ApplyDirectSolver<typename SchurPreconditionerDetail::ExtractDomainAndRange<Operator,BlockM>::Domain, typename SchurPreconditionerDetail::ExtractDomainAndRange<Operator,BlockM>::Range>, class LinearSolver_SchurComplement = LinearSolver>
typedef Operator::Range Kaskade::BlockDiagonalSchurPreconditioner< Operator, SchurComplement, BlockK, BlockM, LinearSolver, LinearSolver_SchurComplement >::Range

Definition at line 366 of file blockDiagonalSchurPreconditioner.hh.

◆ Scalar

template<class Operator , template< class, class, class, class, class, class > class SchurComplement = ApproximateSchurComplement, class BlockK = IstlInterfaceDetail::BlockInfo<2,3,0,1>, class BlockM = IstlInterfaceDetail::BlockInfo<0,1,0,1>, class LinearSolver = SchurPreconditionerDetail::ApplyDirectSolver<typename SchurPreconditionerDetail::ExtractDomainAndRange<Operator,BlockM>::Domain, typename SchurPreconditionerDetail::ExtractDomainAndRange<Operator,BlockM>::Range>, class LinearSolver_SchurComplement = LinearSolver>
typedef Operator::Scalar Kaskade::BlockDiagonalSchurPreconditioner< Operator, SchurComplement, BlockK, BlockM, LinearSolver, LinearSolver_SchurComplement >::Scalar

Definition at line 364 of file blockDiagonalSchurPreconditioner.hh.

Constructor & Destructor Documentation

◆ BlockDiagonalSchurPreconditioner()

template<class Operator , template< class, class, class, class, class, class > class SchurComplement = ApproximateSchurComplement, class BlockK = IstlInterfaceDetail::BlockInfo<2,3,0,1>, class BlockM = IstlInterfaceDetail::BlockInfo<0,1,0,1>, class LinearSolver = SchurPreconditionerDetail::ApplyDirectSolver<typename SchurPreconditionerDetail::ExtractDomainAndRange<Operator,BlockM>::Domain, typename SchurPreconditionerDetail::ExtractDomainAndRange<Operator,BlockM>::Range>, class LinearSolver_SchurComplement = LinearSolver>
Kaskade::BlockDiagonalSchurPreconditioner< Operator, SchurComplement, BlockK, BlockM, LinearSolver, LinearSolver_SchurComplement >::BlockDiagonalSchurPreconditioner ( Operator const &  A_,
Scalar  alpha_,
bool  symmetricK = false,
bool  symmetricM = false 
)
inlineexplicit

Definition at line 370 of file blockDiagonalSchurPreconditioner.hh.

◆ ~BlockDiagonalSchurPreconditioner()

template<class Operator , template< class, class, class, class, class, class > class SchurComplement = ApproximateSchurComplement, class BlockK = IstlInterfaceDetail::BlockInfo<2,3,0,1>, class BlockM = IstlInterfaceDetail::BlockInfo<0,1,0,1>, class LinearSolver = SchurPreconditionerDetail::ApplyDirectSolver<typename SchurPreconditionerDetail::ExtractDomainAndRange<Operator,BlockM>::Domain, typename SchurPreconditionerDetail::ExtractDomainAndRange<Operator,BlockM>::Range>, class LinearSolver_SchurComplement = LinearSolver>
virtual Kaskade::BlockDiagonalSchurPreconditioner< Operator, SchurComplement, BlockK, BlockM, LinearSolver, LinearSolver_SchurComplement >::~BlockDiagonalSchurPreconditioner ( )
inlinevirtual

Definition at line 375 of file blockDiagonalSchurPreconditioner.hh.

Member Function Documentation

◆ apply()

template<class Operator , template< class, class, class, class, class, class > class SchurComplement = ApproximateSchurComplement, class BlockK = IstlInterfaceDetail::BlockInfo<2,3,0,1>, class BlockM = IstlInterfaceDetail::BlockInfo<0,1,0,1>, class LinearSolver = SchurPreconditionerDetail::ApplyDirectSolver<typename SchurPreconditionerDetail::ExtractDomainAndRange<Operator,BlockM>::Domain, typename SchurPreconditionerDetail::ExtractDomainAndRange<Operator,BlockM>::Range>, class LinearSolver_SchurComplement = LinearSolver>
virtual void Kaskade::BlockDiagonalSchurPreconditioner< Operator, SchurComplement, BlockK, BlockM, LinearSolver, LinearSolver_SchurComplement >::apply ( Domain x,
Range const &  y 
)
inlinevirtual

Definition at line 377 of file blockDiagonalSchurPreconditioner.hh.

◆ post()

template<class Operator , template< class, class, class, class, class, class > class SchurComplement = ApproximateSchurComplement, class BlockK = IstlInterfaceDetail::BlockInfo<2,3,0,1>, class BlockM = IstlInterfaceDetail::BlockInfo<0,1,0,1>, class LinearSolver = SchurPreconditionerDetail::ApplyDirectSolver<typename SchurPreconditionerDetail::ExtractDomainAndRange<Operator,BlockM>::Domain, typename SchurPreconditionerDetail::ExtractDomainAndRange<Operator,BlockM>::Range>, class LinearSolver_SchurComplement = LinearSolver>
virtual void Kaskade::BlockDiagonalSchurPreconditioner< Operator, SchurComplement, BlockK, BlockM, LinearSolver, LinearSolver_SchurComplement >::post ( Domain )
inlinevirtual

Definition at line 400 of file blockDiagonalSchurPreconditioner.hh.

◆ pre()

template<class Operator , template< class, class, class, class, class, class > class SchurComplement = ApproximateSchurComplement, class BlockK = IstlInterfaceDetail::BlockInfo<2,3,0,1>, class BlockM = IstlInterfaceDetail::BlockInfo<0,1,0,1>, class LinearSolver = SchurPreconditionerDetail::ApplyDirectSolver<typename SchurPreconditionerDetail::ExtractDomainAndRange<Operator,BlockM>::Domain, typename SchurPreconditionerDetail::ExtractDomainAndRange<Operator,BlockM>::Range>, class LinearSolver_SchurComplement = LinearSolver>
virtual void Kaskade::BlockDiagonalSchurPreconditioner< Operator, SchurComplement, BlockK, BlockM, LinearSolver, LinearSolver_SchurComplement >::pre ( Domain ,
Range  
)
inlinevirtual

Definition at line 399 of file blockDiagonalSchurPreconditioner.hh.

Member Data Documentation

◆ category

template<class Operator , template< class, class, class, class, class, class > class SchurComplement = ApproximateSchurComplement, class BlockK = IstlInterfaceDetail::BlockInfo<2,3,0,1>, class BlockM = IstlInterfaceDetail::BlockInfo<0,1,0,1>, class LinearSolver = SchurPreconditionerDetail::ApplyDirectSolver<typename SchurPreconditionerDetail::ExtractDomainAndRange<Operator,BlockM>::Domain, typename SchurPreconditionerDetail::ExtractDomainAndRange<Operator,BlockM>::Range>, class LinearSolver_SchurComplement = LinearSolver>
int const Kaskade::BlockDiagonalSchurPreconditioner< Operator, SchurComplement, BlockK, BlockM, LinearSolver, LinearSolver_SchurComplement >::category = Dune::SolverCategory::sequential
static

Definition at line 368 of file blockDiagonalSchurPreconditioner.hh.


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