第一原理計算プログラムOctopusのインストール（メモ）

# はじめに

* DFT，TDDFTを使った第一原理計算プログラム[Octopus](https://www.octopus-code.org/documentation/12/)をインストールするためのメモです。
* 基本的には，[Installation](https://www.octopus-code.org/documentation/12/manual/install/)と[Manual: Building from scratch](https://www.octopus-code.org/documentation/12/manual/installation/building_from_scratch/)のページを参考にしています。
* コンパイラは，intelコンパイラを使用しています。コンパイラとそのオプションは適宜読み替えてください。[^1] 
[^1]: [FAQ](http://octopus-code.org/wiki/FAQ)によると，全てのライブラリで同じコンパイラを使わないとダメらしい。
* 基本的にファイルは`<basedir>`にダウンロードするものとします。

**最初に，最低限必要なライブラリのインストールをします。**

:::note info
2023/04/11にリンクを修正しましたが、内容やバージョンは確認していないのでご自身で適宜読み替えてください。
:::

# BLASのインストール（ver. 3.8.0）

　1. netlibのサイトから[ダウンロード](https://www.netlib.org/blas/blas.tgz)します。  
　2. 展開します。

```bash
    tar xvf blas.tgz
    cd BLAS-(version)
```

　3. 展開したファイルの中の`make.inc`を編集します。

```bash:make.inc
    FORTRAN  = ifort
    OPTS     = -O3
    DRVOPTS  = $(OPTS)
    NOOPT    =
    LOADER   = ifort
    LOADOPTS =
```

　4. コンパイルします。

```bash
    make
```

　5. コンパイルが終わったら新しく`lib`というディレクトリを作って，ライブラリをコピーします。

```bash
    mkdir <basedir>/lib
    cp blas_LINUX.a <basedir>/lib/libblas.a
```

# LAPACKのインストール（ver. 3.8.0）

　1. netlibのサイトから[ダウンロード](https://www.netlib.org/lapack/lapack.tgz)します。

　2. 展開します。

```bash
    tar xvf lapack.tgz
    cd lapack-(version)
```

　3. 展開したファイルの中の`make.inc.example`を`make.inc`にコピーして，編集します。

```bash
    cp make.inc.example make.inc
```

```bash:make.inc
    FORTRAN  = ifort
    OPTS     = -O3
    DRVOPTS  = $(OPTS)
    NOOPT    = -O0

    LOADER   = ifort
    LOADOPTS =
```

　4. ライブラリをビルドします。

```bash
    make lib
```

　5. コンパイルが終わったら，先ほど作った`lib`というディレクトリにライブラリをコピーします。

```bash
    cp liblapack.a <basedir>/lib/
```

　※注意：`make`が失敗する場合，`INSTALL/second_INT_ETIME.f`と`INSTALL/dsecnd_INT_ETIME.f`中の`INTRINSIC ETIME`をコメントアウト（行の最初に`*`をつける）してみてください。

# GSLのインストール（ver. 2.5）

　1. GSLの最新版を[ダウンロード](https://ftp.gnu.org/gnu/gsl/)します。

　2. 展開します。

```bash
    tar xvf gsl-(version).tar.gz
    cd gsl-(version)
```

　3. `configure`スクリプトを実行します。
　（gccコンパイラの場合はオプションが違うようなので注意）

```bash
    ./configure CC=icc CFLAGS=-O3 --prefix=<basedir> --disable-shared --enable-static
```

　4. 成功したらコンパイル，インストールを行います。

```bash
    make
    (make check)
    make install
```

※注意：`make check`が失敗するかもしれません。（原因不明）

# FFTW3のインストール（ver. 3.3.8）

　1. FFTWの最新版を[ダウンロード](https://www.fftw.org/)します。

　2. 展開します。

```bash
tar xvf fftw-(version).tar.gz
cd fftw-(version)
```

　3. `configure`スクリプトを実行します。

```bash
    ./configure  --prefix=<basedir> CC=icc CFLAGS=-O3 CXX=icpc F77=ifort F77FLAGS=-O3 --enable-mpi
```

　4. 成功したらコンパイル，インストールを行います。

```bash
    make
    (make check)
    make install
```

# LibXCのインストール（ver. 4.2.3）

　1. LibXCの最新版を[ダウンロード](https://www.tddft.org/programs/libxc/download/)します。

　2. 展開します。

```bash
    tar xvf libxc-(version).tar.gz
    cd libxc-(version)
```

　3. `configure`スクリプトを実行します。

```bash
    ./configure --prefix=<basedir> CC=icc CFLAGS=-O3 FC=ifort FCFLAGS=-O3
```

　4. 成功したらコンパイル，インストールを行います。

```bash
    make
    (make check)
    make install
```

**次に，Octopusのインストールです。**

# Octopusのインストール（ver. 12.2）

　1. Octopusの最新版を[ダウンロード](https://www.octopus-code.org/documentation/12/)します。

　2. 展開します。

```bash
    tar xvf octopus-(version).tar.gz
    cd octopus-(version)
```

　3. 環境変数を定義します。

```bash
    export LIBS_BLAS=<basedir>/lib/libblas.a
    export LIBS_LAPACK=<basedir>/lib/liblapack.a
```

　4. `configure`スクリプトを実行します。

```bash
    ./configure --prefix=$HOME/octopus CC=mpicc CCFLAGS=-O3 FC=mpifort FCFLAGS=-O3 --enable-mpi --with-gsl-prefix=<basedir> --with-libxc-prefix=<basedir> --with-fftw-prefix=<basedir>
```

　5. 成功したらコンパイル，インストールを行います。

```bash
    make
    (make check もしくは make check-short)
    make install
```

これでホームのoctopusというディレクトリに実行ファイルができるはずです。  
他にも入れるとよいライブラリがあるみたいだけど，今回はとりあえず動くということでスルー。  
また，コンパイラのオプションについては良く分からないので他につけるべきものがあれば教えていただきたいです。