Tomografi Delay Time Sederhana

1,133 views

Published on

Published in: Engineering
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,133
On SlideShare
0
From Embeds
0
Number of Embeds
189
Actions
Shares
0
Downloads
0
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Tomografi Delay Time Sederhana

  1. 1. SCRIPT/SYNTAX DALAM MATLABclc, clear all%DEFINISIKAN SEMUA PARAMETER DAN VARIABEL YANG KITA PUNYAreceiver_x=2000; receiver_y=1000;source_x1=0; source_y1=250;source_x2=0; source_y2=633;source_x3=1000; source_y3=0;dt_obs11=3.018; dt_obs21=2.894; dt_obs31=1.141;n_ray=3;%membuat koordinat kedalam bentuk matriks yang lebih "mudah" diolahRx=2000; Ry=1000;Sx=[source_x1 source_x2 source_x3]; Sy=[source_y1 source_y2 source_y3];dt_obs=[dt_obs11 dt_obs21 dt_obs31];grid_x=0:1:2000;grid_y=0:1:1000;%HITUNG KECEPATAN AWAL MODEL (LINIER)%menghitung panjang ray linier dari source ke receiverray_total=zeros(n_ray,1);for i=1:n_ray ray_total(i)=((Rx-Sx(i)).^2 + (Ry-Sy(i)).^2).^0.5;end%membuat kecepatan awal model liniervsem=zeros(n_ray,1);for i=1:n_ray vsem(i)=ray_total(i) / dt_obs(i);endv0_linier=sum(vsem) / n_ray;%menghitung dt kalkulasi linierdt_cal_linier=zeros(n_ray,1);for i=1:n_ray dt_cal_linier(i)=ray_total(i) / v0_linier;end%menghitung delta waktu (observasi - kalkulasi)dt_linier=zeros(n_ray,1);for i=1:n_ray dt_linier(i)=dt_obs(i) - dt_cal_linier(i);end%membuat matriks kernelG_linier=[ray_total(1)/2 ray_total(1)/2; ... ray_total(2)/2 ray_total(2)/2;0 ray_total(3)];%melakukan inversi untuk mendapatkan delta Sm_linier=(inv(G_linier*G_linier))*G_linier*dt_linier;%mencari kecepatan tiap blok dengan asumsi delta V >>dv_linier=zeros(length(m_linier),1);v_linier=zeros(length(m_linier),1);for i=1:length(m_linier) dv_linier(i)= (-1*m_linier(i)*v0_linier^2) / (1 +m_linier(i)*v0_linier); v_linier(i)=v0_linier + dv_linier(i);end%SHOOTING METHOD DENGAN HK. SNELL%mendefinikan variabel yang digunakan untuk iterasi shootingi=1; j=1; k=1; %variabel nilai awal pertambahan iterasisudut(1)=11; %sudut tembakan dari sorce ke-1sudut2(1)=5.7; %sudut tembakan dari sorce ke-2while k <= 5
  2. 2. %mendefinisikan kondisi kecepatan tiap blok untuk tiap iterasiif k==1 %iterasi pertama memakai kecepatan linier terlebih dahulu v_snell=v_linier;else v_snell=v_nonlin;endb1=1000; b2=1000; %mendefinisikan panjang horizontal tiap kotaksel_1=1; sel_2=1; %mendefinisikan nilai syarat awal iterasiwhile sel_1 > 0.005 %menghitung ray tracing pada SHOOT SOURCE ke-1 (Prinsip Phytagoras) %menghitung ray shooting pada kotak pertama c1=b1 / cosd(sudut(i)); a1=c1 * sind(sudut(i)); T1x(i)=Sx(1) + b1; T1y(i)=Sy(1) + a1; grad(i)=(T1y(i) - Sy(1)) / (T1x(i) - Sx(1)); %menghitung sudut pergi/sudut datang ray pada kotak 2 dengan Hk. Snell sudut3(i)=abs(asind((v_snell(2) * sind(sudut(i))) / v_snell(1))); %menghitung ray shooting pada kotak kedua c2=abs(b2 / cosd(sudut3(i))); a2=abs(c2 * sind(sudut3(i))); T2x(i)=T1x(i) + b2; T2y(i)=T1y(i) + a2; grad2(i)=(T2y(i) - T1y(i)) / (T2x(i) - T1x(i)); ray_shoot1(i,1)=(((T1x(i)-Sx(1)).^2 + (T1y(i)-Sy(1)).^2).^0.5); ray_shoot1(i,2)=(((T2x(i)-T1x(i)).^2 + (T2y(i)-T1y(i)).^2).^0.5); %menghitung SELISIH nilai koordinat y antara receiver dan kalkulasi tembak sel_1=abs(T2y(i)-Ry); if sel_1 < 0.005 min_1=sel_1; sudut(i); sh_1=i; end i=i+1; %penambahan nilai iterasi shoot ke-1 sudut(i)=11 + (i-1)*0.0001; %sudut tembakan dari sorce ke-1endwhile sel_2 > 0.005 %menghitung ray tracing pada SHOOT SOURCE ke-2 (Prinsip Phytagoras) %menghitung ray shooting pada kotak pertama c3=b1 / cosd(sudut2(j)); a3=c3 * sind(sudut2(j)); T3x(j)=Sx(2) + b1; T3y(j)=Sy(2) + a3; grad3(j)=(T3y(j) - Sy(2)) / (T3x(j) - Sx(2)); %menghitung sudut pergi/sudut datang ray pada kotak 2 dengan Hk. Snell sudut4(j)=abs(asind((v_snell(2) * sind(sudut2(j))) / v_snell(1))); %menghitung ray shooting pada kotak kedua c4=abs(b2 / cosd(sudut4(j))); a4=abs(c4 * sind(sudut4(j))); T4x(j)=T3x(j) + b2; T4y(j)=T3y(j) + a4; grad4(j)=(T4y(j) - T3y(j)) / (T4x(j) - T3x(j)); ray_shoot2(j,1)=(((T3x(j)-Sx(2)).^2 + (T3y(j)-Sy(2)).^2).^0.5); ray_shoot2(j,2)=(((T4x(j)-T3x(j)).^2 + (T4y(j)-T3y(j)).^2).^0.5); %menghitung SELISIH nilai koordinat y antara receiver dan kalkulasi
  3. 3. tembak sel_2=abs(T4y(j)-Ry); if sel_2 < 0.005 min_2=sel_2; sudut2(j); sh_2=j; end j=j+1; %penambahan nilai iterasi shoot ke-2 sudut2(j)=5.7 + (j-1)*0.0001; %sudut tembakan dari sorce ke-2 end %HITUNG KECEPATAN dengan prinsip tomografi persamaan yang NON-LINIER G_nonlin=[ray_shoot1(sh_1,1) ray_shoot1(sh_1,2); ... ray_shoot2(sh_2,1) ray_shoot2(sh_2,2)]; dt_cal_nonlin=G_nonlin*(1./v_snell); dt_nonlin=zeros(2,1); for i=1:2 dt_nonlin(i)=dt_obs(i) - dt_cal_nonlin(i); end dt_rms(k)=sqrt(sum(dt_nonlin.^2)./2); w=(dt_nonlin.^2).^-1; %melakukan inversi untuk mendapatkan delta S m_nonlin=(inv(G_nonlin*diag(w)*G_nonlin))*G_nonlin*diag(w)*dt_nonlin; %mencari kecepatan tiap blok dengan asumsi delta V >> dv_nonlin=zeros(length(m_nonlin),1); v_nonlin=zeros(length(m_nonlin),1); for i=1:length(m_nonlin) dv_nonlin(i)= (-1*m_nonlin(i)*v_snell(i).^2) / (1 + m_nonlin(i)*v_snell(i)); v_nonlin(i)=v_snell(i) + dv_nonlin(i); endk=k+1;end%PLOT GRAFIK 2D KECEPATAN BLOKfigure(1)[X Y]=meshgrid(0:1:2000, 0:1:1000);Z=zeros(1001,2001);Z(:,1:1000)=v_nonlin(1); Z(:,1001:2001)=v_nonlin(2);plot(grid_x(1001),grid_y,-r)hold oncontourf(X,Y,Z,1)colormap(jet); colorbar;colorbar(YTickLabel,{,,,,,})xlim([0 2000]); ylim([0 1000])set(gca,ydir,reverse)xlabel(Jarak (m)); ylabel(Kedalaman (m)); title(Ray TracingTomography)##OUTPUT:
  4. 4. %PLOT GRAFIK RMSfigure(2)iter=1:1:k-1;plot(iter,dt_rms,-b)xlim([1 k-1]); ylim([0 0.025])xlabel(Iterasi ke-x); ylabel(rms (s)); title(Grafik RMS Waktu)##OUTPUT:%PLOT GRAFIK 2D DENGAN RAY SHOOTINGfigure(3)plot(grid_x(1001),grid_y,-r)q=length(T2y);r=length(T4y);for i=1:length(T2y) hold on line([Sx(1) T1x(i)],[Sy(1) T1y(i)],LineStyle,-) hold on line([T1x(i) T2x(i)],[T1y(i) T2y(i)],LineStyle,-) hold on
  5. 5. line([Sx(1) T1x(q)],[Sy(1) T1y(q)],Color,r,LineStyle,-,LineWidth,2) hold on line([T1x(q) T2x(q)],[T1y(q) T2y(q)],Color,r,LineStyle,-,LineWidth,2)endfor i=1:length(T4y) hold on line([Sx(2) T3x(i)],[Sy(2) T3y(i)],LineStyle,-) hold on line([T3x(i) T4x(i)],[T3y(i) T4y(i)],LineStyle,-) hold on line([Sx(2) T3x(r)],[Sy(2) T3y(r)],Color,r,LineStyle,-,LineWidth,2) hold on line([T3x(r) T4x(r)],[T3y(r) T4y(r)],Color,r,LineStyle,-,LineWidth,2)endxlim([0 2000]); ylim([0 1000]); set(gca,ydir,reverse)xlabel(Jarak (m)); ylabel(Kedalaman (m)); title(Ray TracingTomography)##OUTPUT:

×