#3090 Multi Fraction Creation : Default values and clear data on project close

This commit is contained in:
Magne Sjaastad 2018-08-02 15:38:35 +02:00
parent c6964f583b
commit 7bbf5aef1d
8 changed files with 99 additions and 21 deletions

View File

@ -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", "");

View File

@ -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;

View File

@ -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;
};

View File

@ -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())
{

View File

@ -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,

View File

@ -41,6 +41,14 @@ RimDialogData::RimDialogData()
m_multipleFractionsData = new RiuCreateMultipleFractionsUi();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimDialogData::clearProjectSpecificData()
{
m_multipleFractionsData->resetValues();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------

View File

@ -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;

View File

@ -201,6 +201,8 @@ void RimProject::close()
multiSnapshotDefinitions.deleteAllChildObjects();
m_dialogData->clearProjectSpecificData();
calculationCollection->deleteAllContainedObjects();
delete viewLinkerCollection->viewLinker();