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
-
| BlockK | type: IstlInterfaceDetail::BlockInfo, information on the block containing the stiffness matrix |
| BlockM | type: IstlInterfaceDetail::BlockInfo, information on the block containing the mass matrix |
Definition at line 162 of file blockDiagonalSchurPreconditioner.hh.
|
| 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 |
| |
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 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 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 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 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
-
| alpha | Tikhonov 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.
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 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 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 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 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 >
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_>>