KASKADE 7 development version
Public Types | Public Member Functions | List of all members
Kaskade::ApproximateSchurComplement< Scalar_, Domain_, Range_, BlockK, BlockM, LinearSolver > Class Template Reference

Approximation of the schur complement according to Pearson/Wathen '10. More...

#include <blockDiagonalSchurPreconditioner.hh>

Detailed Description

template<class Scalar_, class Domain_, class Range_, class BlockK = IstlInterfaceDetail::BlockInfo<2,3,0,1>, class BlockM = IstlInterfaceDetail::BlockInfo<0,1,0,1>, class LinearSolver = SchurPreconditionerDetail::ApplyDirectSolver<Domain_,Range_>>
class Kaskade::ApproximateSchurComplement< Scalar_, Domain_, Range_, BlockK, BlockM, LinearSolver >

Approximation of the schur complement according to Pearson/Wathen '10.

Parameters
BlockKtype: IstlInterfaceDetail::BlockInfo, information on the block containing the stiffness matrix
BlockMtype: IstlInterfaceDetail::BlockInfo, information on the block containing the mass matrix

Definition at line 162 of file blockDiagonalSchurPreconditioner.hh.

Public Types

typedef Scalar_ Scalar
 
typedef Domain_ Domain
 
typedef Range_ Range
 
typedef MatrixAsTriplet< ScalarMatrix
 

Public Member Functions

template<class Assembler >
 ApproximateSchurComplement (Assembler const &assembler, Scalar alpha, bool symmetricK_=false, bool symmetricM_=false)
 
template<class Matrix >
 ApproximateSchurComplement (Matrix const &M_, Matrix const &K_, Scalar alpha, bool symmetricK_=false, bool symmetricM_=false)
 
template<class Assembler >
void updateMatrices (Assembler const &assembler, Scalar alpha)
 
template<class Matrix >
void updateMatrices (Matrix const &M_, Matrix const &K_, Scalar alpha)
 
void solve (Domain &x, Range &y) const
 compute \(x=S^{-1}y\), overrides y More...
 
Matrix const & getMassMatrix () const
 
Matrix const & getStiffnessMatrix () const
 

Member Typedef Documentation

◆ Domain

template<class Scalar_ , class Domain_ , class Range_ , class BlockK = IstlInterfaceDetail::BlockInfo<2,3,0,1>, class BlockM = IstlInterfaceDetail::BlockInfo<0,1,0,1>, class LinearSolver = SchurPreconditionerDetail::ApplyDirectSolver<Domain_,Range_>>
typedef Domain_ Kaskade::ApproximateSchurComplement< Scalar_, Domain_, Range_, BlockK, BlockM, LinearSolver >::Domain

Definition at line 166 of file blockDiagonalSchurPreconditioner.hh.

◆ Matrix

template<class Scalar_ , class Domain_ , class Range_ , class BlockK = IstlInterfaceDetail::BlockInfo<2,3,0,1>, class BlockM = IstlInterfaceDetail::BlockInfo<0,1,0,1>, class LinearSolver = SchurPreconditionerDetail::ApplyDirectSolver<Domain_,Range_>>
typedef MatrixAsTriplet<Scalar> Kaskade::ApproximateSchurComplement< Scalar_, Domain_, Range_, BlockK, BlockM, LinearSolver >::Matrix

Definition at line 168 of file blockDiagonalSchurPreconditioner.hh.

◆ Range

template<class Scalar_ , class Domain_ , class Range_ , class BlockK = IstlInterfaceDetail::BlockInfo<2,3,0,1>, class BlockM = IstlInterfaceDetail::BlockInfo<0,1,0,1>, class LinearSolver = SchurPreconditionerDetail::ApplyDirectSolver<Domain_,Range_>>
typedef Range_ Kaskade::ApproximateSchurComplement< Scalar_, Domain_, Range_, BlockK, BlockM, LinearSolver >::Range

Definition at line 167 of file blockDiagonalSchurPreconditioner.hh.

◆ Scalar

template<class Scalar_ , class Domain_ , class Range_ , class BlockK = IstlInterfaceDetail::BlockInfo<2,3,0,1>, class BlockM = IstlInterfaceDetail::BlockInfo<0,1,0,1>, class LinearSolver = SchurPreconditionerDetail::ApplyDirectSolver<Domain_,Range_>>
typedef Scalar_ Kaskade::ApproximateSchurComplement< Scalar_, Domain_, Range_, BlockK, BlockM, LinearSolver >::Scalar

Definition at line 165 of file blockDiagonalSchurPreconditioner.hh.

Constructor & Destructor Documentation

◆ ApproximateSchurComplement() [1/2]

