はじめまして

108 views
Skip to first unread message

matsu...@docomo.ne.jp

unread,
Feb 2, 2017, 8:29:59 PM2/2/17
to OpenAcoustics
はじめまして、「はじめての音響数値シミュレーション プログラミングガイド」を参考にしてFDTD法の勉強を進めさせていただいています。

今回質問として、FDTD法のプログラムの内、プログラム5-13(P.113)とプログラム5-23(P.119)についての質問です。

これらのプログラムにZ軸の記述がないのですが、この場合はZ軸を含めた境界条件はどのように考えればよろしいのでしょうか。

よろしくお願いいたします。

ホシカズマ

unread,
Feb 2, 2017, 8:52:05 PM2/2/17
to OpenAcoustics
はじめまして,星と申します。

単純に3次元に拡張してよいです。

プログラム5-23で例を挙げますと,変数の宣言は,

X=40

Y=30

Z=20


P = zeros((X,Y, Z),"float64")


Ux = zeros((X+1,Y, Z),"float64")

Uy = zeros((X,Y+1, Z),"float64")

Uz = zeros((X,Y, Z+1),"float64")


などとして,連続の式,壁面境界の粒子速度更新,運動方程式は


Ux[1:X,:, :]=Ux[1:X,:, :]-dt/Ro/dx*(P[1:X,:, :]-P[:X-1,:, :])

Uy[:,1:Y, :]=Uy[:,1:Y, :]-dt/Ro/dy*(P[:,1:Y, :]-P[:,:Y-1, :])

Uz[:, :, 1:Z]=Uy[:, :1:Z]-dt/Ro/dz*(P[:, :, 1:Z]-P[:, :, Z-1])


Ux[0,:, :]=P[0,:, :]/-Z

Ux[-1,:, :]=P[-1,:, :]/Z

Uy[:,0, :]=P[:,0, :]/-Z

Uy[:,-1, :]=P[:,-1, :]/Z

Uz[:, :,0]=P[:, :,0]/-Z

Uz[:, :,-1]=P[:, :,-1]/Z


P[:X,:Y,:Z] = P[:X,:Y,:Z]-K*dt/dx*(Ux[1:X+1,:]-Ux[:X,:,:]) \

-K*dt/dy*(Uy[:,1:Y+1, :]-Uy[:,:Y,:])\

-K*dt/dz*(Uz[:,1,:,Z+1]-Uy[:,:,:Z])


などとすればよいでしょう。動作確認はしていません。

3次元になると安定条件が厳しくなります。CFL数(クーラン数)をもとめて,適切な時間ステップで計算してあげてください。

toshihisa matsuo

unread,
Feb 2, 2017, 9:07:09 PM2/2/17
to OpenAcoustics
星様

ご返答ありがとうございました。

突然の質問に対してすぐに返答いただけて助かりました。
本当にありがとうございます。
Reply all
Reply to author
Forward
0 new messages