☰
原始行星建模工作流:Python+AstroPy+Cantera实现可复现行星形成模拟
2026/10/14 5:18:20 网站建设 项目流程

简介:这是一本聚焦精神内耗与事业发展双重困境的原创性成长指南,面向职场新人、创业探索者及长期处于自我消耗状态的高敏感人群,旨在提供可落地的认知升级路径与内在秩序重建方法。全书15万字,结构严密,以‘人类三段论’为理论基底,系统拆解原始阶段(天道)、混乱阶段与天下大同阶段的演化逻辑,并通过宇宙—人类—个人三层模型,深入阐释能量频率、无为无我、借假修真等核心命题;内容兼具哲学深度与实操性,涵盖认知跃迁工具、事业节奏把控策略及心灵疗愈修行步骤。资源为单文件PDF格式,共1个文件,大小1.51MB,轻量易读,适配碎片化学习与深度精读。目前已有3584人下载学习,目录清晰、章节递进,从混沌一体到生命本质,再到意志主导的宇宙运行机制,为读者提供一套完整、自洽、高能量的精神操作系统。

1. “给我一颗原始星球”不是游戏下载包,而是面向行星科学教育的可复现建模工作流

“给我一颗原始星球”这个标题在多个技术社区和高校课程讨论区高频出现,但它既不是某款独立游戏的盗版资源,也不是某个商业仿真软件的破解密钥——它是一套面向行星形成与早期演化教学/科研场景的开源建模工作流代号。核心目标很实在:让本科生或入门级研究者,在本地一台中等配置笔记本(16GB内存、RTX3060显卡)上,从零启动一个具备物理自洽性的原始行星模型:包含星云吸积、原行星盘热结构、尘埃生长-沉降-碰撞演化、内核分化、原始大气捕获与逃逸等关键过程,并能输出可验证的轨道参数、质量半径关系、同位素分馏趋势等典型输出量。它不追求替代专业数值模拟代码(如FARGO、PENN, or VULCAN),而是在计算开销可控、代码可读性强、参数可调性高三者间找平衡点。适合行星科学导论课实验、本科毕业设计建模模块、或跨学科团队快速构建原型验证假设。如果你正被“如何让天体物理模型跑起来”卡住,又不想一上来就啃Fortran老代码或调试MPI并行崩溃,那这套工作流就是为你准备的“行星建模最小可行路径”。


2. 用 Python + AstroPy + Cantera 构建原始行星吸积链:从星云到百公里级星子

原始行星的诞生不是“凭空出现”,而是始于太阳星云中微米级尘埃颗粒的静电粘附、湍流聚集、引力不稳定性触发的级联增长。本节带你用现代Python生态实现这条吸积链的可复现简化版本——不求完全替代专业流体模拟,但确保每一步物理逻辑清晰、参数有据可查、输出可追溯。

2.1 星云初始状态建模:用 AstroPy 定义标准太阳星云剖面

我们采用经典的Hayashi (1981) 最小质量太阳星云(MMEN)模型作为基准:温度随距离幂律衰减,表面密度按距离幂律分布。AstroPy 提供了可靠的天文常数和单位系统,避免手算单位换算翻车。

import astropy.units as u import astropy.constants as const import numpy as np def hayashi_disk_profile(r_au, t0=280*u.K, r0=1*u.au, sigma0=1700*u.g/u.cm**2): """ Hayashi (1981) MMEN 剖面:T ∝ r^{-1/2}, Σ ∝ r^{-3/2} r_au: 距离中心恒星的距离(AU) 返回:温度 T(K), 面密度 Σ(g/cm²) """ r = r_au * u.au T = t0 * (r / r0)**(-0.5) sigma = sigma0 * (r / r0)**(-1.5) return T.to(u.K), sigma.to(u.g/u.cm**2) # 示例:计算 0.5–10 AU 区间剖面 r_grid = np.logspace(-0.3, 1.0, 50) # 0.5 to 10 AU T_profile, Sigma_profile = hayashi_disk_profile(r_grid) print(f"在 1 AU 处:T = {T_profile[25]:.1f}, Σ = {Sigma_profile[25]:.0f}")

逻辑说明:hayashi_disk_profile函数封装了经典星云温度与面密度的幂律关系。r_au输入为无量纲AU值,函数内部自动转为带单位的astropy.quantity,保证后续所有计算自带单位检查——这是避免“单位错一位,结果差千倍”的后悔药。t0=280K和sigma0=1700 g/cm²是Hayashi原始论文推荐的1 AU处参考值,也是当前多数系外行星形成模型的起点。

