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以上では駄目っぽそうです.