衛星データの放射輝度から気温の鉛直分布を推定するのは,リトリーバルの基本。

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はどうしてもシンボリックリンクではうまくいかなかった。