42 #ifndef TPETRA_IMPORT_DECL_HPP
43 #define TPETRA_IMPORT_DECL_HPP
45 #include "Tpetra_Details_Transfer.hpp"
113 class GlobalOrdinal = ::Tpetra::Details::DefaultTypes::global_ordinal_type,
119 friend class Export<LocalOrdinal,GlobalOrdinal,Node>;
123 typedef ::Tpetra::Map<LocalOrdinal, GlobalOrdinal, Node>
map_type;
135 Import (
const Teuchos::RCP<const map_type>& source,
136 const Teuchos::RCP<const map_type>& target);
148 Import (
const Teuchos::RCP<const map_type>& source,
149 const Teuchos::RCP<const map_type>& target,
150 const Teuchos::RCP<Teuchos::FancyOStream>& out);
164 Import (
const Teuchos::RCP<const map_type>& source,
165 const Teuchos::RCP<const map_type>& target,
166 const Teuchos::RCP<Teuchos::ParameterList>& plist);
183 Import (
const Teuchos::RCP<const map_type>& source,
184 const Teuchos::RCP<const map_type>& target,
185 const Teuchos::RCP<Teuchos::FancyOStream>& out,
186 const Teuchos::RCP<Teuchos::ParameterList>& plist);
199 Import (
const Teuchos::RCP<const map_type>& source,
200 const Teuchos::RCP<const map_type>& target,
201 Teuchos::Array<int> & remotePIDs);
248 const GlobalOrdinal targetMapRemoteOrPermuteGlobalIndices[],
249 const int targetMapRemoteOrPermuteProcessRanks[],
250 const LocalOrdinal numTargetMapRemoteOrPermuteGlobalIndices,
251 const bool mayReorderTargetMapIndicesLocally,
252 const Teuchos::RCP<Teuchos::ParameterList>& plist = Teuchos::null,
253 const Teuchos::RCP<Teuchos::FancyOStream>& out = Teuchos::null);
263 Teuchos::Array<int> & userRemotePIDs,
264 Teuchos::Array<GlobalOrdinal>& remoteGIDs,
265 const Teuchos::ArrayView<const LocalOrdinal> & userExportLIDs,
266 const Teuchos::ArrayView<const int> & userExportPIDs,
267 const bool useRemotePIDs,
268 const Teuchos::RCP<Teuchos::ParameterList>& plist = Teuchos::null,
269 const Teuchos::RCP<Teuchos::FancyOStream>& out = Teuchos::null);
308 Teuchos::ArrayView<const LocalOrdinal>
getRemoteLIDs()
const;
314 Teuchos::ArrayView<const LocalOrdinal>
getExportLIDs()
const;
357 Teuchos::Array<std::pair<int,GlobalOrdinal>>& remotePGIDs,
358 typename Teuchos::Array<GlobalOrdinal>::size_type& numSameGIDs,
359 typename Teuchos::Array<GlobalOrdinal>::size_type& numPermuteGIDs,
360 typename Teuchos::Array<GlobalOrdinal>::size_type& numRemoteGIDs,
361 const Teuchos::ArrayView<const GlobalOrdinal>& sameGIDs1,
362 const Teuchos::ArrayView<const GlobalOrdinal>& sameGIDs2,
363 Teuchos::Array<GlobalOrdinal>& permuteGIDs1,
364 Teuchos::Array<GlobalOrdinal>& permuteGIDs2,
365 Teuchos::Array<GlobalOrdinal>& remoteGIDs1,
366 Teuchos::Array<GlobalOrdinal>& remoteGIDs2,
367 Teuchos::Array<int>& remotePIDs1,
368 Teuchos::Array<int>& remotePIDs2)
const;
403 Teuchos::RCP<const Import<LocalOrdinal, GlobalOrdinal, Node> >
422 Teuchos::RCP<const Import<LocalOrdinal, GlobalOrdinal, Node> >
430 Teuchos::RCP<const Import<LocalOrdinal, GlobalOrdinal, Node> >
461 describe (Teuchos::FancyOStream& out,
462 const Teuchos::EVerbosityLevel verbLevel =
463 Teuchos::Describable::verbLevel_default)
const;
480 virtual void print (std::ostream& os)
const;
485 Teuchos::RCP<ImportExportData<LocalOrdinal,GlobalOrdinal,Node> > ImportData_;
487 Teuchos::RCP<Teuchos::FancyOStream> out_;
511 init (
const Teuchos::RCP<const map_type>& source,
512 const Teuchos::RCP<const map_type>& target,
514 Teuchos::Array<int> & remotePIDs,
515 const Teuchos::RCP<Teuchos::ParameterList>& plist);
548 void setupSamePermuteRemote (Teuchos::Array<GlobalOrdinal>& remoteGIDs);
579 setupExport (Teuchos::Array<GlobalOrdinal>& remoteGIDs,
bool useRemotePIDs, Teuchos::Array<int> & remotePIDs);
589 Import (
const Teuchos::RCP<const map_type>& source,
590 const Teuchos::RCP<const map_type>& target,
591 const size_t numSameID,
592 Teuchos::Array<LocalOrdinal>& permuteToLIDs,
593 Teuchos::Array<LocalOrdinal>& permuteFromLIDs,
594 Teuchos::Array<LocalOrdinal>& remoteLIDs,
595 Teuchos::Array<LocalOrdinal>& exportLIDs,
596 Teuchos::Array<int>& exportPIDs,
598 const Teuchos::RCP<Teuchos::FancyOStream>& out = Teuchos::null,
599 const Teuchos::RCP<Teuchos::ParameterList>& plist = Teuchos::null);
615 template<
class LocalOrdinal,
class GlobalOrdinal,
class Node>
616 Teuchos::RCP<const Import<LocalOrdinal, GlobalOrdinal, Node> >
621 return Teuchos::null;
623 #ifdef HAVE_TPETRA_DEBUG
624 TEUCHOS_TEST_FOR_EXCEPTION(
625 src == Teuchos::null || tgt == Teuchos::null, std::runtime_error,
626 "Tpetra::createImport(): neither source nor target map may be null:"
627 << std::endl <<
"source: " << src << std::endl <<
"target: " << tgt
629 #endif // HAVE_TPETRA_DEBUG
631 return Teuchos::rcp (
new import_type (src, tgt));
644 template<
class LocalOrdinal,
class GlobalOrdinal,
class Node>
645 Teuchos::RCP<const Import<LocalOrdinal, GlobalOrdinal, Node> >
648 const Teuchos::RCP<Teuchos::ParameterList>& plist)
651 return Teuchos::null;
653 #ifdef HAVE_TPETRA_DEBUG
654 TEUCHOS_TEST_FOR_EXCEPTION(
655 src == Teuchos::null || tgt == Teuchos::null, std::runtime_error,
656 "Tpetra::createImport(): neither source nor target map may be null:"
657 << std::endl <<
"source: " << src << std::endl <<
"target: " << tgt
659 #endif // HAVE_TPETRA_DEBUG
661 return Teuchos::rcp (
new import_type (src, tgt, plist));
666 #endif // TPETRA_IMPORT_DECL_HPP