52 const Teuchos::RCP <
const Teuchos::Comm<int> > &comm_,
54 const Teuchos::RCP <const Adapter> &adapter_,
56 const Teuchos::RCP <const Environment> &envConst):
57 env(env__), comm(comm_), adapter(adapter_),
58 partIsRank(false), haveContigousParts(false)
61 int nRanks = comm->getSize();
66 if (psoln_ != Teuchos::null) {
67 partList = psoln_->getPartListView();
70 adapter->getPartsView(partList);
74 typedef typename Tpetra::Map<lno_t, part_t> tpetraMap_t
75 Teuchos::RCP<tpetraMap_t> tmap;
77 part_t minPart, maxPart;
79 if (partList == NULL) {
91 size_t nLocal = adapter->getLocalNumIDs();
93 std::set<part_t> unique(nLocal);
94 for (
size_t i; i < adapter->getLocalNumIDs(); i++)
95 unique.insert(partList[i]);
97 size_t nUnique = unique.size();
98 Array<const part_t> uniquePartList(nUnique);
100 for (
typename std::set<part_t>::iterator it = set.begin();
101 it != set.end(); it++)
102 uniquePartList[k++] = *it;
107 Teuchos::OrdinalTraits<Tpetra::global_size_t>::invalid();
108 tmap = rcp(
new tpetraMap_t(nGlobalElts, uniquePartList(), 0, comm));
110 nParts = as<part_t>(tmap->getGlobalNumElements());
111 minPart = tmap->getMinAllGlobalIndex();
112 maxPart = tmap->getMaxAllGlobalIndex();
115 nParts_Div_nRanks =
nParts / nRanks;
116 nParts_Mod_nRanks =
nParts % nRanks;
121 if (maxPart < nRanks)
124 if ((minPart == 0) && (maxPart ==
nParts-1))
126 haveContiguousParts =
true;
128 if (!partIsRank && !haveContiguousParts) {
130 Teuchos::RCP<tpetraMap_t> oneToOneMap = Tpetra::createOneToOne(tmap);
135 Teuchos::RCP<tpetraMap_t> gatheredMap = ;
137 Teuchos::ArrayView<const part_t> allParts =
138 gatheredMap->getLocalElementList();
141 Teuchos::Array<int> allRanks(allParts.size());
142 oneToOneMap->getRemoveIndexList(allParts, allRanks());
144 for (
size_t i = 0; i < allPart.size())
145 (*rankForPart)[allParts[i]] = allRanks[i];
AlgDefaultMapping(const Teuchos::RCP< const Teuchos::Comm< int > > &comm_, const Teuchos::RCP< const MachineRepresentation< pcoord_t, part_t > > &machine_, const Teuchos::RCP< const Adapter > &adapter_, const Teuchos::RCP< const Zoltan2::PartitioningSolution< Adapter > > &psoln_, const Teuchos::RCP< const Environment > &envConst)