球面調和関数展開をFortran 90/95で使う

球面調和関数展開(spherical harmonic expansion)を数値シミュレーションデータの解析で使いたくいろいろ調査。IDLのルーチンは高い次数でうまくいかなくなるらしいので他の方法をさがしたところ公開されているFortranのプログラムがあった。
そのインストールの方法をここに記録しておくことにする。

http://shtools.ipgp.fr/というのをインストールした。まだ試してないがl=2800までいけるらしいので使うことにする。
これを使うには、FFTW、BLASLAPACKが必要なのでまずはそれらからインストール。
ちなみにこれらのソフトウェアはフリーで、僕が使っているスパコンにはインストールされている。スパコンで使う上では特に必要ないのだが、ローカルマシンで開発・デバッグということも多いので、今回インストールすることにした。

FFTWはかなり昔にインストールしたのでどうやるかは覚えていないが、特に問題なくインストールできたと思う。FFTW Download Pageからダウンロードなかにreadmeがあったと思う。

次に、BLAS。これはBLAS (Basic Linear Algebra Subprograms)からダウンロード

tar zxvf blas.tgz
cd BLAS
make

とすればFortranのファイルがコンパイルされる。make.incの中のFRCのところをいじくればコンパイラを変えることもできる。

次に、LAPACK(実はこれにBLASも入っているようだ)。まずはLAPACK — Linear Algebra PACKageから最新版をダウンロード。Previous releaseと書いてあるが、そこに最新版も置かれている。
Installing LAPACK on a Unix Systemに書いてとおりに、
まず

gunzip -c lapack.tgz | tar xvf -

として、解凍。
そして、中にあるmake.inc.exampleをmake.incにコピー。
中のFORTRAN
LOADERあたりを自分の好きなコンパイラに変更する。
BLASのところがややこしい。まずLAPACK/BLAS/SRCに行ってBLASだけを先にコンパイルしなければいけなかった。その後、LAPACK/に戻ってmakeをするとうまくいった。

コンパイルにそれなりに時間がかかる。

次にSHTOOLS、http://shtools.ipgp.fr/からダウンロードしてきて

tar zxvf SHTOOLS2.8.tar.Z

として解凍。中のMakefileをいじくる。変えた方がよさそうなところはF95のところ。自分のコンパイラに変える。するとどのように使えばいいか出てくる。