DE405/406 アクセスライブラリ

JPL の精密天体暦 DE405/DE406 のバイナリデータ (de405/6.unx) からデータを読み出すためのライブラリとコマンドです。 コードは ISO C で記述してあります。 [ トップページ ]

何ができるか

JPL の天体暦 DE405/DE406 のバイナリ形式ファイル de405.unx, de406.unx を読み出し、惑星と月の位置・速度を出力します。 また、コマンドラインから呼び出すサンプルも含まれています。 なお、JPL の天体暦配布サイトに置かれている C のリーダは、バイナリ形式の データファイルを扱うことができません。

想定環境

FreeBSD/i386 (LE/32bit) と MacOS X の gcc (BE/32bit), LSI-C 86 3.30 試食版 (LE/16bit) などで動作確認をしていますが、 他のプラットフォームでも若干の修正で動くと思います。

ダウンロード

de405-1.4.tar.gz

作り方・使い方

アーカイブを展開して、作成されたディレクトリ内で make すると de405 という実行形式ができます。

% ./de405 -f <DEファイル> <時刻(ユリウス日)> <天体番号>

とすると6つのフィールドが出力されます。前の三つが位置、後の三つが速度 です。座標系は太陽系重心を原点とする J2000.0 の地球赤道座標で、単位は それぞれ (km) (km/day) です。

testeph.c は天体暦に付属のテストプログラム testeph.f に相当するテスト プログラムです。Makefile の変数 `DE405' に、ファイル de40[56].unx があるディレクトリを指定し、

% make test DE405=<somewhere>

すると、ファイルとプログラムのテストを行います。 利用環境下でコンパイルされたコードが正しく動作しているかどうかを 確認することができます。

de405.c, de405.h には 天体暦読みだしのための API が入っており、適当なプログラムに組み込んで 使うことができます。

API

名前
        de405_open, de405_close,
         de405_ephem - JPL 天体暦 DE405/406 読みだし関数

書式
        DE405 *de405_open(const char *path);
        void de405_close(DE405 *hp);
        int de405_ephem(DE405 *hp, double jd, int n,
                 double position[3], double velocity[3]);

説明
        de405_openは ファイル名を指定して天体暦ファイルを開き、DE405 
        構造体のポインタに結びつけます。戻り値のポインタは、
        de405_ephem, de405_close の引数になります。

        de405_close は DE405 構造体 hp に割り当てられたファイルハンド
        ルを閉じ、メモリブロックを開放します。

        de405_ephem は DE405 構造体に結びつけられた天体暦ファイルのデー
        タを用いて、指定時刻における天体の位置と速度を計算します。引数
        の説明は以下の通りです。

        DE405 *hp ..... DE405 構造体へのポインタ。
        double jd ..... ユリウス日であらわした TDB (太陽系力学時)。
        int n ......... 天体もしくは計算対象を表す番号。

                        0 : 水星
                        1 : 金星
                        2 : 地球・月系の重心
                        3 : 火星
                        4 : 木星
                        5 : 土星
                        6 : 天王星
                        7 : 海王星
                        8 : 冥王星
                        9 : 月 (地心に対する)
                        10: 太陽
                        11: 章動
                        12: 月の秤動


        double position[3] .. 位置 (km)。太陽系重心を原点とする 
                J2000.0 の地球の平均赤道座標に対する値が格納されます。
                位置情報が不要なときは NULL を指定することも可。 n に 9
                 (月)を指定したときは、地球の中心を原点とする J2000.0分
                点の赤道座標値が格納されます。

                n に 11 (章動) を指定したときは ΔψとΔε (ラジアン)
                が格納されます。また、position[2] にはゼロが入ります。
                n に 12 (月の秤動) を指定したときは、オイラー角
                (ラジアン) が格納されます。


        double velocity[3] ... 速度 (km/day) 。J2000.0の地球の平均赤道
                座標に対する値。速度情報が不要のときは NULL を指定する
                ことも可。n に 11 (章動) 、12 (月の秤動)を指定したとき
                も、position[3]の各要素の時間微分値が格納されます。



戻り値

        de405_open は、ファイルのオープンに失敗したり、天体暦ファイル
        の書式に問題が認められたときは NULL を戻します。

        de405_ephem は、関数の成功時にはゼロを返します。ファイルからの
        レコードの読みだしに失敗したり、引数の範囲エラーが検出されたと
        きには -1 を返します。


エラー
        [EINVAL]        引数の範囲エラー。
        [EFTYPE]        ファイル内容の異常。

        APIが失敗すると、 errno には、ライブラリ関数が設定したエラーコー
        ドまたは上の二つのコードが設定されます。 EFTYPE の存在しないプ
        ラットフォームではどちらのケースでも EINVAL がセットされます。

関連リンク

変更履歴


$Date: 2005/05/08 11:09:28 $