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

[dennou-ruby:004059] pde.rb 実行時の ganalysis_ext (LoadError) について



堀之内さま、dennou-ruby のみなさま:

松葉です。

このメーリングリストへの投稿は大学卒業以来です。

gphys-1.5.6 で新規に追加された pde.rb を試そうとしたら LoadError になりましたので、ご報告させていただきます。
(環境は Debian stretch 9.8 で、 deb パッケージによるインストールです。)

要点は次の2点です。
 * ganalysis_ext を適切に require できていない
 * pde.rb をテスト動作したときの結果が分かりにくい

以下は、詳細です:

pde.rb を単純に実行すると、下記のエラーが出ます。
matsuba@debian:/usr/lib/ruby/vendor_ruby/numru/ganalysis$ ruby pde.rb
/usr/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in
`require': cannot load such file -- numru/ganalysis/ganalysis_ext
(LoadError)
    from /usr/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from pde.rb:2:in `<main>'

そこで、ganalysis_ext が存在するかどうか調べてみました。
matsuba@debian:/usr/lib/ruby/vendor_ruby/numru/ganalysis$ sudo find /
-name "ganalysis_ext*"
/usr/lib/x86_64-linux-gnu/ruby/vendor_ruby/2.3.0/numru/ganalysis_ext.so

ganalysis_ext.so は存在しているようですが、numru ディレクトリの直下にあるようです。
なので、以下のように書き換えることで、エラーなく動作するようになりました。

 - require 'numru/ganalysis/ganalysis_ext'
 + require 'numru/ganalysis_ext'

ただ、pde.rb を実行しても何も出力されないので、SOR法で解いた結果 z を描画するためのサンプルを盛り込んでみました。
描画した結果は、添付画像のとおりとなります。
# NArray -> GPhys オブジェクトを簡単に作る既存のメソッドってなかったんでしょうか?

最終的に変更した箇所は以下のとおりです。

matsuba@debian:/usr/lib/ruby/vendor_ruby/numru/ganalysis$ sudo diff -u
pde.rb{.org,}
--- pde.rb.org    2019-04-06 21:12:10.949526362 +0900
+++ pde.rb    2019-04-06 21:47:49.427547634 +0900
@@ -1,5 +1,5 @@
 require "numru/gphys"
-require "numru/ganalysis/ganalysis_ext"
+require "numru/ganalysis_ext"

 module NumRu
   module GAnalysis
@@ -87,4 +87,23 @@
   eps = 1e-6
   ome = 1.95
   GAnalysis::PDE.SOR_2D_2ndorder(z, a, b, c, d, e, f, dx, dy, ome, eps: eps)
+
+  # -- make gphys object
+  nax = NArray.sfloat(nx).indgen!
+  hax = {'long_name'=>'x-coordinate', 'units'=>'grid number'}
+  vax = VArray.new(nax, hax, 'x')
+  axx = Axis.new.set_pos(vax)
+
+  nay = NArray.sfloat(ny).indgen!
+  hay = {'long_name'=>'y-coordinate', 'units'=>'grid number'}
+  vay = VArray.new(nay, hay, 'y')
+  axy = Axis.new.set_pos(vay)
+
+  haz = {'long_name'=>'', 'units'=>''}
+  vaz = VArray.new(z, haz, 'data')
+  gpz = GPhys.new(Grid.new(axx, axy), vaz)
+
+  GGraph.startup('iws'=>1)
+  GGraph.tone_and_contour gpz,true,'color_bar'=>true
+  GGraph.close
 end

また、narray_ext.rb でも require 'numru/ganalysis/ganalysis_ext' としているようです。
どこまで波及するか分かりませんが、同様のエラーが生じるものと思われます。

以上、ご報告いたします。
お忙しいところかと思いますが、ご対応いただけましたら幸甚です。よろしくお願いいたします。

--
松葉 史剛 (MATSUBA Fumitaka)
E-mail: matsuba@xxxxxxxxxxxxxx

Attachment: dcl.png
Description: PNG image