液体注入シミュレーター 戻る
SPH流体シミュレーター

液体注入シミュレーター

粒子法(SPH)で液体の流れをリアルタイム体験。重力・粘度・容器形状を変えて流体挙動を直感的に学ぼう。

コントロール

300
0.98
3 粒子/フレーム
200
キャンバスクリックで粒子を投下
0
粒子数
0%
充填率

理論メモ

SPH法では流体を粒子で離散化し、各粒子の物理量を近傍粒子の加重平均で計算します。

P = ρgh (静水圧)
a = −∇P/ρ + g + F_visc

本ツールでは粒子間反発力と凝集力で圧力・表面張力を近似しています。CAE実務ではLS-DYNAのSPH法が鋳造・スロッシング解析に使われます。

液体注入シミュレーターとは

🧑‍🎓
このシミュレーターで液体がバラバラの粒子で動いてるけど、これって現実の水と同じ動きになるんですか?
🎓
ざっくり言うと、粒子法(SPH)という方法で現実に近い動きを再現してるんだ。例えば、上の「粘性減衰」のスライダーを動かしてみて。値を大きくするとドロッとした油みたいに動きが遅くなるでしょ?あれが粒子同士の摩擦(粘性)を再現しているんだ。実務では、鋳造で溶けた金属が型に流れ込む様子をこれでシミュレーションするよ。
🧑‍🎓
え、そうなんですか!でも粒子がバラけずにまとまってるのはなぜ?水って表面でピンと張るあの力ですよね?
🎓
その通り、表面張力だね。このシミュレーターでは、近くの粒子同士に弱い引力(コヒージョン力)を働かせてそれを再現してる。試しに「容器形状」を広い皿状に変えて「注入速度」を上げてみて。粒子が広がろうとするけど、まとまって塊を作るのが観察できるよ。自動車の燃料タンクのスロッシング(液面の揺れ)解析で、この表面張力の再現が超重要になるんだ。
🧑‍🎓
なるほど!でも、容器の底の方ほど粒子がぎゅうぎゅうに詰まって見えるのは、水圧が関係してるってことですか?
🎓
鋭いね!それこそがパスカルの原理で、深いほど圧力が高くなる現象だ。「重力」の値を大きくすると、その効果がもっと顕著になるよ。SPHでは、粒子が密集して密度が高い領域ほど圧力が高いと計算する。すると、高いところから低いところへ押す力(圧力勾配力)が生まれて、これが流体を動かす主要な原動力の一つになるんだ。実際のCAEでは、ダム放流時の水圧分布をこれで評価したりするね。

物理モデルと主要な数式

SPH法の基本は、連続体である流体の物理量(密度、圧力など)を「粒子」と「カーネル関数」を使って離散化して計算することです。ある粒子iの密度 $\rho_i$ は、近傍の粒子jの質量を用いて次のように計算されます。

$$ \rho_i = \sum_j m_j W(|\mathbf{r}_i - \mathbf{r}_j|, h) $$

ここで、$m_j$ は粒子jの質量、$W$ はカーネル関数(重み関数)、$\mathbf{r}_i$ と $\mathbf{r}_j$ は粒子の位置ベクトル、$h$ は影響半径(スムージング長)です。カーネル関数によって、近くの粒子ほど計算に大きく影響を与えます。

粒子に働く力のうち、最も重要な圧力勾配力は、密度から計算された圧力を使って求められます。圧力は状態方程式(簡易式)から求め、その勾配が加速度を生み出します。

$$ \mathbf{a}_i^{pressure}= -\sum_j m_j \left( \frac{P_i}{\rho_i^2}+ \frac{P_j}{\rho_j^2}\right) \nabla W(|\mathbf{r}_i - \mathbf{r}_j|, h) $$

ここで、$P_i, P_j$ は粒子の圧力、$\nabla W$ はカーネル関数の勾配です。この力により、高密度(高圧)領域から低密度領域へ向かう流れが表現されます。シミュレーターで「注入速度」を変えると、初期の粒子密度分布が変わり、この力の働き方が変化します。

実世界での応用

鋳造工程のシミュレーション:溶けた金属(溶湯)が鋳型の中をどのように流れ、充填されるかを予測します。渦巻きやエアーポケット(空洞)の発生を事前に把握することで、不良品を減らし、最適な湯口の位置や注入速度を設計できます。

自動車の燃料タンク・オイルパン設計:車の急発進やカーブ走行時に内部の液体がどう揺れるか(スロッシング)を解析します。液体の動きによる重量移動やタンク壁面への衝撃圧力を評価し、安定性や耐久性を向上させます。

海洋工学・船舶設計:荒天時の海水の甲板への打ち上げ(グリーンウォーター)や、船体周りの複雑な波の影響を解析します。メッシュ法では追跡が難しい自由表面の大変形や飛沫を粒子法で捉えることができます。

