Öncelikle ben sadece Matlab'da bir başlangıç yaptığım için program optimize edilmedi. Şimdilik sadece çalışmasını sağlamak istiyorum. Bu sınır şartlarında bir 3D ısı problemidir. Kuzeyden sabit sıcaklık, alttan izole edilmiş ve aynı h ile 4 çevreleyen tarafta konveksiyona sahibiz. Çalıştırdığımda bana doğru birleşmeleri sağlamaz. Analitik ve solidworks yaklaşımlarına sahibim, bu yüzden Matlab’da elde ettiğim sonuçların yanlış olduğunu biliyorum. Birisi bana tavsiyede bulunabilir misiniz lütfen. Yardımın takdire değer.
==============================
%===Solution of the problem of 2D in the bookmarks:Case2a=====
clc;
close all;
clear all;
DX=0.01; % step size
DY=0.01;
DZ=0.01;
Lx= 0.6; %length along x-axis in cmn
Ly=0.4; %length along y-axis
Lz=0.3; %length along z-axis
Nx=Lx/DX+1; %Number of nodes along x-axis
Nx=floor(Nx)+1; % I shouldn't add 1. I should get it automatically
Ny=(Ly/DY+1); %Number of nodes along y-axis
Ny=floor(Ny);
Nz=(Lz/DZ+1);
Nz=floor(Nz)+1;
K=2;
h=500;
T_inf=20;
X=0:DX:Lx;
Y=0:DY:Ly;
Z=0:DZ:Lz;
T=zeros(Nx,Ny,Nz);
% I added imaginary nodes outside then it gave me numbers
tol=1;
s=0; %s=2000 could be set as the maximum number of allowed iteration for
example
err=1;
T_old=1;
while err >=tol %&& s<2001
s=s+1;
%------------boundary conditions------------------------------------------
%====North temperature (Boundary)
T(:,Ny,:)=90;
%===South Boundary "insulation" ==============
for k=1:Nz
for i=2:Nx-1
T(i,1,k)=0.25*[2*T(i,2,k)+T(i-1,1,k)+T(i+1,1,k)];
%T(i-1,1,k)=4* T(i,1,k)-2*T(i,2,k)-T(i+1,1,k);
end
end
%================Back Boundary "Convection" ================
for j=2:Ny-1 %changed
for i=2:Nx-1
T(i,j,1)=0.5*K/(h*DX+2*K)*[2*T(i,j,2)+T(i-1,j,1)+T(i+1,j,1)+2*h*DX*T_inf/K];
end
end
%================Front Boundary "Convection" ================
for j=2:Ny-1
for i=2:Nx-1
T(i,j,Nz)=0.5*K/(h*DX+2*K)*[2*T(i,j,Nz-1)+T(i-1,j,Nz-1)+T(i+1,j,Nz-1)+2*h*DX*T_inf/K];
end
end
%================West Boundary "Convection" ================
for j=2:Ny-1
for k=2:Nz-1
T(1,j,k)=0.5*K/(h*DX+2*K)*[2*T(2,j,k)+T(1,j,k-1)+T(1,j,k+1)+2*h*DX*T_inf/K];
end
end
%================East Boundary "Convection" ================
for j=2:Ny-1
for k=2:Nz-1
T(Nx,j,k)=0.5*K/(h*DX+2*K)*[2*T(Nx-1,j,k)+T(Nx,j,k-1)+T(Nx,j,k+1)+2*h*DX*T_inf/K];
end
end
% The interior nodes
for k = 2:Nz-1 % I think it needs to go loop by loop(pairs of loops)
for j = 2:Ny-1
for i=2:Nx-1
T(i,j,k)=0.25*(T(i-1,j)+T(i+1,j)+T(i,j-1)+T(i,j+1));
end
end
end
err=max(max(abs(T-T_old)));
T_old=T;
end
T=rot90(T)
belki daha fazla bir stackoverflow.com sorusu, ancak "lütfen kodumu hata ayıkla, işe yaramazsa" da yardım etmenin iyi bir yolu olmadığını unutmayın.
—
Ajan
Aslında bu soru ilk önce orada sorulmuştu ve onlar da beni bu bölüme yönlendirenlerdi.
—
Rachid Brah
peki, bu etki için sadece bir yorumunuz vardı. stackoverflow.com/q/47512200/1004168 Yaşadığınız sorunun açıklamasını yapmadığınız için nereye gittiği tam olarak belli değil.
—
ajan
Yukarıdaki kodu çalıştırdığımda aldığım 3D matrisi, küpün dört dikey kenarında bana 0 veriyor. Bu benim sorunum
—
Rachid Brah 28:17
Bence compsci.stackexchange.com , sorunuz için daha iyi bir eşleşme olabilir.
—
Peter