Minggu, 17 November 2013

Muhammad Fathur Rouf Hasan/110322406385

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.
Pada sistem fisis ini kita asumsikan :
L   = 1     (panjang besi/logam)
T
L  = 70    (suhu pada bagian x = 1)
T
R  = 90   (suhu pada x = nx+1)
T
0  = 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 :

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 :

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