|
Index of /library/ruby/products/ruby-ispack
|
Name Last modified Size Description
Parent Directory 04-Nov-2008 00:55 -
SIGEN.htm 19-Nov-2008 10:09 2k
dennou-ruby.css 17-Mar-2003 16:46 2k
index-j_030408.htm 08-Apr-2003 19:23 1k
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)