SCFの収束について

久しぶりの記事になります。研究所の仕事が多くて、全然更新できませんでした。

筆者はこれまで、低分子の QM 計算を主に行ってきました。扱う分子の総原子数はせいぜい 70 原子程度でした。
しかし、最近より大きな分子の計算(原子数 400 個くらい)に取り組むことになりました。
Gauss View 上で構造を書くのも大変ですが、それ以上に SCF の収束が悪くてとにかく困っています。

低分子の計算をしていた時は “scf=tight” と指定していました。

scf が収束しないと最適化計算に進めません。よくある原因は初期構造が汚いということです。この場合、計算レベルをどれだけ落としても、scf の cycle 数をどれだけ上げても、SCF は収束しません。

このような場合に私がよく行うのは、scf の閾値を下げることです。

【注意】
この方法は、g09 まではうまく機能していましたが、g16 ではエラーが起きて止まってしまうことがあります。

“scf=conver=X” というキーワードで指定できます。これは、10 の -x 乗を scf 収束の閾値にするという意味です。私はいつも x=5 くらいにしています。どうしてもダメな時は、4にしますが、、、いくつまでなら許容かは分かりません。

log ファイルを見てもらうとわかるのですが、各 cycle の最後にある RMSDP という値が scf 収束の判定に使われています。

 RMSDP=8.58D-03 MaxDP=1.82D+00 DE= 9.09D+00 OVMax= 9.98D-01

 Cycle   3  Pass 0  IDiag  1:
 RMSU=  7.13D-03    CP:  9.86D-01  3.64D-02
 E= -5781.52419164242     Delta-E=       19.132282000057 Rises=F Damp=F
 DIIS: error= 1.15D-01 at cycle   3 NSaved=   3.
 NSaved= 3 IEnMin= 1 EnMin= -5809.74221119994     IErMin= 2 ErrMin= 3.86D-02
 ErrMax= 1.15D-01  0.00D+00 EMaxC= 1.00D-01 BMatC= 1.04D+01 BMatP= 2.30D+00
 IDIUse=2 WtCom= 0.00D+00 WtEn= 1.00D+00
 Rare condition: small coef for last iteration:  0.000D+00
 Coeff-En:   0.790D+00 0.141D+00 0.692D-01
 Coeff:      0.790D+00 0.141D+00 0.692D-01
 Gap=     0.547 Goal=   None    Shift=    0.000
 RMSDP=1.25D-02 MaxDP=2.15D+00 DE= 1.91D+01 OVMax= 9.98D-01

 Cycle   4  Pass 0  IDiag  1:
 RMSU=  8.82D-03    CP:  9.86D-01  1.23D+00  6.54D-02
 E= -5735.93458756071     Delta-E=       45.589604081710 Rises=F Damp=F
 DIIS: error= 1.29D-01 at cycle   4 NSaved=   4.
 NSaved= 4 IEnMin= 1 EnMin= -5809.74221119994     IErMin= 2 ErrMin= 3.86D-02
 ErrMax= 1.29D-01  0.00D+00 EMaxC= 1.00D-01 BMatC= 2.04D+01 BMatP= 2.30D+00
 IDIUse=2 WtCom= 0.00D+00 WtEn= 1.00D+00
 EnCoef did   100 forward-backward iterations
 Coeff-En:   0.883D+00 0.768D-02 0.136D-01 0.963D-01
 Coeff:      0.883D+00 0.768D-02 0.136D-01 0.963D-01
 Gap=    -0.396 Goal=   None    Shift=    0.000
 RMSDP=9.65D-03 MaxDP=2.04D+00 DE= 4.56D+01 OVMax= 9.98D-01

 

scf=tightの場合は、RMSDP が 10 の -8 乗以下になると scf 収束となります。(つまり、RMSDP の値が 10 の -9 乗のオーダーになった時。)
ちなみに、RMSDP は密度行列変化の二乗平均の平方根を表しています。RMSD は、root mean square deviation の略です。

scfの閾値をさげると面白いように計算が速く回ります。
正確性は下がってしまうと言われていますが、実質そんなに差はありません。

私は、いつもある程度構造最適化が回るようになったところで、一旦計算を止め、その構造から scf=tight と指定し直して計算を再開するようにしています。

関連する記事



【追記】
元記事への大量アクセスが検出されましたので削除し、記事を作り直しました。
元記事投稿日 2016年6月28日 @ 10:13

2 comments

  1. 最近 興味深く拝見させていただいています。 
    通常は ガウシアンの場合、最適構造のみに意味があるので OPTなら iop(5/13=1)と scf=(vshift=700) をいれておけば そのうち安定な立体構造と電子構造におちついて収束すると思います。ただscf収束しなくて進行するので最後に目視でうまくいっているかどうかの確認は必要です。

    1. コメントありがとうございます。その二つのオプションは知りませんでした。
      当方、計算化学に関しては全くの素人のため、今後とも色々と教えていただければと思います。

コメントを残す(投稿者名のみ必須)