PlayaSimpleComposedOpDecl.hpp

00001 /* @HEADER@ */
00002 //   
00003 /* @HEADER@ */
00004 
00005 #ifndef PLAYA_SIMPLE_COMPOSED_OP_DECL_HPP
00006 #define PLAYA_SIMPLE_COMPOSED_OP_DECL_HPP
00007 
00008 
00009 #include "PlayaDefs.hpp"
00010 #include "PlayaLinearOpWithSpacesDecl.hpp"
00011 #include "PlayaLinearOperatorDecl.hpp"
00012 
00013 
00014 namespace Playa
00015 {
00016 using namespace Teuchos;
00017 
00018 
00019 
00020 
00024 template <class Scalar>
00025 class SimpleComposedOp : public LinearOpWithSpaces<Scalar>,
00026                          public Printable
00027 {
00028 public:
00030   SimpleComposedOp(const Array<LinearOperator<Scalar> >& ops);
00031   
00033   void apply(Teuchos::ETransp transApplyType,
00034     const Vector<Scalar>& in,
00035     Vector<Scalar> out) const;
00036 
00037   
00039   std::string description() const ;
00040 
00042   void print(std::ostream& os) const ;
00043 
00044 private:
00045   Array<LinearOperator<Scalar> > ops_;
00046 };
00047 
00048 
00049 template <class Scalar>
00050 LinearOperator<Scalar> composedOperator(
00051   const Array<LinearOperator<Scalar> >& ops);
00052 
00053 
00054 template <class Scalar> 
00055 LinearOperator<Scalar> operator*(const LinearOperator<Scalar>& A, 
00056   const LinearOperator<Scalar>& B);
00057 
00058 }
00059 
00060 #endif

doxygen