#1553 Changing from wellRadius to wellDiameter for fractures and templates, and adding unit (m or inch) and conversion. wellRadius() still returns radius, in m or ft

This commit is contained in:
astridkbjorke
2017-06-08 09:15:50 +02:00
parent 454e2e1559
commit a80660d756
10 changed files with 80 additions and 19 deletions

View File

@@ -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);

View File

@@ -64,7 +64,8 @@ void RicNewStimPlanFractureTemplateFeature::onActionTriggered(bool isChecked)
fractureDef->setFileName(fileName);
fractureDef->loadDataAndUpdate();
fractureDef->setDefaultsBasedOnXMLfile();
fractureDef->setDefaultWellDiameterFromUnit();
fracDefColl->updateConnectedEditors();
RiuMainWindow::instance()->selectAsCurrentItem(fractureDef);
}

View File

@@ -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 X<sub>f</sub> [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 X<sub>f</sub> [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);

View File

@@ -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<size_t> 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<caf::PdmOptionItemInfo> 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

View File

@@ -57,7 +57,7 @@ public:
caf::PdmField<double> azimuth;
caf::PdmField<double> perforationLength;
caf::PdmField<double> perforationEfficiency;
caf::PdmField<double> wellRadius;
caf::PdmField<double> wellDiameter;
caf::PdmField<double> dip;
caf::PdmField<double> 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);

View File

@@ -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<FracConductivityEnum>(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;
}
}

View File

@@ -52,7 +52,7 @@ public:
caf::PdmField<double> perforationLength;
caf::PdmField<double> perforationEfficiency;
caf::PdmField<double> wellRadius;
caf::PdmField<double> 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;

View File

@@ -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);

View File

@@ -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(&parameterForPolygon);

View File

@@ -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);