diff --git a/opm/autodiff/BlackoilModelEbos.hpp b/opm/autodiff/BlackoilModelEbos.hpp index 3ee5b4db1..93d424f29 100644 --- a/opm/autodiff/BlackoilModelEbos.hpp +++ b/opm/autodiff/BlackoilModelEbos.hpp @@ -148,7 +148,8 @@ namespace Opm { FIP_PV = 5, //< Pore volume FIP_WEIGHTED_PRESSURE = 6 }; - std::array, 7> fip; + static const int fipValues = FIP_WEIGHTED_PRESSURE + 1 ; + std::array, fipValues> fip; }; // --------- Public methods --------- @@ -1025,7 +1026,7 @@ namespace Opm { const auto& pv = geo_.poreVolume(); const int maxnp = Opm::BlackoilPhases::MaxNumPhases; - for (int i = 0; i<7; i++) { + for (int i = 0; i> values(dims, std::vector(7,0.0)); + std::vector> values(dims, std::vector(FIPData::fipValues,0.0)); std::vector hcpv(dims, 0.0); std::vector pres(dims, 0.0); @@ -1117,11 +1118,12 @@ namespace Opm { // mask[c] is 1 if we need to compute something in parallel const auto & pinfo = boost::any_cast(istlSolver().parallelInformation()); - const auto& mask = pinfo.getOwnerMask(); + const auto& mask = pinfo.updateOwnerMask( fipnum ); + auto comm = pinfo.communicator(); // Compute the global dims value and resize values accordingly. dims = comm.max(dims); - values.resize(dims, std::vector(7,0.0)); + values.resize(dims, std::vector(FIPData::fipValues,0.0)); //Accumulate phases for each region for (int phase = 0; phase < maxnp; ++phase) {