Libxcの概要
Libxc - a library of exchange-correlation functionals for density-functional theory
密度汎関数理論(DFT)に現れる、交換相関汎関数(eXchange-Correlation functional)は、スピン密度、カレント密度の汎関数で、多くの種類がある。それらを個々のDFTコードにhomemadeで書くことも出来るが、あまり合理的ではない。様々な汎関数について、スピン密度、カレント密度を入力することで、対応する交換相関ポテンシャル、交換相関エネルギー密度を返してくれるライブラリが、このLibxc。
Abinit, Elk, SALMON, Ocotopus, WIEN2k等、多くの第一原理計算からリンクできるようになっている。
Libxcのビルド
公式のInstallationにある通り、基本的には
./configure --prefix=PATH/TO/LIBXC
make
make check
make install
libxcを読み込むアプリがインテルコンパイラでビルドされている関係で、libxcもインテルコンパイラでビルドしてい置かないと、不具合が出る可能性がある。インテルコンパイラにするためには、configureを
./configure --prefix=PATH/TO/LIBXC FC=ifort CC=icc
に変える。
でビルドできる。
トラブルシューティング
gcc version 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC) on CentOS Linux release 7.6.1810 (Core) でのビルド失敗
./configure
までは通ったが、makeでこけた。
エラーメッセージを見ると、-std=c99
等をオプションに付けろというようなメッセージが現れていた。試しにconfigureで出来たMakefileのCFLAGS=
の個所にこのオプションを付けてみたが、うまくmake出来なかった。
結果的に、gccのバージョンを上げたところ問題なくビルドできた。具体的にはgcc-6.3.1では、./configure
から、make, make check, make installまで問題なく進んだ。
Note@chibataka からいただいたコメント(コメント欄を参照)に従って設定しても、解決するかも。
Libxc 5.1.4の intel compiler-2019.3.199 でのビルド失敗
以下のメッセージがでてmakefileがコケる。
未解決。
xc-threshold.c(808): error: expected an expression
for (int i = 0; i < (int) (sizeof(xc_values_type) / sizeof(double)); i++)
^
xc-threshold.c(808): error: identifier "i" is undefined
for (int i = 0; i < (int) (sizeof(xc_values_type) / sizeof(double)); i++)
^
一応Libxc 4.3.4ではインテルコンパイラでも問題なくビルドできた。