PlayaSerialVectorSpace.cpp
00001
00002
00003
00004
00005 #include "PlayaSerialVectorSpace.hpp"
00006 #include "PlayaSerialVector.hpp"
00007 #include "PlayaMPIComm.hpp"
00008 #include "PlayaOut.hpp"
00009
00010 #ifndef HAVE_TEUCHOS_EXPLICIT_INSTANTIATION
00011 #include "PlayaVectorSpaceImpl.hpp"
00012 #endif
00013
00014
00015
00016
00017 namespace Playa
00018 {
00019 using Teuchos::RCP;
00020
00021
00022 SerialVectorSpace::SerialVectorSpace(int dim)
00023 : dim_(dim), comm_(MPIComm::self())
00024 {}
00025
00026
00027
00028
00029 RCP<VectorBase<double> >
00030 SerialVectorSpace::createMember(const VectorSpace<double>& self) const
00031 {
00032 TEUCHOS_TEST_FOR_EXCEPTION(self.ptr().get() != this,
00033 InternalError,
00034 "inconsistency between space and self-reference in SerialVectorSpace::createMember()");
00035
00036 return rcp(new SerialVector(self));
00037 }
00038
00039 bool SerialVectorSpace::isCompatible(const VectorSpaceBase<double>* other) const
00040 {
00041 const SerialVectorSpace* svs = dynamic_cast<const SerialVectorSpace*>(other);
00042 if (svs == 0) return false;
00043 return this->dim() == svs->dim();
00044 }
00045
00046 string SerialVectorSpace::description() const
00047 {
00048 std::string rtn = "SerialVS[d=" + Teuchos::toString(this->dim()) + "]";
00049 return rtn;
00050 }
00051
00052 }
00053
00054