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)では対処されるはず
DFTB
Posted :