2009/03/19 の dcmodel ネットミーティングのメモ書き
参加者
- 神戸
- 森川 靖大, 納多 哲史, 高橋 芳幸, 西澤 誠也, 今関 翔, 北野 太朗
- 北大
- 石渡 正樹
次回日程
- 日時
- 3 月 24 日(木) 14:00 -
- 場所
- 神戸大: 自然科学 3 号館 508
- 北大 : 理学部 8 号館コスモスタジオ
- 九大 : 理学部 3 号館 3605
dcpam 作業報告 (森川)
- Exner 関数の計算の整理・統合
- 物理過程全体の構造の整理
- リスタートのバグの修正
- リスタートの際の時間チェック機構の追加
- 放射過程でのリスタートファイルの入出力機構の追加.
- practice/setup.sh の改善
- make 時に, どこに実行ファイルができるかといった 情報をチュートリアルに記載
- 軸対称モデル化に関する調査
- dcpam では下記の作業が必要であるようだ
- use 文の書き換え
- 力学過程内のスペクトル変数の水平方向の 配列サイズを (nm+1)**2 から nm+1 に変更. (nm は最大波数)
- 経度方向の格子点数を 1 に (これは NAMELIST の編集のみで可能なはず)
- dcpam では下記の作業が必要であるようだ
gtool5
今後の ToDo に関して
- dcmodel プロジェクト TODO リスト における gtool5 の項目を更新してそちらに追記. 以後もこれを更新することとする.
カレンダーに関する議論と ToDo
現状の実装の確認
- dc_date モジュールで 2 種類の構造体を用意
- DC_DATETIME (日時を表す)
- DC_DIFFTIME (時間差を表す)
- DC_DATETIME
- 「秒」, 「日」と, 「暦の種類」と「1 日が何秒か」, ローカルタイムに関する情報を保持.
- 「秒」, 「日」には, 組み込み型の整数ではなく, DC_SCALED_SEC (桁落ちを避けるため, 複数の整数を用いて 10e-6 〜 10e24 までを表現する構造体. dc_date の さらに下請として, dc_scaled_sec モジュールで用意されて いる) を用いている.
- DC_DIFFTIME
- 「秒」, 「日」, 「月」と, 「1 日が何秒か」という情報を保持
- 「秒」, 「日」, 「月」には, 組み込み型の整数ではなく, DC_SCALED_SEC を用いている.
議論
- DC_DATETIME, DC_DIFFTIME ともに, 「日」や「月」に関する
情報を持っているのは冗長. (「秒」だけで良い).
- 変換の際の繰り上がり計算が面倒なために「日」や「月」を持っている ようであるが, 「秒」のみの方が構造が分かりやすくて良いのでは.
- DC_DIFFTIME に「一日は何秒」に関する情報を持っているのは変である (実質的にカレンダーを持ってしまっている).
- 1 年が何日か, 1日が何秒か, という情報はカレンダーが保持しているべき であり, DC_DATETIME とも DC_DIFFTIME とも分離されているべき.
- DC_DATETIME が基準となる日時を表し, DC_DIFFTIME は それからの経過時間という認識であれば, 名称は DC_DIFFTIME より「経過したこと」を表す名称の方が良いのであh??
- 現状では, ユーザが「1 年は何日か」を設定する方法はない.
- 「1日は何秒か」を設定する手続きは用意されている.
- 「1 月が何日か」については想定する範囲内では不要であろう.
- 現在は, DC_DIFFTIME 自体で日, 時, 分, 秒間で変換が可能であるが,
「1日が何秒か」は DC_DIFFTIME に入っているべきではないので,
時, 分, 秒間での変換の手続きのみ残す方が良いだろう.
- 時, 分は 60 進法で決まっているため, カレンダーに依存しないもの として考えてよいだろう
- 備考: NCEP のデータの時刻の単位は hours である.
- 初期時刻は大きな値が入っている
- カレンダー用の構造体が別途必要か?
- 単純なものとして「一年が何日か」といった情報を格納.
- うるう年のようなものを含み, かつ gtool5 で用意されている
カレンダー以外を使用する場合には, 関数を登録できるとよいが??
- 関数やサブルーチンに関数名を渡すことは可能
- DC_DATETIME に必要な情報とは?
- 基準となる日時を示す「秒」 (ゼロを暗黙に仮定し, 明示的に変数を保持しないという 選択肢もあり. 現状はそのようになっている), 基準日時と示すべき日時との差を示す「秒」, どのようなカレンダーを使っているか, の 3 つ
- ローカルタイムを表現するための zone をどういう形で保持すべきかは保留
- DC_DIFFTIME に必要な情報とは?
- 差を示す「秒」のみで良い.
- 例えば火星を計算する場合, しかも, 「地球の日時で換算していついつからいついつまで計算する」
といった場合にはどうするか??
- モデル側で地球の暦と火星の暦の 2 つを持って それを用いればどうにかなるかな??
ToDo
- DC_DIFFTIME について
- データとして dc_scaled_sec 型の秒だけ持つようにする
- min, hour のみへの変換関数のみ残し, 他は削除する
- うるう秒については保留
- 機能により即した名前を考える
- 候補
- DC_ELAPSED_TIME
- DC_ELPSTIME
- 候補
- DC_DATETIME について
- 暦情報と基準日時と DC_DIFFTIME 型の秒を持つ
- 暦情報そのものは DC_DATETIME とは別の構造体または モジュールで管理できるのが望ましい
- 現在は day_seconds が暦と別に管理されているため, day_seconds も暦情報の一部として管理できるように 設計する
- ユーザが 1 年が何日かを任意に設定できるようにする
- 定数として渡せる
- 関数として設定できる
- 年や月という概念が不要な場合にも用いることができる ような暦も用意しておく
- 暦情報と基準日時と DC_DIFFTIME 型の秒を持つ
- Gtool_historyauto について
- 現在は HistoryAutoPut の第一引数に DC_DIFFTIME 型の 変数を与えるようになっているが, これについても変更が 必要かもしれない. (現状のままでもよいかもしれず, 上記の実装が行われてから考える).