📄 regenator.cpp
字号:
// Regenator.cpp : implementation file
//
#include "stdafx.h"
#include "HtacBall.h"
#include "Regenator.h"
#include "math.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CRegenator dialog
CRegenator::CRegenator(CWnd* pParent /*=NULL*/)
: CDialog(CRegenator::IDD, pParent)
{
//{{AFX_DATA_INIT(CRegenator)
m_a = 0.0f;
m_adw = 0.0f;
m_alfc = 0.0f;
m_alfh = 0.0f;
m_Ca = 0.0f;
m_Cf = 0.0f;
m_Cp = 0.0f;
m_d = 0.0f;
m_eps = 0.0f;
m_F = 0.0f;
m_fdw = 0.0f;
m_k = 0.0f;
m_La = 0.0f;
m_Lf = 0.0f;
m_Lmda = 0.0f;
m_Lmdf = 0.0f;
m_Lmdp = 0.0f;
m_N = 0.0f;
m_Nowel = 0.0f;
m_RegeP = 0.0f;
m_Roua = 0.0f;
m_Rouf = 0.0f;
m_Ta1 = 0.0f;
m_Ta2 = 0.0f;
m_tao = 0.0f;
m_Tf1 = 0.0f;
m_Tf2 = 0.0f;
m_Ua = 0.0f;
m_Uf = 0.0f;
m_V = 0.0f;
m_Xa = 0.0f;
m_Xb = 0.0f;
m_Xh = 0.0f;
m_Roup = 0.0f;
//}}AFX_DATA_INIT
}
void CRegenator::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CRegenator)
DDX_Text(pDX, IDC_a, m_a);
DDX_Text(pDX, IDC_adw, m_adw);
DDX_Text(pDX, IDC_alfc, m_alfc);
DDX_Text(pDX, IDC_alfh, m_alfh);
DDX_Text(pDX, IDC_Ca, m_Ca);
DDX_Text(pDX, IDC_Cf, m_Cf);
DDX_Text(pDX, IDC_Cp, m_Cp);
DDX_Text(pDX, IDC_d, m_d);
DDX_Text(pDX, IDC_eps, m_eps);
DDX_Text(pDX, IDC_F, m_F);
DDX_Text(pDX, IDC_fdw, m_fdw);
DDX_Text(pDX, IDC_k, m_k);
DDX_Text(pDX, IDC_La, m_La);
DDX_Text(pDX, IDC_Lf, m_Lf);
DDX_Text(pDX, IDC_Lmda, m_Lmda);
DDX_Text(pDX, IDC_Lmdf, m_Lmdf);
DDX_Text(pDX, IDC_Lmdp, m_Lmdp);
DDX_Text(pDX, IDC_N, m_N);
DDX_Text(pDX, IDC_Nowel, m_Nowel);
DDX_Text(pDX, IDC_RegeP, m_RegeP);
DDX_Text(pDX, IDC_Roua, m_Roua);
DDX_Text(pDX, IDC_Rouf, m_Rouf);
DDX_Text(pDX, IDC_Ta1, m_Ta1);
DDX_Text(pDX, IDC_Ta2, m_Ta2);
DDX_Text(pDX, IDC_tao, m_tao);
DDX_Text(pDX, IDC_Tf1, m_Tf1);
DDX_Text(pDX, IDC_Tf2, m_Tf2);
DDX_Text(pDX, IDC_Ua, m_Ua);
DDX_Text(pDX, IDC_Uf, m_Uf);
DDX_Text(pDX, IDC_V, m_V);
DDX_Text(pDX, IDC_Xa, m_Xa);
DDX_Text(pDX, IDC_Xb, m_Xb);
DDX_Text(pDX, IDC_Xh, m_Xh);
DDX_Text(pDX, IDC_Roup, m_Roup);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CRegenator, CDialog)
//{{AFX_MSG_MAP(CRegenator)
ON_BN_CLICKED(ID_FILE_OPEN, OnFileOpen)
ON_BN_CLICKED(ID_FILE_SAVE_AS, OnFileSaveAs)
ON_BN_CLICKED(IDC_DXWD, OnDxwd)
ON_BN_CLICKED(ID_DESIGN, OnDesign)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CRegenator message handlers
void CRegenator::OnFileOpen()
{
CFileDialog OpenDialog(TRUE, // Open...
"hbr", // default filename extension
NULL, // initial filename
OFN_FILEMUSTEXIST|OFN_PATHMUSTEXIST, // options
"Data Files(*.hbr)|*.hbr|All Files(*.*)|*.*||", // two filters for modules
this);
CString sz;
CFile file;
if ( OpenDialog.DoModal() == IDOK )
{
sz=OpenDialog.GetFileName();
file.Open(sz,CFile::modeRead);
float pbuf[34];
int byte=file.Read(pbuf,34*sizeof(float));
m_Ta1=pbuf[0]; //空气参数
m_Ta2=pbuf[1];
m_La=pbuf[2];
m_Roua=pbuf[3];
m_Lmda=pbuf[4];
m_Ca=pbuf[5];
m_Ua=pbuf[6];
m_Tf1=pbuf[7]; //烟气参数
m_Tf2=pbuf[8];
m_Lf=pbuf[9];
m_Rouf=pbuf[10];
m_Lmdf=pbuf[11];
m_Cf=pbuf[12];
m_Uf=pbuf[13];
m_d=pbuf[14]; //蓄热球参数
m_Cp=pbuf[15];
m_Lmdp=pbuf[16];
m_a=pbuf[17];
m_tao=pbuf[18];
m_eps=pbuf[19];
/* m_adw=pbuf[20]; //输出结果
m_fdw=pbuf[21];
m_alfc=pbuf[22];
m_alfh=pbuf[23];
m_k=pbuf[24];
m_F=pbuf[25];
m_N=pbuf[26];
m_V=pbuf[27];*/
m_Xa=pbuf[28];
m_Xb=pbuf[29];
/*m_Xh=pbuf[30];
m_Nowel=pbuf[31];
m_RegeP=pbuf[32];*/
m_Roup=pbuf[33];
UpdateData(false);
file.Close();
}
}
void CRegenator::OnFileSaveAs()
{
CFileDialog SaveDialog(FALSE, // Open...
"hbr", // default filename extension
NULL, // initial filename
OFN_FILEMUSTEXIST|OFN_PATHMUSTEXIST, // options
"Data Files(*.hbr)|*.hbr|All Files(*.*)|*.*||", // two filters for modules
this);
CString sz;
CFile file;
if (SaveDialog.DoModal() == IDOK)
{
sz=SaveDialog.GetFileName();
file.Open(sz,CFile::modeCreate|CFile::modeWrite);
float pbuf[34];
UpdateData(true);
pbuf[0]=m_Ta1; //空气参数
pbuf[1]=m_Ta2;
pbuf[2]=m_La;
pbuf[3]=m_Roua;
pbuf[4]=m_Lmda;
pbuf[5]=m_Ca;
pbuf[6]=m_Ua;
pbuf[7]=m_Tf1; //烟气参数
pbuf[8]=m_Tf2;
pbuf[9]=m_Lf;
pbuf[10]=m_Rouf;
pbuf[11]=m_Lmdf;
pbuf[12]=m_Cf;
pbuf[13]=m_Uf;
pbuf[14]=m_d; //蓄热球参数
pbuf[15]=m_Cp;
pbuf[16]=m_Lmdp;
pbuf[17]=m_a;
pbuf[18]=m_tao;
pbuf[19]=m_eps;
pbuf[33]=m_Roup;
pbuf[20]=m_adw; //输出结果
pbuf[21]=m_fdw;
pbuf[22]=m_alfc;
pbuf[23]=m_alfh;
pbuf[24]=m_k;
pbuf[25]=m_F;
pbuf[26]=m_N;
pbuf[27]=m_V;
pbuf[28]=m_Xa;
pbuf[29]=m_Xb;
pbuf[30]=m_Xh;
pbuf[31]=m_Nowel;
pbuf[32]=m_RegeP;
file.Write(pbuf,34*sizeof(float));
file.Close();
}
}
void CRegenator::OnDxwd()
{ //定性温度计算
float Q1;//烟气放出的热量Q1
UpdateData(TRUE);
Q1=heat.FTa2(m_Lf,m_Cf,m_Tf1,m_Tf2,m_tao);//烟气放出的热量=烟气流量、平均定压比热、入口温度、出口温度、换向时间
m_Ta2=Q1/(m_La*m_Ca*m_tao)+m_Ta1;//空气出口温度=烟气放出的热量、空气入口温度、流量、平均定压比热、换向时间
m_adw=float(int((m_Ta2+m_Ta1)/2*100))/100;//空气定性温度
m_fdw=float(int((m_Tf1+m_Tf2)/2*100))/100;//烟气定性温度
UpdateData(FALSE);
}
void CRegenator::OnDesign()
{// 蓄热室设计
float fai,Fo,Qf,dltt,dlttmax,dlttmin,t1,t2;
float F,V0,V,Nowela,Nowelf,B,Ln,Vn,pdw,ratio;
UpdateData(TRUE);
//读取煤气的数据
CFileDialog OpenDialog(TRUE, // Open...
"hbg", // default filename extension
NULL, // initial filename
OFN_FILEMUSTEXIST|OFN_PATHMUSTEXIST, // options
"Data Files(*.hbg)|*.hbg|All Files(*.*)|*.*||", // two filters for modules
this);
CString sz;
CFile file;
if ( OpenDialog.DoModal() == IDOK )
{
sz=OpenDialog.GetFileName();
file.Open(sz,CFile::modeRead);
float pbuf[15];
file.Read(pbuf,15*sizeof(float));
B=pbuf[8]; //煤气消耗量
Ln=pbuf[11];//实际空气需要量
Vn=pbuf[12];//烟气生成量
ratio=pbuf[13];//抽烟比
file.Close();
}
m_La=float(int(m_Roua*Ln*B*100))/100; //实现空气量的转化
//空气流量=密度、实际空气需要量、煤气消耗量
m_Lf=float(int(m_Rouf*(Vn*ratio/100)*B*100))/100; //实现煤气量的转化
//烟气流量=密度、烟气生成量、抽烟比、煤气消耗量
UpdateData(FALSE);
//蓄热球计算
pdw=float(int((m_adw+m_fdw)/2*100))/100;//蓄热球定性温度
m_Cp=float(int((float) (920+0.25*pdw)*100))/100; //蓄热球比热J/kg.k
m_Lmdp=float(int((float) (2.09+1.861e-3*pdw)*100))/100;//蓄热球导热系数
m_a=float(int(m_Lmdp/(m_Roup*m_Cp)*10000000))/10000000;
//蓄热球导温系数=蓄热球密度、比热
//换热系数计算
m_alfc=float(int(heat.Falfc(m_adw,m_Ua,m_d)*100))/100;
//蓄热球与空气换热系数=空气定性温度、空塔速度、蓄热球直径
m_alfh=float(int(heat.Falfh(m_fdw,m_Uf,m_d)*100))/100;
//蓄热球与烟气换热系数=烟气定性温度、空塔速度、蓄热球直径
Fo=heat.FFo(m_a,m_tao,m_d);
//傅里叶准数=蓄热球导温系数、换向时间、直径
fai=heat.Ffai(Fo);
//傅里叶准数
m_k=float(int(heat.Fk(m_alfh,m_alfc,m_Lmdp,m_d,fai)*100))/100;
//综合传热系数=蓄热球与空气、烟气换热系数、导热系数、直径、傅里叶准数
//所需传热面积计算
Qf=heat.FTa2(m_Lf,m_Cf,m_Tf1,m_Tf2,m_tao);
//烟气放出的热量=烟气流量、平均定压比热、入口温度、出口温度、换向时间
t1=m_Tf1-m_Ta2;//温差
t2=m_Tf2-m_Ta1;
if (t1>=t2)
{dlttmax=t1; dlttmin=t2;}
else {dlttmax=t2; dlttmin=t1;}
dltt=heat.Fdltt(dlttmax,dlttmin);//对数温差
if (dltt==0) {
MessageBox("运算有误,请重新设定参数");
return;
}
F=heat.FF(Qf,m_k,dltt,m_tao);
//所需传热面积=烟气放出的热量、综合传热系数、对数温差、换向时间
m_F=float(int(F*10000))/10000;
//蓄热室设计
m_N=float(int((float) (F/(3.1415*pow(m_d,2)))*100))/100;
//蓄热球数目=传热面积、蓄热球直径
V0=(float) ((3.1415/6)*pow(m_d,3)*m_N);
V=(float) (V0/(1-m_eps));
m_V=float(int(V*100))/100;
//球的填充容积=蓄热球直径、蓄热球数目、空隙率
m_Xh=float(int((float) (V/(m_Xa*m_Xb))*10000))/10000;
//h=球的填充容积、a 、b
//蓄热室阻力
Nowelf=heat.Fnowel(m_Uf,m_fdw,(float) 1.295,m_d)*m_Xh;
//烟气与蓄热室阻力=烟气空塔速度、烟气定性温度、蓄热球直径、h
Nowela= heat.Fnowel(m_Ua,m_adw,(float) 1.293,m_d)*m_Xh;
//空气与蓄热室阻力=空气空塔速度、空气定性温度、蓄热球直径、h
m_Nowel=(Nowelf>Nowela)?Nowelf:Nowela;
m_Nowel=float(int(m_Nowel*100))/100;
//蓄热室功率计算
m_RegeP=float(int(Qf/1000*100))/100; //Kw
//蓄热室功率=烟气放出的热量
UpdateData(FALSE);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -