Senin, 16 Desember 2013

Simulasi Difusi Dua Dimensi


Seperti pada artikel sebelumnya, telah saya posting tentang difusi. Perbedaan dengan posting pada artikel ini terletak pada mediumnnya. Jika artikel sebelumnya pada medium satu dimensi, pada artikel kali ini saya akan membahas Difusi pada medium dua dimensi.
Pembahasan Difusi pada artikel hanya membahas konduktivitas pana hingga menjadi tunak pada medium 2 dimensi.
Penghantar panas dengan luasan L x L yang terletak pada bidang xy dengan salah satu sudutnya terletak pada pusat koordinat xy tersebut.  Mula – mula penghantar memiliki suhu T0 ­pada saat t=0.

persamaan yang sesuai dengan sistem tersebut adalah sebagai berikut :
Dalam membuat program harus diperhatikan dua syarat, yaitu syarat batas dan syarat Stabilitas :
  • Syarat Batas 


  • Syarat Batas : 
Syarat awal 
for i = 1:Nx
for j = 1:Ny
T(i,j)=0;                     
end
end

            Syarat batas pada
for j = 1:Ny
T(Nx+1,j)=1;              

end

for i = 1:Nx
T(i,Ny+1)=1;               
end

T(Nx+1,Ny+1)=1;                  


for i = 2:Nx
      for j = 2:Ny
           T(i,j) = 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
              end

for j = 2:Ny
         T(1,j) = T(1,j)
         + 2*dt*perhx2*(T(2,j)-T(1,j))
                      + dt*perhx2*(T(1,j-1)-2*T(1,j)+T(1,j+1));     
                         End

 
          for i = 2:Nx
       T(i,1) = T(i,1)
                      + dt*perhx2*(T(i-1,1)-2*T(i,1)+T(i+1,1))
                     + 2*dt*perhx2*(T(i,2)-T(i,1));
                         end


  • Syarat Stabilitas  
          Syarat stabilitas terpenuhi dengan rumus
         Sehingga diperoleh pilihan hx = 0,1 dan dx = 0,0025

Script Program dengan menggunakan Fortran adalah sebagai berikut :
--------------------------------------------------------------------------------------------------------------- 
--------------------------------------------------------------------------------------------------------------- 
PROGRAM DIFUSI2D
!Deklarasi Variabel
IMPLICIT NONE

INTEGER, PARAMETER : : imax = 1000, jmax = 1000
        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.0025
 hx = 0.1
perhx = 1/hx
perhx2 = perhx*perhx
Nx = L/hx
Ny = Nx
tmax = 4000000
 nwrite = 50
 nsave = 200
 !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, Nx
       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) < 1) THEN  !LE=kurang dari sama dengan
PRINT*, '----------------------------------------------------'
WRITE(*,  ' (T2, A, T30, I20)')'n                 :',n
WRITE(*,  ' (T2, A, T30, F12.5)')'                :',meanT
            
END IF

IF (MOD(n,nsave) < 1) THEN
PRINT*, '----------------------------------------------------'
PRINT*, ' S a v e data '
WRITE(*,  ' (T2, A, T30, F12.5)')'            :',meanT
        
!Menyimpan n, dt*n, meanT
OPEN (80, ACCESS = 'APPEND', FILE = 'data.csv', FORM = 'FORMATTED')
WRITE (80, 81) n, dt*n , meanT
81 FORMAT (i8',',F10.3',', F7.5)
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',',F7.5)
END DO
END DO
CLOSE (11)
    
  END IF
END DO


PRINT*,'-----------------------------------------------------------------------------'
PRINT*,"ALHAMDULILLAH"
PRINT*,"Perhitungan telah selesai"
PRINT*,'-----------------------------------------------------------------------------'

END PROGRAM DIFUSI2D
--------------------------------------------------------------------------------------------------------------- 
---------------------------------------------------------------------------------------------------------------

Kemudian dengan menggunakan paraview Simulasi dapat di visualkan.
Dengan memvariasi nilai D akan di dapat grafik sebagai berikut :
                                                 Grafik Hubungan Waktu dengan Suhu Rata-Rata

 Garis Hijau nilai D adalah 1
 Garis Merah nilai D adalah 0.5
 Garis Biru nilai D adalah 0.25
Video Dua dimensi perambatan Suhu :