食品・化学プロセス:タンクへの液体の充填・撹拌プロセスや、チョコレート・ケチャップなどの粘性流体の流動をシミュレーションします。製品の均一性を高めたり、容器から注ぐ際の挙動を最適化するのに役立ちます。

よくある誤解と注意点

まず、粒子数が多ければ多いほど良いシミュレーションになる、というのは大きな誤解だ。確かに粒子数を増やせば解像度は上がるが、計算時間は粒子数の2乗に近い勢いで増えていく。実務では、「必要な精度を満たす最小の粒子数」を見極めるのが腕の見せ所だ。例えば、容器全体の大まかな流れを見たいなら粗い粒子で十分だが、細かいスプラッシュや表面張力による微小な液滴の形成を捉えたいなら、局所的に粒子を細かくするなどの工夫が必要になる。

次に、パラメータ設定の落とし穴。シミュレーターの「粘度」や「表面張力」のスライダーは無次元の相対値であることが多い。つまり、これを実在する流体の値に直接対応させるには、スケーリング(相似則)を考えなければならない。例えば、水の動きを再現する設定で、より粘度の高いグリセリンを模倣しようと単に粘度スライダーを上げるだけでは、実際の挙動とはズレが生じる。実務では、既知の簡単なケース(例えば円管内流れ)でシミュレーション結果と理論値/実験値を照合し、パラメータを較正する「バリデーション」作業が不可欠だ。

最後に、初期条件の重要性を見落とさないでほしい。粒子を一様な格子状に並べて注入を始めるのと、ランダムに配置するのとでは、初期の不安定性が全く異なり、結果に大きな影響を与えることがある。また、注入速度を現実よりも極端に速く設定すると、非現実的な圧力や飛散を生み、計算が発散する原因にもなる。現実のプロセスをよく観察し、それに合った初期状態を設定することが第一歩だ。

関連する工学分野

このSPHによる液体注入シミュレーションの技術は、実は非常に多くの分野と地続きで繋がっている。まず真っ先に挙がるのは「混相流解析」だ。今は液体だけだが、ここに気泡や固体粒子を追加すれば、泡を含む飲料の充填プロセスや、スラリー(固体粒子が混ざった流体)の流動解析に応用できる。粒子法は異なる相を比較的容易に扱える強みがある。

もう一つは「構造物との連成解析(FSI: Fluid-Structure Interaction)」だ。現在のシミュレーターでは容器は動かない剛体だが、SPHの流体粒子と、別の方法(FEMなど)で計算する柔軟な構造物(例えばゴム製のタンクや薄い板)を連携させれば、流体の力で構造物が変形し、その変形がまた流れを変える…という複雑な現象をシミュレーションできる。これは燃料タンクのスロッシングによる疲労解析や、生体工学での血液と血管の相互作用の解析に直結する技術だ。

さらに視野を広げると、「粉体工学」にも通じる。粒子間に働く力を粘性や表面張力ではなく、摩擦や凝集力に置き換えて計算すれば、砂や穀物、製薬の粉末などの流動・崩壊現象をシミュレートする「離散要素法(DEM)」と概念的には兄弟と言える。CAEエンジニアとして、一つの手法の根幹を理解すれば、他の分野のシミュレーション技術を学ぶ際の強力な足がかりになる。

発展的な学習のために

このシミュレーターで直感的な感触をつかんだら、次はもう一歩、数理的な背景に踏み込んでみよう。おすすめの学習ステップは三段階だ。第一に、連続体力学の基礎を押さえる。SPHはナビエ-ストークス方程式という流体の運動方程式を解いている。いきなり式を追うのではなく、「質量保存」「運動量保存」「エネルギー保存」という3つの物理法則がどう形になっているかを概念的に理解するだけで、シミュレーションのパラメータが何を制御しているかが見えてくる。

第二に、離散化の考え方を学ぶ。SPHの肝は、積分を粒子の和で近似する「カーネル近似」と、その勾配の計算方法だ。例えば、圧力勾配力の式でなぜ対称形($P_i/\rho_i^2 + P_j/\rho_j^2$)が出てくるのか? これは運動量保存を満たすようにするための工夫で、数値的な安定性に大きく寄与する。こうした「式の形の意味」を一つずつ理解することが、自分でコードを書いたり、結果を深く考察したりする力になる。

最後に、実践的な課題に挑戦してみる。次のステップとして面白いトピックは「自由表面の扱い」と「境界条件」だ。現在のシミュレーターでは容器壁は単純な反発だが、実務ではもっと複雑な濡れ性(壁面での接触角)をどうモデル化するかが重要になる。また、流入・流出境界をどう設定するかも大きなテーマだ。これらの課題に取り組むことで、市販のCAEソフトウェアが内部でどのような計算をしているのか、その核心に迫ることができるだろう。