1、/材料比热容,J/(kg*K)#define COND_COPPER 400#define COND_STEEL 20#define COND_CONCRETE 1.63/材料导热系数,W/(m*K)#define CONV 5/空气与各种材料的对流换热系数,W/(m2*K)#define INITL_TMPRT 298/初始温度,K#define T_C2K(x) (x)+273)/C to K#define T_K2C(x) (x)-273)/K to C/摄氏温度与绝对温度相互转换#define T_AIR 298;/空气温度,K#define t_END 3600/计算时长,s#def
2、ine t_STEP 1/时间步长,s#define COND_COP_CON 3.2467#define COND_COP_STL 38.0952#define COND_CON_STL 3.0143/不同材料的两个相邻结点,导热系数取调和平均数,W/(m*K)/计算参数宏定义 结束enum Property copper, steel, concrete, iso834, adiabat, air ;/结点属性的枚举类型声明struct Grid double mNodeTGRID_ROWGRID_COLUMN;/结点温度 Property mNodePropertyGRID_ROWGRI
3、D_COLUMN;/结点材料属性 double mNodeCGRID_ROWGRID_COLUMN;/结点比热容 double mNodeDenGRID_ROWGRID_COLUMN;/结点密度 ;/结构体Grid定义,此为计算的主要承载数据结构,将在计算中存储温度数据/函数全局声明开始void SetProperty(Grid &);/属性设置函数void InitlTMPRT(Grid &/温度初始化函数void SetNodePara(Grid &/结点物性参数设置函数void CalculateTMPRT(Grid &/温度计算函数,几乎全部数值计算的承担者void write(int
4、,Grid &/写文件函数,每隔100秒输出温度分布文件到当前目录/函数全局说明结束A) for (int j = 0; j GRID_COLUMN;+j) A.mNodeProperty0j = air; /第一行为空气边界,计算区域外 +j) A.mNodePropertyGRID_ROW-1j = adiabat; /最后一行为绝热边界,计算区域外 for (int i = 0; i = 0 &= 40) | (i = 61 & GRID_ROW) A.mNodePropertyi0 = air; else A.mNodePropertyi0 = iso834; /第一列的空气边界和IS
5、O834边界,计算区域外 A.mNodePropertyiGRID_COLUMN - 1 = air; /最后一列,空气边界,计算区域外 for (int i = 1; GRID_ROW - 1; for (int j = 1; GRID_COLUMN - 1; = 1 &= 44 & j = 20) | (i GRID_ROW - 2 &= (100 - (80 - i)*(49 / 19) A.mNodePropertyij = concrete; /混凝土区域 else if (i - 20)*(i - 20) + (j - 25)*(j - 25) = 41 &= 60 &= 90 &
6、 (i - 20)*(i - 20) + (j - 25)*(j - 25) = 20 * 20) A.mNodePropertyij = copper; /金属铜区域的一部分 +40 &= 21 &= 90) /金属铜区域的另一部分 else A.mNodePropertyij = steel; /剩下的即为金属铁的区域 /属性设置函数,将Grid结构体A的所有网格赋予材料属性(枚举类型 Property) GRID_ROW ; for (int j = 0; GRID_COLUMN ; A.mNodeTij = INITL_TMPRT;/温度初始化函数,将Grid结构体A的全部结点温度设置
7、为初始温度INITL_TMPRT double QE=0, QW=0, QN=0, QS=0;/四个方向传来的热量 switch (A.mNodePropertyij) case copper:/i,j点为铜的时候 switch (A.mNodePropertyij + 1)/判断右侧属性,并计算QE case copper: QE = (A.mNodeTij + 1 - A.mNodeTij)*COND_COPPER; break; case air: QE = (A.mNodeTij + 1 - A.mNodeTij)*CONV*DY; case steel: QE = (A.mNodeT
8、ij + 1 - A.mNodeTij)*COND_COP_STL; case concrete: QE = (A.mNodeTij + 1 - A.mNodeTij)*COND_COP_CON; case iso834: QE = 2 * (A.mNodeTij + 1 - A.mNodeTij)*COND_COPPER; case adiabat: QE = 0; default: std:cout , j + 1 结点属性未指定n; getchar(); / std: QE n switch (A.mNodePropertyij - 1)/判断左侧属性,并计算QW QW = (A.mNo
9、deTij - 1 - A.mNodeTij)*COND_COPPER; break; case air: QW = (A.mNodeTij - 1 - A.mNodeTij)*CONV*DY; case steel: QW = (A.mNodeTij - 1 - A.mNodeTij)*COND_COP_STL; case concrete: QW = (A.mNodeTij - 1 - A.mNodeTij)*COND_COP_CON; case iso834: QW = 2 * (A.mNodeTij - 1 - A.mNodeTij)*COND_COPPER; case adiabat
10、: QW = 0; default: std: j - 1 getchar(); switch (A.mNodePropertyi - 1j)/判断上侧属性,并计算QN QN = (A.mNodeTi - 1j - A.mNodeTij)*COND_COPPER; QN = (A.mNodeTi - 1j - A.mNodeTij)*CONV*DX; QN = (A.mNodeTi - 1j - A.mNodeTij)*COND_COP_STL; QN = (A.mNodeTi - 1j - A.mNodeTij)*COND_COP_CON; QN = 2 * (A.mNodeTi - 1j
11、- A.mNodeTij)*COND_COPPER; QN = 0; std: i - 1 getchar(); switch (A.mNodePropertyi + 1j)/判断下侧属性,并计算QS QS = (A.mNodeTi + 1j - A.mNodeTij)*COND_COPPER; QS = (A.mNodeTi + 1j - A.mNodeTij)*CONV*DX; QS = (A.mNodeTi + 1j - A.mNodeTij)*COND_COP_STL; QS = (A.mNodeTi + 1j - A.mNodeTij)*COND_COP_CON; QS = 2 *
12、(A.mNodeTi + 1j - A.mNodeTij)*COND_COPPER; QS = 0; i + 1 break;/i,j点为铁的时候 switch (A.mNodePropertyij + 1)/判断右侧属性,并计算QE QE = (A.mNodeTij + 1 - A.mNodeTij)*COND_COP_STL; QE = (A.mNodeTij + 1 - A.mNodeTij)*CONV*DY; QE = (A.mNodeTij + 1 - A.mNodeTij)*COND_STEEL; QE = (A.mNodeTij + 1 - A.mNodeTij)*COND_CO
13、N_STL; QE = 2 * (A.mNodeTij + 1 - A.mNodeTij)*COND_STEEL; QE = 0; QW = (A.mNodeTij - 1 - A.mNodeTij)*COND_STEEL; QW = (A.mNodeTij - 1 - A.mNodeTij)*COND_CON_STL; QW = 2 * (A.mNodeTij - 1 - A.mNodeTij)*COND_STEEL; QN = (A.mNodeTi - 1j - A.mNodeTij)*COND_STEEL; QN = (A.mNodeTi - 1j - A.mNodeTij)*COND_
14、CON_STL; QN = 2 * (A.mNodeTi - 1j - A.mNodeTij)*COND_STEEL; QS = (A.mNodeTi + 1j - A.mNodeTij)*COND_STEEL; QS = (A.mNodeTi + 1j - A.mNodeTij)*COND_CON_STL; QS = 2 * (A.mNodeTi + 1j - A.mNodeTij)*COND_STEEL;/i,j点为砼的时候 QE = (A.mNodeTij + 1 - A.mNodeTij)*COND_CON_STL; QE = (A.mNodeTij + 1 - A.mNodeTij)*COND_CONCRETE; QW = (A.mNodeTij - 1 - A.mNodeTij)*COND_CONCRETE;