54 template<
class GlobalOrdinal,
class Node>
57 return *tX.getEpetra_IntMultiVector();
60 template<
class GlobalOrdinal,
class Node>
63 return *tX.getEpetra_IntMultiVector();
67 #ifndef XPETRA_EPETRA_NO_32BIT_GLOBAL_INDICES
68 #ifdef HAVE_XPETRA_TPETRA
69 #include "TpetraCore_config.h"
70 #if ((defined(EPETRA_HAVE_OMP) && !defined(HAVE_TPETRA_INST_OPENMP)) || \
71 (!defined(EPETRA_HAVE_OMP) && !defined(HAVE_TPETRA_INST_SERIAL)))
72 template class EpetraIntMultiVectorT<int, Xpetra::EpetraNode >;
73 template Epetra_IntMultiVector & toEpetra<int,Xpetra::EpetraNode >(MultiVector<int, int, int, Xpetra::EpetraNode> &);
74 template const Epetra_IntMultiVector & toEpetra<int, Xpetra::EpetraNode >(
const MultiVector<int, int, int, Xpetra::EpetraNode> &);
76 #ifdef HAVE_TPETRA_INST_SERIAL
77 template class EpetraIntMultiVectorT<int, Kokkos::Compat::KokkosSerialWrapperNode >;
78 template Epetra_IntMultiVector & toEpetra<int,Kokkos::Compat::KokkosSerialWrapperNode >(MultiVector<int, int, int, Kokkos::Compat::KokkosSerialWrapperNode> &);
79 template const Epetra_IntMultiVector & toEpetra<int, Kokkos::Compat::KokkosSerialWrapperNode >(
const MultiVector<int, int, int, Kokkos::Compat::KokkosSerialWrapperNode> &);
81 #ifdef HAVE_TPETRA_INST_PTHREAD
82 template class EpetraIntMultiVectorT<int, Kokkos::Compat::KokkosThreadsWrapperNode>;
83 template Epetra_IntMultiVector & toEpetra<int,Kokkos::Compat::KokkosThreadsWrapperNode >(MultiVector<int, int, int, Kokkos::Compat::KokkosThreadsWrapperNode> &);
84 template const Epetra_IntMultiVector & toEpetra<int, Kokkos::Compat::KokkosThreadsWrapperNode >(
const MultiVector<int, int, int, Kokkos::Compat::KokkosThreadsWrapperNode> &);
86 #ifdef HAVE_TPETRA_INST_OPENMP
87 template class EpetraIntMultiVectorT<int, Kokkos::Compat::KokkosOpenMPWrapperNode >;
88 template Epetra_IntMultiVector & toEpetra<int,Kokkos::Compat::KokkosOpenMPWrapperNode >(MultiVector<int, int, int, Kokkos::Compat::KokkosOpenMPWrapperNode> &);
89 template const Epetra_IntMultiVector & toEpetra<int, Kokkos::Compat::KokkosOpenMPWrapperNode >(
const MultiVector<int, int, int, Kokkos::Compat::KokkosOpenMPWrapperNode> &);
91 #ifdef HAVE_TPETRA_INST_CUDA
92 typedef Kokkos::Compat::KokkosCudaWrapperNode default_node_type;
93 template class EpetraIntMultiVectorT<int, default_node_type >;
94 template Epetra_IntMultiVector & toEpetra<int,default_node_type >(MultiVector<int, int, int, default_node_type> &);
95 template const Epetra_IntMultiVector & toEpetra<int,default_node_type >(
const MultiVector<int, int, int, default_node_type> &);
100 template class EpetraIntMultiVectorT<int, default_node_type >;
101 template Epetra_IntMultiVector & toEpetra<int,default_node_type >(MultiVector<int, int, int, default_node_type> &);
102 template const Epetra_IntMultiVector & toEpetra<int,default_node_type >(
const MultiVector<int, int, int, default_node_type> &);
103 #endif // HAVE_XPETRA_TPETRA
106 #ifndef XPETRA_EPETRA_NO_64BIT_GLOBAL_INDICES
107 #ifdef HAVE_XPETRA_TPETRA
108 #include "TpetraCore_config.h"
109 #if ((defined(EPETRA_HAVE_OMP) && !defined(HAVE_TPETRA_INST_OPENMP)) || \
110 (!defined(EPETRA_HAVE_OMP) && !defined(HAVE_TPETRA_INST_SERIAL)))
111 template class EpetraIntMultiVectorT<long long, Xpetra::EpetraNode >;
112 template Epetra_IntMultiVector & toEpetra<long long,Xpetra::EpetraNode >(MultiVector<int, int, long long, Xpetra::EpetraNode> &);
113 template const Epetra_IntMultiVector & toEpetra<long long, Xpetra::EpetraNode >(
const MultiVector<int, int, long long, Xpetra::EpetraNode> &);
115 #ifdef HAVE_TPETRA_INST_SERIAL
116 template class EpetraIntMultiVectorT<long long, Kokkos::Compat::KokkosSerialWrapperNode >;
117 template Epetra_IntMultiVector & toEpetra<long long,Kokkos::Compat::KokkosSerialWrapperNode >(MultiVector<int, int, long long, Kokkos::Compat::KokkosSerialWrapperNode> &);
118 template const Epetra_IntMultiVector & toEpetra<long long, Kokkos::Compat::KokkosSerialWrapperNode >(
const MultiVector<int, int, long long, Kokkos::Compat::KokkosSerialWrapperNode> &);
120 #ifdef HAVE_TPETRA_INST_PTHREAD
121 template class EpetraIntMultiVectorT<long long, Kokkos::Compat::KokkosThreadsWrapperNode>;
122 template Epetra_IntMultiVector & toEpetra<long long,Kokkos::Compat::KokkosThreadsWrapperNode >(MultiVector<int, int, long long, Kokkos::Compat::KokkosThreadsWrapperNode> &);
123 template const Epetra_IntMultiVector & toEpetra<long long, Kokkos::Compat::KokkosThreadsWrapperNode >(
const MultiVector<int, int, long long, Kokkos::Compat::KokkosThreadsWrapperNode> &);
125 #ifdef HAVE_TPETRA_INST_OPENMP
126 template class EpetraIntMultiVectorT<long long, Kokkos::Compat::KokkosOpenMPWrapperNode >;
127 template Epetra_IntMultiVector & toEpetra<long long,Kokkos::Compat::KokkosOpenMPWrapperNode >(MultiVector<int, int, long long, Kokkos::Compat::KokkosOpenMPWrapperNode> &);
128 template const Epetra_IntMultiVector & toEpetra<long long, Kokkos::Compat::KokkosOpenMPWrapperNode >(
const MultiVector<int, int, long long, Kokkos::Compat::KokkosOpenMPWrapperNode> &);
130 #ifdef HAVE_TPETRA_INST_CUDA
131 typedef Kokkos::Compat::KokkosCudaWrapperNode default_node_type;
132 template class EpetraIntMultiVectorT<long long, default_node_type >;
133 template Epetra_IntMultiVector & toEpetra<long long,default_node_type >(MultiVector<int, int, long long, default_node_type> &);
134 template const Epetra_IntMultiVector & toEpetra<long long,default_node_type >(
const MultiVector<int, int, long long, default_node_type> &);
139 template class EpetraIntMultiVectorT<long long, default_node_type >;
140 template Epetra_IntMultiVector & toEpetra<long long,default_node_type >(MultiVector<int, int, long long, default_node_type> &);
141 template const Epetra_IntMultiVector & toEpetra<long long,default_node_type >(
const MultiVector<int, int, long long, default_node_type> &);
142 #endif // HAVE_XPETRA_TPETRA
const Epetra_CrsGraph & toEpetra(const RCP< const CrsGraph< int, GlobalOrdinal, Node > > &graph)
#define XPETRA_DYNAMIC_CAST(type, obj, newObj, exceptionMsg)