54 #include "Epetra_SerialComm.h" 60 #ifndef XPETRA_EPETRA_NO_32BIT_GLOBAL_INDICES 74 #ifndef XPETRA_EPETRA_NO_64BIT_GLOBAL_INDICES 88 template<
class GlobalOrdinal,
class Node>
91 return *tX.getEpetra_MultiVector();
94 template<
class GlobalOrdinal,
class Node>
97 return *tX.getEpetra_MultiVector();
101 template<
class GlobalOrdinal,
class Node>
102 RCP<MultiVector<double, int, GlobalOrdinal,Node> >
toXpetra(RCP<Epetra_MultiVector> vec) {
106 return Teuchos::null;
111 #ifndef XPETRA_EPETRA_NO_32BIT_GLOBAL_INDICES 112 #ifdef HAVE_XPETRA_TPETRA 113 #include "TpetraCore_config.h" 114 #if ((defined(EPETRA_HAVE_OMP) && !defined(HAVE_TPETRA_INST_OPENMP)) || \ 115 (!defined(EPETRA_HAVE_OMP) && !defined(HAVE_TPETRA_INST_SERIAL))) 116 template class EpetraMultiVectorT<int, Xpetra::EpetraNode >;
117 template RCP<MultiVector<double, int, int, Xpetra::EpetraNode > > toXpetra<int, Xpetra::EpetraNode>(RCP<Epetra_MultiVector>);
118 template Epetra_MultiVector & toEpetra<int,Xpetra::EpetraNode >(MultiVector<double, int, int,Xpetra::EpetraNode> &);
119 template const Epetra_MultiVector & toEpetra<int, Xpetra::EpetraNode >(
const MultiVector<double, int, int, Xpetra::EpetraNode > &);
122 #ifdef HAVE_TPETRA_INST_SERIAL 123 template class EpetraMultiVectorT<int, Kokkos::Compat::KokkosSerialWrapperNode >;
124 template RCP<MultiVector<double, int, int, Kokkos::Compat::KokkosSerialWrapperNode > > toXpetra<int, Kokkos::Compat::KokkosSerialWrapperNode>(RCP<Epetra_MultiVector>);
125 template Epetra_MultiVector & toEpetra<int,Kokkos::Compat::KokkosSerialWrapperNode >(MultiVector<double, int, int, Kokkos::Compat::KokkosSerialWrapperNode> &);
126 template const Epetra_MultiVector & toEpetra<int, Kokkos::Compat::KokkosSerialWrapperNode >(
const MultiVector<double, int, int, Kokkos::Compat::KokkosSerialWrapperNode > &);
128 #ifdef HAVE_TPETRA_INST_PTHREAD 129 template class EpetraMultiVectorT<int, Kokkos::Compat::KokkosThreadsWrapperNode >;
130 template RCP<MultiVector<double, int, int, Kokkos::Compat::KokkosThreadsWrapperNode > > toXpetra<int, Kokkos::Compat::KokkosThreadsWrapperNode>(RCP<Epetra_MultiVector>);
131 template Epetra_MultiVector & toEpetra<int,Kokkos::Compat::KokkosThreadsWrapperNode >(MultiVector<double, int, int, Kokkos::Compat::KokkosThreadsWrapperNode> &);
132 template const Epetra_MultiVector & toEpetra<int, Kokkos::Compat::KokkosThreadsWrapperNode >(
const MultiVector<double, int, int, Kokkos::Compat::KokkosThreadsWrapperNode > &);
134 #ifdef HAVE_TPETRA_INST_OPENMP 135 template class EpetraMultiVectorT<int, Kokkos::Compat::KokkosOpenMPWrapperNode >;
136 template RCP<MultiVector<double, int, int, Kokkos::Compat::KokkosOpenMPWrapperNode > > toXpetra<int, Kokkos::Compat::KokkosOpenMPWrapperNode>(RCP<Epetra_MultiVector>);
137 template Epetra_MultiVector & toEpetra<int,Kokkos::Compat::KokkosOpenMPWrapperNode >(MultiVector<double, int, int, Kokkos::Compat::KokkosOpenMPWrapperNode> &);
138 template const Epetra_MultiVector & toEpetra<int, Kokkos::Compat::KokkosOpenMPWrapperNode >(
const MultiVector<double, int, int, Kokkos::Compat::KokkosOpenMPWrapperNode > &);
140 #ifdef HAVE_TPETRA_INST_CUDA 141 template class EpetraMultiVectorT<int, Kokkos::Compat::KokkosCudaWrapperNode >;
142 template RCP<MultiVector<double, int, int, Kokkos::Compat::KokkosCudaWrapperNode > > toXpetra<int, Kokkos::Compat::KokkosCudaWrapperNode>(RCP<Epetra_MultiVector>);
143 template Epetra_MultiVector & toEpetra<int,Kokkos::Compat::KokkosCudaWrapperNode >(MultiVector<double, int, int,Kokkos::Compat::KokkosCudaWrapperNode> &);
144 template const Epetra_MultiVector & toEpetra<int, Kokkos::Compat::KokkosCudaWrapperNode >(
const MultiVector<double, int, int, Kokkos::Compat::KokkosCudaWrapperNode > &);
146 #else // Tpetra is disabled 148 template class EpetraMultiVectorT<int, default_node_type >;
149 template RCP<MultiVector<double, int, int, default_node_type > > toXpetra<int, default_node_type>(RCP<Epetra_MultiVector>);
150 template Epetra_MultiVector & toEpetra<int,default_node_type >(MultiVector<double, int, int,default_node_type> &);
151 template const Epetra_MultiVector & toEpetra<int, default_node_type >(
const MultiVector<double, int, int, default_node_type > &);
155 #ifndef XPETRA_EPETRA_NO_64BIT_GLOBAL_INDICES 156 #ifdef HAVE_XPETRA_TPETRA 157 #include "TpetraCore_config.h" 158 #if ((defined(EPETRA_HAVE_OMP) && !defined(HAVE_TPETRA_INST_OPENMP)) || \ 159 (!defined(EPETRA_HAVE_OMP) && !defined(HAVE_TPETRA_INST_SERIAL))) 160 template class EpetraMultiVectorT<long long, Xpetra::EpetraNode >;
161 template RCP<MultiVector<double, int, long long, Xpetra::EpetraNode > > toXpetra<long long, Xpetra::EpetraNode>(RCP<Epetra_MultiVector>);
162 template Epetra_MultiVector & toEpetra<long long,Xpetra::EpetraNode >(MultiVector<double, int, long long,Xpetra::EpetraNode> &);
163 template const Epetra_MultiVector & toEpetra<long long, Xpetra::EpetraNode >(
const MultiVector<double, int, long long, Xpetra::EpetraNode > &);
166 #ifdef HAVE_TPETRA_INST_SERIAL 167 template class EpetraMultiVectorT<long long, Kokkos::Compat::KokkosSerialWrapperNode >;
168 template RCP<MultiVector<double, int, long long, Kokkos::Compat::KokkosSerialWrapperNode > > toXpetra<long long, Kokkos::Compat::KokkosSerialWrapperNode>(RCP<Epetra_MultiVector>);
169 template Epetra_MultiVector & toEpetra<long long,Kokkos::Compat::KokkosSerialWrapperNode >(MultiVector<double, int, long long, Kokkos::Compat::KokkosSerialWrapperNode> &);
170 template const Epetra_MultiVector & toEpetra<long long, Kokkos::Compat::KokkosSerialWrapperNode >(
const MultiVector<double, int, long long, Kokkos::Compat::KokkosSerialWrapperNode > &);
172 #ifdef HAVE_TPETRA_INST_PTHREAD 173 template class EpetraMultiVectorT<long long,Kokkos::Compat::KokkosThreadsWrapperNode >;
174 template RCP<MultiVector<double, int, long long, Kokkos::Compat::KokkosThreadsWrapperNode > > toXpetra<long long, Kokkos::Compat::KokkosThreadsWrapperNode>(RCP<Epetra_MultiVector>);
175 template Epetra_MultiVector & toEpetra<long long,Kokkos::Compat::KokkosThreadsWrapperNode >(MultiVector<double, int, long long,Kokkos::Compat::KokkosThreadsWrapperNode> &);
176 template const Epetra_MultiVector & toEpetra<long long, Kokkos::Compat::KokkosThreadsWrapperNode >(
const MultiVector<double, int, long long, Kokkos::Compat::KokkosThreadsWrapperNode > &);
178 #ifdef HAVE_TPETRA_INST_OPENMP 179 template class EpetraMultiVectorT<long long, Kokkos::Compat::KokkosOpenMPWrapperNode >;
180 template RCP<MultiVector<double, int, long long, Kokkos::Compat::KokkosOpenMPWrapperNode > > toXpetra<long long, Kokkos::Compat::KokkosOpenMPWrapperNode>(RCP<Epetra_MultiVector>);
181 template Epetra_MultiVector & toEpetra<long long,Kokkos::Compat::KokkosOpenMPWrapperNode >(MultiVector<double, int, long long,Kokkos::Compat::KokkosOpenMPWrapperNode> &);
182 template const Epetra_MultiVector & toEpetra<long long, Kokkos::Compat::KokkosOpenMPWrapperNode >(
const MultiVector<double, int, long long, Kokkos::Compat::KokkosOpenMPWrapperNode > &);
184 #ifdef HAVE_TPETRA_INST_CUDA 185 template class EpetraMultiVectorT<long long, Kokkos::Compat::KokkosCudaWrapperNode >;
186 template RCP<MultiVector<double, int, long long, Kokkos::Compat::KokkosCudaWrapperNode > > toXpetra<long long, Kokkos::Compat::KokkosCudaWrapperNode>(RCP<Epetra_MultiVector>);
187 template Epetra_MultiVector & toEpetra<long long,Kokkos::Compat::KokkosCudaWrapperNode >(MultiVector<double, int, long long, Kokkos::Compat::KokkosCudaWrapperNode> &);
188 template const Epetra_MultiVector & toEpetra<long long, Kokkos::Compat::KokkosCudaWrapperNode >(
const MultiVector<double, int, long long, Kokkos::Compat::KokkosCudaWrapperNode > &);
190 #else // Tpetra is disabled 192 template class EpetraMultiVectorT<long long, default_node_type >;
193 template RCP<MultiVector<double, int, long long, default_node_type > > toXpetra<long long, default_node_type>(RCP<Epetra_MultiVector>);
194 template Epetra_MultiVector & toEpetra<long long,default_node_type >(MultiVector<double, int, long long,default_node_type> &);
195 template const Epetra_MultiVector & toEpetra<long long, default_node_type >(
const MultiVector<double, int, long long, default_node_type > &);
const Epetra_CrsGraph & toEpetra(const RCP< const CrsGraph< int, GlobalOrdinal, Node > > &graph)
#define XPETRA_DYNAMIC_CAST(type, obj, newObj, exceptionMsg)
RCP< const CrsGraph< int, GlobalOrdinal, Node > > toXpetra(const Epetra_CrsGraph &g)
Teuchos::RCP< const Vector< double, int, GlobalOrdinal, Node > > getVector(size_t j) const
Return a Vector which is a const view of column j.
#define XPETRA_MONITOR(funcName)
Teuchos::RCP< Vector< double, int, GlobalOrdinal, Node > > getVectorNonConst(size_t j)
Return a Vector which is a nonconst view of column j.