LGR Export. Add time step to LGR dialog

This commit is contained in:
Bjørn Erik Jensen
2018-10-11 09:31:06 +02:00
parent b5ab2968dd
commit ce2430ac2d
4 changed files with 54 additions and 8 deletions

View File

@@ -62,7 +62,7 @@ CAF_CMD_SOURCE_INIT(RicExportLgrFeature, "RicExportLgrFeature");
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RicExportLgrUi* RicExportLgrFeature::openDialog()
RicExportLgrUi* RicExportLgrFeature::openDialog(RimEclipseCase* defaultCase, int defaultTimeStep)
{
RiaApplication* app = RiaApplication::instance();
RimProject* proj = app->project();
@@ -80,7 +80,7 @@ RicExportLgrUi* RicExportLgrFeature::openDialog()
featureUi->setExportFolder(startPath);
}
if (!featureUi->caseToApply())
if (!featureUi->caseToApply() && !defaultCase)
{
std::vector<RimCase*> cases;
app->project()->allCases(cases);
@@ -94,9 +94,11 @@ RicExportLgrUi* RicExportLgrFeature::openDialog()
}
}
}
if (defaultCase) featureUi->setCase(defaultCase);
featureUi->setTimeStep(defaultTimeStep);
caf::PdmUiPropertyViewDialog propertyDialog(nullptr, featureUi, "LGR Export", "", QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
propertyDialog.resize(QSize(600, 250));
propertyDialog.resize(QSize(600, 255));
if (propertyDialog.exec() == QDialog::Accepted && !featureUi->exportFolder().isEmpty())
{
@@ -342,15 +344,17 @@ void RicExportLgrFeature::onActionTriggered(bool isChecked)
std::vector<RimSimWellInView*> simWells;
QString dialogTitle = "LGR Export";
auto dialogData = openDialog();
int defaultTimeStep = 0;
auto activeView = dynamic_cast<RimEclipseView*>(RiaApplication::instance()->activeGridView());
if (activeView) defaultTimeStep = activeView->currentTimeStep();
auto dialogData = openDialog(nullptr, defaultTimeStep);
if (dialogData)
{
auto activeView = dynamic_cast<RimEclipseView*>(RiaApplication::instance()->activeGridView());
if (!activeView) return;
auto eclipseCase = dialogData->caseToApply();
auto lgrCellCounts = dialogData->lgrCellCount();
size_t timeStep = activeView->currentTimeStep();
size_t timeStep = dialogData->timeStep();
bool lgrIntersected = false;
for (const auto& wellPath : wellPaths)

View File

@@ -64,7 +64,7 @@ class RicExportLgrFeature : public caf::CmdFeature
typedef std::pair<size_t, size_t> Range;
static Range initRange() { return std::make_pair(std::numeric_limits<size_t>::max(), 0); }
static RicExportLgrUi* openDialog();
static RicExportLgrUi* openDialog(RimEclipseCase* defaultCase = nullptr, int defaultTimeStep = 0);
static bool openFileForExport(const QString& folderName, const QString& fileName, QFile* exportFile);
static void exportLgrs(QTextStream& stream, const std::vector<LgrInfo>& lgrInfos);

View File

@@ -55,6 +55,7 @@ RicExportLgrUi::RicExportLgrUi()
m_exportFolder.uiCapability()->setUiEditorTypeName(caf::PdmUiFilePathEditor::uiEditorTypeName());
CAF_PDM_InitFieldNoDefault(&m_caseToApply, "CaseToApply", "Source Case", "", "", "");
CAF_PDM_InitFieldNoDefault(&m_timeStep, "TimeStepIndex", "Time Step", "", "", "");
CAF_PDM_InitField(&m_cellCountI, "CellCountI", 2, "Cell Count I", "", "", "");
CAF_PDM_InitField(&m_cellCountJ, "CellCountJ", 2, "Cell Count J", "", "", "");
@@ -77,6 +78,20 @@ void RicExportLgrUi::setCase(RimEclipseCase* rimCase)
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RicExportLgrUi::setTimeStep(int timeStep)
{
bool isDifferent = timeStep != m_timeStep;
if (isDifferent)
{
m_timeStep = timeStep;
setDefaultValuesFromCase();
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@@ -101,6 +116,14 @@ RimEclipseCase* RicExportLgrUi::caseToApply() const
return m_caseToApply();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
int RicExportLgrUi::timeStep() const
{
return m_timeStep;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@@ -144,6 +167,19 @@ QList<caf::PdmOptionItemInfo> RicExportLgrUi::calculateValueOptions(const caf::P
{
RimTools::caseOptionItems(&options);
}
else if (fieldNeedingOptions == &m_timeStep)
{
QStringList timeStepNames;
if (m_caseToApply)
{
timeStepNames = m_caseToApply->timeStepStrings();
}
for (int i = 0; i < timeStepNames.size(); i++)
{
options.push_back(caf::PdmOptionItemInfo(timeStepNames[i], i));
}
}
return options;
}
@@ -165,12 +201,15 @@ void RicExportLgrUi::fieldChangedByUi(const caf::PdmFieldHandle* changedField, c
void RicExportLgrUi::defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering)
{
uiOrdering.add(&m_caseToApply);
uiOrdering.add(&m_timeStep);
uiOrdering.add(&m_exportFolder);
caf::PdmUiGroup* gridRefinement = uiOrdering.addNewGroup("Grid Refinement");
gridRefinement->add(&m_cellCountI);
gridRefinement->add(&m_cellCountJ);
gridRefinement->add(&m_cellCountK);
uiOrdering.skipRemainingFields(true);
}
//--------------------------------------------------------------------------------------------------

View File

@@ -44,10 +44,12 @@ public:
RicExportLgrUi();
void setCase(RimEclipseCase* rimCase);
void setTimeStep(int timeStep);
caf::VecIjk lgrCellCount() const;
QString exportFolder() const;
RimEclipseCase* caseToApply() const;
int timeStep() const;
bool singleLgrSplit() const;
void setExportFolder(const QString& folder);
@@ -64,6 +66,7 @@ private:
private:
caf::PdmField<QString> m_exportFolder;
caf::PdmPtrField<RimEclipseCase*> m_caseToApply;
caf::PdmField<int> m_timeStep;
caf::PdmField<int> m_cellCountI;
caf::PdmField<int> m_cellCountJ;