天然气管道流量压强编程计算方法
天然气管道流量压强编程计算方法#include <stdio.h>#include <math.h>void result(double q11,double l11,double Q12,double Q102)double a=0,b=0,c=0,d11=0,out=-23.2 ,x1,x2,y1,y2;int m,i,j;for(i=1;i<=10;i+)if(qi=out)m=i;for(i=2;i<=9;i+)if(i<m) for(j=2;j<=i;j+) di=di+qj;else for(j=i+1;j<=10;j+) di=di+qj; for(i=1;i<=10;i+) if(i<m) a=a+li; else a=a-li; for(i=2;i<=10;i+)if(i<m)b=b+2*li*di;else if(i<=9)b=b+2*(q1+di)*li;elseb=b+2*q1*l10;for(i=2;i<=10;i+)if(i<m)c=c+di*di*li;else if(i<=9)c=c-(q1+di)*(q1+di)*li;elsec=c-q1*q1*l10;if(b*b-4*a*c)>=0)x1=(-b+sqrt(b*b-4*a*c)/(2*a);x2=(-b-sqrt(b*b-4*a*c)/(2*a);y1=q1-x1;y2=q1-x2;if(x1>0&&y1>0) Q11=x1;Q101=y1; if(x2>0&&y2>0) Q11=x2; Q101=y2; int main()double q11=0,l11=0,Q12=0,Q102=0,c11=0,f11=0,D,flow10=0,sum=0,P11;int i,j,t=0,m;for(i=1;i<=10;i+)scanf("%lf %lf",&qi,&li); result(q,l,Q1,Q10); t=t+1; if(Q11>0&&Q101>0) printf("%f %fn",Q11,Q101); else for(t=2;t<=10;t+) for(i=1;i<=10;i+) ci=qi; fi=li; q10=c1; l10=f1; for(i=1;i<=9;i+) qi=ci+1; li=fi+1; result(q,l,Q1,Q10); if(Q11>0&&Q101>0) printf("分气点位置是%d号井n",t); printf("分气点顺时针方向流量是%fX105立方米/天n",Q11,Q101); m=7-t+1; break; flow1=Q11; flow10=Q101; for(i=2;i<=9;i+) if(i<m) flowi=Q11; for(j=2;j<=i;j+) flowi=flowi+qj;else flowi=Q101;for(j=i+1;j<=10;j+)flowi=flowi+qj; for(i=1;i<m;i+)sum=sum+2.249560*(1e-10)*pow(flowi*100000.0/24.0/3600.0,2.0)*li*1000.0;D=pow(sum,0.2);printf("管径是%fmmn",D*1000);P1=5;P6=4.5;for(i=2;i<6;i+)Pi=sqrt(Pi-1*(1e+6)*Pi-1*(1e+6)-2.587*(1e+7)*(flowi-1*(1e+5)/24/3600)*(flowi-1*(1e+5)/24/3600)*li-1*1000)/(1e+6); for(i=10;i>6;i-) if(i=10) P10=sqrt(P1*(1e+6)*P1*(1e+6)-2.587*(1e+7)*(flow10*(1e+5)/24/3600)*(flow10*(1e+5)/24/3600)*l10*1000)/(1e+6);elsePi=sqrt(Pi+1*(1e+6)*Pi+1*(1e+6)-2.587*(1e+7)*(flowi*(1e+5)/24/3600)*(flowi*(1e+5)/24/3600)*li*1000)/(1e+6);for(i=1;i<=10;i+)printf("第%d号节点压力为%fMPa, 该段流量为%fX105标准立方米/天n",i,Pi,flowi);return 0;