OpenAcoustics CookBook内のコヌドに぀いお

480 views
Skip to first unread message

sakakibara

unread,
Jul 14, 2011, 2:59:33 AM7/14/11
to OpenAcoustics
お䞖話になりたす。

FEM、BEMで閉管路内で定垞状態の音圧・粒子速床の分垃を比范しおみようず考えおいたす。
OpenAcoustics CookBook内のコヌドを利甚しお蚈算を詊みおいたすが、刀らない点をご教授頂けたらず思いたす。

FEM、BEMずもに、速床ポテンシャルの蚈算結果たでしか出されおいないように芋えたすが、
䜕か意図があっおのこずなのでしょうか
速床ポテンシャルを音圧に換算するには、時間埮分2πを掛けるするので良いず思うのですが、
粒子速床に換算する堎合は、2点間のレベル差ず距離から算出する事になるず思いたす。
3方向のベクトル算出になるず思いたすが、具䜓的にはどの様に算出するべきなのでしょうか
メッシュ間隔などもバラバラですので、どの様にすればいいのか刀りたせん。

たた、のコヌドがうたく動いおいない気がしたす。
䜿甚するPythonのバヌゞョンなどで、䞍具合などが発生するようなものなのでしょうか
OpenAcoustics CookBookで䜿甚されおいたした、Pythonのバヌゞョンを教えおいただけたせんでしょうか
圓方、Ver2.6.6 にお実斜しおいたす。
よろしくお願いいたしたす。

Hisaharu SUZUKI

unread,
Jul 14, 2011, 5:46:14 AM7/14/11
to openac...@googlegroups.com
把原さん

はじめたしお。日本゚ノィクサヌの鈎朚ず申したす。
䞻にFEM, FDTDの郚分を担圓しおおりたす。

> FEM、BEMで閉管路内で定垞状態の音圧・粒子速床の分垃を比范しおみようず考えおいたす。
> OpenAcoustics CookBook内のコヌドを利甚しお蚈算を詊みおいたすが、刀らない点をご教授頂けたらず思いたす。

ずりあえず、FEMの郚分は了解です

> FEM、BEMずもに、速床ポテンシャルの蚈算結果たでしか出されおいないように芋えたすが、
> 䜕か意図があっおのこずなのでしょうか

説明が簡䟿なので、速床ポテンシャルにしおいたした。

> 速床ポテンシャルを音圧に換算するには、時間埮分2πを掛けるするので良いず思うのですが、

おっしゃるずおり、時間埮分すれば蚈算できたす。

> 粒子速床に換算する堎合は、2点間のレベル差ず距離から算出する事になるず思いたす。
> 3方向のベクトル算出になるず思いたすが、具䜓的にはどの様に算出するべきなのでしょうか
> メッシュ間隔などもバラバラですので、どの様にすればいいのか刀りたせん。

粒子速床は、FEMの堎合は芁玠自䜓を空間埮分しお
蚈算するこずもできるず思いたすし、
近傍の2点で空間差分をずっお粒子速床倀ずするこずもできたす。

芁玠内の音圧の倀は、補間しお蚈算したすが
その蟺の理論説明もコヌドも省いおしたっおいるので
ちょっず倧倉かも知れたせんね。
資料ずコヌドを怜玢しおみたすので、芋぀かったらお送りいたしたす。

BEMは埗意でないのであれですが、
解析的に埮分した匏を離散化もできるず思いたすし
䞊蚘の近傍2点の蚈算でもできるず思いたす。
近傍2点の蚈算はBEMのほうがやりやすそうですね。

補足があれば、お願いいたしたす→みなさん


先日著者で集たったのですが、粒子速床が必芁かどうかは
けっこう議論が分かれおいたした。
個人的には音響むンテンシティの蚈算ずかしたいひずもいるず思うので
あっおもいいかなず思っおいたす。

> たた、のコヌドがうたく動いおいない気がしたす。
> 䜿甚するPythonのバヌゞョンなどで、䞍具合などが発生するようなものなのでしょうか
> OpenAcoustics CookBookで䜿甚されおいたした、Pythonのバヌゞョンを教えおいただけたせんでしょうか
> 圓方、Ver2.6.6 にお実斜しおいたす。
> よろしくお願いいたしたす。

゚ラヌメッセヌゞ等お送りいただくこずはできたすか
私のほうでも、埌で怜蚌しおみたす。


Takuya OSHIMA

unread,
Jul 14, 2011, 6:27:00 AM7/14/11
to openac...@googlegroups.com
倧嶋です。

> 補足があれば、お願いいたしたす→みなさん

FEMであれば、募配の蚈算は汎甚のポストプロセッサでも出来おしたう、ずいう
のはありたすね。

倧嶋

sakakibara

unread,
Jul 14, 2011, 11:45:06 AM7/14/11
to OpenAcoustics
鈎朚様、倧嶋先生

 早速のご返答ありがずうございたす。
この掲瀺板にふさわしい内容かどうかわからなかったのですが、
いきなりややこしい質問をしおしたったのかもしれたせん。
申し蚳ありたせん。


あたり解析のこずがわかっおいたせんで、ポスト凊理で募配蚈算ができるずいうなども知りたせんでした。
ポストプログラムに持っおいくファむルフォヌマットも、ただよく刀っおいないのですが・・・・汗

著者の方々の意芋が分かれおいる粒子速床の有無に関しおは、「可胜であれば機胜ずしお欲しい」ず考えたす。
やはり、そのうち音響むンテンシティも蚈算しお、ポスト凊理でむンテンシティの衚瀺などができたら良いな等ず思ったりしおたす。

BEMのプログラムは、もう少し芋盎しおみたす。
圓方のミスで曞き間違いなどがある堎合は、お手数を煩わせるのは申し蚳ありたせんので。

たた幌皚な質問を含め、色々ずご質問させおいただくこずもあるかず思いたすが、よろしくお願いいたしたす。

Hisaharu SUZUKI

unread,
Jul 14, 2011, 7:41:30 PM7/14/11
to openac...@googlegroups.com
把原様

鈎朚です。

>  早速のご返答ありがずうございたす。
> この掲瀺板にふさわしい内容かどうかわからなかったのですが、
> いきなりややこしい質問をしおしたったのかもしれたせん。
> 申し蚳ありたせん。

ずんでもないです。

> あたり解析のこずがわかっおいたせんで、ポスト凊理で募配蚈算ができるずいうなども知りたせんでした。
> ポストプログラムに持っおいくファむルフォヌマットも、ただよく刀っおいないのですが・・・・汗

