11#include "Xpetra_BlockedMultiVector.hpp"
16#if defined(HAVE_XPETRA_EPETRA)
18#if !defined(XPETRA_EPETRA_NO_32BIT_GLOBAL_INDICES)
37#ifdef HAVE_XPETRA_TPETRA
57#ifdef HAVE_XPETRA_TPETRA
76#ifdef HAVE_XPETRA_TPETRA
77 if (source->getMap()->lib() ==
UseTpetra) {
82 if (source->getMap()->lib() ==
UseEpetra) {
104#ifdef HAVE_XPETRA_TPETRA
124#ifdef HAVE_XPETRA_TPETRA
143#ifdef HAVE_XPETRA_TPETRA
144 if (source->getMap()->lib() ==
UseTpetra) {
149 if (source->getMap()->lib() ==
UseEpetra) {
157#if !defined(XPETRA_EPETRA_NO_64BIT_GLOBAL_INDICES)
161RCP<MultiVector<double, int, long long, EpetraNode>>
168 RCP<const BlockedMap<int, long long, EpetraNode>> bmap = Teuchos::rcp_dynamic_cast<const BlockedMap<int, long long, EpetraNode>>(map);
170 if (!bmap.is_null()) {
171 return rcp(
new BlockedMultiVector<double, int, long long, EpetraNode>(bmap, NumVectors, zeroOut));
174#ifdef HAVE_XPETRA_TPETRA
176 return rcp(
new TpetraMultiVector<double, int, long long, EpetraNode>(map, NumVectors, zeroOut));
181 return rcp(
new EpetraMultiVectorT<long long, EpetraNode>(map, NumVectors, zeroOut));
194#ifdef HAVE_XPETRA_TPETRA
196 return rcp(
new TpetraMultiVector<double, int, long long, EpetraNode>(map, ArrayOfPtrs, NumVectors));
201 return rcp(
new EpetraMultiVectorT<long long, EpetraNode>(map, ArrayOfPtrs, NumVectors));
209 Build(
const Teuchos::RCP<
const MultiVector<double, int, long long, EpetraNode>>& source,
213#ifdef HAVE_XPETRA_TPETRA
214 if (source->getMap()->lib() ==
UseTpetra) {
215 return rcp(
new TpetraMultiVector<double, int, long long, EpetraNode>(*source, copyOrView));
219 if (source->getMap()->lib() ==
UseEpetra) {
220 return rcp(
new EpetraMultiVectorT<long long, EpetraNode>(*source, copyOrView));
230RCP<MultiVector<int, int, long long, EpetraNode>>
237 RCP<const BlockedMap<int, long long, EpetraNode>> bmap = Teuchos::rcp_dynamic_cast<const BlockedMap<int, long long, EpetraNode>>(map);
239 if (!bmap.is_null()) {
240 return rcp(
new BlockedMultiVector<int, int, long long, EpetraNode>(bmap, NumVectors, zeroOut));
243#ifdef HAVE_XPETRA_TPETRA
245 return rcp(
new TpetraMultiVector<int, int, long long, EpetraNode>(map, NumVectors, zeroOut));
250 return rcp(
new EpetraIntMultiVectorT<long long, EpetraNode>(map, NumVectors, zeroOut));
263#ifdef HAVE_XPETRA_TPETRA
265 return rcp(
new TpetraMultiVector<int, int, long long, EpetraNode>(map, ArrayOfPtrs, NumVectors));
270 return rcp(
new EpetraIntMultiVectorT<long long, EpetraNode>(map, ArrayOfPtrs, NumVectors));
278 Build(
const Teuchos::RCP<
const MultiVector<int, int, long long, EpetraNode>>& source,
282#ifdef HAVE_XPETRA_TPETRA
283 if (source->getMap()->lib() ==
UseTpetra) {
284 return rcp(
new TpetraMultiVector<int, int, long long, EpetraNode>(*source, copyOrView));
288 if (source->getMap()->lib() ==
UseEpetra) {
289 return rcp(
new EpetraIntMultiVectorT<long long, EpetraNode>(*source, copyOrView));
#define XPETRA_MONITOR(funcName)
#define XPETRA_FACTORY_END
MultiVectorFactory()
Private constructor. This is a static class.
static Teuchos::RCP< MultiVector< Scalar, LocalOrdinal, GlobalOrdinal, Node > > Build(const Teuchos::RCP< const Map< LocalOrdinal, GlobalOrdinal, Node > > &map, size_t NumVectors, bool zeroOut=true)
Constructor specifying the number of non-zeros for all rows.
TEUCHOS_DEPRECATED RCP< T > rcp(T *p, Dealloc_T dealloc, bool owns_mem)