宇宙学計算 (astropy.cosmology

序言:序言

♪the astropy.cosmology サブパックは、宇宙学を表すクラスと、宇宙学モデルに依存した常用量を計算するための効用関数とを含む。これは、測定された赤シフトまたは測定された角度間隔に対応する横方向間隔に対応する距離、年齢、およびレビュー時間を含む。

スタート

宇宙量の計算方法は Cosmology 物体です。

実例.

Z=0のハッブル定数を計算するために(すなわち, H0 )およびz=3:における角分に対応する横方向固有キロパスカル秒(Kpc)の個数:

>>> from astropy.cosmology import WMAP9 as cosmo
>>> cosmo.H(0)  
<Quantity 69.32 km / (Mpc s)>
>>> cosmo.kpc_proper_per_arcmin(3)  
<Quantity 472.97709620405266 kpc / arcmin>

ここでWMAP 9は内蔵されたオブジェクトであり,9年間のWMAP結果におけるパラメータで宇宙学を記述している.他にもいくつかの内蔵宇宙学が提供されています(参照 Built-in Cosmologies )である。宇宙学的対象の利用可能な方法は FLRW 級友たち。IPythonを使用している場合は、タブ補完を使用して利用可能な方法のリストを印刷することもできます。そのためには、上記の例の宇宙学を導入した後、キーを入れてください cosmo. IPythonプロンプトでタブキーを押してください。

これらすべての手法は,任意の形状の赤シフト配列を入力として受け取る.

>>> from astropy.cosmology import WMAP9 as cosmo
>>> cosmo.comoving_distance([0.5, 1.0, 1.5])  
<Quantity [1916.06941724, 3363.07062107, 4451.7475201 ] Mpc>

以下の宇宙学のうちの1つを使用して、FLRWのような宇宙学を作成することができます。

>>> from astropy.cosmology import FlatLambdaCDM
>>> cosmo = FlatLambdaCDM(H0=70, Om0=0.3, Tcmb0=2.725)
>>> cosmo  
FlatLambdaCDM(H0=70 km / (Mpc s), Om0=0.3, Tcmb0=2.725 K,
              Neff=3.04, m_nu=[0. 0. 0.] eV, Ob0=None)

付加宇宙学的パラメータの存在に注意してください(例えば、 Neff 有効ニュートリノ種類の数)とデフォルト値;これらは構造関数の呼び出しで明示的に指定することも可能である.

宇宙学サブパック利用 units したがって,多くの場合,ユニットが付加された値を返す.より詳細については、サブルーチンパッケージの文書を参照してくださいが、ここでは、浮動小数点または配列値へのアクセス方法について簡単に説明します。

>>> from astropy.cosmology import WMAP9 as cosmo
>>> H0 = cosmo.H(0)
>>> H0.value, H0.unit  
(69.32, Unit("km / (Mpc s)"))

Vbl.使用 astropy.cosmology

ほとんどの機能は FLRW 相手。これは均一で等方的な宇宙観を表している(フリードマン-ルマット-ロバートソン-ウォークドゲージを特徴とし、アインシュタイン場方程式を解決する人の名前で命名された)。しかし、このクラスを直接使用することはできません。そのサブクラスを使用してダークエネルギーモデル、例えばダークエネルギーモデルを指定しなければなりませんから。 FlatLambdaCDM それがそうです。

実例.

新しいものを作ることができます FlatLambdaCDM ハッブルパラメータおよびオメガ物質(いずれもz=0)を与えるパラメータを有するオブジェクト:

>>> from astropy.cosmology import FlatLambdaCDM
>>> cosmo = FlatLambdaCDM(H0=70, Om0=0.3)
>>> cosmo
FlatLambdaCDM(H0=70 km / (Mpc s), Om0=0.3, Tcmb0=0 K,
              Neff=3.04, m_nu=None, Ob0=None)

この操作は、単位を使用してより明確に完了することもでき、以下の動作を実行することを提案する。

>>> from astropy.cosmology import FlatLambdaCDM
>>> import astropy.units as u
>>> cosmo = FlatLambdaCDM(H0=70 * u.km / u.s / u.Mpc, Tcmb0=2.725 * u.K, Om0=0.3)

However, most of the parameters that accept units (H0, Tcmb0) have default units, so unit quantities do not have to be used (with the exception of neutrino masses, where you must supply a unit if you want massive neutrinos).

説明されている所定の宇宙学は Getting Started 節は以下の例である FlatLambdaCDM また,同様の方法を持つ.したがって,赤シフト4までの光度距離は以下の式で求めることができる。

>>> cosmo.luminosity_distance(4)  
<Quantity 35842.353618623194 Mpc>

あるいはz=0の宇宙年齢:

>>> cosmo.age(0)  
<Quantity 13.461701658024014 Gyr>

赤シフトアレイも受け入れています

>>> cosmo.age([0.5, 1, 1.5]).value  
array([8.42128013, 5.74698021, 4.19645373])

ご参照ください FLRW そして FlatLambdaCDM すべての利用可能なメソッドと属性の対象文書文字列。

平面宇宙に加えて非平面タイプをサポートしています LambdaCDM. A variety of standard cosmologies with the parameters already defined are also available (see Built-in Cosmologies ):

>>> from astropy.cosmology import WMAP7   # WMAP 7-year cosmology
>>> WMAP7.critical_density(0)  # critical density at z = 0  
<Quantity 9.31000324385361e-30 g / cm3>

密度パラメータが赤に応じてどのように変化しているかも見られます:

>>> from astropy.cosmology import WMAP7   # WMAP 7-year cosmology
>>> WMAP7.Om([0, 1.0, 2.0]), WMAP7.Ode([0., 1.0, 2.0])  
(array([0.272     , 0.74898522, 0.90905234]),
 array([0.72791572, 0.2505506 , 0.0901026 ]))

WMAP 7は宇宙が平坦であると仮定しているにもかかわらず、光子とニュートリノが含まれているため、それらの合計は完全に1に等しいわけではないことに注意されたい。また,密度パラメータは単位がないため,そうでもないことに注意されたい. Quantity 物体です。

キーワードパラメータを伝達することにより,クラスインスタンス化時に赤シフトがゼロになる重子物質密度を指定することができる. Ob0 **

>>> from astropy.cosmology import FlatLambdaCDM
>>> cosmo = FlatLambdaCDM(H0=70, Om0=0.3, Ob0=0.05)
>>> cosmo
FlatLambdaCDM(H0=70 km / (Mpc s), Om0=0.3, Tcmb0=0 K,
              Neff=3.04, m_nu=None, Ob0=0.05)

この場合,赤シフトが0の暗黒物質密度のみをクラス属性として用いることができる. Odm0 これらの方法を用いて暗黒物質密度と重子物質密度の赤移動進化を計算することができる。 Odm そして Ob それぞれ,である.もし…。 Ob0 クラスインスタンス化されていない場合に指定されていない場合は,デフォルトで考える. None それに依存した方法は ValueError

>>> from astropy.cosmology import FlatLambdaCDM
>>> cosmo = FlatLambdaCDM(H0=70, Om0=0.3)
>>> cosmo.Odm(1)
Traceback (most recent call last):
...
ValueError: Baryonic density not set for this cosmology, unclear
meaning of dark matter density

宇宙学の実例にはオプションのものがあります name 宇宙学の属性を記述することができます

>>> from astropy.cosmology import FlatwCDM
>>> cosmo = FlatwCDM(name='SNLS3+WMAP7', H0=71.58, Om0=0.262, w0=-1.016)
>>> cosmo
FlatwCDM(name="SNLS3+WMAP7", H0=71.6 km / (Mpc s), Om0=0.262,
         w0=-1.02, Tcmb0=0 K, Neff=3.04, m_nu=None, Ob0=None)

これはダークエネルギーモデルの異なる例でもあります一定のダークエネルギー状態方程式を持っていますが必ずしも宇宙定数の扁平宇宙ではありません多くの追加ダークエネルギーモデルもサポートされています(参照 Specifying a dark energy model )。

重要なのは各事例の宇宙学的パラメータは変わらないということですつまり変えたいなら例えば Om 新しいクラスインスタンスを作成する必要があります。これをより便利にするために clone 指定された値を変更したコピーをコピーすることができる動作が提供されます。この操作によって宇宙学のタイプを変更することはできません(例えば、平面を非平面に変更することに注意してください)。

宇宙学の実例をコピーするには、ご利用ください clone 操作:

>>> from astropy.cosmology import WMAP9
>>> newcosmo = WMAP9.clone(name='WMAP9 modified', Om0=0.3141)
>>> WMAP9.H0, newcosmo.H0  # some values unchanged  
(<Quantity 69.32 km / (Mpc s)>, <Quantity 69.32 km / (Mpc s)>)
>>> WMAP9.Om0, newcosmo.Om0  # some changed  
(0.2865, 0.3141)
>>> WMAP9.Ode0, newcosmo.Ode0  # Indirectly changed since this is flat  
(0.7134130719051658, 0.6858130719051657)

宇宙量を求めて値の赤移動を与える

宇宙量を知っていて赤の移動を知りたければ z_at_value それがそうです。

例を引く

赤いシフトを探す手順を使って z_at_value

>>> import astropy.units as u
>>> from astropy.cosmology import Planck13, z_at_value
>>> z_at_value(Planck13.age, 2 * u.Gyr)  
3.1981226843560968

いくつかの量については、複数の赤シフトが1つの値を満たすことができる。この場合、ご利用いただけます zmin そして zmax キーワードは探索範囲を制限する.ご参照ください z_at_value 文書文字列は、より詳細な用法例を取得する。

内蔵宇宙学

WMAPとプランク衛星データを用いた解析により,多くのプリロードされた宇宙学を得ることができる。例えば:

>>> from astropy.cosmology import Planck13  # Planck 2013
>>> Planck13.lookback_time(2)  # lookback time in Gyr at z=2  
<Quantity 10.51184138 Gyr>

事前定義された宇宙学の完全なリストは cosmology.parameters.available まとめは以下のとおりである.

名前.名前.

出所

H 0

AM

平坦である.

WMAP 5

Komatsu et al.2009年

70.2

0.277

はい、そうです。

WMAP 7

Komatsu et al.2011年

70.4

0.272

はい、そうです。

WMAP 9

Hinshawら。2013年

69.3

0.287

はい、そうです。

プランク13

プランク協力研究所2013,16ページ

67.8

0.307

はい、そうです。

プランク15

プランク共同研究室2015、13ページ

67.7

0.307

はい、そうです。

プランク18

プランク共同研究室2018、第6巻

67.7

0.310

はい、そうです。

注釈

プランク2015年の論文とは異なり、プランク2018年の論文には Om0 しかしPlanck 18オブジェクトは m_nu 代わりに一貫性がありますだから、 Om0 プランク18の価値はプランク2018年の論文とはやや異なるが,同じ宇宙学モデルを代表している。

現在これら全ては FlatLambdaCDM それがそうです。各パラメータの適切なソースの詳細については、各オブジェクトの文書文字列を参照してください:

>>> from astropy.cosmology import WMAP7
>>> print(WMAP7.__doc__)
WMAP7 instance of FlatLambdaCDM cosmology
(from Komatsu et al. 2011, ApJS, 192, 18, doi: 10.1088/0067-0049/192/2/18.
Table 1 (WMAP + BAO + H0 ML).)

ダークエネルギーモデルの指定

基準と一緒に FlatLambdaCDM 上記のモデルに基づいて、いくつかの追加的なダークエネルギーモデルを提供する。 FlatLambdaCDM そして LambdaCDM ダークエネルギーは宇宙学的定数であり,最もよく使われる場合であると仮定し,前者は宇宙が平坦であると仮定し,後者は空間の屈曲を許す。 FlatwCDM そして wCDM 一定の暗エネルギー状態方程式がパラメータ化されていると仮定する \(w_{{0}}\) それがそうです。ダークエネルギー状態方程式の2つの形式を示しました簡単な一階線形展開 \(w(z) = w_{{0}} + w_{{z}} z\) vt.から. w0wzCDM そして一般的なCPLテーブル( w0waCDM\(w(z) = w_{{0}} + w_{{a}} (1 - a) = w_{{0}} + w_{{a}} z / (1 + z)\) 軸の赤さを含むように汎化しています wpwaCDM\(w(z) = w_{{p}} + w_{{a}} (a_{{p}} - a)\) それがそうです。

ユーザはサブクラス化により自分の状態方程式を指定することができる. FLRW それがそうです。例については、提供されているサブクラスを参照してください。提案(ただし必要ではない)新しいサブクラスの構造関数のすべてのパラメータは属性として用いることができるからである. clone 方法仮定はこうである.子類化を堅持するのも賢明だ。 FLRW それらのいくつかの使用も、どのサブクラスにも伝播する内部最適化を必要とするので、そのサブクラスの1つではない。このような技法(距離計算をより速くすることができる)を用いたいユーザは,宇宙学モジュールのソースコードを参照して詳細な情報を知るべきである.

光子とニュートリノ

宇宙学コース(CAN)はエネルギー密度に対する光子とニュートリノの貢献を含む。デフォルトの場合,後者は品質がないと仮定される.これらの種の属性を制御する3つのパラメータはすべての宇宙学的初期化式の引数です Tcmb0 (z=0の宇宙マイクロ波背景の温度) Neff (ニュートリノの有効種類数)、および m_nu (ニュートリノ種の残留質量)。 Tcmb0 そして m_nu 単位数で表すべきである.これら3種類のデバイスの標準デフォルト値はそれぞれ-0 K,3.04,0 EVである.)の理由は Neff 3は主に電子−陽電子消滅によるニュートリノエネルギースペクトルの小衝突に関与しているのではないが,弱い相互作用物理的影響も受けている)。CMB温度を0に設定するとニュートリノと光子の寄与が除去される。ユーザが明示的に要求しない限り、これは、これらのコンポーネントを排除することを確実にするデフォルト設定である。

大質量ニュートリノはWMAP 7年宇宙学論文(Komatsuら)で述べられている方法を用いて処理されている。2011,ApJS,192,18,3.3節).これはそんなに簡単ではない \(\Omega_{{\nu 0}} h^2 = \sum_i m_{{\nu\, i}} / 93.04\,\mathrm{{eV}}\) 近似値。また注意してください。 \(\Omega_{{\nu}}(z)\) 運動エネルギーおよび残りの質量エネルギー成分を含み、Planck 13およびPlanck 15宇宙学は、質量非ゼロのニュートリノ(含まれていない)を含む。 \(\Omega_{{m0}}\) )。

添加質量ニュートリノは性能に大きな影響を与える可能性がある。特筆すべきは,距離測定と見返し時間の計算が質量ニュートリノなしの場合より3~4倍遅いことである。したがって、このような宇宙学において多くの距離を計算する必要があり、性能が重要である場合、メッシュ上でそれらを計算し、補間を使用することは特に有用である。

実例.

総質量−エネルギー密度に対する光子およびニュートリノの寄与は、赤シフトの関数とすることができる:

>>> from astropy.cosmology import WMAP7   # WMAP 7-year cosmology
>>> WMAP7.Ogamma0, WMAP7.Onu0  # Current epoch values  
(4.985694972799396e-05, 3.442154948307989e-05)
>>> z = [0, 1.0, 2.0]
>>> WMAP7.Ogamma(z), WMAP7.Onu(z)  
(array([4.98603986e-05, 2.74593395e-04, 4.99915942e-04]),
 array([3.44239306e-05, 1.89580995e-04, 3.45145089e-04]))

