基底関数の詳細な設定
GAMESSには、基本的な基底関数はプログラムに含まれていて、特定のキーワードを使って呼び出して使います。$BASISグループが、基底関数に関する指定を行うセクションになります。既に「キーワードの説明」で、よく使うものについて説明していますが、ここではさらに詳しい入力について説明を加えます。
基本の入力
既にプログラムに同梱されている基底系を用いる場合、入力は普通以下のようになります。
この例では、基本となる基底系として6-31G(GBASIS=N31 NGAUSS=6)を指定し、さらに分極関数としてdとpを一つずつ(NDFUNC=1 NPFUNC=1)、sp型diffuse関数を一つ(DIFFSP=.T.)追加しています。つまり、Gaussianの入力で言う「6-31+G(d,p)」を指定したことになります。非常に回りくどい書き方ですが、基底関数を丁寧に指定した書き方でもあります。GBASISで指定する基本セットによって、対応している元素の範囲が異なります。マニュアルに記載されていますので注意して指定しましょう。
特殊な基底関数の入力
普通、GAMESSプログラムに同梱されている基底系で多くの場合事足りるのですが、時にはそれ以外の基底系を利用したい場合があります(例えばGaussian Basis Set Order Formから入手した基底関数)。この場合、(1)$DATAグループに直接書き込む (2)外部に基底関数を書いたファイルを用意して読み込ませる の2通りがあります。WinGAMESSとPC GAMESSで仕様が一部異なりますので、そこは別々に説明します。
(1)$DATAグループへ直接入力
$DATAグループをカーテシアン座標で記述し、各原子の後ろに基底関数を挿入します。例えば、フッ化水素の計算をするにあたり、上述したGaussian Basis Set Order Formからcc-pVDZ基底を入手して利用する場合、以下のように基底関数データを挿入します。
基底関数データの後に改行を必ず入れます。この入力方式を見るとわかりますが、それぞれの原子に別々の基底関数を割り振ることが可能です。また、単に「N31 6」を入れれば同梱されている6-31G基底を割り振ることもできます。$DATAに直接基底関数を入力する場合、$BASISは書きませんのでご注意ください。また、Winmostarなどでは、$DATAに基底関数を記述した入力ファイルは正常に読み込めません。
(2)外部ファイルを読み込む
外部ファイルで読み込ませることも可能です。WinGAMESSでは任意のファイルを指定することが可能で、実行フォルダ内のrunscript.cshを編集することで指定を行います。runscript.cshの中に、以下のような行がありますので、そこを任意のファイルのパスに書き換えます。
この例では、GAMESSの実行ファイルのあるフォルダ($GMSPATH)内のextbas.txtを外部基底ファイルとして指定しています。ファイル名は英数字で任意に指定できます。この外部基底ファイルは、以下のような書式で作成します。
先ほどの$DATAでの直接入力に似ていますが、元素記号と基底関数ラベルを最初に入れます。この基底関数ラベル(上の例ではcc-pvdzt)は8文字以内で、既に組み込まれている基底関数と重ならないものを指定します。このファイルから基底関数を読み込んで割り当てるには、$BASISグループで以下のように記述します。
EXTFILが外部ファイル読み込みのキーワードで、値としてtrueを指定することにより、runscript.cshで指定されたファイルからGBASISの値と一致するラベルの基底関数を割り当てます。定義ファイル内で各元素に異なる基底関数を割り振ることもできます(例えば、H-Clまでは6-31G(d)を、K以降はLANL2DZを指定するなど)。しかしながらこの方法では、原子ごとに異なる基底関数を割り当てることはできません。
PC GAMESSでも外部基底ファイルの作成法と入力での指定法は同じです。但し外部ファイルの指定は、実行の際に「-b」オプションを指定し、それに続けて外部ファイルのパスを入力します。
-bで何も指定しなかった場合、入力ファイルと同じ階層に「basis.lib」が無いか検索します。ですので、よく使う外部基底はbasis.libというファイルに保存しておけば、特にオプションを指定しなくても自動的に読み込んでくれます。