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_MPI_MULTI_VECTOR_STD_DECL_HPP
00030 #define THYRA_MPI_MULTI_VECTOR_STD_DECL_HPP
00031
00032 #include "Thyra_MPIMultiVectorBase.hpp"
00033
00034 namespace Thyra {
00035
00052 template<class Scalar>
00053 class MPIMultiVectorStd : virtual public MPIMultiVectorBase<Scalar> {
00054 public:
00055
00057 using MPIMultiVectorBase<Scalar>::subView;
00059 using MPIMultiVectorBase<Scalar>::col;
00060
00063
00065 MPIMultiVectorStd();
00066
00068 MPIMultiVectorStd(
00069 const Teuchos::RefCountPtr<const MPIVectorSpaceBase<Scalar> > &mpiRangeSpace
00070 ,const Teuchos::RefCountPtr<const ScalarProdVectorSpaceBase<Scalar> > &domainSpace
00071 ,const Teuchos::RefCountPtr<Scalar> &localValues
00072 ,const Index leadingDim
00073 );
00074
00100 void initialize(
00101 const Teuchos::RefCountPtr<const MPIVectorSpaceBase<Scalar> > &mpiRangeSpace
00102 ,const Teuchos::RefCountPtr<const ScalarProdVectorSpaceBase<Scalar> > &domainSpace
00103 ,const Teuchos::RefCountPtr<Scalar> &localValues
00104 ,const Index leadingDim
00105 );
00106
00112 void uninitialize(
00113 Teuchos::RefCountPtr<const MPIVectorSpaceBase<Scalar> > *mpiRangeSpace = NULL
00114 ,Teuchos::RefCountPtr<const ScalarProdVectorSpaceBase<Scalar> > *domainSpace = NULL
00115 ,Teuchos::RefCountPtr<Scalar> *localValues = NULL
00116 ,Index *leadingDim = NULL
00117 );
00118
00120
00124 std::string description() const;
00126
00130 Teuchos::RefCountPtr< const ScalarProdVectorSpaceBase<Scalar> > domainScalarProdVecSpc() const;
00132
00136 Teuchos::RefCountPtr<VectorBase<Scalar> > col(Index j);
00138 Teuchos::RefCountPtr<MultiVectorBase<Scalar> > subView( const Range1D& col_rng );
00140
00143
00145 Teuchos::RefCountPtr<const MPIVectorSpaceBase<Scalar> > mpiSpace() const;
00147 void getLocalData( Scalar **localValues, Index *leadingDim );
00149 void commitLocalData( Scalar *localValues );
00151 void getLocalData( const Scalar **localValues, Index *leadingDim ) const;
00153 void freeLocalData( const Scalar *localValues ) const;
00155
00156 private:
00157
00158
00159
00160
00161 Teuchos::RefCountPtr<const MPIVectorSpaceBase<Scalar> > mpiRangeSpace_;
00162 Teuchos::RefCountPtr<const ScalarProdVectorSpaceBase<Scalar> > domainSpace_;
00163 Teuchos::RefCountPtr<Scalar> localValues_;
00164 Index leadingDim_;
00165
00166 };
00167
00168 }
00169
00170 #endif // THYRA_MPI_MULTI_VECTOR_STD_DECL_HPP