Anda di halaman 1dari 19

FISIKA KOMPUTASI Program Mengunakan Bahasa C

DISTRIBUSI PANAS , PERSAMAAN GELOMBANG, EAT E!UATION

O"eh# $% T&'a A"&e' Sa(&)areno /% Nura&n0 Kusuma1a)& ,% R&na Kurn&a *% Men)ar& a"&mun .% Or&na Ame"&a $*+,$++-++./ $*+,$+$+++$+ $*+,$+$+++,* $*+,$+$+++*/ $*+,$+$+++2+

UNI3ERSITAS PAD4AD4ARAN FAKULTAS MATEMATIKA DAN ILMU PENGETA UAN ALAM 4URUSAN FISIKA BANDUNG /+$,

SOAL 1. Sebuah plat konduktor tipis berukuran 4x8 cm. Bagian kiri dari plat tersebut diset pada temperatur 0oC sedangkan bagian kanannya diset pada temperatur 100oC. Bagian atas plat tersebut dikenakan syarat batas u u = 10 dan syarat batas bawah plat dengan = 0. y y Bila setiap titik pada plat tersebut terdapat generasi kalor sebesar ! cal"cm dan #ika diketahui bahwa untuk plat tersebut kondukti$itas termalnya Neuman dengan adalah k = 0.1& Program:
/*distribusi panas pelat konduktor*/ #include <conio.h> #include <math.h> #include <stdio.h> main() { int i,j; float , !, " , "!, " #, " $, "!#, "!$, k, %, m, n, c, &'#(()'#((); *+,- *fp; char namafile'.(); printf(/0tdistribusi panas pelat konduktor c0n0n/); printf(/0n0npanjan1 2 /);scanf(/3f/,4 ); printf(/0npanjan1 ! 2 /);scanf(/3f/,4!); printf(/0nnilai delta 2 /);scanf(/3f/,4" ); printf(/0nnilai delta ! 2 /);scanf(/3f/,4"!); printf(/0nnilai 1enerasi kalor (%) 2/);scanf(/3f/,4%); printf(/0nnilai kondukti5itas termal(k) 2 /);scanf(/3f/,4k); printf(/0n0n/); m2 /" ; n2!/"!; c26%/k; *+,- * data; data 2 fopen(/heate7uation#. ls/,/8/); for(i2#;i<n;i99) { for(j2#;j<m;j99) { if (i22#)

cal ' tentukan distribusi temperaturnya. sec.cm %

&'i)'j)2(&'i9#)'j)9&'i6#)'j)9&'i)'j9#)6 (c*" *" *"!*"!)9(:(*"!))/:; else if (i22n) &'i)'j)2(&'i9#)'j)9&'i6#)'j)9&'i)'j6#)6 (c*" *" *"!*"!)6(#(*"!))/:; else &'i)'j)2(&'i9#)'j)9&'i6#)'j)9&'i) 'j9#)9&'i)'j6#)6(c*" *" *"!*"!))/;; < < for(i2(;i<2n;i99) { for(j2#;j<m;j99) { printf(/ 3f/,&'i)'j)); fprintf(data, /0n 3.:f/,&'i)'j)); < printf(/0n0n/); fprintf(data, /0n/); < fclose(data); 1etch(); <

Tampilan :

