2007/07/04 の dcmodel ネットミーティングのメモ書き

参加者

  • 林 祥介, 石渡 正樹, 小高 正嗣, 高橋 芳幸, 佐々木 洋平, 森川 靖大, 土屋 貴志, 山下 達也, 徳永 義哉 (順不同, 敬称略)

dcpam4 の開発状況

  • とりあえず, 初期値生成プログラムと主プログラムがビルドして 実行できるようになった. セミインプリシット時間積分も導入済み.
  • 近日中に cvs リポジトリにコミット予定.
  • まだ不備な点多々. 鋭意改善予定.
    • リスタートファイルの生成が不完全.
    • NAMELIST の導入はこれから.
    • そもそもまっとうに計算できているのか.
      • Held and Suarez 1994 やこれまで dcpam3 で行ってきた 計算をおこなってみる.
  • ドキュメントの移行もこれから
    • ソースコードを直接いじらないレベルのユーザ用ドキュメント 『ごくらく DCPAM』の作成
    • ソースコードをいじるレベルのユーザ用ドキュメント 『らくらく DCPAM』の作成
    • 数理ドキュメント, 離散化ドキュメントは dcpam3 から単純移植予定.
      • 数理ドキュメントはコードに合わせた式にした方が良いか?? (DCPAM は U = u cos φ を使ってない, とか).
    • AGCM5 の『コード解説』に関してもコード内の変数を入れ替えて 移植する. ディレクトリ名は code_description (仮).

gtool4 netCDF 規約の CF 規約に対する位置づけに関して

gtool4 netCDF 規約再検討北大メンバーミーティング ( 1, 2, 3 ) にて議論が中途半端になっている, gtool4 規約の今後について一応の方針を ちゃんと決める.

なお, 最近 (とはいえ既に昨年秋だが), CF 規約の White paper が公開されており, CF 規約のホームページ も新しくなっている. これらをチェックすべきかどうかも要検討.

dcrtm

活動開始.

  • まずは木星大気の放射伝達を計算できるようになる, を目標に
  • 詳細は dcrtm のページ

Todo:

  • 光田さんの放射計算コードを web に公開しておく

覚書

  • データが集まった時点で, 何種類の吸収成分気体(バンド) を考慮すべきか, 検討する
    • まずは可能な限り考慮する, でよいが, とある時点でバンドの取捨選択をしないとたぶん計算できないモデルになってしまうだろう

deepconv

dcmodel コーディングルールの修正

「リスタートファイルとヒストリーファイル」の 「ヒストリーファイル」に以下の記述を追記 (石渡)

平均値を計算する際に座標重みを必要とする数値データの場合には, 座標重
みのデータも各ヒストリーファイルに格納することを推奨する.

この際, 実際に netCDF ファイルにどのように座標重みを格納するかについても 記述する. これに伴い, これまでの gtool4 規約において gt_calc_weight として 使用されていた座標重み指定のための属性を CF 規約 bounds に置き換えることが 可能かどうかを調査する. (石渡)

初期値の生成に関して

  • 長期 RUN 用実行プログラムは「お試し Run」できるように, 内部で 初期値を生成できるようにしておく.
  • 本当に数値実験を行う際にわざわざ長期 RUN 用実行プログラムを改変 しなくて済むよう, 初期値生成用実行プログラムは別途用意しておく.
  • ただし完全に別々に RUN 用ファイルと, 初期値生成用ファイルを メンテナンスする場合, 実際に初期値を生成するコードを「2 度書き」 せねばならず, 開発者のストレスが溜まる (deepconv 開発の経験)
  • 現状の折衷案 (とりあえずこれで試行錯誤してみる)
    • 初期値生成「モジュール」を用意し, 実際に初期値を生成するコードは そのモジュールでくるんでおく. 別途, 初期値生成のみのための実行プログラム, 長期 RUN 用実行プログラムは用意する. それらの実行プログラムは初期値 生成モジュールを参照し, データを作成する.

      ┌─ initital_data.f90 ─────────────────
      |
      |  module initial_data
      |  
      |    subroutine InitialDataCreate( ....)
      |    
      |      初期値生成コード
      |      
      |    end subroutine InitialDataCreate
      |    
      |
      |  end module initial_data
      |
      └──────────────────
      
      ┌─ init_sample.f90 ─────────────────
      |
      |  program init
      |    use initial_data
      |    
      |    call InitialDataCreate(...)
      |    
      |  end program init
      |
      └──────────────────
    • RUN 用プログラムは「おためし RUN」可能なように, 初期値生成モジュールを use してサブルーチンを実行する.

      結果的に, 「おためし RUN」の際には, RUN 用ファイルは一度初期値ファ イルを書き出し, それを実行ファイルで読み込むことになる.

      ┌─ run.f90 ─────────────────
      |
      |  program run
      |    use initial_data
      |    
      |    call InitialDataCreate(...)
      |    
      |    
      |    do ....
      |    
      |      長期 RUN
      |    
      |    end do
      |    
      |  end program run
      |
      └──────────────────

