Psi4のテスト計算 体験記
Last Update:2022/12/26
はじめに
ここではPsi4(サイフォー)でテスト計算を行ったレビューを書きます。
本家のチュートリアルは、
https://psicode.org/psi4manual/master/index_tutorials.html
https://www.youtube.com/watch?v=sTkCL37A64E&list=PL0jgn5Q60aHuUc2vcErG31yDRLD0oGjls
になります。
インストール・コンパイル方法
アプリのダウンロードページ(https://psicode.org/installs/latest)から最新版をダウンロードします。今回はWSL2(ubuntu)+Intel oneAPIの環境でインストールします。
ダウンロードファイルを実行して、いくつかの質問に答えると簡単にインストールされます。
$ bash Psi4conda-1.6.1-py310-Linux-x86_64.sh
...
...
...
Do you accept the license terms? [yes|no]
[no] >>> yes
Psi4conda will now be installed into this location:
/home/fukuda/psi4conda
- Press ENTER to confirm the location
- Press CTRL-C to abort the installation
- Or specify a different location below
[/home/fukuda/psi4conda] >>> /home/fukuda/apps/psi4/psi4conda
基本はyesとEnterで大丈夫です。
インストールが終わると、以下のコマンドでpsi4condaが使えるようになっていることが分かります。
$ conda info --envs
# conda environments:
#
/home/fukuda/apps/anaconda3
base * /home/fukuda/apps/psi4/psi4conda
※もし、元の自分のconda環境に戻したい場合は、
$ conda activate /home/fukuda/apps/anaconda3
のようにすればよい。
実行方法
まず、Psi4のサイトのチュートリアルにあるH2OのHartree–Fock SCF計算を試してみます。(https://psicode.org/psi4manual/master/tutorial.html#sec-tutorial)
testフォルダを作り、そこにinput.datというインプットファイルを作成します。
# input.dat
# Any line starting with the # character is a comment line
#! Sample HF/cc-pVDZ H2O computation
memory 600 mb
molecule h2o {
O
H 1 0.96
H 1 0.96 2 104.5
}
set basis cc-pVDZ
energy('scf')
Molecule h2oの中では、Z-matrixで分子構造を記載しています。Z-matrix以外でも構造を指定することが可能です。
(https://psicode.org/psi4manual/master/psithonmol.html#coordinates)
実行は以下で行うことができます。
$ psi4 input.dat output.dat
実行結果
実行結果は、output.datに出力されています。output.datのIteration部分を見ることで、8ステップ目でscf計算が収束していることが分かります。
==> Iterations <==
Total Energy Delta E RMS |[F,P]|
@DF-RHF iter SAD: -75.50772041125677 -7.55077e+01 0.00000e+00
@DF-RHF iter 1: -75.95376270516482 -4.46042e-01 3.03066e-02 DIIS/ADIIS
@DF-RHF iter 2: -76.00706363301680 -5.33009e-02 1.73566e-02 DIIS/ADIIS
@DF-RHF iter 3: -76.02603257829331 -1.89689e-02 2.30937e-03 DIIS/ADIIS
@DF-RHF iter 4: -76.02661197956334 -5.79401e-04 3.72696e-04 DIIS/ADIIS
@DF-RHF iter 5: -76.02663177626316 -1.97967e-05 6.75689e-05 DIIS
@DF-RHF iter 6: -76.02663270891111 -9.32648e-07 1.05815e-05 DIIS
@DF-RHF iter 7: -76.02663273457703 -2.56659e-08 1.47100e-06 DIIS
@DF-RHF iter 8: -76.02663273509029 -5.13253e-10 3.44832e-07 DIIS
Energy and wave function converged.
収束したエネルギーもoutput.datの中に出力されています。
@DF-RHF Final Energy: -76.02663273509029
=> Energetics <=
Nuclear Repulsion Energy = 9.1681932964243487
One-Electron Energy = -123.1035077420448545
Two-Electron Energy = 37.9086817105302245
Total Energy = -76.0266327350902884
PsiAPIの利用
PsiAPIを利用することで、上記の計算をpython形式で実行することができます。
今回はrun_h2o_scf.pyとして下記のようなコードを作りました。
# run_h2o_scf.py
# Ignore this block -- it's for the documentation build
try:
import os, sys
sys.path.insert(1, os.path.abspath('/home/runner/work/psi4/psi4/code/objdir/stage//usr/local/psi4/lib/'))
except ImportError:
pass
# This is the important part
import psi4
psi4.core.set_output_file('output.dat', False)
#! Sample HF/cc-pVDZ H2O Computation
psi4.set_memory('500 MB')
h2o = psi4.geometry("""
O
H 1 0.96
H 1 0.96 2 104.5
""")
psi4.energy('scf/cc-pvdz')
以下を実行すると、先ほどと同様にoutput.datが得られます。
$ python run_h2o_scf.py
終わりに
ここでは、Psi4のテスト計算を試してみました。Psi4は、チュートリアルやAPIの使い方などマニュアルサイトも充実しており、pythonによるプログラミングを知っている人であれば、簡単に利用しやすいモダンなアプリと言えるでしょう。