deepconv/arare コード解説


プログラムの構成

プログラム全体は, 制御を行うメインプログラム (arare.f90) と, 個々の設 定と計算を行う複数のモジュールおよびサブルーチンから構成されている. モ ジュールとサブルーチンは 気象庁標準コーディングルール にしたがい,

のいずれかに分類されるように作成している.

定数参照型モジュール

複数のサブルーチンで用いられる定数の値を決めるモジュール. 定数 の値はそのモジュール内で確定し, モジュールを呼び出す親プログラ ム内ではその定数の値は変更されない.

親プログラム側では use 文でモジュールを呼び出すだけで定数の値が 確定する.

以下のモジュールが該当する.

変数参照型モジュール

複数のサブルーチンで用いられる変数の型, 変数が配列であった場合 の大きさ, 変数の値を決めるモジュール. 定数の値はそのモジュール 内で確定し, モジュールを呼び出す親プログラム内ではその定数の値 は変更されない.

親プログラム側では use 文でモジュールを呼び出すだけではなく, モ ジュール内に含まれる変数の値を確定するサブルーチンを呼び出す必 要がある.

以下のモジュールが該当する.

パッケージ型モジュール

同じような機能をもつサブルーチンをまとめたモジュール. このモジュー ル内で値を代入した変数は他のモジュールまたは外部サブルーチン内 でその値を変更されることがある.

以下のモジュールが該当する.

外部サブルーチン

上記のモジュールには含まれないもの. 以下のサブルーチンが該当する.

プログラムの書法

プログラムの書法は基本的には 気象庁標準コーディングルール に準拠している. これに加え, 変数と変数配列に作用させる微分や平均操作を行う配列関数を, SPMODEL の書法に準じて記述することにより, ソースコードの可読性の向上をめざしている.

変数は

[格子点位置情報]_[変数名]_[時間方向添字]

と記述し, 配列関数は

[出力変数の格子点位置情報]_[演算名]_[入力変数の格子点位置情報]

と記述する. 変数名の具体例は変数名リストを参照.

格子点位置情報

その変数が配置されている格子点の位置を表す. x-z の 2 次元交互格子 (Arakawa C グリッド)の場合, 以下の接頭詞を付ける.

3 次元の場合は

とする.

変数名

基本的なルールは以下の通りである.

時間方向添字

時間レベルを表す. 以下の添字を用いる.

A: 時刻 t+Δt  (1 ステップ計算後:After )
B: 時刻 t      (現在の時刻      :A の次なので B)
C: 時刻 t-Δt  (1 ステップ計算前:      )
D: 時刻 t-2Δt (2 ステップ計算前:      )
E: ...

変数名リスト

座標

座標        X,  Lon
            Y,  Lat
            Z,  Rad, Press, Sigma

座標格子間隔             DelX, DelY, DelZ

暦(構造体にする?)        Date
                         Date%Year, Date%Month, Date%Day, 
                         Date%Hour, Date%Min,   Date%Sec
時間                     Time

時間格子間隔(長い)       DelTLong
            (短い)       DelTShort 

予報変数

速度        VelX, VelLon
            VelY, VelLat
            VelZ, VelRad, VelPress, VelSigma 
流線関数                   Psi
速度ポテンシャル           Chi
渦度                       Vortx, RotVx
                           Vorty, RotVy
                           Vortz, RotVz, Zeta
水平発散                   Div,   DivVxVy

温度                       Temp 
仮温度                     Vtemp
温位                       Theta, Ptemp
仮温位                     Vtheta, Vptemp  
密度                       Dens, Rho
圧力                       Press
エクスナー関数             Exner
ジオポテンシャル           Gph,  Phi


トレーサー混合比	Q****
 * 水蒸気		Qvap
 * 雨水		Qrai
 * 雲水		Qclw
 * ダスト		Qdust

降水量		Rain

パラメータ

円周率		Pi
ステファン-ボルツマン定数	??

重力加速度                  Grav
気体定数                    GasR
定圧比熱                    Cp
定積比熱                    Cv
非熱比                      Gamma
自転角速度                  Omega

気体分子量                  GasWt

メインプログラムの流れ

ここではメインプログラム arare.f90 の処理のおおまかな流れを記す.

コードリファレンス

src/setup

src/util

src/io

src/dynamics