MacでFlexible Atomic Code(FAC)を使う


はじめに

Flexible Atomic Code(FAC)は相対論的なHartree-Fock法によってプラズマ中の原子過程や発光スペクトル等を計算してくれるソフトウェアパッケージ。

gfortranを使ってインストールする方法をメモ。bashでもzshでもどちらでもOK。以前にインストールしたg77が残っているとハマので注意。

2020/5/28 内容に間違いがあったので更新(configureのオプション)

参考

・FAC website(基本的に全ての情報はここにある。)
https://www-amdis.iaea.org/FAC/

・他の原子コードとの比較についての解説
http://www.atomiccollision.jp/collision/syoutotsu/10_0701s.pdf

環境

・macOS Catalina 10.15.4

準備

・App StoreからXcodeをダウンロードしてインストールしておく。
・Fortranコンパイラ(gfortran)が動作することを確認。ターミナルで

$ gfortran -v

と打ってgcc version 9.3.0 のように返ってくればok。

gfortran: command not foundと返ってくる場合は、gfortranをinstallする必要がある。

gfortranのインストール(必要な場合のみ)

gfortranが入っていない場合は、以下の方法でインストールする。既にHomebrewが入っているひとは方法2がおすすめ。

方法1:バイナリパッケージでインストール(とりあえずの人向け)
https://github.com/fxcoudert/gfortran-for-macOS/releases
にアクセスして、gfortran 8.2 for Mojaveから、fortran-8.2-Mojave.dmgをダウンロード。gfortran.pkgを開いてインストールする。(for Catalinaはないが、for Mojaveで動くのでOK。2020/5/30)

方法2:Homebrewでgccをインストールする(これからプログラミングの環境構築していきたい人向け)
Mac OS (Catalina) にHomebrewでgnuplot5をインストールを参考にして、まずHomebrewをインストールし、

$ brew update
$ brew install gcc

とすればgfortranがインストールされる。エラーが出る場合は参考ページの後半を参照のこと。

FACのインストール

Githubからソース(ZIPファイル)をダウンロードして解凍するとfac-masterフォルダができるので、適当な場所に保存。
https://github.com/flexible-atomic-code/fac

ターミナルで、fac-masterディレクトリに移動し、

$ ./configure
$ make
$ sudo make install

を順番に実行。

makeではたくさんwarningが出るがとりあえず無視して大丈夫そう。

$ which sfac
/usr/local/bin/sfac

となれば成功。
さっそく計算してみよう。

makeでエラーが出る場合(g77関連)

g77: Bad CPU type in executable

が出る場合はfortranコンパイラとしてg77が呼ばれている。Catalinaでg77は動かないので、g77を削除する。まずwhichコマンドでg77の場所を調べる。

$ which g77
/usr/local/bin/

であれば、

$ sudo rm /usr/local/bin/g77

として削除。/usr/local/bin/の部分は環境によって異なるのでwhichで返ってきたPATHを入力する。

makeでエラーが出る場合(gfortran関係)

Undefined symbols for architecture x86_64:
  "__gfortran_concat_string", referenced from:
      _dhseqr_ in libmlapack.a(dhseqr.o)
      _dormbr_ in libmlapack.a(dormbr.o)
      _xermsg_ in libfac.a(xermsg.o)
      _dormlq_ in libmlapack.a(dormlq.o)
      _dormqr_ in libmlapack.a(dormqr.o)
               :
               :  # いろいろ
               :
clang: error: linker command failed with exit code 1

が出る場合は、gfortranが正しくインストールされていない可能性が高い。
「gfortranのinstall」を再確認。