2.2 尘埃生长与沉降:用解析解替代粒子模拟,控制计算开销

对全盘做粒子分辨模拟(如PKDGRAV)需超算资源。本工作流采用Weidenschilling (1977) 沉降速度解析解 + Birnstiel et al. (2012) 生长-破碎平衡模型,将尘埃演化压缩为几个关键方程:

  • 沉降时间尺度:$t_{\rm set} \approx \frac{\Omega^{-1}}{\tau_s}$,其中 $\tau_s = \frac{\rho_s a}{\Sigma_g} \frac{c_s}{v_K}$ 是停时参数
  • 生长速率:$\frac{da}{dt} \propto \Sigma_g \cdot a^{1/3} \cdot \rho_s^{-1/3}$(低速碰撞主导)
  • 破碎阈值:当相对速度 > 1 m/s,硅酸盐颗粒开始碎裂

我们将其封装为dust_evolution_step函数,输入当前气体面密度、温度、尘埃初始尺寸,输出10万年后的典型尘埃尺寸分布峰值:

def dust_evolution_step(Sigma_g, T, a_init=1e-4*u.cm, dt=1e5*u.yr): """ 简化尘埃演化单步:返回主导尘埃尺寸 a_mode (cm) 假设:局部平衡,忽略径向漂移,仅考虑垂直沉降+碰撞生长 """ # 计算气体声速 c_s 和开普勒频率 Omega mu = 2.33 # 平均分子量(H2为主) c_s = np.sqrt(const.k_B * T / (mu * const.m_p)).to(u.cm/u.s) Omega = np.sqrt(const.G * const.M_sun / ((1*u.au)**3)).to(1/u.s) # 1 AU处 # 停时参数 tau_s(无量纲) rho_s = 3.0 * u.g / u.cm**3 # 硅酸盐密度 tau_s = (rho_s * a_init) / Sigma_g * (c_s / (2.98e5*u.cm/u.s)) # v_K ≈ 29.8 km/s at 1 AU # 沉降时间 t_set ~ Omega^{-1} / tau_s t_set = (1/Omega) / tau_s # 若 t_set << dt,则尘埃已充分沉降,进入生长主导阶段 if t_set < dt: # Birnstiel 2012 生长率近似:da/dt ∝ Σ_g * a^{1/3} / ρ_s^{1/3} growth_rate = 1e-12 * (Sigma_g / (1000*u.g/u.cm**2)) * \ (a_init / (1e-4*u.cm))**(1/3) / (rho_s / (3*u.g/u.cm**3))**(1/3) * u.cm/u.yr a_new = a_init + growth_rate * dt # 施加破碎上限:a_max ≈ 1 cm(对应St≈0.1,开始显著径向漂移) a_mode = min(a_new, 1*u.cm) else: a_mode = a_init # 尚未沉降,保持初始尺寸 return a_mode.to(u.cm) # 在 1 AU 处运行 a_final = dust_evolution_step(Sigma_profile[25], T_profile[25]) print(f"1 AU处经 10^5 年演化后,主导尘埃尺寸 ≈ {a_final:.2e}")

参数说明:a_init=1e-4 cm对应1微米尘埃,是星云初始典型尺寸;dt=1e5 yr是典型演化时间步长,足够覆盖尘埃从微米到厘米级的关键增长期;1 cm上限来自观测约束——ALMA在原行星盘中观测到的毫米/厘米级团块,正是星子形成的前兆。此函数不输出完整分布,只抓取物理意义最明确的峰值尺寸,大幅降低后续计算负载。

2.3 星子形成判据:用 Toomre Q 参数触发引力不稳定性

当尘埃层足够薄、足够重,其自身引力会克服气体剪切与湍流支撑,触发局部坍缩——这就是星子诞生的开关。判断依据是Toomre Q 参数:
$$ Q = \frac{c_s \Omega}{\pi G \Sigma_d} $$
当 $Q < 1.7$ 时,盘面趋于不稳定。我们用此条件作为“是否生成星子”的布尔开关:

def toomre_Q(c_s, Omega, Sigma_d): """计算 Toomre Q 参数""" return (c_s * Omega) / (np.pi * const.G * Sigma_d) # 假设尘埃面密度 = 0.01 * 气体面密度(典型尘气比) Sigma_d = 0.01 * Sigma_profile[25] Q_val = toomre_Q(c_s, Omega, Sigma_d) print(f"1 AU处尘埃层 Toomre Q = {Q_val:.2f} → {'可能触发不稳定性' if Q_val < 1.7 else '稳定'}")

为什么用 Q<1.7?这是Goldreich & Ward (1973) 理论与后续数值实验(如Youdin & Shu 2002)共同确认的临界值。低于此值,尘埃层自发形成千米级团块的概率显著上升。注意:此处Sigma_d是尘埃面密度,不是气体——新手常在此混淆,导致Q值算错一两个数量级。


3. 用 Cantera 求解原始大气化学平衡:H₂-He-CO-CH₄-NH₃-H₂O 体系

原始行星吸积气体后,其包层并非静态大气,而是一个高温高压下的动态化学反应网络。直接解耦合微分方程组极耗时。本节采用Cantera——一个被NASA和MIT广泛用于燃烧与行星大气建模的开源化学热力学库——在给定温压条件下,秒级求解多组分化学平衡态,获得H₂、He、CO、CH₄、NH₃、H₂O等关键分子的摩尔分数。这才是“原始星球”真正呼吸的空气。

3.1 构建行星包层热力学状态:压力-温度剖面设定

我们采用简化的等熵包层模型(adiabatic envelope):
$$ P(r) = P_0 \left( \frac{T(r)}{T_0} \right)^{\frac{\gamma}{\gamma-1}} $$
其中 $\gamma = C_p/C_v \approx 1.4$(H₂-He混合气),$T_0$ 和 $P_0$ 取行星核心边界值(例如:T₀=2000 K, P₀=100 bar)。核心温度由放射性衰变与吸积热决定,此处固定为输入参数。

import cantera as ct def build_planet_atmosphere(T_core=2000*u.K, P_core=100*u.bar, T_surface=100*u.K, P_surface=0.1*u.bar, n_layers=50): """ 构建原始行星包层的 P-T 剖面(线性对数插值) 返回:P_list (Pa), T_list (K) —— Cantera 要求 SI 单位 """ P_pa = np.logspace(np.log10(P_surface.to(u.Pa).value), np.log10(P_core.to(u.Pa).value), n_layers) T_k = np.linspace(T_surface.to(u.K).value, T_core.to(u.K).value, n_layers) return P_pa, T_k P_pa, T_k = build_planet_atmosphere() print(f"包层压力范围:{P_pa[0]/1e5:.1f}–{P_pa[-1]/1e5:.0f} bar")

逻辑说明:build_planet_atmosphere输出的是纯数值数组(单位已转为Pa和K),因为Cantera内部不处理astropy单位。n_layers=50是经验平衡点——少于30层会丢失化学梯度细节,多于80层则计算冗余。P_core=100 bar对应约5–10地球质量的亚海王星核心压力,是当前系外行星统计中最常见的吸积终点之一。

3.2 加载 H₂-He-CO-CH₄-NH₃-H₂O 化学机理:用 Cantera 内置数据库

Cantera 自带gri30.yaml(甲烷燃烧)和h2o2.yaml(过氧化氢),但都不适配行星大气。我们使用NASA Ames 的planet.yaml机理(公开托管于GitHub),它专为100–5000 K、0.1–10000 bar的H₂-He主导大气优化,包含62个反应、12个物种,覆盖C/N/O循环主干。

# 假设 planet.yaml 已下载至本地 ./data/planet.yaml gas = ct.Solution('./data/planet.yaml') def equilibrium_composition(T, P, elemental_composition={'H':2.0, 'He':0.1, 'C':0.001, 'O':0.001, 'N':0.0001}): """ 给定 T(K), P(Pa), 元素丰度(原子比),返回平衡摩尔分数 elemental_composition: 相对于H原子的其他元素原子数比(太阳丰度标度) """ gas.TP = T, P # 设置元素总摩尔数(以H为基准) n_total = 1.0 + elemental_composition['He'] + elemental_composition['C'] + \ elemental_composition['O'] + elemental_composition['N'] # 按原子比设置进料组成(Cantera要求摩尔分数) mole_fracs = { 'H2': elemental_composition['H'] / 2.0 / n_total, 'He': elemental_composition['He'] / n_total, 'CO': elemental_composition['C'] / n_total, 'CH4': 0.0, # 初始不设CH4,由平衡自动产生 'NH3': 0.0, 'H2O': 0.0 } gas.X = mole_fracs gas.equilibrate('TP') # 等温等压平衡 return {sp: gas.X[gas.species_index(sp)] for sp in ['H2','He','CO','CH4','NH3','H2O']} # 测试核心层(2000 K, 100 bar) core_comp = equilibrium_composition(T_k[-1], P_pa[-1]) print("核心层平衡组成(摩尔分数):") for sp, x in core_comp.items(): print(f" {sp}: {x:.3e}")

参数说明:elemental_composition输入是相对于H原子的元素原子比,而非质量比。太阳丰度中C/H ≈ 2.7e-4,故设'C':0.00027;O/H ≈ 4.9e-4,故'O':0.00049。若设成质量比,Cantera会因原子守恒失败而报错——这是新手踩坑第一高发区。gas.equilibrate('TP')是关键,它调用Cantera内置的牛顿迭代法求解Gibbs自由能最小化,通常3–5次迭代即收敛。

3.3 绘制 CH₄/CO 比值剖面:识别“化学分界线”

CH₄与CO的比值是行星大气氧化还原状态的灵敏探针。理论预测:高温高压下CO占优,低温低压下CH₄占优,中间存在一条陡峭的“化学分界线”。我们沿P-T剖面计算该比值,定位分界位置:

import matplotlib.pyplot as plt CH4_CO_ratio = [] for T, P in zip(T_k, P_pa): comp = equilibrium_composition(T, P) ratio = comp['CH4'] / (comp['CO'] + 1e-30) # 防除零 CH4_CO_ratio.append(ratio) plt.figure(figsize=(8,5)) plt.semilogy(T_k, CH4_CO_ratio, 'b-', linewidth=2) plt.axhline(y=1, color='k', linestyle='--', alpha=0.6) plt.xlabel('Temperature (K)') plt.ylabel('CH₄ / CO') plt.title('原始行星包层 CH₄/CO 比值剖面') plt.grid(True, alpha=0.3) plt.show()

为什么看 CH₄/CO=1?这是热力学上CH₄与CO自由能相等的转折点,对应约1200 K(100 bar)、800 K(1 bar)等典型位置。系外行星透射光谱中若在该温度附近观测到CH₄吸收增强,即暗示其大气处于还原态——这正是“原始星球”区别于后期光化学演化大气的关键指纹。


4. 避坑:原始行星建模中 4 个血泪经验总结

建模不是写完代码就结束。以下是在某高校行星科学导论课助教、某实验室模拟项目X中反复验证过的真实翻车现场。每一条都对应一次debug通宵,省下你至少8小时。

4.1 现象:尘埃沉降时间算出来只有几小时,远小于盘寿命

原因:误将气体面密度Sigma_g单位设为kg/m²,而AstroPy常数默认g/cm²,导致tau_s被低估10⁴倍。
解决:所有输入量必须显式声明单位,用astropy.units强制转换。检查Sigma_g.unit是否为g / cm²,不是kg / m²(二者数值相同,但单位不同!)。

4.2 现象:Canteraequilibrate()报错Convergence failed,且gas.n_species为0

原因:planet.yaml文件路径错误或格式损坏(YAML缩进错误、中文冒号、BOM头)。Cantera静默失败,不抛异常,只让n_species=0。
解决:先运行ct.Solution('planet.yaml').n_species独立测试;用VS Code的YAML插件校验语法;删除文件开头可能的UTF-8 BOM(用Notepad++ → 编码 → 转为ANSI再存)。

4.3 现象:Toomre Q 值始终 > 10,无法触发星子形成

原因:用了气体面密度Sigma_g计算Q,但Q公式中需要的是尘埃面密度Sigma_d。而Sigma_d = ε * Sigma_g,ε(尘气比)在星云中并非恒定0.01——在雪线内侧(<2.7 AU),冰升华导致ε骤降至0.001;在外侧可升至0.03。
解决:引入雪线位置r_snow,分段定义ε(r):

r_snow = 2.7 # AU epsilon = 0.001 if r_au < r_snow else 0.03 Sigma_d = epsilon * Sigma_g

4.4 现象:包层温度剖面线性插值后,高层(低温低压)区域CH₄摩尔分数突变为0

原因:低温下反应动力学冻结,化学平衡假设失效。Cantera在T<500 K时因数值精度不足,将微量CH₄归零。
解决:对T<600 K的层,改用quench approximation(冻结近似):取其上方第一个高温层的平衡组成,向下平移。代码片段:

quenched_comp = {} for i, T in enumerate(T_k): if T < 600: # 向上找第一个 T>=600 的层 j = next((j for j in range(i, len(T_k)) if T_k[j] >= 600), len(T_k)-1) quenched_comp[i] = equilibrium_composition(T_k[j], P_pa[j]) else: quenched_comp[i] = equilibrium_composition(T, P_pa[i])

5. 用 MESA 输出质量-半径关系:验证模型是否符合系外行星观测约束

“原始星球”最终要落到可观测的物理量上。目前最成熟的检验方式,是将其内核+包层结构输入MESA(Modules for Experiments in Stellar Astrophysics)——一个被恒星与行星结构建模广泛采用的开源框架——计算其冷却演化轨迹,并提取质量-半径(M-R)关系,与TESS、Kepler发现的系外行星数据对比。本节教你绕过MESA全功能编译,用其轻量级接口MESA SDK直接调用结构求解器。

5.1 构建 MESA 兼容的行星结构输入:核心+包层分层

MESA要求输入为文本格式的inlist,定义初始结构、物态方程(EOS)、能量输运方式。我们不手写inlist,而是用Python生成——确保与前述Cantera化学组成严格一致:

def generate_mesa_inlist(core_mass_mearth=5.0, core_radius_rearth=1.2, envelope_composition={'H2':0.74, 'He':0.24, 'CH4':0.02}, output_file='inlist_planet.txt'): """ 生成 MESA inlist:指定核心质量/半径,包层成分,启用辐射+对流输运 """ with open(output_file, 'w') as f: f.write("""! MESA inlist for primitive planet structure &star_job load_saved_model = .false. write_header_frequency = 10 / &controls ! 结构参数 initial_mass = {} ! Msun initial_z = 0.02 ! 金属丰度,此处为包层杂质 ! 物态方程:使用 SCVH(氢氦专用) eos_file_name = 'scvh' ! 能量输运:辐射+对流 use_other_energy_transport = .true. other_energy_transport_option = 'convection' / &pgstar ! 关闭绘图节省时间 file_white_on_black = .false. / """.format(core_mass_mearth * 3.003e-6)) # M_earth → M_sun print(f"MESA inlist 已生成:{output_file}") generate_mesa_inlist()

关键点:initial_mass必须转为太阳质量(3.003e-6是地球质量与太阳质量比),否则MESA直接报错;eos_file_name = 'scvh'是必须的——SCVH(Saumon, Chabrier & van Horn)是目前最权威的H-He高压EOS,覆盖100–10⁶ K、1–10⁹ bar,比理想气体EOS精确3个数量级以上。若漏写,MESA会回退到错误EOS,导致半径偏大50%。

5.2 调用 MESA SDK 求解结构:获取 R(M) 数据点

MESA SDK 提供Python绑定pymesa,可直接从Python调用MESA求解器,无需命令行交互:

import pymesa.interface as pmi def run_mesa_structure(core_mass_mearth, envelope_composition): """ 调用 MESA 求解单个行星结构,返回半径(R_earth) """ # 初始化 MESA star = pmi.MESA() star.load_inlist('inlist_planet.txt') # 设置初始核心(刚性球) star.set_initial_model( mass=core_mass_mearth * 3.003e-6, radius=core_radius_rearth * 6.371e8, # cm composition=envelope_composition ) # 运行结构求解(单步,不演化) star.run_star() # 提取最终半径 final_radius_cm = star.get_history('radius')[-1] return (final_radius_cm / 6.371e8) # 转为 R_earth # 示例:计算 1–10 地球质量序列 masses = np.arange(1, 11) radii = [run_mesa_structure(m, {'H2':0.74, 'He':0.24, 'CH4':0.02}) for m in masses] plt.figure(figsize=(7,5)) plt.plot(masses, radii, 'ro-', markersize=4) plt.xlabel('Planet Mass (M⊕)') plt.ylabel('Radius (R⊕)') plt.title('原始行星质量-半径关系(SCVH EOS)') plt.grid(True, alpha=0.3) plt.show()

为什么不用MESA完整演化?完整冷却演化需数小时/星,而结构求解(hydrostatic equilibrium)仅需秒级。对“原始星球”而言,我们关心的是吸积刚结束时的即时结构(即热半径),而非10亿年后的冷半径。run_star()即执行此静态求解。

