GAMESSSCF計算が正常に終了しないと、「SCF HAS NOT CONVERGED」とエラーメッセージが出力されます。電子状態を計算するSCF計算は、量子化学計算で必ず行われます。一般的な閉殻系の有機分子でSCF計算が収束しないという場面には、あまり遭遇しないでしょう。
scf00
しかし、遷移金属錯体など金属を含む系や、不対電子の存在するラジカルや励起状態では必ずしもSCF計算が収束するとは限りません。仮に、収束したとしても誤ったエネルギー値に収束することは多々あります。
今回は、GAMESS(US, Firefly)でSCF計算の収束性が悪い場合や、収束しない際の対処法を紹介します。

" SCF計算が収束しない " とはどうゆう状況なの?

そもそも、電子状態計算におけるSCFの収束が悪い、または収束しないとはどういった状況なのでしょうか?以前説明したようにSCF計算では、まず一電子近似で分子軌道を求めます。これは近似値なので、実際のエネルギー値より大きくなるはずです。そこから、エネルギーが下がるように徐々に分子軌道を変化させます。この際、各サイクルで得られる被占軌道(エネルギーが低い軌道)と空軌道(エネルギーが高い軌道)を混合して新たな軌道を作成しています。
scf01
収束に近づいたときには、これら空軌道が被占軌道にほとんど混じらなくなります。しかし、SCF計算が収束が悪い、あるいは収束しないという状況では、空軌道と被占軌道がいつまでもに混じり続けたり、さらに最悪の場合は2つの軌道間のエネルギー準位が入れ替わったりします。これは、エネルギー準位の近い2つの軌道が存在する場合に良く起こります。

特に遷移金属を含む系では、電子配置の異なる状態のエネルギーが互いに近いのでSCF計算が収束しないといった問題によく遭遇します。その他にも、入力ファイルの作成時点で対象の電子状態(スピン多重度、電荷電子配置)を正しく記述できていなかったり、結合角・結合長などが異常に大きかったりなど外的な要因でも起こりうるので注意が必要です。


SCF計算が収束しない時にチェックしたいこと

それでは、SCF計算が収束しなかった場合、まずはじめにチェックしたい3つの項目について見ていきましょう。

1) 入力ファイルに誤りがないか?
電子状態を計算する際の最初の課題は、正しい電荷と多重度を選択することです。そもそも、計算する系の電子状態(スピン多重度、電荷)に誤りがあってはいけません。特に遷移金属を含む系などでは、いくつかの異なる電荷(酸化状態)をとることができるので注意が必要です。電子状態の不一致に関しても「SCF HAS NOT CONVERGED」のエラーメッセージが出力される場合があるので、もう一度入力ファイルを確認してみましょう。また、初期構造の結合長や結合角が化学的に明らかにおかしい場合も注意が必要です。予め、分子力学計算半経験的分子軌道法を用いて構造をある程度整えておくことも重要です。

2) 正しい電子状態に向かっているか?
GaussSumなどを使ってSCF計算の収束状況を確認してみましょう。GAMESSの場合、” SCF CALCULATION ”で出力ファイルをキーワード検索すると見つかります(詳しい見方はこちらの記事を参照)。
scf05
計算が収束方向に向かっていることが明らかな場合、最も簡単な方法は、SCF計算の繰返し回数を増やして再度計算を実行することです。GAMESSの場合、$CONTRLグループのMAXITの値でSCF計算の繰り返し回数を指定します。デフォルトは30回(MAXIT=30)です。もしも、計算回数を増やしても状況が改善しない場合は、よい初期値に変更したり、SCF計算のアルゴリズム自体を変更したりしてみましょう。

詳しい方法は、次の3) を参考にしてください。また、収束方向に向かってはいるが励起状態などエネルギー準位の近い軌道の影響でなかなか収束しなこともあります。その場合も、以下の方法を試してみてください。

3) 誤った電子状態に向かっていないか?
誤った電子状態に計算が進んでいる場合は、単にMAXITで計算回数を増やしても時間を浪費してしまいます。SCF計算の繰返し回数を増やす以外には、①よい初期値を準備することと、②SCF収束のアルゴリズムに最適なものを選ぶことが有効です。次に、その内容を詳しく見ていきましょう。

SCF収束の改善策 " よい初期値 " と " SCF計算のアルゴリズム " について

それでは、SCF計算でよい初期値(一度計算した波動関数を、SCFの第1近似として使用する)を利用する方法と、SCF計算のアルゴリズムの変更方法についてここで説明していいきます。

① よい初期値を利用する
他の小さな基底関数系で収束させた結果を初期値にすることもSCF計算の収束性を改善する際には有効です。これは、以前の記事で紹介しましたね。つまり、一度計算したファイルの波動関数を、SCF計算の第1近似(電子密度の初期値として)として再利用するテクニックです。特に、Diffuse関数が存在する場合は、一般的に収束がよくないことが多いので、最小基底関数やDouble-zetaなどを用いてSCFを収束させた値を用いてみましょう。応用的なテクニックとしては、ラジカルの計算で電子が一つ少ない閉殻のカチオンのSCF解を利用して収束性を改善する方法などが良く使われます。