NAMELIST に関して

  • NAMELIST で, でかいデータは与えないようにする.
    • でかいデータは基本的にファイルで与える. 初期値ファイル, rst ファ イル以外のデータは 1 つにまとめるか, 複数かは適宜判断して使い分け る. また, 小さいデータは NAMELIST で与えることも許容する. ファイ ルを使うか NAMELIST でやるかも適宜判断して使い分ける.
  • NAMELIST 変数の出力フォーマットについては全然話をしてない.

dcpam, deepconv の NAMELIST ファイルの書式について

これまで dcpam, deepconv の NAMELIST ファイルでは以下のように 変数グループを記述していた.

&grid_3d_nml
  im = 64             ! 東西格子点数
  jm = 32             ! 南北格子点数
  km = 16             ! 鉛直格子点数
/

これまで, frt, ifort, g95 で動作は確認されていたが, Fortran 95 規格 に正しく沿うと

&grid_3d_nml
  im = 64,             ! 東西格子点数
  jm = 32,             ! 南北格子点数
  km = 16              ! 鉛直格子点数
/

のように各変数はカンマで区切るのが正しいため, この書式に変更する.

なお, dcpam ではカンマが入っているものと入っていないものとがあったため, 一部の NAMELIST 変数グループが読み込まれないという事態が発生していた.

spml の wa_module から rn, irm を参照する問題

  • 作業担当者: 佐々木

wa_module.f90 に以下の行を足してコミット.

public :: rn, irm

マイナーバージョンを上げて, リリースする.

その他 2006 年度末に話し合った内容に関しては, 天文台モデルミーティングログ 2006/12/25-27 を参照のこと.

gt4f90io の解説文書の英語化

そのうちやらないといけませんね...

モデル開発してて面倒と感じることいろいろ

以下の, 日頃作業する際に調べる面倒だなぁ, と思う事柄に関して, dcmodel のページから 1 ホップぐらいで手繰れるところに, 必要最低限の資料を作成 する. (杉山)

  • cvs commit が面倒
    • (面倒) コマンドをすっかり忘れているので, わざわざいちいち調べなけ ればならない (コミットするのが億劫になる). 調べる情報も dcmodel プロジェクトの奥のほうにあったりして調べる作業も鬱陶しい.
      • 調べるものの例
        • cvs のタグの貼り方どうだっけ??
        • cvs のコミットどうするんだっけ?? なんかルールもあったような??
    • (対応策) 杉山氏が, 自分で cvs コミットの際に必要な情報を dcmodel ページの上の方 (検索しやすい位置) に作ってみる.
  • ソースの公開版の更新が面倒
    • 作業そのものはだいぶ簡素化されている (タグが書き込まれているファイル を書き換え, あるディレクトリで make するだけ).
    • やり方が流布されれば OK ??
  • gt4f90io の開発についていけない
    • (面倒) なんかいろいろ開発してるらしいが, ついてゆけん.
    • (解決策??) 基本的には History 系 (もうそんなに仕様変更されないことが 期待される) のみは追うけれども, 最近作っている目新しいツールは 無理して追いかけない. (面白そうならその時に聞く).