From 03aa8cc071ab02c177eba3c1ad5408a63d89241e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?P=C3=A5l=20Hagen?= Date: Thu, 10 Sep 2015 15:11:31 +0200 Subject: [PATCH] (#433) Using measured depth read from from well path files --- .../RigEclipseWellLogExtractor.cpp | 24 +++++++++++++------ 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/ApplicationCode/ReservoirDataModel/RigEclipseWellLogExtractor.cpp b/ApplicationCode/ReservoirDataModel/RigEclipseWellLogExtractor.cpp index 872620abd9..eb575d1803 100644 --- a/ApplicationCode/ReservoirDataModel/RigEclipseWellLogExtractor.cpp +++ b/ApplicationCode/ReservoirDataModel/RigEclipseWellLogExtractor.cpp @@ -46,7 +46,6 @@ void RigEclipseWellLogExtractor::calculateIntersection() { const std::vector& nodeCoords = m_caseData->mainGrid()->nodes(); - double globalMeasuredDepth = 0; // Where do we start ? z - of first well path point ? bool isCellFaceNormalsOut = m_caseData->mainGrid()->isFaceNormalsOutwards(); if (!m_wellPath->m_wellPathPoints.size()) return ; @@ -60,7 +59,7 @@ void RigEclipseWellLogExtractor::calculateIntersection() bb.add(p1); bb.add(p2); - std::vector closeCells = findCloseCells(bb ); + std::vector closeCells = findCloseCells(bb); std::vector intersections; cvf::Vec3d hexCorners[8]; @@ -87,11 +86,25 @@ void RigEclipseWellLogExtractor::calculateIntersection() // map std::map sortedIntersections; + double md1 = m_wellPath->m_measuredDepths[wpp]; + double md2 = m_wellPath->m_measuredDepths[wpp+1]; + for (size_t intIdx = 0; intIdx < intersections.size(); ++intIdx) { if (!isCellFaceNormalsOut) intersections[intIdx].m_isIntersectionEntering = !intersections[intIdx].m_isIntersectionEntering ; - double lenghtAlongLineSegment = (intersections[intIdx].m_intersectionPoint - p1).length(); - double measuredDepthOfPoint = globalMeasuredDepth + lenghtAlongLineSegment; + double lenghtAlongLineSegment1 = (intersections[intIdx].m_intersectionPoint - p1).length(); + double lenghtAlongLineSegment2 = (p2 - intersections[intIdx].m_intersectionPoint).length(); + double measuredDepthDiff = md2 - md1; + double lineLength = lenghtAlongLineSegment1 + lenghtAlongLineSegment2; + double measuredDepthOfPoint = 0.0; + if (lineLength > 0.00001) + { + measuredDepthOfPoint = md1 + measuredDepthDiff*lenghtAlongLineSegment1/(lineLength); + } + else + { + measuredDepthOfPoint = md1; + } sortedIntersections.insert(std::make_pair(WellPathDepthPoint(measuredDepthOfPoint, intersections[intIdx].m_isIntersectionEntering), intersections[intIdx])); } @@ -108,9 +121,6 @@ void RigEclipseWellLogExtractor::calculateIntersection() m_intersectedCellFaces.push_back(it->second.m_face); ++it; } - - // Increment the measured depth - globalMeasuredDepth += (p2-p1).length(); } }