diff --git a/ApplicationCode/ProjectDataModel/Completions/RimEllipseFractureTemplate.cpp b/ApplicationCode/ProjectDataModel/Completions/RimEllipseFractureTemplate.cpp index 2472a0a7ea..0dbb68d214 100644 --- a/ApplicationCode/ProjectDataModel/Completions/RimEllipseFractureTemplate.cpp +++ b/ApplicationCode/ProjectDataModel/Completions/RimEllipseFractureTemplate.cpp @@ -350,7 +350,6 @@ std::vector> RimEllipseFractureTemplate::uiResultNam //-------------------------------------------------------------------------------------------------- void RimEllipseFractureTemplate::defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering) { - RimFractureTemplate::defineUiOrdering(uiConfigName, uiOrdering); if (fractureTemplateUnit() == RiaEclipseUnitTools::UNITS_METRIC) { @@ -367,7 +366,6 @@ void RimEllipseFractureTemplate::defineUiOrdering(QString uiConfigName, caf::Pdm m_wellDiameter.uiCapability()->setUiName("Well Diameter [inches]"); } - if (conductivityType() == FINITE_CONDUCTIVITY) { m_permeability.uiCapability()->setUiHidden(false); @@ -378,7 +376,6 @@ void RimEllipseFractureTemplate::defineUiOrdering(QString uiConfigName, caf::Pdm m_permeability.uiCapability()->setUiHidden(true); m_width.uiCapability()->setUiHidden(true); } - uiOrdering.add(&m_name); @@ -400,7 +397,6 @@ void RimEllipseFractureTemplate::defineUiOrdering(QString uiConfigName, caf::Pdm propertyGroup->add(&m_perforationEfficiency); propertyGroup->add(&m_wellDiameter); - uiOrdering.add(&m_fractureTemplateUnit); - uiOrdering.skipRemainingFields(true); + RimFractureTemplate::defineUiOrdering(uiConfigName, uiOrdering); } diff --git a/ApplicationCode/ProjectDataModel/Completions/RimFractureTemplate.cpp b/ApplicationCode/ProjectDataModel/Completions/RimFractureTemplate.cpp index 86e17ddc55..bc907c7146 100644 --- a/ApplicationCode/ProjectDataModel/Completions/RimFractureTemplate.cpp +++ b/ApplicationCode/ProjectDataModel/Completions/RimFractureTemplate.cpp @@ -55,6 +55,9 @@ namespace caf } +// TODO Move to cafPdmObject.h +#define CAF_PDM_InitField_Basic(field, keyword, default, uiName) CAF_PDM_InitField(field, keyword, default, uiName, "", "", "") + CAF_PDM_XML_ABSTRACT_SOURCE_INIT(RimFractureTemplate, "RimFractureTemplate"); @@ -84,6 +87,14 @@ RimFractureTemplate::RimFractureTemplate() m_fractureContainment = new RimFractureContainment(); m_fractureContainment.uiCapability()->setUiTreeHidden(true); m_fractureContainment.uiCapability()->setUiTreeChildrenHidden(true); + + // Non-Darcy Flow options + CAF_PDM_InitField_Basic(&m_useNonDarcyFlow, "UseNonDarcyFlow", false, "Use Non-Darcy Flow"); + CAF_PDM_InitField_Basic(&m_fractureWidth, "FractureWidth", 0.0, "Fracture Width"); + CAF_PDM_InitField_Basic(&m_inertialCoefficient, "InertialCoefficient", 0.0, "Inertial Coefficient (beta)"); + CAF_PDM_InitField_Basic(&m_effectivePermeability, "EffectivePermeability",0.0, "Effective Permeability"); + CAF_PDM_InitField_Basic(&m_specificGasGravity, "SpecificGasGravity", 0.0, "Specific Gas Gravity"); + CAF_PDM_InitField_Basic(&m_gasViscosity, "GasViscosity", 0.0, "Gas Viscosity"); } //-------------------------------------------------------------------------------------------------- @@ -225,7 +236,42 @@ void RimFractureTemplate::fieldChangedByUi(const caf::PdmFieldHandle* changedFie //-------------------------------------------------------------------------------------------------- void RimFractureTemplate::defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering) { + prepareFieldsForUiDisplay(); + auto group = uiOrdering.addNewGroup("Non-Darcy Flow"); + group->setCollapsedByDefault(true); + group->add(&m_useNonDarcyFlow); + group->add(&m_fractureWidth); + group->add(&m_inertialCoefficient); + group->add(&m_effectivePermeability); + group->add(&m_specificGasGravity); + group->add(&m_gasViscosity); + + uiOrdering.add(&m_fractureTemplateUnit); +} + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +void RimFractureTemplate::defineEditorAttribute(const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute) +{ + if (field == &m_perforationEfficiency) + { + auto myAttr = dynamic_cast(attribute); + if (myAttr) + { + myAttr->m_minimum = 0; + myAttr->m_maximum = 1.0; + } + } +} + + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +void RimFractureTemplate::prepareFieldsForUiDisplay() +{ if (m_fractureTemplateUnit == RiaEclipseUnitTools::UNITS_METRIC) { m_wellDiameter.uiCapability()->setUiName("Well Diameter [m]"); @@ -266,26 +312,24 @@ void RimFractureTemplate::defineUiOrdering(QString uiConfigName, caf::PdmUiOrder { m_wellDiameter.uiCapability()->setUiHidden(true); } - -} -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -void RimFractureTemplate::defineEditorAttribute(const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute) -{ - if (field == &m_perforationEfficiency) + // Non Darcy Flow + m_fractureWidth.uiCapability()->setUiReadOnly(!m_useNonDarcyFlow); + m_inertialCoefficient.uiCapability()->setUiReadOnly(!m_useNonDarcyFlow); + m_effectivePermeability.uiCapability()->setUiReadOnly(!m_useNonDarcyFlow); + m_specificGasGravity.uiCapability()->setUiReadOnly(!m_useNonDarcyFlow); + m_gasViscosity.uiCapability()->setUiReadOnly(!m_useNonDarcyFlow); + + if (m_orientationType == RimFractureTemplate::ALONG_WELL_PATH) { - auto myAttr = dynamic_cast(attribute); - if (myAttr) - { - myAttr->m_minimum = 0; - myAttr->m_maximum = 1.0; - } + m_fractureWidth.uiCapability()->setUiHidden(true); + } + else + { + m_fractureWidth.uiCapability()->setUiHidden(false); } } - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationCode/ProjectDataModel/Completions/RimFractureTemplate.h b/ApplicationCode/ProjectDataModel/Completions/RimFractureTemplate.h index c5e167bb56..a12b897f8b 100644 --- a/ApplicationCode/ProjectDataModel/Completions/RimFractureTemplate.h +++ b/ApplicationCode/ProjectDataModel/Completions/RimFractureTemplate.h @@ -97,6 +97,9 @@ protected: virtual void defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering) override; virtual void defineEditorAttribute(const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute) override; +private: + void prepareFieldsForUiDisplay(); + protected: caf::PdmField m_name; caf::PdmField m_fractureTemplateUnit; @@ -108,4 +111,11 @@ protected: caf::PdmField m_wellDiameter; caf::PdmField> m_conductivityType; caf::PdmChildField m_fractureContainment; + + caf::PdmField m_useNonDarcyFlow; + caf::PdmField m_fractureWidth; + caf::PdmField m_inertialCoefficient; + caf::PdmField m_effectivePermeability; + caf::PdmField m_specificGasGravity; + caf::PdmField m_gasViscosity; }; diff --git a/ApplicationCode/ProjectDataModel/Completions/RimStimPlanFractureTemplate.cpp b/ApplicationCode/ProjectDataModel/Completions/RimStimPlanFractureTemplate.cpp index 81aa9b5fb0..cea4b35538 100644 --- a/ApplicationCode/ProjectDataModel/Completions/RimStimPlanFractureTemplate.cpp +++ b/ApplicationCode/ProjectDataModel/Completions/RimStimPlanFractureTemplate.cpp @@ -629,8 +629,6 @@ std::vector RimStimPlanFractureTemplate::fractureBorderPolygon(RiaEc //-------------------------------------------------------------------------------------------------- void RimStimPlanFractureTemplate::defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering) { - RimFractureTemplate::defineUiOrdering(uiConfigName, uiOrdering); - uiOrdering.add(&m_name); caf::PdmUiGroup* fileGroup = uiOrdering.addNewGroup("Input"); @@ -653,6 +651,8 @@ void RimStimPlanFractureTemplate::defineUiOrdering(QString uiConfigName, caf::Pd propertyGroup->add(&m_perforationLength); propertyGroup->add(&m_perforationEfficiency); propertyGroup->add(&m_wellDiameter); + + RimFractureTemplate::defineUiOrdering(uiConfigName, uiOrdering); } //--------------------------------------------------------------------------------------------------