diff --git a/ApplicationCode/Commands/RicNewEllipseFractureTemplateFeature.cpp b/ApplicationCode/Commands/RicNewEllipseFractureTemplateFeature.cpp
index 7442981cfe..094c4c1039 100644
--- a/ApplicationCode/Commands/RicNewEllipseFractureTemplateFeature.cpp
+++ b/ApplicationCode/Commands/RicNewEllipseFractureTemplateFeature.cpp
@@ -55,6 +55,7 @@ void RicNewEllipseFractureTemplateFeature::onActionTriggered(bool isChecked)
fracDefColl->fractureDefinitions.push_back(fractureDef);
fractureDef->name = "Ellipse Fracture Template";
fractureDef->fractureTemplateUnit = fracDefColl->defaultUnitsForFracTemplates();
+ fractureDef->setDefaultWellDiameterFromUnit();
fracDefColl->updateConnectedEditors();
RiuMainWindow::instance()->selectAsCurrentItem(fractureDef);
diff --git a/ApplicationCode/Commands/RicNewStimPlanFractureTemplateFeature.cpp b/ApplicationCode/Commands/RicNewStimPlanFractureTemplateFeature.cpp
index 861a2c5ab2..440ce22623 100644
--- a/ApplicationCode/Commands/RicNewStimPlanFractureTemplateFeature.cpp
+++ b/ApplicationCode/Commands/RicNewStimPlanFractureTemplateFeature.cpp
@@ -64,7 +64,8 @@ void RicNewStimPlanFractureTemplateFeature::onActionTriggered(bool isChecked)
fractureDef->setFileName(fileName);
fractureDef->loadDataAndUpdate();
fractureDef->setDefaultsBasedOnXMLfile();
-
+ fractureDef->setDefaultWellDiameterFromUnit();
+
fracDefColl->updateConnectedEditors();
RiuMainWindow::instance()->selectAsCurrentItem(fractureDef);
}
diff --git a/ApplicationCode/ProjectDataModel/Completions/RimEllipseFractureTemplate.cpp b/ApplicationCode/ProjectDataModel/Completions/RimEllipseFractureTemplate.cpp
index e9b5586f62..a0787c4dd7 100644
--- a/ApplicationCode/ProjectDataModel/Completions/RimEllipseFractureTemplate.cpp
+++ b/ApplicationCode/ProjectDataModel/Completions/RimEllipseFractureTemplate.cpp
@@ -170,16 +170,15 @@ void RimEllipseFractureTemplate::changeUnits()
halfLength = RimDefines::meterToFeet(halfLength);
height = RimDefines::meterToFeet(height);
width = RimDefines::meterToInch(width);
- //perforationLength = RimDefines::meterToFeet(perforationLength);
+ wellDiameter = RimDefines::meterToInch(wellDiameter);
fractureTemplateUnit = RimDefines::UNITS_FIELD;
- //TODO: Darcy unit?
}
else if (fractureTemplateUnit == RimDefines::UNITS_FIELD)
{
halfLength = RimDefines::feetToMeter(halfLength);
height = RimDefines::feetToMeter(height);
width = RimDefines::inchToMeter(width);
- //perforationLength = RimDefines::feetToMeter(perforationLength);
+ wellDiameter = RimDefines::inchToMeter(wellDiameter);
fractureTemplateUnit = RimDefines::UNITS_METRIC;
}
@@ -277,6 +276,7 @@ void RimEllipseFractureTemplate::setupFractureGridCells()
}
+
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@@ -297,14 +297,14 @@ void RimEllipseFractureTemplate::defineUiOrdering(QString uiConfigName, caf::Pdm
halfLength.uiCapability()->setUiName("Halflenght Xf [m]");
height.uiCapability()->setUiName("Height [m]");
width.uiCapability()->setUiName("Width [m]");
- //perforationLength.uiCapability()->setUiName("Perforation Length [m]");
+ wellDiameter.uiCapability()->setUiName("Well Diameter [m]");
}
else if (fractureTemplateUnit == RimDefines::UNITS_FIELD)
{
halfLength.uiCapability()->setUiName("Halflenght Xf [Ft]");
height.uiCapability()->setUiName("Height [Ft]");
width.uiCapability()->setUiName("Width [inches]");
- //perforationLength.uiCapability()->setUiName("Perforation Length [Ft]");
+ wellDiameter.uiCapability()->setUiName("Well Diameter [inches]");
}
@@ -326,7 +326,7 @@ void RimEllipseFractureTemplate::defineUiOrdering(QString uiConfigName, caf::Pdm
propertyGroup->add(&skinFactor);
propertyGroup->add(&perforationLength);
propertyGroup->add(&perforationEfficiency);
- propertyGroup->add(&wellRadius);
+ propertyGroup->add(&wellDiameter);
uiOrdering.add(&fractureTemplateUnit);
uiOrdering.skipRemainingFields(true);
diff --git a/ApplicationCode/ProjectDataModel/Completions/RimFracture.cpp b/ApplicationCode/ProjectDataModel/Completions/RimFracture.cpp
index f1091689bd..c6610139a1 100644
--- a/ApplicationCode/ProjectDataModel/Completions/RimFracture.cpp
+++ b/ApplicationCode/ProjectDataModel/Completions/RimFracture.cpp
@@ -86,7 +86,7 @@ RimFracture::RimFracture(void)
CAF_PDM_InitField(&perforationLength, "PerforationLength", 0.0, "Perforation Length", "", "", "");
CAF_PDM_InitField(&perforationEfficiency, "perforationEfficiency", 1.0, "perforation Efficiency", "", "", "");
perforationEfficiency.uiCapability()->setUiEditorTypeName(caf::PdmUiDoubleSliderEditor::uiEditorTypeName());
- CAF_PDM_InitField(&wellRadius, "wellRadius", 0.0, "Well Radius at Fracture", "", "", "");
+ CAF_PDM_InitField(&wellDiameter, "wellDiameter", 0.216, "Well Diameter at Fracture", "", "", "");
CAF_PDM_InitField(&dip, "Dip", 0.0, "Dip", "", "", "");
CAF_PDM_InitField(&tilt, "Tilt", 0.0, "Tilt", "", "", "");
CAF_PDM_InitField(&showPolygonFractureOutline, "showPolygonFractureOutline", true, "Show Polygon Outline", "", "", "");
@@ -161,6 +161,21 @@ std::vector RimFracture::getPotentiallyFracturedCells(const RigMainGrid*
//--------------------------------------------------------------------------------------------------
void RimFracture::fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue)
{
+
+ if (changedField == &fractureUnit)
+ {
+ if (fractureUnit == RimDefines::UNITS_METRIC)
+ {
+ wellDiameter = RimDefines::inchToMeter(wellDiameter);
+ }
+ else if (fractureUnit == RimDefines::UNITS_FIELD)
+ {
+ wellDiameter = RimDefines::meterToInch(wellDiameter);
+ }
+ this->updateConnectedEditors();
+ }
+
+
if (changedField == &m_fractureTemplate)
{
//perforationLength = m_fractureTemplate->perforationLength();
@@ -242,6 +257,22 @@ void RimFracture::computeGeometry()
m_recomputeGeometry = false;
}
+//--------------------------------------------------------------------------------------------------
+///
+//--------------------------------------------------------------------------------------------------
+double RimFracture::wellRadius() const
+{
+ if (fractureUnit == RimDefines::UNITS_METRIC)
+ {
+ return wellDiameter / 2;
+ }
+ else if (fractureUnit == RimDefines::UNITS_FIELD)
+ {
+ return RimDefines::inchToFeet(wellDiameter / 2);
+ }
+ return cvf::UNDEFINED_DOUBLE;
+}
+
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@@ -365,6 +396,7 @@ QList RimFracture::calculateValueOptions(const caf::PdmF
//--------------------------------------------------------------------------------------------------
void RimFracture::defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering)
{
+
updateFieldVisibility();
}
@@ -373,6 +405,16 @@ void RimFracture::defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiO
//--------------------------------------------------------------------------------------------------
void RimFracture::updateFieldVisibility()
{
+
+ if (fractureUnit == RimDefines::UNITS_METRIC)
+ {
+ wellDiameter.uiCapability()->setUiName("Well Diameter [m]");
+ }
+ else if (fractureUnit == RimDefines::UNITS_FIELD)
+ {
+ wellDiameter.uiCapability()->setUiName("Well Diameter [inches]");
+ }
+
if (attachedFractureDefinition())
{
if (attachedFractureDefinition()->orientation == RimFractureTemplate::ALONG_WELL_PATH
diff --git a/ApplicationCode/ProjectDataModel/Completions/RimFracture.h b/ApplicationCode/ProjectDataModel/Completions/RimFracture.h
index 946e17cd4f..5a4a50c63d 100644
--- a/ApplicationCode/ProjectDataModel/Completions/RimFracture.h
+++ b/ApplicationCode/ProjectDataModel/Completions/RimFracture.h
@@ -57,7 +57,7 @@ public:
caf::PdmField azimuth;
caf::PdmField perforationLength;
caf::PdmField perforationEfficiency;
- caf::PdmField wellRadius;
+ caf::PdmField wellDiameter;
caf::PdmField dip;
caf::PdmField tilt;
@@ -67,7 +67,7 @@ public:
caf::PdmField< caf::AppEnum< RimDefines::UnitSystem > > fractureUnit;
-
+ double wellRadius() const;
cvf::Vec3d anchorPosition() const ;
void setAnchorPosition(const cvf::Vec3d& pos);
diff --git a/ApplicationCode/ProjectDataModel/Completions/RimFractureTemplate.cpp b/ApplicationCode/ProjectDataModel/Completions/RimFractureTemplate.cpp
index 2ed69a8dde..9616ff7bd7 100644
--- a/ApplicationCode/ProjectDataModel/Completions/RimFractureTemplate.cpp
+++ b/ApplicationCode/ProjectDataModel/Completions/RimFractureTemplate.cpp
@@ -75,7 +75,7 @@ RimFractureTemplate::RimFractureTemplate(void)
CAF_PDM_InitField(&perforationLength, "PerforationLength", 0.0, "Perforation Length", "", "", "");
CAF_PDM_InitField(&perforationEfficiency, "perforationEfficiency", 1.0, "perforation Efficiency", "", "", "");
perforationEfficiency.uiCapability()->setUiEditorTypeName(caf::PdmUiDoubleSliderEditor::uiEditorTypeName());
- CAF_PDM_InitField(&wellRadius, "wellRadius", 0.0, "Well Radius at Fracture", "", "", "");
+ CAF_PDM_InitField(&wellDiameter, "wellDiameter", 0.216, "Well Diameter at Fracture", "", "", "");
CAF_PDM_InitField(&fractureConductivity, "FractureCondictivity", caf::AppEnum(INFINITE_CONDUCTIVITY), "Conductivity in Fracture", "", "", "");
@@ -88,7 +88,6 @@ RimFractureTemplate::~RimFractureTemplate()
{
}
-
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@@ -136,7 +135,7 @@ void RimFractureTemplate::fieldChangedByUi(const caf::PdmFieldHandle* changedFie
}
}
- if (changedField == &perforationLength || changedField == &perforationEfficiency || changedField == &wellRadius)
+ if (changedField == &perforationLength || changedField == &perforationEfficiency || changedField == &wellDiameter)
{
RimProject* proj;
this->firstAncestorOrThisOfType(proj);
@@ -156,9 +155,9 @@ void RimFractureTemplate::fieldChangedByUi(const caf::PdmFieldHandle* changedFie
{
fracture->perforationEfficiency = perforationEfficiency;
}
- if (changedField == &wellRadius && (abs(oldValue.toDouble() - fracture->wellRadius()) < 1e-5))
+ if (changedField == &wellDiameter && (abs(oldValue.toDouble() - fracture->wellDiameter()) < 1e-5))
{
- fracture->wellRadius = wellRadius;
+ fracture->wellDiameter = wellDiameter;
}
}
}
@@ -209,3 +208,19 @@ void RimFractureTemplate::defineEditorAttribute(const caf::PdmFieldHandle* field
}
}
}
+
+
+//--------------------------------------------------------------------------------------------------
+///
+//--------------------------------------------------------------------------------------------------
+void RimFractureTemplate::setDefaultWellDiameterFromUnit()
+{
+ if (fractureTemplateUnit == RimDefines::UNITS_FIELD)
+ {
+ wellDiameter = 8.5;
+ }
+ else if (fractureTemplateUnit == RimDefines::UNITS_METRIC)
+ {
+ wellDiameter = 0.216;
+ }
+}
\ No newline at end of file
diff --git a/ApplicationCode/ProjectDataModel/Completions/RimFractureTemplate.h b/ApplicationCode/ProjectDataModel/Completions/RimFractureTemplate.h
index f34471e340..892757fbad 100644
--- a/ApplicationCode/ProjectDataModel/Completions/RimFractureTemplate.h
+++ b/ApplicationCode/ProjectDataModel/Completions/RimFractureTemplate.h
@@ -52,7 +52,7 @@ public:
caf::PdmField perforationLength;
caf::PdmField perforationEfficiency;
- caf::PdmField wellRadius;
+ caf::PdmField wellDiameter;
enum FracOrientationEnum
{
@@ -71,6 +71,8 @@ public:
caf::PdmField< caf::AppEnum< RimDefines::UnitSystem > > fractureTemplateUnit;
+ void setDefaultWellDiameterFromUnit();
+
virtual caf::PdmFieldHandle* userDescriptionField() override;
virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue) override;
diff --git a/ApplicationCode/ProjectDataModel/Completions/RimSimWellFracture.cpp b/ApplicationCode/ProjectDataModel/Completions/RimSimWellFracture.cpp
index 8318884d75..5bab85d125 100644
--- a/ApplicationCode/ProjectDataModel/Completions/RimSimWellFracture.cpp
+++ b/ApplicationCode/ProjectDataModel/Completions/RimSimWellFracture.cpp
@@ -200,7 +200,7 @@ void RimSimWellFracture::defineUiOrdering(QString uiConfigName, caf::PdmUiOrderi
propertyGroup->add(&stimPlanTimeIndexToPlot);
propertyGroup->add(&perforationLength);
propertyGroup->add(&perforationEfficiency);
- propertyGroup->add(&wellRadius);
+ propertyGroup->add(&wellDiameter);
caf::PdmUiGroup* fractureCenterGroup = uiOrdering.addNewGroup("Fracture Center Info");
fractureCenterGroup->add(&m_uiAnchorPosition);
diff --git a/ApplicationCode/ProjectDataModel/Completions/RimStimPlanFractureTemplate.cpp b/ApplicationCode/ProjectDataModel/Completions/RimStimPlanFractureTemplate.cpp
index 3a2cfe1c1d..88c8473916 100644
--- a/ApplicationCode/ProjectDataModel/Completions/RimStimPlanFractureTemplate.cpp
+++ b/ApplicationCode/ProjectDataModel/Completions/RimStimPlanFractureTemplate.cpp
@@ -1097,7 +1097,7 @@ void RimStimPlanFractureTemplate::defineUiOrdering(QString uiConfigName, caf::Pd
propertyGroup->add(&skinFactor);
propertyGroup->add(&perforationLength);
propertyGroup->add(&perforationEfficiency);
- propertyGroup->add(&wellRadius);
+ propertyGroup->add(&wellDiameter);
caf::PdmUiGroup* polygonGroup = uiOrdering.addNewGroup("Fracture Polygon Basis");
polygonGroup->add(¶meterForPolygon);
diff --git a/ApplicationCode/ProjectDataModel/Completions/RimWellPathFracture.cpp b/ApplicationCode/ProjectDataModel/Completions/RimWellPathFracture.cpp
index a25afb7add..30835e1424 100644
--- a/ApplicationCode/ProjectDataModel/Completions/RimWellPathFracture.cpp
+++ b/ApplicationCode/ProjectDataModel/Completions/RimWellPathFracture.cpp
@@ -173,7 +173,7 @@ void RimWellPathFracture::defineUiOrdering(QString uiConfigName, caf::PdmUiOrder
propertyGroup->add(&stimPlanTimeIndexToPlot);
propertyGroup->add(&perforationLength);
propertyGroup->add(&perforationEfficiency);
- propertyGroup->add(&wellRadius);
+ propertyGroup->add(&wellDiameter);
caf::PdmUiGroup* fractureCenterGroup = uiOrdering.addNewGroup("Fracture Center Info");
fractureCenterGroup->add(&m_uiAnchorPosition);