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 "RimScriptCollection.h"
|
||||||
#include "RimSummaryCase.h"
|
#include "RimSummaryCase.h"
|
||||||
#include "RimSummaryCaseCollection.h"
|
#include "RimSummaryCaseCollection.h"
|
||||||
|
#include "RimSummaryCurve.h"
|
||||||
|
#include "RimSummaryCurveFilter.h"
|
||||||
#include "RimSummaryPlot.h"
|
#include "RimSummaryPlot.h"
|
||||||
#include "RimSummaryPlotCollection.h"
|
#include "RimSummaryPlotCollection.h"
|
||||||
#include "RimViewLinker.h"
|
#include "RimViewLinker.h"
|
||||||
@ -848,11 +850,58 @@ bool RiaApplication::openEclipseCase(const QString& caseName, const QString& cas
|
|||||||
m_mainPlotWindow->hide();
|
m_mainPlotWindow->hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!sumCaseColl->findSummaryCaseFromEclipseResultCase(rimResultReservoir))
|
||||||
|
{
|
||||||
RimSummaryCase* newSumCase = sumCaseColl->createAndAddSummaryCaseFromEclipseResultCase(rimResultReservoir);
|
RimSummaryCase* newSumCase = sumCaseColl->createAndAddSummaryCaseFromEclipseResultCase(rimResultReservoir);
|
||||||
|
|
||||||
if (newSumCase)
|
if (newSumCase)
|
||||||
{
|
{
|
||||||
newSumCase->loadCase();
|
newSumCase->loadCase();
|
||||||
|
|
||||||
|
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())
|
if (m_preferences->autoCreatePlotsOnImport())
|
||||||
{
|
{
|
||||||
RimMainPlotCollection* mainPlotColl = m_project->mainPlotCollection();
|
RimMainPlotCollection* mainPlotColl = m_project->mainPlotCollection();
|
||||||
@ -860,11 +909,13 @@ bool RiaApplication::openEclipseCase(const QString& caseName, const QString& cas
|
|||||||
|
|
||||||
RicNewSummaryPlotFeature::createNewSummaryPlot(summaryPlotColl, newSumCase);
|
RicNewSummaryPlotFeature::createNewSummaryPlot(summaryPlotColl, newSumCase);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
sumCaseColl->updateConnectedEditors();
|
sumCaseColl->updateConnectedEditors();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (!riv->cellResult()->hasResult())
|
if (!riv->cellResult()->hasResult())
|
||||||
{
|
{
|
||||||
|
@ -16,14 +16,16 @@
|
|||||||
//
|
//
|
||||||
/////////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////////
|
||||||
#include "RimSummaryCaseCollection.h"
|
#include "RimSummaryCaseCollection.h"
|
||||||
#include "RimSummaryCase.h"
|
|
||||||
|
#include "RifEclipseSummaryTools.h"
|
||||||
|
#include "RimEclipseResultCase.h"
|
||||||
|
#include "RimFileSummaryCase.h"
|
||||||
|
#include "RimGridSummaryCase.h"
|
||||||
#include "RimOilField.h"
|
#include "RimOilField.h"
|
||||||
#include "RimProject.h"
|
#include "RimProject.h"
|
||||||
#include "RimEclipseResultCase.h"
|
#include "RimSummaryCase.h"
|
||||||
#include "RimGridSummaryCase.h"
|
|
||||||
#include "RifEclipseSummaryTools.h"
|
|
||||||
#include <QDir>
|
#include <QDir>
|
||||||
#include "RimFileSummaryCase.h"
|
|
||||||
|
|
||||||
|
|
||||||
CAF_PDM_SOURCE_INIT(RimSummaryCaseCollection,"SummaryCaseCollection");
|
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);
|
||||||
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
@ -37,10 +37,18 @@ public:
|
|||||||
RimSummaryCase* createAndAddSummaryCaseFromEclipseResultCase(RimEclipseResultCase* eclResCase);
|
RimSummaryCase* createAndAddSummaryCaseFromEclipseResultCase(RimEclipseResultCase* eclResCase);
|
||||||
RimSummaryCase* createAndAddSummaryCaseFromFileName(const QString& fileName);
|
RimSummaryCase* createAndAddSummaryCaseFromFileName(const QString& fileName);
|
||||||
|
|
||||||
|
RimSummaryCase* findSummaryCaseFromEclipseResultCase(RimEclipseResultCase* eclResCase) const;
|
||||||
|
RimSummaryCase* findSummaryCaseFromFileName(const QString& fileName) const;
|
||||||
|
|
||||||
|
void deleteCase(RimSummaryCase* summaryCase);
|
||||||
|
|
||||||
|
|
||||||
void loadAllSummaryCaseData();
|
void loadAllSummaryCaseData();
|
||||||
|
|
||||||
QString uniqueShortNameForCase(RimSummaryCase* summaryCase);
|
QString uniqueShortNameForCase(RimSummaryCase* summaryCase);
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
private:
|
private:
|
||||||
caf::PdmChildArrayField<RimSummaryCase*> m_cases;
|
caf::PdmChildArrayField<RimSummaryCase*> m_cases;
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user