※) 詳しい入力ファイルの作成方法は以下の記事を参照してみてください。
GAMESSの計算をリスタートしたい時の対処法

② SCF収束のためのアルゴリズムを変更する
もちろん、GAMESSはデフォルトで通常最も効果的と考えられるSCFの収束方法を使用しています。しかし、なかなか収束しない場合は、$SCFグループにキーワードを追加しアルゴリズム自体を変更することも有効です。出力ファイルを開いて” SCF CALCULATION ”で検索すると、SCF計算に関するキーワードがデフォルトでどのように設定されているか確認する事ができます。それでは、いくつかの代表的なキーワードについて見ていきましょう。
scf04
1) DAMP=.TRUE.
エネルギーが近い2つの軌道がある場合にSCFが振動してなかなか収束しない場合があります。その場合は、上記のキーワードを入力ファイルに追加することも有効です。以前紹介しましたが、このキーワードはいくつかの連続したFock行列の間の振動を減衰させます(動的ダンピングを有効にします)。
簡単に言うとSCF収束を加速させるフラグなので、なかなかSCFが(振動して)収束しない場合に追加すると上手くいくことがあります。特に、Diffuse関数が存在する場合で、この現象が顕著な時は試してみる価値があります。
同じ記事で紹介したFDIFF=.FALSE.も有効なので試してみてください。

2) DIIS=.TRUE.
PulayによるDirect Inversion in the Iterative Subspace外挿法の利用を許可するキーワードです。SCF収束を改善するために最も広く普及している技法の一つです。GAMESSでは、非制限HF法、非Abel群のROHF、およびDFTではデフォルトで.TRUE.に設定されています。通常、DIISは収束を大幅に加速することができますが、収束しにくい場合は、他のアルゴリズム(SOSCFなど)を使用して多くの反復計算をする必要があります。

3) SOSCF=.TRUE.
二次収束SCF手続き(Newton-Raphson法)の利用を許可するキーワードです。この方法は、DIIS法による通常のSCF計算より遅いですが、より確実な方法と言えます。GAMESSでは、RHF法、Abel郡のROHF、GVB、RとROの半経験的波動関数を使用した場合にデフォルトで.TRUE.が設定されています。もし、DIIS法でSCFがなかなか収束しない場合は、SOSCF法を利用してみるのも有効です。ちなみに、NOCONV=.TRUE. でDIISもSOSCFも使用しない(FALSE)設定にすることもできます。

4) DEM=.TRUE.
Direct minimization SCF法の利用を許可するキーワードです。この方法は非常に時間がかかるうえに、SOSCFより劣るため、最後の手段として利用すべきでしょう。ちなみにGAMESSでは、DEMはRHFでのみしか使用できません。

5) その他
上記のキーワードを変更することで概ねSCFのアルゴリズムに因る収束性の改善は見込めると思います。さらに細かいオプションとして、出力ファイルの” SCF CALCULATION ”のセクションに示されている上記以外のキーワードを簡単に補足説明しておきます。

EXTRAP (デフォルトはTRUE)
Fock行列のPople外挿の使用を制御します。簡単に言うと計算を加速させるフラグです。

SHIFT (デフォルトはDFTのみでTRUE)
Fock行列のレベルシフトを制御します。被占有軌道と占有軌道軌道のエネルギーをずらすことで各軌道を混ざりにくくするオプションです。

RSTRCT (デフォルトはFALSE)
これは占有軌道と空軌道との混合を制限し、HOMOおよびLUMOの反転を制限するためのオプションです。DIIS法でTRUEにすると、特に誤ったSCF解を与えやすい傾向にあるので、注意して使用する必要があります。
使用する場合は、最終的な軌道エネルギーをきちんと確認するようにしましょう。(被占有軌道のエネルギーが占有軌道のエネルギーよりも低い、またはHOMO-LUMOギャップが小さすぎるなどの問題がないか)


おわりに

今回は、GAMESS(US, Firefly)を例にSCF計算の収束性が悪い場合や、収束しない際の対処法を紹介しました。ここで、紹介した方法は一般的な方法です。SCF計算の収束に関する問題の種類によって異なるので、万能な解決方法は存在しません。また、 解決方法も一通りではありません。単に、SCF計算が収束したので無事終了ではなく、出力ファイルを開いて計算結果が化学的に正しいのかきちんと確かめることも重要です。

【関連記事】
SCF計算と構造最適化計算の違いって何?
GAMESSの計算をリスタートしたい時の対処法
GAMESSの入力ファイルに追加・変更したいキーワード8選