第72章 模型的尸骨(6 / 14)

投票推荐 加入书签 留言反馈

  他选了数值模擬歷史上非常经典的一篇论文。
  biskamp,d.(1986).magnetic reconnection via current sheets.
  这篇论文的核心工作,就是用直接数值模擬研究二维电阻mhd中电流片的演化,並给出了petschek结构无法长期维持的实锤。
  江临在工作站里新建了一个项目。
  【replicate_biskamp_1986】
  他要用c++,从零开始,手敲每一行求解器代码。
  二维笛卡尔网格,均匀电阻假设,反平行磁场初始条件,空间离散採用中心差分,时间推进採用半隱式的预测-校正法。
  他试图严格按照论文里的描述去设置lundquist数、初始扰动幅度、边界条件和网格尺度。
  但真正开始写代码时,他立刻发现,老论文里的文字描述,根本不足以完整復现一个数值实验。
  论文里写,我们在边界上採用了自由流出条件。
  但自由流出是一阶外推还是二阶外推?
  有没有做特徵波分解处理无反射边界?
  如果是简单的零梯度外推,在非线性演化后期绝对会產生数值反射回波,污染中心扩散区。
  论文里写,我们引入了一个小幅度的磁通量扰动。
  但扰动函数是什么?
  是高斯型还是正弦型?
  截断范围怎么选?
  扰动的高频分量有没有在初始化时做平滑处理?
  ……
  这些细节,在论文里统统没有。
  或者说,当年受限於篇幅,作者不可能把几万行代码的细节逐一写进文章里。
  但对於復现者来说,每一个缺失的细节,都是一个致命的变量。
  江临没有把这些不確定性糊弄过去了事。
  他在项目的readme文件的第一行写——
  # 非严格復现。儘可能逼近。所有未明实现项,將单独列出参数空间进行扫描。
  第一次正式运行,工作站硬碟灯连续亮了十七天。
  第十七天下午,终端上的时间步循环终於停下。
  江临颤抖著手,用python的matplotlib库调出了最后一个时间步的磁场流函数等值线图。
  屏幕上出现了一条缓慢演化的电流片。
  他调出时间序列动画。 ↑返回顶部↑

章节目录