1、二维稳态导热的数值计算2.1物理问题一矩形区域,其边长L=W=1,假设区域内无内热源,导热系数为常数,三个边温度为T1=0,一个边温度为T2=1,求该矩形区域内的温度分布。2.2 数学描述对上述问题的微分方程及其边界条件为: x=0,T=T1=0 x=1,T=T1=0 y=0,T=T1=0 y=1,T=T2=1该问题的解析解:2.3数值离散2.3.1区域离散 区域离散x方向总节点数为N,y方向总节点数为M,区域内任一节点用I,j表示。2.3.2方程的离散对于图中所有的内部节点方程可写为:用I,j节点的二阶中心差分代替上式中的二阶导数,得:上式整理成迭代形式:(i=2,3,N-1),(j=2,3
2、,M-1)补充四个边界上的第一类边界条件得: (j=1,2,3,M) (j=1,2,3,M) (i=1,2,3,N) (i=1,2,3,N)传热学C程序源之二维稳态导热的数值计算#include#include#define N 10#define M 10main()char s;int i,j,l;float cha,x,y;float tNM,aNM; /*打印出题目*/printf(ttt二维稳态导热问题tt);printf(ntttttt-何鹏举n);printf(n题目:补充材料练习题二n);printf(n矩形区域,边长L=W=1,假设区域内无内热源,导热系数为常熟,三个边温度为
3、T1=0,一个边温度为T2=1,求该矩形区域内的温度分布。n);printf(n是否要手动对温度场赋予初值?(Y/N):);scanf(%c,&s);if(s=y|s=Y)/*手动赋予温度初场*/ printf(n请首先假定一个温度场的初始分布,即给出各节点的温度初值(一行一行进行):n); for(i=0;iN;i+) for(j=0;jM;j+) scanf(%f,&tij);else/*自动赋予温度初场*/for(i=0;iN;i+)for(j=0;jM;j+)tij=0.5;/*四个边界上的第一类边界条件*/for(j=0;jM;j+)t0j=0;tM-1j=0;for(i=0;i0.
4、0001)for(i=0;iN;i+)for(j=0;jM;j+)aij=tij;for(i=1;iN-1;i+)for(j=1;jM-1;j+)tij=0.5*y*y*(ti+1j+ti-1j)/(x*x+y*y)+0.5*x*x*(tij+1+tij-1)/(x*x+y*y);cha=0;for(i=0;iN;i+)for(j=0;j=0;j-)for(i=0;iN;i+)printf(%4.3f ,tij);l=l+1;if(l=N)printf(n);l=0;/*为了是生成的exe文件结果算的后不会立即退出,方便观看*/getchar();getchar();/*其中第一个getchar读取了回车键,第二个getchar读取任意键*/