優れた基底関数とは、端的には「より早く、正確な解を得られる基底関数」と言えます。しかし、残念なことに全ての系に適した万能な基底関数系は存在しません。計算目的に応じてその都度、目的に合った関数系を選ぶことが重要です。
kit0
それではいったいどのような基準で基底関数を選べばよいのでしょうか?今回は、そんな基底関数の選択方法についてのお話です。
 

まずは、6-31G(d)を基準に選んでみよう!!

GAMESSで最初から使用できる基底関数だけでも数十種類以上あるので、初心者にとって「基底関数の選択」は悩みどころかもしれません。そこでおすすめしたいのが、「6-31G(d)」です。色々な基底関数がある中で、6-31G(d)ほど一般的に使用される基底関数はないと言っても過言ではないでしょう。というのも計算時間のわりに、そこそこいい結果を与えるからです。言い換えると、計算時間と精度の妥協点にあるのが6-31G(d)とも言えます。実際に、一般的な有機化合物であれば基底関数に6-31G(d)を用いれば、概ね十分な結果が得られることが多いです。
kit6
家庭用パソコンでも、分子量100以内であればHFやB3LYPと6-31G(d)を組み合わせれば、実用的な計算時間内で結果が得られます。どの基底関数を使えばいいかわからない場合の初心者向けのファーストチョイスとしては、妥当と言えるでしょう。もし、その結果が実験結果や予想と異なった場合はそこから次の一手を考えれば良いのです。間違っても最初から考えなしに高次の基底関数を使用して計算時間だけを浪費することだけは避けてください。

ちなみに、6-31Gに追加されているdは「補助関数」と呼ばれます。この補助関数は、以前説明した3-21Gから6-31Gのように各軌道に関数を多く割り振るような拡張だけでは、十分な計算精度を得ることが困難な場合に追加します。
もちろん補助関数を多く加えれば、より精密な計算ができますが、それに比例して計算時間も増大します。それに対象となる系にあまり関係のない補助関数では、さほど精度が上がらず、単に計算時間だけを浪費してしまう結果になってしまいます。それでは、この「補助関数」いったいどのように使いわけていけばいいのでしょうか?

補助関数の使いわけ方は?

一般的に以下のような基準で補助関数を追加します。

■ 一般的な有機化合物:6-31G(d) (分極関数:dを追加)
■ 負電荷を持つ化学種(アニオン), 励起状態:6-31+G(d) (diffuse関数:+を追加)
■ 正電荷を持つ化学種(カチオン):6-31G(d,p) (分極関数:dpを追加)

kit2
つまり、アニオンや励起状態のように電子が、原子や分子の外側の広がった軌道に入ることが多い場合※は、それを考慮した補助関数であるdiffuse関数(分散関数)を加えます(基底関数に+符号を加える)。また、+符号が2つ付く場合は(6-31++G(d)など)、軽い元素(水素とヘリウム)にもdiffuse関数が追加され、さらに精密な計算が可能になります。
(※アニオンでは核電荷に比べ電子が多いので、中性分子に比べ広い電子分布をとります。また、励起した電子も分子にゆるく引き寄せられているので電子分布が広がります。同様の理由から、弱い相互作用を扱うような系でもdiffuse関数を追加することが望ましいです。)

一方、dやpで表される分極関数は分子内での結合生成やイオン間の静電相互作用の分極の効果を加えます。分子中には原子核や電子などの分極を引き起こす原因が多く存在しますので、中性の分子でも定量的な計算を行うためには分極関数を加えることが望ましいです。
なぜなら、6-31Gに代表されるスプリットバレンス基底関数系では軌道の伸縮(軌道の大きさ)は記述できますが、電荷の偏り(軌道の形)を詳細に記述することはできないからです。例えば、p軌道にd軌道が混合すると下図のように電子分布が分極します(1)。
kit3

また、同様にs軌道にp軌道が同符号で混合すると、p軌道の正のローブは大きくなり、負のローブは小さくなります(2)。つまり、電子雲が正の方に分極したことになります。このような分極は、分極方向にある原子との結合に有利であり化学結合の記述に重要なのですが、補助関数なしではこれらを詳しく記述できません。
" d " は、水素以外の元素にd軌道の関数を加えた分極関数であり、" dp "はp軌道の関数をさらに軽い元素(水素とヘリウム)に追加したものです。
 

基底関数と計算時間の関係は?

一般的に、Hartree-Fock 法や密度汎関数法(B3LYPなど)では基底関数の個数の3〜4乗に比例して計算時間が増大します。さらにMP2で5乗~ClSDTQ法になるとなんと10乗に比例して計算時間が増大します(MP2やClSDTQについては今後説明します)。ちなみに、分子の基底関数の数は、1原子あたりの基底関数の数を合計することで求めることができます。(例:アンモニアの6-31+Gdでは19(N)+3✕2(H)=25で基底関数の数は25になります。)
例えば、アンモニアのHF/6-31GとHF/6-31+G(d)ではスケーリング計算から5倍近く計算時間がかかると予想されます。
kit4

以前紹介したCCCBDBには、メタノールを様々な理論/基底関数で計算した際のベンチマークが閲覧できるので、興味がある方は確認してみてください。
http://cccbdb.nist.gov/timings.asp
 

基底関数と精度の関係は?

基底関数の数を増やせば、同時に計算時間も増大することがわかりました。つまり、精度にあまり影響しない系に、いたずらに補助関数を追加するのは避けたほうが良いと言えます。
それでは、実際に水とヒドロキシアニオンの構造最適化計算でdiffuse関数を追加した場合と追加しない場合にどのような違いがみられるかCCCBDBで調べてみましょう。
検索結果を下表に纏めてみました。値は酸素と水素の結合距離(Å)を実験値との誤差で示します。

kit5
比較の結果、水分子の計算にdiffuse関数を追加してもさほど精度が上がらないことがわかります。一方、負の電荷をもつヒドロキシアニオンの方が水分子に比べてdiffuse関数の効果が大きいことがわかります。つまり、diffuse関数はアニオンの計算で化学的精度を得るには欠かせない補助関数であることがわかります。

CCBDBにはその他にも沢山の化合物で基底関数依存性を比較できるので、興味がある方は色々と調べてみてください。
実際に、CCCBDBで操作した様子を動画に纏めました。操作方法がわからない方は参考にしてください。


迷ったときは先人に学ぶべし!!

自分自身で基底関数を選ぶ際の、大まかな指標は理解できたと思います。しかし、ここで説明したものに当てはまらない系やさらに複雑な系(遷移金属錯体など)ではいったいどうしたら良いのでしょうか?
kit1
その場合は、以前紹介したQCLDBⅡなどのデータベースで、類似化合物の計算例を調べることが一番の近道です。また、それに限らず単純な系であっても類似の報告例があれば必ず目を通す癖をつけましょう。何故ならば、基底関数は日々新しいものが開発されていますので、普段使用しているものよりもより良い基底関数に出会うかもしれないからです。

おわりに

今回は、基底関数を決める際の選択方法について紹介しました。どの基底関数を選べばいいのか分からない際のファーストチョイスとして6-31G(d)を使用するのは良い選択かもしれませんが、一つの基底関数で満足してしまうのは危険です。
先に述べたように全ての系に適した万能な基底関数は存在しません。論文などの計算例を参考にしたり、色々な基底関数を試してみたりして、その傾向を確かめることが重要なことを覚えておきましょう。

【関連記事】
HF/3-21Gとは何なのか?
B3LYP/6-31G(d)とは何なのか?