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は書き込まれます。
フリーのFORTRANの入手先。
http://hp.vector.co.jp/authors/VA017148/pages/cpad.html
ついでながら$VECのデータの抽出プログラムは以下の通りです(テスト済みです)。
これは構造最適化計算が正常終了したjobにおける最終ステップの$VECデータのみ抜き出します。
$VECと$ENDの記号も抜き出します。