潮風フレームワーク
研究開発に特化したコンピューターグラフィックスのための流体ソルバ
 全て クラス 名前空間 ファイル 関数 変数 型定義 列挙型 列挙値 マクロ定義 ページ
導入

概要

screenshot.jpg

潮風フレームワーク(潮風)は、流体力学の専門知識が無い人でも、コンピューターグラフィックスの新しい流体シミュレーションの研究を簡単に始められることを目的に開発されました。どうしてそんな事が可能でしょうか?それは潮風フレームワークは次の特徴を持っているからです。

  • たくさんの独立した動的ライブラリで構成されており、潮風は必要に応じてそれらを動的に読み込みます。
  • それぞれのライブラリは完全に独立した別々の問題を扱います。
  • 実行時にどのライブラリを読み込むか選択できるので、異なる実装の切り替えが簡単になります。
  • コードの一部だけを取り出し、あなたの(流体とは全く関係ない)独自のプロジェクトに組み込めやすいように設計されています。
  • 全てのコードは MIT あるいは CC, Apache, public domain でライセンスされています。
  • シミュレーションの設定を、コマンドラインあるいはシーンファイルで動的に変えることができます。
  • 様々なアルゴリズムの実装が提供されており、異なるアルゴリズムとの比較やテストが容易にできるよう設計されています。
  • 潮風は Docker イメージとして提供されるので、コンパイルに失敗せず、すぐに実行することができます。

潮風の開発のきっかけ

コンピューターグラフィックスにおける流体力学(CG流体)の研究を行うには、必ずしもCG流体の全てを詳しく理解する必要はありません。それは、CG流体の研究は、たくさんの異なるアルゴリズムで構成されており、その一つを改良するだけでも、十分な新規性が認められるからです。例えば、CG流体では圧力のポアソン方程式の計算に膨大な時間がかかり、この点を改善できれば、大きな貢献となります。また、液体シミュレーションではトポロジーの変化を伴う界面の変形を追跡する必要があり、この追跡を正確に計算できれば、それも大きな貢献となります。しかし、CG流体の研究を行うには、シミュレーションから可視化までの実装や、様々な既存手法との比較が必要になります。これらの実装は、多大な時間と労力がかかり、CG流体の研究の障壁の一つとなっています。潮風を使えば、この障壁を減らすことができます。例えば、圧力のポアソン方程式を高速に解けるアイデアを思いついたとき、潮風を使えば、連立一次方程式のアルゴリズムの実装だけに集中できます。既存手法との比較や可視化は、簡単なコマンドラインで即座に実行可能です。開発者は、潮風の登場によって、CG流体の敷居を大きく下げ、誰でもCG流体の面白さに触れられることを願っています。

特徴

潮風は、現在次の機能を提供します:

  • アダプティブなタイムステップ
  • 圧力ソルバ
  • Batty et al. らの手法による壁面と自由境界の圧力ソルバのための2次精度境界条件
  • 偏微分方程式を用いたレベルセットの2次精度境界条件の再初期化
  • 並列 Fast marching 法を用いたレベルセットの初期化
  • 壁面と自由境界の2次精度の境界条件を備えた流れ関数ソルバ
  • セミラグランジュ法による移流
  • MacCormack法による移流
  • 6次精度 WENO 補間
  • 内蔵された行列とベクトル演算
  • 線形、タイルベース、及びツリーベースの疎なグリッド
  • ビット演算を用いたフラッドフィルを備えたナローバンドレベルセット法
  • コンベックスハルを使った点群のレベルセット生成と Zhu and Bridson らの手法を用いた点群のレベルセット生成
  • Marching CubesDominik WodniokDual Marching Cubes を用いたレベルセットからサーフェスメッシュの生成
  • 近傍探索のためのグリッドハッシュ
  • メッシュの読み込み (RPly) と書き出し
  • 2次元と3次元の煙ソルバ
  • 2次元と3次元の液体ソルバ
  • SDFGen を用いたメッシュからレベルセットの生成
  • 共役勾配法
  • Robert Bridson のコードより提供される修正不完全コレスキー分解前処理付共役勾配法
  • AMGCL を用いた代数的前処理付共役勾配法
  • 共有グリッドの機能
  • APIC による物理量転写を備えた FLIP, narrow band FLIP, extended narrow band FLIP の実装
  • Sato et al. らの提案した Spatially adaptive long-term semi-lagrangian 法の実装

制約

潮風は、柔軟性のある利便性と引き換えに仮想関数を多用しているため、パフォーマンスにはルーチンコールにオーバーヘッドがあります。そのため、パフォーマンスに最適化された他者のソルバと比べてある程度の遅延が認められます。また潮風は現在、Linux と macOS プラットフォームのみに対応しており、Windows には対応していません。これは、私達が Windows 環境に不慣れなこと、3つの異なるプラットフォームで信頼性を維持する余裕がないこと、そして潮風は UNIX 環境に大きく依存していることに起因しています。しかし、Docker をインストールすれば、Windows でも問題無く実行出来ます (非検証)。潮風はまた、Python に対応していません。これは、将来の課題となっています。

貢献者

謝辞

潮風は現在国立情報学研究所にて、安東遼一によって開発が活発に行われています。開発者は、より多くの方に潮風を使って頂けることを望んでいます。もし、潮風が研究に使われた時、論文で潮風を引用して頂ければ幸いです。潮風の Bibliography は以下の通りです。

@misc{shiokaze,
Author = {Ryoichi Ando},
Title = {{Shiokaze Framework}},
Year = {2018},
Note = {\emph{http://research.nii.ac.jp/~rand/shiokaze-en/}}
}