47 #ifndef __Teko_DiagonalPreconditionerOp_hpp__
48 #define __Teko_DiagonalPreconditionerOp_hpp__
51 #include "Teko_ImplicitLinearOp.hpp"
53 class EpetraExt_PointToBlockDiagPermute;
57 class DiagonalPreconditionerOp :
public ImplicitLinearOp {
60 DiagonalPreconditionerOp(Teuchos::RCP<EpetraExt_PointToBlockDiagPermute> BDP,
61 const VectorSpace range,
const VectorSpace domain);
64 virtual VectorSpace range()
const {
return range_; }
67 virtual VectorSpace domain()
const {
return domain_; }
81 virtual void implicitApply(
const MultiVector &x, MultiVector &y,
const double alpha = 1.0,
82 const double beta = 0.0)
const;
84 virtual void describe(Teuchos::FancyOStream &out_arg,
85 const Teuchos::EVerbosityLevel verbLevel)
const;
87 Teuchos::RCP<EpetraExt_PointToBlockDiagPermute> get_BDP()
const {
return BDP_; }
90 Teuchos::RCP<EpetraExt_PointToBlockDiagPermute> BDP_;
91 const VectorSpace range_, domain_;