タグ

ブックマーク / kamonama.blogspot.com (2)

  • Haskell、OCamlでSPH法

    このエントリに載せていたC++のコードを、HaskellとOCamlで書いてみました。(あと、C++のコードも整理しました) コードを置いておきます。 Haskell版(sph.hs) OCaml版(sph.ml) C++版(sph.cpp) Haskell版(sph.hs)の実行方法は、 $ ghc --make -O sph.hs $ ./sph 300 です。./sphの引数は計算するステップ数です。上記のsph.zipにはData/Vector.hsというベクトル演算のためのモジュールを入れてあります。 同様に、OCaml版(sph.ml)の実行方法は、 $ ocamlopt -pp 'camlp4o -parser Camlp4ListComprehension' -o sph sph.ml $ ./sph 300 です。-ppオプションは、プリプロセッサにCamlp4を使ってO

    Haskell、OCamlでSPH法
  • 粒子法のプログラム第1回(概要)

    粒子法のプログラムを実装しようとしたのですが、論文やだと数式レベルでしか説明がなく、それをプログラムにして動くようにするまで苦労しました。 数式をプログラムに落とすこと自体は簡単なのですが、各定数の値が分からなかったりして、粒子が上手く動いてくれるまで大変でした。 なので、同じところでつまづく人も多いのではと思い、自分が書いた粒子法のプログラムを紹介しようと思います。下の動画を作ったときのプログラムです。SPH法です。 こちらがソースコードです。 ※2009.11.4追記 こちらに整理したC++版のほか、Haskell版、OCaml版のコードがあります。 まずはシンプルにと考え、近傍粒子の探索は工夫せず、n(O^2)ですがわかりやすいアルゴリズムを採用しています。まず動くコードを書き、そこから高速化していくアプローチです。 また、計算量を減らした方が試しやすいのと、粒子法は3次元への拡張

    粒子法のプログラム第1回(概要)
  • 1