鉛直方向には有限差分.
Lorenz grid (Arakawa and Suarez, 1983) : AGCM5.3 CP grid (Arakawa and Moorthi, 1988)
を切替えられるようにする
時間積分スキームは基本的に 3-level スキーム
leapfrog か Adams Bashforth semi-implicit をする か しない 計算モード落すのは time filter か 2-level スキームを混ぜるか
の組合せを切替えられるようにする. (ちなみに AGCM5.3 は leapfrog + semi implicite + time filter)
物理過程は
AGCM5.3 のルーチン AFES のルーチン …
を切替えられるようにする.
プログラムの構造化 変数管理モジュール, 時間管理ルーチン, 出力ルーチン, 分解能設定部分, 時間積分部分などをサブルーチン・モジュール にしておく.
プログラムの大まかな構造(箱の区切り)は最初に作っておく.
変数名を決める. コードにおける変数名(特に渦度と発散)は最初に決めなくて はいけない.
石渡案は, AGCM5.3 ドキュメントで使われている変数に あわす.
水平分解能を変更する方法の決定
分解能を変える仕掛けは 3 次元化してからの方が良いのかもしれない. 1 層でやった方が…と思ったのは, 動的に配列サイズを allocate する 場合(表現正しいのか?), コーディングのやり方に制約が出ないかな? というのをちょっと心配している.
スキームパラメータ : 各スキームで必要となるもの, 吸収係数とか.
それぞれ個別のパラメータがどの種類に入るかは結構グレーな ような気がするので, 迷ったらその都度決めることになるかも.
ただし, 入力方法と出力方法は考える余地があると思います. GCM5.3 はパラメータは全て NAMELIST 入出力でデータとは別ファイルでした が, dcpam では netCDF の global attribute にするという手もある. その場合, パラメータファイルを別にするか, 初期値データ・出力デー タに一緒に書いてしまうかという選択肢がある.