mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#1714 Adding point at fracture position to the vector of wellPathPoints used in calculation of intersection between fracture and wellpath.
This commit is contained in:
parent
7e44fe185e
commit
d55c362bf0
@ -95,6 +95,7 @@ public:
|
|||||||
|
|
||||||
virtual void updateAzimuthBasedOnWellAzimuthAngle() = 0;
|
virtual void updateAzimuthBasedOnWellAzimuthAngle() = 0;
|
||||||
virtual double wellAzimuthAtFracturePosition() const = 0;
|
virtual double wellAzimuthAtFracturePosition() const = 0;
|
||||||
|
virtual double fractureMD() const = 0;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual QList<caf::PdmOptionItemInfo> calculateValueOptions(const caf::PdmFieldHandle* fieldNeedingOptions, bool * useOptionsOnly) override;
|
virtual QList<caf::PdmOptionItemInfo> calculateValueOptions(const caf::PdmFieldHandle* fieldNeedingOptions, bool * useOptionsOnly) override;
|
||||||
|
@ -46,6 +46,8 @@ public:
|
|||||||
|
|
||||||
double wellAzimuthAtFracturePosition() const override;
|
double wellAzimuthAtFracturePosition() const override;
|
||||||
double wellDipAtFracturePosition();
|
double wellDipAtFracturePosition();
|
||||||
|
double fractureMD() const override { return m_location; }
|
||||||
|
|
||||||
|
|
||||||
int branchIndex() const { return m_branchIndex(); }
|
int branchIndex() const { return m_branchIndex(); }
|
||||||
|
|
||||||
|
@ -48,14 +48,6 @@ RimWellPathFracture::~RimWellPathFracture()
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
///
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
double RimWellPathFracture::measuredDepth() const
|
|
||||||
{
|
|
||||||
return m_measuredDepth();
|
|
||||||
}
|
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
@ -37,7 +37,7 @@ public:
|
|||||||
RimWellPathFracture(void);
|
RimWellPathFracture(void);
|
||||||
virtual ~RimWellPathFracture(void);
|
virtual ~RimWellPathFracture(void);
|
||||||
|
|
||||||
double measuredDepth() const;
|
double fractureMD() const override { return m_measuredDepth; }
|
||||||
void setMeasuredDepth(double mdValue);
|
void setMeasuredDepth(double mdValue);
|
||||||
|
|
||||||
virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue) override;
|
virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue) override;
|
||||||
|
@ -229,3 +229,38 @@ std::vector<cvf::Vec3d> RigWellPath::clippedPointSubset(double startMD, double e
|
|||||||
return points;
|
return points;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
std::vector<cvf::Vec3d> RigWellPath::wellPathPointsIncludingFractureIntersection(double fractureIntersectionMD) const
|
||||||
|
{
|
||||||
|
std::vector<cvf::Vec3d> points;
|
||||||
|
if (m_measuredDepths.empty()) return points;
|
||||||
|
|
||||||
|
cvf::Vec3d fractureWellPathPpoint = interpolatedPointAlongWellPath(fractureIntersectionMD);
|
||||||
|
|
||||||
|
for (size_t i = 0; i < m_measuredDepths.size()-1; i++)
|
||||||
|
{
|
||||||
|
if (m_measuredDepths[i] < fractureIntersectionMD)
|
||||||
|
{
|
||||||
|
points.push_back(m_wellPathPoints[i]);
|
||||||
|
if (m_measuredDepths[i + 1] > fractureIntersectionMD)
|
||||||
|
{
|
||||||
|
points.push_back(fractureWellPathPpoint);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (m_measuredDepths[i] < fractureIntersectionMD)
|
||||||
|
{
|
||||||
|
if (i == 0)
|
||||||
|
{
|
||||||
|
points.push_back(fractureWellPathPpoint);
|
||||||
|
}
|
||||||
|
points.push_back(m_wellPathPoints[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
points.push_back(m_wellPathPoints.back());
|
||||||
|
|
||||||
|
return points;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@ -45,6 +45,7 @@ public:
|
|||||||
void twoClosestPoints(const cvf::Vec3d& position, cvf::Vec3d* p1, cvf::Vec3d* p2) const;
|
void twoClosestPoints(const cvf::Vec3d& position, cvf::Vec3d* p1, cvf::Vec3d* p2) const;
|
||||||
std::vector<cvf::Vec3d> clippedPointSubset(double startMD, double endMD) const;
|
std::vector<cvf::Vec3d> clippedPointSubset(double startMD, double endMD) const;
|
||||||
|
|
||||||
|
std::vector<cvf::Vec3d> wellPathPointsIncludingFractureIntersection(double fractureIntersectionMD) const;
|
||||||
private:
|
private:
|
||||||
bool m_hasDatumElevation;
|
bool m_hasDatumElevation;
|
||||||
double m_datumElevation;
|
double m_datumElevation;
|
||||||
|
@ -12,11 +12,12 @@
|
|||||||
#include "cvfMath.h"
|
#include "cvfMath.h"
|
||||||
|
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
|
#include "RimSimWellFracture.h"
|
||||||
|
|
||||||
|
|
||||||
RigWellPathStimplanIntersector::RigWellPathStimplanIntersector(const RigWellPath* wellpathGeom, const RimFracture* rimFracture)
|
RigWellPathStimplanIntersector::RigWellPathStimplanIntersector(const RigWellPath* wellpathGeom, RimFracture* rimFracture)
|
||||||
{
|
{
|
||||||
std::vector<cvf::Vec3d> wellPathPoints = wellpathGeom->m_wellPathPoints;
|
std::vector<cvf::Vec3d> wellPathPoints = wellpathGeom->wellPathPointsIncludingFractureIntersection(rimFracture->fractureMD());
|
||||||
cvf::Mat4d fractureXf = rimFracture->transformMatrix();
|
cvf::Mat4d fractureXf = rimFracture->transformMatrix();
|
||||||
double wellRadius = rimFracture->wellRadius(rimFracture->fractureUnit());
|
double wellRadius = rimFracture->wellRadius(rimFracture->fractureUnit());
|
||||||
std::vector<cvf::Vec3f> fracturePolygonf ;
|
std::vector<cvf::Vec3f> fracturePolygonf ;
|
||||||
|
@ -38,7 +38,7 @@ public:
|
|||||||
int endpointCount;
|
int endpointCount;
|
||||||
};
|
};
|
||||||
|
|
||||||
RigWellPathStimplanIntersector(const RigWellPath* wellpathGeom, const RimFracture * rimFracture);
|
RigWellPathStimplanIntersector(const RigWellPath* wellpathGeom, RimFracture * rimFracture);
|
||||||
|
|
||||||
const std::map<size_t, WellCellIntersection >& intersections() { return m_stimPlanCellIdxToIntersectionInfoMap; }
|
const std::map<size_t, WellCellIntersection >& intersections() { return m_stimPlanCellIdxToIntersectionInfoMap; }
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user