============ Planetary positions by VSOP87 theory ============ DESCRIPTION =========== Loading source files of VSOP87 and calculating positions of the planet at given julian day. USAGE ========= vsop87.rb?f=FILE_NAME(&d=JULIAN_DAY) if you omit param "d" you will get current position. REFERENCE ========= VI/81 Planetary Solutions VSOP87 (Bretagnon+, 1988) http://cdsarc.u-strasbg.fr/viz-bin/ftp-index?VI/81 ### Here is the description of VSOP87 files. ### ============ VSOP87 FILES BDL-9502 ============ REFERENCE ========= Bretagnon P., Francou G., : 1988, Astron. Astrophys., 202, 309. ADRESS ====== Pierre Bretagnon, Gerard Francou Bureau des Longitudes 77, Avenue Denfert-Rochereau F75014, Paris, France Tel : (1) 40 51 22 69 (1) 40 51 22 60 E-Mail : pierre@bdl.fr francou@bdl.fr Fax : (1) 46 33 28 34 DESCRIPTION =========== The VSOP87 files contain the VSOP87 analytical solutions of the motion of the planets Mercury, Venus, Earth, Mars, Jupiter, Saturn, Uranus, Neptune and Earth-Moon Barycenter. There are six different versions of the theory VSOP87 which may be recognized by the type of coordinates and the reference frame. The main version VSOP87 consists of the series in elliptic elements as in the case of previous solution VSOP82 and the other versions VSOP87 are built in rectangular variables (versions A,C,E) or spherical variables (versions B,D). The reference frame is defined by the dynamical equinox and ecliptic J2000 for the main version VSOP87 and the versions A, B, E, and by the dynamical equinox and ecliptic of the date for the versions C and D. FILE SUMMARY ============ Name Size Kb Contents ---- ------- -------- VSOP87.mer 644.1 Mercury Heliocentric elliptic elements J2000 VSOP87.ven 401.4 Venus Heliocentric elliptic elements J2000 VSOP87.emb 563.0 Earth-Moon Heliocentric elliptic elements J2000 VSOP87.mar 1002.8 Mars Heliocentric elliptic elements J2000 VSOP87.jup 812.5 Jupiter Heliocentric elliptic elements J2000 VSOP87.sat 1645.9 Saturn Heliocentric elliptic elements J2000 VSOP87.ura 2023.2 Uranus Heliocentric elliptic elements J2000 VSOP87.nep 1070.5 Neptune Heliocentric elliptic elements J2000 VSOP87A.mer 848.1 Mercury Heliocentric rectangular variables J2000 VSOP87A.ven 315.9 Venus Heliocentric rectangular variables J2000 VSOP87A.ear 472.9 Earth Heliocentric rectangular variables J2000 VSOP87A.emb 444.2 Earth-Moon Heliocentric rectangular variables J2000 VSOP87A.mar 943.1 Mars Heliocentric rectangular variables J2000 VSOP87A.jup 592.1 Jupiter Heliocentric rectangular variables J2000 VSOP87A.sat 1001.5 Saturn Heliocentric rectangular variables J2000 VSOP87A.ura 705.3 Uranus Heliocentric rectangular variables J2000 VSOP87A.nep 352.5 Neptune Heliocentric rectangular variables J2000 VSOP87B.mer 949.8 Mercury Heliocentric spherical variables J2000 VSOP87B.ven 229.8 Venus Heliocentric spherical variables J2000 VSOP87B.ear 343.4 Earth Heliocentric spherical variables J2000 VSOP87B.mar 853.6 Mars Heliocentric spherical variables J2000 VSOP87B.jup 484.5 Jupiter Heliocentric spherical variables J2000 VSOP87B.sat 848.9 Saturn Heliocentric spherical variables J2000 VSOP87B.ura 702.6 Uranus Heliocentric spherical variables J2000 VSOP87B.nep 270.9 Neptune Heliocentric spherical variables J2000 VSOP87C.mer 1087.0 Mercury Heliocentric rectangular variables of date VSOP87C.ven 386.6 Venus Heliocentric rectangular variables of date VSOP87C.ear 560.1 Earth Heliocentric rectangular variables of date VSOP87C.mar 1106.7 Mars Heliocentric rectangular variables of date VSOP87C.jup 741.2 Jupiter Heliocentric rectangular variables of date VSOP87C.sat 1170.5 Saturn Heliocentric rectangular variables of date VSOP87C.ura 932.3 Uranus Heliocentric rectangular variables of date VSOP87C.nep 385.4 Neptune Heliocentric rectangular variables of date VSOP87D.mer 910.4 Mercury Heliocentric spherical variables of date VSOP87D.ven 226.1 Venus Heliocentric spherical variables of date VSOP87D.ear 324.8 Earth Heliocentric spherical variables of date VSOP87D.mar 731.6 Mars Heliocentric spherical variables of date VSOP87D.jup 465.6 Jupiter Heliocentric spherical variables of date VSOP87D.sat 768.3 Saturn Heliocentric spherical variables of date VSOP87D.ura 532.7 Uranus Heliocentric spherical variables of date VSOP87D.nep 258.8 Neptune Heliocentric spherical variables of date VSOP87E.mer 1050.4 Mercury Barycentric rectangular variables J2000 VSOP87E.ven 621.8 Venus Barycentric rectangular variables J2000 VSOP87E.ear 741.3 Earth Barycentric rectangular variables J2000 VSOP87E.mar 1009.9 Mars Barycentric rectangular variables J2000 VSOP87E.jup 606.5 Jupiter Barycentric rectangular variables J2000 VSOP87E.sat 1002.8 Saturn Barycentric rectangular variables J2000 VSOP87E.ura 683.5 Uranus Barycentric rectangular variables J2000 VSOP87E.nep 319.6 Neptune Barycentric rectangular variables J2000 VSOP87E.sun 884.7 Sun Barycentric rectangular variables J2000 -------------------------------------------------------------------------------- CONTENTS ======== A VSOP87 file deals with a body and a version of the theory. It contains trigonometric series which represent the coordinates of the body : elliptic, rectangular or spherical coordinates according to the version. These coordinates are functions of time, periodic and Poisson series, given under two forms : (1) T**alpha * (S sin phi + K cos phi) with : phi = SUM [i=1,12] [a(i)*lambda(i)] (2) T**alpha * A * cos(B+CT) where T : time expressed in Thousands of Julian Years (tjy) elapsed from J2000 (JD2451545.0). alpha : degree of time in-between 0 and 5. The amplitudes S, K and A are expressed in au/(tjy**alpha) for the distances and in rad/(tjy**alpha) for angular variables. The phase B is expressed in radians. The frequency C is expressed in rad/tjy. The coefficients a(i) are integers. The means longitudes lambda(i) are expressed in radians : lambda (1) = 4.40260884240 + 26087.9031415742 * T Mercury lambda (2) = 3.17614669689 + 10213.2855462110 * T Venus lambda (3) = 1.75347045953 + 6283.0758499914 * T Earth lambda (4) = 6.20347611291 + 3340.6124266998 * T Mars lambda (5) = 0.59954649739 + 529.6909650946 * T Jupiter lambda (6) = 0.87401675650 + 213.2990954380 * T Saturn lambda (7) = 5.48129387159 + 74.7815985673 * T Uranus lambda (8) = 5.31188628676 + 38.1330356378 * T Neptune lambda (9) = 5.19846674103 + 77713.7714681205 * T Moon D lambda (10) = 1.62790523337 + 84334.6615813083 * T Moon F lambda (11) = 2.35555589827 + 83286.9142695536 * T Moon l lambda (12) = 3.81034454697 + 83997.0911355954 * T Moon Lm In a VSOP87 file the series of each coordinates are recognized by the degree alpha of time variable T : - periodic series : alpha=0, - Poisson series : alpha>0. Series follow one another according to the order of coordinates and for each coordinate they follow one another by increasing order of time alpha. For each term of a serie there is one record in the file. The terms of the series are placed according to decreasing values of the sum of absolute value of S plus absolute value of K. The quantities related to one term are placed in the order : a(i) (i=1,12), S, K, A, B, C. ORGANIZATION ============ In VSOP87 files, there are two types of records : (a) "header record" : characteristics of the series. (b) "term record" : quantities linked to one term of a serie. For each file, a serie corresponds to one "header record" (a) followed by one or several "term records" (b). HEADER RECORD ============= Fortran format : 17x,i1,4x,a7,12x,i1,17x,i1,i7 Specifications : - iv : code of VSOP87 version integer i1 col.18 - bo : name of body character a7 col.23-29 - ic : index of coordinate integer i1 col.42 - it : degree alpha of time variable T integer i1 col.60 - in : number of terms of series integer i7 col.61-67 The code iv of the version is : iv = 0 for the main version VSOP87 iv = 1 for the version VSOP87A iv = 2 for the version VSOP87B iv = 3 for the version VSOP87C iv = 4 for the version VSOP87D iv = 5 for the version VSOP87E The names bo of the bodies are : MERCURY, VENUS, EARTH, MARS, JUPITER, SATURN, URANUS, NEPTUNE, SUN, and EMB for the Earth-Moon Barycenter. The index ic of the coordinates are : - for the elliptic coordinates (main version) : 1 : semi-major axis 2 : mean longitude 3 : k = e cos(p) e : eccentricity 4 : h = e sin(p) p : perihelion longitude 5 : q = sin(g) cos(G) g : semi-inclination 6 : p = sin(g) sin(G) G : ascending node longitude - for the rectangular coordinates (versions A,C,E) : 1 : X 2 : Y 3 : Z - for the spherical coordinates (versions B,D) : 1 : Longitude 2 : Latitude 3 : Radius The degree alpha of the time variable is equal to : 0 for periodic series, 1 to 5 for Poisson series. TERM RECORD =========== Fortran format : 1x,4i1,i5,12i3,f15.11,2f18.11,f14.11,f20.11 Specifications : iv : code of VSOP87 version integer i1 col.02 ib : code of body integer i1 col.03 ic : index of coordinate integer i1 col.04 it : degree alpha of time variable T integer i1 col.05 n : rank of the term in a serie integer i5 col.06-10 a : 12 coefficients a of mean longitudes integer 12i3 col.11-46 S : amplitude S real dp f15.11 col.47-61 K : amplitude K real dp f18.11 col.62-79 A : amplitude A real dp f18.11 col.80-97 B : phase B real dp f14.11 col.98-111 C : frequency C read dp f20.11 col.112-131 The codes of the bodies are : 1 : Mercury 2 : Venus 3 : Earth for the versions A-E and Earth-Moon Barycenter for the main version 4 : Mars 5 : Jupiter 6 : Saturn 7 : Uranus 8 : Neptune 9 : Earth-Moon barycenter for the version A and Sun for the version E. TIME SCALE ========== The time used in VSOP87 theory is dynamical time. We can considered this time equal to Terrestrial Time (TT) which is measured by international atomic time TAI. So, the time argument in VSOP87 theory is equal to TAI + 32.184 s. REFERENCE SYSTEM ================ The coordinates of the main version VSOP87 and of the version A, B, and E are are given in the inertial frame defined by the dynamical equinox and ecliptic J2000 (JD2451545.0). The coordinates of the version C an D are given in the frame defined by the mean equinox and ecliptic of the date. This frame is deduced from the previous one by precessional moving between J2000 and the epoch of the date. The rectangular coordinates of VSOP87A and VSOP87E defined in dynamical ecliptic frame J2000 can be connected to the equatorial frame FK5 J2000 with the following rotation : X +1.000000000000 +0.000000440360 -0.000000190919 X Y = -0.000000479966 +0.917482137087 -0.397776982902 Y Z FK5 0.000000000000 +0.397776982902 +0.917482137087 Z VSOP87A PRECISION ========= The main version of VSOP87 is similar to the previous theory VSOP82. In the both cases the constants of integration have been determined by fitting to the numerical integration DE200 of the Jet Propulsion Laboratory. The differences between VSOP87 and VSOP82 mainly improve the validity time-span for Mercury, Venus, Earth-Moon barycenter and Mars with a precision of 1" for 4000 years before and after J2000. The same precision is ensured for Jupiter and Saturn over 2000 years and for Uranus and Neptune over 6000 years before and after J2000. The size of the relative precision p0 of VSOP87 solutions is given hereunder. That means that the actual precision is close by p0*a0 au for the distances (a0 being the semi-major axis) and close by p0 radian for the other variables. By derivation with respect to time expressed in day (d), the precision of the velocities is close by p0*a0 au/d for the distances and close by p0 radian/d for the other variables. Body a0 (au) p0 (10**-8) ---- ------- ----------- Mercury 0.3871 0.6 Venus 0.7233 2.5 Earth 1.0000 2.5 Mars 1.5237 10.0 Jupiter 5.2026 35.0 Saturn 9.5547 70.0 Uranus 19.2181 8.0 Neptune 30.1096 42.0 COMPUTATION =========== Being given a julian date JD expressed in dynamical time (TAI+32.184s) and a body (planets, Earth-Moon Barycenter, or Sun) associated to a version of the theory VSOP87 : 1/ select the file corresponding to the body and the version, 2/ read sequentially the terms of the series in the records of the file, 3/ apply for each term the formulae (1) or (2) with T=(JD-2451545)/365250, 4/ add up the terms so computed for every one coordinate. The file vsop87.f contains the Fortran 77 subroutine VSOP87 that computes the coordinates for each file of different versions of VSOP87 solutions. The VSOP87 file has to be defined and opened in the program which called this subroutine. A Fortran 77 program is also provided in file example.f which compute planetary ephemerides with the subroutine VSOP87. The subroutine VSOP87 and the program EXAMPLE (Fortran 77) are provided to illustrate the computation of an ephemeris. If the user wants to improve the rapidity of computation, it is recommanded to transform VSOP87 files in direct access and/or to read series in memory once at all. Some results of substitution of time in VSOP87 series are given in the file vsop87.chk to check up the validity of computation made by the users. End of document