エカつきのブログ = Eka tsuki no blog

I just learn to be good one...^_~,

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