2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > 石油工程课程设计c语言 东北石油大学-石油工程-课程设计-抽油设计C语言编程.docx...

石油工程课程设计c语言 东北石油大学-石油工程-课程设计-抽油设计C语言编程.docx...

时间:2023-09-20 05:39:24

相关推荐

石油工程课程设计c语言 东北石油大学-石油工程-课程设计-抽油设计C语言编程.docx...

东北石油大学-石油工程-课程设计-抽油设计C语言编程.docx

include stdio.h #include stdlib.h #include math.h #define PI 3.1415926 #define g 9.8 float H=1545; /H:油层深度float Do=0.0889; /Do:油管内径float Dt=0.19; /Dt:套管直径float O=0.0323; /O:地温梯度float t0=79.8; /t0:井底温度float Ph=10.75; /Ph:地层压力 float Pb=9.98; /Pb:饱和压力float K1=2.69; /K1:传热系数float Q=29.1; /Q:试井产液float Pwf=4.68;/Pwf:试井流压float fw=0.145; /fw:体积含水率float Zo=903.87; /Zo:原油密度float Zw=1000; /Zw:水的密度float Co=2305.61; /Co:原油比热float Cw=4318.41; /Cw:地层水比热float Hs=201; /Hs:设计沉没度float Qs=27.6; /Qs:设计排量float s=3; /s:抽油机冲程float n=6; /n:抽油机冲次float Ab=0.7; /Ab:抽油机泵效float a=9.95,b=3.98; /excel回归得a,b的值float wendu(float L); float niandu(float T); float liuya(); float pingjunmidu(); float bengya(float Zp); float bengshen(float Pwfo,float Ps,float Zp); float bengjing(); float chouyougan(float Lp,float Zp); float jiaohe(); main(void) float Pwfo,Ps,Zp,Lp,Dp; / 设计排量下的井底流压,泵口吸入压力,抽汲液平均密度,泵下入深度,泵的直径 Pwfo=liuya(); Zp=pingjunmidu(); Ps=bengya(Zp); Lp=bengshen(Pwfo,Ps,Zp); Dp=bengjing(); chouyougan(Lp,Zp); jiaohe(); /井温分布float wendu(float L) float T,q1=0,W,fz; fz=1*Zw*fw/(1*Zw*fw+(1-fw)*Zo); W=(fz*Cw+(1-fz)*Co)*(Q*fz*Zw+(1-fz)*Q*Zo)/(24*60*60); T=(W*O+q1)/K1*(1-exp(-K1/W*L)+t0-O*L; return (T); /原油粘温关系float niandu(float T) float u; /原油动力粘度 u=pow(10,a)/pow(T,b); /粘度公式 return(u); /井底流压float liuya() float qmax,Pwfo; qmax=Q/(1-0.2*Pwf/Ph-0.8*pow(Pwf/Ph,2); printf(最大排量:%f m3/dn,qmax); Pwfo=(-0.2/Ph+pow(pow(0.2/Ph,2)-(4*0.8)/pow(Ph,2)*(Qs/qmax-1),0.5)/2/0.8*pow(Ph,2); printf(设计排量下的井底流压:%f MPan,Pwfo); return(Pwfo); /沉没段油、水混合液的平均密度float pingjunmidu() float Zp; Zp=Zo*(1-fw)+Zw*fw; return(Zp); /泵吸入口压力float bengya(float Zp) float Ps; Ps=Zp*g*Hs/pow(10,6); printf(泵吸入口压力:%f MPan,Ps); return(Ps); /下泵深度float bengshen(float Pwfo,float Ps,float Zp) float Lp; Lp=H-(Pwfo-Ps)*pow(10,6)/g/Zp; printf(下泵深度:%f mn,Lp); return (Lp); /确定泵径 float bengjing() float Dp; Dp=pow(Qs/(360*PI*s*n*Ab),0.5); printf(泵径:%f mn,Dp); return (Dp); /悬点载荷计算及抽油杆强度校核 float chouyougan(float Lp,float Zp) int i,j; float W1,W10,H0,H1,dH,Have,Flv,L5,t,u,dWr,dIru,dWrd; /井内液体的动力粘度 float Pmax,Pmin,dPmax,dPmin,dFu,dIrd,dFd,dFrl; /Pmax,Pmin:最大最小载荷,dIru,dIrd:上下冲程中的最大惯性载荷的增量/dFu,dFd:上下冲程中的最大摩擦载荷的增量,dFrl:抽油杆住与液柱之间的摩擦力的增量/Wr1:上冲程中抽油杆所受的的重力所产生的载荷,/Wl1:下冲程中液柱的重力与对抽油杆的浮力产生的载荷,float Zrod=7850,r=0.895,l=3.33,uf=0.2; /Zrod:抽油杆的密度,r:曲柄半径,l:连杆长度,uf:凡尔流动系数float fp=PI*0.044*0.044/4;float fo=PI*0.02*0.02/4; /fp:抽油泵活塞横截面积,fo:凡尔孔截面积float dr5=0.016,0.019,0.022,0.025,0.029;/dt:油管内径,dr:1-5级油管直径float fr5=PI*dr0*dr0/4,PI*dr1*dr1/4,PI*dr2*dr2/4,PI*dr3*dr3/4,PI*dr4*dr4/4;/1-5级抽油杆的横截面积float Vmax=0.942,m;/Vmax:抽油杆住最大下行速度float Sigmac,Sigmaa,Sigma15=90000000,100000000,120000000,150000000,180000000;/Sigmac:抽油杆的折算应力,Sigmaa:循环应力的应力幅值,抽油杆材质循环疲劳极限应力/摩擦载荷之一W10=(fp-fr2)*g*Lp*Zp;/P297 公式12-23while(1) W1=0; H1=0; H0=H-Lp; Pmax=W10+1717; /1717 from P300 4.2 Flv=(Zp*fp*fp*fp*s*s*n*n)/(729*uf*uf*fo*fo); /P301 12-43 Pmin=-1717-Flv; dH=0.01; j=0; Lj=0; while(1) if(H0+dH)H) dH=H-H0;H1=H0+dH;Have=H0+dH/2;t=wendu(Have);u=niandu(t); dWr=Zrod*g*frj*dH;/P297 12-21dIru=dWr*s*n*n*(1+r/l)/1790;/12-48dIrd=dWr*s*n*n*(1-r/l)/1790;/12-49dWrd=dWr-Zp*g*frj*dH;/12-22m=Do/drj;dFrl=2*PI*u/1000*dH*(m*m-1)/(m*m+1)*log(m)-(m*m-1)*Vmax;/12-39 vmax求法在公式12-39下面dFu=0.015*dWr+dFrl/1.3;/0.015可能是4.1dFd=0.015*dWr+dFrl;dPmax=dWr+dIru+dFu;/最大载荷增量dPmin=dWrd-dIrd-dFd;/最小载荷增量Pmax=Pmax+dPmax;Pmin=Pmin+dPmin;Sigmaa=(Pmax-Pmin)/(2*frj);/12-102Sigmac=pow(Sigmaa*Pmax/frj,0.5);/12-103if(Sigmac=Sigma1j)/符合抽油杆强度条件if(H1=H) break;else H0=H1; /取起点H0=H1else Lj=H1-(H-Lp)-dH;Pmax=Pmax-dPmax;Pmin=Pmin-dPmin;j=j+1; /如果不满足,直径增大为下一个Lj=0;Lj=Lp;for(i=j;i0;i-) Li=Li-Li-1;W1=0; for(i=0;i=j;i+) W1=W1+(fp-fri)*Zp*g*Li;if(fabs(W1-W10)=0.1)/W1与W10的绝对值大于等于 0.1时,继续循环break;else; W10=(W1+W10)/2;for(i=0;i=j;i+) printf(第%d级抽油杆直径是:dr%d=%f,i+1,i+1,dri);printf(第%d级抽油杆长度是:L%d=%fn,i+1,i+1,Li); printf(最大载荷Pmax:%fNn,Pmax);printf(最小载荷Pmin:%fNn,Pmin);return 0; float jiaohe() float Pmaxa=100000,Pmax=49122.777344,Pmin=4227.848145,Mmax,M0max,M1max,M2max,Mmaxa=48000,Nmax,e=0.9;if(Pmax100000) printf(所选抽油机满足载荷要求n); else printf(所选抽油机不满足载荷要求,需重新选择n); M0max=s*(Pmax-Pmin)/4; M1max=300*s+0.236*s*(Pmax-Pmin); M2max=1800*s+0.202*s*(Pmax-Pmin); Mmax=M0max; if(M1maxM2max)M1max=M2max; if(MmaxM1max)Mmax=M1max; printf(曲柄最大扭矩: %fN.mn,Mmax); if(MmaxMmaxa) printf(所选抽油机曲柄满足最大扭矩要求n); else printf(所选抽油机曲柄不满足最大扭矩要求,需重新选择n); Nmax=Mmax*n/(9549*e); printf(需要的最大电机功率为Nmax:%fKWn,Nmax); / system(PAUSE); return 0;

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。