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

[dennou-ruby:002375] Re: VArray



なかのです。

水田さん、堀之内さん、ありがとうございます。


水田さま:

>     def bar(dim)
>       grid = self.grid_copy
>       va = grid.axis(dim).pos
>       na = ( va.val[1..-1] + va.val[0..-2] ) / 2.0E0
>       va_new = VArray.new( na, va.attr_copy, va.name )
> 
> ではだめですか?
> attr_copy がattribute を取り出すメソッドです。
> マニュアルに載っていないんでしたかな。

http://dennou-k.gfd-dennou.org/arch/ruby/products/gphys/doc/varray.html
にはありませんでした。
そんなメソッドあるんですね。

この作戦でやると9行でした。

堀之内さま:


> >     def bar(dim)
> >       newgp = self[ *( [true]*dim+[1..-1,false] ) ] +
> >               self[ *( [true]*dim+[0..-2,false] ) ] / 2.0
> >       vax = self.axis(dim).pos
> >       newgp.axis(dim).set_pos( vax[1..-1]+vax[0..-2] / 2.0 )
> >       newgp
> >     end
> > 
> > 4行になってしまいました.


なんと、そうできますね。
なんか、NArray までばらさないと配列的な計算ができないような気がしてまし
た。

#まだ身に付いてないなぁ。。。

> > # VArray でなく Axis クラスに4則演算が欲しくなってきた...

うーん、でも軸の演算ってどういうことかよくわからなくなりそうですね。

今回の staggered grid 問題だと、本来は Axis の cell 機能を使うべきです
よね。
となると、ファイル開くときに cell なデータだと GPhys が解釈しないといけ
ないし、それ以前に、ファイルに cell データなんだぜって教えないといけない
ですね。

#こりゃ gtool なみなさまにもお願いしなきゃ。でしたね。


-- 
中野満寿男
九州大学大学院理学府地球惑星科学専攻
流体圏・宇宙圏科学講座 地球流体力学分野
masuo@xxxxxxxxxxxxxxxxxx