42 #ifndef TPETRA_IMPORTEXPORTDATA_DEF_HPP
43 #define TPETRA_IMPORTEXPORTDATA_DEF_HPP
45 #include "Tpetra_Map.hpp"
46 #include "Teuchos_FancyOStream.hpp"
47 #include "Teuchos_ParameterList.hpp"
51 template <
class LocalOrdinal,
class GlobalOrdinal,
class Node>
57 out_ (Teuchos::getFancyOStream (Teuchos::rcpFromRef (std::cerr))),
59 distributor_ (source->getComm (), out_),
60 isLocallyComplete_ (true)
63 template <
class LocalOrdinal,
class GlobalOrdinal,
class Node>
67 const Teuchos::RCP<Teuchos::FancyOStream>& out) :
72 distributor_ (source->getComm (), out_),
73 isLocallyComplete_ (true)
76 template <
class LocalOrdinal,
class GlobalOrdinal,
class Node>
80 const Teuchos::RCP<Teuchos::ParameterList>& plist) :
83 out_ (Teuchos::getFancyOStream (Teuchos::rcpFromRef (std::cerr))),
85 distributor_ (source->getComm (), out_, plist),
86 isLocallyComplete_ (true)
89 template <
class LocalOrdinal,
class GlobalOrdinal,
class Node>
93 const Teuchos::RCP<Teuchos::FancyOStream>& out,
94 const Teuchos::RCP<Teuchos::ParameterList>& plist) :
99 distributor_ (source->getComm (), out_, plist),
100 isLocallyComplete_ (true)
103 template <
class LocalOrdinal,
class GlobalOrdinal,
class Node>
104 Teuchos::RCP<ImportExportData<LocalOrdinal, GlobalOrdinal, Node> >
107 using Teuchos::ArrayView;
109 Teuchos::RCP<ImportExportData<LocalOrdinal,GlobalOrdinal,Node> > tData =
113 tData->numSameIDs_ = numSameIDs_;
116 tData->distributor_ = *distributor_.getReverse();
117 tData->permuteToLIDs_ = permuteFromLIDs_;
118 tData->permuteFromLIDs_ = permuteToLIDs_;
121 tData->exportLIDs_ = remoteLIDs_;
122 tData->remoteLIDs_ = exportLIDs_;
123 tData->exportPIDs_.resize(tData->exportLIDs_.size());
126 size_t NumReceives = distributor_.getNumReceives();
127 ArrayView<const int> ProcsFrom = distributor_.getProcsFrom();
128 ArrayView<const size_t> LengthsFrom = distributor_.getLengthsFrom();
133 bool isLocallyComplete =
true;
134 for (
size_t i = 0, j = 0; i < NumReceives; ++i) {
135 const int pid = ProcsFrom[i];
137 isLocallyComplete =
false;
139 for (
size_t k = 0; k < LengthsFrom[i]; ++k) {
140 tData->exportPIDs_[j] = pid;
144 tData->isLocallyComplete_ = isLocallyComplete;
150 template <
class LocalOrdinal,
class GlobalOrdinal,
class Node>
164 #define TPETRA_IMPORTEXPORTDATA_INSTANT(LO, GO, NODE) \
166 namespace Classes { template class ImportExportData< LO , GO , NODE >; }
168 #endif // TPETRA_IMPORTEXPORTDATA_DEF_HPP