二维导热物体温度场的数值模拟(2)

2020-06-28 11:38

1.由实验结果可知:等温边界下,数值解法计算结果与“二维导热物体温度场的电模拟实验“结果相似,虽然存在一定的偏差,但由于点模拟实验存在误差,而且数值解法也不可能得出温度真实值,同样存在偏差,但这并不是说数值解法没有可行性,相反,由于计算结果与电模拟实验结果极为相似,恰恰说明数值解法分析问题的可行性。用数值解法仅用计算机模拟就能解决某些复杂的工程问题,为复杂工程问题的求解提供了极大的便利。

2.在实验中,内外边界散热量存在偏差,这在很大程度上是由于用数值计算分析问题时,采用离散平均的思想,用节点中心的温度代替节点的平均温度从而产生误差。不断提高所划分的网格数目,实验偏差会得到不断改善。

3.通过这次的上机实验,对传热的很多问题和数值算法都有一定的加深理解和掌握,收获很多,同时对于个人的动手动脑及解决问题的能力都有一定的提高。同样,这也反过来证实了“二维导热物体温度场的电模拟实验”的正确性和可行性。

// mm.cpp : 定?§义°?控?制?台??§应?|用??程¨?序¨°的ì?入¨?口¨2点ì?。?ê //

#include \

#include #include int main() {

int k=0,n=0;

double t[16][12]={0},s[16][12]={0}; double lambda=0.53,error=0;

double daore_in=0,daore_out=0,daore=0; fp=fopen(\,\); for(int i=0;i<=15;i++)

for(int j=0;j<=11;j++) { }

for(int j=0;j<=11;j++)

t[i][j]=s[i][j];

if((i==0) || (j==0)) s[i][j]=30; if(i==5)

if(j>=5 && j<=11) s[i][j]=0; if(i>=5 && i<=15) s[i][j]=0; if(j==5)

double epsilon=0.01;

FILE *fp;

for(int i=0;i<=15;i++)

n=1; while(n>0) {

5

}

n=0;

for(int j=1;j<=4;j++)

t[15][j]=0.25*(2*t[14][j]+t[15][j-1]+t[15][j+1]); t[i][11]=0.25*(2*t[i][10]+t[i-1][11]+t[i+1][11]); for(int j=1;j<=4;j++)

t[i][j]=0.25*(t[i+1][j]+t[i-1][j]+t[i][j+1]+t[i][j-1]);

for(int i=1;i<=4;i++) for(int i=1;i<=14;i++)

for(int i=1;i<=4;i++)

for(int j=5;j<=10;j++)

t[i][j]=0.25*(t[i+1][j]+t[i-1][j]+t[i][j+1]+t[i][j-1]);

for(int i=0;i<=15;i++) for(int j=0;j<=11;j++)

if(fabs(t[i][j]-s[i][j])>epsilon) n++;

for(int i=0;i<=15;i++) for(int j=0;j<=11;j++)

s[i][j]=t[i][j]; k++;

//printf(\

for(int j=0;j<=5;j++) {

for(int i=0;i<=15;i++) { printf(\,t[i][j]); fprintf(fp,\,t[i][j]);} printf(\); }

for(int j=6;j<=11;j++) {

for(int i=0;i<=5;i++)

{ printf(\,t[i][j]); fprintf(fp,\,t[i][j]);} fprintf(fp,\); printf(\); }

for(int i=1;i<=14;i++)

daore_out+=(30-t[i][1]); daore_out+=(30-t[1][j]); for(int j=1;j<=10;j++)

daore_out=4*(lambda*(daore_out+0.5*(30-t[1][11])+0.5*(30-t[15][1]))); for(int i=5;i<=14;i++)

daore_in+=t[i][4]; daore_in+=t[4][j]; for(int j=5;j<=10;j++)

fprintf(fp,\);

6

}

daore_in=4*(lambda*(daore_in+0.5*t[4][11]+0.5*t[15][4])); error=abs(daore_out-daore_in)/(0.5*(daore_in+daore_out)); daore=(daore_in+daore_out)*0.5;

printf(\内¨2墙?导ì?热¨¨¨q1=%f\\n外aa墙?导ì?热¨¨¨q2=%f\\n平?均¨′值getchar();

|ìq=%f\\n偏?差?error=%f\\n\,k,daore_in,daore_out,daore,error);

#include #include #include using namespace std; int main() {

cout <

double temp,q_in,q_out,q; double eps=1; double A[16][12];

//设|¨¨置?迭ì¨1代?¨2初?场? for(i=1;i<16;i++) {for(j=1;j<6;j++) A[i][j]=0;} for(i=1;i<6;i++) {for(j=6;j<12;j++)

7

A[i][j]=0;} for(i=0;i<16;i++)

A[i][0]=30; A[0][j]=30; for(j=0;j<12;j++)

//建?§立¢?é迭ì¨1代?¨2方¤?程¨?组á¨|并?é求¨?解a while(eps>1.0E-4) {

for(j=1;j<5;j++) {

for(j=1;j<5;j++) {

A[i][j]=(A[i-1][j]+A[i+1][j]+A[i][j-1]+A[i][j+1])/4; } }

for(i=1;i<5;i++) {

for(j=1;j<11;j++)

A[i][j]=(A[i-1][j]+A[i+1][j]+A[i][j-1]+A[i][j+1])/4; }

for(i=1;i<5;i++) {temp=A[i][11];

A[i][11]=(A[i+1][11-1]+A[i][11]+2*A[i][10])/4; eps=A[i][11]-temp; } }

//计?算?墙?体??外aa表à¨a面?导ì?热¨¨¨量¢? q_out=0;

for(j=1;j<12;i++)

q_out=q_out+A[0][j]-A[1][j]; for(i=1;i<16;j++)

q_out=q_out+A[i][0]-A[i][1];

q_out=q_out+(A[0][11]-A[10][1]+A[15][0]-A[15][1])/2; q_out=q_out*0.53; //计?算?墙?体??内¨2表à¨a面?导ì?热¨¨¨量¢? q_in=0;

for(i=5;i<16;i++)

q_in=q_in+A[i][4]-A[i][5]; for(j=5;j<12;j++)

q_in=q_in+A[4][j]-A[5][j];

q_in=q_in+(A[15][4]-A[15][5]+A[4][11]-A[5][11])/2; q_in=q_in*0.53; //计?算?平?均¨′导ì?热¨¨¨量¢?和¨a相¨¤对?误¨?差?

A[15][j]=(A[15][j+1]+A[15][j-1]+2*A[14][j])/4; for(i=5;i<15;i++)

8

q=(q_in+q_out)/2; eps=abs(q_in-q_out); //输o?出?结¨¢果? for (j=0;j<6;j++) {for(i=0;i<16;i++)

{cout<for(j=6;j<12;j++) {

for(i=0;i<6;i++)

{cout<cout<<\墙?体??内¨2表à¨a面?导ì?热¨¨¨量¢?=\<

9


二维导热物体温度场的数值模拟(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:烧结厂看火工考试试题1

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: