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

[dennou-ruby:002681] bug in GPhys.each_along_dims



西澤です。

GPhys.each_along_dims
で、
渡すGPhys が NArrayMiss を持っている(?)場合、

/usr/lib/ruby/1.8/numru/gphys/varray.rb:543:in `[]=': NArrayMiss#to_f
should return Float (TypeError)
      from /usr/lib/ruby/1.8/numru/gphys/varray.rb:543:in `[]='
      from /usr/lib/ruby/1.8/numru/gphys/gphys.rb:569:in `[]='
      from /usr/lib/ruby/1.8/numru/gphys/gphys.rb:894:in `each_along_dims'
      from /usr/lib/ruby/1.8/numru/gphys/gphys.rb:892:in `each_along_dims'
      from /usr/lib/ruby/1.8/numru/gphys/gphys.rb:868:in `each_along_dims'

というエラーになります。


gphys/gphys/rb の 888 vary = VArray.new( NArray.new(rs.ntype, *grid.shape), rs.data ) で NArray をつくっているので an_instans_of_NArray[hoge] = an_insans_of_NArrayMiss ということになっているのだと思われます。 gphyes[0][*([0..0]*gphyses[0].rank)].val.class.new() とかするんでしょうか(あってるかな?)。


あと、 816 if loopdims.length == 0 817 raise ArgumentError, "No loop dimension is specified "+ 818 " -- In that case, you don't need this iterator." 819 end となっていて、第2引数の配列の長さが0のときは、 確かにこのメソッドをよぶ意味は無いのですが、 例外をあげるのではなく、 return yield(gphyses) となっていると(あってるかな?)、 動的にスクリプトを生成する際に、loopdimsの長さが0でも期待したものが返って来るのでうれしいです。



--
Seiya Nishizawa
Research Institute for Mathematical Sciences, Kyoto University
Oiwake-cho Kitarakawa Sakyo-ku Kyoto, Japan, 606-8502
Tel: +81-75-753-7252
Fax: +81-75-753-7272