继续阅读
磁张力怎样放大吸积盘中的扰动 · 阅读路径
L2 · 方法指南
一条增长曲线要站得住,需要几种检查指向同一组场:网格细化检查空间导数,时间步细化检查时间推进,应力则应当供给场增加的能量。把配套的 linear-channel-replay-public.zip 放在旁边,我们沿着案例结果与保存场逐项读下去,看看原来的十一组案例、四十五项检查究竟说明了什么。
压缩包的SHA256为 680ce195877487db5520cde1b4233fea89e91e46589daca562045feff24c4ef9。先修内容是前面几章的局部坐标、速度单位下的磁扰动、四条通道方程与中心空间差分。保存数据的密度、盒长各取一;旋转案例取 。下面只检查已有记录与解析极限,无须生成新轨迹。
包内 manifest.json 用字节数和SHA256标识其余299个成员。指纹吻合,说明拿到的是保存的那个文件;物理是否正确,还要另看。原始 records/receipt.json.gz 列出十一组案例、预先规定的四十五项检查、各自限值、实际值与状态。其中两项限制资源开销。除了末尾的通过标志,还应读误差本身。
每个案例目录中的编号压缩JSON,保存时刻、四组完整场数组、能量与应力诊断、累计剪切功,以及四个基本模态投影。case-returned.json.gz 则保存比较之前返回的案例结果。原计算使用Python3.14.3。包内的标准库程序 source/inspect_saved.py 可以核实已有成员,再从全部277帧场数组重算能量和应力。这是读取现成数据,不是重新模拟,也不承诺换一台电脑重新演化后仍逐位相同。
独立读数程序直接对数组求和,能检查显示的诊断量是否属于那些场。它不会重新推进导数,也不能从间隔较大的保存帧恢复每一步内部的中间状态。读到后面的做功检查时,要记住这个区别。
先查看 spatial-64、spatial-128 与 spatial-256。三组采用同一个连续增长初态,,末时刻为 ,步长均为 。间距减半,投影向量误差依次缩小 倍和 倍。这就是上一章读过的空间比较。
现在换一个问题:空间导数已经换成差分后,时间积分器能多准确地推进这组方程?固定32个样本,其基本波形满足
三组时间案例用网格方程自己的本征向量和精确指数作参考。若仍与原来的连续增长率比较,即使时间步无限缩小,空间误差也不会消失,可能遮住时间方法的阶数。返回JSON的 referenceKind 把三组时间案例标为 semidiscrete-eigenmode,其余八组标为 continuum;expectedReferenceProjection 保存所选参考向量。这两个字段要一起读,初态与指数的具体设置见 source/qualify.py。
| 时间步除以时间单位 | 到共同末时刻的步数 | 实际投影向量误差 |
|---|---|---|
| 150 | ||
| 300 | ||
| 600 |
相邻误差之比为 和 。四阶收敛范围内,步长减半应带来约 倍的缩小,实际结果支持这个判断。最小误差已很接近浮点效应可能影响的量级;继续细化后怎样变化,还得重新比较,不能一直除以十六当作实测结果。
两幅图都取自同一组32样本时间案例。上图比较保存投影与精确网格模态,虚线是从最粗结果出发的四阶参考。下图用独立计算的端点能量,与时间步骤中累计的应力功比较,再除以初始能量;点虚线为原有做功检查的限值。两种误差都无量纲,但定义不同,数值大小无须相同。
纯增长网格本征模态经过一步经典四阶Runge–Kutta推进,振幅乘以
精确乘数为 ,少掉的首项是 。总时长固定时,步数与步长成反比,累计相对振幅误差便是步长的四阶。这样才知道为什么拿十六作比较,而不只是给三个点拟合一条线。
从最粗的实际误差出发,步长减半后可预期约 ,实际则为 。首项估计没有包括所有高阶项,不必逐位吻合,但应解释缩小的幅度与数量级。这里用解析乘数检查一个线性模态,没有把保存的空间计算换成另一段新演化。
把一帧场的总向外应力写成 。时间仍连续的网格方程满足
保存程序按四个Runge–Kutta中间阶段的应力累计功,再单独计算末初能量差,与功比较。如果一步中的四组完整场为 ,这一步贡献
能量密度则从实际场样本的平方单独求和。两者虽然共用同一段数值场历史,做功的定义却没有借用端点能量差。原有比较量为
最粗时间案例中的无量纲能量与功约为
帽号表示除以参考能量密度 ,其中 是所选参考密度。使用未舍入数,得到 ,低于预先规定的 限值。上面展示的圆整数不能恢复这么小残差的末位。最细时间案例为 。这里衡量的是有限步长误差,舍入级的精确能量守恒需要另作检验。
刚性转动提供另一种对照:末时刻应力不为零,但 ,剪切功率与累计剪切功为零,普通扰动能量保持不变。无磁场的开普勒案例则检查本轮振荡不变量 ,不是要求普通动能不变。分清两种极限,有助于发现转动源项的符号或数值处理出了错。Stone与Gardiner固定版本的第III节讨论过人为放大的本轮振荡;他们的守恒时间算法,与这组通道采用的Runge–Kutta方法不同。
密度均匀时,从速度单位换回物理磁场只需给每个分量乘同一个常数,零散度保持不变。磁场散度对每个分量沿自身方向求导,
这组通道的水平分量只随高度变化,水平方向均匀,竖直背景分量恒定。式中三项各自为零。径向场沿高度变化,不会自动变成沿径向的导数。程序把同一个通道复制成周期 数组,再对表示出的磁场作差分;所有案例的最大散度恰好为零。
这个结果检查上述假设和周期下标在数组中是否得到正确表示,没有推进一般多维感应方程,也没有检验约束输运法。Athena如何处理径向剪切边界与磁通,是Stone与Gardiner第IV–V节及官方手册中的另一类问题。径向重映射需要另设具有水平变化的实验。
1.时间步继续缩小,与连续波的误差却不再下降,先检查什么? 固定网格,改与网格自己的精确模态解比较。时间误差很小时,空间误差仍会留下。之后再保持同一个物理初态,单独细化空间网格。
2.如果把功保存成末初能量差,很小的做功残差能说明什么? 只能说明这次赋值。要作有意义的比较,应像这里一样单独累计源项,再从场样本独立计算能量。
3.保存通道的散度全为零,能据此证明任意三维MHD都正确吗? 不能。先问测试里哪些导数真正不为零。这里没有水平梯度,竖直磁分量也不变,没有考验一般感应求解器必须维持的抵消关系。
4.完整的原结果允许复用什么? 十一组指定的线性周期案例、实际数组、固定比较和声明的容差。检查另一份计算时,也要写清单位与几何、找准参考,分别改变空间和时间分辨率,比较传输与能量变化,并选取能移除该机制的极限。非线性饱和与全局吸积率,还需要另外的模型和证据。
Balbus与Hawley1991,ApJ376,214–222,印刷页216–218的式2.2、2.5–2.9及2.13–2.14b,给出局部线性方程和增长关系。原始扫描件。Stone与Gardiner,arXiv:1006.0139v1,第II–III节,尤其式11–18与第III.2节,讨论局部源项、本轮能量和做功;第IV–V节涉及额外的边界与磁通问题。固定版本。Athena++官方剪切盒手册分别说明径向剪切周期、绕转周期以及可另行选择的竖直边界。
所有数值均来自固定指纹的 linear-channel-replay-public.zip、原始案例结果与277帧场。这里的检查只读取保存场并计算解析表达式,没有运行Athena,没有新增演化步,也不表示一般非线性MHD已经通过检验。
磁张力怎样放大吸积盘中的扰动 · 阅读路径