📄 cooler.cpp
字号:
// cooler.cpp: implementation of the cooler class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "simulinkcool.h"
#include "cooler.h"
#include "varDef.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
#include <iostream.h>
cooler::cooler()
{
mycoolerd.piag01 = 4683;
mycoolerd.pcag02 = 3754;
mycoolerd.piag03 = 2578;
mycoolerd.piag04 = 1785;
mycoolerd.pcag05 = 1433;
mycoolerd.piag06 = 1280;
Pg07 = 9671;
Pg08 = 7335;
Pg09 = 4695;
Pg10 = 3980;
Pg11 = 2500;
Pg12 = 2080;
mycoolerd.pcag13 = -61;
Pg14 = -5000;
mycoolerd.pig14 = 0;
w = 0.0289;
Tk = 20;
Tl = 1400;
mycoolerd.ftt231= 0;
mycoolerd.trag01 = 25;
mycoolerd.tiag02 = 25;
mycoolern.Tg2=25;mycoolern.Tg3=25;mycoolern.Tg4=25;mycoolern.Tg5=25;Tg6=25;
Cq=1006;
M1=0;M2=0;M3=0;M4=0;M5=0;M6=0;
s1=11.33;s2=15.8666;s3=11.33;s4=9.06;s5=7.93;s6=6.8;
mycoolern.Ts1=30;mycoolern.Ts2=30;mycoolern.Ts3=30;mycoolern.Ts4=30;mycoolern.Ts5=30;mycoolern.Ts6=30;
Tq1=25;Tq2=25;Tq3=25;Tq4=25;Tq5=25;Tq6=25;
mycoolern.sh1 = 0;mycoolern.sh2 =0;mycoolern.sh3 =0;mycoolern.sh4=0;mycoolern.sh5=0;mycoolern.sh6=0;
Tld1=0;Tld2=0;Tld3=0;Tld4=0;Tld5=0;Tld6=0;
t1 = 294;t2=0;t3=0;t4=0;t5=0;t6=0;
xishu = 0.2;
mycoolern.isf =0.5;
P1 = -61;
mycoolern.Pg2 = -61.1378;
mycoolern.Pg3 = -216;
mycoolern.Pg4 = -276;
mycoolern.Pg5 = -336;
P6 = -396;
B = -137;
mycoolerd.fpt211 = -370;
mycoolerd.g32 = 4.6;
mycoolerd.g33 = 7.5;
alfa = 4;
gufa = 1;
qifa = 0.1;
qiliang = 34.529;
bili2 = 0.2163;
bili3 = 0.3556;
ybili = 0.447;
dm1 = 0;dm2 =0;dm3=0;dm4=dm5=dm6=0;
um1 = um2 =um3 = um4 = um5 = um6=0;
temperature = new double[25];
roompress = new double[25];
press = new double[25];
mycoolerd.zikg04 = mycoolerd.zikg06 = mycoolerd.zikg07 = mycoolerd.zikg08 = mycoolerd.zikg09= mycoolerd.zikg10=1;
}
cooler::~cooler()
{
delete []temperature;
delete []roompress;
delete []press;
}
cooler::cooler(cooler* &pcooler)
{
mycoolerd.piag01 = 0;
mycoolerd.pcag02 = 0;
mycoolerd.piag03 = 0;
mycoolerd.piag04 = 0;
mycoolerd.pcag05 = 0;
mycoolerd.piag06 = 0;
Pg07 = 9671;
Pg08 = 7335;
Pg09 = 4695;
Pg10 = 3980;
Pg11 = 2500;
Pg12 = 2080;
mycoolerd.pcag13 = -50;
Pg14 = -596;
mycoolerd.pig14 = 0;
weight = 0.0289;
Tk = 20;
Tl = 1347;
C = 0.2;
D = 0.3;
mycoolerd.ftt231= 0;
mycoolerd.trag01 = 25;
mycoolerd.tiag02 = 25;
B = -137;
mycoolerd.fpt211 = -370;
P1 = -61;
mycoolern.Pg2 = 249;
mycoolern.Pg3 = -216;
mycoolern.Pg4 = -276;
mycoolern.Pg5 = -336;
P6 = -396;
alfa =1.5;
mycoolern.Tg2=25;mycoolern.Tg3=25;mycoolern.Tg4=25;mycoolern.Tg5=25;
Cq=1.006;Cg=0.8;
M1=0;M2=0;M3=0;M4=0;M5=0;M6=0;
s1=14.98;s2=9.99;s3=9.99;s4=9.99;s5=8.74;s6=7.49;
mycoolern.Ts1=85;mycoolern.Ts2=85;mycoolern.Ts3=85;mycoolern.Ts4=85;mycoolern.Ts5=85;mycoolern.Ts6=85;
Tq1=25;Tq2=25;Tq3=25;Tq4=25;Tq5=25;Tq6=25;
mycoolern.sh1 = 0.6;mycoolern.sh2 =0;mycoolern.sh3 =0;mycoolern.sh4=0;mycoolern.sh5=0;mycoolern.sh6=0;
t1 = 294;t2=0;t3=0;t4=0;t5=0;t6=0;
mycoolern.isf =0.5;
mycoolerd.g32 = 4.7;
mycoolerd.g33 = 7.5;
dm1 = 0;dm2 =0;dm3=0;
temperature = new double[15];
roompress = new double[15];
press = new double[15];
temperature = pcooler->temperature;
roompress = pcooler->roompress;
press = pcooler->press;
}
void cooler::roompresscompute(double* & Press,double* &windcount,double* &windcount2)
{
int i=0;
double Fg03 = 0.1849*mycoolerd.zikg04*sqrt(Pg07-mycoolerd.piag01);
if(mycoolern.sh1<0.4)
F1c = Fg03;
else
F1c = 0.1115/mycoolern.sh1*sqrt(mycoolerd.piag01-mycoolerd.pcag13);
dm1 = Fg03-F1c;
mycoolerd.piag01 += dm1/s1;
windcount[i] = F1c;
windcount2[i] = Fg03;
i++;
double Fg04 = 0.1443*mycoolerd.zikg06*sqrt(Pg08-mycoolerd.pcag02);
if(mycoolern.sh2<0.4)
F2c = Fg04;
else
F2c = 0.0822/mycoolern.sh2*sqrt(mycoolerd.pcag02-mycoolern.Pg2);
dm2 = Fg04-F2c;
mycoolerd.pcag02 +=dm2/s2;
windcount[i] = F2c;
windcount2[i] = Fg04;
i++;
double Fg05 = 0.2521*mycoolerd.zikg07*sqrt(Pg09-mycoolerd.piag03);
if(mycoolern.sh3<0.4)
F3c = Fg05;
else
F3c = 0.1483/mycoolern.sh3*sqrt(mycoolerd.piag03-mycoolern.Pg3);
dm3 = Fg05-F3c;
mycoolerd.piag03 += dm3/s3;
windcount[i] = F3c;
windcount2[i] = Fg05;
i++;
double Fg07 = 0.1654*mycoolerd.zikg08*sqrt(Pg10-mycoolerd.piag04);
if(mycoolern.sh4<0.2)
F4c = Fg07;
else
F4c = 0.0597/mycoolern.sh4*sqrt(mycoolerd.piag04-mycoolern.Pg4);
dm4 = Fg07-F4c;
mycoolerd.piag04 +=dm4/s4;
windcount[i] = F4c;
windcount2[i] = Fg07;
i++;
double Fg08 = 0.3236*mycoolerd.zikg09*sqrt(Pg11-mycoolerd.pcag05);
if(mycoolern.sh5<0.2)
F5c = Fg08;
else
F5c = 0.0908/mycoolern.sh5*sqrt(mycoolerd.pcag05-mycoolern.Pg5);
dm5 = Fg08-F5c;
mycoolerd.pcag05 += dm5/s5;
windcount[i] = F5c;
windcount2[i] = Fg08;
i++;
double Fg09 = 0.2389*mycoolerd.zikg10*sqrt(Pg12-mycoolerd.piag06);
if(mycoolern.sh6<0.2)
F6c = Fg09;
else
F6c = 0.0596/mycoolern.sh6*sqrt(mycoolerd.piag06-P6);
dm6 = Fg09-F6c;
mycoolerd.piag06 +=dm6/s6;
windcount[i] = F6c;
}
void cooler::Presscompute(double* & Press,double* & windcount)
{
double Fe1;
double Fe2;
double Fe3;
double Fe4;
double Fe5;
double F2;
double F3;
double Fy;
int i=0;
F2 = 1.4365*sqrt(mycoolerd.pcag13-B);
Fe1 = 1.4367*sqrt(mycoolerd.pcag13-mycoolern.Pg2);
um1 = F1c-F2-Fe1;
mycoolerd.pcag13 += um1/s1;
windcount[i] = F2;
i++;
windcount[i] = Fe1;
i++;
//******************************
Fe2 = 0.7366*sqrt(mycoolern.Pg2-mycoolern.Pg3);
um2 = F2c-Fe2+Fe1;
mycoolern.Pg2 += um1/s2;
windcount[i] = Fe2;
i++;
//**********************************
F3 = 1.5657*sqrt(mycoolern.Pg3-mycoolerd.fpt211);
Fe3 = 0.1076*sqrt(mycoolern.Pg3-mycoolern.Pg4);
um3 = F3c+Fe2-F3-Fe3;
mycoolern.Pg3 +=um3/s3;
windcount[i] = F3;
i++;
//***********************************
Fe4 = 1.1081*sqrt(mycoolern.Pg4-mycoolern.Pg5);
um4 = F4c-Fe4+Fe3;
mycoolern.Pg4 += um4/s4;
windcount[i] = Fe4;
i++;
//**********************************
Fe5 = 2.4736*sqrt(mycoolern.Pg5-P6);
um5 = F5c-Fe5+Fe4;
mycoolern.Pg5 += um5/s5;
windcount[i] = Fe5;
i++;
//*************************************
Fy = 1.8326*sqrt(P6-Pg14);
um6 = F6c+Fe5-Fy;
P6 += um6/s6;
mycoolerd.pig14 = P6+200;
windcount[i] = Fy;
i++;
windcount[i] = Fe3;
}
void cooler::temperaturecompute(double* & temperature,double* & windcount1,double*& windcount2,double*&windcount3)
{
double Q,Q3,Q4,Q5,Q6;
int i = 0;
//******************************
double td1,td2,td;
td2 = mycoolern.Ts1-Tk;
mycoolern.Ts1 = mycoolern.Ts1*(1-gufa)+gufa*(w*Tl+mycoolern.Ts1*M1)/(M1+w);
Tld1 = 0.75*0.13*mycoolerd.g32*mycoolern.sh1*4.5333*1.45/60;
td1 = Tl-mycoolerd.trag01;
if(td1>-50&&td1<0)
td1 = -td1;
td = (td1-td2)/log(td1/td2);
Cg = 699.5+0.31812*(mycoolern.Ts1+273)-0.000062308*(mycoolern.Ts1+273)*(mycoolern.Ts1+273)-0.0000000013753*(mycoolern.Ts1+273)*(mycoolern.Ts1+273)*(mycoolern.Ts1+273)-0.00000000000051388*(mycoolern.Ts1+273)*(mycoolern.Ts1+273)*(mycoolern.Ts1+273)*(mycoolern.Ts1+273);
mycoolern.sh1 = mycoolern.sh1+(w-Tld1)/(1-mycoolern.isf)/s1/1.45;
Q = 1000*td*mycoolern.sh1*s1*(1-mycoolern.isf)*1.45*alfa;
mycoolerd.trag01 =0.9*mycoolerd.trag01+0.1*(Tq1*windcount2[0]+mycoolerd.trag01*s1-windcount3[0]*mycoolerd.trag01)/(s1);
if(Q<0)
{
AfxMessageBox("Q<0");
return ;
}
M1 +=w-Tld1;
Tq1 =(Q/Cq/windcount2[0]+25);
mycoolern.Ts1 =(1-gufa)*mycoolern.Ts1+gufa*(mycoolern.Ts1-Q/Cg/M1/1000);
i++;
//**********************************
td2 = mycoolern.Ts2-Tk;
mycoolern.Ts2= (1-gufa)*mycoolern.Ts2+gufa*(Tld1*mycoolern.Ts1+M2*mycoolern.Ts2)/(Tld1+M2);
Tld2 = 0.75*0.13*mycoolerd.g32*mycoolern.sh2*4.53*1.45/60;
Q3 = mycoolern.Tg3*windcount3[2];
Q4 = windcount3[1]*mycoolerd.trag01;
Q5 = mycoolern.Tg2*windcount3[3];
mycoolern.Tg2 =0.9*mycoolern.Tg2+0.1*(Tq2*windcount2[1]+s2*mycoolern.Tg2+Q3+Q4-Q5)/(s2);
mycoolerd.ftt231= mycoolern.Tg2;
td1 = mycoolern.Ts1-mycoolern.Tg2;
td = (td1-td2)/log(td1/td2);
Cg = 699.5+0.31812*(mycoolern.Ts2+273)-0.000062308*(mycoolern.Ts2+273)*(mycoolern.Ts2+273)-0.0000000013753*(mycoolern.Ts2+273)*(mycoolern.Ts2+273)*(mycoolern.Ts2+273)-0.00000000000051388*(mycoolern.Ts2+273)*(mycoolern.Ts2+273)*(mycoolern.Ts2+273)*(mycoolern.Ts2+273);
mycoolern.sh2 = mycoolern.sh2+(Tld1-Tld2)/(1-mycoolern.isf)/s2/1.45;
Q = 1000*td*s2*mycoolern.sh2*(1-mycoolern.isf)*10*1.45;
M2 +=Tld1-Tld2;
Tq2 =(Q/Cq/windcount2[1]+25);
mycoolern.Ts2 = (1-gufa)*mycoolern.Ts2+gufa*(mycoolern.Ts2-Q/Cg/M2/1000);
i++;
//*********************************
td2 = mycoolern.Ts3-Tk;
mycoolern.Ts3= gufa*(Tld2*mycoolern.Ts2+M3*mycoolern.Ts3)/(Tld2+M3)+(1-gufa)*mycoolern.Ts3;
Q3 = Cq*mycoolern.Tg3*windcount3[7];
Q4 = Cq*windcount3[2]*mycoolern.Tg3;
Q5 = windcount2[2]*Cq*Tq3;
mycoolern.Tg3 = 0.9*mycoolern.Tg3+0.1*(Q5-Q4+s3*mycoolern.Tg3*Cq-Q3)/(s3)/Cq;
td1 = mycoolern.Ts2-mycoolern.Tg3;
td = (td1-td2)/log(td1/td2);
Tld3 = 0.75*0.13*mycoolerd.g32*mycoolern.sh3*4.53*1.45/60;
Cg = 699.5+0.31812*(mycoolern.Ts3+273)-0.000062308*(mycoolern.Ts3+273)*(mycoolern.Ts3+273)-0.0000000013753*(mycoolern.Ts3+273)*(mycoolern.Ts3+273)*(mycoolern.Ts3+273)-0.00000000000051388*(mycoolern.Ts3+273)*(mycoolern.Ts3+273)*(mycoolern.Ts3+273)*(mycoolern.Ts3+273);
mycoolern.sh3 = mycoolern.sh3+(Tld2-Tld3)/(1-mycoolern.isf)/s3/1.45;
Q = 1000*td*(1-mycoolern.isf)*mycoolern.sh3*s3*10*1.45;
M3 +=Tld2-Tld3;
Tq3 =(Q/Cq/windcount2[2]+25);
mycoolern.Ts3 = (1-gufa)*mycoolern.Ts3+gufa*(mycoolern.Ts3-Q/Cg/M3/1000);
i++;
//********************************
td2 = mycoolern.Ts4-Tk;
mycoolern.Ts4= gufa*(Tld3*mycoolern.Ts3+M4*mycoolern.Ts4)/(Tld3+M4)+(1-gufa)*mycoolern.Ts4;
Q4 = windcount2[3]*Cq*Tq4;
Q3 = Cq*mycoolern.Tg3*windcount3[7];
Q5 = Cq*mycoolern.Tg4*windcount3[4];
mycoolern.Tg4= 0.9*mycoolern.Tg4+0.1*(Q4-Q5+Cq*s4*mycoolern.Tg4+Q3)/(s4)/Cq;
td1 = mycoolern.Ts3-mycoolern.Tg4;
Tld4 = 0.75*0.13*mycoolerd.g33*mycoolern.sh4*4.53*1.45/60;
td = (td1-td2)/log(td1/td2);
Cg = 699.5+0.31812*(mycoolern.Ts4+273)-0.000062308*pow(mycoolern.Ts4+273,2)-0.0000000013753*pow(mycoolern.Ts4+273,3)-0.00000000000051388*pow(mycoolern.Ts4+273,4);
mycoolern.sh4 = mycoolern.sh4+(Tld3-Tld4)/(1-mycoolern.isf)/s4/1.45;
Q = 1000*td*s4*(1-mycoolern.isf)*mycoolern.sh4*2*1.45;
M4 +=Tld3-Tld4;
Tq4 =(Q/Cq/windcount2[3]+25);
mycoolern.Ts4 = (1-gufa)*mycoolern.Ts4+gufa*(mycoolern.Ts4-Q/Cg/M4/1000);
//********************************
td2 = mycoolern.Ts5-mycoolern.Tg5;
mycoolern.Ts5= gufa*(Tld4*mycoolern.Ts4+M5*mycoolern.Ts5)/(Tld4+M5)+(1-gufa)*mycoolern.Ts5;
Q5 = windcount2[4]*Cq*Tq5;
Q3 = Cq*mycoolern.Tg4*windcount3[4];
Q4 = Cq*mycoolern.Tg5*windcount3[5];
mycoolern.Tg5 = 0.9*mycoolern.Tg5+0.1*(Q5+Q3-Q4+s5*Cq*mycoolern.Tg5)/s5/Cq;
td1 = mycoolern.Ts4-mycoolern.Tg5;
Tld5 = 0.75*0.13*mycoolerd.g33*mycoolern.sh5*4.53*1.45/60;
td = (td1-td2)/log(td1/td2);
Cg = 699.5+0.31812*(mycoolern.Ts5+273)-0.000062308*pow(mycoolern.Ts5+273,2)-0.0000000013753*pow(mycoolern.Ts5+273,3)-0.00000000000051388*pow(mycoolern.Ts5+273,4);
mycoolern.sh5 = mycoolern.sh5+(Tld4-Tld5)/(1-mycoolern.isf)/s5/1.45;
Q = 1000*td*s5*mycoolern.sh5*(1-mycoolern.isf)*2*1.45;
M5 +=Tld4-Tld5;
Tq5 =(Q/Cq/windcount2[4]+25);
mycoolern.Ts5 = (1-gufa)*mycoolern.Ts5+gufa*(mycoolern.Ts5-Q/Cg/M5/1000);
//*******************************
td2 = mycoolern.Ts6-Tk;
mycoolern.Ts6= gufa*(Tld5*mycoolern.Ts5+M6*mycoolern.Ts6)/(Tld5+M6)+(1-gufa)*mycoolern.Ts6;
Q6 = Tq6*Cq*windcount2[5];
Q3 = Cq*mycoolern.Tg5*windcount3[5];
mycoolerd.tiag02 = 0.9*mycoolerd.tiag02+0.1*(Q6+Q3+Cq*s6*mycoolerd.tiag02-Cq*windcount3[6]*mycoolerd.tiag02)/s6/Cq;
td1 = mycoolern.Ts5-mycoolerd.tiag02;
Tld6 = 0.75*0.13*mycoolerd.g33*mycoolern.sh6*4.53*1.45/60;
td = (td1-td2)/log(td1/td2);
Cg = 699.5+0.31812*(mycoolern.Ts6+273)-0.000062308*pow(mycoolern.Ts6+273,2)-0.0000000013753*pow(mycoolern.Ts6+273,3)-0.00000000000051388*pow(mycoolern.Ts6+273,4);
mycoolern.sh6 = mycoolern.sh6+(Tld5-Tld6)/(1-mycoolern.isf)/s6/1.45;
Q = 1000*td*mycoolern.sh6*s6*(1-mycoolern.isf)*40*1.45;
M6 +=Tld5-Tld6;
Tq6 =(Q/Cq/windcount2[5]+25);
mycoolern.Ts6 = (1-gufa)*mycoolern.Ts6+gufa*(mycoolern.Ts6-Q/Cg/M6/1000);
}
bool cooler::simulink()
{
return compute(roompress,press,temperature);
}
bool cooler::compute(double* & roominpress,double*& press,double*& temperature)
{
double * windonroom = new double[15];
double * windinroom = new double[15];
double * flowwind = new double[15];
double *& windcountonroom = windonroom;
double *& windcountinroom = windinroom;
double *& flowwindcount = flowwind;
roompresscompute(roominpress,windcountonroom,windcountinroom);
Presscompute(press,flowwindcount);
temperaturecompute(temperature,windcountinroom,windcountonroom,flowwindcount);
delete []windcountonroom;
delete []windcountinroom;
delete []flowwindcount;
return true;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -