粒子衝突シミュレーターとは
🙋
このシミュレーターで「弾性」と「非弾性」を切り替えると、何が変わるんですか?
🎓
大まかに言うと、衝突の際にエネルギーが保存されるかどうかが変わるんだ。弾性衝突(反発係数e=1)では、ボール同士が完全に跳ね返る。例えばビリヤードの球の衝突に近いイメージだね。非弾性(e<1)だと、衝突でエネルギーが失われて、動きが鈍くなる。上のスライダーでeを0に近づけてみると、粒子がぶつかって合体する「完全非弾性衝突」が観察できるよ。
🙋
え、そうなんですか?じゃあ、たくさん衝突させ続けると、全体の動きはどうなっていくんですか?
🎓
良いところに気がついたね。弾性衝突だけの設定で、粒子数を増やして長い時間シミュレーションを走らせてみて。初期はみんな同じ速さでも、衝突を繰り返すうちに、速い粒子と遅い粒子が混ざり合って、ある決まった「速度分布」が自然にできあがるんだ。これが、このツールで確認できる「マクスウェル-ボルツマン分布」の形成過程さ。
🙋
「速度ベクトルを表示」や「重力を有効にする」パラメータは、何のためにあるんですか?
🎓
実務的な視点だね。「速度ベクトル」は、各粒子が今どの向きに、どれだけの勢いで動いているかを矢印で見るためのものだ。衝突前後の運動量の向きと大きさの変化を追うのに役立つよ。「重力」をONにすると、粒子が下に落ちていく様子を再現できる。例えば、粉体がホッパーから落ちる流れや、容器の底で粒子が積もる様子を簡易的にシミュレートするときに使うんだ。
物理モデルと主要な数式
2つの粒子間の衝突は、運動量保存則と反発係数の定義によって記述されます。衝突後の速度は以下の式で計算できます。
$$ \begin{aligned}\mathbf{v}_1' &= \mathbf{v}_1 - \frac{m_2}{m_1+m_2}(1+e)(\mathbf{n}\cdot (\mathbf{v}_1-\mathbf{v}_2))\mathbf{n}\\
\mathbf{v}_2' &= \mathbf{v}_2 + \frac{m_1}{m_1+m_2}(1+e)(\mathbf{n}\cdot (\mathbf{v}_1-\mathbf{v}_2))\mathbf{n}\end{aligned}$$
ここで、$\mathbf{v}_1, \mathbf{v}_2$は衝突前の速度、$\mathbf{v}_1', \mathbf{v}_2'$は衝突後の速度、$m_1, m_2$は質量、$e$は反発係数(0≦e≦1)、$\mathbf{n}$は衝突面の法線方向の単位ベクトルです。e=1で弾性衝突、e<1で非弾性衝突となります。
多数の粒子がランダムに衝突を繰り返すと、速度分布は平衡状態でマクスウェル-ボルツマン分布に従います。これは温度$T$の気体分子の速度の絶対値$v$の分布を表します。
$$ f(v) = 4\pi \left( \frac{m}{2\pi k_B T}\right)^{3/2}v^2 \exp\left( -\frac{m v^2}{2 k_B T} \right) $$
ここで、$m$は粒子質量、$k_B$はボルツマン定数、$T$は温度です。シミュレーターでは、粒子群の平均運動エネルギーから対応する「温度」が定義され、速度分布のヒストグラムがこの理論曲線に近づいていく様子を観察できます。
よくある質問
反発係数を1.0に設定しても、粒子の速度が徐々に減衰しているように見えるのはなぜですか?
反発係数1.0は衝突時のエネルギー損失がない理想的な弾性衝突を意味しますが、数値シミュレーションでは時間刻み幅による誤差や、粒子が壁に衝突する際の壁の反発係数が別途設定されている可能性があります。壁の反発係数も確認し、時間刻み幅を小さくしてみてください。
マクスウェル-ボルツマン速度分布が形成されるまでに、どのくらいの衝突回数が必要ですか?
目安として、粒子1個あたり平均10〜20回の衝突が必要です。例えばN=100の場合、総衝突回数が1000〜2000回程度で分布が安定し始めます。粒子数が多いほど、より滑らかな分布が得られます。
重力を大きくすると、粒子が箱の底に溜まってしまい、衝突が起こらなくなります。どうすれば良いですか?
重力が強すぎると粒子が沈降し、衝突頻度が低下します。重力の値を小さくするか、粒子の初速度を大きく設定してください。また、反発係数を1.0に近づけると、跳ね返りが大きくなり分布が形成されやすくなります。
粒子数を増やしすぎるとシミュレーションが重くなります。推奨される粒子数はありますか?
一般的なPCでは粒子数500〜1000程度が快適に動作する上限です。それ以上増やすと、衝突判定の計算量が粒子数の2乗に比例して増加するため、動作が遅くなります。精度より速度を優先する場合は、粒子数を200程度に抑えることをお勧めします。
実世界での応用
粉体プロセス工学: 製薬や食品工業での粉末混合、造粒、乾燥プロセスの設計・最適化に用いられます。DEM(離散要素法)シミュレーションの基礎となる粒子衝突モデルを、反発係数や摩擦係数を現実の材料に合わせて設定することで、粉体の流動性や分離現象を予測します。
材料加工・破壊解析: ボールミルによる微粉砕や、衝撃による材料の破壊過程の解析に応用されます。非弾性衝突モデルは、衝突エネルギーが材料の変形や破砕にどのように消費されるかを評価するために不可欠です。
微粒子・ナノテクノロジー: エアロゾル(煙霧体)中の微粒子の挙動や、半導体製造における微細粒子の付着・汚染メカニズムの解明に役立ちます。粒子間のファンデルワールス力などの付着力を考慮した拡張モデルも研究されています。
分子動力学(MD)シミュレーションの入門教育: 気体や液体の巨視的性質(圧力、温度、粘度など)が、分子レベルの無数の衝突からどのように生じるかを理解するための最もシンプルな学習ツールとして活用されます。統計力学の基本概念を視覚的に学べます。
よくある誤解と注意点
まず、「粒子数が多ければ多いほど現実的」という思い込み に注意だ。確かに粒子数を増やすと見た目は賑やかになるが、シミュレーションの計算負荷は爆発的に増える。例えば、粒子数を100から1000に増やすと、衝突判定の計算量は約100倍に! 実務では、解析したい現象の本質を捉えられる最小限の粒子数で始めるのが鉄則だ。次に、反発係数 e の設定 。e=1が「完全弾性」、e=0が「完全非弾性」だが、現実世界に「完全」はほぼない。金属球の衝突でもe=0.9程度だし、粘土のような材料ではe=0.1以下だ。教科書的な理解の後は、この値を現実に近づけることが重要になる。最後に、「重力を有効にすると温度が下がる?」という疑問 。重力で粒子が下に落ち、底部に密集すると、衝突頻度が上がって運動エネルギーが熱として「失われた」ように見えるかもしれない。しかし、これはエネルギー保存則の破綻ではなく、粒子の位置エネルギーと運動エネルギーの変換、そして容器壁との衝突(ここでも反発係数が効く!)による散逸が主な原因だ。系全体のエネルギー収支を考える癖をつけよう。