mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#2455 Non-Darcy Flow: Add fields to fracture template
This commit is contained in:
@@ -350,7 +350,6 @@ std::vector<std::pair<QString, QString>> 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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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<caf::PdmUiDoubleSliderEditorAttribute*>(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<caf::PdmUiDoubleSliderEditorAttribute*>(attribute);
|
||||
if (myAttr)
|
||||
{
|
||||
myAttr->m_minimum = 0;
|
||||
myAttr->m_maximum = 1.0;
|
||||
}
|
||||
m_fractureWidth.uiCapability()->setUiHidden(true);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_fractureWidth.uiCapability()->setUiHidden(false);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
||||
@@ -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<QString> m_name;
|
||||
caf::PdmField<RiaEclipseUnitTools::UnitSystemType> m_fractureTemplateUnit;
|
||||
@@ -108,4 +111,11 @@ protected:
|
||||
caf::PdmField<double> m_wellDiameter;
|
||||
caf::PdmField<caf::AppEnum<FracConductivityEnum>> m_conductivityType;
|
||||
caf::PdmChildField<RimFractureContainment*> m_fractureContainment;
|
||||
|
||||
caf::PdmField<bool> m_useNonDarcyFlow;
|
||||
caf::PdmField<double> m_fractureWidth;
|
||||
caf::PdmField<double> m_inertialCoefficient;
|
||||
caf::PdmField<double> m_effectivePermeability;
|
||||
caf::PdmField<double> m_specificGasGravity;
|
||||
caf::PdmField<double> m_gasViscosity;
|
||||
};
|
||||
|
||||
@@ -629,8 +629,6 @@ std::vector<cvf::Vec3f> 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);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user