2017年3月5日日曜日

CADデータの取り込み(DualSPHysics Ver.4.0)

CADで作成した地形の取り込みは、あっさりクリアーできました。

XMLファイルに関する説明書を読むと、以下の流れが記されていました(以前のVer.にも添付されていたのですが、見落としていました)。

1. STL、VTK ファイル等の閉じた形状を boundary、fluid として読み込む。
2. fluid の中の座標を1点指定。
3. 粒子を発生させる範囲(BOXの基点座標と、大きさ)を設定。

基本はこれだけ。3の範囲を fluidの範囲 よりも大きくしておくと、その中が粒子で満たされます。
これで3次元の計算準備が整うのですから、メッシュレスの威力、半端ないです。


今回の題材は、以前、土砂移動シミュで作成していた深層崩壊。
範囲は3km2。
地形とその上に分布する土砂の2つのソリッドを Civil3D から書き出し、2つのSTLファイルを作成します。それらを input ファイルで boundary、fluid として指定するだけで読み込むことができました。

少し引っかかったのが、マイナス座標を扱えなかった点。マイナスの付いた公共座標のまま書き出すと、fluid、boundary が自動で (X,Y) = (0,0) を原点として持つように移動されます(当たり前なのかもしれませんが、知りませんでした)。複数の構造物は、それぞれ原点に移動されますので相対位置がズレます。
これについては、モデル全体の基点をプラス領域に移動してから、各々をSTL 書き出しすれば、OKです。

で、計算実行!

粒子が1億個以上発生し、GPUのメモリーオーバー!

ま、予想されていたことです。

GeForce GTX480 だったのですが、GTX660 を SLI で2基連結したマシンではどうか?と思い試してみました。が、なぜかこちらもシングルでしか動かず、メモリーオーバー。

で、粒子間隔を変更しつつ、動作するレベルを探っていきました。
結果、数百万粒子までは計算できそうです。粒子間隔が2mだと、GTX480 で3日となりました(なぜか、GTX660では4日。クロックでしょうか?)。

テストケースとして粒子間隔 4mで実施。これだと 87万粒子(実際に動く粒子は17万個)、120秒間の計算で約5時間程度。

結果を確認すると、おかしな動きをしています。発散したようです。


今度は粘性を上げて計算してみました。

OK。うまくいきました。
と言っても、斜面の上から水を流すように流れるだけで、土砂の動きではありません(この点は、Multi-Phase で承知しています)。
粒子の動きが落ち着くと、天然ダムを形成せず、谷を長く埋める湖の様なフラットな形状ができあがりました。粘性をさらに上げると、それらしい形状になりましたが、おそらく時間の問題でしょう。流体ですね。ま、現段階では仕方ないと思います。
また、これだけ間隔をあけても良いのか?と疑問でしたが、問題ないようです。ま、見た目違和感ない粒子配置でした。


とりあえず、CADデータの取り込みや粒子配置は容易、ということが分かりました。
今度は砂防ダムを作って、それにかかる圧力を見てみましょう。


0 件のコメント:

コメントを投稿