« VIAのNano(Isaiah)がついに… | メイン | 生存報告:ThinkPad X300(アウトレット品)購入 »

JOBを使って$VECと$HESSの読み込み(8/27追記)

備忘録。
PC GAMESSのWebサイトで公開されている、GAMESS入出力加工専用マクロ『JOB』を使って、何気に面倒な$VECと$HESSのPUNCHファイルからの抽出を、.inpファイルと.punファイルのD&Dで実現するバッチファイルを作成しました。イマイチ美しくないコードですが。

read_vec-hess.txt
(拡張子をtxtからbatに変えることで機能します)

ドロップされた2つのファイルの拡張子からどちらがinputでどちらがpunchかを判別し、JOB用のファイル(temp.job)を作成して実行。このとき、一回temp.inpに書き込んだ後元の.inpファイルにリネームしてますが、これはJOBがなぜか書き込み先の.inpファイルのファイル名を全て大文字にしてしまう(だからmove行でTEMP.INPと書いている)からです。
#copy_vecを#copy_hessに変えるだけで、$HESSの読み込みに対応します。

本当は、.outも読み込めばNORBを自動で入れてくれたりするので、その辺を実装したバージョンも書いていますが、GAMESS(US)の.outファイルには対応していないようなので(実際NORBは入らない)、それを省いたバージョンを使ってます。

この辺のは、JOBじゃなくてもperlでできたりしますが(最近GAMESS MLにポストされてましたね)、プログラム慣れしてない私にゃJOBが便利です。


--【2008/08/27 追記】----------------------------------------------------
IRON28さんから、$HESSや$VECを抽出する秀丸マクロおよびFORTRANプログラムの情報を頂きました(ありがとうございます!)。以下、原文ママで。

私も$VECと$HESSの抽出に苦労してきましたが、最近解決できました。
これを紹介します。

http://www.maruo.co.jp/hidesoft/2/index.html
RE:25315 IKKIさんに作ってもらった秀丸用マクロ。
 punchファイルの不要な部分をマウスで範囲指定することなく、一気に削除できます。
このマクロを使えば$HESSデータや$VECデータの必要部分のみ残すことが楽にできます。

一方、以下は私の作ったFORTRANプログラム。これは$HESSの抽出用です。
punchはpunch.inpに変えておきます(不要とは思いますが)。抜き出した
結果はHESS.outというテキストファイルに書き込まれます。但し先頭の
$HESSは書き込まれません。一方$ENDは書き込まれます。

read_hess.txt

フリーのFORTRANの入手先。
 http://hp.vector.co.jp/authors/VA017148/pages/cpad.html
ついでながら$VECのデータの抽出プログラムは以下の通りです(テスト済みです)。

read_vec.txt

これは構造最適化計算が正常終了したjobにおける最終ステップの$VECデータのみ抜き出します。
$VECと$ENDの記号も抜き出します。

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)