Professional Documents
Culture Documents
Sssad
Sssad
SYARAT AWAL
DO 1I=1,MMAX
F00(I)=0
CONTINUE
DO 41I=2,MMAX-1
C
41
C
C
10
SYARAT BATAS
F(1)=F(2)
F(MMAX)=F(MMAX-1)
CETAK HASIL
WRITE(41,'(100000F15.2)')(F(I),I=1,MMAX)
TRANFER VARIABEL
DO 20I=2,MMAX-1
F0(I)=F(I)
F00(I)=F0(I)
20
2
CONTINUE
CONTINUE
STOP
END
C
c
INPUT DATA
L=4000
T=600
WRITE(*,*)'Panjang kanal(L) =',L
WRITE(*,*)'Lama simulasi(T) =',T
WRITE(*,*)'Selang waktu(dt) ='
READ (*,*)dt
WRITE(*,*)'Lebar grid(dx) ='
READ (*,*)dx
WRITE(*,*)'Kecepatan arus(c) ='
READ (*,*)u
Mmax=L/dx
Nmax=T/dt
DO 10i=1,Mmax
c
10
syarat awal
FO(i)=0
CONTINUE
DO 20j=2,Nmax
Harga Polutan
FO(16)=50
DO 30i=2,(Mmax-1)
c
30
Diskritisasi Upstream
F(i)=(FO(i)*(1-((abs(u))*(dt/dx))))+((dt/(2*dx))*(((u+(abs(u))
#)*(FO(i-1))))+(((abs(u))-u)*(FO(i+1))))
CONTINUE
Syarat Batas
F(1)=F(2)
F(Mmax)=F(Mmax-1)
F(16)=50
Cetak Hasil
WRITE(1,'(100000F50.2)')(F(i),i=1,Mmax)
DO 40i=2,(Mmax-1)
FO(i)=F(i)
40
20
CONTINUE
CONTINUE
STOP
END
Program Persamaan Difusi 1 Dimensi Kontinyu
Dimension F(100000),F0(100000)
Fendri Siamto_26020213120026
Deklarasi Variabel
real L,T,dx,dt,ad,A
character jwb
L=4000
T=600
c
c
11
output file
skenario
open(10,file='Skenario8.txt',status='unknown')
input variabel
write(*,*)'Panjang Kanal (m) =',L
write(*,*)'Lama Simulasi (s) =',T
write(*,*)'Masukkan Lebar grid (m) ='
read(*,*)dx
write(*,*)'Masukkan Langkah waktu (s) ='
read(*,*)dt
write(*,*)'Masukkan koefisien difusi ='
read(*,*)ad
Mmax=L/dx
Nmax=T/dt
99
kriteria stabilitas
A=ad*dt/(dx**2)
if(A.gt.0.5) then
goto 99
endif
syarat batas
do
1 i=1,Mmax
F0(i)=0
continue
1
c
c
3
c
cetak hasil
write(10,'(1891F10.2)')(F(i),i=1,Mmax)
transfer variabel
do 4 i=2,Mmax-1
F0(i)=F(i)
continue
continue
4
2
12
stop
end
kontinyu
Deklarasi variabel
dimension f0(10000),f(10000)
real L,T,dx,dt,Ad,U,A
L=4000
T=600
output file
open(1,file="skenario10.txt",status="new")
write(*,*)'L=',L
write(*,*)'T=',T
write(*,*)'dx='
read(*,*)dx
write(*,*)'dt='
read(*,*)dt
write(*,*)'Ad='
read(*,*)Ad
write(*,*)'U='
read(*,*)U
Mmax=L/dx
Nmax=L/dt
alpha=(Ad*dt)/(dx**2)
lamda=(U*dt)/dx
A=2*Alpha+lamda
c
syarat awal
if (A.lt.1) then
goto 2
elseif (A.ge.1) then
goto 3
endif
do i=1,Mmax
F0(i)=0
enddo
do j=2,Nmax
f0(11)=150
c
dekritisasi ftcs
do i=2,Mmax-1
A=f0(i)*(1-((U*dt)/dx)-2*((Ad*dt)/dx**2))
B=f0(i-1)*((dt/(2*dx))*(U+Abs(U))+((Ad*dt)/dx**2))
C=f0(i+1)*((dt/(2*dx))*(U-Abs(U))+(Ad*dt/(dx**2)))
f(i)=A+B+C
enddo
syarat batas
F(1)=F(2)
F(Mmax)=F(Mmax-1)
cetak hasil
write(1,'(1891f10.2)')(f(i),i=1,MMax)
transfer variabel
do i=2,Mmax-1
f0(i)=f(i)
enddo
enddo
stop
end
Program Adveksi Difusi 2D
Fendri Siamto_26020213120026
real T, dt, dx, dy, imax, jmax, Lx, Ly, Alx, Aly, C, Ad, s
dimension FF(1000,1000), F(1000,1000)
open(33, file='Skenario 9.txt', status='unknown')
T=600
dt=2
dx=100
dy=100
imax=50
jmax=50
Syarat Kestabilan
Q=(2*(Alx+Aly))+Lx+ly
if(Q.gt.1) then
write(*,*)'Tidak Stabil'
goto 1
endif
write(*,*)'Stabil'
c
Nilai Awal
do 101 i=1,imax
do 102 j=1,jmax
FF(i,j)=0.0
102
101
continue
continue
Harga Polutan
FF(24,24)=100.62
FF(24,25)=100.62
FF(24,26)=100.62
FF(25,24)=100.62
FF(25,25)=100.62
FF(25,26)=100.62
FF(26,24)=100.62
FF(26,25)=100.62
FF(26,26)=100.62
Diskritisasi
F(i,j)=((1-abs(Lx)-abs(Ly))*FF(i,j))+
#
(0.5*(Lx+abs(Lx))*FF(i-1,j))+
#
(0.5*(abs(Lx)-Lx)*FF(i+1,j))+
#
(0.5*(Ly+abs(Ly))*FF(i,j-1))+
#
(0.5*(abs(Ly)-Ly)*FF(i,j+1))+
#
(Alx*(FF(i+1,j)-2*FF(i,j)+FF(i-1,j)))+
#
(Aly*(FF(i,j+1)-2*FF(i,j)+FF(i,j-1)))
105
104
continue
continue
Syarat Batas
do 106 i=2,imax-1
do 407 j=2,jmax-1
F(1,j)=F(2,j)
F(i,1)=F(i,2)
F(1,1)=F(2,2)
F(imax,j)=F(imax-1,j)
F(i,jmax)=F(i,jmax-1)
F(1,jmax)=F(2,jmax)
F(imax,1)=F(imax,2)
F(imax,jmax)=F(imax-1,jmax-1)
continue
continue
407
106
Cetak Hasil
if(n.eq.6) then
write(33,*)'Waktu Ke-6'
do 6 j=jmax,1,-1
write(33,'(1000F10.2)') (F(i,j), i=1,imax)
continue
16
elseif(n.eq.16) then
write(33,*)'Waktu Ke-16'
do 16 j=jmax,1,-1
write(33,'(1000F10.2)') (F(i,j), i=1,imax)
continue
26
elseif(n.eq.26) then
write(33,*)'Waktu Ke-26'
do 26 j=jmax,1,-1
write(33,'(1000F10.2)') (F(i,j), i=1,imax)
continue
30
elseif(n.eq.30) then
write(33,*)'Waktu Ke-30'
do 30 j=jmax,1,-1
write(33,'(1000F10.2)') (F(i,j), i=1,imax)
continue
36
elseif(n.eq.36) then
write(33,*)'Waktu Ke-36'
do 36 j=jmax,1,-1
write(33,'(1000F10.2)') (F(i,j), i=1,imax)
continue
46
elseif(n.eq.46) then
write(33,*)'Waktu Ke-46'
do 46 j=jmax,1,-1
write(33,'(1000F10.2)') (F(i,j), i=1,imax)
continue
50
elseif(n.eq.50) then
write(33,*)'Waktu Ke-50'
do 50 j=jmax,1,-1
write(33,'(1000F10.2)') (F(i,j), i=1,imax)
continue
56
elseif(n.eq.56) then
write(33,*)'Waktu Ke-56'
do 56 j=jmax,1,-1
write(33,'(1000F10.2)') (F(i,j), i=1,imax)
continue
66
elseif(n.eq.66) then
write(33,*)'Waktu Ke-66'
do 66 j=jmax,1,-1
write(33,'(1000F10.2)') (F(i,j), i=1,imax)
continue
elseif(n.eq.76) then
write(33,*)'Waktu Ke-76'
do 76 j=jmax,1,-1
76
80
elseif(n.eq.80) then
write(33,*)'Waktu Ke-80'
do 80 j=jmax,1,-1
write(33,'(1000F10.2)') (F(i,j), i=1,imax)
continue
86
elseif(n.eq.86) then
write(33,*)'Waktu Ke-86'
do 86 j=jmax,1,-1
write(33,'(1000F10.2)') (F(i,j), i=1,imax)
continue
96
elseif(n.eq.96) then
write(33,*)'Waktu Ke-96'
do 96 j=jmax,1,-1
write(33,'(1000F10.2)') (F(i,j), i=1,imax)
continue
107
elseif(n.eq.107) then
write(33,*)'Waktu Ke-106'
do 107 j=jmax,1,-1
write(33,'(1000F10.2)') (F(i,j), i=1,imax)
continue
116
elseif(n.eq.116) then
write(33,*)'Waktu Ke-116'
do 116 j=jmax,1,-1
write(33,'(1000F10.2)') (F(i,j), i=1,imax)
continue
126
elseif(n.eq.126) then
write(33,*)'Waktu Ke-126'
do 126 j=jmax,1,-1
write(33,'(1000F10.2)') (F(i,j), i=1,imax)
continue
130
elseif(n.eq.130) then
write(33,*)'Waktu Ke-130'
do 130 j=jmax,1,-1
write(33,'(1000F10.2)') (F(i,j), i=1,imax)
continue
136
elseif(n.eq.136) then
write(33,*)'Waktu Ke-136'
do 136 j=jmax,1,-1
write(33,'(1000F10.2)') (F(i,j), i=1,imax)
continue
146
elseif(n.eq.146) then
write(33,*)'Waktu Ke-146'
do 146 j=jmax,1,-1
write(33,'(1000F10.2)') (F(i,j), i=1,imax)
continue
elseif(n.eq.150) then
write(33,*)'Waktu Ke-150'
do 150 j=jmax,1,-1
150
156
elseif(n.eq.156) then
write(33,*)'Waktu Ke-156'
do 156 j=jmax,1,-1
write(33,'(1000F10.2)') (F(i,j), i=1,imax)
continue
166
elseif(n.eq.166) then
write(33,*)'Waktu Ke-166'
do 166 j=jmax,1,-1
write(33,'(1000F10.2)') (F(i,j), i=1,imax)
continue
176
elseif(n.eq.176) then
write(33,*)'Waktu Ke-176'
do 176 j=jmax,1,-1
write(33,'(1000F10.2)') (F(i,j), i=1,imax)
continue
180
elseif(n.eq.180) then
write(33,*)'Waktu Ke-180'
do 180 j=jmax,1,-1
write(33,'(1000F10.2)') (F(i,j), i=1,imax)
continue
186
elseif(n.eq.186) then
write(33,*)'Waktu Ke-186'
do 186 j=jmax,1,-1
write(33,'(1000F10.2)') (F(i,j), i=1,imax)
continue
196
elseif(n.eq.196) then
write(33,*)'Waktu Ke-196'
do 196 j=jmax,1,-1
write(33,'(1000F10.2)') (F(i,j), i=1,imax)
continue
206
elseif(n.eq.206) then
write(33,*)'Waktu Ke-206'
do 206 j=jmax,1,-1
write(33,'(1000F10.2)') (F(i,j), i=1,imax)
continue
216
elseif(n.eq.216) then
write(33,*)'Waktu Ke-216'
do 216 j=jmax,1,-1
write(33,'(1000F10.2)') (F(i,j), i=1,imax)
continue
226
elseif(n.eq.226) then
write(33,*)'Waktu Ke-226'
do 226 j=jmax,1,-1
write(33,'(1000F10.2)') (F(i,j), i=1,imax)
continue
elseif(n.eq.230) then
write(33,*)'Waktu Ke-230'
do 230 j=jmax,1,-1
230
236
elseif(n.eq.236) then
write(33,*)'Waktu Ke-236'
do 236 j=jmax,1,-1
write(33,'(1000F10.2)') (F(i,j), i=1,imax)
continue
246
elseif(n.eq.246) then
write(33,*)'Waktu Ke-246'
do 246 j=jmax,1,-1
write(33,'(1000F10.2)') (F(i,j), i=1,imax)
continue
250
elseif(n.eq.250) then
write(33,*)'Waktu Ke-250'
do 250 j=jmax,1,-1
write(33,'(1000F10.2)') (F(i,j), i=1,imax)
continue
256
elseif(n.eq.256) then
write(33,*)'Waktu Ke-256'
do 256 j=jmax,1,-1
write(33,'(1000F10.2)') (F(i,j), i=1,imax)
continue
266
elseif(n.eq.266) then
write(33,*)'Waktu Ke-266'
do 266 j=jmax,1,-1
write(33,'(1000F10.2)') (F(i,j), i=1,imax)
continue
276
elseif(n.eq.276) then
write(33,*)'Waktu Ke-276'
do 276 j=jmax,1,-1
write(33,'(1000F10.2)') (F(i,j), i=1,imax)
continue
280
elseif(n.eq.280) then
write(33,*)'Waktu Ke-280'
do 280 j=jmax,1,-1
write(33,'(1000F10.2)') (F(i,j), i=1,imax)
continue
286
elseif(n.eq.286) then
write(33,*)'Waktu Ke-286'
do 286 j=jmax,1,-1
write(33,'(1000F10.2)') (F(i,j), i=1,imax)
continue
296
elseif(n.eq.296) then
write(33,*)'Waktu Ke-296'
do 296 j=jmax,1,-1
write(33,'(1000F10.2)') (F(i,j), i=1,imax)
continue
elseif(n.eq.300) then
write(33,*)'Waktu Ke-300'
do 300 j=jmax,1,-1
300
109
108
Transfer Variabel
do 108 i=1,imax-1
do 109 j=1,jmax-1
FF(i,j)=F(i,j)
continue
continue
103
continue
stop
end
Program Hidrodinamika 1 dimensi sederhana
Fendri Siamto_26020213120026
dimension u(10000),z(10000),uo(10000),zo(10000),H(10000)
real g,pi,L,T,A,d,dt,dx,T0,mmax,nmax,Co,tao
output file
open(1,file='u
open(2,file='z
open(3,file='u
open(4,file='z
terhadap
terhadap
terhadap
terhadap
ruang
ruang
waktu
waktu
parameter
g=9.8
pi=3.14
Co=sqrt(g*d)
k=(2*pi)/(T*Co)
tao=(2*pi)/T0
mmax=L/dx
nmax=T/dt
sk1.txt',status='unknown')
sk1.txt',status='unknown')
sk1.txt',status='unknown')
sk1.txt',status='unknown')
do m=1,mmax
c
nilai awal
H(m)=d+zo(m)
uo(m)=((A*Co)/H(m))*(cos(k*(m)*dx+(0.5*dx)))
zo(m)=A*cos(k*(m)*dx)
enddo
do n=2,nmax
c
syarat batas
u(mmax)=((A*Co)/H(mmax))*cos(k*L-tao*(n)*dt)
z(1)=(A*cos(tao*n*dt))
do m=1,mmax-1
hitung u
u(m)=uo(m)-(g*(dt/dx)*(zo(m+1)-zo(m)))
enddo
do m=2,mmax-2
hitung z
z(m)=zo(m)-(H(m)*(dt/dx)*(u(m)-u(m-1)))
enddo
transfer variabel
uo(m)=u(m)
zo(m)=z(m)
enddo
enddo
stop
end
program Hidrodinamika 1D Topografi Variasi
Fendri Siamto_26020213120026
dimension Zn(100),Un(100),Zo(100),Uo(100),H(100),d(100),Ur(100)
integer jmax,nmax
data g,phi/9.8,3.14/
data L,A,To,dt,dx,T/5500,0.3,450,2,100,1800/
c
output file
open(1,FILE='Ur_Vs_Waktu_Sk1.txt',STATUS='UNKNOWN')
open(2,FILE='Ur_Vs_Ruang_Sk1.txt',STATUS='UNKNOWN')
open(3,FILE='Zn_Vs_Waktu_Sk1.txt',STATUS='UNKNOWN')
open(4,FILE='Zn_Vs_Ruang_Sk1.txt',STATUS='UNKNOWN')
T=4*To
jmax=L/dx
nmax=T/dt
Zigma=(2*Phi)/To
Co=sqrt(g*10.0)
Lo=Co*To
K=(2*Phi)/Lo
do 600 j=1,jmax
c
600
Variasi Kedalaman
d(j)=5+15*((j-jmax)/(1-jmax))
continue
do 500 j=1,jmax
500
nilai awal
Zo(j)=A*cos(K*j*dx)
H(j)=d(j)+Zo(j)
Uo(j)=A*Co*cos(K*(j*dx+0.5*dx))
continue
do 400 n=2,nmax
syarat batas
Zn(1)=A*cos(K*0.5*dx-Zigma*n*dt)
Un(jmax)=A*Co*cos(K*L-Zigma*n*dt)
Un(jmax)=Un(jmax)-(dt/dx)*Co*(Un(jmax)-Un(jmax-1))
300
do 300 j=1,jmax-1
Un(j)=Uo(j)-(g*dt/(2*dx))*(d(j+1)+d(j))*(Zo(j+1)-Zo(j))
continue
200
do 200 j=2,jmax
Zn(j)=Zo(j)-(dt/dx)*(Un(j)-Un(j-1))
CONTINUE
700
do 700 j=1,jmax-1
Ur(j)=Un(j)/d(j)
continue
cetak hasil
write(1,*)Ur(6),Ur(16),Ur(26),Ur(36)
write(3,*)Zn(6),Zn(16),Zn(26),Zn(36)
if(((n*dt).NE.(0.5*To)).AND.((n*dt).NE.(1.0*To))
*.and.((n*dt).NE.(2.0*To)).AND.((n*dt).NE.(3*To))) goto 1
write(2,*)(Ur(j),j=1,jmax)
write(2,*)(Un(j),j=1,jmax)
write(3,*)(Zn(j),j=1,jmax)
1000
format(1000F8.3)
do 100 j=1,jmax
transfer variabel
Uo(j)=Un(j)
Zo(j)=Zn(j)
H(j)=d(j)+Zo(j)
100
400
continue
continue
close(1)
close(2)
close(3)
close(4)
stop
end