光子やニュートリノを計算から除外するには、設定することができます Tcmb0 0に設定する(これもデフォルト値):

>>> from astropy.cosmology import FlatLambdaCDM
>>> import astropy.units as u
>>> cos = FlatLambdaCDM(70.4 * u.km / u.s / u.Mpc, 0.272, Tcmb0 = 0.0 * u.K)
>>> cos.Ogamma0, cos.Onu0
(0.0, 0.0)

光子を含むことができますがニュートリノの寄与は含まれていません Tcmb0 ゼロではありません(2.725 Kは私たちの宇宙の基準値です) Neff 0:まで:

>>> from astropy.cosmology import FlatLambdaCDM
>>> cos = FlatLambdaCDM(70.4, 0.272, Tcmb0=2.725, Neff=0)
>>> cos.Ogamma([0, 1, 2])  # Photons are still present  
array([4.98603986e-05, 2.74642208e-04, 5.00086413e-04])
>>> cos.Onu([0, 1, 2])  # But not neutrinos  
array([0., 0., 0.])

ニュートリノ種の数は Neff デフォルトの場合は Neff=3 それがそうです。したがって,非ゼロニュートリノ品質が必要であれば,3つのニュートリノ品質を提供すべきである。ただし,1つの値のみを与えると,すべての種が同じ品質を持つと仮定する. Neff 各種間で平均的に分配されていると仮定する.

