42 #ifndef TPETRA_IMPORTEXPORTDATA_DEF_HPP 43 #define TPETRA_IMPORTEXPORTDATA_DEF_HPP 45 #include <Tpetra_ImportExportData_decl.hpp> 47 #include <Tpetra_Map.hpp> 50 template <
class LocalOrdinal,
class GlobalOrdinal,
class Node>
58 distributor_ (source->getComm (), out_),
59 isLocallyComplete_ (true)
62 template <
class LocalOrdinal,
class GlobalOrdinal,
class Node>
66 const Teuchos::RCP<Teuchos::FancyOStream>& out) :
71 distributor_ (source->getComm (), out_),
72 isLocallyComplete_ (true)
75 template <
class LocalOrdinal,
class GlobalOrdinal,
class Node>
79 const Teuchos::RCP<Teuchos::ParameterList>& plist) :
84 distributor_ (source->getComm (), out_, plist),
85 isLocallyComplete_ (true)
88 template <
class LocalOrdinal,
class GlobalOrdinal,
class Node>
92 const Teuchos::RCP<Teuchos::FancyOStream>& out,
93 const Teuchos::RCP<Teuchos::ParameterList>& plist) :
98 distributor_ (source->getComm (), out_, plist),
99 isLocallyComplete_ (true)
102 template <
class LocalOrdinal,
class GlobalOrdinal,
class Node>
103 Teuchos::RCP<ImportExportData<LocalOrdinal, GlobalOrdinal, Node> >
106 using Teuchos::ArrayView;
108 Teuchos::RCP<ImportExportData<LocalOrdinal,GlobalOrdinal,Node> > tData =
112 tData->numSameIDs_ = numSameIDs_;
115 tData->distributor_ = *distributor_.getReverse();
116 tData->permuteToLIDs_ = permuteFromLIDs_;
117 tData->permuteFromLIDs_ = permuteToLIDs_;
120 tData->exportLIDs_ = remoteLIDs_;
121 tData->remoteLIDs_ = exportLIDs_;
122 tData->exportPIDs_.resize(tData->exportLIDs_.size());
125 size_t NumReceives = distributor_.getNumReceives();
126 ArrayView<const int> ProcsFrom = distributor_.getProcsFrom();
127 ArrayView<const size_t> LengthsFrom = distributor_.getLengthsFrom();
132 bool isLocallyComplete =
true;
133 for (
size_t i = 0, j = 0; i < NumReceives; ++i) {
134 const int pid = ProcsFrom[i];
136 isLocallyComplete =
false;
138 for (
size_t k = 0; k < LengthsFrom[i]; ++k) {
139 tData->exportPIDs_[j] = pid;
143 tData->isLocallyComplete_ = isLocallyComplete;
149 template <
class LocalOrdinal,
class GlobalOrdinal,
class Node>
162 #define TPETRA_IMPORTEXPORTDATA_INSTANT(LO, GO, NODE) \ 164 template class ImportExportData< LO , GO , NODE >; 166 #endif // TPETRA_IMPORTEXPORTDATA_DEF_HPP Namespace Tpetra contains the class and methods constituting the Tpetra library.
~ImportExportData()
Destructor.
ImportExportData(const Teuchos::RCP< const map_type > &source, const Teuchos::RCP< const map_type > &target)
Constructor.
Implementation detail of Import and Export.
Describes a parallel distribution of objects over processes.
Teuchos::RCP< ImportExportData< LocalOrdinal, GlobalOrdinal, Node > > reverseClone()
Copy the data, but reverse the direction of the transfer as well as reversing the Distributor...