2021年10月16日土曜日

DesignSPHysics

セミナーで紹介されていた DesignSPHysics。
https://design.sphysics.org/

以前より公開されていることを知っていましたが、使っていませんでした。
今回、その機能を体験したのですが、これがなかなか素晴らしい。FreeCAD に 組み込むマクロ(Python)ですが、よくできていました。基本的なシミュレーションなら、これを通してジオメトリの取り込み、計算、可視化を容易に実施できます。

復習を兼ねて、手元にある3Dモデルに水を流してみました。ジオメトリは Civil3D で作成していましたので、まずはこれを取り込みます。

変換手順
1.Civil3D:ジオメトリ全体を iges 書き出し(部品毎の stl 書き出しは座標が飛ぶので不可)
2.FreeCAD:iges 読み込み → 部品毎に stl 書き出し(座標、スケールを保つ)
※正面図で書き出すこと。書き出したview の上方向がz軸となる
3.FreeCAD+DesignSPHysics:stl 読み込み(「Import GEO」 で1倍で取り込む)

 

読み込んだジオメトリに対し流体か boundary かを指定した後、諸々の計算条件を設定します。
「Execution Parameters」で人工粘性を組み込んだり、計算時間を決めたり。
「Object order」で粒子の発生順序(領域の重なる中で、どちらを後に発生させて上書きさせるか)を決めたり。計算を CPU で実施するか GPU で実施するかも、ここで指定できます。

 パラメータを決めたら、「Save Case」でモデルを保存。
「Run GenCase」の後、「Run」でDualSPHysics を実行します。

現行  Ver. では mDBC 未対応。書き出した xml を直接修正すればOKでした。DEM, Chrono も今後とのこと。これだけ簡単になると使い続けたくなります。楽しみですね。

計算後は「ComputeForce」で壁等にかかる力を抜き出せます。boundary の MK は+10で指定すれば良いみたいですね。どこかに書かれているのかもしれませんが、わからなかったので VTK 書き出し後に MK を確認しました。
VTK書き出しは「PartVTK」、「IsoSurface」など。ParaView のパスを「Setup Plugin」で設定していたら、自動で立ち上げることも可能です。地味に便利な機能です。
VisualSPHysics を使う場合は、Blender でstl(boundary) + VTK(fluid)取り込み。Civil3Dではジオメトリを m単位 で作成していたため、stl を0.001倍指定で読み込むと VTK と座標が一致します。
残念ながら VisualSPHysics は開発が止まっているようで、 2.90LTS 未対応。2.83LTS に落としたら、問題なく動きました。

で、肝心の計算結果は、イマイチ。うーん、残念でした。

粒子法はメッシュを切らなくて済むので、手軽です。DesignSPHysics でより手軽になったかな。今後の開発が楽しみです。あらためて開発チームに感謝!

0 件のコメント:

コメントを投稿