キャンバスをクリック&ドラッグで粒子を追加 | 障害物の位置は自動で中央に配置
密度推定(Poly6カーネル):
$$W_{poly6}(r,h) = \frac{315}{64\pi h^9}(h^2-r^2)^3$$圧力勾配(Spikyカーネル):
$$\nabla W_{spiky}(r,h) = -\frac{45}{\pi h^6}(h-r)^2 \hat{r}$$$h$: 平滑化長さ、$r$: 粒子間距離
粒子法(SPH法)で液体の流れをリアルタイムシミュレーション。粘性・表面張力・乱流を直感的に体験。
キャンバスをクリック&ドラッグで粒子を追加 | 障害物の位置は自動で中央に配置
密度推定(Poly6カーネル):
$$W_{poly6}(r,h) = \frac{315}{64\pi h^9}(h^2-r^2)^3$$圧力勾配(Spikyカーネル):
$$\nabla W_{spiky}(r,h) = -\frac{45}{\pi h^6}(h-r)^2 \hat{r}$$$h$: 平滑化長さ、$r$: 粒子間距離
防災・水工学:洪水時の氾濫流や土石流のシミュレーションに利用されます。複雑な地形を自由に流れ、建物などの障害物との相互作用を評価できるため、ハザードマップ作成や避難計画に役立ちます。
製造業(鋳造・充填):金属や樹脂を金型に流し込む充填プロセスの解析に使われます。溶湯が複雑な形状の型内部をどう流れ、どこで巻き込みが発生するかを予測し、製品品質の向上に貢献します。
海洋工学:船舶の航行時に発生する波や、海洋構造物(洋上風車の支柱など)への波浪の衝撃力を評価します。自由表面を伴う大きな変形を扱えるSPHの特性が活かされます。
CAEソフトウェアにおける実装:実務では、衝突・爆発解析のLS-DYNAや、オープンソースCFDソフトウェアのDualSPHysics(OpenFOAM連携可能)などでSPHソルバーが提供されており、上記のような専門的な解析に用いられています。
SPHを触り始めるときに、いくつか陥りがちなポイントがあるよ。まず「粒子数が多いほど常に精度が高い」という誤解。確かに粒子数を増やすと細かい現象は見えるけど、計算負荷は粒子数の2乗近くで跳ね上がる。例えば、粒子数を1000から2000に倍増させると、近傍探索の計算量で実質4倍近く重くなることも。学習目的なら、まずは少ない粒子数(例:2000〜5000)で大まかな挙動を掴んでから、徐々に増やすのがコツだね。
次にパラメータ設定の落とし穴。粘性係数や圧力係数は独立に変えられるけど、現実の流体を再現するにはこれらのバランスが命。例えば、水のような動粘度($ν$)を再現したい場合、粘性係数だけをいじるのではなく、密度や圧力係数も連動して調整する必要がある。実務では「無次元数」を意識するんだ。このツールで重力を強くしたら、粒子が飛び散ってしまう?そんな時は、圧力係数を少し上げて粒子のまとまりを強くしてみよう。
最後に「SPHは何でも計算できる魔法の手法」という過大評価。SPHは自由表面や大変形に強い反面、弱みもある。例えば、微小な乱流や境界層の詳細な挙動には向かない。また、このデモのように全ての粒子を可視化する方法は直感的だけど、実務では粒子の「統計的な挙動」や「領域平均値」を評価することが多い。ツールで現象を体感した後は、「ここを定量化するにはどうすれば?」と一歩引いて考える癖をつけよう。
水(密度1000kg/m³、粘性0.001Pa·s)2000粒子でダム決壊を再現した場合:初期ポテンシャルエネルギー約45J、流動開始時の運動エネルギー35J、障害物衝突後の散逸エネルギー10J。粒子間隔0.05mで設定すると、流速1.2m/sの水が0.3秒で障害物に到達し、SPH相互作用距離2h=0.1m内の粒子圧力が80kPaに達する。