i
APENDIX A
PERSAMAAN MAXWELL
Persamaan Maxwell dalam bentuk differensial.
Hukum Gauss
⃗⃗ ⃗
⃗(A.1)
Hukum Gauss untuk magnetisme
⃗⃗ ⃗
(A.2)
Hukum Induksi Faraday
⃗⃗ ⃗
⃗
(A.3)
Hukum Ampere
⃗⃗ ⃗
⃗
(A.4)
Persamaan Maxwell dalam bentuk integral
Hukum Gauss
∮ ⃗⃗ ∫
⃗
(A.5)
Hukum Gauss untuk magnetisme
∮ ⃗
(A.6)
Hukum Induksi Faraday
∮ ⃗ ∫ ⃗
(A.7)
Hukum Ampere
∮ ⃗⃗ ∫ ⃗⃗ ∫
(A.8)
Karena (teorema Gauss dan Stokes)
∮ ∮ ⃗⃗
∮ ∮ ⃗⃗
Untuk medan listrik pada persamaan (A.5) dan (A.7) dalam keadaan konservatif
sehingga dapat ditulis :
⃗⃗ ⃗⃗
(A.9)
⃗⃗ ⃗
(A.10)
Selanjutnya hubungan vektornya
⃗⃗ ⃗
(A.11)
dan
⃗ ∫ ⃗
(A.13)
⃗⃗
= kerapatan fluks listrik (C/m
2)
= rapat volume muatan (C/m
3)
⃗
= Medan Listrik (V/m)
⃗
= tegangan listrik (V)
= permitivitas dielektrik (F/m)
Hubungkan persamaan (A.9), (A.11) dan (A.12) akan didapat persamaan Poisson :
⃗⃗ ⃗⃗ ⃗
(A.14a)
Jika
konstan,
⃗
(A.14b)
Jika
maka menjadi persamaan Laplace :
⃗⃗ ⃗⃗ ⃗
(A.15a)
⃗
(A.15b)
Karena (hukum Biot-Savart)
∮ ⃗⃗
∮
∮ ⃗
⃗⃗
= fluks magnet (A/m)
⃗
= Medan magnet (T)
Maka persamaan (A.6) dan(A.8) menjadi
⃗⃗ ⃗⃗
(A.16)
Dan
⃗⃗ ⃗
(A.17)
Dengan hubungan vector
⃗ ⃗⃗
(A.18)
⃗
(A.19)
= permeabilitas magnetic (H/m)
i
Medan magnet pada potensial A
⃗ ⃗⃗
(A.20)
Dengan menggunakan vektor identitas
⃗⃗ ( ⃗⃗ ) ⃗⃗ ( ⃗⃗ )
Jika (A.17) dan (A.18) dihubungkan dalam kondisi tanpa arus (ruang hampa) maka
⃗⃗
sehingga didapat persamaan Poisson :
(A.21)
Ketika
maka
APENDIX B
PERSAMAAN GELOMBANG
Gelombang Elektromagnetik merambat secara transversal. Dengan medan listrik dan
medan magnet yang merambat saling tegak lurus. Misalkan gelombang elektromagnet
merambat ke sumbu-x dan arah gerak medan listrik ke sumbu-y sementara medan
magnetik ke sumbu-z sehingga diperoleh
⃗
⃗
⃗ ⃗
dan
⃗
⃗
⃗
⃗
. Maka persamaan Maxwell akan berubah menjadi :
⃗⃗ ⃗
⃗
(B.1)
⃗⃗ ⃗
⃗
(B.2)
⃗⃗ ⃗
⃗
⃗
(B.3)
⃗
⃗
(B.4)
⃗⃗ ⃗
⃗
⃗
(B.5)
⃗⃗
⃗
(B.6)
Persamaan (B.4) dan persamaan (B.6) bisa disimpulkan medan listrik dan medan
magnet hanya berpengaruh pada sumbu x dan gayut waktu.
⃗
⃗
⃗
⃗
Jika digabungkan maka menjadi :
⃗
⃗
i
Atau
,
=0
Maka diperoleh nilai
√
Dengan v = c = kecepatan cahaya = 3 x 10
8m
Dengan mengubah daerah waktu menjadi frekuensi maka
Dengan
Maka persawaan Maxwell dapat dituliskan
⃗ ⃗⃗
⃗⃗ ⃗
Dengan vektor perambatan elektromagnetik sebagai berikut :
⃗ ⃗⃗
⃗ ⃗⃗
⃗ ⃗⃗
⃗⃗ ⃗
⃗⃗ ⃗
⃗⃗ ⃗
Maka dapat disimpulkan bahwa
√
Dengan n adalah indeks bias.
APENDIX C
METODE FDTD (FINITE DIFFERENCE TIME DOMAIN)
Metode ini menggunakan turunan fungsi yang dihubungkan dengan beda hingga
seperti berikut
(C.1)
Dengan dihubungkan ke dalam medan listrik dan medan magnet, akan dihasilkan
persamaan FDTDnya misalkan untuk waktu penjalaran medan E dan medan H sebagai
berikut
untuk
⃗
untuk
⃗⃗
dan letak pada sumbu z misalkan
untuk
⃗
untuk
⃗⃗
Telah diketahui persamaan Maxwell
⃗⃗
⃗
(C.2)
⃗
⃗⃗
(C.3)
Dengan notasi
⃗
⃗
dan
⃗⃗
⃗⃗ (
)
Maka didapat :
⃗
⃗
⃗
⃗
⃗
⃗
⃗⃗
⃗⃗
⃗⃗
⃗⃗
i
Dengan menghubungkan ke dalam persamaan (C.2) dan (C.3) persamaan diatas
menjadi
⃗⃗
(
) ⃗⃗
(
)
⃗
⃗
⃗
⃗
⃗⃗
⃗⃗
(C.4)
⃗⃗ ⃗
(C.5)
Dengan
dan
dalam model Drude diberikan dalam persamaan
Substitusi model Drude dalam persamaan (C.5) akan didapat
⃗⃗
⃗
⃗⃗
⃗
⃗⃗
( )⃗
⃗⃗
( )
⃗
⃗⃗ ⃗⃗
⃗
⃗
⃗
(C.6)
nilai fungsi frekuensi dikonversikan menjadi fungsi waktu dengan hubungan
dan
. Dengan perkalian
merupakan waktu rata-rata. Maka :
⃗⃗
⃗⃗
⃗
⃗
⃗
Dengan cara yang sama sebelumnya akan di dapat :
⃗
( ⃗⃗
⃗⃗
⃗⃗
)
( ⃗⃗
⃗⃗
) ( ⃗
⃗
)
( ⃗
⃗
) ( ⃗
)
(C.7)
Nilai variabel tambahan dalam persamaan yang baru merupakan skalar yaitu
dan
⃗⃗
( ⃗
⃗
⃗
) ( ⃗
⃗
) ( ⃗⃗
⃗⃗
)
( ⃗⃗
⃗⃗
)
( ⃗⃗
)
Maka persamaan FDTD gelombang yang merambat dalam arah z sebagai berikut
⃗
⃗
⃗
⃗
dan
⃗⃗
⃗⃗
⃗⃗
⃗⃗
Persamaan diatas memberikan algoritma FDTD untuk
⃗
dan
⃗⃗
.
Untuk indeks bias FDTD dihubungkan dengan transformasi Fourier sebagai pengubah
ke FDTD :
√
Untuk medium yang homogen nilai
= 1 sehingga indeks bias hanya bergantung
dan
bergantung kepada medan listrik.
̃ ∫ ⃗
̃ ∫ ⃗
Sehingga didapat bahwa hasil transformasi Fouriernya adalah
̃
⃗
Indeks bias merupakan perbandingan kecepatan antara dua medium maka persamaan
diatas dapat diubah menjadi :
̃
⃗
i
|
⃗
⃗
|
Untuk simulasi dalam jubah silinder maka diperlukan persamaan dalam koordinat
silinder sebagai berikut:
(
)
Dari transformasi kartesius :
(C.13)
(C.14)
(C.15)
Sehingga
⃗⃗
⃗⃗
⃗⃗
⃗⃗
⃗⃗
⃗⃗
⃗⃗
APENDIX D
PROGRAM MATLAB
clc
clear all
% Adimas Agung
% 110801001
% Simulasi Parameter.
SIZE = 4*1024; % Angka beda langkah
SlabLeft = round(SIZE/3); % Letak sebelah kiri lempengan
SlabRight = round(2*SIZE/3); % Letak sebelah kanan lempengan
MaxTime = 4*SIZE; % Jumlah langkah waktu
PulseWidth = round(SIZE/8); % Lebar Pulsa Gauss
td = PulseWidth; % tempo pulsa.
source = 10; % Letak Sumber
SaveFields = 1; % 0. No, 1. Ya menyimpan.
SnapshotInterval = 32; % jumlah waktu untuk memfoto (menangkap layar).
% Memilih Sumber Gelombang.
% 1. Gaussian 2. Sine wave 3. Ricker wavelet
SourceChoice = 2;
% Konstanta yang digunakan.
c = 3e8;
pi = 3.141592654; e0 = (1e-9)/(36*pi); u0 = (1e-7)*4*pi;
dt = 0.5e-11; dz = 3e-3; Sc = c * dt/dz
l = PulseWidth*dz; f = c/l
fmax = 1/(2*dt) w = 2*pi*f;
i
% Parameter dalam Ricker wavelet.if SourceChoice == 3
fp = f; % puncak ke puncak frekuensi
dr = PulseWidth*dt*2; % Waktu tunggu
end
% Inisialisasi.
Ex = zeros(SIZE, 3); % komponen x untuk medan E
Dx = zeros(SIZE, 3); % komponen x untuk D
Hy = zeros(SIZE, 3); % komponen y untuk medan H
By = zeros(SIZE, 3); % komponen y medan B
% Medan datang dan transmisi.
Exi = zeros(MaxTime, 1); Ext = zeros(MaxTime, 1); Extt = zeros(MaxTime, 1);
x1 = SlabLeft+1; % letak observasi (posisi pengamatan).
% Penghitungan index Bias.
Z1 = SlabLeft + 50; z1 = Z1*dz;
Z2 = SlabLeft + 60; z2 = Z2*dz;
Exz1 = zeros(MaxTime, 1); Exz2 = zeros(MaxTime, 1);
einf = ones(SIZE,1);
einf(SlabLeft:SlabRight) = 1; % einf(Drude) atau er di lempengan.
uinf = ones(SIZE,1);
uinf(SlabLeft:SlabRight) = 1; % uinf(Drude) atau ur di lempengan.
wpesq = zeros(SIZE,1);
wpesq(SlabLeft:SlabRight) = 2*w^2; % nilai DNG(Drude) untuk wpe kuadrat pada lempengan.
wpmsq = zeros(SIZE,1);
wpmsq(SlabLeft:SlabRight) = 2*w^2; % nilai DNG(Drude) untuk wpm kuadrat pada lempengan.
ge = zeros(SIZE,1);
ge(SlabLeft:SlabRight) = w/32; % frekuensi listrik pada lempengan.
gm(SlabLeft:SlabRight) = w/32; % frekuensi magnet pada lempengan.
a0 = (4*dt^2)./(e0*(4*einf+dt^2*wpesq+2*dt*einf.*ge)); a = (1/dt^2)*a0;
b = (1/(2*dt))*ge.*a0; c = (e0/dt^2)*einf.*a0; d = (-1*e0/4).*wpesq.*a0;
e = (1/(2*dt))*e0*einf.*ge.*a0;
am0 = (4*dt^2)./(u0*(4*uinf+dt^2*wpmsq+2*dt*uinf.*gm)); am = (1/dt^2)*am0;
bm = (1/(2*dt))*gm.*am0; cm = (u0/dt^2)*uinf.*am0; dm = (-1*u0/4).*wpmsq.*am0;
em = (1/(2*dt))*u0*uinf.*gm.*am0;
if SaveFields == 1
ExSnapshots = zeros(SIZE, MaxTime/SnapshotInterval); % Data yang akan diplot (bentuk kurva).
frame = 1;
end
n1 = 1; n2 = 2;
linecount = 0;
% waktu keluar dari pengulangan.
tic
% uji pengulangan untuk medan datang pada ruang bebas.
for q = 0:MaxTime
% Penghitungan Hy menggunakan turunan persamaan Hy. Beda waktu q.
Hy(1:SIZE-1,n2) = Hy(1:SIZE-1,n1) + ( ( Ex(1:SIZE-1,n1) - Ex(2:SIZE,n1) ) * dt/(u0*dz) );
% ABC untuk ukuran H.
Hy(SIZE,n2) = Hy(SIZE-1,n1) + (Sc-1)/(Sc+1)*(Hy(SIZE-1,n2) - Hy(SIZE,n1) );
% Penghitungan Ex menggunakan turunan persamaan Ex. Beda waktu
i
Ex(2:SIZE,n2) = Ex(2:SIZE, n1) + ( dt/(e0*dz)*(Hy(1:SIZE-1, n2) - Hy(2:SIZE, n2)) );
% ABC untuk E di 1.
Ex(1,n2) = Ex(2,n1) + (Sc-1)/(Sc+1)*(Ex(2,n2) - Ex(2,n1));
% Sumber.
if SourceChoice == 1
Ex(source,n2) = Ex(source,n2) + exp( -1*((q-td)/(PulseWidth/4))^2 ) * Sc;
elseif SourceChoice == 2
Ex(source,n2) = Ex(source,n2) + sin(2*pi*f*(q)*dt) * Sc; elseif SourceChoice == 3
Ex(source,n2) = Ex(source,n2) + (1-2*(pi*fp*(q*dt-dr))^2)*exp(-1*(pi*fp*(q*dt-dr))^2) * Sc;
end
Exi(q+1) = Ex(x1,n2); % Medan datang di kiri lempengan.
temp = n1; n1 = n2; n2 = temp;
end
% Pengulangan inisialisasi medan untuk simulasi.
Ex = zeros(SIZE, 3); % komponen x untuk medan E
Hy = zeros(SIZE, 3); % komponen y untuk medan H % Simulasi dimulai.
fprintf ( 1, 'Simulation started... \n');
for q = 0:MaxTime
% Indikator.
fprintf(1, repmat('\b',1,linecount));
linecount = fprintf(1, '%g %%', (q*100)/MaxTime );
% Penghitungan Hy menggunakan turunan persamaan Hy. Beda waktu q.
By(1:SIZE-1,n2) = By(1:SIZE-1,n1) + ( ( Ex(1:SIZE-1,n1) - Ex(2:SIZE,n1) ) * dt/(dz) );
Hy(:,n2) = am.*(By(:,n2)-2*By(:,n1)+By(:,3))+bm.*(By(:,n2)-
By(:,3))+cm.*(2*Hy(:,n1)-Hy(:,3))+dm.*(2*Hy(:,n1)+Hy(:,3))+em.*(Hy(:,3));
% ABC untuk ukuran.
Hy(SIZE,n2) = Hy(SIZE-1,n1) + (Sc-1)/(Sc+1)*(Hy(SIZE-1,n2) - Hy(SIZE,n1) );
By(SIZE,n2) = u0*Hy(SIZE,n2);
% Penghitungan Ex menggunakan persamaan diferensial Ex. Beda
waktu q+1/2.
Dx(2:SIZE,n2) = Dx(2:SIZE, n1) + ( dt/(dz)*(Hy(1:SIZE-1, n2) - Hy(2:SIZE, n2)) );
Ex(:,n2) = a.*(Dx(:,n2)-2*Dx(:,n1)+Dx(:,3))+b.*(Dx(:,n2)-
Dx(:,3))+c.*(2*Ex(:,n1)-Ex(:,3))+d.*(2*Ex(:,n1)+Ex(:,3))+e.*(Ex(:,3));
% ABC untuk E di 1.
Ex(1,n2) = Ex(2,n1) + (Sc-1)/(Sc+1)*(Ex(2,n2) - Ex(2,n1)); Dx(1,n2) = e0*Ex(1,n2);
% Sumber.
if SourceChoice == 1
Ex(source,n2) = Ex(source,n2) + exp( -1*((q-td)/(PulseWidth/4))^2 ) * Sc;
elseif SourceChoice == 2
Ex(source,n2) = Ex(source,n2) + sin(2*pi*f*(q)*dt) * Sc; elseif SourceChoice == 3
Ex(source,n2) = Ex(source,n2) + (1-2*(pi*fp*(q*dt-dr))^2)*exp(-1*(pi*fp*(q*dt-dr))^2) * Sc;
end
Dx(source,n2) = e0*Ex(source,n2);
i
frame=frame+1; end
Ext(q+1) = Ex(x1,n2);
Extt(q+1) = Ex(SlabRight+10,n2);
% Medan untuk Penghitungan index bias.
Exz1(q+1) = Ex(Z1, n2); Exz2(q+1) = Ex(Z2, n2);
temp = n1; n1 = n2; n2 = temp;
end
fprintf ( 1, '\nSimulation complete! \n'); toc
% Pengolahan.
Fs = 1/dt; % pengambilan sampel frekuensi
T = dt; % waktu sampel
L = length(Exi); % Panjang sinyal
t = (0:L-1)*T; % Vektor waktu
fspan = 100; % Titik alur dalam daerah frekuensi
figure(1) subplot(211)
plot(Fs*t, Exi, 'LineWidth', 2.0, 'Color', 'b') set(gca, 'FontSize', 10, 'FontWeight', 'b')
title('Medan Listrik Datang', 'FontSize', 12, 'FontWeight', 'b') xlabel('waktu', 'FontSize', 11, 'FontWeight', 'b')
grid on figure(2) subplot(211)
plot(Fs*t, Ext, 'LineWidth', 2.0, 'Color', 'b') set(gca, 'FontSize', 10, 'FontWeight', 'b')
title('Transmisi Medan Listrik', 'FontSize', 12, 'FontWeight', 'b') xlabel('waktu', 'FontSize', 11, 'FontWeight', 'b')
plot(Fs*t, Extt, 'LineWidth', 2.0, 'Color', 'b') set(gca, 'FontSize', 10, 'FontWeight', 'b')
title('Transmisi Medan Listrik Melalui Lempeng', 'FontSize', 12, 'FontWeight', 'b')
xlabel('waktu', 'FontSize', 11, 'FontWeight', 'b') grid on
NFFT = 2^nextpow2(L); % untuk tenaga kedua dari Exi % Medan datang dan transmisi.
EXI = fft(Exi,NFFT)/L; EXT = fft(Ext,NFFT)/L; EXTT = fft(Extt,NFFT)/L;
% Penghitungan Index Bias.
EXZ1 = fft(Exz1,NFFT)/L; EXZ2 = fft(Exz2,NFFT)/L;
f = Fs/2*linspace(0,1,NFFT/2+1);
% Membuat alur spektrum amplitudo satu bagian.
figure(1) subplot(212)
EXIp = 2*abs(EXI(1:NFFT/2+1));
plot(f(1:fspan), EXIp(1:fspan), 'LineWidth', 2.0, 'Color', 'r') set(gca, 'FontSize', 10, 'FontWeight', 'b')
title('Spektrum Amplitudo Exi(t)', 'FontSize', 12, 'FontWeight', 'b') xlabel('Frekuensi (Hz)', 'FontSize', 11, 'FontWeight', 'b')
ylabel('|EXI(f)|', 'FontSize', 11, 'FontWeight', 'b') grid on
figure(2) subplot(212)
EXTp = 2*abs(EXT(1:NFFT/2+1));
plot(f(1:fspan), EXTp(1:fspan), 'LineWidth', 2.0, 'Color', 'r') set(gca, 'FontSize', 10, 'FontWeight', 'b')
title('Spektrum Amplitudo Ext(t)', 'FontSize', 12, 'FontWeight', 'b') xlabel('Frekuensi (Hz)', 'FontSize', 11, 'FontWeight', 'b')
ylabel('|EXT(f)|', 'FontSize', 11, 'FontWeight', 'b') grid on
figure(3) subplot(212)
EXTTp = 2*abs(EXTT(1:NFFT/2+1));
i
set(gca, 'FontSize', 10, 'FontWeight', 'b')
title('Spektrum Amplitudo Extt(t)', 'FontSize', 12, 'FontWeight', 'b')
xlabel('Frekuensi(Hz)', 'FontSize', 11, 'FontWeight', 'b') ylabel('|EXT(f)|', 'FontSize', 11, 'FontWeight', 'b') grid on
% Koefisien Transmisi.
figure(4) subplot(211)
TAU = abs(EXT(1:NFFT/2+1)./EXI(1:NFFT/2+1));
plot(f(1:fspan), TAU(1:fspan), 'LineWidth', 2.0, 'Color', 'b') set(gca, 'FontSize', 10, 'FontWeight', 'b')
title('Koefisien Transmisi', 'FontSize', 12, 'FontWeight', 'b') xlabel('Frekuensi (Hz)', 'FontSize', 11, 'FontWeight', 'b') ylabel('|EXT(f)/EXI(f)|', 'FontSize', 11, 'FontWeight', 'b') axis([-1 1 -2 2])
axis 'auto x' grid on
subplot(212)
plot(f(1:fspan), 1-TAU(1:fspan), 'LineWidth', 2.0, 'Color', 'b') set(gca, 'FontSize', 10, 'FontWeight', 'b')
title('Koefisien Refleksi', 'FontSize', 12, 'FontWeight', 'b') xlabel('Frekuensi (Hz)', 'FontSize', 11, 'FontWeight', 'b') ylabel('1-|EXT(f)/EXI(f)|', 'FontSize', 11, 'FontWeight', 'b') axis([-1 1 -2 2])
axis 'auto x' grid on
% Penghitungan Indeks Bias.
nFDTD = (1/(1i*k0*(z1-z2))).*log(EXZ2(1:NFFT/2+1)./EXZ1(1:NFFT/2+1)); figure(5)
subplot(211)
plot(f(1:fspan), real(nFDTD(1:fspan)), 'LineWidth', 2.0, 'Color', 'b');
set(gca, 'FontSize', 10, 'FontWeight', 'b')
title('Indeks Bias re(n)', 'FontSize', 12, 'FontWeight', 'b') xlabel('Frekuensi (Hz)', 'FontSize', 11)
ylabel('re(n)', 'FontSize', 11) grid on
plot(f(1:fspan), imag(nFDTD(1:fspan)), 'LineWidth', 2.0, 'Color', 'r');
set(gca, 'FontSize', 10, 'FontWeight', 'b')
title('Indeks Bias im(n)', 'FontSize', 12, 'FontWeight', 'b') xlabel('Frekuensi (Hz)', 'FontSize', 11, 'FontWeight', 'b') ylabel('im(n)', 'FontSize', 11, 'FontWeight', 'b')
grid on
if SaveFields == 1
% Simulasi Animasi.
for i=1:frame-1 figure (6)
% Batas penyebaran.
hold off
plot([SlabLeft SlabLeft], [-1 1], 'Color', 'r'); hold on
plot([SlabRight SlabRight], [-1 1], 'Color', 'r'); plot(ExSnapshots(:,i), 'LineWidth', 2.0, 'Color', 'b'); set(gca, 'FontSize', 10, 'FontWeight', 'b')
axis([0 SIZE -1 1])
title('Simulasi Fungsi Waktu', 'FontSize', 12, 'FontWeight', 'b')
xlabel('Beda Langkah(k)', 'FontSize', 11, 'FontWeight', 'b') ylabel('Medan Listrik (Ex)', 'FontSize', 11, 'FontWeight', 'b')
grid on end
i
APENDIX E
PROGRAM INVISIBLE CLOAK
clear all; close all;
% Nilai Konstanta
%*******************************************************************
c_0 = 3.0e8; % Kecepatan cahaya
mu_0 = 4.0*pi*1.0e-7; % Permeabilitas
eps_0 = 8.8542e-12; % Permitivitas
losstangent = 0.0;
ie = 401; % # Besar sel dalam arah x
je = 400; % # Besar sel dalam arah y
ib = ie + 1; jb = je + 1;
npmls = 20; ip = ie - npmls;
jp = je - npmls;
xc = round(ie/2); yc = round(je/2);
is = 25; % Letak Sumber Gelombang
js = 25;
it = 30; % Daerah Medan atas atau bawah
jt = 30; % Daerah medan kiri atau kanan
freq = 6.0e14; omega = 2*pi*freq; k_0 = omega/c_0;
dx = c_0/freq/400;
dt = dx/c_0/sqrt(2); % Beda waktu
R1 = c_0/freq/8/dx % dimensi Jubah
R2 = 1.43*R1;
nmax = 400000; % Jumlah beda waktu
aimp = sqrt(mu_0/eps_0); % impedansi gelombang
threshold = 0.1; % FDTD error
step = ceil(nmax/10);
% freq = 2.0e9; % omega = 2*pi*freq;
N = round(tau/dt); M = round(c_0/freq/dx); source = zeros(1,nmax);
clear j; ST = 300; st = 20e3;
for n=1:nmax if n < ST*N
x = 1.0 - (ST*N-n)/(ST*N);
g = 10.0*x^3 - 15.0*x^4 + 6.0*x^5;
% sumber(n) = g * sin(2*pi*freq*n*dt);
source(n) = g * exp(j*2*pi*freq*n*dt); else
% sumber(n) = sin(2*pi*freq*n*dt);
source(n) = exp(j*2*pi*freq*n*dt); end
% sumber (n) = exp(-(((n-delay)*dt)/tau)^2) .* exp(j*2*pi*freq*n*dt);
end
%******************************************************************* % Inisialisasi matriks untuk komponen medan
%*******************************************************************
Dx = zeros(ie,jb); Dx_h1 = zeros(ie,jb); Dx_h2 = zeros(ie,jb); Dxsynch = zeros(ie,jb); Dx_h1synch = zeros(ie,jb); Dx_h2synch = zeros(ie,jb);
caDx = ones(ie,jb); cbDx = ones(ie,jb).*(dt/eps_0/dx);
Ex = zeros(ie,jb); Ex_h1 = zeros(ie,jb); Ex_h2 = zeros(ie,jb); Ex_h1synch = zeros(ie,jb); Ex_h2synch = zeros(ie,jb);
Dy = zeros(ib,je); Dy_h1 = zeros(ib,je); Dy_h2 = zeros(ib,je); Dysynch = zeros(ib,je); Dy_h1synch = zeros(ib,je); Dy_h2synch = zeros(ib,je);
caDy = ones(ib,je); cbDy = ones(ib,je).*(dt/eps_0/dx);
Ey = zeros(ib,je); Ey_h1 = zeros(ib,je); Ey_h2 = zeros(ib,je); Ey_h1synch = zeros(ib,je); Ey_h2synch = zeros(ib,je);
Bz = zeros(ie,je); Bz_h1 = zeros(ie,je); Bz_h2 = zeros(ie,je); Bzx = zeros(ie,je); Bzy = zeros(ie,je); Hz_p = zeros(ie,je); daBzx = ones(ie,je); dbBzx = ones(ie,je).*(dt/mu_0/dx); daBzy = ones(ie,je); dbBzy = ones(ie,je).*(dt/mu_0/dx); daBz = ones(ie,je); dbBz = ones(ie,je).*(dt/mu_0/dx);
Hz = zeros(ie,je); Hz_h1 = zeros(ie,je); Hz_h2 = zeros(ie,je);
% HzsourceTF = zeros(length(it:ie-it),nmax); % HztransTF = zeros(length(it:ie-it),nmax); % HzsourceSF = zeros(length(it:ie-it),nmax); % HztransSF = zeros(length(it:ie-it),nmax);
% Coefficients for cloak
a0x = ones(ie,jb); b0x = ones(ie,jb); b0xy = zeros(ie,jb);
a1x = zeros(ie,jb); b1x = zeros(ie,jb); a1xy = zeros(ie,jb); b1xy = zeros(ie,jb);
a2x = zeros(ie,jb); b2x = zeros(ie,jb); a2xy = zeros(ie,jb); b2xy = zeros(ie,jb);
a0y = ones(ib,je); b0y = ones(ib,je); b0yx = zeros(ib,je);
i
a2y = zeros(ib,je); b2y = zeros(ib,je); a2yx = zeros(ib,je); b2yx = zeros(ib,je);
a0z = ones(ie,je); b0z = ones(ie,je); a1z = zeros(ie,je); b1z = zeros(ie,je); a2z = zeros(ie,je); b2z = zeros(ie,je);
% Medan Datang
Ex_inc = zeros(1,jb); Hzx_inc = zeros(1,jb); Ey_inc = zeros(1,ib); Hzy_inc = zeros(1,ib);
caEx_inc = ones(1,jb); cbEx_inc = ones(1,jb).*(dt/eps_0/dx); caEy_inc = ones(1,ib); cbEy_inc = ones(1,ib).*(dt/eps_0/dx); daHzx_inc = ones(1,je); dbHzx_inc = ones(1,je).*(dt/mu_0/dx); daHzy_inc = ones(1,ie); dbHzy_inc = ones(1,ie).*(dt/mu_0/dx);
%******************************************************************* % Jubah
%*******************************************************************
for i = 1 : ie for j = 1 : je
r = sqrt((i - xc + 0.5).^2 + (j - yc).^2); if (r<=R2) && (r>=R1);
erx = ((r-R1) / (r)); ethetax = ((r) / (r-R1));
sigma_px =
ethetax*losstangent*((tan((omega*dt)/2))/(dt/2));
gamma_px = (2*losstangent*erx*sin((omega*dt)/2))/((1-erx)*dt*cos((omega*dt)/2));
omega_px = sqrt((2*sin((omega*dt)/2)*(-2*(erx-1)*sin((omega*dt)/2)+...
losstangent*erx*gamma_px*dt*cos((omega*dt)/2)))/((dt^2)*((cos((omega* dt)/2))^2)));
sinx = (j - yc)/r;
cosx = (i - xc + 0.5)/r;
ax = ((cosx.^2) + (ethetax.*(sinx.^2))) ./ (dt^2); bx = ((gamma_px.*(cosx.^2)) + ((sigma_px +
(ethetax*gamma_px)).*(sinx.^2))) ./ (2*dt); cx = (((cosx.^2).*((omega_px)^2)) + (sigma_px*gamma_px.*(sinx.^2))) ./ (4);
wx = ((1-ethetax).*sinx.*cosx) ./ (dt^2);
fx = ((gamma_px-sigma_px-(ethetax*gamma_px)).*sinx.*cosx) ./ (2*dt);
vx = ((((omega_px)^2)-(sigma_px*gamma_px)).*sinx.*cosx) ./ (4);
kx = 1 / (dt^2);
tx = ((sinx.^2) + (ethetax.*(cosx.^2))) ./ (dt^2); qx = ((gamma_px.*(sinx.^2)) + ((sigma_px +
(ethetax*gamma_px)).*(cosx.^2))) ./ (2*dt); px = (((sinx.^2).*((omega_px)^2)) + (sigma_px*gamma_px.*(cosx.^2))) ./ (4);
Ax1 = ax+bx+cx; Ax2 = (2.*ax)-(2.*cx); Ax3 = ax-bx+cx; Bx1 = wx+fx+vx; Bx2 = (2.*wx)-(2.*vx); Bx3 = wx-fx+vx; Cx1 = kx+lx; Cx2 = (2.*kx); Cx3 = kx-lx;
Dx1 = tx+qx+px; Dx2 = (2.*tx)-(2.*px); Dx3 = tx-qx+px;
a0x(i, j) = Ax1 - (((Bx1).^2) ./ Dx1); a1x(i, j) = Ax2 - ((Bx1.*Bx2) ./ Dx1); a2x(i, j) = ((Bx1.*Bx3) ./ Dx1) - (Ax3);
a1xy(i, j) = Bx2 - ((Bx1.*Dx2) ./ Dx1); a2xy(i, j) = ((Bx1.*Dx3) ./ Dx1) - (Bx3);
b0x(i, j) = Cx1; b1x(i, j) = -Cx2; b2x(i, j) = Cx3;
b0xy(i, j) = -(Bx1.*Cx1) ./ Dx1; b1xy(i, j) = (Bx1.*Cx2) ./ Dx1; b2xy(i, j) = -(Bx1.*Cx3) ./ Dx1;
elseif (r<R1)
cbDx(i, j) = (dt/(3*eps_0)/dx);
end
r = sqrt((i - xc).^2 + (j - yc + 0.5).^2);
if (r<=R2) && (r>=R1)
ery = ((r-R1) / (r)); ethetay = ((r) / (r-R1));
sigma_py =
ethetay*losstangent*((tan((omega*dt)/2))/(dt/2));
gamma_py = (2*losstangent*ery*sin((omega*dt)/2))/((1-ery)*dt*cos((omega*dt)/2));
i
losstangent*ery*gamma_py*dt*cos((omega*dt)/2)))/((dt^2)*((cos((omega* dt)/2))^2)));
siny = (j - yc + 0.5)/r; cosy = (i - xc)/r;
ay = ((cosy.^2) + (ethetay*(siny.^2))) ./ (dt^2); by = ((gamma_py*(cosy.^2)) + ((sigma_py +
(ethetay*gamma_py)).*(siny.^2))) ./ (2*dt); cy = (((cosy.^2).*((omega_py)^2)) + (sigma_py*gamma_py.*(siny.^2))) ./ (4);
wy = ((1-ethetay).*siny.*cosy) ./ (dt^2);
fy = ((gamma_py-sigma_py-(ethetay*gamma_py)).*siny.*cosy) ./ (2*dt);
vy = ((((omega_py)^2)-(sigma_py*gamma_py)).*siny.*cosy) ./ (4);
ky = 1 / (dt^2);
ly = gamma_py / (2*dt);
ty = ((siny.^2) + (ethetay*(cosy.^2))) ./ (dt^2); qy = ((gamma_py*(siny.^2)) + ((sigma_py +
(ethetay*gamma_py)).*(cosy.^2))) ./ (2*dt); py = (((siny.^2).*((omega_py)^2)) + (sigma_py*gamma_py.*(cosy.^2))) ./ (4);
Ay1 = ay+by+cy; Ay2 = (2.*ay)-(2.*cy); Ay3 = ay-by+cy; By1 = wy+fy+vy; By2 = (2.*wy)-(2.*vy); By3 = wy-fy+vy; Cy1 = ky+ly; Cy2 = (2*ky); Cy3 = ky-ly;
Dy1 = ty+qy+py; Dy2 = (2.*ty)-(2.*py); Dy3 = ty-qy+py;
a0y(i, j) = Dy1 - (((By1).^2) ./ Ay1); a1y(i, j) = Dy2 - ((By1.*By2) ./ Ay1); a2y(i, j) = ((By1.*By3) ./ Ay1) - (Dy3);
a1yx(i, j) = By2 - ((By1.*Ay2) ./ Ay1); a2yx(i, j) = ((By1.*Ay3) ./ Ay1) - (By3);
b0y(i, j) = Cy1; b1y(i, j) = -Cy2; b2y(i, j) = Cy3;
b0yx(i, j) = -(By1.*Cy1) ./ Ay1; b1yx(i, j) = (By1.*Cy2) ./ Ay1; b2yx(i, j) = -(By1.*Cy3) ./ Ay1;
elseif (r<R1)
cbDy(i, j) = (dt/(3*eps_0)/dx);
r = sqrt((i - xc).^2 + (j - yc).^2);
if (r<=R2) && (r>=R1)
muz = (((r-R1) / (r)) * (((R2) / (R2-R1))^2));
if (muz < 1)
gamma_pz = (2*losstangent*muz*sin((omega*dt)/2))/((1-muz)*dt*cos((omega*dt)/2));
omega_pz = sqrt((2*sin((omega*dt)/2)*(-2*(muz-1)*sin((omega*dt)/2)+...
losstangent*muz*gamma_pz*dt*cos((omega*dt)/2)))/((dt^2)*((cos((omega* dt)/2))^2)));
a0z(i, j) = 1/dt^2 + gamma_pz/(2*dt) + ((omega_pz^2))/4; a1z(i, j) = -2/dt^2 + ((omega_pz^2))/2;
a2z(i, j) = 1/dt^2 - gamma_pz/(2*dt) + ((omega_pz^2))/4; b0z(i, j) = 1/dt^2 + gamma_pz/(2*dt);
b1z(i, j) = -2/dt^2;
b2z(i, j) = 1/dt^2 - gamma_pz/(2*dt);
elseif (muz >= 1)
sigma_pz =
mu_0*muz*losstangent*((tan((omega*dt)/2))/(dt/2));
daBzx(i, j) = (1-((sigma_pz*dt)/(2*mu_0*muz))) / (1+((sigma_pz*dt)/(2*mu_0*muz)));
dbBzx(i, j) = (dt/(mu_0*muz)/dx) / (1+((sigma_pz*dt)/(2*mu_0*muz)));
daBzy(i, j) = (1-((sigma_pz*dt)/(2*mu_0*muz))) / (1+((sigma_pz*dt)/(2*mu_0*muz)));
dbBzy(i, j) = (dt/(mu_0*muz)/dx) / (1+((sigma_pz*dt)/(2*mu_0*muz)));
daBz(i, j) = (1-((sigma_pz*dt)/(2*mu_0*muz))) / (1+((sigma_pz*dt)/(2*mu_0*muz)));
dbBz(i, j) = (dt/(mu_0*muz)/dx) / (1+((sigma_pz*dt)/(2*mu_0*muz))); end end end end %******************************************************************* % Konstanta Berenger
%******************************************************************** ***
sigmax = -3.0*eps_0*c_0*log(1.0e-5)/(2.0*dx*npmls); rhomax = sigmax*(aimp^2);
i
sig(m) = sigmax*((m-0.5)/(npmls+0.5))^2; rho(m) = rhomax*(m/(npmls+0.5))^2;
end
%******************************************************************* % Koefisien Berenger
%*******************************************************************
for m=1:npmls
re = sig(m)*dt/eps_0; rm = rho(m)*dt/mu_0; ca(m) = exp(-re);
cb(m) = -(exp(-re)-1.0)/sig(m)/dx; da(m) = exp(-rm);
db(m) = -(exp(-rm)-1.0)/rho(m)/dx;
end
%******************************************************************* % Inisialisasi matriks Berenger
%******************************************************************* %<<<<<<<<<<<<<<<<<<<<<<<<<<<<< Medan Hz >>>>>>>>>>>>>>>>>>>>>>>>>>>
for j=1:je % Depan & belakang
for i=1:npmls m = npmls+1-i; daBzx(i,j) = da(m); dbBzx(i,j) = db(m); end
for i=ip+1:ie m = i-ip;
daBzx(i,j) = da(m); dbBzx(i,j) = db(m); end
end
for i=1:ie % kiri dan kanan
for j=1:npmls m = npmls+1-j; daBzy(i,j) = da(m); dbBzy(i,j) = db(m); end
for j=jp+1:je m = j-jp;
daBzy(i,j) = da(m); dbBzy(i,j) = db(m); end
end
%<<<<<<<<<<<<<<<<<<<<<<<<<<<<< Medan Ex>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
for i=1:ie % Kiri dan kanan
for j=2:npmls+1 m = npmls+2-j; caDx(i,j) = ca(m); cbDx(i,j) = cb(m); end
for j=jp+1:je m = j-jp;
caDx(i,j) = ca(m); cbDx(i,j) = cb(m); end
end
for j=1:je % Depan dan belakang
for i=2:npmls+1 m = npmls+2-i; caDy(i,j) = ca(m); cbDy(i,j) = cb(m); end
for i=ip+1:ie m = i-ip;
caDy(i,j) = ca(m); cbDy(i,j) = cb(m); end
end
% Algoritma 1D FDTD
%*******************************************************************
for j=1:npmls m = npmls+1-j;
daHzx_inc(j) = da(m); dbHzx_inc(j) = db(m);
end
for j=jp+1:je m = j-jp;
daHzx_inc(j) = da(m); dbHzx_inc(j) = db(m);
end
for j=2:npmls+1 m = npmls+2-j;
caEx_inc(j) = ca(m); cbEx_inc(j) = cb(m);
end
for j=jp+1:je m = j-jp;
caEx_inc(j) = ca(m); cbEx_inc(j) = cb(m);
end
%---for i=1:npmls m = npmls+1-i;
daHzy_inc(i) = da(m); dbHzy_inc(i) = db(m);
end
for i=ip+1:ie m = i-ip;
daHzy_inc(i) = da(m); dbHzy_inc(i) = db(m);
end
for i=2:npmls+1 m = npmls+2-i;
caEy_inc(i) = ca(m); cbEy_inc(i) = cb(m);
end
for i=ip+1:ie m = i-ip;
i
cbEy_inc(i) = cb(m);
end
%******************************************************************* % inisialisasi Movie
%*******************************************************************
figure('position',[200 200 700 520]); set(gcf,'color','white'); rect = get(gcf,'position'); rect(1:2) = [0 0];
Dx_h1 = Dx; Dy_h1 = Dy; Bz_h1 = Bz; Ex_h1 = Ex; Ey_h1 = Ey; Hz_h1 = Hz;
clear j;
%******************************************************************* % Pengulangan FDTD
%******************************************************************* % sy = 500; % Perambatan persamaan Gauss arah y
% sx = 500; % Perambatan persamaan Gauss arah x % n = 1; ne = 1; err = 0;
n = 1; ne = 1; err = 100;
% Dengan (n<nmax) && (err(ne)>threshold)
while (n<ST*N) || (n<nmax) && (err(ne)>threshold)
%******************************************************************* % Distribusi Medan
%*******************************************************************
Dx_h2 = Dx_h1; Dx_h1 = Dx; Dy_h2 = Dy_h1; Dy_h1 = Dy; Bz_h2 = Bz_h1; Bz_h1 = Bz;
Ex_h2 = Ex_h1; Ex_h1 = Ex; Ey_h2 = Ey_h1; Ey_h1 = Ey; Hz_h2 = Hz_h1; Hz_h1 = Hz;
%sumber(n) = exp(-(((n-delay)*dt)/(0.8*tau))^2) .*sin(2*pi*freq*n*dt);
%******************************************************************* % Ex_inc datang (1-D FDTD)
%*******************************************************************
Ex_inc(2:jb) = caEx_inc(2:jb).*Ex_inc(2:jb) + cbEx_inc(2:jb).*(Hzx_inc(1:je)-Hzx_inc(2:jb));
%******************************************************************* % Medan Dx dan Dy field
%*******************************************************************
Dx( : ,2:je) = caDx( : ,2:je).*Dx( : ,2:je) + cbDx( : ,2:je).*(Hz( : ,2:je) - Hz( : ,1:je-1));
%*******************************************************************
% Ruang penghubung D dan E
%*******************************************************************
Dysynch(1:ie, 2:je) = 0.25*(Dy(1:ie, 2:je)+Dy(2:ib, 2:je)+Dy(1:ie, 1:je-1)+Dy(2:ib, 1:je-1));
Dy_h1synch(1:ie, 2:je) = 0.25*(Dy_h1(1:ie, 2:je)+Dy_h1(2:ib, 2:je)+Dy_h1(1:ie, 1:je-1)+Dy_h1(2:ib, 1:je-1));
Dy_h2synch(1:ie, 2:je) = 0.25*(Dy_h2(1:ie, 2:je)+Dy_h2(2:ib, 2:je)+Dy_h2(1:ie, 1:je-1)+Dy_h2(2:ib, 1:je-1));
Ey_h1synch(1:ie, 2:je) = 0.25*(Ey_h1(1:ie, 2:je)+Ey_h1(2:ib, 2:je)+Ey_h1(1:ie, 1:je-1)+Ey_h1(2:ib, 1:je-1));
Ey_h2synch(1:ie, 2:je) = 0.25*(Ey_h2(1:ie, 2:je)+Ey_h2(2:ib, 2:je)+Ey_h2(1:ie, 1:je-1)+Ey_h2(2:ib, 1:je-1));
Dxsynch(2:ie, 2:je) = 0.25*(Dx(2:ie, 2:je)+Dx(2:ie, 3:jb)+Dx(1:ie-1, 2:je)+Dx(1:ie-1, 3:jb));
Dx_h1synch(2:ie, 2:je) = 0.25*(Dx_h1(2:ie, 2:je)+Dx_h1(2:ie, 3:jb)+Dx_h1(1:ie-1, 2:je)+Dx_h1(1:ie-1, 3:jb));
Dx_h2synch(2:ie, 2:je) = 0.25*(Dx_h2(2:ie, 2:je)+Dx_h2(2:ie, 3:jb)+Dx_h2(1:ie-1, 2:je)+Dx_h2(1:ie-1, 3:jb));
Ex_h1synch(2:ie, 2:je) = 0.25*(Ex_h1(2:ie, 2:je)+Ex_h1(2:ie, 3:jb)+Ex_h1(1:ie-1, 2:je)+Ex_h1(1:ie-1, 3:jb));
Ex_h2synch(2:ie, 2:je) = 0.25*(Ex_h2(2:ie, 2:je)+Ex_h2(2:ie, 3:jb)+Ex_h2(1:ie-1, 2:je)+Ex_h2(1:ie-1, 3:jb));
%******************************************************************* % Medan Ex dan Ey
%*******************************************************************
Ex(1:ie, 2:je) = ((b0x(1:ie,2:je).*Dx(1:ie,2:je) + b0xy(1:ie,2:je).*Dysynch(1:ie,2:je) + ...
b1x(1:ie,2:je).*Dx_h1(1:ie,2:je) + b1xy(1:ie,2:je).*Dy_h1synch(1:ie,2:je) + ...
a1x(1:ie,2:je).*Ex_h1(1:ie,2:je) + a1xy(1:ie,2:je).*Ey_h1synch(1:ie,2:je) + ...
b2x(1:ie,2:je).*Dx_h2(1:ie,2:je) + b2xy(1:ie,2:je).*Dy_h2synch(1:ie,2:je) + ...
a2x(1:ie,2:je).*Ex_h2(1:ie,2:je) + a2xy(1:ie,2:je).*Ey_h2synch(1:ie,2:je)) ...
./ (a0x(1:ie,2:je)));
Ey(2:ie, 1:je) = ((b0y(2:ie, 1:je).*Dy(2:ie, 1:je) + b0yx(2:ie, 1:je).*Dxsynch(2:ie, 1:je) + ...
b1y(2:ie, 1:je).*Dy_h1(2:ie, 1:je) + b1yx(2:ie, 1:je).*Dx_h1synch(2:ie, 1:je) + ...
a1y(2:ie, 1:je).*Ey_h1(2:ie, 1:je) + a1yx(2:ie, 1:je).*Ex_h1synch(2:ie, 1:je) + ...
b2y(2:ie, 1:je).*Dy_h2(2:ie, 1:je) + b2yx(2:ie, 1:je).*Dx_h2synch(2:ie, 1:je) + ...
a2y(2:ie, 1:je).*Ey_h2(2:ie, 1:je) + a2yx(2:ie, 1:je).*Ex_h2synch(2:ie, 1:je)) ...
./ (a0y(2:ie, 1:je)));
i
%*******************************************************************
Ex(it+1:ie-it, jt+1) = Ex(it+1:ie-it, jt+1) + (dt/eps_0/dx).*Hzx_inc( jt+1);
%.*exp(-((it+1:ie-it)-ic).^2./(2*sy^2))'; % Left
Ex(it+1:ie-it,je-jt+1) = Ex(it+1:ie-it,je-jt+1) - (dt/eps_0/dx).*Hzx_inc(je-jt+1);
%.*exp(-((it+1:ie-it)-ic).^2./(2*sy^2))'; % Right
%******************************************************************* % Nilai Ey datang(1-D & 2-D)
%*******************************************************************
Ey( it+1,jt+1:je-jt) = Ey( it+1,jt+1:je-jt) - (dt/eps_0/dx).*Hzx_inc(jt+1:je-jt);
%.*exp(-(( it+1)-ic).^2./(2*sy^2))'; % Bottom
Ey(ie-it+1,jt+1:je-jt) = Ey(ie-it+1,jt+1:je-jt) + (dt/eps_0/dx).*Hzx_inc(jt+1:je-jt);
%.*exp(-((ie-it+1)-ic).^2./(2*sy^2))'; % Top
%******************************************************************* % Penghitungan Hzx_inc (1-D FDTD)
%*******************************************************************
Hzx_inc(1:je) = daHzx_inc(1:je).*Hzx_inc(1:je) + dbHzx_inc(1:je).*(Ex_inc(1:je)-Ex_inc(2:jb));
%******************************************************************* % ... Eksitasi Sumber Datang(1-D FDTD)...
%*******************************************************************
Hzx_inc(js) = Hzx_inc(js) + 1*source(n);
%******************************************************************* % medan Bzx dan Bzy (Bz)
%*******************************************************************
Bzx(1:ie,: ) = daBzx(1:ie,: ).*Bzx(1:ie,: ) + dbBzx(1:ie,: ).*(Ey(1:ie,: ) - Ey(2:ib, :));
Bzy( :, 1:je) = daBzy( :, 1:je).*Bzy( :, 1:je) + dbBzy( :, 1:je).*(Ex( :, 2:jb) - Ex( :, 1:je));
Bz = Bzx + Bzy;
%******************************************************************* % Medan Hz
%*******************************************************************
Hz = (b0z.*Bz + b1z.*Bz_h1 + b2z.*Bz_h2 - (a1z.*Hz_h1 + a2z.*Hz_h2)) ./ a0z;
%******************************************************************* % Nilai Hz datang (1-D & 2-D)
%*******************************************************************
Hz(it+1:ie-it, jt+1) = Hz(it+1:ie-it, jt+1) - (dt/mu_0/dx).*Ex_inc( jt+1); % Left
%HzsourceTF(1:length(it:ie-it),n)=Hz(it:ie-it,jt+1); %HztransTF(1:length(it:ie-it),n)=Hz(it:ie-it,je-jt-1); %HzsourceSF(1:length(it:ie-it),n)=Hz(it:ie-it,js); %HztransSF(1:length(it:ie-it),n)=Hz(it:ie-it,je-js); %******************************************************************* % Visualisasi Medan
%*******************************************************************
if mod(n,10)==0
timestep = num2str(n);
pcolor((1:je)./M,(1:ie)./M,real(Hz)); shading interp; axis image; colorbar; axis([1/M je/M 1/M ie/M]);
%pcolor((1:je)./M,(1:ie)./M,real(Hz)/max(max(real(Hz)))); shading interp; axis image; colorbar; axis([1/M je/M 1/M ie/M]);
line((R1*sin((0:360)*pi/180)+yc)./M,(R1*cos((0:360)*pi/180)+xc)./M,'c olor','k'); line((R2*sin((0:360)*pi/180)+yc)./M,(R2*cos((0:360)*pi/180)+xc)./M,'c olor','k');
%xlabel('y/\lambda'); ylabel('x/\lambda'); title(['amplitude of H_z']);
xlabel('y/\lambda'); ylabel('x/\lambda'); title(['H_z at timestep ', timestep]);
getframe(gcf,rect); end
%******************************************************************* % Penghitungan fungsi eror untuk konvergensi pulsa
%******************************************************************
if mod(n,N)==0 ne = n/N;
if (20*log10(sum(sum(abs(Hz(it:ie-it,jt:je-jt)))))) > (20*log10(sum(sum(abs(Hz_p(it:ie-it,jt:je-jt))))))
err(ne) = 0; else
err(ne) = (20*log10(sum(sum(abs(Hz(it:ie-it,jt:je-jt)))))) - (20*log10(sum(sum(abs(Hz_p(it:ie-it,jt:je-jt))))));
end
Hz_p = Hz; end
%******************************************************************* %Penghitungan fungsi eror untuk konvergensi pulsa
%*******************************************************************
if mod(n,N)==0 ne = n/N;
if max(max(abs(Hz_p(npmls+10:ip-10,npmls+10:jp-10))))==0 err(ne) = 100;
i
err(ne) = max(max(abs(abs(Hz(npmls+10:ip-10,npmls+10:jp-10))-abs(Hz_p(npmls+10:ip-10,npmls+10:jp-10))))) /
max(max(abs(Hz_p(npmls+10:ip-10,npmls+10:jp-10)))) * 100; end
Hz_p = Hz; end
%******************************************************************* % Menampilkan
%*******************************************************************
if mod(n,step)==0
%save results_2D.mat dx dt freq nmax ie je is js err N M Ex Ey Hz;
c = round(clock);
disp(['Current time step: ',int2str(n-mod(n,step)),', ',int2str(n/nmax*100),'% completed at
',num2str(c(4)),':',num2str(c(5)),':',num2str(c(6))]); end
n = n + 1;
end
%******************************************************************* % Menyimpan
%******************************************************************
APENDIX F
MENGUBAH PERSAMAAN-PERSAMAAN KE PROGRAM
Persamaan (4.40) :
Diubah dalam program menjadi :
a = 4/4*e0*einf + e0*wpesq*dt^2 + e0*einf*ge*2*dt* a = 4/e0*4*einf+e0*dt^2*wpesq+e0*2*dt*einf*ge
a = (1/dt^2)*(4*dt^2)/(e0*(4*einf+dt^2*wpesq+2*dt*einf*ge) a = (1/dt^2)*a0
i
b = (ge*2*dt)/(4*e0*einf+e0*wpesq*dt^2+e0*einf*ge*2*dt) b = (ge*2*dt)/(e0*4*einf+e0*dt^2*wpesq+e0*2*dt*einf*ge)
b = (1/(2*dt))*ge*(4*dt^2)/(e0*(4*einf+dt^2*wpesq+2*dt*einf*ge)) b = (1/(2*dt))*ge.*a0
c = 4*e0*einf/(4*e0*einf+e0*wpesq*dt^2+e0*einf*ge*2*dt)
c = (e0/dt^2)*einf*(4*dt^2)/e0*(4*einf+dt^2*wpesq+2*dt*einf*ge) c = (e0/dt^2)*einf.*a0;
d = (-e0*wpesq*dt^2)/(4*e0*einf+e0*wpesq*dt^2+e0*einf*ge*2*dt) d = (-1*e0/4)*wpesq*(4*dt^2)/e0*(4*einf+dt^2*wpesq+2*dt*einf*ge) d = (-1*e0/4)*wpesq*a0
e = e0*einf*ge2*dt/(4*e0*einf+e0*wpesq*dt^2+e0*einf*ge*2*dt) e = (1/(2*dt))*e0*einf*ge
*(4*dt^2)/e0*(4*einf+dt^2*wpesq+2*dt*einf*ge) e = (1/(2*dt))*e0*einf*ge*a0
Selanjutnya untuk medan magnet persamaanya
am = 4/4*u0*uinf + u0*wpesq*dt^2 + u0*uinf*gm*2*dt* am = 4/u0*4*uinf+u0*dt^2*wpesq+u0*2*dt*uinf*gm
am = (1/dt^2)*(4*dt^2)/(u0*(4*uinf+dt^2*wpesq+2*dt*uinf*gm) am = (1/dt^2)*am0
am0 = (4*dt^2)/(u0*(4*uinf+dt^2*wpesq+2*dt*uinf*gm))
bm = (gm*2*dt)/(4*u0*uinf+u0*wpesq*dt^2+u0*uinf*gm*2*dt) bm = (gm*2*dt)/(u0*4*uinf+u0*dt^2*wpesq+u0*2*dt*uinf*gm)
bm = (1/(2*dt))*gm*(4*dt^2)/(u0*(4*uinf+dt^2*wpesq+2*dt*uinf*gm)) bm = (1/(2*dt))*gm.*am0
cm = 4*u0*uinf/(4*u0*uinf+u0*wpesq*dt^2+u0*uinf*gm*2*dt)
cm = (u0/dt^2)*uinf*(4*dt^2)/u0*(4*uinf+dt^2*wpesq+2*dt*uinf*gm) cm = (u0/dt^2)*uinf.*am0
dm = (-u0*wpesq*dt^2)/(4*u0*uinf+u0*wpesq*dt^2+u0*uinf*gm*2*dt) dm = (-1*u0/4)*wpesq*(4*dt^2)/u0*(4*uinf+dt^2*wpesq+2*dt*uinf*gm) dm = (-1*u0/4)*wpesq*am0
em = u0*uinf*gm2*dt/(4*u0*uinf+u0*wpesq*dt^2+u0*uinf*gm*2*dt) em = (1/(2*dt))*u0*uinf*gm
i
persamaan (4.35) :
⃗⃗
[
] ⃗⃗
[
]
( ⃗
⃗
)
Hy(1:SIZE-1,n2) = Hy(1:SIZE-1,n1) + ( ( Ex(1:SIZE-1,n1)- Ex(2:SIZE,n1) ) * dt/(u0*dz) )
persamaan (4.36) :
⃗
⃗
⃗⃗
[
] ⃗⃗
[
]
Ex(2:SIZE,n2) = Ex(2:SIZE, n1) + ( dt/(e0*dz)*(Hy(1:SIZE-1, n2) - Hy(2:SIZE, n2)) )
persamaan (4.39), (4.41),(4.42) (4.43) dan (4.44) :
⃗
( ⃗⃗
⃗⃗
⃗⃗
)
( ⃗⃗
⃗⃗
) ( ⃗
⃗
)
( ⃗
⃗
) ( ⃗
)
Ex(:,n2) = a.*(Dx(:,n2)-2*Dx(:,n1)+Dx(:,3))+b.*(Dx(:,n2)-
Dx(:,3))+c.*(2*Ex(:,n1)-Ex(:,3))+d.*(2*Ex(:,n1) +Ex(:,3)) +e.*(Ex(:,3))
⃗⃗
( ⃗
⃗
⃗
) ( ⃗
⃗
) ( ⃗⃗
⃗⃗
)
( ⃗⃗
⃗⃗
) ( ⃗⃗
)
Hy(:,n2) = am.*(By(:,n2)-2*By(:,n1)+By(:,3))+bm.*(By(:,n2)- By(:,3))+cm.*(2*Hy(:,n1)-Hy(:,3))+dm.*(2*Hy(:,n1) +Hy(:,3))+em.*(Hy(:,3))
⃗
⃗
⃗
⃗
By(1:SIZE-1,n2) = By(1:SIZE-1,n1) + ( ( Ex(1:SIZE-1,n1) –
Ex(2:SIZE,n1) ) * dt/(dz) )
⃗⃗
⃗⃗
⃗⃗
⃗⃗
Hy(2:SIZE, n2)) )
|
̃
̃
|
nFDTD = (1/(1i*k0*(z1-z2)))
.*log(EXZ2(1:NFFT/2+1)./EXZ1(1:NFFT/2+1))
erx = ((r-R1) / (r));
ethetax = ((r) / (r-R1));
⃗
[ ⃗⃗
⃗
⃗⃗
⃗
⃗
⃗⃗
⃗
⃗
]
⃗
[ ⃗⃗
⃗⃗
⃗⃗
⃗⃗
⃗
⃗
⃗⃗
⃗⃗
⃗
⃗
]
⃗
[
⃗⃗
⃗
⃗⃗
⃗
⃗
⃗⃗
⃗
⃗
]
⃗
[
⃗⃗
⃗⃗
⃗⃗
⃗⃗
⃗
⃗
⃗⃗
⃗⃗
⃗
⃗
]
i
Ax2 = (2.*ax)-(2.*cx)
Ax3 = ax-bx+cx
ax = ((cosx.^2) + (ethetax.*(sinx.^2))) ./ (dt^2);
bx = ((gamma_px.*(cosx.^2)) + ((sigma_px +(ethetax*gamma_px)) .*(sinx.^2))) ./ (2*dt);
cx = (((cosx.^2).*((omega_px)^2)) + (sigma_px*gamma_px .*(sinx.^2))) ./ (4);
( )
Bx1 = wx+fx+vx
( )
Bx2 = (2.*wx)-(2.*vx)
( )
Bx3 = wx-fx+vx;
wx = ((1-ethetax).*sinx.*cosx) ./ (dt^2)
fx = ((gamma_px-sigma_px-(ethetax*gamma_px)).*sinx.*cosx)./(2*dt) vx = (((omega_px)^2)-(sigma_px*gamma_px)).*sinx.*cosx) ./ (4)
Cx1 = kx+lx
Cx2 = (2.*kx)
kx = 1 / etheta0*(dt^2);
lx = gamma_px / etheta0* (2*dt);
Dx1 = tx+qx+px
Dx2 = (2.*tx)-(2.*px)
Dx3 = tx-qx+px
tx = ((sinx.^2) + (ethetax.*(cosx.^2))) ./ (dt^2)
qx = ((gamma_px.*(sinx.^2)) + ((sigma_px +(ethetax*gamma_px)) .*(cosx.^2)))./(2*dt)
px = (((sinx.^2).*((omega_px)^2)) + (sigma_px*gamma_px .*(cosx.^2))) ./(4)
a0x(i, j) = Ax1 - (((Bx1).^2) ./ Dx1); a1x(i, j) = Ax2 - ((Bx1.*Bx2) ./ Dx1); a2x(i, j) = ((Bx1.*Bx3) ./ Dx1) - (Ax3);
a1xy(i, j) = Bx2 - ((Bx1.*Dx2) ./ Dx1); a2xy(i, j) = ((Bx1.*Dx3) ./ Dx1) - (Bx3);
i
b0xy(i, j) = -(Bx1.*Cx1) ./ Dx1; b1xy(i, j) = (Bx1.*Cx2) ./ Dx1; b2xy(i, j) = -(Bx1.*Cx3) ./ Dx1;
untuk bagian y :
Ay1 = ay+by+cy
Ay2 = (2.*ay)-(2.*cy)
Ay3 = ay-by+cy
ay = ((cosy.^2) + (ethetay.*(siny.^2))) ./ (dt^2);
by = ((gamma_py.*(cosy.^2)) + ((sigma_py +(ethetay*gamma_py)) .*(siny.^2))) ./ (2*dt);
cy = (((cosy.^2).*((omega_py)^2)) + (sigma_py*gamma_py .*(siny.^2))) ./ (4);
( )
By1 = wy+fy+vy
( )
By2 = (2.*wy)-(2.*vy)
By3 = wy-fy+vy;
wy = ((1-ethetay).*siny.*cosy) ./ (dt^2)
fy = ((gamma_py-sigma_py-(ethetay*gamma_py)).*siny.*cosy)./(2*dt) vy = (((omega_py)^2)-(sigma_py*gamma_py)).*siny.*cosy) ./ (4)
Cy1 = ky+ly
Cy2 = (2.*ky)
Cy3 = ky-ly
ky = 1 / etheta0*(dt^2);
ly = gamma_py / etheta0* (2*dt);
Dy1 = ty+qy+py
Dy2 = (2.*ty)-(2.*py)
Dy3 = ty-qy+py
ty = ((siny.^2) + (ethetay.*(cosy.^2))) ./ (dt^2)
qy = ((gamma_py.*(siny.^2)) + ((sigma_py +(ethetay*gamma_py)) .*(cosy.^2)))./(2*dt)
py = (((siny.^2).*((omega_py)^2)) + (sigma_py*gamma_py .*(cosy.^2))) ./(4)
i
a1yx(i, j) = By2 - ((By1.*Dy2) ./ Dy1); a2yx(i, j) = ((By1.*Dy3) ./ Dy1) - (By3);
b0y(i, j) = Cy1; b1y(i, j) = -Cy2; b2y(i, j) = Cy3;
b0yx(i, j) = -(By1.*Cy1) ./ Dy1; b1yx(i, j) = (By1.*Cy2) ./ Dy1; b2yx(i, j) = -(By1.*Cy3) ./ Dy1;