銀心座標系の記述

他の多くの枠組みは astropy.coordinates are standardized in some way (e.g., defined by the IAU), there is no standard Milky Way reference frame with the center of the Milky Way as its origin. (This is distinct from Galactic coordinates, which point toward the Galactic Center but have their origin in the Solar System). The Galactocentric frame class is meant to be flexible enough to support all common definitions of such a transformation, but with reasonable default parameter values, such as the solar velocity relative to the Galactic center, the solar height above the Galactic midplane, etc. Below, we describe our generalized definition of the transformation ICRSから銀河中心座標まで describe how to customize the default Galactocentric parameters 時に使う Galactocentric パラメータ値を明示的に転送することなくフレームを初期化する。

変容の定義

本稿では,以下のように述べた. ICRS 至る Galactocentric 座標です。ここでは、数学的な微妙な点と、この枠組みが公式標準/定義されていない事実を考慮して、この点を詳細に説明する。この変換をコードでどのように使用するかの例については、参照されたい 実例. 部分 Galactocentric 類文書。

IRS基準系の3 D位置から右揚角、赤緯、日心距離から始めたとしましょう \((\alpha, \delta, d)\) それがそうです。デカルト座標から球面座標への標準変換を使用してデカルト位置に変換することができます

\[\begin{split}\BEGIN{整列} X_{\rm ICRS}&=d\cos{\alpha}\cos{\Delta}\\ Y_{\rm ICRS}&=d\sin{\alpha}\cos{\Delta}\\ Z_{\rm ICRS}&=d\sin{\増量}\\ \boldSymbol{r}_{\rm ICRS}&=\Begin{pMatrix} X_{\rm ICRS}\\ Y_{\rm ICRS}\\ Z_{\rm ICRS} \end{pMatrix}\end{位置合わせ}\end{split}\]

最初の変換は回転します \(x_{{\rm icrs}}\) 軸は新しいものになります \(x'\) 軸は銀河中心(GC)を指し,ICRS位置で指定される. \((\alpha_{{\rm GC}}, \delta_{{\rm GC}})\) (います) Galactocentric FrameこれはFrame属性によって制御される galcen_coord ):

\[\begin{split}\BEGIN{整列} \boldSymbol{R}_1&=\Begin{bMatrix} \cos\Delta_{\rm gc}&0&\sin\Delta_{\rm gc}\\ 0&1&0\\ -\sin\Delta_{\rm gc}&0&\cos\Delta_{\rm gc}\end{bMatrix}\ \太字記号{R}_2&= \BEGIN{bMatrix} \cos\alpha_{\rm gc}&\sin\alpha_{\rm gc}&0\\ -\sin\alpha_{\rm gc}&\cos\alpha_{\rm gc}&0\\ 0&0&1 \終了{bMatrix}。\終了{整列}\end{split}\]

これまでに変換は \(x'\) 太陽からGCへのベクトルの軸を持つが, \(y'\) そして \(z'\) 軸は任意の方向を向いている.国際天文学連合会が定義した銀河系座標北極の法線として銀河系平面の方向を採用した (Blaauw et. al. 1960 )である。この追加的な“ロール”の角度は \(\eta\) 沿線のドットメッシュを変換することで測定しました \(l=0\) この仮フレームに追加して二乗を最小化します \(y'\) 位置について。私たちが発見したのは

\[\begin{split}\BEGIN{整列} \eta&=58.5986320306^\circ\\ \太字記号{R}_3&= \BEGIN{bMatrix} 1&0&0\\ 0&\cos\eta&\sin\eta\\ 0&-\sin\eta&\cos\eta \end{bMatrix}\end{整列}\end{split}\]

これまでの完全な回転行列は

\[\BEGIN{集合} \boldSymbol{R}=\boldSymbol{R}_3\boldSymbol{R}_1\boldSymbol{R}_2=\ \BEGIN{bMatrix} \cos\alpha_{\rm gc}\cos\Delta_{\rm gc}&\cos\Delta_{\rm gc}\sin\rm gc}&-\sin\Delta_{\rm gc}\sin\rm gc}\ \cos\alpha_{\rm gc}\sin\Delta_{\rm gc}\sin\eta-\sin\alpha_{\rm gc}\cos\etc&\sin\alpha_{\rm gc}\sin\Delta_{\rm gc}\sin\eta+\cos\alpha_{\rm gc}\cos\etc&\cos\delta\rm gc}\ \cos\alpha_{\rm gc}\sin\Delta_{\rm gc}\cos\eta+\sin\alpha_{\rm gc}\sin\etc&\sin\alpha_{\rm gc}\sin\Delta_{\rm gc}\cos\eta-\cos\alpha_{\rm gc}\sin\etc&\cos\Delta_{\rm gc} \end{bMatrix}\end{収集済み}\]

回転後の位置ベクトルを用いる \(\boldsymbol{{R}}\boldsymbol{{r}}_{{\rm icrs}}\) GCまでの距離を引くことができます \(d_{{\rm GC}}\) これは純粋に \(x'\) 軸:

\[\BEGIN{整列} \boldSymbol{r}‘&=\boldSymbol{R}\boldSymbol{r}_{\rm ICRS}-d_{\rm gc}\hat{\boldbol{x}_{\rm gc}。\end{aligned}\]

どこだ? \(\hat{{\boldsymbol{{x}}}}_{{\rm GC}} = (1,0,0)^{{\mathsf{{T}}}}\) それがそうです。

最終的な変換最終的な回転の周りで太陽の銀河系中面上方の高さを説明する(指定された)高さ \(y''\) 角度軸. \(\theta= \sin^{{-1}}(z_\odot / d_{{\rm GC}})\)

\[\begin{split}\BEGIN{整列} \太字記号{H}&= \BEGIN{bMatrix} \cos\theta&0&\sin\theta\\ 0&1&0\\ -\sin\theta&0&\cos\theta \end{bMatrix}\end{整列}\end{split}\]

どこだ? \(z_\odot\) 測定された太陽の中面上方の高さです。

そして完全に

\[\boldSymbol{r}_{\rm GC}=\boldSymbol{H}\Left(\boldSymbol{R}_{\rm ICRS}-d_{\rm GC}\hat{\boldSymbol{x}_{\rm GC}\Right)。\]

例えば:

どう使うかについて Galactocentric フレーム、参照されたい 位置と速度を銀心座標系に変換または銀心座標系から位置と速度を変換する それがそうです。

デフォルトフレームパラメータの制御

すべてのフレーム定義パラメータ Galactocentric フレームワークはカスタマイズ可能であり,パラメータを渡すことで Galactocentric 初期化器です。しかし,フレームワークを用いることは通常,個々のパラメータを入力することなく便利である.したがって,このクラスはこれらのパラメータに合理的なデフォルト値を提供するが,銀河系における太陽の位置や運動のより正確な測定が行われている。属性のデフォルト値 Galactocentric したがって、必要に応じて使用される後続のバージョンに応じてフレーム属性が更新される astropy それがそうです。したがって、我々は、このフレームで使用されるデフォルトパラメータ値をグローバルまたは局所的に制御する機構を提供する galactocentric_frame_defaults ScienceState 級友たち。

♪the galactocentric_frame_defaults クラス制御におけるデフォルトパラメータ設定。 Galactocentric 文字列名のセットをパラメータ値の特定の選択にマッピングすることにより。有効名称の最新リストについては、ご参照ください galactocentric_frame_defaults しかしこれらの名前は 'pre-v4.0' デフォルトパラメータ値を、その元の定義(すなわち、Asterpy−V 4.0前の)値に設定し、 'v4.0' デフォルトパラメータ値を、Astropyバージョン4.0で更新されたより現代的な測定値のセットに設定します。さらに、カスタム測定セットは、登録することができる galactocentric_frame_defaults 内蔵オプションと同じように使います。

galactocentric_frame_defaults また,すべてのパラメータ値の引用(すなわちパラメータ値を定義する科学論文)や,さらに指定されたメタデータ情報を追跡する.

他の人と ScienceState サブクラス、 galactocentric_frame_defaults クラスは、実行時にフレームワークのデフォルト値をグローバルに設定するために使用できます。

実例.

デフォルトパラメータ値は初期化によって Galactocentric パラメータを持たないフレームワーク:

>>> from astropy.coordinates import Galactocentric
>>> Galactocentric()
<Galactocentric Frame (galcen_coord=<ICRS Coordinate: (ra, dec) in deg
    (266.4051, -28.936175)>, galcen_distance=8.122 kpc, galcen_v_sun=(12.9, 245.6, 7.78) km / s, z_sun=20.8 pc, roll=0.0 deg)>

これらのデフォルト値をこのように修正することができます:

>>> from astropy.coordinates import galactocentric_frame_defaults
>>> _ = galactocentric_frame_defaults.set('v4.0') 
>>> Galactocentric() 
<Galactocentric Frame (galcen_coord=<ICRS Coordinate: (ra, dec) in deg
    (266.4051, -28.936175)>, galcen_distance=8.122 kpc, galcen_v_sun=(12.9, 245.6, 7.78) km / s, z_sun=20.8 pc, roll=0.0 deg)>
>>> _ = galactocentric_frame_defaults.set('pre-v4.0') 
>>> Galactocentric() 
<Galactocentric Frame (galcen_coord=<ICRS Coordinate: (ra, dec) in deg
    (266.4051, -28.936175)>, galcen_distance=8.3 kpc, galcen_v_sun=(11.1, 232.24, 7.25) km / s, z_sun=27.0 pc, roll=0.0 deg)>

デフォルトパラメータはまた、コンテキストマネージャとしてローカルにデフォルトパラメータ値をコードの一部に変更することによって更新することができます:

>>> with galactocentric_frame_defaults.set('pre-v4.0'):
...     print(Galactocentric()) 
<Galactocentric Frame (galcen_coord=<ICRS Coordinate: (ra, dec) in deg
    (266.4051, -28.936175)>, galcen_distance=8.3 kpc, galcen_v_sun=(11.1, 232.24, 7.25) km / s, z_sun=27.0 pc, roll=0.0 deg)>

同様に、デフォルトパラメータ値の変更は、明示的に指定されたフレーム属性に影響を与えない:

>>> import astropy.units as u
>>> with galactocentric_frame_defaults.set('pre-v4.0'):
...     print(Galactocentric(galcen_distance=8.0*u.kpc)) 
<Galactocentric Frame (galcen_coord=<ICRS Coordinate: (ra, dec) in deg
    (266.4051, -28.936175)>, galcen_distance=8.0 kpc, galcen_v_sun=(11.1, 232.24, 7.25) km / s, z_sun=27.0 pc, roll=0.0 deg)>

追加のパラメータセットは、例えば、Dehnen&Binney(1998)を使用した太陽運動の測定のために登録されてもよい。1-sigmaエラーのようなメタデータを追加することもできます:

>>> state = galactocentric_frame_defaults.get_from_registry("v4.0")
>>> state["parameters"]["galcen_v_sun"] = (10.00, 225.25, 7.17) * (u.km / u.s)
>>> state["references"]["galcen_v_sun"] = "http://www.adsabs.harvard.edu/full/1998MNRAS.298..387D"
>>> state["error"] = {"galcen_v_sun": (0.36, 0.62, 0.38) * (u.km / u.s)}
>>> galactocentric_frame_defaults.register(name="DB1998", **state)

前の例と同様に、新しいパラメータセットは、get/set::

>>> state = galactocentric_frame_defaults.get_from_registry("DB1998")
>>> print(state["error"]["galcen_v_sun"])  
[0.36 0.62 0.38] km / s

Astropy v 4.1から、使用しない限り galactocentric_frame_defaults クラスのデフォルトパラメータ値は Galactocentric フレームは現在 'latest' これは,Astropyを更新すると,デフォルトパラメータ値が変更される可能性があることを意味する.もし使ったら Galactocentric すべてのパラメータ値が明示的に指定されていない場合、我々は、太陽運動または他のフレームパラメータの選択に敏感に依存する任意の科学コードにおいてフレームデフォルト設定を手動で設定することを提案する。たとえば,このようなコードでは,以下のようなものを導入ブロックに追加することを提案する(ここで用いる. 'v4.0' 例えば):

>>> import astropy.coordinates as coord
>>> coord.galactocentric_frame_defaults.set('v4.0')