はじめまして。日本エヴィクサーの鈴木と申します。
主にFEM, FDTDの部分を担当しております。
> FEM、BEMで閉管路内で定常状態の音圧・粒子速度の分布を比較してみようと考えています。
> OpenAcoustics CookBook内のコードを利用して計算を試みていますが、判らない点をご教授頂けたらと思います。
とりあえず、FEMの部分は了解です!
> FEM、BEMともに、速度ポテンシャルの計算結果までしか出されていないように見えますが、
> 何か意図があってのことなのでしょうか?
説明が簡便なので、速度ポテンシャルにしていました。
> 速度ポテンシャルを音圧に換算するには、時間微分(2πfを掛ける)するので良いと思うのですが、
おっしゃるとおり、時間微分すれば計算できます。
> 粒子速度に換算する場合は、2点間のレベル差と距離から算出する事になると思います。
> 3方向のベクトル算出になると思いますが、具体的にはどの様に算出するべきなのでしょうか?
> メッシュ間隔などもバラバラですので、どの様にすればいいのか判りません。
粒子速度は、FEMの場合は要素自体を空間微分して
計算することもできると思いますし、
近傍の2点で空間差分をとって粒子速度値とすることもできます。
要素内の音圧の値は、補間して計算しますが
その辺の理論説明もコードも省いてしまっているので
ちょっと大変かも知れませんね。
資料とコードを検索してみますので、見つかったらお送りいたします。
BEMは得意でないのであれですが、
解析的に微分した式を離散化もできると思いますし
上記の近傍2点の計算でもできると思います。
近傍2点の計算はBEMのほうがやりやすそうですね。
補足があれば、お願いいたします→みなさん
先日著者で集まったのですが、粒子速度が必要かどうかは
けっこう議論が分かれていました。
個人的には音響インテンシティの計算とかしたいひともいると思うので
あってもいいかなと思っています。
> また、BEMのコードがうまく動いていない気がします。
> 使用するPythonのバージョンなどで、不具合などが発生するようなものなのでしょうか?
> OpenAcoustics CookBookで使用されていました、Pythonのバージョンを教えていただけませんでしょうか?
> 当方、Ver2.6.6 にて実施しています。
> よろしくお願いいたします。
エラーメッセージ等お送りいただくことはできますか?
私のほうでも、後で検証してみます。
> 補足があれば、お願いいたします→みなさん
FEMであれば、勾配の計算は汎用のポストプロセッサでも出来てしまう、という
のはありますね。
大嶋
鈴木です。
> 早速のご返答ありがとうございます。
> この掲示板にふさわしい内容かどうかわからなかったのですが、
> いきなりややこしい質問をしてしまったのかもしれません。
> 申し訳ありません。
とんでもないです。
> あまり解析のことがわかっていませんで、ポスト処理で勾配計算ができるというなども知りませんでした。
> ポストプログラムに持っていくファイルフォーマットも、まだよく判っていないのですが・・・・(汗
僕も知りませんでした(汗
ParaViewでできると思っていいのでしょうか?→大嶋さん
> 著者の方々の意見が分かれている粒子速度の有無に関しては、「可能であれば機能として欲しい」と考えます。
> やはり、そのうち音響インテンシティも計算して、ポスト処理でインテンシティの表示などができたら良いな等と思ったりしてます。
FEMだと何個か関数を追加すればできると思うので
検討してみます。できたらアップしますね。
> BEMのプログラムは、もう少し見直してみます。
> 当方のミスで書き間違いなどがある場合は、お手数を煩わせるのは申し訳ありませんので。
さきほど試してみたのですが
WindowsXP
Python 2.5.4
matplotlib 1.0.1
numpy 1.5.1
scipy 0.9.0
の組み合わせで、私の環境だと動作していました。
もしエラーが出たら、下記のようなコードで
バージョンを確認していただくと何かわかるかも知れません。
import numpy,scipy,matplotlib
print numpy.__version__
print scipy.__version__
print matplotlib.__version__
> また幼稚な質問を含め、色々とご質問させていただくこともあるかと思いますが、よろしくお願いいたします。
お待ちしています。
BEM担当の石塚と申します。
宜しくお願い致します。
我々のプロジェクトに興味をお持ち頂きありがとうございます。
【BEMコードの動作】
BEMコードの動作確認済み環境ですが、
鈴木さんのWindowsに加え、
当方では、
Linux(Ubuntu10.04)
python 2.6.5
numpy 1.3.0
scipy 0.7.0
matplotlib 0.99.1.2
で動作しております。
また、MacOS上でも音線法担当の方が動作を確認していますが、
私の方では、バージョン情報までは把握しておりません。
鈴木さんのコメントの通り、エラーコードを頂ければ
何かお役に立てるかも知れません。
【粒子速度の計算】
サンプルコードはわかり易さを最優先していますので、
速度ポテンシャルのみを計算しています。
粒子速度は、
近接2点間の音圧差から求めても良いと思います。
(私自身はやったことが無いので、どの程度近接させるか等のノウハウはありませんが。)
また、連立方程式の解(境界表面上の速度ポテンシャル)を
境界積分方程式を方向微分した形式(NDF型境界積分方程式)
に代入すれば、1点の計算で粒子速度が求まります。
サンプルコードには実装していませんが、
実用コード段階にあたるSimpleAPIには、
粒子速度や音響インテンシティの計算機能も実装したいと考えています。
公開にはまだ少し時間がかかりますが、ご期待頂ければ幸いです。
その他、ご不明な点やご要望がありましたら、
当フォーラムにあげて頂ければ、可能な限り対応させて頂きます。
(タイムラグはご容赦下さい。)
> 僕も知りませんでした(汗
> ParaViewでできると思っていいのでしょうか?→大嶋さん
ParaView、Gmshともできます。
ただ、複素数の扱いは工夫が必要かもしれません。
大嶋
遅くなりましたが、全周rigidにした場合の不具合報告ありがとうございます。
私どもでも再現し、原因は判明しました。
目下修正中ですので、今しばらくお待ちください。
> 現状では、モデルの中に減衰が無いのでエネルギーが無限大になり発散するのでは無いかと思っています。
> BEMでは完全反射の閉空間問題は、計算できないのでしょうか?
私どものコードではバグのためお恥ずかしながら計算できていませんが、一般
的には全境界が完全反射の場合でも、発散することなく計算できます。物理的
には、音源から音響エネルギーが音場内に流れていかない、という状態になり
ます(そういう理解でいいですよね?>石塚さん)。
> 色々なコードに触れてみようと考えており、Code Asterも使用すべく、
> とりあえずUbuntu+Salome MECAをPCにインストールしてみました。
> こちらの件に着いても、質問などさせていただいてもよろしいのでしょうか???
> プロジェクトの見当違いでしたら、申し訳ありません。
私どももSalome-Mecaは注目していますが、現状はインストール位までしかサー
ベイしていません。一方で手前味噌で恐縮ですが、小生が役員をしております
OpenCAE学会にSalome-Mecaを熱心にスタディしているグループがおりますので、
そちらのGoogleグループに投稿されることをお勧めします。
http://groups.google.com/group/openfoam
「OpenFOAM」というグループ名がついていますが、Salome-Mecaでも遠慮なく質
問して頂いて結構です。
大嶋
> お世話になります。
> 原因が判明してよかったです。
> 全周Rigidで発生するBEMのバグだったのですね・・・・・
> 今はFDTDを利用して、教科書の内容と比較したりして遊んで(?)いますので、
> BEMでも解ける様になりましたら、その内やってみたいと思います。
BEMというより、私の書いたメッシャクラスのバグでした。とほほ。。。
修正したらまたご連絡いたしますので、少しお時間ください。
> 遅くなりましたが、全周rigidにした場合の不具合報告ありがとうございます。
> 私どもでも再現し、原因は判明しました。
> 目下修正中ですので、今しばらくお待ちください。
メッシャクラスの修正は鈴木さんにお願いするとしまして、
とりあえず全周rigidでBEMコードを動くようにするには、
サンプルコード「sampleBem2.py」の119行目で、
境界条件(名称と値)を設定するときに、
以下のように使われない境界条件(今回はabsorbing)を定義しないようにすれば
計算が最後まで走ります。
(結果の図まで表示されることを確認しております。)
[sampleBem2.py, l.119]
# boundaryCondition = {'rigid':0., 'absorbing':1.}
boundaryCondition = {'rigid':0.}
試して頂ければ幸いです。
様々な境界条件への柔軟な対応は、検討課題とさせて下さい。
>> 現状では、モデルの中に減衰が無いのでエネルギーが無限大になり発散するのでは無いかと思っています。
>> BEMでは完全反射の閉空間問題は、計算できないのでしょうか?
>
> 私どものコードではバグのためお恥ずかしながら計算できていませんが、一般
> 的には全境界が完全反射の場合でも、発散することなく計算できます。物理的
> には、音源から音響エネルギーが音場内に流れていかない、という状態になり
> ます(そういう理解でいいですよね?>石塚さん)。
そのように理解して頂ければ良いと思います。
以下は補足です。
このコードは、周波数領域の境界要素法ですので、
音源からある周波数の純音が放射されている「定常音場」を解析しております。
私の理解では、全周rigidの場合の「定常音場」とは、
・場の音圧が0の時点から音波が放射される。
・全周rigidでエネルギーを吸収する要素が無い為、
音波の放射に従い、場に音響エネルギーがどんどん蓄積される。
・場の音響エネルギーが十分に蓄積された状態になると、
音源からのエネルギーが場に供給されなくなる。
直感的な言い方をすると、
音源からエネルギーを流し込もうとしても、場のエネルギーに押し返される。
・この段階で、場の音響エネルギー(音圧も)は平衡状態(定常音場)になる。
と言うことであり、
全周rigidの条件では、境界要素法はこの平衡状態を求めていることになります。
と、言うわけで計算上は解が求まります。
--
ISHIZUKA