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

[dennou-ruby:002468] Re: ruby-ispack-0.4



北村です.

たびたびすみません.snpackとsopackに以下の不具合を見 つけました.
修正箇所についてコメントしておきます.


* sntg2s, snts2g, sondnlの引数に作業変数@yが抜けています. sondnl
についてはマニュアルの誤植のせいだと思いますが,下位ルーチンにも
引数yが抜けています.
* snts2g, sondnlの引数id, jdのデフォルト値ですが,ここは単 純に
id=@im, jd=@jmとしてよいのではないでしょうか.おそらくidと jdが
(バンク競合を避けるために?)奇数となるようにしてあるのだろ うと思
いますが,使いやすさからいうと,モデルの格子点数と配列サイズが
一致している方がわかりやすいように思います.これは個人の趣味の
問題なので,修正してしまったのは勇み足かもしれません.


下位ラッパーはラッパー生成スクリプトで自動生成していますが、
上位ラッパーはサブパッケージごとに異なる部分が多いので、
自動で生成するのは断念して手で書いています。

了解しました.上位ラッパーも自動生成しているものだと思っていた ので,直接修正することに抵抗があったのですが,今後不具合を見つ けた時には安心してそのまま直すことに致します.

*** ruby-ispack-0.4.1.ORIG/ispack.rb Wed Oct 5 17:36:53 2005
--- ruby-ispack-0.4.1/ispack.rb Mon Oct 10 16:51:07 2005
***************
*** 368,374 ****
_alloc_ws(size_w)
_alloc_ww(size_w)
if @km > 1
! ISPACK::sntg2s (@mm,@im,id,@jm,jd,@km,g,@it,@t,@ipk,@pk,@rk,@ia,@a,@q,@ws,@ww,ipow,ifla g).reshape!((@mm+1)*(@mm+1),@km)
else
# ISPACK::sntg2s (@mm,@im,id,@jm,jd,@km,g,@it,@t,@ip,@p,@r,@ia,@a,@q,@ws,@ww,ipow,iflag). reshape!((@mm+1)*(@mm+1),@km)
# p @mm,@im,id,@jm,jd,@km,g[0],g[1],g[2],g[3],g[4],g[5],g[6],g [7],g[8],g[9]
--- 368,374 ----
_alloc_ws(size_w)
_alloc_ww(size_w)
if @km > 1
! ISPACK::sntg2s (@mm,@im,id,@jm,jd,@km,g,@it,@t,@y,@ipk,@pk,@rk,@ia,@a,@q,@ws,@ww,ipow,i flag).reshape!((@mm+1)*(@mm+1),@km)
else
# ISPACK::sntg2s (@mm,@im,id,@jm,jd,@km,g,@it,@t,@ip,@p,@r,@ia,@a,@q,@ws,@ww,ipow,iflag). reshape!((@mm+1)*(@mm+1),@km)
# p @mm,@im,id,@jm,jd,@km,g[0],g[1],g[2],g[3],g[4],g[5],g[6],g [7],g[8],g[9]
***************
*** 376,390 ****
ISPACK::sntg2s (@mm,@im,id,@jm,jd,@km,g,@it,@t,@y,@ip,@p,@r,@ia,@a,@q,@ws,@ww,ipow,ifla g)
end
end
! def ts2g(s, ipow, iflag, id=@im/2*2+1, jd=@jm/2*2+1 )
_alloc_q((@km*((@mm+1)/2+@mm+1)*@jm))
size_w = @km*[((@mm+1)/2*2+3)*(@mm/2+2)*2,jd*((@mm+1)/2+@mm+1) *2,jd*@im].max
_alloc_ws(size_w)
_alloc_ww(size_w)
if @km > 1
! ISPACK::snts2g (@mm,@im,id,@jm,jd,@km,s,@it,@t,@ipk,@pk,@rk,@ia,@a,@q,@ws,@ww,ipow,ifla g).reshape!(id,jd,@km)
else
! ISPACK::snts2g (@mm,@im,id,@jm,jd,@km,s,@it,@t,@ip,@p,@r,@ia,@a,@q,@ws,@ww,ipow,iflag). reshape!(id,jd)
end
end
end
--- 376,391 ----
ISPACK::sntg2s (@mm,@im,id,@jm,jd,@km,g,@it,@t,@y,@ip,@p,@r,@ia,@a,@q,@ws,@ww,ipow,ifla g)
end
end
! # def ts2g(s, ipow, iflag, id=@im/2*2+1, jd=@jm/2*2+1 )
! def ts2g(s, ipow, iflag, id=@im, jd=@jm)
_alloc_q((@km*((@mm+1)/2+@mm+1)*@jm))
size_w = @km*[((@mm+1)/2*2+3)*(@mm/2+2)*2,jd*((@mm+1)/2+@mm+1) *2,jd*@im].max
_alloc_ws(size_w)
_alloc_ww(size_w)
if @km > 1
! ISPACK::snts2g (@mm,@im,id,@jm,jd,@km,s,@it,@t,@y,@ipk,@pk,@rk,@ia,@a,@q,@ws,@ww,ipow,i flag).reshape!(id,jd,@km)
else
! ISPACK::snts2g (@mm,@im,id,@jm,jd,@km,s,@it,@t,@y,@ip,@p,@r,@ia,@a,@q,@ws,@ww,ipow,ifla g).reshape!(id,jd)
end
end
end
***************
*** 396,407 ****
@ib,@b = ISPACK::soinit(mm)
end


! def ndnl(s, id=@im/2*2+1, jd=@jm/2*2+1)
_alloc_q((2*((@mm+2)/2+@mm+2)*@jm))
size_w = @km*[((@mm+1)/2*2+3)*(@mm/2+2)*2,jd*((@mm+1)/2+@mm+1) *2,jd*id].max
_alloc_ws(size_w)
_alloc_ww(size_w)
! ISPACK::sondnl (@mm,@im,id,@jm,jd,s,@it,@t,@ipk,@pk,@rk,@ia,@a,@ib,@b,@q,@ws,@ww)
end
end


--- 397,409 ----
      @ib,@b = ISPACK::soinit(mm)
    end

! # def ndnl(s, id=@im/2*2+1, jd=@jm/2*2+1)
! def ndnl(s, id=@im, jd=@jm)
_alloc_q((2*((@mm+2)/2+@mm+2)*@jm))
size_w = @km*[((@mm+1)/2*2+3)*(@mm/2+2)*2,jd*((@mm+1)/2+@mm+1) *2,jd*id].max
_alloc_ws(size_w)
_alloc_ww(size_w)
! ISPACK::sondnl (@mm,@im,id,@jm,jd,s,@it,@t,@y,@ipk,@pk,@rk,@ia,@a,@ib,@b,@q,@ws,@ww)
end
end



---- Yuji Kitamura, Ph.D. <kitamura@xxxxxxxxxxxxxxxxxx> Division of Earth and Planetary Sciences, Graduate School of Science, Kyoto University Tel: +81-75-753-3933/Fax: +81-75-753-3715