From 69cb8b6df744d4b68483a5352d9f607c52ae0638 Mon Sep 17 00:00:00 2001 From: Magne Sjaastad Date: Wed, 29 Nov 2023 09:08:03 +0100 Subject: [PATCH] Add activeCellReservoirIndices All global reservoir cell indices for active cells can now be accessed from RigActiveCellInfo. This can make the extraction of data much easier and faster. --- .../ReservoirDataModel/RigActiveCellInfo.cpp | 16 ++++++++++++++++ .../ReservoirDataModel/RigActiveCellInfo.h | 8 +++++--- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/ApplicationLibCode/ReservoirDataModel/RigActiveCellInfo.cpp b/ApplicationLibCode/ReservoirDataModel/RigActiveCellInfo.cpp index 3ffae1ccea..2ecf32f6c7 100644 --- a/ApplicationLibCode/ReservoirDataModel/RigActiveCellInfo.cpp +++ b/ApplicationLibCode/ReservoirDataModel/RigActiveCellInfo.cpp @@ -81,6 +81,14 @@ void RigActiveCellInfo::setCellResultIndex( size_t reservoirCellIndex, size_t re m_cellIndexToResultIndex[reservoirCellIndex] = reservoirCellResultIndex; } +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +std::vector RigActiveCellInfo::activeReservoirCellIndices() const +{ + return m_activeCellIndices; +} + //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- @@ -110,6 +118,14 @@ void RigActiveCellInfo::computeDerivedData() { m_reservoirActiveCellCount += m_perGridActiveCellInfo[i].activeCellCount(); } + + for ( size_t i = 0; i < m_cellIndexToResultIndex.size(); i++ ) + { + if ( m_cellIndexToResultIndex[i] != cvf::UNDEFINED_SIZE_T ) + { + m_activeCellIndices.push_back( i ); + } + } } //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ReservoirDataModel/RigActiveCellInfo.h b/ApplicationLibCode/ReservoirDataModel/RigActiveCellInfo.h index 3489cfc0a1..f016e2c2dd 100644 --- a/ApplicationLibCode/ReservoirDataModel/RigActiveCellInfo.h +++ b/ApplicationLibCode/ReservoirDataModel/RigActiveCellInfo.h @@ -35,9 +35,10 @@ public: size_t reservoirCellCount() const; size_t reservoirActiveCellCount() const; - bool isActive( size_t reservoirCellIndex ) const; - size_t cellResultIndex( size_t reservoirCellIndex ) const; - void setCellResultIndex( size_t reservoirCellIndex, size_t globalResultCellIndex ); + bool isActive( size_t reservoirCellIndex ) const; + size_t cellResultIndex( size_t reservoirCellIndex ) const; + void setCellResultIndex( size_t reservoirCellIndex, size_t globalResultCellIndex ); + std::vector activeReservoirCellIndices() const; void setGridCount( size_t gridCount ); void setGridActiveCellCounts( size_t gridIndex, size_t activeCellCount ); @@ -71,6 +72,7 @@ private: std::vector m_perGridActiveCellInfo; std::vector m_cellIndexToResultIndex; + std::vector m_activeCellIndices; size_t m_reservoirActiveCellCount;