千万建筑资料下载 →
仅供参考
《现代冶金反应工程学》
重庆大学 冶金工程系 上机实验
金属块表面温度升至800℃,试计算A并采用不同
#include<stdio.h>
#define M 81
#define N 101
int main()
{
二维非稳态导热问题\t\t");
printf("\n\t\t\t\t\t\t-----欧阳冲 20142873\n");
printf("请先假定温度场初始温度:");
scanf("%d",&T0);
printf("请输入边界温度,上,下,左,右:");
scanf("%d,%d,%d,%d,%d",&T1,&T2,&T3,&T4);
for(i=0;i<M;i++)
for(j=0;j<N;j++)
(1)
仅供参考
{A[i][j]=T0;
B[i][j]=T0;
}
for(i=0;i<M;i++)
{A[i][0]=T3;
A[i][N-1]=T4;
B[i][0]=T3;
B[i][N-1]=T4;
}
for(i=0;i<N;i++)
{A[0][i]=T1;
A[M-1][i]=T2;
B[0][i]=T1;
}
x1=1.0/(N-1);
ap=7800*500*x1*y1/t1; an=40*x1/y1; as=40*x1/y1; ae=40*y1/x1; aw=40*y1/x1;if(ap-an-as-ae-aw>=0)
{
while(t<1200)
仅供参考
{for(i=1;i<M-1;i++)
for(j=1;j<N-1;j++)
B[i][j]=(an*A[i+1][j]+as*A[i-1][j]+aw*A[i][j-1]+ae*A[i][j+1]+(ap-an-as-ae-aw)*A[i][j])/ap;
k=k+1;
t=k*t1;
for(i=0;i<M;i++)
for(j=0;j<N;j++)
A[i][j]=B[i][j];
}
printf("20分钟后A点温度为%lf℃
}
else
");
return 0;
}
仅供参考
(2)若令上下表面温度为1000到稳定状态,并求此时A点的温度
#include<stdio.h>
#define M 81
#define N 101
int main()
{//t1代表时间间隔
y=(N-1)/2;
printf("\t\t\t 二维非稳态导热问题\t\t");
printf("\n\t\t\t\t\t\t-----欧阳冲 20142873\n");
printf("请先假定温度场初始温度:");
scanf("%d",&T0);
printf("请输入边界温度,上,下,左,右:");
scanf("%d,%d,%d,%d,%d",&T1,&T2,&T3,&T4);
for(i=0;i<M;i++)
仅供参考
for(j=0;j<N;j++)
{A[i][j]=20;
B[i][j]=20;
}
for(i=0;i<M;i++)
{A[i][0]=T3;
A[i][N-1]=T4;
B[i][0]=T3;
B[i][N-1]=T4;
}
for(i=0;i<N;i++)
{A[0][i]=T1;
A[M-1][i]=T2;
}
y1=0.8/(M-1);
ap=7800*500*x1*y1/t1; an=40*x1/y1; as=40*x1/y1; aw=40*y1/x1; ae=40*y1/x1;if(ap-an-as-ae-aw>=0)
{
现代冶金反应工程上机实验.doc下载仅供参考
while(m)
{ for(i=1;i<M-1;i++)
for(j=1;j<N-1;j++)
B[i][j]=(an*A[i+1][j]+as*A[i-1][j]+aw*A[i][j-1]+ae*A[i][j+1]+(ap-an-as-aw-ae)*A[i][j])/ap;k=k+1;
t=k*t1;
for(i=0;i<M;i++)
for(j=0;j<N;j++)
{ if( B[i][j]-A[i][j]>0.0001)
{ m=1;
i=M;
j=N;
}
else
m=0;
}
for(i=0;i<M;i++)
for(j=0;j<N;j++)
A[i][j]=B[i][j];
}
printf("t=%dA点温度为\n",t,A[x][y]);
}
else
printf("
}
仅供参考
第二次上机;
题目同前,边界条件与第2问相同1000°C, 左右表面温度为400°C ,A
高斯赛德尔迭代:
#include<stdio.h>
#include<math.h>
#define M 81
#define N 101
int main()
{ for(i=0;i<M;i++)
for(j=0;j<N;j++)
{
A[i][j]=20;
B[i][j]=800;
}
for(i=0;i<M;i++)
{
A[i][0]=400;
A[i][N-1]=400;
仅供参考
B[i][0]=400;
B[i][N-1]=400;
}
for(i=0;i<N;i++)
{
A[0][i]=1000;
A[M-1][i]=1000;
B[0][i]=1000;
B[M-1][i]=1000;
}
x1=1.0/(N-1);
y1=0.8/(M-1);
a1=x1/y1;
a2=x1/y1;
a3=y1/x1;
a4=y1/x1;
a5=2*(x1/y1+y1/x1);
do
{ count=(M-2)*(N-2);
for(i=1;i<M-1;i++)
for(j=1;j<N-1;j++)
{
用迭代法求解隐式方程
求绝对值
{
} k++; //每次将最新值代入方程 count--; }
迭代%d次后中心
为 }while(count!=(M-2)*(N-2));
} A点温度为%lf,误差
仅供参考
超松弛迭代:
#include<stdio.h>
#include<math.h>
#define M 81
#define N 101
int main()
{ int i,j,count,k=0;
for(i=0;i<M;i++)
for(j=0;j<N;j++)
{
B[i][j]=800;
for(i=0;i<M;i++)
{
A[i][0]=400;
A[i][N-1]=400;
B[i][0]=400;
B[i][N-1]=400;
}
for(i=0;i<N;i++)
{
A[0][i]=1000;
仅供参考
A[M-1][i]=1000;
B[0][i]=1000;
B[M-1][i]=1000;
}
x1=1.0/(N-1);
y1=0.8/(M-1);
a1=x1/y1;
a2=x1/y1;
a3=y1/x1;
a4=y1/x1;
a5=2*(x1/y1+y1/x1);
do
{ count=(M-2)*(N-2);
for(i=1;i<M-1;i++)
for(j=1;j<N-1;j++)
{
式方程
if(fabs((A[i][j]-B[i][j]))>0.00001)//fabs {
//
count--;
}
}
k++;
printf("迭代次后中A点温度为%lf,误差为 }
仅供参考
欠松弛迭代:
#include<stdio.h>
#include<math.h>
#define M 81
#define N 101
int main()
{ int i,j,count,k=0;
for(i=0;i<M;i++)
for(j=0;j<N;j++)
{
B[i][j]=800;
for(i=0;i<M;i++)
{
A[i][0]=400;
A[i][N-1]=400;
B[i][0]=400;
B[i][N-1]=400;
}
for(i=0;i<N;i++)
{
A[0][i]=1000;
第11 / 15页
仅供参考
A[M-1][i]=1000;
B[0][i]=1000;
B[M-1][i]=1000;
}
x1=1.0/(N-1);
y1=0.8/(M-1);
a1=x1/y1;
a2=x1/y1;
a3=y1/x1;
a4=y1/x1;
a5=2*(x1/y1+y1/x1);
do
{ count=(M-2)*(N-2);
for(i=1;i<M-1;i++)
for(j=1;j<N-1;j++)
{
式方程
if(fabs((A[i][j]-B[i][j]))>0.00001)//fabs {
//
count--;
}
}
k++;
printf("迭代次后中A点温度为%lf,误差为 }
仅供参考
雅克比迭代:
#include<stdio.h>
#include<math.h>
#define M 81
#define N 101
int main()
{ int i,j,count,k=0;
for(i=0;i<M;i++)
for(j=0;j<N;j++)
{
B[i][j]=800;
for(i=0;i<M;i++)
{
A[i][0]=400;
A[i][N-1]=400;
B[i][0]=400;
B[i][N-1]=400;
}
for(i=0;i<N;i++)
{
A[0][i]=1000;
仅供参考
A[M-1][i]=1000;
B[0][i]=1000;
B[M-1][i]=1000;
}
x1=1.0/(N-1);
y1=0.8/(M-1);
a1=x1/y1;
a2=x1/y1;
a3=y1/x1;
a4=y1/x1;
a5=2*(x1/y1+y1/x1);
do
{
count=(M-2)*(N-2);
for(i=1;i<M-1;i++)
for(j=1;j<N-1;j++)
{
用迭代法求解隐式方程
}
k++;
printf("迭代%d次中心点温度为%lf,误差为
for(i=1;i<M-1;i++)
{
求绝对值
{// 将最新值成批代入方程
count--;
}
}
}while(count!=(M-2)*(N-2));
}
仅供参考
第15 / 15页
久久建筑网m.kkreddy.com提供大量:建筑图纸、施工方案、工程书籍、建筑论文、合同表格、标准规范、CAD图纸等内容。