Program Matlab untuk persamaan difusi 1 dimensi
clc;
clear;
disp('Program Persamaan Difusi Satu Dimensi Non-Dimensionalisasi')
disp('-------------------------------------')
%% Rekam PDP dengan syarat awal dan syarat batas
flag=0;
while flag==0
L=input('Masukkan panjang kawat = ');
if L<=0
disp('Nilai panjang kawat harus positif')%syarat positif
else
break
end
end
while flag==0
alpha=input('Masukkan konstanta alpha = ');
if alpha<=0
disp('Nilai alpha harus positif')%syarat positif
else
break
end
end
while flag==0
h=input('Masukkan banyaknya space step = ');
if h<=0 || ceil(h)-h>0
disp('Nilai space step (h) harus bilangan bulat positif')%syarat bulat positif
else
a=L/h;
disp(['Panjang segmen dx= ',num2str(a)])
break
end
end
while flag==0
i=input('Masukkan banyaknya time step = ');
if i<=0 || ceil(i)-i>0
disp('Nilai time step (i) harus bilangan bulat positif')%syarat bulat positif
else
break
end
end
disp('---Input Syarat Awal---')
fx=input('Masukkan nilai syarat awal= ');
disp('---Input Syarat Batas---')
T1=input('Masukkan suhu batas pertama = ');
T2=input('Masukkan suhu batas kedua = ');
%% Transformasi ke PDP non-dimensional
%non-dimensionalisasi panjang
dx=1/h;
%non-dimensionalisasi waktu
dt=1/i;
%non-dimensionalisasi suhu
Tm1=T1/max(T1,T2);
Tm2=T2/max(T1,T2);
% Syarat Stabil
S=(alpha*dt)/dx^2;
if S>1/2
disp('____________________')
disp('Kondisi tidak stabil')
else
disp('____________________')
disp('Kondisi stabil')
end
%% Grid komputasi
%syarat awal
for j=1:h+1
x(j)=(j-1)*dx;
u(j,1)=fx;
end
%syarat batas
for n=1:i+1
u(1,n)=Tm1;
u(h+1,n)=Tm2;
waktu(n)=(n-1)*dt;
end
%% Menyelesaikan dengan metode FTCS
for n=1:i
for j=2:h
u(j,n+1)=S*u(j+1,n)+S*u(j-1,n)+(1-2*S)*u(j,n);
end
end
%plot(x, u')
mesh(x,waktu,u')
xlabel('Panjang')
ylabel('Waktu')
zlabel('Suhu')
%% Mengembalikan PDP dimensional
panjang=x'*L;
suhu=u(:,n+1)*max(T1,T2);
disp('-----------------------------')
disp(' Panjang Suhu')
disp('-----------------------------')
[panjang, suhu]

0 komentar:
Post a Comment