トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS

シミュレーションプログラム/TLM法 の変更点


[[FDTD法]]
*TLM法による音波伝搬シミュレーション [#d2126b09]

TLM法(Transmission Line Matrix method:伝達線路行列法)は、FDTD法のように波動方程式の近似により計算をするのではなく、波動伝搬の原理であるホイヘンスの原理を模式したものです。

原理に関してその概略を述べるには、スペース的に難しいので下記の参考文献をあげておきます。
 加川 幸雄, 土屋 隆生, 吉田 則信, 佐藤 雅弘, "等価回路網法入門―伝達線路行列法と空間回路網法," 森北出版, 1999

**matlabによるプログラム [#t8a58269]
[[tlm.m:http://www.tohlab.net/cont/tlm.m]]にもありますが、以下がmatlabによるプログラムになります。
出来るだけ、for文を使わないようにして、三次元配列には結果を入れるもののみとなっています。三次元、若しくは四次元配列を用いた方がコードは綺麗になりますが、実行速度は遅くなります。

 %TLMによる音波伝搬シミュレーション
 clear
 nx=256;%xメッシュサイズ
 ny=256;%yメッシュサイズ
 time=512;%駆動時間
 Vi1=zeros(nx,ny);%入射パルス(三次元配列は使わない)
 Vi2=zeros(nx,ny);
 Vi3=zeros(nx,ny);
 Vi4=zeros(nx,ny);
 Vr1=zeros(nx,ny);%散乱
 Vr2=zeros(nx,ny);
 Vr3=zeros(nx,ny);
 Vr4=zeros(nx,ny);
 V=zeros(nx,ny,time);%接点電圧
 Vt=zeros(nx,ny);%接点電圧(一時保管)
 r0=((1-sqrt(2))/(1+sqrt(2)));%無反射の反射係数 
 
 xin=30;%入力電圧x座標
 yin=70;%入力電圧y座標
 w=4;%入力電圧パルス幅                           
 shift=12;%パルス中心の時間遅れ
 t=1:time;
 f=-2*((t-shift)/(w.^2)).*exp(-(((t-shift)./w).^2)).*4.68;%入力電圧
 
 for t=2:time
     %散乱
     Vr1=Vt-Vi1;
     Vr2=Vt-Vi2;
     Vr3=Vt-Vi3;
     Vr4=Vt-Vi4;
     
     %散乱パルスを隣の入射パルスへ
     Vi1(:,2:ny)=Vr3(:,1:ny-1);
     Vi3(:,1:ny-1)=Vr1(:,2:ny);
     Vi2(2:nx,:)=Vr4(1:nx-1,:);
     Vi4(1:nx-1,:)=Vr2(2:nx,:);
     
     %境界条件
     Vi1(:,1)=r0.*Vr1(:,1);%上端境界条件
     Vi3(:,ny)=r0.*Vr3(:,ny);%下端境界条件
     Vi2(1,:)=r0.*Vr2(1,:);%左端境界条件 	
     Vi4(nx,:)=r0.*Vr4(nx,:);%右端境界条件
     
     %接点電圧の導出
     Vt=0.5*(Vi1+Vi2+Vi3+Vi4);
     
     %接点電圧の保管
     V(:,:,t)=Vt;
     
     %入力電圧(メッシュの中心に入力)
     Vt(xin,yin)=f(t);
 end