基底関数雑感
いまだに理論計算の汎関数と基底関数選びで悩んでいる。
論文化していないので詳しい事は書けないが、基底関数の雑感をメモ
今回使った基底関数は以下の通り。
6-31G(d), 6-31G(d,p), 6-31G(2d,p), 6-31G(3d,p), 6-31G(df,p),
6-31+G(d), 6-31+G(d,p), 6-31+G(2d,p), 6-31+G(3d,p), 6-31+G(df,p), 6-311+G(d,p),
cc-pvdz, apr-cc-pvdz, may-cc-pvdz, jun-cc-pvdz,
jul-cc-pvdz, aug-cc-pvdz, aug-cc-pvtz,
def2sv, def2svp, def2svpp, def2tzp, def2tzvp, def2tzvpp, ugbs の25種。
計算対象は炭素・酸素・水素で構成された小分子のポテンシャルエネルギー曲面。エネルギー1点計算で、M06-HF/各種基底関数の結果をCCSD(T)/aug-cc-pVDZと比較した。この汎関数では、基底関数を大きくすると精度が上がるので計算時間との比較がしやすい。他の汎関数を使うと、そもそも汎関数の精度が悪いために基底関数がでかくなるほどあさっての方向へ収束する。
計算時間(cpu時間)と精度の比較をめちゃくちゃ適当にまとめるとこんな感じ。確かcpuは8コアくらい使ってたはず。
計算コストの対数と誤差との相関があるっぽい。これは汎関数が計算している分子と相性がいいからである。それにしてもこんなに合うなんてびっくりだ。
特筆すべきはTruhlarのカレンダー基底関数。計算コストが低く、元の基底関数とあんまり計算時間が変わらない。更に精度の改善が見られる。また、cc-pvdzだとdiffuse関数が少ないために、jun-以降のapr, mayはこれ以上diffuse関数を減らせなくなって全く同じ計算結果を与える。知らなかった。
ugbsは時間もかかるし精度も出ない基底関数である事が分かったのでこれからは候補から外す。この基底関数、更に関数付け足してデカくなっていくらしいが、どの分野に需要があるんだろうか。
あと、当たり前だけどちっこい原子にf軌道入れても無駄っぽい。6-31G(d,p)も6-31G(df,p)も大して精度が変わらない。
この結果からも分かる通り、基底関数の違いでこんなにも結果が変わる訳だから、DFT計算で2:1の反応の選択性(0.4 kcal/mol)を証明したなんて論文はにわかに信用できない。特に、小さい基底関数系を使ってる場合、むりやり選んだ結果だと考えるのが自然だろう。