1、#define COND_STEEL 20#define COND_CONCRETE /材料导热系数,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#define t_STEP 1/时间步长,s#define COND_COP_CON #d
2、efine COND_COP_STL #define COND_CON_STL /不同材料的两个相邻结点,导热系数取调和平均数,W/(m*K)/计算参数宏定义 结束enum Property copper, steel, concrete, iso834, adiabat, air ;/结点属性的枚举类型声明struct Grid double mNodeTGRID_ROWGRID_COLUMN;/结点温度 Property mNodePropertyGRID_ROWGRID_COLUMN;/结点材料属性 double mNodeCGRID_ROWGRID_COLUMN;/结点比热容 doub
3、le mNodeDenGRID_ROWGRID_COLUMN;/结点密度 ;/结构体Grid定义,此为计算的主要承载数据结构,将在计算中存储温度数据/函数全局声明开始void SetProperty(Grid &);/属性设置函数void InitlTMPRT(Grid &/温度初始化函数void SetNodePara(Grid &/结点物性参数设置函数void CalculateTMPRT(Grid &/温度计算函数,几乎全部数值计算的承担者void write(int,Grid &/写文件函数,每隔100秒输出温度分布文件到当前目录/函数全局说明结束A) for (int j = 0;
4、j GRID_COLUMN;+j) 0j = air; /第一行为空气边界,计算区域外 +j) GRID_ROW-1j = adiabat; /最后一行为绝热边界,计算区域外 for (int i = 0; i = 0 &= 40) | (i = 61 & GRID_ROW) i0 = air; else i0 = iso834; /第一列的空气边界和ISO834边界,计算区域外 iGRID_COLUMN - 1 = air; /最后一列,空气边界,计算区域外 for (int i = 1; GRID_ROW - 1; for (int j = 1; GRID_COLUMN - 1; = 1
5、&= 44 & j = 20) | (i GRID_ROW - 2 &= (100 - (80 - i)*(49 / 19) ij = concrete; /混凝土区域 else if (i - 20)*(i - 20) + (j - 25)*(j - 25) = 41 &= 60 &= 90 & (i - 20)*(i - 20) + (j - 25)*(j - 25) = 20 * 20) ij = copper; /金属铜区域的一部分 +40 &= 21 &= 90) /金属铜区域的另一部分 else ij = steel; /剩下的即为金属铁的区域 /属性设置函数,将Grid结构体A的
6、所有网格赋予材料属性(枚举类型 Property) GRID_ROW ; for (int j = 0; GRID_COLUMN ; ij = INITL_TMPRT;/温度初始化函数,将Grid结构体A的全部结点温度设置为初始温度INITL_TMPRT double QE=0, QW=0, QN=0, QS=0;/四个方向传来的热量 switch ij) case ,j点为铜的时候 switch ij + 1)/判断右侧属性,并计算QE case copper: QE = ij + 1 - ij)*COND_COPPER; break; case air: QE = ij + 1 - ij)
7、*CONV*DY; case steel: QE = ij + 1 - ij)*COND_COP_STL; case concrete: QE = ij + 1 - ij)*COND_COP_CON; case iso834: QE = 2 * ij + 1 - ij)*COND_COPPER; case adiabat: QE = 0; default: std:cout , j + 1 结点属性未指定n; getchar(); / std: QE n switch ij - 1)/判断左侧属性,并计算QW case copper: QW = ij - 1 - ij)*COND_COPPER
8、; break; case air: QW = ij - 1 - ij)*CONV*DY; case steel: QW = ij - 1 - ij)*COND_COP_STL; case concrete: QW = ij - 1 - ij)*COND_COP_CON; case iso834: QW = 2 * ij - 1 - ij)*COND_COPPER; case adiabat: QW = 0; default: std: j - 1 getchar(); switch i - 1j)/判断上侧属性,并计算QN QN = i - 1j - ij)*COND_COPPER; QN
9、= i - 1j - ij)*CONV*DX; QN = i - 1j - ij)*COND_COP_STL; QN = i - 1j - ij)*COND_COP_CON; QN = 2 * i - 1j - ij)*COND_COPPER; QN = 0; std: i - 1 getchar(); switch i + 1j)/判断下侧属性,并计算QS QS = i + 1j - ij)*COND_COPPER; QS = i + 1j - ij)*CONV*DX; QS = i + 1j - ij)*COND_COP_STL; QS = i + 1j - ij)*COND_COP_CO
10、N; QS = 2 * i + 1j - ij)*COND_COPPER; QS = 0; i + 1 break; case ,j点为铁的时候 switch ij + 1)/判断右侧属性,并计算QE QE = ij + 1 - ij)*COND_COP_STL; QE = ij + 1 - ij)*CONV*DY; QE = ij + 1 - ij)*COND_STEEL; QE = ij + 1 - ij)*COND_CON_STL; QE = 2 * ij + 1 - ij)*COND_STEEL; QE = 0; QW = ij - 1 - ij)*COND_STEEL; QW = i
11、j - 1 - ij)*COND_CON_STL; QW = 2 * ij - 1 - ij)*COND_STEEL; QN = i - 1j - ij)*COND_STEEL; QN = i - 1j - ij)*COND_CON_STL; QN = 2 * i - 1j - ij)*COND_STEEL; QS = i + 1j - ij)*COND_STEEL; QS = i + 1j - ij)*COND_CON_STL; QS = 2 * i + 1j - ij)*COND_STEEL; case ,j点为砼的时候 QE = ij + 1 - ij)*COND_CON_STL; QE = ij + 1 - ij)*COND_CONCRETE; QW = ij - 1 - ij)*COND_CONCRETE; QN = i - 1j - ij)*COND_CONCRETE; QS = i + 1j - ij)*COND_CONCRETE; case ,j点为空气的时候,温度不改变 ij = T_AIR;break; ij = (QE + QN + QS
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1