#1593 Use well path unit type on fractures

This commit is contained in:
Bjørnar Grip Fjær 2017-06-20 14:46:58 +02:00
parent 05d210df93
commit d63fdf0c80
9 changed files with 54 additions and 39 deletions

View File

@ -243,7 +243,7 @@ std::vector<RigCompletionData> RicExportFractureCompletionsImpl::generateCompdat
double radialTrans = RigFractureTransmissibilityEquations::fractureCellToWellRadialTrans(wellCell.getConductivtyValue(),
wellCell.cellSizeX(),
wellCell.cellSizeZ(),
fracture->wellRadius(),
fracture->wellRadius(caseToApply->eclipseCaseData()->unitsType()),
fracTemplate->skinFactor(),
cDarcyInCorrectUnit);
@ -273,7 +273,7 @@ std::vector<RigCompletionData> RicExportFractureCompletionsImpl::generateCompdat
radialTrans = RigFractureTransmissibilityEquations::fractureCellToWellRadialTrans(fractureWellCell.getConductivtyValue(),
fractureWellCell.cellSizeX(),
fractureWellCell.cellSizeZ(),
fracture->wellRadius(),
fracture->wellRadius(caseToApply->eclipseCaseData()->unitsType()),
fracTemplate->skinFactor(),
cDarcyInCorrectUnit);
}

View File

