00001 /* @HEADER@ */ 00002 // 00003 /* @HEADER@ */ 00004 00005 #ifndef PLAYA_SIMPLE_ADDED_OP_DECL_HPP 00006 #define PLAYA_SIMPLE_ADDED_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 00024 template <class Scalar> 00025 class SimpleAddedOp : public LinearOpWithSpaces<Scalar> 00026 { 00027 public: 00029 SimpleAddedOp(const Array<LinearOperator<Scalar> >& ops); 00030 00032 void apply(Teuchos::ETransp transApplyType, 00033 const Vector<Scalar>& in, 00034 Vector<Scalar> out) const; 00035 00037 std::string description() const ; 00038 00039 private: 00040 Array<LinearOperator<Scalar> > ops_; 00041 }; 00042 00044 template <class Scalar> 00045 LinearOperator<Scalar> addedOperator( 00046 const Array<LinearOperator<Scalar> >& ops); 00047 00048 00050 template <class Scalar> 00051 LinearOperator<Scalar> 00052 operator+(const LinearOperator<Scalar>& A, 00053 const LinearOperator<Scalar>& B); 00054 00055 00056 } 00057 00058 #endif