結晶成長シミュレーターとは
🙋
このシミュレーターで作られるモコモコした枝みたいな形、雪の結晶っぽいけど、どうやってできるんですか?
🎓
大まかに言うと、ランダムに漂う粒子が、中心の“種”にぶつかるとくっつく、というルールで成長するんだ。このモデルをDLA(拡散律速凝集)って呼ぶよ。上の「粒子数」スライダーを増やしてみて。粒子が多ければ多いほど、複雑な枝が外側に伸びていくのがわかるよね。
🙋
え、そうなんですか?色がついてるのは何を表してるんですか?
🎓
粒子がくっついた順番(時刻)を色分けしてるんだ。最初にくっついた内側は青で、後からくっついた外側ほど赤に近づく。これで成長の歴史が一目でわかる。例えば「付着確率」を下げると、粒子が跳ね返りやすくなるから、より空隙が多いで細かい枝ができるよ。確認してみて。
🙋
画面に出てる「フラクタル次元」って何ですか?数字が変わってます。
🎓
この枝分かれ構造の“複雑さ”を表す数値だよ。理論的には約1.71になる。真ん中の「格子タイプ」を「六方晶」に変えてみて。雪の結晶に近い六角形の対称性が出てきて、フラクタル次元の値も少し変わるはずだ。実務では、この値で材料の表面積や電気伝導度を推定したりするんだ。
物理モデルと主要な数式
DLAモデルの核心は、ランダムウォーク(拡散)する粒子の運動です。粒子は格子点上をランダムに移動し、隣接サイトに既存のクラスター(集合体)が存在すると付着します。このプロセスは以下の確率過程で記述されます。
$$ P(\vec{r}, t+\Delta t) = \sum_{\vec{\delta}}\frac{1}{z}P(\vec{r}+\vec{\delta}, t) $$
ここで、$P(\vec{r}, t)$は位置$\vec{r}$、時刻$t$に粒子が存在する確率、$\vec{\delta}$は隣接格子点への変位ベクトル(四方または六方)、$z$は隣接サイト数(配位数)です。クラスター表面では$P=0$(吸収境界条件)とします。
成長したクラスターの構造を特徴づけるのがフラクタル次元 $D_f$ です。クラスターの質量(粒子数)$M$ と、その広がり(半径)$R$ の間にべき乗則が成り立ちます。
$$ M(R) \propto R^{D_f} $$
ここで、$M$はクラスター内の総粒子数、$R$は中心からの慣性半径などで定義される代表長さです。$D_f$が2に近いと緻密な円形、1.71程度だと空隙が多いな樹枝状構造であることを意味します。シミュレーターは成長過程でこの関係をリアルタイムにフィッティングし、$D_f$を推定しています。
よくある質問
粒子の色は捕捉された時刻(成長段階)を表しています。初期に付着した粒子ほど青く、後になるほど赤く表示されます。これにより、結晶がどの順序で成長したかを視覚的に確認でき、樹枝状構造の時間発展を直感的に理解できます。
フラクタル次元は構造の複雑さを示します。2次元DLAでは理論値約1.71が典型的で、値が大きいほど密な構造、小さいほど枝分かれが細いことを意味します。リアルタイム表示される値が1.5〜1.8の範囲なら正常なDLA成長です。
四方格子では十字対称の角張った樹枝状結晶、六方格子では六角対称の雪の結晶に近い形状が生成されます。配位数(隣接サイト数)が異なるため、成長方向の異方性が変化し、フラクタル次元にもわずかな差が現れます。
粒子数を減らすか、格子サイズを小さくすることで計算負荷を軽減できます。また、表示更新間隔を長く設定すると描画処理が軽くなります。目安として、1万粒子程度までは快適に動作しますが、それ以上は段階的に調整してください。
実世界での応用
電解析出・めっき:電解液中の金属イオンが電極表面に拡散して析出する過程はDLAと類似しており、樹枝状の析出物(デンドライト)が発生することがあります。これはショートの原因となるため、プロセス制御の観点から研究されています。
雪の結晶の成長:過冷却水蒸気分子が氷晶核に拡散して付着する過程は、六方晶の対称性を考慮したDLAモデルで再現できます。シミュレーターの「六方晶」モードは、この自然現象を模倣したものです。
多孔質材料・コロイド凝集:微粒子が溶液中でランダムに動き、衝突して大きな集合体を形成するコロイド凝集は、DLAの3次元版としてモデル化されます。生成されるフラクタル構造は、触媒の表面積やフィルターの透過性に影響します。
血管新生・神経突起の分岐:生物の組織において、成長因子などの化学物質の拡散に律速されて血管や神経が枝分かれしながら成長するパターンは、DLAの考え方で理解が進められています。
よくある誤解と注意点
このシミュレーターを使い始めるとき、いくつか勘違いしやすいポイントがあるから、最初に押さえておこう。まず、「粒子数を増やせば増やすほど、現実の結晶に近くなる」と思いがちだけど、そう単純じゃない。確かに粒子数が多いほど構造は細かくなるけど、計算する格子のサイズが足りないと、クラスターが画面端にぶつかって成長が歪んでしまう。例えば、1000x1000の格子で10万粒子も生成すると、端効果が無視できなくなるんだ。まずは格子サイズを大きくしてから粒子数を増やす、という順番がコツだね。
次に、「付着確率」パラメータの解釈。これを下げると「跳ね返りが増える」と説明されるけど、これは粒子が「くっつくかどうかを確率的に決める」という抽象化されたモデルだということを忘れてはいけない。実在の現象、例えば電解析出で言えば、これは界面のエネルギー障壁や添加剤の影響に相当する。だから「0.1」に設定したからといって、現実の確率が10%というわけではなく、あくまで相対的な傾向を見るためのパラメータと理解しよう。
最後に、フラクタル次元の値の読み方。シミュレーション中に値が1.5から1.8の間で揺れるのを見て「計算がおかしいの?」と思うかもしれない。でも、これは正常だ。推定に使うデータ点(クラスターの半径と質量)が少ない成長初期は値が不安定で、粒子数が増えるほど理論値の約1.71に収束していく。したがって、ある程度成長が進んでから(例えば粒子数が5000を超えてから)の値を参考にしよう。