关于使用NOVAS进行操作的部分过程。全称为Naval Observatory Vector Astrometry Software 。可用来计算天体位置等等。下面对其运用进行例子介绍。
题目内容
恒星观测[题目一]
观测时间:2020年5月1日,$23^h15^m43^s.55\mathrm{UTC}$
测站坐标:$\mathbf{W}70^\circ44’11’’.560 \quad \mathbf{S}30^\circ14’26’’.731$ 参考椭球面高度$2378 \mathrm{m} $
目标星体:$\mathbf{ICRS}[\alpha,\delta]=14^\circ34’16{‘’}.81183 \quad -12^\circ31’10{‘’}.3965 $
恒星自行:
地球指向参数:? 从IERS网站查询
求该星的:
- 地心视位置
- 站心坐标
- 地平坐标
系内观测[题目二]
观测时间:2020年5月1日,$23^h15^m43^s.55\mathrm{UTC}$
测站坐标:兴隆观测站
目标星体:月球和八大行星
地球指向参数:? 从IERS网站查询
求这些目标的:
- 地心视位置
- 站心坐标
- 地平坐标,且指出哪些天体可以观测。
实验准备
查询地球指向参数
首先访问IERS官网https://www.iers.org/IERS/EN/Home/home_node.html
在其Earth orientation data项目中,由于我们所查询的日期是较近的,由此选择为Daily EOP data files.
其中共有三项,
- finals.daily(IAU1980)
- finals.daily(IAU2000)
- gpsrapid.daily
第三项为GPS所用数据,而我们需要使用的是第二项。
最终可得,在2020年5月1日这一天
$\mathrm{DX=0.075815[arcsec]\quad DY=0.435887[arcsec] \ UT1-UTC=-0.242517s}$
此外我们还可以查询到Leap second announcements in UTC。
即为从2017.1.1至今,$\mathrm{UTC - TAI = -37\, s}$
NOVAS程序包下载
首先需要找到NOVAS程序包。
我们可以发现好像官网坏掉了,其中,
http://aa.usno.navy.mil/software/novas/novas_info.php
只要是aa开头的网址无论如何也连不上。
通过朋友GasinAn指导,来到官网使用站内搜索,
https://www.usno.navy.mil/search?SearchableText=NOVAS
即可在最下方找到NOVAS_FORTRAN软件包。即为
NOVAS测试使用
对于下载的文件中,最重要的为:
- example.f
- NOVAS_F3.1.f
- NOVAS_F3.1_solsys2.f
其中solsys2是利用jpl历表进行计算,因此需要使用jpl星表中的子程序。
- jplsubs.f
此外最常用的为指导手册
- NOVAS_F3.1_Guide.pdf
以上就是所需素材。
1 | $ gfortran example.f NOVAS_F3.1.f NOVAS_F3.1_solsys2.f jplsubs.f -o example.out |
可得显示结果:
1 | JPL ephemeris DE405 open. Start JD = 2451536.50 End JD = 2525008.50 |
如上所述,即为测试成功。
示例程序
实际上,通过阅读示例程序,可以发现已经写得很好,我们所做的就是改改参数就行了。由于我做这个实践时是用的3.0版本,由此以3.0版本为例的sample.f进行说明,并将其完整代码放在文末。
建立时间参数
1 | * ESTABLISH TIME ARGUMENTS |
这一部分对时间进行修正,最开始输入的时间为正常的公历。
通过使用JULDAT获得此刻UTC。
且有:
由于刚查询到$\mathrm{UTC - TAI = -37\, s}$ 。对应此处LEAPS即为$\mathrm{37\, s}$
再有先前查询的$\mathrm{UT1-UTC=-0.242517s}$
此处便可得到UT1,TT二者时间。这也是后面所主要用的。
恒星测量
1 | * APPARENT AND TOPOCENTRIC PLACE OF STAR FK6 1307 = GRB 1830 |
APSTAR为测量恒星的视位置,TPSTAR为测量恒星的站心位置。
视位置为在地心观测,没有大气的情况时的天体位置。对应的是真春分点、真赤道。
站心位置于站心观测,没有大气的情况时的天体位置。对应的是真春分点、真赤道。
两者差别仅为观测点所在地。
对于视位置测量,所需为J2000时赤经赤纬、自行、视差、视向速度。最终返回视位置赤经赤纬。
TPSTAR在紧接着APSTAR后面调用时,会利用先前的的相同数据,且需要提供观测站地理赤经赤纬与高度。最终返回站心位置赤经赤纬。
因此,在处理自己的问题时,只需要将对应的观测时间、赤经赤纬、自行、视差、视向速度、观测站地即可理位置修改即可。
月球测量
1 | * APPARENT AND TOPOCENTRIC PLACE OF THE MOON |
与先前恒星测量略有不同。
IDSS函数为通过输入观测目标的字母串,然后返回对应的编号值,本质即为字典。
根据手册,IEARTH作用不大,几乎只起到了占位符的作用,在处理自己的问题时对其保持不变即可。
通过APPLAN、TPPLAN函数对太阳系内主要天体进行计算。
1 | * TOPOCENTRIC PLACE OF THE MOON -- SHOULD BE SAME AS ABOVE |
此为另一种方法计算月球的站心位置。实际上类似于先前的APSTAR、APPLAN等函数,都是调用了最基本的PLACE函数。
地平坐标计算
1 | * POSITION OF THE MOON IN LOCAL HORIZON COORDINATES |
ZDAZ函数,其中第二第三项为极移修正,此处示例忽略了极移因此为0.D0,在稍后的操作中我们可以将极移的影响计算进去,修改为所查询到的DX、DY,代入即可。
此外需要提供测站的地理位置,观测目标的站心位置,第9项的1意为考虑大气折射,忽略则设置为0即可。最后返回天顶距与方位角。
示例程序后面还计算了格林尼治时间、火星黄道坐标、地球极移等等,但与这次试验目标无关,也就不介绍了。
试验过程
题目一
完整内容附于最后。
首先修改参数,将示例程序中的数据替换为题目给出与查询的数据:
1 | DATA IYEAR, MONTH, IDAY, HOUR / |
1 | RA2000 = 14.571336619444445D0 |
由于题目涉及修改结果的单位,因此添加一个用于修改单位的子程序,将以小时、度为单位的赤经赤纬修改为以小时、分、秒与度、角分、角秒表示。
1 | SUBROUTINE thetaA ( RA, rah, ram, ras ) |
由此也可以发现,Fortran在调用子程序时,与python略有不同,即使是最开始的值,也有可能被修改,在将输入值取负号后,还要再取一次负号防止更改了初始值。
题目二
完整内容附于最后。
与题一的初始数据不同为观测站的坐标。
通过查询兴隆观测站官网可得数据。http://www.xinglong-naoc.org/html/jggk/detail-2.html
1 | DATA GLON, GLAT, HT / 117.577222D0, 40.395833D0, 900.D0 / |
为了程序的美观,用循环进行处理。首先建立字符串数组,然后按顺序抽取即可。
1 | CHARACTER*3 PLANETS_name(9),PLANET_name |
对是否能观测到,此处理解为是否处于地平线以上,由此有
1 | IF (zdd.GT.90.0) THEN |
实验结果
题目一
1 | NOVAS Calculations |
题目二
由结果可知位于兴隆观测站,此刻月球在地平线以下,不可见。
但由于观测时间为2020年5月1日,$23^h15^m43^s.55\mathrm{UTC}$
北京时间为2020年5月2日,$7^h15^m43^s.55\mathrm{UTC+8}$
此刻已经天亮,想观察其他行星也较为困难。
1 | NOVAS Calculations |
sample.f内容
1 | * |
star.f内容[题目一]
1 | IMPLICIT DOUBLE PRECISION ( A-H, O-Z ) |
planet.f内容[题目二]
1 | IMPLICIT DOUBLE PRECISION ( A-H, O-Z ) |
ps:
hexo公式总是容易出毛病。
1 | $\mathrm{\mu_ \alpha=-354.45 mas/y \quad \mu_ \alpha=+595.35 mas/y}$ |
这句话有问题吗? 就是识别不出来。