template<class Scalar_ , class Domain_ , class Range_ , class BlockK = IstlInterfaceDetail::BlockInfo<2,3,0,1>, class BlockM = IstlInterfaceDetail::BlockInfo<0,1,0,1>, class LinearSolver = SchurPreconditionerDetail::ApplyDirectSolver<Domain_,Range_>>
template<class Assembler >
Kaskade::ApproximateSchurComplement< Scalar_, Domain_, Range_, BlockK, BlockM, LinearSolver >::ApproximateSchurComplement ( Assembler const &  assembler,
Scalar  alpha,
bool  symmetricK_ = false,
bool  symmetricM_ = false 
)
inline
Parameters
alphaTikhonov regularization parameter
symmetricK_true if stiffness matrix is symmetric, else false
symmetricM_true if mass matrix is symmetric, else false

Definition at line 176 of file blockDiagonalSchurPreconditioner.hh.

◆ ApproximateSchurComplement() [2/2]

template<class Scalar_ , class Domain_ , class Range_ , class BlockK = IstlInterfaceDetail::BlockInfo<2,3,0,1>, class BlockM = IstlInterfaceDetail::BlockInfo<0,1,0,1>, class LinearSolver = SchurPreconditionerDetail::ApplyDirectSolver<Domain_,Range_>>
template<class Matrix >
Kaskade::ApproximateSchurComplement< Scalar_, Domain_, Range_, BlockK, BlockM, LinearSolver >::ApproximateSchurComplement ( Matrix const &  M_,
Matrix const &  K_,
Scalar  alpha,
bool  symmetricK_ = false,
bool  symmetricM_ = false 
)
inline

Definition at line 184 of file blockDiagonalSchurPreconditioner.hh.

Member Function Documentation

◆ getMassMatrix()

template<class Scalar_ , class Domain_ , class Range_ , class BlockK = IstlInterfaceDetail::BlockInfo<2,3,0,1>, class BlockM = IstlInterfaceDetail::BlockInfo<0,1,0,1>, class LinearSolver = SchurPreconditionerDetail::ApplyDirectSolver<Domain_,Range_>>
Matrix const & Kaskade::ApproximateSchurComplement< Scalar_, Domain_, Range_, BlockK, BlockM, LinearSolver >::getMassMatrix ( ) const
inline

Definition at line 228 of file blockDiagonalSchurPreconditioner.hh.

◆ getStiffnessMatrix()

template<class Scalar_ , class Domain_ , class Range_ , class BlockK = IstlInterfaceDetail::BlockInfo<2,3,0,1>, class BlockM = IstlInterfaceDetail::BlockInfo<0,1,0,1>, class LinearSolver = SchurPreconditionerDetail::ApplyDirectSolver<Domain_,Range_>>
Matrix const & Kaskade::ApproximateSchurComplement< Scalar_, Domain_, Range_, BlockK, BlockM, LinearSolver >::getStiffnessMatrix ( ) const
inline

Definition at line 233 of file blockDiagonalSchurPreconditioner.hh.

◆ solve()

template<class Scalar_ , class Domain_ , class Range_ , class BlockK = IstlInterfaceDetail::BlockInfo<2,3,0,1>, class BlockM = IstlInterfaceDetail::BlockInfo<0,1,0,1>, class LinearSolver = SchurPreconditionerDetail::ApplyDirectSolver<Domain_,Range_>>
void Kaskade::ApproximateSchurComplement< Scalar_, Domain_, Range_, BlockK, BlockM, LinearSolver >::solve ( Domain x,
Range y 
) const
inline

compute \(x=S^{-1}y\), overrides y

Definition at line 221 of file blockDiagonalSchurPreconditioner.hh.

◆ updateMatrices() [1/2]

template<class Scalar_ , class Domain_ , class Range_ , class BlockK = IstlInterfaceDetail::BlockInfo<2,3,0,1>, class BlockM = IstlInterfaceDetail::BlockInfo<0,1,0,1>, class LinearSolver = SchurPreconditionerDetail::ApplyDirectSolver<Domain_,Range_>>
template<class Assembler >
void Kaskade::ApproximateSchurComplement< Scalar_, Domain_, Range_, BlockK, BlockM, LinearSolver >::updateMatrices ( Assembler const &  assembler,
Scalar  alpha 
)
inline

◆ updateMatrices() [2/2]

template<class Scalar_ , class Domain_ , class Range_ , class BlockK = IstlInterfaceDetail::BlockInfo<2,3,0,1>, class BlockM = IstlInterfaceDetail::BlockInfo<0,1,0,1>, class LinearSolver = SchurPreconditionerDetail::ApplyDirectSolver<Domain_,Range_>>
template<class Matrix >
void Kaskade::ApproximateSchurComplement< Scalar_, Domain_, Range_, BlockK, BlockM, LinearSolver >::updateMatrices ( Matrix const &  M_,
Matrix const &  K_,
Scalar  alpha 
)
inline

Definition at line 211 of file blockDiagonalSchurPreconditioner.hh.


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