衛星データの放射輝度から気温の鉛直分布を推定するのは,リトリーバルの基本。
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はどうしてもシンボリックリンクではうまくいかなかった。