A target on a breakpoint (same coincidence rule as the plan's breakpoint merge) takes the requested sheet trace; any other target lies strictly inside one interval.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=dp), | intent(in) | :: | break_z(:) | |||
| real(kind=dp), | intent(in) | :: | tolerance | |||
| real(kind=dp), | intent(in) | :: | z | |||
| integer(kind=i32), | intent(out) | :: | interval | |||
| integer(kind=i32), | intent(out) | :: | breakpoint |
pure subroutine locate_zero_mode_interval(break_z, tolerance, z, interval, breakpoint) real(dp), intent(in) :: break_z(:), tolerance, z integer(i32), intent(out) :: interval, breakpoint integer(i32) :: low, high, middle low = 1_i32 high = size(break_z) breakpoint = 0_i32 do while (low <= high) middle = (low + high)/2_i32 if (zero_mode_heights_coincide(z, break_z(middle), tolerance)) then breakpoint = middle interval = middle + 1_i32 return else if (z < break_z(middle)) then high = middle - 1_i32 else low = middle + 1_i32 end if end do interval = low end subroutine locate_zero_mode_interval