冷気外出流シミュレーションモデル (WK04)

本プログラムは, 水平鉛直 2 次元流における冷気外出流をシミュレーションする数値モデルである(参考文献 : Weisman and Klemp 2004).

本モデルの定式化などの詳細はマニュアル PDFを参照. 流線関数ー渦度法を用いて渦度・浮力の時間発展と流線関数を計算する.

ファイル構成は以下のようになっている.

solver.f90 -> ソルバプログラム.
           namelist.nml の finame で設定された初期データを元に, 渦度の時間発展を計算する.

プログラムの実行

依存プログラム

  • 必須
STPK, NetCDF, gtool5
  • 描画用のオプション
DCLAF90, DCL

NetCDF 形式で出力されるので, それを描画するツールがあれば, 何でも OK.

Mkinclude の編集

  • 親ディレクトリに存在する Mkinclude を自身の環境に合わせて適宜編集して下さい.

プログラムのコンパイル

$ make

でメインソルバがコンパイルされ,

WK04

が生成される.

また, オプションとして, 描画用プログラム (DCL, DCLAF90 必須) をコンパイルする場合は,

$ make draw

で draw_anim プログラムが作成される.

プログラムの実行

namelist の編集

同梱ファイルに namelist.nml というファイルが入っている. これは, ソルバプログラムで用いられるネームリストファイルである.

nx = 960    ! X-coordinate grid number
ny = 80    ! Y-coordinate grid number
nt = 10000 ! calculating time step
xmin = -12.0  ! X-coordinate original point
ymin = 0.0  ! Y-coordinate original point
dx = 0.025    ! X-coordinate grid interval [m]
dy = 0.025    ! Y-coordinate grid interval [m]
dt = 0.001  ! time interval [s]
dmpstp = 100  ! dumping time step
            ! dumping time interval is equal to "dmpstp * dt"
finame = "" ! initial data file name.
            ! if there is no, automatically, 
            ! being made by the program.
foname = "result.nc"      ! result data
inner_file = 'colum.txt'  ! inner boundary file
time_flag = '1'  ! time scheme :
                 ! [1] = 4th order's Runge-Kutta
                 ! [2] = Leap Frog
                 ! [3] = 1th Explicit Euler
undef = -999.0   ! undefined value
init_type = 'psi'  ! the tpe of initial value.
                   ! 'psi' = strem line, 'omg' = vorticity.
ubar = 0.5         ! mean flow [m/s]
eps = 1.0e-3       ! convergent condition for poisson solver
nu = 0.002         ! diffusion coefficient

実際の実行

以下の順番で実行する.

$ export OMP_NUM_THREADS=[number]  # ここは openMP 並列機能を用いる場合のみ.
$ ./WK04 < namelist.nml

以上で結果が foname に指定されたファイルに作成されている.

データの詳細は NetCDF のヘッダー情報参照.

描画オプション

オプションとして同梱されている描画プログラム draw_anim の実行についても記述しておく.

namelist の編集

draw.nml という名称のファイルは draw_anim 用のネームリストファイルである.

fig_type = 1 ! 固定値
nx = 400     ! x 方向の格子点数
ny = 100     ! x 方向の格子点数
nt = 101     ! ダンプされている時間ステップ数
dt = 1.0     ! ダンプされている時間間隔 [s]
xmin = 0.0   ! 描画する x 方向の左端
xmax = 40.0  ! 描画する x 方向の右端
ymin = 0.0   ! 描画する y 方向の下端
ymax = 10.0  ! 描画する y 方向の上端
fname = 'result.nc'  ! 出力ファイル名
txtname = '' ! テキストファイル [使用しない]
cont_val = 'psi'     ! 等値線で描く変数
shade_val = 'omega'  ! カラーで描く変数
vx_val = ''  ! x 方向の矢印ベクトル成分
vy_val = ''  ! y 方向の矢印ベクトル成分
cmin = -5.0  ! 等値線の下限値
cmax = 5.0   ! 等値線の上限値
smin = -1.0  ! カラーの下限値
smax = 1.0   ! カラーの上限値
x_axis = 'x' ! x 軸の名前
y_axis = 'y' ! y 軸の名前
sfact = 1.0  ! カラーのスケールファクター
cfact = 1.0  ! 等値線のスケールファクター
vxfact = 1.0 ! x 方向の矢印のスケールファクター
vyfact = 1.0 ! x 方向の矢印のスケールファクター
undef = -999.0  ! 未定義値
vx = 0.2, 0.8   ! x 方向の viewport 左右端
vy = 0.4, 0.6   ! y 方向の viewport 上下端
clev = 10, 80   ! 等値線の本数とカラーのレベル数
cmap = 4        ! dcl のカラーマップナンバー

これらを設定し,

$ ./draw_anim < draw.nml

を実行すると, 例えば, 以下のようなグラフが描画される.

  • 実行例
    • コンターが水平渦度, シェードが浮力.
    • 上記のネームリストの設定で行った計算.


戻る