Merge pull request #2383 from akva2/use_compressed_fipnum

use compressed field property for fipnum
This commit is contained in:
Arne Morten Kvarving
2020-03-03 10:04:25 +01:00
committed by GitHub

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;
}
}