use compressed field property for fipnum

This commit is contained in:
Arne Morten Kvarving 2020-02-25 14:27:52 +01:00
parent 69959da143
commit 5a9340b5b1

View File

@ -1744,24 +1744,20 @@ private:
void createLocalFipnum_() void createLocalFipnum_()
{ {
const std::vector<int> fipnumGlobal = simulator_.vanguard().eclState().fieldProps().get_global_int("FIPNUM");
// Get compressed cell fipnum.
const auto& gridView = simulator_.vanguard().gridView(); const auto& gridView = simulator_.vanguard().gridView();
unsigned numElements = gridView.size(/*codim=*/0); if (simulator_.vanguard().eclState().fieldProps().has_int("FIPNUM"))
fipnum_.resize(numElements, 0.0); fipnum_ = simulator_.vanguard().eclState().fieldProps().get_int("FIPNUM");
if (!fipnumGlobal.empty()) { else
ElementContext elemCtx(simulator_); fipnum_.resize(gridView.size(/*codim=*/0), 1);
ElementIterator elemIt = gridView.template begin</*codim=*/0>();
const ElementIterator& elemEndIt = gridView.template end</*codim=*/0>();
for (; elemIt != elemEndIt; ++elemIt) {
const Element& elem = *elemIt;
if (elem.partitionType() != Dune::InteriorEntity)
continue; // assign no fipnum regions to ghost elements
elemCtx.updatePrimaryStencil(elem); ElementContext elemCtx(simulator_);
const unsigned elemIdx = elemCtx.globalSpaceIndex(/*spaceIdx=*/0, /*timeIdx=*/0); ElementIterator elemIt = simulator_.gridView().template begin</*codim=*/0>();
fipnum_[elemIdx] = fipnumGlobal[simulator_.vanguard().cartesianIndex(elemIdx)]; const ElementIterator& elemEndIt = simulator_.gridView().template end</*codim=*/0>();
} size_t elemIdx = 0;
for (; elemIt != elemEndIt; ++elemIt, ++elemIdx) {
const Element& elem = *elemIt;
if (elem.partitionType() != Dune::InteriorEntity)
fipnum_[elemIdx] = 0;
} }
} }