📄 oilproj.c
字号:
# include "stdio.h"
# include "math.h"
main()
{
FILE *fp;
static float
sw[]={0,0.3200,0.3520,0.3840,0.4160,0.4480,0.4800,0.5120,0.5440,0.5760,0.6080,0.6400,0.6720,0.7040,0.7360,0.7680,0.80},
kro[]={0,0.6500,0.5861,0.5244,0.4651,0.4082,0.3538,0.3021,0.2532,0.2072,0.1644,0.1251,0.0895,0.0581,0.0316,0.0112,0.00},
krw[]={0,0.0000,0.0017,0.0059,0.0120,0.0198,0.0292,0.0402,0.0527,0.0666,0.0818,0.0984,0.1162,0.1353,0.1557,0.1773,0.20},
fw[20],
fwi[20],
I[20],
E[20],
F[20],
Tde[20],
Qld[20],
Qod[20],
Vod[20],
Vwd[20],
swf[20],
Td[20], /*见水前开发时间(排)*/
Tdi[20], /*见后前开发时间*/
Ql[20], /*见水前产液量*/
Qli[20], /*见水后产液量*/
V[20], /*累注水量*/
Vi[20],
Qo[20], /*年产油量*/
Qoi[20],
Vo[20], /*累积产油量*/
Voi[20],
k[20], /*采出程度*/
ki[20],
Ql2[200], /*插值后*/
V2[200], /*插值后*/
Vo2[200], /*插值后*/
Qo2[200], /*插值后*/
k2[200],
ti[40], /*开发时间(面)*/
Qw[40], /*注水速度(面)*/
Qoh[40], /*采油速度(面)*/
rf[40], /*含水前缘位置*/
Wi[20], /*累积注水量(面)*/
Np[20], /*累积产油量(面)*/
Wi2[100], /*插值后*/
Np2[100], /*插值后*/
Qw2[100], /*插值后*/
Qoh2[100], /*插值后*/
Ml[100], /*注水费*/
Mt[100], /*输油费*/
Ms[100], /*收入*/
Mc[100], /*净现*/
Min[100], /*投资*/
Ml2[100], /*注水费*/
Mt2[100], /*输油费*/
Ms2[100], /*收入*/
Mc2[100], /*净现*/
Min2[100]; /*投资*/
float Uo,
Uw,
Qi1, /*见水前qi */
Qi2, /*见水后qi */
kr=0.44287, /*平均渗透率 */
d, /*排状井距 */
d2, /*面积井距 */
L,
S, /*单井控面积*/
A1,
Tdf,
Tf,
Tf2, /*见水时间 */
swf_max=0,
Fy=0.3399, /*孔隙度 */
A,
A2,
B,
B2,
C,
C2,
D,
E2,
Ma, /*钻井总费用(排)*/
Ma2, /*钻井总费用(面)*/
Mw, /*作业费(排)*/
Mw2 /*作业费(面)*/
/* ,NA=5743.63*/; /*含油面积 */
double sqrt(),
fabs(),
pow(),
log();
long No; /*学号*/
int Noo, /*班内号*/
Cl, /*班号*/
N=17, /*原始数据个数*/
n, /*排状井数*/
n2, /*面积井数*/
i,
j,
m,
Nk,
nkk,
Ntd, /*见水前个数*/
Ntdi, /*见水后个数*/
Yn; /*开发年数*/
printf("Enter School Number As:9902***\n");
scanf("%ld",&No);
while(9900000>No||No>9999999)
{
printf("Ero!\n");
scanf("%ld",&No);
}
printf("\nNo.%ld\t",No);
No=No-9902000;
Noo=No%50;
Cl=((No-Noo)/50+1);
printf("Class:%d\n%d\n",Cl,Noo);
Uo=(float)Noo/5+20;
Uw=(float)Cl/20+0.5;
/*排状*/
Qi1=kr*0.65*3555*30/Uo/2*0.0864; /* 立方米/天 */
n=(int)(5000/(Qi1*0.9*2)+1);
S=3500000/n; /*单井控面积*/
d=sqrt(S/2); /*井距*/
A1=d*35.55; /* 截面积*/
L=2*d; /*排距*/
/* fw */
for(i=1;i<N;i++)
{ fw[i]=(krw[i]/Uw)/(krw[i]/Uw+kro[i]/Uo); }
/* fwi */
fwi[1]=0;
for(i=2;i<(N-1);i++)
{ fwi[i]=(fw[i+1]-fw[i-1])/(sw[i+1]-sw[i-1]); }
/* swf,swf_max */
for(i=1;i<N;i++)
{
swf[i]=(fw[i]/(sw[i]-0.32));
if(swf_max<swf[i])
{swf_max=swf[i];Nk=i;}
}
/* I */
I[Nk]=0;
for(i=Nk;i<(N-1);i++)
{
I[i]=0;
for(j=i;j<(N-1);j++)
I[i]=(I[i]+(fwi[j]-fwi[j+1])/(kro[j]+Uo*krw[j]/Uw));
}
/* F,Tde */
F[Nk]=0;F[Nk+1]=0;
for(i=(Nk+1);i<(N-1);i++)
{
F[i]=0;
for(j=(Nk+1);j<=i;j++)
F[i]=(F[i]+(fwi[j]-fwi[j-1])*I[j]/(fwi[j]*fwi[j]*fwi[j]));
Tde[i]=-0.65*F[i];
}
/* Qld,Qod,Vod,Vwd,T,E */
for(i=Nk;i<(N-1);i++)
{
Qld[i]=(fwi[i]/(0.65*I[i]));
Qod[i]=(Qld[i]*(1-fw[i]));
Vod[i]=(sw[i]+(1-fw[i])/fwi[i]-0.32);
Vwd[i]=1/fwi[i]-Vod[i];
/* T[i]=(Tde[i]*0.001133*A1*L/Qi1); Vwd[i]=(1/fwi[i]-Vod[i])*/
}
E[Nk]=(0.65*I[Nk]-fwi[Nk]);
Vwd[Nk]=0;
/* Tdf,见水时间Tf(年) */
Tdf=(fwi[Nk]+E[Nk]/2)/(fwi[Nk]*fwi[Nk]);
Tf=Tdf*Fy*A1*L/(Qi1*300);
/*开发时间Td(年) 产液量Ql(方/天) 累注水V(方) 年产油Qo(方) 累产油Vo(方) 采出程度k(%)*/
for(i=1;i<(Tf+2);i++)
{
Td[i]=(i-1); if(i>(Tf+1)) Td[i]=Tf;
Ql[i]=Qi1*2/sqrt((1+2*E[Nk]*Qi1*300*Td[i]/(Fy*A1*L)));
V[i]=2*(sqrt((1+2*E[Nk]*Qi1*300*Td[i]/(Fy*A1*L)))-1)*Fy*A1*L/E[Nk]/10000;
Qo[i]=Ql[i];
Vo[i]=V[i];
k[i]=Vo[i]*10000/5743.63/2;
}
Ntd=i-1;
for(i=1;fw[Nk+i-1]<0.99;i++)
{
Tdi[i]=(Fy*A1*L*Tde[Nk+i-1]/(Qi1*300)+Tf); if(i==1) Tdi[1]=Tf;
Qli[i]=Qld[Nk+i-1]*Qi1*2;
Vi[i]=2*Fy*A1*L/fwi[Nk+i-1]/10000;
Qoi[i]=Qli[i]*(1-fw[Nk+i-1]);
Voi[i]=2*Vod[Nk+i]*Fy*A1*L/10000; /* **** */
ki[i]=Voi[i]*100/(5743.63/n);
}
Ntdi=(i-1);
/* 插值(排) */
for(i=0;i<Ntd-1;i++)
{
Ql2[i]=Ql[i+1];
V2[i]=V[i+1];
Qo2[i]=Qo[i+1];
Vo2[i]=Vo[i+1];
k2[i]=k[i+1];
}
j=(int)(Tdi[1]+1);
for(i=1;i<(Ntdi);i++)
{
for(;((j>Tdi[i])&&(j<Tdi[i+1]));j++)
{
Ql2[j]=((Qli[i+1]-Qli[i])*(j-Tdi[i])/(Tdi[i+1]-Tdi[i])+Qli[i]);
V2[j]=((Vi[i+1]-Vi[i])*(j-Tdi[i])/(Tdi[i+1]-Tdi[i])+Vi[i]);
Qo2[j]=((Qoi[i+1]-Qoi[i])*(j-Tdi[i])/(Tdi[i+1]-Tdi[i])+Qoi[i]);
Vo2[j]=((Voi[i+1]-Voi[i])*(j-Tdi[i])/(Tdi[i+1]-Tdi[i])+Voi[i]);
k2[j]=((ki[i+1]-ki[i])*(j-Tdi[i])/(Tdi[i+1]-Tdi[i])+ki[i]);
}
}
/*面积*/
d2=100;
while(fabs(7000*3.14*3555*442.9*0.65*30/(2*Uo*d2*d2*(log((d2/0.1))-0.619))-64300)>1&&(d2<300))
d2=d2+0.001;
Qi2=3.14*3555*442.9*0.001*0.65*30/(Uo*(log((d2/0.1))-0.619))*0.0864;
n2=(int)(5000/Qi2/0.9+1);
A=Uw*0.65/(Uo*0.2);
B=1;
C=log(d2/0.4);
D=C+B*log(d2*100)-A*log(10);
E2=Fy*(sw[Nk]-0.32)*Uo/(kr*0.65*30);
A2=Uw*Fy*d2*d2*10000/(2*kr*0.2*30);
B2=log(d2/0.1);
C2=0.2*log(d2/0.4);
/*开发时间Ti(年) 注水量Qw(方/天) 产油量Qoh(方/天) */
for(j=2500,i=2;j<d2*100;j=j+2500,i++)
{
ti[i]=E2*j*j*0.5*((A-B)*(log(j)-0.5)+D)/300/86400;
rf[i]=j;
Qw[i]=2*3.14*3555*kr*0.65*30/(Uo*(Uw*0.65/(Uo*0.2)*log(rf[i]/10)+log(d2*100/rf[i])+log(d2/0.4)))*0.0864;
Qoh[i]=Qw[i];
}
ti[1]=0; Qw[1]=Qi2; Qoh[1]=Qi2;
ti[i]=E2*d2*d2*10000*0.5*((A-B)*(log(d2*100)-0.5)+D)/300/86400;
Tf2=ti[i]; nkk=i;
rf[i]=d2*100;
Qw[i]=2*3.14*3555*kr*0.65*30/(Uo*(Uw*0.65/(Uo*0.2)*log(rf[i]/10)+log(d2*100/rf[i])+log(d2/0.4)))*0.0864;
Qoh[i]=Qw[i];
i++;
for(;(fw[Nk+i-nkk])<=(fw[13]);i++)
{
ti[i]=0;
for(m=1;m<=(i-nkk);m++)
ti[i]=(ti[i]+(sw[Nk+m]-sw[Nk+m-1])*(B2+C2/krw[Nk+m])/(1-fw[Nk+m]));
ti[i]=(ti[i]*A2/(300*86400)+Tf2);
Qw[i]=2*3.14*3555*kr*0.2*30/(Uw*(log(d2/0.1)+0.2/krw[Nk+i-nkk]*log(d2/0.4)))*0.0864;
Qoh[i]=Qw[i]*(1-fw[Nk+i-nkk]);
} nkk=i-1;
/*累注水Wi(万方) 累产油Np(万方) */
Wi[0]=0; Np[0]=0; ti[0]=0;
for(i=1;i<=nkk;i++)
{
Wi[i]=((Qw[i]+Qw[i-1])*(ti[i]-ti[i-1])*0.03*0.5+Wi[i-1]);
Np[i]=((Qoh[i]+Qoh[i-1])*(ti[i]-ti[i-1])*0.03*0.5+Np[i-1]);
}
/* 插值(面积) */
Qw2[0]=Qw[1];
Qoh2[0]=Qoh[1];
Wi2[0]=0;
Np2[0]=0;
j=1;
for(i=1;i<nkk;i++)
{
for(;((j>ti[i])&&(j<ti[i+1]));j++)
{
Wi2[j]=Wi[i]+(Wi[i+1]-Wi[i])*(j-ti[i])/(ti[i+1]-ti[i]);
Np2[j]=Np[i]+(Np[i+1]-Np[i])*(j-ti[i])/(ti[i+1]-ti[i]);
Qw2[j]=Qw[i]+(Qw[i+1]-Qw[i])*(j-ti[i])/(ti[i+1]-ti[i]);
Qoh2[j]=Qoh[i]+(Qoh[i+1]-Qoh[i])*(j-ti[i])/(ti[i+1]-ti[i]);
}
}
/* 经济评价(排状)
钻井总费用Ma 作业费Mw 注水费Ml 输油费Mt 投资Min(亿元) 收入Ms(亿元) 净现Mc(亿元) */
Ma=(2257+4.23)*1000*(2*n)*0.0001*0.0001;
Mw=2*2*n*0.0001;
Min[0]=1.3*Ma;
Mc[0]=-1.3*Ma;
Mt[0]=0;
Ml[0]=0;
Ms[0]=0;
for(i=1;i<Tdi[Ntdi];i++)
{
Ml[i]=(V2[i]-V2[i-1])*6*n*0.0001;
Mt[i]=(Vo2[i]-Vo2[i-1])*210*0.9*n*0.0001;
Min[i]=(Mw+Ml[i]+Mt[i]);
Ms[i]=(Vo2[i]-Vo2[i-1])*1200*0.9*0.95*n*0.0001;
Mc[i]=(Ms[i]-Min[i])/(pow(1.08,i))+Mc[i-1];
}
/* 经济评价(面积)
钻井总费用Ma 作业费Mw 注水费Ml 输油费Mt 投资Min(亿元) 收入Ms(亿元) 净现Mc(亿元) */
Ma2=(2257+4.23)*1000*(2*n2)*0.0001*0.0001;
Mw2=2*2*n2*0.0001;
Min2[0]=1.3*Ma2;
Mc2[0]=-1.3*Ma2;
Mt2[0]=0;
Ml2[0]=0;
Ms2[0]=0;
for(i=1;i<ti[nkk];i++)
{
Ml2[i]=(Wi2[i]-Wi2[i-1])*6*n2*0.0001;
Mt2[i]=(Np2[i]-Np2[i-1])*210*0.9*n2*0.0001;
Min2[i]=Mw2+Ml2[i]+Mt2[i];
Ms2[i]=(Np2[i]-Np2[i-1])*1200*0.9*0.95*n2*0.0001;
Mc2[i]=(Ms2[i]-Min2[i])/(pow(1.08,i))+Mc2[i-1];
}
/* 保存数据SAVE */
fp=fopen("Dat.txt","w");
fprintf(fp,"学号:9902%d\n\n",No);
fprintf(fp,"Uo:%f\nUw:%f\nNk:%d\n\n",Uo,Uw,Nk);
fprintf(fp,"\n排状:\nE:%f",E[Nk]);
fprintf(fp,"\nQi1:%f立方米/天",Qi1);
fprintf(fp,"\n井数:%d",n);
fprintf(fp,"\n单井控面积A:%f平方米",S);
fprintf(fp,"\n井距d:%f米",d);
fprintf(fp,"\n排距L:%f米",L);
fprintf(fp,"\n截面积A1:%f平方米",A1);
fprintf(fp,"\nTdf:%f",Tdf);
fprintf(fp,"\n见水时间Tf:%f年",Tf);
fprintf(fp,"\n\n面积:\n井距d2:%f米\n",d2);
fprintf(fp,"Qi2:%f立方厘米/秒\n",Qi2);
fprintf(fp,"井数n2:%d\n",n2);
fprintf(fp,"A:%f\n",A);
fprintf(fp,"B:%f\n",B);
fprintf(fp,"C:%f\n",C);
fprintf(fp,"D:%f\n",D);
fprintf(fp,"A2:%f\n",A2);
fprintf(fp,"B2:%f\n",B2);
fprintf(fp,"C2:%f\n",C2);
fprintf(fp,"E2:%f\n",E2);
fprintf(fp,"\nNum\tsw\t\tkro\t\tkrw\t\tfw\t\tfw'\t\tswf\n");
for(i=1;i<N;i++)
fprintf(fp,"%d\t%f\t%f\t%f\t%f\t%f\t%f\n",i,sw[i],kro[i],krw[i],fw[i],fwi[i],swf[i]);
fprintf(fp,"\n\tsw\t\tI\t\tF\t\tTde\n");
for(i=Nk;i<N-1;i++)
fprintf(fp,"%d \t%f\t%f\t%f\t%f\n",i,sw[i],I[i],F[i],Tde[i]);
fprintf(fp,"\n\tsw\t\tQld\t\tQod\t\tVod\t\tVwd\n");
for(i=Nk;i<(N-1);i++)
fprintf(fp,"%d\t%f\t%f\t%f\t%f\t%f\n",i,sw[i],Qld[i],Qod[i],Vod[i],Vwd[i]);
fprintf(fp,"\n\n序号\t开发时间(年)\t产液量(方/天)\t累注水(方)\t年产油(方)\t累产油(方)\t采出程度(%)\n");
for(i=1;i<=Ntd;i++)
fprintf(fp,"%d\t%f\t%f\t%f\t%f\t%f\t%f\n",i,Td[i],Ql[i],V[i],Qo[i],Vo[i],k[i]);
for(i=1;i<=Ntdi;i++)
fprintf(fp,"%d\t%f\t%f\t%f\t%f\t%f\t%f\t%f\n",(i+Ntd),Tdi[i],Qli[i],Vi[i],Qoi[i],Voi[i],ki[i],fw[Nk+i-1]);
fprintf(fp,"\n\n插值后\n时间\t产液量(方/天)\t累注水(万方)\t年产油(万方)\t累产油(万方)\t采出程度(%)\t投资(亿元)\t收入(亿元)\t净现(亿元)\n");
for(i=0;i<Tdi[Ntdi];i++)
fprintf(fp,"%d\t%f\t%f\t%f\t%f\t%f\t%f\t%f\t%f\n",i,Ql2[i],V2[i],Qo2[i],Vo2[i],k2[i],Min[i],Ms[i],Mc[i]);
fprintf(fp,"\n\t前缘位置(米)\t开发时间(年)\t注水量(方/天)\t产油量(方/天)\t累注水(万方)\t累产油(万方)\n");
for(i=1;i<(int)(d2/25+2);i++)
fprintf(fp,"%d\t%f\t%f\t%f\t%f\t%f\t%f\n",i,rf[i]/100,ti[i],Qw[i],Qoh[i],Wi[i],Np[i]);
fprintf(fp,"%d\t%f\t%f\t%f\t%f\t%f\t%f\n",i,d2,ti[i],Qw[i],Qoh[i],Wi[i],Np[i]);
i++;
for(;i<=nkk;i++)
fprintf(fp,"%d\t\t\t%f\t%f\t%f\t%f\t%f\n",i,ti[i],Qw[i],Qoh[i],Wi[i],Np[i]);
fprintf(fp,"\n插值后:\n年\t注水量(方/天)\t产油量(方/天)\t累注水(万方)\t累产油(万方)\t投资(亿元)\t收入(亿元)\t净现(亿元)\n");
for(i=0;i<ti[nkk];i++)
fprintf(fp,"%d\t%f\t%f\t\%f\t%f\t%f\t%f\t%f\n",i,Qw2[i],Qoh2[i],Wi2[i],Np2[i],Min2[i],Ms2[i],Mc2[i]);
/* fprintf(fp,"\n%f\n",Mw); */
fprintf(fp,"\n\n\t\t\tEND\n");
fclose (fp);
printf("\nOK!\n");
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -