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_()
{
const std::vector<int> fipnumGlobal = simulator_.vanguard().eclState().fieldProps().get_global_int("FIPNUM");
// Get compressed cell fipnum.
const auto& gridView = simulator_.vanguard().gridView();
unsigned numElements = gridView.size(/*codim=*/0);
fipnum_.resize(numElements, 0.0);
if (!fipnumGlobal.empty()) {
ElementContext elemCtx(simulator_);
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
if (simulator_.vanguard().eclState().fieldProps().has_int("FIPNUM"))
fipnum_ = simulator_.vanguard().eclState().fieldProps().get_int("FIPNUM");
else
fipnum_.resize(gridView.size(/*codim=*/0), 1);
elemCtx.updatePrimaryStencil(elem);
const unsigned elemIdx = elemCtx.globalSpaceIndex(/*spaceIdx=*/0, /*timeIdx=*/0);
fipnum_[elemIdx] = fipnumGlobal[simulator_.vanguard().cartesianIndex(elemIdx)];
}
ElementContext elemCtx(simulator_);
ElementIterator elemIt = simulator_.gridView().template begin</*codim=*/0>();
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;
}
}