Muhammad Fathur Rouf Hasan/110322406385
Penyelesaian Difusi Suhu Menggunakan Fisika Simulasi
Penyelesaian Difusi Suhu Menggunakan Fisika Simulasi
Perambatan kalor atau perpindahan kalor bisa terjadi karena adanya peristiwa mengalirnya/berpindahnya kalor dari medium yang memiliki suhu lebih tinggi menuju medium memiliki suhu yang lebih rendah.
Semisal besi yang dipanaskan dengan api pada salah satu ujungnya, maka lama-kelamaan panas itu akan merambat menuju sisi yang lainnya. Peristiwa itu dapat terjadi karena adanya perambatan kalor pada besi yang dipanasi tersebut. Peristiwa ini bisa dilihat seperti gambar berikut :
Suatu besi yang panjangnya 1 m mula mula memiliki suhu 30 derajat kemudian dipanaskan pada salah satu ujungnya, setelah beberapa detik panas tersebut merambat seperti digambarkan pada nomor.
Warna merah yang berbeda tiap baris menunjukkan perambatan kalor yang dimaksudkan dalam pembahasan ini.
Warna merah yang berbeda tiap baris menunjukkan perambatan kalor yang dimaksudkan dalam pembahasan ini.
Pada sistem fisis ini kita
asumsikan :
L = 1 (panjang besi/logam)
TL = 70 (suhu pada bagian x = 1)
TR = 90 (suhu pada x = nx+1)
T0 = 30 (suhu mula-mula batang logam)
Hx = 0.1
dt = 1
untuk n tertentu maka berlaku rumus :
L = 1 (panjang besi/logam)
TL = 70 (suhu pada bagian x = 1)
TR = 90 (suhu pada x = nx+1)
T0 = 30 (suhu mula-mula batang logam)
Hx = 0.1
dt = 1
untuk n tertentu maka berlaku rumus :
Berikut source code matlab untuk membuat animasi perambatan kalor pada besi
clear all;
clc;
%sistem Fisis
L=1;
D=1;
TL=70;
Tr=90;
To=27;
%diskretisasi panjang
hx = 0.1;
Nx = L/hx;
perhx =1/hx;
perhx2 = perhx*perhx;
%diskretisasi Waktu
dt = 0.1;
nmax = 100;
nsave = 10;
for i =
1:Nx+1;
x(i) = (i-1)*hx;
end
T(1) = TL;
T(Nx+1) = Tr;
for i =
2:Nx;
T(i)=To;
end
for n =
1:nmax;
tn = n*dt;
for i =
2:Nx
T(i)=(D*dt/(perhx2))*(T(i+1)-2*T(i)+T(i-1))+T(i)
end
if
mod(n,nsave)
suhu = [x' T'];
csvwrite(['test_'
num2str(n) '.csv'], suhu, 0, 0)
end
end
Tutorial Pembuatan Animasi
Perambatan kalor bisa dibuat animasi seperti video dibawah, setelah menyelesaikan source code matlab diatas kita bisa melanjutkan untuk membuat animasi pada program paraview, sebelumnya kita simpan file dari matlab diatas dalam sebuah folder yang nantinya akan kita gunakan pada program paraview. Terlebih dahulu mari kita instal komputer dg program paraviewa
Berikut tutorial
membuat animasi perambatan kalor pada besi melalui program paraview
1. Untuk mengawali mari kita buka program paraview yg ada pada komputer, kemudian akan muncul tampilan sebagai berikut :
1. Untuk mengawali mari kita buka program paraview yg ada pada komputer, kemudian akan muncul tampilan sebagai berikut :
2. Setelah itu kita pilih file
dan klik “open”, kemudian cari data yang telah kita buat di matlab dari
data diatas, kemudian klik open, sebagaimana ditunjukkan gambar
3. Kemudian pada bagian kiri
atas dalam kotak “pipelin browser” klik “nama
file” yang kita buka tadi,
kemudian klik “apply” maka akan
muncul tampilan disebelah kanan seperti berikut :
7. Setelah itu akan muncul tampilan berikut, kemudian klik “save animation” dan selamat menunggu, karya anda sedang diproses
4. Langkah selanjutnya bagi layout menjadi dua
bagian dg cara klik kode tabel yang ada disisi pojok kanan atas, maka akan
terbagi menjadi dua bagian, kemudian klik “line chart view” maka akan
muncul seperti gambar dibawah :
5. Langkah selanjutnya klik gambar mata yang ada
disamping nama file yang kita buka tadi, maka akan muncul bentuk grafik seperti
gambar, untuk melihat animasi yang telah dibuat kita bisa melihat dengan klik
pada tombol “play” warna hijau diatas layout
6. Setelah menyelesaikan langkah diatas,
sekarang waktunya menyimpan animasi yang kita buat, kliik file kemudian
pilih “creat animation” maka akan muncul tampilan seperti gambar dibawah,
kemudian simpan file dan diberi nama, pilih tipe avi kemudian klik “OK”
7. Setelah itu akan muncul tampilan berikut, kemudian klik “save animation” dan selamat menunggu, karya anda sedang diproses
selamat mencoba.................:)
berikut hasil pembuatan video animasi perambatan kalor pada besi melalui program paraview :
MENGGUNAKAN PROGRAM DIFUSI 2D
!DeklarasiVariabel
IMPLICIT NONE
INTEGER, PARAMETER :: imax=150, jmax=150
CHARACTER(36) :: Label
REAL :: L, dt, hx, perhx, perhx2, meanT, D
INTEGER :: i, j, nwrite, nsave, tmax, n, nn, Nx, Ny
REAL :: T (1:imax, 1:jmax)
INTEGER :: X(1:imax, 1:jmax), Y(1:imax, 1:jmax)
!Input
L = 1
D = 1
dt = 0.01
hx = 0.1
perhx = 1/hx
perhx2 = perhx*perhx
Nx = L/hx
Ny = Nx
tmax = 100000
nwrite = 50
nsave = 100
!perintah membuat file baru
OPEN(80, FILE='data.csv', STATUS='NEW', FORM='FORMATTED')
!isi file baru
WRITE(80,*) 'n,','dt*n,','meanT'
CLOSE(80)
! Syarat awal T
DO j= 1, Ny+1
DO i=1, Nx+1
T(i,j) = 0
END DO
END DO
DO j= 1, Ny
T(Nx+1,j) = 1
END DO
DO i= 1, Nx
T(i,Ny+1) = 1
END DO
T(Nx+1,Ny+1) = 1
PRINT*,' Bismillaahirrahmaanirrahiim....'
DO n = 1, tmax
!Menghitung
DO j=2, Ny
DO i=2, Nx
T(i,j) = (D*dt/perhx2)*(T(i-1,j)+T(i+1,j)+T(i,j-1)+T(i,j+1)-4*T(i,j))+T(i,j);
END DO
END DO
DO j=2, Ny
T(1,j)=T(1,j)+2*D*dt/perhx2*(T(2,j)-T(1,j))+dt/perhx2*(T(1,j-1)-2*T(1,j)+T(1,j+1));
END DO
DO i=2, Ny
T(i,1)=T(i,1)+2*D*dt/perhx2*(T(i,2)-T(i,1))+dt/perhx2*(T(i-1,1)-2*T(i,1)+T(i+1, 1));
END DO
T(1,1)=0.5*(T(2,1)+T(1,2));
meanT=0
DO i=1, Nx+1
DO j=1, Ny+1
meanT = meanT + T(i,j)
END DO
END DO
meanT=meanT/((Nx+1)*(Ny+1))
IF (MOD(n,nwrite) .LE. 1) THEN ! LE=kurang dari sama dengan
PRINT*, '----------------------------------------------------'
WRITE(*, ' (T2, A, T30, I20)')'n :',n
WRITE(*, ' (T2, A, T30, F12.2)')'<T> :',meanT
END IF
IF (MOD(n,nsave) .LE. 1) THEN
PRINT*, '----------------------------------------------------'
PRINT*, ' S a v e data '
WRITE(*, ' (T2, A, T30, F12.2)')'<T> :',meanT
! Menyimpan n, dt*n, <T>
OPEN (80, ACCESS = 'APPEND', FILE = 'data.csv', FORM = 'FORMATTED')
WRITE (80, 81) n, dt*n, meanT
81 FORMAT(i8',', F10.3',', F7.2)
CLOSE(80)
nn = n + 70000000
! Menyimpan T
WRITE (Label, 51) 'T', nn
51 FORMAT (A, i8,'.csv')
OPEN (11, file=Label)
DO i=1, (Nx+1)
DO j=1,(Ny+1)
X(i,j)=i
Y(i,j)=j
WRITE (11,31) X(i,j), Y(i,j), T(i,j)
31 FORMAT(i5',',i5',',F10.7)
END DO
END DO
CLOSE (11)
END IF
END DO
PRINT*,'-----------------------------------------------------------------------------'
PRINT*,"ALHAMDULILLAH"
PRINT*,"Perhitungan telah selesai"
PRINT*,'-----------------------------------------------------------------------------'
END PROGRAM DIFUSI2D
berikut hasil pembuatan video animasi perambatan kalor pada besi melalui program paraview :
MENGGUNAKAN PROGRAM DIFUSI 2D
!DeklarasiVariabel
IMPLICIT NONE
INTEGER, PARAMETER :: imax=150, jmax=150
CHARACTER(36) :: Label
REAL :: L, dt, hx, perhx, perhx2, meanT, D
INTEGER :: i, j, nwrite, nsave, tmax, n, nn, Nx, Ny
REAL :: T (1:imax, 1:jmax)
INTEGER :: X(1:imax, 1:jmax), Y(1:imax, 1:jmax)
!Input
L = 1
D = 1
dt = 0.01
hx = 0.1
perhx = 1/hx
perhx2 = perhx*perhx
Nx = L/hx
Ny = Nx
tmax = 100000
nwrite = 50
nsave = 100
!perintah membuat file baru
OPEN(80, FILE='data.csv', STATUS='NEW', FORM='FORMATTED')
!isi file baru
WRITE(80,*) 'n,','dt*n,','meanT'
CLOSE(80)
! Syarat awal T
DO j= 1, Ny+1
DO i=1, Nx+1
T(i,j) = 0
END DO
END DO
DO j= 1, Ny
T(Nx+1,j) = 1
END DO
DO i= 1, Nx
T(i,Ny+1) = 1
END DO
T(Nx+1,Ny+1) = 1
PRINT*,' Bismillaahirrahmaanirrahiim....'
DO n = 1, tmax
!Menghitung
DO j=2, Ny
DO i=2, Nx
T(i,j) = (D*dt/perhx2)*(T(i-1,j)+T(i+1,j)+T(i,j-1)+T(i,j+1)-4*T(i,j))+T(i,j);
END DO
END DO
DO j=2, Ny
T(1,j)=T(1,j)+2*D*dt/perhx2*(T(2,j)-T(1,j))+dt/perhx2*(T(1,j-1)-2*T(1,j)+T(1,j+1));
END DO
DO i=2, Ny
T(i,1)=T(i,1)+2*D*dt/perhx2*(T(i,2)-T(i,1))+dt/perhx2*(T(i-1,1)-2*T(i,1)+T(i+1, 1));
END DO
T(1,1)=0.5*(T(2,1)+T(1,2));
meanT=0
DO i=1, Nx+1
DO j=1, Ny+1
meanT = meanT + T(i,j)
END DO
END DO
meanT=meanT/((Nx+1)*(Ny+1))
IF (MOD(n,nwrite) .LE. 1) THEN ! LE=kurang dari sama dengan
PRINT*, '----------------------------------------------------'
WRITE(*, ' (T2, A, T30, I20)')'n :',n
WRITE(*, ' (T2, A, T30, F12.2)')'<T> :',meanT
END IF
IF (MOD(n,nsave) .LE. 1) THEN
PRINT*, '----------------------------------------------------'
PRINT*, ' S a v e data '
WRITE(*, ' (T2, A, T30, F12.2)')'<T> :',meanT
! Menyimpan n, dt*n, <T>
OPEN (80, ACCESS = 'APPEND', FILE = 'data.csv', FORM = 'FORMATTED')
WRITE (80, 81) n, dt*n, meanT
81 FORMAT(i8',', F10.3',', F7.2)
CLOSE(80)
nn = n + 70000000
! Menyimpan T
WRITE (Label, 51) 'T', nn
51 FORMAT (A, i8,'.csv')
OPEN (11, file=Label)
DO i=1, (Nx+1)
DO j=1,(Ny+1)
X(i,j)=i
Y(i,j)=j
WRITE (11,31) X(i,j), Y(i,j), T(i,j)
31 FORMAT(i5',',i5',',F10.7)
END DO
END DO
CLOSE (11)
END IF
END DO
PRINT*,'-----------------------------------------------------------------------------'
PRINT*,"ALHAMDULILLAH"
PRINT*,"Perhitungan telah selesai"
PRINT*,'-----------------------------------------------------------------------------'
END PROGRAM DIFUSI2D







