mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
Improve summary calculation performance
* Only reload calculation data * Make sure performance is good when a calculated object is added or changed - avoid recreation of summary file readers - delete all nodes in address tree representing calculated curves - build address nodes for calculated curves
This commit is contained in:
@@ -27,26 +27,17 @@
|
||||
|
||||
#include "RifSummaryReaderInterface.h"
|
||||
#include "RimDataSourceSteppingTools.h"
|
||||
#include "RimObservedDataCollection.h"
|
||||
#include "RimObservedSummaryData.h"
|
||||
#include "RimProject.h"
|
||||
#include "RimSummaryAddress.h"
|
||||
#include "RimSummaryCalculationCollection.h"
|
||||
#include "RimSummaryCalculationVariable.h"
|
||||
#include "RimSummaryCase.h"
|
||||
#include "RimSummaryCaseCollection.h"
|
||||
#include "RimSummaryCaseMainCollection.h"
|
||||
#include "RimSummaryCurve.h"
|
||||
#include "RimSummaryMultiPlot.h"
|
||||
#include "RimSummaryMultiPlotCollection.h"
|
||||
#include "RimSummaryPlot.h"
|
||||
|
||||
#include "RiuExpressionContextMenuManager.h"
|
||||
|
||||
#include "cafPdmUiCheckBoxEditor.h"
|
||||
#include "cafPdmUiLineEditor.h"
|
||||
#include "cafPdmUiTableViewEditor.h"
|
||||
#include "cafPdmUiTextEditor.h"
|
||||
|
||||
#include "expressionparser/ExpressionParser.h"
|
||||
|
||||
@@ -402,35 +393,6 @@ std::optional<std::pair<std::vector<double>, std::vector<time_t>>>
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimSummaryCalculation::updateDependentObjects()
|
||||
{
|
||||
RimSummaryCalculationCollection* calcColl = firstAncestorOrThisOfTypeAsserted<RimSummaryCalculationCollection>();
|
||||
calcColl->rebuildCaseMetaData();
|
||||
|
||||
// Refresh data sources tree.
|
||||
// TODO: refresh too much: would be enough to only refresh calculated resutls.
|
||||
RimSummaryCaseMainCollection* summaryCaseCollection = RiaSummaryTools::summaryCaseMainCollection();
|
||||
auto summaryCases = summaryCaseCollection->allSummaryCases();
|
||||
for ( RimSummaryCase* summaryCase : summaryCases )
|
||||
{
|
||||
summaryCase->createSummaryReaderInterface();
|
||||
summaryCase->createRftReaderInterface();
|
||||
summaryCase->refreshMetaData();
|
||||
}
|
||||
|
||||
RimObservedDataCollection* observedDataCollection = RiaSummaryTools::observedDataCollection();
|
||||
auto observedData = observedDataCollection->allObservedSummaryData();
|
||||
for ( auto obs : observedData )
|
||||
{
|
||||
obs->createSummaryReaderInterface();
|
||||
obs->createRftReaderInterface();
|
||||
obs->refreshMetaData();
|
||||
}
|
||||
|
||||
auto summaryCaseCollections = summaryCaseCollection->summaryCaseCollections();
|
||||
for ( RimSummaryCaseCollection* summaryCaseCollection : summaryCaseCollections )
|
||||
{
|
||||
summaryCaseCollection->refreshMetaData();
|
||||
}
|
||||
|
||||
RimSummaryMultiPlotCollection* summaryPlotCollection = RiaSummaryTools::summaryMultiPlotCollection();
|
||||
for ( auto multiPlot : summaryPlotCollection->multiPlots() )
|
||||
{
|
||||
@@ -438,7 +400,7 @@ void RimSummaryCalculation::updateDependentObjects()
|
||||
{
|
||||
bool plotContainsCalculatedCurves = false;
|
||||
|
||||
for ( RimSummaryCurve* sumCurve : sumPlot->summaryCurves() )
|
||||
for ( RimSummaryCurve* sumCurve : sumPlot->summaryAndEnsembleCurves() )
|
||||
{
|
||||
if ( sumCurve->summaryAddressY().isCalculated() )
|
||||
{
|
||||
@@ -461,6 +423,7 @@ void RimSummaryCalculation::updateDependentObjects()
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimSummaryCalculation::removeDependentObjects()
|
||||
{
|
||||
updateDependentObjects();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user