PlayaSerialVectorType.hpp

00001 /* @HEADER@ */
00002 //
00003 /* @HEADER@ */
00004 
00005 #ifndef PLAYA_SERIAL_VECTORTYPE_HPP
00006 #define PLAYA_SERIAL_VECTORTYPE_HPP
00007 
00008 #include "PlayaSerialVectorSpace.hpp"
00009 #include "PlayaHandleable.hpp"
00010 #include "PlayaPrintable.hpp"
00011 #include "Teuchos_Describable.hpp"
00012 #include "PlayaVectorTypeBase.hpp"
00013 //#include "PlayaLinearOperatorDecl.hpp"
00014 
00015 
00016 namespace Playa
00017 {
00018 using namespace Teuchos;
00019   
00024 class SerialVectorType : public VectorTypeBase<double>,
00025                          public Handleable<VectorTypeBase<double> >,
00026                          public Printable,
00027                          public Describable
00028 {
00029 public:
00031   SerialVectorType();
00032       
00034   virtual ~SerialVectorType() {;}
00035 
00041   RCP<const VectorSpaceBase<double> > 
00042   createSpace(int dimension, 
00043     int nLocal,
00044     const int* locallyOwnedIndices,
00045     const MPIComm& comm) const ;
00046 
00047 
00051   virtual VectorSpace<double> 
00052   createEvenlyPartitionedSpace(const MPIComm& comm,
00053     int nLocal) const ;
00054 
00055 
00065   RCP<GhostImporter<double> > 
00066   createGhostImporter(const VectorSpace<double>& space,
00067     int nGhost,
00068     const int* ghostIndices) const ;
00069 
00070 
00075   RCP<MatrixFactory<double> >
00076   createMatrixFactory(const VectorSpace<double>& domain,
00077     const VectorSpace<double>& range) const ;
00078 
00079     
00080 
00084   void print(std::ostream& os) const {os << description();}
00086 
00087   GET_RCP(VectorTypeBase<double>);
00088 };
00089   
00090 }
00091 
00092 #endif

doxygen