Go to the documentation of this file.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
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042 #ifndef PLAYA_VECTORTYPE_HPP
00043 #define PLAYA_VECTORTYPE_HPP
00044
00045 #include "PlayaHandle.hpp"
00046 #include "PlayaVectorTypeBase.hpp"
00047 #include "PlayaVectorSpaceDecl.hpp"
00048
00049 namespace Playa
00050 {
00051 using namespace Teuchos;
00052
00053
00054
00055
00056
00057 template <class Scalar>
00058 class VectorType : public Playa::Handle<VectorTypeBase<Scalar> >
00059 {
00060 public:
00061 HANDLE_CTORS(VectorType<Scalar>, VectorTypeBase<Scalar>);
00062
00063
00064
00065
00066 VectorSpace<Scalar> createEvenlyPartitionedSpace(const MPIComm& comm,
00067 int nLocal) const ;
00068
00069
00070
00071
00072
00073
00074
00075
00076 VectorSpace<Scalar> createSpace(int dimension,
00077 int nLocal,
00078 const int* locallyOwnedIndices,
00079 const MPIComm& comm) const ;
00080
00081
00082
00083
00084
00085
00086 RCP<GhostImporter<Scalar> >
00087 createGhostImporter(const VectorSpace<Scalar>& space,
00088 int nGhost,
00089 const int* ghostIndices) const ;
00090
00091
00092
00093
00094
00095 virtual RCP<MatrixFactory<Scalar> >
00096 createMatrixFactory(const VectorSpace<Scalar>& domain,
00097 const VectorSpace<Scalar>& range) const ;
00098
00099 };
00100
00101
00102
00103
00104 template <class Scalar> inline
00105 VectorSpace<Scalar> VectorType<Scalar>::createSpace(int dimension,
00106 int nLocal,
00107 const int* locallyOwnedIndices, const MPIComm& comm) const
00108 {
00109 return this->ptr()->createSpace(dimension, nLocal, locallyOwnedIndices, comm);
00110 }
00111
00112 template <class Scalar> inline
00113 VectorSpace<Scalar> VectorType<Scalar>
00114 ::createEvenlyPartitionedSpace(const MPIComm& comm,
00115 int nLocal) const
00116 {
00117 return this->ptr()->createEvenlyPartitionedSpace(comm, nLocal);
00118 }
00119
00120
00121 template <class Scalar> inline
00122 RCP<GhostImporter<Scalar> >
00123 VectorType<Scalar>::createGhostImporter(const VectorSpace<Scalar>& space,
00124 int nGhost,
00125 const int* ghostIndices) const
00126 {
00127 return this->ptr()->createGhostImporter(space, nGhost, ghostIndices);
00128 }
00129
00130 template <class Scalar> inline
00131 RCP<MatrixFactory<Scalar> >
00132 VectorType<Scalar>::createMatrixFactory(const VectorSpace<Scalar>& domain,
00133 const VectorSpace<Scalar>& range) const
00134 {
00135 return this->ptr()->createMatrixFactory(domain, range);
00136 }
00137
00138
00139 }
00140
00141 #endif