mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
Import and plot of FMU RFT data works
This commit is contained in:
@@ -41,8 +41,9 @@ ${CMAKE_CURRENT_LIST_DIR}/RicImportGeoMechCaseTimeStepFilterFeature.h
|
||||
${CMAKE_CURRENT_LIST_DIR}/RicImportSummaryCaseFeature.h
|
||||
${CMAKE_CURRENT_LIST_DIR}/RicImportSummaryCasesFeature.h
|
||||
${CMAKE_CURRENT_LIST_DIR}/RicImportObservedDataFeature.h
|
||||
${CMAKE_CURRENT_LIST_DIR}/RicImportFmuObservedDataFeature.h
|
||||
${CMAKE_CURRENT_LIST_DIR}/RicImportObservedDataInMenuFeature.h
|
||||
${CMAKE_CURRENT_LIST_DIR}/RicImportObservedFmuDataFeature.h
|
||||
${CMAKE_CURRENT_LIST_DIR}/RicImportObservedFmuDataInMenuFeature.h
|
||||
${CMAKE_CURRENT_LIST_DIR}/RicImportGeneralDataFeature.h
|
||||
${CMAKE_CURRENT_LIST_DIR}/RicExportFeatureImpl.h
|
||||
|
||||
@@ -122,8 +123,9 @@ ${CMAKE_CURRENT_LIST_DIR}/RicImportGeoMechCaseTimeStepFilterFeature.cpp
|
||||
${CMAKE_CURRENT_LIST_DIR}/RicImportSummaryCaseFeature.cpp
|
||||
${CMAKE_CURRENT_LIST_DIR}/RicImportSummaryCasesFeature.cpp
|
||||
${CMAKE_CURRENT_LIST_DIR}/RicImportObservedDataFeature.cpp
|
||||
${CMAKE_CURRENT_LIST_DIR}/RicImportFmuObservedDataFeature.cpp
|
||||
${CMAKE_CURRENT_LIST_DIR}/RicImportObservedDataInMenuFeature.cpp
|
||||
${CMAKE_CURRENT_LIST_DIR}/RicImportObservedFmuDataFeature.cpp
|
||||
${CMAKE_CURRENT_LIST_DIR}/RicImportObservedFmuDataInMenuFeature.cpp
|
||||
${CMAKE_CURRENT_LIST_DIR}/RicImportGeneralDataFeature.cpp
|
||||
${CMAKE_CURRENT_LIST_DIR}/RicExportFeatureImpl.cpp
|
||||
|
||||
|
||||
@@ -21,11 +21,15 @@
|
||||
#include "RiaApplication.h"
|
||||
#include "RiaSummaryTools.h"
|
||||
|
||||
#include "RimObservedData.h"
|
||||
#include "RimMainPlotCollection.h"
|
||||
#include "RimObservedFmuRftData.h"
|
||||
#include "RimObservedSummaryData.h"
|
||||
#include "RimObservedDataCollection.h"
|
||||
#include "RimProject.h"
|
||||
#include "RimRftPlotCollection.h"
|
||||
#include "RimSummaryPlot.h"
|
||||
#include "RimSummaryPlotCollection.h"
|
||||
#include "RimWellRftPlot.h"
|
||||
|
||||
#include "cafSelectionManager.h"
|
||||
|
||||
@@ -47,11 +51,11 @@ void RicCloseObservedDataFeature::setupActionLook(QAction* actionToSetup)
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RicCloseObservedDataFeature::deleteObservedData(const std::vector<RimObservedData*>& data)
|
||||
void RicCloseObservedDataFeature::deleteObservedSummaryData(const std::vector<RimObservedSummaryData*>& data)
|
||||
{
|
||||
RimSummaryPlotCollection* summaryPlotColl = RiaSummaryTools::summaryPlotCollection();
|
||||
|
||||
for (RimObservedData* observedData : data)
|
||||
for (RimObservedSummaryData* observedData : data)
|
||||
{
|
||||
for (RimSummaryPlot* summaryPlot : summaryPlotColl->summaryPlots)
|
||||
{
|
||||
@@ -62,7 +66,30 @@ void RicCloseObservedDataFeature::deleteObservedData(const std::vector<RimObserv
|
||||
RimObservedDataCollection* observedDataCollection = nullptr;
|
||||
observedData->firstAncestorOrThisOfTypeAsserted(observedDataCollection);
|
||||
|
||||
observedDataCollection->removeObservedData(observedData);
|
||||
observedDataCollection->removeObservedSummaryData(observedData);
|
||||
delete observedData;
|
||||
observedDataCollection->updateConnectedEditors();
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RicCloseObservedDataFeature::deleteObservedRmuRftData(const std::vector<RimObservedFmuRftData*>& data)
|
||||
{
|
||||
RimProject* proj = RiaApplication::instance()->project();
|
||||
RimRftPlotCollection* rftPlotColl = proj->mainPlotCollection()->rftPlotCollection();
|
||||
|
||||
for (RimObservedFmuRftData* observedData : data)
|
||||
{
|
||||
RimObservedDataCollection* observedDataCollection = nullptr;
|
||||
observedData->firstAncestorOrThisOfTypeAsserted(observedDataCollection);
|
||||
|
||||
for (RimWellRftPlot* plot : rftPlotColl->rftPlots())
|
||||
{
|
||||
plot->deleteCurvesAssosicatedWithObservedData(observedData);
|
||||
}
|
||||
observedDataCollection->removeObservedFmuRftData(observedData);
|
||||
delete observedData;
|
||||
observedDataCollection->updateConnectedEditors();
|
||||
}
|
||||
@@ -73,14 +100,17 @@ void RicCloseObservedDataFeature::deleteObservedData(const std::vector<RimObserv
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
bool RicCloseObservedDataFeature::isCommandEnabled()
|
||||
{
|
||||
std::vector<RimObservedData*> selection;
|
||||
caf::SelectionManager::instance()->objectsByType(&selection);
|
||||
std::vector<RimObservedSummaryData*> summarySelection;
|
||||
caf::SelectionManager::instance()->objectsByType(&summarySelection);
|
||||
|
||||
if (selection.size() == 0)
|
||||
std::vector<RimObservedFmuRftData*> fmuRftSelection;
|
||||
caf::SelectionManager::instance()->objectsByType(&fmuRftSelection);
|
||||
|
||||
if (summarySelection.size() == 0 && fmuRftSelection.size() == 0)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
for (RimObservedData* data : selection)
|
||||
for (RimObservedSummaryData* data : summarySelection)
|
||||
{
|
||||
if (!data->isObservedData())
|
||||
{
|
||||
@@ -96,9 +126,14 @@ bool RicCloseObservedDataFeature::isCommandEnabled()
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RicCloseObservedDataFeature::onActionTriggered(bool isChecked)
|
||||
{
|
||||
std::vector<RimObservedData*> selection;
|
||||
caf::SelectionManager::instance()->objectsByType(&selection);
|
||||
CVF_ASSERT(selection.size() > 0);
|
||||
std::vector<RimObservedSummaryData*> summarySelection;
|
||||
caf::SelectionManager::instance()->objectsByType(&summarySelection);
|
||||
|
||||
std::vector<RimObservedFmuRftData*> fmuRftSelection;
|
||||
caf::SelectionManager::instance()->objectsByType(&fmuRftSelection);
|
||||
|
||||
CVF_ASSERT(!(summarySelection.empty() && fmuRftSelection.empty()));
|
||||
|
||||
RicCloseObservedDataFeature::deleteObservedData(selection);
|
||||
RicCloseObservedDataFeature::deleteObservedSummaryData(summarySelection);
|
||||
RicCloseObservedDataFeature::deleteObservedRmuRftData(fmuRftSelection);
|
||||
}
|
||||
|
||||
@@ -22,7 +22,8 @@
|
||||
|
||||
#include <vector>
|
||||
|
||||
class RimObservedData;
|
||||
class RimObservedFmuRftData;
|
||||
class RimObservedSummaryData;
|
||||
|
||||
//==================================================================================================
|
||||
///
|
||||
@@ -31,7 +32,8 @@ class RicCloseObservedDataFeature : public caf::CmdFeature
|
||||
{
|
||||
CAF_CMD_HEADER_INIT;
|
||||
public:
|
||||
static void deleteObservedData(const std::vector<RimObservedData*>& data);
|
||||
static void deleteObservedSummaryData(const std::vector<RimObservedSummaryData*>& data);
|
||||
static void deleteObservedRmuRftData(const std::vector<RimObservedFmuRftData*>& data);
|
||||
|
||||
protected:
|
||||
// Overrides
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
|
||||
#include "RiaApplication.h"
|
||||
|
||||
#include "RimObservedData.h"
|
||||
#include "RimObservedSummaryData.h"
|
||||
#include "RimObservedDataCollection.h"
|
||||
#include "RimOilField.h"
|
||||
#include "RimProject.h"
|
||||
@@ -55,7 +55,7 @@ void RicImportObservedDataFeature::selectObservedDataFileInDialog()
|
||||
RimObservedDataCollection* observedDataCollection = proj->activeOilField() ? proj->activeOilField()->observedDataCollection() : nullptr;
|
||||
if (!observedDataCollection) return;
|
||||
|
||||
RimObservedData* observedData = nullptr;
|
||||
RimObservedSummaryData* observedData = nullptr;
|
||||
|
||||
for (const QString& fileName : fileNames)
|
||||
{
|
||||
@@ -67,13 +67,13 @@ void RicImportObservedDataFeature::selectObservedDataFileInDialog()
|
||||
|
||||
if (fileName.endsWith(".rsm", Qt::CaseInsensitive))
|
||||
{
|
||||
observedData = observedDataCollection->createAndAddRsmObservedDataFromFile(fileName, &errorText);
|
||||
observedData = observedDataCollection->createAndAddRsmObservedSummaryDataFromFile(fileName, &errorText);
|
||||
retryImport = false;
|
||||
}
|
||||
else if (fileName.endsWith(".txt", Qt::CaseInsensitive) || fileName.endsWith(".csv", Qt::CaseInsensitive))
|
||||
{
|
||||
bool useSavedFieldValuesInDialog = retryImport;
|
||||
observedData = observedDataCollection->createAndAddCvsObservedDataFromFile(fileName, useSavedFieldValuesInDialog, &errorText);
|
||||
observedData = observedDataCollection->createAndAddCvsObservedSummaryDataFromFile(fileName, useSavedFieldValuesInDialog, &errorText);
|
||||
retryImport = !errorText.isEmpty();
|
||||
}
|
||||
else
|
||||
@@ -105,7 +105,7 @@ bool RicImportObservedDataFeature::isCommandEnabled()
|
||||
std::vector<RimObservedDataCollection*> selectionObservedDataCollection;
|
||||
caf::SelectionManager::instance()->objectsByType(&selectionObservedDataCollection);
|
||||
|
||||
std::vector<RimObservedData*> selectionObservedData;
|
||||
std::vector<RimObservedSummaryData*> selectionObservedData;
|
||||
caf::SelectionManager::instance()->objectsByType(&selectionObservedData);
|
||||
|
||||
return (selectionObservedDataCollection.size() > 0 || selectionObservedData.size() > 0);
|
||||
|
||||
@@ -15,45 +15,68 @@
|
||||
// for more details.
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
#include "RicImportFmuObservedDataFeature.h"
|
||||
#include "RicImportObservedFmuDataFeature.h"
|
||||
|
||||
#include "RiaApplication.h"
|
||||
#include "RifReaderFmuRft.h"
|
||||
|
||||
#include "RimObservedData.h"
|
||||
#include "RimObservedFmuRftData.h"
|
||||
#include "RimObservedSummaryData.h"
|
||||
#include "RimObservedDataCollection.h"
|
||||
#include "RimOilField.h"
|
||||
#include "RimProject.h"
|
||||
|
||||
#include "RiuPlotMainWindowTools.h"
|
||||
|
||||
#include "cafPdmObject.h"
|
||||
#include "cafSelectionManager.h"
|
||||
|
||||
#include <QAction>
|
||||
#include <QFileDialog>
|
||||
#include <QMessageBox>
|
||||
|
||||
|
||||
CAF_CMD_SOURCE_INIT(RicImportObservedFmuDataFeature, "RicImportObservedFmuDataFeature");
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RicImportFmuObservedDataFeature::selectObservedDataPathInDialog()
|
||||
void RicImportObservedFmuDataFeature::selectObservedDataPathInDialog()
|
||||
{
|
||||
RiaApplication* app = RiaApplication::instance();
|
||||
QString defaultDir = app->lastUsedDialogDirectory("SUMMARY_CASE_DIR");
|
||||
QString directory = QFileDialog::getExistingDirectory(
|
||||
nullptr, "Import Fmu Observed Data Recursively from Directory", defaultDir, QFileDialog::ShowDirsOnly);
|
||||
nullptr, "Import Observed FMU Data Recursively from Directory", defaultDir, QFileDialog::ShowDirsOnly);
|
||||
|
||||
QStringList subDirsWithFmuData = RifReaderFmuRft::findSubDirectoriesWithFmuRftData(directory);
|
||||
if (subDirsWithFmuData.empty()) return;
|
||||
|
||||
RimProject* proj = app->project();
|
||||
RimObservedDataCollection* observedDataCollection =
|
||||
proj->activeOilField() ? proj->activeOilField()->observedDataCollection() : nullptr;
|
||||
if (!observedDataCollection) return;
|
||||
|
||||
const RimObservedFmuRftData* importedData = nullptr;
|
||||
for (const QString& subDir : subDirsWithFmuData)
|
||||
{
|
||||
importedData = observedDataCollection->createAndAddFmuRftDataFromPath(subDir);
|
||||
}
|
||||
if (importedData != nullptr)
|
||||
{
|
||||
RiuPlotMainWindowTools::showPlotMainWindow();
|
||||
RiuPlotMainWindowTools::selectAsCurrentItem(importedData);
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
bool RicImportFmuObservedDataFeature::isCommandEnabled()
|
||||
bool RicImportObservedFmuDataFeature::isCommandEnabled()
|
||||
{
|
||||
std::vector<RimObservedDataCollection*> selectionObservedDataCollection;
|
||||
caf::SelectionManager::instance()->objectsByType(&selectionObservedDataCollection);
|
||||
|
||||
std::vector<RimObservedData*> selectionObservedData;
|
||||
std::vector<RimObservedSummaryData*> selectionObservedData;
|
||||
caf::SelectionManager::instance()->objectsByType(&selectionObservedData);
|
||||
|
||||
return (selectionObservedDataCollection.size() > 0 || selectionObservedData.size() > 0);
|
||||
@@ -62,9 +85,16 @@ bool RicImportFmuObservedDataFeature::isCommandEnabled()
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RicImportFmuObservedDataFeature::onActionTriggered(bool isChecked) {}
|
||||
void RicImportObservedFmuDataFeature::onActionTriggered(bool isChecked)
|
||||
{
|
||||
selectObservedDataPathInDialog();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RicImportFmuObservedDataFeature::setupActionLook(QAction* actionToSetup) {}
|
||||
void RicImportObservedFmuDataFeature::setupActionLook(QAction* actionToSetup)
|
||||
{
|
||||
actionToSetup->setIcon(QIcon(":/ObservedDataFile16x16.png"));
|
||||
actionToSetup->setText("Import Observed FMU Data");
|
||||
}
|
||||
@@ -26,7 +26,7 @@
|
||||
//
|
||||
//
|
||||
//==================================================================================================
|
||||
class RicImportFmuObservedDataFeature : public caf::CmdFeature
|
||||
class RicImportObservedFmuDataFeature : public caf::CmdFeature
|
||||
{
|
||||
CAF_CMD_HEADER_INIT;
|
||||
|
||||
@@ -0,0 +1,63 @@
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Copyright (C) 2017 Statoil ASA
|
||||
//
|
||||
// ResInsight is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, either version 3 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// ResInsight is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
// WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
// FITNESS FOR A PARTICULAR PURPOSE.
|
||||
//
|
||||
// See the GNU General Public License at <http://www.gnu.org/licenses/gpl.html>
|
||||
// for more details.
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#include "RicImportObservedFmuDataInMenuFeature.h"
|
||||
|
||||
#include "RiaApplication.h"
|
||||
|
||||
#include "RicImportObservedFmuDataFeature.h"
|
||||
|
||||
#include "RimObservedDataCollection.h"
|
||||
#include "RimOilField.h"
|
||||
#include "RimProject.h"
|
||||
#include "RimSummaryObservedDataFile.h"
|
||||
|
||||
#include <QAction>
|
||||
#include <QFileDialog>
|
||||
|
||||
CAF_CMD_SOURCE_INIT(RicImportObservedFmuDataInMenuFeature, "RicImportObservedFmuDataInMenuFeature");
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RicImportObservedFmuDataInMenuFeature::RicImportObservedFmuDataInMenuFeature() {}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
bool RicImportObservedFmuDataInMenuFeature::isCommandEnabled()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RicImportObservedFmuDataInMenuFeature::onActionTriggered(bool isChecked)
|
||||
{
|
||||
RicImportObservedFmuDataFeature::selectObservedDataPathInDialog();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RicImportObservedFmuDataInMenuFeature::setupActionLook(QAction* actionToSetup)
|
||||
{
|
||||
actionToSetup->setIcon(QIcon(":/ObservedDataFile16x16.png"));
|
||||
actionToSetup->setText("Import Observed FMU Data");
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Copyright (C) 2019- Equinor ASA
|
||||
//
|
||||
// ResInsight is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, either version 3 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// ResInsight is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
// WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
// FITNESS FOR A PARTICULAR PURPOSE.
|
||||
//
|
||||
// See the GNU General Public License at <http://www.gnu.org/licenses/gpl.html>
|
||||
// for more details.
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "cafCmdFeature.h"
|
||||
|
||||
#include "cafPdmField.h"
|
||||
|
||||
//==================================================================================================
|
||||
//
|
||||
//
|
||||
//
|
||||
//==================================================================================================
|
||||
class RicImportObservedFmuDataInMenuFeature : public caf::CmdFeature
|
||||
{
|
||||
CAF_CMD_HEADER_INIT;
|
||||
|
||||
public:
|
||||
RicImportObservedFmuDataInMenuFeature();
|
||||
|
||||
private:
|
||||
bool isCommandEnabled() override;
|
||||
void onActionTriggered(bool isChecked) override;
|
||||
void setupActionLook(QAction* actionToSetup) override;
|
||||
};
|
||||
@@ -23,7 +23,7 @@
|
||||
#include "RiaSummaryTools.h"
|
||||
|
||||
#include "RimMainPlotCollection.h"
|
||||
#include "RimObservedData.h"
|
||||
#include "RimObservedSummaryData.h"
|
||||
#include "RimObservedDataCollection.h"
|
||||
#include "RimProject.h"
|
||||
#include "RimSummaryCase.h"
|
||||
@@ -60,6 +60,7 @@ void RicReloadSummaryCaseFeature::onActionTriggered(bool isChecked)
|
||||
for (RimSummaryCase* summaryCase : caseSelection)
|
||||
{
|
||||
summaryCase->createSummaryReaderInterface();
|
||||
summaryCase->createRftReaderInterface();
|
||||
|
||||
RiaLogging::info(QString("Reloaded data for %1").arg(summaryCase->summaryHeaderFilename()));
|
||||
}
|
||||
@@ -112,7 +113,7 @@ std::vector<RimSummaryCase*> RicReloadSummaryCaseFeature::selectedSummaryCases()
|
||||
|
||||
for (auto collection : collectionSelection)
|
||||
{
|
||||
std::vector<RimObservedData*> observedCases = collection->allObservedData();
|
||||
std::vector<RimObservedSummaryData*> observedCases = collection->allObservedSummaryData();
|
||||
caseSelection.insert(caseSelection.end(), observedCases.begin(), observedCases.end());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
#include "RimEnsembleCurveSetCollection.h"
|
||||
#include "RimEnsembleCurveSetColorManager.h"
|
||||
#include "RimMainPlotCollection.h"
|
||||
#include "RimObservedData.h"
|
||||
#include "RimObservedSummaryData.h"
|
||||
#include "RimObservedDataCollection.h"
|
||||
#include "RimOilField.h"
|
||||
#include "RimProject.h"
|
||||
@@ -873,7 +873,7 @@ void RicSummaryCurveCreator::updateCurveNames()
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
bool RicSummaryCurveCreator::isObservedData(RimSummaryCase* sumCase) const
|
||||
{
|
||||
return dynamic_cast<RimObservedData*>(sumCase) != nullptr;
|
||||
return dynamic_cast<RimObservedSummaryData*>(sumCase) != nullptr;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user