void get_1d_copy_helper<MV,S>:: do_get (const Teuchos::Ptr<const MV>& mv, const Teuchos::ArrayView<S>& vals, const size_t ldx, EDistribution distribution, typename MV::global_ordinal_t indexBase) { typedef typename MV::local_ordinal_t lo_t; typedef typename MV::global_ordinal_t go_t; typedef typename MV::global_size_t gs_t; typedef typename MV::node_t node_t; TEUCHOS_TEST_FOR_EXCEPTION( mv.getRawPtr () == NULL, std::invalid_argument, "Amesos2::get_1d_copy_helper::do_get(5 args): mv is null."); Teuchos::RCP<const Tpetra::Map<lo_t,go_t,node_t> > map = Amesos2::Util::getDistributionMap<lo_t,go_t,gs_t,node_t> (distribution, mv->getGlobalLength (), mv->getComm (), indexBase, mv->getMap()); do_get (mv, vals, ldx, Teuchos::ptrInArg (*map), distribution); }
Teuchos::RCP<const Teuchos::Comm<Teuchos::Ordinal> > getComm(const Thyra::VectorSpaceBase<Scalar> &space) { typedef Thyra::SpmdVectorSpaceBase<Scalar> SVSB; const Teuchos::Ptr<const SVSB> space_downcasted = Teuchos::ptr_dynamic_cast<const SVSB>(Teuchos::ptrFromRef(space)); if (Teuchos::nonnull(space_downcasted)) { return space_downcasted->getComm(); } else { return Teuchos::null; } }
void put_1d_data_helper<MV,S>::do_put(const Teuchos::Ptr<MV>& mv, const Teuchos::ArrayView<S>& data, const size_t ldx, EDistribution distribution, typename MV::global_ordinal_t indexBase) { typedef typename MV::local_ordinal_t lo_t; typedef typename MV::global_ordinal_t go_t; typedef typename MV::global_size_t gs_t; typedef typename MV::node_t node_t; const Teuchos::RCP<const Tpetra::Map<lo_t,go_t,node_t> > map = Amesos2::Util::getDistributionMap<lo_t,go_t,gs_t,node_t>(distribution, mv->getGlobalLength(), mv->getComm(), indexBase); do_put(mv, data, ldx, Teuchos::ptrInArg(*map)); }