ABINITで遊ぶ

シリコンの単結晶

Haskellで何か数値計算させようと考えていたところ、「Numerical Recipes がダメなわけ」(訳)というページを知りました。
http://nakano.webmasters.gr.jp/nr.html
著者の(この原文に対するものではなく、信頼性に関する悪い噂に対する)反論には、「多くの読者のレビューの下、バグはフィックスされ続けている。」とありました。
Numerical Recipesはいい本だと思います。基本的に情報というものは、不正確な情報を鵜呑みにする時悪いことが起こるだけ。でも、数値計算もちゃんと動かそうと思ったら大変なことだということも改めて思いました。
というわけで、自分で何か基本的な計算アルゴリズムを実装しようなんてことは止めとこう。
で、異動に伴って、結晶系の仕事をされている人たちの近くになったので、遊んでみる。
ABINITは、密度汎関数論に基づいた自己無撞着場計算プログラム。安定な原子核の位置、電子密度、エネルギー準位を計算することができます。
http://www.abinit.org/
名前は、ab initio(第一原理(化学では経験則を含まないに意))由来ですね。
並列版があったので、そっちを試す。
フォートラン用のOpen MPI(Message Passing Interface)が必要だった。おお、グリッド初体験。MacPortsで普通にインストールしたら失敗したので、g95 variantでインストールしたら成功。
チュートリアルを試す。なんか計算してくれた。
http://www.nims.go.jp/cmsc/staff/arai/memo/kyushu/
きっとサイトの計算例のような計算だろう。でも、出力がテキストベースで感動がない。
お、ここでOpenDXと来ますか。
で、OpenDXMacPortsでインストールする。失敗する。configure.acにAC_PROG_CXXを追加したら、インストールできた。
うーん、OpenDXサンプルまでは動いたが、ABINIT用フロントエンドがOpenDXサーバーに接続できない…
環境変数DXPROCESSORSを1に設定したら、動きました。Mac用のOpenDXマルチプロセッサ対応されていないようで、ABINIT用のユーザーモジュールがそれを強要していた模様。
ようやく巨人の肩の上によじ登れた。