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

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

Program Matlab Persamaan Transport 2 Dimensi jika diketahui koefisien afeksi (laju) dan Koefisien difusi pada arah x dan y


clc;
clear;
disp('----------------------------------------------------')
disp('Program Persamaan Transport 2 Dimensi non-dimesional')
disp(' dengan koefisien afeksi(laju) dan koefisien difusi')
disp('----------------------------------------------------')
disp('syarat awal  : f(x)=sin(x)*cos(y)')
disp('syarat batas : u(x,0,t)= 0')
disp('               u(x,1,t)= 0')
disp('               u(0,y,t)= 0')
disp('               u(1,y,t)= 1')
disp(' ')
%% Definisi variabel Non-Dimensional

X=1; %panjang arah x 
Y=1; %lebar arah y
T=1; %waktu akhir

%% Input Nilai Konstanta dan Banyaknya Segmen

disp('Input nilai koefisien afeksi dan koefisien difusi')
flag=0;
while flag==0
    alpha_x=input('Masukkan koefisien afeksi(laju) alpha(x) = ');
    if alpha_x<=0
        disp('Koefisien alpha(x) harus positif')
    else
        break
    end
end

while flag==0
    alpha_y=input('Masukkan koefisien afeksi(laju) alpha(y) = ');
    if alpha_y<=0
        disp('Koefisien alpha(y) harus positif')
    else
        break
    end
end

while flag==0
    beta_x=input('Masukkan koefisien difusi beta(x) = ');
    if beta_x<=0
        disp('Koefisien beta(x) harus positif')
    else
        break
    end
end

while flag==0
    beta_y=input('Masukkan koefisien difusi beta(y) = ');
    if beta_y<=0
        disp('Koefisien beta(y) harus positif')
    else
        break
    end
end

disp(' ')
disp('Input banyaknya segmen')
while flag==0
    k=input('Masukkan banyaknya segmen pada x dan y = ');
    if k<=0 || ceil(k)-k>0
        disp('Banyaknya segmen harus bulat positif')
    else
        break
    end
end

while flag==0
    maxn=input('Masukkan banyaknya segmen waktu = ');
    if maxn<=0 || ceil(maxn)-maxn>0
        disp('Banyaknya segmen waktu harus bulat positif')
    else
        break
    end
end

dx=X/k;
dy=Y/k;
dt=T/maxn;

%% Syarat Kestabilan

P=beta_x*dt/dx^2;
Q=beta_y*dt/dy^2;
R=alpha_x*dt/dx;
S=alpha_y*dt/dy;
disp(' ')
if P+Q+R+S<=1/2
    disp('Kondisi Kestabilan : Stabil')
else
    disp('Kondisi Kestabilan : Tidak stabil')
end

%% Grid Komputasi

for j=1:k+1
    y(j)=(j-1)*dy;
    for i=1:k+1
        x(i)=(i-1)*dx;
        u(i,j,1)=sin(pi*x(i))*cos(pi*y(j)); %syarat awal
    end
end

for n=1:maxn+1;
    waktu(n)=(n-1)*dt;
    for j=1:k+1
        for i=1:k+1
            u(1,j,n)=0; %syarat batas
            u(i,1,n)=0;
            u(i,k+1,n)=0;
            u(k+1,j,n)=1;
        end
    end
end

%% Penyelesaian dengan metode FTCS

for n=1:maxn
    for j=2:k
        for i=2:k
            u(i,j,n+1)=(P+R)*u(i+1,j,n)+(Q+S)*u(i,j+1,n)+P*u(i-1,j,n)+Q*u(i,j-1,n)+(1-2*P-2*Q-R-S)*u(i,j,n);
        end
    end
end

%% output plot tiga dimensi keadaan panas pada akhir waktu

mesh(x,y,u(:,:,maxn)')
xlabel('Panjang')
ylabel('Lebar')
zlabel('Suhu') 
title('Grafik Penyebaran Panas Persamaan Transport 2 Dimensi')

0 komentar:

Post a Comment