输气编程作业.docx
《输气编程作业.docx》由会员分享,可在线阅读,更多相关《输气编程作业.docx(18页珍藏版)》请在冰豆网上搜索。
输气编程作业
姓名:
班级:
学号:
程序一:
#defineN14
#defineR8.31447
#include
#include
voidmain()
{
doublea[58]={0.153832600,1.341953000,-2.998583000,-0.048312280,0.375796500,-1.589575000,
-0.053588470,0.886594630,-0.710237040,-1.471722000,1.321850350,-0.786659250,
2.291290e-9,0.157672400,-0.436386400,-0.044081590,-0.003433888,0.032059050,
0.024873550,0.073322790,-0.001600573,0.642470600,-0.416260100,-0.066899570,
0.279179500,-0.696605100,-0.002860589,-0.008098836,3.150547000,0.007224479,
-0.705752900,0.534979200,-0.079314910,-1.418465000,-5.99905e-17,0.105840200,
0.034317290,-0.007022847,0.024955870,0.042968180,0.746545300,-0.291961300,
7.294616000,-9.936757000,-0.005399808,-0.243256700,0.049870160,0.033733797,
1.874951000,0.002168144,-0.658716400,0.000205518,0.009776195,-0.020487080,
0.015573220,0.006862415,-0.001226752,0.002850908};
intb[58]={1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,
2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,4,4,4,
4,4,4,4,5,5,5,5,5,6,6,7,7,8,8,8,9,9};
intc[58]={0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,
1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,0,0,1,
1,1,1,1,0,1,1,1,1,0,1,0,1,1,1,1,1,1};
intk[58]={0,0,0,0,0,0,0,0,0,0,0,0,3,2,2,2,4,4,0,0,
2,2,2,4,4,4,4,0,1,1,2,2,3,3,4,4,4,0,0,2,
2,2,4,4,0,2,2,4,4,0,2,0,2,1,2,2,2,2};
floatu[58]={0.0,0.5,1.0,3.5,-0.5,4.5,0.5,7.5,9.5,6.0,12.0,12.5,-6.0,2.0,3.0,2.0,2.0,11.0,-0.5,0.5,
0.0,4.0,6.0,21.0,23.0,22.0,-1.0,-0.5,7.0,-1.0,6.0,4.0,1.0,9.0,-13.0,21.0,8.0,-0.5,0.0,2.0,
7.0,9.0,22.0,23.0,1.0,9.0,3.0,8.0,23.0,1.5,5.0,-0.5,4.0,7.0,3.0,0.0,1.0,0.0};
intg[58]={0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,1,0,0,0,1,0,0,1,1,1,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,1,0,0};
intq[58]={0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,
0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,1,0,0,0,
0,1,0,0,0,0,1,0,1,0,0,1,0,0,0,0,0,1};
intf[58]={0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,
0,0,0,0,0,0,1,0,0,1,0,0,0,0,1,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
ints[58]={0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
intw[58]={0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
doubleM[N]={44.0100,28.0135,2.0159,28.0100,16.0430,30.0700,44.0970,
58.1230,58.1230,72.1500,72.1500,86.1770,100.2024,114.2310};
doubleE[N]={241.960600,99.737780,26.957940,105.534800,151.318300,244.166700,298.118300,
324.068900,337.638900,365.599900,370.682300,402.636293,427.722630,450.325022};
doubleK[N]={0.4557489,0.4479135,0.3514916,0.4533894,0.4619255,0.5279209,0.5837490,
0.6406937,0.6341423,0.6738577,0.6798307,0.7175118,0.7525189,0.7849550};
doubleG[N]={0.189065,0.027815,0.034369,0.038953,0.0,0.079300,0.141239,
0.256692,0.281835,0.332267,0.366911,0.289731,0.337542,0.383381};
doubleQ[N]={0.690,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0};
doubleF[N]={0.0,0.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0};
intS[N]={0};
intW[N]={0};
doubleEx[N][N]={{1.0,1.022740,1.281790,1.5,0.960644,0.925053,0.960237,0.906849,0.897362,0.726255,0.859764,0.855134,0.831229,0.808310},
{1.022740,1.0,1.086320,1.005710,0.971640,0.970120,0.945939,0.946914,0.973384,0.959340,0.945520,1.0,1.0,1.0},
{1.281790,1.086320,1.0,1.1,1.170520,1.164460,1.034787,1.3,1.3,1.0,1.0,1.0,1.0,1.0},
{1.5,1.005710,1.1,1.0,0.990126,1.0,1.0,1.0,1.0049,1.0,1.0,1.0,1.0,1.0},
{0.960644,0.971640,1.170520,0.990126,1.0,1.0,0.994635,1.019530,0.898844,1.00235,0.999268,1.107274,0.88088,0.880973},
{0.925053,0.970120,1.164460,1.0,1.0,1.0,1.0,1.0,1.01306,1.0,1.00532,1.0,1.0,1.0},
{0.960237,0.945939,1.034787,1.0,0.994635,1.0,1.0,1.0,1.0049,1.0,1.0,1.0,1.0,1.0},
{0.906849,0.946914,1.3,1.0,1.019530,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0},
{0.897362,0.973384,1.3,1.0049,0.898844,1.01306,1.0049,1.0,1.0,1.0,1.0,1.0,1.0,1.0},
{0.726255,0.959340,1.0,1.0,1.00235,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0},
{0.859764,0.945520,1.0,1.0,0.999268,1.00532,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0},
{0.855134,1.0,1.0,1.0,1.107274,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0},
{0.831229,1.0,1.0,1.0,0.88088,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0},
{0.808310,1.0,1.0,1.0,0.880973,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0}};
doubleUx[N][N]={{1.0,0.835058,1.0,0.9,0.963827,0.969870,1.0,1.0,1.0,1.0,1.0,1.066638,1.077634,1.088178},
{0.835058,1.0,0.408838,1.0,0.886106,0.816431,0.915502,1.0,0.993556,1.0,1.0,1.0,1.0,1.0},
{1.0,0.408838,1.0,1.0,1.156390,1.616660,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0},
{0.9,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0},
{0.963827,0.886106,1.156390,1.0,1.0,1.0,0.990877,1.0,0.992291,1.0,1.00367,1.302576,1.191904,1.205769},
{0.969870,0.816431,1.616660,1.0,1.0,1.0,1.065173,1.25,1.25,1.25,1.25,1.0,1.0,1.0},
{1.0,0.915502,1.0,1.0,0.990877,1.065173,1.0,1.0,1.0049,1.0,1.0,1.0,1.0,1.0},
{1.0,1.0,1.0,1.0,1.0,1.25,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0},
{1.0,0.993556,1.0,1.0,0.992291,1.25,1.0049,1.0,1.0,1.0,1.0,1.0,1.0,1.0},
{1.0,1.0,1.0,1.0,1.0,1.25,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0},
{1.0,1.0,1.0,1.0,1.00367,1.25,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0},
{1.066638,1.0,1.0,1.0,1.302576,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0},
{1.077634,1.0,1.0,1.0,1.191904,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0},
{1.088178,1.0,1.0,1.0,1.205769,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0}};
doubleKx[N][N]={{1.0,0.982361,1.0,1.0,0.995933,1.00851,1.0,1.0,1.0,1.0,1.0,0.910183,0.895362,0.881152},
{0.982361,1.0,1.03227,1.0,1.00363,1.00796,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0},
{1.0,1.03227,1.0,1.0,1.02326,1.02034,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0},
{1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0},
{0.995933,1.00363,1.02326,1.0,1.0,1.0,1.007619,1.0,0.997596,1.0,1.002529,0.982962,0.983565,0.982707},
{1.00851,1.00796,1.02034,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0},
{1.0,1.0,1.0,1.0,1.007619,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0},
{1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0},
{1.0,1.0,1.0,1.0,0.997596,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0},
{1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0},
{1.0,1.0,1.0,1.0,1.002529,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0},
{0.910183,1.0,1.0,1.0,0.982962,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0},
{0.895362,1.0,1.0,1.0,0.983565,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0},
{0.881152,1.0,1.0,1.0,0.982707,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0}};
doubleGx[N][N]={{1.0,0.982746,1.0,1.0,0.807653,0.370296,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0},
{0.982746,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0},
{1.0,1.0,1.0,1.0,1.95731,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0},
{1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0},
{0.807653,1.0,1.95731,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0},
{0.370296,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0},
{1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0},
{1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0},
{1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0},
{1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0},
{1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0},
{1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0},
{1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0},
{1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0}};
inti,j,n,y;
floatx[N],p,T;
doubleZ,Z0=1.0,M0=0;
doubleB=0,Bij,Eij,Gij;
doubleMM,sum,sum1,sum2,SUM1=0,SUM2=0;
doubleCn,U0,G0,Q0,F0,K0;
doublepr,pm,pm1=1.0;
printf("请输入气样编号:
\n");
scanf("%d",&y);
printf("请按顺序输入天然气摩尔组成:
\n");
for(i=0;iscanf("%f",&x[i]);
printf("\n绝对压力/MPa:
");
scanf("%f",&p);
printf("\n绝对温度/T:
");
scanf("%f",&T);
printf("\n");
for(n=0;n<=17;n++)
{
sum=0;
MM=pow(T,-u[n]);
for(i=0;i{
for(j=0;j{
Eij=Ex[i][j]*pow(E[i]*E[j],0.5);
Gij=Gx[i][j]*(G[i]+G[j])/2;
Bij=pow(Gij+1-g[n],g[n])*pow(Q[i]*Q[j]+1-q[n],q[n])*pow(pow(F[i]*F[j],0.5)+1-f[n],f[n])*pow(S[i]*S[j]+1-s[n],s[n])*pow(W[i]*W[j]+1-w[n],w[n]);
sum+=x[i]*x[j]*Bij*pow(K[i]*K[j],3/2);
}
}
B+=a[n]*MM*sum;
}
sum1=0;
sum2=0;
F0=0;
G0=0;
Q0=0;
U0=0;
for(i=0;i{
F0+=pow(x[i],2)*F[i];
Q0+=x[i]*Q[i];
sum1+=x[i]*G[i];
sum2+=x[i]*pow(E[i],2.5);
}
for(i=0;i{
for(j=i+1;j{
G0+=x[i]*x[j]*(Gx[i][j]-1)*(G[i]+G[j]);
U0+=(pow(Ux[i][j],5)-1)*pow(E[i]*E[j],2.5);
}
}
G0=sum1+2*G0;
U0=pow(pow(sum2,2)+2*U0,0.2);
sum1=0;
for(i=0;isum1+=x[i]*pow(K[i],2.5);
sum2=0;
for(i=0;i{
for(j=i+1;jsum2+=x[i]*x[j]*(pow(Kx[i][j],5)-1)*pow(K[i]*K[j],2.5);
}
K0=pow(pow(sum1,2)+2*sum2,0.2);
pr=p*pow(K0,3)/(Z0*R*T);
for(n=12;n<18;n++)
{
Cn=a[n]*pow(G0+1-g[n],g[n])*pow(pow(Q0,2)+Q0-q[n],q[n])*pow(F0+1-f[n],f[n])*pow(U0,u[n])*pow(T,-u[n]);
SUM1+=Cn;
}
for(n=12;n<58;n++)
{
Cn=a[n]*pow(G0+1-g[n],g[n])*pow(pow(Q0,2)+Q0-q[n],q[n])*pow(F0+1-f[n],f[n])*pow(U0,u[n])*pow(T,-u[n]);
SUM2+=Cn*(b[n]-c[n]*k[n]*pow(pr,k[n]))*pow(pr,b[n])*exp(-c[n]*pow(pr,k[n]));
}
while(fabs(pm1-pm)>=1e-6)
{pm=pm1;
pr=pow(K0,3)*pm;
Z=1+B*pm-pr*SUM1+SUM2;
pm1=p/Z/R/T;
}
pm=pm1;
Z=p/pm/R/T;
printf("结果为:
Z=%.4f\n",Z);
}
运行结果:
绝对温度为293,绝对压力为1Mpa
气样1:
气样2:
气样3:
气样4:
气样5:
气样6:
第二个程序
#include
#include
doubleq[10]={0,3.2,2.6,2.6,2.2,1.8,1.8,1.7,1.9,2.3};
doublel[10]={0.3,0.5,1.4,0.8,1,0.8,1.5,1,0.9,1.1};
voidmain()
{
printf("取出口为第一站,顺时针依次编号\n然后在输出时进行调整\n");
intsolution();
intname(intj);
doubleliuliang(intm);
doublediameter(intm);
voidQprintf(intf,doubleQ1);
voidpprintf(intf,doubleQ1,doubleD);
doubleQ1,D;
intpoint;
point=solution();
printf("求出分点为:
%d\n",name(point));
Q1=liuliang(point);
printf("分输点流量Q1:
%f立方米每天\n",Q1);
D=diameter(point);
printf("管径为:
%fm\n",D);
printf("各站间的流量为:
\n");
Qprintf(point-1,Q1);
printf("各节点的压力为:
\n