10 #ifndef __Teko_DiagonalPreconditionerOp_hpp__
11 #define __Teko_DiagonalPreconditionerOp_hpp__
14 #include "Teko_ImplicitLinearOp.hpp"
16 class EpetraExt_PointToBlockDiagPermute;
20 class DiagonalPreconditionerOp :
public ImplicitLinearOp {
23 DiagonalPreconditionerOp(Teuchos::RCP<EpetraExt_PointToBlockDiagPermute> BDP,
24 const VectorSpace range,
const VectorSpace domain);
27 virtual VectorSpace range()
const {
return range_; }
30 virtual VectorSpace domain()
const {
return domain_; }
44 virtual void implicitApply(
const MultiVector &x, MultiVector &y,
const double alpha = 1.0,
45 const double beta = 0.0)
const;
47 virtual void describe(Teuchos::FancyOStream &out_arg,
48 const Teuchos::EVerbosityLevel verbLevel)
const;
50 Teuchos::RCP<EpetraExt_PointToBlockDiagPermute> get_BDP()
const {
return BDP_; }
53 Teuchos::RCP<EpetraExt_PointToBlockDiagPermute> BDP_;
54 const VectorSpace range_, domain_;