Deepconv/arare 開発状況

Download Report

Transcript Deepconv/arare 開発状況

Deepconv/arare 開発状況
杉山耕一朗、北守太一、小高正嗣、
中島健介、林祥介
Deepconv/arare とは
•
Deepconv の時期バージョン
– コードネーム arare
– Deepconv の F90 化
•
雲対流モデル
– 火星、木星に適用可能
– 平衡熱力学モデル oboro との結合
Deepconv/arare
• 開発状況は以下に公開
– http://www.gfddennou.org/arch/deepconv/arare/
• バージョン
– arare0: 音波の式のみを解く
– arare1: 温位の式も解く。粘性項、微物理なし
• 対応コンパイラ
– Fujitsu Fortran のみ
設計の基本方針
• コードの可読性を重視
– SPMODEL の書法を模倣
– GMS を使わずにどれだけ可読性の高いモデル
を構築できるかチャレンジ
• 共通ライブラリを利用
– I/O: gt4f90io
– 結果の解析: gave, gtool4, rgtview
モデルの枠組み (1)
• 方程式系
– 準圧縮系の非静力学方程式系
モデルの枠組み (2)
• 離散化方法
– 時間: 時間分割法
• 音波に関する項は短い時間ステップ、音波以外の項
は長い時間ステップで積分
• 音波に関する項は HE-VI 法で離散化。u は前進差分、
pi, w は後退差分
• 音波以外の項は leap-frog 法
– 空間: 2次精度中心差分
– 格子点: arakawa-c グリッド
可読性のよいコードを目指して
• 変数名(1)
– (格子点情報)_(変数)_(時間情報)
– 格子点情報を表す接頭詞をつける
• スカラー格子点: ss_Exner_A
• X方向フラックス格子点: fs_VelX_A
• Z方向フラックス格子点:sf_VelZ_A
可読性のよいコードを目指して
• 変数名 (2)
– 時間情報を表す接尾詞をつける
• 次のステップ: ss_Exner_A
• 現在の時刻: ss_Exner_B
• 前の時刻:
ss_Exner_C
可読性のよいコードをめざして
• 平均・微分演算
– (出力格子点)_(演算子)_(入力格子点)
• X方向の平均: ss_avr_fs(fs_VelX_A)
• X微分: ss_dx_fs(fs_VelX_A)
微分演算の入力格子点と変数名の格子点情報
を揃えれば OK.
ソースコードの例 (1)
• 速度 u の計算
fs_VelX_A = fs_VelX_B &
& - fs_avr_ss( ss_CpBasicZ * ss_ThetaBasicZ ) * DelTShort &
& * ( fs_dx_ss( ss_Exner_B ) - fs_dx_ss( alpha * ss_Div_B ) ) &
& + fs_Fx_B * DelTShort
ソースコードの例 (2)
• 温位の計算
ss_Theta_A = ss_Theta_C &
& + 2.0d0 * DelTLong * &
& ( - ss_avr_fs( fs_VelX_B ) * ss_dx_ss( ss_Theta_B ) &
& - ss_avr_sf( sf_VelZ_B ) &
&
* ss_dz_ss( ss_Theta_B + ss_ThetaBasicZ_B ) &
& + ss_DiffuseTheta_B )
計算例
• 音波計算(エクスナー関数)
プログラムの構成
• 図を入れる
– arare: 計算エンジン
– gacchan: 初期値作成プログラム
Deepconv/arare 書式
• 数式のように数値コードが書ける
– 書法が決まっている
• バグを発見しやすい
– 格子点情報は演算子と配列の変数名で解決
• 微分演算と平均演算をライブラリ化
• 1つの演算に対して入力格子点と出力格子点の異な
る複数の演算ルーチンを用意
• 変数名と演算子の格子点情報が合致しているかの
チェック機能はない
懸案事項
• 変数名の与え方のルール
• メッセージダンプも gt4f90io を使う
• 中野モデルの詳細の確認
– 粘性項の与え方
– 温位の式の数値積分
今後の予定
• 合同大会までには「雲」を入れる
2005/01: 粘性項の導入
2005/02: oboro との結合
とりあえず平衡を仮定
2005/03-04: さまざまな化学種の凝結を考慮