@@ -1658,30 +1658,32 @@ push!(document[Symbol("Physics flux-surfaces")], :trace_surfaces)
16581658
16591659function _extrema_index (r:: AbstractVector{T} , z:: AbstractVector{T} , r0:: T , Z0:: T , direction:: Symbol ) where {T<: Real }
16601660 i = argmin ((r .- r0) .^ 2 .+ (z .- Z0) .^ 2 )
1661+ N = length (z)
1662+ j = Int (ceil (N / 2 ))
16611663 n = 3
16621664 if direction == :right
1663- if (r[i ] - r[i - 1 ]) > 0 # oriented right
1664- return max (1 , i - 1 ): min (length (z) , i + n)
1665+ if (r[j ] - r[j - 1 ]) > 0 # oriented right
1666+ return max (1 , i - 1 ): min (N , i + n)
16651667 else # opposite orientation
1666- return max (1 , i - n): min (length (z) , i + 1 )
1668+ return max (1 , i - n): min (N , i + 1 )
16671669 end
16681670 elseif direction == :left
1669- if (r[i ] - r[i - 1 ]) < 0 # oriented left
1670- return max (1 , i - 1 ): min (length (z) , i + n)
1671+ if (r[j ] - r[j - 1 ]) < 0 # oriented left
1672+ return max (1 , i - 1 ): min (N , i + n)
16711673 else
1672- return max (1 , i - n): min (length (z) , i + 1 )
1674+ return max (1 , i - n): min (N , i + 1 )
16731675 end
16741676 elseif direction == :up
1675- if (z[i ] - z[i - 1 ]) > 0 # oriented up
1676- return max (1 , i - 1 ): min (length (z) , i + n)
1677+ if (z[j ] - z[j - 1 ]) > 0 # oriented up
1678+ return max (1 , i - 1 ): min (N , i + n)
16771679 else
1678- return max (1 , i - n): min (length (z) , i + 1 )
1680+ return max (1 , i - n): min (N , i + 1 )
16791681 end
16801682 elseif direction == :down
1681- if (z[i ] - z[i - 1 ]) < 0 # oriented down
1682- return max (1 , i - 1 ): min (length (z) , i + n)
1683+ if (z[j ] - z[j - 1 ]) < 0 # oriented down
1684+ return max (1 , i - 1 ): min (N , i + n)
16831685 else
1684- return max (1 , i - n): min (length (z) , i + 1 )
1686+ return max (1 , i - n): min (N , i + 1 )
16851687 end
16861688 else
16871689 error (" _extrema_index(..., direction::Symbol) can only be (:left, :right, :up, :down)" )
0 commit comments