[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[dennou-ruby:001814] GPhys::EP_flux
- To: dennou-ruby@xxxxxxxxxxx
- Subject: [dennou-ruby:001814] GPhys::EP_flux
- From: tsukahara daisuke <daktu32@xxxxxxxxxxxxxxxxxxxx>
- Date: Tue, 03 Aug 2004 22:25:40 +0900 (JST)
dennou-ruby の皆様
塚原@北大林研です.
気象の Eliassen-Palm Flux(EP_flux) を計算する GPhys のモジュールを堀之内さんと
共同で作成しようと思っています. 具体的には
* デカルト座標の微分演算モジュール
* ((<module NumRu::Spherical>)) / ((<module NumRu::GPhys::Spherical>))
* 球面座標の微分演算モジュール
* ((<module NumRu::Cartesian>)) / ((<module NumRu::GPhys::Cartesian>))
* EP_flux 計算モジュール
* ((<module NumRu::GPhys::EP_flux>))
といったモジュールを作成するつもりです. 本日作戦会議を行ったのですが, その
メモを dennou-ruby 宛にも送付させていただきます. 製品の形もない状態で申し訳
ありませんが, 宣伝ということでお許しいただきたく思います.
# 蛇足ですが, 08/09 まで京大生存圏にお邪魔しています. それまでにβ版を完成させ
# るつもりです.
--------------------------------------
北海道大学院理学研究科 地球惑星科学専攻
地球流体力学研究室 M2 塚原大輔
email::daktu32@xxxxxxxxxxxxxxxxxxxx
--------------------------------------
=begin
= GPhys 用 EP-flux 計算モジュール作成作戦メモ
このメモは, 京大生存圏の堀之内さん部屋で行われた EP-flux モジュール作成に関する
堀之内さんと塚原の打ち合わせメモである.
== 履歴
2004/08/03(火) 塚原大輔 -- 新規作成.
== 作成するモジュール
名称は仮である.
* ((<module NumRu::Spherical>)) / ((<module NumRu::GPhys::Spherical>))
* 球面座標での微分演算を行う関数群. NArray, GPhys の双方に対して作成.
* ((<module NumRu::Cartesian>)) / ((<module NumRu::GPhys::Cartesian>))
* 直交直線座標での微分演算を行う関数群. NArray, GPhys の双方に対して作成.
* ((<module NumRu::GPhys::EP_flux>))
* EP_flux を算出する関数. GPhys に対して作成.
=== 微分演算 モジュール
* NumRu::Spherical
* 球面座標での微分演算モジュール.
* xderiv, yderiv, rot, div, xdiv, ydiv, grad, xgrad, ygrad, lapla, ilapla, jacobian, .., ydiv_m0, ygrad_m0, yderiv_m0, etc.
* 等間隔グリッドデータを前提とする
* その他のグリッド(特にガウス緯度)についてはおいおい対処.
* ISPACK を導入しやすいよう意識して枠組みを作成
* スペクトル変換, 微分については DCL の SHTLIB を利用
* ((<URL|http://www.gfd-dennou.org/arch/ruby/products/ruby-dcl/ruby-dcl-doc/math2/node24.html>))
* NumRu::Cartesian
* デカルト座標での微分演算モジュール.
* スタッガードに対する関数はとりあえず作らない.
* とりあえず差分法
* cderiv(中央差分), fderiv(前方差分)..etc.
* NumRu::GPhys::Spherical
* NumRu::Spherical を利用
* データの定義領域のチェック(緯度は何度から何度までか, 緯度経度なのか緯度のみか, とか)
* メソッド化して, 下請けに応じて取り替えられるようにする
* ISPACK と SHTLIB でデータの定義領域が(ちょっと)異なる
* 軸の単位をチェック(角度かどうか)して, 判定
* 北から南にデータが入っている場合(NCEP はそう)は, 逆向きにしてあげる
* 将来的には, (可能な限り)領域を適合させられるようにする.
* 単位, 地球半径を考慮
* NumRu::GPhys::Cartesian
* NumRu::Cartesian を利用
* 座標変数の自動更新
* 例 : 半整数グリッドと整数グリッド
* 単位を考慮
=== EP_flux モジュール(NumRu::GPhys::EP_flux)
* 基本は近似を行わない, いわゆるフルセットの EP_flux
* 近似を導入しようとも, 微分演算モジュールは作らねばならないため, コストは一緒.
* オプションで近似形を用いるかどうか切り替えられるようにする.
* 入力変数
* 東西風, 南北風, 鉛直風(omega or w), 温度(temp or theta)
* 鉛直座標は圧力座標(P or logP)
* 出力変数
* Fy, Fz, uv_bar, ...
* divF 計算メソッドを作成
* Fy, Fz を引数にとる
== スケジュール(目標)
(1) NArray 版微分演算モジュールの作成 -- 8/4(水)
(2) GPhys 版微分演算モジュールの作成 -- 8/5(木)
(3) EP_flux 算出モジュールの作成 -- 8/6(金), 8/7(土)
(4) チュートリアルの作成 -- 8/8(日), 8/8(月)
=== 留意点
* コーディングとテストは同時進行
* テストの方針
* 解析的解のデータと出力を比較する
* テストがある程度通るようになったら, ドキュメントを作成(日本語 and RD)
=end