(Library) 流線描画ルーチン
作成者:大塚 成徳
概要
DCLを用いて流線を描くための拡張ライブラリです。 現状ではまだかなり制限の多い仕様です。
- 直交座標系。
- x, y共に同じ格子間隔、等間隔格子。
- 格子の値は単調増加。
- u, vの次元はx, yの次元を時間で割ったもの。つまり流速が[m/s]ならば格子は[m]でなければならない。
また流線を描く過程で多くのマジックナンバーが使われており、 与えるデータに応じて適切に変える必要がありますが、 現在はソースコードに直書きなので変えることが出来ません。
ダウンロード
本体: dclext_streamline.20081231.tgz
Gfdnavi用のyaml: streamline.yml
インストール
資源を展開して、トップディレクトリに cd して、次のようにします。
% ruby extconf.rb % make % make install
使用法
サンプルが test.rb にあります。
#!/usr/bin/env ruby require "numru/dcl" require "numru/dclext_streamline" include NumRu #格子点数 nx = 40 ny = 40 #格子間隔 dl = 1 #格子点情報を二次元配列で作る x = NArray.sfloat(nx,ny).indgen!(0,dl) % nx y = (NArray.sfloat(ny,nx).indgen!(0,dl) % ny).transpose(1,0) #流速場の設定 u = NArray.sfloat(nx,ny) v = NArray.sfloat(nx,ny) u = -10.0 * NMath.sin(NMath.atan2(x-(nx/2),y-(ny/2))) v = 10.0 * NMath.cos(NMath.atan2(x-(nx/2),y-(ny/2))) DCL.gropn(1) DCL.grfrm DCL.grswnd(x.min,x.max,y.min,y.max) DCL.grsvpt(0.2,0.8,0.2,0.8) DCL.grstrf DCL.usdaxs #ベクトル場の描画 DCL::ugvect(u,v) #流線の密度 idensity = 40 #線種 type = 1 #線の太さ、色 index = 21 #流線の描画 DCLExt::streamline(u,v,x,y,dl,idensity,type,index) DCL.grcls
使用例
以下はGfdnaviに組み込んで描画した例です。
更新履歴
- 2008/12/31 バグ修正(dclext_streamline.20081231.tgz)
- 2008/2/18 サンプルプログラム掲載(dclext_streamline.20080218.tgz)
- 2008/2/16 アップデート(dclext_streamline.20080216b.tgz, streamline.yml)
- 2008/2/16 作成(dclext_streamline.20080216.tgz, streamline.yml)
キーワード:[Extension library] [Streamline] [拡張ライブラリ] [流線]
参照: