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); }