2004/12/27 小高正嗣
12/27(月) 14:00 〜 18:00 ミーティング1 18:00 〜 20:00 食事 20:00 〜 ??:?? ミーティング2 12/28(火) 9:00 〜 12:00 ミーティング3 12:00 〜 13:XX 食事 13:XX 〜 16:00 ミーティング4 16:00 〜 16:30 片付け 16:30 解散,
どのモジュールのサブルーチン, 関数を call しているかわかるように,
use module: only subroutine_name
とする.
SPMODEL で予約されている接頭詞
s sin 展開スペクトルデータ c cos 展開スペクトルデータ e フーリエ展開スペクトルデータ w 球面調和関数展開スペクトルデータ t チェビシェフ多項式展開スペクトルデータ x 格子点データ(x / lon 座標) y 格子点データ(y / lat 座標) z 格子点データ(z / r 座標) a 格子点データ(任意)
予約されていないが使わない接頭詞
b Bessel 関数展開スペクトルデータに使いそう h エルミート多項式展開スペクトルデータに使いそう
現行
fs: x 方向フラックス格子点 sf: z 方向フラックス格子点 ss: スカラー格子点 Z -|--sf--|- 半整数レベル | | fs ss fs 整数レベル | | -|--sf--|-X vz: x 方向フラックス格子点 xv: z 方向フラックス格子点 xz: スカラー格子点
案 1)
Z
-|--xv--|- 半整数レベル | | vz xz vz 整数レベル | | -|--xv--|-X 1 次元配列の場合, 次元のないことを示す接頭詞 "o" を用いる vo_Temp x 方向 1 次元配列(半整数レベル) ov_Temp z 方向 1 次元配列(半整数レベル) oz_Temp z 方向 1 次元配列(整数レベル) voo_Temp x 方向 1 次元配列(半整数レベル) oov_Temp z 方向 1 次元配列(半整数レベル) ooz_Temp z 方向 1 次元配列(整数レベル)
案 2)
pz: x 方向フラックス格子点 xr: z 方向フラックス格子点 xz: スカラー格子点 Z -|--xr--|- 半整数レベル | | pz xz pz 整数レベル | | -|--xr--|-X 1 次元配列の場合 p_Temp x 方向 1 次元配列(半整数レベル) r_Temp z 方向 1 次元配列(半整数レベル) z_Temp z 方向 1 次元配列(整数レベル)
スペクトルモデルの場合
xys_Temp 整数レベル (格子点データ) xyv_Temp 半整数レベル (格子点データ ws_Temp 整数レベル (スペクトルデータ) wv_Temp 半整数レベル (スペクトルデータ)
格子モデルの場合
xys_Temp 整数レベル xyv_Temp 半整数レベル
一文字変数はやめる
ex.) u, v, T, ...
頭文字は大文字
ex.) Temp, Vel, ...
ベクトル量にはその方向座標を示す添字を付ける
ex.) VelX, VelZ, TauX, TauZ, ...
時間方向の添字
時間添字: 未来には a, 過去は b だけを使う
aa: 時刻 t+2Δt (After のさらに After) a : 時刻 t+ Δt (After) n : 時刻 t (Now b : 時刻 t- Δt (Before) bb: 時刻 t-2Δt (Before のさらに Before)
time split 等を用いた場合のように複数の時間レベルが現れる
場合には, 区別するための任意の文字を追加する. as: 時刻 t+Δτ (短い時間刻で計算した After) al: 時刻 t+Δt (長い時間刻で計算した After)
座標など
座標 X, Lon
Y, Lat Z, Rad, Press, Sigma
交互格子点上の座標 x_X, p_X
y_Y, q_Y z_Z, r_Z
最大最小 *Max, *Min 座標格子間隔 DelX, DelY, DelZ
DelLon, DelLat, DelRad
暦 Date (?)
Date%Year, Date%Month, Date%Day, Date%Hour, Date%Min, Date%Sec
時間 Time 時間格子間隔 DelTime 長い時間ステップ DelTimeLong 短い時間ステップ DelTimeShort 時間ステップ数 Nstep (?) 長い時間ステップ NstepLong 短い時間ステップ NstepShort
予報変数
速度 VelX, VelLon
VelY, VelLat VelZ, VelRad, VelPress, VelSigma
流線関数 Stream 速度ポテンシャル VelPot 渦度 Vor,
VorX, VorY, VorZ,
ポテンシャル渦度 PotVor 水平発散 HDiv, HorDiv (?) 温度 Temp 仮温度 VirTemp 温位 PotTemp, 仮温位 VirPotTemp 相当温位 EquivPotTemp (?) 飽和相当温位 SatEquivPotTemp (?) 密度 Dens 圧力 Press エクスナー関数 Exner ジオポテンシャル GeoPot 高度 Height トレーサ(4 次元配列にし, 4 番目の次元でトレーサの種類を区別する) 分率(0〜1) QTracer (記号 q を用いるから) 混合比(0〜∞) RTracer (記号 r を用いるから) 降水量 Rain, Precip
平均成分
該当する変数名に Avr(平均をとる座標変数) を接尾語につける. 例: 速度 VelXAvrX X 方向平均
VelYAvrY Y 方向平均
VelZAvrZ Z 方向平均
VelXAvrXY 水平平均
基本場
該当する変数名に Basic(独立変数となる座標) を接尾語につける. 例: 速度 TempBasicZ
RhoBasicZ
PressBasicZ
VelXBasicZ
パラメータ
円周率 Pi ステファン-ボルツマン定数 ?? 気体定数 GasConst 重力加速度 Grav 定圧比熱 Cp 定積比熱 Cv 非熱比 Gamma 自転角速度 Omega 気体分子量 Gaswt, MolWt 惑星名 Planet
計算パラメータ
比例係数などのパラメータをどう表現するか? 時間差分に陰解法を用いた場合の重み 音波減衰項の係数 Asselin 時間フィルターの係数 乱流エネルギーから拡散係数を求める際の比例係数 .... 案1) 一様に Coef_( ) とし ( ) 内にパラメータの意味を表す. Clank-Nicolson 法を用いた場合の重み CoefCK 音波減衰項の係数 CoefSW 時間フィルターの係数 CoefTF 乱流拡散係数を求める際の比例係数 CoefTKE 案2) 数理モデル方程式で用いられている記号をそのまま用いる. Clank-Nicolson 法を用いた場合の重み Beta 音波減衰項の係数 Alpha 乱流拡散係数を求める際の比例係数 C 問題は, 同じ記号が異なる意味を持つものとして使われることがある. 案3) ちゃんと意味を考えて名前を付ける Clank-Nicolson 法を用いた場合の重み WtPrev 音波減衰項の係数 DampSound 時間フィルターの係数 CAsselin 乱流拡散係数を求める際の比例係数 CTKE
境界条件
変数に境界条件を設定する計算をサブルーチンで行う場合, 引数には 代入する変数 その変数に指定する境界条件の種類 を与える必要がある. 境界条件の種類を文字変数 Bc (Boundary Condition の略) を用いて指 定する. 考慮する境界条件は 周期境界 C (Cyclic) 摩擦なし F (Free slip) 滑べりなし R (Rigid rid) のいずれか. これを Namelist で指定する. 文字変数 Bc に代入する値は 周期境界 C (Cyclic) 境界で対称 S (Symmetric) 摩擦なし条件に対応 境界で反対称 A (Antisymmetric) 滑べりなし条件に対応 のいずれか. Namelist で指定された境界条件の種類から, 自動的に判定 する. ex.1) 境界条件 "CR" の場合,
ss_Bc = 'CS' fs_Bc = 'CA' sf_Bc = 'CA'
ex.2) 境界条件 "CF" の場合,
ss_Bc = 'CS' fs_Bc = 'CS' sf_Bc = 'CA'
ex.3) 境界条件 "CC" の場合,
ss_Bc = 'CC' fs_Bc = 'CC' sf_Bc = 'CC'
のりしろの部分の大きさ = 物理領域内に影響が出ないことを保障する
基本演算の繰り返し回数