FUNCTION UlyssesOrbit, T, degrees=degrees @compile_opt.pro ; On error, return to caller dpm = ToDegrees(degrees=degrees) jd = TimeGet(T, /njd) p = replicate(BadValue(0.0),3,n_elements(jd)) ; In-ecliptic phase tt = TimeGet(TimeSet(yr=[1990,1991],month=['oct','dec'],day=[16,30]), /njd) i = where( tt[0] LE jd AND jd LE tt[1] ) IF i[0] NE -1 THEN $ p[*,i] = KeplerOrbit(T[i], degrees=degrees , $ elements = [9.030365512305314d+00,8.897464400966297d-01,7.973512530451710d+00/dpm,2448177.155379012693d0-2451545.0d0], $ plane = [1.336294632570382d+01,1.997907686222203d+00]/dpm) ; First orbit tt = TimeGet(TimeSet(yr=[1992,1998],month=['mar','apr'],day=[19,18]), /njd) i = where( tt[0] LE jd AND jd LE tt[1] ) IF i[0] NE -1 THEN $ p[*,i] = KeplerOrbit(T[i], degrees=degrees , $ elements = [3.373607542718132d+00,6.031503055745338d-01,3.588812465846812d+02/dpm,2449788.991885926574d0-2451545.0d0], $ plane = [3.381812752049081d+02,7.913419307720035d+01]/dpm) ; Second orbit tt = TimeGet(TimeSet(yr=[1998,2004],month=['apr','jul'],day=[18,01]), /njd) i = where( tt[0] LT jd AND jd LE tt[1] ) IF i[0] NE -1 THEN $ p[*,i] = KeplerOrbit(T[i], degrees=degrees , $ elements = [3.373734110021353d+00,6.031132414101130d-01,3.589804732058623d+02/dpm,2452053.178729594219d0-2451545.0d0], $ plane = [3.381356025082639d+02,7.912197709000114d+01]/dpm) tt = TimeGet(TimeSet(yr=[2004,2008],month=['jul','dec'],day=[01,31]), /njd) ; Third orbit i = where( tt[0] LT jd AND jd LE tt[1] ) IF i[0] NE -1 THEN $ p[*,i] = KeplerOrbit(T[i], degrees=degrees , $ elements = [3.402423448713773d+00,5.905943668771040d-01,3.592550173721452d+02/dpm,2454330.786102185957d0-2451545.0d0], $ plane = [3.380855550555008d+02,7.864681204100637d+01]/dpm) RETURN, p & END