重なり積分は量子化学計算を行う上では「基本のき」です。このページでは量子化学計算を行うにあたり、必要な基底関数(原子軌道とイメージしてください)の重なり積分をp軌道まで含めて計算する詳細について解説します。
量子化学計算の基底関数にはGauss関数が用いられますが、重なり積分の計算ではGauss関数同士の積もまたGauss関数であることを利用していることに注目です。
(s|s)について
早速ですが、まずはs軌道同士の重なり積分を計算します。位置
Gauss関数同士の積もまたGauss関数
量子化学プログラミングにおいて、もっともよく利用するのは「Gauss関数同士の積はGauss関数」という性質です。
計算するとすぐにわかりますが、位置

この性質を利用するとs軌道同士の積分はかなり簡単にもとまります。

最後にガウス積分の公式
ZETA = EX(I_BAS,I)+EX(J_BAS,J)
GZAI = EX(I_BAS,I)*EX(J_BAS,J)/ZETA
SSS = EXP(-GZAI*d2)*(PI/ZETA)**(1.50d0)
CXIJ= CX(I_BAS,I)*CX(J_BAS,J)
IF((NBAS_TYPE(I_BAS).EQ.0).AND.(NBAS_TYPE(J_BAS).EQ.0)) THEN
C < s1 | s1 >
s_t = s_t + CXIJ*SSS
ENDIF
(p|s)について
s軌道同士の重なり積分の次はp軌道とs軌道の重なり積分を考えましょう。
計算の前に、そもそも位置
じつは、量子化学計算のpx軌道は
そして、このp軌道(px軌道)は原子位置

このp軌道(px軌道)は原子位置

C < px | s1 >
DO NDimI = 1,3
IF((NBAS_TYPE(I_BAS).EQ.NDimI)
1 .AND.(NBAS_TYPE(J_BAS).EQ.0)) THEN
s_t = s_t + CXIJ *(PP(NDimI)-PA(NDimI))*SSS
ENDIF
ENDDO
(p|p)について

SUBROUTINE CALC_PP(NDimI,NDimJ,PA,PB,PP,ZETA,GZAI,d2,SSS,VAL)
IMPLICIT NONE
INTEGER NDimI,NDimJ
DOUBLE PRECISION ZETA,GZAI,d2,SSS,VAL
DOUBLE PRECISION PA(3),PB(3),PC(3),PD(3)
DOUBLE PRECISION PP(3),PQ(3),PR(3)
VAL = (PP(NDimI)-PA(NDimI))*(PP(NDimJ)-PB(NDimJ))*SSS
IF(NDimI.EQ.NDimJ) THEN
VAL = VAL + 0.50d0/ZETA*SSS
ENDIF
ENDSUBROUTINE

まとめ
このページでは量子化学計算の基本となる重なり積分の計算を行いました。
量子化学計算を行うためには重なり積分のほか、運動エネルギー積分と核引力積分、二電子積分を行う必要がありますが、これらに関しても本サイトで紹介していきます(運動エネルギー積分と核引力積分は近日公開予定)。