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 #ifndef TSFVECTORTYPE_HPP
00028 #define TSFVECTORTYPE_HPP
00029
00030 #include "SundanceHandle.hpp"
00031 #include "TSFVectorTypeExtensions.hpp"
00032 #include "TSFVectorSpaceDecl.hpp"
00033 #include "TSFGhostImporter.hpp"
00034
00035 namespace TSFExtended
00036 {
00037 using namespace Teuchos;
00038
00039
00040
00041
00042 template <class Scalar>
00043 class VectorType : public Sundance::Handle<VectorTypeExtensions<Scalar> >
00044 {
00045 public:
00046 HANDLE_CTORS(VectorType<Scalar>, VectorTypeExtensions<Scalar>);
00047
00048
00049
00050 VectorSpace<Scalar> createEvenlyPartitionedSpace(const MPIComm& comm,
00051 int nLocal) const ;
00052
00053
00054
00055
00056
00057
00058 VectorSpace<Scalar> createSpace(int dimension,
00059 int nLocal,
00060 const int* locallyOwnedIndices,
00061 const MPIComm& comm) const ;
00062
00063
00064
00065
00066
00067 RCP<GhostImporter<Scalar> >
00068 createGhostImporter(const VectorSpace<Scalar>& space,
00069 int nGhost,
00070 const int* ghostIndices) const ;
00071
00072
00073
00074
00075
00076 virtual RCP<MatrixFactory<Scalar> >
00077 createMatrixFactory(const VectorSpace<Scalar>& domain,
00078 const VectorSpace<Scalar>& range) const ;
00079
00080
00081 };
00082
00083
00084
00085
00086 template <class Scalar> inline
00087 VectorSpace<Scalar> VectorType<Scalar>::createSpace(int dimension,
00088 int nLocal,
00089 const int* locallyOwnedIndices, const MPIComm& comm) const
00090 {
00091 return this->ptr()->createSpace(dimension, nLocal, locallyOwnedIndices, comm);
00092 }
00093
00094 template <class Scalar> inline
00095 VectorSpace<Scalar> VectorType<Scalar>
00096 ::createEvenlyPartitionedSpace(const MPIComm& comm,
00097 int nLocal) const
00098 {
00099 return this->ptr()->createEvenlyPartitionedSpace(comm, nLocal);
00100 }
00101
00102 template <class Scalar> inline
00103 RCP<GhostImporter<Scalar> >
00104 VectorType<Scalar>::createGhostImporter(const VectorSpace<Scalar>& space,
00105 int nGhost,
00106 const int* ghostIndices) const
00107 {
00108 return this->ptr()->createGhostImporter(space, nGhost, ghostIndices);
00109 }
00110
00111 template <class Scalar> inline
00112 RCP<MatrixFactory<Scalar> >
00113 VectorType<Scalar>::createMatrixFactory(const VectorSpace<Scalar>& domain,
00114 const VectorSpace<Scalar>& range) const
00115 {
00116 return this->ptr()->createMatrixFactory(domain, range);
00117 }
00118
00119
00120 }
00121
00122 #endif