void diff_type_get_copy<MV,S>:: apply (const Teuchos::Ptr<const MV>& mv, const Teuchos::ArrayView<S>& v, const size_t& ldx, Teuchos::Ptr<const Tpetra::Map<typename MV::local_ordinal_t, typename MV::global_ordinal_t, typename MV::node_t> > distribution_map, EDistribution distribution ) { typedef typename MV::scalar_t mv_scalar_t; typedef typename Teuchos::Array<mv_scalar_t>::size_type size_type; TEUCHOS_TEST_FOR_EXCEPTION( mv.getRawPtr () == NULL, std::invalid_argument, "Amesos2::diff_type_get_copy::apply: mv is null."); TEUCHOS_TEST_FOR_EXCEPTION( distribution_map.getRawPtr () == NULL, std::invalid_argument, "Amesos2::diff_type_get_copy::apply: distribution_map is null."); const size_type vals_length = v.size (); Teuchos::Array<mv_scalar_t> vals_tmp (vals_length); mv->get1dCopy (vals_tmp (), ldx, distribution_map, distribution); for (size_type i = 0; i < vals_length; ++i) { v[i] = Teuchos::as<S> (vals_tmp[i]); } }
void diff_type_get_copy<MV,S>::apply(const Teuchos::Ptr<const MV>& mv, const Teuchos::ArrayView<S>& v, const size_t& ldx, Teuchos::Ptr<const Tpetra::Map<typename MV::local_ordinal_t, typename MV::global_ordinal_t, typename MV::node_t> > distribution_map ) { typedef typename MV::scalar_t mv_scalar_t; int vals_length = v.size(); Teuchos::Array<mv_scalar_t> vals_tmp(vals_length); mv->get1dCopy(vals_tmp(), ldx, distribution_map); for ( int i = 0; i < vals_length; ++i ){ v[i] = Teuchos::as<S>(vals_tmp[i]); } }