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