二维数值传热学C程序代码.docx

上传人:b****0 文档编号:9314395 上传时间:2023-05-18 格式:DOCX 页数:19 大小:17.40KB
下载 相关 举报
二维数值传热学C程序代码.docx_第1页
第1页 / 共19页
二维数值传热学C程序代码.docx_第2页
第2页 / 共19页
二维数值传热学C程序代码.docx_第3页
第3页 / 共19页
二维数值传热学C程序代码.docx_第4页
第4页 / 共19页
二维数值传热学C程序代码.docx_第5页
第5页 / 共19页
二维数值传热学C程序代码.docx_第6页
第6页 / 共19页
二维数值传热学C程序代码.docx_第7页
第7页 / 共19页
二维数值传热学C程序代码.docx_第8页
第8页 / 共19页
二维数值传热学C程序代码.docx_第9页
第9页 / 共19页
二维数值传热学C程序代码.docx_第10页
第10页 / 共19页
二维数值传热学C程序代码.docx_第11页
第11页 / 共19页
二维数值传热学C程序代码.docx_第12页
第12页 / 共19页
二维数值传热学C程序代码.docx_第13页
第13页 / 共19页
二维数值传热学C程序代码.docx_第14页
第14页 / 共19页
二维数值传热学C程序代码.docx_第15页
第15页 / 共19页
二维数值传热学C程序代码.docx_第16页
第16页 / 共19页
二维数值传热学C程序代码.docx_第17页
第17页 / 共19页
二维数值传热学C程序代码.docx_第18页
第18页 / 共19页
二维数值传热学C程序代码.docx_第19页
第19页 / 共19页
亲,该文档总共19页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

二维数值传热学C程序代码.docx

《二维数值传热学C程序代码.docx》由会员分享,可在线阅读,更多相关《二维数值传热学C程序代码.docx(19页珍藏版)》请在冰点文库上搜索。

二维数值传热学C程序代码.docx

二维数值传热学C程序代码

#include<>

#include

#include<>

#include

////////////////////////////////////////////////////////////////////////////////

/******************************************************************************/

////////////////////////////////////////////////////////////////////////////////

//从此开始至下一个/*/标记带处之间的代码可以写在头文件里。

////////////////////////////////////////////////////////////////////////////////

计算参数宏定义开始

////////////////////////////////////////////////////////////////////////////////

#defineGRID_ROW82

#defineGRID_COLUMN102

//网格横纵数目,边界处多出一列处理

#defineDX

#defineDY

//网格单元尺寸,m

#defineDEN_COPPER8900

#defineDEN_STEEL7850

#defineDEN_CONCRETE2430

//材料的密度,kg/(m^3)

#defineC_COPPER390

#defineC_STEEL460

#defineC_CONCRETE970

//材料比热容,J/(kg*K)

#defineCOND_COPPER400

#defineCOND_STEEL20

#defineCOND_CONCRETE

//材料导热系数,W/(m*K)

#defineCONV5

//空气与各种材料的对流换热系数,W/(m^2*K)

#defineINITL_TMPRT298

//初始温度,K

#defineT_C2K(x)((x)+273)//CtoK

#defineT_K2C(x)((x)-273)//KtoC

//摄氏温度与绝对温度相互转换

#defineT_AIR298;

//空气温度,K

#definet_END3600

//计算时长,s

#definet_STEP1

//时间步长,s

#defineCOND_COP_CON

#defineCOND_COP_STL

#defineCOND_CON_STL

//不同材料的两个相邻结点,导热系数取调和平均数,W/(m*K)

////////////////////////////////////////////////////////////////////////////////计算参数宏定义结束

////////////////////////////////////////////////////////////////////////////////

enumProperty{copper,steel,concrete,iso834,adiabat,air};

//结点属性的枚举类型声明

structGrid

{

doublemNodeT[GRID_ROW][GRID_COLUMN];//结点温度

PropertymNodeProperty[GRID_ROW][GRID_COLUMN];//结点材料属性

doublemNodeC[GRID_ROW][GRID_COLUMN];//结点比热容

doublemNodeDen[GRID_ROW][GRID_COLUMN];//结点密度

};

//结构体Grid定义,此为计算的主要承载数据结构,将在计算中存储温度数据

//函数全局声明开始

voidSetProperty(Grid&);//属性设置函数

voidInitlTMPRT(Grid&);//温度初始化函数

voidSetNodePara(Grid&);//结点物性参数设置函数

voidCalculateTMPRT(Grid&);//温度计算函数,几乎全部数值计算的承担者

voidwrite(int,Grid&);//写文件函数,每隔100秒输出温度分布文件到当前目录

