跳到主要内容
Sandbox Physics
行星大气怎样流成风

AC13 · L3

数值求出并检查临界风解

先数值找到临界半径,从两侧积分加速分支,再检查守恒量。解释流失率之前,还要看碰撞条件与所需热量。这几项检查回答不同问题。

先把输入存好

把下方的脚本、输入、出处说明、运行说明与固定输出下载到同一普通文件夹。输入定义了五组单组分合成大气:默认风、强束缚尾部、稀薄大气、XUV 功率不足,以及临界点低于储气边界。这里没有实测行星剖面,也没有 MESA 演化输出。

JSON 固定 SI 常数、边界半径、密度、给定温度、XUV 辐照度与可用功率比例。脚本把输入的精确字节哈希写入输出。第一次先原样运行,需要改参数时另存副本。出处文件列明字节数和 SHA-256,并区分自行给定的教学输入与方程来源。

python3 -W error replay-wind.py --input escape-input.json --out wind-replay-rerun.json
# 可选解析参考,在虚拟环境中安装固定依赖:
python3 -m venv .venv
source .venv/bin/activate
python3 -m pip install -r requirements-reference.txt
python3 reference-lambert.py --out lambert-reference-rerun.json

对应阅读:Cranmer 2004, New views of the solar wind with the Lambert W function, v1 · Volkov et al. 2011, Thermally driven atmospheric escape, arXiv v1

把分子变零的位置括起来

对 2c2/r−GM/r22c^2/r-GM/r^2 在 0.01Rb0.01R_{\rm b} 到 100Rb100R_{\rm b} 间做二分:每次保留两端异号的半区间。如果没有异号,脚本直接报错。固定五个例子均在范围内;换新输入时要重新确认。

把根与 GM/(2c2)GM/(2c^2) 比较,默认得到 2.41574013×107 m2.41574013\times10^7\,\mathrm m。找到这个位置,只是让分子变零,速度还必须沿加速分支经过 u=cu=c。若直接在该点做除法,分母也为零。

对应阅读:Cranmer 2004, New views of the solar wind with the Lambert W function, v1

从正则斜率出发

积分变量取 q=ln⁡Mq=\ln\mathcal M,这样极小的亚声速仍能保持有限的对数值。在 x=1±10−5x=1\pm10^{-5} 用局部展开给初值,再以四阶 Runge–Kutta 向内或向外积分。离声速点不足 10−410^{-4} 的目标,直接使用展开。

最大径向步长为 0.0015min⁡(x,1)0.0015\min(x,1)。每个目标半径都从声速附近独立积分。输出还在 0.03rs0.03r_{\rm s} 至 12rs12r_{\rm s} 的七个位置,把最大步长减半,保存对数 Mach 数的变化。这个检查衡量积分的步长敏感性;解析函数提供另一条求解路径,可以直接比较同一半径的 Mach 数。

dqdx=2(1/x−1/x2)e2q−1,q=δ−δ2+1312δ3+O(δ4)\frac{dq}{dx}=\frac{2(1/x-1/x^2)}{e^{2q}-1},\quad q=\delta-\delta^2+\frac{13}{12}\delta^3+O(\delta^4)
远离精确临界点时,专门的指数减一函数减小分母相消误差;临界邻域本身由展开处理。

对应阅读:Cranmer 2004, New views of the solar wind with the Lambert W function, v1

与两个解析分支比较

设 D=x−4e3−4/xD=x^{-4}e^{3-4/x}。Lambert-W 函数由 W(z)eW(z)=zW(z)e^{W(z)}=z 定义,在这里有两个实分支。SciPy 将它们记为零与负一。

可选脚本在声速内取主分支,外侧取另一实分支;精确 x=1x=1 直接指定正则极限。它在十一个半径与 ODE 比较。在两倍声速半径,如果错取主分支,会得到亚声速的小根。两根都可能让隐式方程残差很小,因此还必须检查分支与加速方向。

M2=−W0(−D)(x<1),M2=−W−1(−D)(x>1)\mathcal M^2=-W_0(-D)\quad(x<1),\qquad\mathcal M^2=-W_{-1}(-D)\quad(x>1)
整条加速跨声速解,在两个实分支共同的声速端点换支。

对应阅读:Cranmer 2004, New views of the solar wind with the Lambert W function, v1

分别检查数值与物理条件

从底部边界恢复密度,逐点计算 4πr2ρu4\pi r^2\rho u。另算等温动量积分 u2/2+c2ln⁡(n/nb)−GM/ru^2/2+c^2\ln(n/n_{\rm b})-GM/r。前者检查密度归一,后者对独立积分的速度形状误差敏感。

固定默认解的质量通量相对极差约为十的负十五次方,动量积分极差以声速平方为单位小于十的负十次方。这些是数值残差,没有包含温度、碰撞截面或忽略冷却造成的不确定度。

