meto_1dvarのコンパイル

2014年1月30日

リトリーバル 研究

t f B! P L
衛星データの放射輝度から気温の鉛直分布を推定するのは,リトリーバルの基本。
Met Office 1D-Varは,英国気象局の1次元変分法によりリトリーバルを行うコード。 request formから依頼するとメールでソースを送ってくれる。

コンパイル

meto_1dvar_3_5.tar.gzを展開。RTTOVのように中身をぶちまけることはしない。 srcに移動し,makefileを編集。RTM_INC, RTM_MOD, RTM_LIBを設定。RTM_DIRという変数を作って,RTTOVのあるディレクトリを指定した。
RTM_DIR = ${HOME}/src/rttov/rttov111
RTM_INC = ${RTM_DIR}/include
RTM_MOD = ${RTM_DIR}/mod 
RTM_LIB = ${RTM_DIR}/lib
コンパイラとコンパイル,リンカフラッグの指定。CFLAGSと書かれているが,Fortranコンパイラに渡されるフラッグ。MacPortsの場合,gcc_selectを使って,例えば
sudo port select gcc mp-gcc47
としてあり,Fortranコンパイラへのシンボリックリンク/opt/local/bin/gfortranが作成されているものとする。
FC = gfortran
CFLAGS = -cpp -I$(RTM_MOD) -I$(RTM_INC) -fopenmp
LFLAGS = -L$(RTM_LIB) -l$(RTMODEL)_coef_io -l$(RTMODEL)_main -fopenmp
RTTOVは(射出率データを利用するための)netcdf, HDF5とのリンクができていない状態なので,リンカフラッグはComment out the above …とある説明の上をその通りコメントし,下のLFLAGSのうちHDFを使わない(if RTTOV hasn’t been compiled with HDF) LFLAGSを生かす。ただしOpenMPのライブラリとリンクするために,-fopenmpが必要。
NCDF_LIB, HDF_LIBは使わないが,一応コメントアウトした。

テスト

IASIの係数ファイルを入手してIASI_COEFFS_DIRに解凍。
Sample_Scripts/test.shを参考にテスト生成シェルスクリプトを作成。
INSTRUMENT=IASI

LEVELS=51

BGDIR=../Sample_Background
NLDIR=../Sample_Namelists
OBDIR=../Sample_ObsFiles
COEFDIR=../${INSTRUMENT}_COEFFS_DIR
RUNDIR=../test
BINDIR=../src

if [ -d ${RUNDIR} ]; then
  rm -rf ${RUNDIR}
fi
mkdir ${RUNDIR}

cd ${RUNDIR}
mkdir ${INSTRUMENT}_COEFFS_DIR

ln -s ${BGDIR}/BACKGROUND_MidLatWin_51L.dat BACKGROUND.dat 
ln -s ${NLDIR}/Retrieval_${INSTRUMENT}_51L.NL Retrieval.NL
cp ../${INSTRUMENT}_COEFFS_DIR/Bmatrix_51L ${INSTRUMENT}_COEFFS_DIR/Bmatrix
cp ${COEFDIR}/Rmatrix ${INSTRUMENT}_COEFFS_DIR
cp ${COEFDIR}/ChannelChoice.dat ${INSTRUMENT}_COEFFS_DIR
ln -s ${COEFDIR}/rtcoef_metop_2_iasi.dat .
ln -s ${BINDIR}/${INSTRUMENT}_1DVar .
ln -s ${NLDIR}/ControlData_${INSTRUMENT}.NL ControlData.NL
ln -s ${OBDIR}/ObsFile_${INSTRUMENT}.dat ObsFile.dat
このスクリプトを実行するとtestに必要なファイルがコピーされる。 IASI_1DVarを実行。
Bmatrix, ChannelChoice.dat, Rmatrixはどうしてもシンボリックリンクではうまくいかなかった。

このブログを検索

ブログ アーカイブ

Translate

QooQ