00001 
00002 
00003 
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 
00014 
00015 
00016 namespace Playa
00017 {
00018 using namespace Teuchos;
00019   
00020 
00021 
00022 
00023 
00024 class SerialVectorType : public VectorTypeBase<double>,
00025                          public Handleable<VectorTypeBase<double> >,
00026                          public Printable,
00027                          public Describable
00028 {
00029 public:
00030 
00031   SerialVectorType();
00032       
00033 
00034   virtual ~SerialVectorType() {;}
00035 
00036 
00037 
00038 
00039 
00040 
00041   RCP<const VectorSpaceBase<double> > 
00042   createSpace(int dimension, 
00043     int nLocal,
00044     const int* locallyOwnedIndices,
00045     const MPIComm& comm) const ;
00046 
00047 
00048 
00049 
00050 
00051   virtual VectorSpace<double> 
00052   createEvenlyPartitionedSpace(const MPIComm& comm,
00053     int nLocal) const ;
00054 
00055 
00056 
00057 
00058 
00059 
00060 
00061 
00062 
00063 
00064 
00065   RCP<GhostImporter<double> > 
00066   createGhostImporter(const VectorSpace<double>& space,
00067     int nGhost,
00068     const int* ghostIndices) const ;
00069 
00070 
00071 
00072 
00073 
00074 
00075   RCP<MatrixFactory<double> >
00076   createMatrixFactory(const VectorSpace<double>& domain,
00077     const VectorSpace<double>& range) const ;
00078 
00079     
00080 
00081 
00082 
00083 
00084   void print(std::ostream& os) const {os << description();}
00085 
00086 
00087   GET_RCP(VectorTypeBase<double>);
00088 };
00089   
00090 }
00091 
00092 #endif