?? 中壓計(jì)算.cpp
字號:
#include<stdio.h>
#include<math.h>
#define H1 3.3 //用氣低峰時(shí)小時(shí)系數(shù)
#define H2 4 //用氣高峰時(shí)小時(shí)系數(shù)
#define P2 130 //進(jìn)調(diào)壓器最低允許壓力kp
#define P1 200 //氣源廠壓力kp
#define P3 250 //氣源廠壓力kp
#define P0 100 //大氣壓力kp
#define Z 1 //當(dāng)壓力小于1.2Mp時(shí)取1
#define Q2 20442 //儲配站2用氣低峰時(shí)獨(dú)立儲配站應(yīng)儲存的流量m^3
#define Q3 51558 //儲配站1用氣低峰時(shí)獨(dú)立儲配站應(yīng)儲存的流量m^3
#define dP 1050 //區(qū)域街區(qū)壓降數(shù)Pa
#define L0 6443 //高壓管用氣高峰氣源到供氣最遠(yuǎn)點(diǎn)的長度m
#define L01 6443 //高,中壓壓管用氣低峰氣源到供氣最遠(yuǎn)點(diǎn)的長度m
#define L02 10440 //中壓管用氣低峰氣源到供氣最遠(yuǎn)點(diǎn)的長度m
#define T0 273.125 //0攝氏度的凱爾文溫度K
#define Y1 1.4*1e+9 //中壓天然氣水利計(jì)算公式系數(shù)鋼管
#define Y2 1.3*1e+9 //中壓天然氣水利計(jì)算公式系數(shù)鑄鐵管
#define T 3.5 //計(jì)算地區(qū)的年平均溫度溫度C
#define V 1e-6 //運(yùn)動粘度單位10^-6
#define N 2 //中壓低峰用氣,高峰用氣管網(wǎng)
#define k1 1 //可選管徑的最小編號(管徑表中)
#define k2 12 //可選管徑的最小編號
#define dcg0 0.026 //新鑄鐵管當(dāng)量絕對粗糙度cm
#define dcg1 0.02 //鋼管當(dāng)量絕對粗糙度cm
#define dcg2 0.001 //塑料管材當(dāng)量絕對粗糙度cm
#define no 32 //中壓節(jié)點(diǎn)編號數(shù)
#define bo 37 //中壓管道數(shù)
#define N5 19 //所選的標(biāo)準(zhǔn)管徑數(shù)
#define h0 1 //中壓除參考點(diǎn)外已知壓力點(diǎn)個(gè)數(shù)數(shù)
#define zq0 73870.25 //高崖管供氣的中壓總節(jié)點(diǎn)流量數(shù)儲氣
#define zq01 2076.901 //高崖管供氣的中壓總節(jié)點(diǎn)流量數(shù)輸氣
#define zq02 22312.25 //中壓管供氣總節(jié)點(diǎn)流量數(shù)儲氣
#define zq03 1223.90 //中壓管供氣總節(jié)點(diǎn)流量數(shù)輸氣
#define kp0 0 //約定為高中壓
#define kp1 1 //約定為低壓
#define ksg0 0 //約定為事故工況
#define ksg1 1 //約定為計(jì)算工況
#define gcc0 0 //管材選取參數(shù)0為鑄鐵管
#define gcc1 1 //管材選取參數(shù)1為鋼管
#define gcc2 2 //管材選取參數(shù)2為塑料管
#define gg1 11 //對鋼管和鑄鐵管紊流區(qū)計(jì)算公式選取參數(shù)11謝維列夫舊鋼管公式
#define gg2 12 //對鋼管和鑄鐵管紊流區(qū)計(jì)算公式選取參數(shù)12謝維列夫新鋼管公式
#define gg3 13 //對紊流區(qū)計(jì)算公式選取參數(shù)13阿里特蘇里公式
#define gg4 14 //對紊流區(qū)計(jì)算公式選取參數(shù)14柯列勃洛克公式
int bzgj[N][bo]; //查得標(biāo)準(zhǔn)鑄鐵管管徑
struct natralgas //天然氣物性結(jié)構(gòu)體
{char name[20]; //各組成成分名稱
double ri; //各組成成分溶積成分
double mi; //各組成成分分子量
double ki; //各組成成分密度
double Hh; //各組成成分高熱值
double Hl; //各組成成分低熱值
double vi; //各組成成分運(yùn)動粘度
double Lh; //各組成成分爆炸上限
double Ll; //各組成成分爆炸下限
}ng;
struct codefjsflude //管徑結(jié)構(gòu)體
{int n; //管段編號
double l; //管長
int a; //管線起點(diǎn)
int b; //管線終點(diǎn)
double q; //管線計(jì)算流量
double diameter; //計(jì)算管徑
}c[bo]; //結(jié)構(gòu)體的大小由最大區(qū)域最大管道數(shù)數(shù)決定,此處為一區(qū)bo1=53
struct biaoguan
{int num;
int zfe;
int steel;
int pe;
}bg[N5];
struct codeflude //節(jié)點(diǎn)流量結(jié)構(gòu)體
{int name; //節(jié)點(diǎn)號
double q; //該節(jié)點(diǎn)流量
}cf[no];
struct codeflude1 //低峰節(jié)點(diǎn)流量結(jié)構(gòu)體
{int name1; //節(jié)點(diǎn)號
double q1; //該節(jié)點(diǎn)流量
int flag; //flag等于1為調(diào)壓站,0為非調(diào)壓站的節(jié)點(diǎn)
}cf1[no];
struct codeflude2 //高峰節(jié)點(diǎn)流量結(jié)構(gòu)體
{int name2; //節(jié)點(diǎn)號
double q2; //該節(jié)點(diǎn)流量
}cf2[no];
void open0()
{int i;
FILE *fp;
fp=fopen("天然氣基礎(chǔ)數(shù)據(jù)表.txt","r"); //打開基礎(chǔ)數(shù)據(jù)表1并顯示數(shù)據(jù)
printf("名稱 容積成分 分子量 密度 高熱值 低熱值 運(yùn)動粘度 爆炸上限 爆炸下限\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("標(biāo)號 鑄鐵管mm 鋼管mm 塑料管(外徑)mm\n");
fp=fopen("標(biāo)準(zhǔn)管徑.txt","r"); //打開標(biāo)準(zhǔn)管徑并顯示數(shù)據(jù)
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("中壓節(jié)點(diǎn)流量.txt","r"); //打開節(jié)點(diǎn)流量表
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; //將個(gè)元素賦給高峰節(jié)點(diǎn)流量結(jié)構(gòu)體
cf2[i].q2=cf1[i].q1;
}
}
void open(char *jsdata,char *indata)
{ int i;
FILE *fp;
fp=fopen(jsdata,"r"); //打開計(jì)算流量表
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"); //打開節(jié)點(diǎn)流量表
for(i=0;i<no;i++)
fscanf(fp,"%d%lf",&cf[i].name,&cf[i].q);
fclose(fp);
}
void change(int *a,int *b) //交換函數(shù)將終點(diǎn)標(biāo)號大于起點(diǎn)的交換,始終維持左端標(biāo)號最大
{int temp;
if(*a<*b)
{temp=*b;*b=*a;*a=temp; }
}
/*choosediameter0(double d) //選鑄鐵管函數(shù)
{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) //選鋼管函數(shù)
{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) //選塑料管函數(shù)
{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++)
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -