我想为一个半球应用热传递(热传导和对流)。它是球坐标中的瞬态均匀传热。没有热量产生。半球的边界条件是在Tinitial = 20度室温时开始的。外部环境温度为-30度。你可以想象半球是一种固体材料。此外,它是一个非线性模型,因为热导率在材料冻结后会发生变化,这会改变温度分布。
我想在一定时间内找到这种固体的温度曲线,直到中心温度达到-30度。
在这种情况下,温度取决于 3 个参数:T(r,theta,t)。半径、角度和时间。
1/α(∂T(r,θ,t))/∂t =1/r^2*∂/∂r(r^2(∂T(r,θ,t))/∂r)+ 1/ (r^2*sinθ)∂/∂θ(sinθ(∂T(r,θ,t))/∂θ)
我使用 matlab 应用了有限差分法,但是程序不会为半球的内部节点计算任何东西,而只是给我初始温度值(这里告诉了)。您可以看到我用于内部节点的一些脚本。
% initial conditions
Tair = -30.0; % Temperature of air
Tin = 21;
% setting initial values for grid
for i=1:(nodes)
for j=1:(nodes)
Told(i,j) = Tin;
Tnew(i,j) = Tin;
frozen(i) = 0;
latent(i) = Qs*mass(i)*Water/dt;
k(i) = 0.5;
cp(i) = cw;
W(i) = Water;
l(i) = 0;
S(i) = 1-Water;
end
end
%Simulation conditions
J = 9; % No. of space steps
nodes = J+1; % Number of nodes along radius or theta direction
dt =0.1;
t = 0; % time index on start
tmax = 7000; % Time simmulation is supposed to run
R = d/2;
dr = (d/2)/J; % space steps in r direction
y = pi/2; % (theta) for hemisphere
dy = (pi/2)/J; % space steps in Theta direction
% Top surface condition for hemisphere
i=nodes;
for j=1:1:(nodes-1)
Qcd_ot(i,j) = ((k(i)+ k(i-1))/2)*A(i-1)*(( Told(i,j)-Told(i-1,j))/(dr)); % heat conduction out of nod
Qcv(i,j) = h*(Tair-Told(i,j))*A(i); % heat transfer through convectioin on surface
Tnew(i,j) = ((Qcv(i,j)-Qcd_ot(i,j))/(mass(i)*cp(i))/2)*dt + Told(i,j);
end %end of for loop
% Temperature profile for inner nodes
for i=2:1:(nodes-1)
for j=2:1:(nodes-1)
Qcd_in(i,j)= ((k(i)+ k(i+1))/2)*A(i) *((2/R)*(( Told(i+1,j)-Told(i,j))/(2*dr)) + ((Told(i+1,j)-2*Told(i,j)+Told(i-1,j))/(dr^2)) + ((cot(y)/(R^2))*((Told(i,j+1)-Told(i,j))/(2*dy))) + (1/(R^2))*(Told(i,j+1)-2*Told(i,j)+ Told(i,j-1))/(dy^2));
Qcd_out(i,j)= ((k(i)+ k(i-1))/2)*A(i-1)*((2/R)*(( Told(i,j)-Told(i-1,j))/(2*dr)) +((Told(i+1,j)-2*Told(i,j)+Told(i-1,j))/(dr^2)) + ((cot(y)/(R^2))*((Told(i,j)-Told(i,j-1))/(2*dy))) + (1/(R^2))*(Told(i,j+1)-2*Told(i,j)+ Told(i,j-1))/(dy^2));
Tnew(i,j) = (Qcd_in(i,j)-Qcd_out(i,j))/(mass(i)*cp(i)))*dt + Told(i,j);
end
end
%bottom of the hemisphere solid
Tnew(:,nodes)=-30;
Told=Tnew;
t=t+dt;
编辑 *谢谢,现在脚本正在运行和计算。我可以看到模型系统的温度曲线。
但是,我想为此半球温度曲线绘制 2D 或 3D 图。另外,如果可能的话,我想在特定时间运行温度变化动画。我用于模拟和编写文件的代码是
t=0;
tmax=7000;
...................
.....................
ss=0; % index for printouts
%start simulation
while t<tmax
ss=ss+1;
.............
.................
................
if ss==2000
dlmwrite('d:\Results_for_model.txt',Tnew,'-append');
ss=0;
end
end % end of while loop
你有什么建议吗?因为在文本文件中,对于 Tnew(i,j) 值,每 10 行后,模型计算下一个 dt 值。因此,结果数据看起来像一团糟,每 10 行后,它会给出下一次值结果。
有没有办法根据特定的行和列来协调编写这个结果(因为否则需要一次又一次地组织大量的数据)?
我想在 3d 图中绘制这个温度分布图,在这种情况下是半球,我有 Tnew(r,theta,t),但我对如何表示这个温度分布图以显示在半球图中感到困惑。我想听听您对此的建议。提前致谢 !!