mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#6479 Update analysis and correlation plots when closing derived cases
This commit is contained in:
@@ -144,7 +144,7 @@ std::set<RifEclipseSummaryAddress> RimDerivedEnsembleCaseCollection::ensembleSum
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimDerivedEnsembleCaseCollection::updateDerivedEnsembleCases()
|
||||
void RimDerivedEnsembleCaseCollection::createDerivedEnsembleCases()
|
||||
{
|
||||
if ( !m_ensemble1 || !m_ensemble2 ) return;
|
||||
|
||||
@@ -194,7 +194,7 @@ void RimDerivedEnsembleCaseCollection::updateDerivedEnsembleCases()
|
||||
// If other derived ensembles are referring to this ensemble, update their cases as well
|
||||
for ( auto referring : findReferringEnsembles() )
|
||||
{
|
||||
referring->updateDerivedEnsembleCases();
|
||||
referring->createDerivedEnsembleCases();
|
||||
}
|
||||
|
||||
deleteCasesNoInUse();
|
||||
@@ -343,7 +343,7 @@ void RimDerivedEnsembleCaseCollection::fieldChangedByUi( const caf::PdmFieldHand
|
||||
|
||||
if ( doUpdateCases )
|
||||
{
|
||||
updateDerivedEnsembleCases();
|
||||
createDerivedEnsembleCases();
|
||||
updateConnectedEditors();
|
||||
|
||||
if ( doShowDialog && m_ensemble1 != nullptr && m_ensemble2 != nullptr && allSummaryCases().empty() )
|
||||
@@ -521,6 +521,27 @@ void RimDerivedEnsembleCaseCollection::updateAutoName()
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimDerivedEnsembleCaseCollection::updateDerivedEnsembleCases()
|
||||
{
|
||||
for ( auto& derivedCase : allDerivedCases( true ) )
|
||||
{
|
||||
derivedCase->createSummaryReaderInterface();
|
||||
|
||||
auto crp = derivedCase->summaryCase1()->caseRealizationParameters();
|
||||
if ( !crp ) continue;
|
||||
derivedCase->setCaseRealizationParameters( crp );
|
||||
}
|
||||
|
||||
// If other derived ensembles are referring to this ensemble, update their cases as well
|
||||
for ( auto referring : findReferringEnsembles() )
|
||||
{
|
||||
referring->updateDerivedEnsembleCases();
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
||||
@@ -62,8 +62,10 @@ public:
|
||||
|
||||
std::vector<RimSummaryCase*> allSummaryCases() const override;
|
||||
std::set<RifEclipseSummaryAddress> ensembleSummaryAddresses() const override;
|
||||
void createDerivedEnsembleCases();
|
||||
void updateDerivedEnsembleCases();
|
||||
bool hasCaseReference( const RimSummaryCase* sumCase ) const;
|
||||
|
||||
bool hasCaseReference( const RimSummaryCase* sumCase ) const;
|
||||
|
||||
void onLoadDataAndUpdate() override;
|
||||
|
||||
|
||||
@@ -71,10 +71,9 @@ RimDerivedSummaryCase::RimDerivedSummaryCase()
|
||||
|
||||
CAF_PDM_InitFieldNoDefault( &m_useFixedTimeStep, "UseFixedTimeStep", "Use Fixed Time Step", "", "", "" );
|
||||
CAF_PDM_InitField( &m_fixedTimeStepIndex, "FixedTimeStepIndex", 0, "Time Step", "", "", "" );
|
||||
CAF_PDM_InitField( &m_inUse, "InUse", false, "In Use", "", "", "" );
|
||||
m_fixedTimeStepIndex.uiCapability()->setUiEditorTypeName( caf::PdmUiTreeSelectionEditor::uiEditorTypeName() );
|
||||
m_fixedTimeStepIndex.uiCapability()->setUiLabelPosition( caf::PdmUiItemInfo::HIDDEN );
|
||||
|
||||
m_inUse = false;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -427,6 +426,22 @@ void RimDerivedSummaryCase::updateDisplayNameFromCases()
|
||||
m_displayName = name;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RimSummaryCase* RimDerivedSummaryCase::summaryCase1() const
|
||||
{
|
||||
return m_summaryCase1;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RimSummaryCase* RimDerivedSummaryCase::summaryCase2() const
|
||||
{
|
||||
return m_summaryCase2;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
||||
@@ -83,6 +83,9 @@ public:
|
||||
|
||||
void updateDisplayNameFromCases();
|
||||
|
||||
RimSummaryCase* summaryCase1() const;
|
||||
RimSummaryCase* summaryCase2() const;
|
||||
|
||||
protected:
|
||||
QString caseName() const override;
|
||||
|
||||
@@ -107,7 +110,7 @@ private:
|
||||
caf::PdmField<caf::AppEnum<FixedTimeStepMode>> m_useFixedTimeStep;
|
||||
caf::PdmField<int> m_fixedTimeStepIndex;
|
||||
|
||||
bool m_inUse;
|
||||
caf::PdmField<bool> m_inUse;
|
||||
std::unique_ptr<RifDerivedEnsembleReader> m_reader;
|
||||
|
||||
std::map<RifEclipseSummaryAddress, std::pair<std::vector<time_t>, std::vector<double>>> m_dataCache;
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
|
||||
#include "RicfCommandObject.h"
|
||||
|
||||
#include "RimAnalysisPlotDataEntry.h"
|
||||
#include "RimDerivedEnsembleCaseCollection.h"
|
||||
#include "RimEnsembleCurveSet.h"
|
||||
#include "RimGridSummaryCase.h"
|
||||
@@ -187,6 +188,7 @@ QString EnsembleParameter::uiName() const
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RimSummaryCaseCollection::RimSummaryCaseCollection()
|
||||
: caseNameChanged( this )
|
||||
, caseRemoved( this )
|
||||
{
|
||||
CAF_PDM_InitScriptableObject( "Summary Case Group", ":/SummaryGroup16x16.png", "", "" );
|
||||
|
||||
@@ -233,6 +235,8 @@ void RimSummaryCaseCollection::removeCase( RimSummaryCase* summaryCase )
|
||||
|
||||
m_cachedSortedEnsembleParameters.clear();
|
||||
|
||||
caseRemoved.send( summaryCase );
|
||||
|
||||
updateReferringCurveSets();
|
||||
|
||||
if ( m_isEnsemble && m_cases.size() != caseCountBeforeRemove )
|
||||
@@ -245,7 +249,7 @@ void RimSummaryCaseCollection::removeCase( RimSummaryCase* summaryCase )
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimSummaryCaseCollection::addCase( RimSummaryCase* summaryCase, bool updateCurveSets )
|
||||
void RimSummaryCaseCollection::addCase( RimSummaryCase* summaryCase )
|
||||
{
|
||||
summaryCase->nameChanged.connect( this, &RimSummaryCaseCollection::onCaseNameChanged );
|
||||
|
||||
@@ -255,12 +259,12 @@ void RimSummaryCaseCollection::addCase( RimSummaryCase* summaryCase, bool update
|
||||
// Update derived ensemble cases (if any)
|
||||
std::vector<RimDerivedEnsembleCaseCollection*> referringObjects;
|
||||
objectsWithReferringPtrFieldsOfType( referringObjects );
|
||||
for ( auto derEnsemble : referringObjects )
|
||||
for ( auto derivedEnsemble : referringObjects )
|
||||
{
|
||||
if ( !derEnsemble ) continue;
|
||||
if ( !derivedEnsemble ) continue;
|
||||
|
||||
derEnsemble->updateDerivedEnsembleCases();
|
||||
if ( updateCurveSets ) derEnsemble->updateReferringCurveSets();
|
||||
derivedEnsemble->createDerivedEnsembleCases();
|
||||
derivedEnsemble->updateReferringCurveSets();
|
||||
}
|
||||
|
||||
if ( m_isEnsemble )
|
||||
@@ -269,7 +273,7 @@ void RimSummaryCaseCollection::addCase( RimSummaryCase* summaryCase, bool update
|
||||
calculateEnsembleParametersIntersectionHash();
|
||||
}
|
||||
|
||||
if ( updateCurveSets ) updateReferringCurveSets();
|
||||
updateReferringCurveSets();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -924,13 +928,18 @@ void RimSummaryCaseCollection::onLoadDataAndUpdate()
|
||||
void RimSummaryCaseCollection::updateReferringCurveSets()
|
||||
{
|
||||
// Update curve set referring to this group
|
||||
std::vector<RimEnsembleCurveSet*> referringObjects;
|
||||
std::vector<caf::PdmObject*> referringObjects;
|
||||
objectsWithReferringPtrFieldsOfType( referringObjects );
|
||||
|
||||
for ( auto curveSet : referringObjects )
|
||||
for ( auto object : referringObjects )
|
||||
{
|
||||
RimEnsembleCurveSet* curveSet = dynamic_cast<RimEnsembleCurveSet*>( object );
|
||||
|
||||
bool updateParentPlot = true;
|
||||
if ( curveSet ) curveSet->loadDataAndUpdate( updateParentPlot );
|
||||
if ( curveSet )
|
||||
{
|
||||
curveSet->loadDataAndUpdate( updateParentPlot );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -92,14 +92,15 @@ class RimSummaryCaseCollection : public caf::PdmObject
|
||||
CAF_PDM_HEADER_INIT;
|
||||
|
||||
public:
|
||||
caf::Signal<> caseNameChanged;
|
||||
caf::Signal<> caseNameChanged;
|
||||
caf::Signal<RimSummaryCase*> caseRemoved;
|
||||
|
||||
public:
|
||||
RimSummaryCaseCollection();
|
||||
~RimSummaryCaseCollection() override;
|
||||
|
||||
void removeCase( RimSummaryCase* summaryCase );
|
||||
void addCase( RimSummaryCase* summaryCase, bool updateCurveSets = true );
|
||||
void addCase( RimSummaryCase* summaryCase );
|
||||
virtual std::vector<RimSummaryCase*> allSummaryCases() const;
|
||||
void setName( const QString& name );
|
||||
QString name() const;
|
||||
|
||||
@@ -251,7 +251,7 @@ void RimSummaryCaseMainCollection::removeCase( RimSummaryCase* summaryCase )
|
||||
// Update derived ensemble cases (if any)
|
||||
for ( auto derEnsemble : derivedEnsembles )
|
||||
{
|
||||
derEnsemble->updateDerivedEnsembleCases();
|
||||
derEnsemble->createDerivedEnsembleCases();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -263,7 +263,7 @@ void RimSummaryPlotFilterTextCurveSetEditor::fieldChangedByUi( const caf::PdmFie
|
||||
|
||||
for ( const auto& filteredAddress : filteredAddressesFromSource )
|
||||
{
|
||||
curveDefinitions.insert( RiaSummaryCurveDefinition( sumCase, filteredAddress, ensemble ) );
|
||||
curveDefinitions.insert( RiaSummaryCurveDefinition( sumCase, filteredAddress, ensemble, true ) );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user