mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#4204 Export faults as part of visible grid export
#4204 Enable reading of faults from a different file than the main grid file
This commit is contained in:
@@ -27,10 +27,12 @@
|
||||
#include "RifEclipseInputFileTools.h"
|
||||
#include "RifReaderEclipseOutput.h"
|
||||
|
||||
#include "Rim3dView.h"
|
||||
#include "RimEclipseCase.h"
|
||||
#include "RimEclipseCellColors.h"
|
||||
#include "RimEclipseView.h"
|
||||
#include "Rim3dView.h"
|
||||
#include "RimFaultInView.h"
|
||||
#include "RimFaultInViewCollection.h"
|
||||
|
||||
#include "RigEclipseCaseData.h"
|
||||
#include "RigMainGrid.h"
|
||||
@@ -74,13 +76,18 @@ void RicExportEclipseInputGridFeature::executeCommand(RimEclipseView* view,
|
||||
const QString& logPrefix)
|
||||
{
|
||||
int resultProgressPercentage = exportSettings.exportResults() ?
|
||||
std::min((int) exportSettings.exportMainKeywords().size(), 30) : 0;
|
||||
std::min((int) exportSettings.exportMainKeywords().size(), 20) : 0;
|
||||
|
||||
int faultsProgressPercentage = exportSettings.exportFaults() ? 10 : 0;
|
||||
|
||||
int gridProgressPercentage = 100 - resultProgressPercentage - faultsProgressPercentage;
|
||||
caf::ProgressInfo progress(gridProgressPercentage + resultProgressPercentage + faultsProgressPercentage,
|
||||
"Export Eclipse Data");
|
||||
|
||||
int gridProgressPercentage = 100 - resultProgressPercentage;
|
||||
caf::ProgressInfo progress(gridProgressPercentage + resultProgressPercentage, "Export Eclipse Data");
|
||||
|
||||
cvf::Vec3st refinement(exportSettings.cellCountI(), exportSettings.cellCountJ(), exportSettings.cellCountK());
|
||||
|
||||
CVF_ASSERT(refinement.x() > 0u && refinement.y() > 0u && refinement.z() > 0u);
|
||||
|
||||
cvf::Vec3st min, max;
|
||||
std::tie(min, max) = getVisibleCellRange(view);
|
||||
if (exportSettings.exportGrid())
|
||||
@@ -144,6 +151,43 @@ void RicExportEclipseInputGridFeature::executeCommand(RimEclipseView* view,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (exportSettings.exportFaults() != RicExportEclipseInputGridUi::EXPORT_NO_RESULTS)
|
||||
{
|
||||
auto task = progress.task("Export Faults", faultsProgressPercentage);
|
||||
if (exportSettings.exportFaults == RicExportEclipseInputGridUi::EXPORT_TO_SEPARATE_FILE_PER_RESULT)
|
||||
{
|
||||
QFileInfo info(exportSettings.exportGridFilename());
|
||||
QDir dirPath = info.absoluteDir();
|
||||
|
||||
for (auto faultInView : view->faultCollection()->faults())
|
||||
{
|
||||
auto rigFault = faultInView->faultGeometry();
|
||||
QString fileName = QString("%1.GRDECL").arg(rigFault->name());
|
||||
RifEclipseInputFileTools::saveFault(
|
||||
fileName, view->eclipseCase()->mainGrid(), rigFault->faultFaces(), rigFault->name(), min, max, refinement);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
QString fileName = exportSettings.exportFaultsFilename();
|
||||
QIODevice::OpenMode openFlag = QIODevice::Truncate;
|
||||
if (exportSettings.exportResults() == RicExportEclipseInputGridUi::EXPORT_TO_GRID_FILE)
|
||||
{
|
||||
openFlag = QIODevice::Append;
|
||||
fileName = exportSettings.exportGridFilename();
|
||||
}
|
||||
QFile exportFile(fileName);
|
||||
|
||||
if (!exportFile.open(QIODevice::Text | QIODevice::WriteOnly | openFlag))
|
||||
{
|
||||
RiaLogging::error("Could not open the file : " + fileName);
|
||||
}
|
||||
|
||||
QTextStream stream(&exportFile);
|
||||
RifEclipseInputFileTools::saveFaults(stream, view->eclipseCase()->mainGrid(), min, max, refinement);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
||||
@@ -26,11 +26,13 @@
|
||||
|
||||
#include "cafPdmUiFilePathEditor.h"
|
||||
#include "cafPdmUiGroup.h"
|
||||
#include "cafPdmUiLineEditor.h"
|
||||
#include "cafPdmUiListEditor.h"
|
||||
#include "cafPdmUiOrdering.h"
|
||||
|
||||
#include <QDir>
|
||||
#include <QFileInfo>
|
||||
#include <QIntValidator>
|
||||
|
||||
CAF_PDM_SOURCE_INIT(RicExportEclipseInputGridUi, "RicExportEclipseInputGridUi");
|
||||
|
||||
@@ -57,11 +59,17 @@ RicExportEclipseInputGridUi::RicExportEclipseInputGridUi(RigEclipseCaseData* cas
|
||||
CAF_PDM_InitObject("Export Visible Cells as Eclipse Input Grid", "", "", "");
|
||||
|
||||
CAF_PDM_InitField(&exportGrid, "ExportGrid", true, "Export Grid", "", "Includes COORD, ZCORN and ACTNUM", "");
|
||||
CAF_PDM_InitFieldNoDefault(&exportResults, "ExportResults", "Export Results", "", "", "");
|
||||
CAF_PDM_InitField(&exportResultsFilename, "ExportResultsFilename", QString(), "Results File Name", "", "", "");
|
||||
CAF_PDM_InitField(&exportGridFilename, "ExportGridFilename", QString(), "Grid File Name", "", "", "");
|
||||
exportGridFilename.uiCapability()->setUiEditorTypeName(caf::PdmUiFilePathEditor::uiEditorTypeName());
|
||||
|
||||
CAF_PDM_InitFieldNoDefault(&exportResults, "ExportResults", "Export Results", "", "", "");
|
||||
CAF_PDM_InitField(&exportResultsFilename, "ExportResultsFilename", QString(), "Results File Name", "", "", "");
|
||||
exportResultsFilename.uiCapability()->setUiEditorTypeName(caf::PdmUiFilePathEditor::uiEditorTypeName());
|
||||
|
||||
CAF_PDM_InitFieldNoDefault(&exportFaults, "ExportFaults", "Export Faults", "", "", "");
|
||||
CAF_PDM_InitField(&exportFaultsFilename, "ExportFaultsFilename", QString(), "Faults File Name", "", "", "");
|
||||
exportFaultsFilename.uiCapability()->setUiEditorTypeName(caf::PdmUiFilePathEditor::uiEditorTypeName());
|
||||
|
||||
CAF_PDM_InitFieldNoDefault(&exportMainKeywords, "ExportMainKeywords", "Main Keywords", "", "", "");
|
||||
CAF_PDM_InitFieldNoDefault(&exportAdditionalKeywords, "ExportAdditionalKeywords", "Additional Keywords", "", "", "");
|
||||
|
||||
@@ -72,6 +80,7 @@ RicExportEclipseInputGridUi::RicExportEclipseInputGridUi(RigEclipseCaseData* cas
|
||||
|
||||
exportGridFilename = defaultGridFileName();
|
||||
exportResultsFilename = defaultResultsFileName();
|
||||
exportFaultsFilename = defaultFaultsFileName();
|
||||
|
||||
for (QString keyword : mainKeywords())
|
||||
{
|
||||
@@ -102,7 +111,7 @@ std::vector<QString> RicExportEclipseInputGridUi::allSelectedKeywords() const
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RicExportEclipseInputGridUi::defineEditorAttribute(const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute * attribute)
|
||||
{
|
||||
if (field == &exportResultsFilename || field == &exportGridFilename)
|
||||
if (field == &exportResultsFilename || field == &exportGridFilename || field == &exportFaultsFilename)
|
||||
{
|
||||
caf::PdmUiFilePathEditorAttribute* myAttr = dynamic_cast<caf::PdmUiFilePathEditorAttribute*>(attribute);
|
||||
if (myAttr)
|
||||
@@ -118,6 +127,15 @@ void RicExportEclipseInputGridUi::defineEditorAttribute(const caf::PdmFieldHandl
|
||||
myAttr->m_heightHint = 200;
|
||||
}
|
||||
}
|
||||
else if (field == &cellCountI || field == &cellCountJ || field == &cellCountK)
|
||||
{
|
||||
caf::PdmUiLineEditorAttribute* myAttr = dynamic_cast<caf::PdmUiLineEditorAttribute*>(attribute);
|
||||
if (myAttr)
|
||||
{
|
||||
QIntValidator* validator = new QIntValidator(1, 10, nullptr);
|
||||
myAttr->validator = validator;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -130,8 +148,9 @@ void RicExportEclipseInputGridUi::defineUiOrdering(QString uiConfigName, caf::Pd
|
||||
gridGroup->add(&exportGridFilename);
|
||||
exportGridFilename.uiCapability()->setUiReadOnly(!exportGrid());
|
||||
|
||||
caf::PdmUiGroup* resultsGroup = uiOrdering.addNewGroup("Results Export");
|
||||
caf::PdmUiGroup* resultsGroup = uiOrdering.addNewGroup("Results and Faults Export");
|
||||
resultsGroup->add(&exportResults);
|
||||
resultsGroup->add(&exportFaults);
|
||||
if (exportResults() != EXPORT_NO_RESULTS)
|
||||
{
|
||||
if (exportResults() == EXPORT_TO_SINGLE_SEPARATE_FILE)
|
||||
@@ -140,6 +159,13 @@ void RicExportEclipseInputGridUi::defineUiOrdering(QString uiConfigName, caf::Pd
|
||||
resultsGroup->add(&exportMainKeywords);
|
||||
resultsGroup->add(&exportAdditionalKeywords);
|
||||
}
|
||||
if (exportFaults() != EXPORT_NO_RESULTS)
|
||||
{
|
||||
if (exportFaults() == EXPORT_TO_SINGLE_SEPARATE_FILE)
|
||||
{
|
||||
resultsGroup->add(&exportFaultsFilename);
|
||||
}
|
||||
}
|
||||
|
||||
caf::PdmUiGroup* gridRefinement = uiOrdering.addNewGroup("Grid Refinement");
|
||||
gridRefinement->add(&cellCountI, { true, 2, 1 });
|
||||
@@ -156,20 +182,44 @@ void RicExportEclipseInputGridUi::fieldChangedByUi(const caf::PdmFieldHandle* ch
|
||||
{
|
||||
if (changedField == &exportGridFilename)
|
||||
{
|
||||
QFileInfo info(exportGridFilename());
|
||||
QDir dirPath = info.absoluteDir();
|
||||
|
||||
if (exportResultsFilename() == defaultResultsFileName())
|
||||
{
|
||||
QFileInfo info(exportGridFilename());
|
||||
QDir gridDirPath = info.absoluteDir();
|
||||
exportResultsFilename = gridDirPath.absoluteFilePath("results.grdecl");
|
||||
exportResultsFilename = dirPath.absoluteFilePath("RESULTS.GRDECL");
|
||||
}
|
||||
if (exportFaultsFilename() == defaultFaultsFileName())
|
||||
{
|
||||
exportFaultsFilename = dirPath.absoluteFilePath("FAULTS.GRDECL");
|
||||
}
|
||||
}
|
||||
else if (changedField == &exportResultsFilename)
|
||||
{
|
||||
QFileInfo info(exportResultsFilename());
|
||||
QDir dirPath = info.absoluteDir();
|
||||
|
||||
if (exportGridFilename() == defaultGridFileName())
|
||||
{
|
||||
QFileInfo info(exportResultsFilename());
|
||||
QDir resultsDirPath = info.absoluteDir();
|
||||
exportGridFilename = resultsDirPath.absoluteFilePath("grid.grdecl");
|
||||
exportGridFilename = dirPath.absoluteFilePath("GRID.GRDECL");
|
||||
}
|
||||
if (exportFaultsFilename() == defaultFaultsFileName())
|
||||
{
|
||||
exportFaultsFilename = dirPath.absoluteFilePath("FAULTS.GRDECL");
|
||||
}
|
||||
}
|
||||
else if (changedField == &exportFaultsFilename)
|
||||
{
|
||||
QFileInfo info(exportFaultsFilename());
|
||||
QDir dirPath = info.absoluteDir();
|
||||
|
||||
if (exportGridFilename() == defaultGridFileName())
|
||||
{
|
||||
exportGridFilename = dirPath.absoluteFilePath("GRID.GRDECL");
|
||||
}
|
||||
if (exportResultsFilename() == defaultResultsFileName())
|
||||
{
|
||||
exportResultsFilename = dirPath.absoluteFilePath("RESULTS.GRDECL");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -247,3 +297,12 @@ QString RicExportEclipseInputGridUi::defaultResultsFileName() const
|
||||
QDir baseDir(RiaApplication::instance()->currentProjectPath());
|
||||
return baseDir.absoluteFilePath("RESULTS.GRDECL");
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
QString RicExportEclipseInputGridUi::defaultFaultsFileName() const
|
||||
{
|
||||
QDir baseDir(RiaApplication::instance()->currentProjectPath());
|
||||
return baseDir.absoluteFilePath("FAULTS.GRDECL");
|
||||
}
|
||||
|
||||
@@ -45,6 +45,7 @@ class RicExportEclipseInputGridUi : public caf::PdmObject
|
||||
EXPORT_TO_SINGLE_SEPARATE_FILE,
|
||||
EXPORT_TO_SEPARATE_FILE_PER_RESULT
|
||||
};
|
||||
|
||||
typedef caf::AppEnum<ResultExportOptions> ResultExportOptionsEnum;
|
||||
|
||||
public:
|
||||
@@ -54,9 +55,14 @@ public:
|
||||
std::vector<QString> allSelectedKeywords() const;
|
||||
|
||||
caf::PdmField<bool> exportGrid;
|
||||
caf::PdmField<QString> exportGridFilename;
|
||||
|
||||
caf::PdmField<ResultExportOptionsEnum> exportResults;
|
||||
caf::PdmField<QString> exportGridFilename;
|
||||
caf::PdmField<QString> exportResultsFilename;
|
||||
|
||||
caf::PdmField<ResultExportOptionsEnum> exportFaults;
|
||||
caf::PdmField<QString> exportFaultsFilename;
|
||||
|
||||
caf::PdmField<std::vector<QString>> exportMainKeywords;
|
||||
caf::PdmField<std::vector<QString>> exportAdditionalKeywords;
|
||||
|
||||
@@ -74,6 +80,7 @@ protected:
|
||||
static std::set<QString> mainKeywords();
|
||||
QString defaultGridFileName() const;
|
||||
QString defaultResultsFileName() const;
|
||||
QString defaultFaultsFileName() const;
|
||||
private:
|
||||
RigEclipseCaseData* m_caseData;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user