;;;;;;;;;;;;;;;;;;;;;;;;
;;;   fllevels.pro   ;;;
;;;;;;;;;;;;;;;;;;;;;;;;

;;;
;;;  Author: wd (Wolfgang.Dobler@kis.uni-freiburg.de)
;;;  Date:   08-Apr-2002
;;;
;;;  Description:
;;;   Construct levels for plotting field lines in axisymmetry such
;;;   that a uniform vertical field will get equidistant lines.
;;;  Usage:
;;;   contour, xx*Aphi, x, z, LEVELS=fllevels(xx*Aphi)
;;;

function fllevels, var, nlev, $
                  GHOST=ghost

  default, ghost, 0.5           ; pretend data fill slighlty larger interval
  default, nlev, 20             ; number of field lines

  vmin = min(var) & vmax = max(var)
  smin = sign(vmin) & smax = sign(vmax)

  Nmin = nlev*smin*sqrt(abs(vmin))/(smax*sqrt(abs(vmax))-smin*sqrt(abs(vmin)))
; Nmax = nlev*smax*sqrt(abs(vmax))/(smax*sqrt(abs(vmax))-smin*sqrt(abs(vmin)))
;;  ii = Nmin + indgen(nlev+1)
  ii = Nmin + indgen(nlev+1-2*ghost) + ghost

  lev = ii*abs(ii)/nlev^2 $
        * (abs(vmax) + abs(vmin) - smin*smax*2.*sqrt(abs(vmin*vmax)))

  return, lev

end
; End of file fllevels.pro