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

📄 中压计算.cpp

📁 这个源码是从其它网站上转载来的
💻 CPP
📖 第 1 页 / 共 2 页
字号:
#include<stdio.h>
#include<math.h>
#define H1   3.3            //用气低峰时小时系数
#define H2   4             //用气高峰时小时系数
#define P2   130              //进调压器最低允许压力kp
#define P1   200              //气源厂压力kp
#define P3   250              //气源厂压力kp  
#define P0   100              //大气压力kp 
#define Z   1                 //当压力小于1.2Mp时取1
#define Q2   20442                 //储配站2用气低峰时独立储配站应储存的流量m^3
#define Q3   51558                 //储配站1用气低峰时独立储配站应储存的流量m^3
#define dP 1050                                 //区域街区压降数Pa
#define L0 6443                                  //高压管用气高峰气源到供气最远点的长度m
#define L01 6443                                  //高,中压压管用气低峰气源到供气最远点的长度m
#define L02 10440                                  //中压管用气低峰气源到供气最远点的长度m
#define T0 273.125                              //0摄氏度的凯尔文温度K
#define Y1 1.4*1e+9                            //中压天然气水利计算公式系数钢管
#define Y2 1.3*1e+9                            //中压天然气水利计算公式系数铸铁管
#define T 3.5                                   //计算地区的年平均温度温度C
#define V 1e-6                                  //运动粘度单位10^-6
#define N  2                                    //中压低峰用气,高峰用气管网
#define k1 1                                    //可选管径的最小编号(管径表中)
#define k2 12                                   //可选管径的最小编号
#define dcg0 0.026                                //新铸铁管当量绝对粗糙度cm
#define dcg1 0.02                                //钢管当量绝对粗糙度cm
#define dcg2 0.001                                //塑料管材当量绝对粗糙度cm
#define no 32                                  //中压节点编号数
#define bo 37                                  //中压管道数
#define N5 19                                  //所选的标准管径数
#define h0 1                                    //中压除参考点外已知压力点个数数
#define zq0 73870.25                            //高崖管供气的中压总节点流量数储气
#define zq01 2076.901                           //高崖管供气的中压总节点流量数输气
#define zq02 22312.25                            //中压管供气总节点流量数储气
#define zq03 1223.90                           //中压管供气总节点流量数输气
#define kp0 0                                   //约定为高中压
#define kp1 1                                   //约定为低压
#define ksg0 0                                   //约定为事故工况
#define ksg1 1                                   //约定为计算工况
#define gcc0 0                                   //管材选取参数0为铸铁管
#define gcc1 1                                   //管材选取参数1为钢管
#define gcc2 2                                   //管材选取参数2为塑料管
#define gg1 11                                   //对钢管和铸铁管紊流区计算公式选取参数11谢维列夫旧钢管公式
#define gg2 12                                   //对钢管和铸铁管紊流区计算公式选取参数12谢维列夫新钢管公式
#define gg3 13                                   //对紊流区计算公式选取参数13阿里特苏里公式
#define gg4 14                                   //对紊流区计算公式选取参数14柯列勃洛克公式
int bzgj[N][bo];                                 //查得标准铸铁管管径 
struct natralgas                               //天然气物性结构体
         {char name[20];                        //各组成成分名称 
          double ri;                            //各组成成分溶积成分
          double mi;                            //各组成成分分子量
          double ki;                            //各组成成分密度
          double Hh;                            //各组成成分高热值
          double Hl;                            //各组成成分低热值
          double vi;                            //各组成成分运动粘度
          double Lh;                            //各组成成分爆炸上限
          double Ll;                            //各组成成分爆炸下限
         }ng;
 
 struct codefjsflude                                //管径结构体
{int n;                                         //管段编号                                   
 double l;                                      //管长
 int a;                                         //管线起点 
 int b;                                         //管线终点
 double  q;                                          //管线计算流量
 double  diameter;                                    //计算管径
}c[bo];                                         //结构体的大小由最大区域最大管道数数决定,此处为一区bo1=53

 struct biaoguan
 {int num;
  int zfe;
  int steel;
  int pe;
 }bg[N5];
struct codeflude                                //节点流量结构体
{int name;                                      //节点号                                     
 double q;                                      //该节点流量
}cf[no];                                        

 struct codeflude1                                //低峰节点流量结构体
{int name1;                                      //节点号                                     
 double q1;                                      //该节点流量
 int flag;                                       //flag等于1为调压站,0为非调压站的节点
}cf1[no];  

 struct codeflude2                                //高峰节点流量结构体
{int name2;                                      //节点号                                     
 double q2;                                      //该节点流量
}cf2[no];                              
 
 void open0()
 {int i;
	 FILE *fp;
   fp=fopen("天然气基础数据表.txt","r");            //打开基础数据表1并显示数据
	  printf("名称   容积成分   分子量  密度   高热值   低热值   运动粘度  爆炸上限  爆炸下限\n");
		  printf("单位          %%          ρ(kg/Nm^3) Hh(MJ/ Nm^3) Hh(MJ/ Nm^3) ν*10^6m/s    %     %%\n");	
	   fscanf(fp,"%s%lf%lf%lf%lf%lf%lf%lf%lf",ng.name,&ng.ri,&ng.mi,&ng.ki,&ng.Hh,&ng.Hl,&ng.vi,&ng.Lh,&ng.Ll);
		printf("%-6s %8.3lf %8.3lf %8.3lf %8.3lf %8.3lf %8.3lf %8.3lf %8.3lf\n",ng.name,ng.ri,ng.mi,ng.ki,ng.Hh,ng.Hl,ng.vi,ng.Lh,ng.Ll);	   
	 fclose(fp);
      printf("标号   铸铁管mm   钢管mm    塑料管(外径)mm\n");	
	 fp=fopen("标准管径.txt","r");                //打开标准管径并显示数据	 
	   for(i=0;i<N5;i++)
	   {fscanf(fp,"%d%d%d%d",&bg[i].num,&bg[i].zfe,&bg[i].steel,&bg[i].pe);
		printf("%d  %8d  %8d  %8d\n",bg[i].num,bg[i].zfe,bg[i].steel,bg[i].pe);	
	   }
	 fclose(fp);	       
		fp=fopen("中压节点流量.txt","r");                            //打开节点流量表
	  for(i=0;i<no;i++)                            
	  {fscanf(fp,"%d%lf%d",&cf1[i].name1,&cf1[i].q1,&cf1[i].flag);
	  printf("%d  %.3lf  %d\n",cf1[i].name1,cf1[i].q1,cf1[i].flag);
	  }
		fclose(fp);
      for(i=0;i<no;i++)
	  {cf2[i].name2=cf1[i].name1;                                   //将个元素赋给高峰节点流量结构体
		 cf2[i].q2=cf1[i].q1;
	  }
	
 }
void open(char *jsdata,char *indata)
{ int i;
  FILE *fp;	    
   fp=fopen(jsdata,"r");                               //打开计算流量表
	  for(i=0;i<bo;i++)                            
	  {fscanf(fp,"%d%lf%d%d%lf",&c[i].n,&c[i].l,&c[i].a,&c[i].b,&c[i].q);
	  printf("%d  %.3lf   %d    %d    %.3lf\n",c[i].n,c[i].l,c[i].a,c[i].b,c[i].q);
	  }
		fclose(fp);
		fp=fopen(indata,"r");                            //打开节点流量表
	  for(i=0;i<no;i++)                            
	  fscanf(fp,"%d%lf",&cf[i].name,&cf[i].q);	
		fclose(fp);
}

void change(int *a,int *b)                               //交换函数将终点标号大于起点的交换,始终维持左端标号最大
        {int temp; 
	     if(*a<*b)
		 {temp=*b;*b=*a;*a=temp; }        
         }

/*choosediameter0(double d)                               //选铸铁管函数
{int i=0;
 double up=-1;
 double down=0;
 double p;
           for(i=0;up<0&&i<bo;i++)		   
		   up=bg[i].zfe-d;
		   down=bg[i-2].zfe-d;
		       p=fabs(down)/(bg[i-1].zfe-bg[i-2].zfe);
           if(p<0.1)
			   return(bg[i-2].zfe);
		   else
			   return(bg[i-1].zfe);
}

choosediameter1(double d)                              //选钢管函数
{int i=0;
 double up=-1;
 double down=0;
 double p;
           for(i=0;up<0&&i<bo;i++)		   
		   up=bg[i].steel-d;
		   down=bg[i-2].steel-d;
		       p=fabs(down)/(bg[i-1].steel-bg[i-2].steel);
           if(p<0.1)
			   return(bg[i-2].steel);
		   else
			   return(bg[i-1].steel);
}

choosediameter2(double d)                                //选塑料管函数
{int i=0;
 double up=-1;
 double down=0;
 double p;
           for(i=0;up<0&&i<bo;i++)		   
		   up=bg[i].pe-d;
		   down=bg[i-2].pe-d;
		       p=fabs(down)/(bg[i-1].pe-bg[i-2].pe);
           if(p<0.1)
			   return(bg[i-2].pe);
		   else
			   return(bg[i-1].pe);
}*/
void calculate()
{int i;
 
 for(i=0;i<no;i++)

⌨️ 快捷键说明

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