位置と速度を銀心座標系に変換または銀心座標系から位置と速度を変換する

本稿では,どのように使用するかとカスタマイズについていくつかを示す Galactocentric 日心を中心とした空の位置、距離、自己および半径方向速度を銀心デカルト座標系に変換し、その逆も同様である。

主な構成可能なパラメータ Galactocentric フレームは銀河系内の太陽系の重心の位置と速度を制御する。これは,銀河系中心のIRS座標,銀河系中心までの距離(太陽−銀河系中心線をつねに銀心フレームと仮定したx軸)と,銀心フレームにおける太陽のデカルト3速度で指定されている。まず,これらの値をカスタマイズする方法を示し,SgrA*の正確な運動を入力することで太陽運動を設定する方法を示す.

簡潔さのため、以下の例では、太陽系の重心のみを“太陽”と呼ぶことができることに注意されたい。

By: Adrian Price-Whelan

ライセンス:BSD

製造 print すべてのバージョンのPythonで同じ方法を使用して、numpy、matplotlibを設定し、より良い描画パラメータのセットを使用します:

import numpy as np
import matplotlib.pyplot as plt
from astropy.visualization import astropy_mpl_style
plt.style.use(astropy_mpl_style)

必要なAsteryサブバッグの導入

import astropy.coordinates as coord
import astropy.units as u

まずICRSフレームワークで1つの重心座標と速度を定義してみよう.STAR HD 39881のデータを使用します Simbad データベース:

c1 = coord.SkyCoord(ra=89.014303*u.degree, dec=13.924912*u.degree,
                    distance=(37.59*u.mas).to(u.pc, u.parallax()),
                    pm_ra_cosdec=372.72*u.mas/u.yr,
                    pm_dec=-483.69*u.mas/u.yr,
                    radial_velocity=0.37*u.km/u.s,
                    frame='icrs')

これは高度に独自の恒星であり、その位置と速度を銀河中心のフレームに変換し、大きな3 D速度があるかどうかを見たいと仮定する。Astropyのデフォルト太陽位置と運動パラメータを使用するためには、以下の操作を実行するだけです。

ここから生成されたものにアクセスすることができます Galactocentric 例は、3 Dデカルト速度成分を見るために使用される:

出て:

30.254684717897074 km / s 171.29916086104885 km / s 18.19390627095307 km / s

The default parameters for the Galactocentric frame are detailed in the linked documentation, but we can modify the most commonly changes values using the keywords galcen_distance, galcen_v_sun, and z_sun which set the sun-Galactic center distance, the 3D velocity vector of the sun, and the height of the sun above the Galactic midplane, respectively. The velocity of the sun can be specified as an Quantity object with velocity units and is interepreted as a Cartesian velocity, as in the example below. Note that, as with the positions, the Galactocentric frame is a right-handed system (i.e., the Sun is at negative x values) so v_x is opposite of the Galactocentric radial velocity:

v_sun = [11.1, 244, 7.25] * (u.km / u.s)  # [vx, vy, vz]
gc_frame = coord.Galactocentric(
    galcen_distance=8*u.kpc,
    galcen_v_sun=v_sun,
    z_sun=0*u.pc)

そして、カスタムパラメータを使用してこのフレームに変換することができます:

出て:

28.427958360720748 km / s 169.69916086104888 km / s 17.70831652451455 km / s

太陽運動を指定するのは時々有用で、使用する proper motion of Sgr A* デカルト速度成分ではありません距離を仮定した場合,以下の方法を用いて自己成分をデカルト速度成分に変換することができる. astropy.units

galcen_distance = 8*u.kpc
pm_gal_sgrA = [-6.379, -0.202] * u.mas/u.yr # from Reid & Brunthaler 2004
vy, vz = -(galcen_distance * pm_gal_sgrA).to(u.km/u.s, u.dimensionless_angles())

銀河系の中心の視線速度つまり11キロ/秒を仮定する必要があります

vx = 11.1 * u.km/u.s
v_sun2 = u.Quantity([vx, vy, vz])  # List of Quantity -> a single Quantity

gc_frame2 = coord.Galactocentric(galcen_distance=galcen_distance,
                                 galcen_v_sun=v_sun2,
                                 z_sun=0*u.pc)
gc3 = c1.transform_to(gc_frame2)
print(gc3.v_x, gc3.v_y, gc3.v_z)

出て:

28.427958360720748 km / s 167.61484955608267 km / s 18.118916793584443 km / s

これらの変換も逆方向に動作している.これは,シミュレーションや論理データを観測可能な量に変換するために非常に有用である.例えば、異なる銀心半径上に同じ円速度で4つの理論円軌道を生成し、それらを日銀座標に変換する。

まず銀河中心座標に幾何学図形を可視化しましょう以下はループの位置と速度であり,速度マップでは4つのループの速度が同じであるため,同一曲線の下に重なっていることに注意されたい.

fig,axes = plt.subplots(1, 2, figsize=(12,6))

# Positions
axes[0].plot(gc_rings.x.T, gc_rings.y.T, marker='None', linewidth=3)
axes[0].text(-8., 0, r'$\odot$', fontsize=20)

axes[0].set_xlim(-30, 30)
axes[0].set_ylim(-30, 30)

axes[0].set_xlabel('$x$ [kpc]')
axes[0].set_ylabel('$y$ [kpc]')

# Velocities
axes[1].plot(gc_rings.v_x.T, gc_rings.v_y.T, marker='None', linewidth=3)

axes[1].set_xlim(-250, 250)
axes[1].set_ylim(-250, 250)

axes[1].set_xlabel(f"$v_x$ [{(u.km / u.s).to_string('latex_inline')}]")
axes[1].set_ylabel(f"$v_y$ [{(u.km / u.s).to_string('latex_inline')}]")

fig.tight_layout()

plt.show()
plot galactocentric frame

銀河系座標に変換して観察可能な座標で光の輪を可視化することができます

gal_rings = gc_rings.transform_to(coord.Galactic)

fig, ax = plt.subplots(1, 1, figsize=(8, 6))
for i in range(len(ring_distances)):
    ax.plot(gal_rings[i].l.degree, gal_rings[i].pm_l_cosb.value,
            label=str(ring_distances[i]), marker='None', linewidth=3)

ax.set_xlim(360, 0)

ax.set_xlabel('$l$ [deg]')
ax.set_ylabel(fr'$\mu_l \, \cos b$ [{(u.mas/u.yr).to_string("latex_inline")}]')

ax.legend()

plt.show()
plot galactocentric frame

スクリプトの総実行時間: (0分0.421秒)

Gallery generated by Sphinx-Gallery