diff --git a/ebos/collecttoiorank.cc b/ebos/collecttoiorank.cc index f7ce94e51..1631b1336 100644 --- a/ebos/collecttoiorank.cc +++ b/ebos/collecttoiorank.cc @@ -672,10 +672,10 @@ private: template CollectDataToIORank:: -CollectDataToIORank(const Grid& grid, const EquilGrid& equilGrid, +CollectDataToIORank(const Grid& grid, const EquilGrid* equilGrid, const GridView& localGridView, const Dune::CartesianIndexMapper& cartMapper, - const Dune::CartesianIndexMapper& equilCartMapper) + const Dune::CartesianIndexMapper* equilCartMapper) : toIORankComm_() { // index maps only have to be build when reordering is needed @@ -706,9 +706,9 @@ CollectDataToIORank(const Grid& grid, const EquilGrid& equilGrid, // We need a mapping from local to global grid, here we // use equilGrid which represents a view on the global grid // reserve memory - const size_t globalSize = equilGrid.leafGridView().size(0); + const size_t globalSize = equilGrid->leafGridView().size(0); globalCartesianIndex_.resize(globalSize, -1); - const EquilGridView equilGridView = equilGrid.leafGridView(); + const EquilGridView equilGridView = equilGrid->leafGridView(); using EquilElementMapper = Dune::MultipleCodimMultipleGeomTypeMapper; EquilElementMapper equilElemMapper(equilGridView, Dune::mcmgElementLayout()); @@ -718,11 +718,11 @@ CollectDataToIORank(const Grid& grid, const EquilGrid& equilGrid, grid.scatterData(handle); // loop over all elements (global grid) and store Cartesian index - auto elemIt = equilGrid.leafGridView().template begin<0>(); - const auto& elemEndIt = equilGrid.leafGridView().template end<0>(); + auto elemIt = equilGrid->leafGridView().template begin<0>(); + const auto& elemEndIt = equilGrid->leafGridView().template end<0>(); for (; elemIt != elemEndIt; ++elemIt) { int elemIdx = equilElemMapper.index(*elemIt); - int cartElemIdx = equilCartMapper.cartesianIndex(elemIdx); + int cartElemIdx = equilCartMapper->cartesianIndex(elemIdx); globalCartesianIndex_[elemIdx] = cartElemIdx; } diff --git a/ebos/collecttoiorank.hh b/ebos/collecttoiorank.hh index a74139e86..cb138cd0c 100644 --- a/ebos/collecttoiorank.hh +++ b/ebos/collecttoiorank.hh @@ -58,10 +58,10 @@ public: !std::is_same::value; CollectDataToIORank(const Grid& grid, - const EquilGrid& equilGrid, + const EquilGrid* equilGrid, const GridView& gridView, const Dune::CartesianIndexMapper& cartMapper, - const Dune::CartesianIndexMapper& equilCartMapper); + const Dune::CartesianIndexMapper* equilCartMapper); // gather solution to rank 0 for EclipseWriter void collect(const Opm::data::Solution& localCellData, diff --git a/ebos/eclwriter.hh b/ebos/eclwriter.hh index 05061d158..2d3f765b2 100644 --- a/ebos/eclwriter.hh +++ b/ebos/eclwriter.hh @@ -191,10 +191,12 @@ public: EclWriter(Simulator& simulator) : simulator_(simulator) , collectToIORank_(simulator_.vanguard().grid(), - simulator_.vanguard().equilGrid(), + simulator_.vanguard().grid().comm().rank() == 0 ? + &simulator_.vanguard().equilGrid() : nullptr, simulator_.vanguard().gridView(), simulator_.vanguard().cartesianIndexMapper(), - simulator_.vanguard().equilCartesianIndexMapper()) + simulator_.vanguard().grid().comm().rank() == 0 ? + &simulator_.vanguard().equilCartesianIndexMapper() : nullptr) { std::vector wbp_index_list; diff --git a/tests/test_ecl_output.cc b/tests/test_ecl_output.cc index 873765961..17a3cc474 100644 --- a/tests/test_ecl_output.cc +++ b/tests/test_ecl_output.cc @@ -151,10 +151,10 @@ BOOST_AUTO_TEST_CASE(Summary) using GridView = Opm::GetPropType; using CollectDataToIORankType = Opm::CollectDataToIORank; CollectDataToIORankType collectToIORank(simulator->vanguard().grid(), - simulator->vanguard().equilGrid(), + &simulator->vanguard().equilGrid(), simulator->vanguard().gridView(), simulator->vanguard().cartesianIndexMapper(), - simulator->vanguard().equilCartesianIndexMapper()); + &simulator->vanguard().equilCartesianIndexMapper()); Opm::EclOutputBlackOilModule eclOutputModule(*simulator, {}, collectToIORank); typedef Opm::EclWriter EclWriterType;