diff --git a/opm/grid/cpgrid/CpGridData.cpp b/opm/grid/cpgrid/CpGridData.cpp index 883d46a44..61172fb2e 100644 --- a/opm/grid/cpgrid/CpGridData.cpp +++ b/opm/grid/cpgrid/CpGridData.cpp @@ -114,7 +114,7 @@ void CpGridData::populateGlobalCellIndexSet() auto& cell_indexset = cellIndexSet(); cell_indexset.beginResize(); for (int index = 0, end = size(0); index != end ; ++index){ - cell_indexset.add(global_id_set_->id(Entity<0>(*this, EntityRep<0>(index, true))), + cell_indexset.add(global_id_set_->idLevelZero(Entity<0>(*this, EntityRep<0>(index, true))), ParallelIndexSet::LocalIndex(index, AttributeSet::owner, true)); } cell_indexset.endResize(); @@ -178,31 +178,6 @@ struct AssignAndIncrement int i_; } assigner; -/** - * @brief Counts the number of global ids and sets them up. - * @param indicator A vector indicating whether an entity exists. - * @param ids A vector to the the global ids in. - * @param idSet The idSet of the global grid. - * @return the number of entities that exist. - */ -template -int setupAndCountGlobalIds(const std::vector& indicator, std::vector& ids, - const IdSet& idSet) -{ - int count = std::count_if(indicator.begin(), - indicator.end(), - [](int x) { return x < std::numeric_limits::max(); }); - ids.resize(count); - typedef typename std::vector::const_iterator VIter; - for(VIter ibegin=indicator.begin(), i=ibegin, iend= indicator.end(); - i!=iend; ++i) - { - if(*i::max()) - ids[*i]=idSet.id(EntityRep(i-ibegin,true)); - } - return count; -} - template struct GetRowType {}; @@ -611,7 +586,7 @@ struct Cell2PointsDataHandle const auto& points = globalCell2Points_[i]; std::for_each(points.begin(), points.end(), [&buffer, this](const int& point){ - buffer.write(globalIds_.id(EntityRep<3>(point, true)));}); + buffer.write(globalIds_.idLevelZero(EntityRep<3>(point, true)));}); for (const auto& point: globalAdditionalPointIds_[i]) { buffer.write(point); @@ -728,7 +703,7 @@ struct SparseTableDataHandle void gather(B& buffer, const T& t) { const auto& entries = global_[t.index()]; - std::for_each(entries.begin(), entries.end(), [&buffer, this](const DataType& i){buffer.write(globalIds_.id(EntityRep<3>(i, true)));}); + std::for_each(entries.begin(), entries.end(), [&buffer, this](const DataType& i){buffer.write(globalIds_.idLevelZero(EntityRep<3>(i, true)));}); } template void scatter(B& buffer, const T& t, std::size_t ) @@ -799,7 +774,7 @@ struct OrientedEntityTableDataHandle { std::for_each(entries.begin(), entries.end(), [&buffer, this](const ToEntity& i){ - int id = globalIds_->id(i); + int id = globalIds_->idLevelZero(i); if (!i.orientation()) id = ~id; buffer.write(id);}); @@ -870,7 +845,7 @@ struct IndexSet2IdSet map_[entry.local()] = entry.global(); } template - int id(const T& t) const + int idLevelZero(const T& t) const { return map_[t.index()]; } @@ -1387,7 +1362,7 @@ std::vector > computeAdditionalFacePoints(const std::vector(point,true))); + additionalFacePoints[c].insert(globalIds.idLevelZero(EntityRep<3>(point,true))); } } return additionalFacePoints; @@ -1490,7 +1465,7 @@ std::map computeCell2Point(const CpGrid& grid, createInterfaceList(procCellLists, globalCell2Points, globalAdditionalPoints, [&globalIds](int i){ - return globalIds.id(EntityRep<3>(i, true)); + return globalIds.idLevelZero(EntityRep<3>(i, true)); }, globalMap2Local, pointInterfaces[procCellLists.first]); diff --git a/opm/grid/cpgrid/Indexsets.cpp b/opm/grid/cpgrid/Indexsets.cpp index 1ea159312..efbeec40f 100644 --- a/opm/grid/cpgrid/Indexsets.cpp +++ b/opm/grid/cpgrid/Indexsets.cpp @@ -48,8 +48,6 @@ IndexSet::IndexType IndexSet::subIndex(const cpgrid::Entity<0>& e, int i, unsign { switch(cc) { case 0: return index(e.subEntity<0>(i)); - case 1: return index(e.subEntity<1>(i)); - // case 2: return index(e.subEntity<2>(i)); // Not supported in this grid case 3: return index(e.subEntity<3>(i)); default: OPM_THROW(std::runtime_error, "Codimension " + std::to_string(cc) + " not supported."); @@ -60,8 +58,6 @@ IdSet::IdType IdSet::subId(const cpgrid::Entity<0>& e, int i, int cc) const { switch (cc) { case 0: return id(e.subEntity<0>(i)); - case 1: return id(e.subEntity<1>(i)); - // case 2: return id(e.subEntity<2>(i)); // Not supported in this grid case 3: return id(e.subEntity<3>(i)); default: OPM_THROW(std::runtime_error, "Cannot get subId of codimension " + std::to_string(cc)); @@ -75,8 +71,6 @@ LevelGlobalIdSet::IdType LevelGlobalIdSet::subId(const cpgrid::Entity<0>& e, int switch (cc) { case 0: return id(e.subEntity<0>(i)); - //case 1: return id(*e.subEntity<1>(i)); - //case 2: return id(*e.subEntity<2>(i)); case 3: return id(e.subEntity<3>(i)); default: OPM_THROW(std::runtime_error, "Cannot get subId of codimension " + std::to_string(cc)); diff --git a/opm/grid/cpgrid/Indexsets.hpp b/opm/grid/cpgrid/Indexsets.hpp index 4d36ab590..120c2634c 100644 --- a/opm/grid/cpgrid/Indexsets.hpp +++ b/opm/grid/cpgrid/Indexsets.hpp @@ -233,14 +233,18 @@ namespace Dune "IdSet::id not implemented for codims other thatn 0, 1, and 3."); } - template - IdType id(const EntityType& e) const + IdType id(const Entity<0>& e) const { - return id(e); + return id<0>(e); + } + + IdType id(const Entity<3>& e) const + { + return id<3>(e); } template - IdType id(const cpgrid::EntityRep& e) const + IdType idLevelZero(const cpgrid::EntityRep& e) const { return computeId(e); } @@ -414,10 +418,10 @@ namespace Dune } template - IdType id(const EntityRep& e) const + IdType idLevelZero(const EntityRep& e) const { if(idSet_) - return idSet_->id(e); + return idSet_->idLevelZero(e); else return this->template getMapping()[e.index()]; } diff --git a/tests/cpgrid/distribution_test.cpp b/tests/cpgrid/distribution_test.cpp index 3f6782729..733ec4a71 100644 --- a/tests/cpgrid/distribution_test.cpp +++ b/tests/cpgrid/distribution_test.cpp @@ -500,8 +500,10 @@ BOOST_AUTO_TEST_CASE(compareWithSequential) using namespace Dune::cpgrid; auto face = grid.cellFace(eIt->index(), f); auto seqFace = seqGrid.cellFace(seqEIt->index(), f); + /* BOOST_REQUIRE(idSet.id(Dune::createEntity<1>(grid, face, true)) == seqIdSet.id(Dune::createEntity<1>(seqGrid, seqFace, true))); + */ int vertices = grid.numFaceVertices(face); BOOST_REQUIRE(vertices == seqGrid.numFaceVertices(seqFace)); for (int v = 0; v < vertices; ++v)