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

📄 jcyhsj.cpp

📁 这是本人两年前兼职为某个公司做的石油钻进设计软件
💻 CPP
📖 第 1 页 / 共 5 页
字号:

void jcyhsj::gcygdqdsj()//钢抽油杆柱等强度设计-------------
{ 
	  //二级抽油杆机抽系统设计程序
	  NNN = 0;
	  sfdayin = 0;
	  //函数调用
	  cshsz();
	  L1 = 0;
	  L2 = 0;
	  L3 = 0;
	  L4 = 0;
	  for(int K=1;K<=10;K++)//(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;
				  }
				  //计算第一级抽油杆的长度
				  //单位制换算:将MPa换算为 公斤/cm^2  1公斤/cm^2=0.1MPa  P沉没压力 = P沉没压力 * 10  pjingkou = pjingkou * 10
				  A = 3.1416 / 4 * pow(DD[K],2) * (H * RUO * (1 + gchongcheng[i][jj] * pow(gchongci[i][j],2) / 1790) * pow(10,(-6)) - (pcmyl * 10 - pjingkou * 10) * pow(10,(-2)));
				  B = 1 + gchongcheng[i][jj] * pow(gchongci[i][j],2) / 1790;
				  D = RUO / (2 * 7850) + gchongcheng[i][jj] * pow(gchongci[i][j],2) / 1790;
				  //计算第一级抽油杆长度L1
				  A1 = pow(Q3,2) * B * D;
				  B1 = Q3 * A * (B / 2 + D);
				  C1 = pow(A,2) / 2 - pow((F3 * fff),2);
				  L1 = (sqrt(pow(B1,2) - 4 * A1 * C1) - B1) / (2 * A1);
				  L1 = long(L1+0.5);
				  if( L1 >= H)
				  {
					L1 = H;
					L2 = 0;
				  }
				  else
				  {
					//计算第二级抽油杆长度L2
					L2 = H - L1;
					L2 = long(L2+0.5);
				  }
				  AA1 = Q3 * L1;
				  aa2 = Q3 * L1 + Q4 * L2;
				  //计算每一级抽油杆断面处的当量应力
				  dlyl1 = sqrt((A + B * AA1) * (A / 2 + D * AA1)) / F3;
				  dlyl2 = sqrt((A + B * aa2) * (A / 2 + D * aa2)) / F4;
				  if( L2 > 0)
				  {
					ffff = dlyl2;
				  }
				  else if( L2 == 0 && L1 > 0)
				  {
					ffff = dlyl1;
				  }
				  //计算抽油泵理论排量
				  QQ = 3.1416 / 4 * pow(DD[K],2) * gchongcheng[i][jj] * gchongci[i][j] * 1440 / 1000000;
				  //计算悬点最大载荷和最小载荷
				  Gmax = (A + B * aa2) / 100;
				  Gmin = ((1 - RUO / 7850 - gchongcheng[i][jj] * pow(gchongci[i][j],2) / 1790) * aa2) / 100;
				  //计算曲柄最大扭矩
				  MMAX = (gchongcheng[i][jj] / 2 * (100 * Gmax - (1 - RUO / 7850) * aa2 - A / (2 * B))) / 100;
				  //计算抽油杆弹性变形冲程损失
				  XX = L1 / F3 + L2 / F4;
				  V1 = A / B * XX / gchongcheng[i][jj] / 210;
				  //计算油管弹性变形冲程损失
				  V2 = A / B * H / gchongcheng[i][jj] / 244900;
				  //计算惯性载荷产生的冲程增量
				  V3 = 21 * pow(gchongci[i][j],2) * pow(H,2) / pow(10,9);
				  //计算理论泵效
				  v = 100 - V1 - V2 + V3;
				  //计算电机功率
				  pdjgl = 0.2 * A / B * gchongcheng[i][jj] * gchongci[i][j] * (0.355 + v / 100) / 1000;
				  //有关文献指出,在选择抽油机设备时,加速度因素最好不超过0.225,这相当于
				  //n^2*s<=400。同时还要考虑井深的影响,一般希望无因次参数N/No<=0.35
				  //即n<=26100/L
				  //抽油杆许用应力——抽油杆许用应力,1kg/mm^2=10MPa
				  if( QQ >= qsheji && QQ < qsheji * 1.1 && gchongci[i][j] <= 26100 / H && L1 > 100 && ffff < fff * SF)
				  {
					if( Gmax * 1.2 < gxdzdzh[i] * 10 && MMAX * 1.2 < gqbzdnj[i])
					{
					  sscyjxh[NNN]= gcyjxh[i];
					  sbj[NNN]= DD[K];
					  schongci[NNN]= gchongci[i][j];
					  schongcheng[NNN]= gchongcheng[i][jj];
					  bpl[NNN]= QQ;
					  LL1[NNN]= long(L1+0.5);
					  LL2[NNN]= long(L2+0.5);
					  zdyl1[NNN]= dlyl1;
					  zdyl2[NNN]= dlyl2;
					  zhmax[NNN]= Gmax;
					  zhmin[NNN]= Gmin;
					  zdnj[NNN]= MMAX;
					  llbx[NNN]= v;
					  sdjgl[NNN]= pdjgl;
					  //计算优化目标函数EI(NNN)
					  EI1 = v + QQ / qsheji;
					  EI2 = Gmax / gxdzdzh[i] + MMAX / 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(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" + "[二级抽油杆机抽设计结果(等强度设计方法)]$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"+"\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"+"\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" + " (%)$11" + "\t" + " (Kw)$11"+"\n";
            try
			{    
				f3.WriteString(title);
                f3.WriteString(title1);
                f3.WriteString(title2);
			}
			catch (CFileException exception3)
			{
				AfxMessageBox("Error reading file");
				return;
			}
		  }
		  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(bpl[xuhao[i]],100,Temp);
		  title3=Temp;
		  G6=sscyjxh[xuhao[i]]+"\t"+title+"\t"+title1+"\t"+title2+"\t"+title3+"\t";
          gcvt(LL1[xuhao[i]],100,Temp);
		  title=Temp;
          gcvt(zdyl1[xuhao[i]]*10,100,Temp);
		  title1=Temp;
		  G6=G6+title+"\t"+title1+"\t";
          gcvt(LL2[xuhao[i]],100,Temp);
		  title=Temp;
          gcvt(zdyl2[xuhao[i]]*10,100,Temp);
		  title1=Temp;
		  if( LL2[xuhao[i]] > 0)
		  {
			G6 = G6 + title + "\t" + title1+"\t";
		  }
		  else
		  {
			G6 = G6 + "/"+"\t"+ "/"+"\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(llbx[xuhao[i]],100,Temp);
		  title=Temp;
          G6 = G6 + title+"\t";
          gcvt(sdjgl[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)
	  {
        try
		{    
			f3.WriteString(G7);
		}
		catch (CFileException exception3)
		{
			AfxMessageBox("Error reading file");
			return;
		}
	  }
//	  G循环次数 = G循环次数 + 1;
//	  主窗口.SSPanel1.FloodPercent = G循环次数 / Max * 100;

	  //三级抽油杆机抽系统设计程序
	  sfdayin = 0;
	  NNN = 0;
	  cshsz();
	  L1 = 0;
	  L2 = 0;
	  L3 = 0;
	  L4 = 0;
	  for(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;
			  }
			  //计算每一级抽油杆的长度
			  //单位制换算:将MPa换算为 公斤/cm^2  1公斤/cm^2=0.1MPa  P沉没压力 = P沉没压力 * 10  P井口 = P井口 * 10
			  A = 3.1416 / 4 * pow(DD[K],2) * (H * RUO * (1 + gchongcheng[i][jj] * pow(gchongci[i][j],2) / 1790) * pow(10,(-6)) - (pcmyl * 10 - pjingkou * 10) * pow(10,(-2)));
			  B = 1 + gchongcheng[i][jj] * pow(gchongci[i][j],2) / 1790;
			  D = RUO / (2 * 7850) + gchongcheng[i][jj] * pow(gchongci[i][j],2) / 1790;
			  //计算第一级抽油杆长度L1
			  A1 = pow(Q2,2) * B * D;
			  B1 = Q2 * A * (B / 2 + D);
			  C1 = pow(A,2) / 2 - pow((F2 * fff),2);
			  L1 = (sqrt(pow(B1,2) - 4 * A1 * C1) - B1) / (2 * A1);
			  L1 = long(L1+0.5);
			  if( L1 >= H)
			  {
				L1 = H;
				L2 = 0;
				L3 = 0;
			  }
			  else
			  {
				L1 = long(L1+0.5);
				//计算第二级抽油杆长度L2
				A2 = pow(Q3,2) * B * D;
				B2 = Q3 * (A * (B / 2 + D) + 2 * Q2 * L1 * B * D);
				C2 = (A + Q2 * L1 * B) * (A / 2 + Q2 * L1 * D) - pow((F3 * fff),2);
				L2 = (sqrt(pow(B2,2) - 4 * A2 * C2) - B2) / (2 * A2);
				if( L1 + L2 >= H)
				{
				  L2 = H - L1;
				  L3 = 0;
				}
				else
				{
				  if( L2 != 0)
				  {
					  L2 = long(L2+0.5);
				  }
				  //计算第三级抽油杆长度L3
				  L3 = H - L1 - L2;
				  if( L3 != 0)
				  {
					  L3 = long(L3+0.5);
				  }
				}
			  }
			  AA1 = Q2 * L1;
			  aa2 = Q2 * L1 + Q3 * L2;
			  aa3 = Q2 * L1 + Q3 * L2 + Q4 * L3;
			  //计算每一级抽油杆断面处的当量应力
			  dlyl1 = sqrt((A + B * AA1) * (A / 2 + D * AA1)) / F2;
			  dlyl2 = sqrt((A + B * aa2) * (A / 2 + D * aa2)) / F3;
			  dlyl3 = sqrt((A + B * aa3) * (A / 2 + D * aa3)) / F4;
			  if( L3 > 0)
			  {
				ffff = dlyl3;
			  }
			  else if( L3 == 0 && L2 > 0)
			  {
				ffff = dlyl2;
			  }
			  else if( L2 == 0 && L1 > 0)
			  {
				ffff = dlyl1;
			  }
			  //计算抽油泵理论排量
			  QQ = 3.1416 / 4 * pow(DD[K],2) * gchongcheng[i][jj] * gchongci[i][j] * 1440 / 1000000;
			  //计算悬点最大载荷和最小载荷
			  Gmax = (A + B * aa3) / 100;
			  Gmin = ((1 - RUO / 7850 - gchongcheng[i][jj] * pow(gchongci[i][j],2) / 1790) * aa3) / 100;
			  //计算曲柄最大扭矩
			  MMAX = (gchongcheng[i][jj] / 2 * (100 * Gmax - (1 - RUO / 7850) * aa3 - A / (2 * B))) / 100;
			  //计算抽油杆弹性变形冲程损失
			  XX = L1 / F2 + L2 / F3 + L3 / F4;
			  V1 = A / B * XX / gchongcheng[i][jj] / 210;
			  //计算油管弹性变形冲程损失
			  V2 = A / B * H / gchongcheng[i][jj] / 244900;
			  //计算惯性载荷产生的冲程增量
			  V3 = 21 * pow(gchongci[i][j],2) * pow(H,2) / pow(10,9);
			  //计算理论泵效
			  v = 100 - V1 - V2 + V3;
			  //计算电机功率
			  pdjgl = 0.2 * A / B * gchongcheng[i][jj] * gchongci[i][j] * (0.355 + v / 100) / 1000;
			  //输出文件
			  if( QQ >= qsheji && QQ < qsheji * 1.1 && gchongci[i][j] <= 26100 / H && L1 > 100 && ffff < fff * SF)
			  {
				if( Gmax * 1.2 < gxdzdzh[i] * 10 && MMAX * 1.2 < gqbzdnj[i])
				{
				  sscyjxh[NNN]= gcyjxh[i];
				  sbj[NNN]= DD[K];
				  schongci[NNN]= gchongci[i][j];
				  schongcheng[NNN]= gchongcheng[i][jj];
				  bpl[NNN]= QQ;
				  LL1[NNN]= long(L1+0.5);
				  LL2[NNN]= long(L2+0.5);
				  LL3[NNN]= long(L3+0.5);
				  zdyl1[NNN]= dlyl1;
				  zdyl2[NNN]= dlyl2;
				  zdyl3[NNN]= dlyl3;
				  zhmax[NNN]= Gmax;
				  zhmin[NNN]= Gmin;
				  zdnj[NNN]= MMAX;
				  llbx[NNN]= v;
				  sdjgl[NNN]= pdjgl;
				  //计算优化目标函数EI(NNN)
				  EI1 = v + QQ / qsheji;
				  EI2 = Gmax / gxdzdzh[i] + MMAX / 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(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" + "[三级抽油杆机抽设计结果等强度设计方法)]$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" + "  理论$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" + "抽油杆长$7" + "\t" + "当量应力$7" + "\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" + " (m)$11" + "\t" + " (MPa)$11" + "\t" + " (KN)$11" + "\t" + " (KN)$11" + "\t" + "(KN·m)$11" + "\t" + " (%)$11" + "\t" + " (Kw)$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);

⌨️ 快捷键说明

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