4
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Macで気象シミュレーションをするためのセットアップ

Last updated at Posted at 2020-03-06

はじめに

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」キーを押すと⼊⼒できるようになります。マウスは使えないのでカーソル移動は⽮印キーで。)
~/.bash_profile
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)を参考。

.bash_profile
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を通しましょう。

.bash_profile
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モデルの最初の第⼀歩」
東京大学大学院理学系研究科 三浦研究室 灘本真実著

4
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?