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

📄 qjyhsj.cpp

📁 这是本人两年前兼职为某个公司做的石油钻进设计软件
💻 CPP
📖 第 1 页 / 共 4 页
字号:
	  {
		  YY = pow((KI / (KI - 1) * (pow(ljylb,(2 / KI)) - pow(ljylb,((KI + 1) / KI)))),0.5);
	  }
	  fkj[1] = int(100 * pow((XX / YY),0.5));
	  fkj[1]=fkj[1]/ 100.0;
	  
	  //选择气举阀、确定油管参数
	  for(KK=1;KK<=kyqjfgs;KK++)
	  {
		  if( fkj[1] < DHOLE[KK] || KK == kyqjfgs)
		  {
			  fkj1[1] = fkj[1];
			  fkj[1] = DHOLE[KK];
			  ygxyxs[1] = cygxyxs[KK];
			  break;
		  }
	  }
	  //	  主窗口.SSPanel1.FloodPercent = 75
	  
	  //计算其余阀的参数
	  ygxy[0] = 0;
	  jdygxy = 0;
	  for(J=2;J<=10;J++)
	  {
		  ygxy[J - 1] = ygxy[J - 2];
		  do
		  {
			  ygxy[J - 1] = (jdygxy + ygxy[J - 1]) / 2;
			  
			  //阀的深度和阀处套压
			  fsd[J] = fsd[J - 1];
			  do
			  {
				  LS = fsd[J];
				  for(i=1;i<=CSGDZZ;i++)
				  {
					  if( dshendu[i] >= LS && dshendu[i - 1] <= LS)
					  {
						  fcty[J] = pqtidu[i - 1] + (pqtidu[i] - pqtidu[i - 1]) / (dshendu[i] - dshendu[i - 1]) * (LS - dshendu[i - 1]);
						  break;
					  }
				  }
				  fsd[J] = fsd[J - 1] + (fcty[J] - ygxy[J - 1] - fczxyy[J - 1]) / GS;
			  }  while(fabs(LS - fsd[J]) >= 1);
			  
			  fsd[J] = int(fsd[J] + 0.5);
			  if( dzqd - fsd[J] > 60 && fzs == 0)
			  {
				  if( fsd[J] - fsd[J - 1] < 100)
				  {
					  fsd[J] = fsd[J - 1] + 100;
					  for(i=1;i<=CSGDZZ;i++)
					  {
						  if( dshendu[i] >= fsd[J] && dshendu[i - 1] <= fsd[J])
						  {
							  fcty[J] = pqtidu[i - 1] + (pqtidu[i] - pqtidu[i - 1]) / (dshendu[i] - dshendu[i - 1]) * (fsd[J] - dshendu[i - 1]);
							  break;
						  }
					  }
				  }
				  if( fsd[J] > dzqd)
				  {
					  fzs = J;
					  fsd[J] = dzqd;
					  fcty[J] = pjszqd + pgzyc;
					  fcwd[J] = int(100 * (tjingkou + TG * fsd[J] - 273.15));
					  fcwd[J]=fcwd[J]/ 100.0;
					  fczxyy[J] = int(100 * pjszqd);
					  fczxyy[J]=fczxyy[J]/ 100.0;
					  fdkyl[J] = int(100 * (fcty[J] - ygxy[J - 1] - 0.2));
					  fdkyl[J]=fdkyl[J]/ 100.0;
					  fzql[J] = int(qzhuru);
					  for(i=0;i<=CSGDZZ;i++)
					  {
						  dfshendu[J][i] = dfshendu[0][i];
						  pftidu[J][i] = pftidu[0][i];
					  }
				  }
				  else
				  {
					  fcty[J] = int(100 * fcty[J]);
					  fcty[J]=fcty[J]/ 100.0;
					  
					  //阀处温度
					  fcwd[J] = int(100 * (tjingkou + TG * fsd[J] - 273.15));
					  fcwd[J]=fcwd[J]/ 100.0;
					  
					  //阀最小油管压力
					  for(i=1;i<=CSGDZZ;i++)
					  {
						  if( dimtidu[i] >= fsd[J] && dimtidu[i - 1] <= fsd[J])
						  {
							  fczxyy[J] = pimtidu[i - 1] + (pimtidu[i] - pimtidu[i - 1]) / (dimtidu[i] - dimtidu[i - 1]) * (fsd[J] - dimtidu[i - 1]);
							  break;
						  }
					  }
					  fczxyy[J] = int(100 * fczxyy[J]);
					  fczxyy[J]=fczxyy[J]/ 100.0;
					  
					  //阀打开压力
					  fdkyl[J] = int(100 * (fcty[J] - ygxy[J - 1]));
					  fdkyl[J]=fdkyl[J]/ 100.0;
					  
					  //求最小注气量
					  QO = QL * (1 - Fw);
					  QW = QL * Fw;
					  qzhu = fzql[J - 1];
					  DLTQ = 500;
					  dtidu[0] = 0;
					  ptidu[0] = pjingkou;
					  for(i=1;i<=CSGDZZ;i++)
					  {
						  dtidu[i] = 0;
						  ptidu[i] = 0;
					  }
					  scqldx = "";
					  bcqldx = "";
					  DLTMIN = 10000;
					  NN = 0;
					  do
					  {
						  qzhu = qzhu + DLTQ;
						  //多相流(pzxyy, pjingkou, tjingkou, TG, qzhu, QW, QO, GG, GW, OG, fsd[J], DIT, 0, RR, H2S, CO2, N2, NaCl, CSGDZZ, 1, 1, MMPF);
						  pzxyy=zpjjs.dxl(MMPF,pjingkou, tjingkou, TG, qzhu, QW, QO, GG, GW, OG, fsd[J], DIT, 0, RR, H2S, CO2, N2, NaCl, CSGDZZ, 1, 1);	
						  if( pzxyy > fdkyl[J])
						  {
							  bcqldx = "偏小";
						  }
						  else
						  {
							  bcqldx = "偏大";
						  }
						  if( bcqldx == "偏大" && scqldx == "偏大")
						  {
							  DLTQ = -fabs(DLTQ);
						  }
						  else if( bcqldx == "偏小" && scqldx == "偏小")
						  {
							  DLTQ = fabs(DLTQ);
						  }
						  else if( bcqldx == "偏大" && scqldx == "偏小")
						  {
							  DLTQ = 0.618 * fabs(DLTQ);
						  }
						  else if( bcqldx == "偏小" && scqldx == "偏大")
						  {
							  DLTQ = -0.618 * fabs(DLTQ);
						  }
						  scqldx = bcqldx;
						  if( DLTMIN > fabs(pzxyy - fdkyl[J]))
						  {
							  DLTMIN = fabs(pzxyy - fdkyl[J]);
						  }
						  if( DLTMIN < fabs(pzxyy - fdkyl[J]))
						  {
							  NN = NN + 1;
						  }
						  if( NN > 50)
						  {
							  break;
						  }
						  if( fabs(pzxyy - fdkyl[J]) < 0.25 && fabs(DLTQ) > 100)
						  {
							  if( DLTQ > 0)
							  {
								  DLTQ = 100;
							  }
							  else
							  {
								  DLTQ = -100;
							  }
						  }
						  else if( fabs(pzxyy - fdkyl[J]) < 0.5 && fabs(DLTQ) > 200)
						  {
							  if( DLTQ > 0)
							  {
								  DLTQ = 200;
							  }
							  else
							  {
								  DLTQ = -200;
							  }
						  }
						  else if( fabs(pzxyy - fdkyl[J]) < 2 && fabs(DLTQ) > 300)
						  {
							  if( DLTQ > 0)
							  {
								  DLTQ = 300;
							  }
							  else
							  {
								  DLTQ = -300;
							  }
						  }
					  }
					  while(fabs(pzxyy - fdkyl[J]) >= 0.05);
					  fzql[J] = int(qzhu);
					  dfshendu[J][0] = 0;
					  pftidu[J][0] = pjingkou;
					  for(i=1;i<=CSGDZZ;i++)
					  {
						  dfshendu[J][i] = fsd[J] / CSGDZZ * i;
						  pftidu[J][i] = ptidu[i];
					  }
			}
		  }
		  else
		  {
			  fzs = J;
			  fsd[J] = dzqd;
			  fcty[J] = pjszqd + pgzyc;
			  fcwd[J] = int(100 * (tjingkou + TG * fsd[J] - 273.15));
			  fcwd[J]=fcwd[J]/ 100.0;
			  fczxyy[J] = int(100 * pjszqd);
			  fczxyy[J]=fczxyy[J]/ 100.0;
			  fdkyl[J] = int(100 * (fcty[J] - ygxy[J - 1] - 0.2));
			  fdkyl[J]=fdkyl[J]/ 100.0;
			  fzql[J] = int(qzhuru);
			  for(i=0;i<=CSGDZZ;i++)
			  {
				  dfshendu[J][i] = dfshendu[0][i];
				  pftidu[J][i] = pftidu[0][i];
			  }
		  }
		  
		  //求上只阀的最大油压和油管效应
		  for(i=1;i<=CSGDZZ;i++)
		  {
			  if( fsd[J - 1] <= dfshendu[J][i] && fsd[J - 1] >= dfshendu[J][i - 1])
			  {
				  XX = (fsd[J - 1] - dfshendu[J][i - 1]) / (dfshendu[J][i] - dfshendu[J][i - 1]);
				  fczdyy[J - 1] = pftidu[J][i - 1] + (pftidu[J][i] - pftidu[J][i - 1]) * XX;
				  break;
			  }
		  }
		  if( fzs == 0)
		  {
			  fczdyy[J - 1] = int(100 * fczdyy[J - 1] + 0.5);
			  fczdyy[J - 1]=fczdyy[J - 1]/ 100.0;
		  }
		  else
		  {
			  fczdyy[J - 1] = fdkyl[J];
		  }
		  if( fczdyy[J - 1] < fczxyy[J - 1])
		  {
			  fczdyy[J - 1] = fczxyy[J - 1];
		  }
		  A = (fczdyy[J - 1] - fczxyy[J - 1]) * ygxyxs[J - 1];
		  if( A <= 0)
		  {
			  A = 0;
		  }
		  jdygxy = ygxy[J - 2] + A;
		}
		while(fabs(ygxy[J - 1] - jdygxy) >= 0.005);
		ygxy[J - 1] = int(100 * ygxy[J - 1]);
		ygxy[J - 1]=ygxy[J - 1]/ 100.0;
		
		//校正注气量
		fjzzql[J] = int(fzql[J] * 0.0544 * pow((GG * 1.8 * (fcwd[J] + 273.15)),0.5));
		
		//计算阀的孔径
		if( fzs > 0)
		{
			slyl = fcty[J];
		}
		else
		{
			slyl = fdkyl[J];
		}
		ljylb = pow((2 / (1 + KI)),(KI / (KI - 1)));
		ylb = fczxyy[J] / slyl;
		PR = slyl / PC;
		TR = (fcwd[J] + 273.15) / TC;
		//		天然气偏差系数(Z, PR, TR);
		Z=csjs.trqpcxs(PR, TR);//天然气偏差因子
		XX = fjzzql[J] * pow((GG * (fcwd[J] + 273.15) * Z),0.5) / 4066 / slyl;
		if( ylb >= ljylb)
		{
			if( ylb >= 1)
			{
				ylb = 0.999;
			}
			YY = pow((KI / (KI - 1) * (pow(ylb,(2 / KI)) - pow(ylb,((KI + 1) / KI)))),0.5);
		}
		else
		{
			YY = pow((KI / (KI - 1) * (pow(ljylb,(2 / KI)) - pow(ljylb,((KI + 1) / KI)))),0.5);
		}
		fkj[J] = int(100 * pow((XX / YY),0.5));
		fkj[J]=fkj[J]/ 100.0;
		//选择气举阀、确定油管参数
		for(KK=1;KK<=kyqjfgs;KK++)
		{
			if( fkj[J] < DHOLE[KK] || KK == kyqjfgs)
			{
				fkj1[J] = fkj[J];
				fkj[J] = DHOLE[KK];
				ygxyxs[J] = cygxyxs[KK];
				break;
			}
		}
		if( fkj[J] == 0)
		{
			fkj[J] = fkj1[J];
		}
		if( fkj1[J] == 0)
		{
			fkj1[J] = fkj[J];
		}
		if( fzs > 0)
		{
			break;
		}
		//		主窗口.SSPanel1.FloodPercent = 主窗口.SSPanel1.FloodPercent + 5
		//		If 主窗口.SSPanel1.FloodPercent > 95 Then 主窗口.SSPanel1.FloodPercent = 95
		g_iProgress = 95;	// 计算进度
	ENDCOMPUTE;
	  }
	  for(J=1;J<=fzs;J++)
	  {
		  fcdyl[J] = int(100 * (fdkyl[J] + fczxyy[J] * ygxyxs[J]) / (1 + ygxyxs[J]));
		  fcdyl[J]=fcdyl[J]/ 100.0;
		  A = 1 / (1 + 0.00215 * (1.8 * fcwd[J] - 48));
		  fcdyl15[J] = int(100 * A * fcdyl[J]);
		  fcdyl15[J]=fcdyl15[J]/ 100.0;
		  A = 1 / (1 + 0.0002048 * (1.8 * fcwd[J] - 48));
		  fcdyl25[J] = int(100 * A * fcdyl[J]);
		  fcdyl25[J]=fcdyl25[J]/ 100.0;
		  fdkyl15[J] = int(100 * fcdyl15[J] * (1 + ygxyxs[J]));
		  fdkyl15[J]=fdkyl15[J]/ 100.0;
		  fdkyl25[J] = int(100 * fcdyl25[J] * (1 + ygxyxs[J]));
		  fdkyl25[J]=fdkyl25[J]/ 100.0;
	  }
	  //	  主窗口.SSPanel1.FloodPercent = 95
	  fczdyy[fzs] = fczxyy[fzs];
	  
	  //写入设计结果
	  /*	   fileDialogFilter2 ="Data files (*.RDF)|*.RDF|All files (*.*)|*.*||";
	  fileDialogExt2 = "RDF";
	  CFileDialog fileDialog2( FALSE, 
	  fileDialogExt2, NULL,
	  0, fileDialogFilter2 );
	  fileDialog2.m_ofn.lpstrTitle="保存计算结果";
	  if( fileDialog2.DoModal() == IDCANCEL )
	  {
	  return;
	   }*/
	  CStdioFile f3;
	  CFileException exception3;
	  BOOL status1;	 
  	   templs1 = ((CCVenusApp*)AfxGetApp())->GetMyAppPath();
	   templs1  += "\\tempfile.txt";	
	   status1 = f3.Open(templs1,CFile::modeCreate|CFile::modeWrite);	
	   if (!status1)
	   {
		   char s[100];
		   sprintf(s, "Error opening file for reading. Code:%d",
			   exception3.m_cause);
		   AfxMessageBox(s);
		   return;
	   }
	   try
	   {
		   f3.WriteString("\n");
		   //			title1="";
		   //			title="\t"+title1+"$0"+"\t"+"井气举排水$0"+"\t"+"采气优化设$0"+"\t"+"计结果$0"+"\n";
		   title="\t$$气举排水采气优化设计结果$0\n";
		   f3.WriteString(title);
		   f3.WriteString("\n");
	   }
	   catch (CFileException exception3)
	   {
		   AfxMessageBox("Error reading file");
		   return;
	   }   
	   A01 = " 设计参数$13\t$12\t$14";
	   A02 = " 置阀深度(m)$13\t$12\t$14";
	   A03 = " 选择阀孔径(mm)$13\t$12\t$14";
	   A33 = " 计算阀孔径(mm)$13\t$12\t$14";
	   A04 = " 阀处温度$13(℃)\t$12\t$14";
	   A05 = " 注气量(10 ^4m^3/d)$13\t$12\t$14";
	   A06 = " 校正注气量(10 ^4m^3/d)$13\t$12\t$14";
	   A07 = " 阀处套压(MPa)$13\t$12\t$14";
	   A08 = " 阀处最小油压(MPa)$13\t$12\t$14";
	   A09 = " 阀处最大油压(MPa)$13\t$12\t$14";
	   A10 = " 阀打开压力(MPa)$13\t$12\t$14";
	   A11 = " 15.6℃阀打开压力(MPa)$13\t$12\t$14";
	   A12 = " 25.6℃阀打开压力(MPa)$13\t$12\t$14";
	   A13 = " 阀充氮压力(MPa)$13\t$12\t$14";
	   A14 = " 15.6℃阀充氮压力(MPa)$13\t$12\t$14";
	   A15 = " 25.6℃阀充氮压力(MPa)$13\t$12\t$14";
	   A16 = " 油管效应(MPa)$13\t$12\t$14";
	   
	   
	   for(i=1;i<=fzs;i++)
	   {
		   switch(i)
		   {
		   case 1:
			   DNZF = "一";
			   break;
		   case 2:
			   DNZF = "二";
			   break;
		   case 3:
			   DNZF = "三";
			   break;
		   case 4:
			   DNZF = "四";
			   break;
		   case 5:
			   DNZF = "五";
			   break;
		   case 6:
			   DNZF = "六";
			   break;
		   case 7:
			   DNZF = "七";
			   break;
		   case 8:
			   DNZF = "八";
			   break;
		   case 9:
			   DNZF = "九";
			   break;
		   case 10:
			   DNZF = "十";
			   break;
		   default:
			   gcvt(i,20,Temp);
			   DNZF = Temp;
			   DNZF.TrimLeft();
			   DNZF.TrimRight();
			   break;
		   }
		   
		   A01 = A01 + "\t" + "第" + DNZF + "只阀";
		   gcvt(fsd[i],100,Temp);
		   title=Temp;
		   title=title+"          ";
		   title.Left(10);
		   A02 = A02 + "\t" +title;
		   gcvt(fkj[i],100,Temp);
		   title=Temp;
		   title=title+"          ";
		   title.Left(10);
		   A03 = A03 + "\t" + title;
		   gcvt(fkj1[i],100,Temp);
		   title=Temp;
		   title=title+"          ";
		   title.Left(10);
		   A33 = A33 + "\t" +title;
		   gcvt(fcwd[i],100,Temp);
		   title=Temp;
		   title=title+"          ";
		   title.Left(10);
		   A04 = A04 + "\t" +title;
		   gcvt(fzql[i]/10000,100,Temp);
		   title=Temp;
		   title=title+"          ";
		   title.Left(10);
		   A05 = A05 + "\t" +title;
		   gcvt(fjzzql[i]/10000,100,Temp);
		   title=Temp;
		   title=title+"          ";
		   title.Left(10);
		   A06 = A06 + "\t" +title;
		   gcvt(fcty[i],100,Temp);
		   title=Temp;
		   title=title+"          ";
		   title.Left(10);
		   A07 = A07 + "\t" +title;
		   gcvt(fczxyy[i],100,Temp);
		   title=Temp;
		   title=title+"          ";
		   title.Left(10);
		   A08 = A08 + "\t" +title;
		   gcvt(fczdyy[i],100,Temp);
		   title=Temp;
		   title=title+"          ";
		   title.Left(10);
		   A09 = A09 + "\t" +title;
		   gcvt(fdkyl[i],100,Temp);
		   title=Temp;
		   title=title+"          ";
		   title.Left(10);
		   A10 = A10 + "\t" +title;
		   gcvt(fdkyl15[i],100,Temp);
		   title=Temp;
		   title=title+"          ";
		   title.Left(10);
		   A11 = A11 + "\t" +title;
		   gcvt(fdkyl25[i],100,Temp);
		   title=Temp;
		   title=title+"          ";
		   title.Left(10);
		   A12 = A12 + "\t" +title;
		   gcvt(fcdyl[i],100,Temp);
		   title=Temp;
		   title=title+"          ";
		   title.Left(10);
		   A13 = A13 + "\t" +title;
		   gcvt(fcdyl15[i],100,Temp);
		   title=Temp;
		   title=title+"          ";

⌨️ 快捷键说明

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