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

上传人:b****4 文档编号:4796518 上传时间:2022-12-09 格式:DOCX 页数:17 大小:17.64KB
下载 相关 举报
二维数值传热学C程序代码.docx_第1页
第1页 / 共17页
二维数值传热学C程序代码.docx_第2页
第2页 / 共17页
二维数值传热学C程序代码.docx_第3页
第3页 / 共17页
二维数值传热学C程序代码.docx_第4页
第4页 / 共17页
二维数值传热学C程序代码.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

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

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

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

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

#include

#include

#include

#include

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

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

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

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

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

计算参数宏定义开始

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

#defineGRID_ROW82

#defineGRID_COLUMN102

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

#defineDX0.05

#defineDY0.05

//网格单元尺寸,m

#defineDEN_COPPER8900

#defineDEN_STEEL7850

#defineDEN_CONCRETE2430

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

#defineC_COPPER390

#defineC_STEEL460

#defineC_CONCRETE970

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

#defineCOND_COPPER400

#defineCOND_STEEL20

#defineCOND_CONCRETE1.63

//材料导热系数,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_CON3.2467

#defineCOND_COP_STL38.0952

#defineCOND_CON_STL3.0143

//不同材料的两个相邻结点,导热系数取调和平均数,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

A.mNodeProperty[0][j]=air;

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

for(intj=0;j

A.mNodeProperty[GRID_ROW-1][j]=adiabat;

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

for(inti=0;i

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

A.mNodeProperty[i][0]=air;

else

A.mNodeProperty[i][0]=iso834;

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

for(inti=0;i

A.mNodeProperty[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))))

A.mNodeProperty[i][j]=concrete;

//混凝土区域

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

A.mNodeProperty[i][j]=air;

//圆孔空气区域

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

A.mNodeProperty[i][j]=copper;

//金属铜区域的一部分

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

A.mNodeProperty[i][j]=copper;

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

else

A.mNodeProperty[i][j]=steel;

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

}

}

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

voidInitlTMPRT(Grid&A)

