Home
767 words
4 minutes
【Psi4】電子状態計算の手法の指定方法

最終更新:2025-04-01

概要#

Psi4は、高性能な量子化学計算ソフトウェアであり、Pythonインターフェースを持つオープンソースのプログラムである。本記事では、Psi4を用いた様々な電子状態計算法の実行方法について解説する。Hartree-Fock法(HF)、密度汎関数理論(DFT)、MP2、結合クラスター法(CC)などの異なる理論レベルでの計算方法を紹介する。

使用したバージョン#

1.9.1

Psi4を用いた電子状態計算の方法#

全般的に、(計算手法)/(基底関数)で計算手法の指定が可能である。

Hartree-Fock法(HF法)#

HF法は電子状態計算の基礎となる手法であり、多電子系を解くための基本的な近似法である。

import psi4
import numpy as np

# 出力ファイルとメモリ設定
psi4.set_output_file('hf_calc.out')
psi4.set_memory('2 GB')

# 分子の定義
h2o = psi4.geometry("""
    O  0.000000  0.000000  0.000000
    H  0.757000  0.586000  0.000000
    H -0.757000  0.586000  0.000000
""")

# HF計算の実行(基底関数はcc-pVDZ)
energy_hf = psi4.energy('scf/cc-pvdz')  # scfはHF法と同義
print(f'HF/cc-pVDZ Energy: {energy_hf:.10f} Hartree')

# 異なる基底関数での計算
energy_hf_631g = psi4.energy('scf/6-31g')
print(f'HF/6-31G Energy: {energy_hf_631g:.10f} Hartree')

# 計算結果の詳細出力
psi4.core.print_variables()

密度汎関数理論(DFT)#

DFTは電子相関を効率的に取り入れる手法であり、計算コストと精度のバランスが良い。

# B3LYP汎関数での計算
energy_b3lyp = psi4.energy('b3lyp/cc-pvdz')
print(f'B3LYP/cc-pVDZ Energy: {energy_b3lyp:.10f} Hartree')

# 分散力補正を加えたwB97X-D汎関数
energy_wb97xd = psi4.energy('wb97x-d/cc-pvdz')
print(f'wB97X-D/cc-pVDZ Energy: {energy_wb97xd:.10f} Hartree')

# 異なる分子での計算(ベンゼン)
benzene = psi4.geometry("""
    0 1
    C        0.000000    1.396792    0.000000
    C        1.209612    0.698396    0.000000
    C        1.209612   -0.698396    0.000000
    C        0.000000   -1.396792    0.000000
    C       -1.209612   -0.698396    0.000000
    C       -1.209612    0.698396    0.000000
    H        0.000000    2.484216    0.000000
    H        2.151390    1.242108    0.000000
    H        2.151390   -1.242108    0.000000
    H        0.000000   -2.484216    0.000000
    H       -2.151390   -1.242108    0.000000
    H       -2.151390    1.242108    0.000000
""")

# DFT計算と解析
psi4.set_options({'PRINT': 2})  # 詳細な出力を有効化
energy_benzene = psi4.energy('b3lyp/def2-svp')
print(f'ベンゼンのB3LYP/def2-SVP Energy: {energy_benzene:.10f} Hartree')

電子相関を考慮した高度な計算法#

MP2(二次のMøller-Plesset摂動論)#

MP2法はHF法に電子相関を摂動論的に加えた方法である。

# MP2計算
energy_mp2 = psi4.energy('mp2/cc-pvdz')
print(f'MP2/cc-pVDZ Energy: {energy_mp2:.10f} Hartree')

# MP2とHFのエネルギー差(相関エネルギー)
variables = psi4.core.variables()
correlation_energy = variables["MP2 CORRELATION ENERGY"]
print(f'MP2 相関エネルギー: {correlation_energy:.10f} Hartree')

# RI近似を使用した高速MP2計算
psi4.set_options({'MP2_TYPE': 'DF'})  # 密度fitting近似
energy_df_mp2 = psi4.energy('mp2/cc-pvdz')
print(f'DF-MP2/cc-pVDZ Energy: {energy_df_mp2:.10f} Hartree')

結合クラスター法(CC)#

CCSDは高精度な電子相関法である。

# 小さな分子でCCSD計算(計算コストが高い)
h2 = psi4.geometry("""
    0 1
    H
    H 1 0.74
""")

# CCSD計算
energy_ccsd = psi4.energy('ccsd/cc-pvdz', molecule=h2)
print(f'CCSD/cc-pVDZ Energy: {energy_ccsd:.10f} Hartree')

# CCSD(T)計算("金の標準"とも呼ばれる高精度計算)
energy_ccsdt = psi4.energy('ccsd(t)/cc-pvdz', molecule=h2)
print(f'CCSD(T)/cc-pVDZ Energy: {energy_ccsdt:.10f} Hartree')

開殻系の計算#

開殻系では非制限法を用いる。計算手法の前に「U」か「u」をつけるだけで使用可能である。例えばHartree-Forck法ではuhfと入力すればよい。

# メチルラジカル(開殻系)
methyl_radical = psi4.geometry("""
    0 2  # 電荷0、二重項(スピン多重度2)
    C  0.000000  0.000000  0.000000
    H  0.000000  1.078000  0.000000
    H  0.933000 -0.539000  0.000000
    H -0.933000 -0.539000  0.000000
""")

# UHF計算(Unrestricted HF)
psi4.set_options({'REFERENCE': 'UHF'})
energy_uhf, wfn = psi4.energy('scf/cc-pvdz', molecule=methyl_radical, return_wfn=True)
print(f'UHF/cc-pVDZ Energy: {energy_uhf:.10f} Hartree')


参考#

【Psi4】電子状態計算の手法の指定方法
https://ss0832.github.io/posts/20250401_psi4electronicstatecalc/
Author
ss0832
Published at
2025-04-01