第72章 模型的尸骨(7 / 14)
在模擬的早期,也就是刚加入初始扰动的时候,系统確实在一瞬间出现过petschek那种华丽的x型几何。
那是一个令人心跳加速的瞬间。
但隨著时间的推移,中心扩散区无法將堆积的物质及时排出。
那个x的夹角越来越小,重联点被慢慢拉长,变薄。
最后,在动画的结尾,那个x完全坍缩,最后退回那条熟悉得令人不舒服的长电流片。
和biskamp论文里的截图几乎一模一样。
很漂亮。
江临却看得脊背发凉。
太顺了。
他决定做压力测试。
回到配置文件,把lundquist数提高一个量级。
但这一次,他做了一个违背常规的操作,故意没有同步加密网格。
他想知道,当前这套网格的承受边界到底在哪里。
系统是真的因为物理规律演化成这样,还是因为数值格式把它限制成了这样?
代码重新编译,运行。
这一次,程序跑到第八天深夜,工作站发出一声尖锐的报错蜂鸣。
error: floating point exception (core dumped).
跑崩了。
江临立刻调出崩溃前几个时间步的快照。
不是因为更高的lundquist数更容易算。
而是因为电阻减小后,物理上的电流片扩散区厚度变得极其薄,被压到了接近甚至小於单个网格尺度的地步。
当物理尺度小於网格尺度时,代码里的数值结构就强行接管了物理演化。
江临在屏幕上看到了可怕的一幕。
x型几何刚刚尝试形成,电流片的中央就开始出现非物理的高频振盪。
红蓝相间的色块像病毒一样在网格间蔓延,几个时间步之后,整幅精密的磁场图散成了一片毫无意义的马赛克。
也就是所谓的数值爆炸。
江临感觉这片马赛克在嘲笑他。
於是关掉可视化窗口,一头扎进几万行的c++代码里。
开始排查
第一天,他怀疑是数值黏性不够,压不住高频振盪,於是引入了人工耗散项。 ↑返回顶部↑
那是一个令人心跳加速的瞬间。
但隨著时间的推移,中心扩散区无法將堆积的物质及时排出。
那个x的夹角越来越小,重联点被慢慢拉长,变薄。
最后,在动画的结尾,那个x完全坍缩,最后退回那条熟悉得令人不舒服的长电流片。
和biskamp论文里的截图几乎一模一样。
很漂亮。
江临却看得脊背发凉。
太顺了。
他决定做压力测试。
回到配置文件,把lundquist数提高一个量级。
但这一次,他做了一个违背常规的操作,故意没有同步加密网格。
他想知道,当前这套网格的承受边界到底在哪里。
系统是真的因为物理规律演化成这样,还是因为数值格式把它限制成了这样?
代码重新编译,运行。
这一次,程序跑到第八天深夜,工作站发出一声尖锐的报错蜂鸣。
error: floating point exception (core dumped).
跑崩了。
江临立刻调出崩溃前几个时间步的快照。
不是因为更高的lundquist数更容易算。
而是因为电阻减小后,物理上的电流片扩散区厚度变得极其薄,被压到了接近甚至小於单个网格尺度的地步。
当物理尺度小於网格尺度时,代码里的数值结构就强行接管了物理演化。
江临在屏幕上看到了可怕的一幕。
x型几何刚刚尝试形成,电流片的中央就开始出现非物理的高频振盪。
红蓝相间的色块像病毒一样在网格间蔓延,几个时间步之后,整幅精密的磁场图散成了一片毫无意义的马赛克。
也就是所谓的数值爆炸。
江临感觉这片马赛克在嘲笑他。
於是关掉可视化窗口,一头扎进几万行的c++代码里。
开始排查
第一天,他怀疑是数值黏性不够,压不住高频振盪,於是引入了人工耗散项。 ↑返回顶部↑