You are on page 1of 14

C

PROGRAM PERSAMAAN ADVEKSI 1 DIMENSI LEAPFROG DISKONTINYU


FENDRI SIAMTO_26020213120026
DIMENSION F(100000),F0(100000),F00(1000000)
DEKLARASI VARIABEL
REAL L,DX,T,DT,C
open(41,file='leapfrogdiskontinyuskenario1.TXT',status='unknown')
INPUTAN DATA
L=4000
T=600
WRITE(*,*)'PANJANG KANAL <M> =',L
WRITE(*,*)'LAMA SIMULASI <SEKON>=',T
WRITE(*,*)'MASUKKAN NILAI SELANG WAKTU <SEKON>'
READ(*,*)DT
WRITE(*,*)'MASUKKAN LEBAR GRID <M>'
READ(*,*)DX
WRITE(*,*)'MASUKKAN NILAI KECEPATAN ARUS <M/S>'
READ(*,*)C

GRID MAX DAN WAKTU MAX


MMAX=L/DX
NMAX=T/DT

SYARAT AWAL
DO 1I=1,MMAX
F00(I)=0
CONTINUE

DO 41I=2,MMAX-1
C
41
C

C
10

DISKRITISASI FTCS T=1


F0(I)=F00(I)-((C*DT)/(2*DX))*(F00(I+1)-F00(I-1))
CONTINUE
HARGA POLUTAN
F0(16)=50
DO 2J=2,NMAX
SYARAT BATAS
F00(1)=F00(2)
F00(MMAX)=F00(MMAX-1)
F0(1)=F0(2)
F0(MMAX)=F0(MMAX-1)
DO 10I=2,MMAX-1
DISKRITISASI LEAPFROG
F(I)=F00(I)-((C*DT)/DX)*(F0(I+1)-F0(I-1))
CONTINUE

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

PROGRAM UPSTREAM CONTINUE


FENDRI SIAMTO_26020213120026
DEKLARASI VARIABEL
REAL L,dx,T,dt,u
INTEGER Mmax, Nmax
DIMENSION FO(1000000),F(1000000)
OPEN (1,file='Upstreamkontinyuskenario8.txt',status='unknown')

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

input harga polutan


do 2 j=2,Nmax
F0(16)=50
Deskretisasi Difusi
do 3 i=2,Mmax-1
F(i)=F0(i)+(A*(F0(i+1)-(2*F0(i))+F0(i-1)))
continue
syarat batas
F(1)=F(2)
F(Mmax)=F(Mmax-1)
F(16)=50

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

write(*,*)'Program Berhasil Dijalankan,Cek Folder anda'


read(*,*)jwb

12

stop
end

Program Adveksi Difusi 1D Eksplisit


Fendri Siamto_26020213120026

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

input harga polutan

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

write(*,*)'Masukkan Nilai C'


read(*,*)C
write(*,*)'Masukkan Nilai Ad'
read(*,*)Ad
write(*,*)'Masukkan Nilai s'
read(*,*)s
nmax=T/dt
u=C*sind(s)
v=C*cosd(s)
Lx=u*dt/dx
Ly=v*dt/dy
Alx=Ad*dt/(dx**2)
Aly=Ad*dt/(dy**2)

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

Looping Waktu Mulai


do 103 n=2,nmax
do 104 i=2,imax-1
do 105 j=2,jmax-1

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

write(33,'(1000F10.2)') (F(i,j), i=1,imax)


continue

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

write(33,'(1000F10.2)') (F(i,j), i=1,imax)


continue

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

write(33,'(1000F10.2)') (F(i,j), i=1,imax)


continue

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

write(33,'(1000F10.2)') (F(i,j), i=1,imax)


continue
endif

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

inputan variabel dan konstanta


write(*,*)'panjang kanal (m):'
read(*,*)L
write(*,*)'Lama simulasi (s):'
read(*,*)T
write(*,*)'amplitudo:'
read(*,*)A
write(*,*)'kedalaman (m):'
read(*,*)d
write(*,*)'langkah waktu (s):'
read(*,*)dt
write(*,*)'lebar grid (m):'
read(*,*)dx
write(*,*)'periode (s):'
read(*,*)T0

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

output terhadap ruang


if((n*dt).eq.(0.5*T0))then
write(1,*)'untuk t(0.5*T0) :'
write(2,*)'untuk t(0.5*T0) :'
write(1,'(1000f8.3)')(u(m),m=1,mmax-1)
write(2,'(1000f8.3)')(z(m),m=2,mmax)
elseif((n*dt).eq.(2*T0))then
write(1,*)'untuk t(2*T0) :'
write(2,*)'untuk t(2*T0) :'
write(1,'(1000f8.3)')(u(m),m=1,mmax-1)
write(2,'(1000f8.3)')(z(m),m=2,mmax)
elseif((n*dt).eq.(3*T0))then
write(1,*)'untuk t(3*T0) :'
write(2,*)'untuk t(3*T0) :'
write(1,'(1000f8.3)')(u(m),m=1,mmax-1)
write(2,'(1000f8.3)')(z(m),m=2,mmax)
endif

output terhadap waktu


write(3,'(10000f10.2)')u(9),u(19),u(29),u(39)
write(4,'(10000f10.2)')z(9),z(19),z(29),z(39)
do m=1,mmax

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

You might also like