SIMULASI NUMERIK KONVEKSI ALAMI PADA SINGLE FIN DAN MULTIPLE FINS DALAM KOTAK 2D DENGAN METODE BEDA HINGGA SKRIPSI Diajukan sebagai salah satu syarat untuk memperoleh gelar Sarjana Teknik Oleh : FERRY ENDHARTA NIM. I1407514 JURUSAN TEKNIK MESIN FAKULTAS TEKNIK UNIVERSITAS SEBELAS MARET SURAKARTA 2010
173
Embed
SIMULASI NUMERIK KONVEKSI ALAMI PADA SINGLE FIN …/Simulasi... · 2.2.2.1 Persamaan Atur Konveksi Alami ... operator diferensial w : operator difer ensial parsial . ... adalah konveksi
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Dengan Variasi Kemiringan Dengan Metode Beda Hingga.
Wilson, Robert V., and Demuren, Ayodeji O., 1998, Higher-Order Compact
Schemes for Numerical Simulation of Incompressible Flows, ICASE
Report No. 98-13, NASA Langley Research Center, Hampton.
Xu, F., J.C. Patterson and C. Ley. 2007. Natural convection adjacent to sidewall
with three fins in a differentially heated cavity. Anziam J. 48 pp. C806-
C819.
38
Lampiran 1. Non-Dimensionalisasi Persamaan Atur
NON-DIMENSIONALISASI PERSAMAAN ATUR
Persamaan atur dibuat tanpa dimensi dengan membagi variabel yang ada
dengan parameter referensi yang mempunyai dimensi samam (Le Quere,1990),
seperti dibawah ini :
Lr
xx
*
, Lr
yy
*
, Lr
PPp
*
, Vr
uu
*
, Vr
vv
*
, tr
tt
*
(L.1.1)
dimana :
Lr = H tr = (H2/)Ra
-0.5
Vr = (/H)Ra0.5
Ra = (gTH3)/()
= (T-Tr)/(T2-T1) Tr = (T1+T2)/2
1. Non-dimensionalisasi Persamaan Kontinyuitas
0
y
v
x
u (L1.2)
Persamaan (L1.1) dimasukkan ke dalam persamaan (L1.2) :
0*
*
*
*
y
v
Lr
Vr
x
u
Lr
Vr (L1.3)
0*
*
*
*
y
v
x
u (L1.4)
Tanda (*) pada persamaan (L1.4) dihilangkan sehingga diperoleh :
0
y
v
x
u (L1.5)
39
2. Non-dimensionalisasi Persamaan Navier-Stokes
Persamaan momentum arah x
2
2
2
2
y
u
x
u
x
p
y
uv
x
uu
t
u
1 (L1.6)
Persamaan (L1.1) dimasukkan kepersamaan (L1.6) :
2*
*2
2*
*2
2*
*2
*
*
*
*
*
*
2
*
*
1
y
u
x
u
Lr
Vr
x
p
Lr
Vr
y
uv
x
uu
Lr
Vr
t
u
tr
Vr
(L1.7)
2*
*2
2*
*2
3
5.0
*
*
3
2
*
*
*
*
*
*
3
2
*
*
3
2
y
u
x
u
H
Ra
x
p
H
Ra
y
uv
x
uu
H
Ra
t
u
H
Ra
(L1.8)
2*
*2
2*
*2
5.0*
*
*
*
*
*
*
*
*
*
y
u
x
u
Rax
p
y
uv
x
uu
t
u
(L1.9)
Tanda (*) pada persamaan (L1.9) dihilangkan sehingga diperoleh :
2
2
2
2
0.5
y
u
x
u
Rax
p
y
uv
x
uu
t
u Pr (L1.10)
Persamaan momentum arah y
TrTgy
v
x
v
y
p
y
vv
x
vu
t
v2
22
2
1 (L1.11)
Persamaan (L1.1) dimasukkan kepersamaan (L1.11) :
2*
*2
2*
*2
2*
*2
*
*
*
*
*
*
2
*
*
1
y
v
x
v
Lr
Vr
x
p
Lr
Vr
y
vv
x
vv
Lr
Vr
t
v
tr
Vr
+ gT (L1.12)
2*
*2
2*
*2
3
5.0
*
*
3
2
*
*
*
*
*
*
3
2
*
*
3
2
y
v
x
v
H
Ra
y
p
H
Ra
y
vv
x
vu
H
Ra
t
v
H
Ra
40
+ gT (L1.13)
2*
*2
2*
*2
5.0*
*
*
*
*
*
*
*
*
*
y
v
x
v
Ray
p
y
vv
x
vu
t
v
+
Rav
THg 13
(L1.14)
Tanda (*) pada persamaan (L1.14) dihilangkan sehingga diperoleh :
PrPr
2
2
2
2
0.5
y
v
x
v
Ray
p
y
vv
x
vu
t
v (L1.15)
3. Non-dimensionalisasi Persamaan Energi
22
22
y
T
x
T
y
Tv
x
Tu
t
T (L1.16)
Persamaan (L1.1) dimasukkan kepersamaan (L1.16) :
2*
2
2*
2
*
*
*
*
*
12
2
1212
yxLr
TT
y
v
x
uLr
TTVr
ttr
TT (L1.17)
2*
2
2*
2
*
*
*
*
* 22
5.0
2
5.0
yxHy
v
x
uH
Ra
tH
Ra (L1.18)
2
*2*
2
*
*
*
*
*
2
5.0
1
yxRayv
x
ut
(L1.19)
Tanda (*) pada persamaan (L1.19) dihilangkan sehingga diperoleh :
22
2 2
5.0
1
yxRayv
xu
t
41
Lampiran 2. Skema kompak beda-hingga
SKEMA KOMPAK BEDA-HINGGA
Skema kompak beda-hingga dapat diturunkan dengan menggunakan formula
PADE (Hirsch.1961). Beberapa operator diferensial yang digunakan untuk
penurunan skema kompak beda hingga adalah seperti berikut :
adalah operator beda tengah :
2/12/1 iii uuu (L2.1)
adalah operator beda tengah :
112
1 iii uuu (L2.2)
E adalah operator pergeseran :
1 ii uEu (L2.3)
Hubungan antara operator-operator tersebut adalah seperti berikut :
1
2
1 EE (L2.4)
122
EE (L2.5)
(L2.6)
Diskritisasi turunan pertama
4
2
61
1xO
u
xux
i
ii
(L2.7)
4
2
61 xO
x
uux i
i
(L2.8)
411
2
14
6
1xOuEE
xuxEE ii
(L2.9)
42
4
11114
3
4
1
4
1xOuu
xuxuxux iiiii
(L2.10)
Diskritisasi turunan kedua
4
2
2
121
1xO
u
xuxx i
i
(L2.11)
4
22
121 xO
x
uuxx i
i
(L2.12)
4
2
1
1 210
12
1xO
x
uEEuxxEE i
i
(L2.13)
4
11211 25
6
10
1
10
1xOuuu
xuxxuxxuxx iiiiii
(L2.14)
43
Kurva Konvergensi
-3
-2,5
-2
-1,5
-1
-0,5
0
0 2000 4000 6000 8000 10000
Jumlah Iterasi
Lo
g10(d
u/d
x+
dv/d
y)
Kurva Konvergensi
-3
-2,5
-2
-1,5
-1
-0,5
0
0 2000 4000 6000 8000 10000
Jumlah Iterasi
Lo
g10(d
u/d
x+
dv/d
y)
Kurva Konvergensi
-3
-2,5
-2
-1,5
-1
-0,5
0
0 2000 4000 6000 8000 10000
Jumlah Iterasi
Lo
g10(d
u/d
x+
dv/d
y)
Lampiran 3. Kurva Konvergensi
Gambar 1. Kurva konvergensi untuk Ra=106 sirip tunggal
Gambar 2. Kurva konvergensi untuk Ra=107 sirip tunggal
Gambar 3. Kurva konvergensi untuk Ra=106 pada 2 sirip
44
Kurva Konvergensi
-3
-2,5
-2
-1,5
-1
-0,5
0
0 2000 4000 6000 8000 10000
Jumlah Iterasi
Lo
g10(d
u/d
x+
dv/d
y)
Kurva Konvergensi
-3
-2,5
-2
-1,5
-1
-0,5
0
0 2000 4000 6000 8000 10000
Jumlah Iterasi
Lo
g10(d
u/d
x+
dv/d
y)
Kurva Konvergensi
-3
-2,5
-2
-1,5
-1
-0,5
0
0 2000 4000 6000 8000 10000
Jumlah Iterasi
Lo
g10(d
u/d
x+
dv/d
y)
Gambar 4. Kurva konvergensi untuk Ra=107 pada 2 sirip
Gambar 5. Kurva konvergensi untuk Ra=106 pada 3 sirip
Gambar 6. Kurva konvergensi untuk Ra=107 pada 3 sirip
45
kurva konvergensi
-3
-2,5
-2
-1,5
-1
-0,5
0
0 2000 4000 6000 8000 10000
Jumlah Iterasi
Lo
g10(d
u/d
x+
dv/d
y)
Kurva Konvergensi
-3
-2,5
-2
-1,5
-1
-0,5
0
0 2000 4000 6000 8000 10000
Jumlah Iterasi
Lo
g10(d
u/d
x+
dv/d
y)
Gambar 7. Kurva konvergensi untuk Ra=106 pada 4 sirip
Gambar 8. Kurva konvergensi untuk Ra=107 pada 4 sirip
46
Lampiran 4. Numerical Wavenumber
NUMERICAL WAVENUMBER
Untuk mengetahui akurasi berbagai skema beda hingga dapat dilakukan dengan
analisa numerical wavwnumber. Perhitungan numerical wavenumber beberapa
skema beda hingga dijelaskan di bawah ini.
Sebelumnya kita definisikan variabel dalam mode Fourier adalah :
ikxet (L4.1)
)(t adalah koefisien Fourier darai , i= 1 dan k adalah wavenumber.
)(
1
xxik
i e
(L4.2)
)(
1
xxik
i e
(L4.3)
)(
1
xxik
i
eikx
(L4.4)
)(
1
xxik
i
eikx
(L4.5)
Skema beda tengah orde-dua
xx
ii
2
11 (L4.6)
x
eeeik
xxikxxikikx
2
)()(
(L4.7)
i
eexk
xikxik
2
(L4.8)
xkxk sin (L4.9)
47
Skema beda tengah orde-empat
xx
iiii
12
88 2112 (L4.10)
x
eeeeeik
xxikxxikxxikxxikikx
12
88)2()()()2(
(L4.11)
x
eeeeik
xkixikxikxki
12
8822
(L4.12)
i
ee
i
eexk
xikxikxkixki
28
26
122
(L4.13)
xkxkxk sin82sin6
1 (L4.14)
Skema kompak beda hingga
221
'
1
''
142
iiiiiix
b
x
a (L4.15)
)()()()(
2
xxikxxikxxikikxxxikee
x
aeikeikeik
+
)2()2(
4
xxikxxikee
x
b
(L4.16)
xkixkixikxikxikxikee
x
bee
x
aikeikike
22)
42 (L4.17)
i
ee
x
bi
i
ee
x
aiik
eeik
xkixkixikxikxikxik
22222
22
(L4.18)
xkx
bxk
x
axkk
2sin
2sin1cos2 (L4.19)
1cos2
2sin2
sin
xk
xkb
xka
xk
(L4.20)
Kurva numerical wavenumber untuk berbagai skema beda hingga ditampilkan
dalam gambar 2.4.
48
Lampiran 5. Program Konveksi Alami Pada Sirip Tunggal C------------------------------------------------------------------------- C Program penyelesaian konveksi alami pada sirip tunggal C------------------------------------------------------------------------- PARAMETER(m=500,n=500) COMMON/aa1/u(m,n),v(m,n),p(m,n),ux(m,n),uy(m,n), 1 vx(m,n),vy(m,n),px(m,n),py(m,n), 1 uxx(m,n),uyy(m,n),vxx(m,n),vyy(m,n),x(m,n),y(m,n) 1 ,o(m,n),ox(m,n),oy(m,n),oxx(m,n),oyy(m,n) COMMON/aa2/nx,ny,nt,dx,dy,dt,pr,ra,i1,i2,j1,j2 OPEN(8,FILE='C:\matlab6p1\work\temp1') OPEN(7,FILE='C:\matlab6p1\work\pv1') OPEN(4,FILE='C:\matlab6p1\work\temp') OPEN(3,FILE='C:\matlab6p1\work\pv') OPEN(2,FILE='C:\matlab6p1\work\num') OPEN(1,FILE='C:\matlab6p1\work\div') call awal do k=1,nt ck=0. call rkv do i=1,nx do j=1,ny ck=ck+abs(ux(i,j)+vy(i,j)) end do end do if(ck.gt.0) then WRITE(*,*)k,LOG10(ck/nx/ny) WRITE(1,*)k,LOG10(ck/nx/ny) endif end do call hasil stop end C---------------------------------------- C Syarat awal dan syarat batas C---------------------------------------- subroutine awal PARAMETER(m=500,n=500) CHARACTER mul*2 COMMON/aa1/u(m,n),v(m,n),p(m,n),ux(m,n),uy(m,n), 1 vx(m,n),vy(m,n),px(m,n),py(m,n), 1 uxx(m,n),uyy(m,n),vxx(m,n),vyy(m,n),x(m,n),y(m,n) 1 ,o(m,n),ox(m,n),oy(m,n),oxx(m,n),oyy(m,n) COMMON/aa2/nx,ny,nt,dx,dy,dt,pr,ra,i1,i2,j1,j2 WRITE(*,*)' t= ' READ(*,*)tt
49
nx=201 ny=201 i1=1 i2=nx j1=1 j2=ny dx=1./200. dy=1./200. dt=0.0025 nt=tt/dt+1 pr=0.71 ra=1000000. WRITE(*,*)' Dari awal ?' READ(*,'(a)')mul IF(mul.eq.'y')then do i=1,nx do j=1,ny x(i,j)=(i-1)*dx y(i,j)=(j-1)*dy u(i,j)=0. v(i,j)=0. p(i,j)=0. o(i,j)=0. enddo enddo do j=1,ny o(1,j)=0.5 o(nx,j)=-0.5 enddo else do j=1,ny do i=1,nx READ(7,*)x(i,j),y(i,j),u(i,j),v(i,j),p(i,j) READ(8,*)x(i,j),y(i,j),o(i,j) end do end do end if return end C-------------------------------------------------------- C Penyelesaian persamaan Navier - Stokes C-------------------------------------------------------- subroutine rkv PARAMETER(m=500,n=500)
50
COMMON/aa1/u(m,n),v(m,n),p(m,n),ux(m,n),uy(m,n), 1 vx(m,n),vy(m,n),px(m,n),py(m,n), 1 uxx(m,n),uyy(m,n),vxx(m,n),vyy(m,n),x(m,n),y(m,n) 1 ,o(m,n),ox(m,n),oy(m,n),oxx(m,n),oyy(m,n) COMMON/aa2/nx,ny,nt,dx,dy,dt,pr,ra,i1,i2,j1,j2 DIMENSION h1(m,n,6),h2(m,n,6),s1(m,n,6),s2(m,n,6),a(5),b(5) DATA a(1),a(2),a(3),a(4),a(5)/0.,-0.41789047,-1.19215169, 1 -1.69778469,-1.51418344/ DATA b(1),b(2),b(3),b(4),b(5)/0.14965902,0.37921031,0.82295502, 1 0.69945045,0.15305724/ do i=2,nx-1 do j=2,ny-1 s1(i,j,1)=u(i,j) s2(i,j,1)=v(i,j) end do end do do k=1,5 call derv1(u,ux,uy) call derv1(v,vx,vy) call derv2(u,uxx,uyy) call derv2(v,vxx,vyy) call derp1(p,px,py) do i=2,nx-1 do j=2,ny-1 h1(i,j,k)=-u(i,j)*ux(i,j)-v(i,j)*uy(i,j)-px(i,j) 1 +(uxx(i,j)+uyy(i,j))*pr/SQRT(ra) h2(i,j,k)=-u(i,j)*vx(i,j)-v(i,j)*vy(i,j)-py(i,j) 1 +(vxx(i,j)+vyy(i,j))*pr/SQRT(ra)+pr*o(i,j) end do end do do i=2,nx-1 do j=2,ny-1 IF(i.le.101.and.j.ge.98.and.j.le.102)then u(i,j)=0. v(i,j)=0 else h1(i,j,k)=h1(i,j,k)+a(k)*h1(i,j,k-1) h2(i,j,k)=h2(i,j,k)+a(k)*h2(i,j,k-1) s1(i,j,k+1)=s1(i,j,k)+b(k)*dt*h1(i,j,k) s2(i,j,k+1)=s2(i,j,k)+b(k)*dt*h2(i,j,k) u(i,j)=s1(i,j,k+1) v(i,j)=s2(i,j,k+1) endif end do end do
51
call derv1(u,ux,uy) call derv1(v,vx,vy) c------------------------------------------------------------------- c Tekananan dihitung dengan artifisial kompresibiliti c------------------------------------------------------------------- do i=2,nx-1 do j=2,ny-1 IF(i.lt.101.and.j.gt.98.and.j.lt.102)then p(i,j)=0 else p(i,j)=p(i,j)-(ux(i,j)+vy(i,j))*dt*0.5 endif end do end do do i=1,nx IF(i.le.101)then j1=1 j2=98 j3=102 j4=ny else j1=1 j2=ny endif p(i,j1)=(48*p(i,j1+1)-36*p(i,j1+2)+16*p(i,j1+3)-3*p(i,j1+4))/25 p(i,j2)=(48*p(i,j2-1)-36*p(i,j2-2)+16*p(i,j2-3)-3*p(i,j2-4))/25 p(i,j3)=(48*p(i,j3+1)-36*p(i,j3+2)+16*p(i,j3+3)-3*p(i,j3+4))/25 p(i,j4)=(48*p(i,j4-1)-36*p(i,j4-2)+16*p(i,j4-3)-3*p(i,j4-4))/25 end do i1=1 i2=nx j1=1 j2=ny do j=1,ny IF(j.ge.98.and.j.le.102)then i1=101 else i1=1 i2=nx endif p(i1,j)=(48*p(i1+1,j)-36*p(i1+2,j)+16*p(i1+3,j)-3*p(i1+4,j))/25 p(i2,j)=(48*p(i2-1,j)-36*p(i2-2,j)+16*p(i2-3,j)-3*p(i2-4,j))/25 enddo call rkt c-----------------------------------------------------------
52
end do return end C-------------------------------------------- C Penyelesaian persamaan energi C------------------------------------------- subroutine rkt PARAMETER(m=500,n=500) COMMON/aa1/u(m,n),v(m,n),p(m,n),ux(m,n),uy(m,n), 1 vx(m,n),vy(m,n),px(m,n),py(m,n), 1 uxx(m,n),uyy(m,n),vxx(m,n),vyy(m,n),x(m,n),y(m,n) 1 ,o(m,n),ox(m,n),oy(m,n),oxx(m,n),oyy(m,n) COMMON/aa2/nx,ny,nt,dx,dy,dt,pr,ra,i1,i2,j1,j2 DIMENSION h(m,n,6),s(m,n,6),a(5),b(5) DATA a(1),a(2),a(3),a(4),a(5)/0.,-0.41789047,-1.19215169, 1 -1.69778469,-1.51418344/ DATA b(1),b(2),b(3),b(4),b(5)/0.14965902,0.37921031,0.82295502, 1 0.69945045,0.15305724/ do i=2,nx-1 do j=2,ny-1 s(i,j,1)=o(i,j) end do end do do k=1,5 call dero1(o,ox,oy) call derv2(o,oxx,oyy) do i=2,nx-1 do j=2,ny-1 IF(i.lt.101.and.j.gt.98.and.j.lt.102)then o(i,j)=0. else h(i,j,k)=-u(i,j)*ox(i,j)-v(i,j)*oy(i,j)+ 1 (oxx(i,j)+oyy(i,j))/SQRT(ra)+a(k)*h(i,j,k-1) s(i,j,k+1)=s(i,j,k)+b(k)*dt*h(i,j,k) o(i,j)=s(i,j,k+1) endif end do end do do i=1,nx IF(i.le.101)then j1=1 j2=98 j3=102 j4=ny
53
o(i,j1)=(48*o(i,j1+1)-36*o(i,j1+2)+16*o(i,j1+3)-3*o(i,j1+4))/25 o(i,j2)=0.5 o(i,j3)=0.5 o(i,j4)=(48*o(i,j4-1)-36*o(i,j4-2)+16*o(i,j4-3)-3*o(i,j4-4))/25 else j1=1 j2=ny o(i,j1)=(48*o(i,j1+1)-36*o(i,j1+2)+16*o(i,j1+3)-3*o(i,j1+4))/25 o(i,j2)=(48*o(i,j2-1)-36*o(i,j2-2)+16*o(i,j2-3)-3*o(i,j2-4))/25 endif end do do j=1,ny IF(j.ge.98.and.j.le.102)then i1=101 else i1=1 i2=nx endif o(i1,j)=0.5 end do i1=1 i2=nx j1=1 j2=ny do i=1,nx do j=1,ny IF(i.lt.101.and.j.gt.98.and.j.lt.102)then o(i,j)=0. endif end do end do end do return end C------------------------------------------ C Turunan pertama variabel kecepatan C------------------------------------------ subroutine derv1(q,qx,qy) COMMON/aa2/nx,ny,nt,dx,dy,dt,pr,ra,i1,i2,j1,j2 COMMON/aa4/a(500),b(500),c(500),d(500),l1,l2 DIMENSION q(500,500),qx(500,500),qy(500,500) alp=0.25 ak=1.5 do j=1,ny IF(j.ge.98.and.j.le.102)then
b(j2-1)=b(j2-1)-11*alp d(j2-1)=d(j2-1)-s2*alp l1=j1+2 l2=j2-1 call tridi do 60 j=j1+1,j2-1 60 qyy(i,j)=d(j) qyy(i,j1)=s1-11*qyy(i,j1+1) qyy(i,j2)=s2-11*qyy(i,j2-1) 40 continue return end C------------------------- C Algoritma Thomas C------------------------- SUBROUTINE TRIDI parameter (m=500) COMMON /AA4/A(m),B(m),C(m),D(m),L1,l2 DO 1 I=L1,L2 RT=-A(I)/B(I-1) B(I)=B(I)+RT*C(I-1) 1 D(I)=D(I)+RT*D(I-1) D(L2)=D(L2)/B(L2) DO 2 I=L2-1,L1-1,-1 2 D(I)=(D(I)-C(I)*D(I+1))/B(I) RETURN END C-------------------------- C Hasil perhitungan C-------------------------- subroutine hasil PARAMETER(m=500,n=500) COMMON/aa1/u(m,n),v(m,n),p(m,n),ux(m,n),uy(m,n), 1 vx(m,n),vy(m,n),px(m,n),py(m,n), 1 uxx(m,n),uyy(m,n),vxx(m,n),vyy(m,n),x(m,n),y(m,n) 1 ,o(m,n),ox(m,n),oy(m,n),oxx(m,n),oyy(m,n) COMMON/aa2/nx,ny,nt,dx,dy,dt,pr,ra,i1,i2,j1,j2 WRITE(2,*)NX WRITE(2,*)NY do 10 j=1,ny do 10 i=1,nx WRITE(3,*)x(i,j),y(i,j),u(i,j),v(i,j)!,p(i,j) 10 WRITE(4,*)x(i,j),y(i,j),o(i,j) return end
62
Lampiran 6. Program Konveksi Alami Pada 2 Sirip C------------------------------------------------------------------- C Program penyelesaian konveksi alami pada 2 sirip C------------------------------------------------------------------- PARAMETER(m=500,n=500) COMMON/aa1/u(m,n),v(m,n),p(m,n),ux(m,n),uy(m,n), 1 vx(m,n),vy(m,n),px(m,n),py(m,n), 1 uxx(m,n),uyy(m,n),vxx(m,n),vyy(m,n),x(m,n),y(m,n) 1 ,o(m,n),ox(m,n),oy(m,n),oxx(m,n),oyy(m,n) COMMON/aa2/nx,ny,nt,dx,dy,dt,pr,ra,i1,i2,j1,j2 OPEN(8,FILE='C:\matlab6p1\work\temp1') OPEN(7,FILE='C:\matlab6p1\work\pv1') OPEN(4,FILE='C:\matlab6p1\work\temp') OPEN(3,FILE='C:\matlab6p1\work\pv') OPEN(2,FILE='C:\matlab6p1\work\num') OPEN(1,FILE='C:\matlab6p1\work\div') call awal do k=1,nt ck=0. call rkv do i=1,nx do j=1,ny ck=ck+abs(ux(i,j)+vy(i,j)) end do end do if(ck.gt.0) then WRITE(*,*)k,LOG10(ck/nx/ny) WRITE(1,*)k,LOG10(ck/nx/ny) endif end do call hasil stop end C------------------------------------- C Syarat awal dan syarat batas C------------------------------------- subroutine awal PARAMETER(m=500,n=500) CHARACTER mul*2 COMMON/aa1/u(m,n),v(m,n),p(m,n),ux(m,n),uy(m,n), 1 vx(m,n),vy(m,n),px(m,n),py(m,n), 1 uxx(m,n),uyy(m,n),vxx(m,n),vyy(m,n),x(m,n),y(m,n) 1 ,o(m,n),ox(m,n),oy(m,n),oxx(m,n),oyy(m,n) COMMON/aa2/nx,ny,nt,dx,dy,dt,pr,ra,i1,i2,j1,j2 WRITE(*,*)' t= ' READ(*,*)tt nx=201 ny=201
63
i1=1 i2=nx j1=1 j2=ny dx=1./200. dy=1./200. dt=0.0025 nt=tt/dt+1 pr=0.71 ra=10000000. WRITE(*,*)' Dari awal ?' READ(*,'(a)')mul IF(mul.eq.'y')then do i=1,nx do j=1,ny x(i,j)=(i-1)*dx y(i,j)=(j-1)*dy u(i,j)=0. v(i,j)=0. p(i,j)=0. o(i,j)=0. enddo enddo do j=1,ny o(1,j)=0.5 o(nx,j)=-0.5 enddo else do j=1,ny do i=1,nx READ(7,*)x(i,j),y(i,j),u(i,j),v(i,j),p(i,j) READ(8,*)x(i,j),y(i,j),o(i,j) end do end do end if return end C----------------------------------------------- C Penyelesaian persamaan Navier - Stokes C----------------------------------------------- subroutine rkv PARAMETER(m=500,n=500) COMMON/aa1/u(m,n),v(m,n),p(m,n),ux(m,n),uy(m,n), 1 vx(m,n),vy(m,n),px(m,n),py(m,n),
64
1 uxx(m,n),uyy(m,n),vxx(m,n),vyy(m,n),x(m,n),y(m,n) 1 ,o(m,n),ox(m,n),oy(m,n),oxx(m,n),oyy(m,n) COMMON/aa2/nx,ny,nt,dx,dy,dt,pr,ra,i1,i2,j1,j2 DIMENSION h1(m,n,6),h2(m,n,6),s1(m,n,6),s2(m,n,6),a(5),b(5) DATA a(1),a(2),a(3),a(4),a(5)/0.,-0.41789047,-1.19215169, 1 -1.69778469,-1.51418344/ DATA b(1),b(2),b(3),b(4),b(5)/0.14965902,0.37921031,0.82295502, 1 0.69945045,0.15305724/ do i=2,nx-1 do j=2,ny-1 s1(i,j,1)=u(i,j) s2(i,j,1)=v(i,j) end do end do do k=1,5 call derv1(u,ux,uy) call derv1(v,vx,vy) call derv2(u,uxx,uyy) call derv2(v,vxx,vyy) call derp1(p,px,py) do i=2,nx-1 do j=2,ny-1 h1(i,j,k)=-u(i,j)*ux(i,j)-v(i,j)*uy(i,j)-px(i,j) 1 +(uxx(i,j)+uyy(i,j))*pr/SQRT(ra) h2(i,j,k)=-u(i,j)*vx(i,j)-v(i,j)*vy(i,j)-py(i,j) 1 +(vxx(i,j)+vyy(i,j))*pr/SQRT(ra)+pr*o(i,j) end do end do do i=2,nx-1 do j=2,ny-1 IF(i.le.101.and.j.ge.65.and.j.le.69)then u(i,j)=0. v(i,j)=0 ELSEIF(i.le.101.and.j.ge.131.and.j.le.135)then u(i,j)=0. v(i,j)=0 else h1(i,j,k)=h1(i,j,k)+a(k)*h1(i,j,k-1) h2(i,j,k)=h2(i,j,k)+a(k)*h2(i,j,k-1) s1(i,j,k+1)=s1(i,j,k)+b(k)*dt*h1(i,j,k) s2(i,j,k+1)=s2(i,j,k)+b(k)*dt*h2(i,j,k) u(i,j)=s1(i,j,k+1) v(i,j)=s2(i,j,k+1) endif end do
65
end do call derv1(u,ux,uy) call derv1(v,vx,vy) c----------------------------------------------------------- c Tekananan dihitung dengan artifisial kompresibiliti c----------------------------------------------------------- do i=2,nx-1 do j=2,ny-1 IF(i.lt.101.and.j.gt.65.and.j.lt.69)then p(i,j)=0 ELSEIF(i.lt.101.and.j.gt.131.and.j.lt.135)then p(i,j)=0 else p(i,j)=p(i,j)-(ux(i,j)+vy(i,j))*dt*0.5 endif end do end do do i=1,nx IF(i.le.101)then j1=1 j2=65 j3=69 j4=131 j5=135 j6=ny else j1=1 j2=ny endif p(i,j1)=(48*p(i,j1+1)-36*p(i,j1+2)+16*p(i,j1+3)-3*p(i,j1+4))/25 p(i,j2)=(48*p(i,j2-1)-36*p(i,j2-2)+16*p(i,j2-3)-3*p(i,j2-4))/25 p(i,j3)=(48*p(i,j3+1)-36*p(i,j3+2)+16*p(i,j3+3)-3*p(i,j3+4))/25 p(i,j4)=(48*p(i,j4-1)-36*p(i,j4-2)+16*p(i,j4-3)-3*p(i,j4-4))/25 p(i,j5)=(48*p(i,j5+1)-36*p(i,j5+2)+16*p(i,j5+3)-3*p(i,j5+4))/25 p(i,j6)=(48*p(i,j6-1)-36*p(i,j6-2)+16*p(i,j6-3)-3*p(i,j6-4))/25 end do i1=1 i2=nx j1=1 j2=ny do j=1,ny IF(j.ge.65.and.j.le.69)then i1=101 elseif(j.ge.131.and.j.le.135)then i1=101 else i1=1
66
i2=nx endif p(i1,j)=(48*p(i1+1,j)-36*p(i1+2,j)+16*p(i1+3,j)-3*p(i1+4,j))/25 p(i2,j)=(48*p(i2-1,j)-36*p(i2-2,j)+16*p(i2-3,j)-3*p(i2-4,j))/25 enddo call rkt c----------------------------------------------------------- end do return end C---------------------------------------- C Penyelesaian persamaan energi C---------------------------------------- subroutine rkt PARAMETER(m=500,n=500) COMMON/aa1/u(m,n),v(m,n),p(m,n),ux(m,n),uy(m,n), 1 vx(m,n),vy(m,n),px(m,n),py(m,n), 1 uxx(m,n),uyy(m,n),vxx(m,n),vyy(m,n),x(m,n),y(m,n) 1 ,o(m,n),ox(m,n),oy(m,n),oxx(m,n),oyy(m,n) COMMON/aa2/nx,ny,nt,dx,dy,dt,pr,ra,i1,i2,j1,j2 DIMENSION h(m,n,6),s(m,n,6),a(5),b(5) DATA a(1),a(2),a(3),a(4),a(5)/0.,-0.41789047,-1.19215169, 1 -1.69778469,-1.51418344/ DATA b(1),b(2),b(3),b(4),b(5)/0.14965902,0.37921031,0.82295502, 1 0.69945045,0.15305724/ do i=2,nx-1 do j=2,ny-1 s(i,j,1)=o(i,j) end do end do do k=1,5 call dero1(o,ox,oy) call derv2(o,oxx,oyy) do i=2,nx-1 do j=2,ny-1 IF(i.lt.101.and.j.gt.65.and.j.lt.69)then o(i,j)=0. ELSEIF(i.lt.101.and.j.gt.131.and.j.lt.135)then o(i,j)=0. else h(i,j,k)=-u(i,j)*ox(i,j)-v(i,j)*oy(i,j)+ 1 (oxx(i,j)+oyy(i,j))/SQRT(ra)+a(k)*h(i,j,k-1)
67
s(i,j,k+1)=s(i,j,k)+b(k)*dt*h(i,j,k) o(i,j)=s(i,j,k+1) endif end do end do do i=1,nx IF(i.le.101)then j1=1 j2=65 j3=69 j4=131 j5=135 j6=ny o(i,j1)=(48*o(i,j1+1)-36*o(i,j1+2)+16*o(i,j1+3)-3*o(i,j1+4))/25 o(i,j2)=0.5 o(i,j3)=0.5 o(i,j4)=0.5 o(i,j5)=0.5 o(i,j6)=(48*o(i,j6-1)-36*o(i,j6-2)+16*o(i,j6-3)-3*o(i,j6-4))/25 else j1=1 j2=ny o(i,j1)=(48*o(i,j1+1)-36*o(i,j1+2)+16*o(i,j1+3)-3*o(i,j1+4))/25 o(i,j2)=(48*o(i,j2-1)-36*o(i,j2-2)+16*o(i,j2-3)-3*o(i,j2-4))/25 endif end do do j=1,ny IF(j.ge.65.and.j.le.69)then i1=101 elseif(j.ge.131.and.j.le.135)then i1=101 else i1=1 i2=nx endif o(i1,j)=0.5 end do i1=1 i2=nx j1=1 j2=ny do i=1,nx do j=1,ny IF(i.lt.101.and.j.gt.65.and.j.lt.69)then o(i,j)=0. ELSEIF(i.lt.101.and.j.gt.131.and.j.lt.135)then
68
o(i,j)=0. endif end do end do end do return end C------------------------------------------ C Turunan pertama variabel kecepatan C------------------------------------------ subroutine derv1(q,qx,qy) COMMON/aa2/nx,ny,nt,dx,dy,dt,pr,ra,i1,i2,j1,j2 COMMON/aa4/a(500),b(500),c(500),d(500),l1,l2 DIMENSION q(500,500),qx(500,500),qy(500,500) alp=0.25 ak=1.5 do j=1,ny IF(j.ge.65.and.j.le.69)then i1=101 elseif(j.ge.131.and.j.le.135)then i1=101 else i1=1 i2=nx endif qx(i1,j)=(-3*q(i1+4,j)+16*q(i1+3,j)-36*q(i1+2,j)+48*q(i1+1,j) 1 -25*q(i1,j))/12/dx qx(i2,j)=(3*q(i2-4,j)-16*q(i2-3,j)+36*q(i2-2,j)-48*q(i2-1,j) 1 +25*q(i2,j))/12/dx do 10 i=i1+1,i2-1 a(i)=alp b(i)=1. c(i)=alp 10 d(i)=ak*(q(i+1,j)-q(i-1,j))/2/dx d(i1+1)=d(i1+1)-a(i1+1)*qx(i1,j) a(i1+1)=0. d(i2-1)=d(i2-1)-c(i2-1)*qx(i2,j) c(i2-1)=0. l1=i1+2 l2=i2-1 call tridi do 20 i=i1+1,i2-1 20 qx(i,j)=d(i) enddo
d(j6-1)=d(j6-1)-s6*alp l1=j5+2 l2=j6-1 call tridi do 81 j=j5+1,j6-1 81 qyy(i,j)=d(j) qyy(i,j5)=s1-11*qyy(i,j5+1) qyy(i,j6)=s2-11*qyy(i,j6-1) else j1=1 j2=ny endif s1=(13*q(i,j1)-27*q(i,j1+1)+15*q(i,j1+2)-q(i,j1+3))/dy/dy s2=(-q(i,j2-3)+15*q(i,j2-2)-27*q(i,j2-1)+13*q(i,j2))/dy/dy do 50 j=j1+1,j2-1 a(j)=alp b(j)=1. c(j)=alp 50 d(j)=ak*(q(i,j+1)-2*q(i,j)+q(i,j-1))/dy/dy b(j1+1)=b(j1+1)-11*alp d(j1+1)=d(j1+1)-s1*alp b(j2-1)=b(j2-1)-11*alp d(j2-1)=d(j2-1)-s2*alp l1=j1+2 l2=j2-1 call tridi do 60 j=j1+1,j2-1 60 qyy(i,j)=d(j) qyy(i,j1)=s1-11*qyy(i,j1+1) qyy(i,j2)=s2-11*qyy(i,j2-1) 40 continue return end C------------------------- C Algoritma Thomas C------------------------- SUBROUTINE TRIDI parameter (m=500) COMMON /AA4/A(m),B(m),C(m),D(m),L1,l2 DO 1 I=L1,L2 RT=-A(I)/B(I-1) B(I)=B(I)+RT*C(I-1) 1 D(I)=D(I)+RT*D(I-1) D(L2)=D(L2)/B(L2) DO 2 I=L2-1,L1-1,-1
78
2 D(I)=(D(I)-C(I)*D(I+1))/B(I) RETURN END C-------------------------- C Hasil perhitungan C-------------------------- subroutine hasil PARAMETER(m=500,n=500) COMMON/aa1/u(m,n),v(m,n),p(m,n),ux(m,n),uy(m,n), 1 vx(m,n),vy(m,n),px(m,n),py(m,n), 1 uxx(m,n),uyy(m,n),vxx(m,n),vyy(m,n),x(m,n),y(m,n) 1 ,o(m,n),ox(m,n),oy(m,n),oxx(m,n),oyy(m,n) COMMON/aa2/nx,ny,nt,dx,dy,dt,pr,ra,i1,i2,j1,j2 WRITE(2,*)NX WRITE(2,*)NY do 10 j=1,ny do 10 i=1,nx WRITE(3,*)x(i,j),y(i,j),u(i,j),v(i,j)!,p(i,j) 10 WRITE(4,*)x(i,j),y(i,j),o(i,j) return end
79
Lampiran 7. Program Konveksi Alami Pada 3 Sirip C------------------------------------------------------------------- C Program penyelesaian konveksi alami pada 3 sirip C------------------------------------------------------------------- PARAMETER(m=500,n=500) COMMON/aa1/u(m,n),v(m,n),p(m,n),ux(m,n),uy(m,n), 1 vx(m,n),vy(m,n),px(m,n),py(m,n), 1 uxx(m,n),uyy(m,n),vxx(m,n),vyy(m,n),x(m,n),y(m,n) 1 ,o(m,n),ox(m,n),oy(m,n),oxx(m,n),oyy(m,n) COMMON/aa2/nx,ny,nt,dx,dy,dt,pr,ra,i1,i2,j1,j2 OPEN(8,FILE='C:\matlab6p1\work\temp1') OPEN(7,FILE='C:\matlab6p1\work\pv1') OPEN(4,FILE='C:\matlab6p1\work\temp') OPEN(3,FILE='C:\matlab6p1\work\pv') OPEN(2,FILE='C:\matlab6p1\work\num') OPEN(1,FILE='C:\matlab6p1\work\div') call awal do k=1,nt ck=0. call rkv do i=1,nx do j=1,ny ck=ck+abs(ux(i,j)+vy(i,j)) end do end do if(ck.gt.0) then WRITE(*,*)k,LOG10(ck/nx/ny) WRITE(1,*)k,LOG10(ck/nx/ny) endif end do call hasil stop end C---------------------------------------- C Syarat awal dan syarat batas C---------------------------------------- subroutine awal PARAMETER(m=500,n=500) CHARACTER mul*2 COMMON/aa1/u(m,n),v(m,n),p(m,n),ux(m,n),uy(m,n), 1 vx(m,n),vy(m,n),px(m,n),py(m,n), 1 uxx(m,n),uyy(m,n),vxx(m,n),vyy(m,n),x(m,n),y(m,n) 1 ,o(m,n),ox(m,n),oy(m,n),oxx(m,n),oyy(m,n) COMMON/aa2/nx,ny,nt,dx,dy,dt,pr,ra,i1,i2,j1,j2 WRITE(*,*)' t= '
80
READ(*,*)tt nx=201 ny=201 i1=1 i2=nx j1=1 j2=ny dx=1./200. dy=1./200. dt=0.0025 nt=tt/dt+1 pr=0.71 ra=10000000. WRITE(*,*)' Dari awal ?' READ(*,'(a)')mul IF(mul.eq.'y')then do i=1,nx do j=1,ny x(i,j)=(i-1)*dx y(i,j)=(j-1)*dy u(i,j)=0. v(i,j)=0. p(i,j)=0. o(i,j)=0. enddo enddo do j=1,ny o(1,j)=0.5 o(nx,j)=-0.5 enddo else do j=1,ny do i=1,nx READ(7,*)x(i,j),y(i,j),u(i,j),v(i,j),p(i,j) READ(8,*)x(i,j),y(i,j),o(i,j) end do end do end if return end C-------------------------------------------------------- C Penyelesaian persamaan Navier - Stokes C-------------------------------------------------------- subroutine rkv PARAMETER(m=500,n=500)
81
COMMON/aa1/u(m,n),v(m,n),p(m,n),ux(m,n),uy(m,n), 1 vx(m,n),vy(m,n),px(m,n),py(m,n), 1 uxx(m,n),uyy(m,n),vxx(m,n),vyy(m,n),x(m,n),y(m,n) 1 ,o(m,n),ox(m,n),oy(m,n),oxx(m,n),oyy(m,n) COMMON/aa2/nx,ny,nt,dx,dy,dt,pr,ra,i1,i2,j1,j2 DIMENSION h1(m,n,6),h2(m,n,6),s1(m,n,6),s2(m,n,6),a(5),b(5) DATA a(1),a(2),a(3),a(4),a(5)/0.,-0.75789047,-1.19215169, 1 -1.69778469,-1.51418344/ DATA b(1),b(2),b(3),b(4),b(5)/0.14965902,0.37921031,0.82295502, 1 0.69945045,0.15305724/ do i=2,nx-1 do j=2,ny-1 s1(i,j,1)=u(i,j) s2(i,j,1)=v(i,j) end do end do do k=1,5 call derv1(u,ux,uy) call derv1(v,vx,vy) call derv2(u,uxx,uyy) call derv2(v,vxx,vyy) call derp1(p,px,py) do i=2,nx-1 do j=2,ny-1 h1(i,j,k)=-u(i,j)*ux(i,j)-v(i,j)*uy(i,j)-px(i,j) 1 +(uxx(i,j)+uyy(i,j))*pr/SQRT(ra) h2(i,j,k)=-u(i,j)*vx(i,j)-v(i,j)*vy(i,j)-py(i,j) 1 +(vxx(i,j)+vyy(i,j))*pr/SQRT(ra)+pr*o(i,j) end do end do do i=2,nx-1 do j=2,ny-1 IF(i.le.101.and.j.ge.48.and.j.le.52)then u(i,j)=0. v(i,j)=0 ELSEIF (i.le.101.and.j.ge.98.and.j.le.102)then u(i,j)=0. v(i,j)=0 ELSEIF(i.le.101.and.j.ge.148.and.j.le.152)then u(i,j)=0. v(i,j)=0 else h1(i,j,k)=h1(i,j,k)+a(k)*h1(i,j,k-1) h2(i,j,k)=h2(i,j,k)+a(k)*h2(i,j,k-1) s1(i,j,k+1)=s1(i,j,k)+b(k)*dt*h1(i,j,k)
82
s2(i,j,k+1)=s2(i,j,k)+b(k)*dt*h2(i,j,k) u(i,j)=s1(i,j,k+1) v(i,j)=s2(i,j,k+1) endif end do end do call derv1(u,ux,uy) call derv1(v,vx,vy) c----------------------------------------------------------- c Tekananan dihitung dengan artifisial kompresibiliti c----------------------------------------------------------- do i=2,nx-1 do j=2,ny-1 IF(i.lt.101.and.j.gt.48.and.j.lt.52)then p(i,j)=0 ELSEIF (i.lt.101.and.j.gt.98.and.j.lt.102)then p(i,j)=0 ELSEIF(i.lt.101.and.j.gt.148.and.j.lt.152)then p(i,j)=0 else p(i,j)=p(i,j)-(ux(i,j)+vy(i,j))*dt*0.5 endif end do end do do i=1,nx IF(i.le.101)then j1=1 j2=48 j3=52 j4=98 j5=102 j6=148 j7=152 j8=ny else j1=1 j2=ny endif p(i,j1)=(48*p(i,j1+1)-36*p(i,j1+2)+16*p(i,j1+3)-3*p(i,j1+4))/25 p(i,j2)=(48*p(i,j2-1)-36*p(i,j2-2)+16*p(i,j2-3)-3*p(i,j2-4))/25 p(i,j3)=(48*p(i,j3+1)-36*p(i,j3+2)+16*p(i,j3+3)-3*p(i,j3+4))/25 p(i,j4)=(48*p(i,j4-1)-36*p(i,j4-2)+16*p(i,j4-3)-3*p(i,j4-4))/25 p(i,j5)=(48*p(i,j5+1)-36*p(i,j5+2)+16*p(i,j5+3)-3*p(i,j5+4))/25 p(i,j6)=(48*p(i,j6-1)-36*p(i,j6-2)+16*p(i,j6-3)-3*p(i,j6-4))/25 p(i,j7)=(48*p(i,j7+1)-36*p(i,j7+2)+16*p(i,j7+3)-3*p(i,j7+4))/25 p(i,j8)=(48*p(i,j8-1)-36*p(i,j8-2)+16*p(i,j8-3)-3*p(i,j8-4))/25
83
end do i1=1 i2=nx j1=1 j2=ny do j=1,ny IF(j.ge.48.and.j.le.52)then i1=101 elseif(j.ge.98.and.j.le.102)then i1=101 elseif(j.ge.148.and.j.le.152)then i1=101 else i1=1 i2=nx endif p(i1,j)=(48*p(i1+1,j)-36*p(i1+2,j)+16*p(i1+3,j)-3*p(i1+4,j))/25 p(i2,j)=(48*p(i2-1,j)-36*p(i2-2,j)+16*p(i2-3,j)-3*p(i2-4,j))/25 enddo call rkt c----------------------------------------------------------- end do return end C-------------------------------------------- C Penyelesaian persamaan energi C------------------------------------------- subroutine rkt PARAMETER(m=500,n=500) COMMON/aa1/u(m,n),v(m,n),p(m,n),ux(m,n),uy(m,n), 1 vx(m,n),vy(m,n),px(m,n),py(m,n), 1 uxx(m,n),uyy(m,n),vxx(m,n),vyy(m,n),x(m,n),y(m,n) 1 ,o(m,n),ox(m,n),oy(m,n),oxx(m,n),oyy(m,n) COMMON/aa2/nx,ny,nt,dx,dy,dt,pr,ra,i1,i2,j1,j2 DIMENSION h(m,n,6),s(m,n,6),a(5),b(5) DATA a(1),a(2),a(3),a(4),a(5)/0.,-0.75789047,-1.19215169, 1 -1.69778469,-1.51418344/ DATA b(1),b(2),b(3),b(4),b(5)/0.14965902,0.37921031,0.82295502, 1 0.69945045,0.15305724/ do i=2,nx-1 do j=2,ny-1 s(i,j,1)=o(i,j) end do end do
84
do k=1,5 call dero1(o,ox,oy) call derv2(o,oxx,oyy) do i=2,nx-1 do j=2,ny-1 IF(i.lt.101.and.j.gt.48.and.j.lt.52)then o(i,j)=0. elseif(i.lt.101.and.j.gt.98.and.j.lt.102)then o(i,j)=0. ELSEIF(i.lt.101.and.j.gt.148.and.j.lt.152)then o(i,j)=0. else h(i,j,k)=-u(i,j)*ox(i,j)-v(i,j)*oy(i,j)+ 1 (oxx(i,j)+oyy(i,j))/SQRT(ra)+a(k)*h(i,j,k-1) s(i,j,k+1)=s(i,j,k)+b(k)*dt*h(i,j,k) o(i,j)=s(i,j,k+1) endif end do end do do i=1,nx IF(i.le.101)then j1=1 j2=48 j3=52 j4=98 j5=102 j6=148 j7=152 j8=ny o(i,j1)=(48*o(i,j1+1)-36*o(i,j1+2)+16*o(i,j1+3)-3*o(i,j1+4))/25 o(i,j2)=0.5 o(i,j3)=0.5 o(i,j4)=0.5 o(i,j5)=0.5 o(i,j6)=0.5 o(i,j7)=0.5 o(i,j8)=(48*o(i,j8-1)-36*o(i,j8-2)+16*o(i,j8-3)-3*o(i,j8-4))/25 else j1=1 j2=ny o(i,j1)=(48*o(i,j1+1)-36*o(i,j1+2)+16*o(i,j1+3)-3*o(i,j1+4))/25 o(i,j2)=(48*o(i,j2-1)-36*o(i,j2-2)+16*o(i,j2-3)-3*o(i,j2-4))/25 endif end do do j=1,ny
85
IF(j.ge.48.and.j.le.52)then i1=101 elseif(j.ge.98.and.j.le.102)then i1=101 elseif(j.ge.148.and.j.le.152)then i1=101 else i1=1 i2=nx endif o(i1,j)=0.5 end do i1=1 i2=nx j1=1 j2=ny do i=1,nx do j=1,ny IF(i.lt.101.and.j.gt.48.and.j.lt.52)then o(i,j)=0. elseif(i.lt.101.and.j.gt.98.and.j.lt.102)then o(i,j)=0. ELSEIF(i.lt.101.and.j.gt.148.and.j.lt.152)then o(i,j)=0. endif end do end do end do return end C------------------------------------------ C Turunan pertama variabel kecepatan C------------------------------------------ subroutine derv1(q,qx,qy) COMMON/aa2/nx,ny,nt,dx,dy,dt,pr,ra,i1,i2,j1,j2 COMMON/aa4/a(500),b(500),c(500),d(500),l1,l2 DIMENSION q(500,500),qx(500,500),qy(500,500) alp=0.25 ak=1.5 do j=1,ny IF(j.ge.48.and.j.le.52)then i1=101 elseif(j.ge.98.and.j.le.102)then i1=101 elseif(j.ge.148.and.j.le.152)then
return end C------------------------- C Algoritma Thomas C------------------------- SUBROUTINE TRIDI parameter (m=500) COMMON /AA4/A(m),B(m),C(m),D(m),L1,l2 DO 1 I=L1,L2 RT=-A(I)/B(I-1) B(I)=B(I)+RT*C(I-1) 1 D(I)=D(I)+RT*D(I-1) D(L2)=D(L2)/B(L2) DO 2 I=L2-1,L1-1,-1 2 D(I)=(D(I)-C(I)*D(I+1))/B(I) RETURN END C-------------------------- C Hasil perhitungan C-------------------------- subroutine hasil PARAMETER(m=500,n=500) COMMON/aa1/u(m,n),v(m,n),p(m,n),ux(m,n),uy(m,n), 1 vx(m,n),vy(m,n),px(m,n),py(m,n), 1 uxx(m,n),uyy(m,n),vxx(m,n),vyy(m,n),x(m,n),y(m,n) 1 ,o(m,n),ox(m,n),oy(m,n),oxx(m,n),oyy(m,n) COMMON/aa2/nx,ny,nt,dx,dy,dt,pr,ra,i1,i2,j1,j2 WRITE(2,*)NX WRITE(2,*)NY do 10 j=1,ny do 10 i=1,nx WRITE(3,*)x(i,j),y(i,j),u(i,j),v(i,j)!,p(i,j) 10 WRITE(4,*)x(i,j),y(i,j),o(i,j) return end
98
Lampiran 8. Program Konveksi Alami Pada 4 Sirip C------------------------------------------------------------------------- C Program penyelesaian konveksi alami pada 4 sirip C------------------------------------------------------------------------- PARAMETER(m=500,n=500) COMMON/aa1/u(m,n),v(m,n),p(m,n),ux(m,n),uy(m,n), 1 vx(m,n),vy(m,n),px(m,n),py(m,n), 1 uxx(m,n),uyy(m,n),vxx(m,n),vyy(m,n),x(m,n),y(m,n) 1 ,o(m,n),ox(m,n),oy(m,n),oxx(m,n),oyy(m,n) COMMON/aa2/nx,ny,nt,dx,dy,dt,pr,ra,i1,i2,j1,j2 OPEN(8,FILE='C:\matlab6p1\work\temp1') OPEN(7,FILE='C:\matlab6p1\work\pv1') OPEN(4,FILE='C:\matlab6p1\work\temp') OPEN(3,FILE='C:\matlab6p1\work\pv') OPEN(2,FILE='C:\matlab6p1\work\num') OPEN(1,FILE='C:\matlab6p1\work\div') call awal do k=1,nt ck=0. call rkv do i=1,nx do j=1,ny ck=ck+abs(ux(i,j)+vy(i,j)) end do end do if(ck.gt.0) then WRITE(*,*)k,LOG10(ck/nx/ny) WRITE(1,*)k,LOG10(ck/nx/ny) endif end do call hasil stop end C---------------------------------------- C Syarat awal dan syarat batas C---------------------------------------- subroutine awal PARAMETER(m=500,n=500) CHARACTER mul*2 COMMON/aa1/u(m,n),v(m,n),p(m,n),ux(m,n),uy(m,n), 1 vx(m,n),vy(m,n),px(m,n),py(m,n), 1 uxx(m,n),uyy(m,n),vxx(m,n),vyy(m,n),x(m,n),y(m,n) 1 ,o(m,n),ox(m,n),oy(m,n),oxx(m,n),oyy(m,n) COMMON/aa2/nx,ny,nt,dx,dy,dt,pr,ra,i1,i2,j1,j2 WRITE(*,*)' t= ' READ(*,*)tt
99
nx=201 ny=201 i1=1 i2=nx j1=1 j2=ny dx=1./200. dy=1./200. dt=0.0025 nt=tt/dt+1 pr=0.71 ra=1000000. WRITE(*,*)' Dari awal ?' READ(*,'(a)')mul IF(mul.eq.'y')then do i=1,nx do j=1,ny x(i,j)=(i-1)*dx y(i,j)=(j-1)*dy u(i,j)=0. v(i,j)=0. p(i,j)=0. o(i,j)=0. enddo enddo do j=1,ny o(1,j)=0.5 o(nx,j)=-0.5 enddo else do j=1,ny do i=1,nx READ(7,*)x(i,j),y(i,j),u(i,j),v(i,j),p(i,j) READ(8,*)x(i,j),y(i,j),o(i,j) end do end do end if return end C-------------------------------------------------------- C Penyelesaian persamaan Navier - Stokes C-------------------------------------------------------- subroutine rkv PARAMETER(m=500,n=500)
100
COMMON/aa1/u(m,n),v(m,n),p(m,n),ux(m,n),uy(m,n), 1 vx(m,n),vy(m,n),px(m,n),py(m,n), 1 uxx(m,n),uyy(m,n),vxx(m,n),vyy(m,n),x(m,n),y(m,n) 1 ,o(m,n),ox(m,n),oy(m,n),oxx(m,n),oyy(m,n) COMMON/aa2/nx,ny,nt,dx,dy,dt,pr,ra,i1,i2,j1,j2 DIMENSION h1(m,n,6),h2(m,n,6),s1(m,n,6),s2(m,n,6),a(5),b(5) DATA a(1),a(2),a(3),a(4),a(5)/0.,-0.41789047,-1.19215169, 1 -1.69778469,-1.51418344/ DATA b(1),b(2),b(3),b(4),b(5)/0.14965902,0.37921031,0.82295502, 1 0.69945045,0.15305724/ do i=2,nx-1 do j=2,ny-1 s1(i,j,1)=u(i,j) s2(i,j,1)=v(i,j) end do end do do k=1,5 call derv1(u,ux,uy) call derv1(v,vx,vy) call derv2(u,uxx,uyy) call derv2(v,vxx,vyy) call derp1(p,px,py) do i=2,nx-1 do j=2,ny-1 h1(i,j,k)=-u(i,j)*ux(i,j)-v(i,j)*uy(i,j)-px(i,j) 1 +(uxx(i,j)+uyy(i,j))*pr/SQRT(ra) h2(i,j,k)=-u(i,j)*vx(i,j)-v(i,j)*vy(i,j)-py(i,j) 1 +(vxx(i,j)+vyy(i,j))*pr/SQRT(ra)+pr*o(i,j) end do end do do i=2,nx-1 do j=2,ny-1 IF(i.le.101.and.j.ge.38.and.j.le.42)then u(i,j)=0. v(i,j)=0 ELSEIF (i.le.101.and.j.ge.78.and.j.le.82)then u(i,j)=0. v(i,j)=0 ELSEIF(i.le.101.and.j.ge.118.and.j.le.122)then u(i,j)=0. v(i,j)=0 elseif(i.le.101.and.j.ge.158.and.j.le.162)then u(i,j)=0. v(i,j)=0 else
101
h1(i,j,k)=h1(i,j,k)+a(k)*h1(i,j,k-1) h2(i,j,k)=h2(i,j,k)+a(k)*h2(i,j,k-1) s1(i,j,k+1)=s1(i,j,k)+b(k)*dt*h1(i,j,k) s2(i,j,k+1)=s2(i,j,k)+b(k)*dt*h2(i,j,k) u(i,j)=s1(i,j,k+1) v(i,j)=s2(i,j,k+1) endif end do end do call derv1(u,ux,uy) call derv1(v,vx,vy) c----------------------------------------------------------- c Tekananan dihitung dengan artifisial kompresibiliti c----------------------------------------------------------- do i=2,nx-1 do j=2,ny-1 IF(i.lt.101.and.j.gt.38.and.j.lt.42)then p(i,j)=0 ELSEIF (i.lt.101.and.j.gt.78.and.j.lt.82)then p(i,j)=0 ELSEIF(i.lt.101.and.j.gt.118.and.j.lt.122)then p(i,j)=0 elseif(i.lt.101.and.j.gt.158.and.j.lt.162)then p(i,j)=0 else p(i,j)=p(i,j)-(ux(i,j)+vy(i,j))*dt*0.5 endif end do end do do i=1,nx IF(i.le.101)then j1=1 j2=38 j3=42 j4=78 j5=82 j6=118 j7=122 j8=158 j9=162 j10=ny else j1=1 j2=ny endif p(i,j1)=(48*p(i,j1+1)-36*p(i,j1+2)+16*p(i,j1+3)-3*p(i,j1+4))/25 p(i,j2)=(48*p(i,j2-1)-36*p(i,j2-2)+16*p(i,j2-3)-3*p(i,j2-4))/25
102
p(i,j3)=(48*p(i,j3+1)-36*p(i,j3+2)+16*p(i,j3+3)-3*p(i,j3+4))/25 p(i,j4)=(48*p(i,j4-1)-36*p(i,j4-2)+16*p(i,j4-3)-3*p(i,j4-4))/25 p(i,j5)=(48*p(i,j5+1)-36*p(i,j5+2)+16*p(i,j5+3)-3*p(i,j5+4))/25 p(i,j6)=(48*p(i,j6-1)-36*p(i,j6-2)+16*p(i,j6-3)-3*p(i,j6-4))/25 p(i,j7)=(48*p(i,j7+1)-36*p(i,j7+2)+16*p(i,j7+3)-3*p(i,j7+4))/25 p(i,j8)=(48*p(i,j8-1)-36*p(i,j8-2)+16*p(i,j8-3)-3*p(i,j8-4))/25 p(i,j9)=(48*p(i,j9+1)-36*p(i,j9+2)+16*p(i,j9+3)-3*p(i,j9+4))/25 p(i,j10)=(48*p(i,j10-1)-36*p(i,j10-2)+16*p(i,j10-3)-3*p(i,j10-4)) 1 /25 end do i1=1 i2=nx j1=1 j2=ny do j=1,ny IF(j.ge.38.and.j.le.42)then i1=101 elseif(j.ge.78.and.j.le.82)then i1=101 elseif(j.ge.118.and.j.le.122)then i1=101 elseif(j.ge.158.and.j.le.162)then i1=101 else i1=1 i2=nx endif p(i1,j)=(48*p(i1+1,j)-36*p(i1+2,j)+16*p(i1+3,j)-3*p(i1+4,j))/25 p(i2,j)=(48*p(i2-1,j)-36*p(i2-2,j)+16*p(i2-3,j)-3*p(i2-4,j))/25 enddo call rkt c----------------------------------------------------------- end do return end C-------------------------------------------- C Penyelesaian persamaan energi C------------------------------------------- subroutine rkt PARAMETER(m=500,n=500) COMMON/aa1/u(m,n),v(m,n),p(m,n),ux(m,n),uy(m,n), 1 vx(m,n),vy(m,n),px(m,n),py(m,n), 1 uxx(m,n),uyy(m,n),vxx(m,n),vyy(m,n),x(m,n),y(m,n) 1 ,o(m,n),ox(m,n),oy(m,n),oxx(m,n),oyy(m,n) COMMON/aa2/nx,ny,nt,dx,dy,dt,pr,ra,i1,i2,j1,j2 DIMENSION h(m,n,6),s(m,n,6),a(5),b(5)
103
DATA a(1),a(2),a(3),a(4),a(5)/0.,-0.41789047,-1.19215169, 1 -1.69778469,-1.51418344/ DATA b(1),b(2),b(3),b(4),b(5)/0.14965902,0.37921031,0.82295502, 1 0.69945045,0.15305724/ do i=2,nx-1 do j=2,ny-1 s(i,j,1)=o(i,j) end do end do do k=1,5 call dero1(o,ox,oy) call derv2(o,oxx,oyy) do i=2,nx-1 do j=2,ny-1 IF(i.lt.101.and.j.gt.38.and.j.lt.42)then o(i,j)=0. elseif(i.lt.101.and.j.gt.78.and.j.lt.82)then o(i,j)=0. ELSEIF(i.lt.101.and.j.gt.118.and.j.lt.122)then o(i,j)=0. ELSEIF(i.lt.101.and.j.gt.158.and.j.lt.162)then o(i,j)=0. else h(i,j,k)=-u(i,j)*ox(i,j)-v(i,j)*oy(i,j)+ 1 (oxx(i,j)+oyy(i,j))/SQRT(ra)+a(k)*h(i,j,k-1) s(i,j,k+1)=s(i,j,k)+b(k)*dt*h(i,j,k) o(i,j)=s(i,j,k+1) endif end do end do do i=1,nx IF(i.le.101)then j1=1 j2=38 j3=42 j4=82 j5=78 j6=118 j7=122 j8=158 j9=162 j10=ny o(i,j1)=(48*o(i,j1+1)-36*o(i,j1+2)+16*o(i,j1+3)-3*o(i,j1+4))/25 o(i,j2)=0.5 o(i,j3)=0.5
104
o(i,j4)=0.5 o(i,j5)=0.5 o(i,j6)=0.5 o(i,j7)=0.5 o(i,j8)=0.5 o(i,j9)=0.5 o(i,j10)=(48*o(i,j10-1)-36*o(i,j10-2)+16*o(i,j10-3)-3*o(i,j10-4)) 1 /25 else j1=1 j2=ny o(i,j1)=(48*o(i,j1+1)-36*o(i,j1+2)+16*o(i,j1+3)-3*o(i,j1+4))/25 o(i,j2)=(48*o(i,j2-1)-36*o(i,j2-2)+16*o(i,j2-3)-3*o(i,j2-4))/25 endif end do do j=1,ny IF(j.ge.38.and.j.le.42)then i1=101 elseif(j.ge.78.and.j.le.82)then i1=101 elseif(j.ge.118.and.j.le.122)then i1=101 elseif(j.ge.158.and.j.le.162)then i1=101 else i1=1 i2=nx endif o(i1,j)=0.5 end do i1=1 i2=nx j1=1 j2=ny do i=1,nx do j=1,ny IF(i.lt.101.and.j.gt.38.and.j.lt.42)then o(i,j)=0. elseif(i.lt.101.and.j.gt.78.and.j.lt.82)then o(i,j)=0. ELSEIF(i.lt.101.and.j.gt.118.and.j.lt.122)then o(i,j)=0. ELSEIF(i.lt.101.and.j.gt.158.and.j.lt.162)then o(i,j)=0. endif end do
105
end do end do return end C------------------------------------------ C Turunan pertama variabel kecepatan C------------------------------------------ subroutine derv1(q,qx,qy) COMMON/aa2/nx,ny,nt,dx,dy,dt,pr,ra,i1,i2,j1,j2 COMMON/aa4/a(500),b(500),c(500),d(500),l1,l2 DIMENSION q(500,500),qx(500,500),qy(500,500) alp=0.25 ak=1.5 do j=1,ny IF(j.ge.38.and.j.le.42)then i1=101 elseif(j.ge.78.and.j.le.82)then i1=101 elseif(j.ge.118.and.j.le.122)then i1=101 elseif(j.ge.158.and.j.le.162)then i1=101 else i1=1 i2=nx endif qx(i1,j)=(-3*q(i1+4,j)+16*q(i1+3,j)-36*q(i1+2,j)+48*q(i1+1,j) 1 -25*q(i1,j))/12/dx qx(i2,j)=(3*q(i2-4,j)-16*q(i2-3,j)+36*q(i2-2,j)-48*q(i2-1,j) 1 +25*q(i2,j))/12/dx do 10 i=i1+1,i2-1 a(i)=alp b(i)=1. c(i)=alp 10 d(i)=ak*(q(i+1,j)-q(i-1,j))/2/dx d(i1+1)=d(i1+1)-a(i1+1)*qx(i1,j) a(i1+1)=0. d(i2-1)=d(i2-1)-c(i2-1)*qx(i2,j) c(i2-1)=0. l1=i1+2 l2=i2-1 call tridi do 20 i=i1+1,i2-1 20 qx(i,j)=d(i) enddo
s1=(13*q(i,j1)-27*q(i,j1+1)+15*q(i,j1+2)-q(i,j1+3))/dy/dy s2=(-q(i,j2-3)+15*q(i,j2-2)-27*q(i,j2-1)+13*q(i,j2))/dy/dy do 50 j=j1+1,j2-1 a(j)=alp b(j)=1. c(j)=alp 50 d(j)=ak*(q(i,j+1)-2*q(i,j)+q(i,j-1))/dy/dy b(j1+1)=b(j1+1)-11*alp d(j1+1)=d(j1+1)-s1*alp b(j2-1)=b(j2-1)-11*alp d(j2-1)=d(j2-1)-s2*alp l1=j1+2 l2=j2-1 call tridi do 60 j=j1+1,j2-1 60 qyy(i,j)=d(j) qyy(i,j1)=s1-11*qyy(i,j1+1) qyy(i,j2)=s2-11*qyy(i,j2-1) 40 continue return end C------------------------- C Algoritma Thomas C------------------------- SUBROUTINE TRIDI parameter (m=500) COMMON /AA4/A(m),B(m),C(m),D(m),L1,l2 DO 1 I=L1,L2 RT=-A(I)/B(I-1) B(I)=B(I)+RT*C(I-1) 1 D(I)=D(I)+RT*D(I-1) D(L2)=D(L2)/B(L2) DO 2 I=L2-1,L1-1,-1 2 D(I)=(D(I)-C(I)*D(I+1))/B(I) RETURN END C-------------------------- C Hasil perhitungan C-------------------------- subroutine hasil PARAMETER(m=500,n=500) COMMON/aa1/u(m,n),v(m,n),p(m,n),ux(m,n),uy(m,n), 1 vx(m,n),vy(m,n),px(m,n),py(m,n), 1 uxx(m,n),uyy(m,n),vxx(m,n),vyy(m,n),x(m,n),y(m,n) 1 ,o(m,n),ox(m,n),oy(m,n),oxx(m,n),oyy(m,n)
119
COMMON/aa2/nx,ny,nt,dx,dy,dt,pr,ra,i1,i2,j1,j2 WRITE(2,*)NX WRITE(2,*)NY do 10 j=1,ny do 10 i=1,nx WRITE(3,*)x(i,j),y(i,j),u(i,j),v(i,j)!,p(i,j) 10 WRITE(4,*)x(i,j),y(i,j),o(i,j) return end
120
Lampiran 9. Program Tambahan Untuk Sirip Tunggal c -------------------------------------------------------------------- c PROGRAM TAMBAHAN UNTUK SIRIP TUNGGAL c -------------------------------------------------------------------- PARAMETER(m=500,n=500) COMMON/aa1/u(m,n),v(m,n),ux(m,n),uy(m,n),vx(m,n),vy(m,n) 1 ,p(m,n),x(m,n),y(m,n),sf(m,n) 1 ,o(m,n),ox(m,n),oy(m,n),oxx(m,n),oyy(m,n) COMMON/aa2/nx,ny,nt,dx,dy,dt OPEN(1,FILE='C:\matlab6p1\work\pv') OPEN(2,FILE='C:\matlab6p1\work\temp') OPEN(3,FILE='C:\matlab6p1\work\streamf') OPEN(4,FILE='C:\matlab6p1\work\num') nx=201 ny=201 dx=1./200. dy=1./200. do j=1,ny do i=1,nx READ(1,*)x(i,j),y(i,j),u(i,j),v(i,j)!,p(i,j) READ(2,*)x(i,j),y(i,j),o(i,j) end do end do call derv1(u,ux,uy) call derv1(v,vx,vy) call stream WRITE(4,*)nx WRITE(4,*)ny do 10 j=1,ny do 10 i=1,nx 10 WRITE(3,*)x(i,j),y(i,j),-1*sf(i,j) stop end subroutine dero1(q,qx,qy) COMMON/aa2/nx,ny,nt,dx,dy,dt COMMON/aa4/a(500),b(500),c(500),d(500),l1,l2 DIMENSION q(500,500),qx(500,500),qy(500,500) alp=0.25 ak=1.5 do j=1,ny IF(j.ge.98.and.j.le.102)then i1=101 else i1=1 i2=nx endif
call tridi do 210 j=j3+1,j4-1 210 qy(i,j)=d(j) else j1=1 j2=ny endif qy(i,j1)=(-3*q(i,j1+4)+16*q(i,j1+3)-36*q(i,j1+2)+48*q(i,j1+1) 1 -25*q(i,j1))/12/dy qy(i,j2)=(3*q(i,j2-4)-16*q(i,j2-3)+36*q(i,j2-2)-48*q(i,j2-1) 1 +25*q(i,j2))/12/dy do 11 j=j1+1,j2-1 a(j)=alp b(j)=1. c(j)=alp 11 d(j)=ak*(q(i,j+1)-q(i,j-1))/2/dy d(j1+1)=d(j1+1)-a(j1+1)*qy(i,j1) a(j1+1)=0. d(j2-1)=d(j2-1)-c(j2-1)*qy(i,j2) c(j2-1)=0. l1=j1+2 l2=j2-1 call tridi do 21 j=j1+1,j2-1 21 qy(i,j)=d(j) enddo return end SUBROUTINE TRIDI parameter (m=500) COMMON /AA4/A(m),B(m),C(m),D(m),L1,l2 DO 1 I=L1,L2 RT=-A(I)/B(I-1) B(I)=B(I)+RT*C(I-1) 1 D(I)=D(I)+RT*D(I-1) D(L2)=D(L2)/B(L2) DO 2 I=L2-1,L1-1,-1 2 D(I)=(D(I)-C(I)*D(I+1))/B(I) RETURN END subroutine stream parameter (m=500,n=500) COMMON/aa1/u(m,n),v(m,n),ux(m,n),uy(m,n),vx(m,n),vy(m,n) 1 ,p(m,n),x(m,n),y(m,n),sf(m,n) 1 ,o(m,n),ox(m,n),oy(m,n),oxx(m,n),oyy(m,n)
125
COMMON/aa2/nx,ny,nt,dx,dy,dt COMMON/AA4/A(m),B(m),C(m),D(m),L1,l2 DIMENSION f(m,n) ermx=0.000001 k=0 c----------------------------------------- c initial condition c----------------------------------------- do i=2,nx-1 IF(i.le.101)then j1=1 j2=98 j3=102 j4=ny do j=j3+1,j4-1 f(i,j)=-(vx(i,j)-uy(i,j)) sf(i,j)=0. end do else j1=1 j2=ny endif do j=j1+1,j2-1 f(i,j)=-(vx(i,j)-uy(i,j)) sf(i,j)=0. end do end do c----------------------------------------- c boundary condition c----------------------------------------- do i=1,nx IF(i.le.101)then j1=1 j2=98 j3=102 j4=ny sf(i,j3)=0. sf(i,j4)=0. else j1=1 j2=ny endif sf(i,j1)=0. sf(i,j2)=0. end do do j=1,ny
126
IF(j.ge.98.and.j.le.102)then i1=101 else i1=1 i2=nx endif sf(i1,j)=0. sf(i2,j)=0. end do c----------------------------------------- 15 ERR=0. k=k+1 IF(k.gt.20000)stop c----------------------------------------- c matric coefficient c----------------------------------------- do j=2,ny-1 IF(j.ge.98.and.j.le.102)then i1=101 else i1=1 i2=nx endif do i=i1+1,i2-1 a(i)=1. b(i)=-4. c(i)=1. d(i)=-sf(i,j+1)-sf(i,j-1)+f(i,j)*dx*dx enddo c----------------------------------------- c modification matric coefficien c----------------------------------------- d(i1+1)=d(i1+1)-a(i1+1)*sf(i1,j) a(i1+1)=0. d(i2-1)=d(i2-1)-c(i2-1)*sf(i2,j) c(i2-1)=0. l1=i1+2 l2=i2-1 call tridi do i=i1+1,i2-1 ERR=ERR+ABS(d(i)-sf(i,j)) sf(i,j)=d(i) end do enddo WRITE(*,*)k,err IF(err.gt.ermx)GOTO 15 return end
127
Lampiran 10. Program Tambahan Untuk 2 Sirip c -------------------------------------------------------- c PROGRAM TAMBAHAN UNTUK 2 SIRIP c -------------------------------------------------------- PARAMETER(m=500,n=500) COMMON/aa1/u(m,n),v(m,n),ux(m,n),uy(m,n),vx(m,n),vy(m,n) 1 ,p(m,n),x(m,n),y(m,n),sf(m,n) 1 ,o(m,n),ox(m,n),oy(m,n),oxx(m,n),oyy(m,n) COMMON/aa2/nx,ny,nt,dx,dy,dt OPEN(1,FILE='C:\matlab6p1\work\pv') OPEN(2,FILE='C:\matlab6p1\work\temp') OPEN(3,FILE='C:\matlab6p1\work\streamf') OPEN(4,FILE='C:\matlab6p1\work\num') nx=201 ny=201 dx=1./200. dy=1./200. do j=1,ny do i=1,nx READ(1,*)x(i,j),y(i,j),u(i,j),v(i,j)!,p(i,j) READ(2,*)x(i,j),y(i,j),o(i,j) end do end do call derv1(u,ux,uy) call derv1(v,vx,vy) call stream WRITE(4,*)nx WRITE(4,*)ny do 10 j=1,ny do 10 i=1,nx 10 WRITE(3,*)x(i,j),y(i,j),-1*sf(i,j) stop end subroutine dero1(q,qx,qy) COMMON/aa2/nx,ny,nt,dx,dy,dt COMMON/aa4/a(500),b(500),c(500),d(500),l1,l2 DIMENSION q(500,500),qx(500,500),qy(500,500) alp=0.25 ak=1.5 do j=1,ny IF(j.ge.65.and.j.le.69)then i1=101 elseif(j.ge.131.and.j.le.135)then i1=101 else
l2=j6-1 call tridi do 340 j=j5+1,j6-1 340 qy(i,j)=d(j) else j1=1 j2=ny endif qy(i,j1)=(-3*q(i,j1+4)+16*q(i,j1+3)-36*q(i,j1+2)+48*q(i,j1+1) 1 -25*q(i,j1))/12/dy qy(i,j2)=(3*q(i,j2-4)-16*q(i,j2-3)+36*q(i,j2-2)-48*q(i,j2-1) 1 +25*q(i,j2))/12/dy do 11 j=j1+1,j2-1 a(j)=alp b(j)=1. c(j)=alp 11 d(j)=ak*(q(i,j+1)-q(i,j-1))/2/dy d(j1+1)=d(j1+1)-a(j1+1)*qy(i,j1) a(j1+1)=0. d(j2-1)=d(j2-1)-c(j2-1)*qy(i,j2) c(j2-1)=0. l1=j1+2 l2=j2-1 call tridi do 21 j=j1+1,j2-1 21 qy(i,j)=d(j) enddo return end SUBROUTINE TRIDI parameter (m=500) COMMON /AA4/A(m),B(m),C(m),D(m),L1,l2 DO 1 I=L1,L2 RT=-A(I)/B(I-1) B(I)=B(I)+RT*C(I-1) 1 D(I)=D(I)+RT*D(I-1) D(L2)=D(L2)/B(L2) DO 2 I=L2-1,L1-1,-1 2 D(I)=(D(I)-C(I)*D(I+1))/B(I) RETURN END subroutine stream parameter (m=500,n=500)
133
COMMON/aa1/u(m,n),v(m,n),ux(m,n),uy(m,n),vx(m,n),vy(m,n) 1 ,p(m,n),x(m,n),y(m,n),sf(m,n) 1 ,o(m,n),ox(m,n),oy(m,n),oxx(m,n),oyy(m,n) COMMON/aa2/nx,ny,nt,dx,dy,dt COMMON/AA4/A(m),B(m),C(m),D(m),L1,l2 DIMENSION f(m,n) ermx=0.000001 k=0 c----------------------------------------- c initial condition c----------------------------------------- do i=2,nx-1 IF(i.le.101)then j1=1 j2=65 j3=69 j4=131 j5=135 j6=ny do j=j3+1,j4-1 f(i,j)=-(vx(i,j)-uy(i,j)) sf(i,j)=0. end do do j=j5+1,j6-1 f(i,j)=-(vx(i,j)-uy(i,j)) sf(i,j)=0. end do else j1=1 j2=ny endif do j=j1+1,j2-1 f(i,j)=-(vx(i,j)-uy(i,j)) sf(i,j)=0. end do end do c----------------------------------------- c boundary condition c----------------------------------------- do i=1,nx IF(i.le.101)then j1=1 j2=65 j3=69 j4=131 j5=135
134
j6=ny sf(i,j3)=0. sf(i,j4)=0. sf(i,j5)=0. sf(i,j6)=0. else j1=1 j2=ny endif sf(i,j1)=0. sf(i,j2)=0. end do do j=1,ny IF(j.ge.65.and.j.le.69)then i1=101 elseif(j.ge.131.and.j.le.135)then i1=101 else i1=1 i2=nx endif sf(i1,j)=0. sf(i2,j)=0. end do c----------------------------------------- 15 ERR=0. k=k+1 IF(k.gt.20000)stop c----------------------------------------- c matric coefficient c----------------------------------------- do j=2,ny-1 IF(j.ge.65.and.j.le.69)then i1=101 elseif(j.ge.131.and.j.le.135)then i1=101 else i1=1 i2=nx endif do i=i1+1,i2-1 a(i)=1. b(i)=-4. c(i)=1. d(i)=-sf(i,j+1)-sf(i,j-1)+f(i,j)*dx*dx enddo c-----------------------------------------
135
c modification matric coefficien c----------------------------------------- d(i1+1)=d(i1+1)-a(i1+1)*sf(i1,j) a(i1+1)=0. d(i2-1)=d(i2-1)-c(i2-1)*sf(i2,j) c(i2-1)=0. l1=i1+2 l2=i2-1 call tridi do i=i1+1,i2-1 ERR=ERR+ABS(d(i)-sf(i,j)) sf(i,j)=d(i) end do enddo WRITE(*,*)k,err IF(err.gt.ermx)GOTO 15 return end
136
Lampiran11. Program Tambahan Untuk 3 Sirip c -------------------------------------------------------- c PROGRAM TAMBAHAN UNTUK 3 SIRIP c -------------------------------------------------------- PARAMETER(m=500,n=500) COMMON/aa1/u(m,n),v(m,n),ux(m,n),uy(m,n),vx(m,n),vy(m,n) 1 ,p(m,n),x(m,n),y(m,n),sf(m,n) 1 ,o(m,n),ox(m,n),oy(m,n),oxx(m,n),oyy(m,n) COMMON/aa2/nx,ny,nt,dx,dy,dt OPEN(1,FILE='C:\matlab6p1\work\pv') OPEN(2,FILE='C:\matlab6p1\work\temp') OPEN(3,FILE='C:\matlab6p1\work\streamf') OPEN(4,FILE='C:\matlab6p1\work\num') nx=201 ny=201 dx=1./200. dy=1./200. do j=1,ny do i=1,nx READ(1,*)x(i,j),y(i,j),u(i,j),v(i,j)!,p(i,j) READ(2,*)x(i,j),y(i,j),o(i,j) end do end do call derv1(u,ux,uy) call derv1(v,vx,vy) call stream WRITE(4,*)nx WRITE(4,*)ny do 10 j=1,ny do 10 i=1,nx 10 WRITE(3,*)x(i,j),y(i,j),-1*sf(i,j) stop end subroutine dero1(q,qx,qy) COMMON/aa2/nx,ny,nt,dx,dy,dt COMMON/aa4/a(500),b(500),c(500),d(500),l1,l2 DIMENSION q(500,500),qx(500,500),qy(500,500) alp=0.25 ak=1.5 do j=1,ny IF(j.ge.48.and.j.le.52)then i1=101 elseif(j.ge.98.and.j.le.102)then i1=101 elseif(j.ge.148.and.j.le.152)then
l2=j8-1 call tridi do 450 j=j7+1,j8-1 450 qy(i,j)=d(j) else j1=1 j2=ny endif qy(i,j1)=(-3*q(i,j1+4)+16*q(i,j1+3)-36*q(i,j1+2)+48*q(i,j1+1) 1 -25*q(i,j1))/12/dy qy(i,j2)=(3*q(i,j2-4)-16*q(i,j2-3)+36*q(i,j2-2)-48*q(i,j2-1) 1 +25*q(i,j2))/12/dy do 11 j=j1+1,j2-1 a(j)=alp b(j)=1. c(j)=alp 11 d(j)=ak*(q(i,j+1)-q(i,j-1))/2/dy d(j1+1)=d(j1+1)-a(j1+1)*qy(i,j1) a(j1+1)=0. d(j2-1)=d(j2-1)-c(j2-1)*qy(i,j2) c(j2-1)=0. l1=j1+2 l2=j2-1 call tridi do 21 j=j1+1,j2-1 21 qy(i,j)=d(j) enddo return end SUBROUTINE TRIDI parameter (m=500) COMMON /AA4/A(m),B(m),C(m),D(m),L1,l2 DO 1 I=L1,L2 RT=-A(I)/B(I-1) B(I)=B(I)+RT*C(I-1) 1 D(I)=D(I)+RT*D(I-1) D(L2)=D(L2)/B(L2) DO 2 I=L2-1,L1-1,-1 2 D(I)=(D(I)-C(I)*D(I+1))/B(I) RETURN END subroutine stream
143
parameter (m=500,n=500) COMMON/aa1/u(m,n),v(m,n),ux(m,n),uy(m,n),vx(m,n),vy(m,n) 1 ,p(m,n),x(m,n),y(m,n),sf(m,n) 1 ,o(m,n),ox(m,n),oy(m,n),oxx(m,n),oyy(m,n) COMMON/aa2/nx,ny,nt,dx,dy,dt COMMON/AA4/A(m),B(m),C(m),D(m),L1,l2 DIMENSION f(m,n) ermx=0.000001 k=0 c----------------------------------------- c initial condition c----------------------------------------- do i=2,nx-1 IF(i.le.101)then j1=1 j2=48 j3=52 j4=98 j5=102 j6=148 j7=152 j8=ny do j=j3+1,j4-1 f(i,j)=-(vx(i,j)-uy(i,j)) sf(i,j)=0. end do do j=j5+1,j6-1 f(i,j)=-(vx(i,j)-uy(i,j)) sf(i,j)=0. end do do j=j7+1,j8-1 f(i,j)=-(vx(i,j)-uy(i,j)) sf(i,j)=0. end do else j1=1 j2=ny endif do j=j1+1,j2-1 f(i,j)=-(vx(i,j)-uy(i,j)) sf(i,j)=0. end do end do c----------------------------------------- c boundary condition c-----------------------------------------
144
do i=1,nx IF(i.le.101)then j1=1 j2=48 j3=52 j4=98 j5=102 j6=148 j7=152 j8=ny sf(i,j3)=0. sf(i,j4)=0. sf(i,j5)=0. sf(i,j6)=0. sf(i,j7)=0. sf(i,j8)=0. else j1=1 j2=ny endif sf(i,j1)=0. sf(i,j2)=0. end do do j=1,ny IF(j.ge.48.and.j.le.52)then i1=101 elseif(j.ge.98.and.j.le.102)then i1=101 elseif(j.ge.148.and.j.le.152)then i1=101 else i1=1 i2=nx endif sf(i1,j)=0. sf(i2,j)=0. end do c----------------------------------------- 15 ERR=0. k=k+1 IF(k.gt.20000)stop c----------------------------------------- c matric coefficient c----------------------------------------- do j=2,ny-1 IF(j.ge.48.and.j.le.52)then i1=101
145
elseif(j.ge.98.and.j.le.102)then i1=101 elseif(j.ge.148.and.j.le.152)then i1=101 else i1=1 i2=nx endif do i=i1+1,i2-1 a(i)=1. b(i)=-4. c(i)=1. d(i)=-sf(i,j+1)-sf(i,j-1)+f(i,j)*dx*dx enddo c----------------------------------------- c modification matric coefficien c----------------------------------------- d(i1+1)=d(i1+1)-a(i1+1)*sf(i1,j) a(i1+1)=0. d(i2-1)=d(i2-1)-c(i2-1)*sf(i2,j) c(i2-1)=0. l1=i1+2 l2=i2-1 call tridi do i=i1+1,i2-1 ERR=ERR+ABS(d(i)-sf(i,j)) sf(i,j)=d(i) end do enddo WRITE(*,*)k,err IF(err.gt.ermx)GOTO 15 return end
146
Lampiran 12. Program Tambahan Untuk 4 Sirip c -------------------------------------------------------- c PROGRAM TAMBAHAN UNTUK 4 SIRIP c -------------------------------------------------------- PARAMETER(m=500,n=500) COMMON/aa1/u(m,n),v(m,n),ux(m,n),uy(m,n),vx(m,n),vy(m,n) 1 ,p(m,n),x(m,n),y(m,n),sf(m,n) 1 ,o(m,n),ox(m,n),oy(m,n),oxx(m,n),oyy(m,n) COMMON/aa2/nx,ny,nt,dx,dy,dt OPEN(1,FILE='C:\matlab6p1\work\pv') OPEN(2,FILE='C:\matlab6p1\work\temp') OPEN(3,FILE='C:\matlab6p1\work\streamf') OPEN(4,FILE='C:\matlab6p1\work\num') nx=201 ny=201 dx=1./200. dy=1./200. do j=1,ny do i=1,nx READ(1,*)x(i,j),y(i,j),u(i,j),v(i,j)!,p(i,j) READ(2,*)x(i,j),y(i,j),o(i,j) end do end do call derv1(u,ux,uy) call derv1(v,vx,vy) call stream WRITE(4,*)nx WRITE(4,*)ny do 10 j=1,ny do 10 i=1,nx 10 WRITE(3,*)x(i,j),y(i,j),-1*sf(i,j) stop end subroutine dero1(q,qx,qy) COMMON/aa2/nx,ny,nt,dx,dy,dt COMMON/aa4/a(500),b(500),c(500),d(500),l1,l2 DIMENSION q(500,500),qx(500,500),qy(500,500) alp=0.25 ak=1.5 do j=1,ny IF(j.ge.38.and.j.le.42)then i1=101 elseif(j.ge.78.and.j.le.82)then i1=101 elseif(j.ge.118.and.j.le.122)then i1=101
560 qy(i,j)=d(j) else j1=1 j2=ny endif qy(i,j1)=(-3*q(i,j1+4)+16*q(i,j1+3)-36*q(i,j1+2)+48*q(i,j1+1) 1 -25*q(i,j1))/12/dy qy(i,j2)=(3*q(i,j2-4)-16*q(i,j2-3)+36*q(i,j2-2)-48*q(i,j2-1) 1 +25*q(i,j2))/12/dy do 11 j=j1+1,j2-1 a(j)=alp b(j)=1. c(j)=alp 11 d(j)=ak*(q(i,j+1)-q(i,j-1))/2/dy d(j1+1)=d(j1+1)-a(j1+1)*qy(i,j1) a(j1+1)=0. d(j2-1)=d(j2-1)-c(j2-1)*qy(i,j2) c(j2-1)=0. l1=j1+2 l2=j2-1 call tridi do 21 j=j1+1,j2-1 21 qy(i,j)=d(j) enddo return end SUBROUTINE TRIDI parameter (m=500) COMMON /AA4/A(m),B(m),C(m),D(m),L1,l2 DO 1 I=L1,L2 RT=-A(I)/B(I-1) B(I)=B(I)+RT*C(I-1) 1 D(I)=D(I)+RT*D(I-1) D(L2)=D(L2)/B(L2) DO 2 I=L2-1,L1-1,-1 2 D(I)=(D(I)-C(I)*D(I+1))/B(I) RETURN END subroutine stream parameter (m=500,n=500) COMMON/aa1/u(m,n),v(m,n),ux(m,n),uy(m,n),vx(m,n),vy(m,n) 1 ,p(m,n),x(m,n),y(m,n),sf(m,n) 1 ,o(m,n),ox(m,n),oy(m,n),oxx(m,n),oyy(m,n)
154
COMMON/aa2/nx,ny,nt,dx,dy,dt COMMON/AA4/A(m),B(m),C(m),D(m),L1,l2 DIMENSION f(m,n) ermx=0.000001 k=0 c----------------------------------------- c initial condition c----------------------------------------- do i=2,nx-1 IF(i.le.101)then j1=1 j2=38 j3=42 j4=78 j5=82 j6=118 j7=122 j8=158 j9=162 j10=ny do j=j3+1,j4-1 f(i,j)=-(vx(i,j)-uy(i,j)) sf(i,j)=0. end do do j=j5+1,j6-1 f(i,j)=-(vx(i,j)-uy(i,j)) sf(i,j)=0. end do do j=j7+1,j8-1 f(i,j)=-(vx(i,j)-uy(i,j)) sf(i,j)=0. end do do j=j9+1,j10-1 f(i,j)=-(vx(i,j)-uy(i,j)) sf(i,j)=0. end do else j1=1 j2=ny endif do j=j1+1,j2-1 f(i,j)=-(vx(i,j)-uy(i,j)) sf(i,j)=0. end do end do c-----------------------------------------
155
c boundary condition c----------------------------------------- do i=1,nx IF(i.le.101)then j1=1 j2=38 j3=42 j4=78 j5=82 j6=118 j7=122 j8=158 j9=162 j10=ny sf(i,j3)=0. sf(i,j4)=0. sf(i,j5)=0. sf(i,j6)=0. sf(i,j7)=0. sf(i,j8)=0. sf(i,j9)=0. sf(i,j10)=0. else j1=1 j2=ny endif sf(i,j1)=0. sf(i,j2)=0. end do do j=1,ny IF(j.ge.38.and.j.le.42)then i1=101 elseif(j.ge.78.and.j.le.82)then i1=101 elseif(j.ge.118.and.j.le.122)then i1=101 elseif(j.ge.158.and.j.le.162)then i1=101 else i1=1 i2=nx endif sf(i1,j)=0. sf(i2,j)=0. end do c-----------------------------------------
156
15 ERR=0. k=k+1 IF(k.gt.20000)stop c----------------------------------------- c matric coefficient c----------------------------------------- do j=2,ny-1 IF(j.ge.38.and.j.le.42)then i1=101 elseif(j.ge.78.and.j.le.82)then i1=101 elseif(j.ge.118.and.j.le.122)then i1=101 elseif(j.ge.158.and.j.le.162)then i1=101 else i1=1 i2=nx endif do i=i1+1,i2-1 a(i)=1. b(i)=-4. c(i)=1. d(i)=-sf(i,j+1)-sf(i,j-1)+f(i,j)*dx*dx enddo c----------------------------------------- c modification matric coefficien c----------------------------------------- d(i1+1)=d(i1+1)-a(i1+1)*sf(i1,j) a(i1+1)=0. d(i2-1)=d(i2-1)-c(i2-1)*sf(i2,j) c(i2-1)=0. l1=i1+2 l2=i2-1 call tridi do i=i1+1,i2-1 ERR=ERR+ABS(d(i)-sf(i,j)) sf(i,j)=d(i) end do enddo WRITE(*,*)k,err IF(err.gt.ermx)GOTO 15 return end
157
Lampiran 13. Kode Program MATLAB Program Visualisasi Isotermal
load eko -ascii; load num -ascii; im=num(1); jm=num(2); imax=im*jm; for i=1:im for j=1:jm is=i+(j-1)*im; x(i,j)=eko(is); y(i,j)=eko(is+imax); u(i,j)=eko(is+2*imax); end end hold on; box on; contour(x,y,u,30); colorbar; hold off; clear
Program Visualisasi Steam function
load streamf -ascii; load num -ascii; im=num(1); jm=num(2); imax=im*jm; for i=1:im for j=1:jm is=i+(j-1)*im; x(i,j)=streamf(is); y(i,j)=streamf(is+imax); u(i,j)=streamf(is+2*imax); end end hold on; box on; contour(x,y,u,40); colorbar; hold off; clear