« HP 2133とRAM Diskのその後 | メイン | Fedora 9 (x64)でGAMESSを使ってみるテスト。 »

JOBを使って$VECと$HESSの読み込み

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

-----------------

@echo off

set job_dir=D:\JOB
set f_inp=inp
set f_pun=pun

if "%~x1"==".inp" set f_inp=%1
if "%~x1"==".pun" set f_pun=%1

if "%~x2"==".inp" set f_inp=%2
if "%~x2"==".pun" set f_pun=%2

if %f_inp%==inp goto exterr
if %f_pun%==pun goto exterr

move %f_inp% %job_dir%\temp.inp

echo #copy_vec %f_pun% %job_dir%\temp.inp > %job_dir%\temp.job
%job_dir%\job.exe %job_dir%\temp.job

move %job_dir%\TEMP.INP %f_inp%

pause
exit

:exterr
echo 拡張子に誤りがあります
pause
exit

-----------------

ドロップされた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が便利です。

コメントを投稿

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