👻

DFTB+ 24.1 をインストール

2024/04/29に公開
  • DFTB+は、DFTB(Density Functional Tight Binding)法に基づいて電子状態計算するソフトウェア
  • Tight Binding 法は半経験的な手法であり、原子間の相互作用をパラメータ化された形で取り入れるため、大規模な分子系でも効率的にシミュレーションできる
  • DFTB+ は分子研スパコンにインストールされているけれど、extended TB (xTB) や TD-DFTB は有効化されていないので、これらの手法を使いたいときにはコンパイルが必要

インストール

ソースコードをダウンロード

安定版をダウンロードする

wget https://github.com/dftbplus/dftbplus/releases/download/24.1/dftbplus-24.1.tar.xz
tar -xvf dftbplus-24.1.tar.xz
cd dftbplus-24.1

GitHub から clone する

  • 安定版(DFTB+ version 24.1)に含まれる modes ツールにはバグがある
  • 個人的にこのバグがちょっと困ったので、GitHub から clone することにした
git clone https://github.com/dftbplus/dftbplus.git
cd dftbplus

設定ファイルを編集

  • xTB 法や TD-DFTB 法を利用するためには、config.cmakeの2カ所を次のように編集する
config.cmake
@@ -32,1 +32,1 @@
- option(WITH_TBLITE "Whether xTB support should be included via tblite." FALSE)
+ option(WITH_TBLITE "Whether xTB support should be included via tblite." TRUE)
config.cmake
@@ -36,1 +36,1 @@
- option(WITH_ARPACK "Whether the ARPACK library should be included (needed for TD-DFTB)" FALSE)
+ option(WITH_ARPACK "Whether the ARPACK library should be included (needed for TD-DFTB)" TRUE)

コンパイル

  • コンパイラには、インテル社が提供する iforticc を利用する
  • インストール先は $HOME/apl/dftbplus-24.1.1
FC=ifort CC=icc cmake -DCMAKE_INSTALL_PREFIX=$HOME/apl/dftbplus-24.1.1 -B _build .
cmake --build _build -- -j

Slater-Koster ファイルをダウンロード

  • Tight Binding 手法で必要な Slater-Koster (SK) ファイルをダウンロード
  • GBSA モデルに必要なパラメータもダウンロードされる
./utils/get_opt_externals
  • SK ファイルは、external/slakosにダウンロードされる
  • slakos以下を適当なディレクトリに移動する
    • ~/lib/slakosに置いた
mv external/slakos/origin ~/lib/slakos

テスト

pushd _build; ctest -j; popd

インストール

cmake --install _build

環境変数を設定

  • ログインシェルがbashの場合、.bashrcで以下のように追記
.bashrc
export DFTBP=~/apl/dftbplus-24.1.1/bin
export PATH=${DFTBP}:${PATH}

DPTools をインストール

  • DPTools (DFTB Plus Tools) は、DFTB+ のデータ形式を処理するための Python スクリプト
    • たとえば、gen 形式で記述された座標データを xyz 形式に変換する gen2xyz などがある
cd tools/dptools
pip install .

DFTB+ を使ってみる

DFTB+ のインプットファイル

  • DFTB+ のインプットファイルは、名前が「dftb_in.hsd」と決められている
    • フォーマットは、HSD (Human-readable Structured Data) と呼ばれている
      • DFTB+ の独自形式?
  • たとえば、水分子の構造最適化をおこなう場合、DFTB+ インプットファイルは次のように書ける
dftb_in.hsd
Geometry = GenFormat {
3 C
  O H
  1 1  0.00000000000E+00 -0.10000000000E+01  0.00000000000E+00
  2 2  0.00000000000E+00  0.00000000000E+00  0.78306400000E+00
  3 2  0.00000000000E+00  0.00000000000E+00 -0.78306400000E+00
}

Driver = GeometryOptimization {
  OutputPrefix = "geom_opt"
}

Hamiltonian = DFTB {
  SCC = Yes
  Dispersion = LennardJones {
    Parameters = UFFParameters {}
  }
  SlaterKosterFiles = Type2FileNames {
  Prefix = "/home/yamnor/lib/slakos/3ob-3-1/"
  Separator = "-"
  Suffix = ".skf"
  }
  MaxAngularMomentum {
    O = "p"
    H = "s"
  }
}

DFTB+ を実行する

  • 計算の実行は、dftb_in.hsdファイルがあるディレクトリでdftb+コマンド
  • treeコマンドで、結果をdftb.logファイルに出力する
dftb+ | tree dftb.log

Discussion