⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 regenator.cpp

📁 《蓄热式陶瓷球燃烧器设计系统(版本:1.01aFinal)》为自由软件
💻 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 + -