问题:假定方形材料100mm*100mm四边分第第二第三类边界条件热源导热系数常数分析该区域温度变化
2求解程—热衡法
(1)区域离散化
正方形区域进行离散该区域划分成节点数重叠子区域设置节点时采点法
(2)控制方程离散化
题意二维稳态源项纯导热问题控制方程式(1)
…………………(1)
扩散项——中心差分式(2)(3)
………………………(2)
………………………(3)
(2)(3)(4)式代入方程(1)离散代数方程(5)
………(4)
采正方形网格△x=△y 热源(qV=0) 式(4 ) 简化
(3)边界条件处理
均第类边界条件题意设定边界条件:
x0时t800
x1时t600
y0时t200
y1时t100
4结果
1第类边界条件温度分布:
输入四边界温度分 800k 600k 200k 100k
节点数11*21时候温度分布图
节点21*21时候温度分布图
2边界第二类边界时结果
边界条件:
X0t10y
Y0t10x
X100t10y+10(M1)
Y100t10x+10(N1)
结果:
3边界第第二类边界时:
X0t10y
Y0t10x
X100t100
Y100t200
3程序
二维稳态导热数值计算程序
作者:石明
日期:2012年12月25日
功:出四边第类边界条件长方形温度分布
#include
#include
#include
#define M 10
#define N 20
void main()
{
****************键盘输入边界条件**************
float Tleft Tright Tdown Ttop
printf(请输入长方形四边温度条件 Tleft Tright Tdown Ttop\n)
scanf(ffff&Tleft&Tright&Tdown&Ttop)
****************二维计算区域离散**************
float T[M][N]
float Tcopy[M][N] 定义迭代矩阵
int ijk
*****************边界条件设置**************
for(i 1i < M1i++)
{
T[i][0] Tcopy[i][0] Tleft
T[i][N1] Tcopy[i][N1] Tright
}
for(j 0j < Nj++)
{
T[0][j] Tcopy[0][j] Ttop
T[M1][j] Tcopy[M1][j] Tdown
}
*****************初始化**************
for(i 1i < M1i++)
for(j 1j < N1j++)
{
T[i][j] Tcopy[i][j] 025 * ( Tleft + Tright + Tdown +Ttop )
}
*****************迭代计算**************
float dif[M][N]
float maxtemp
for(i 0i < Mi++)
{
for(j 0j < Nj++)
dif[i][j] 10
}
float e 0001 设置迭代误差限
for(k1k < 100k++) 设置迭代次数
{
for(i 1i < M1i++) 完成次迭代
for(j 1j < N1j++)
{
T[i][j] 025 * ( T[i1][j] + T[i+1][j] + T[i][j1] + T[i][j+1] )
}
for(i 1i < M1i++) 求相邻两迭代温度值差值
for(j 1j < N1j++)
{
dif[i][j] fabs(T[i][j] Tcopy[i][j])
}
max dif[1][1]
for(i 1i < M1i++) 求相邻两迭代温度值差值
for(j 1j < N1j++)
{
if(max < dif[i][j])
max dif[i][j]
}
if(max < e) break
for(i 1i < M1i++)
for(j 1j < N1j++)
{
Tcopy[i][j] T[i][j]
}
}
for(j 0j < Nj++)
for(i 0i < Mi++)
{
printf(52f T[i][j])
if((i+1)M0) printf(\n)
}
system(pause)
}
第二类边界条件温度分布
#include
#include
#include
#define M 11
#define N 21
void main()
{
****************二维计算区域离散**************
float Tleft Tright Tdown Ttop
float T[M][N]
float Tcopy[M][N] 定义迭代矩阵
int ijk
*****************边界条件设置**************
for(i 1i < M1i++)
{
T[i][0] Tcopy[i][0] Tleft10*i
T[i][N1] Tcopy[i][N1] Tright10*i+10*N10
}
for(j 0j < Nj++)
{
T[0][j] Tcopy[0][j] Ttop10*j
T[M1][j] Tcopy[M1][j] Tdown10*j+10*M10
}
*****************初始化**************
for(i 1i < M1i++)
for(j 1j < N1j++)
{
T[i][j] Tcopy[i][j] 025 * ( Tleft + Tright + Ttop + Tdown )
}
*****************迭代计算**************
float dif[M][N]
float maxtemp
for(i 0i < Mi++)
{
for(j 0j < Nj++)
dif[i][j] 10
}
float e 0001 设置迭代误差限
for(k1k < 100k++) 设置迭代次数
{
for(i 1i < M1i++) 完成次迭代
for(j 1j < N1j++)
{
T[i][j] 025 * ( T[i1][j] + T[i+1][j] + T[i][j1] + T[i][j+1] )
}
for(i 1i < M1i++) 求相邻两迭代温度值差值
for(j 1j < N1j++)
{
dif[i][j] fabs(T[i][j] Tcopy[i][j])
}
max dif[1][1]
for(i 1i < M1i++) 求相邻两迭代温度值差值
for(j 1j < N1j++)
{
if(max < dif[i][j])
max dif[i][j]
}
if(max < e) break
for(i 1i < M1i++)
for(j 1j < N1j++)
{
Tcopy[i][j] T[i][j]
}
}
for(j 0j < Nj++)
for(i 0i < Mi++)
{
printf(52f T[i][j])
if((i+1)M0) printf(\n)
}
system(pause)
}
第第二类边界:
#include
#include
#include
#define M 11
#define N 21
void main()
{
****************二维计算区域离散**************
float Tleft Tright Tdown Ttop
float T[M][N]
float Tcopy[M][N] 定义迭代矩阵
int ijk
*****************边界条件设置**************
for(i 1i < M1i++)
{
T[i][0] Tcopy[i][0] Tleft10*i
T[i][N1] Tcopy[i][N1] Tright100
}
for(j 0j < Nj++)
{
T[0][j] Tcopy[0][j] Ttop10*j
T[M1][j] Tcopy[M1][j] Tdown200
}
*****************初始化**************
for(i 1i < M1i++)
for(j 1j < N1j++)
{
T[i][j] Tcopy[i][j] 025 * ( Tleft + Tright + Ttop + Tdown )
}
*****************迭代计算**************
float dif[M][N]
float maxtemp
for(i 0i < Mi++)
{
for(j 0j < Nj++)
dif[i][j] 10
}
float e 0001 设置迭代误差限
for(k1k < 100k++) 设置迭代次数
{
for(i 1i < M1i++) 完成次迭代
for(j 1j < N1j++)
{
T[i][j] 025 * ( T[i1][j] + T[i+1][j] + T[i][j1] + T[i][j+1] )
}
for(i 1i < M1i++) 求相邻两迭代温度值差值
for(j 1j < N1j++)
{
dif[i][j] fabs(T[i][j] Tcopy[i][j])
}
max dif[1][1]
for(i 1i < M1i++) 求相邻两迭代温度值差值
for(j 1j < N1j++)
{
if(max < dif[i][j])
max dif[i][j]
}
if(max < e) break
for(i 1i < M1i++)
for(j 1j < N1j++)
{
Tcopy[i][j] T[i][j]
}
}
for(j 0j < Nj++)
for(i 0i < Mi++)
{
printf(52f T[i][j])
if((i+1)M0) printf(\n)
}
system(pause)
}
文档香网(httpswwwxiangdangnet)户传
《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
该内容是文档的文本内容,更好的格式请下载文档