PlayaSimpleComposedOpDecl.hpp
Go to the documentation of this file.
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 
00021 /**
00022  * Represent a composed operator A_0 * A_1 * ... * A_n.
00023  */
00024 template <class Scalar>
00025 class SimpleComposedOp : public LinearOpWithSpaces<Scalar>,
00026                          public Printable
00027 {
00028 public:
00029   /** */
00030   SimpleComposedOp(const Array<LinearOperator<Scalar> >& ops);
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   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

Site Contact