2010年5月18日火曜日

量子化学の生成方法、整理

今日は、昨日教えてもらった量子化学の生成方法を整理した。
まず、ファイル群を整理して、プログラム中の内容を絶対パスから相対パスに変更した。

昨日はUbuntuであったが、RHEL だと mpqc などのパッケージがないので、それをインストールするところから始める。

特に、mpqc のコンパイルは、一度失敗したときに make distclean を実行しても初期状態に戻らないので、tar.bz2 を展開しなおしたほうがいい。(いくつかの .d ファイル[ipv2.d,ref.dなど]が見つからない、といったエラーにおちいる)


(1) dump.mol のコンパイル
RHEL だと libsc-dev パッケージがないので sc-config が動かない
mpqc をダウンロードしてきてインストールする
$ tar xjf mpqc-2.3.1.tar.bz2
$ cd mpqc-2.3.1
$ ./configure --prefix=??? --with-f77=gfortran
$ make
$ make install install_devel

install_devel で sc-config コマンドが作成されるようだ。
sc-config にパスを通すこと
また、yum install blas blas-devel lapack lapack-devel をしておく。
このあと dump.mol のコンパイル

$ cd bin/dump.mol-src
$ make clean
$ make dump.mol
$ make install


(2) octave のインストール
$ sudo rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm
$ sudo yum install octave.x86_64

これで、dmvt の中のパスを修正すると dmvt が実行できる
(ただし、現在は相対パスにしたので、修正の必要なし)

(3) LAPACKPP のインストール
$ wget http://sourceforge.net/projects/lapackpp/files/lapackpp/2.5.3/lapackpp-2.5.3.tar.gz/download
$ tar xzf lapackpp-2.5.3.tar.gz
$ cd lapackpp-2.5.3
$ ./configure --prefix=???
$ make
$ make install

(4) analyze のコンパイル
$ cd bin/analyze-src
$ make LAPACKPP_BASE=/usr/local
LAPACKPP_BASE は LAPACKPP の --prefix にあわせて変更
$ make install


ここまでしておいて、以下のようなシェルスクリプトで一括実行している。

TARGETNAME=Be.1S.STO6G
#TARGETNAME=B.2P.SV
NREP=pqg
#NREP=pqgt1t2p
cp ../data/$TARGETNAME.scf .
cp ../data/$TARGETNAME.inp .
rm -f ../bin/sdprobgen/*.{eri,eri_tmp}
../bin/dump.mol $TARGETNAME.scf | tee $TARGETNAME.log-dumpmol
# dump.mol で SCF から Hamiltonian などが生成される。
# このときできる eri は SDPA フォーマット生成に利用される。
../bin/dmvt $TARGETNAME.inp | tee $TARGETNAME.log-dmvt
# dmvt で SDPA フォーマットが出力される
DATS=$TARGETNAME.$NREP.dat-s
../sdpa7-rdm/sdpa -ds $DATS -o $DATS.result -rdm $DATS.rdm \
-p ../sdpa7-rdm/param.sdpa -numThreads 4 \
| tee $DATS.stdout
# RDM 出力用パッチのあたっている SDPA で解く

../bin/analyze $TARGETNAME.inp $DATS.rdm | tee $TARGETNAME.log-analyze
# RDM を SDPA の出力フォーマットから解析
echo "--- NREP = $NREP ----"
grep total $TARGETNAME.log-analyze
echo "--- GAMESS ----"
grep "TOTAL ENERGY" ../data/$TARGETNAME.*.gamess.out \
| grep -v EIGEN | grep -v ITER
# 得られた値と GAMESS の値を比較する


とりあえず、****.scf, ****.inp があれば、そのあとをブラックボックスとして利用できるようになった。
ただし、****.scf, ****.inp を作るには電子状態と基底関数を決定する必要があり、これが難しい
現状としては、昨日もらって来たものを使うことになる。

あと、今日はこのまえ採択された原稿のチェック。
他に読みたい論文を印刷したので、これを明日チェックする。

今日の作業内容: 量子化学整理 5h + 原稿チェック 1h
今日のBGM: FF5 OST [1-2], FF6 OST [1,3]
今日のランチ: 味庵 豚肉野菜炒め
明日の予測作業時間: 3h

0 件のコメント:

コメントを投稿