@ -85,7 +85,7 @@ void RicNewSimWellFractureAtPosFeature::onActionTriggered(bool isChecked)
RimEclipseResultCase* eclipseCase = nullptr;
simWell->firstAncestorOrThisOfType(eclipseCase);
fracture->fractureUnit = eclipseCase->eclipseCaseData()->unitsType();
fracture->setFractureUnit(eclipseCase->eclipseCaseData()->unitsType());
if (oilfield->fractureDefinitionCollection->fractureDefinitions.size() > 0)
{

View File

@ -71,7 +71,7 @@ void RicNewSimWellFractureFeature::onActionTriggered(bool isChecked)
RimEclipseResultCase* eclipseCase = nullptr;
objHandle->firstAncestorOrThisOfType(eclipseCase);
fracture->fractureUnit = eclipseCase->eclipseCaseData()->unitsType();
fracture->setFractureUnit(eclipseCase->eclipseCaseData()->unitsType());
if (oilfield->fractureDefinitionCollection->fractureDefinitions.size() > 0)
{

View File

@ -60,7 +60,7 @@ void RicNewWellPathFractureFeature::addFracture(RimWellPath* wellPath, double me
fractureCollection->fractures.push_back(fracture);
fracture->setMeasuredDepth(measuredDepth);
fracture->fractureUnit = wellPath->unitSystem();
fracture->setFractureUnit(wellPath->unitSystem());
RigWellPath* wellPathGeometry = wellPath->wellPathGeometry();
cvf::Vec3d positionAtWellpath = wellPathGeometry->interpolatedPointAlongWellPath(measuredDepth);

View File

@ -95,7 +95,8 @@ RimFracture::RimFracture(void)
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", "", "", "");
CAF_PDM_InitField(&fractureUnit, "fractureUnit", caf::AppEnum<RiaEclipseUnitTools::UnitSystem>(RiaEclipseUnitTools::UNITS_METRIC), "Fracture Unit System", "", "", "");
CAF_PDM_InitField(&m_fractureUnit, "fractureUnit", caf::AppEnum<RiaEclipseUnitTools::UnitSystem>(RiaEclipseUnitTools::UNITS_METRIC), "Fracture Unit System", "", "", "");
m_fractureUnit.uiCapability()->setUiReadOnly(true);
CAF_PDM_InitField(&stimPlanTimeIndexToPlot, "timeIndexToPlot", 0, "StimPlan Time Step", "", "", "");
@ -129,23 +130,6 @@ 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 == RiaEclipseUnitTools::UNITS_METRIC)
{
wellDiameter = RiaEclipseUnitTools::inchToMeter(wellDiameter);
perforationLength = RiaEclipseUnitTools::feetToMeter(perforationLength);
}
else if (fractureUnit == RiaEclipseUnitTools::UNITS_FIELD)
{
wellDiameter = RiaEclipseUnitTools::meterToInch(wellDiameter);
perforationLength = RiaEclipseUnitTools::meterToFeet(perforationLength);
}
this->updateConnectedEditors();
}
if (changedField == &m_fractureTemplate)
{
setFractureTemplate(m_fractureTemplate);
@ -156,7 +140,6 @@ void RimFracture::fieldChangedByUi(const caf::PdmFieldHandle* changedField, cons
changedField == &stimPlanTimeIndexToPlot ||
changedField == this->objectToggleField() ||
changedField == &showPolygonFractureOutline ||
changedField == &fractureUnit ||
changedField == &dip ||
changedField == &tilt)
{
@ -209,15 +192,29 @@ cvf::BoundingBox RimFracture::boundingBoxInDomainCoords()
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
double RimFracture::wellRadius() const
double RimFracture::wellRadius(RiaEclipseUnitTools::UnitSystem unitSystem) const
{
if (fractureUnit == RiaEclipseUnitTools::UNITS_METRIC)
if (m_fractureUnit == RiaEclipseUnitTools::UNITS_METRIC)
{
return wellDiameter / 2;
if (unitSystem == RiaEclipseUnitTools::UNITS_FIELD)
{
return RiaEclipseUnitTools::meterToFeet(wellDiameter / 2);
}
else
{
return wellDiameter / 2;
}
}
else if (fractureUnit == RiaEclipseUnitTools::UNITS_FIELD)
else if (m_fractureUnit == RiaEclipseUnitTools::UNITS_FIELD)
{
return RiaEclipseUnitTools::inchToFeet(wellDiameter / 2);
if (unitSystem == RiaEclipseUnitTools::UNITS_METRIC)
{
return RiaEclipseUnitTools::inchToMeter(wellDiameter / 2);
}
else
{
return RiaEclipseUnitTools::inchToFeet(wellDiameter / 2);
}
}
return cvf::UNDEFINED_DOUBLE;
}
@ -347,12 +344,12 @@ QList<caf::PdmOptionItemInfo> RimFracture::calculateValueOptions(const caf::PdmF
//--------------------------------------------------------------------------------------------------
void RimFracture::defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering)
{
if (fractureUnit == RiaEclipseUnitTools::UNITS_METRIC)
if (m_fractureUnit() == RiaEclipseUnitTools::UNITS_METRIC)
{
wellDiameter.uiCapability()->setUiName("Well Diameter [m]");
perforationLength.uiCapability()->setUiName("Perforation Length [m]");
}
else if (fractureUnit == RiaEclipseUnitTools::UNITS_FIELD)
else if (m_fractureUnit() == RiaEclipseUnitTools::UNITS_FIELD)
{
wellDiameter.uiCapability()->setUiName("Well Diameter [inches]");
perforationLength.uiCapability()->setUiName("Perforation Length [Ft]");
@ -438,6 +435,22 @@ void RimFracture::setAnchorPosition(const cvf::Vec3d& pos)
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RiaEclipseUnitTools::UnitSystem RimFracture::fractureUnit() const
{
return m_fractureUnit();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimFracture::setFractureUnit(RiaEclipseUnitTools::UnitSystem unitSystem)
{
m_fractureUnit = unitSystem;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@ -500,8 +513,8 @@ void RimFracture::setFractureTemplate(RimFractureTemplate* fractureTemplate)
}
this->updateAzimuthFromFractureTemplate();
this->wellDiameter = fractureTemplate->wellDiameterInFractureUnit(fractureUnit);
this->perforationLength = fractureTemplate->perforationLengthInFractureUnit(fractureUnit);
this->wellDiameter = fractureTemplate->wellDiameterInFractureUnit(m_fractureUnit());
this->perforationLength = fractureTemplate->perforationLengthInFractureUnit(m_fractureUnit());
}
//--------------------------------------------------------------------------------------------------

View File

@ -66,11 +66,12 @@ public:
caf::PdmField<int> stimPlanTimeIndexToPlot;
caf::PdmField<bool> showPolygonFractureOutline;
caf::PdmField< RiaEclipseUnitTools::UnitSystemType > fractureUnit;
double wellRadius() const;
double wellRadius(RiaEclipseUnitTools::UnitSystem unitSystem) const;
cvf::Vec3d anchorPosition() const ;
void setAnchorPosition(const cvf::Vec3d& pos);
RiaEclipseUnitTools::UnitSystem fractureUnit() const;
void setFractureUnit(RiaEclipseUnitTools::UnitSystem unitSystem);
bool isEclipseCellWithinContainment(const RigMainGrid* mainGrid,
size_t globalCellIndex);
@ -109,6 +110,7 @@ private:
protected:
caf::PdmPtrField<RimFractureTemplate*> m_fractureTemplate;
caf::PdmProxyValueField<cvf::Vec3d> m_uiAnchorPosition;
caf::PdmField< RiaEclipseUnitTools::UnitSystemType > m_fractureUnit;
private:
caf::PdmField<cvf::Vec3d> m_anchorPosition;

View File

@ -186,7 +186,6 @@ void RimSimWellFracture::updateFracturePositionFromLocation()
void RimSimWellFracture::defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering)
{
RimFracture::defineUiOrdering(uiConfigName, uiOrdering);
fractureUnit.uiCapability()->setUiReadOnly(true);
uiOrdering.add(nameField());
uiOrdering.add(&showPolygonFractureOutline);
@ -199,7 +198,7 @@ void RimSimWellFracture::defineUiOrdering(QString uiConfigName, caf::PdmUiOrderi
locationGroup->add(&tilt);
caf::PdmUiGroup* propertyGroup = uiOrdering.addNewGroup("Properties");
propertyGroup->add(&fractureUnit);
propertyGroup->add(&m_fractureUnit);
propertyGroup->add(&m_fractureTemplate);
propertyGroup->add(&stimPlanTimeIndexToPlot);
propertyGroup->add(&perforationLength);

View File

@ -169,6 +169,7 @@ void RimWellPathFracture::defineUiOrdering(QString uiConfigName, caf::PdmUiOrder
locationGroup->add(&tilt);
caf::PdmUiGroup* propertyGroup = uiOrdering.addNewGroup("Properties");
propertyGroup->add(&m_fractureUnit);
propertyGroup->add(&m_fractureTemplate);
propertyGroup->add(&stimPlanTimeIndexToPlot);
propertyGroup->add(&perforationLength);

View File

@ -14,11 +14,11 @@
#include <cmath>
RigWellPathStimplanIntersector::RigWellPathStimplanIntersector(const RigWellPath* wellpathGeom, const RimFracture * rimFracture)
RigWellPathStimplanIntersector::RigWellPathStimplanIntersector(const RigWellPath* wellpathGeom, const RimFracture* rimFracture)
{
std::vector<cvf::Vec3d> wellPathPoints = wellpathGeom->m_wellPathPoints;
cvf::Mat4f fractureXf = rimFracture->transformMatrix();
double wellRadius = rimFracture->wellRadius();
double wellRadius = rimFracture->wellRadius(rimFracture->fractureUnit());
std::vector<cvf::Vec3f> fracturePolygonf ;
std::vector<std::vector<cvf::Vec3d> > stpCellPolygons;
{