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
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042 #ifndef NOX_BELOS_MULTIVEC_H
00043 #define NOX_BELOS_MULTIVEC_H
00044
00045 #include "BelosMultiVec.hpp"
00046 #include "NOX_Abstract_MultiVector.H"
00047 #include "NOX_Abstract_Group.H"
00048
00049 namespace NOX {
00050
00051 namespace Belos {
00052
00054 class MultiVector : public ::Belos::MultiVec<double> {
00055
00056 public:
00057
00059 MultiVector(NOX::Abstract::MultiVector& noxMultiVec);
00060
00062 MultiVector(const NOX::Belos::MultiVector& source);
00063
00065 virtual ~MultiVector();
00066
00068 virtual NOX::Belos::MultiVector&
00069 operator=(const NOX::Belos::MultiVector& source);
00070
00072 virtual ::Belos::MultiVec<double>* Clone(const int numvecs);
00073
00078 virtual ::Belos::MultiVec<double>* CloneCopy();
00079
00084 virtual ::Belos::MultiVec<double>* CloneCopy(int index[], int numvecs);
00085
00090 virtual ::Belos::MultiVec<double>* CloneView(int index[], int numvecs);
00091
00092
00094 virtual int GetVecLength() const;
00095
00097 virtual int GetNumberVecs() const;
00098
00103 virtual void MvTimesMatAddMv(double alpha,
00104 ::Belos::MultiVec<double>& A,
00105 Teuchos::SerialDenseMatrix<int,double>& B,
00106 double beta);
00107
00111 virtual void MvAddMv(double alpha,
00112 ::Belos::MultiVec<double>& A,
00113 double beta,
00114 ::Belos::MultiVec<double>& B);
00115
00120 virtual void MvTransMv(double alpha,
00121 ::Belos::MultiVec<double>& A,
00122 Teuchos::SerialDenseMatrix<int,double>& B);
00123
00125 virtual ::Belos::ReturnType
00126 MvNorm(double *normvec, ::Belos::NormType norm_type = ::Belos::TwoNorm);
00127
00129 virtual void SetBlock(::Belos::MultiVec<double>& A, int index[],
00130 int numvecs);
00131
00133 virtual void MvRandom();
00134
00136 virtual void
00137 MvInit(double alpha = Teuchos::ScalarTraits<double>::zero());
00138
00140 virtual void MvPrint(ostream& os);
00141
00143 NOX::Abstract::MultiVector& getNoxMultiVector();
00144
00146 const NOX::Abstract::MultiVector& getNoxMultiVector() const;
00147
00148 protected:
00149
00151 MultiVector(NOX::Abstract::MultiVector& noxMultiVec, bool ownsVecFlag);
00152
00157 ::Belos::ReturnType
00158 noxReturnTypeToBelos(NOX::Abstract::Group::ReturnType noxStatus) const;
00159
00160 protected:
00161
00163 NOX::Abstract::MultiVector* vecPtr;
00164
00166 bool ownsVec;
00167
00168 };
00169 }
00170 }
00171
00172 #endif