今回は、粒子法のプログラムのデータ構造を説明します。
使用したデータ構造は、Particle構造体とParticlesベクタの2つです。
Particles構造体は以下です。
typedef boost::numeric::ublas::vector<double> vec; typedef struct { vec r; vec v; double rho; double p; vec f; } Particle;boostライブラリのublasを使い、3次元ベクトルを表現しています。
rは粒子座標、vは粒子速度、rhoは粒子地点での密度、pは粒子地点での圧力、fは粒子が受ける力です。
Particlesベクタは以下です。
typedef std::vector<particle> Particles;STLのvectorコンテナでParticle構造体のベクタを表現しています。
使用しているデータ構造は、この2つのみです。このように、粒子法はデータ構造が非常に簡単なのが特徴です。
次回からは、粒子法のアルゴリズムの説明になります。
粒子法のプログラム
粒子法のプログラム第1回(概要)粒子法のプログラム第2回(プログラムの大枠)
粒子法のプログラム第3回(データ構造)
粒子法のプログラム第4回(密度と圧力の計算)
粒子法のプログラム第5回(力の計算)
粒子法のプログラム第6回(境界条件と粒子位置の更新)
粒子法のプログラム最終回(粒子の出力)
その他の解説エントリ
SPHによる巻き波のシミュレーション1SPHによる巻き波のシミュレーション2
SPHによる巻き波のシミュレーション3
このあとやりたいこと
固液連成シミュレーションに関するエントリ
粒子法による固液連成シミュレーション流体シミュレーションに関するエントリ
【粒子法】粒子を流体としてレンダリング3次元の粒子法シミュレーション
粒子法のシーンを2倍のサイズにしてみたが…
粒子法のシーンを2倍のサイズにしてみた
Haskell、OCamlでSPH法
カメラ位置を変えて流体をレンダリング
Bunny-shaped fluid simulation
剛体シミュレーションに関するエントリ
粒子ベース剛体シミュレーション(プレビュー)粒子ベース多体衝突シミュレーション
引き続き、粒子ベース剛体シミュレーション
Falling Rigid Bunnies
動画
--