粒子法とは?DualSPHysicsとは?
本記事の目標は,OSSの粒子法ソフトであるDualSPHysicsを導入し,
テストケース"01_Dambreak"をとりあえず実行できることです.
粒子法とは計算対象物を粒子の集まりとして表現し,連続体に関する微分方程式を数値的に解くための離散化手法の一つです.
計算格子を持ちないことから,大きな変形を取り扱うことができ,相変化をモデリングすることができることに強みがあります.
粒子法は微分演算子の定義およびタイムステップの取り扱いの違いから
MPS(Moving Prticle Simulation)法およびSPH(Smoothed Particle Hydrodynamics)法に分類されます.
DualSPHysicsはSPH法を用いた,オープンソースの粒子法ソフトウェアです.
本記事ではオープンソースによるシミュレーションの初学者が,DualSPHysicsのテストケースを実行する過程をメモとして残します.
DualSPHysicsのインストール
DualSPHysicsのインストール方法は2種類存在する.DualSPHysicsの公式Webサイトからソースコードをダウンロードする方法と,GitHubを経由する方法である.[1]
公式サイトからのインストールでは全てのテストケースを含んだ完全版が提供される.しかし提供されるバージョンは最新版ではなく,リリース後一定期間が経過し,安定性が確認されたバージョンである.[1]
GitHub経由のインストールでは最新版を含めた,
任意の開発段階のソースコードをインストールすることができる.
しかし,全てのテストケースが含まれているわけではなく,
01_Dambreakのみ使用することができる.[2]
ここではテストケースをとにかく実行して可視化することが目的なので,安定性が高く,多くのテストケースを含む,公式サイトのコードをダウンロードし,Linux(Ubuntu16.04)上での実行していきます.
公式サイトでのダウンロード方法は以下の通りである.
メニュー上段左から4つ目のDownloadをクリックする.
入力フォームに最低限の個人情報を入力し,送信する.
するとダウンロードリンクが表示される,仕組みである.[2]
送信する個人情報は以下の通り
- Name
- Organization
- Commercial use or research
- Area of expertise
- Country
- E-mail
これらを入力し(メールアドレスさえ通れば後は適当でよい)
PreviousVersionの欄にある「DualSPHysics_v4.2.zip」にチェックを入れる.
さらにsubmitをクリックする.
するとダウンロードリンクが張られたページが表示される.
クリックしてダウンロードし,zipファイルを展開する.
DualSPHysicsディレクトリ内には bin, doc, example, src_*などのディレクトリがある.
binディレクトリにはコンパイルした後の実行ファイルが含まれている.
後にも述べるが,環境により,binディレクトリ内のコマンドへのアクセスが制限されている場合がある.
この場合は全コマンドのパーミッションを変更しておく.
docディレクトリにはUserGuideやXMLファイルのフォーマットファイルが含まれている.
srcディレクトリにはコンパイル前のソースコードが含まれている.
Dambreakの実行
この記事ではテストケース「01_Dambreak」の実行を行う.
まずディレクトリ DualSPHysics_v4.2/example/main/01_Dambreak
に移動する.
ダムブレイクは粒子法の最も代表的な計算例のひとつである.
テストケースには2次元と3次元に対してそれぞれCPU並列,GPU並列の計算例(合計4種類)が含まれているが,本記事ではとりあえずプログラムを実行して結果を可視化することが目的なので二次元CPU並列プログラムの実行を行う.
Dambreakの実行を行うためには
シェルスクリプト
xCaseDambreakVal2D_linux64_CPU.sh
を実行する.
sh xCaseDambreakVal2D_linux64_CPU.sh
シェルスクリプトには前処理,計算,後処理のためのコマンドが含まれている.(詳細は後の記事で解説)
実行して前処理が成功し,計算が始まると以下の画像のような画面になる.
環境にもよるが,シェルスクリプトで参照しているコマンドへのアクセスが禁止されている場合があるので(僕の場合は禁止されていた)その場合は
DualSPHysics/bin/linux
に存在する全コマンドのパーミッションを変更する必要がある.
次の記事ではParaviewを用いた可視化を行います.
参考文献
[1] O. Garcia: Developing on DualSPHysics, (2018)
[2] dual.sphysics.org