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 "RigActiveCellInfo.h"
|
||||
#include "RigEclipseCaseData.h"
|
||||
|
||||
#include "RimDialogData.h"
|
||||
#include "RimEclipseCase.h"
|
||||
#include "RimFractureTemplate.h"
|
||||
#include "RimProject.h"
|
||||
#include "RimWellPath.h"
|
||||
@ -35,6 +39,7 @@
|
||||
#include "cafPdmUiPropertyViewDialog.h"
|
||||
#include "cafSelectionManagerTools.h"
|
||||
|
||||
#include "RiaPorosityModel.h"
|
||||
#include <QAction>
|
||||
#include <QPushButton>
|
||||
|
||||
@ -138,6 +143,47 @@ void RicCreateMultipleFracturesFeature::onActionTriggered(bool isChecked)
|
||||
{
|
||||
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(
|
||||
Riu3DMainWindowTools::mainWindowWidget(), multipleFractionsUi, "Create Multiple Fractions", "");
|
||||
|
||||
|
@ -33,8 +33,8 @@ CAF_PDM_SOURCE_INIT(RicCreateMultipleFracturesOptionItemUi, "RiuMultipleFraction
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RicCreateMultipleFracturesOptionItemUi::RicCreateMultipleFracturesOptionItemUi()
|
||||
{
|
||||
CAF_PDM_InitField(&m_topK, "TopKLayer", 0, "Top K Layer", "", "", "");
|
||||
CAF_PDM_InitField(&m_baseK, "BaseKLayer", 0, "Base K Layer", "", "", "");
|
||||
CAF_PDM_InitField(&m_topKOneBased, "TopKLayer", 1, "Top K Layer", "", "", "");
|
||||
CAF_PDM_InitField(&m_baseKOneBased, "BaseKLayer", 1, "Base K Layer", "", "", "");
|
||||
CAF_PDM_InitFieldNoDefault(&m_fractureTemplate, "Template", "Template", "", "", "");
|
||||
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;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
int RicCreateMultipleFracturesOptionItemUi::baseK() const
|
||||
{
|
||||
return m_baseK;
|
||||
m_topKOneBased = topKOneBased;
|
||||
m_baseKOneBased = baseKOneBased;
|
||||
m_fractureTemplate = fractureTemplate;
|
||||
m_minSpacing = minimumSpacing;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -76,7 +74,7 @@ double RicCreateMultipleFracturesOptionItemUi::minimumSpacing() 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.second) return true;
|
||||
|
@ -34,12 +34,12 @@ class RicCreateMultipleFracturesOptionItemUi : public caf::PdmObject
|
||||
public:
|
||||
RicCreateMultipleFracturesOptionItemUi();
|
||||
|
||||
int topK() const;
|
||||
int baseK() const;
|
||||
void setValues(int topKOneBased, int baseKOneBased, RimFractureTemplate* fractureTemplate, double minimumSpacing);
|
||||
|
||||
RimFractureTemplate* fractureTemplate() const;
|
||||
double minimumSpacing() const;
|
||||
|
||||
bool isKLayerContained(int k) const;
|
||||
bool isKLayerContained(int k) const;
|
||||
|
||||
private:
|
||||
virtual void
|
||||
@ -49,8 +49,8 @@ private:
|
||||
bool* useOptionsOnly) override;
|
||||
|
||||
private:
|
||||
caf::PdmField<int> m_topK;
|
||||
caf::PdmField<int> m_baseK;
|
||||
caf::PdmField<int> m_topKOneBased; // Eclipse uses 1-based indexing
|
||||
caf::PdmField<int> m_baseKOneBased; // Eclipse uses 1-based indexing
|
||||
caf::PdmPtrField<RimFractureTemplate*> m_fractureTemplate;
|
||||
caf::PdmField<double> m_minSpacing;
|
||||
};
|
||||
|
@ -50,8 +50,6 @@ RiuCreateMultipleFractionsUi::RiuCreateMultipleFractionsUi()
|
||||
|
||||
CAF_PDM_InitFieldNoDefault(&m_options, "Options", "Options", "", "", "");
|
||||
m_options.uiCapability()->setUiEditorTypeName(caf::PdmUiTableViewEditor::uiEditorTypeName());
|
||||
|
||||
m_options.push_back(new RicCreateMultipleFracturesOptionItemUi);
|
||||
m_options.uiCapability()->setUiLabelPosition(caf::PdmUiItemInfo::TOP);
|
||||
m_options.uiCapability()->setCustomContextMenuEnabled(true);
|
||||
|
||||
@ -61,6 +59,25 @@ RiuCreateMultipleFractionsUi::RiuCreateMultipleFractionsUi()
|
||||
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;
|
||||
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())
|
||||
{
|
||||
|
@ -56,6 +56,9 @@ class RiuCreateMultipleFractionsUi : public caf::PdmObject
|
||||
public:
|
||||
RiuCreateMultipleFractionsUi();
|
||||
|
||||
void setValues(RimEclipseCase* eclipseCase, double minimumDistanceFromWellTip, int maxFracturesPerWell);
|
||||
void resetValues();
|
||||
|
||||
std::vector<RicCreateMultipleFracturesOptionItemUi*> options() const;
|
||||
|
||||
void insertOptionItem(RicCreateMultipleFracturesOptionItemUi* insertBeforeThisObject,
|
||||
|
@ -41,6 +41,14 @@ RimDialogData::RimDialogData()
|
||||
m_multipleFractionsData = new RiuCreateMultipleFractionsUi();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimDialogData::clearProjectSpecificData()
|
||||
{
|
||||
m_multipleFractionsData->resetValues();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
@ -42,6 +42,8 @@ class RimDialogData : public caf::PdmObject
|
||||
public:
|
||||
RimDialogData();
|
||||
|
||||
void clearProjectSpecificData();
|
||||
|
||||
RicExportCarfinUi* exportCarfin() const;
|
||||
QString exportCarfinDataAsString() const;
|
||||
void setExportCarfinDataFromString(const QString& data);
|
||||
@ -50,6 +52,7 @@ public:
|
||||
|
||||
RiuCreateMultipleFractionsUi* multipleFractionsData() const;
|
||||
|
||||
|
||||
private:
|
||||
caf::PdmChildField<RicExportCarfinUi*> m_exportCarfin;
|
||||
caf::PdmChildField<RicExportCompletionDataSettingsUi*> m_exportCompletionData;
|
||||
|
@ -201,6 +201,8 @@ void RimProject::close()
|
||||
|
||||
multiSnapshotDefinitions.deleteAllChildObjects();
|
||||
|
||||
m_dialogData->clearProjectSpecificData();
|
||||
|
||||
calculationCollection->deleteAllContainedObjects();
|
||||
|
||||
delete viewLinkerCollection->viewLinker();
|
||||
|
Loading…
Reference in New Issue
Block a user