Gaussianで計算した結果がGAMESS計算結果と一致しないというコメントをよく耳にします。また、同じ計算ソフトを使用しても論文などの参照データと完全に一致しない場合があります。同じ理論/基底関数で計算したにも関わらず、計算結果が一致しないのは一体何故なのでしょうか?というのが今回のお話です。

gg00

計算ソフトによって結果が異なるのは当然?

本来、同一分子を同じ条件で計算いた場合、同じ結果が得られるはずです。しかし実際は、必ずしも一致するとは限りません。と言うのも、量子化学計算ソフトによってデフォルトで設定されている仕様が異なるからです。

例えば、SCF計算や構造最適化で設定されている計算終了の閾値などがそうです。GAMESSとGaussianの構造探索における収束判定に用いられるエネルギー勾配の閾値は以下の通りです。GAMESSの方が少し厳しく設定されていますね。
GAMESS(US): 1.0D-4 hartree/bohr
Gaussian(G03): 4.5D-4 hartree/bohr


また、DFT計算で使用する汎関数B3LYPも、デフォルトのまま使用するとGAMESSとGaussianでは、使用されるVWN汎関数が異なるので計算結果に違いがでます。
GAMESS(US): VWN5
Gaussian(G03): VWN3(VWN1RPA)


GAMESS(US)でGaussianと同じVWN5の代わりにVWN3を使いたい場合は、DFTTYP=B3LYPV3と指定します。
Firefly(PC GAMESS)の場合は、VWN5がデフォルト(B3LYP=NWCHE)になっています。

上記のようにキワードで変更できる箇所であれば良いのですが、各計算のカットオフ方法や収束化ルーチンについて変更のオプション自体が存在しない箇所もあります。論文などの参照データでは、これらの細かい設定については殆ど触れられていないため、単に計算レベルと基底関数のみを同じにしても計算が完全に一致しないという問題に直面する訳です。

同じ計算ソフトなのに結果が異なる場合は?

それでは、同じプログラムを使用した場合でも計算結果が完全に一致しない原因は何なのでしょうか?これには、大きく分けて2つの理由が考えられます。

1) 入力ファイルの作成ミス
2) プログラムのバージョン違い


そもそも、ユーザーの不注意によって入力ファイルで参照データと異なる計算方法を指示していては意味がありません。大半の原因は入力ファイルを見直す事で解決するでしょう。

また覚えておきたいのは、分子の初期値(構造)の違いによっても計算誤差を生じる事です。これは、計算途中の数値処理(切り上げ、切り捨てなど)によって誤差が発生する場合があるからです。例えば、エネルギー値では10-6Hartree程度、結合距離は10-4程度、結合角では10-2程度の誤差を生じることが一般的です。

もう一つ注意したいのは、同じプログラムでもバージョンが異なる場合です。これは、同一のプログラムでもアップデートに際して、デフォルトの設定値が変更されている可能性があるからです。このことからも、どの計算プログラムのどのバージョンを使用したのかは、計算結果と併せてきちんと明記しておくことが重要です。


おわりに

今回は、計算した結果が参照データと一致しない原因について、いくつかの例を挙げて説明しました。初心者の方に多いのですが、デフォルトの設定のまま使用して「一方の計算ソフトに比べてこちらの計算ソフトは貧弱だ」とつい判断してしまうことがあります。特に、B3LYP機能のVWN汎関数がGAMESSとGaussianで初期設定が異なることを知らずに、計算結果が一致しないという間違いはよく耳にします。
異なるプログラム間で計算を実行する場合は、必ずデフォルトで設定してある計算手法などにどのような違いがあるかマニュアルに目を通すことも重要です。