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

📄 jcyhsj.cpp

📁 这是本人两年前兼职为某个公司做的石油钻进设计软件
💻 CPP
📖 第 1 页 / 共 5 页
字号:
			//计算二级钢杆的刚度Kr,N
			Kr = 1 / (H * Er);
			//计算二级钢杆的等效固有频率No
			No = (15 * sqrt(9.8 / (Er * Wr * 9.8))) / H;
			//计算二级钢杆的固有频率No1
			VV = 4978.4;
			VV1 = sqrt((egang * 9.8 * F4) / (Q4 * 9.8));    //V1代表声音在玻璃钢抽油杆中的传播速度
			VV2 = sqrt((egang * 9.8 * F3) / (Q3 * 9.8));    //V2代表声音在钢抽油杆中的传播速度
			CC1 = 3.14 * VV * R1 / (2 * VV1);
			CC2 = 3.14 * VV * (1 - R1) / (2 * VV2);
			//函数调用
			Fc=ggyplyz(F4, F3, F2, L3, egang, VV1, VV2, VV3, CC1, CC2, CC3);
			No1 = No * Fc;
			//计算二级钢杆在液体中的重量Wrf
			Wrf = H * Wr * 9.8 * (1 - RUO / ruogang);
			for(int K=1;K<=10;K++)
			{
			  for(int i=1;i<=gcyjsl;i++)//i----不同型号的抽油机
			  {
		  		 for(int j=1;j<=5;j++)
				 {
				  if( gcyjxh[i] != scyjxh && scyjxh != "全部")
				  {
					  break;
				  }
				  for(int jj=1;jj<=5;jj++)
				  {
			  		if( gchongci[i][j] * gchongcheng[i][jj] == 0)
					{
						break;
					}
					//计算考虑沉没压力以及井口回压后,作用在整个活塞截面积上的液柱载荷Fo
					FO = 3.14 * pow((DD[K] / 2000),2) * (H * RUO * 9.8 - (pcmyl - pjingkou) * pow(10,6));
					//计算无因次变量
					M1 = FO / (gchongcheng[i][jj] * Kr);
					if( M1 <= 0.5)
					{
					  X1 = gchongci[i][j] / No;
					  X2 = gchongci[i][j] / No1;
					  M2 = Wrf / (gchongcheng[i][jj] * Kr);
					  //计算活塞冲程Sp   Y1=Sp/S
					  Y1=jisuany1(M1, X2);
					  if( gygmd == 0)//未锚定
					  {
						SP = Y1 * gchongcheng[i][jj] - FO / Kt;
					  }
					  else if( gygmd == 1)//锚定
					  {
						SP = Y1 * gchongcheng[i][jj];
					  }
					  //计算泵排量PD  此处泵径DD(K)单位为厘米
					  PD = 0.1131 * SP * gchongci[i][j] * pow((DD[K] / 10),2);
					  //计算光杆最大载荷PPRL   Y2=F1/SKr
					  Y2=jisuany2(M1, X1);
					  PPRL = Wrf + Y2 * gchongcheng[i][jj] * Kr;
					  //计算光杆最小载荷MPRL   Y3=F2/SKr
					  Y3=jisuany3(M1, X1);
					  MPRL = Wrf - Y3 * gchongcheng[i][jj] * Kr;
					  //计算光杆功率PRHP   Y4=F3/SKr
					  Y4=jisuany4(M1, X1);
					  PRHP = Y4 * gchongcheng[i][jj] * Kr * gchongcheng[i][jj] * gchongci[i][j] / 60000;
					  //计算曲柄最大扭矩PT  Y5=2T/(S^2*Kr)  Y6:峰值扭矩调整常数 Ta 的调整参数
					  Y5=jisuany5(M1, X1);
					  TA = 1;
					  PT = Y5 * gchongcheng[i][jj] * Kr * gchongcheng[i][jj] / 2 * TA;
					  //计算有效平衡值(平衡重量)CBE
					  CBE = 1.06 * (Wrf + FO / 2);
					  //强度校核
					  //计算第一级抽油杆的最大载荷PFL,最小载荷MFL,最大应力PFLY,最小应力MFLY
					  PFL = PPRL;
					  PFLY = PFL / F4;
					  MFL = MPRL;
					  MFLY = MFL / F4;
					  //计算第二级抽油杆(钢杆)的最大载荷PS1L,最小载荷MS1L,最大应力PS1LY,最小应力MS1LY
					  PS1L = L2 * Q3 * 9.8 * (1 - RUO / ruogang) + Y2 * gchongcheng[i][jj] * Kr;
					  MS1L = L2 * Q3 * 9.8 * (1 - RUO / ruogang) - Y3 * gchongcheng[i][jj] * Kr;
					  PS1LY = PS1L / F3;
					  MS1LY = MS1L / F3;
					  //抽油杆(钢杆)的最大许用应力FSmax,MPa
					  FMAX = SF * (bfff / 4 + 0.5625 * MFLY);
					  FSmax = SF * (bfff / 4 + 0.5625 * MS1LY);
					  //设计计算结果输出
					  if( PD > qsheji && PD < (qsheji * 1.1) && gchongci[i][j] <= (26100.0/H))
					  {
						if( PFLY < FMAX)
						{
						  if( (PPRL * 1.2 < gxdzdzh[i] * 10000) && (PT * 1.2 < gqbzdnj[i] * 1000))
						  {
							sscyjxh[NNN]= gcyjxh[i];
							sbj[NNN]= DD[K];
							schongci[NNN]= gchongci[i][j];
							schongcheng[NNN]= gchongcheng[i][jj];
							zscc[NNN]= SP;
							bpl[NNN]= PD;
							LL1[NNN]= long(L1+0.5);
							LL2[NNN]= long(L2+0.5);
							zdyl2[NNN]= PS1LY;
							zdyl1[NNN]= PFLY;
							zhmax[NNN]= PPRL;
							zhmin[NNN]= MPRL;
							zdnj[NNN]= PT;
							phzl[NNN]= CBE;
							sdjgl[NNN]= PRHP;
							fcj[NNN]= lfcj;
							//计算优化目标函数EI(NNN)
							EI1 = Y1 + PD / qsheji + 1.1574 * pow(10,(-5)) * qsheji * 9.8 * RUO * H / PRHP;
							EI2 = PPRL / gxdzdzh[i] + PT / gqbzdnj[i];
							EI[NNN]= EI1 / EI2;
							NNN = NNN + 1;
						  }
						}
					  }
					}
				  }
				 }
			  }
			}
	  }

	  if( NNN > 0)
	  {
		  if( NNN > 10)
			{
			  paixu(EI, 0, NNN - 1);
			  MMM = 10;
			}
			else
			{
			  MMM = NNN - 1;
			  for(int K=0;K<=MMM;K++)
			  {
				 xuhao[K] = K;
			  }
			}
			for(i=0;i<=MMM;i++)
			{
			  if( sfdayin == 0)
			  {
				sfdayin = 1;
				title="";
				title=title+"\t" + "$0" + "\t" + "[二级抽油杆机抽设计结果(API设计方法)]$0"+"\n";
				try
				{    
					f3.WriteString(title);
				}
				catch (CFileException exception3)
				{
					AfxMessageBox("Error reading file");
					return;
				}
				title="";
				title=title+"$7" + "\t" + "  泵径$7" + "\t" + "  冲次$7" + "\t" + "  冲程$7" + "\t" + " 泵排量$7" + "\t" + " [7/8寸钢杆]$5" + "\t" + "$6" + "\t" + "   [1寸钢杆]$5" + "\t" + "$6" + "\t" + " 悬点最$7" + "\t" + " 悬点最$7" + "\t" + " 曲柄最$7" + "\t" + "  平衡$7" + "\t" + "  电机$7" + "\t" + " 防冲距$7"+"\n";
				title1="";
				title1=title1+"抽油机型号$3" + "\t" + "$3" + "\t" + "$3" + "\t" + "$3" + "\t" + "$3" + "\t" + "抽油杆长$7" + "\t" + "当量应力$7" + "\t" + "抽油杆长$7" + "\t" + "当量应力$7" + "\t" + " 大载荷$3" + "\t" + " 小载荷$3" + "\t" + " 大扭矩$3" + "\t" + "  重量$3" + "\t" + "  功率$3" + "\t" + "$3"+"\n";
				title2="";
				title2=title2+"$11" + "\t" + " (mm)$11" + "\t" + "(次/分)$11" + "\t" + " (m)$11" + "\t" + "(m^3/d)$11" + "\t" + " (m)$11" + "\t" + " (MPa)$11" + "\t" + " (m)$11" + "\t" + " (MPa)$11" + "\t" + " (KN)$11" + "\t" + " (KN)$11" + "\t" + "(KN·m)$11" + "\t" + " (KN)$11" + "\t" + " (Kw)$11" + "\t" + " (m)$11"+"\n";
				try
				{    
					f3.WriteString(title);
					f3.WriteString(title1);
					f3.WriteString(title2);
				}
				catch (CFileException exception3)
				{
					AfxMessageBox("Error reading file");
					return;
				}
			  }
			  G60 = G6;
			  gtiaojian = "是";
			  gcvt(sbj[xuhao[i]],100,Temp);
			  title=Temp;
			  gcvt(schongci[xuhao[i]],100,Temp);
			  title1=Temp;
			  gcvt(schongcheng[xuhao[i]],100,Temp);
			  title2=Temp;
//			  gcvt(zscc[xuhao[i]],100,Temp);
//			  title3=Temp;
			  gcvt(bpl[xuhao[i]],100,Temp);
			  title4=Temp;
			  G6=sscyjxh[xuhao[i]]+"\t"+title+"\t"+title1+"\t"+title2+"\t"+title4+"\t";
			  gcvt(LL2[xuhao[i]],100,Temp);
			  title=Temp;
			  gcvt(zdyl2[xuhao[i]],100,Temp);
			  title1=Temp;
			  G6=G6+title+"\t"+title1+"\t";
			  gcvt(LL1[xuhao[i]],100,Temp);
			  title=Temp;
			  gcvt(zdyl1[xuhao[i]],100,Temp);
			  title1=Temp;
			  G6=G6+title+"\t"+title1+"\t";
			  gcvt(zhmax[xuhao[i]],100,Temp);
			  title=Temp;
			  G6 = G6 + title+"\t";
			  gcvt(zhmin[xuhao[i]],100,Temp);
			  title=Temp;
			  G6 = G6 + title+"\t";
			  gcvt(zdnj[xuhao[i]],100,Temp);
			  title=Temp;
			  G6 = G6 + title+"\t";
			  gcvt(phzl[xuhao[i]] / 1000,100,Temp);
			  title=Temp;
			  G6 = G6 + title+"\t";
			  gcvt(sdjgl[xuhao[i]],100,Temp);
			  title=Temp;
			  G6 = G6 + title+"\t";
			  gcvt(fcj[xuhao[i]],100,Temp);
			  title=Temp;
			  G6 = G6 + title+"\n";
			  if( G60 != G6)
			  {
					try
					{    
						f3.WriteString(G6);
					}
					catch (CFileException exception3)
					{
						AfxMessageBox("Error reading file");
						return;
					}
			  }
			}
	  }
        
	  if( sfdayin == 1)
	  {
        G7=G7+"\n";
        try
		{    
			f3.WriteString(G7);
		}
		catch (CFileException exception3)
		{
			AfxMessageBox("Error reading file");
			return;
		}
	  }
