📄 compute.h
字号:
r=airq*inaircp/fumeq/infumecp;
dtairmax=outfumet-inairt;
dtairmin=infumet-outairt;
if(dtairmax<dtairmin){tmp=dtairmax;dtairmax=dtairmin;dtairmin=tmp;}
if(dtairmax/dtairmin<1.7) dtop=(dtairmax+dtairmin)/2.0;
else dtop=(dtairmax-dtairmin)/log(dtairmax/dtairmin);
dtfumemax=infumet-inairt;
dtfumemin=outfumet-outairt;
if(dtfumemax<dtfumemin){tmp=dtfumemax;dtfumemax=dtfumemin;dtfumemin=tmp;}
if(dtfumemax/dtfumemin<1.7) dtpa=(dtfumemax+dtfumemin)/2.0;
else dtpa=(dtfumemax-dtfumemin)/log(dtfumemax/dtfumemin);
if(dtpa>=0.92*dtop) dt=(dtpa+dtop)/2.0;
else if(nroute>=4)
if(direction) dt=dtpa;
else dt=dtop;
else{
ft=0.89;
dt=ft*dtop;
}
return dt;
}
double __stdcall AirConvectionHeatQuantity(double &diameterp,double &airv,double &inairt,
double &thickp,double &tb,double &ld,
ExhCADData &RecordData){
double d,r,re,adk,v,pr,cl,ub,uk;
d = diameterp - 2 * thickp;
ub = FindAirPhysicsU(tb,RecordData);
uk=FindAirPhysicsU(inairt,RecordData);
v=FindAirPhysicsV(inairt,RecordData);
r=FindAirPhysicsR(inairt,RecordData);
pr=FindAirPhysicsPr(inairt,RecordData);
cl=FindLenModify(ld,RecordData);
re=airv*(inairt+273)*d/1000/v/273;
if(re<2300)
adk=3.656*r/d;
else if(re>10000)
adk=0.023*r*pow(pr,0.4)*pow(re,0.8)*
pow( (inairt+273)/(tb+273) ,0.5)*1000/d;
else
adk=0.116*r*(pow(re,2.0/3.0)-125)*pow(pr,1.0/3.0)*
pow(uk/ub,0.4)*(1+pow(1.0/ld,2.0/3.0))*1000/4.0;
return adk;
}
double __stdcall FumeConvectionHeatQuantity(double &diameterp,double &hdistance,double &vdistance,
double &outfumet,double &fumev,double &row,short &arrange,
ExhCADData &RecordData){
double r,pr,v,cn,ady;
short rn;
rn=(int)row;
fumev=fumev*(outfumet+273)/273;
r=FindFumePhysicsR(outfumet,RecordData);
pr=FindFumePhysicsPr(outfumet,RecordData);
v=FindFumePhysicsV(outfumet,RecordData);
cn=FindRowModify(rn,arrange,RecordData);
if (arrange==0)
ady=0.2*cn*r*pow(pr,0.35)*pow(fumev/v,0.64)/pow(diameterp/1000,0.36);
else
if( (hdistance-diameterp)/(vdistance-diameterp)<0.7)
ady=0.305*cn*r*pow(pr,0.35)*pow(fumev/v,0.6)/pow(diameterp/1000,0.4);
else
ady=0.334*cn*r*pow(pr,0.35)*pow(fumev/v,0.6)*
pow((hdistance-diameterp)/(vdistance-diameterp),0.25)/pow(diameterp/1000,0.4);
return ady;
}
double __stdcall FumeRadiationHeatQuantity(double &h2o,double &co2,
double &diameterp,double &hdistance,double &vdistance,
double &outfumet,double &tb){
double l,eco2,eh2o,afy;
if ((hdistance +vdistance) / diameterp > 7)
l = (2.82 * (hdistance +vdistance) / diameterp - 10.6) * diameterp / 1000;
else
l = (1.87 * (hdistance +vdistance) / diameterp - 4.1) * diameterp / 1000;
eco2 = 0.154 * pow(co2 * l,1.0 / 3.0) /pow(outfumet, 0.5);
eh2o = 0.07 * pow(h2o, 0.8) *pow (l, 0.6) /outfumet;
afy= 5.35 * (eco2 + eh2o) *( pow(outfumet / 100, 4.0)-pow(tb / 100,4.0)) /(outfumet - tb);
return afy;
}
double __stdcall PipeTemperature(double &fumet,double &airt,double &ak,double &ay){
double tb;
tb=airt+(fumet-airt)/(1+ak/ay);
return tb;
}
double __stdcall HeaterTotalPipeLen(double &heatq,double &k,double &dt,
double &diameterp,double &thickp,double &heats){
double dh,dm,totallen;
dh=diameterp - 2 * thickp;
dm=(diameterp + dh) / 2;
heats=heatq/k/dt;
totallen=heats*1000/PI/dm;
return totallen;
}
double __stdcall HeaterSinglePipeLen(double &totalpipelen,double &diameterp,
double &thickp,double &airv,double &airq){
double dh,dm,singlepipelen;
dh=diameterp - 2 * thickp;
dm=(diameterp + dh) / 2/1000;
singlepipelen = 2827 * dm * dm * airv * totalpipelen /airq;
return singlepipelen;
}
double __stdcall HeaterAirLen(double &singlepipelen,double &nroute){
double airlen;
airlen=singlepipelen/nroute;
return airlen;
}
double __stdcall HeaterColNumber(double &fumeq,double &fumev,
double &hdistance,double &diameterp,
double &thickp,double &lengthh){
double d,colnum;
d = diameterp - 2 * thickp;
colnum =(fumeq*1000/ (3600 * fumev * lengthh * (hdistance/1000 - diameterp/1000)))+2.5;
return colnum;
}
double __stdcall HeaterRowNumber(double &totalpipelen,double &lengthh,
double &col,double &nroute){
double rownum;
rownum = totalpipelen*1000 / lengthh /col;
return rownum;
}
double __stdcall AirResistance(double &inairt,double &outairt,double &airv,
double &diameterp,double &nroute,
double &thickp,double &singlepipelen,short &rough,
ExhCADData &RecordData){
double airt,d,p,v,r,h1,h2,a,n,re,e,airf;
d = (diameterp - 2 * thickp)/1000;
airt=(inairt+outairt)/2.0;
e=0.5*2+(nroute-1)*1.5;
p=FindAirPhysicsP(airt,RecordData);
v=FindAirPhysicsV(airt,RecordData);
if (rough==0){ a=0.32;n=0.25; }
else if(rough==1){ a=0.129;n=0.12; }
else{ a=0.175;n=0.12;}
airv=airv*(airt+273)/273;
re=airv*d/v;r=a/pow(re,n);
h1=pow(airv,2.0)*r*singlepipelen*p/d/2;h2=pow(airv,2.0)*e*p/2;
airf=(h1+h2)/1000;
return airf;
}
double __stdcall FumeResistance(double &infumet,double &outfumet,
double &hdistance,double &vdistance,
double &diameterp,double &fumev,double &row,
ExhCADData &RecordData){
double fumet,p,v,re,eu,e1,e2,fumef;
fumet=(infumet+outfumet)/2.0;
fumev=fumev*(fumet+273)/273;
p=FindFumePhysicsP(fumet,RecordData);
v=FindFumePhysicsV(fumet,RecordData);
re=fumev*diameterp/v/1000;
e1=hdistance/diameterp;e2=vdistance/diameterp;
eu=pow(re,-0.15)*(0.176+0.32*e2/pow(e1-1,0.43+1.13/e2));
fumef=pow(fumev,2.0)*eu*p*row/2;
return fumef;
}
double __stdcall PipeTotalWeight(double &unitweight,double &row,double &col,double &lengthh ){
double totalpipeweight,p,q;
p=col*row;
q=p*lengthh;
totalpipeweight=q*unitweight;
return totalpipeweight/1000;
}
void __stdcall ComputeFun(ExhCADSetup &RecordSetup,
ExhCADInput &RecordInput,
ExhCADDraw &RecordDraw,
ExhCADData &RecordData){
double h2o,co2,n2,
use,lose,protect;
//lengthc,width,heighth,
//lengthw,diameterw,thicks;
short arrange,rough,direction;
double inairt,outairt,airq,airv,
infumet,fumeq,fumev,
diameterp,thickp,hdistance,vdistance,nroute;
double row,col,lengthh,
heatq,heats,heatc,dt,
airf,fumef,
outfumet,inwallt,outwallt;
double ld,tbin,tbout,
adkin,afkin,akin,adyin,afyin,ayin,kin,
adkout,afkout,akout,adyout,afyout,ayout,kout;
double totalpipelen,singlepipelen;
double insertthick,insertwide;
short insertshape,material;
long order=0;
double q,k;
double unitweight,totalweight;
GetRecordSetup(h2o,co2,n2,
arrange,rough,direction,
use,lose,protect,
insertshape,material,
insertthick,insertwide,
unitweight,
//lengthc,width,heighth,
//lengthw,diameterw,thicks,
RecordSetup);
GetRecordInput(inairt,outairt,airq,airv,
infumet,fumeq,fumev,
diameterp,thickp,
hdistance,vdistance,nroute,
//unitweight,
RecordInput);
heatq= TransferHeatQuantity(inairt,outairt,airq,lose,RecordData);
q=heatq;
outfumet=FumeOutTemperature(infumet,fumeq,protect,heatq,order,RecordData);
dt=TemperatureDifference(inairt,outairt,infumet,outfumet,fumeq,airq,nroute,direction,RecordData);
ld=60.0,row=10;
tbin=inwallt=infumet-150,tbout=outwallt=outfumet-100,order=0;
do{
inwallt=tbin,outwallt=tbout;
adkin=AirConvectionHeatQuantity(diameterp,airv,inairt,thickp,tbin,ld,RecordData);
afkin=0.0;
akin=adkin+afkin;
adyin=FumeConvectionHeatQuantity(diameterp,hdistance,vdistance,infumet,fumev,row,arrange,RecordData);
afyin=FumeRadiationHeatQuantity(h2o,co2,diameterp,hdistance,vdistance,infumet,tbin);
ayin=adyin+afyin;
kin=akin * ayin / (akin + ayin);
tbin=PipeTemperature(infumet,inairt,akin,ayin);
adkout=AirConvectionHeatQuantity(diameterp,airv,outairt,thickp,tbout,ld,RecordData);
afkout=0.0;
akout=adkout+afkout;
adyout=FumeConvectionHeatQuantity(diameterp,hdistance,vdistance,outfumet,fumev,row,arrange,RecordData);
afyout=FumeRadiationHeatQuantity(h2o,co2,diameterp,hdistance,vdistance,outfumet,tbout);
ayout=adyout+afyout;
kout=ayout * ayin / (ayout + akout);
tbout=PipeTemperature(outfumet,outairt,akout,ayout);
heatc=use*(kout + kin) / 2;
k=heatc;
totalpipelen=HeaterTotalPipeLen(q,k,dt,diameterp,thickp,heats);
singlepipelen=HeaterSinglePipeLen(totalpipelen,diameterp,thickp,airv,airq)*1000;
lengthh=HeaterAirLen(singlepipelen,nroute);
col=HeaterColNumber(fumeq,fumev,hdistance,diameterp,thickp,lengthh);
row=HeaterRowNumber(totalpipelen,lengthh,col,nroute);
ld=lengthh/nroute;
}while (fabs(tbin - inwallt) > 50 && fabs(tbout - outwallt)>50 && order <Limit);
airf=AirResistance(inairt,outairt,airv,diameterp,nroute,thickp,singlepipelen,rough,RecordData);
fumef=FumeResistance(infumet,outfumet,hdistance,vdistance,diameterp,fumev,row,RecordData);
totalweight=PipeTotalWeight(unitweight,row,col,lengthh);
// totalweight=unitweight;
SetRecordDraw(row,col,lengthh,
heatq,heats,heatc,dt,
airf,fumef,
outfumet,inwallt,outwallt,totalweight,RecordDraw);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -