RCP<GhostImporter<double> > SerialVectorType::createGhostImporter(const VectorSpace<double>& space, int nGhost, const int* ghostIndices) const { TEUCHOS_TEST_FOR_EXCEPTION(dynamic_cast<const SerialVectorSpace*>(space.ptr().get())==0, std::runtime_error, "expected " << space << " to be a SerialVectorSpace"); return rcp(new SerialGhostImporter()); }
SerialVector::SerialVector(const VectorSpace<double>& vs) : SingleChunkVector<double>(), vecSpace_(vs), data_(vs.dim()), dim_(vs.dim()) { const SerialVectorSpace* rvs = dynamic_cast<const SerialVectorSpace*>(vs.ptr().get()); TEUCHOS_TEST_FOR_EXCEPTION(rvs==0, std::runtime_error, "could not cast vector space to SerialVectorSpace in " "SerialVector ctor"); }
RCP<MatrixFactory<double> > EpetraVectorType::createMatrixFactory(const VectorSpace<double>& domain, const VectorSpace<double>& range) const { RCP<const EpetraVectorSpace> pd = rcp_dynamic_cast<const EpetraVectorSpace>(domain.ptr()); RCP<const EpetraVectorSpace> pr = rcp_dynamic_cast<const EpetraVectorSpace>(range.ptr()); TEUCHOS_TEST_FOR_EXCEPTION(pd.get()==0, std::runtime_error, "incompatible domain space given to " "EpetraVectorType::createMatrix()"); TEUCHOS_TEST_FOR_EXCEPTION(pr.get()==0, std::runtime_error, "incompatible range space given to " "EpetraVectorType::createMatrix()"); // RCP<SingleScalarTypeOp<double> > A = rcp(new EpetraMatrix(pd, pr)); return rcp(new EpetraMatrixFactory(pd, pr)); }
RCP<GhostImporter<double> > EpetraVectorType::createGhostImporter(const VectorSpace<double>& space, int nGhost, const int* ghostIndices) const { const EpetraVectorSpace* p = dynamic_cast<const EpetraVectorSpace*>(space.ptr().get()); TEUCHOS_TEST_FOR_EXCEPTION(p==0, std::runtime_error, "non-epetra vector space [" << space.description() << "] given as " "argument to EpetraVectorType::createGhostImporter()"); return rcp(new EpetraGhostImporter(p->epetraMap(), nGhost, ghostIndices)); }