>>> from astropy.cosmology import FlatLambdaCDM
>>> import astropy.units as u
>>> H0 = 70.4 * u.km / u.s / u.Mpc
>>> m_nu = 0 * u.eV
>>> cosmo = FlatLambdaCDM(H0, 0.272, Tcmb0=2.725, m_nu=m_nu)
>>> cosmo.has_massive_nu
False
>>> cosmo.m_nu  
<Quantity [0., 0., 0.] eV>
>>> m_nu = [0.0, 0.05, 0.10] * u.eV
>>> cosmo = FlatLambdaCDM(H0, 0.272, Tcmb0=2.725, m_nu=m_nu)
>>> cosmo.has_massive_nu
True
>>> cosmo.m_nu  
<Quantity [0.  , 0.05, 0.1 ] eV>
>>> cosmo.Onu([0, 1.0, 15.0])  
array([0.00327011, 0.00896845, 0.01257946])
>>> cosmo.Onu(1) * cosmo.critical_density(1)  
<Quantity 2.444380380370406e-31 g / cm3>

これらの例を用いると FlatLambdaCDM 上記の例は、他のすべての宇宙学コースにも適用される。

開発者に対して:使用 astropy.cosmology 中に入って astropy

もしあなたが astropy コアまたは付属パッケージについては、デフォルトの宇宙学が通常有用であると仮定すると、関数またはメソッドが呼び出されるたびに適切な宇宙学を指定する必要はない。この場合、“デフォルト”宇宙学を指定することができる。

