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 #ifndef THYRA_SERIAL_MULTI_VECTOR_STD_DECL_HPP
00030 #define THYRA_SERIAL_MULTI_VECTOR_STD_DECL_HPP
00031
00032 #include "Thyra_SerialMultiVectorBaseDecl.hpp"
00033
00034 namespace Thyra {
00035
00050 template<class Scalar>
00051 class SerialMultiVectorStd : virtual public SerialMultiVectorBase<Scalar> {
00052 public:
00053
00055 using SerialMultiVectorBase<Scalar>::subView;
00057 using SerialMultiVectorBase<Scalar>::col;
00058
00061
00063 SerialMultiVectorStd();
00064
00066 SerialMultiVectorStd(
00067 const Teuchos::RefCountPtr<const ScalarProdVectorSpaceBase<Scalar> > &range
00068 ,const Teuchos::RefCountPtr<const ScalarProdVectorSpaceBase<Scalar> > &domain
00069 );
00070
00072 SerialMultiVectorStd(
00073 const Teuchos::RefCountPtr<const ScalarProdVectorSpaceBase<Scalar> > &range
00074 ,const Teuchos::RefCountPtr<const ScalarProdVectorSpaceBase<Scalar> > &domain
00075 ,const Teuchos::RefCountPtr<Scalar> &values
00076 ,const Index leadingDim
00077 );
00078
00094 void initialize(
00095 const Teuchos::RefCountPtr<const ScalarProdVectorSpaceBase<Scalar> > &range
00096 ,const Teuchos::RefCountPtr<const ScalarProdVectorSpaceBase<Scalar> > &domain
00097 );
00098
00126 void initialize(
00127 const Teuchos::RefCountPtr<const ScalarProdVectorSpaceBase<Scalar> > &range
00128 ,const Teuchos::RefCountPtr<const ScalarProdVectorSpaceBase<Scalar> > &domain
00129 ,const Teuchos::RefCountPtr<Scalar> &values
00130 ,const Index leadingDim
00131 );
00132
00140 void uninitialize(
00141 Teuchos::RefCountPtr<const ScalarProdVectorSpaceBase<Scalar> > *range = NULL
00142 ,Teuchos::RefCountPtr<const ScalarProdVectorSpaceBase<Scalar> > *domain = NULL
00143 ,Teuchos::RefCountPtr<Scalar> *values = NULL
00144 ,Index *leadingDim = NULL
00145 );
00146
00148
00152 std::string description() const;
00154
00158 Teuchos::RefCountPtr< const ScalarProdVectorSpaceBase<Scalar> > rangeScalarProdVecSpc() const;
00160 Teuchos::RefCountPtr< const ScalarProdVectorSpaceBase<Scalar> > domainScalarProdVecSpc() const;
00162
00166 Teuchos::RefCountPtr<VectorBase<Scalar> > col(Index j);
00168 Teuchos::RefCountPtr<MultiVectorBase<Scalar> > subView( const Range1D& col_rng );
00170
00173
00175 void getData( const Scalar **values, Index *leadingDim ) const;
00177 void freeData( const Scalar *values ) const;
00179 void getData( Scalar **values, Index *leadingDim );
00181 void commitData( Scalar *values );
00183
00184 private:
00185
00186
00187
00188
00189 Teuchos::RefCountPtr<const ScalarProdVectorSpaceBase<Scalar> > range_;
00190 Teuchos::RefCountPtr<const ScalarProdVectorSpaceBase<Scalar> > domain_;
00191 Teuchos::RefCountPtr<Scalar> values_;
00192 Index leadingDim_;
00193 Index numRows_;
00194 Index numCols_;
00195
00196 };
00197
00198 }
00199
00200 #endif // THYRA_SERIAL_MULTI_VECTOR_STD_DECL_HPP