Saya mencoba menyelesaikan masalah perpindahan panas 2D (Saya seorang pemula MATLAB). Saya telah menulis kode di bawah ini, dan ketika saya menjalankannya tidak berhenti. Saya mencoba memasukkan kondisi konvergensi menggunakan kesalahan (err), tetapi setiap kali saya menghentikan program, saya selalu menemukan bahwa kesalahan saya adalah 150. Dapatkah seseorang membantu menyesuaikan kode ini untuk mendapatkan pemeriksaan konvergensi?

(Omong-omong, proyek saya adalah proyek 3D, saya hanya mencoba kasing 2D kemudian setelah saya berhasil, saya akan mengembangkannya).

%===Solution of the problem of 2D in the bookmarks:Case2a=====

close all;
clear all;
clc;

DX=3; % step size
DY=3; 
Lx= 60; %length along x-axis in cmn
Ly=30;   %length along y-axis
m=Lx/DX+1;    %Number of nodes along x-axis
n=(Ly/DY+1);    %Number of nodes along y-axis
n=floor(n);

k=2;
h=500;
T_inf=20;

X=0:DX:Lx;
Y=0:DY:Ly;
T=zeros(m,n);

tol=1;
s=0; %s=2000 could be set as the maximum number of allowed iteration for example
err=1; 
T_old=10;

while err >=tol && s<2001
s=s+1;

%--boundary conditions----------------------------------------------------

T(1,:)=160;     %west
T(m,:)=100;    %east

%===South Boundary "insulation" ==============
for i=2:m-1
   T(i,1)=0.25*[2*T(i,2)+T(i-1,1)+T(i+1,1)];
end
%================North Boundary "Convection" ================
for i=2:m-1
  T(i,n)=0.5*k/(h*DX+2*k)*[2*T(i,n-1)+T(i-1,n)+T(i+1,n)+2*h*DX*T_inf/k];
end

for i = 2:m-1
    for j = 2:n-1
    T(i,j)=0.25*(T(i-1,j)+T(i+1,j)+T(i,j-1)+T(i,j+1));
    end
end
err=max(max(abs(T-T_old)));
end

%T=rot90(T)
1
Rachid Brah 27 November 2017, 00:41

1 menjawab

Jawaban Terbaik

Anda mungkin harus menetapkan T ke T_old di dalam loop Anda, setelah menghitung err.

2
Cris Luengo 26 November 2017, 23:40