mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#908 Replace file summary case with Eclipse summary case when grid is imported
This commit is contained in:
parent
612c64a607
commit
cb468f0c48
@ -60,6 +60,8 @@
|
||||
#include "RimScriptCollection.h"
|
||||
#include "RimSummaryCase.h"
|
||||
#include "RimSummaryCaseCollection.h"
|
||||
#include "RimSummaryCurve.h"
|
||||
#include "RimSummaryCurveFilter.h"
|
||||
#include "RimSummaryPlot.h"
|
||||
#include "RimSummaryPlotCollection.h"
|
||||
#include "RimViewLinker.h"
|
||||
@ -848,20 +850,69 @@ bool RiaApplication::openEclipseCase(const QString& caseName, const QString& cas
|
||||
m_mainPlotWindow->hide();
|
||||
}
|
||||
|
||||
RimSummaryCase* newSumCase = sumCaseColl->createAndAddSummaryCaseFromEclipseResultCase(rimResultReservoir);
|
||||
if (newSumCase)
|
||||
if (!sumCaseColl->findSummaryCaseFromEclipseResultCase(rimResultReservoir))
|
||||
{
|
||||
newSumCase->loadCase();
|
||||
RimSummaryCase* newSumCase = sumCaseColl->createAndAddSummaryCaseFromEclipseResultCase(rimResultReservoir);
|
||||
|
||||
if (m_preferences->autoCreatePlotsOnImport())
|
||||
if (newSumCase)
|
||||
{
|
||||
RimMainPlotCollection* mainPlotColl = m_project->mainPlotCollection();
|
||||
RimSummaryPlotCollection* summaryPlotColl = mainPlotColl->summaryPlotCollection();
|
||||
|
||||
RicNewSummaryPlotFeature::createNewSummaryPlot(summaryPlotColl, newSumCase);
|
||||
}
|
||||
newSumCase->loadCase();
|
||||
|
||||
sumCaseColl->updateConnectedEditors();
|
||||
RimSummaryCase* existingFileSummaryCase = sumCaseColl->findSummaryCaseFromFileName(newSumCase->summaryHeaderFilename());
|
||||
if (existingFileSummaryCase)
|
||||
{
|
||||
// Replace all occurrences of file sum with ecl sum
|
||||
|
||||
std::vector<caf::PdmObjectHandle*> referringObjects;
|
||||
existingFileSummaryCase->objectsWithReferringPtrFields(referringObjects);
|
||||
|
||||
std::set<RimSummaryCurveFilter*> curveFilters;
|
||||
|
||||
for (caf::PdmObjectHandle* objHandle : referringObjects)
|
||||
{
|
||||
RimSummaryCurve* summaryCurve = dynamic_cast<RimSummaryCurve*>(objHandle);
|
||||
if (summaryCurve)
|
||||
{
|
||||
summaryCurve->setSummaryCase(newSumCase);
|
||||
summaryCurve->updateConnectedEditors();
|
||||
|
||||
RimSummaryCurveFilter* parentFilter = nullptr;
|
||||
summaryCurve->firstAncestorOrThisOfType(parentFilter);
|
||||
if (parentFilter)
|
||||
{
|
||||
curveFilters.insert(parentFilter);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// UI settings of a curve filter is updated based
|
||||
// on the new case association for the curves in the curve filter
|
||||
// UI is updated by loadDataAndUpdate()
|
||||
|
||||
for (RimSummaryCurveFilter* curveFilter : curveFilters)
|
||||
{
|
||||
curveFilter->loadDataAndUpdate();
|
||||
curveFilter->updateConnectedEditors();
|
||||
}
|
||||
|
||||
sumCaseColl->deleteCase(existingFileSummaryCase);
|
||||
|
||||
delete existingFileSummaryCase;
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
if (m_preferences->autoCreatePlotsOnImport())
|
||||
{
|
||||
RimMainPlotCollection* mainPlotColl = m_project->mainPlotCollection();
|
||||
RimSummaryPlotCollection* summaryPlotColl = mainPlotColl->summaryPlotCollection();
|
||||
|
||||
RicNewSummaryPlotFeature::createNewSummaryPlot(summaryPlotColl, newSumCase);
|
||||
}
|
||||
}
|
||||
|
||||
sumCaseColl->updateConnectedEditors();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -37,7 +37,7 @@ public:
|
||||
void setAssociatedEclipseCase(RimEclipseCase* eclipseCase);
|
||||
RimEclipseCase* associatedEclipseCase();
|
||||
|
||||
virtual QString summaryHeaderFilename() const override;
|
||||
virtual QString summaryHeaderFilename() const override;
|
||||
virtual QString caseName() const override;
|
||||
|
||||
private:
|
||||
|
@ -16,14 +16,16 @@
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
#include "RimSummaryCaseCollection.h"
|
||||
#include "RimSummaryCase.h"
|
||||
|
||||
#include "RifEclipseSummaryTools.h"
|
||||
#include "RimEclipseResultCase.h"
|
||||
#include "RimFileSummaryCase.h"
|
||||
#include "RimGridSummaryCase.h"
|
||||
#include "RimOilField.h"
|
||||
#include "RimProject.h"
|
||||
#include "RimEclipseResultCase.h"
|
||||
#include "RimGridSummaryCase.h"
|
||||
#include "RifEclipseSummaryTools.h"
|
||||
#include "RimSummaryCase.h"
|
||||
|
||||
#include <QDir>
|
||||
#include "RimFileSummaryCase.h"
|
||||
|
||||
|
||||
CAF_PDM_SOURCE_INIT(RimSummaryCaseCollection,"SummaryCaseCollection");
|
||||
@ -88,10 +90,62 @@ void RimSummaryCaseCollection::createSummaryCasesFromRelevantEclipseResultCases(
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RimSummaryCase* RimSummaryCaseCollection::findSummaryCaseFromEclipseResultCase(RimEclipseResultCase* eclipseResultCase) const
|
||||
{
|
||||
for (RimSummaryCase* summaryCase : m_cases)
|
||||
{
|
||||
RimGridSummaryCase* gridSummaryCase = dynamic_cast<RimGridSummaryCase*>(summaryCase);
|
||||
if (gridSummaryCase)
|
||||
{
|
||||
if (gridSummaryCase->associatedEclipseCase()->gridFileName() == eclipseResultCase->gridFileName())
|
||||
{
|
||||
return gridSummaryCase;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RimSummaryCase* RimSummaryCaseCollection::findSummaryCaseFromFileName(const QString& fileName) const
|
||||
{
|
||||
// Use QFileInfo object to compare two file names to avoid mix of / and \\
|
||||
|
||||
QFileInfo incomingFileInfo(fileName);
|
||||
|
||||
for (RimSummaryCase* summaryCase : m_cases)
|
||||
{
|
||||
RimFileSummaryCase* fileSummaryCase = dynamic_cast<RimFileSummaryCase*>(summaryCase);
|
||||
if (fileSummaryCase)
|
||||
{
|
||||
QFileInfo summaryFileInfo(fileSummaryCase->summaryHeaderFilename());
|
||||
if (incomingFileInfo == summaryFileInfo)
|
||||
{
|
||||
return fileSummaryCase;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimSummaryCaseCollection::deleteCase(RimSummaryCase* summaryCase)
|
||||
{
|
||||
m_cases.removeChildObject(summaryCase);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
@ -36,11 +36,19 @@ public:
|
||||
void createSummaryCasesFromRelevantEclipseResultCases();
|
||||
RimSummaryCase* createAndAddSummaryCaseFromEclipseResultCase(RimEclipseResultCase* eclResCase);
|
||||
RimSummaryCase* createAndAddSummaryCaseFromFileName(const QString& fileName);
|
||||
|
||||
RimSummaryCase* findSummaryCaseFromEclipseResultCase(RimEclipseResultCase* eclResCase) const;
|
||||
RimSummaryCase* findSummaryCaseFromFileName(const QString& fileName) const;
|
||||
|
||||
void deleteCase(RimSummaryCase* summaryCase);
|
||||
|
||||
|
||||
void loadAllSummaryCaseData();
|
||||
|
||||
QString uniqueShortNameForCase(RimSummaryCase* summaryCase);
|
||||
|
||||
private:
|
||||
|
||||
private:
|
||||
caf::PdmChildArrayField<RimSummaryCase*> m_cases;
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user