From 39c2282904a7c7761fae149341f51633a4aa026d Mon Sep 17 00:00:00 2001 From: JJ <69144954+jonjenssen@users.noreply.github.com> Date: Wed, 12 Nov 2025 07:13:24 +0100 Subject: [PATCH] Handle active cells in files with thermal data (rockv) (#13159) * Handle active cells in files with thermal data from intersect --- .../Application/RiaResultNames.cpp | 8 +++++++ .../Application/RiaResultNames.h | 1 + .../FileInterface/RifReaderOpmCommon.cpp | 23 +++++++++++++++---- ThirdParty/custom-opm-common/opm-common | 2 +- 4 files changed, 28 insertions(+), 6 deletions(-) diff --git a/ApplicationLibCode/Application/RiaResultNames.cpp b/ApplicationLibCode/Application/RiaResultNames.cpp index d71dfa531b..9cc910c5f5 100644 --- a/ApplicationLibCode/Application/RiaResultNames.cpp +++ b/ApplicationLibCode/Application/RiaResultNames.cpp @@ -445,6 +445,14 @@ QString RiaResultNames::porv() return "PORV"; } +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +QString RiaResultNames::rockv() +{ + return "ROCKV"; +} + //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/Application/RiaResultNames.h b/ApplicationLibCode/Application/RiaResultNames.h index a0a00f5277..65f9da6f20 100644 --- a/ApplicationLibCode/Application/RiaResultNames.h +++ b/ApplicationLibCode/Application/RiaResultNames.h @@ -84,6 +84,7 @@ QString faultDistanceName(); QString facies(); QString porv(); +QString rockv(); QString soil(); QString sgas(); QString swat(); diff --git a/ApplicationLibCode/FileInterface/RifReaderOpmCommon.cpp b/ApplicationLibCode/FileInterface/RifReaderOpmCommon.cpp index 04b48fdfef..d7d5b89f97 100644 --- a/ApplicationLibCode/FileInterface/RifReaderOpmCommon.cpp +++ b/ApplicationLibCode/FileInterface/RifReaderOpmCommon.cpp @@ -1101,6 +1101,8 @@ std::vector> RifReaderOpmCommon::readActiveCellInfoFromPorv( Ri std::vector> activeCellsAllGrids; + bool hasThermalData = m_initFile->hasArray( RiaResultNames::rockv().toStdString() ); + bool divideCellCountByTwo = isDualPorosity; const int nGrids = (int)m_gridNames.size(); @@ -1108,6 +1110,10 @@ std::vector> RifReaderOpmCommon::readActiveCellInfoFromPorv( Ri for ( int gridIdx = 0; gridIdx < nGrids; gridIdx++ ) { auto porvValues = m_initFile->getInitData( RiaResultNames::porv().toStdString(), m_gridNames[gridIdx] ); + auto rockValues = hasThermalData ? m_initFile->getInitData( RiaResultNames::rockv().toStdString(), m_gridNames[gridIdx] ) + : std::vector(); + + rockValues.resize( porvValues.size(), 0.0f ); // Ensure rockValues has same size as porvValues, fill with 0.0f if not present int activeCellCount = (int)porvValues.size(); if ( divideCellCountByTwo ) @@ -1118,19 +1124,19 @@ std::vector> RifReaderOpmCommon::readActiveCellInfoFromPorv( Ri std::vector activeCellsOneGrid; activeCellsOneGrid.resize( activeCellCount, 0 ); - for ( int poreValueIndex = 0; poreValueIndex < static_cast( porvValues.size() ); poreValueIndex++ ) + for ( int resultIndex = 0; resultIndex < static_cast( porvValues.size() ); resultIndex++ ) { - int indexToCell = poreValueIndex; + int indexToCell = resultIndex; if ( indexToCell >= activeCellCount ) { - indexToCell = poreValueIndex - activeCellCount; + indexToCell = resultIndex - activeCellCount; } - if ( porvValues[poreValueIndex] > 0.0f ) + if ( porvValues[resultIndex] > 0.0f ) { if ( isDualPorosity ) { - if ( poreValueIndex < activeCellCount ) + if ( resultIndex < activeCellCount ) { activeCellsOneGrid[indexToCell] += (int)ActiveType::ACTIVE_MATRIX_VALUE; } @@ -1144,6 +1150,13 @@ std::vector> RifReaderOpmCommon::readActiveCellInfoFromPorv( Ri activeCellsOneGrid[indexToCell] += (int)ActiveType::ACTIVE_MATRIX_VALUE; } } + if ( rockValues[resultIndex] > 0.0f ) + { + if ( activeCellsOneGrid[indexToCell] == 0 ) + { + activeCellsOneGrid[indexToCell] += (int)ActiveType::ACTIVE_MATRIX_VALUE; + } + } } activeCellsAllGrids.push_back( activeCellsOneGrid ); diff --git a/ThirdParty/custom-opm-common/opm-common b/ThirdParty/custom-opm-common/opm-common index ffd18df3b6..8f5e3d8d7d 160000 --- a/ThirdParty/custom-opm-common/opm-common +++ b/ThirdParty/custom-opm-common/opm-common @@ -1 +1 @@ -Subproject commit ffd18df3b66488b9d083773de18398a75ec6a214 +Subproject commit 8f5e3d8d7dffdf0fccb6db50fa524508faa4f38d