“default_cosmology”オプションは、デフォルト宇宙学を所定の値に設定します。 [cosmology.core] 構成ファイルの一部(参照) システムを構成する (astropy.config ) )である。あるいは、ご利用いただけます set 機能しています default_cosmology 現在のPythonセッションに宇宙学を設定します。上記の方法のうちの1つを使用してデフォルト宇宙学を設定していない場合、宇宙学モジュールは9年間のWMAPパラメータをデフォルトで使用します。

強くお勧めします default_cosmology 科学国家の客体です次に、以下のようなオーバーレイ·オプションを提供することができます。

def myfunc(..., cosmo=None):
    from astropy.cosmology import default_cosmology

    if cosmo is None:
        cosmo = default_cosmology.get()

    ... your code here ...

これはすべてのコードが明示的にカバーされない限り、デフォルト宇宙学を一貫して使用することを保証する。

注釈

一般的には、明確な宇宙学(例えば、 WMAP9.H(0) ではなく cosmology.default_cosmology.get().H(0) )である。デフォルト宇宙学の使用は通常保存されていなければなりません astropy コアや付属パッケージ。

別項参照

  • ホグ、“宇宙学における距離測定”、https://arxiv.org/abs/estio-ph/9905116

  • リンド、“宇宙を探索する拡張歴史”、https://arxiv.org/abs/estio-ph/0208512

  • NASAマイクロ波背景データ分析レガシーアーカイブ、https://lambda.gsfc.nasa.gov/

