- 积分
- 1
- 注册时间
- 2008-12-19
- 仿真币
-
- 最后登录
- 1970-1-1
|
楼主 |
发表于 2009-5-7 22:16:11
|
显示全部楼层
来自 河南郑州
本帖最后由 messenger 于 2009-11-15 12:41 编辑
非常感谢,有这么多人帮忙,很有启发。附上matlab代码,大家可以试试
- % 二维L型区域有源项导热计算
- % 两边第三类边界条件,对称面绝热条件
- % aP、b表达式中均乘以完整控制容积,
- % 故边界节点源项应乘上其各自非完整度0.25、0.5、0.75
- clear;
- err=0.0001;
- deltay=0.1; deltax=0.1;
- dy=0.05; dx=0.05;
- M=45; N=30;
- lamda=50;
- T=zeros(N+3,M+3);
- Sc=zeros(N+1,M+1);
- Sp=zeros(N+1,M+1);
- Spad=-20*deltay/0.01; % 外边界 第三类 h=20
- Scad=20*25*deltay/0.01; % t=25 deltax=deltay
- % Spad=-10^30; % 外边界 第一类 t=20
- % Scad=10^30*20;
- Sc(2:N,1)=Sc(2:N,1)+Scad*ones(N-1,1);
- Sp(2:N,1)=Sp(2:N,1)+Spad*ones(N-1,1);
- Sc(N+1,2:M)=Sc(N+1,2:M)+Scad*ones(1,M-1);
- Sp(N+1,2:M)=Sp(N+1,2:M)+Spad*ones(1,M-1);
- Spad=-20*deltax/0.01; % 内边界 第三类 h=20
- Scad=20*200*deltax/0.01; % t=200 deltax=deltay
- % Spad=-10^30; % 内边界 第一类 t=120
- % Scad=10^30*120;
- Sc(2:10,31)=Sc(2:10,31)+Scad*ones(9,1);
- Sp(2:10,31)=Sp(2:10,31)+Spad*ones(9,1);
- Sc(11,32:M)=Sc(11,32:M)+Scad*ones(1,M-31);
- Sp(11,32:M)=Sp(11,32:M)+Spad*ones(1,M-31);
- Spad=-20*dx/0.01;
- Scad1=20*25*dy/0.01;
- Scad2=20*200*dx/0.01;
- % Scad1=10^30*20;
- % Scad2=10^30*120;
- Sc(1,1)=Sc(1,1)+Scad1;
- Sp(1,1)=Sp(1,1)+Spad;
- Sc(1,31)=Sc(1,31)+Scad2;
- Sp(1,31)=Sp(1,31)+Spad;
- Sc(11,31)=Sc(11,31)+2*Scad2;
- Sp(11,31)=Sp(11,31)+2*Spad;
- Sc(11,M+1)=Sc(11,M+1)+Scad2;
- Sp(11,M+1)=Sp(11,M+1)+Spad;
- Sc(N+1,1)=Sc(N+1,1)+2*Scad1;
- Sp(N+1,1)=Sp(N+1,1)+2*Spad;
- Sc(N+1,M+1)=Sc(N+1,M+1)+Scad1;
- Sp(N+1,M+1)=Sp(N+1,M+1)+Spad;
- while 1
- T0=T;
- for i=1:31
- for j=1:31
- if i==1
- aS=0.0;
- else
- aS=lamda;
- end
- if j==1
- aW=0.0;
- else
- aW=lamda;
- end
- if i==31
- aN=0.0;
- else
- aN=lamda;
- end
- if j==31 && i<11
- aE=0.0;
- else
- aE=lamda;
- end
- aP=aE+aW+aN+aS-Sp(i,j)*0.01;
- b=Sc(i,j)*0.01;
- T(i+1,j+1)=(aE*T(i+1,j+2)+aW*T(i+1,j)+aN*T(i+2,j+1)+...
- aS*T(i,j+1)+b)/aP;
- end
- end
- for j=32:M+1
- for i=11:N+1
- if i==11
- aS=0.0;
- else
- aS=lamda;
- end
- if i==N+1
- aN=0.0;
- else
- aN=lamda;
- end
- if j==M+1
- aE=0.0;
- else
- aE=lamda;
- end
- aP=aE+aW+aN+aS-Sp(i,j)*0.01;
- b=Sc(i,j)*0.01;
- T(i+1,j+1)=(aE*T(i+1,j+2)+aW*T(i+1,j)+aN*T(i+2,j+1)+...
- aS*T(i,j+1)+b)/aP;
- end
- end
- if norm(T-T0,inf) < err
- break
- end
- end
- clf;
- [X,Y]=meshgrid(0:0.1:4.5,0:0.1:3.0);
- [C,h,CF]=contourf(X,Y,T(2:N+2,2:M+2));
- clabel(C,h)
复制代码
最后需要改动下,我copy错文件了 |
评分
-
1
查看全部评分
-
|