47 #ifndef __Teko_DiagonalPreconditionerOp_hpp__
48 #define __Teko_DiagonalPreconditionerOp_hpp__
51 #include "Teko_ImplicitLinearOp.hpp"
53 class EpetraExt_PointToBlockDiagPermute;
57 class DiagonalPreconditionerOp :
public ImplicitLinearOp {
61 DiagonalPreconditionerOp(Teuchos::RCP<EpetraExt_PointToBlockDiagPermute> BDP,
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,
82 const double alpha = 1.0,
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_;}
91 Teuchos::RCP<EpetraExt_PointToBlockDiagPermute> BDP_;
92 const VectorSpace range_, domain_;