mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#3090 Multi Fraction Creation : Default values and clear data on project close
This commit is contained in:
parent
c6964f583b
commit
7bbf5aef1d
@ -23,7 +23,11 @@
|
|||||||
|
|
||||||
#include "RicCreateMultipleFracturesUi.h"
|
#include "RicCreateMultipleFracturesUi.h"
|
||||||
|
|
||||||
|
#include "RigActiveCellInfo.h"
|
||||||
|
#include "RigEclipseCaseData.h"
|
||||||
|
|
||||||
#include "RimDialogData.h"
|
#include "RimDialogData.h"
|
||||||
|
#include "RimEclipseCase.h"
|
||||||
#include "RimFractureTemplate.h"
|
#include "RimFractureTemplate.h"
|
||||||
#include "RimProject.h"
|
#include "RimProject.h"
|
||||||
#include "RimWellPath.h"
|
#include "RimWellPath.h"
|
||||||
@ -35,6 +39,7 @@
|
|||||||
#include "cafPdmUiPropertyViewDialog.h"
|
#include "cafPdmUiPropertyViewDialog.h"
|
||||||
#include "cafSelectionManagerTools.h"
|
#include "cafSelectionManagerTools.h"
|
||||||
|
|
||||||
|
#include "RiaPorosityModel.h"
|
||||||
#include <QAction>
|
#include <QAction>
|
||||||
#include <QPushButton>
|
#include <QPushButton>
|
||||||
|
|
||||||
@ -138,6 +143,47 @@ void RicCreateMultipleFracturesFeature::onActionTriggered(bool isChecked)
|
|||||||
{
|
{
|
||||||
m_copyOfObject = multipleFractionsUi->writeObjectToXmlString();
|
m_copyOfObject = multipleFractionsUi->writeObjectToXmlString();
|
||||||
|
|
||||||
|
if (multipleFractionsUi->options().empty())
|
||||||
|
{
|
||||||
|
RiaApplication* app = RiaApplication::instance();
|
||||||
|
RimProject* proj = app->project();
|
||||||
|
|
||||||
|
RimEclipseCase* firstSourceCase = nullptr;
|
||||||
|
int topK = 0;
|
||||||
|
int baseK = 0;
|
||||||
|
if (!proj->eclipseCases().empty())
|
||||||
|
{
|
||||||
|
firstSourceCase = proj->eclipseCases().front();
|
||||||
|
|
||||||
|
cvf::Vec3st minIJK;
|
||||||
|
cvf::Vec3st maxIJK;
|
||||||
|
if (firstSourceCase && firstSourceCase->eclipseCaseData())
|
||||||
|
{
|
||||||
|
firstSourceCase->eclipseCaseData()->activeCellInfo(RiaDefines::MATRIX_MODEL)->IJKBoundingBox(minIJK, maxIJK);
|
||||||
|
}
|
||||||
|
|
||||||
|
topK = static_cast<int>(minIJK.z());
|
||||||
|
baseK = static_cast<int>(maxIJK.z());
|
||||||
|
|
||||||
|
double minimumDistanceFromTip = 100.0;
|
||||||
|
int maxFractureCount = 100;
|
||||||
|
multipleFractionsUi->setValues(firstSourceCase, minimumDistanceFromTip, maxFractureCount);
|
||||||
|
|
||||||
|
auto newItem = new RicCreateMultipleFracturesOptionItemUi;
|
||||||
|
|
||||||
|
RimFractureTemplate* firstFractureTemplate = nullptr;
|
||||||
|
if (!proj->allFractureTemplates().empty())
|
||||||
|
{
|
||||||
|
firstFractureTemplate = proj->allFractureTemplates().front();
|
||||||
|
}
|
||||||
|
|
||||||
|
double minimumSpacing = 300.0;
|
||||||
|
newItem->setValues(topK + 1, baseK + 1, firstFractureTemplate, minimumSpacing);
|
||||||
|
|
||||||
|
multipleFractionsUi->insertOptionItem(nullptr, newItem);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
caf::PdmUiPropertyViewDialog propertyDialog(
|
caf::PdmUiPropertyViewDialog propertyDialog(
|
||||||
Riu3DMainWindowTools::mainWindowWidget(), multipleFractionsUi, "Create Multiple Fractions", "");
|
Riu3DMainWindowTools::mainWindowWidget(), multipleFractionsUi, "Create Multiple Fractions", "");
|
||||||
|
|
||||||
|
@ -33,8 +33,8 @@ CAF_PDM_SOURCE_INIT(RicCreateMultipleFracturesOptionItemUi, "RiuMultipleFraction
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
RicCreateMultipleFracturesOptionItemUi::RicCreateMultipleFracturesOptionItemUi()
|
RicCreateMultipleFracturesOptionItemUi::RicCreateMultipleFracturesOptionItemUi()
|
||||||
{
|
{
|
||||||
CAF_PDM_InitField(&m_topK, "TopKLayer", 0, "Top K Layer", "", "", "");
|
CAF_PDM_InitField(&m_topKOneBased, "TopKLayer", 1, "Top K Layer", "", "", "");
|
||||||
CAF_PDM_InitField(&m_baseK, "BaseKLayer", 0, "Base K Layer", "", "", "");
|
CAF_PDM_InitField(&m_baseKOneBased, "BaseKLayer", 1, "Base K Layer", "", "", "");
|
||||||
CAF_PDM_InitFieldNoDefault(&m_fractureTemplate, "Template", "Template", "", "", "");
|
CAF_PDM_InitFieldNoDefault(&m_fractureTemplate, "Template", "Template", "", "", "");
|
||||||
CAF_PDM_InitField(&m_minSpacing, "MinSpacing", 300.0, "Spacing", "", "", "");
|
CAF_PDM_InitField(&m_minSpacing, "MinSpacing", 300.0, "Spacing", "", "", "");
|
||||||
}
|
}
|
||||||
@ -42,17 +42,15 @@ RicCreateMultipleFracturesOptionItemUi::RicCreateMultipleFracturesOptionItemUi()
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
int RicCreateMultipleFracturesOptionItemUi::topK() const
|
void RicCreateMultipleFracturesOptionItemUi::setValues(int topKOneBased,
|
||||||
|
int baseKOneBased,
|
||||||
|
RimFractureTemplate* fractureTemplate,
|
||||||
|
double minimumSpacing)
|
||||||
{
|
{
|
||||||
return m_topK;
|
m_topKOneBased = topKOneBased;
|
||||||
}
|
m_baseKOneBased = baseKOneBased;
|
||||||
|
m_fractureTemplate = fractureTemplate;
|
||||||
//--------------------------------------------------------------------------------------------------
|
m_minSpacing = minimumSpacing;
|
||||||
///
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
int RicCreateMultipleFracturesOptionItemUi::baseK() const
|
|
||||||
{
|
|
||||||
return m_baseK;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@ -76,7 +74,7 @@ double RicCreateMultipleFracturesOptionItemUi::minimumSpacing() const
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
bool RicCreateMultipleFracturesOptionItemUi::isKLayerContained(int k) const
|
bool RicCreateMultipleFracturesOptionItemUi::isKLayerContained(int k) const
|
||||||
{
|
{
|
||||||
auto minMax = std::minmax(m_topK, m_baseK);
|
auto minMax = std::minmax(m_topKOneBased, m_baseKOneBased);
|
||||||
|
|
||||||
if (k < minMax.first) return false;
|
if (k < minMax.first) return false;
|
||||||
if (k < minMax.second) return true;
|
if (k < minMax.second) return true;
|
||||||
|
@ -34,12 +34,12 @@ class RicCreateMultipleFracturesOptionItemUi : public caf::PdmObject
|
|||||||
public:
|
public:
|
||||||
RicCreateMultipleFracturesOptionItemUi();
|
RicCreateMultipleFracturesOptionItemUi();
|
||||||
|
|
||||||
int topK() const;
|
void setValues(int topKOneBased, int baseKOneBased, RimFractureTemplate* fractureTemplate, double minimumSpacing);
|
||||||
int baseK() const;
|
|
||||||
RimFractureTemplate* fractureTemplate() const;
|
RimFractureTemplate* fractureTemplate() const;
|
||||||
double minimumSpacing() const;
|
double minimumSpacing() const;
|
||||||
|
|
||||||
bool isKLayerContained(int k) const;
|
bool isKLayerContained(int k) const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
virtual void
|
virtual void
|
||||||
@ -49,8 +49,8 @@ private:
|
|||||||
bool* useOptionsOnly) override;
|
bool* useOptionsOnly) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
caf::PdmField<int> m_topK;
|
caf::PdmField<int> m_topKOneBased; // Eclipse uses 1-based indexing
|
||||||
caf::PdmField<int> m_baseK;
|
caf::PdmField<int> m_baseKOneBased; // Eclipse uses 1-based indexing
|
||||||
caf::PdmPtrField<RimFractureTemplate*> m_fractureTemplate;
|
caf::PdmPtrField<RimFractureTemplate*> m_fractureTemplate;
|
||||||
caf::PdmField<double> m_minSpacing;
|
caf::PdmField<double> m_minSpacing;
|
||||||
};
|
};
|
||||||
|
@ -50,8 +50,6 @@ RiuCreateMultipleFractionsUi::RiuCreateMultipleFractionsUi()
|
|||||||
|
|
||||||
CAF_PDM_InitFieldNoDefault(&m_options, "Options", "Options", "", "", "");
|
CAF_PDM_InitFieldNoDefault(&m_options, "Options", "Options", "", "", "");
|
||||||
m_options.uiCapability()->setUiEditorTypeName(caf::PdmUiTableViewEditor::uiEditorTypeName());
|
m_options.uiCapability()->setUiEditorTypeName(caf::PdmUiTableViewEditor::uiEditorTypeName());
|
||||||
|
|
||||||
m_options.push_back(new RicCreateMultipleFracturesOptionItemUi);
|
|
||||||
m_options.uiCapability()->setUiLabelPosition(caf::PdmUiItemInfo::TOP);
|
m_options.uiCapability()->setUiLabelPosition(caf::PdmUiItemInfo::TOP);
|
||||||
m_options.uiCapability()->setCustomContextMenuEnabled(true);
|
m_options.uiCapability()->setCustomContextMenuEnabled(true);
|
||||||
|
|
||||||
@ -61,6 +59,25 @@ RiuCreateMultipleFractionsUi::RiuCreateMultipleFractionsUi()
|
|||||||
m_fractureCreationSummary.uiCapability()->setUiEditorTypeName(caf::PdmUiTextEditor::uiEditorTypeName());
|
m_fractureCreationSummary.uiCapability()->setUiEditorTypeName(caf::PdmUiTextEditor::uiEditorTypeName());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
void RiuCreateMultipleFractionsUi::setValues(RimEclipseCase* eclipseCase, double minimumDistanceFromWellToe, int maxFracturesPerWell)
|
||||||
|
{
|
||||||
|
m_sourceCase = eclipseCase;
|
||||||
|
m_minDistanceFromWellTd = minimumDistanceFromWellToe;
|
||||||
|
m_maxFracturesPerWell = maxFracturesPerWell;
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
void RiuCreateMultipleFractionsUi::resetValues()
|
||||||
|
{
|
||||||
|
m_sourceCase = nullptr;
|
||||||
|
m_options.deleteAllChildObjects();
|
||||||
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@ -259,7 +276,8 @@ std::vector<LocationForNewFracture> RiuCreateMultipleFractionsUi::locationsForNe
|
|||||||
size_t k;
|
size_t k;
|
||||||
mainGrid->ijkFromCellIndex(reservoirGlobalCellIndex, &i, &j, &k);
|
mainGrid->ijkFromCellIndex(reservoirGlobalCellIndex, &i, &j, &k);
|
||||||
|
|
||||||
if (option->isKLayerContained(static_cast<int>(k)))
|
int oneBasedK = static_cast<int>(k) + 1;
|
||||||
|
if (option->isKLayerContained(oneBasedK))
|
||||||
{
|
{
|
||||||
if (option->fractureTemplate())
|
if (option->fractureTemplate())
|
||||||
{
|
{
|
||||||
|
@ -56,6 +56,9 @@ class RiuCreateMultipleFractionsUi : public caf::PdmObject
|
|||||||
public:
|
public:
|
||||||
RiuCreateMultipleFractionsUi();
|
RiuCreateMultipleFractionsUi();
|
||||||
|
|
||||||
|
void setValues(RimEclipseCase* eclipseCase, double minimumDistanceFromWellTip, int maxFracturesPerWell);
|
||||||
|
void resetValues();
|
||||||
|
|
||||||
std::vector<RicCreateMultipleFracturesOptionItemUi*> options() const;
|
std::vector<RicCreateMultipleFracturesOptionItemUi*> options() const;
|
||||||
|
|
||||||
void insertOptionItem(RicCreateMultipleFracturesOptionItemUi* insertBeforeThisObject,
|
void insertOptionItem(RicCreateMultipleFracturesOptionItemUi* insertBeforeThisObject,
|
||||||
|
@ -41,6 +41,14 @@ RimDialogData::RimDialogData()
|
|||||||
m_multipleFractionsData = new RiuCreateMultipleFractionsUi();
|
m_multipleFractionsData = new RiuCreateMultipleFractionsUi();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
void RimDialogData::clearProjectSpecificData()
|
||||||
|
{
|
||||||
|
m_multipleFractionsData->resetValues();
|
||||||
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
@ -42,6 +42,8 @@ class RimDialogData : public caf::PdmObject
|
|||||||
public:
|
public:
|
||||||
RimDialogData();
|
RimDialogData();
|
||||||
|
|
||||||
|
void clearProjectSpecificData();
|
||||||
|
|
||||||
RicExportCarfinUi* exportCarfin() const;
|
RicExportCarfinUi* exportCarfin() const;
|
||||||
QString exportCarfinDataAsString() const;
|
QString exportCarfinDataAsString() const;
|
||||||
void setExportCarfinDataFromString(const QString& data);
|
void setExportCarfinDataFromString(const QString& data);
|
||||||
@ -50,6 +52,7 @@ public:
|
|||||||
|
|
||||||
RiuCreateMultipleFractionsUi* multipleFractionsData() const;
|
RiuCreateMultipleFractionsUi* multipleFractionsData() const;
|
||||||
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
caf::PdmChildField<RicExportCarfinUi*> m_exportCarfin;
|
caf::PdmChildField<RicExportCarfinUi*> m_exportCarfin;
|
||||||
caf::PdmChildField<RicExportCompletionDataSettingsUi*> m_exportCompletionData;
|
caf::PdmChildField<RicExportCompletionDataSettingsUi*> m_exportCompletionData;
|
||||||
|
@ -201,6 +201,8 @@ void RimProject::close()
|
|||||||
|
|
||||||
multiSnapshotDefinitions.deleteAllChildObjects();
|
multiSnapshotDefinitions.deleteAllChildObjects();
|
||||||
|
|
||||||
|
m_dialogData->clearProjectSpecificData();
|
||||||
|
|
||||||
calculationCollection->deleteAllContainedObjects();
|
calculationCollection->deleteAllContainedObjects();
|
||||||
|
|
||||||
delete viewLinkerCollection->viewLinker();
|
delete viewLinkerCollection->viewLinker();
|
||||||
|
Loading…
Reference in New Issue
Block a user