1. 下载历表文件

FTP方法

在CMD命令行下输入

1
ftp ssd.jpl.nasa.gov

或是先输入ftp进入FTP模式之后再输入open ssd.jpl.nasa.gov
我这边可能是梯子没配置好,连不上FTP服务器……后略!

网页下载

直接进入FTP文件页面
在Ascii目录中下载需要的历表文件,在Fortran目录中下载程序即可。

2. 配置asc2eph.f

找到代码中如下部分,删去NRECL=4一行前的注释符号

1
2
3
4
5
C *****  The user must choose one of the following statements  *****
C ( Usually NRECL = 4 is used on Unix platforms)

PARAMETER ( NRECL = 4 )
C PARAMETER ( NRECL = 1 )

其实这个地方似乎选取1和4都没有问题?
NRECL的取值似乎只是与之后的读取有关

3. 制作星表

以制作2000-2040年星表为例
在星表的目录下运行命令行程序合并数据
Windows:copy header.405+ascp2000.405+ascp2020.405 jpleph00-40
Linux:$ cat header.405 ascp2000.405 ascp2020.405 > jpleph00-40

编译asc2eph.f文件:

1
gfortran asc2eph.f -o asc2eph

用编译完成的程序打开我们合并的星表数据:

1
asc2eph <  jpleph00-40

如下图所示即为成功,生成JPLEPH星表文件
 2024-04-26 102305.png

4. 测试星表

拆解程序

将testeph.f拆解成两个文件:testeph.f和jplsubs.f
testeph.f仅包含原来的主程序
jplsubs.f中包括原来的子程序 FSIZER3 PLEPH INTERP SPLIT STATE CONST

修改jplsubs.f的参数

在子程序FSIZER3中让参数NRECL与asc2eph.f的参数相同(我这里是4)
然后NAMFIL=一行后填入你的星历表名字(我这里是JPLEPH)
最后是设定KSIZE,对于DE405星表set KSIZE=2036
最后,在子程序STATE中解除下面这行的注释:
C CALL FSIZER3(NRECL,KSIZE,NRFILE,NAMFIL)

编译检查

命令行下编译并检查结果

1
2
gfortran testeph.f jplsubs.f -o test.out
test.out

如下能够读取说明成功
 2024-04-26 185526.png