PlayaInverseOperatorDecl.hpp
00001
00002
00003
00004
00005 #ifndef PLAYA_INVERSEOPERATOR_DECL_HPP
00006 #define PLAYA_INVERSEOPERATOR_DECL_HPP
00007
00008 #include "PlayaDefs.hpp"
00009 #include "PlayaLinearOperatorDecl.hpp"
00010 #include "PlayaLinearOpWithSpacesDecl.hpp"
00011 #include "Teuchos_RCP.hpp"
00012 #include "PlayaLinearSolverDecl.hpp"
00013 #include "PlayaSolverState.hpp"
00014
00015 namespace Playa
00016 {
00017 using Teuchos::RCP;
00018
00028 template <class Scalar>
00029 class InverseOperator : public LinearOpWithSpaces<Scalar>,
00030 public Printable
00031 {
00032 public:
00036 InverseOperator(const LinearOperator<Scalar>& op,
00037 const LinearSolver<Scalar>& solver);
00038
00040 virtual ~InverseOperator(){;}
00041
00052 virtual void apply(
00053 Teuchos::ETransp applyType,
00054 const Vector<Scalar>& in,
00055 Vector<Scalar> out) const ;
00056
00057
00058
00060 void print(std::ostream& os) const ;
00061
00063 LinearOperator<Scalar> op() const {return op_;}
00064
00065
00066 private:
00067 const LinearOperator<Scalar> op_;
00068 const LinearSolver<Scalar> solver_;
00069 std::string msg_;
00070 };
00071
00072
00074 template <class Scalar>
00075 LinearOperator<Scalar>
00076 inverse(const LinearOperator<Scalar>& op,
00077 const LinearSolver<Scalar>& solver);
00078
00079
00080 }
00081
00082 #endif