mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#5131 Update calculation curves when summary case is replaced.
This commit is contained in:
@@ -65,6 +65,7 @@
|
||||
#include "RimRftPlotCollection.h"
|
||||
#include "RimSaturationPressurePlotCollection.h"
|
||||
#include "RimScriptCollection.h"
|
||||
#include "RimSummaryCalculation.h"
|
||||
#include "RimSummaryCalculationCollection.h"
|
||||
#include "RimSummaryCaseMainCollection.h"
|
||||
#include "RimSummaryCrossPlotCollection.h"
|
||||
@@ -106,6 +107,7 @@ RimProject::RimProject( void )
|
||||
, m_nextValidCaseGroupId( 0 )
|
||||
, m_nextValidViewId( 1 )
|
||||
, m_nextValidPlotId( 1 )
|
||||
, m_nextValidCalculationId( 1 )
|
||||
{
|
||||
CAF_PDM_InitObject( "Project", "", "", "" );
|
||||
|
||||
@@ -243,10 +245,11 @@ void RimProject::close()
|
||||
plotWindowCurrentModelIndexPath = "";
|
||||
plotWindowTreeViewState = "";
|
||||
|
||||
m_nextValidCaseId = 0;
|
||||
m_nextValidCaseGroupId = 0;
|
||||
m_nextValidViewId = 1;
|
||||
m_nextValidPlotId = 1;
|
||||
m_nextValidCaseId = 0;
|
||||
m_nextValidCaseGroupId = 0;
|
||||
m_nextValidViewId = 1;
|
||||
m_nextValidPlotId = 1;
|
||||
m_nextValidCalculationId = 1;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -539,6 +542,22 @@ void RimProject::assignPlotIdToPlotWindow( RimPlotWindow* plotWindow )
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimProject::assignCalculationIdToCalculation( RimSummaryCalculation* calculation )
|
||||
{
|
||||
if ( calculation )
|
||||
{
|
||||
for ( RimSummaryCalculation* existingCalculation : calculationCollection->calculations() )
|
||||
{
|
||||
m_nextValidCalculationId = std::max( m_nextValidCalculationId, existingCalculation->id() + 1 );
|
||||
}
|
||||
|
||||
calculation->setId( m_nextValidCalculationId++ );
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
||||
@@ -39,6 +39,7 @@ class RimTextAnnotation;
|
||||
class RimReachCircleAnnotation;
|
||||
class RimPolylinesAnnotation;
|
||||
class RimSummaryCalculationCollection;
|
||||
class RimSummaryCalculation;
|
||||
class RimCase;
|
||||
class RimCommandObject;
|
||||
class RimCommandObject;
|
||||
@@ -119,6 +120,7 @@ public:
|
||||
void assignIdToCaseGroup( RimIdenticalGridCaseGroup* caseGroup );
|
||||
void assignViewIdToView( Rim3dView* view );
|
||||
void assignPlotIdToPlotWindow( RimPlotWindow* plotWindow );
|
||||
void assignCalculationIdToCalculation( RimSummaryCalculation* calculation );
|
||||
|
||||
void allCases( std::vector<RimCase*>& cases ) const;
|
||||
|
||||
@@ -207,6 +209,7 @@ private:
|
||||
int m_nextValidCaseGroupId;
|
||||
int m_nextValidViewId;
|
||||
int m_nextValidPlotId;
|
||||
int m_nextValidCalculationId;
|
||||
|
||||
caf::PdmChildArrayField<RimEclipseCase*> casesObsolete; // obsolete
|
||||
caf::PdmChildArrayField<RimIdenticalGridCaseGroup*> caseGroupsObsolete; // obsolete
|
||||
|
||||
@@ -64,6 +64,8 @@ RimSummaryCalculation::RimSummaryCalculation()
|
||||
CAF_PDM_InitFieldNoDefault( &m_calculatedValues, "CalculatedValues", "Calculated Values", "", "", "" );
|
||||
|
||||
CAF_PDM_InitFieldNoDefault( &m_timesteps, "TimeSteps", "Time Steps", "", "", "" );
|
||||
CAF_PDM_InitField( &m_id, "Id", -1, "Id", "", "", "" );
|
||||
m_id.uiCapability()->setUiHidden( true );
|
||||
|
||||
m_exprContextMenuMgr = std::unique_ptr<RiuExpressionContextMenuManager>( new RiuExpressionContextMenuManager() );
|
||||
|
||||
@@ -86,6 +88,22 @@ QString RimSummaryCalculation::description() const
|
||||
return m_description;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimSummaryCalculation::setId( int id )
|
||||
{
|
||||
m_id = id;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
int RimSummaryCalculation::id() const
|
||||
{
|
||||
return m_id;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -478,3 +496,15 @@ void RimSummaryCalculation::updateDependentCurvesAndPlots()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
std::vector<RimSummaryCalculationVariable*> RimSummaryCalculation::allVariables() const
|
||||
{
|
||||
std::vector<RimSummaryCalculationVariable*> outVariables;
|
||||
for ( RimSummaryCalculationVariable* v : m_variables )
|
||||
outVariables.push_back( v );
|
||||
|
||||
return outVariables;
|
||||
}
|
||||
|
||||
@@ -42,10 +42,15 @@ public:
|
||||
void setDescription( const QString& description );
|
||||
QString description() const;
|
||||
|
||||
void setId( int id );
|
||||
int id() const;
|
||||
|
||||
bool isDirty() const;
|
||||
|
||||
caf::PdmChildArrayFieldHandle* variables();
|
||||
|
||||
std::vector<RimSummaryCalculationVariable*> allVariables() const;
|
||||
|
||||
const std::vector<double>& values() const;
|
||||
const std::vector<time_t>& timeSteps() const;
|
||||
|
||||
@@ -85,6 +90,7 @@ private:
|
||||
|
||||
caf::PdmField<std::vector<double>> m_calculatedValues;
|
||||
caf::PdmField<std::vector<time_t>> m_timesteps;
|
||||
caf::PdmField<int> m_id;
|
||||
|
||||
std::unique_ptr<RiuExpressionContextMenuManager> m_exprContextMenuMgr;
|
||||
|
||||
|
||||
@@ -18,7 +18,10 @@
|
||||
|
||||
#include "RimSummaryCalculationCollection.h"
|
||||
|
||||
#include "RiaApplication.h"
|
||||
|
||||
#include "RimCalculatedSummaryCase.h"
|
||||
#include "RimProject.h"
|
||||
#include "RimSummaryCalculation.h"
|
||||
|
||||
#include "cafPdmUiGroup.h"
|
||||
@@ -46,8 +49,9 @@ RimSummaryCalculationCollection::RimSummaryCalculationCollection()
|
||||
RimSummaryCalculation* RimSummaryCalculationCollection::addCalculation()
|
||||
{
|
||||
RimSummaryCalculation* calculation = new RimSummaryCalculation;
|
||||
RiaApplication::instance()->project()->assignCalculationIdToCalculation( calculation );
|
||||
|
||||
QString varName = QString( "Calculation_%1" ).arg( m_calcuations.size() + 1 );
|
||||
QString varName = QString( "Calculation_%1" ).arg( calculation->id() );
|
||||
calculation->setDescription( varName );
|
||||
calculation->setExpression( varName + " := x + y" );
|
||||
calculation->parseExpression();
|
||||
|
||||
@@ -85,7 +85,8 @@ void RifCalculatedSummaryCurveReader::buildMetaData()
|
||||
|
||||
for ( RimSummaryCalculation* calc : m_calculationCollection->calculations() )
|
||||
{
|
||||
m_allResultAddresses.insert( RifEclipseSummaryAddress::calculatedAddress( calc->description().toStdString() ) );
|
||||
m_allResultAddresses.insert(
|
||||
RifEclipseSummaryAddress::calculatedAddress( calc->description().toStdString(), calc->id() ) );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -97,11 +98,10 @@ RimSummaryCalculation*
|
||||
{
|
||||
if ( m_calculationCollection && resultAddress.category() == RifEclipseSummaryAddress::SUMMARY_CALCULATED )
|
||||
{
|
||||
QString calculatedName = QString::fromStdString( resultAddress.quantityName() );
|
||||
|
||||
int id = resultAddress.id();
|
||||
for ( RimSummaryCalculation* calc : m_calculationCollection->calculations() )
|
||||
{
|
||||
if ( calc->description() == calculatedName )
|
||||
if ( calc->id() == id )
|
||||
{
|
||||
return calc;
|
||||
}
|
||||
|
||||
@@ -65,6 +65,7 @@ RimSummaryAddress::RimSummaryAddress()
|
||||
CAF_PDM_InitFieldNoDefault( &m_cellK, "SummaryCellK", "K", "", "", "" );
|
||||
CAF_PDM_InitFieldNoDefault( &m_aquiferNumber, "SummaryAquifer", "Aquifer", "", "", "" );
|
||||
CAF_PDM_InitFieldNoDefault( &m_isErrorResult, "IsErrorResult", "Is Error Result", "", "", "" );
|
||||
CAF_PDM_InitFieldNoDefault( &m_calculationId, "CalculationId", "Calculation Id", "", "", "" );
|
||||
|
||||
m_category = RifEclipseSummaryAddress::SUMMARY_INVALID;
|
||||
m_regionNumber = -1;
|
||||
@@ -75,6 +76,7 @@ RimSummaryAddress::RimSummaryAddress()
|
||||
m_cellK = -1;
|
||||
m_aquiferNumber = -1;
|
||||
m_isErrorResult = false;
|
||||
m_calculationId = -1;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -98,9 +100,10 @@ void RimSummaryAddress::setAddress( const RifEclipseSummaryAddress& addr )
|
||||
m_aquiferNumber = addr.aquiferNumber();
|
||||
m_isErrorResult = addr.isErrorResult();
|
||||
|
||||
m_cellI = addr.cellI();
|
||||
m_cellJ = addr.cellJ();
|
||||
m_cellK = addr.cellK();
|
||||
m_cellI = addr.cellI();
|
||||
m_cellJ = addr.cellJ();
|
||||
m_cellK = addr.cellK();
|
||||
m_calculationId = addr.id();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -120,5 +123,6 @@ RifEclipseSummaryAddress RimSummaryAddress::address()
|
||||
m_cellJ(),
|
||||
m_cellK(),
|
||||
m_aquiferNumber,
|
||||
m_isErrorResult );
|
||||
m_isErrorResult,
|
||||
m_calculationId );
|
||||
}
|
||||
|
||||
@@ -62,4 +62,5 @@ private:
|
||||
caf::PdmField<int> m_cellK;
|
||||
caf::PdmField<int> m_aquiferNumber;
|
||||
caf::PdmField<bool> m_isErrorResult;
|
||||
caf::PdmField<int> m_calculationId;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user