#7729 MSW : Fix wrong segment for lateral

A lateral is connected to wrong segment for user defined reference MD
This commit is contained in:
Magne Sjaastad
2021-05-27 13:57:22 +02:00
parent ae7285b478
commit eba78b2660

View File

@@ -206,6 +206,8 @@ RicMswSegment* RicMswBranch::findClosestSegmentWithLowerMD( double measuredDepth
return segmentCount() > 0 ? segments().back() : nullptr; return segmentCount() > 0 ? segments().back() : nullptr;
} }
if ( segmentCount() > 0 )
{
RicMswSegment* closestSegment = nullptr; RicMswSegment* closestSegment = nullptr;
double smallestDistance = std::numeric_limits<double>::infinity(); double smallestDistance = std::numeric_limits<double>::infinity();
@@ -214,15 +216,24 @@ RicMswSegment* RicMswBranch::findClosestSegmentWithLowerMD( double measuredDepth
// WELSEGS is reported as the midpoint of the segment // WELSEGS is reported as the midpoint of the segment
double midpointMD = 0.5 * ( seg->startMD() + seg->endMD() ); double midpointMD = 0.5 * ( seg->startMD() + seg->endMD() );
// Use a signed difference to find the closest segment below the measured depth location
double candidateDistance = measuredDepthLocation - midpointMD; double candidateDistance = measuredDepthLocation - midpointMD;
if ( candidateDistance > 0.0 && candidateDistance < smallestDistance )
if ( closestSegment == nullptr )
{ {
closestSegment = seg; closestSegment = seg;
smallestDistance = candidateDistance; smallestDistance = std::fabs( candidateDistance );
} }
else if ( candidateDistance > 0.0 && candidateDistance < smallestDistance )
{
closestSegment = seg;
smallestDistance = std::fabs( candidateDistance );
}
}
return closestSegment;
} }
return closestSegment; return nullptr;
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------