u=u0; p=p0;
while ttstop-0.5Dt
for i=2:Nx-1
pnewi=pi-Dt2Dxrhoc2ui+1-ui-1; iterasi
Euler tekanan terhadap waktu unewi=ui-Dt2Dx1rhopi+1-pi-1;
iterasi Euler kecepatan terhadap waktu
end update nilai tekanan dan kecepatan yg baru
p = pnew; u = unew;
syarat batas p1 = 1;
u1 = 0; pNx = 0.1;
uNx = 0; update waktu
t = t + Dt; gambar hasil
figure1 subplot2,1,1
plotx,p, LineWidth
,2 titlesprintf
tekanan pada saat t=4.3f ,t
xlim[-L L] ylim[0 2]
subplot2,1,2 plotx,u,
LineWidth ,2
titlesprintf kecepatan pada saat t=4.3f
,t xlim[-L L]
ylim[0 2] pause0.01
end
3. Code untuk metode beda hingga grid kolokasi, dengan hampiran beda
mundur untuk diskritisasi ruang dan hampiran beda maju untuk diskritisasi waktu pada persamaan akustik Gambar 4.3.
clc; clear all
;
Nx = 400; banyaknya langkah pada ruang x1
L = 5; Dx = 2LNx;
ukuran langkah pada ruang x x1 = -L:Dx:L;
membuat langkah pada ruang dengan dx adalah jarak dari titik a ke b
x = x11:Nx+Dx2; membuat langkah pada ruang x1 sehingga jarak
langkah semakin kecil Dt = 0.1Dx;
ukuran langkah waktu t rho=1;
massa jenis fluida c=1;
kecepatan rambat gelombang pnew=zeros1,Nx;
tempat penyimpanan perhitungan p unew=zeros1,Nx;
tempat penyimpanan perhitungan u u0=0x;
untuk penyimpanan nilai awal u p0=0x;
untuk penyimpanan nilai awal p for
i=1:Nx if
xi 0 u0i=0;
p0i=1; else
u0i=0; p0i=0.1;
end end
plotx,p0; plotx,u0;
t=0; waktu awal
tstop=1.5; u=u0;
p=p0; while
ttstop-0.5Dt for
i=2:Nx pnewi=pi-DtDxrhoc2ui-ui-1;
iterasi Euler tekanan terhadap waktu
unewi=ui-DtDx1rhopi-pi-1; iterasi
Euler kecepatan terhadap waktu end
update nilai tekanan dan kecepatan yg baru p = pnew;
u = unew; syarat batas
p1 = 1; u1 = 0;
pNx = 0; uNx = 0;
update waktu t = t + Dt;
gambar hasil
figure1 subplot2,1,1
plotx,p, LineWidth
,2 titlesprintf
tekanan pada waktu t=4.3f ,t
xlim[-L L] ylim[0 5]
subplot2,1,2 plotx,u,
LineWidth ,2
titlesprintf kecepatan pada waktu t=4.3f
,t xlim[-L L]
ylim[0 5] pause0.01
end
4. Code untuk metode beda hingga grid selang-seling pada persamaan
akustik Gambar 4.4.
clc clear
all Nx = 400;
banyaknya langkah pada ruang x1 L = 5;
Dx = 2LNx; ukuran langkah pada ruang x
x1 = -L:Dx:L; membuat langkah pada ruang dengan dx adalah
jarak dari titik a ke b x = x11:Nx+Dx2;
membuat langkah pada ruang x1 sehingga jarak langkah semakin kecil
Dt = 0.1Dx; ukuran langkah waktu t
p=zeros1,Nx; tempat penyimpanan perhitungan p
u=zeros1,Nx; tempat penyimpanan perhitungan u
u0=0x; untuk penyimpanan nilai awal u
p0=0x; untuk penyimpanan nilai awal p
kondisi awal program for
i=1:Nx if
xi0 u0i=0;
p0i=1; else
u0i=0; p0i=0.1;
end end
gambar awal program
plotx,p0 plotx,u0
pause1 tfinal=1;
waktu akhir nIteration=tfinalDt;
t=0; waktu awal
un=u0; untuk input iterasi metode beda hingga
staggered grids pn=p0;
untuk input iterasi metode beda hingga staggered grids
xodd=zeros1,Nx2; membuat ruang untuk menghitung kecepatan
air uodd=zeros1,Nx2;
membuat ruang untuk perhitungan kecepatan aliran air pada grid ganjil
xeven=zeros1,Nx2; membuat ruang untuk menghitung tekanan air
peven=zeros1,Nx2; membuat ruang untuk perhitungan tekanan
aliran air pada grid genap menghitung kecepatan dan tekanan aliran air. Jika hasil
modulonya nol maka hasil perhitungannya masuk ke grid genap. Jika hasil
modulonya tidak nol maka hasil perhitungannya masuk ke grid ganjil.
for i=1:Nx
if modi,2 == 0
xeveni2 = xi; else
xoddi+12 = xi; end
end initial condition
p1,1:Nx2 = 1; p1,Nx2:Nx = 0.1;
u1,1:Nx2 = 0; u1,Nx2:Nx = 0;
mulai perhitungan figure1
initial condition p1 = 1;
pend = 0.1; u1 = 0;
uend = 0; tstop=1.5;
program ini berjalan sampai waktu tStop detik rho=1;
massa jenis fluida c=1;
kecepatan rambat gelombang while
ttstop-0.5Dt pp=p;
uu=u; pnew = zeros1,Nx;
unew = zeros1,Nx; for
i = 3:Nx-2 if
modi,2 == 0 perhitungan tekanan pada grid yang
genap uuiph = uui+1;
uuimh = uui-1; pnewi = ppi - rhoc2Dt2Dxuuiph - uuimh;
end end
kondisi batas pnew1:3 = 1;
pnewend-3:end = 0.1; unew1:3 = 0;
unewend-3:end = 0; perhitungan dengan metode beda hingga grid selang-seling
for i=4:Nx-4
if modi,2~=0;
perhitungan tekanan pada grid yang ganjil ppiph = ppi+1;
ppimh = ppi-1; unewi = uui - 1rhoDt2Dxppiph - ppimh;
end end
boundary condition pnew1:4 = 1;
pnewend-4:end = 0.1; unew1:4 = 0;
unewend-4:end = 0; p = pnew;
memperbarui hasil perhitungan p u = unew;
memperbarui hasil perhitungan U menggambar hasil perhitungan P dan U
for i = 1:Nx
if modi,2 == 0
peveni2 = pi; else
uoddi+12 = ui; end
end t=t+Dt;
figure1 subplot2,1,1
plotxeven,peven, LineWidth
,2 titlesprintf
tekanan pada waktu t t=4.3f ,t
xlim[-L L]
ylim[0 2] subplot2,1,2
plotxodd,uodd, LineWidth
,2 titlesprintf
kecepatan pada waktu t t=4.3f ,t
xlim[-L L] ylim[0 2]
pause0.01 end
5. Code untuk metode volume hingga Lax-Friedrichs pada persamaan