2010/06/17(木)はじめての電子状態計算

先輩,プログラムが動きません!

専門(より)の話.後輩にプログラムが動かないので助けて欲しいといわれました.
で,見てみたんですけど,どうやら,『はじめての電子状態計算』っていう本に付属しているプログラムらしい.
動作環境を見てみたら,「Windows 3.1,Windows95,Windows NT3.5 Windows NT4.0,MS-DOSも可」とある.
あれ,これだけ?
XPやVistaはどこでしょうか……?

さらに,記述言語はFORTRAN 77らしいです.うーむ古いプログラムですね.
これでは,コンパイル済みの実行ファイルでは動かないかも.
幸運なことに,ソースコードはついてました.
なので,「とりあえず,自分も試してみるから明日報告するよ」といって,後輩が帰ってからコンパイルを試みることに.

まず,バイナリをVistaで実行

本に書いてある通りに作業をして,一応それらしい動作しましたが,以下のようになりました…….
c:\DVXA>SETDVXA.BAT

c:\DVXA>cd CALC\CO

c:\DVXA\CALC\CO>makef05
DOS/4GW Protected Mode Run-time  Version 1.97
Copyright (c) Rational Systems, Inc. 1990-1994
DOS/4GW error (2001): exception 0Dh (general protection fault) at 21F:00006F12
TSF32: prev_tsf32 5284
SS       22F DS       22F ES       27F FS         0 GS         0
EAX        0 EBX      22F ECX        0 EDX        0
ESI      120 EDI     588C EBP     4F52 ESP     4448
CS:IP  21F:00006F12 ID 0D COD     7E40 FLG    13246
CS=  21F, USE16, byte granular, limit     914F, base  310F2D0, acc FB
SS=  22F, USE16, byte granular, limit     489F, base  3118420, acc F3
DS=  22F, USE16, byte granular, limit     489F, base  3118420, acc F3
ES=  27F, USE16, byte granular, limit     7CFF, base  31414C0, acc F3
FS=    0, USE16, byte granular, limit        0, base  31414C0, acc  0
GS=    0, USE16, byte granular, limit        0, base  31414C0, acc  0
CR0: unavailable

c:\DVXA\CALC\CO>dvscat n \dvxa\calc\co
DOS/4GW Protected Mode Run-time  Version 1.97
Copyright (c) Rational Systems, Inc. 1990-1994
DOS/4GW error (2001): exception 0Dh (general protection fault) at 21F:00006F12
TSF32: prev_tsf32 5288
SS       22F DS       22F ES       27F FS         0 GS         0
EAX        0 EBX      22F ECX        0 EDX        0
ESI      120 EDI     588E EBP     4F52 ESP     4448
CS:IP  21F:00006F12 ID 0D COD     7E40 FLG    13246
CS=  21F, USE16, byte granular, limit     914F, base  310F2D0, acc FB
SS=  22F, USE16, byte granular, limit     489F, base  3118420, acc F3
DS=  22F, USE16, byte granular, limit     489F, base  3118420, acc F3
ES=  27F, USE16, byte granular, limit     7CFF, base  31414C0, acc F3
FS=    0, USE16, byte granular, limit        0, base  31414C0, acc  0
GS=    0, USE16, byte granular, limit        0, base  31414C0, acc  0
CR0: unavailable
Could Not Find c:\DVXA\CALC\CO\f15

c:\DVXA\CALC\CO>
F05とかっていうファイルが出来るはずなのに出来ないし,EXにあったF05ファイルをコピーして実行してもエラー出たし…….
やっぱり完全には動かないってことですか?それとも設定ミスだろうか(書いてあることは全部やったんですが).
で,コンパイルしてみるかってことに.

これがFORTRANか!

ソースコードはGreekだった

ソースコードを見てみたんですが,わけわかんなかったです,はい…….
というか読む気が起きなかった……….
このコードにはコメント文のコの字もなかったので,理解するにはちゃんと勉強しないと駄目だということがわかりました.

gfortranでコンパイル

コンパイルの仕方については,本にはわずかに書いてありました.
なになに,バッチファイルがあるのでそれを実行しろ,とあります.
コンパイラは……Watcom FORTRAN?聞いたことがない名前です.
手持ちのFORTRANコンパイラはgfortranだったのでとりあえずそれで実行しました.

結果は……

出来たものと出来ないものがありました.
例えば,上のF05というファイルを作成するプログラムは成功し,実行して中身のあるファイルをはきました.
c:\DVXA\CALC\CO>MAKEF05
 f25 for nonsym calculation was generated

c:\DVXA\CALC\CO>
というわけで,実行ファイルがVistaやXPに対応していなかったらしいです.
ただ,全体的に失敗したものが多かったので,コンパイラを変える必要がありそうです.
g77(FORTRAN 77のGNUコンパイラ)をどこからともなく探してきて*1,コンパイルしてみるとか.
けど,今日は時間切れ.後輩に方針は示せそうなので後は頑張ってもらいましょう.

それにしても読みにくい本だ 加えて問題点

何となく読みづらいです.操作の手順も本文にコマンドラインの解説があるから見づらい見づらい.
また,アルゴリズムとかにはほとんど触れてないのも,理解しづらいですね.
それに版が古くて,最近のプログラムが公開されていないところを見ると,あまり開発とかは活発ではないようです.
プログラムも,あんまり大規模なものでもないし,高度なことをしようとすると壁に当たってしまうのではないかと思います.

何よりも問題は,ソースコードの改変とかが禁止されているということ.
これによって,ユーザ自身による改良という道がたたれています.
GPLとかにしておけばもう少し広まったかもしれないですね.

というわけでフリーのソフトを少し探してみる

結構いっぱいありますね.日本語ドキュメントのものでは,
文部科学省系の第一原理擬ポテンシャルバンド計算ソフトウエア「PAHSE」
Debianにパッケージングされているものでは,ABINITというものが見つかりました.
両者とも,ドキュメントが豊富で扱いやすそうです.
特に後者はGPLライセンスで再利用は(研究などに使う分には)容易です.


動画のエンコードなんかに使うより,こういうのに計算機を使った方が有用ですよね…….

Windows XPでは動作しました(2010年8月3日追記)

意外とこのページを見ている方がいるようでしたので,追記をしてみます.
『はじめての電子状態計算』っていう本に付属しているプログラムですが,
どうやら,XPであれば動作するようです.先輩と後輩,私が個別に実行して確認しました.
ただ,もう一度Vistaでやってみましたが,やはり動かず.NT6.0以上では駄目っぽそうです.