SCFでエネルギーがずっと減り続ける現象に遭遇。
新年度に入り、気分も新たにと言いたいところですが、その初日は、太ももの張りで一日中ごろごろしっぱなしという何とも気合の入らない日になりました。前日の卓球が響いて…
まずはCo2(CO)8の計算について。MP2は地獄のような計算時間がかかりそうな気配だったので、DFT(B3LYP)に変更してみたところ、SCFでエネルギーが大量に減り続ける(DFT switch on後)という現象に。いろいろSCFのオプションを変更して見たところ、DirectSCFを切ったところまともに収束し始めた模様。正確にはDirectSCFが悪いのではなくて、FDIFF=.true.がダメだったと思われます。
これが、DirectSCF ON (FDIFF=.true.)でのSCF計算の様子。
ITER EX DEM TOTAL ENERGY E CHANGE DENSITY CHANGE DIIS ERROR
* * * INITIATING DIIS PROCEDURE * * *
1 0 0 -1185.8328735797 -1185.8328735797 0.373291970 0.663882783
2 1 0 -1188.1492157152 -2.3163421355 1.029643602 0.400976272
3 2 0 -1177.5426463893 10.6065693259 0.747599688 1.146942391
4 3 0 -1189.6100399803 -12.0673935910 0.062694483 0.045492505
5 4 0 -1189.6906903839 -0.0806504036 0.051785277 0.031572975
6 5 0 -1189.7206888275 -0.0299984436 0.047148883 0.021325181
7 6 0 -1189.7336592038 -0.0129703763 0.042945607 0.020397035
8 7 0 -1189.7496324142 -0.0159732104 0.032586750 0.007900405
9 8 0 -1189.7569614708 -0.0073290566 0.016545673 0.003619918
10 9 0 -1189.7588040571 -0.0018425863 0.008702045 0.002411763
11 10 0 -1189.7592655941 -0.0004615370 0.005181674 0.000992590
12 11 0 -1189.7594221701 -0.0001565760 0.003526815 0.000903345
CONVERGED TO SWOFF, SO DFT CALCULATION IS NOW SWITCHED ON.
* * * INITIATING DIIS PROCEDURE * * *
13 12 0 -1196.0037662243 -6.2443440542 0.191539721 0.067546644
14 13 0 -1268.8724653989 -72.8686991746 0.178118196 0.470418821
15 14 0 -1343.0417461189 -74.1692807200 0.046982540 0.910052705
16 15 0 -1416.7500166816 -73.7082705627 0.153761624 1.398497174
17 16 0 -1489.5967436856 -72.8467270039 0.023160572 1.811604783
18 17 0 -1562.4792006954 -72.8824570098 0.001237907 2.319608339
(以下、ほぼ等間隔で減り続けて200iterまで逝き、error termination)
そして、DirectSCF OFF (FDIFF=.false.)でのSCF計算の様子。
ITER EX DEM TOTAL ENERGY E CHANGE DENSITY CHANGE DIIS ERROR
* * * INITIATING DIIS PROCEDURE * * *
1 0 0 -1185.8402383938 -1185.8402383938 0.354155842 0.662908647
2 1 0 -1188.1113787880 -2.2711403942 1.010578513 0.468945004
3 2 0 -1177.3859208369 10.7254579510 0.738632849 1.155595768
4 3 0 -1189.6121763750 -12.2262555380 0.054239472 0.042180526
5 4 0 -1189.6933852075 -0.0812088326 0.034039705 0.023266017
6 5 0 -1189.7259620257 -0.0325768182 0.041476783 0.016323809
7 6 0 -1189.7436387824 -0.0176767567 0.027704917 0.015641709
8 7 0 -1189.7507243529 -0.0070855705 0.026603828 0.013239227
9 8 0 -1189.7571782109 -0.0064538580 0.013940023 0.006362713
10 9 0 -1189.7588977000 -0.0017194891 0.007704270 0.002638349
11 10 0 -1189.7593162309 -0.0004185310 0.004327533 0.001354531
CONVERGED TO SWOFF, SO DFT CALCULATION IS NOW SWITCHED ON.
* * * INITIATING DIIS PROCEDURE * * *
12 11 0 -1196.0004794762 -6.2411632453 0.184353159 0.077281417
13 12 0 -1196.0725361496 -0.0720566734 0.313633910 0.177299394
14 13 0 -1195.5638149286 0.5087212210 0.277194955 0.352926173
15 14 0 -1196.0972915987 -0.5334766701 0.068141189 0.143397315
16 15 0 -1196.2426469844 -0.1453553856 0.034463678 0.050820648
17 16 0 -1196.2487968309 -0.0061498465 0.035474259 0.028912212
18 17 0 -1196.2460838329 0.0027129980 0.026430263 0.034390561
19 18 0 -1196.2547422984 -0.0086584655 0.006966498 0.010533945
20 19 0 -1196.2553073349 -0.0005650365 0.001307886 0.002297016
21 20 0 -1196.2553323812 -0.0000250463 0.000699986 0.000902855
22 21 0 -1196.2553398202 -0.0000074391 0.000141584 0.000090805
(以下現在計算中)
明らかにE changeとDIIS errorの推移が違いますね。FDIFFはFockマトリックスが前のiterationと比べてどれくらい変わったかだけを計算するフラグで、二電子積分なんかは毎回毎回計算しません。DirectSCFを指定するとFDIFFもデフォルトでオンになります。
モノによってはこんな事例もあるんだと、一つ経験を積んだ感じがします。