RTTOV v11のコンパイル

2013年6月17日

RTTOV 研究

t f B! P L
RTTOV v11が2013年5月にリリースされた。

ソースの入手

新規,既存のRTTOV v10ユーザ共request formから申請が必要。
1日くらいでダウンロードリンク付のメールが届く。

コンパイル

ソースの展開

アーカイブをそのまま展開すると,いろいろぶちまけるのでディレクトリを作ってからそこに展開するようにした方がよい。

コンパイラの指定

追記 2014/1/30: 以下の書き換えをせずに,gcc_selectを使ってもよい。
$ sudo port select gcc mp-gcc47
/opt/local/binにgcc-mp-4.7のシンボリックリンクとしてgcc,gfortran-mp-4.7のシンボリックとしてgfortranが作られる。
並列実行には,OpenMPが必須なのでg95は諦めてgfortranを使うことにする。MacPortsのgfortranは変な名前なので,build/arch/gfortran-openmpを修正する。
FC=gfortran-mp-4.7
FC77=gfortran-mp-4.7
CC=gcc-mp-4.7

コンパイルの実行

srcでARCHを指定してコンパイル。
$ make ARCH=gfortran-openmp

オプンションを有効にする

追記 2014/1/30: この節はうまくいかない。hdf5-18はgcc-mp-4.7にサポートされていないオプションを与えているために,configureで落ちる。+gcc47の代わりに+gfortranとするとコンパイルできるが,netcdf-fortranの依存関係検査と整合しない。
HDF5とnetcdfはオプションだが,リンクしておく。hdf5-18はFortranインターフェースがコンパイルされていなかったので,既存のものをdeactivateし,+fortranつきでインストール。netcdf-fortranがインストールされていなかったので,+gcc47をつけてインストール。
$ sudo port -df deactivate hdf5-18
$ sudo port -d install hdf5-18 +fortran +gcc47 +szip
Makefile.localを修正する。
NETCDF_PREFIX  = /opt/local
FFLAGS_NETCDF  = -I$(NETCDF_PREFIX)/include
# LDFLAGS_NETCDF = -L$(NETCDF_PREFIX)/lib -lnetcdf

# For NetCDF builds with a separate Fortran library:
LDFLAGS_NETCDF = -L$(NETCDF_PREFIX)/lib -lnetcdff -lnetcdf

HDF5_PREFIX  = /opt/local
FFLAGS_HDF5  = -D_RTTOV_HDF -I$(HDF5_PREFIX)/include
LDFLAGS_HDF5 = -L$(HDF5_PREFIX)/lib -lhdf5hl_fortran -lhdf5_hl -lhdf5_fortran -lhdf5
コンパイルやり直し。
$ make clean && make ARCH=gfortran-openmp all

テスト

スタックサイズを調整してcoreについてテストを実行。
$ export OMP_STACKSIZE=1000M
$ ./test_core.sh ARCH=gfortran-openmp > test.log 2>&1 &
係数のファイルがないものはエラーになったが,正常に動いているようだ。

このブログを検索

ブログ アーカイブ

Translate

QooQ