AnasaziOrthoManager.hpp
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00033 #ifndef ANASAZI_ORTHOMANAGER_HPP
00034 #define ANASAZI_ORTHOMANAGER_HPP
00035
00050 #include "AnasaziConfigDefs.hpp"
00051 #include "AnasaziTypes.hpp"
00052 #include "Teuchos_ScalarTraits.hpp"
00053 #include "Teuchos_RCP.hpp"
00054 #include "Teuchos_SerialDenseMatrix.hpp"
00055 #include "Teuchos_Array.hpp"
00056
00057
00058
00059
00060 namespace Anasazi {
00061
00062
00064
00065
00068 class OrthoError : public AnasaziError
00069 {public: OrthoError(const std::string& what_arg) : AnasaziError(what_arg) {}};
00070
00072
00073 template <class ScalarType, class MV>
00074 class OrthoManager {
00075 public:
00077
00078
00079 OrthoManager() {};
00080
00082 virtual ~OrthoManager() {};
00084
00086
00087
00101 virtual void innerProd( const MV &X, const MV &Y, Teuchos::SerialDenseMatrix<int,ScalarType>& Z ) const = 0;
00102
00103
00116 virtual void norm( const MV& X, std::vector< typename Teuchos::ScalarTraits<ScalarType>::magnitudeType > &normvec ) const = 0;
00117
00118
00119
00158 virtual void project (
00159 MV &X,
00160 Teuchos::Array<Teuchos::RCP<const MV> > Q,
00161 Teuchos::Array<Teuchos::RCP<Teuchos::SerialDenseMatrix<int,ScalarType> > > C
00162 = Teuchos::tuple(Teuchos::RCP< Teuchos::SerialDenseMatrix<int,ScalarType> >(Teuchos::null))
00163 ) const = 0;
00164
00165
00166
00207 virtual int normalize (
00208 MV &X,
00209 Teuchos::RCP<Teuchos::SerialDenseMatrix<int,ScalarType> > B = Teuchos::null) const = 0;
00210
00211
00277 virtual int projectAndNormalize (
00278 MV &X,
00279 Teuchos::Array<Teuchos::RCP<const MV> > Q,
00280 Teuchos::Array<Teuchos::RCP<Teuchos::SerialDenseMatrix<int,ScalarType> > > C
00281 = Teuchos::tuple(Teuchos::RCP< Teuchos::SerialDenseMatrix<int,ScalarType> >(Teuchos::null)),
00282 Teuchos::RCP<Teuchos::SerialDenseMatrix<int,ScalarType> > B = Teuchos::null
00283 ) const = 0;
00284
00286
00288
00289
00295 virtual typename Teuchos::ScalarTraits< ScalarType >::magnitudeType orthonormError(const MV &X) const = 0;
00296
00302 virtual typename Teuchos::ScalarTraits<ScalarType>::magnitudeType orthogError(const MV &X1, const MV &X2) const = 0;
00303
00305
00306 };
00307
00308 }
00309
00310
00311 #endif
00312
00313