第一次大规模计算
Richard Hamming 的第一次大规模模拟:Los Alamos,1945 年。目标 — 设计一个可行的原子弹。
必要的模拟问题:不存在小规模实验。临界质量是二值的。要么裂变材料超过临界质量并引发链式反应,要么不会。您无法运行缩小版本。
球形内爆设计
一种设计使用球形对称 — 内爆。工程师将材料分成许多同心壳。对于每个壳,他们写出作用在两个表面上的力的方程,加上连接压力和密度的状态方程。
时间被离散化为 10⁻⁸ 秒的间隔 — 称为"shake"(来自"羊尾巴抖动一下"的习语)。在每个 shake,计算前进:每个壳如何移动?什么力作用在它上面?
强制模拟的三个条件
Hamming 指出了模拟替代物理实验的情况:
1. 不可能的实验 — 临界质量不能在亚规模下测试
2. 危险的实验 — 您无法引爆炸弹来获取校准数据
3. 太昂贵或太慢 — 大气阻挡、天气预报、导弹轨迹
目标:产生等效结果,而不是精确复制物理过程。模拟不必与原子级现实相匹配。它必须在设计所需的精度范围内产生相同的可观测结果。
等效结果
Hamming 在 Los Alamos 的关键洞察:状态方程数据是不准确的。压力-密度关系来自高压实验室、地震估计、恒星核心模型 — 都有显著的不确定性。
工程师读取这些曲线到小数点后三位,然后制成五位数的表格。看似垃圾输入。
然而炸弹设计有效。
为什么?因为计算对相邻壳上的值取了二阶差分。状态方程中的任何局部误差在壳遍历曲线的历史中平均消除。重要的是:状态方程的曲率,仅在平均意义上。
计算中的反馈补偿了不准确的输入。
重复的核心
Hamming 指出了大型模拟的一个通用结构特征:一个高度重复的内部循环。
在 Los Alamos:相同的力方程对每个壳在每个时间步运行。一个壳的代码运行数千次。没有这种重复的结构,编程成本会令人望而却步。
这个原则是普遍适用的:天气预报将大气分成块;相同的物理方程更新每个块。导弹模拟通过每个时间增量的相同轨迹方程前进。晶体管设计在每个空间网格点计算相同的场方程。
Hamming 的建议:在开始任何模拟时尽早寻找重复的部分。以利用重复的形式转化模拟。没有紧密内部循环的模拟可能结构不良。
专业知识作为一个坚硬的先决条件
Hamming 反复回到一个他认为不可商量的规则:只有领域专家才能知道什么重要。
一个模拟专家可以组织代码、选择数值方法、调试重复循环。但只有精通该领域物理、化学或工程的人才能确定:
- 哪些效应必须出现在模型中
- 哪些可以安全地省略
- 一个不寻常的结果是表示物理真理还是建模错误
在 Los Alamos,Hamming 是计算专家。物理学家是领域专家。两者都不能相互替代。
术语作为障碍和工具
Hamming 最强的操作规则之一:学习您正在模拟的领域的术语。
他的故事:一个有 28 个同时微分方程的海军拦截问题。他坚持提议者 — 一位物理学家朋友 — 在计算运行前与他一起走过二进制机器代码的每一行。
在途中,物理学家说:'Dick,那是翅膀限制,而不是电压限制。'相同的数学符号,相同的正式方程 — 但两种不同的物理解释,产生了实质上不同的结果。
教训:双方都理解了数学。两者在通常意义上没有交流失败。但限制操作的物理意义仅由方程确定。
没有这次走过,模拟会带着错误的解释运行。没有运行时错误。没有明显的坏输出。只是一个重要问题的错误答案。
稳定与不稳定的问题
Hamming 在模拟很好处理的问题和模拟几乎不可能的问题之间划清了一条界线。
原子弹:沿途壳轨迹的小差异不会大大影响最终产率。模拟是稳定的 — 中间步骤中的误差不会放大。
天气预报:相反。一个小扰动 — '日本中的蝴蝶是否拍打翅膀' — 原则上可以确定风暴是否袭击大陆。对初始条件的敏感性使日常天气模拟在短地平线之外不可靠。
两个问题都使用相同的数学结构:将空间离散化为单元,将时间离散化为步骤,向前行进。差异在于方向场 — 轨迹的小偏差是增长(不稳定)还是随时间缩小(稳定)。
天气表现出两者:短期不稳定性(日常混沌)、长期稳定性(季节遵循其轨迹)和超长期不稳定性(冰河时代)。
Hamming 的规则:在开始任何模拟之前,检查问题是根本上稳定还是不稳定的。如果不稳定,确定不稳定性是您需要的答案的根本原因还是规模或边界条件的产物。不要在投入数个月的工作后发现这一点。
先简单,后完整
Hamming 处理新模拟的首选方法:
1. 从简单开始 — 仅包括主要效应。正确获得主导行为。
2. 尽早获得洞察 — 一个简单的模拟在您投入于完整细节之前揭示问题的结构。
3. 逐步演进为完整性 — 逐步添加次要效应,根据更简单的基线验证每次添加。
他用 Nike 导弹项目来说明这一点。他早期的模拟使用了简单的指数大气模型。后来的模拟添加了高度相关的密度概况、侧风项和非线性阻力。但早期的洞察 — 垂直发射减少了稠密低层大气中的阻力;更大的翅膀比在后期机动中获得的速度更多 — 来自简单模型。
警告:最后,使用完整的模拟来冻结设计。简单的模拟获得洞察;完整的模拟获得承诺。