Ensure correct update of required delta ensembles

When a summary ensemble is modified, update all dependent delta ensembles related to curve display and tree item display.
This commit is contained in:
Magne Sjaastad committed 2025-11-28 07:20:42 +01:00
1 parent 18b6420633
commit d7fe226114
6 files changed
+37

No files matched your search

@@ -27,6 +27,7 @@
#include "RimSummaryCase.h" #include "RimSummaryCase.h"
#include "RimSummaryCaseMainCollection.h" #include "RimSummaryCaseMainCollection.h"
#include "RimSummaryEnsemble.h" #include "RimSummaryEnsemble.h"
#include "RimSummaryEnsembleTools.h"
#include "cafPdmObject.h" #include "cafPdmObject.h"
#include "cafSelectionManager.h" #include "cafSelectionManager.h"
@@ -124,6 +125,7 @@ void RicReloadSummaryCaseFeature::reloadTaggedSummaryCasesAndUpdate()
{ {
ensemble->reloadCases(); ensemble->reloadCases();
ensemble->updateConnectedEditors(); ensemble->updateConnectedEditors();
RimSummaryEnsembleTools::updateDependentDeltaEnsembles( ensemble );
} }
} }
} }
@@ -138,6 +140,7 @@ void RicReloadSummaryCaseFeature::reloadSelectedCasesAndUpdate()
for ( RimSummaryEnsemble* ensemble : ensembleSelection ) for ( RimSummaryEnsemble* ensemble : ensembleSelection )
{ {
ensemble->reloadCases(); ensemble->reloadCases();
RimSummaryEnsembleTools::updateDependentDeltaEnsembles( ensemble );
} }
for ( RimSummaryCase* summaryCase : caseSelection ) for ( RimSummaryCase* summaryCase : caseSelection )
@@ -27,6 +27,7 @@
#include "EnsembleFileSet/RimEnsembleFileSetCollection.h" #include "EnsembleFileSet/RimEnsembleFileSetCollection.h"
#include "EnsembleFileSet/RimEnsembleFileSetTools.h" #include "EnsembleFileSet/RimEnsembleFileSetTools.h"
#include "RimSummaryCase.h" #include "RimSummaryCase.h"
#include "RimSummaryEnsembleTools.h"
CAF_PDM_SOURCE_INIT( RimSummaryFileSetEnsemble, "RimSummaryFileSetEnsemble" ); CAF_PDM_SOURCE_INIT( RimSummaryFileSetEnsemble, "RimSummaryFileSetEnsemble" );
@@ -134,6 +135,8 @@ void RimSummaryFileSetEnsemble::onFileSetChanged( const caf::SignalEmitter* emit
RiaSummaryTools::updateConnectedPlots( this ); RiaSummaryTools::updateConnectedPlots( this );
buildChildNodes(); buildChildNodes();
updateAllRequiredEditors(); updateAllRequiredEditors();
RimSummaryEnsembleTools::updateDependentDeltaEnsembles( this );
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
@@ -148,6 +148,17 @@ std::set<RifEclipseSummaryAddress> RimDeltaSummaryEnsemble::ensembleSummaryAddre
return addresses; return addresses;
} }
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimDeltaSummaryEnsemble::onSourceEnsembleChanged()
{
createDerivedEnsembleCases();
buildMetaData();
updateReferringCurveSets();
updateConnectedEditors();
}
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
@@ -60,6 +60,7 @@ public:
void onLoadDataAndUpdate() override; void onLoadDataAndUpdate() override;
void onSourceEnsembleChanged();
void createDerivedEnsembleCases(); void createDerivedEnsembleCases();
bool discardMissingOrIncompleteRealizations() const; bool discardMissingOrIncompleteRealizations() const;
@@ -26,6 +26,7 @@
#include "RigEnsembleParameter.h" #include "RigEnsembleParameter.h"
#include "RimCorrelationPlotCollection.h" #include "RimCorrelationPlotCollection.h"
#include "RimDeltaSummaryEnsemble.h"
#include "RimEnsembleCurveSet.h" #include "RimEnsembleCurveSet.h"
#include "RimMainPlotCollection.h" #include "RimMainPlotCollection.h"
#include "RimParameterResultCrossPlot.h" #include "RimParameterResultCrossPlot.h"
@@ -506,3 +507,18 @@ RimSummaryCase* RimSummaryEnsembleTools::caseWithMostDataObjects( const std::vec
return nullptr; return nullptr;
} }
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimSummaryEnsembleTools::updateDependentDeltaEnsembles( const RimSummaryEnsemble* sourceEnsemble )
{
if ( !sourceEnsemble ) return;
auto referringObjects = sourceEnsemble->objectsWithReferringPtrFieldsOfType<RimDeltaSummaryEnsemble>();
for ( auto referringEnsemble : referringObjects )
{
referringEnsemble->onSourceEnsembleChanged();
updateDependentDeltaEnsembles( referringEnsemble );
}
}
@@ -26,6 +26,7 @@
class RimSummaryCase; class RimSummaryCase;
class RimPlotCurve; class RimPlotCurve;
class RigEnsembleParameter; class RigEnsembleParameter;
class RimSummaryEnsemble;
namespace RimSummaryEnsembleTools namespace RimSummaryEnsembleTools
{ {
@@ -46,4 +47,6 @@ void resetHighlightAllPlots();
RimSummaryCase* caseWithMostDataObjects( const std::vector<RimSummaryCase*>& sourceCases ); RimSummaryCase* caseWithMostDataObjects( const std::vector<RimSummaryCase*>& sourceCases );
void updateDependentDeltaEnsembles( const RimSummaryEnsemble* sourceEnsemble );
} // namespace RimSummaryEnsembleTools } // namespace RimSummaryEnsembleTools