{

for(inti=0;i

for(intj=0;j

A.mNodeT[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(A.mNodeProperty[i][j])

{

casecopper:

//i,j点为铜的时候

{

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

{

casecopper:

QE=(A.mNodeT[i][j+1]-A.mNodeT[i][j])*COND_COPPER;

break;

caseair:

QE=(A.mNodeT[i][j+1]-A.mNodeT[i][j])*CONV*DY;

break;

casesteel:

QE=(A.mNodeT[i][j+1]-A.mNodeT[i][j])*COND_COP_STL;

break;

caseconcrete:

QE=(A.mNodeT[i][j+1]-A.mNodeT[i][j])*COND_COP_CON;

break;

caseiso834:

QE=2*(A.mNodeT[i][j+1]-A.mNodeT[i][j])*COND_COPPER;

break;

caseadiabat:

QE=0;

break;

default:

std:

:

cout<

getchar();

}

//std:

:

cout<

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

{

casecopper:

QW=(A.mNodeT[i][j-1]-A.mNodeT[i][j])*COND_COPPER;

break;

caseair:

QW=(A.mNodeT[i][j-1]-A.mNodeT[i][j])*CONV*DY;

break;

casesteel:

QW=(A.mNodeT[i][j-1]-A.mNodeT[i][j])*COND_COP_STL;

break;

caseconcrete:

QW=(A.mNodeT[i][j-1]-A.mNodeT[i][j])*COND_COP_CON;

break;

caseiso834:

QW=2*(A.mNodeT[i][j-1]-A.mNodeT[i][j])*COND_COPPER;

break;

caseadiabat:

QW=0;

break;

default:

{std:

:

cout<

getchar();}

}

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

{

casecopper:

QN=(A.mNodeT[i-1][j]-A.mNodeT[i][j])*COND_COPPER;

break;

caseair:

QN=(A.mNodeT[i-1][j]-A.mNodeT[i][j])*CONV*DX;

break;

casesteel:

QN=(A.mNodeT[i-1][j]-A.mNodeT[i][j])*COND_COP_STL;

break;

caseconcrete:

QN=(A.mNodeT[i-1][j]-A.mNodeT[i][j])*COND_COP_CON;

break;

caseiso834:

QN=2*(A.mNodeT[i-1][j]-A.mNodeT[i][j])*COND_COPPER;

break;

caseadiabat:

QN=0;

break;

default:

std:

:

cout<

getchar();

}

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

{

casecopper:

QS=(A.mNodeT[i+1][j]-A.mNodeT[i][j])*COND_COPPER;

break;

caseair:

QS=(A.mNodeT[i+1][j]-A.mNodeT[i][j])*CONV*DX;

break;

casesteel:

QS=(A.mNodeT[i+1][j]-A.mNodeT[i][j])*COND_COP_STL;

break;

caseconcrete:

QS=(A.mNodeT[i+1][j]-A.mNodeT[i][j])*COND_COP_CON;

break;

caseiso834:

QS=2*(A.mNodeT[i+1][j]-A.mNodeT[i][j])*COND_COPPER;

break;

caseadiabat:

QS=0;

break;

default:

std:

:

cout<

getchar();

}break;}

casesteel:

//i,j点为铁的时候

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

{

casecopper:

QE=(A.mNodeT[i][j+1]-A.mNodeT[i][j])*COND_COP_STL;

break;

caseair:

QE=(A.mNodeT[i][j+1]-A.mNodeT[i][j])*CONV*DY;

break;

casesteel:

QE=(A.mNodeT[i][j+1]-A.mNodeT[i][j])*COND_STEEL;

break;

caseconcrete:

QE=(A.mNodeT[i][j+1]-A.mNodeT[i][j])*COND_CON_STL;

break;

caseiso834:

QE=2*(A.mNodeT[i][j+1]-A.mNodeT[i][j])*COND_STEEL;

break;

caseadiabat:

QE=0;

break;

default:

std:

:

cout<

getchar();

}

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

{

casecopper:

QW=(A.mNodeT[i][j-1]-A.mNodeT[i][j])*COND_COP_STL;

break;

caseair:

QW=(A.mNodeT[i][j-1]-A.mNodeT[i][j])*CONV*DY;

break;

casesteel:

QW=(A.mNodeT[i][j-1]-A.mNodeT[i][j])*COND_STEEL;

break;

caseconcrete:

QW=(A.mNodeT[i][j-1]-A.mNodeT[i][j])*COND_CON_STL;

break;

caseiso834:

QW=2*(A.mNodeT[i][j-1]-A.mNodeT[i][j])*COND_STEEL;

break;

caseadiabat:

QW=0;

break;

default:

std:

:

cout<

getchar();

}

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

{

casecopper:

QN=(A.mNodeT[i-1][j]-A.mNodeT[i][j])*COND_COP_STL;

break;

caseair:

QN=(A.mNodeT[i-1][j]-A.mNodeT[i][j])*CONV*DX;

break;

casesteel:

QN=(A.mNodeT[i-1][j]-A.mNodeT[i][j])*COND_STEEL;

break;

caseconcrete:

QN=(A.mNodeT[i-1][j]-A.mNodeT[i][j])*COND_CON_STL;

break;

caseiso834:

QN=2*(A.mNodeT[i-1][j]-A.mNodeT[i][j])*COND_STEEL;

break;

caseadiabat:

QN=0;

break;

default:

std:

:

cout<

getchar();

}

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

{

casecopper:

QS=(A.mNodeT[i+1][j]-A.mNodeT[i][j])*COND_COP_STL;

break;

caseair:

QS=(A.mNodeT[i+1][j]-A.mNodeT[i][j])*CONV*DX;

break;

casesteel:

QS=(A.mNodeT[i+1][j]-A.mNodeT[i][j])*COND_STEEL;

break;

caseconcrete:

QS=(A.mNodeT[i+1][j]-A.mNodeT[i][j])*COND_CON_STL;

break;

caseiso834:

QS=2*(A.mNodeT[i+1][j]-A.mNodeT[i][j])*COND_STEEL;

break;

caseadiabat:

QS=0;

break;

default:

std:

:

cout<

getchar();

}break;}

caseconcrete:

//i,j点为砼的时候

{

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

{

casecopper:

QE=(A.mNodeT[i][j+1]-A.mNodeT[i][j])*COND_COP_CON;

break;

caseair:

QE=(A.mNodeT[i][j+1]-A.mNodeT[i][j])*CONV*DY;

break;

casesteel:

QE=(A.mNodeT[i][j+1]-A.mNodeT[i][j])*COND_CON_STL;

break;

caseconcrete:

QE=(A.mNodeT[i][j+1]-A.mNodeT[i][j])*COND_CONCRETE;

break;

caseiso834:

break;

caseadiabat:

QE=0;

break;

default:

std:

:

cout<

getchar();

}

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

{

casecopper:

break;

caseair:

QW=(A.mNodeT[i][j-1]-A.mNodeT[i][j])*CONV*DY;

break;

casesteel:

break;

caseconcrete:

QW=(A.mNodeT[i][j-1]-A.mNodeT[i][j])*COND_CONCRETE;

break;

caseiso834:

break;

caseadiabat:

QW=0;

break;

default:

s

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

当前位置:首页 > 初中教育 > 数学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1