|
Thyra Package Browser (Single Doxygen Collection) Version of the Day
|
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
1.7.4