00001 /* @HEADER@ */ 00002 // 00003 /* @HEADER@ */ 00004 00005 #ifndef PLAYA_SIMPLE_TRANSPOSED_OP_DECL_HPP 00006 #define PLAYA_SIMPLE_TRANSPOSED_OP_DECL_HPP 00007 00008 00009 00010 #include "PlayaDefs.hpp" 00011 #include "PlayaLinearOpWithSpacesDecl.hpp" 00012 #include "PlayaLinearOperatorDecl.hpp" 00013 00014 00015 namespace Playa 00016 { 00017 using namespace Teuchos; 00018 00019 00020 00021 00022 /** 00023 * Represent the transpose of an operator 00024 */ 00025 template <class Scalar> 00026 class SimpleTransposedOp : public LinearOpWithSpaces<Scalar> 00027 { 00028 public: 00029 /** */ 00030 SimpleTransposedOp(const LinearOperator<Scalar>& A); 00031 00032 /** */ 00033 void apply(Teuchos::ETransp transApplyType, 00034 const Vector<Scalar>& in, 00035 Vector<Scalar> out) const; 00036 00037 00038 /** */ 00039 std::string description() const ; 00040 00041 /** */ 00042 LinearOperator<Scalar> op() const {return A_;} 00043 00044 private: 00045 LinearOperator<Scalar> A_; 00046 }; 00047 00048 00049 /** \relates SimpleTransposedOp */ 00050 template <class Scalar> 00051 LinearOperator<Scalar> transposedOperator( 00052 const LinearOperator<Scalar>& op); 00053 00054 } 00055 00056 #endif