論文内の第4章における季節変化の計算をするためのコード * 必要なライブラリ * spml * gtool * 摩擦係数の値6つそれぞれで以下の計算をする * 計算は2つのパートに分けられる 1. 季節変化計算で使う初期値を作成するための計算 * 加熱中心が赤道上に固定されている場合の計算 * 得られる定常解を2の計算で用いる初期値とする 2. 季節変化計算 * 計算方法 1. 加熱中心が赤道上に固定されている場合の計算 * ソースコード * init.f90 * 摩擦係数の値を設定 * コンパイル $ spmfrt -o init init.f90 * 実行ファイル init ができる * 実行 $ ./init * 出力 * 出力ファイル * init.nc * ソース内の output_file で指定 * 毎回の計算で上書きされることに注意 * 出力変数 * 東西流 (u) * 南北流 (v) * 鉛直流 (w) * 温位 (T) * 流線関数 (msf) 2. 季節変化計算 * ソースコード * test.f90 * 摩擦係数の値を設定 * 初期値に使うファイルの指定 * 変数 initial_file にファイル名を与える * コンパイル $ spmfrt -o test test.f90 * 実行ファイル test ができる * 実行 $ ./test * 出力 * 出力ファイル * test.nc * ソース内の output_file で指定 * 毎回の計算で上書きされることに注意 * 出力変数 * 東西流 (u) * 南北流 (v) * 鉛直流 (w) * 温位 (T) * 流線関数 (msf) * 補足 * ユーザーリソースの制限によってできない場合がある * その場合は実行の前に $ ulimit -s 819200 などとしておき, そのあとに実行する * 別セッションとして実行したい場合は, screen コマンドを使うとよい * ソースコード内のパラメータ説明 * jm: 南北格子点数 * km: 鉛直格子点数 (実際はkm+1の格子点) * nm: 南北切断波数 * lm: 鉛直切断波数 * ri: 内半径 (惑星半径) * ro: 外半径 * xl=ro-ri: モデル上端の高さ * PI: 円周率 * g: 重力加速度 * omega: 自転角速度 * delta_h: 南北温位勾配を決めるパラメータ * delta_v: 鉛直温位勾配を決めるパラメータ * nu_V: 鉛直拡散係数 * mu0max: 加熱中心の最大緯度 * mu0: 加熱中心の(サイン)緯度 * T0: 温位場の初期値 * const: 摩擦係数 * tau: 放射緩和時定数 * dt: 時間刻み幅 (秒) * nt: ステップ数 * total_day=dt*nt: 積分時間 (日) * ndisp: ファイル出力間隔ステップ数 * nprog: 表示間隔ステップ数