本プログラムは, 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.
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) のインストール場所
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 というファイルが入っていると思う. これは, 上の 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 の実行についても記述しておく.
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_??
を実行すると, 例えば, 以下のようなグラフが描画される.