DLA Simulations (旧)

このシミュレーションは古くて遅くて間違って(?)います。 新しいのはこちら。
理学部物理学科の五月祭展示 に協賛して(?)展示用のシミュレーションをしてみました。
といっても一応既にプログラムがあったので、それを少し改造(MPI並列化)しただけですが。
元ソースは http://www.physics.orst.edu/~rubin/CPbook/PROGS/C_PROGS/dla.c
このままでは解像度が荒いので、色々手直しして、カラー出力できるようにしたのが これ。(普通のPCでは動かないです)
☆誘ってくれたE君、Thanks!

簡単な説明

DLAは、例えば雪の結晶が成長していくようすを説明する理論です。
雪が出来るとき、なぜ氷の固まりができないのか不思議に思ったことはありませんか? 空気中の水蒸気は、0℃以下になるといきなり固まるのではありません。 たいていの水蒸気は、他の氷とかチリなどの粒にぶつかって初めて氷になります。 一度氷になると、その分子はそこから動くことはできません。
このシミュレーションでは、中心に一個の氷の核を置き、周囲から一個ずつ水蒸気の 分子を近づけていきます。各粒子はランダムな方向(*1)に動かし、氷の 核にぶつかるかマスの外に出たら次の粒子に移ります。氷になった場合は その場で固まって、色つきのマス目になります。こうして、 2000*2000のマス目に1,000,000個ほど粒子を運動させてみたのが下のシミュレーションです。
このシミュレーションを、特に拡大して見ると、なぜ雪が氷の固まりにならないのかが 分かります。水蒸気分子は始めにぶつかった所で固まってしまうので、奥のほうの 空洞は埋められずに残ってしまいます。結果、あの雪の「ふわふわ感」が生まれるわけです。

(*1):完全なランダムではなく、粒子によって「上/左には行かない」ものと「下/右には いかないもの」に分けてあります。これは、本当のランダムウォークをさせると、 一粒子について「核にぶつかるかマスの外に出るか」するまでに相当時間がかかって しまうためです。ちゃんと検証はしていませんが、この問題では許される仮定だと 思います。
...と思ってこれだけ書いたのですが,出てきたグラフ、全部等方的じゃない特徴をもってるみたいで、やっぱりまずかったみたいです。 でも全部書き直すのは大変だし...

ふつうのシミュレーション

高めの解像度・同じパラメータで作りました。pdfで開いて拡大してみるのがお薦め。
パラメーターは2001x2001, 粒子1,000,000個です

「風」を吹かせたときのシミュレーション

元のプログラムによるシミュレーション