Set up GOTM-FABM on Linux
Linuxでのセットアップ方法はこちらにまとめられています.ソースコードをこちらのサイトから入手します.
~/fabm/hosts$ git clone https://github.com/gotm-model/code.git gotm
計算例のcasesも入手します.
~/fabm/hosts/gotm$ git clone https://github.com/gotm-model/cases.git cases
Githubのサイトはこちらです.
~/fabm/hosts/gotm/scripts/linux
に存在する,gotm_configure.sh
と gotm_build.sh
をbuildディレクトリ(例えば,~/fabm/build/gotm
にコピーします.それらの中身の環境変数を環境に合わせて編集します.
gotm_congigure.sh
ソースコードは src
ディレクトリに存在することが前提で,具体的に ~/fabm/hosts/gotm/src
に存在しているとしますと,最後の /src
を除いた部分を環境変数に代入します.また,使用するコンパイラに合わせて編集します.最後に,実行形式をインストールするディレクトリを指定します.
GOTM_BASE=${GOTM_BASE:=~/fabm/hosts/gotm}
FABM_BASE=${FABM_BASE:=~/fabm}
# default Fortran compiler is gfortran - overiden by setting compiler:
export compiler=ifort
compiler=${compiler:=gfortran}
# Make install prefix configurable
install_prefix=${install_prefix:=~/local/gotm/$compiler}
gotm_build.sh
コンパイラに合わせた設定を行います.np=
はビルドに使用するマシンのコア数を指定します.適切に指定するとビルドの時間が短縮されるようです.以下はコア数が2の場合です.
# default Fortran compiler is gfortran - overide by setting compuiler like:
export compiler=ifort
np=-j2
成功すると,~/local/gotm/ifort/bin
に実行形式 gotm
が作成されます.実行は入力データを準備したディレクトリで行いますので,実行形式に path を通しておきましょう.
$ export PATH=/home/username/usr/local/gotm/ifort/bin:$PATH
さらに,こちらで準備したIntel版netcdfにlinkできるように,~/.bashrc
に環境変数を加えます.
export LD_LIBRARY_PATH=/usr/local/netcdf-ifort/4.4.4/lib:$LD_LIBRARY_PATH
通常,netcdf4ではnc-configが利用されるのですが,GOTMではnetcdf3.6.3が標準的に使われているようで,上記の設定が必要なようです.
casesの準備
GOTMには多くの計算例が用意されています.ソースコードはこちらで,解説はこちらです.これら各caseをfabm/hosts/gotm/cases/
以下にダウンロードします.casesの一つである nns_annual を実行してみます.こちらの記事を参考にさせていただきました.
cases/nns_annual
ディレクトリにはデータファイル等がいくつかありますが,必要な nml
ファイル等が存在しておらず,Makefile を用いて準備する必要があります.このMakefileで使用されるeditscenario等のパッケージをインストールする必要があります.Python2.7の環境を用意しておきます.Python3.6がbase環境で,condaでPython2.7の仮想環境pyfabmが構築されているとします.
$ source activate pyfabm
$ pip install xmlplot --upgrade
$ pip install xmlstore --upgrade
$ pip install editscenario --upgrade
次に,gotmguiをインストールします.こちらのサイトから[cci]gotmgui-0.1.1-py2-none-any.whl[/cci]を適当なディレクトリにダウンロードし,そのディレクトリに移動して,以下のようにインストールします.
$ pip install gotmgui-0.1.1-py2-none-any.whl
さらに,fabm/hosts/gotm/cases/
にある Makefile
を環境に合わせて編集します.GOTMDIR
はGOTMのソースコードが含まれている src
を含むディレクトリを指定します.src
は含めません.
export GOTMDIR=$(HOME)/winc/cal/fabm/hosts/gotm
準備が整いましたので,各caseのnmlファイルを作成します.fabm/hosts/gotm/cases/
において,以下を実行します.
$ make namelist
すべてのcaseで必要なnmlファイルが作成されます.
cases/nns_annual
に入り,gotm-fabm.mml
とfabm.yaml
を用意し,output.yaml
を適切に修正してから,実行形式 gotm を実行します.gotm には PATH を通してあるので,どこからでも実行できるはずです.1年分の計算が1.6秒で完了しました.
$ gotm