VBAで粒子法を勉強中

メッシュレスで数値解析できるという、粒子法に興味を持ち、勉強中です。 プログラムのスキルが無い為、ExcelとVBAでのプログラム作成を目指しています。

【SPH粒子法のプログラムをVBAで作ってみる】 1.プログラムの方針について

今回採用した粒子法

 現在、液体をシミュレートする粒子法には大きく2つの手法があり、SPH法とMPS法といいます。 SPH法は圧縮性の流体を、MPS法は非圧縮性の流体をシミュレートするのに用いられています。

 

 現実の流体として水などを考えたとき、より現実を反映できるのはMPS法の方ですが、この方法は陰過程(未知数を含む式を解く)があり、プログラムが複雑になりそうです。

 

 一方のSPH法は陽過程(未知数が無い)のみの解法で、単純に各ステップの計算を進めるだけで良く、まず、それっぽく作動するプログラムを作るのが目的であるので、こちらを採用する事にしました。

 

 

SPH法の流れ

 SPH法では以下の流れでシミュレーションを行います。

 

  1.  初期の粒子の位置と速度を決定
  2.  粒子に作用する力と加速度を計算
  3.  加速度を元に、一定時間後の粒子の速度と位置を計算
  4.  新たな粒子の位置と速度を元に、2⇒3 を繰り返す

 直前のステップの数値を利用して次のステップの値を算出するあたり、微分方程式の数値解法である、オイラー法に似ています。 

 

今回の方針 ~まず動くプログラムをシンプルに作る~

 通常のSPH法のシミュレーションでは、粒子に作用する力を計算する場合、精度を上げる為に複雑な重み関数を使ったり、計算の効率化を図る為の様々な技巧を使いますが、ここでは、なるべくシンプルなプログラムを作る事を目的とし、重み関数などは独自のものを採用する事にします。(ですので、精度はいまいちの筈です)

 

 次元は、2次元とします。

 

 また、今回はEXCEL上のVBAを使う方針ですが、グラフィック表示の為に別なソフトを組み合わせる事はせず、シェイプなどを利用してEXCEL単独で完結する様にしてみます。

 

 以上の方針で、進めてみたいと思います。

にほんブログ村 科学ブログ 技術・工学へ
にほんブログ村