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単独で完結する様にしてみます。

 

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

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

【はじめに】粒子法とは 

粒子法とは

主に流れ解析に用いる数値解析法の一種です

f:id:particlemethod:20170716004031p:plain

 

  波打つ液体表面の様に、形状が大きく変形する物質の挙動をシミュレートできるのが粒子法です。(上の図は、容器の中で激しく波打っている液体の様子です)

 粒子法は現在主流的なシミュレート方法である有限要素法に比べて比較的新しい新しい手法であるものの、液体のふるまいをリアルに表現できる方法として、現在様々な分野で使われています。

 この手法を勉強したくて各種参考書を読み込みましたが、具体的なプログラミングの方法がいまいちよく判りませんでした。どうも、私の実力では、本文を読んだり、プログラムのソース(多くはC++で描かれています)を読んで、論旨を追う事は難しい様です。

 

 素人プログラマでも理解できる様に

 

   そこで、素人プログラマでも扱えるVBAで記述されたプログラムなら、ソースを

読む事で粒子法が理解できるのではないかと考えました。

 

  ところが、かなり探索したのですが、わざわざVBAでプログラムを作るという

酔狂な方は居ない様で、WEB上では見つける事ができませんでした。

 

  そこで、VBAで粒子法のプログラム記述する事で、本手法の理解を深めていきたいと思います。 

 

 

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