#3854 Add MSW reference depth to Perforations

This commit is contained in:
Gaute Lindkvist
2018-12-18 13:43:21 +01:00
parent 7296c11bc2
commit 394c84efef
8 changed files with 179 additions and 96 deletions

View File

@@ -24,6 +24,14 @@
#include <limits>
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<>
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_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_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();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
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)
{
if (changedField == &m_refMDType)
{
m_refMD.uiCapability()->setUiHidden(m_refMDType == AUTO_REFERENCE_MD);
this->updateAllRequiredEditors();
}
if (changedField == &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_roughnessFactor);
uiOrdering.add(&m_pressureDrop);