« TDDFTで電子遷移の吸収波長予測 | メイン | GAMESS/TINKERでQM/MM計算 »

GAMESSのSurface計算はMOPACのSTEP/POINTとは違う?

さて、GAMESSで計算をいろいろやっていると、反応解析をやってみたいと思うわけです。反応の解析ということは、遷移状態を探索することとほぼ同義と言っていいでしょう。当然、GAMESSは遷移状態へ構造最適化を行うことが出来る(RUNTYP=SADPOINT)わけですが、では、その入力のための初期構造は一体どうやって作成するのでしょう?

MOPACでは、STEP/POINT計算によって1つないし2つの構造パラメータを変化&固定しながら連続的に構造最適化して、大まかなポテンシャル面を描き出します。そして、その中から鞍点(suddle point:遷移状態と同義)に近い点の構造を抽出して初期構造にします。

しかし、GAMESSではそういった計算をどうするのかがわかりません。
 

近い計算として、SURFACE計算があります。これは1つないし2つの構造パラメータを内部座標表示で指定して、それらを動かして各点で計算を実行します。MOPACと同じに聞こえますが、これは別に「パラメータの固定はしない」のです。各点の初期値は変動させますが、$SURFセクション内のRUNTP1/2でoptimizeを指定すると、見事に最適化してしまって皆同じ構造になる、なんてコトが起きます。通常の使い方はRUNTP1/2はENERGYにして1点計算を各点で行うということのようです。

ちなみに、典型的な入力はこちら。

$CONTRL SCFTYP=RHF RUNTYP=SURFACE COORD=ZMT
MAXIT=200 NZVAR=0 $END
$SYSTEM TIMLIM=600 MEMORY=10000000 $END
$BASIS NGAUSS=6 GBASIS=N311 NDFUNC=1 $END
$SCF DIRSCF=.T. DAMP=.T. $END
$GUESS GUESS=HUCKEL $END
$SURF ivec1(1)=1,2 igrp1=2 disp1=0.1 orig1=0 ndisp1=3 $END
$DATA
BF3 surf calc.
C1
B
F 1 1.2964731
F 1 1.2964723 2 119.9999830
F 1 1.2964723 3 120.0000341 2 180.0000000 0
$END

BF3分子のFを一個、0.1Åずつ伸ばしながら3点までSP計算を実行するものです。出力内には以下のような形で各点での座標と全電子エネルギーが出ます。

---- SURFACE MAPPING GEOMETRY ----
COORD 1= 0.000 COORD 2= 0.000
HAS ENERGY VALUE -323.280211
B 0.00000 0.00000 0.00000
F 1.29646 0.00557 0.00000
F -0.65305 1.11998 0.00000
F -0.64341 -1.12555 0.00000
----------------------------------

しかし、これではただ構造パラメータを変化させてるだけで、それに伴う他の部分の構造変化は追っていません。従って、これで出てくる遷移状態もどきは初期構造としては余り優秀ではないと考えられます。そこで、同時に$STATPTセクションのIFREEZで同じパラメータを指定して各点で固定化できないかと考えて、やってみました。
具体的には以下の入力。

$CONTRL SCFTYP=RHF RUNTYP=SURFACE COORD=ZMT
MAXIT=200 NZVAR=0 $END
$SYSTEM TIMLIM=600 MEMORY=10000000 $END
$BASIS NGAUSS=6 GBASIS=N311 NDFUNC=1 $END
$SCF DIRSCF=.T. DAMP=.T. $END
$GUESS GUESS=HUCKEL $END
$STATPT IFREEZ(1)=1,2 $END
$SURF ivec1(1)=1,2 igrp1=2 disp1=0.1
orig1=0 ndisp1=3 runtp1=optimize $END
$DATA
BF3 mep calc.
C1
B
F 1 1.2964731
F 1 1.2964723 2 119.9999830
F 1 1.2964723 3 120.0000341 2 180.0000000 0
$END

で、結果は見事に全て最適化されて3点とも同一構造に。どうやら、$CONTRLセクションでRUNTYP=SURFACEになっているので$STATPTセクションは無視されている模様。($SURF内のRUNTP1=OPTIMIZEには反応してくれない?)
$ZMATセクションがいまいち理解できないので、IFZMAT/FVALUEが怪しいと思いつつもどうすべきかがいまいち不明。。。実はIFREEZのやり方が間違っていたりして。

誰か教えてくださいえろい人。

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)