Index of /library/ruby/products/ruby-ispack
      Name                     Last modified       Size  Description

[DIR] Parent Directory 04-Nov-2008 00:55 - [TXT] SIGEN.htm 19-Nov-2008 10:09 2k [TXT] dennou-ruby.css 17-Mar-2003 16:46 2k [TXT] index-j_030408.htm 08-Apr-2003 19:23 1k [TXT] index_030408.htm 08-Apr-2003 19:20 1k [   ] ruby-ispack-0.1.tar.gz 31-May-2005 10:19 18k [   ] ruby-ispack-0.2.1.tar.gz 07-Jun-2005 11:39 22k [   ] ruby-ispack-0.2.tar.gz 02-Jun-2005 12:34 22k [   ] ruby-ispack-0.3.tar.gz 21-Jul-2005 15:15 330k [   ] ruby-ispack-0.4.1.tar.gz 05-Oct-2005 18:14 35k [   ] ruby-ispack-0.4.2.tar.gz 12-Oct-2005 19:15 36k [   ] ruby-ispack-0.4.3.tar.gz 25-Jan-2006 22:56 36k [   ] ruby-ispack-0.4.tar.gz 04-Oct-2005 20:31 35k


Ruby-ISPACK

ISPACKは石岡@京大理さん作のFOTRAN77による数値計算ライブラリーです。 
http://www.gfd-dennou.org/arch/ispack/
Ruby-ISPACKはISPACKをRubyで使えるようにしようとするものです。

使用方法:

・F77版ISPACKをインストールしておく。
  ruby本体のコンパイラと同系列のもの(gccとg77など)で
  コンパイルした方が、以下でおこなうmakeが成功しやすい、と思います。

・ruby-ispack-0.? をダウンロード、展開する。
    $ tar zxvf ruby-ispack-0.?.tar.gz

・Makefileを作成する。
    $ ruby extconf.rb --with-ispack-lib=パス
  あるいは
    $ ruby extconf_FFC.rb --with-ispack-lib=パス
    $ ruby extconf_ifort9.rb --with-ispack-lib=パス
  でうまくいくMakefileができる、かもしれない。
  うまくいかない場合はsample/以下にサンプルをおいていますので
  参考にしてください。

・makeする。
  makeがうまくいくと ispack_raw.o, ispack_raw.so ができます。
  これが下位ラッパーで、rubyとF77ライブラリの橋渡しをする部分。

・下位ラッパーを使用する。
  rubyスクリプト内で require "パス/ispack_raw.so" とすれば
  使えるようになります。
  例えばFortranで
    CALL STSRVA(MM,JM,IM,S,U,V,P,Q,R,IT,T)
  としていた部分は
    u,v = ISPACK::stsrva(mm,jm,im,s,p,q,r,it,t)
  といったようになります。

・上位ラッパーを使用する。
  下位ラッパーだけでは使いにくいので下位ラッパーを使うための
  クラスを作っています。ispack.rb です。
  rubyスクリプト内で require "パス/ispack" とすれば
  使えるようになります。
  上の例では、まず
    st = STPACK.new(mm,jm,im)
  とSTPACKクラスのインスタンスを定義し、
    u,v = st.srva(s)
  とすることができます。こうすれば作業変数等が隠蔽され、自分で
  変数を用意する必要がなくなります。

・サンプルでテストする。
  sample/以下に置いてあります。
  test_c2pack.rb : ベナール対流ができます。
                   本家のsample/2D-channel/benard.f と同じ。
  test_n2pack.rb : 双子渦が合体します。
                   本家のsample/2D-plane/model2d.f と同じ。
  test_sppack.rb : 球面浅水モデル(絵は出ない)。
                   本家のsample/shallow-water-sphare/model.f と同じ。
  test_stpack.rb : 同心円型の渦ががおむすび型に変化します。


(05/10/04 R.Mizuta)