効果度と信頼度の範囲

このサブパッケージ中のコードは、いくつかの広く使用されているオンライン宇宙学計算機上でテストされ、参考論文で多くの計算を実行するために使用されている。モジュールで定期的にコードの赤シフト範囲をテストすることができます astropy.cosmology.tests.test_cosmology それがそうです。何か間違いを発見されましたら、お知らせください opening an issue at the GitHub repository もういいよ。

より困難な問題は,コードが有効な結果を返すと予想される赤シフト範囲である.これは必然的にモデルに依存するが,一般に,物質−放射等しい時期よりも数倍以上大きい赤シフトについては,数値結果が良好であることを期待すべきではない(したがって,典型的なモデルではz=5−6000より高くないが,あるモデルでは低い赤シフトが良くない可能性がある)。特に、あなたは注意すべきです scipy 積分が収束しない集積パケット(セッションごとに1回しか発行されない場合がある)について。

内蔵宇宙学はそれぞれの論文で示したパラメータを用いる.これらは限られた精度範囲しか提供しないので、この精度を超える派生数が一致することを期待すべきではない。例えば、プランク2013年と2015年の結果は、4桁のハッブル定数のみを提供している。したがって、新聞で5桁引用されているにもかかわらず、より良い年齢に達するために、プランクチームが引用した年齢と一致することを期待してはいけない。

参照/API

占星術·宇宙学包

宇宙学には,宇宙学的距離測定や他の宇宙学に関する計算のためのクラスや関数が含まれている。

ご参照ください Astropy documentation より詳細な使い方の例と参考を得るために。

機能

z_at_value \(関数,fval[, zmin, zmax, ztol, ...] )

赤い移動を見つける z いつですか func(z) = fval それがそうです。

クラス

Cosmology \(*args, * *kwargs)

宇宙学の基礎となっています

FLRW \(*args, * *kwargs)

等方性と斉次(Friedmann-Lemaitre-Robertson-Walker)宇宙学の一種類を述べた。

LambdaCDM \(*args, * *kwargs)

宇宙定数と曲率を持つFLRW宇宙学。

FlatLambdaCDM \(*args, * *kwargs)

宇宙定数と無曲率を持つFLRW宇宙学。

wCDM \(*args, * *kwargs)

一定の暗エネルギー状態方程式と曲率を有するFLRW宇宙学。

FlatwCDM \(*args, * *kwargs)

一定の暗エネルギー状態方程式と無空間曲率を有するFLRW宇宙学。

Flatw0waCDM \(*args, * *kwargs)

CPL暗エネルギー状態方程式と無曲率のFLRW宇宙学を有する。

w0waCDM \(*args, * *kwargs)

CPL暗エネルギー状態方程式と曲率のFLRW宇宙学を用いた。

wpwaCDM \(*args, * *kwargs)

CPL暗エネルギー状態方程式,ピボット赤移動,曲率を有するFLRW宇宙学。

w0wzCDM \(*args, * *kwargs)

可変暗エネルギー状態方程式と曲率を有するFLRW宇宙学。

default_cosmology \()

デフォルトで使用されている宇宙学。これを変更するには、以下の操作を実行してください::。

クラス継承関係図

Inheritance diagram of astropy.cosmology.core.Cosmology, astropy.cosmology.core.FLRW, astropy.cosmology.core.LambdaCDM, astropy.cosmology.core.FlatLambdaCDM, astropy.cosmology.core.wCDM, astropy.cosmology.core.FlatwCDM, astropy.cosmology.core.Flatw0waCDM, astropy.cosmology.core.w0waCDM, astropy.cosmology.core.wpwaCDM, astropy.cosmology.core.w0wzCDM, astropy.cosmology.realizations.default_cosmology