mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#2962 Summary import performance. Preliminary optimization of summary groups and ensemble import
This commit is contained in:
@@ -125,7 +125,7 @@ void RicImportEnsembleFeature::onActionTriggered(bool isChecked)
|
|||||||
if (ensembleName.isEmpty()) return;
|
if (ensembleName.isEmpty()) return;
|
||||||
|
|
||||||
std::vector<RimSummaryCase*> cases;
|
std::vector<RimSummaryCase*> cases;
|
||||||
RicImportSummaryCasesFeature::createSummaryCasesFromFiles(fileNames, &cases);
|
RicImportSummaryCasesFeature::createSummaryCasesFromFiles(fileNames, &cases, true);
|
||||||
|
|
||||||
validateEnsembleCases(cases);
|
validateEnsembleCases(cases);
|
||||||
|
|
||||||
|
|||||||
@@ -145,7 +145,8 @@ bool RicImportSummaryCasesFeature::createAndAddSummaryCasesFromFiles(const QStri
|
|||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
bool RicImportSummaryCasesFeature::createSummaryCasesFromFiles(const QStringList& fileNames,
|
bool RicImportSummaryCasesFeature::createSummaryCasesFromFiles(const QStringList& fileNames,
|
||||||
std::vector<RimSummaryCase*>* newCases)
|
std::vector<RimSummaryCase*>* newCases,
|
||||||
|
bool ensembleOrGroup)
|
||||||
{
|
{
|
||||||
RiaApplication* app = RiaApplication::instance();
|
RiaApplication* app = RiaApplication::instance();
|
||||||
RimProject* proj = app->project();
|
RimProject* proj = app->project();
|
||||||
@@ -155,6 +156,7 @@ bool RicImportSummaryCasesFeature::createSummaryCasesFromFiles(const QStringList
|
|||||||
if (!sumCaseColl) return false;
|
if (!sumCaseColl) return false;
|
||||||
|
|
||||||
RifSummaryCaseRestartSelector fileSelector;
|
RifSummaryCaseRestartSelector fileSelector;
|
||||||
|
fileSelector.setEnsembleOrGroupMode(ensembleOrGroup);
|
||||||
fileSelector.determineFilesToImportFromSummaryFiles(fileNames);
|
fileSelector.determineFilesToImportFromSummaryFiles(fileNames);
|
||||||
|
|
||||||
std::vector<RifSummaryCaseFileResultInfo> importFileInfos = fileSelector.summaryFileInfos();
|
std::vector<RifSummaryCaseFileResultInfo> importFileInfos = fileSelector.summaryFileInfos();
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ public:
|
|||||||
RicImportSummaryCasesFeature() { }
|
RicImportSummaryCasesFeature() { }
|
||||||
|
|
||||||
static bool createAndAddSummaryCasesFromFiles(const QStringList& fileName, std::vector<RimSummaryCase*>* newCases = nullptr);
|
static bool createAndAddSummaryCasesFromFiles(const QStringList& fileName, std::vector<RimSummaryCase*>* newCases = nullptr);
|
||||||
static bool createSummaryCasesFromFiles(const QStringList& fileName, std::vector<RimSummaryCase*>* newCases);
|
static bool createSummaryCasesFromFiles(const QStringList& fileName, std::vector<RimSummaryCase*>* newCases, bool ensembleOrGroup = false);
|
||||||
static void addSummaryCases(const std::vector<RimSummaryCase*> cases);
|
static void addSummaryCases(const std::vector<RimSummaryCase*> cases);
|
||||||
static void addCasesToGroupIfRelevant(const std::vector<RimSummaryCase*> cases);
|
static void addCasesToGroupIfRelevant(const std::vector<RimSummaryCase*> cases);
|
||||||
|
|
||||||
|
|||||||
@@ -66,7 +66,7 @@ void RicImportSummaryGroupFeature::onActionTriggered(bool isChecked)
|
|||||||
if (fileNames.isEmpty()) return;
|
if (fileNames.isEmpty()) return;
|
||||||
|
|
||||||
std::vector<RimSummaryCase*> cases;
|
std::vector<RimSummaryCase*> cases;
|
||||||
RicImportSummaryCasesFeature::createSummaryCasesFromFiles(fileNames, &cases);
|
RicImportSummaryCasesFeature::createSummaryCasesFromFiles(fileNames, &cases, true);
|
||||||
|
|
||||||
RicImportSummaryCasesFeature::addSummaryCases(cases);
|
RicImportSummaryCasesFeature::addSummaryCases(cases);
|
||||||
RicCreateSummaryCaseCollectionFeature::groupSummaryCases(cases, "", false);
|
RicCreateSummaryCaseCollectionFeature::groupSummaryCases(cases, "", false);
|
||||||
|
|||||||
@@ -246,11 +246,24 @@ RicSummaryCaseRestartDialogResult RicSummaryCaseRestartDialog::openDialog(const
|
|||||||
const QString& initialGridFile,
|
const QString& initialGridFile,
|
||||||
bool failOnSummaryImportError,
|
bool failOnSummaryImportError,
|
||||||
bool showApplyToAllWidget,
|
bool showApplyToAllWidget,
|
||||||
|
bool useFirstSummaryCaseAsTemplate,
|
||||||
ImportOptions defaultSummaryImportOption,
|
ImportOptions defaultSummaryImportOption,
|
||||||
ImportOptions defaultGridImportOption,
|
ImportOptions defaultGridImportOption,
|
||||||
RicSummaryCaseRestartDialogResult* lastResult,
|
RicSummaryCaseRestartDialogResult* lastResult,
|
||||||
QWidget* parent)
|
QWidget* parent)
|
||||||
{
|
{
|
||||||
|
RicSummaryCaseRestartDialogResult dialogResult;
|
||||||
|
if (lastResult && lastResult->applyToAll && lastResult->summaryImportOption != SEPARATE_CASES)
|
||||||
|
{
|
||||||
|
dialogResult = *lastResult;
|
||||||
|
dialogResult.summaryFiles.clear();
|
||||||
|
dialogResult.gridFiles.clear();
|
||||||
|
|
||||||
|
if (!initialSummaryFile.isEmpty()) dialogResult.summaryFiles.push_back(initialSummaryFile);
|
||||||
|
if (!initialGridFile.isEmpty()) dialogResult.gridFiles.push_back(initialGridFile);
|
||||||
|
return dialogResult;
|
||||||
|
}
|
||||||
|
|
||||||
RicSummaryCaseRestartDialog dialog(parent);
|
RicSummaryCaseRestartDialog dialog(parent);
|
||||||
bool handleSummaryFile = false;
|
bool handleSummaryFile = false;
|
||||||
|
|
||||||
@@ -288,11 +301,9 @@ RicSummaryCaseRestartDialogResult RicSummaryCaseRestartDialog::openDialog(const
|
|||||||
defaultGridImportOption,
|
defaultGridImportOption,
|
||||||
{},
|
{},
|
||||||
QStringList({ initialGridFile }),
|
QStringList({ initialGridFile }),
|
||||||
lastResult && lastResult->applyToAll);
|
useFirstSummaryCaseAsTemplate || (lastResult && lastResult->applyToAll));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
RifReaderEclipseSummary reader;
|
RifReaderEclipseSummary reader;
|
||||||
bool hasWarnings = false;
|
bool hasWarnings = false;
|
||||||
std::vector<RifRestartFileInfo> originFileInfos = reader.getRestartFiles(initialSummaryFile, &hasWarnings);
|
std::vector<RifRestartFileInfo> originFileInfos = reader.getRestartFiles(initialSummaryFile, &hasWarnings);
|
||||||
@@ -303,10 +314,9 @@ RicSummaryCaseRestartDialogResult RicSummaryCaseRestartDialog::openDialog(const
|
|||||||
return RicSummaryCaseRestartDialogResult(RicSummaryCaseRestartDialogResult::SUMMARY_OK, NOT_IMPORT, NOT_IMPORT,
|
return RicSummaryCaseRestartDialogResult(RicSummaryCaseRestartDialogResult::SUMMARY_OK, NOT_IMPORT, NOT_IMPORT,
|
||||||
QStringList({ initialSummaryFile }),
|
QStringList({ initialSummaryFile }),
|
||||||
QStringList({ initialGridFile }),
|
QStringList({ initialGridFile }),
|
||||||
lastResult->applyToAll);
|
useFirstSummaryCaseAsTemplate || lastResult->applyToAll);
|
||||||
}
|
}
|
||||||
|
|
||||||
RicSummaryCaseRestartDialogResult dialogResult;
|
|
||||||
if (lastResult && lastResult->applyToAll)
|
if (lastResult && lastResult->applyToAll)
|
||||||
{
|
{
|
||||||
dialogResult = *lastResult;
|
dialogResult = *lastResult;
|
||||||
@@ -385,7 +395,7 @@ RicSummaryCaseRestartDialogResult RicSummaryCaseRestartDialog::openDialog(const
|
|||||||
|
|
||||||
// Set properties and show dialog
|
// Set properties and show dialog
|
||||||
dialog.setWindowTitle("Origin Files");
|
dialog.setWindowTitle("Origin Files");
|
||||||
dialog.m_buttons->button(QDialogButtonBox::Apply)->setVisible(showApplyToAllWidget);
|
dialog.m_buttons->button(QDialogButtonBox::Apply)->setVisible(!useFirstSummaryCaseAsTemplate && showApplyToAllWidget);
|
||||||
dialog.resize(DEFAULT_DIALOG_WIDTH, DEFAULT_DIALOG_INIT_HEIGHT);
|
dialog.resize(DEFAULT_DIALOG_WIDTH, DEFAULT_DIALOG_INIT_HEIGHT);
|
||||||
|
|
||||||
QApplication::setOverrideCursor(QCursor(Qt::ArrowCursor));
|
QApplication::setOverrideCursor(QCursor(Qt::ArrowCursor));
|
||||||
@@ -404,7 +414,7 @@ RicSummaryCaseRestartDialogResult RicSummaryCaseRestartDialog::openDialog(const
|
|||||||
dialog.selectedGridImportOption(),
|
dialog.selectedGridImportOption(),
|
||||||
{},
|
{},
|
||||||
{},
|
{},
|
||||||
dialog.okToAllSelected());
|
useFirstSummaryCaseAsTemplate || dialog.okToAllSelected());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dialogResult.status != RicSummaryCaseRestartDialogResult::SUMMARY_OK)
|
if (dialogResult.status != RicSummaryCaseRestartDialogResult::SUMMARY_OK)
|
||||||
|
|||||||
@@ -65,6 +65,7 @@ public:
|
|||||||
const QString& initialGridFile,
|
const QString& initialGridFile,
|
||||||
bool failOnSummaryImportError,
|
bool failOnSummaryImportError,
|
||||||
bool showApplyToAllWidget,
|
bool showApplyToAllWidget,
|
||||||
|
bool useFirstSummaryCaseAsTemplate,
|
||||||
ImportOptions defaultSummaryImportOption,
|
ImportOptions defaultSummaryImportOption,
|
||||||
ImportOptions defaultGridImportOption,
|
ImportOptions defaultGridImportOption,
|
||||||
RicSummaryCaseRestartDialogResult *lastResult = nullptr,
|
RicSummaryCaseRestartDialogResult *lastResult = nullptr,
|
||||||
|
|||||||
@@ -124,6 +124,14 @@ void RifSummaryCaseRestartSelector::showDialog(bool show)
|
|||||||
m_showDialog = show;
|
m_showDialog = show;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
void RifSummaryCaseRestartSelector::setEnsembleOrGroupMode(bool eogMode)
|
||||||
|
{
|
||||||
|
m_ensembleOrGroupMode = eogMode;
|
||||||
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@@ -176,6 +184,7 @@ void RifSummaryCaseRestartSelector::determineFilesToImportByAskingUser(const std
|
|||||||
initialFile.gridFileName(),
|
initialFile.gridFileName(),
|
||||||
initialFile.failOnSummaryFileError(),
|
initialFile.failOnSummaryFileError(),
|
||||||
enableApplyToAllField,
|
enableApplyToAllField,
|
||||||
|
m_ensembleOrGroupMode,
|
||||||
m_defaultSummaryImportMode,
|
m_defaultSummaryImportMode,
|
||||||
m_defaultGridImportMode,
|
m_defaultGridImportMode,
|
||||||
&lastResult);
|
&lastResult);
|
||||||
@@ -237,27 +246,9 @@ void RifSummaryCaseRestartSelector::determineFilesToImportUsingPrefs(const std::
|
|||||||
{
|
{
|
||||||
QString initialSummaryFile = RiaFilePathTools::toInternalSeparator(initialFile.summaryFileName());
|
QString initialSummaryFile = RiaFilePathTools::toInternalSeparator(initialFile.summaryFileName());
|
||||||
QString initialGridFile = RiaFilePathTools::toInternalSeparator(initialFile.gridFileName());
|
QString initialGridFile = RiaFilePathTools::toInternalSeparator(initialFile.gridFileName());
|
||||||
bool handleSummaryFile = false;
|
bool handleSummaryFile = !initialSummaryFile.isEmpty();
|
||||||
bool handleGridFile = !initialGridFile.isEmpty();
|
bool handleGridFile = !initialGridFile.isEmpty();
|
||||||
|
|
||||||
RifReaderEclipseSummary reader;
|
|
||||||
if (!initialSummaryFile.isEmpty())
|
|
||||||
{
|
|
||||||
RifRestartFileInfo fileInfo = reader.getFileInfo(initialSummaryFile);
|
|
||||||
if (!fileInfo.valid())
|
|
||||||
{
|
|
||||||
m_summaryFileErrors.push_back(initialSummaryFile);
|
|
||||||
if (initialFile.failOnSummaryFileError())
|
|
||||||
{
|
|
||||||
handleGridFile = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
handleSummaryFile = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (handleSummaryFile)
|
if (handleSummaryFile)
|
||||||
{
|
{
|
||||||
if (m_defaultSummaryImportMode == RicSummaryCaseRestartDialog::IMPORT_ALL)
|
if (m_defaultSummaryImportMode == RicSummaryCaseRestartDialog::IMPORT_ALL)
|
||||||
@@ -272,6 +263,7 @@ void RifSummaryCaseRestartSelector::determineFilesToImportUsingPrefs(const std::
|
|||||||
{
|
{
|
||||||
m_summaryFileInfos.push_back(RifSummaryCaseFileResultInfo(initialSummaryFile, false));
|
m_summaryFileInfos.push_back(RifSummaryCaseFileResultInfo(initialSummaryFile, false));
|
||||||
bool hasWarnings = false;
|
bool hasWarnings = false;
|
||||||
|
RifReaderEclipseSummary reader;
|
||||||
std::vector<RifRestartFileInfo> restartFileInfos = reader.getRestartFiles(initialSummaryFile, &hasWarnings);
|
std::vector<RifRestartFileInfo> restartFileInfos = reader.getRestartFiles(initialSummaryFile, &hasWarnings);
|
||||||
for (const auto& rfi : restartFileInfos)
|
for (const auto& rfi : restartFileInfos)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -44,6 +44,7 @@ public:
|
|||||||
void determineFilesToImportFromGridFiles(const QStringList& initialGridFiles);
|
void determineFilesToImportFromGridFiles(const QStringList& initialGridFiles);
|
||||||
|
|
||||||
void showDialog(bool show);
|
void showDialog(bool show);
|
||||||
|
void setEnsembleOrGroupMode(bool eogMode);
|
||||||
std::vector<RifSummaryCaseFileResultInfo> summaryFileInfos() const;
|
std::vector<RifSummaryCaseFileResultInfo> summaryFileInfos() const;
|
||||||
QStringList gridCaseFiles() const;
|
QStringList gridCaseFiles() const;
|
||||||
bool foundErrors() const;
|
bool foundErrors() const;
|
||||||
@@ -59,6 +60,7 @@ private:
|
|||||||
void determineFilesToImportUsingPrefs(const std::vector<RifSummaryCaseFileImportInfo>& initialFiles);
|
void determineFilesToImportUsingPrefs(const std::vector<RifSummaryCaseFileImportInfo>& initialFiles);
|
||||||
|
|
||||||
bool m_showDialog;
|
bool m_showDialog;
|
||||||
|
bool m_ensembleOrGroupMode;
|
||||||
RicSummaryCaseRestartDialog::ImportOptions m_defaultSummaryImportMode;
|
RicSummaryCaseRestartDialog::ImportOptions m_defaultSummaryImportMode;
|
||||||
RicSummaryCaseRestartDialog::ImportOptions m_defaultGridImportMode;
|
RicSummaryCaseRestartDialog::ImportOptions m_defaultGridImportMode;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user