//函数全局说明结束

voidSetProperty(Grid&A)

{

for(intj=0;j

[0][j]=air;

//第一行为空气边界,计算区域外

for(intj=0;j

[GRID_ROW-1][j]=adiabat;

//最后一行为绝热边界,计算区域外

for(inti=0;i

if((i>=0&&i<=40)||(i>=61&&i

[i][0]=air;

else

[i][0]=iso834;

//第一列的空气边界和ISO834边界,计算区域外

for(inti=0;i

[i][GRID_COLUMN-1]=air;

//最后一列,空气边界,计算区域外

for(inti=1;i

for(intj=1;j

{

if((i>=1&&i<=44&&j>=1&&j<=20)||(i>=61&&i=1&&j<=(100-(80-i)*(49/19))))

[i][j]=concrete;

//混凝土区域

elseif((i-20)*(i-20)+(j-25)*(j-25)<=20*20)

[i][j]=air;

//圆孔空气区域

elseif(i>=41&&i<=60&&j>=1&&j<=90&&((i-20)*(i-20)+(j-25)*(j-25)>=20*20))

[i][j]=copper;

//金属铜区域的一部分

elseif(i>=1&&i<+40&&j>=21&&j<=90)

[i][j]=copper;

//金属铜区域的另一部分

else

[i][j]=steel;

//剩下的即为金属铁的区域

}

}

//属性设置函数,将Grid结构体A的所有网格赋予材料属性(枚举类型Property)

voidInitlTMPRT(Grid&A)

{

for(inti=0;i

for(intj=0;j

[i][j]=INITL_TMPRT;

}

//温度初始化函数,将Grid结构体A的全部结点温度设置为初始温度INITL_TMPRT

voidCalculateTMPRT(Grid&A)

{

doubleQE=0,QW=0,QN=0,QS=0;//四个方向传来的热量

for(inti=1;i

for(intj=1;j

{

switch[i][j])

{

{

switch[i][j+1])//判断右侧属性,并计算QE

{

casecopper:

QE=[i][j+1]-[i][j])*COND_COPPER;

break;

caseair:

QE=[i][j+1]-[i][j])*CONV*DY;

break;

casesteel:

QE=[i][j+1]-[i][j])*COND_COP_STL;

break;

caseconcrete:

QE=[i][j+1]-[i][j])*COND_COP_CON;

break;

caseiso834:

QE=2*[i][j+1]-[i][j])*COND_COPPER;

break;

caseadiabat:

QE=0;

break;

default:

std:

:

cout<

getchar();

}

//std:

:

cout<

switch[i][j-1])//判断左侧属性,并计算QW

{

casecopper:

QW=[i][j-1]-[i][j])*COND_COPPER;

break;

caseair:

QW=[i][j-1]-[i][j])*CONV*DY;

break;

casesteel:

QW=[i][j-1]-[i][j])*COND_COP_STL;

break;

caseconcrete:

QW=[i][j-1]-[i][j])*COND_COP_CON;

break;

caseiso834:

QW=2*[i][j-1]-[i][j])*COND_COPPER;

break;

caseadiabat:

QW=0;

break;

default:

{std:

:

cout<

getchar();}

}

switch[i-1][j])//判断上侧属性,并计算QN

{

casecopper:

QN=[i-1][j]-[i][j])*COND_COPPER;

break;

caseair:

QN=[i-1][j]-[i][j])*CONV*DX;

break;

casesteel:

QN=[i-1][j]-[i][j])*COND_COP_STL;

break;

caseconcrete:

QN=[i-1][j]-[i][j])*COND_COP_CON;

break;

caseiso834:

QN=2*[i-1][j]-[i][j])*COND_COPPER;

break;

caseadiabat:

QN=0;

break;

default:

std:

:

cout<

getchar();

}

switch[i+1][j])//判断下侧属性,并计算QS

{

casecopper:

QS=[i+1][j]-[i][j])*COND_COPPER;

break;

caseair:

QS=[i+1][j]-[i][j])*CONV*DX;

break;

casesteel:

QS=[i+1][j]-[i][j])*COND_COP_STL;

break;

caseconcrete:

QS=[i+1][j]-[i][j])*COND_COP_CON;

break;

caseiso834:

QS=2*[i+1][j]-[i][j])*COND_COPPER;

break;

caseadiabat:

QS=0;

break;

default:

std:

:

cout<

getchar();

}break;}

{switch[i][j+1])//判断右侧属性,并计算QE

{

casecopper:

QE=[i][j+1]-[i][j])*COND_COP_STL;

break;

caseair:

QE=[i][j+1]-[i][j])*CONV*DY;

break;

casesteel:

QE=[i][j+1]-[i][j])*COND_STEEL;

break;

caseconcrete:

QE=[i][j+1]-[i][j])*COND_CON_STL;

break;

caseiso834:

QE=2*[i][j+1]-[i][j])*COND_STEEL;

break;

caseadiabat:

QE=0;

break;

default:

std:

:

cout<

getchar();

}

switch[i][j-1])//判断左侧属性,并计算QW

{

casecopper:

QW=[i][j-1]-[i][j])*COND_COP_STL;

break;

caseair:

QW=[i][j-1]-[i][j])*CONV*DY;

break;

casesteel:

QW=[i][j-1]-[i][j])*COND_STEEL;

break;

caseconcrete:

QW=[i][j-1]-[i][j])*COND_CON_STL;

break;

caseiso834:

QW=2*[i][j-1]-[i][j])*COND_STEEL;

break;

caseadiabat:

QW=0;

break;

default:

std:

:

cout<

getchar();

}

switch[i-1][j])//判断上侧属性,并计算QN

{

casecopper:

QN=[i-1][j]-[i][j])*COND_COP_STL;

break;

caseair:

QN=[i-1][j]-[i][j])*CONV*DX;

break;

casesteel:

QN=[i-1][j]-[i][j])*COND_STEEL;

break;

caseconcrete:

QN=[i-1][j]-[i][j])*COND_CON_STL;

break;

caseiso834:

QN=2*[i-1][j]-[i][j])*COND_STEEL;

break;

caseadiabat:

QN=0;

break;

default:

std:

:

cout<

getchar();

}

switch[i+1][j])//判断下侧属性,并计算QS

{

casecopper:

QS=[i+1][j]-[i][j])*COND_COP_STL;

break;

caseair:

QS=[i+1][j]-[i][j])*CONV*DX;

break;

casesteel:

QS=[i+1][j]-[i][j])*COND_STEEL;

break;

caseconcrete:

QS=[i+1][j]-[i][j])*COND_CON_STL;

break;

caseiso834:

QS=2*[i+1][j]-[i][j])*COND_STEEL;

break;

caseadiabat:

QS=0;

break;

default:

std:

:

cout<

getchar();

}break;}

{

switch[i][j+1])//判断右侧属性,并计算QE

{

casecopper:

QE=[i][j+1]-[i][j])*COND_COP_CON;

break;

caseair:

QE=[i][j+1]-[i][j])*CONV*DY;

break;

casesteel:

QE=[i][j+1]-[i][j])*COND_CON_STL;

break;

caseconcrete:

QE=[i][j+1]-[i][j])*COND_CONCRETE;

break;

caseiso834:

break;

caseadiabat:

QE=0;

break;

default:

std:

:

cout<

getchar();

}

switch[i][j-1])//判断左侧属性,并计算QW

{

casecopper:

break;

caseair:

QW=[i][j-1]-[i][j])*CONV*DY;

break;

casesteel:

break;

caseconcrete:

QW=[i][j-1]-[i][j])*COND_CONCRETE;

break;

caseiso834:

break;

caseadiabat:

QW=0;

break;

default:

std:

:

cout<

getchar();

}

switch[i-1][j])//判断上侧属性,并计算QN

{

casecopper:

QN=[i-1][j]-[i][j])*COND_COP_CON;

break;

caseair:

QN=[i-1][j]-[i][j])*CONV*DX;

break;

casesteel:

QN=[i-1][j]-[i][j])*COND_CON_STL;

break;

caseconcrete:

QN=[i-1][j]-[i][j])*COND_CONCRETE;

break;

caseiso834:

break;

caseadiabat:

QN=0;

break;

default:

std:

:

cout<

getchar();

}

switch[i+1][j])//判断下侧属性,并计算QS

{

casecopper:

QS=[i+1][j]-[i][j])*COND_COP_CON;

break;

caseair:

QS=[i+1][j]-[i][j])*CONV*DX;

break;

casesteel:

QS=[i+1][j]-[i][j])*COND_CON_STL;

break;

caseconcrete:

QS=[i+1][j]-[i][j])*COND_CONCRETE;

break;

caseiso834:

break;

caseadiabat:

QS=0;

break;

default:

std:

:

cout<

getchar();

}break;

}

{

[i][j]=T_AIR;

break;

}

default:

break;

}

[i][j]=(QE+QN+QS+QW)/[i][j]*[i][j]*DX*DY);

}

}

//函数会判断每个结点相邻4个结点的属性,然后将四个结点传来的热量加和,

//最后根据能量守

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2