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