From 81ec44822b52dfed24c501d92cb3042fe4e677e4 Mon Sep 17 00:00:00 2001 From: Joakim Hove Date: Sun, 28 Feb 2021 15:41:59 +0100 Subject: [PATCH] Make sure ParallellFieldPropsManager::porv() return compact values --- opm/simulators/utils/ParallelEclipseState.cpp | 21 +++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/opm/simulators/utils/ParallelEclipseState.cpp b/opm/simulators/utils/ParallelEclipseState.cpp index 477b65012..8397f80c2 100644 --- a/opm/simulators/utils/ParallelEclipseState.cpp +++ b/opm/simulators/utils/ParallelEclipseState.cpp @@ -49,14 +49,23 @@ void ParallelFieldPropsManager::reset_actnum(const std::vector& actnum) std::vector ParallelFieldPropsManager::porv(bool global) const { - std::vector result; + std::vector global_porv; if (m_comm.rank() == 0) - result = m_manager.porv(global); - size_t size = result.size(); + global_porv = m_manager.porv(true); + + size_t size = global_porv.size(); m_comm.broadcast(&size, 1, 0); - result.resize(size); - m_comm.broadcast(result.data(), size, 0); - return result; + global_porv.resize(size); + m_comm.broadcast(global_porv.data(), size, 0); + if (global) + return global_porv; + + std::vector local_porv(this->m_activeSize()); + for (int i = 0; i < m_activeSize(); ++i) + { + local_porv[i] = global_porv[this->m_local2Global(i)]; + } + return local_porv; }