OpenMX Ver. 3.7では、以下の5種類の電子密度混合法がキーワード「scf.Mixing.Type」により利用可能です。
関連キーワード: scf.Init.Mixing.Weight, scf.Min.Mixing.Weight, scf.Max.Mixing.Weight
関連キーワード:
scf.Init.Mixing.Weight,
scf.Min.Mixing.Weight,
scf.Max.Mixing.Weight,
scf.Mixing.History,
scf.Mixing.StartPulay
関連キーワード:
scf.Init.Mixing.Weight,
scf.Min.Mixing.Weight,
scf.Max.Mixing.Weight,
scf.Mixing.History,
scf.Mixing.StartPulay
関連キーワード:
scf.Init.Mixing.Weight,
scf.Min.Mixing.Weight,
scf.Max.Mixing.Weight,
scf.Kerker.factor
関連キーワード:
scf.Init.Mixing.Weight,
scf.Min.Mixing.Weight,
scf.Max.Mixing.Weight,
scf.Mixing.History,
scf.Mixing.StartPulay,
scf.Mixing.EveryPulay,
scf.Kerker.factor
SCF計算における電子密度の振動は一般に電子密度の長波長成分から生じています。 波数の関数であるKerker重みを次式の内積計算に導入することで、この長波長成分からの 振動を抑制することができます。ここで振動の抑制度合はKerker因子を調整することで制御され、その値は キーワード「scf.Kerker.factor」で与えることができます。
scf.Mixing.EveryPulay 5 # default = 1
Pulay型混合法の残差ベクトルは、混合ステップが累積するにつれてある特定の部分空間を張るだけとなり、 このため、その部分空間に直交した線型独立な新しいベクトル成分が導入されないために収束が困難になってきます。 この線形従属問題を回避する一つの方法は、Kerker混合の合間に時折Pulay型混合を行うことです。 この方法ではキーワード「scf.Mixing.EveryPulay」を使用して頻度を指定することができます。 例えば「scf.Mixing.EveryPulay=5」の場合、5回のSCF反復ごとにPulay混合が、他のステップではKerker型混合が行われます。 「scf.Mixing.EveryPulay=1」は従来のPulay型混合に対応します。 キーワード「scf.Mixing.EveryPulay」は「RMM-DIISK」に対してのみ使用でき、デフォルト値は「1」であることに注意して下さい。 SCF収束性を向上させるための上記の処方箋は多くの場合に有効です。 しかし、収束を加速させるために最も推奨されるのは以下の方法です。
RMM-DIISやRMM-DIISKなどのPulay型混合は準ニュートン法に基づいていることから、収束速度はいかに適切な近似ヘッセ(Hessian)行列を見つけられるかに依存します。 「scf.Mixing.History」を大きくするに従い、計算される近似ヘッセ行列の精度が向上する可能性があります。 図6は(a) シアル酸分子、(b) Ptクラスタ、 (c) Ptクラスタに対する5種類の混合法のSCF収束の比較を示しています。 密度行列もしくは電子密度の残差ノルムは「*.out」ファイル内でNormRDとして記録されています。 またこの計算で用いた入力ファイルは「work」ディレクトリ内の「SialicAcid.dat」、「Pt13.dat」、「Pt63.dat」です。 図6に示された全ての系に対して「RMM-DIISK」が頑健に動作していることがわかります。 SCF収束が極めて困難な場合では、大きな「scf.Kerker.factor」および 小さな「scf.Max.Mixing.Weight」を用いた「Kerker」の使用が必要となりますが、 多くの場合で、「RMM-DIISK」が最良の選択となります。