#5131 Update calculation curves when summary case is replaced.

This commit is contained in:
Kristian Bendiksen
2019-12-09 09:21:06 +01:00
parent 8e540efa37
commit 35df3cc9d3
22 changed files with 218 additions and 38 deletions

View File

@@ -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++ );
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------

View File

@@ -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

View File

@@ -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;
}

View File

@@ -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;

View File

@@ -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();

View File

@@ -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;
}

View File

@@ -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 );
}

View File

@@ -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;
};