您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > 汽车理论 > 数值传热二维稳态导热问题及程序
问题:假定一个方形材料100mm*100mm,四边分别为第一、第二、第三类边界条件,无内热源,导热系数为常数,分析该区域内的温度变化。2.求解过程—热平衡法(1)区域离散化对正方形区域进行离散,将该区域划分成不同节点数的不重叠子区域。设置节点时采用内点法。(2)控制方程离散化依据题意,二维稳态无源项的纯导热问题的控制方程如式(1).…...……………….(1)扩散项——中心差分,如式(2)(3)……………………….(2)……………………….(3)将(2)、(3)、(4)式代入方程(1)可得到离散后的代数方程(5)…..…….(4)因为采用正方形的网格,即△x=△y,且无内热源(qV=0),则式(4)简化为(3)边界条件处理均为第一类边界条件,依据题意,设定边界条件如下:x=0时,t=800x=1时,t=600y=0时,t=200y=1时,t=1004.结果1.第一类边界条件下的温度分布:输入四个边界温度分别为800k600k200k100k节点数为11*21时候的温度分布图节点为21*21时候的温度分布图2,边界为第二类边界时的结果边界条件:X=0,t=10yY=0,t=10xX=100,t=10y+10(M-1)Y=100,t=10x+10(N-1)结果:3,边界为第一、第二类边界时:X=0,t=10yY=0,t=10xX=100,t=100Y=100,t=2003.程序//二维稳态导热数值计算程序//作者:石明//日期:2012年12月25日//功能:得出四边第一类边界条件下的长方形的温度分布#includestdio.h#includestdlib.h#includemath.h#defineM10#defineN20voidmain(){/****************键盘输入边界条件**************/floatTleft,Tright,Tdown,Ttop;printf(请输入长方形的四边温度条件TleftTrightTdownTtop\n);scanf(%f%f%f%f,&Tleft,&Tright,&Tdown,&Ttop);/****************二维计算区域离散**************/floatT[M][N];floatTcopy[M][N];//定义迭代对比矩阵inti,j,k;/*****************边界条件设置**************/for(i=1;iM-1;i++){T[i][0]=Tcopy[i][0]=Tleft;T[i][N-1]=Tcopy[i][N-1]=Tright;}for(j=0;jN;j++){T[0][j]=Tcopy[0][j]=Ttop;T[M-1][j]=Tcopy[M-1][j]=Tdown;}/*****************初始化**************/for(i=1;iM-1;i++)for(j=1;jN-1;j++){T[i][j]=Tcopy[i][j]=0.25*(Tleft+Tright+Tdown+Ttop);}/*****************迭代计算**************/floatdif[M][N];floatmax,temp;for(i=0;iM;i++){for(j=0;jN;j++)dif[i][j]=1.0;}floate=0.001;//设置迭代误差限;for(k=1;k100;k++)//设置最大迭代次数;{for(i=1;iM-1;i++)//完成一次迭代;for(j=1;jN-1;j++){T[i][j]=0.25*(T[i-1][j]+T[i+1][j]+T[i][j-1]+T[i][j+1]);}for(i=1;iM-1;i++)//求相邻两迭代温度值的差值;for(j=1;jN-1;j++){dif[i][j]=fabs(T[i][j]-Tcopy[i][j]);}max=dif[1][1];for(i=1;iM-1;i++)//求相邻两迭代温度值的最大差值;for(j=1;jN-1;j++){if(maxdif[i][j])max=dif[i][j];}if(max=e)break;for(i=1;iM-1;i++)for(j=1;jN-1;j++){Tcopy[i][j]=T[i][j];}}for(j=0;jN;j++)for(i=0;iM;i++){printf(%5.2f,T[i][j]);if((i+1)%M==0)printf(\n);}system(pause);}第二类边界条件的温度分布#includestdio.h#includestdlib.h#includemath.h#defineM11#defineN21voidmain(){/****************二维计算区域离散**************/floatTleft,Tright,Tdown,Ttop;floatT[M][N];floatTcopy[M][N];//定义迭代对比矩阵inti,j,k;/*****************边界条件设置**************/for(i=1;iM-1;i++){T[i][0]=Tcopy[i][0]=Tleft=10*i;T[i][N-1]=Tcopy[i][N-1]=Tright=10*i+10*N-10;}for(j=0;jN;j++){T[0][j]=Tcopy[0][j]=Ttop=10*j;T[M-1][j]=Tcopy[M-1][j]=Tdown=10*j+10*M-10;}/*****************初始化**************/for(i=1;iM-1;i++)for(j=1;jN-1;j++){T[i][j]=Tcopy[i][j]=0.25*(Tleft+Tright+Ttop+Tdown);}/*****************迭代计算**************/floatdif[M][N];floatmax,temp;for(i=0;iM;i++){for(j=0;jN;j++)dif[i][j]=1.0;}floate=0.001;//设置迭代误差限;for(k=1;k100;k++)//设置最大迭代次数;{for(i=1;iM-1;i++)//完成一次迭代;for(j=1;jN-1;j++){T[i][j]=0.25*(T[i-1][j]+T[i+1][j]+T[i][j-1]+T[i][j+1]);}for(i=1;iM-1;i++)//求相邻两迭代温度值的差值;for(j=1;jN-1;j++){dif[i][j]=fabs(T[i][j]-Tcopy[i][j]);}max=dif[1][1];for(i=1;iM-1;i++)//求相邻两迭代温度值的最大差值;for(j=1;jN-1;j++){if(maxdif[i][j])max=dif[i][j];}if(max=e)break;for(i=1;iM-1;i++)for(j=1;jN-1;j++){Tcopy[i][j]=T[i][j];}}for(j=0;jN;j++)for(i=0;iM;i++){printf(%5.2f,T[i][j]);if((i+1)%M==0)printf(\n);}system(pause);}第一第二类边界:#includestdio.h#includestdlib.h#includemath.h#defineM11#defineN21voidmain(){/****************二维计算区域离散**************/floatTleft,Tright,Tdown,Ttop;floatT[M][N];floatTcopy[M][N];//定义迭代对比矩阵inti,j,k;/*****************边界条件设置**************/for(i=1;iM-1;i++){T[i][0]=Tcopy[i][0]=Tleft=10*i;T[i][N-1]=Tcopy[i][N-1]=Tright=100;}for(j=0;jN;j++){T[0][j]=Tcopy[0][j]=Ttop=10*j;T[M-1][j]=Tcopy[M-1][j]=Tdown=200;}/*****************初始化**************/for(i=1;iM-1;i++)for(j=1;jN-1;j++){T[i][j]=Tcopy[i][j]=0.25*(Tleft+Tright+Ttop+Tdown);}/*****************迭代计算**************/floatdif[M][N];floatmax,temp;for(i=0;iM;i++){for(j=0;jN;j++)dif[i][j]=1.0;}floate=0.001;//设置迭代误差限;for(k=1;k100;k++)//设置最大迭代次数;{for(i=1;iM-1;i++)//完成一次迭代;for(j=1;jN-1;j++){T[i][j]=0.25*(T[i-1][j]+T[i+1][j]+T[i][j-1]+T[i][j+1]);}for(i=1;iM-1;i++)//求相邻两迭代温度值的差值;for(j=1;jN-1;j++){dif[i][j]=fabs(T[i][j]-Tcopy[i][j]);}max=dif[1][1];for(i=1;iM-1;i++)//求相邻两迭代温度值的最大差值;for(j=1;jN-1;j++){if(maxdif[i][j])max=dif[i][j];}if(max=e)break;for(i=1;iM-1;i++)for(j=1;jN-1;j++){Tcopy[i][j]=T[i][j];}}for(j=0;jN;j++)for(i=0;iM;i++){printf(%5.2f,T[i][j]);if((i+1)%M==0)printf(\n);}system(pause);}
本文标题:数值传热二维稳态导热问题及程序
链接地址:https://www.777doc.com/doc-2646422 .html