From 2d5cedb5d92246b3a45b9f807533589e294e31fe Mon Sep 17 00:00:00 2001 From: Jon Jenssen Date: Wed, 4 Sep 2024 18:17:19 +0200 Subject: [PATCH] Work in progress, updating cell indexing --- .../Tools/RiaImportEclipseCaseTools.cpp | 2 +- .../RicWellPathExportMswCompletionsImpl.cpp | 2 +- .../Commands/RicCreateTemporaryLgrFeature.cpp | 10 +- .../RifEclipseOutputFileTools.cpp | 2 +- .../FileInterface/RifReaderEclipseOutput.cpp | 8 +- .../FileInterface/RifReaderOpmCommon.cpp | 8 +- .../RifReaderOpmCommonActive.cpp | 16 +-- .../FileInterface/RifRoffFileTools.cpp | 8 +- .../RivEclipseIntersectionGrid.cpp | 4 +- .../RivElementVectorResultPartMgr.cpp | 16 +-- .../RivNNCGeometryGenerator.cpp | 16 ++- .../Completions/RimFractureContainment.cpp | 4 +- .../Rim3dOverlayInfoConfig.cpp | 3 +- .../RimEclipseContourMapProjection.cpp | 6 +- .../RimEclipseStatisticsCaseEvaluator.cpp | 2 +- .../ProjectDataModel/RimEclipseView.cpp | 5 +- .../RimIdenticalGridCaseGroup.cpp | 4 +- .../Summary/RimSummaryCaseMainCollection.cpp | 6 +- ...StimPlanCellTransmissibilityCalculator.cpp | 4 +- .../RigCellVolumeResultCalculator.cpp | 4 +- .../RigFaultDistanceResultCalculator.cpp | 3 +- .../ReservoirDataModel/RigActiveCellGrid.cpp | 98 +++++++++++-------- .../ReservoirDataModel/RigActiveCellGrid.h | 14 ++- .../ReservoirDataModel/RigActiveCellInfo.cpp | 2 +- .../ReservoirDataModel/RigGridBase.cpp | 16 +++ .../ReservoirDataModel/RigGridBase.h | 10 +- .../ReservoirDataModel/RigMainGrid.cpp | 58 +++++++---- .../ReservoirDataModel/RigMainGrid.h | 6 +- 28 files changed, 201 insertions(+), 136 deletions(-) diff --git a/ApplicationLibCode/Application/Tools/RiaImportEclipseCaseTools.cpp b/ApplicationLibCode/Application/Tools/RiaImportEclipseCaseTools.cpp index a3183d0f17..1da55f02a7 100644 --- a/ApplicationLibCode/Application/Tools/RiaImportEclipseCaseTools.cpp +++ b/ApplicationLibCode/Application/Tools/RiaImportEclipseCaseTools.cpp @@ -214,7 +214,7 @@ bool RiaImportEclipseCaseTools::openEclipseCasesFromFile( const QStringList& fil // Call process events to clear the queue. This make sure that we are able raise the 3D window on top of the // plot window. Otherwise the event processing ends up with the plot window on top. - QApplication::processEvents(); + // QApplication::processEvents(); RiuMainWindow::instance()->activateWindow(); } diff --git a/ApplicationLibCode/Commands/CompletionExportCommands/RicWellPathExportMswCompletionsImpl.cpp b/ApplicationLibCode/Commands/CompletionExportCommands/RicWellPathExportMswCompletionsImpl.cpp index 1374c10f8c..07578d8a8c 100644 --- a/ApplicationLibCode/Commands/CompletionExportCommands/RicWellPathExportMswCompletionsImpl.cpp +++ b/ApplicationLibCode/Commands/CompletionExportCommands/RicWellPathExportMswCompletionsImpl.cpp @@ -694,7 +694,7 @@ void RicWellPathExportMswCompletionsImpl::generateFishbonesMswExportInfo( const for ( auto intersectionIndex : indices ) { auto intersection = filteredIntersections[intersectionIndex]; - if ( intersection.globCellIndex >= mainGrid->globalCellArray().size() ) continue; + // if ( intersection.globCellIndex >= mainGrid->globalCellArray().size() ) continue; size_t localGridCellIndex = 0u; const RigGridBase* localGrid = diff --git a/ApplicationLibCode/Commands/RicCreateTemporaryLgrFeature.cpp b/ApplicationLibCode/Commands/RicCreateTemporaryLgrFeature.cpp index b8ddfe58c2..6915ecd57b 100644 --- a/ApplicationLibCode/Commands/RicCreateTemporaryLgrFeature.cpp +++ b/ApplicationLibCode/Commands/RicCreateTemporaryLgrFeature.cpp @@ -190,7 +190,7 @@ void RicCreateTemporaryLgrFeature::setupActionLook( QAction* actionToSetup ) void RicCreateTemporaryLgrFeature::createLgr( const LgrInfo& lgrInfo, RigMainGrid* mainGrid ) { int lgrId = lgrInfo.id; - size_t totalCellCount = mainGrid->globalCellArray().size(); + size_t totalCellCount = mainGrid->cellCount(); size_t lgrCellCount = lgrInfo.cellCount(); // Create local grid and set properties @@ -203,14 +203,14 @@ void RicCreateTemporaryLgrFeature::createLgr( const LgrInfo& lgrInfo, RigMainGri localGrid->setGridPointDimensions( cvf::Vec3st( lgrInfo.sizes.i() + 1, lgrInfo.sizes.j() + 1, lgrInfo.sizes.k() + 1 ) ); mainGrid->addLocalGrid( localGrid ); - size_t cellStartIndex = mainGrid->globalCellArray().size(); + size_t cellStartIndex = mainGrid->cellCount(); size_t nodeStartIndex = mainGrid->nodes().size(); // Resize global cell and node arrays { RigCell defaultCell; defaultCell.setHostGrid( localGrid ); - mainGrid->globalCellArray().resize( cellStartIndex + lgrCellCount, defaultCell ); + mainGrid->reservoirCells().resize( cellStartIndex + lgrCellCount, defaultCell ); mainGrid->nodes().resize( nodeStartIndex + lgrCellCount * 8, cvf::Vec3d( 0, 0, 0 ) ); } @@ -231,10 +231,10 @@ void RicCreateTemporaryLgrFeature::createLgr( const LgrInfo& lgrInfo, RigMainGri size_t mainI = lgrInfo.mainGridStartCell.i() + lgrI / lgrSizePerMainCell.i(); size_t mainCellIndex = mainGrid->cellIndexFromIJK( mainI, mainJ, mainK ); - auto& mainGridCell = mainGrid->globalCellArray()[mainCellIndex]; + auto& mainGridCell = mainGrid->reservoirCells()[mainCellIndex]; mainGridCell.setSubGrid( localGrid ); - RigCell& cell = mainGrid->globalCellArray()[cellStartIndex + gridLocalCellIndex]; + RigCell& cell = mainGrid->reservoirCells()[cellStartIndex + gridLocalCellIndex]; cell.setGridLocalCellIndex( gridLocalCellIndex ); cell.setParentCellIndex( mainCellIndex ); diff --git a/ApplicationLibCode/FileInterface/RifEclipseOutputFileTools.cpp b/ApplicationLibCode/FileInterface/RifEclipseOutputFileTools.cpp index fe49ffb81d..8143d25b10 100644 --- a/ApplicationLibCode/FileInterface/RifEclipseOutputFileTools.cpp +++ b/ApplicationLibCode/FileInterface/RifEclipseOutputFileTools.cpp @@ -668,7 +668,7 @@ bool RifEclipseOutputFileTools::assignActiveCellData( std::vectormainGrid()->globalCellArray().size() != reservoirCellCount ) + if ( eclipseCaseData->mainGrid()->cellCount() != reservoirCellCount ) { return false; } diff --git a/ApplicationLibCode/FileInterface/RifReaderEclipseOutput.cpp b/ApplicationLibCode/FileInterface/RifReaderEclipseOutput.cpp index 5f69945f3a..e2d6e4fb61 100644 --- a/ApplicationLibCode/FileInterface/RifReaderEclipseOutput.cpp +++ b/ApplicationLibCode/FileInterface/RifReaderEclipseOutput.cpp @@ -161,12 +161,12 @@ bool RifReaderEclipseOutput::transferGridCellData( RigMainGrid* mainGrid CVF_ASSERT( activeCellInfo && fractureActiveCellInfo ); int cellCount = ecl_grid_get_global_size( localEclGrid ); - size_t cellStartIndex = mainGrid->globalCellArray().size(); + size_t cellStartIndex = mainGrid->reservoirCells().size(); size_t nodeStartIndex = mainGrid->nodes().size(); RigCell defaultCell; defaultCell.setHostGrid( localGrid ); - mainGrid->globalCellArray().resize( cellStartIndex + cellCount, defaultCell ); + mainGrid->reservoirCells().resize( cellStartIndex + cellCount, defaultCell ); mainGrid->nodes().resize( nodeStartIndex + cellCount * 8, cvf::Vec3d( 0, 0, 0 ) ); @@ -175,7 +175,7 @@ bool RifReaderEclipseOutput::transferGridCellData( RigMainGrid* mainGrid #pragma omp parallel for for ( int gridLocalCellIndex = 0; gridLocalCellIndex < cellCount; ++gridLocalCellIndex ) { - RigCell& cell = mainGrid->globalCellArray()[cellStartIndex + gridLocalCellIndex]; + RigCell& cell = mainGrid->reservoirCells()[cellStartIndex + gridLocalCellIndex]; cell.setGridLocalCellIndex( gridLocalCellIndex ); @@ -303,7 +303,7 @@ bool RifReaderEclipseOutput::transferGeometry( const ecl_grid_type* mainEclGrid, // Reserve room for the cells and nodes and fill them with data - mainGrid->globalCellArray().reserve( totalCellCount ); + mainGrid->reservoirCells().reserve( totalCellCount ); mainGrid->nodes().reserve( 8 * totalCellCount ); caf::ProgressInfo progInfo( 3 + numLGRs, "" ); diff --git a/ApplicationLibCode/FileInterface/RifReaderOpmCommon.cpp b/ApplicationLibCode/FileInterface/RifReaderOpmCommon.cpp index dd9ba7c4c9..c8dc20b25e 100644 --- a/ApplicationLibCode/FileInterface/RifReaderOpmCommon.cpp +++ b/ApplicationLibCode/FileInterface/RifReaderOpmCommon.cpp @@ -197,7 +197,7 @@ bool RifReaderOpmCommon::importGrid( RigMainGrid* mainGrid, RigEclipseCaseData* activeCellInfo->setReservoirCellCount( totalCellCount ); fractureActiveCellInfo->setReservoirCellCount( totalCellCount ); - mainGrid->globalCellArray().reserve( (size_t)totalCellCount ); + mainGrid->reservoirCells().reserve( (size_t)totalCellCount ); mainGrid->nodes().reserve( (size_t)totalCellCount * 8 ); activeCellInfo->setGridCount( 1 + numLGRs ); @@ -411,7 +411,7 @@ void RifReaderOpmCommon::transferGeometry( Opm::EclIO::EGrid& opmMainGrid, RigEclipseCaseData* eclipseCaseData ) { int cellCount = opmGrid.totalNumberOfCells(); - size_t cellStartIndex = mainGrid->globalCellArray().size(); + size_t cellStartIndex = mainGrid->reservoirCells().size(); size_t nodeStartIndex = mainGrid->nodes().size(); const bool invalidateLongPyramidCells = invalidateLongThinCells(); @@ -419,7 +419,7 @@ void RifReaderOpmCommon::transferGeometry( Opm::EclIO::EGrid& opmMainGrid, RigCell defaultCell; defaultCell.setHostGrid( localGrid ); - mainGrid->globalCellArray().resize( cellStartIndex + cellCount, defaultCell ); + mainGrid->reservoirCells().resize( cellStartIndex + cellCount, defaultCell ); mainGrid->nodes().resize( nodeStartIndex + cellCount * 8, cvf::Vec3d( 0, 0, 0 ) ); @@ -456,7 +456,7 @@ void RifReaderOpmCommon::transferGeometry( Opm::EclIO::EGrid& opmMainGrid, } auto riReservoirIndex = localGrid->cellIndexFromIJK( opmIJK[0], opmIJK[1], opmIJK[2] ); - RigCell& cell = mainGrid->globalCellArray()[cellStartIndex + riReservoirIndex]; + RigCell& cell = mainGrid->reservoirCells()[cellStartIndex + riReservoirIndex]; cell.setGridLocalCellIndex( riReservoirIndex ); // parent cell index diff --git a/ApplicationLibCode/FileInterface/RifReaderOpmCommonActive.cpp b/ApplicationLibCode/FileInterface/RifReaderOpmCommonActive.cpp index 76ff018d9a..953c4a6090 100644 --- a/ApplicationLibCode/FileInterface/RifReaderOpmCommonActive.cpp +++ b/ApplicationLibCode/FileInterface/RifReaderOpmCommonActive.cpp @@ -123,7 +123,8 @@ bool RifReaderOpmCommonActive::importGrid( RigMainGrid* /* mainGrid*/, RigEclips // TODO - loop over all grids - activeGrid->transferActiveInformation( eclipseCaseData, + activeGrid->transferActiveInformation( 0, + eclipseCaseData, opmGrid.totalActiveCells(), opmGrid.activeCells(), opmGrid.activeFracCells(), @@ -194,8 +195,8 @@ void RifReaderOpmCommonActive::transferActiveGeometry( Opm::EclIO::EGrid& opmMa for ( size_t i = 0; i < 8; i++ ) defaultCell.cornerIndices()[i] = 0; - activeGrid->globalCellArray().resize( cellCount + 1, defaultCell ); - activeGrid->globalCellArray()[cellCount].setInvalid( true ); + activeGrid->reservoirCells().resize( cellCount + 1, defaultCell ); + activeGrid->reservoirCells()[cellCount].setInvalid( true ); activeGrid->nodes().resize( ( cellCount + 1 ) * 8, cvf::Vec3d( 0, 0, 0 ) ); @@ -236,7 +237,8 @@ void RifReaderOpmCommonActive::transferActiveGeometry( Opm::EclIO::EGrid& opmMa } auto riReservoirIndex = activeGrid->cellIndexFromIJK( opmIJK[0], opmIJK[1], opmIJK[2] ); - RigCell& cell = activeGrid->globalCellArray()[riReservoirIndex]; + RigCell& cell = activeGrid->cell( riReservoirIndex ); + auto actualIndex = activeGrid->globalToActualCellIndex( riReservoirIndex ); cell.setGridLocalCellIndex( riReservoirIndex ); cell.setParentCellIndex( cvf::UNDEFINED_SIZE_T ); @@ -246,8 +248,8 @@ void RifReaderOpmCommonActive::transferActiveGeometry( Opm::EclIO::EGrid& opmMa std::array opmZ{}; opmMainGrid.getCellCorners( opmCellIndex, opmX, opmY, opmZ ); - // Each cell has 8 nodes, use reservoir cell index and multiply to find first node index for cell - auto riNodeStartIndex = riReservoirIndex * 8; + // Each cell has 8 nodes, use active cell index and multiply to find first node index for cell + auto riNodeStartIndex = actualIndex * 8; for ( size_t opmNodeIndex = 0; opmNodeIndex < 8; opmNodeIndex++ ) { @@ -267,4 +269,6 @@ void RifReaderOpmCommonActive::transferActiveGeometry( Opm::EclIO::EGrid& opmMa cell.setInvalid( cell.isLongPyramidCell() ); } } + + if ( riNodes.size() > 1 ) riNodes[riNodes.size() - 1] = riNodes[0]; } diff --git a/ApplicationLibCode/FileInterface/RifRoffFileTools.cpp b/ApplicationLibCode/FileInterface/RifRoffFileTools.cpp index 624e80f5bb..6c01a8264c 100644 --- a/ApplicationLibCode/FileInterface/RifRoffFileTools.cpp +++ b/ApplicationLibCode/FileInterface/RifRoffFileTools.cpp @@ -188,19 +188,19 @@ bool RifRoffFileTools::openGridFile( const QString& fileName, RigEclipseCaseData fractureActiveCellInfo->setReservoirCellCount( totalCellCount ); // Reserve room for the cells and nodes and fill them with data - mainGrid->globalCellArray().reserve( totalCellCount ); + mainGrid->reservoirCells().reserve( totalCellCount ); mainGrid->nodes().reserve( 8 * totalCellCount ); int progTicks = 100; caf::ProgressInfo progInfo( progTicks, "" ); int cellCount = static_cast( totalCellCount ); - size_t cellStartIndex = mainGrid->globalCellArray().size(); + size_t cellStartIndex = mainGrid->reservoirCells().size(); size_t nodeStartIndex = mainGrid->nodes().size(); RigCell defaultCell; defaultCell.setHostGrid( mainGrid ); - mainGrid->globalCellArray().resize( cellStartIndex + cellCount, defaultCell ); + mainGrid->reservoirCells().resize( cellStartIndex + cellCount, defaultCell ); mainGrid->nodes().resize( nodeStartIndex + static_cast( cellCount ) * 8, cvf::Vec3d( 0, 0, 0 ) ); @@ -220,7 +220,7 @@ bool RifRoffFileTools::openGridFile( const QString& fileName, RigEclipseCaseData #pragma omp for for ( int gridLocalCellIndex = 0; gridLocalCellIndex < cellCount; ++gridLocalCellIndex ) { - RigCell& cell = mainGrid->globalCellArray()[cellStartIndex + gridLocalCellIndex]; + RigCell& cell = mainGrid->reservoirCells()[cellStartIndex + gridLocalCellIndex]; cell.setGridLocalCellIndex( gridLocalCellIndex ); diff --git a/ApplicationLibCode/ModelVisualization/Intersections/RivEclipseIntersectionGrid.cpp b/ApplicationLibCode/ModelVisualization/Intersections/RivEclipseIntersectionGrid.cpp index 04c9d8ebed..84dc54deb2 100644 --- a/ApplicationLibCode/ModelVisualization/Intersections/RivEclipseIntersectionGrid.cpp +++ b/ApplicationLibCode/ModelVisualization/Intersections/RivEclipseIntersectionGrid.cpp @@ -66,7 +66,7 @@ bool RivEclipseIntersectionGrid::useCell( size_t cellIndex ) const if ( m_intervalTool.isNumberIncluded( k ) ) { - const RigCell& cell = m_mainGrid->globalCellArray()[cellIndex]; + const RigCell& cell = m_mainGrid->cell( cellIndex ); if ( m_showInactiveCells ) return !cell.isInvalid() && ( cell.subGrid() == nullptr ); else @@ -88,7 +88,7 @@ void RivEclipseIntersectionGrid::cellCornerVertices( size_t cellIndex, cvf::Vec3 //-------------------------------------------------------------------------------------------------- void RivEclipseIntersectionGrid::cellCornerIndices( size_t cellIndex, size_t cornerIndices[8] ) const { - const std::array& cornerIndicesSource = m_mainGrid->globalCellArray()[cellIndex].cornerIndices(); + const std::array& cornerIndicesSource = m_mainGrid->cell( cellIndex ).cornerIndices(); for ( size_t i = 0; i < 8; i++ ) { diff --git a/ApplicationLibCode/ModelVisualization/RivElementVectorResultPartMgr.cpp b/ApplicationLibCode/ModelVisualization/RivElementVectorResultPartMgr.cpp index 7fe212b818..9426b0495a 100644 --- a/ApplicationLibCode/ModelVisualization/RivElementVectorResultPartMgr.cpp +++ b/ApplicationLibCode/ModelVisualization/RivElementVectorResultPartMgr.cpp @@ -150,18 +150,20 @@ void RivElementVectorResultPartMgr::appendDynamicGeometryPartsToModel( cvf::Mode RigActiveCellInfo* activeCellInfo = eclipseCaseData->activeCellInfo( RiaDefines::PorosityModelType::MATRIX_MODEL ); - const std::vector& cells = eclipseCase->mainGrid()->globalCellArray(); + const auto grid = eclipseCase->mainGrid(); - auto getFaceCenterAndNormal = [cells, arrowScaling, displayCordXf]( size_t globalCellIdx, - cvf::StructGridInterface::FaceType faceType, - cvf::Vec3d& faceCenter, - cvf::Vec3d& faceNormal ) + auto getFaceCenterAndNormal = [arrowScaling, displayCordXf, grid]( size_t globalCellIdx, + cvf::StructGridInterface::FaceType faceType, + cvf::Vec3d& faceCenter, + cvf::Vec3d& faceNormal ) { - faceCenter = displayCordXf->transformToDisplayCoord( cells[globalCellIdx].faceCenter( faceType ) ); - cvf::Vec3d cellCenter = displayCordXf->transformToDisplayCoord( cells[globalCellIdx].center() ); + faceCenter = displayCordXf->transformToDisplayCoord( grid->cell( globalCellIdx ).faceCenter( faceType ) ); + cvf::Vec3d cellCenter = displayCordXf->transformToDisplayCoord( grid->cell( globalCellIdx ).center() ); faceNormal = ( faceCenter - cellCenter ).getNormalized() * arrowScaling; }; + const std::vector& cells = eclipseCase->mainGrid()->reservoirCells(); + if ( !resultAddresses.empty() && !directions.empty() ) { #pragma omp parallel for diff --git a/ApplicationLibCode/ModelVisualization/RivNNCGeometryGenerator.cpp b/ApplicationLibCode/ModelVisualization/RivNNCGeometryGenerator.cpp index 8dd25a6999..b3752c2aa5 100644 --- a/ApplicationLibCode/ModelVisualization/RivNNCGeometryGenerator.cpp +++ b/ApplicationLibCode/ModelVisualization/RivNNCGeometryGenerator.cpp @@ -77,12 +77,8 @@ void RivNNCGeometryGenerator::computeArrays() const cvf::Vec3f offset( m_offset ); long long numConnections = static_cast( m_nncIndexes.empty() ? m_nncData->allConnections().size() : m_nncIndexes.size() ); - bool isVisibilityCalcActive = m_cellVisibility.notNull() && m_grid.notNull(); - std::vector* allCells = nullptr; - if ( isVisibilityCalcActive ) - { - allCells = &( m_grid->mainGrid()->globalCellArray() ); - } + bool isVisibilityCalcActive = m_cellVisibility.notNull() && m_grid.notNull(); + const auto mainGrid = m_grid->mainGrid(); #pragma omp parallel for ordered for ( long long nIdx = 0; nIdx < numConnections; ++nIdx ) @@ -104,15 +100,15 @@ void RivNNCGeometryGenerator::computeArrays() bool cell1Visible = false; bool cell2Visible = false; - if ( ( *allCells )[conn.c1GlobIdx()].hostGrid() == m_grid.p() ) + if ( mainGrid->cell( conn.c1GlobIdx() ).hostGrid() == m_grid.p() ) { - size_t cell1GridLocalIdx = ( *allCells )[conn.c1GlobIdx()].gridLocalCellIndex(); + size_t cell1GridLocalIdx = mainGrid->cell( conn.c1GlobIdx() ).gridLocalCellIndex(); cell1Visible = ( *m_cellVisibility )[cell1GridLocalIdx]; } - if ( ( *allCells )[conn.c2GlobIdx()].hostGrid() == m_grid.p() ) + if ( mainGrid->cell( conn.c2GlobIdx() ).hostGrid() == m_grid.p() ) { - size_t cell2GridLocalIdx = ( *allCells )[conn.c2GlobIdx()].gridLocalCellIndex(); + size_t cell2GridLocalIdx = mainGrid->cell( conn.c2GlobIdx() ).gridLocalCellIndex(); cell2Visible = ( *m_cellVisibility )[cell2GridLocalIdx]; } diff --git a/ApplicationLibCode/ProjectDataModel/Completions/RimFractureContainment.cpp b/ApplicationLibCode/ProjectDataModel/Completions/RimFractureContainment.cpp index 9301801c52..11cd103de0 100644 --- a/ApplicationLibCode/ProjectDataModel/Completions/RimFractureContainment.cpp +++ b/ApplicationLibCode/ProjectDataModel/Completions/RimFractureContainment.cpp @@ -93,9 +93,9 @@ bool RimFractureContainment::isEclipseCellOpenForFlow( const RigMainGrid* m { CVF_ASSERT( mainGrid ); - if ( globalCellIndex >= mainGrid->globalCellArray().size() ) return false; + // if ( globalCellIndex >= mainGrid->globalCellArray().size() ) return false; - auto cell = mainGrid->globalCellArray()[globalCellIndex]; + auto cell = mainGrid->cell( globalCellIndex ); auto mainGridCellIndex = cell.mainGridCellIndex(); size_t i, j, k; diff --git a/ApplicationLibCode/ProjectDataModel/Rim3dOverlayInfoConfig.cpp b/ApplicationLibCode/ProjectDataModel/Rim3dOverlayInfoConfig.cpp index 7a3c08ed59..f592aeb41c 100644 --- a/ApplicationLibCode/ProjectDataModel/Rim3dOverlayInfoConfig.cpp +++ b/ApplicationLibCode/ProjectDataModel/Rim3dOverlayInfoConfig.cpp @@ -332,8 +332,7 @@ QString Rim3dOverlayInfoConfig::caseInfoText( RimEclipseView* eclipseView ) } else if ( eclipseView->mainGrid() ) { - QString totCellCount = - localeWithSpaceAsGroupSeparator.toString( static_cast( eclipseView->mainGrid()->globalCellArray().size() ) ); + QString totCellCount = localeWithSpaceAsGroupSeparator.toString( static_cast( eclipseView->mainGrid()->cellCount() ) ); size_t mxActCellCount = eclipseView->eclipseCase()->eclipseCaseData()->activeCellInfo( RiaDefines::PorosityModelType::MATRIX_MODEL )->reservoirActiveCellCount(); diff --git a/ApplicationLibCode/ProjectDataModel/RimEclipseContourMapProjection.cpp b/ApplicationLibCode/ProjectDataModel/RimEclipseContourMapProjection.cpp index 5fd2902241..61c1317af3 100644 --- a/ApplicationLibCode/ProjectDataModel/RimEclipseContourMapProjection.cpp +++ b/ApplicationLibCode/ProjectDataModel/RimEclipseContourMapProjection.cpp @@ -413,7 +413,7 @@ std::vector RimEclipseContourMapProjection::findIntersectingCells( const //-------------------------------------------------------------------------------------------------- size_t RimEclipseContourMapProjection::kLayer( size_t globalCellIdx ) const { - const RigCell& cell = m_mainGrid->globalCellArray()[globalCellIdx]; + const RigCell& cell = m_mainGrid->cell( globalCellIdx ); size_t mainGridCellIdx = cell.mainGridCellIndex(); size_t i, j, k; m_mainGrid->ijkFromCellIndex( mainGridCellIdx, &i, &j, &k ); @@ -435,7 +435,7 @@ double RimEclipseContourMapProjection::calculateOverlapVolume( size_t globalCell { std::array hexCorners; - const RigCell& cell = m_mainGrid->globalCellArray()[globalCellIdx]; + const RigCell& cell = m_mainGrid->cell( globalCellIdx ); size_t localCellIdx = cell.gridLocalCellIndex(); RigGridBase* localGrid = cell.hostGrid(); @@ -461,7 +461,7 @@ double RimEclipseContourMapProjection::calculateRayLengthInCell( size_t { std::array hexCorners; - RigCell cell = m_mainGrid->globalCellArray()[globalCellIdx]; + RigCell cell = m_mainGrid->cell( globalCellIdx ); size_t localCellIdx = cell.gridLocalCellIndex(); RigGridBase* localGrid = cell.hostGrid(); diff --git a/ApplicationLibCode/ProjectDataModel/RimEclipseStatisticsCaseEvaluator.cpp b/ApplicationLibCode/ProjectDataModel/RimEclipseStatisticsCaseEvaluator.cpp index 23339631e6..f193921f83 100644 --- a/ApplicationLibCode/ProjectDataModel/RimEclipseStatisticsCaseEvaluator.cpp +++ b/ApplicationLibCode/ProjectDataModel/RimEclipseStatisticsCaseEvaluator.cpp @@ -401,7 +401,7 @@ RimEclipseStatisticsCaseEvaluator::RimEclipseStatisticsCaseEvaluator( const std: { if ( !sourceCases.empty() ) { - m_reservoirCellCount = sourceCases[0]->eclipseCaseData()->mainGrid()->globalCellArray().size(); + m_reservoirCellCount = sourceCases[0]->eclipseCaseData()->mainGrid()->cellCount(); } CVF_ASSERT( m_destinationCase ); diff --git a/ApplicationLibCode/ProjectDataModel/RimEclipseView.cpp b/ApplicationLibCode/ProjectDataModel/RimEclipseView.cpp index db56d9b746..32597c3481 100644 --- a/ApplicationLibCode/ProjectDataModel/RimEclipseView.cpp +++ b/ApplicationLibCode/ProjectDataModel/RimEclipseView.cpp @@ -2334,7 +2334,7 @@ void RimEclipseView::setOverridePropertyFilterCollection( RimEclipsePropertyFilt //-------------------------------------------------------------------------------------------------- void RimEclipseView::calculateCurrentTotalCellVisibility( cvf::UByteArray* totalVisibility, int timeStep ) { - size_t cellCount = mainGrid()->globalCellArray().size(); + size_t cellCount = mainGrid()->cellCount(); totalVisibility->resize( cellCount ); totalVisibility->setAll( false ); @@ -2364,8 +2364,7 @@ void RimEclipseView::calculateCurrentTotalCellVisibility( cvf::UByteArray* total void RimEclipseView::calculateCellVisibility( cvf::UByteArray* visibility, std::vector geomTypes, int timeStep ) { if ( !mainGrid() ) return; - - size_t cellCount = mainGrid()->globalCellArray().size(); + size_t cellCount = mainGrid()->cellCount(); visibility->resize( cellCount ); visibility->setAll( false ); diff --git a/ApplicationLibCode/ProjectDataModel/RimIdenticalGridCaseGroup.cpp b/ApplicationLibCode/ProjectDataModel/RimIdenticalGridCaseGroup.cpp index 8fce6f1add..8a7080a67b 100644 --- a/ApplicationLibCode/ProjectDataModel/RimIdenticalGridCaseGroup.cpp +++ b/ApplicationLibCode/ProjectDataModel/RimIdenticalGridCaseGroup.cpp @@ -267,8 +267,8 @@ void RimIdenticalGridCaseGroup::computeUnionOfActiveCells() return; } - m_unionOfMatrixActiveCells->setReservoirCellCount( m_mainGrid->globalCellArray().size() ); - m_unionOfFractureActiveCells->setReservoirCellCount( m_mainGrid->globalCellArray().size() ); + m_unionOfMatrixActiveCells->setReservoirCellCount( m_mainGrid->cellCount() ); + m_unionOfFractureActiveCells->setReservoirCellCount( m_mainGrid->cellCount() ); m_unionOfMatrixActiveCells->setGridCount( m_mainGrid->gridCount() ); m_unionOfFractureActiveCells->setGridCount( m_mainGrid->gridCount() ); diff --git a/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryCaseMainCollection.cpp b/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryCaseMainCollection.cpp index edeecd0f0b..679277aa7f 100644 --- a/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryCaseMainCollection.cpp +++ b/ApplicationLibCode/ProjectDataModel/Summary/RimSummaryCaseMainCollection.cpp @@ -474,7 +474,7 @@ void RimSummaryCaseMainCollection::loadFileSummaryCaseData( std::vectorsummaryDataReader() != RiaPreferencesSummary::SummaryReaderMode::HDF5_OPM_COMMON ); @@ -554,7 +554,7 @@ std::vector for ( const RifSummaryCaseFileResultInfo& fileInfo : summaryHeaderFileInfos ) { - QCoreApplication::processEvents( QEventLoop::ExcludeUserInputEvents ); + // QCoreApplication::processEvents( QEventLoop::ExcludeUserInputEvents ); auto existingSummaryCase = findTopLevelSummaryCaseFromFileName( fileInfo.summaryFileName() ); if ( !existingSummaryCase ) @@ -597,7 +597,7 @@ std::vector if ( progress != nullptr ) progress->incrementProgress(); } - QCoreApplication::processEvents( QEventLoop::ExcludeUserInputEvents ); + // QCoreApplication::processEvents( QEventLoop::ExcludeUserInputEvents ); } RimSummaryCaseMainCollection::loadSummaryCaseData( sumCases ); diff --git a/ApplicationLibCode/ReservoirDataModel/Completions/RigEclipseToStimPlanCellTransmissibilityCalculator.cpp b/ApplicationLibCode/ReservoirDataModel/Completions/RigEclipseToStimPlanCellTransmissibilityCalculator.cpp index e4a6fc7742..8af7ac2a91 100644 --- a/ApplicationLibCode/ReservoirDataModel/Completions/RigEclipseToStimPlanCellTransmissibilityCalculator.cpp +++ b/ApplicationLibCode/ReservoirDataModel/Completions/RigEclipseToStimPlanCellTransmissibilityCalculator.cpp @@ -276,7 +276,7 @@ void RigEclipseToStimPlanCellTransmissibilityCalculator::calculateStimPlanCellsM { // Use main grid cell to evaluate if a cell is active or not. // All cells in temporary grids are active - const RigCell& cell = mainGrid->globalCellArray()[reservoirCellIndex]; + const RigCell& cell = mainGrid->cell( reservoirCellIndex ); size_t mainGridReservoirIndex = cell.mainGridCellIndex(); if ( !activeCellInfo->isActive( mainGridReservoirIndex ) ) @@ -358,7 +358,7 @@ std::vector std::vector cellIndicesToLeafCells; for ( const size_t& index : cellIndices ) { - const RigCell& cell = mainGrid->globalCellArray()[index]; + const RigCell& cell = mainGrid->cell( index ); if ( !cell.subGrid() ) { cellIndicesToLeafCells.push_back( index ); diff --git a/ApplicationLibCode/ReservoirDataModel/ResultCalculators/RigCellVolumeResultCalculator.cpp b/ApplicationLibCode/ReservoirDataModel/ResultCalculators/RigCellVolumeResultCalculator.cpp index 99ba1fcbb2..bb6cee0a40 100644 --- a/ApplicationLibCode/ReservoirDataModel/ResultCalculators/RigCellVolumeResultCalculator.cpp +++ b/ApplicationLibCode/ReservoirDataModel/ResultCalculators/RigCellVolumeResultCalculator.cpp @@ -73,13 +73,13 @@ void RigCellVolumeResultCalculator::calculate( const RigEclipseResultAddress& re cellVolumeResults.resize( cellResultCount, std::numeric_limits::infinity() ); #pragma omp parallel for - for ( int nativeResvCellIndex = 0; nativeResvCellIndex < static_cast( m_resultsData->m_ownerMainGrid->globalCellArray().size() ); + for ( int nativeResvCellIndex = 0; nativeResvCellIndex < static_cast( m_resultsData->m_ownerMainGrid->cellCount() ); nativeResvCellIndex++ ) { size_t resultIndex = m_resultsData->activeCellInfo()->cellResultIndex( nativeResvCellIndex ); if ( resultIndex != cvf::UNDEFINED_SIZE_T ) { - const RigCell& cell = m_resultsData->m_ownerMainGrid->globalCellArray()[nativeResvCellIndex]; + const RigCell& cell = m_resultsData->m_ownerMainGrid->cell( nativeResvCellIndex ); if ( !cell.subGrid() ) { cellVolumeResults[resultIndex] = cell.volume(); diff --git a/ApplicationLibCode/ReservoirDataModel/ResultCalculators/RigFaultDistanceResultCalculator.cpp b/ApplicationLibCode/ReservoirDataModel/ResultCalculators/RigFaultDistanceResultCalculator.cpp index dda128be9d..c0f6832a2a 100644 --- a/ApplicationLibCode/ReservoirDataModel/ResultCalculators/RigFaultDistanceResultCalculator.cpp +++ b/ApplicationLibCode/ReservoirDataModel/ResultCalculators/RigFaultDistanceResultCalculator.cpp @@ -79,8 +79,9 @@ void RigFaultDistanceResultCalculator::calculate( const RigEclipseResultAddress& if ( !shouldCompute ) return; const std::vector& globalCellArray = m_resultsData->m_ownerMainGrid->globalCellArray(); + const auto grid = m_resultsData->m_ownerMainGrid; - long long numCells = static_cast( globalCellArray.size() ); + long long numCells = static_cast( m_resultsData->m_ownerMainGrid->cellCount() ); std::vector faceTypes = cvf::StructGridInterface::validFaceTypes(); diff --git a/ApplicationLibCode/ReservoirDataModel/RigActiveCellGrid.cpp b/ApplicationLibCode/ReservoirDataModel/RigActiveCellGrid.cpp index 0e47438cb6..c6f6f27052 100644 --- a/ApplicationLibCode/ReservoirDataModel/RigActiveCellGrid.cpp +++ b/ApplicationLibCode/ReservoirDataModel/RigActiveCellGrid.cpp @@ -110,52 +110,53 @@ void RigActiveCellGrid::transferActiveInformation( int gridI fractureActiveCellInfo->computeDerivedData(); } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -size_t RigActiveCellGrid::cellIndexFromIJK( size_t i, size_t j, size_t k ) const -{ - auto index = RigGridBase::cellIndexFromIJK( i, j, k ); - return m_globalToActiveMap[index]; -} +////-------------------------------------------------------------------------------------------------- +///// +////-------------------------------------------------------------------------------------------------- +// size_t RigActiveCellGrid::cellIndexFromIJK( size_t i, size_t j, size_t k ) const +//{ +// auto index = RigGridBase::cellIndexFromIJK( i, j, k ); +// return m_globalToActiveMap[index]; +// } +// +////-------------------------------------------------------------------------------------------------- +///// +////-------------------------------------------------------------------------------------------------- +// size_t RigActiveCellGrid::cellIndexFromIJKUnguarded( size_t i, size_t j, size_t k ) const +//{ +// auto index = RigGridBase::cellIndexFromIJKUnguarded( i, j, k ); +// return m_globalToActiveMap[index]; +// } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -size_t RigActiveCellGrid::cellIndexFromIJKUnguarded( size_t i, size_t j, size_t k ) const -{ - auto index = RigGridBase::cellIndexFromIJKUnguarded( i, j, k ); - return m_globalToActiveMap[index]; -} - -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -bool RigActiveCellGrid::ijkFromCellIndex( size_t cellIndex, size_t* i, size_t* j, size_t* k ) const -{ - if ( cellIndex >= m_activeToGlobalMap.size() ) - { - return false; - } - auto index = m_activeToGlobalMap[cellIndex]; - return RigGridBase::ijkFromCellIndex( index, i, j, k ); -} - -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RigActiveCellGrid::ijkFromCellIndexUnguarded( size_t cellIndex, size_t* i, size_t* j, size_t* k ) const -{ - auto index = m_activeToGlobalMap[cellIndex]; - RigGridBase::ijkFromCellIndexUnguarded( index, i, j, k ); -} +////-------------------------------------------------------------------------------------------------- +///// +////-------------------------------------------------------------------------------------------------- +// bool RigActiveCellGrid::ijkFromCellIndex( size_t cellIndex, size_t* i, size_t* j, size_t* k ) const +//{ +// if ( cellIndex >= m_activeToGlobalMap.size() ) +// { +// return false; +// } +// auto index = m_activeToGlobalMap[cellIndex]; +// return RigGridBase::ijkFromCellIndex( index, i, j, k ); +// } +// +////-------------------------------------------------------------------------------------------------- +///// +////-------------------------------------------------------------------------------------------------- +// void RigActiveCellGrid::ijkFromCellIndexUnguarded( size_t cellIndex, size_t* i, size_t* j, size_t* k ) const +//{ +// auto index = m_activeToGlobalMap[cellIndex]; +// RigGridBase::ijkFromCellIndexUnguarded( index, i, j, k ); +// } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- RigCell& RigActiveCellGrid::cell( size_t gridLocalCellIndex ) { - return m_cells[gridLocalCellIndex]; + const auto index = m_globalToActiveMap[gridLocalCellIndex]; + return m_cells[index]; } //-------------------------------------------------------------------------------------------------- @@ -163,7 +164,24 @@ RigCell& RigActiveCellGrid::cell( size_t gridLocalCellIndex ) //-------------------------------------------------------------------------------------------------- const RigCell& RigActiveCellGrid::cell( size_t gridLocalCellIndex ) const { - return m_cells[gridLocalCellIndex]; + const auto index = m_globalToActiveMap[gridLocalCellIndex]; + return m_cells[index]; +} + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +size_t RigActiveCellGrid::globalToActualCellIndex( size_t globalCellIndex ) const +{ + return m_globalToActiveMap[globalCellIndex]; +} + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +size_t RigActiveCellGrid::actualToGlobalCellIndex( size_t actualCellIndex ) const +{ + return m_activeToGlobalMap[actualCellIndex]; } //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ReservoirDataModel/RigActiveCellGrid.h b/ApplicationLibCode/ReservoirDataModel/RigActiveCellGrid.h index b0f6cc31b5..a497a0c32f 100644 --- a/ApplicationLibCode/ReservoirDataModel/RigActiveCellGrid.h +++ b/ApplicationLibCode/ReservoirDataModel/RigActiveCellGrid.h @@ -36,14 +36,18 @@ public: const std::vector& activeMatrixIndexes, const std::vector& activeFracIndexes ); - size_t cellIndexFromIJK( size_t i, size_t j, size_t k ) const override; - size_t cellIndexFromIJKUnguarded( size_t i, size_t j, size_t k ) const override; - bool ijkFromCellIndex( size_t cellIndex, size_t* i, size_t* j, size_t* k ) const override; - void ijkFromCellIndexUnguarded( size_t cellIndex, size_t* i, size_t* j, size_t* k ) const override; + // size_t cellIndexFromIJK( size_t i, size_t j, size_t k ) const override; + // size_t cellIndexFromIJKUnguarded( size_t i, size_t j, size_t k ) const override; + // bool ijkFromCellIndex( size_t cellIndex, size_t* i, size_t* j, size_t* k ) const override; + // void ijkFromCellIndexUnguarded( size_t cellIndex, size_t* i, size_t* j, size_t* k ) const override; RigCell& cell( size_t gridLocalCellIndex ) override; const RigCell& cell( size_t gridLocalCellIndex ) const override; - size_t cellCount() const override; + + size_t globalToActualCellIndex( size_t globalCellIndex ) const override; + size_t actualToGlobalCellIndex( size_t actualCellIndex ) const override; + + size_t cellCount() const override; private: std::vector m_globalToActiveMap; diff --git a/ApplicationLibCode/ReservoirDataModel/RigActiveCellInfo.cpp b/ApplicationLibCode/ReservoirDataModel/RigActiveCellInfo.cpp index 92fd87fe97..ee56484903 100644 --- a/ApplicationLibCode/ReservoirDataModel/RigActiveCellInfo.cpp +++ b/ApplicationLibCode/ReservoirDataModel/RigActiveCellInfo.cpp @@ -56,7 +56,7 @@ bool RigActiveCellInfo::isActive( size_t reservoirCellIndex ) const return true; } - CVF_TIGHT_ASSERT( reservoirCellIndex < m_cellIndexToResultIndex.size() ); + if ( reservoirCellIndex >= m_cellIndexToResultIndex.size() ) return false; return m_cellIndexToResultIndex[reservoirCellIndex] != cvf::UNDEFINED_SIZE_T; } diff --git a/ApplicationLibCode/ReservoirDataModel/RigGridBase.cpp b/ApplicationLibCode/ReservoirDataModel/RigGridBase.cpp index 19d88793b8..0e013ca9bb 100644 --- a/ApplicationLibCode/ReservoirDataModel/RigGridBase.cpp +++ b/ApplicationLibCode/ReservoirDataModel/RigGridBase.cpp @@ -99,6 +99,22 @@ const RigCell& RigGridBase::cell( size_t gridLocalCellIndex ) const return m_mainGrid->globalCellArray()[m_indexToStartOfCells + gridLocalCellIndex]; } +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +size_t RigGridBase::globalToActualCellIndex( size_t globalCellIndex ) const +{ + return globalCellIndex; +} + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +size_t RigGridBase::actualToGlobalCellIndex( size_t actualCellIndex ) const +{ + return actualCellIndex; +} + //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/ReservoirDataModel/RigGridBase.h b/ApplicationLibCode/ReservoirDataModel/RigGridBase.h index 3502e2b72a..17fcea64ca 100644 --- a/ApplicationLibCode/ReservoirDataModel/RigGridBase.h +++ b/ApplicationLibCode/ReservoirDataModel/RigGridBase.h @@ -37,6 +37,9 @@ class RigMainGrid; class RigCell; class RigActiveCellInfo; +// global cell index is index in full I,J,K grid +// actual cell index is the index into the m_cells array, will be differenc + class RigGridBase : public cvf::StructGridInterface { public: @@ -50,8 +53,11 @@ public: size_t cellCountK() const override; virtual size_t cellCount() const; - virtual RigCell& cell( size_t gridLocalCellIndex ); - virtual const RigCell& cell( size_t gridLocalCellIndex ) const; + virtual RigCell& cell( size_t actualCellIndex ); + virtual const RigCell& cell( size_t actualCellIndex ) const; + + virtual size_t globalToActualCellIndex( size_t globalCellIndex ) const; + virtual size_t actualToGlobalCellIndex( size_t actualCellIndex ) const; void characteristicCellSizes( double* iSize, double* jSize, double* kSize ) const override; diff --git a/ApplicationLibCode/ReservoirDataModel/RigMainGrid.cpp b/ApplicationLibCode/ReservoirDataModel/RigMainGrid.cpp index 62a351de75..8c6f20ca16 100644 --- a/ApplicationLibCode/ReservoirDataModel/RigMainGrid.cpp +++ b/ApplicationLibCode/ReservoirDataModel/RigMainGrid.cpp @@ -74,7 +74,7 @@ const std::vector& RigMainGrid::nodes() const //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -std::vector& RigMainGrid::globalCellArray() +std::vector& RigMainGrid::reservoirCells() { return m_cells; } @@ -82,25 +82,41 @@ std::vector& RigMainGrid::globalCellArray() //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -const std::vector& RigMainGrid::globalCellArray() const +const std::vector& RigMainGrid::reservoirCells() const { return m_cells; } +////-------------------------------------------------------------------------------------------------- +///// +////-------------------------------------------------------------------------------------------------- +// std::vector& RigMainGrid::globalCellArray() +//{ +// return m_cells; +// } +// +////-------------------------------------------------------------------------------------------------- +///// +////-------------------------------------------------------------------------------------------------- +// const std::vector& RigMainGrid::globalCellArray() const +//{ +// return m_cells; +// } + //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- RigGridBase* RigMainGrid::gridAndGridLocalIdxFromGlobalCellIdx( size_t globalCellIdx, size_t* gridLocalCellIdx ) { - CVF_ASSERT( globalCellIdx < m_cells.size() ); + // CVF_ASSERT( globalCellIdx < m_cells.size() ); - const RigCell& cell = m_cells[globalCellIdx]; - RigGridBase* hostGrid = cell.hostGrid(); + const RigCell& c = cell( globalCellIdx ); + RigGridBase* hostGrid = c.hostGrid(); CVF_ASSERT( hostGrid ); if ( gridLocalCellIdx ) { - *gridLocalCellIdx = cell.gridLocalCellIndex(); + *gridLocalCellIdx = c.gridLocalCellIndex(); } return hostGrid; @@ -111,15 +127,15 @@ RigGridBase* RigMainGrid::gridAndGridLocalIdxFromGlobalCellIdx( size_t globalCel //-------------------------------------------------------------------------------------------------- const RigGridBase* RigMainGrid::gridAndGridLocalIdxFromGlobalCellIdx( size_t globalCellIdx, size_t* gridLocalCellIdx ) const { - CVF_ASSERT( globalCellIdx < m_cells.size() ); + // CVF_ASSERT( globalCellIdx < m_cells.size() ); - const RigCell& cell = m_cells[globalCellIdx]; - const RigGridBase* hostGrid = cell.hostGrid(); + const RigCell& c = cell( globalCellIdx ); + const RigGridBase* hostGrid = c.hostGrid(); CVF_ASSERT( hostGrid ); if ( gridLocalCellIdx ) { - *gridLocalCellIdx = cell.gridLocalCellIndex(); + *gridLocalCellIdx = c.gridLocalCellIndex(); } return hostGrid; @@ -492,7 +508,7 @@ void RigMainGrid::calculateFaults( const RigActiveCellInfo* activeCellInfo ) return; } - m_faultsPrCellAcc = new RigFaultsPrCellAccumulator( m_cells.size() ); + m_faultsPrCellAcc = new RigFaultsPrCellAccumulator( RigGridBase::cellCount() ); // Spread fault idx'es on the cells from the faults for ( size_t fIdx = 0; fIdx < m_faults.size(); ++fIdx ) @@ -517,9 +533,10 @@ void RigMainGrid::calculateFaults( const RigActiveCellInfo* activeCellInfo ) std::vector& unNamedFaultFaces = unNamedFault->faultFaces(); std::vector& unNamedFaultFacesInactive = unNamedFaultWithInactive->faultFaces(); - for ( int gcIdx = 0; gcIdx < static_cast( m_cells.size() ); ++gcIdx ) + for ( size_t i = 0; i < cellCount(); i++ ) { - addUnNamedFaultFaces( gcIdx, + const auto globIndex = actualToGlobalCellIndex( i ); + addUnNamedFaultFaces( (int)globIndex, activeCellInfo, vxs, unNamedFaultIdx, @@ -542,7 +559,7 @@ void RigMainGrid::addUnNamedFaultFaces( int gcIdx, std::vector& unNamedFaultFacesInactive, RigFaultsPrCellAccumulator* faultsPrCellAcc ) const { - if ( m_cells[gcIdx].isInvalid() ) + if ( cell( gcIdx ).isInvalid() ) { return; } @@ -586,19 +603,20 @@ void RigMainGrid::addUnNamedFaultFaces( int gcIdx, } neighborReservoirCellIdx = hostGrid->reservoirCellIndex( neighborGridCellIdx ); - if ( m_cells[neighborReservoirCellIdx].isInvalid() ) + if ( cell( neighborReservoirCellIdx ).isInvalid() ) { continue; } - bool isNeighborCellActive = activeCellInfo->isActive( neighborReservoirCellIdx ); + auto activeNeighborCellIndex = hostGrid->globalToActualCellIndex( neighborGridCellIdx ); + bool isNeighborCellActive = activeCellInfo->isActive( activeNeighborCellIndex ); double tolerance = 1e-6; std::array faceIdxs; - m_cells[gcIdx].faceIndices( face, &faceIdxs ); + cell( gcIdx ).faceIndices( face, &faceIdxs ); std::array nbFaceIdxs; - m_cells[neighborReservoirCellIdx].faceIndices( StructGridInterface::oppositeFace( face ), &nbFaceIdxs ); + cell( neighborReservoirCellIdx ).faceIndices( StructGridInterface::oppositeFace( face ), &nbFaceIdxs ); bool sharedFaceVertices = true; if ( sharedFaceVertices && vxs[faceIdxs[0]].pointDistance( vxs[nbFaceIdxs[0]] ) > tolerance ) sharedFaceVertices = false; @@ -664,7 +682,7 @@ void RigMainGrid::distributeNNCsToFaults() if ( fIdx1 < 0 && fIdx2 < 0 ) { cvf::String lgrString( "Same Grid" ); - if ( m_cells[conn.c1GlobIdx()].hostGrid() != m_cells[conn.c2GlobIdx()].hostGrid() ) + if ( cell( conn.c1GlobIdx() ).hostGrid() != cell( conn.c2GlobIdx() ).hostGrid() ) { lgrString = "Different Grid"; } @@ -741,7 +759,7 @@ void RigMainGrid::computeFaceNormalsDirection( const std::vector& reserv for ( const auto& index : reservoirCellIndices ) { - const auto& cell = m_cells[index]; + const auto& cell = this->cell( index ); if ( !cell.isInvalid() ) { // Some cells can be very twisted and distorted. Use a volume criteria to find a reasonably regular cell. diff --git a/ApplicationLibCode/ReservoirDataModel/RigMainGrid.h b/ApplicationLibCode/ReservoirDataModel/RigMainGrid.h index 821f7fde94..991fbbc237 100644 --- a/ApplicationLibCode/ReservoirDataModel/RigMainGrid.h +++ b/ApplicationLibCode/ReservoirDataModel/RigMainGrid.h @@ -46,8 +46,10 @@ public: std::vector& nodes(); const std::vector& nodes() const; - std::vector& globalCellArray(); - const std::vector& globalCellArray() const; + std::vector& reservoirCells(); + const std::vector& reservoirCells() const; + // std::vector& globalCellArray(); + // const std::vector& globalCellArray() const; virtual RigGridBase* gridAndGridLocalIdxFromGlobalCellIdx( size_t globalCellIdx, size_t* gridLocalCellIdx ); virtual const RigGridBase* gridAndGridLocalIdxFromGlobalCellIdx( size_t globalCellIdx, size_t* gridLocalCellIdx ) const;