第一次大規模計算
理查德·哈明的第一個大規模模擬:洛斯阿拉莫斯,1945年。目標 — 設計一個可行的原子彈。
使模擬必要的問題: 不存在小規模實驗。臨界質量是二元的。可裂變物質要麼超過臨界質量並引發鏈式反應,要麼不會。你無法運行縮小版本。
球形內爆設計
一種設計使用了球形對稱 — 內爆。工程師將材料分成許多同心殼層。對於每個殼層,他們寫出作用在兩個面上的力的方程式,加上關於壓力和密度的狀態方程式。
時間被離散化為10⁻⁸秒的間隔 — 稱為「shake」(來自「a shake of a lamb's tail」)。在每個shake,計算前進:每個殼層向哪裡移動?什麼力作用在它上面?
強制模擬的三個條件
哈明確定了模擬可以替代物理實驗的情況:
1. 不可能的實驗 — 臨界質量無法在小規模進行測試
2. 危險的實驗 — 你無法引爆炸彈來獲取校準數據
3. 太昂貴或太慢 — 大氣阻擋、天氣預報、導彈軌跡
目標:產生等效結果,而不是精確複製物理過程。模擬無需與原子級別的現實相匹配。它必須在設計所需的精度範圍內產生相同的可觀測結果。
等效結果
哈明在洛斯阿拉莫斯的關鍵洞察:狀態方程數據是不准確的。壓力-密度關係來自高壓實驗室、地震估計、恆星核心模型 — 都帶有重大的不確定性。
工程師讀取這些曲線精確到三位小數,然後製成五位數的表格。看起來是垃圾進入。
但原子彈設計成功了。
為什麼?因為計算取得了相鄰殼層上值的二階差分。狀態方程中的任何局部誤差在殼層遍歷曲線的歷史過程中平均消除。重要的是:狀態方程的曲率,且只有平均而言。
計算內的反饋補償了不准確的輸入。
重複的核心
哈明確定了大型模擬的一個通用結構特徵:一個高度重複的內循環。
在洛斯阿拉莫斯:相同的力方程對每個殼層在每個時間步運行。一個殼層的代碼運行了數千次。沒有那種重複結構,編程成本將是巨大的。
這個原則可以推廣:天氣預報將大氣分成區塊;相同的物理方程更新每個區塊。導彈模擬在每個時間增量步進相同的軌跡方程。晶體管設計在每個空間網格點計算相同的場方程。
哈明的建議: 早期尋找任何提議模擬的重複部分。將模擬轉換為利用重複的形式。沒有緊湊內循環的模擬可能結構不良。
專家知識作為硬性前提條件
哈明反復回到他認為不可商量的一條規則:只有領域專家才能知道什麼重要。
模擬專家可以組織代碼、選擇數值方法、調試重複循環。但只有對領域物理、化學或工程精通的人才能確定:
- 哪些效應必須出現在模型中
- 哪些可以安全地省略
- 異常結果是表示物理真理還是建模誤差
在洛斯阿拉莫斯,哈明是計算專家。物理學家是領域專家。兩者都不能互相替代。
行話作為障礙 & 工具
哈明最強的運營規則之一:學習你正在模擬的領域的行話。
他的故事:一個海軍攔截問題有28個同時微分方程。他堅持提案者 — 一位物理學家朋友 — 在計算運行前與他一起逐行檢查二進制機器代碼。
檢查中途,物理學家說:「Dick,那是翅膀限制,不是電壓限制。」相同的數學符號,相同的形式方程 — 但兩種不同的物理解釋,產生實質上不同的結果。
教訓:雙方都理解數學。兩者都沒有通常意義上的溝通失敗。但限制操作的物理意義只由方程單獨決定是不足的。
沒有檢查,模擬將使用錯誤的解釋運行。沒有運行時錯誤。沒有明顯的錯誤輸出。只是對一個重要問題的錯誤答案。
穩定 vs 不穩定問題
哈明在模擬能很好處理的問題和模擬幾乎不可能處理的問題之間劃了一條明確的界線。
原子彈: 沿途殼層軌跡的小差異沒有大大影響最終產率。模擬是穩定的 — 中間步驟中的誤差沒有放大。
天氣預報: 相反。一個小的擾動 — 「日本的蝴蝶是否拍動翅膀」— 原則上可以決定風暴是否襲擊大陸。對初始條件的敏感性使得日常天氣模擬在短期預報之外不可靠。
兩個問題使用相同的數學結構:將空間離散化為單元格,將時間離散化為步驟,向前推進。差別在於方向場 — 軌跡的小偏差是隨著時間增長(不穩定)還是縮小(穩定)。
天氣顯示兩者:短期不穩定性(日常混亂)、長期穩定性(季節循環進行)和超長期不穩定性(冰河時代)。
哈明的規則: 在開始任何模擬之前,檢查問題是否從根本上穩定或不穩定。如果不穩定,確定不穩定性是對你需要的答案基本的,還是尺度或邊界條件的人工產物。不要在投入數月工作後才發現這一點。
先簡單,後完整
哈明處理新模擬的首選方法:
1. 開始簡單 — 僅包括主要效應。正確獲得主要行為。
2. 早期獲得洞察 — 一個簡單的模擬在你投入完整細節之前揭示問題的結構。
3. 向完整性發展 — 逐步添加次要效應,針對更簡單的基線驗證每個添加。
他用Nike導彈項目說明了這一點。他的早期模擬使用了簡單的指數大氣模型。後來的模擬添加了高度依賴的密度分佈、側風項和非線性阻力。但早期的洞察 — 垂直發射在密集的下層大氣中減少阻力;較大的翅膀付出的速度成本比它們在後期機動性中的收益更多 — 來自簡單模型。
警告: 在最後,使用完整模擬凍結設計。簡單模擬獲得洞察;完整模擬獲得承諾。