moku-moku

Elk

オープンソースの全電子計算ソフトウェアです。

インストール

以下の環境におけるインストール手順です。

Libxcのコンパイル

Elkを使う動機の一つに、様々な交換相関汎函数を利用することが挙げられます。 その実現のためにLibxcを利用します。

公式サイトから最新版ソースコード一式をダウンロードします。 執筆時点の最新版は7.0.0です。

Linuxの標準的な手順でインストールします。 aclocalコマンドがない場合は、libtoolを追加インストールしてください。 oneAPIを利用する場合は、Cコンパイラのコマンドを指定します(CC=icx FC=ifx)。 インストール先は、ホームディレクトリ直下のlocalとしてみます。

tar xf libxc-7.0.0.tar.gz
cd libxc-7.0.0
aclocal
autoreconf -f -i
./configure CC=icx FC=ifx --prefix=$HOME/local
make install

$HOME/local/libディレクトリに、ライブラリが生成されています。

$ ls $HOME/local/lib
libxc.a  libxcf03.a  libxcf03.la  libxcf90.a  libxcf90.la  libxc.la  pkgconfig

Elkのコンパイル

続けてElk本体をコンパイルします。

公式サイトからソースコードをダウンロードします。 執筆時点の最新版は10.2.4です。

tar xf elk-10.2.4.tgz
cd elk-10.2.4

make.incを編集します。 まずコンパイラに関して、Intel Fortran compiler classic (ifort)を使う場合は変更しません。 最新のoneAPI(LLVM-based compiler; ifx)を利用する場合は、以下の様に行先頭の#を消去してください。

# Intel Fortran LLVM-based compiler (ifx).
F90 = mpiifx
F90_OPTS = -O3 -xHost -ipo -qopenmp -qmkl=parallel
F90_LIB = -liomp5 -lpthread -lm -ldl
SRC_MKL =
AR = xiar

(oneAPI 2025では、ifortが廃止されました。)

次に、Libxcを有効にするために、以下の様に行先頭#を消去してください。

LIB_LIBXC = libxcf03.a libxc.a
SRC_LIBXC = libxcf03.f90 libxcifc.f90

インストール済みLibxcから、$HOME/local/libにあるlibxcf03.alibxc.aの二つを、Elkのsrcディレクトリにコピーします。

cp $HOME/local/lib/libxcf03.a src
cp $HOME/local/lib/libxc.a src

以上で準備が整いました。 makeコマンドでコンパイルします。

make

srcディレクトリにelkコマンドが生成されていることを確認してください。

$ ls src/elk
src/elk