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 中心星体的编号;
输入参数为:JUD 儒略日; NTARG 目标星体的编号(参考函数说明);NCTR 中心星体的编号;
返回参数为:R(6),R(1:3)目标星体的位置(直角坐标),R(4:6)目标星体的速度。
默认结果的单位时AU.
注: 由于编译环境的差别,源程序在Ubuntu下不一定能编译成功,但在CV Fortran下编译没有问题。
注: 由于编译环境的差别,源程序在Ubuntu下不一定能编译成功,但在CV Fortran下编译没有问题。
没有评论:
发表评论