mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#3854 Add MSW reference depth to Perforations
This commit is contained in:
parent
7296c11bc2
commit
394c84efef
@ -923,9 +923,9 @@ RicMswExportInfo
|
|||||||
SubSegmentIntersectionInfo::spiltIntersectionSegmentsToMaxLength(wellPathGeometry, intersections, maxSegmentLength);
|
SubSegmentIntersectionInfo::spiltIntersectionSegmentsToMaxLength(wellPathGeometry, intersections, maxSegmentLength);
|
||||||
|
|
||||||
double initialMD = 0.0;
|
double initialMD = 0.0;
|
||||||
if (wellPath->fractureCollection()->referenceMDType() == RimWellPathFractureCollection::MANUAL_REFERENCE_MD)
|
if (wellPath->fractureCollection()->mswParameters()->referenceMDType() == RimMswCompletionParameters::MANUAL_REFERENCE_MD)
|
||||||
{
|
{
|
||||||
initialMD = wellPath->fractureCollection()->manualReferenceMD();
|
initialMD = wellPath->fractureCollection()->mswParameters()->manualReferenceMD();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -1030,12 +1030,19 @@ RicMswExportInfo RicWellPathExportMswCompletionsImpl::generatePerforationsMswExp
|
|||||||
SubSegmentIntersectionInfo::spiltIntersectionSegmentsToMaxLength(wellPathGeometry, intersections, maxSegmentLength);
|
SubSegmentIntersectionInfo::spiltIntersectionSegmentsToMaxLength(wellPathGeometry, intersections, maxSegmentLength);
|
||||||
|
|
||||||
double initialMD = 0.0;
|
double initialMD = 0.0;
|
||||||
for (WellPathCellIntersectionInfo intersection : intersections)
|
if (wellPath->perforationIntervalCollection()->mswParameters()->referenceMDType() == RimMswCompletionParameters::MANUAL_REFERENCE_MD)
|
||||||
{
|
{
|
||||||
if (activeCellInfo->isActive(intersection.globCellIndex))
|
initialMD = wellPath->perforationIntervalCollection()->mswParameters()->manualReferenceMD();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
for (WellPathCellIntersectionInfo intersection : intersections)
|
||||||
{
|
{
|
||||||
initialMD = intersection.startMD;
|
if (activeCellInfo->isActive(intersection.globCellIndex))
|
||||||
break;
|
{
|
||||||
|
initialMD = intersection.startMD;
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -56,7 +56,7 @@ RimFishbonesCollection::RimFishbonesCollection()
|
|||||||
CAF_PDM_InitField(&m_mainBoreDiameter, "MainBoreDiameter", 0.216, "Main Bore Diameter", "", "", "");
|
CAF_PDM_InitField(&m_mainBoreDiameter, "MainBoreDiameter", 0.216, "Main Bore Diameter", "", "", "");
|
||||||
CAF_PDM_InitField(&m_skinFactor, "MainBoreSkinFactor", 0., "Main Bore Skin Factor [0..1]", "", "", "");
|
CAF_PDM_InitField(&m_skinFactor, "MainBoreSkinFactor", 0., "Main Bore Skin Factor [0..1]", "", "", "");
|
||||||
CAF_PDM_InitFieldNoDefault(&m_mswParameters, "MswParameters", "Multi Segment Well Parameters", "", "", "");
|
CAF_PDM_InitFieldNoDefault(&m_mswParameters, "MswParameters", "Multi Segment Well Parameters", "", "", "");
|
||||||
m_mswParameters = new RimMswCompletionParameters;
|
m_mswParameters = new RimMswCompletionParameters(false);
|
||||||
m_mswParameters.uiCapability()->setUiTreeHidden(true);
|
m_mswParameters.uiCapability()->setUiTreeHidden(true);
|
||||||
m_mswParameters.uiCapability()->setUiTreeChildrenHidden(true);
|
m_mswParameters.uiCapability()->setUiTreeChildrenHidden(true);
|
||||||
manuallyModifiedStartMD = false;
|
manuallyModifiedStartMD = false;
|
||||||
|
@ -24,6 +24,14 @@
|
|||||||
#include <limits>
|
#include <limits>
|
||||||
|
|
||||||
namespace caf {
|
namespace caf {
|
||||||
|
template<>
|
||||||
|
void RimMswCompletionParameters::ReferenceMDEnum::setUp()
|
||||||
|
{
|
||||||
|
addItem(RimMswCompletionParameters::AUTO_REFERENCE_MD, "GridIntersectionRefMD", "Grid Entry Point");
|
||||||
|
addItem(RimMswCompletionParameters::MANUAL_REFERENCE_MD, "ManualRefMD", "User Defined");
|
||||||
|
setDefault(RimMswCompletionParameters::AUTO_REFERENCE_MD);
|
||||||
|
}
|
||||||
|
|
||||||
template<>
|
template<>
|
||||||
void RimMswCompletionParameters::PressureDropEnum::setUp()
|
void RimMswCompletionParameters::PressureDropEnum::setUp()
|
||||||
{
|
{
|
||||||
@ -47,9 +55,20 @@ CAF_PDM_SOURCE_INIT(RimMswCompletionParameters, "RimMswCompletionParameters");
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
RimMswCompletionParameters::RimMswCompletionParameters()
|
RimMswCompletionParameters::RimMswCompletionParameters(bool enableReferenceDepth /* = true */)
|
||||||
|
: m_enableReferenceDepth(enableReferenceDepth)
|
||||||
{
|
{
|
||||||
CAF_PDM_InitObject("MSW Completion Parameters", ":/CompletionsSymbol16x16.png", "", "");
|
CAF_PDM_InitObject("MSW Completion Parameters", ":/CompletionsSymbol16x16.png", "", "");
|
||||||
|
|
||||||
|
CAF_PDM_InitFieldNoDefault(&m_refMDType, "RefMDType", "Reference MD", "", "", "");
|
||||||
|
CAF_PDM_InitField(&m_refMD, "RefMD", 0.0, "", "", "", "");
|
||||||
|
|
||||||
|
if (!m_enableReferenceDepth)
|
||||||
|
{
|
||||||
|
m_refMDType.xmlCapability()->disableIO();
|
||||||
|
m_refMD.xmlCapability()->disableIO();
|
||||||
|
}
|
||||||
|
|
||||||
CAF_PDM_InitField(&m_linerDiameter, "LinerDiameter", std::numeric_limits<double>::infinity(), "Liner Inner Diameter", "", "", "");
|
CAF_PDM_InitField(&m_linerDiameter, "LinerDiameter", std::numeric_limits<double>::infinity(), "Liner Inner Diameter", "", "", "");
|
||||||
CAF_PDM_InitField(&m_roughnessFactor, "RoughnessFactor", std::numeric_limits<double>::infinity(), "Roughness Factor", "", "", "");
|
CAF_PDM_InitField(&m_roughnessFactor, "RoughnessFactor", std::numeric_limits<double>::infinity(), "Roughness Factor", "", "", "");
|
||||||
|
|
||||||
@ -69,6 +88,26 @@ RimMswCompletionParameters::~RimMswCompletionParameters()
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
RimMswCompletionParameters::ReferenceMDType RimMswCompletionParameters::referenceMDType() const
|
||||||
|
{
|
||||||
|
return m_refMDType();
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
double RimMswCompletionParameters::manualReferenceMD() const
|
||||||
|
{
|
||||||
|
if (m_refMDType == AUTO_REFERENCE_MD)
|
||||||
|
{
|
||||||
|
return std::numeric_limits<double>::infinity();
|
||||||
|
}
|
||||||
|
return m_refMD;
|
||||||
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@ -159,6 +198,22 @@ double RimMswCompletionParameters::maxSegmentLength() const
|
|||||||
return m_enforceMaxSegmentLength ? m_maxSegmentLength : std::numeric_limits<double>::infinity();
|
return m_enforceMaxSegmentLength ? m_maxSegmentLength : std::numeric_limits<double>::infinity();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
void RimMswCompletionParameters::setReferenceMDType(ReferenceMDType refType)
|
||||||
|
{
|
||||||
|
m_refMDType = refType;
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
void RimMswCompletionParameters::setManualReferenceMD(double manualRefMD)
|
||||||
|
{
|
||||||
|
m_refMD = manualRefMD;
|
||||||
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@ -196,6 +251,12 @@ void RimMswCompletionParameters::setLengthAndDepth(LengthAndDepthType lengthAndD
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
void RimMswCompletionParameters::fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue)
|
void RimMswCompletionParameters::fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue)
|
||||||
{
|
{
|
||||||
|
if (changedField == &m_refMDType)
|
||||||
|
{
|
||||||
|
m_refMD.uiCapability()->setUiHidden(m_refMDType == AUTO_REFERENCE_MD);
|
||||||
|
this->updateAllRequiredEditors();
|
||||||
|
}
|
||||||
|
|
||||||
if (changedField == &m_enforceMaxSegmentLength)
|
if (changedField == &m_enforceMaxSegmentLength)
|
||||||
{
|
{
|
||||||
m_maxSegmentLength.uiCapability()->setUiHidden(!m_enforceMaxSegmentLength());
|
m_maxSegmentLength.uiCapability()->setUiHidden(!m_enforceMaxSegmentLength());
|
||||||
@ -226,6 +287,13 @@ void RimMswCompletionParameters::defineUiOrdering(QString uiConfigName, caf::Pdm
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (m_enableReferenceDepth)
|
||||||
|
{
|
||||||
|
uiOrdering.add(&m_refMDType);
|
||||||
|
uiOrdering.add(&m_refMD);
|
||||||
|
m_refMD.uiCapability()->setUiHidden(m_refMDType == AUTO_REFERENCE_MD);
|
||||||
|
}
|
||||||
|
|
||||||
uiOrdering.add(&m_linerDiameter);
|
uiOrdering.add(&m_linerDiameter);
|
||||||
uiOrdering.add(&m_roughnessFactor);
|
uiOrdering.add(&m_roughnessFactor);
|
||||||
uiOrdering.add(&m_pressureDrop);
|
uiOrdering.add(&m_pressureDrop);
|
||||||
|
@ -27,24 +27,32 @@ class RimMswCompletionParameters : public caf::PdmObject
|
|||||||
{
|
{
|
||||||
CAF_PDM_HEADER_INIT;
|
CAF_PDM_HEADER_INIT;
|
||||||
public:
|
public:
|
||||||
|
enum ReferenceMDType
|
||||||
|
{
|
||||||
|
AUTO_REFERENCE_MD = 0,
|
||||||
|
MANUAL_REFERENCE_MD
|
||||||
|
};
|
||||||
|
|
||||||
enum PressureDropType {
|
enum PressureDropType {
|
||||||
HYDROSTATIC,
|
HYDROSTATIC,
|
||||||
HYDROSTATIC_FRICTION,
|
HYDROSTATIC_FRICTION,
|
||||||
HYDROSTATIC_FRICTION_ACCELERATION
|
HYDROSTATIC_FRICTION_ACCELERATION
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef caf::AppEnum<PressureDropType> PressureDropEnum;
|
|
||||||
|
|
||||||
enum LengthAndDepthType {
|
enum LengthAndDepthType {
|
||||||
ABS,
|
ABS,
|
||||||
INC
|
INC
|
||||||
};
|
};
|
||||||
|
|
||||||
|
typedef caf::AppEnum<ReferenceMDType> ReferenceMDEnum;
|
||||||
|
typedef caf::AppEnum<PressureDropType> PressureDropEnum;
|
||||||
typedef caf::AppEnum<LengthAndDepthType> LengthAndDepthEnum;
|
typedef caf::AppEnum<LengthAndDepthType> LengthAndDepthEnum;
|
||||||
|
|
||||||
RimMswCompletionParameters();
|
RimMswCompletionParameters(bool enableReferenceDepth = true);
|
||||||
~RimMswCompletionParameters() override;
|
~RimMswCompletionParameters() override;
|
||||||
|
|
||||||
|
ReferenceMDType referenceMDType() const;
|
||||||
|
double manualReferenceMD() const;
|
||||||
double linerDiameter(RiaEclipseUnitTools::UnitSystem unitSystem) const;
|
double linerDiameter(RiaEclipseUnitTools::UnitSystem unitSystem) const;
|
||||||
static double defaultLinerDiameter(RiaEclipseUnitTools::UnitSystem unitSystem);
|
static double defaultLinerDiameter(RiaEclipseUnitTools::UnitSystem unitSystem);
|
||||||
double roughnessFactor(RiaEclipseUnitTools::UnitSystem unitSystem) const;
|
double roughnessFactor(RiaEclipseUnitTools::UnitSystem unitSystem) const;
|
||||||
@ -52,22 +60,27 @@ public:
|
|||||||
PressureDropEnum pressureDrop() const;
|
PressureDropEnum pressureDrop() const;
|
||||||
LengthAndDepthEnum lengthAndDepth() const;
|
LengthAndDepthEnum lengthAndDepth() const;
|
||||||
double maxSegmentLength() const;
|
double maxSegmentLength() const;
|
||||||
|
|
||||||
|
void setReferenceMDType(ReferenceMDType refType);
|
||||||
|
void setManualReferenceMD(double manualRefMD);
|
||||||
void setLinerDiameter(double diameter);
|
void setLinerDiameter(double diameter);
|
||||||
void setRoughnessFactor(double roughnessFactor);
|
void setRoughnessFactor(double roughnessFactor);
|
||||||
void setPressureDrop(PressureDropType pressureDropType);
|
void setPressureDrop(PressureDropType pressureDropType);
|
||||||
void setLengthAndDepth(LengthAndDepthType lengthAndDepthType);
|
void setLengthAndDepth(LengthAndDepthType lengthAndDepthType);
|
||||||
|
|
||||||
|
|
||||||
void setUnitSystemSpecificDefaults();
|
void setUnitSystemSpecificDefaults();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void fieldChangedByUi(const caf::PdmFieldHandle* changedField,
|
void fieldChangedByUi(const caf::PdmFieldHandle* changedField,
|
||||||
const QVariant& oldValue,
|
const QVariant& oldValue,
|
||||||
const QVariant& newValue) override;
|
const QVariant& newValue) override;
|
||||||
void defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering) override;
|
void defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering) override;
|
||||||
void initAfterRead() override;
|
void initAfterRead() override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
caf::PdmField<ReferenceMDEnum> m_refMDType;
|
||||||
|
caf::PdmField<double> m_refMD;
|
||||||
|
|
||||||
caf::PdmField<double> m_linerDiameter;
|
caf::PdmField<double> m_linerDiameter;
|
||||||
caf::PdmField<double> m_roughnessFactor;
|
caf::PdmField<double> m_roughnessFactor;
|
||||||
|
|
||||||
@ -76,4 +89,6 @@ private:
|
|||||||
|
|
||||||
caf::PdmField<bool> m_enforceMaxSegmentLength;
|
caf::PdmField<bool> m_enforceMaxSegmentLength;
|
||||||
caf::PdmField<double> m_maxSegmentLength;
|
caf::PdmField<double> m_maxSegmentLength;
|
||||||
|
|
||||||
|
bool m_enableReferenceDepth;
|
||||||
};
|
};
|
||||||
|
@ -35,6 +35,18 @@
|
|||||||
#include "Riu3DMainWindowTools.h"
|
#include "Riu3DMainWindowTools.h"
|
||||||
|
|
||||||
|
|
||||||
|
namespace caf
|
||||||
|
{
|
||||||
|
template<>
|
||||||
|
void RimPerforationCollection::ReferenceMDEnum::setUp()
|
||||||
|
{
|
||||||
|
addItem(RimPerforationCollection::AUTO_REFERENCE_MD, "GridIntersectionRefMD", "Grid Entry Point");
|
||||||
|
addItem(RimPerforationCollection::MANUAL_REFERENCE_MD, "ManualRefMD", "User Defined");
|
||||||
|
setDefault(RimPerforationCollection::AUTO_REFERENCE_MD);
|
||||||
|
}
|
||||||
|
} // namespace caf
|
||||||
|
|
||||||
|
|
||||||
CAF_PDM_SOURCE_INIT(RimPerforationCollection, "PerforationCollection");
|
CAF_PDM_SOURCE_INIT(RimPerforationCollection, "PerforationCollection");
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@ -93,35 +105,6 @@ void RimPerforationCollection::setUnitSystemSpecificDefaults()
|
|||||||
m_mswParameters->setUnitSystemSpecificDefaults();
|
m_mswParameters->setUnitSystemSpecificDefaults();
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
///
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
void RimPerforationCollection::defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering)
|
|
||||||
{
|
|
||||||
caf::PdmUiGroup* mswGroup = uiOrdering.addNewGroup("Multi Segment Well Options");
|
|
||||||
m_mswParameters->uiOrdering(uiConfigName, *mswGroup);
|
|
||||||
|
|
||||||
m_nonDarcyParameters->uiOrdering(uiConfigName, uiOrdering);
|
|
||||||
uiOrdering.skipRemainingFields(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
///
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
void RimPerforationCollection::fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue)
|
|
||||||
{
|
|
||||||
RimProject* proj;
|
|
||||||
this->firstAncestorOrThisOfTypeAsserted(proj);
|
|
||||||
if (changedField == &m_isChecked)
|
|
||||||
{
|
|
||||||
proj->reloadCompletionTypeResultsInAllViews();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
proj->scheduleCreateDisplayModelAndRedrawAllViews();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@ -203,3 +186,32 @@ std::vector<const RimPerforationInterval*> RimPerforationCollection::activePerfo
|
|||||||
return myActivePerforations;
|
return myActivePerforations;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
void RimPerforationCollection::defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering)
|
||||||
|
{
|
||||||
|
caf::PdmUiGroup* mswGroup = uiOrdering.addNewGroup("Multi Segment Well Options");
|
||||||
|
m_mswParameters->uiOrdering(uiConfigName, *mswGroup);
|
||||||
|
m_nonDarcyParameters->uiOrdering(uiConfigName, uiOrdering);
|
||||||
|
uiOrdering.skipRemainingFields(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
void RimPerforationCollection::fieldChangedByUi(const caf::PdmFieldHandle* changedField,
|
||||||
|
const QVariant& oldValue,
|
||||||
|
const QVariant& newValue)
|
||||||
|
{
|
||||||
|
RimProject* proj;
|
||||||
|
this->firstAncestorOrThisOfTypeAsserted(proj);
|
||||||
|
if (changedField == &m_isChecked)
|
||||||
|
{
|
||||||
|
proj->reloadCompletionTypeResultsInAllViews();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
proj->scheduleCreateDisplayModelAndRedrawAllViews();
|
||||||
|
}
|
||||||
|
}
|
@ -40,6 +40,13 @@ class RimPerforationCollection : public RimCheckableNamedObject
|
|||||||
CAF_PDM_HEADER_INIT;
|
CAF_PDM_HEADER_INIT;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
enum ReferenceMDType
|
||||||
|
{
|
||||||
|
AUTO_REFERENCE_MD = 0,
|
||||||
|
MANUAL_REFERENCE_MD
|
||||||
|
};
|
||||||
|
typedef caf::AppEnum<ReferenceMDType> ReferenceMDEnum;
|
||||||
|
|
||||||
RimPerforationCollection();
|
RimPerforationCollection();
|
||||||
~RimPerforationCollection() override;
|
~RimPerforationCollection() override;
|
||||||
|
|
||||||
@ -48,7 +55,7 @@ public:
|
|||||||
void setUnitSystemSpecificDefaults();
|
void setUnitSystemSpecificDefaults();
|
||||||
void appendPerforation(RimPerforationInterval* perforation);
|
void appendPerforation(RimPerforationInterval* perforation);
|
||||||
std::vector<const RimPerforationInterval*> perforations() const;
|
std::vector<const RimPerforationInterval*> perforations() const;
|
||||||
std::vector<const RimPerforationInterval*> activePerforations() const;
|
std::vector<const RimPerforationInterval*> activePerforations() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering) override;
|
void defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering) override;
|
||||||
|
@ -23,18 +23,6 @@
|
|||||||
|
|
||||||
#include "cafPdmObject.h"
|
#include "cafPdmObject.h"
|
||||||
|
|
||||||
|
|
||||||
namespace caf {
|
|
||||||
template<>
|
|
||||||
void RimWellPathFractureCollection::ReferenceMDEnum::setUp()
|
|
||||||
{
|
|
||||||
addItem(RimWellPathFractureCollection::AUTO_REFERENCE_MD, "GridIntersectionRefMD", "Grid Entry Point");
|
|
||||||
addItem(RimWellPathFractureCollection::MANUAL_REFERENCE_MD, "ManualRefMD", "User Defined");
|
|
||||||
setDefault(RimWellPathFractureCollection::AUTO_REFERENCE_MD);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
CAF_PDM_SOURCE_INIT(RimWellPathFractureCollection, "WellPathFractureCollection");
|
CAF_PDM_SOURCE_INIT(RimWellPathFractureCollection, "WellPathFractureCollection");
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@ -50,12 +38,13 @@ RimWellPathFractureCollection::RimWellPathFractureCollection(void)
|
|||||||
setName("Fractures");
|
setName("Fractures");
|
||||||
nameField()->uiCapability()->setUiHidden(true);
|
nameField()->uiCapability()->setUiHidden(true);
|
||||||
|
|
||||||
CAF_PDM_InitFieldNoDefault(&m_refMDType, "RefMDType", "Reference MD", "", "", "");
|
|
||||||
CAF_PDM_InitField(&m_refMD, "RefMD", 0.0, "", "", "", "");
|
|
||||||
CAF_PDM_InitFieldNoDefault(&m_mswParameters, "MswParameters", "Multi Segment Well Parameters", "", "", "");
|
CAF_PDM_InitFieldNoDefault(&m_mswParameters, "MswParameters", "Multi Segment Well Parameters", "", "", "");
|
||||||
m_mswParameters = new RimMswCompletionParameters;
|
m_mswParameters = new RimMswCompletionParameters;
|
||||||
m_mswParameters.uiCapability()->setUiTreeHidden(true);
|
m_mswParameters.uiCapability()->setUiTreeHidden(true);
|
||||||
m_mswParameters.uiCapability()->setUiTreeChildrenHidden(true);
|
m_mswParameters.uiCapability()->setUiTreeChildrenHidden(true);
|
||||||
|
|
||||||
|
CAF_PDM_InitField(&m_refMDType_OBSOLETE, "RefMDType", std::numeric_limits<int>::max(), "Reference MD", "", "", "");
|
||||||
|
CAF_PDM_InitField(&m_refMD_OBSOLETE, "RefMD", std::numeric_limits<double>::infinity(), "", "", "", "");
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@ -97,26 +86,6 @@ void RimWellPathFractureCollection::setUnitSystemSpecificDefaults()
|
|||||||
m_mswParameters->setUnitSystemSpecificDefaults();
|
m_mswParameters->setUnitSystemSpecificDefaults();
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
///
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
RimWellPathFractureCollection::ReferenceMDType RimWellPathFractureCollection::referenceMDType() const
|
|
||||||
{
|
|
||||||
return m_refMDType();
|
|
||||||
}
|
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
///
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
double RimWellPathFractureCollection::manualReferenceMD() const
|
|
||||||
{
|
|
||||||
if (m_refMDType == AUTO_REFERENCE_MD)
|
|
||||||
{
|
|
||||||
return std::numeric_limits<double>::infinity();
|
|
||||||
}
|
|
||||||
return m_refMD;
|
|
||||||
}
|
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@ -152,12 +121,8 @@ std::vector<RimWellPathFracture*> RimWellPathFractureCollection::activeFractures
|
|||||||
void RimWellPathFractureCollection::defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering)
|
void RimWellPathFractureCollection::defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering)
|
||||||
{
|
{
|
||||||
caf::PdmUiGroup* mswGroup = uiOrdering.addNewGroup("Multi Segment Well Options");
|
caf::PdmUiGroup* mswGroup = uiOrdering.addNewGroup("Multi Segment Well Options");
|
||||||
|
|
||||||
mswGroup->add(&m_refMDType);
|
|
||||||
mswGroup->add(&m_refMD);
|
|
||||||
m_refMD.uiCapability()->setUiHidden(m_refMDType == AUTO_REFERENCE_MD);
|
|
||||||
|
|
||||||
m_mswParameters->uiOrdering(uiConfigName, *mswGroup);
|
m_mswParameters->uiOrdering(uiConfigName, *mswGroup);
|
||||||
|
uiOrdering.skipRemainingFields(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@ -176,3 +141,19 @@ void RimWellPathFractureCollection::fieldChangedByUi(const caf::PdmFieldHandle*
|
|||||||
proj->scheduleCreateDisplayModelAndRedrawAllViews();
|
proj->scheduleCreateDisplayModelAndRedrawAllViews();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
void RimWellPathFractureCollection::initAfterRead()
|
||||||
|
{
|
||||||
|
if (m_refMDType_OBSOLETE() != std::numeric_limits<int>::max())
|
||||||
|
{
|
||||||
|
m_mswParameters->setReferenceMDType((RimMswCompletionParameters::ReferenceMDType) m_refMDType_OBSOLETE());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (m_refMD_OBSOLETE() != std::numeric_limits<double>::infinity())
|
||||||
|
{
|
||||||
|
m_mswParameters->setManualReferenceMD(m_refMD_OBSOLETE());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -38,14 +38,6 @@ class RimWellPathFractureCollection : public RimCheckableNamedObject
|
|||||||
{
|
{
|
||||||
CAF_PDM_HEADER_INIT;
|
CAF_PDM_HEADER_INIT;
|
||||||
public:
|
public:
|
||||||
enum ReferenceMDType
|
|
||||||
{
|
|
||||||
AUTO_REFERENCE_MD = 0,
|
|
||||||
MANUAL_REFERENCE_MD
|
|
||||||
};
|
|
||||||
|
|
||||||
typedef caf::AppEnum<ReferenceMDType> ReferenceMDEnum;
|
|
||||||
|
|
||||||
RimWellPathFractureCollection(void);
|
RimWellPathFractureCollection(void);
|
||||||
~RimWellPathFractureCollection(void) override;
|
~RimWellPathFractureCollection(void) override;
|
||||||
|
|
||||||
@ -53,8 +45,6 @@ public:
|
|||||||
void addFracture(RimWellPathFracture* fracture);
|
void addFracture(RimWellPathFracture* fracture);
|
||||||
void deleteFractures();
|
void deleteFractures();
|
||||||
void setUnitSystemSpecificDefaults();
|
void setUnitSystemSpecificDefaults();
|
||||||
ReferenceMDType referenceMDType() const;
|
|
||||||
double manualReferenceMD() const;
|
|
||||||
|
|
||||||
std::vector<RimWellPathFracture*> allFractures() const;
|
std::vector<RimWellPathFracture*> allFractures() const;
|
||||||
std::vector<RimWellPathFracture*> activeFractures() const;
|
std::vector<RimWellPathFracture*> activeFractures() const;
|
||||||
@ -62,10 +52,13 @@ public:
|
|||||||
private:
|
private:
|
||||||
void defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering) override;
|
void defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering) override;
|
||||||
void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue) override;
|
void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue) override;
|
||||||
|
void initAfterRead() override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
caf::PdmChildArrayField<RimWellPathFracture*> m_fractures;
|
caf::PdmChildArrayField<RimWellPathFracture*> m_fractures;
|
||||||
caf::PdmField<ReferenceMDEnum> m_refMDType;
|
|
||||||
caf::PdmField<double> m_refMD;
|
|
||||||
caf::PdmChildField<RimMswCompletionParameters*> m_mswParameters;
|
caf::PdmChildField<RimMswCompletionParameters*> m_mswParameters;
|
||||||
|
|
||||||
|
caf::PdmField<int> m_refMDType_OBSOLETE;
|
||||||
|
caf::PdmField<double> m_refMD_OBSOLETE;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user