WRFのVersion 4では、出力がNetCDF4になっている。このため、Version 3 で使っていた ARWpost(GrADS用のバイナリ出力および.ctlファイルを作成) が使えなくなった.
これに対処する.
WRFの出力(wrfout_d0....nc, NetCDF形式)を直接読むための、.ctlファイルを作成する. 最初に、ncdump -h wrfout_d01...nc > d01_info.log とかして変数情報を出力. u,v,w,スカラー変数はそれぞれ配列の大きさが異なるので、.ctlは分けて作成する. 高度場 (ph, phb)は、wと同じでz方向 stagger. また、標高や緯度経度、LANDMASKなどの2次元データ用.ctl も分けて作成する. これらの量は、以下の.ctl を適宜書き換えれば、grads上で見ることができます (x, y, z 格子数 = im x jm x km の場合). wrfout_hgt_latlon_d01.ctl 緯度経度、標高など二次元データの一部 (im x jm), 1時刻 wrfout_scalar3d_d01.ctl 雲微物理量や温位などのスカラー量(im x jm x km ) wrfout_u_d01.ctl x成分風速 (im+1 x jm x km ) wrfout_v_d01.ctl y成分風速 (im x jm+1 x km ) wrfout_w_gph_d01.ctl z成分風速と、基本高度場、高度場偏差 (im x jm x km+1 ) |
上のctlファイルを利用して、データを通常のbinaryデータに書き出す場合は、gradsを立ち上げて 、以下のgsファイルを実行すればよい (ga-> run fwrite_hgt_latlon_d01.gs, ga-> run fwrite_3d_d01.gs, ) . fwrite_hgt_latlon_d01.gs(xlat, xlong, hgt, landmaskを,以下のファイルに出力. hgt_latlon_d01.dat fwrite_3d_d01.gs上の u,v,wと高度=(ph+phb)/9.81,その他スカラー量を,以下のファイルに出力. u_d01.dat, v_d01.dat, w_gph_d01.dat, scalar3d_d01.dat |
WRFの出力は eta_level上のデータなので、分かりやすい鉛直座標系に変換(線形内挿)する. 上で作ったu_d01.dat, v_d01.dat, w_gph_d01.dat, scalar3d_d01.datを、地表面高度を基準に、 そこからの高度が一定間隔のデータ(AGL)に内挿する. プログラムは AGL_d01.f 実行方法は $ gfortran -fconvert=big-endian AGL_d01.f $ ./a.out 出力(interp_AGL_d01.dat)の表示のためのgradsのctlファイルは interp_AGL_d01.ctl 同様に、海抜高度一定間隔のデータ(MSL)に内挿するプログラムは MSL_d01.f 実行方法は $ gfortran -fconvert=big-endian MSL_d01.f $ ./a.out 出力(interp_MSL_d01.dat)の表示のためのgradsのctlファイルは interp_MSL_d01.ctl 地表面高度より低い点の値は UNDEF(1e30)にしています. |