첫 대규모 계산
리처드 해밍의 첫 대규모 시뮬레이션: 로스알라모스, 1945년. 목표 — 작동 가능한 원자폭탄 설계.
시뮬레이션을 필요하게 만든 문제: 소규모 실험이 존재하지 않는다. 임계질량은 이진법이다. 핵분열성 물질이 임계질량을 초과하고 연쇄 반응이 전파되거나, 그렇지 않거나 한다. 축소판을 실행할 수 없다.
구형 내폭 설계
한 가지 설계는 구형 대칭을 사용했다 — 내폭. 엔지니어들은 물질을 많은 동심원형 껍질로 나누었다. 각 껍질에 대해 그들은 양쪽 면의 힘에 대한 방정식과 압력과 밀도를 연결하는 상태 방정식을 작성했다.
시간은 10⁻⁸초 간격으로 이산화되었다 — '쉐이크'라고 불린다('양의 꼬리의 흔들림'에서 유래). 각 쉐이크에서 계산이 진행되었다: 각 껍질이 어디로 움직이는가? 어떤 힘이 작용하는가?
시뮬레이션을 강제하는 세 가지 조건
해밍은 시뮬레이션이 물리 실험을 대체하는 상황을 식별했다:
1. 불가능한 실험 — 임계질량은 소규모로 테스트할 수 없다
2. 위험한 실험 — 보정 데이터를 위해 폭탄을 폭발시킬 수 없다
3. 너무 비싸거나 너무 느림 — 대기가 막음, 날씨 예측, 미사일 궤적
목표: 동등한 결과를 생성하는 것이지, 물리 과정을 정확히 재현하는 것이 아니다. 시뮬레이션이 원자 단위로 현실과 일치할 필요는 없다. 설계가 필요로 하는 정확도 범위 내에서 동일한 관측 가능한 결과를 생성해야 한다.
동등한 결과
해밍의 로스알라모스에서의 핵심 통찰: 상태 방정식 데이터가 부정확했다. 압력-밀도 관계는 고압 실험실, 지진 추정, 별의 중심 모델에서 나왔다 — 모두 상당한 불확실성이 있었다.
엔지니어들은 이 곡선을 소수 이하 세 자리로 읽고, 다섯 자리로 표로 만들었다. 겉보기에 쓰레기를 넣은 것이다.
그러나 폭탄 설계는 작동했다.
왜? 계산이 인접한 껍질의 값의 2차 차이를 취했기 때문이다. 상태 방정식의 국소적 오류는 껍질이 곡선을 따라 이동하는 역사 전체에서 평균화되었다. 중요한 것: 상태 방정식의 곡률, 그리고 평균적으로만.
계산 내의 피드백이 부정확한 입력을 보상했다.
반복 중심
해밍은 대규모 시뮬레이션의 보편적 구조 특성을 식별했다: 매우 반복적인 내부 루프.
로스알라모스에서: 동일한 힘 방정식이 모든 껍질에서 모든 시간 단계에서 실행되었다. 한 껍질의 코드는 수천 번 실행되었다. 반복 구조가 없었다면, 프로그래밍 비용이 금지적이었을 것이다.
이 원칙은 일반화된다: 날씨 예측은 대기를 블록으로 나눈다; 동일한 물리 방정식이 각 블록을 업데이트한다. 미사일 시뮬레이션은 각 시간 증분에서 동일한 궤적 방정식을 단계별로 처리한다. 트랜지스터 설계는 각 공간 격자점에서 동일한 장 방정식을 계산한다.
해밍의 조언: 제안된 시뮬레이션의 반복적 부분을 일찍 찾아라. 반복을 활용하는 형태로 시뮬레이션을 변환하라. 타이트한 내부 루프가 없는 시뮬레이션은 아마도 구조가 잘못되어 있을 것이다.
전문가 지식을 필수 전제조건으로
해밍은 무엇이 중요한지를 영역 전문가만 알 수 있다는 규칙으로 반복해서 돌아왔다.
시뮬레이션 전문가는 코드를 구조화하고, 수치 방법을 선택하고, 반복 루프를 디버그할 수 있다. 그러나 오직 영역의 물리학, 화학 또는 공학에 능숙한 누군가만이 다음을 결정할 수 있다:
- 모델에 나타나야 하는 효과
- 안전하게 생략할 수 있는 것
- 비정상적인 결과가 물리적 진실이나 모델링 오류를 신호하는지 여부
로스알라모스에서, 해밍은 컴퓨팅 전문가였다. 물리학자들은 영역 전문가였다. 둘 다 서로를 대체할 수 없었다.
용어: 장벽 & 도구
해밍의 가장 강력한 운영상 규칙 중 하나: 당신이 시뮬레이션하는 영역의 용어를 배워라.
그의 이야기: 28개의 동시 미분 방정식이 있는 해군 감청 문제. 그는 제안자 — 물리학자 친구 — 가 계산을 실행하기 전에 이진 기계 코드의 모든 라인을 그와 함께 검토할 것을 주장했다.
중간에 물리학자가 말했다: 'Dick, 그것은 핀 제한이지, 전압 제한이 아니다.' 동일한 수학 기호, 동일한 형식 방정식 — 하지만 제한 작동의 두 가지 다른 물리적 해석으로, 상당히 다른 결과를 생성한다.
교훈: 양쪽 모두 수학을 이해했다. 어느 쪽도 일반적인 의미에서 통신 실패를 하지 않았다. 하지만 제한 작동의 물리적 의미는 방정식만으로는 결정되지 않았다.
검토가 없었다면 시뮬레이션은 잘못된 해석으로 실행되었을 것이다. 런타임 오류 없음. 명백하게 나쁜 출력 없음. 단지 중요한 문제에 대한 잘못된 답.
안정적 vs 불안정 문제
해밍은 시뮬레이션이 잘 처리하는 문제와 시뮬레이션이 거의 불가능한 문제 사이의 선을 명확하게 그었다.
원자폭탄: 경로를 따라 껍질 궤적의 작은 차이는 최종 수율에 크게 영향을 주지 않았다. 시뮬레이션은 안정적이었다 — 중간 단계의 오류는 증폭되지 않았다.
날씨 예측: 반대다. 작은 변동 — '일본에서 나비가 날개를 펄럭이는지 여부' — 는 원칙적으로 폭풍이 대륙을 강타할지 여부를 결정할 수 있다. 초기 조건에 대한 민감성은 단기 날씨 시뮬레이션을 짧은 지평을 넘어 신뢰할 수 없게 만든다.
두 문제 모두 동일한 수학 구조를 사용한다: 공간을 셀로 이산화하고, 시간을 단계로 이산화하고, 앞으로 나아간다. 차이는 방향 필드에 있다 — 궤적에서의 작은 편차가 시간이 지남에 따라 증가(불안정)하거나 감소(안정)하는지 여부.
날씨는 둘 다 보여준다: 단기 불안정(일일 혼란), 장기 안정(계절은 자신의 라운드를 따름), 매우 장기 불안정(빙하기).
해밍의 규칙: 시뮬레이션을 시작하기 전에, 문제가 근본적으로 안정적인지 불안정한지 검토하라. 불안정하다면, 불안정성이 필요한 답에 근본적인지 또는 척도나 경계 조건의 산물인지 결정하라. 몇 개월의 일을 한 후에 이것을 발견하지 마라.
먼저 단순하게, 나중에 완성하게
해밍의 새로운 시뮬레이션에 접근하기 위한 선호 방법:
1. 간단하게 시작하라 — 주요 효과만 포함하라. 지배적인 동작을 올바르게 얻어라.
2. 일찍 통찰력을 얻어라 — 간단한 시뮬레이션은 전체 세부사항에 투자하기 전에 문제의 구조를 드러낸다.
3. 완성을 향해 진화하라 — 점진적으로 2차 효과를 추가하고, 각 추가를 더 간단한 기준선에 대해 검증하라.
그는 Nike 미사일 프로젝트로 이를 설명했다. 그의 초기 시뮬레이션은 간단한 지수 대기 모델을 사용했다. 나중의 시뮬레이션은 고도 의존 밀도 프로필, 교차풍 항, 비선형 항력을 추가했다. 하지만 초기 통찰력 — 수직 발사는 조밀한 하층 대기에서 항력을 감소시킨다; 더 큰 날개는 후기 조종성에서 얻는 것보다 더 많은 속도가 든다 — 은 간단한 모델에서 나왔다.
경고: 마지막에, 전체 시뮬레이션을 사용하여 설계를 고정하라. 간단한 시뮬레이션은 통찰력을 얻는다; 전체 시뮬레이션은 약속을 얻는다.