diff --git a/opm/autodiff/FullyImplicitBlackoilSolver_impl.hpp b/opm/autodiff/FullyImplicitBlackoilSolver_impl.hpp index dc23a1fb3..a04ad458a 100644 --- a/opm/autodiff/FullyImplicitBlackoilSolver_impl.hpp +++ b/opm/autodiff/FullyImplicitBlackoilSolver_impl.hpp @@ -29,6 +29,7 @@ #include #include +#include #include #include #include @@ -1898,16 +1899,47 @@ namespace { int nc) const { // Do the global reductions - for ( int idx=0; idx(linsolver_.parallelInformation()); + for ( int idx=0; idx(0.,0.,0.); + auto containers = std::make_tuple(B.col(idx), + tempV.col(idx), + R.col(idx)); + auto operators = std::make_tuple(Opm::Reduction::makeGlobalSumFunctor(), + Opm::Reduction::makeGlobalMaxFunctor(), + Opm::Reduction::makeGlobalSumFunctor()); + nc=info.communicator().sum(nc); + info.computeReduction(containers,operators,values); + B_avg[idx] = std::get<0>(values)/nc; + maxCoeff[idx] = std::get<1>(values); + R_sum[idx] = std::get<2>(values); + } + else + { + R_sum[idx] = B_avg[idx] = maxCoeff[idx] = 0.; + } + } + } + else +#endif + { + for ( int idx=0; idx