欢迎光临散文网 会员登陆 & 注册

1维非稳态导热隐式求解的matlab代码

2023-07-01 13:14 作者:陆如冰  | 我要投稿

clc;

clear;

tic

format longG

rho=100;

cp=1000;

k=10;

T0=3;

TW=3;

TE=5;

s=10;

t=60000;

x=3;

dt=100;

dx=0.1;

sizet=t/dt;

sizex=x/dx;

Tmatrix=zeros(sizet,sizex);

for i=1

   Tmatrix(i,:)=T0;

end

%我想用TDMA解方程组,所以需要一堆东西去记录ai1

%ap0始终不变,可以作为源项之一纳入b向量

%ap1、ae1和aw1不随时间变化但随坐标变化,所以应该以向量形式给出:

%ap1=zeros(1,)

%隐格式算一算

for i=2:sizet

   %设置一个sizex*sizex的系数矩阵A,用于存放ai1

   A=zeros(sizex,sizex);

   %结果向量b

   b=zeros(sizex,1);

   for j=1:1

       aw1=2*k/dx;%均分网格,dxe=dxw=dx;

       ae1=k/dx;

       ap0=rho*cp*dx/dt;

       ap1=ap0+ae1+aw1;

       A(j,j)=ap1;

       A(j,j+1)=-ae1;

       b(j)=s*dx+ap0*Tmatrix(i-1,j)+aw1*TW;

   end

   for j=2:sizex-1

       ap0=rho*cp*dx/dt;

       aw1=k/dx;

       ae1=k/dx;

       ap1=ap0+aw1+ae1;

       A(j,j-1)=-aw1;

       A(j,j)=ap1;

       A(j,j+1)=-ae1;

       b(j)=s*dx+ap0*Tmatrix(i-1,j);

   end

   for j=sizex:sizex

       ap0=rho*cp*dx/dt;

       aw1=k/dx;

       ae1=2*k/dx;

       ap1=ap0+aw1+ae1;

       %ap1*Tmatrix(i,j)-aw1*Tmatrix(i,j-1)=ap0*Tmatrix(i-1,j)+s*dx+ae1*TE;

       A(j,j-1)=-aw1;

       A(j,j)=ap1;

       b(j)=s*dx+ap0*Tmatrix(i-1,j)+ae1*TE;

   end

   A;

   T1=A\b;

   Tmatrix(i,:)=T1';

end

   Ans=Tmatrix(sizet,:)'

   toc


1维非稳态导热隐式求解的matlab代码的评论 (共 条)

分享到微博请遵守国家法律