00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #ifndef THYRA_DIAGONAL_LINEAR_OP_WITH_SOLVE_DECL_HPP
00030 #define THYRA_DIAGONAL_LINEAR_OP_WITH_SOLVE_DECL_HPP
00031
00032 #include "Thyra_DefaultDiagonalLinearOpDecl.hpp"
00033 #include "Thyra_LinearOpWithSolveBaseDecl.hpp"
00034 #include "Thyra_SingleRhsLinearOpWithSolveBaseDecl.hpp"
00035
00036 namespace Thyra {
00037
00077 template<class Scalar>
00078 class DefaultDiagonalLinearOpWithSolve
00079 : virtual public DefaultDiagonalLinearOp<Scalar>
00080 , virtual public LinearOpWithSolveBase<Scalar>
00081 , virtual protected SingleRhsLinearOpWithSolveBase<Scalar>
00082 {
00083 public:
00084
00087
00094 DefaultDiagonalLinearOpWithSolve();
00095
00097 DefaultDiagonalLinearOpWithSolve(
00098 const Teuchos::RefCountPtr<const VectorBase<Scalar> > &diag
00099 );
00100
00101 protected:
00102
00106 bool solveSupportsTrans(ETransp M_trans) const;
00108 bool solveSupportsSolveMeasureType(ETransp M_trans, const SolveMeasureType& solveMeasureType) const;
00110
00114 SolveStatus<Scalar> solve(
00115 const ETransp M_trans
00116 ,const VectorBase<Scalar> &b
00117 ,VectorBase<Scalar> *x
00118 ,const SolveCriteria<Scalar> *solveCriteria
00119 ) const;
00121
00122 };
00123
00124 }
00125
00126 #endif // THYRA_DIAGONAL_LINEAR_OP_WITH_SOLVE_DECL_HPP