⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 中压计算.cpp

📁 这个源码是从其它网站上转载来的
💻 CPP
📖 第 1 页 / 共 2 页
字号:
 if(cf1[i].flag==1)
 {cf1[i].q1=cf1[i].q1*H1/100; 
  cf2[i].q2=cf2[i].q2*H2/100;
 }
 
 
}

/*void calculate1(double Nl)                 //用高,中压公式选铸铁管径    
        { int i,j,k;
          double a;
		  double b;
		  double d;
		  double p2;
		  double min=P2;
		   printf("Nl=%.3lf\n",Nl); 
          for(i=0;i<bo;i++)			  
		  { p2=0;		    
			  for(j=0;j<N5;j++)
		      {a=pow((dcg0*10/bg[j].zfe+192.2*bg[j].zfe*ng.vi*V/c[i].q),0.25)*Y1;
		       //printf("a=%.3lf\n",a);
			   b=(pow(P1,2)-a*pow(c[i].q,2)/pow(bg[j].zfe,5)*ng.mi*(T+T0)/T0*Nl);
			  //printf("//////////////////////////////////b=%.3lf\n",b);
			   if(b>0) 
			   {p2=pow(b,0.5);
			    if(fabs(p2-P2)<min)
				{	min=fabs(p2-P2);
			        k=j;
				}
			   }
			  }
			  printf("bg[k].zfe=%.3lf  p2=%.3lf  min=%.3lf\n",bg[k].zfe,p2,min);
			  bzgj[0][i]=choosediameter0(bg[k].zfe);
		  }			  		  		 
         }
void calculate2(double Nl,double Dcg)                     //用高,中压公式选钢管管径
        { int i;
          double a;
		  double b;
		  double d;
		  double P2;
		   d=50.0; 
          for(i=0;i<bo;i++)			  
		  { do
		      {a=pow((Dcg/d+192.2*d*ng.vi/c[i].q),0.25)*Y1;
		       b=(P2*P2-a*c[i].q*c[i].q/pow(d,5)*ng.mi*(T+T0)/T0*Nl);
			   if(b>0)
				   P2=sqrt(b);
			   d=d+5.0;
			  }while(P2-P1<0.01);
			  bzgj[1][i]=choosediameter1(d);
		  }			  		  		 
         }
void calculate3(double Nl,double Dcg)                    //用高,中压公式选塑料管径
        { int i;
          double a;
		  double b;
		  double d;
		  double P2;
		   d=32.0; 
          for(i=0;i<bo;i++)			  
		  { do
		      {a=pow((Dcg/d+192.2*d*ng.vi/c[i].q),0.25)*Y1;
		       b=(P2*P2-a*c[i].q*c[i].q/pow(d,5)*ng.mi*(T+T0)/T0*Nl);
			   if(b>0)
				   P2=sqrt(b);
			   d=d+4.0;
			  }while(P2-P1<0.01);
			  bzgj[2][i]=choosediameter2(d);
		  }			  		  		 
         }*/
void show0()
{int i;
double pp1;
 double pp2;
 double pp3;
 double pp4;
     cf1[no-2].q1=Q2;
	 cf1[no-1].q1=Q3;
	for(i=0;i<no;i++)
	 printf("%d    %.3lf   %d\n",cf1[i].name1,cf1[i].q1,cf1[i].flag);
	cf2[no-2].q2=0;
	 cf2[no-1].q2=0;
	for(i=0;i<no;i++)
	 printf("%d    %.3lf\n",cf2[i].name2,cf2[i].q2);
	pp1=(pow(P1+P0,2)-pow(P2+P0,2))/(L0*1.1)/ng.ki;                  //起点压力为200kp高压管道输气
	pp1=(pow(P3+P0,2)-pow(P2+P0,2))/(L01*1.1)/ng.ki;                  //起点压力为250kp高压管道输气
    printf(" pp200=%.3lf      pp250=%.3lf  \n",pp1,pp2);
    pp3=(pow(P3+P0,2)-pow(P2+P0,2))/(L01*1.1)/ng.ki;                  //起点压力为200kp中压管道输气           
    pp4=(pow(P3+P0,2)-pow(P2+P0,2))/(L02*1.1)/ng.ki;                  //起点压力为250kp中压管道输气
    printf(" pp200=%.3lf      pp250=%.3lf  \n",pp3,pp4);                    
	printf("\n\n\n");
	
}  
 
void show(int Ng,double Dcg,int y,int Nf,double Nq)
{  int i; 
     printf("文件名\n");
	 printf("outfile\n");
	 printf("节点数  管段数  参考压力   允许压力  非参考点数   压力级制   工况    总节点流量 \n");
	 printf("%d       %d      %d          %d       %d          %d       %d        %.2lf\n",no,bo,P2,P1,h0,kp0,ksg1,Nq);
	 printf("绝对温度    燃气密度   运动粘度   管径最小标号   最大   粗糙度\n");
	 printf("%.2lf         %.3lf     %.3lfe-6      %d          %d       %.3lf\n",T0+T,ng.ki,ng.vi,k1,k2,Dcg);	
	 for(i=0;i<h0;i++)                            
	   printf("%d\n",P1);
	  printf("节点流量\n");
   for(i=0;i<no;i++)                            
	   printf("%d  %.3lf\n",cf[i].name,cf[i].q);
    printf("管段编号  管长  管段起终点   管径   管材参数   公式参数 \n");
	for(i=0;i<bo;i++)
  change(&c[i].a,&c[i].b);
   for(i=0;i<bo;i++)     
	   printf("%d   %.3lf    %d   %d  %d  %d  %d \n",i+1,c[i].l,c[i].a,c[i].b,bzgj[y][i],Ng,Nf);	   

}

void save0()
{int i;
 FILE *fp; 
    fp=fopen("小时低峰用气.txt","w");
	cf1[no-2].q1=Q2;
	 cf1[no-1].q1=Q3;
	for(i=0;i<no;i++)
	 fprintf(fp,"%d    %.3lf\n",cf1[i].name1,cf1[i].q1);
	fclose(fp);
	fp=fopen("小时高峰用气.txt","w");
	cf2[no-2].q2=0;
	 cf2[no-1].q2=0;
	for(i=0;i<no;i++)
	 fprintf(fp,"%d    %.3lf\n",cf2[i].name2,cf2[i].q2);
	fclose(fp);

}  
void save(char *outfile,int Ng,double Dcg,int y,int Nf,double Nq)
{  int i;
  FILE *fp;
   fp=fopen(outfile,"w");                            
   fprintf(fp,outfile);
   fprintf(fp,"\n");
	 fprintf(fp,"%d %d %d  %d %d %d %d %.2lf\n",no,bo,P2,P1,h0,kp0,ksg1,Nq);	 
	 fprintf(fp,"%.2lf %.3lf %.3lfe-6 %d %d %.3lf\n",T0+T,ng.ki,ng.vi,k1,k2,Dcg);
	 for(i=0;i<h0;i++)                            
	   fprintf(fp,"%d\n",P1);
   for(i=0;i<no;i++)                            
	   fprintf(fp,"%.3lf\n",cf[i].q); 
   for(i=0;i<bo;i++)
  change(&c[i].a,&c[i].b);
   for(i=0;i<bo;i++)	  
	   fprintf(fp,"%d   %.3lf   %d  %d  %d  %d  %d \n",i+1,c[i].l,c[i].a,c[i].b,bzgj[y][i],Ng,Nf);    
	fclose(fp);
}		
void main()
		{int i,j,k;
		char jsdata[][20]={"低峰计算流量.txt","高峰计算流量.txt"};
		char outfile[][20]={"lp0ztg","lp1ggs","lp2slg","hp0ztg","hp1ggs","hp2slg"};	
		char indata[][20]={"小时低峰用气.txt","小时高峰用气.txt"};
		double Nl[N]={L0,L01};                               //Np各区管道长度数组	
		int Ng[3]={gcc0,gcc1,gcc2};                              //Ng管材参数数组
		int Nf[3]={gg2,gg2,gg4};                                   //Nf公式参数数数组		
		double Dcg[3]={dcg0,dcg1,dcg2};                          //Dcg各种管型粗糙度数组		
		double Nq[N]={zq0,zq01};                                 //Nq总节点流量数
		open0();
		calculate();
          show0();
          save0(); 
		for(i=0;i<N;i++)
		{   
		    open(jsdata[i],indata[i]);			            
			 /*calculate1(Nl[i]);
			calculate2(Nl[i],dcg1);
			calculate3(Nl[i],dcg2);*/			 		
			for(j=0;j<3;j++)                                       //分三次输出数据取决于Ng[3],Nf[3],Dcg[3]
			{  //show(Ng[j],Dcg[j],j,Nf[j],Nq[i]);
			   save(outfile[i*3+j],Ng[j],Dcg[j],j,Nf[j],Nq[i]);			     
			} 
		  }						  
        }







⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -