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

[dennou-ruby:002378] Re: Ruby-ISPACK 作成中



水田様:

北村です.

ISPACKを直接呼ぶCラッパーの上に、作業変数を隠蔽する上位 のラッパーを
作ってみました。
http://ruby.gfd-dennou.org/products/ruby-ispack/ruby-ispack-0.3.tar.gz
として置きました。

遅くなってしまいましたが,上位ラッパーを試してみました.入力が多 次元配列
でもきちんと動くようになっていましたし,速度的にも問題はないよう に思いま
した.どうもありがとうございます.


ざっと見て気がついたのですが,上位ラッパーでも入力するデータの配 列の長さ
を引数として渡さないといけない箇所があるようです.例えば, sntg2sとかで,


class SNPACK
...
  def tg2s(id, jd, g, ipow, iflag)
...

となっていますが,id, jdはgの配列のサイズを渡すこと になっているので,gを一
次元配列とかにしていなければ,g.shapeとかすれば省略可能な のではないかと
思いました.そもそもこのメソッドは元のサブルーチンの引数が多すぎ て使えな
いのですが…


RubyからCやFortranの関数を呼ぶ際、引数が16個 以上あるとエラーになります。
調べてみると、、、
どうやらRubyの仕様のようです(eval.c 4470行目あた り)。

call_cfuncのswitch文を見るとそんな感じですね.でも,ここを 直すだけでは解決
しないようで問題はそう単純ではないようです.SNPACKとかはこ の問題に直面
しますがSTPACKは使えるようなので,現状で満足はできるように 思いますがいか
がでしょう?


----
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