2011年6月14日火曜日

JMA-NHMへの道2010: 実データを用いた実験


実データを用いた現実事例の実験のやり方

これで一通りの実験ができたことになりますので、私の解説はここまでです。
イメージは掴めたと思いますので、
個々のスクリプトが何を実行しているのかを確かめていって下さい。
  
**********************************************************************

以下、実データ実験の解説です。

マニュアルの「1.4.1 気象庁ルーチンGPV(GSM)からのダウンスケーリング」を
参考にして下さい。20071224日を初期値とする実験の例です。

以下では、Nhmパッケージを置いたディレクトリを$NHMDIRとします。
~/で代用(自分の場合)
この変数は各自の環境に合わせて適宜置き換えて下さい。

気象庁ルーチンGPVGSM)からのダウンスケーリング

データのダウンロードと変換
% cd $NHMDIR/Tools/grib2nus
% echo "2007 12 24 00 00" > TIMECARD
% sh get_jmbsc.sh   
  (初期値・境界値に必要な時刻のGPVデータのダウンロード)
% sh jmbsc2nus.sh   
  (NuSDaSという気象庁のデータ形式に変換)

モデルの実行
% cd $NHMDIR/Ss
% cp -r RF20km RF20km_test
% cd RF20km_test

parm.shをマニュアルにしたがって編集します。
  DIRNAME=RF20km_test
  NHMDIR=~/jmanhm/Nhm   <--- 自分のNhmがあるディレクトリ
JGWKDIR=/data1/yanase/RF20km_test
    (データが大きいのでp570a/data1領域を使う;ディレクトリは勝手に作成される)

NHMDIR=~/jmanhm/Nhm   <--- 自分のNhmがあるディレクトリ
NHMDIR=~/Nhm   <--- 自分のNhmがあるディレクトリ
とする

NHMDIR=/home/dmmg/yoshi/Nhm  #sxet your ${NHM}directory in full-path

% echo "2007 12 24 00 00" > TIMECARD
% sh setup.sh
% sh mkcnst.sh
% sh mksfccnst.sh
% sh pre_jmbsc.sh  ←JRAのときはpre_jra.sh

% cp /home/dmmg/kyoyo/JMANHM/sample/RF20km/run.jcf .
fcst.shというメインのジョブを海洋研並列サーバで走らせるためのスクリプトです。
% llsubmit run.jcf   (3時間ほどかかります)
ジョブの状態を確認するには、
% llq

実際の作業は上記のJGWKDIRで指定したディレクトリで行われています。
途中経過は log.fcst_nfx.* で見ることができます。
計算結果もこのディレクトリに置かれます。

計算終了後の作業

(マニュアルにある % sh end.sh は行わない)

描画 

ここではパッケージに含まれている nus2grads を用いたやり方を紹介します。
nus2gradsの方は下記の点が未対応のようです。
・スタッガード格子の処理をしていないので、u,vの値が半格子分ずれる。
・各時間ステップごとにしかGrADSファイルを作れない。
・データの並びが北→南の順になっている。

以前にお伝えした、AORIで独自に作成したnhm2gradsのツールでも出来ますので、
今後は使い易い方を使って行って下さい。

作業ディレクトリJGWKDIRに移動して下さい。

Yoshiのディレクトリから
cd..
cd..
cd..
すると、data1が存在するので、
cd data1
cd yoshi
で実行


% cd /data1/yanase/RF20km_test

nus2gradsというコマンドで、GrADSファイルに変換
% $NHMDIR/Tools/nus2grads/nus2grads fcst_p.nus/PPSTD1/200712240600
% ~Nhm/NHM1.1/Nhm/Tools/nus2grads/nus2grads fcst_p.nus/PPSTD1/200712240600

(サンプルでは1時間ごとに出力されているので、見たい時刻のファイルを指定)
_NHMLMPPFCSVSTD1_200712240600.ctl(.grd) というGrADSファイルが作成されます。

この際、GrADSでの地図上の位置がおかしいですので、
手作業でGrADSctlファイルを修正して下さい。
地図投影法に関するpdefという行を加え、xdef,ydefを修正します。
pdef 115 103 lcc 36 140 57.5 51.5 30 60 140 20000 -20000
xdef  150 linear 125 0.2
ydef  110 linear 25 0.2
pdefの数値の詳細は付録1に記します。

GrADSで作成されたctlファイルを開き、気圧や風の場を見てみましょう。
鉛直格子はP座標系に変換されています。
日本の東側にある低気圧による冬の寒気吹き出しの様子が見られれば成功です。

注意事項

GrADSファイルなど最低限必要なデータのみ
/data1 から移動して下さい。(火曜3時に強制消去されますので)
pdef 115 103 lcc 36 140 57.5 51.5 30 60 140 20000 -20000
付録1: GrADSpdef の設定
  x格子数 115   (parm.shNXと同じ値)
  y格子数 103   (parm.shNY)
  lcc     ランベルト正角円錐図法を使用  (parm.shNPROJ='LMN'に対応)
  reference 緯度 36   (parm.sh FLATC)
  reference 経度 140  (parm.sh FLONC)
  reference x格子  57.5  (x格子数の半分;中心)
  reference y格子  51.5  (y格子数の半分;中心)
  standard 緯度1 30   (NHMでは固定?)
  standard 緯度2 60   (NHMでは固定?)
  standard 経度 140   (parm.shSLON)
  x格子間隔(m)  2000   (parm.shDX)
  y格子間隔(m) -2000  
      (parm.shDY; nus2gradsではデータが北から入るためマイナスをつける)

実験に応じて、値は適宜修正して下さい。
xdef, ydef GrADSが描画する時に使用する範囲、内挿解像度のようです。
計算領域を含み、解像度が概ね合うように指定されていれば良さそうです。

以上の地図投影法の対処法は、GrADSマニュアルとNHMのソースを見ながら、
おそらくこうであろうと私がとりあえず判断したやり方です。
一応うまく動いているように見えるのですが、
各自確認してみて、おかしな点があったら報告して下さい。

0 件のコメント:

コメントを投稿