55 #ifndef AMESOS2_MULTIVEC_ADAPTER_DECL_HPP 56 #define AMESOS2_MULTIVEC_ADAPTER_DECL_HPP 58 #include <Teuchos_RCP.hpp> 59 #include <Teuchos_Ptr.hpp> 60 #include <Teuchos_ArrayView.hpp> 61 #include <Tpetra_Map.hpp> 185 Teuchos::RCP<MultiVecAdapter<MV> >
189 if(mv.is_null())
return Teuchos::null;
194 Teuchos::RCP<const MultiVecAdapter<MV> >
195 createConstMultiVecAdapter(Teuchos::RCP<const MV> mv){
197 using Teuchos::rcp_const_cast;
199 if(mv.is_null())
return Teuchos::null;
200 return( rcp(
new MultiVecAdapter<MV>(Teuchos::rcp_const_cast<MV,const MV>(mv))).getConst() );
214 template <
typename MV>
215 struct same_type_get_copy {
216 static void apply(
const Teuchos::Ptr<const MV>& mv,
217 const Teuchos::ArrayView<typename MV::scalar_t>& v,
219 Teuchos::Ptr<
const Tpetra::Map<typename MV::local_ordinal_t, typename MV::global_ordinal_t, typename MV::node_t> > distribution_map );
228 template <
typename MV,
typename S>
229 struct diff_type_get_copy {
230 static void apply(
const Teuchos::Ptr<const MV>& mv,
231 const Teuchos::ArrayView<S>& v,
233 Teuchos::Ptr<
const Tpetra::Map<typename MV::local_ordinal_t, typename MV::global_ordinal_t, typename MV::node_t> > distribution_map );
242 template <
class MV,
typename S>
245 do_get (
const Teuchos::Ptr<const MV>& mv,
246 const Teuchos::ArrayView<S>& vals,
248 Teuchos::Ptr<
const Tpetra::Map<typename MV::local_ordinal_t, typename MV::global_ordinal_t, typename MV::node_t> > distribution_map );
251 do_get (
const Teuchos::Ptr<const MV>& mv,
252 const Teuchos::ArrayView<S>& vals,
255 typename MV::global_ordinal_t indexBase = 0);
258 do_get (
const Teuchos::Ptr<const MV>& mv,
259 const Teuchos::ArrayView<S>& vals,
267 template <
typename MV>
268 struct same_type_data_put {
269 static void apply(
const Teuchos::Ptr<MV>& mv,
270 const Teuchos::ArrayView<typename MV::scalar_t>& data,
272 Teuchos::Ptr<
const Tpetra::Map<typename MV::local_ordinal_t, typename MV::global_ordinal_t, typename MV::node_t> > distribution_map );
281 template <
typename MV,
typename S>
282 struct diff_type_data_put {
283 static void apply(
const Teuchos::Ptr<MV>& mv,
284 const Teuchos::ArrayView<S>& data,
286 Teuchos::Ptr<
const Tpetra::Map<typename MV::local_ordinal_t, typename MV::global_ordinal_t, typename MV::node_t> > distribution_map );
295 template <
class MV,
typename S>
297 static void do_put(
const Teuchos::Ptr<MV>& mv,
298 const Teuchos::ArrayView<S>& data,
300 Teuchos::Ptr<
const Tpetra::Map<typename MV::local_ordinal_t, typename MV::global_ordinal_t, typename MV::node_t> > distribution_map );
302 static void do_put(
const Teuchos::Ptr<MV>& mv,
303 const Teuchos::ArrayView<S>& data,
305 EDistribution distribution,
typename MV::global_ordinal_t indexBase = 0);
307 static void do_put(
const Teuchos::Ptr<MV>& mv,
308 const Teuchos::ArrayView<S>& data,
315 #ifdef HAVE_AMESOS2_EPETRA 319 #endif // AMESOS2_MULTIVEC_ADAPTER_DECL_HPP Teuchos::RCP< MultiVecAdapter< MV > > createMultiVecAdapter(Teuchos::RCP< MV > mv)
Factory creation method for MultiVecAdapters.
Definition: Amesos2_MultiVecAdapter_decl.hpp:186
Helper class for getting 1-D copies of multivectors.
Definition: Amesos2_MultiVecAdapter_decl.hpp:243
Definition: Amesos2_AbstractConcreteMatrixAdapter.hpp:48
Amesos2::MultiVecAdapter specialization for the Tpetra::MultiVector class.
Amesos2::MultiVecAdapter specialization for the Epetra_MultiVector class.
Enum and other types declarations for Amesos2.
EDistribution
Definition: Amesos2_TypeDecl.hpp:123
Helper class for putting 1-D data arrays into multivectors.
Definition: Amesos2_MultiVecAdapter_decl.hpp:296
A templated MultiVector class adapter for Amesos2.
Definition: Amesos2_MultiVecAdapter_decl.hpp:175