僕も知りたせんでした(汗
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__

> たた幌皚な質問を含め、色々ずご質問させおいただくこずもあるかず思いたすが、よろしくお願いいたしたす。

お埅ちしおいたす。

ISHIZUKA Takashi

unread,
Jul 15, 2011, 1:02:28 AM7/15/11
to openac...@googlegroups.com
把原様

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䞊でも音線法担圓の方が動䜜を確認しおいたすが、
私の方では、バヌゞョン情報たでは把握しおおりたせん。

鈎朚さんのコメントの通り、゚ラヌコヌドを頂ければ
䜕かお圹に立おるかも知れたせん。

【粒子速床の蚈算】
サンプルコヌドはわかり易さを最優先しおいたすので、
速床ポテンシャルのみを蚈算しおいたす。

粒子速床は、
近接点間の音圧差から求めおも良いず思いたす。
私自身はやったこずが無いので、どの皋床近接させるか等のノりハりはありたせんが。

たた、連立方皋匏の解境界衚面䞊の速床ポテンシャルを
境界積分方皋匏を方向埮分した圢匏NDF型境界積分方皋匏
に代入すれば、点の蚈算で粒子速床が求たりたす。

サンプルコヌドには実装しおいたせんが、
実甚コヌド段階にあたるSimpleAPIには、
粒子速床や音響むンテンシティの蚈算機胜も実装したいず考えおいたす。
公開にはただ少し時間がかかりたすが、ご期埅頂ければ幞いです。

その他、ご䞍明な点やご芁望がありたしたら、
圓フォヌラムにあげお頂ければ、可胜な限り察応させお頂きたす。
タむムラグはご容赊䞋さい。


Takuya OSHIMA

unread,
Jul 16, 2011, 12:46:16 AM7/16/11
to openac...@googlegroups.com
倧嶋です。

> 僕も知りたせんでした(汗
> ParaViewでできるず思っおいいのでしょうか→倧嶋さん

ParaView、Gmshずもできたす。
ただ、耇玠数の扱いは工倫が必芁かもしれたせん。

倧嶋

sakakibara

unread,
Jul 19, 2011, 8:59:36 AM7/19/11
to OpenAcoustics
倧嶋先生殿、鈎朚様、石塚様

お䞖話になりたす。
質問しおおいお、ご返答が遅くなっおすみたせん。
サンプルコヌドは、あくたでサンプルコヌドで、実甚コヌドはSimpleAPIを䜜成するこずになったのですね。
あずで、Code ずElmerの蚈算結果ず比范しおいた
「各皮オヌプン゜ヌスFEMコヌドによる呚波数領域音響䌝搬解析粟床のベンチマヌクテスト:Code_Aster・Elmer・
OpenAcoustics」
を芋させおいただいお1st STEPだったんですね。

先は長そうですが、ずりあえずサンプルコヌドの件に着いおご返答させおいただきたす。
珟圚䜿甚しおいるPythonのバヌゞョンをご連絡いたしたす。
Python 2.6.6
numpy 1.6.0
scipy  0.9.0
matplotlib 1.0.1
以䞊を䜿甚しおおりたす。

BEMがうたく動䜜しおいない点に関しおは、少し原因に぀いお進展掚枬がありたした。
蚈算コヌドのタむプミスを疑い、CookBook内のList3.17にあるモデルを蚈算しお芋たした。

lc = 0.49;←簡単化のために0.1より倉曎しおいたす
// Definition of points
Point(1) = {0.5, 0.5, 0, lc};
Point(2) = {-0.5, 0.5, 0, lc};
Point(3) = {-0.5, -0.5, 0, lc};
Point(4) = {0.5, -0.5, 0, lc};

Line(1) = {1,2};
Line(2) = {2,3};
Line(3) = {3,4};
Line(4) = {4,1};

Physical Line("rigid") = {1,2,4};
Physical Line("absorbing") = {3};
Line Loop(1) = {1,2,3,4};

䞊蚘のモデルで蚈算するず、䟋題ず同じようになるのは確認させおいただきたした。
簡単化のために各Lineを0.49mピッチで2分割にしお、8芁玠になりたす。

これを勝手なのですが、䟋えばLine(3)をrigidに倉曎し、呚囲を完党剛壁状態にしたいず思い
Line(3)が吞音芁玠になっおおりたすが、剛壁に倉曎するために
//Physical Line("rigid") = {1,2,4};
//Physical Line("absorbing") = {3};
Physical Line("rigid") = {1,2,3,4};
ずいうコヌドに倉曎しお蚈算しおいたした。

するず、なぜか芁玠数が16になり、以䞋のような゚ラヌメッセヌゞが出おきおいたす。
Warning (from warnings module):
File "C:\Documents and Settings\B000\BEM.py", line 33
dr_dn = - (r_x * element['normalVector'][0] + r_y *
element['normalVector'][1]) / abs_r
RuntimeWarning: invalid value encountered in divide

Warning (from warnings module):
File "C:\Documents and Settings\B000\BEM.py", line 17
return special.j1(x) + 1j * special.y1(x)
RuntimeWarning: invalid value encountered in multiply

Warning (from warnings module):
File "C:\Documents and Settings\B000\BEM.py", line 35
return h11(abs_r * waveNumber) * dr_dn
RuntimeWarning: invalid value encountered in multiply

Warning (from warnings module):
File "C:\Documents and Settings\B000\BEM.py", line 13
return special.j0(x) + 1j * special.y0(x)
RuntimeWarning: invalid value encountered in multiply

Warning (from warnings module):
File "C:\Python26\lib\site-packages\scipy\integrate\quadrature.py",
line 58
return (b-a)/2.0*sum(w*func(y,*args),0), None
RuntimeWarning: invalid value encountered in multiply

Warning (from warnings module):
File "C:\Python26\lib\site-packages\scipy\integrate\quadrature.py",
line 168
AccuracyWarning)
AccuracyWarning: maxiter (50) exceeded. Latest difference = -1.#IND00e
+00

珟状では、モデルの䞭に枛衰が無いので゚ネルギヌが無限倧になり発散するのでは無いかず思っおいたす。
BEMでは完党反射の閉空間問題は、蚈算できないのでしょうか

以䞊、よろしくお願いいたしたす。

远蚘
色々なコヌドに觊れおみようず考えおおり、Code Asterも䜿甚すべく、
ずりあえずUbuntuSalome MECAをPCにむンストヌルしおみたした。
こちらの件に着いおも、質問などさせおいただいおもよろしいのでしょうか
プロゞェクトの芋圓違いでしたら、申し蚳ありたせん。

Takuya OSHIMA

unread,
Aug 6, 2011, 11:48:02 AM8/6/11
to openac...@googlegroups.com
倧嶋です。

遅くなりたしたが、党呚rigidにした堎合の䞍具合報告ありがずうございたす。
私どもでも再珟し、原因は刀明したした。
目䞋修正䞭ですので、今しばらくお埅ちください。

> 珟状では、モデルの䞭に枛衰が無いので゚ネルギヌが無限倧になり発散するのでは無いかず思っおいたす。
> BEMでは完党反射の閉空間問題は、蚈算できないのでしょうか

私どものコヌドではバグのためお恥ずかしながら蚈算できおいたせんが、䞀般
的には党境界が完党反射の堎合でも、発散するこずなく蚈算できたす。物理的
には、音源から音響゚ネルギヌが音堎内に流れおいかない、ずいう状態になり
たす(そういう理解でいいですよね石塚さん)。

> 色々なコヌドに觊れおみようず考えおおり、Code Asterも䜿甚すべく、
> ずりあえずUbuntuSalome MECAをPCにむンストヌルしおみたした。
> こちらの件に着いおも、質問などさせおいただいおもよろしいのでしょうか
> プロゞェクトの芋圓違いでしたら、申し蚳ありたせん。

私どももSalome-Mecaは泚目しおいたすが、珟状はむンストヌル䜍たでしかサヌ
ベむしおいたせん。䞀方で手前味噌で恐瞮ですが、小生が圹員をしおおりたす
OpenCAE孊䌚にSalome-Mecaを熱心にスタディしおいるグルヌプがおりたすので、
そちらのGoogleグルヌプに投皿されるこずをお勧めしたす。
http://groups.google.com/group/openfoam
「OpenFOAM」ずいうグルヌプ名が぀いおいたすが、Salome-Mecaでも遠慮なく質
問しお頂いお結構です。

倧嶋

sakakibara

unread,
Aug 9, 2011, 8:17:10 AM8/9/11
to OpenAcoustics
お䞖話になりたす。
原因が刀明しおよかったです。
党呚Rigidで発生するBEMのバグだったのですね・・・・・
今はFDTDを利甚しお、教科曞の内容ず比范したりしお遊んでいたすので、
BEMでも解ける様になりたしたら、その内やっおみたいず思いたす。

> OpenCAE孊䌚にSalome-Mecaを熱心にスタディしおいるグルヌプがおりたすので、
> そちらのGoogleグルヌプに投皿されるこずをお勧めしたす。http://groups.google.com/group/openfoam
> 「OpenFOAM」ずいうグルヌプ名が぀いおいたすが、Salome-Mecaでも遠慮なく質
> 問しお頂いお結構です。

情報を頂き有難うございたす。
色々ず觊っおみたのですが、なかなか思うように進たないのが実情で断念しかけおいたした。
短期間でやろうずするのがいけないのですが・・・・
時間をかけお、少しず぀進めおいこうず思いたす。

有難うございたした。

Hisaharu SUZUKI

unread,
Aug 9, 2011, 6:25:05 PM8/9/11
to openac...@googlegroups.com
鈎朚です。

> お䞖話になりたす。
> 原因が刀明しおよかったです。
> 党呚Rigidで発生するBEMのバグだったのですね・・・・・
> 今はFDTDを利甚しお、教科曞の内容ず比范したりしお遊んでいたすので、
> BEMでも解ける様になりたしたら、その内やっおみたいず思いたす。

BEMずいうより、私の曞いたメッシャクラスのバグでした。ずほほ。。。
修正したらたたご連絡いたしたすので、少しお時間ください。

ISHIZUKA Takashi

unread,
Aug 11, 2011, 9:13:42 AM8/11/11
to openac...@googlegroups.com
石塚です。


> 遅くなりたしたが、党呚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

sakakibara

unread,
Aug 15, 2011, 12:34:20 PM8/15/11
to OpenAcoustics
鈎朚様、石塚様

 ご連絡有難うございたす。

> ずりあえず党呚rigidでBEMコヌドを動くようにするには、
> # boundaryCondition = {'rigid':0., 'absorbing':1.}

そうですね。蚀われるずおり
#boundaryCondition = {'rigid':0., 'absorbing':0.}
ず蚀う圢にしおも、党呚rigidで蚈算できるかもしれたせんね。
たた埌で詊しお芋たす。

> 様々な境界条件ぞの柔軟な察応は、怜蚎課題ずさせお䞋さい。
やはりサンプルコヌドず蚀う事ですので、どこたで察応するのかが問題になるのでしょうね。
サンプルコヌドを修正する事でsimpleAPIに反映できるのであれば、あたり問題ないのかもしれたせんが、
反映できないのであれば、時間のロスになりたすから・・・・お手数をおかけしおすみたせん。
ふず思ったのですが、サンプルコヌドのFEMで開空間の蚈算っお可胜なのでしょうか


> このコヌドは、呚波数領域の境界芁玠法ですので、
> 音源からある呚波数の玔音が攟射されおいる「定垞音堎」を解析しおおりたす。
> 私の理解では、党呚rigidの堎合の「定垞音堎」ずは、
> ・堎の音圧が0の時点から音波が攟射される。
> ・党呚rigidで゚ネルギヌを吞収する芁玠が無い為、
・・・・・・・・省略
> ・この段階で、堎の音響゚ネルギヌ音圧もは平衡状態定垞音堎になる。
> ず蚀うこずであり、
> 党呚rigidの条件では、境界芁玠法はこの平衡状態を求めおいるこずになりたす。

そうですよね。
平衝状態を求めおいるのですから、発散するのはおかしいですよね。
ずんちんかんな質問をしお、お恥ずかしい限りです。
たた詳しくご説明しおいただき、非垞に勉匷になりたす。
有難うございたした。

今埌ずも、よろしくお願いいたしたす。
sakakibara
Reply all
Reply to author
Forward
0 new messages