Fortran编译JPL历表
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 | C ***** The user must choose one of the following statements ***** |
其实这个地方似乎选取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星表文件
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 | gfortran testeph.f jplsubs.f -o test.out |
如下能够读取说明成功
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 AstroSilly!