Pendergrass and Willoughby 2009 SEQ モデル
本プログラムは, Pendergrass and Willoughby 2009 (MWR) における 2 次元軸対称ソーヤーエリアッセンモデル (SEQ) である.
本モデルの定式化などの詳細は原論文を参照 (あとでマニュアル化します). 接線風 (台風) の渦の分布と環境場の温度構造, 壁雲を想定した非断熱加熱の分布を与えると, 静力学, 傾度風バランスを満たした 2 次循環 (インフロー + 上昇流) の分布を計算する (いわゆる強制・応答問題).
ファイル構成は以下のようになっている.
sound_make.f90 -> 環境場の鉛直 1 次元構造データをテキスト形式で作成する. sounding.dat という名称のファイルが作成される. initial_make.f90 -> 接線風速の空間分布を生成し, sounding.dat の温度データから 静力学, 傾度風バランスするように温度の空間分布を計算する. また, 非断熱加熱の分布も作成し, それらを initial.nc という NetCDF 形式のファイルにまとめる. SEQ.f90 -> ソルバプログラム. initial.nc データから, この構造, 強制に応答する 2 次循環構造を 計算し, result_initial.nc という NetCDF 形式のデータにまとめる.
プログラムの実行
依存プログラム
- 必須
STPK, NetCDF, gtool5
- 描画用のオプション
DCLAF90, DCL
NetCDF 形式で出力されるので, それを描画するツールがあれば, 何でも OK.
Makefile の編集
- Makefile を自身の環境に合わせて以下の項目を編集して下さい.
FC = ifort # STPK をコンパイルした際のコンパイラ LIBNCDIR= /home/satoki/usr/netcdf-4.0/lib # NetCDF の lib のインストール場所 LIBGT5D = /home/satoki/usr/gtool5/lib # gtool5 (lib) のインストール場所 LIBGT5IN= /home/satoki/usr/gtool5/include # gtool5 (include) のインストール場所
Mkinclude の編集
- 本ディレクトリの 2 つ上にある Mkinclude を編集します.
ISTDIR = ${HOME}/usr/local # STPK のインストール先
プログラムのコンパイル
$ make
でプリプロセッサ, メインソルバがコンパイルされ,
sound_make, initial_make, SEQ
が生成される.
また, オプションとして, 描画用プログラム (DCL, DCLAF90 必須) をコンパイルする場合は,
$ make draw
で draw プログラムが作成される.
プログラムの実行
プリプロセッサの実行
sound_make, initial_make
は初期データ作成のために必要なだけであり, 別途独自にデータを用意する場合はこれを実行する必要はない.
例えば, サウンディングだけ別途用意し, initial_make から始めることも可能である. すでに, 2 次元のデータが用意されている場合は, 直接 SEQ の実行に移ってもよい.
ここでは, 何もない状態から始めることを想定している.
namelist の編集
同梱ファイルに namelist というファイルが入っていると思う. これは, 上の 3 プログラムで共通に用いられるネームリストファイルである.
nr = 751 # 水平格子数 nz = 21 # 鉛直格子数 dr = 2000.0 # 水平格子解像度 [m] dz = 1000.0 # 鉛直格子解像度 [m] bc = '1112' # 境界条件の sign (Poisson_Gausei の説明ページ参照) fname = 'initial.nc' # 2 次元初期値データのファイル名 sound_name = 'sounding.dat' # 1 次元サウンディングデータのファイル名
デフォルトでは, Pendergrass and Willoughby (2009) の値が設定されている.
実際の実行
以下の順番で実行する.
$ ./sound_make < namelist $ ./initial_make < namelist $ ./SEQ < namelist
以上で結果が result_initial.nc に作成されている.
データの詳細は NetCDF のヘッダー情報参照.
描画オプション
オプションとして同梱されている描画プログラム draw の実行についても記述しておく.
namelist の編集
draw_?? という名称のファイルは draw 用のネームリストファイルである.
nr = 751 # 水平格子数 nz = 21 # 鉛直格子数 rmin = 0.0 # 描画領域左端 [m] rmax = 150.0e3 # 描画領域右端 [m] zmin = 0.0 # 描画領域下端 [m] zmax = 20.0e3 # 描画領域上端 [m] fname = 'result_initial.nc' # 読み出しデータファイル名 value_name1 = 'u' # コンターで表記する変数 value_name2 = 'w' # カラーシェードで表記する変数 cmin = -4.0 # コンターの最小値 cmax = 4.0 # コンターの最大値 smin = -2.0 # シェードの最小値 smax = 2.0 # シェードの最大値
これらを設定し,
$ ./draw < draw_??
を実行すると, 例えば, 以下のようなグラフが描画される.
- 実行例
- コンターが動径風, シェードが鉛直風
- 原論文
- 上 : 質量流線関数, 中 : 鉛直風, 下 : 動径風
- 初期渦の形状による感度実験
- 乱流混合の効果による感度実験
- 理想的な渦 : 混合なし, RE87 の乱流混合あり
- コンポジット渦 : 混合なし, RE87 の乱流混合あり
- RE87 は Rotunno and Emanuel (1987) の非静力学モデルで実装されている Smagolinsky の乱流パラメタリゼーションのこと.