//	  G循环次数 = G循环次数 + 1;
//	  主窗口.SSPanel1.FloodPercent = G循环次数 / Max * 100

	  //三级钢杆柱机抽系统设计程序
	  sfdayin = 0;
	  L1 = 0;
	  L2 = 0;
	  L3 = 0;
	  NNN = 0;
	  //函数调用
	  cshsz();
	  for(R1=0.1;R1<=0.7;R1=R1+0.05)//R1代表第一级抽油杆在整个杆串中所占的百分比,级数由上到下为1,2,3...级
	  {
	  //G循环次数 = G循环次数 + 1;
	  //主窗口.SSPanel1.FloodPercent = G循环次数 / Max * 100
		//估算每一级抽油杆的长度,L1,L2,L3...分别代表第1,2,3...级抽油杆长度
		L1 = H * R1;
		for(double R2=0.1;R2<=0.7;R2=R2+0.05)
		{
    	  L2 = (H - long(L1+0.5)) * R2;
		  L3 = H - L1 - long(L2+0.5);
		  //计算三级钢杆的线密度Wr,kg/m
		  Wr = ((L1 * Q4) + (L2 * Q3) + (L3 * Q2)) / H;
		  //计算油管的刚度Kt,N/m  E油管--油管的弹性模量  F油管--油管的横截面积
		  Kt = (fyouguan * eyouguan) / H;
		  //计算三级钢杆的弹性常数Er:单位--m/N.m
		  Er = ((L1 / (egang * F4) + L2 / (egang * F3) + L3 / (egang * F2))) / H;
		  //计算三级钢杆的刚度Kr,N/m
		  Kr = 1 / (H * Er);
		  //计算混合抽油杆杆柱的等效固有频率No
		  No = (15 * sqrt(9.8 / (Er * Wr * 9.8))) / H;
		  //计算三级钢杆的固有频率No1
		  VV = 4978.4;
		  VV1 = sqrt((egang * 9.8 * F4) / (Q4 * 9.8));    //V1代表声音在玻璃钢抽油杆中的传播速度
		  VV2 = sqrt((egang * 9.8 * F3) / (Q3 * 9.8));    //V2,V3代表声音在钢抽油杆中的传播速度
		  VV3 = sqrt((egang * 9.8 * F2) / (Q2 * 9.8));
		  CC1 = 3.14 * VV * (L1 / H) / (2 * VV1);
		  CC2 = 3.14 * VV * (L2 / H) / (2 * VV2);
		  CC3 = 3.14 * VV * (L3 / H) / (2 * VV3);
		  //函数调用
		  Fc=ggyplyz(F4, F3, F2, L3, egang, VV1, VV2, VV3, CC1, CC2, CC3);
		  No1 = No * Fc;
		  //计算三级钢杆在液体中的重量Wrf
		  Wrf = H * Wr * 9.8 * (1 - RUO / ruogang);
		  for(int K=1;K<=10;K++)
		  {
			for(int i=1;i<=gcyjsl;i++)//i----不同型号的抽油机
			{
			  for(int j=1;j<=5;j++)
			  {
			  	if( gcyjxh[i] != scyjxh && scyjxh != "全部")
				{
					break;
				}
				for(int jj=1;jj<=5;jj++)
				{
				  if( gchongci[i][j] * gchongcheng[i][jj] == 0)
				  {
					  break;
				  }
				  //计算考虑沉没压力以及井口回压后,作用在整个活塞截面积上的液柱载荷Fo
				  FO = 3.14 * pow((DD[K] / 2000),2) * (H * RUO * 9.8 - (pcmyl - pjingkou) * pow(10,6));
				  //计算无因次变量
				  M1 = FO / (gchongcheng[i][jj] * Kr);
				  if( M1 <= 0.5)
				  {
					X1 = gchongci[i][j] / No;
					X2 = gchongci[i][j] / No1;
					M2 = Wrf / (gchongcheng[i][jj] * Kr);
					//计算活塞冲程Sp   Y1=Sp/S
					Y1=jisuany1(M1, X2);
					if( gygmd == 0)//未锚定
					{            
					  SP = Y1 * gchongcheng[i][jj] - FO / Kt;
					}
					else if( gygmd == 1)//锚定
					{
					  SP = Y1 * gchongcheng[i][jj];
					}
					//计算泵排量PD  此处泵径DD(K)单位为厘米
					PD = 0.1131 * SP * gchongci[i][j] * pow((DD[K] / 10),2);
					//计算光杆最大载荷PPRL   Y2=F1/SKr
					Y2=jisuany2(M1, X1);
					PPRL = Wrf + Y2 * gchongcheng[i][jj] * Kr;
					//计算光杆最小载荷MPRL   Y3=F2/SKr
					Y3=jisuany3(M1, X1);
					MPRL = Wrf - Y3 * gchongcheng[i][jj] * Kr;
					//计算光杆功率PRHP   Y4=F3/SKr
					Y4=jisuany4(M1, X1);
					PRHP = Y4 * gchongcheng[i][jj] * Kr * gchongcheng[i][jj] * gchongci[i][j] / 60000;
					//计算曲柄最大扭矩PT  Y5=2T/(S^2*Kr)  Y6:峰值扭矩调整常数 Ta 的调整参数
					Y5=jisuany5(M1, X1);
					TA = 1;
					PT = Y5 * gchongcheng[i][jj] * Kr * gchongcheng[i][jj] / 2 * TA;
					//计算有效平衡值(平衡重量)CBE
					CBE = 1.06 * (Wrf + FO / 2);
					//强度校核
					//计算第一级抽油杆的最大载荷PFL,最小载荷MFL,最大应力PFLY,最小应力MFLY
					PFL = PPRL;
					PFLY = PFL / F4;
					MFL = MPRL;
					MFLY = MFL / F4;
					//计算第二级抽油杆(钢杆)的最大载荷PS1L,最小载荷MS1L,最大应力PS1LY,最小应力MS1LY
					PS1L = (L2 * Q3 + L3 * Q2) * 9.8 * (1 - RUO / ruogang) + Y2 * gchongcheng[i][jj] * Kr;
					MS1L = (L2 * Q3 + L3 * Q2) * 9.8 * (1 - RUO / ruogang) - Y3 * gchongcheng[i][jj] * Kr;
					PS1LY = PS1L / F3;
					MS1LY = MS1L / F3;
					//计算第三级抽油杆(钢杆)的最大载荷PS2L,最小载荷MS2L,最大应力PS2LY,最小应力MS2LY
					PS2L = L3 * Q2 * 9.8 * (1 - RUO / ruogang) + Y2 * gchongcheng[i][jj] * Kr;
					MS2L = L3 * Q2 * 9.8 * (1 - RUO / ruogang) - Y3 * gchongcheng[i][jj] * Kr;
					PS2LY = PS2L / F2;
					MS2LY = MS2L / F2;
					//计算各级杆最大许用应力,第一级抽油杆的最大许用应力Fmax
					//第二级抽油杆(钢杆)的最大许用应力FSmax1
					//第三级抽油杆(钢杆)的最大许用应力FSmax2
					FMAX = SF * (bfff / 4 + 0.5625 * MFLY);
					FSmax1 = SF * (bfff / 4 + 0.5625 * MS1LY);
					FSmax2 = SF * (bfff / 4 + 0.5625 * MS2LY);
					//设计计算结果输出
					if( PD > qsheji && PD < qsheji * 1.1 && gchongci[i][j] <= 26100 / H)
					{
					  if( PFLY < FMAX)
					  {
						if( PPRL * 1.2 < gxdzdzh[i] * 10000 && PT * 1.2 < gqbzdnj[i] * 1000)
						{
						  sscyjxh[NNN]= gcyjxh[i];
						  sbj[NNN]= DD[K];
						  schongci[NNN]= gchongci[i][j];
						  schongcheng[NNN]= gchongcheng[i][jj];
						  zscc[NNN]= SP;
						  bpl[NNN]= PD;
						  LL1[NNN]= long(L1+0.5);
						  LL2[NNN]= long(L2+0.5);
						  LL3[NNN]= long(L3+0.5);
						  zdyl1[NNN]= PFLY;
						  zdyl2[NNN]= PS1LY;
						  zdyl3[NNN]= PS2LY;
						  zhmax[NNN]= PPRL;
						  zhmin[NNN]= MPRL;
						  zdnj[NNN]= PT;
						  phzl[NNN]= CBE;
						  sdjgl[NNN]= PRHP;
						  fcj[NNN]= lfcj;
						  //计算优化目标函数EI(NNN)
						  EI1 = Y1 + PD / qsheji + 1.1574 * pow(10,(-5)) * qsheji * 9.8 * RUO * H / PRHP;
						  EI2 = PPRL / gxdzdzh[i] + PT / gqbzdnj[i];
						  EI[NNN]= EI1 / EI2;
						  NNN = NNN + 1;
						}
					  }
					}
				  }
				}
			  }
			}
		  }
		}
	  }
      
	  if( NNN > 0)
	  {
		if( NNN > 10)
		{
		  paixu(EI, 0, NNN - 1);
		  MMM = 10;
		}
		else
		{
		  MMM = NNN - 1;
		  for(int K=0;K<=MMM;K++)
		  {
		  	xuhao[K] = K;
		  }
		}
		for(i=0;i<=MMM;i++)
		{
		  if( sfdayin == 0)
		  {
			sfdayin = 1;
			title="";
			title=title+"\t" + "$0" + "\t" + "[三级抽油杆机抽设计结果(API设计方法)]$0"+"\n";
			try
			{    
				f3.WriteString(title);
			}
			catch (CFileException exception3)
			{
				AfxMessageBox("Error reading file");
				return;
			}
			title="";
			title=title+"$7" + "\t" + "  泵径$7" + "\t" + "  冲次$7" + "\t" + "  冲程$7" + "\t" + " 泵排量$7" + "\t" + " [3/4寸钢杆]$5" + "\t" + "$6" + "\t" + " [7/8寸钢杆]$5" + "\t" + "$6" + "\t" + "   [1寸钢杆]$5" + "\t" + "$6" + "\t" + " 悬点最$7" + "\t" + " 悬点最$7" + "\t" + " 曲柄最$7" + "\t

⌨️ 快捷键说明

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