void getOwnedIndices_T<int>(const fei::SharedPtr<fei::VectorSpace> & vs,std::vector<int> & indices) { int numIndices, ni; numIndices = vs->getNumIndices_Owned(); indices.resize(numIndices); // directly write to int indices vs->getIndices_Owned(numIndices,&indices[0],ni); }
fei::SharedPtr<fei::Vector> Factory_Aztec::createVector(fei::SharedPtr<fei::VectorSpace> vecSpace, bool isSolutionVector, int numVectors) { std::vector<int> indices; int err = 0, localSize = 0; if (reducer_.get() != NULL) { indices = reducer_->getLocalReducedEqns(); localSize = indices.size(); } else { if (blockEntryMatrix_) { localSize = vecSpace->getNumBlkIndices_Owned(); indices.resize(localSize*2); err = vecSpace->getBlkIndices_Owned(localSize, &indices[0], &indices[localSize], localSize); } else { localSize = vecSpace->getNumIndices_Owned(); err = vecSpace->getIndices_Owned(indices); } } if (err != 0) { throw std::runtime_error("fei::Factory_Aztec: error in vecSpace->getIndices_Owned"); } fei::SharedPtr<fei::Vector> feivec, tmpvec; if (reducer_.get() != NULL) { feivec.reset(new fei::VectorReducer(reducer_, tmpvec, isSolutionVector)); } else { feivec = tmpvec; } return(feivec); }