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_>>