hannorein / rebound

💫 An open-source multi-purpose N-body code.
https://rebound.readthedocs.io/
GNU General Public License v3.0
824 stars 218 forks source link

Inconsistent angles for orbits? #626

Closed zhexingli closed 1 year ago

zhexingli commented 1 year ago

Hello,

I'm trying to query orbital elements of Uranus' satellites through JPL's Horizons using Rebound but I found the results queried are very different for the angle parameters, such as w, big Omega, and inclination. For example, when query JPL Horizons from Rebound using:

sim = rebound.Simulation() labels = ['Uranus','705','701','702','703'] # Miranda, Ariel, Umbriel, Titania sim.units = ('AU','days','mjupiter') sim.add(labels) os = sim.calculate_orbits()

I got 341.7, 189.1, 60.8, and 259.7 degrees for w from Rebound, but the mean elements table reports (https://ssd.jpl.nasa.gov/sats/elem/) 155.6, 83.3, 258.3, 53.2 degrees for Miranda, Ariel, Umbriel, and Titania, respectively. Similarly for the ascending node angles.

For inclination, rebound returns about 1.7 rad for all four moons, which translates to about 97 degrees. But in the mean elements table, they were near 0 degree, with the exception for Miranda with 4.4 degrees.

Also other orbital elements queried using Rebound seems to be a bit off from those provided when quering directly using the Horizons web application. For example, Rebound provides eccentricity of 0.0013, 0.0006, 0.0039, 0.0028 for the four moons where Horizons web application provides 0.0027, 0.0034, 0.0050, 0.0022, respectively.

May I ask why are there such differences in the orbital elements, especially the huge differences in angles? Different reference frame used? Specified time range? Looking at the orbital mean elements table, the reference frame used is Laplace and URA111 ephemeris (Start: 1599-12-07, Stop: 2600-01-13). For the web application, ephemeris type of Observer Table or Osculating Orbital Elements were used with Geocentric observer location or solar system barycenter location, time range from the start of the centry till now, but couldn't reproduce the results Rebound returned.

What's the default frame and ephemeris used when querying through Rebound?

Thanks.

hannorein commented 1 year ago

Orbital elements are not constants except in a two body system. In general, they change because of planet-planet, planet-moon, etc interactions. So you need to specify the time when you quote orbital elements. On top of that, the mean orbital elements from the website have a very different interpretation from the instantaneous orbital elements. As the NASA website states: "Warning! These mean orbital parameters are not intended for ephemeris computation. Accurate ephemerides should be obtained from our Horizons system. Mean orbital parameters are primarily useful in describing the general shape and orientation of a planetary satellite's orbit."

zhexingli commented 1 year ago

Right. May I confirm the frame, observer location, and time range according to the Rebound code below with my comments next to it? Some are not quite clear to me. Thanks.

 ( b'Select.*E.phemeris.*:', 'E\n'),  # Ecliptic?
 ( b'Observe.*:', 'v\n' ), # What does v mean?
 ( b'Coordinate center.*:', '@0\n' ), # heliocentric
 ( b'Reference plane.*:', plane+'\n' ), # What does + mean?
 ( b'Output interval.*:', '2\n' ), # What does 2 mean?
 ( b'Accept default output \[.*:', 'n\n' ), # n?
 ( b'Output reference frame \[.*:', 'J2000\n' ), # which reference frame are we using?
 ( b'Corrections \[.*:', 'NONE\n' ),
 ( b'Output units \[.*:', '1\n' ), # what does 1 mean, are we assuming rebound units?
hannorein commented 1 year ago

You've found the right spot in REBOUND. It's probably best to look up the precise definitions of those options in the NASA documentation: https://ssd-api.jpl.nasa.gov/doc/horizons.html and https://ssd.jpl.nasa.gov/horizons/manual.html#frames