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

シミュレーションプログラム/TLM法

Last-modified: 2010-12-27 (月) 01:23:59 (2548d)

TLM法による音波伝搬シミュレーション

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

原理に関してその概略を述べるには、スペース的に難しいので下記の参考文献をあげておきます。

加川 幸雄, 土屋 隆生, 吉田 則信, 佐藤 雅弘, "等価回路網法入門―伝達線路行列法と空間回路網法," 森北出版, 1999

matlabによるプログラム

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