#2962 Summary import performance. Preliminary optimization of summary groups and ensemble import

This commit is contained in:
Bjørn Erik Jensen
2018-06-06 09:49:46 +02:00
parent 3cf35f673a
commit 11aeda63d9
8 changed files with 37 additions and 30 deletions

View File

@@ -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);

View File

@@ -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();

View File

@@ -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);

View File

@@ -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);

View File

@@ -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)

View File

@@ -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,

View File

@@ -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)
{ {

View File

@@ -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;