mirror of
https://github.com/OPM/ResInsight.git
synced 2026-08-26 21:27:15 -05:00
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:
@@ -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"
|
||||
|
||||
+2
@@ -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;
|
||||
|
||||
+1
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user