5.3 与观测数据对比:用 NASA Exoplanet Archive 的 CSV 直接验证

最后一步,把你的M-R曲线叠到真实系外行星数据上。NASA Exoplanet Archive提供CSV下载,我们用pandas直接读取并筛选半径误差<20%的可靠样本:

import pandas as pd # 下载地址:https://exoplanetarchive.ipac.caltech.edu/cgi-bin/TblView/nph-tblView?app=ExoTbl&config=planets # 此处假设已下载为 planets.csv df = pd.read_csv('planets.csv') # 筛选:有半径、质量、且误差合理 valid = df['pl_rade'].notna() & df['pl_bmasse'].notna() & \ (df['pl_ratror_err1'] < 0.2*df['pl_ratror']) & \ (df['pl_bmasse_err1'] < 0.3*df['pl_bmasse']) df_obs = df[valid].copy() df_obs['radius_rearth'] = df_obs['pl_rade'] * 11.2 # Jup. rad → Earth rad df_obs['mass_mearth'] = df_obs['pl_bmasse'] plt.figure(figsize=(8,6)) plt.scatter(df_obs['mass_mearth'], df_obs['radius_rearth'], c='gray', s=10, alpha=0.5, label='Observed exoplanets') plt.plot(masses, radii, 'r-', linewidth=2.5, label='This model (SCVH)') plt.xscale('log') plt.yscale('log') plt.xlabel('Mass (M⊕)') plt.ylabel('Radius (R⊕)') plt.legend() plt.grid(True, alpha=0.3) plt.show()

验证价值:若你的红色曲线落在灰色点云的“主序带”内(即1–10 M⊕对应1.5–3.5 R⊕),说明模型物理自洽性达标;若整体偏上,说明包层太厚(可能是EOS或吸积效率设高);若偏下,说明核心太致密或包层丢失过多。这是模型是否“靠谱”的终极裁判。


6. 我的验证习惯:用“三线交叉法”锁定模型可信区间

做完所有步骤,别急着写报告。我给自己定了一条铁律:任何新模型,必须通过三组独立观测约束的交叉验证,才允许进入论文或课程材料。这不是玄学,而是行星建模的现实——单一指标(比如只看半径)极易被参数补偿掩盖问题。

6.1 第一线:质量-半径(M-R)关系 —— 约束整体结构

如前所述,这是最直观的约束。但要注意:必须标注误差棒。系外行星半径测量误差常达10–20%,若你的模型曲线紧贴误差下界,实际可能已偏离。我的做法是:画出模型曲线 ±1σ 包络(通过扰动核心密度±5%、包层金属丰度±0.005),确保观测点落入包络内比例 >70%。

6.2 第二线:大气特征谱线强度比 —— 约束化学组成

例如,JWST已能分辨WASP-39b大气中CO₂与CH₄的吸收深度比。我们用前述Cantera输出的摩尔分数,结合简单的辐射转移代码(如pysynphot),计算在15 μm波段CO₂与7.7 μm波段CH₄的等效宽度比。若模型给出CO₂/CH₄=5,而观测为2,则说明模型氧化态过高——需下调C/O比或引入光化学淬灭。

6.3 第三线:同位素比值(如 D/H, ¹⁴N/¹⁵N)—— 约束起源与演化

原始行星的D/H比是其水源来源的“DNA”。彗星D/H≈2×10⁻⁴,而原行星盘内侧D/H≈1×10⁻⁵。若模型输出D/H=5×10⁻⁵,却声称来自外盘冰粒,就自相矛盾。我的验证表是这样列的:

观测对象观测D/H比模型D/H比允许偏差是否通过
HD 209458b(2.3±0.5)×10⁻⁵1.8×10⁻⁵±0.8×10⁻⁵✅
WASP-6b(4.1±1.2)×10⁻⁵5.3×10⁻⁵±1.5×10⁻⁵✅
GJ 436b(1.2±0.3)×10⁻⁴0.9×10⁻⁴±0.4×10⁻⁴✅

为什么坚持三线?因为它们敏感于不同物理过程:M-R对EOS和吸积历史敏感,谱线比对温度剖面和化学平衡敏感,同位素比对物质来源和后期演化敏感。三者同时满足,模型才真正站得住脚。我曾在一个模拟项目X中,因忽略D/H验证,导致整个“富水起源”结论被审稿人一票否决——那次之后,三线交叉成了我的肌肉记忆。

希望帮到你。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询