コンター力学プロジェクト(Dennou Club Contour Dynamics Project; DCCD Project)の目的を以下に挙げる。
コンター力学(contour dynamics; CD)、コンター移流(contour advection; CA)およびコンター手術(contour surgery; CS)についての情報を集積する。
これらの情報を咀嚼し、アルゴリズムの理解を確認するコードの開発をRubyによって行う。
開発されたコードによって、単純な渦の動力学のデモンストレーションを行う。特に2次元系を優先する。
Rubyで開発されたコードをプロトタイプとして、より高速で実行できる言語に移植する。
アルゴリズム/モデルの欠点あるいは精度を把握しておくことで、コンター力学/コンター移流モデルの結果の信頼性を吟味できるようになることを目指す。
以下、特にコードが準備できているものについては、順次公開していくつもりです。
CD/CSアルゴリズムによって任意個の渦の時間発展を計算できる。
CASLで用いる渦度コンターを格子点データに変換するアルゴリズムを実装した。 ただし、計算精度が理論値/オリジナルのそれよりも低い(ような気がする)。 おそらく実装のバグと思われるが、バグの特定には至っていない。
2次元版のCASLのシミュレーションが、コンター手術を含めて実行できる。 ただし、上述の計算精度の問題により、CD/CSアルゴリズムよりも計算精度が低い(ような気がする)。
ある程度の時刻までしか計算できない。これはコンター手術の実装が貧弱なせいである。
Dritschel(1987,1988)に基づいたCD/CSアルゴリズムに基づいたシミュレーションコードとそのデモを載せる。
CASLで用いる、渦度コンターの格子点データへの変換コードとそのデモを載せる。(コードは準備できているが、精度が思ったほど出ていない気がする。)
CASLの2次元版のRubyによる実装とそのデモを載せる。(一定の制限が課されたシミュレーションのみ実行可能なコードは準備できている。)
上に挙げたバージョンを適宜高速化する。
CD/CSに置いて用いられるノードの位置の時間発展の近似式の導出ができていないので再検討する。
CASLで用いるコンターから格子点データを求めるアルゴリズムとその実装を再検討する。
コードのリファクタリングを行う。特に、オブジェクト指向的な書き方に書き換える。
コンター手術のアルゴリズムを改善する。現在は効率の悪い実装になっており、事実上計算が停止するケースがある。
C/Fortranへの移植性を意識したコードに書き換える。
コンター交差に対応するアルゴリズムを導入する。特に異なる渦度・渦度ジャンプを持つコンターの交差が起こりやすい。
水田、他 (1998)、2次元非発散流体中における渦パッチの変形と流体混合 -- コンターダイナミクスによる数値計算 --、ながれマルチメディア (速度場の計算以外、例えばノード再分配などがCD/CSに基づいて行われている。Polvani, Flierl and Zabusky (1989)に触れていない点が妙である。)