油氣儲運網(wǎng)
標(biāo)題: 油庫設(shè)計熱力計算完整程序 [打印本頁]
作者: yifang 時間: 2012-9-12 19:13
標(biāo)題: 油庫設(shè)計熱力計算完整程序
油庫設(shè)計熱力計算完整程序
#define Tqi 13.3
#define Ttu 3.4
#define D 23.76
#define H 12.53
#define PI 3.14159
#define P 800
#define fn 6
#define v 4.5
#define i 0.1
#define N 5
#define Tys 55.0
#define Tyz 70.0
#define Kding 0.35
#define Kdi 0.12
#define Fding 460.1
#define Fbi 935.3
#define Fdi 433
#define nd_80 35
#define md_20 897
#define u 0.0581
#include <stdio.h>
#include <math.h>
float R0(float MPa)
{ if(MPa>0.5)
return (0.00086);
else if(MPa<0.2)
return (0.0026);
else return (0.0017);
}
double Insert(double x1,double x2,double y1,double y2,double x)
{
return (y1+(y2-y1)/(x2-x1)*(x-x1));
}
float Md(float t)
{ return (md_20-(1.825-0.001315*md_20)*(t-20));
}
float Br(float t)
{ int j;
float t1,t2,C1,C2;
float C[12]={1.696,1.729,1.758,1.792,1.825,1.859,
1.888,1.921,1.955,1.985,2.018,2.047};
for(j=0;j<=11;j++)
{ if(j*10.0<=t&&(j+1)*10.0>=t)
{ t1=j*10.0; t2=(j+1)*10.0;
C1=C[j]; C2=C[j+1];
break;
}
}
return (Insert(t1,t2,C1,C2,t));
}
float Pz(float md)
{ int k;
float B[30]={1.151,1.130,1.108,0.997,0.974,0.953,
0.931,0.910,0.888,0.866,0.845,0.824,
0.803,0.782,0.760,0.739,0.718,0.696,
0.674,0.653,0.632,0.612,0.592,0.572,
0.553,0.534,0.516,0.497,0.479,0.462};
float md1,md2,B1,B2;
for(k=0;k<=29;k++)
{ if(md>=k/100.0+0.73&&md<=(k+1)/100.0+0.73)
{ md1=k/100.0+0.73; md2=(k+1)/100.0+0.73;
B1=B[k]; B2=B[k+1];
break;
}
}
return (Insert(md1,md2,B1,B2,md));
}
float Fr( float Gr, float Pr, float A, float d)
{ float e,n,a2,Td;
if(Gr*Pr>2.0e7)
{e=0.135; n=1.0/3;}
else if(Gr*Pr>=500&&Gr*Pr<=2.0e7)
{e=0.54; n=1.0/4;}
else {e=1.18; n=1.0/8;}
a2=e*A/d*pow((Gr*Pr),n);
return a2;
}
float BI_wen(float Tz,float Ty,float MPa,float d)
{ float Td,Tb,md_Td,c,A,B;
float Gr,Pr,a2,K0; double nd_Td;
Tb=Tz-5;
do
{Tb-=0.01;
Td=(Tb+Ty)/2;
nd_Td=nd_80*(1.0e-6)*exp((-u)*(Td-80));
md_Td=Md(Td);
c=Br(Td);
A=117.5/Md(15.0)*(1-0.00054*Td);
B=Pz(md_Td/1000);
Gr=9.81*B*1.0e-3*(Tb-Ty)*d*d*d/(nd_Td*nd_Td);
Pr=(nd_Td*c*1.0e3*md_Td)/A;
a2=Fr(Gr,Pr,A,d);
K0=1/((1/a2)+R0(MPa));
}
while(fabs(Ty+K0/a2*(Tz-Ty)-Tb)>0.01);
printf("\n\t |%5.2f +(%5.2f/%5.2f)*(%5.2f-%5.2f)-%5.2f|=|%f|<=0.01",Ty,K0,a2,Tz,Ty,Tb,(Ty+K0/a2*(Tz-Ty)-Tb));
printf("\n\t Tb=%5.2f, K0=%5.1f.",Tb,K0);
return K0;
}
void main()
{ float Hbao,Ty,Dr,a,S,Kbi,K,Tj,md,c,Tz,MPa,d,K0,F,L;
double Q1,Q2,Q3,Q;
printf("\n\t Input the value of Tz,MPa and d:\t");
scanf("%f%f%f",&Tz,&MPa,&d);
a=10+6*sqrt(v);
Tj=((4*H/D+1)*Tqi+Ttu)/(4*H/D+2);
{ if((Tyz-Tj)/(Tys-Tj)<2)
Ty=(Tys+Tyz)/2.0;
else Ty=Tj+(Tyz-Tys)/(log((Tyz-Tj)/(Tys-Tj)));
}
S=i*pow((1+i),N)/(pow((1+i),N)-1);
Dr=0.032+0.00013*Ty;
Hbao=sqrt(fn*Dr*3.6/4.187*8400*(Tys-Tqi)/(P*S))-Dr*3.6/(a*4.187);
printf("\n\t Hbao=%4.2fmm.",Hbao);
Kbi=Dr*1000/Hbao;
K=(Kding*(Fding+0.1*Fbi)+Kbi*0.9*Fbi+Kdi*Fdi)/(Fding+Fbi+Fdi);
md=Md(Ty); c=Br(Ty);
Q1=PI*D*D/4*0.9*H*md*c*(Tyz-Tys);
Q2=6*12.5/100*PI*D*D/4*0.9*H*md;
Q3=K*(Fding+Fbi+Fdi)*(Ty-Tj);
Q=(Q1+Q2)/(3.6*48)+Q3;
K0=BI_wen(Tz,Ty,MPa,d);
printf("\n\t Q1=%7.0fkJ, Q2=%7.0fkJ.\n\t Q3=%7.0fW, Q=%7.0fW.",Q1,Q2,Q3,Q);
F=1.1*Q/(K0*(Tz-Ty)); L=F/(PI*d);
printf("\n\t F =%5.1fm2, L=%6.1fm.",F,L);
}