物理シミュレーションの歴史は、コンピュータの進化とともに発展してきた。 最近では、様々な物理演算エンジンを手軽に利用できるようになっている。 本稿では、物理シミュレーションの立場を振り返ってみることにしよう。
コンピュータの登場と物理演算
コンピュータの始祖には諸説あるが、一般的には1946年に完成したENIAC(Electronic Numerical Integrator and Computer)とされている(メモリにプログラムが格納されて実行される形式の、いわゆる「ノイマン型」コンピュータは、1949年に開発されたEDSACが最初のコンピュータと考えられる。)。ENIACは、ペンシルバニア大学において、ジョン・モークリー(John William Mauchly)とジョン・エッカート(John Presper Eckert)らにより開発されたコンピュータである。
物理シミュレーションの話題を紹介するにあたっては、この「最初のコンピュータ」に触れないわけにはいかないだろう。なぜなら、ENIACこそ「弾道計算を目的として作られた」コンピュータだからだ。
軍事目的から民間応用・研究応用へ
弾道計算は、物理演算のなかでは比較的シンプルなものといえる。 基本的な考え方は放物線を描いて飛んでいく飛行物体の軌道を、物理法則に従って導けばよい。
ただし正確なシミュレーションを実施しようとすると、なかなか難しいのも また事実だ。弾丸の形状によって空気の流れが発生するため、 流体力学の要素も計算に含めなければならない。また空気抵抗の 存在も同様である。重力だけでなく、コリオリ力など様々な他の力も 考慮する必要があり、さらに乱流やノイズの影響も無視できない。
このような問題設定のもとで、コンピュータによる物理演算の技術開発は 進められた。その成果は周辺技術へと波及していき、物理シミュレーションの 対象や応用分野も膨らんでいった。
工業製品への応用
民間に応用が進んだ物理シミュレーションといえば、CAD(Computer Aided Design)に組み込まれた演算処理が思い浮かぶ。例えばCADで設計した物体を有限要素法などで応力を計算するシミュレーションがある。この計算により、そもそも構造物として実用に耐えうるものなのか、どの程度の衝撃に耐えられるのか、といった力学的なシミュレーションを行う。このシミュレーションを利用することで、実際に試作してテストする工程を大幅に削減することが可能になる。
有限要素法では、構造物を小さな要素に分割し、各接点の変異をそれぞれの制約に従った方程式を解くことで計算する。当然、要素は細かく分けたほうが計算の精度を上げることができる反面、計算量は膨大なものとなる。ここでもコンピュータの計算能力がものをいう。
後半に続く。本文中のリンク・関連リンク:
- 手軽に試せるオープンソース物理計算エンジンのいろいろ
- Chipmunk Physics:C言語によるもの(英語)
- Box2D:OSS物理計算エンジンの草分け的存在(英語)
- Box2D Flash AS3:Box2DをFlashのアクションスクリプトで利用できるようにしたもの。デモが興味深い(英語)
- WikipediaによるENIACの説明。
- 有限要素法を易しく解説しているページ。