Release preparations

* Adds a bounds check on the node index to prevent accessing invalid memory locations.
This prevents potential crashes caused by out-of-bounds access when retrieving summary variable values.
* Updates warning message for incomplete deltas
* Plot based on a single realization from a file set ensemble is not restored correctly on project load
* Populate result addresses if no addresses are present
* Adds CNV_ (convergence) result name
* Avoid include of RiaResultNames.h in header file
This commit is contained in:
Magne Sjaastad
2025-08-27 14:22:11 +02:00
committed by GitHub
parent 4d9a723e32
commit 4135a743fe
38 changed files with 327 additions and 90 deletions
@@ -566,6 +566,8 @@ bool RiaApplication::loadProject( const QString& projectFileName, ProjectLoadAct
// At this point, all the file paths variables are replaced and all file paths updated to the new location. This will enable use of
// file paths in initAfterRead().
// If Rim-objects are created in initAfterRead(), they will be resolved in the second pass
// Example: Realization objects in ensemble file set
m_project->resolveReferencesRecursively();
m_project->initAfterReadRecursively();
@@ -884,6 +886,10 @@ bool RiaApplication::loadProject( const QString& projectFileName, ProjectLoadAct
}
}
// Second pass: a full recursive resolution to robustly handle both previously failing references and any newly created ones from
// initAfterRead.
m_project->resolveReferencesRecursively();
// Some procedures in onProjectOpened() may rely on the display model having been created
// So we need to force the completion of the display model here.
RiaViewRedrawScheduler::instance()->updateAndRedrawScheduledViews();
@@ -493,6 +493,14 @@ QString RiaResultNames::sgcr()
return "SGCR";
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QString RiaResultNames::convergence()
{
return "CNV_";
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@@ -91,6 +91,7 @@ QString swat();
QString sowcr();
QString sogcr();
QString sgcr();
QString convergence();
// Well path derived results
QString wbsAzimuthResult();
@@ -27,6 +27,7 @@
#include "RiaGuiApplication.h"
#include "RiaLogging.h"
#include "RiaPreferencesGrid.h"
#include "RiaResultNames.h"
#include "RiaViewRedrawScheduler.h"
#include "RifEclipseSummaryTools.h"
@@ -20,6 +20,7 @@
#include "RicCreateDepthAdjustedLasFilesImpl.h"
#include "RiaLogging.h"
#include "RiaResultNames.h"
#include "RicCreateDepthAdjustedLasFilesUi.h"
@@ -280,6 +280,13 @@ std::pair<bool, std::vector<double>> RifEclEclipseSummary::values( const RifEcli
int variableIndex = indexFromAddress( resultAddress );
if ( variableIndex < 0 ) return { false, {} };
// Validate index is within bounds to prevent segfault
int nodeCount = ecl_smspec_num_nodes( m_ecl_SmSpec );
if ( variableIndex >= nodeCount )
{
return { false, {} }; // Invalid index - beyond available nodes
}
const ecl::smspec_node& ertSumVarNode = ecl_smspec_iget_node_w_node_index( m_ecl_SmSpec, variableIndex );
int paramsIndex = ertSumVarNode.get_params_index();
@@ -20,6 +20,7 @@
#include "RiaApplication.h"
#include "RiaLogging.h"
#include "RiaResultNames.h"
#include "RicFaciesPropertiesImportTools.h"
@@ -19,6 +19,8 @@
#include "RivReservoirFaultsPartMgr.h"
#include "RiaResultNames.h"
#include "RigEclipseResultAddress.h"
#include "RigMainGrid.h"
#include "RigNNCData.h"
@@ -23,6 +23,7 @@
#include "RiaDefines.h"
#include "RiaFieldHandleTools.h"
#include "RiaGuiApplication.h"
#include "RiaResultNames.h"
#include "RigCaseCellResultsData.h"
#include "RigEclipseCaseData.h"
@@ -20,6 +20,7 @@
#include "RiaColorTables.h"
#include "RiaLogging.h"
#include "RiaResultNames.h"
#include "RigCaseCellResultsData.h"
#include "RigEclipseCaseData.h"
@@ -18,6 +18,8 @@
#include "RimSaturationPressurePlotCollection.h"
#include "RiaResultNames.h"
#include "RigCaseCellResultsData.h"
#include "RigEclipseCaseData.h"
#include "RigEclipseResultAddress.h"
@@ -20,6 +20,9 @@
#include "RimCellEdgeColors.h"
#include "RiaLogging.h"
#include "RiaResultNames.h"
#include "RicCreateEnsembleWellLogUi.h"
#include "RigCaseCellResultsData.h"
@@ -36,7 +39,6 @@
#include "cvfMath.h"
#include "RiaLogging.h"
#include <array>
namespace caf
@@ -27,6 +27,7 @@
#include "RiaLogging.h"
#include "RiaPreferencesGrid.h"
#include "RiaQDateTimeTools.h"
#include "RiaResultNames.h"
#include "CompletionExportCommands/RicWellPathExportCompletionDataFeatureImpl.h"
@@ -23,6 +23,7 @@
#include "Histogram/RimGridStatisticsHistogramDataSource.h"
#include "RiaLogging.h"
#include "RiaQDateTimeTools.h"
#include "RiaResultNames.h"
#include "RicfCommandObject.h"
@@ -1425,6 +1426,8 @@ bool RimEclipseResultDefinition::isCompletionTypeSelected() const
//--------------------------------------------------------------------------------------------------
bool RimEclipseResultDefinition::hasCategoryResult() const
{
if ( m_resultVariable().startsWith( RiaResultNames::convergence() ) ) return false;
if ( RiaResultNames::isCategoryResult( m_resultVariable() ) ) return true;
if ( auto* gridCellResults = currentGridCellResults() )
@@ -21,6 +21,7 @@
#include "RiaColorTables.h"
#include "RiaColorTools.h"
#include "RiaLogging.h"
#include "RiaResultNames.h"
#include "RigAllanDiagramData.h"
#include "RigCaseCellResultsData.h"
@@ -25,6 +25,7 @@
#include "RiaFieldHandleTools.h"
#include "RiaLogging.h"
#include "RiaPreferences.h"
#include "RiaResultNames.h"
#include "HoloLensCommands/RicExportToSharingServerScheduler.h"
@@ -18,6 +18,8 @@
#include "RimElementVectorResult.h"
#include "RiaResultNames.h"
#include "RigCaseCellResultsData.h"
#include "RigEclipseCaseData.h"
#include "RigEclipseResultAddress.h"
@@ -18,6 +18,8 @@
#include "RimHistogramCalculator.h"
#include "RiaResultNames.h"
#include "ContourMap/RigContourMapProjection.h"
#include "RigEclipseMultiPropertyStatCalc.h"
#include "RigEclipseNativeVisibleCellsStatCalc.h"
@@ -22,6 +22,7 @@
#include "RiaGuiApplication.h"
#include "RiaLogging.h"
#include "RiaResultNames.h"
#include "RigActiveCellInfo.h"
#include "RigCaseCellResultsData.h"
@@ -25,6 +25,7 @@
#include "RiaNumberFormat.h"
#include "RiaNumericalTools.h"
#include "RiaPreferences.h"
#include "RiaResultNames.h"
#include "RimCellEdgeColors.h"
#include "RimColorLegend.h"
@@ -1221,7 +1222,7 @@ void RimRegularLegendConfig::setDefaultConfigForResultName( int caseId, const QS
colorRangeType = RimRegularLegendConfig::ColorRangesType::NORMAL;
}
if ( resultName.startsWith( "CNV_" ) )
if ( resultName.startsWith( RiaResultNames::convergence() ) )
{
mappingType = MappingType::LINEAR_DISCRETE;
rangeType = RimLegendConfig::RangeModeType::AUTOMATIC_ALLTIMESTEPS;
@@ -20,6 +20,7 @@
#include "RiaDefines.h"
#include "RiaInterpolationTools.h"
#include "RiaLogging.h"
#include "RiaResultNames.h"
#include "RiaStimPlanModelDefines.h"
#include "RigEclipseCaseData.h"
@@ -19,6 +19,7 @@
#include "RiaDefines.h"
#include "RiaLogging.h"
#include "RiaResultNames.h"
#include "RiaStimPlanModelDefines.h"
#include "RigEclipseCaseData.h"
@@ -145,8 +145,8 @@ std::pair<bool, std::vector<double>> RimDeltaSummaryCase::values( const RifEclip
if ( *caseTimeSteps.rbegin() < timeThreshold )
{
QString txt = "Summary vector " + QString::fromStdString( resultAddress.toEclipseTextAddress() ) +
" has different time steps in the source ensembles, no values are calculated for this vector.";
QString txt = "Delta for summary vector " + QString::fromStdString( resultAddress.toEclipseTextAddress() ) +
": One or both source realizations are incomplete, no values are calculated.";
RiaLogging::warning( txt );
@@ -420,6 +420,13 @@ void RimDeltaSummaryCase::createSummaryReaderInterface()
//--------------------------------------------------------------------------------------------------
RifSummaryReaderInterface* RimDeltaSummaryCase::summaryReader()
{
if ( m_allResultAddresses.empty() )
{
// Other Rim classes implementing the summaryReader() function always calls createSummaryReaderInterface() if not present. Here the
// logic must be slightly different, we check if no addresses are present.
createSummaryReaderInterface();
}
return this;
}
@@ -25,6 +25,7 @@
#include "RiaLogging.h"
#include "RiaPlotDefines.h"
#include "RiaPreferences.h"
#include "RiaResultNames.h"
#include "RiaSimWellBranchTools.h"
#include "RiaWellLogCurveMerger.h"
@@ -23,6 +23,7 @@
#include "RiaApplication.h"
#include "RiaGuiApplication.h"
#include "RiaLogging.h"
#include "RiaResultNames.h"
#include "RicImportSummaryCasesFeature.h"
@@ -105,6 +105,7 @@ set(SOURCE_GROUP_SOURCE_FILES
${CMAKE_CURRENT_LIST_DIR}/RigEclipseMultiPropertyStatCalc.cpp
${CMAKE_CURRENT_LIST_DIR}/RigEclipseNativeStatCalc.cpp
${CMAKE_CURRENT_LIST_DIR}/RigEclipseNativeVisibleCellsStatCalc.cpp
${CMAKE_CURRENT_LIST_DIR}/RigEclipseResultAddress.cpp
${CMAKE_CURRENT_LIST_DIR}/RigEclipseResultInfo.cpp
${CMAKE_CURRENT_LIST_DIR}/RigElasticProperties.cpp
${CMAKE_CURRENT_LIST_DIR}/RigEnsembleFractureStatisticsCalculator.cpp
@@ -18,6 +18,8 @@
#include "RigEclipseContourMapProjection.h"
#include "RiaResultNames.h"
#include "RigActiveCellInfo.h"
#include "RigCaseCellResultsData.h"
#include "RigCell.h"
@@ -19,6 +19,8 @@
#include "RigResultAccessorFactory.h"
#include "RiaResultNames.h"
#include "RigActiveCellInfo.h"
#include "RigActiveCellsResultAccessor.h"
#include "RigAllGridCellsResultAccessor.h"
@@ -18,6 +18,8 @@
#include "RigAllanUtil.h"
#include "RiaResultNames.h"
#include "RigAllanDiagramData.h"
#include "RigCaseCellResultsData.h"
#include "RigEclipseResultAddress.h"
@@ -18,6 +18,8 @@
#include "RigCellsWithNncsCalculator.h"
#include "RiaResultNames.h"
#include "RigActiveCellInfo.h"
#include "RigCaseCellResultsData.h"
#include "RigEclipseResultAddress.h"
@@ -19,6 +19,8 @@
#include "RigEclipseNativeStatCalc.h"
#include "RiaResultNames.h"
#include "RigCaseCellResultsData.h"
#include "RigStatisticsMath.h"
#include "RigWeightedMeanCalc.h"
@@ -19,6 +19,8 @@
#include "RigEclipseNativeVisibleCellsStatCalc.h"
#include "RiaResultNames.h"
#include "RigActiveCellInfo.h"
#include "RigCaseCellResultsData.h"
#include "RigStatisticsMath.h"
@@ -0,0 +1,226 @@
/////////////////////////////////////////////////////////////////////////////////
//
// Copyright (C) 2025 Equinor ASA
//
// ResInsight is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// ResInsight is distributed in the hope that it will be useful, but WITHOUT ANY
// WARRANTY; without even the implied warranty of MERCHANTABILITY or
// FITNESS FOR A PARTICULAR PURPOSE.
//
// See the GNU General Public License at <http://www.gnu.org/licenses/gpl.html>
// for more details.
//
/////////////////////////////////////////////////////////////////////////////////
#include "RigEclipseResultAddress.h"
#include "RiaResultNames.h"
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RigEclipseResultAddress::RigEclipseResultAddress( RiaDefines::ResultCatType type, RiaDefines::ResultDataType dataType, const QString& resultName )
: m_resultCatType( type )
, m_resultDataType( dataType )
, m_resultName( resultName )
, m_timeLapseBaseFrameIdx( NO_TIME_LAPSE )
, m_differenceCaseId( NO_CASE_DIFF )
, m_divideByCellFaceArea( false )
{
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RigEclipseResultAddress::RigEclipseResultAddress( RiaDefines::ResultCatType type,
const QString& resultName,
int timeLapseBaseTimeStep /*= NO_TIME_LAPSE*/,
int differenceCaseId /*= NO_CASE_DIFF*/,
bool divideByCellFaceArea /*= false */ )
: m_resultCatType( type )
, m_resultDataType( RiaDefines::ResultDataType::UNKNOWN )
, m_resultName( resultName )
, m_timeLapseBaseFrameIdx( timeLapseBaseTimeStep )
, m_differenceCaseId( differenceCaseId )
, m_divideByCellFaceArea( divideByCellFaceArea )
{
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RigEclipseResultAddress::RigEclipseResultAddress( const QString& resultName )
: m_resultCatType( RiaDefines::ResultCatType::UNDEFINED )
, m_resultDataType( RiaDefines::ResultDataType::UNKNOWN )
, m_resultName( resultName )
, m_timeLapseBaseFrameIdx( NO_TIME_LAPSE )
, m_differenceCaseId( NO_CASE_DIFF )
, m_divideByCellFaceArea( false )
{
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RigEclipseResultAddress::RigEclipseResultAddress()
: m_resultCatType( RiaDefines::ResultCatType::UNDEFINED )
, m_resultDataType( RiaDefines::ResultDataType::UNKNOWN )
, m_timeLapseBaseFrameIdx( NO_TIME_LAPSE )
, m_differenceCaseId( NO_CASE_DIFF )
, m_divideByCellFaceArea( false )
{
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool RigEclipseResultAddress::isValid() const
{
return !( m_resultName.isEmpty() || m_resultName == RiaResultNames::undefinedResultName() );
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool RigEclipseResultAddress::isDeltaTimeStepActive() const
{
return m_timeLapseBaseFrameIdx > NO_TIME_LAPSE;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RigEclipseResultAddress::setDeltaTimeStepIndex( int timeStepIndex )
{
m_timeLapseBaseFrameIdx = timeStepIndex;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
int RigEclipseResultAddress::deltaTimeStepIndex() const
{
return m_timeLapseBaseFrameIdx;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool RigEclipseResultAddress::representsAllTimeLapses() const
{
return m_timeLapseBaseFrameIdx == ALL_TIME_LAPSES;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool RigEclipseResultAddress::isDeltaCaseActive() const
{
return m_differenceCaseId > NO_CASE_DIFF;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RigEclipseResultAddress::setDeltaCaseId( int caseId )
{
m_differenceCaseId = caseId;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
int RigEclipseResultAddress::deltaCaseId() const
{
return m_differenceCaseId;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RigEclipseResultAddress::enableDivideByCellFaceArea( bool enable )
{
m_divideByCellFaceArea = enable;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool RigEclipseResultAddress::isDivideByCellFaceAreaActive() const
{
return m_divideByCellFaceArea;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool RigEclipseResultAddress::operator<( const RigEclipseResultAddress& other ) const
{
if ( m_divideByCellFaceArea != other.m_divideByCellFaceArea )
{
return ( m_divideByCellFaceArea < other.m_divideByCellFaceArea );
}
if ( m_differenceCaseId != other.m_differenceCaseId )
{
return ( m_differenceCaseId < other.m_differenceCaseId );
}
if ( m_timeLapseBaseFrameIdx != other.m_timeLapseBaseFrameIdx )
{
return ( m_timeLapseBaseFrameIdx < other.m_timeLapseBaseFrameIdx );
}
if ( m_resultCatType != other.m_resultCatType )
{
return ( m_resultCatType < other.m_resultCatType );
}
return ( m_resultName < other.m_resultName );
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
const QString& RigEclipseResultAddress::resultName() const
{
return m_resultName;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RigEclipseResultAddress::setResultName( QString name )
{
m_resultName = name;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RiaDefines::ResultCatType RigEclipseResultAddress::resultCatType() const
{
return m_resultCatType;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RigEclipseResultAddress::setResultCatType( RiaDefines::ResultCatType catType )
{
m_resultCatType = catType;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool RigEclipseResultAddress::operator==( const RigEclipseResultAddress& other ) const
{
return m_resultCatType == other.m_resultCatType && m_resultName == other.m_resultName &&
m_timeLapseBaseFrameIdx == other.m_timeLapseBaseFrameIdx && m_differenceCaseId == other.m_differenceCaseId &&
m_divideByCellFaceArea == other.m_divideByCellFaceArea;
}
@@ -18,117 +18,51 @@
#pragma once
#include "RiaDefines.h"
#include "RiaResultNames.h"
#include <QString>
class RigEclipseResultAddress
{
public:
RigEclipseResultAddress()
: m_resultCatType( RiaDefines::ResultCatType::UNDEFINED )
, m_resultDataType( RiaDefines::ResultDataType::UNKNOWN )
, m_timeLapseBaseFrameIdx( NO_TIME_LAPSE )
, m_differenceCaseId( NO_CASE_DIFF )
, m_divideByCellFaceArea( false )
{
}
explicit RigEclipseResultAddress( const QString& resultName )
: m_resultCatType( RiaDefines::ResultCatType::UNDEFINED )
, m_resultDataType( RiaDefines::ResultDataType::UNKNOWN )
, m_resultName( resultName )
, m_timeLapseBaseFrameIdx( NO_TIME_LAPSE )
, m_differenceCaseId( NO_CASE_DIFF )
, m_divideByCellFaceArea( false )
{
}
RigEclipseResultAddress();
explicit RigEclipseResultAddress( const QString& resultName );
explicit RigEclipseResultAddress( RiaDefines::ResultCatType type,
const QString& resultName,
int timeLapseBaseTimeStep = NO_TIME_LAPSE,
int differenceCaseId = NO_CASE_DIFF,
bool divideByCellFaceArea = false )
: m_resultCatType( type )
, m_resultDataType( RiaDefines::ResultDataType::UNKNOWN )
, m_resultName( resultName )
, m_timeLapseBaseFrameIdx( timeLapseBaseTimeStep )
, m_differenceCaseId( differenceCaseId )
, m_divideByCellFaceArea( divideByCellFaceArea )
{
}
bool divideByCellFaceArea = false );
explicit RigEclipseResultAddress( RiaDefines::ResultCatType type, RiaDefines::ResultDataType dataType, const QString& resultName );
explicit RigEclipseResultAddress( RiaDefines::ResultCatType type, RiaDefines::ResultDataType dataType, const QString& resultName )
: m_resultCatType( type )
, m_resultDataType( dataType )
, m_resultName( resultName )
, m_timeLapseBaseFrameIdx( NO_TIME_LAPSE )
, m_differenceCaseId( NO_CASE_DIFF )
, m_divideByCellFaceArea( false )
{
}
bool isValid() const { return !( m_resultName.isEmpty() || m_resultName == RiaResultNames::undefinedResultName() ); }
bool isValid() const;
void setDataType( RiaDefines::ResultDataType dataType ) { m_resultDataType = dataType; }
RiaDefines::ResultDataType dataType() const { return m_resultDataType; }
// Delta Time Step
bool isDeltaTimeStepActive() const { return m_timeLapseBaseFrameIdx > NO_TIME_LAPSE; }
void setDeltaTimeStepIndex( int timeStepIndex ) { m_timeLapseBaseFrameIdx = timeStepIndex; }
int deltaTimeStepIndex() const { return m_timeLapseBaseFrameIdx; }
bool representsAllTimeLapses() const { return m_timeLapseBaseFrameIdx == ALL_TIME_LAPSES; }
bool isDeltaTimeStepActive() const;
void setDeltaTimeStepIndex( int timeStepIndex );
int deltaTimeStepIndex() const;
bool representsAllTimeLapses() const;
static constexpr int allTimeLapsesValue() { return ALL_TIME_LAPSES; }
static constexpr int noTimeLapseValue() { return NO_TIME_LAPSE; }
// Delta Grid Case
bool isDeltaCaseActive() const { return m_differenceCaseId > NO_CASE_DIFF; }
void setDeltaCaseId( int caseId ) { m_differenceCaseId = caseId; }
int deltaCaseId() const { return m_differenceCaseId; }
bool isDeltaCaseActive() const;
void setDeltaCaseId( int caseId );
int deltaCaseId() const;
static constexpr int noCaseDiffValue() { return NO_CASE_DIFF; }
// Divide by Cell Face Area
void enableDivideByCellFaceArea( bool enable ) { m_divideByCellFaceArea = enable; }
void enableDivideByCellFaceArea( bool enable );
bool isDivideByCellFaceAreaActive() const;
bool isDivideByCellFaceAreaActive() const { return m_divideByCellFaceArea; }
bool operator<( const RigEclipseResultAddress& other ) const;
bool operator==( const RigEclipseResultAddress& other ) const;
bool operator<( const RigEclipseResultAddress& other ) const
{
if ( m_divideByCellFaceArea != other.m_divideByCellFaceArea )
{
return ( m_divideByCellFaceArea < other.m_divideByCellFaceArea );
}
const QString& resultName() const;
void setResultName( QString name );
if ( m_differenceCaseId != other.m_differenceCaseId )
{
return ( m_differenceCaseId < other.m_differenceCaseId );
}
if ( m_timeLapseBaseFrameIdx != other.m_timeLapseBaseFrameIdx )
{
return ( m_timeLapseBaseFrameIdx < other.m_timeLapseBaseFrameIdx );
}
if ( m_resultCatType != other.m_resultCatType )
{
return ( m_resultCatType < other.m_resultCatType );
}
return ( m_resultName < other.m_resultName );
}
bool operator==( const RigEclipseResultAddress& other ) const
{
return m_resultCatType == other.m_resultCatType && m_resultName == other.m_resultName &&
m_timeLapseBaseFrameIdx == other.m_timeLapseBaseFrameIdx && m_differenceCaseId == other.m_differenceCaseId &&
m_divideByCellFaceArea == other.m_divideByCellFaceArea;
}
const QString& resultName() const { return m_resultName; }
void setResultName( QString name ) { m_resultName = name; }
RiaDefines::ResultCatType resultCatType() const { return m_resultCatType; }
void setResultCatType( RiaDefines::ResultCatType catType ) { m_resultCatType = catType; }
RiaDefines::ResultCatType resultCatType() const;
void setResultCatType( RiaDefines::ResultCatType catType );
private:
RiaDefines::ResultCatType m_resultCatType;
@@ -21,6 +21,7 @@
#include <memory>
#include "RiaLogging.h"
#include "RiaResultNames.h"
#include "RifEclipseOutputFileTools.h"
#include "RifReaderEclipseOutput.h"
@@ -19,6 +19,7 @@
#include "RigNumberOfFloodedPoreVolumesCalculator.h"
#include "RiaPorosityModel.h"
#include "RiaResultNames.h"
#include "RigActiveCellInfo.h"
#include "RigCaseCellResultsData.h"
@@ -32,7 +33,9 @@
#include "RimReservoirCellResultsStorage.h"
#include "cafProgressInfo.h"
#include <QString>
#include <vector>
//--------------------------------------------------------------------------------------------------
@@ -20,6 +20,8 @@
#include "Riu3dSelectionManager.h"
#include "RiuRelativePermeabilityPlotPanel.h"
#include "RiaResultNames.h"
#include "RigActiveCellInfo.h"
#include "RigCaseCellResultsData.h"
#include "RigEclipseCaseData.h"
@@ -19,6 +19,8 @@
#include "RiuResultTextBuilder.h"
#include "RiaResultNames.h"
#include "RigAllanDiagramData.h"
#include "RigCaseCellResultsData.h"
#include "RigEclipseCaseData.h"