GrimmeによるDFT-D2法 [86]により、vdW相互作用を組み込むことができます。 関連するキーワードを以下に列挙します。
scf.dftD on # on|off, default=off DFTD.Unit Ang # Ang|AU DFTD.rcut_dftD 100.0 # default=100 (DFTD.Unit) DFTD.d 20.0 # default=20 DFTD.scale6 0.75 # default=0.75 DFTD.IntDirection 1 1 1 # default=1 1 1 (1:on 0:off)vdW相互作用を組み込む際には、「scf.dftD」を「on」に設定して下さい。 二体ポテンシャルのカットオフ半径はキーワード「DFTD.rcut_dftD'」で指定します。 ここで、その単位は「DFTD.Unit」で与えます。 Grimmeの論文 [86]にある(12)式の「d」値は「DFTD.d」によって指定します。 そのデフォルト値は20です。 Grimmeの論文 [86]にある(11)式の倍率は「DFTD.scale6」で指定します。 PBE関数を用いた場合のデフォルト値は0.75です。 また本手法で導入されたvdW相互作用は「DFTD.IntDirection」によって a、b、もしくはc軸方向で打ち切ることが可能で、ここで「1」は相互作用を含み、「0」は含まない場合です。 また次のように、それぞれの原子の周期性を個別に制御できます。
<DFTD.periodicity 1 1 2 1 3 1 4 1 .... DFTD.periodicity>ここで第1列は「Atoms.SpeciesAndCoordinates」と同様の通し番号、第2列はフラグで、対応する原子に対して「1」は周期的、 「0」は非周期的であることを意味します。 「0」を指定した原子は非周期的であると見なされ、周期セルとの相互作用は含まれません。
vdW相互作用を実装する上での主な変更は二つのルーチン、「Total_Energy.c」中の「Calc_EdftD()」と 「DFTDvdW_init.c」に成されています。 「DFTDvdW_init.c」中では、vdW補正のパラメータが容易に変更でき、 「Total_Energy.c.」の「Calc_EdftD()」ではどのように実装されているのか確認できます。
OpenMXでは基底関数として局在軌道を用いているため、vdW相互作用のような弱い相互作用の効果を調べる際には、 基底関数重なり誤差(BSSE)を考慮する事が重要です。 BSSEを評価するためにcounterpoise法(CP法)[33,34]が使用できます。 CP法については「空原子の配置」の節を参照して下さい。