JPL行星精密历表的使用
上海航天技术研究院 李云飞()
今天运气真好当计算太阳系某行星相对太阳或者相对其他行星的位置和速度的时候,在精度不太高的情况下,可以用行星的平均根数解析的得出,但是如果需要计算其高精度的位置和速度的时候,通常采用NASA(美国航空航天局)的JPL(喷气推进实验室)给出的行星精密历表(DE200,DE403,DE405)。
在JPL的太阳系动力学网页(ssd.v/)上有太阳系行星历表计算的一般精度和高精度计算方法和子程序。
本文以行星历表的高精度计算(DE405)为例,阐述如何从JPL的FTP上下载相关数据,如何验证子程序的正确性,以及最后如何使用子程序。
本示例中以DE405为例,下载的子程序为FORTRAN语言,对于其他的历表(如DE200)和语言(C++),过程和以下相同,只要将相应的代码对应修改即可。
详细的过程可参考ssd.v/?planet_eph_export,作者的操作系统为Windows XP,对于UNIX 操作系统,请阅读上行中的链接中的说明。由于下载数据后要对其验证子程序做一些修改,而读者在初次读其验证子程序时难免有些疑惑,因此下面直接给出步骤:
1.登录JPL的ftp(ftp://ssd.v/),下载以下数据:
农业服务一共9个文件:
/pub/eph/planets/usrguide
/pub/eph/planets/fortran/testeph.f
/pub/eph/planets/fortran/lcon.f
/pub/eph/planets/fortran/asc2eph.f
/pub/eph/planets/fortran/binmerge.f
/pub/eph/planets/fortran/binshort.f
/pub/eph/planets/ascii/DExxx/ascpYYYY.XXX (多个文件)
/pub/eph/planets/ascii/DExxx/header.XXX
/pub/eph/planets/test-data/testpo.XXX
将上述文件放在同一文件夹下,为了方便下面描述,设文件夹名字为D:\DE405。
请仔细阅读usrguide文件,看不明白也行,只要按照以后步骤做即可。
上述文件中,ascpYYYY.XXX 系列文件就是我们所需要的精密历表的数值文件。
其中XXX表示星历表编号,本示例中为405;YYYY表示年份,如果你只需要公元
2000到公元2060年之间的行星位置数据,那么只下载ascp2000.405到ascp2040.405
的文件即可。
2.打开“开始”菜单,点击“运行”,进入窗口DOS命令行界面,并进入DE405文件
夹下。
首先你的系统内要有fortran的编译器(如Compaq visual fortran 6.5版);那么在命令
行界面输入:
copy header.405+ascp2000.405+ascp2020.405+ascp2040.405 infile.405
此命令会产生一个infile.405的文件。继续在命令行界面输入:
DF asc2eph.f
asc2eph < infile.405 (此命令会产生一个名为JPLEPH的文件)
3.打开”testeph.f”文件,修改程序中以下部分:
在子程序”FSIZER3”中,将”NRECL”设为4, 将”NAMFIL”设为'JPLEPH'。将”KSIZE”设为
2036,对于其它的历表(如DE200), ”KSIZE”的值有所不同,参考程序中旁边的提示。
在子程序”STATE”中,将语句”CALL FSIZER3(NRECL,KSIZE,NRFILE,NAMFIL)”最前端的’C’去掉。关闭”testeph.f”。
4.继续在命令行界面中输入:
DF testeph.f
testeph < testpo.405
口金包
此时界面中会输出一系列的常用参数,以及和标准数据的比较结果,其中对应”difference”的位置的数据全是”0.****E‐13”,则表示”testeph.f”程序修改的正确,否则则会出现'***** WARNING : next difference >= 1.D‐13 *****'的字样,那么表示程序修改错误,需要继续修改。如果出现错误,则尝试将步骤3中的”NRECL”设为1重新试试。如果仍不行,那么可能由于系统的原因,请读者自己按照其英文的说明文档自己做,或者来信与笔者交流()。
5.打开”testeph.f”文件,将子程序’FSIZER3’(包括它)以下所有的子程序全部拷贝到
到’lcon.f’文件中。
6.至此,精密历表的前期工作已经完成,读者所需要的计算行星位置速度的高精度星
历表子程序全部在文件’lcon.f’中,读者在实际应用中可以直接调用’lcon.f’文件中的相关子程序(相应的’JPLEPH’数据文件要存在)。如果需要的精密历表的时间与上面的时间范围不同,读者可以自己转换所需要时间段的(如公元2020‐2100年间的精密历表)星历表数值文件,具体方法同本文的步骤类似。
7.关于’lcon.f’文件中的行星历表的子程序名称及其接口,请参考附录A。
附录A 精密历表子程序
在最后的’lcon.f’文件中,包含着读者所需要的几个有关精密历表的子程序,下面给出
各个子程序的简介及其接口参数说明。
[ PLEPH] : 给定某一儒略日时刻,得到目标行星相对某行星中心的位置和速度
[CONST] : 获取所有的有关星历表的常数
[SELCON] : 获得读者所需的星历表某一常数
[ DPLEPH]: 同子程序PLEPH,但输入的儒略日时刻更加精确
z PLEPH ( ET, NTARG, NCENT, RRD )
Input:
ET [d.p.] : 儒略日
NTARG [int.] : 目标行星的编号
NCENT [int.] : 中心行星的编号
Output:
RRD(6) [d.p.] : 目标行星相对中心行星的位置和速度; 单位: [au, au/day]
for nutations, d(psi), d(eps), d(psi)‐dot, d(eps)‐dot;[rads, rads/day]
for librations, (Euler angles and rates, the ephemeris reference frame)
[rads, rads/day]
‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐
关于目标行星和中心行星的编号,它们的含义如下:
1 = MERCURY
2 = VENUS
3 = EARTH
4 = MARS
5 = JUPITER
6 = SATURN
7 = URANUS
8 = NEPTUNE
9 = PLUTO 10 = MOON
11 = SUN 12 = SOLAR‐SYSTEM BARYCENTER
13 = EARTH‐MOON BARYCENTER
14 = NUTATIONS (LONGITUDE AND OBLIQ)
15 = LIBRATIONS, IF ON EPH FILE
(IF NUTATIONS ARE WANTED, SET NTARG = 14. FOR LIBRATIONS, SET NTARG = 15. SET NCENT=0.)
z DPLEPH ( ET2, NTARG, NCENT, RRD )
Input:
ET2(2) [d.p.] : 通常此向量有以下三种用法:
1最简单的用法,将儒略日赋值给ET2(1),将ET2(1)置0;
2为了最大的提高计算精度,将ET2(1)赋值为离所要计算时刻最近的午夜对应的儒略日,将剩下的儒略日赋值给ET2(2);
3为了方便,也可将ET2(1)赋值为某一固定时刻的儒略日(如开始积分的时刻),将剩下的儒略日赋值给ET2(2);
其他参数参考 PLEPH ( ET, NTARG, NCENT, RRD )。
z CONST(NAM,VAL,SSS,N)
Output:
NAM(N) [char*6.] : 常数名称向量
VAL(N) [d.p.] : 常数值向量
鸡怎么炖好吃
SSS(3) [d.p.] :
sss(1) : 星历表数据对应的起始时刻儒略日
sss(2) : 星历表数据对应的终点时刻儒略日
sss(3) : Chebychev系数每块数据所包含的天数走运
N [Int.] : 常数向量的长度
z lcon(nams,nns,vals)
Input:
nams [char*6] : 所要计算常数的名称
nns [int.] : 所要计算常数的编号
Output:
vals [d.p.] : 所要计算常数的数值'
‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐
部分常数名称(按编号顺序):
DENUM Planetary ephemeris number.
LENUM Lunar ephemeris number.
TDATEF, TDATEB Dates of the Forward and Backward Integrations
CLIGHT S peed of light (km/s).
AU Number of kilometers per astronomical unit.
EMRAT Earth‐Moon mass ratio.
GMi GM for ith planet [au**3/day**2].
GMB GM for the Earth‐Moon Barycenter [au**3/day**2].
GMS Sun (= k**2) [au**3/day**2].
X1, ..., ZD9 Initial conditions for the numerical integration,
given at "JDEPOC", with respect to "CENTER".
JDEPOC Epoch (JED) of initial conditions, normally JED 2440400.5.
爱的作文开头
CENTER Reference center for the initial conditions.
(Sun: 11, Solar System Barycenter: 12)
RADi Radius of ith planet [km].
*** 上面,[d.p.]表示双精度类型数据(double precision); [Int.]表示整型类型数据; [Char] 表示字符型数据。
每日工作感悟
*** 某一格林尼治时刻所对应的儒略日(例如2008‐Jan‐20 15:00:00时刻对应的儒略日为2454486.125)的计算方法的子程序见我个人主页中的’UTC到Julday转换’文件
(/programs);也可用JPL网站上现成的程序来进行转换(ssd.i#top)。
附录B JPL精密历表分类
z DE200 : (包含章动,但不含岁差)
对应的历元起始时刻为:
JED 2305424.5 (1599 DEC 09) to JED 2513360.5 (2169 MAR 31)。
This ephemeris has been the basis of the Astronomical Almanac since 1984. It is bad upon the dynamical equator and equinox of J2000 (e Standish, 1982 and Standish, 1990).
z DE403 : (包含岁差和章动)
对应的历元起始时刻为:
JED 2433264.5 (1949 DEC 14) to JED 2469808.5 (2050 JAN 02) Tied to the International Celestial Reference Frame through comparison of UTPM estimates from Lunar Lar Ranging and VLBI
z DE405 : (包含岁差和章动)
对应的历元起始时刻为:
JED 2305424.50 (1599 DEC 09) to JED 2525008.50 (2201 FEB 20) Tied to the International Celestial Reference Frame through VLBI obrvations of the Magellan spacecraft in orbit around Venus.
DE405 was created in May-June 1997.
z DE406 : 长期星历表(不含岁差章动)
对应的历元起始时刻为:
JED 0624976.50 (-3001 FEB 04) to 2816912.50 (+3000 MAY 06) This is the same ephemeris as DE405, though the accuracy of the
interpolating polynomials has been lesned (interpolation on the
64-day mesh points remains exact, however). For DE406/LE406, the
interpolating accuracy is no wor than 25 meters for any planet and
no wor than 1 meter for the moon.
DE406 requires about 10 megabytes for each 300-year block.
z DE410 : Specialzed ephemeris ud for Mars Exploration Rover navigation
(DE409 is identical except for the reference vale uf GM for Mars)
Tied to ICRF by VLBI obrvations of Mars Global Surveyor and
Mars Odysy.
飞机结构Created 24 April 2003
z DE413 : A special ephemeris to update the orbit of Pluto to aid in planning for an accolutation of a relatively bright start by Pluto's
satellite Charon on 11 July 2005.
Created 4 November 2004