SCFの収束について

Share This:

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

筆者はこれまで、低分子の 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 収束の判定に使われています。

 

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

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

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

関連する記事

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

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