[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[dennou-ruby:002468] Re: ruby-ispack-0.4
- To: dennou-ruby@xxxxxxxxxxx
- Subject: [dennou-ruby:002468] Re: ruby-ispack-0.4
- From: Yuji Kitamura <kitamura@xxxxxxxxxxxxxxxxxx>
- Date: Mon, 10 Oct 2005 17:24:04 +0900
北村です.
たびたびすみません.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