Ketika ada
sebuah besi yang kedua ujungnya dipanaskan dengan lilin, dan bagian tengah dari besi dipegang dengan tangan, maka lama kelamaan tangan akan
terasa panas.
Hal tersebut dapat terjadi karena adanya perambatan kalor dari ujung-ujung besi yang menyebabkan suhu dari bagian tengah besi meningkat. Panas merambat dari ujung-ujung besi menuju ke bagian tengah suhu hingga nantinya mencapai suhu tunak(steady state).
Lihatlah video dibawah ini.
Dari video diatas terlihat proses perambatan kalor dari ujung-ujung besi menuju bagian tengah besi hingga mencapai steady state(kondisi setimbang). Proses difusi suhu tunak satu dimensi dapat diselesaikan secara analitik maupun numerik. Secara numerik solusinya dapat diselesaikan dengan menggunakan bahasa pemrograman delphi maupun matlab. Berikut persamaan differensial untuk proses difusi satu dimensi.
Hal tersebut dapat terjadi karena adanya perambatan kalor dari ujung-ujung besi yang menyebabkan suhu dari bagian tengah besi meningkat. Panas merambat dari ujung-ujung besi menuju ke bagian tengah suhu hingga nantinya mencapai suhu tunak(steady state).
Lihatlah video dibawah ini.
Dari video diatas terlihat proses perambatan kalor dari ujung-ujung besi menuju bagian tengah besi hingga mencapai steady state(kondisi setimbang). Proses difusi suhu tunak satu dimensi dapat diselesaikan secara analitik maupun numerik. Secara numerik solusinya dapat diselesaikan dengan menggunakan bahasa pemrograman delphi maupun matlab. Berikut persamaan differensial untuk proses difusi satu dimensi.
dengan D adalah tetapan difusi, adalah
konduktifitas termal penghantar, adalah massa jenis penghantar, dan c
adalah panas jenis penghantar.
Pertama-pertama kita membuatnya menjadi bentuk
diskrit
agar lebih mudah dihitung seperti pada gambar b.
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
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
Berikut source code matlab untuk proses difusi satu dimensi :
clc
clear all
%sistem fisika
L = 1
D = 1
Tl = 70
Tr = 90
T0 = 30
%diskretisasi panjang
hx = 0.1
Nx = L/hx
perhx = 1/hx
perhx2 = perhx*perhx
%diskretisasi waktu
dt = 1
nmax = 200
nsave = 10
for i = 1:Nx+1
x(i)=(i-1)*hx
end
T(Nx+1) = Tr
T(1) = Tl
for i = 2:Nx
T(i)= T0
end
for n = 1:nmax
tn = n*dt;
for i = 2:Nx
T(i) = (dt*D/perhx2)*(T(i+1)-2*T(i)+T(i-1))+T(i) %rumus
end
if mod(n,nsave)
suhu = [x' T'];
csvwrite(['test_' num2str(n) '.csv'],suhu,0,0)
end
suhu = [x' T']
end
Jika menggunakan bahasa pemrograman delphi maka source codenya untuk proses difusi satu dimensi :
unit
Unit1;
interface
uses
Windows, Messages, SysUtils, Variants,
Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids;
type
TForm1 = class(TForm)
SG1: TStringGrid;
Button1: TButton;
EdSuhuKiri: TEdit;
EdSuhuKanan: TEdit;
EdSuhuAwal: TEdit;
EdPanjang: TEdit;
EdCacah: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Button2: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure SG1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R
*.dfm}
procedure
TForm1.FormCreate(Sender: TObject);
var
i:integer;
begin
for
i:=0 to 1999 do
begin
SG1.Cells[i,0]:='t'+ inttostr(i);
end;
end;
procedure
TForm1.Button1Click(Sender: TObject);
var
o,L,Tl,Tr,T,Nx,hx,tm,D,dt:real;
i,n:
integer;
begin
L:=strtofloat(edPanjang.Text);
Tl:=strtofloat(edSuhuKiri.Text);
Tr:=strtofloat(edSuhuKanan.Text);
T:=strtofloat(edSuhuAwal.Text);
Nx:=strtofloat(edCacah.Text);
tm:=2000;
dt:=L/tm;
D:=1;
hx:=1/Nx;
SG1.RowCount:=round(Nx+1);
SG1.ColCount:=round(tm+1);
with
SG1 do
begin
for i:= 1 to round(Nx-1) do
for n:= 0 to round(tm-1) do
begin
cells[0,1]:=floattostr(Tl);
cells[n,round(Nx-1)]:=floattostr(Tr);
cells[0,i]:=floattostr(T);
end;
for n:=0 to round(tm-1) do
for i:=2 to round(Nx-2) do
begin
cells[n,1]:=floattostr(Tl);
cells[n,round(Nx-1)]:=floattostr(Tr);
o := dt*D*(strtofloat(cells[n,i-1]) - 2*strtofloat(cells[n,i])
+ strtofloat(cells[n,i+1])) / (hx*hx) + strtofloat(cells[n,i]);
cells[n+1,i]:=floattostr(o);
end;
end;
end;
procedure
TForm1.SG1Click(Sender: TObject);
var
Nx:integer;
begin
Nx:=strtoint(edCacah.Text);
SG1.RowCount:=Nx+1;
end;
procedure
XlsWriteCellLabel(XlsStream: TStream; const ACol, ARow: Word;
const
AValue: string);
var
L:
Word;
const
{$J+}
CXlsLabel:
array[0..5] of Word = ($204, 0, 0, 0, 0, 0);
{$J-}
begin
L :=
Length(AValue);
CXlsLabel[1]
:= 8 + L;
CXlsLabel[2]
:= ARow;
CXlsLabel[3]
:= ACol;
CXlsLabel[5]
:= L;
XlsStream.WriteBuffer(CXlsLabel,
SizeOf(CXlsLabel));
XlsStream.WriteBuffer(Pointer(AValue)^,
L);
end;
function
SaveAsExcelFile(AGrid: TStringGrid; AFileName: string): Boolean;
const
{$J+}
CXlsBof: array[0..5] of Word = ($809, 8, 00, $10, 0, 0); {$J-}
CXlsEof:
array[0..1] of Word = ($0A, 00);
var
FStream:
TFileStream;
I, J:
Integer;
begin
Result
:= False;
FStream
:= TFileStream.Create(PChar(AFileName), fmCreate or fmOpenWrite);
try
CXlsBof[4]
:= 0;
FStream.WriteBuffer(CXlsBof,
SizeOf(CXlsBof));
for i
:= 0 to AGrid.ColCount - 1 do
for j
:= 0 to AGrid.RowCount - 1 do
XlsWriteCellLabel(FStream,
I, J, AGrid.cells[i, j]);
FStream.WriteBuffer(CXlsEof,
SizeOf(CXlsEof));
Result
:= True;
finally
FStream.Free;
end;
end;
//
button1 untuk save ke excel
procedure
TForm1.Button2Click(Sender: TObject);
begin
If
SaveAsExcelFile(SG1,'C:\Users\A43S\Desktop\difusi.xls') then
ShowMessage('StringGrid
saved!');
end;
end.
Setelah selesai melakukan perhitungan data yang didapat dari proses perhitungan tadi diolah dengan menggunakan paraview. Setelah membuka aplikasi paraview maka akan terlihat tampilan seperti gambar di bawah ini.
Kemudian "file-open, dan pilih file yang berformat .csv klik "OK ". Setelah klik "apply", maka akan muncul tabel data dari file tadi. Setelah itu plih "line chart view" untuk membuat grafiknya. Jika grafik sudah jadi, kemudian isikan nilai pada kolom time, dan kemudian klik tombol play, maka grafik akan berjalan.
Simpan file tersebut dengan cara "file - save animation", simpan dengan tipe file "avi", dan jadilah sebuah video tentang proses difusi satu dimensi.
Simpan file tersebut dengan cara "file - save animation", simpan dengan tipe file "avi", dan jadilah sebuah video tentang proses difusi satu dimensi.






:)
BalasHapus