はじめに
Macに気象のシミュレーションをするためのソフトSCALEを導入します。
SCALEとは「Scalable Computing for Advanced Library and Environment」の略で、理化学研究所計算機科学センターが中心となって開発している基盤ライブラリです。SCALEでは気候研究や天気予報を容易に様々な計算機上で行うことができます。
一部初心者向けに詳しく書いてある部分もありますが、慣れている方は読み飛ばしていただいても構いません。
インストール
コンパイルに必要なライブラリ等をインストールします。
Xcode
App Storeからインストールします。インストールには時間がかかります。
Command Line Tools
-
ターミナルで使う各種コマンドをインストールするためのものです。 Xcodeを⽴ち上げ、上のメニューバーから
Xcode > Open Developper Tools > More Developper Tools...
と辿ってクリックすると、 サイトが開きます。 -
Apple ID でログインすると
More Downloads for Apple Developers
というページにたどり着きます。 -
左のサーチ欄に
Command Line Tools
と打ち込み、検索すると⼀覧が表⽰されます。⾃分の MacOS に対応するものをダウンロードしてください。これは少し時間がかかります。 -
ターミナルを開いて、以下のコマンドを入力します。
$ sudo xcodebuild -license
スペースを押して⾏き、最後に”agree”と⼊⼒すれば完了です。
XQuartz
シミュレーション結果を画面で出力するためのツールです。
https://www.xquartz.org にアクセスして、最新版をダウンロードしましょう。
Macでは標準で入っている場合もあります。
GrADS (Grid Analysis and Display System)
-
GrADSのサイトの表の下にある「Earlier releases are available for…」と書いてあるところで,grads-2.1というところをクリックして,「grads-2.1.1.b0-bin-darwin13.4-withoutssl.tar」をダウンロードするとうまくいきました。
-
ダウンロードされたファイルをクリックすると展開され、 おそらく
grads-2.1.1.b0
というディレクトリが⽣成されます。 -
ターミナルで以下のコマンドを実行して実行ファイルをコピーします。
- もし/usr/local/bin/が無い場合は先に mkdir で作ってください。
- Downloadsのディレクトリ以外に展開した場合は
Downloads
の部分を適宜変更してください。
$ cp ~/Downloads/grads-2.1.1.b0/bin/* /usr/local/bin/
-
gradslibというgradsのライブラリをインストールします。
- 筑波大学の釜江先生が公開してくださっているライブラリがあるので今回はこちらを利用しました。
- こちらからgradslib.zipをダウンロードしてください。
-
ダウンロードされたファイルをクリックすると、解凍されて gradslib というディレクトリが⽣成されます。
-
ターミナルでgradsディレクトリを作成します。
$ mkdir -p /usr/local/lib/grads
-
次にgradslib ディレクトリの中⾝を grads ディレクトリに全てコピーします。
- このディレクトリーには、GrADS 内で使⽤するフォントや、海岸線データ、スクリプト内で使えるコマンドなどが⼊っています。もし今後、GrADS で新たなコマンド(誰かが作ったユーザー定義のコマンドなど)を使いたい場合は、そのコマンドのスクリプトを、この grads ディレクトリにコピーすれば、使えるようになります。
$ cp -r ~/Downloads/gradslib/* /usr/local/lib/grads/
- 環境変数を設定します。
$ vi ~/.bash_profile
とすると Vi(エディタ)で.bashrc というファイルがターミナル上で起動するので、このファイル内に以下のことを書き込んでください。
(「i」キーを押すと⼊⼒できるようになります。マウスは使えないのでカーソル移動は⽮印キーで。)
export PATH="$PATH:/usr/local/bin"
export GASCRP="/usr/local/lib/grads"
export GADDIR="/usr/local/lib/grads"
-
書き終わったら、
esc
キーを押したあとで、:wq
と⼊⼒すると保存されます。保存されると、元のターミナル画⾯に戻ります。$ source ~/.bash_profile
とすることで、書いた内容を反映させることができます。 -
$ grads
と打つと、⿊い画⾯が出てきて、ターミナルは左端が ga->に変わっていたらインストール成功です。 -
もし
grads
と入力してもエラーが出る場合は再起動をしてみてください。 -
grads は、
quit
コマンドで終了します。
Homebrew
最後にHomebrewをインストールします。
Homebrewが入っているかどうかわからない場合はターミナルにbrew
と入力して確認してみてください。
Command not found
と出た場合は下のコマンドを実行してHomebrewを入れてください。
下のバージョンは最新ではない可能性がありますので公式サイトを確認するようにしてください。
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Homebrewを用いてインストールできるもの
以下はHomebrewを使ってインストールします。
- gcc
後述のwgrib2でXcodeのものだとエラーが出てしまうためインストールします。
$ brew install gcc
- netcdf
$ brew install netcdf
- open-mpi
$ brew install open-mpi
- ncview
$ brew install ncview
- convert
GrADSで作成した画像をつなげて動画を作成したり、画像の拡張⼦を変えたりするのに便利なコマンドです。convert コマンドそのものをインストールするのではなく、imagemagickをインストールすれば、convert コマンドが使えるようになります
$ brew install imagemagick
wgrib2のインストール
SCALE は wgrib と wgrib2 の両方を要求しますが、wgrib は GrADS をダウンロードした時にデフォルトで入っているためここでは wgrib2 のみインストールします。
wgrib2の入手については、こちらの記事にも少し書いてあるので確認してみてください。
今更ですが、気象データを解析してみた
wgrib2を入手するために以下のコマンドを入力します。
こちらからダウンロードします。(直ダウンロードのリンク)ダウンロードしたもの解答し、ホームディレクトリ(ターミナルを開いた時にいるディレクトリ)に移します。
$ cd grib2/
$ make
makeが通った場合は以下のコマンドを打って問題なければwgrib2が通りました。
$ ./wgrib2/wgrib2
# リンクを貼る
$ ln -s ~/grib2/wgrib2/wgrib2 /usr/local/bin/wgrib2
$ wgrib2
# または、wgrib2をコピーする
cp wgrib2/wgrib2 /usr/local/bin/
makeが上手く行くといいのですが、大抵の場合は上手く行かないため以下をターミナルに打ち込んでください。
export CC=gcc-11
export CXX=c++-11
export FC=gfortran-11
※なお以下で示す例は執筆者がインストールした時点でのバージョンなので Homebrew で先ほどインストールしたgcc, c++, gfortranのバージョンを/usr/local/bin
で確かめてください(Macにデフォルトで入っているgccだとなぜかうまくいかない)。
エラーが出てしまう場合は、こちらを参考に対処してみてください。
SCALEのコンパイル
ソースコードの入手
ソースコードはこちらから入手することができます。
$ wget http://scale.riken.jp/download/archives/scale-5.3.6.tar.gz
$ tar -zxvf scale-5.3.6.tar.gz
$ ls ./
scale-5.3.6/
tarが上手く開かない場合はクリックして解凍してください。
Makedefファイルと環境変数の設定
MacOSの場合は以下のように設定します。
他のOSの場合はSCALEユーザーズガイド(P15)を参考。
export SCALE_SYS="MacOSX-gnu-ompi"
export SCALE_NETCDF_LIBS="-L/usr/local/Cellar/netcdf/4.6.3_1/lib -lnetcdf -lnetcdff"
export SCALE_NETCDF_INCLUDE="-I/usr/local/Cellar/netcdf/4.6.3_1/include"
注意点
- ユーザーズガイドに示された例とは環境が違うため、ガイドを写しても上手く動かないことがあります。
- またガイドでは.bashrcに記述していますが、環境変数は.bash_profileに記述した方がトラブルが少ないです。
- 上記のバージョンは現時点でのバーションですので変わっている可能性もあります。
- その場合はターミナルに
$ nc-config --libs # SCALE_NETCDF_LIBSのディレクトリが表示される
$ nc-config --includedir # SCALE_NETCDF_INCLUDEのディレクトリが表示される
と打って表示されるディレクトリにそれぞれ書き換えてください。
(LIBSに -lnetcdffを追加するのを忘れずに)
-
nc-config
のバージョンを確認した際に/usr/local/Cellar/netcdf/バージョン
以外のパスが表示される場合(例えばanacondaのパスが出る場合など)は依存性などでコンパイルが失敗することがあるため、コンパイル時のみ依存先のパスをコメントアウトするなどしてください - 他にも、こちらなども試してみてください。
SCALEのコンパイル
SCALE-RM のソースディレクトリに移動し、下記のコマンドによってコンパイルします。
SCALE-GMのコンパイルは今回は行わなくて大丈夫です。
$ cd scale-5.3.6/scale-rm/src
$ make -j 4
-j 4
はコンパイル時の並列数を示しています。 この場合は4並列です。
並列数は実行環境に応じて設定し、推奨の並列数は 2~8 とユーザーズガイドにはあります。
コンパイルが成功すると、下記の 3 つの実行ファイルが scale-5.3.6/bin
に以下に生成されたら成功です。
- scale-rm
- scale-rm_init
- scale-rm_pp
後処理ツール(net2g)のコンパイル
$ cd ../util/netcdf2grads_h
または、
$ cd scale-5.3.6/scale-rm/util/netcdf2grads_h
$ make -j 2
net2g
という名前の実行ファイルが生成されていれば、コンパイルは成功です。
これが終わればSCALE-RMのチュートリアルができるようになります。
追記 '21.5 gradsのエラー
dyld: Library not loaded: /usr/X11/lib/libX11.6.dylib
もし下記のようなエラーが出る場合はXQuartzが入ってないため、インストールしてください。
dyld: Library not loaded: /usr/X11/lib/libX11.6.dylib
Referenced from: /usr/local/bin/grads
Reason: image not found
Abort trap: 6
Error in GXSTRT: Unable to connect to X server
このエラーが出る場合は、PCを再起動してください。
追記 '21.4 wgrib2のエラー
大抵はgcc, g++, gfortranのpathが適切でない場合に詰まります。
gcc, g++, gfortranのpath修正
こちらも参考にしてください:
https://qiita.com/DaikiSuyama/items/09f5aa399aad37783146
OKな場合(g++バージョン)
$ g++ -v
Using built-in specs.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=/usr/local/Cellar/gcc/11.1.0/libexec/gcc/x86_64-apple-darwin20/11.1.0/lto-wrapper
Target: x86_64-apple-darwin20
Configured with: ../configure --prefix=/usr/local/Cellar/gcc/11.1.0 --libdir=/usr/local/Cellar/gcc/11.1.0/lib/gcc/11 --disable-nls --enable-checking=release --enable-languages=c,c++,objc,obj-c++,fortran,d --program-suffix=-11 --with-gmp=/usr/local/opt/gmp --with-mpfr=/usr/local/opt/mpfr --with-mpc=/usr/local/opt/libmpc --with-isl=/usr/local/opt/isl --with-pkgversion='Homebrew GCC 11.1.0' --with-bugurl=https://github.com/Homebrew/homebrew-core/issues --enable-libphobos --build=x86_64-apple-darwin20 --with-system-zlib --disable-multilib --without-build-config --with-native-system-header-dir=/usr/include --with-sysroot=/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk
Thread model: posix
Supported LTO compression algorithms: zlib
gcc version 11.1.0 (Homebrew GCC 11.1.0) // ここが大事
$ which g++
/usr/local/bin/g++
$ which g++-11
/usr/local/bin/g++-11 // ここのpathをリンクに設定する
$ ls -l /usr/local/bin | grep g++
lrwxr-xr-x 1 tori admin 21 Apr 28 00:13 g++ -> /usr/local/bin/g++-11
lrwxr-xr-x 1 tori admin 31 Nov 3 21:40 g++-11 -> ../Cellar/gcc/11.1.0/bin/g++-11
lrwxr-xr-x 1 tori admin 53 Nov 3 21:40 x86_64-apple-darwin18-g++-11 -> ../Cellar/gcc/11.1.0/bin/x86_64-apple-darwin18-g++-11
brewのg++になっていない場合
brewのg++になるようにリンクを貼ります。
ln -s /usr/local/bin/g++-11 /usr/local/bin/g++
もし、ここで ln: /usr/local/bin/gcc: File exists
が出る場合は以下のコマンドを打ってください。
unlink /usr/local/bin/g++
ln -s /usr/local/bin/g++-11 /usr/local/bin/g++
Whichでusr/local/binが出ない
localを優先してみるようにpathを通しましょう。
export PATH=/usr/local/bin:$PATH
これをとにかく上の方に書いてみてください。
エラー別の対策
1. makefile:256: *** need fortran-95+TR-15581/fortran-2003 compiler, not f77. Stop.
exportのし忘れです。
$ export CC=gcc-11
$ export CXX=c++-11
$ export FC=gfortran-11
を打ってみてください。
2. configure: error: C++ preprocessor "/lib/cpp" fails sanity check See `config.log' for more details.
gcc
コマンドを打ってみて壊れてないか確認してみてください。
こちらは、上記のgcc, g++のpath設定がうまく行ってないと起こります。確認してみてください。
また、path設定が適切でもエラーが出る場合は、
$ brew reinstall gcc
を打ってみて、もう一度gccを入れ直してみてください。
3. jas_getopt.c:151:7: error: implicit declaration of function 'jas_eprintf' is invalid in C99 [-Werror,-Wimplicit-function-declaration] jas_eprintf("missing argument for option %s\n", s);
Macデフォルトのgccのpathを使っています。上記のgcc,g++のpathの設定を確認してみてください。
4./bin/sh: /usr/local/bin/install: Permission denied make[6]: *** [install-libjasperincludeHEADERS] Error 126
gradsをインストールするときに使った/usr/local/bin/INSTALL
を消してからmakeする
参考文献
SCALE ユーザーズガイド:
https://scale.riken.jp/documents/
筑波大学釜江陽一先生の資料公開:
https://researchmap.jp/ykamae/%E8%B3%87%E6%96%99%E5%85%AC%E9%96%8B/
「MacbookのセットアップとSCALEモデルの最初の第⼀歩」
東京大学大学院理学系研究科 三浦研究室 灘本真実著