下方表格与曲线直接读取公开重跑输出。强束缚例子的 Jeans 示例约为每秒十毫克,形式 Parker 声速区的 Knudsen 数却极大。功率不足例子在数值上平滑,所需机械功率约为可用 XUV 功率的752倍。临界点埋入底部的例子,从储气边界起就已超声速。输出保留这些解释失败的案例。

01234124812Mach 数
独立正则 ODE 的默认合成结果。横轴为半径与储气半径比,采用对数刻度;虚线为数值找到的临界半径。
replay-wind.py 的实际合成结果:固定类中性氢质量与有效碰撞截面,给定温度,储气半径为地球的两倍,外边界为储气半径的十二倍。输入列明每例全部设置;即使物理条件失效,表中仍列形式风解流量。
情形声速与底部半径比形式 Parker 流量 · 千克每秒声速区 Knudsen 数所需与可用功率比
默认风1.91.97.70×1067.70\times10^{6}4.02×10−34.02\times10^{-3}2.28×10−12.28\times10^{-1}
罕见尾部1.52×1011.52\times10^{1}6.77×10−46.77\times10^{-4}1.83×1081.83\times10^{8}2.05×10−92.05\times10^{-9}
稀薄气体5.065.067.90×1027.90\times10^{2}9.05×1019.05\times10^{1}2.80×10−42.80\times10^{-4}
热量不足1.261.261.84×1071.84\times10^{7}1.37×10−31.37\times10^{-3}7.52×1027.52\times10^{2}
临界点低于底部2.11×10−12.11\times10^{-1}7.11×1077.11\times10^{7}7.26×10−57.26\times10^{-5}3.783.78

对应阅读:Volkov et al. 2011, Thermally driven atmospheric escape, arXiv v1 · Murray-Clay, Chiang & Murray2009, Atmospheric escape from hot Jupiters, v2

只改一个条件试试

复制输入,只把默认例子的底部数密度加倍。运行前先预测风流量、声速区 Knudsen 数及所需与可用功率比。三者应分别乘二、除二、乘二。速度方程只含引力与声速,因此速度形状保持不变。

再把给定外半径从十二倍底部半径改为二十四倍,重跑机械能比较。气体走得更远,还要继续爬升并加速,需要供给更多能量。引用等温风的热量需求时,要带上这个外边界。

公开文件可按 README 中的科学教学材料许可复用。若要研究某颗具体行星,下一步应加入能量与化学方程,并为它建立合适的内外边界。

对应阅读:Murray-Clay, Chiang & Murray2009, Atmospheric escape from hot Jupiters, v2 · Cranmer 2004, New views of the solar wind with the Lambert W function, v1

练习与解释性答案

  1. 隐式方程残差很小,声速半径外的速度却低于声速,哪项检查能发现错误?

    展开解释

    检查分支与加速方向。声速外的加速跨声速解必须选超声速 Lambert-W 分支;主分支也能满足同一隐式方程,仅看残差不能排除它。

  2. 输入哈希与固定参考不同,还能直接比较所有末位数字吗?

    展开解释

    先找到输入变化。边界、密度或温度变了,就是另一项计算。复现数值时先恢复固定输入,再把修改后的运行作为物理实验。

动手检验预测

把保存的风解与交互计算比较

  1. 重置实验并导出计算,比较默认临界半径、质量流量、功率比与声速区 Knudsen 数。
  2. 选择“碰撞跟不上了”,指出流体解释失效后,哪些数学曲线仍然可以计算。
  3. 只改变底部密度,先检验预测倍数,再尝试另一个温度。

把下列文件放在同一文件夹。数值重跑只需 Python3.10+ 标准库,只有可选 Lambert-W 比较需要固定 NumPy/SciPy 依赖。

来源与计算范围

  1. Cranmer 2004, New views of the solar wind with the Lambert W function, v1

    2004 年 6 月 7 日第一版,AJP 72,1397–1403。核读全文第 III–IV 节、式12–16:等温动量方程、临界点与两个实 Lambert-W 分支。太阳风的电离氢声速约定在这里换成明确固定的单粒子质量。

  2. Volkov et al. 2011, Thermally driven atmospheric escape, arXiv v1

    2010 年 9 月 26 日第一版,后发表于 ApJL729,L24(2011)。核读第2节与图1–5:硬球平均自由程、以半径或局部标高定义的不同 Knudsen 数、动力学逃逸及条件性的 Jeans 修正。其下边界以下加热不同于持续维持等温的风。实验碰撞截面是教学输入,不是来源中的氮分子取值。

  3. Murray-Clay, Chiang & Murray2009, Atmospheric escape from hot Jupiters, v2

    2008 年 11 月 18 日第二版,ApJ 693,23(2009)。核读第3.2节、式19/22与图7:吸收截面、能量限制尺度及冷却/复合对固定效率的限制。来源研究热木星辐射流体;低质量行星示例只采用明确列出的整体功率比较。

反馈这个页面有错误、看不明白,或者缺了什么?告诉我们
反馈类型

提交时会附带本页地址、Lab ID、网站语言和设备类型。请不要填写个人信息。反馈最多保存 12 个月。隐私政策