Who am I

我的照片
Hefei, Anhui, China
Research Fields: Satellite Geodesy

2013年1月17日星期四

DE405星历计算天体位置和速度

按照如下步骤根据DE405天文星历计算天体的位置和速度:

1. 下载DE405星历数据和官方程序

fortran文件夹里下载程序,ascii文件夹里下载星历数据。

2.  合并数据文件
在dos下: copy header.405+ascp2000.405+ascp2020.405 infile.405
在Unix下:cat header.405 ascp2000.405 ascp2020.405 > infile.405

3.  将合并后的数据文件转化为二进制文件
利用CV Fortran 编译asc2eph.f文件(由于源程序是用Fortran 77写的,以及平台差异,在Ubuntu编译或运行该程序时可以会有错误,但在CV Fortran下测试没有问题), 生成asc2eph.exe文件,在dos下运行命令:asc2eph < infile.405. 运行的结果会生成二进制文件JPLEPH.

4.  测试源程序(testeph.f)
官方提供了testeph.f程序,测试源程序文件是否正确执行。在测试前需要将该程序文件中的部分参数赋值,具体如下:
在子程序FSIZER3中,将NRECL设为4,将NAMFIL设为JPLEPH,将KSIZE设为2036.在子程序STATE中,将语句CALL FSIZER3取消注释。保存修改后的程序。
继续在CV Fortran下编译程序testeph.f,生成可执行文件testeph.exe
进入dos下,执行命令:testeph < testpo.405
输出结果是一系列常用参数,以及和标准比较的结果,其中对应difference的位置数据全是E-13量级,此时表示程序运行正确;否则会出现"warning: next difference >= ..."字样,此时需要继续修改程序。

5. 将testeph.f文件中子程序“FSIZER3”以下所有的子程序拷贝到'selcon.f文件中',并接下来准备在该文件前编写主函数。

6. 编写主函数
如果要计算星体的位置和速度主要是调用PLEPH函数:
PLEPH(JUD,NTARG,NCTR,R),其中
输入参数为:JUD 儒略日; NTARG 目标星体的编号(参考函数说明);NCTR 中心星体的编号; 
返回参数为:R(6),R(1:3)目标星体的位置(直角坐标),R(4:6)目标星体的速度。
默认结果的单位时AU.

注: 由于编译环境的差别,源程序在Ubuntu下不一定能编译成功,但在CV Fortran下编译没有问题。


没有评论:

发表评论