#2720, #2686, #2701 Origin summary and grid cases import enhancements

This commit is contained in:
Bjørn Erik Jensen
2018-04-13 11:11:05 +02:00
parent edf23b5265
commit d7e7c4a463
20 changed files with 381 additions and 201 deletions

View File

@@ -113,7 +113,12 @@ void RimSummaryCaseMainCollection::createSummaryCasesFromRelevantEclipseResultCa
if (!isFound)
{
// Create new GridSummaryCase
createAndAddSummaryCasesFromEclipseResultCase(eclResCase);
QStringList summaryFileNames = RifSummaryCaseRestartSelector::getSummaryFilesFromGridFiles(QStringList({ eclResCase->gridFileName() }));
if (!summaryFileNames.isEmpty())
{
RifSummaryCaseFileInfo fileInfo(summaryFileNames.front(), false);
createAndAddSummaryCasesFromFileInfos({ fileInfo });
}
}
}
}
@@ -291,78 +296,49 @@ void RimSummaryCaseMainCollection::loadAllSummaryCaseData()
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
std::vector<RimSummaryCase*> RimSummaryCaseMainCollection::createAndAddSummaryCasesFromEclipseResultCase(RimEclipseResultCase* eclResCase)
std::vector<RimSummaryCase*> RimSummaryCaseMainCollection::createAndAddSummaryCasesFromFileInfos(const std::vector<RifSummaryCaseFileInfo>& summaryHeaderFileInfos)
{
RimProject* project = RiaApplication::instance()->project();
std::vector<RimSummaryCase*> sumCases;
QString gridFileName = eclResCase->gridFileName();
QString summaryHeaderFile;
bool formatted;
RifEclipseSummaryTools::findSummaryHeaderFile(QDir::toNativeSeparators(gridFileName), &summaryHeaderFile, &formatted);
if(!summaryHeaderFile.isEmpty())
for (RifSummaryCaseFileInfo fileInfo : summaryHeaderFileInfos)
{
RifSummaryCaseRestartSelector fileSelector;
std::vector<RifSummaryCaseFileInfo> importFileInfos = fileSelector.getFilesToImport(QStringList({ summaryHeaderFile }));
RimEclipseCase* eclCase = nullptr;
QString gridCaseFile = RifEclipseSummaryTools::findGridCaseFileFromSummaryHeaderFile(fileInfo.fileName);
if (!gridCaseFile.isEmpty())
{
eclCase = project->eclipseCaseFromGridFileName(gridCaseFile);
}
if (!importFileInfos.empty())
if (eclCase)
{
RimGridSummaryCase* newSumCase = new RimGridSummaryCase();
this->m_cases.push_back(newSumCase);
newSumCase->setIncludeRestartFiles(importFileInfos.front().includeRestartFiles);
newSumCase->setAssociatedEclipseCase(eclResCase);
newSumCase->setIncludeRestartFiles(fileInfo.includeRestartFiles);
newSumCase->setAssociatedEclipseCase(eclCase);
newSumCase->createSummaryReaderInterface();
newSumCase->updateOptionSensitivity();
addCaseRealizationParametersIfFound(*newSumCase, importFileInfos.front().fileName);
addCaseRealizationParametersIfFound(*newSumCase, fileInfo.fileName);
sumCases.push_back(newSumCase);
}
else
{
RimFileSummaryCase* newSumCase = new RimFileSummaryCase();
this->m_cases.push_back(newSumCase);
newSumCase->setIncludeRestartFiles(fileInfo.includeRestartFiles);
newSumCase->setSummaryHeaderFileName(fileInfo.fileName);
newSumCase->createSummaryReaderInterface();
newSumCase->updateOptionSensitivity();
addCaseRealizationParametersIfFound(*newSumCase, fileInfo.fileName);
sumCases.push_back(newSumCase);
// Remove the processed element and add 'orphan' summary cases
importFileInfos.erase(importFileInfos.begin());
for (const RifSummaryCaseFileInfo& fileInfo : importFileInfos)
{
RimFileSummaryCase* newSumCase = new RimFileSummaryCase();
this->m_cases.push_back(newSumCase);
newSumCase->setIncludeRestartFiles(fileInfo.includeRestartFiles);
newSumCase->setSummaryHeaderFileName(fileInfo.fileName);
newSumCase->createSummaryReaderInterface();
newSumCase->updateOptionSensitivity();
addCaseRealizationParametersIfFound(*newSumCase, fileInfo.fileName);
sumCases.push_back(newSumCase);
}
}
}
return sumCases;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
std::vector<RimSummaryCase*> RimSummaryCaseMainCollection::createAndAddSummaryCasesFromFiles(const QStringList& inputFileNames)
{
std::vector<RimSummaryCase*> sumCases;
RifSummaryCaseRestartSelector fileSelector;
std::vector<RifSummaryCaseFileInfo> importFileInfos = fileSelector.getFilesToImport(inputFileNames);
for (const RifSummaryCaseFileInfo& fileInfo : importFileInfos)
{
RimFileSummaryCase* newSumCase = new RimFileSummaryCase();
this->m_cases.push_back(newSumCase);
newSumCase->setIncludeRestartFiles(fileInfo.includeRestartFiles);
newSumCase->setSummaryHeaderFileName(fileInfo.fileName);
newSumCase->createSummaryReaderInterface();
newSumCase->updateOptionSensitivity();
addCaseRealizationParametersIfFound(*newSumCase, fileInfo.fileName);
sumCases.push_back(newSumCase);
}
return sumCases;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------

View File

@@ -25,6 +25,7 @@
class RimSummaryCase;
class RimEclipseResultCase;
class RimSummaryCaseCollection;
class RifSummaryCaseFileInfo;
//==================================================================================================
///
@@ -44,12 +45,11 @@ public:
std::vector<RimSummaryCaseCollection*> summaryCaseCollections() const;
void createSummaryCasesFromRelevantEclipseResultCases();
std::vector<RimSummaryCase*> createAndAddSummaryCasesFromEclipseResultCase(RimEclipseResultCase* eclResCase);
std::vector<RimSummaryCase*> createAndAddSummaryCasesFromFiles(const QStringList& inputFileNames);
std::vector<RimSummaryCase*> createAndAddSummaryCasesFromFileInfos(const std::vector<RifSummaryCaseFileInfo>& summaryHeaderFileInfos);
RimSummaryCase* findSummaryCaseFromEclipseResultCase(RimEclipseResultCase* eclResCase) const;
RimSummaryCase* findSummaryCaseFromFileName(const QString& fileName) const;
void addCase(RimSummaryCase* summaryCase);
void removeCase(RimSummaryCase* summaryCase);