gauopt

gauoptユーティリティでは,Gaussianを繰り返して実行することにより最適化を行います。この方法では,入力ストリームの任意のパラメータ(一般的あるいはmassaged基底関数も含む)を最適化できます。Gaussianを実行するサブプロセスを繰り返して作成することで最適化処理をします。通常gauoptは,例えば基底関数のようなパラメータを最適化するのに,Gaussianには標準となる最適化手法が実装されていないといった場合に用いられます。このユーティリティを用いるには,コマンドgauoptを実行し,標準入力からgauopt用のインプットを与えます。

gauopt用のインプットはテンプレートファイルで構成され,そのテンプレートファイル中のあるフィールドを値を最適化したい変数に換えます。テンプレートファイルは,そのときの変数の値でエネルギーを評価するために,その変数に対応する実際のGaussianインプットファイルを作るためにも用いられます。そのときのエネルギーは,各ステップで自動的にGaussianシングルポイント(1点)計算を実行して計算されます,テンプレートファイルの1行目のフォーマットは次のようになります:

NVar, MaxIt, SaveFlag, Conv, ConvV

フォーマットは 2I3, L2, D9.2です。このフィールドでは次のような値を指定します:

NVar
変数の数

MaxIt
実行最適化サイクルの最大数

T|F
中間Gaussian出力ファイルを保存するのかどうかを指定する論理フラグ。この中間ファイルは fork.com, fork.log, fork.rwfといった名前がつけられます。これらのファイルはデフォルトで削除されますが,テンプレートインプットをデバッグするためにはこのフラグを有効にしてファイルを保存しておいたほうが便利です。

Conv
変数のRMS変化の収束条件。このパラメータを0.0にすると,かなり厳しいデフォルト値を用います。

ConvV
エネルギーの収束条件。 このパラメータを0.0にすると,デフォルトで1 mHatreeとします。

テンプレートファイルの2行目では,次のような記法を用いて値のペアを1つ以上指定します:

Value C|V n個繰り返し (間にはスペースが入りません)

ここで, Valueは変数の値,2つ目の値は一文字フラグで,その変数を固定するならC,最適化するならVとします。この行のフォーマットは値ごとにF14.9, A1です。

テンプレートファイルの残りの部分はGaussianインプットに関する部分です。入力ファイル中の各フィールド(前に定義した変数が差し込まれます)では <n x.y> (n番目の変数をフォーマットFx.yを用いた点に挿入)または<-n x.y> (-1倍した変数nをそこに挿入)のどちらかを指定します。

テンプレートファイルの指定方法を明確にするために,例を示します。以下のgauoptテンプレートファイルでは,水分子に対する最小基底のSTO-2G展開に関するスケーリングファクターの最適化を行います。

3  3 T      0.0      0.0
       7.66V           2.25V          1.24V
# RHF/Gen Test

Water RHF/STO-2G basis with optimized scale factors

0,1
O
H,1,r
H,1,r,2,a

r 0.96
a 104.5

1 0
sto 1s 2 <1 12.10>
sto 2sp 2 <2 12.10>
****
2 0 
sto 1s 2 <3 12.10>
****
3 0
sto 1s 2 <3 12.10>
****

同じgauopt変数を使うことによって,2つの水素のスケールファクターを等しくしています。当然ですが,このことは,どの水素原子にも同じ基底を使うようにしても可能です。