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

[dennou-ruby:003454] Re: 質量流線関数の描画



堀之内様,

石岡 @岡山大です.

以下のような子午面の質量流線関数の絵を描く
スクリプトができました.
ありがとうございます.


--- ここから ---
# mass stream function
# 質量流線関数
#

require 'numru/ggraph'
require 'numru/gphys'
include NumRu
include Math

# file open
vwind = GPhys::IO.open( "V.nc", "V")
ps = GPhys::IO.open( "Ps.nc", "Ps")
sigdot = GPhys::IO.open( "SigDot.nc", "SigDot")

#
usetime = { 'time'=>1340..1440 }
vwind = vwind.cut(usetime)
ps = ps.cut(usetime)
sigdot = sigdot.cut(usetime).mean('lon','time')

# constant
grav = UNumeric[9.8, "m.s-2"]
a = UNumeric[6400000.0, "m"]

#
sgm = sigdot.axis("sigm").to_gphys
sgm = NArray.to_na(sgm.to_a)

psi = sigdot.copy
psi[false] = 0
psi.units = 'kg.s-1'
psi.long_name = 'mass stream function'

cos_phi = ( vwind.axis("lat").to_gphys * (PI/180.0) ).cos
alph = vwind * cos_phi * ps * a * PI * 2 / grav 

alph = alph.mean('lon','time')
for i in 0..15
  k = 15-i
  psi[true,k] = psi[true,k+1] + alph[true,k] * (sgm[k] - sgm[k+1]) 
end

# DCL
DCL.gropn(1)
DCL.sgpset('lcntl',false)
DCL.uzfact(0.7)

# GGraph
GGraph.tone( psi, true, "nlev"=>2 )
GGraph.contour( psi, false)

DCL.grcls

--- ここまで ---


(2011/12/09 13:01), Takeshi Horinouchi wrote:
> 岡山大石岡さま:
>
> 了解です.詰まったら遠慮なく相談してください.
>
> # 詰まらなくても,定義はこれこれですとか,数値的にはこんな風にやって
>    みようと思いますなど,適宜実況中継してくれてかまいません.
>
>> 堀之内様,
>>
>> 石岡 @岡山大です.
>>
>> 返信ありがとうございます.
>> 無いようなので, こちらで作ってみようと思います.
>>
>>
>> (2011/12/08 23:57), Takeshi Horinouchi wrote:
>>> 堀之内です.
>>>
>>> 子午面の,ですね.
>>> ないですが,計算は簡単ですよね.(10行程度.私自身も
>>> 計算したりはしてます...) 
>>>
>>> # もしかして,どうやって計算するのがいいか迷ってる? 
>>>    なら,演習問題としてやってください.
>>>
>>>> 石岡 @岡山大です.
>>>>
>>>> GPhys について質問させてください.
>>>>
>>>> dcpam で計算された結果を使って質量流線関数の
>>>> 図を作りたいのですが, GPhys に質量流線関数を
>>>> 計算するようなメソッドなどはないでしょうか.
>>>>
>>>> もしありましたら教えていただけないでしょうか.
>>>> よろしくお願いします.
>>>>
>>>> -- 
>>>> 岡山大学理学部
>>>> 地球科学科 BC4
>>>> 石岡 翔
>>>>
>> -- 
>> 岡山大学理学部
>> 地球科学科 BC4
>> 石岡 翔
>>
> 堀之内 武
> 北海道大学 地球環境科学研究院 地球圏科学部門
> 〒060-0810 札幌市北区北10条西5丁目
>
>


-- 
岡山大学理学部
地球科学科 BC4
石岡 翔