Thyra Package Browser (Single Doxygen Collection) Version of the Day
Thyra_DiagonalScalarProd_decl.hpp
Go to the documentation of this file.
00001 
00002 #ifndef THYRA_DIAGONAL_SCALAR_PROD_DECL_HPP
00003 #define THYRA_DIAGONAL_SCALAR_PROD_DECL_HPP
00004 
00005 
00006 #include "Thyra_ScalarProdBase.hpp"
00007 
00008 
00009 namespace Thyra {
00010 
00011 
00018 template<class Scalar>
00019 class DiagonalScalarProd : public ScalarProdBase<Scalar> {
00020 public:
00021   
00024 
00026   DiagonalScalarProd();
00027 
00029   void initialize( const RCP<const VectorBase<Scalar> > &s_diag );
00030 
00032 
00033 protected:
00034   
00037 
00039   virtual bool isEuclideanImpl() const;
00040   
00042   virtual void scalarProdsImpl(
00043     const MultiVectorBase<Scalar>& X, const MultiVectorBase<Scalar>& Y,
00044     const ArrayView<Scalar> &scalarProds_out ) const;
00045 
00047   RCP<const LinearOpBase<Scalar> > getLinearOpImpl() const;
00048 
00050 
00051 private:
00052 
00053   RCP<const VectorBase<Scalar> > s_diag_;
00054 
00055 };
00056 
00057 
00062 template<class Scalar>
00063 RCP<DiagonalScalarProd<Scalar> >
00064 diagonalScalarProd(const RCP<const VectorBase<Scalar> > &s_diag)
00065 {
00066   const RCP<DiagonalScalarProd<Scalar> > scalarProd =
00067     Teuchos::rcp(new DiagonalScalarProd<Scalar>());
00068   scalarProd->initialize(s_diag);
00069   return scalarProd;
00070 }
00071 
00072 
00073 
00074 } // end namespace Thyra
00075 
00076 
00077 #endif  // THYRA_DIAGONAL_SCALAR_PROD_DECL_HPP
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines