始めに
本記事では、SPH 粒子同士を衝突、接触させる例題です。
SPH とシェルやソリッド要素を接触させる例題ではありません。完全に別物です。それについてはこちらを参考にしてください。
本記事では、SPH 粒子同士を接触させるにはどのような設定をすればよいのか、例題を通して解説します。
例題
ダウンロード: モデルの単位系は ton, mm, s です。
本モデル内には、左右に 2個の SPH 粒子があり、左の粒子に、1000m/s の初速を与えて、右の粒子に衝突させようとしています。
アニメーションを見る方が手っ取り早いです。SPH 粒子の位置をわかりやすくするために 3D 表示を使ったのですが、なぜか GIF アニメにすると、直径が変化するという視覚効果がついてしまいました。玉の大きさは無意味ですので、どうか、その部分は無視してください。
(HyperView 内では、普通に一定の大きさの玉で描画されます)
材料は樹脂くらいの特性です。弾性材料です。
こちらが SPH 要素特性です。要素特性に質量があるのは不思議な感じですが、SPH の粒子には大きさという概念がないので、材料密度から粒子の質量を計算できません。ですので、プロパティで粒子の質量を指定することになります。
では肝心の接触の設定について、説明します。何も設定しません。
これを理解するには、SPH というものの概念を少し理解する必要があります。普通の要素では、要素を構成する節点を指定しますので、この時点で、節点と節点の間につながりができます。ですので、どこかの節点を動かせば、要素を介してつながっている節点が全部動くことになります。
しかし、SPH 要素の指定は 1節点だけです。では、どうやって、周りの SPH とのつながりを持つのでしょうか?それはここに書いてあります。
https://help.altair.com/hwsolvers/rad/topics/solvers/rad/theory_sph_approx_of_function_r.htm
難しい数式はすべて飛ばして、この図だけ見てみましょう。何を示しているかというと、2h の範囲に入っている粒子の速度を、真ん中の粒子と同じにしてしまおうということを示しています。
ただ、範囲内のすべての粒子の速度を全部同じにしてしまうのはよくないので、中央付近に非常に近いところは中央の粒子とほぼほぼ同じ速度になりますが、外側にいくほど、あまり影響を受けなくなります。2h の外側は完全に無関係です。これを SPH ではスムージングと呼んでいます。
つまり、真ん中の粒子を動かすと、周りの粒子もじわじわ動き始めます。逆に真ん中を止めると、周りもじわじわとまります。このスムージング処理をすべての粒子に行うことで、節点同士のつながりの無い SPH の粒子の集合が、何か一つの塊のように動くのです。
h は SPH が自動で計算します。 4/3 π h^3 x ρ = mp、ここで ρ は /MAT で与えた密度で、mp は /PROP/SPH で与えた粒子一つの質量です。あたかも、半径 h の玉が mp の質量を持つというようなイメージです。本題から外れてきてしまいましたが、 h は自分で自由に指定することもできます。
h の値は、_0000.out で確認できます。
では、このモデルで何が起きるか考えてみましょう。
今回 h=9 mm くらいですので、その 2倍の 18mm 以上離れている間は、2個の粒子は関係がありません。
しかし 18mm 以内に入ってくると、左側の粒子を中心にスムージングすると、右の粒子は、左の粒子の速度につられてすこし右に速度を持ちます。逆に右の粒子を中心としたスムージングすると、右の粒子は止まっているので、左の粒子の速度は少し小さくなります。
これを繰り返していくと、いずれ左の粒子の速度よりも、右の粒子の速度のほうが大きくなるという、あたかも接触と同じような、という現象になるのです。
アニメーションのコマが粗いので、一番食い込んでいるところは取りこぼしてしまっているのですが、2粒子の最短の距離は約 20mm でしたから、前述の説明どおりのことが起きていそうなことがお判りになると思います。
ぜひ /PROP/SPH の h を書き換えて、反発がどのように変化するのか実験してみてください。
補足: HyperMesh での SPH 粒子作成について
SPH 粒子の定義じたいは /SPHCEL というカードなのですが、HyperMesh ではこれを一つ一つ自分で定義する機能はありません。
こちらは指定した空間に、SPH 粒子をたくさん生成するという機能になっています。
ですので、本モデルの SPH 粒子はテキストエディタで手書きで作りました。粒子の数が少ない方が、何が起きているのかよくわかると思ったためです。