Analisa : Berdasarkan program diatas yang dilakukan terlebih dahulu adalah (enentukan batasan pan#ang pelat logam yang akan dianalisis secara komputasi. (enentukan batas)batas temperatur pada pinggir pelat logam dalam keadaan steady state *tunak+. (embuat Skema grid lines dan menentukan titik #urik untuk menghitung titik #aringan distribusi temperatur pada pelat logam. Setelah diketahui bentuk persamaan

matriksnya' diselesaikan dengan metode iterasi untuk mengetahui nilai temperatur pada titik)titik yang dicari. ,ada program yang telah dilakukan dengan menginput nilai x 'nilai y' delta x' delta y' generasi kalor dan kondukti-itas termal maka didapatkan matriks distribusi panas %.. (aksimal matriks yang dihasilkan 100x100. Sebelum melakukan iterasi' pada program kita menghitung nilai gamma terlebih dahulu dengan melihat hubungan antara n' m' dan c. Setelah nilai n' m' dan c diperoleh maka nilai tersebut di masukan ke perulangan. Sehingga akan diperoleh bentuk matriksnya. Syarat batas bagian atas dan bagian bawah plat digunakan syarat batas Neuman.
/ntuk menentukan distribusi temperatur pada benda yang berbentuk bidang datar maupun berbentuk pelat konduktor tipis berukuran 4 x 8 cm dengan cara membagi 0 bagi benda tersebut kedalam beberapa grid. ,erpindahan panas secara konduksi harus menentukan syarat batas permukaan' dalam dan luar benda agar diperoleh temperatur dimasing ) masing node yang telah dibagi kedalam N bagian. Secara analitik temperatur permukaan isolasi pada sebelah kiri diset sebesar 0 0C ' temperatur pada batas kon$eksi bagian kanan diset sebesar 100 0C sedangkan secara numerik hasil yang diperoleh berbeda dengan analitik.

%. 1entukan solusi numerik untuk persamaan gelombang dibawah ini' bila m24' n24' 1210' lalu bandingkan solusi pada t21.0 dengan solusi analitiknya yaitu 3 u ( x' t ) = cos t sin x %u % u =0, t % y % u*0't+2u*1't+20' u*x'0+2 sin x , 04x41 04t u*x'0+ 2 0 x 1 04t

u * x' 0+ = 0 , t Program :
/*=ersamaan >elomban1*/ #include <stdio.h> #include <math.h> #include <conio.h> float 1amma; 5oid input?matri (float @'$(()'$((), int p) { int i, j; for(i2(; i<p9#; i99) { for(j2(; j<p9#; j99) { if(j22i) @'i)'j) 2 $*(#61amma); else if(j22i6# AA j22i9#) @'i)'j) 2 1amma; else @'i)'j) 2 (; < < <

0 x 1

main() { //deklarasi 5ariabel// *+,- *fp; int u, 5, !, parsial; float t, , beta, dt, d , &'$(()'$((), B'$(()'$((), n ; printf(/0n0t0t =ro1ram =ersamaan >elomban10n /); printf(/0n Basukan nilai maksimal untuk t C /); scanf(/3f/, 4t); printf(/0n Basukan nilai maksimal untuk C /); scanf(/3f/, 4 ); printf(/0n Basukan jumlah parsial !an1 diin1inkan C /); scanf(/3d/, 4parsial); printf(/0n Basukan nilai konstanta betta !an1 telah ditentukan C /); scanf(/3f/, 4beta); printf(/0n/); d 2 /(parsial9#);

dt 2 s7rt(d *d /(;*beta)); /* dtD$ <2 d D$/betta merupakan s!arat stabilitas */ 1amma 2 (beta*dt*dt) /(d *d ); input?matri (&, parsial); printf(/nilai dt C 3f0n/, dt);printf(/0n/); printf(/nilai d C 3f0n/, d );printf(/0n/); printf(/nilai 1amma C 3f0n/, 1amma);printf(/0n/); printf(/0nBatriks &0n/);printf(/0n/); for(u2(; u<parsial9#; u99) { for(52(; 5<parsial9#; 599) { printf(/3f0t/, &'u)'5)); < printf(/0n/); < n2t/dt; printf(/0nBatriks B'u)'!)0n/); printf(/iterasi0tt0t0t B'u)'!)0n/); for(u2(; u<parsial; u99) { printf(/0n3d/, u9#); for(52(; 5<n9#; 599) { B'u9#)'5) 2 (; for(!2(; !<parsial9#; !99) { if(u22() B'u)'!)2 sin(:.#;*!*d /.E.:$)/$; B'u9#)'u) 92 &'5)'!)*B'u)'!); < if(u>() B'u9#)'5) 62 B'u6#)'5); printf(/0t3f0t3f0n/, (u9#)*dt, B'u9#)'5)); < < 1etch (); int f, i, j, par?a, par?b, F; char namafile ':((); sa5efileC printf(/0n0n0t@kan disimpan dalam *ileG0n0tHekan # 2 Ies , tekan $ 2 Jo C /);scanf(/3d/,4f); if(f22#) { sprintf(namafile,/trace.t t/); fp 2 fopen(namafile, /a9/);

fprintf(fp,/0n+J=KH B@HL+MN &0n/); for (i2#;i<2par?a;i99) { for (j2#;j<2par?b;j99) { fprintf(fp,/3d /,&'u)'5)); < fprintf(fp,/0n/); < fprintf(fp,/0nO@N+, HL@F-0n/); fprintf(fp,/3d /,F); fclose(fp); printf(/0n0n0t0t*ile Helah "isimpan den1an Jama Ptrace.t tP0n/); < else if(f22$) { printf(/0n0t"ata Hidak "isimpan dalam *ile0n/); < else { printf(/0n0tMode !an1a "iinputkan salah/); 1oto sa5efile; < return (; <

Tampilan :

56789:

Program matlab :
38a5e e7uation clear; close all; clc; c 2 #; n 2 #((; 2 linspace((,#,n); d 2 #/(n6#); dt 2 d ; u(C,#) 2 sin(pi* ); u(#,$) 2 (; for i 2 $Cn6# u(i,$) 2 (..*(dtD$*cD$*(u(i9#,#)6$*u(i,#)9u(i6 #,#))/d D$9$*u(i,#)); end u(n,$) 2 (; error 2 #; k 2 #; 8hile k < #(( k 2 k9#; u(#,k9#) 2 (; for i 2 $Cn6# u(i,k9#) 2 dtD$*cD$*(u(i9#,k)6$*u(i,k)9u(i6 #,k))/d D$9$*u(i,k)6u(i,k6#); end

u(n,k9#) 2 (; end plot( ,u), label(P P),!label(P!P) title(PQa5e -7uationP), label(P P),!label(P!P),colorbar

Analisa : Sistem gelombang mempunyai -ungsi gelombang yang menggambarkan perpindahan satu partikel dalam medium. 8ungsi tersebut tergantung pada posisi dan waktu *dimensi ruang dan waktu +' sehingga secara umum -ungsi gelombang dapat dinyatakan dengan u ( x' t ) . ,rogram ini digunakan untuk mem$isualisasikan solusi persamaan di-erensial gelombang dua dimensi. .imana kita memasukkan nilai maksimal untuk waktu *t+ dan maksimal untuk ruang *x+ serta menginput nilai parsial yang diinginkan beserta nilai beta yang kita tentukan nilainya. ,ada program persamaan gelombang ini'kita menginput nilai m 24' n24' 1210. Nilai x yang diinputkan secara syarat batas tidak boleh besar dari 1 dan nilai t besar dari 0. 7da tiga bagian utama yaitu -ungsi utama *main+' -ungsi gamma dan -ungsi untuk menyimpan -ile. Sebelum -ungsi utama pada program ini di#elaskan -ungsi gamma terlebih dahulu yang nantinya dipanggil pada -ungsi main. /ntuk -ungsi penyimpanan -ile boleh dipilih pengguna apakah ingin menyimpan -ile atau tidak. :emudian hasil program akan menghasilkan nilai dt' dx' dan gamma. ;asil akhirnya berupa matriks ( yang kita inginkan yang nilainya diperoleh secara numerik.

. ;eat e<uation in %. u %u %u = + + f * x' y + t x % y % = =* x' y +0 x 1' 0 y 1 } f * x' y + = !e !0=* x 0.1+ % * y 0.%!+ % >
Pangkal source

u * x' 0' t + = u * x'1' t + = u *0' y' t + = u *1' y' t + = * u * x' y ' 0+ = !0=* x 0.1+ % * y 0.%!+ % >

x% + y % +' t > 0 !0

Program :
/* heat e7uation $" */ #include <conio.h> #include <stdio.h> #include <math.h> float >amma; 5oid input?matri (float &'#(()'#((), int p) { int k, l; for(k2(; k<p*p; k99) { for(l2(; l<p*p; l99) { if(l22k) &'k)'l) 2 #6(;*>amma); else if(l22k6p AA l22k9p) &'k)'l) 2 >amma; else if(l22k9# 44 l3pR2() &'k)'l) 2 >amma; else if(l22k6# 44 k3pR2() &'k)'l) 2 >amma; else &'k)'l) 2 (; < < < float f(float d, float 1) { return (.*e p(6.(*(((6(.#)*(d6(.#))6((16(.$.)*(16(.$.))))); < float h(float o, float p) { return (((o*o)9(p*p))/.(); < main() { int i, j, k, f, n, , !; float m, a, >amma, " , "t, alpha, H, i, !j, @'#(()'#((), &'#(()'#((); 5oid input?matri (float &'#(()'#((), int p);

printf(/0n0t0t Oeat -7uation $"0n /); printf (/ 0n0n0n Jilai dan nilai ! maksimal 2 /); scanf(/3f/, 4a); printf (/ 0n Jilai H maksimal 2 /); scanf(/3f/, 4H); printf (/ 0n &an!akn!a 1rid !an1 diin1inkan 2 /); scanf(/3f/, 4n); printf (/ 0n konstanta alpha 2 /); scanf(/3f/, 4alpha); " 2 "t 2 //s!arat >amma 2 a/(n9#); (" *" )/(S*alpha); stabilitas parabolik $" alpha*"t/(" *" );

input?matri (@, n); //men1input matri @ printf (/"t 2 3f0n/,"t); printf (/" 2 3f0n/," ); printf (/>amma 2 3f0n/, >amma); printf (/0n0n0n B@HL+MN @0n0n0n/); for (i2(; i<n*n; i99) { for (j2(; j<n*n; j99) { printf(/3.$f0t/, @'i)'j)); < printf (/0n/); < m 2 H/"t; printf (/0n m 2 3d0n/, m); printf (/0n Oasil 2 0n/); printf (/t0ti ( i)0t0tj (!j)0t0t&( ,!)0n/); for (i2(; i<m; i99) { printf(/0n3.$f/, (i9#)*"t); { for (j2(; j<n*n; j99) &'i9#)'j) 92 @'j)'k) * &'i)'k); if(n R2 ( 44 (j9#)3n 22 () 2n; else 2 (j9#)3n; i 2 *" ; ! 2 (j/n)9#; !j 2 !*" ; &'i9#)'j) 92 ( i,!j)*"t; if(!22#) &'i9#)'j) 92 >amma*h( i,(); if(!22n) &'i9#)'j) 92 >amma*h( i,!j9" );

if( 22#) &'i9#)'j) 92 >amma*h((,!j); if( 22n) &'i9#)'j) 92 >amma*h( i9" ,!j); printf(/0t3d (3.$f)0t3d (3.$f)0t3f0n/, !j, &'i9#)'j));printf(/0n/); < < return (; < , i, !,

1ampilan

56789:

,rogram matlab 3
3heat e7uation $" clear; close all; clc n 2 .; 31rid has n 6 $ interior points per dimension (o5erlappin1) 2 linspace((,#,n); d 2 ($)6 (#); ! 2 ; d! 2 d ; HT, 2 #e6.(; H 2 Ueros(n); H(#,#Cn) 2 (; 3HT= H(n,#Cn) 2 #; 3&THHTB H(#Cn,#) 2 (; 3,-*H H(#Cn,n) 2 #; 3L+>OH dt 2 d D$/;; error 2 #; k 2 (; 8hile error > HT, k 2 k9#; Hold 2 H; for i 2 $Cn6# for j 2 $Cn6# H(i,j) 2 dt*((Hold(i9#,j)6$*Hold(i,j)9Hold(i6 #,j))/d D$ ... 9 (Hold(i,j9#)6$*Hold(i,j)9Hold(i,j6 #))/d!D$) ...

end

9 Hold(i,j);

end error 2 ma (ma (abs(Hold6H))); end subplot($,#,#),contour( ,!,H), title(PHemperature (heat e7uation)P), label(P P),!label(P!P),colorbar subplot($,#,$),pcolor( ,!,H),shadin1 interp, title(PHemperature (heat e7uation)P), label(P P),!label(P!P),colorbar

7nalisa 3 .alam prinsip)prinsip perpindahan panas disebutkan bahwa panas adalah suatu bentuk energi yang dipindahkan melalui batas system yang ada pada temperatur yang lebih tinggi ke system lain atau lingkungan yang mempunyai temperatur yang lebih rendah. Suatu benda tidak dapat memiliki panas' akan tetapi panas dapat dikenali pada saat melalui batas sistem. Sedangkan perpindahan panas adalah berlangsungnya perpindahan energi karena adanya perbedaan temperatur antara dua sistem yang bersinggungan' dimana arah perpindahannya dari daerah yang bertemperatur lebih rendah didalam suatu medium baik padat' cair maupun gas. .alam heat e<uation dua)dimensi' kita membutuhkan syarat batas di sepan#ang batas. .engan batas x diantara 0 sampai 1 dan nilai y diantara 0 sampai 1. :ita mempunyai -ungsi gelombang sumber

f * x' y + = !e !0=* x 0.1+ % * y 0.%!+ % > . .ari -ungsi tersebut' dapat dilihat bahwa kita membutuhkan nilai x dan y sehingga pada program sebelum mengolah -ungsi gelombang kita menginputkan nilai x dan y yang sudah ditentukan. 1etapi dari program yang di dapat nilai yang keluar tidak sesuai dengan perhingan analitiknya. ,ada program dibuat -ungsi gamma terdahulu. ?ang kemudian dipanggil pada -ungsi utama. ,ada -ungsi utama yang diinputkan terlebih dahulu adalah nilai x' y' 1' #umlah parsial yang diinginkan dan konstanta alpha. Nilai alpha yang diinputkan digunakan untuk menghitung nilai gamma' dengan rumus 3 >amma
2 alpha*"t/(" *" ).

Setelah itu kita mendapatkan

nilai gamma dan nilai dx serta dy. Setelah itu baru dibuat program perulangan untuk mendapatkan matriks menggunakan nilai tersebut.