DFTB+ 24.1 の modes ツールにあった些細だけどまあまあ致命的なバグ
- DFTB+
には、Hessian 行列(ポテンシャルエネルギーの二次微分)をもとに基準振動解析をするための modes というツールが含まれている
- DFTB+ の安定版(Version 24.1)パッケージを使って、この modes で解析した基準振動モードを
modes.xyz
というファイルに出力してみると、明らかに変だった- 基準振動モードは4〜6列目に表示されているはずだけど、規格化されているはずなので、こんなに大きな値にはならない
Eigenmode 7 840.534714467547 cm-1
C -0.00575132 0.00003239 -0.00002296 7.83759527 -68.09043161 -3344.89590829
C -1.33338746 0.00638171 -0.00325444 -7.80397640 67.94122708 3344.89800722
H -1.91289879 -0.91319079 0.01406974 25.77362453 -215.23592566 -10677.40559569
H -1.90395435 0.93145643 -0.02342050 24.12039546 -215.87396193 -10677.32969068
H 0.57376004 0.91960487 -0.01734714 -27.32227574 216.17347324 10677.35626194
H 0.56481556 -0.92504236 0.02014310 -22.97230242 216.71413893 10677.35401644
- ググってみると、すでに
この問題の原因は特定されていた
- 原因はほんの些細なミス
- modes のコード(
app/modes/modes.F90
)のなかで、writeXYZFormat
関数でvectors
と指定すべきところを、velocities
にしていた
@@ -203,1 +203,1 @@
- & velocities=displ(:,:, iMode), comment=trim(lcTmp2), append=isAppend)
+ & vectors=displ(:,:, iMode), comment=trim(lcTmp2), append=isAppend)
- 些細なミスだけど、基準振動解析を利用する上ではまあまあ致命的だったので、ちょっとビックリ
- GitHub で milestone
に挙がっているので、次のマイナーアップデート(Version 24.2)では対処されるはず