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

📄 chengxu.c

📁 这个源码是从其它网站上转载来的
💻 C
字号:
#include "math.h"
#include "stdio.h"
#define  GOR  15       /****气油比****/
#define  m    0.033     /****地温梯度****/
#define  t0   90      /****地层原始温度****/
#define  y    24        /****日产油量****/
#define  s    15        /****工作周期****/
#define  cp1  2.082     /****原油比热****/
#define  r1   0.9727    /****20℃下原油相对密度****/
#define  cp2  2.4       /****伴生气比热****/
#define  r2   0.6154    /****伴生气密度****/
#define  xs   0.81216   /****水泥导热系数****/
#define  xd   1.74528   /**** 地层导热系数****/
#define  a    1.032e-6  /****地层热扩散系数****/
#define  C    33.85    /****高凝油的含蜡量****/
#define  qi   55        /****电加热功率****/
#define  PI   3.1415    /****圆周率****/
#define  g    9.8       /****重力加速度****/
 double niandu(double t)  /******t温度地面脱气原油的粘度******/
 { 
	 double x,nd;
   x=-4.009*log10(t)+10.0942;
   nd=exp(x)*0.000001;
   return (nd); 
 }
  double xznd(double nd,double r0,double Rs)  /******t温度井筒内原油的修正粘度******/
  {
	  double x,A,B,ndp,nd0;
    x=0.15*7.15*(0.0239+0.01638*pow(nd/r0,0.278));
    ndp=nd*pow(10,x);
    A=4.404*pow((Rs+17.7935),-0.515);
    B=3.0355*pow((Rs+26.6905),-0.338);
    nd0=A*pow(ndp,B);
    return (nd0); 
  }             
 double bmzl(double r,double t,double p)  /******t温度井筒内原油的表面张力******/
 { 
	 double xx,yy,zl;
     xx=0.267*(141.5-131.5*r)/r;
	 yy=42.4-0.047*(1.8*t+32)-xx;
	 zl=y*exp(-0.0001015*p);
	 return (zl);
 }
 double wlmz(double Re,double d)   /******水力光滑******/
 {  
	 double aa,ee,xx,yy,zz;
	 double mz;
     aa=0.19;
     ee=(2*a)/d;
	if(Re>3000&&Re<(59.7/pow(ee,8/7))) /******水力光滑******/
      mz=0.3164/pow(Re,0.25);
	if(Re>(59.7/pow(ee,8/7))&&Re<((665-765*log10(ee))/ee))
	{  
      xx=6.8/Re+pow(aa/(3.7*d),1.11);
	  yy=-1.8*log10(xx);
	  mz=1/(yy*yy);
	}
	if(Re>((665-765*log10(ee))/ee))
    { 
      zz=2*log10(3.7*d/aa);
	  mz=1/(zz*zz);
	}
	return (mz);
}
 main()
{ 
  double tf[40],t[40],k[40],tw[40],tr[40],tm[40],xq[40],rq[40],
        ndq[40],bq[40],Ra[40],xh[40];
  double  p0,d1,d2,d3,d4,d5,W,T,fs,cp,kl;/******温度的参数*****/
  double Rp,Rs,G1,G2,G,Ap,pl,nd1,nd2;
  double r0[40],r01[40],p[40],pm[40],pj[40],Rs1[40],Rs2[40],Rs0[40],
         B0[40],B01[40],ndz[40],q0[40],V[40],v[40],Re[40],f[40],rm[40];/******单相流的参数*****/
  double vsg,w,N,N1,E1,L1,L2,L3,L4,a1,b,c,d,e,f0,g0,H,H1,Hfl,Hjx,H1fl,cfl,H1jx,cjx,
         cc,A,B,r12,y0,S1,S,zl1,zl,Rel,Rel1,Rel2,fz,fm;  /******多相流的参数*****/
  int i;
  FILE *fp1;
  p0=16; d1=0.062; d2=0.073;d3=0.1217;
   d4=0.1397; d5=0.2472; cp=1007; nd2=0.00122;
  fp1=fopen("温度和压力.txt","w");  /*****打开文件*****/
  printf("井筒内的温度和压力分布:\n");
  fprintf(fp1,"井筒内的温度和压力分布:\n");
  printf("i    h      t          p\n");
  fprintf(fp1,"i    h      t           p\n");
  T=30.87+0.508*C+5;  /*****原油的凝固点*****/
  for(i=1;i<=40;i++)
  {
	W=1000*y*cp1/24+y*GOR*cp2/24;
    W=W*1000/3600;  /*****混合物的水当量*****/
    tf[i]=t0-m*i*50; /*****50*i处的地层温度*****/
    fs=0.9812*log(1+1.81*2*sqrt(a*s*24*3600)/d5);  /******无因次温度*****/
  do{  
    k[i]=2.5;
    t[i]=W*m*(1-exp(-k[i]*50*i/W))/k[i]+tf[i];  /*****油气混合物的温度*****/
    if(t[i]<T)
     t[i]=(W*m+qi)*(1-exp(-k[i]*50*i/W))/k[i]+tf[i]; /*****电加热时油气混合物的温度*****/
     tw[i]=(xd*tf[i]+t[i]*k[i]*fs*d2/2)/(xd+k[i]*fs*d2/2); /******水泥环外缘的温度*****/
     tr[i]=tw[i]+k[i]*(t[i]-tw[i])*log(d5/d4)/(2*PI*xs); /******水泥环与套管处的温度*****/
     tm[i]=(tr[i]+tw[i])/2;  /******环空中平均温度*****/
     xq[i]=(2.83+0.0073*(tm[i]-50))*0.01; /******环空中气体导热系数*****/
     rq[i]=1.093-0.0031*(tm[i]-50);  /******环空中气体密度*****/ 
     ndq[i]=(19.6+0.05*(tm[i]-50))*1e-6; /******环空中气体粘度*****/
     bq[i]=1/(273+tm[i]); /******环空中气体膨胀系数*****/
     Ra[i]=g*bq[i]*rq[i]*rq[i]*cp*(t[i]-tr[i])*pow((d3-d2)/2,3)/(ndq[i]*xq[i]);/******判断环空当量导热系数的瑞利准数*****/
     if(Ra[i]<6000)
     xh[i]=xq[i];
     if(Ra[i]>6000&&Ra[i]<2e5)
     xh[i]=0.13*xq[i]*pow(Ra[i],0.25);
     if(Ra[i]>2e5&&Ra[i]<1.1e7)
     xh[i]=0.048*xq[i]*pow(Ra[i],0.333);
     kl=1/(log(d3/d2)/(2*PI*xh[i])+log(d5/d4)/(2*PI*xs)); /******根据热阻求得的传热系数*****/
     if(fabs(k[i]-kl)>0.001)
      k[i]=kl;
     break; 
  }while(1);

        /********压力的计算*******/
      Rp=GOR*r1;  /******产出气油比*****/
      r0[i]=r1-0.000699*(tm[i]-20);  /******平均相对密度*****/
      r01[i]=1000*r0[i];   /******平均密度*****/
      G1=y*1000/24;        /******日产油量*****/
      G2=y*GOR*r2*1.293/24;   /******日产气量*****/
      G=G1+G2;       /******日产油气量*****/
      Ap=0.7854*d1*d1;   /******油管截面积*****/
      w=G/Ap/r01[i]/3600;        /******混合物流速*****/
      nd1=niandu(tm[i]);
      Rs1[i]=pow(10,(1.76875/r0[i]-0.00168*tm[i]));
      Rs2[i]=7.15*Rs1[i]/5.96997;
      Rs0[i]=0.1745*r2*pow(Rs2[i],1/0.83);   /******溶解气油比*****/
      p[i]=15;
      pm[i]=(p[i]+p0)/2;  /******流段平均压力*****/
      B01[i]=7.1174+Rs0[i]*pow(r2/r0[i],0.5)+0.4005*tm[i];
      B0[i]=0.972+1.1175*0.001*pow(B01[i],1.175);  /******体积系数*****/
   if(Rp<=Rs0[i])    /******单相流*****/
   do{ 
	   p[0]=16;
	   V[i]=G1*B0[i]/r01[i];    /******日产油气总体积*****/
       rm[i]=G/V[i];    /******油气平均流速*****/
       ndz[i]=xznd(nd1,r0[i],Rs0[i]);   /******调用函数求粘度*****/
       q0[i]=G1*B0[i]/(r01[i]*3600);   /******原油体积流量*****/
       v[i]=q0[i]/Ap;    /******流体表观流速*****/
       Re[i]=r01[i]*d1*v[i]/ndz[i];   /******雷诺数*****/
       if(Re[i]<3000)
       f[i]=64/Re[i];
	   if(Re[i]>3000)
       f[i]=wlmz(Re[i],d1);
       pj[i]=(f[i]*50*tm[i]*v[i]*v[i]/(2*d1)+rm[i]*50*g)*0.000001;  /******总压降*****/
       pl=p[i-1]-pj[i];
       if(fabs(p[i]-pl)>0.01);
           p[i]=pl;
          break;  
   }while(1);
     if(Rp>Rs0[i])   /******多相流*****/
      do{ p[0]=16;
          vsg=y*GOR/24/3600;    /******气相表观流速*****/ 
          N=w*w/(g*d1);
          E1=G1/(G1+G2);
          L1=316*pow(E1,0.302);
          L2=92.52*0.00001*pow(E1,-2.4684);
          L3=0.1*pow(E1,-1.4516);
          L4=0.5*pow(E1,-6.733);
		  N1=bmzl(r1, tm[i],p[i]);
      if((E1<0.01&&N<L1)||(E1>=0.01&&N<L2))  /******分离流******/
       { 
		 a1=0.98;b=0.4846;c=0.0868;d=0.011;
         e=-3.768;f0=3.539;g0=-1.614;
         H1=a1*pow(E1,b)/pow(N,c);
        if(H1<E1)
		   H1=E1;
           cc=(1-E1)*log(d*pow(E1,e)*pow(N1,f0)*pow(N,g0));
           H=H1*(1+0.33*cc);  }
      if(((E1>=0.01&&E1<0.4)&&(N>L3&&N<L1))||(E1>=0.4&&(N>L3&&N<L4)))  /******间歇流******/
       {  
		  a1=0.845;b=0.5351;c=0.0173;d=2.96;
          e=0.305;f0=-0.4473;g0=0.0978;
          H1=a1*pow(E1,b)/pow(N,c);
           if(H1<E1) H1=E1;
           cc=(1-E1)*log(d*pow(E1,e)*pow(N1,f0)*pow(N,g0));
           H=H1*(1+0.33*cc);  
	  }
       if((E1<0.4&&N>=L1)||(E1>=0.4&&N>L4))    /******分散流******/
      {   
		   a1=1.065;b=0.5929;c=0.0609;
          H=a1*pow(E1,b)/pow(N,c);
	   }
       if(E1>=0.01&&(N>L2&&N<=L3))     /******过渡流******/
      {  
		   H1fl=0.98*pow(E1,0.4846)*pow(N,0.0868);
          if(H1fl<E1) H1fl=E1;
          cfl=(1-E1)*log(0.011*pow(E1,-3.768)*pow(N1,3.539)*pow(N,-1.614));
          Hfl=H1fl*(1+0.33*cfl);
          H1jx=0.845*pow(E1,0.5351)*pow(N,0.0173);
          if(H1jx<E1) H1jx=E1;
          cjx=(1-E1)*log(2.96*pow(E1,0.305)*pow(N1,-0.4473)*pow(N,0.0978));
          Hjx=H1jx*(1+0.33*cjx);
           A=(L3-N)/(L3-L2);
           B=1-A;
           H=A*Hfl+B*Hjx;  
	   }
           r12=(r1*H+r2*1.293*pm[i]*t[i]*(1-H)/(0.899*tm[i]*p[i]))*1000; /******混合物实际密度******/
           y0=E1/(H*H);
           S1=-0.0523+3.18*log(y0)-0.8725*pow(log(y0),2)+0.01853*pow(log(y0),4);
           Rel1=d1*w*(r1*E1+r2*(1-E1));
           Rel2=nd1*E1+nd2*(1-E1);
           Rel=Rel1/Rel2;
           zl1=0.0056+0.5/pow(Rel,0.32);
           zl=zl1*exp(S1);   /******两相流阻力系数******/
           fz=r12*g+zl*(G*1000/24/3600)*w/(2*d1*Ap);
           fm=1-r12*w*vsg/pm[i]/100000;
           pj[i]=(fz/fm)*50*0.000001;     /******总压降*****/
           pl=p[i-1]-pj[i];
        if(fabs(p[i]-pl)>0.01);
           p[i]=pl;
          break;  
	  }while(1);
       printf("%d   %d    %4.2f    %10.4f\n",i,50*i,t[i],p[i]);
       fprintf(fp1,"%d   %d    %4.2f    %10.4f\n",i,50*i,t[i],p[i]);
        }
      fclose(fp1);
       getch();     }




⌨️ 快捷键说明

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