[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[dennou-ruby:003410] Re: GPhys での全球平均の方法



堀之内です.

久々にこういう質問が流れてうれしいです.

> > GPhys も全球平均を計算するようなメソッドなどがあるのでしょうか?

西澤さんのメールからご想像通り,これに対する直接の回答は,

  ありません

です.(^^;)

で,西澤さんご指摘のやり方(avarage_weightを設定
し,GPhysのaverageメソッドを使う)もありますが,
他にどうすれば簡単かつわかりやすくできるかという
のを書きます.

例として,GPhysの tar ボール付属の T.jan.nc を使うとします
(チュートリアルページにおいてあるファイルです).
お望みのことは,次のように陽に重みをかけて計算すればでき
ます.

  tem = GPhys::IO.open("T.jan.nc","T")
  cos_phi = ( tem.axis("lat").to_gphys * (Math::PI/180.0) ).cos
  fact = cos_phi / cos_phi.mean
  tm = (tem * fact).mean("lon","lat")

これなら読めば何をやってるかはわかりますね.ポイントは2行目で,
座標軸を取り出して (axisメソッド),GPhys 化する(to_gphysメソッド)
ことです.すると,一次元データ(fact)でも,多次元データ(tem)と
二項演算ができます.--- 次元の対応は自動判断されます.
このように axis(dim).to_gphys はいろんなところで使えますので,
覚えておくと損しません.

# ちなみにもしも上記のコードの前に
     include NumRu::Misc::EMath 
   しておけば,2行目は次のようにも書けます:
     cos_phi = cos( tem.axis("lat").to_gphys * (PI/180.0) )

さて,ここからは,西澤さんのコメントに関連して,もしもGPhys で
今以上にサポートするならどうするのが良いかかについてです.

私は今は,球面関連の基礎的な演算は GPhys付属ライブラリ 
lib/numru/ganalysis/planet.rb に入れていくのがいいかなと
思ってます.緯度に関する平均は絶対に cos(phi) 重みを
つけるとは限らないし,また裏で自動でやってしまうと,
「そんなことやってるとは知らなかった」となるかもしれない
ので,属性による自動対処よりは(やるなら)メソッドで陽
に対応するほうが良い気がしています.--- 確信というわけでは
なく,どっちかといえばそうかなというレベルの話です.

# いずれにしても planet.rb の整理はもっと進めたほうがいいですが.

> 岡山大 石岡様
> 
> 
> 以下を使えばお望みのことができるのではと思います。
> http://ruby.gfd-dennou.org/products/gphys/doc/axis.html#label-39
> http://ruby.gfd-dennou.org/products/gphys/doc/gphys.html#label-38
> 
> netcdf にしかるべき **_weight が入っていれば、
> 自動で average_weight , integ_weight を設定してくれるようになってると良いのかもしれません。
> これってCF か gtool4 規約等で決まっているんでしたっけ? > 識者の方
> 
> 西澤誠也
> 
> 
> 2011/10/24 ISHIOKA Sho <sc420529@xxxxxxxxxxxxxxxxx>:
> > はじめまして,
> > 岡山大学 B4 石岡です.
> >
> > GPhys の使い方について質問させてください.
> >
> > 自分は大気大循環モデル(dcpam5)を使った計算を
> > 行っています. そして, その計算結果の解析に GPhys を
> > 使用しています.
> >
> > 今, データ (地表面温度など) の全球平均した値の時間変化の
> > 絵を描きたいのですが, 全球平均をする方法がわからなくて
> > 困っています.
> >
> > 全球平均 (水平方向) をする場合, 緯度によって経度方向の
> > 格子点間隔が違うため重みをつけなければならないことは
> > わかります.
> >
> > gtool3 には全球平均をおこなうコマンドがあるようなのですが,
> > GPhys も全球平均を計算するようなメソッドなどがあるのでしょうか?
> >
> > ちなみに以下のページで探してみましたが見つけることができませんでした.
> > http://ruby.gfd-dennou.org/products/gphys/doc/
> >
> > なにかわかりましたら, 教えていただけないでしょうか.
> > よろしくお願いします.
> >
> >
> > --
> > 岡山大学理学部
> > 地球科学科 BC4
> > 石岡 翔
> >
> >
> >
> 
> 
> 
> -- 
> Seiya Nishizawa
> Center for Planetary Science, Kobe University
> TEL : 078-599-6730
> FAX : 078-599-6735

堀之内 武
北海道大学 地球環境科学研究院 地球圏科学部門
〒060-0810 札幌市北区北10条西5丁目