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

📄 qjjjdfx.cpp

📁 这是本人两年前兼职为某个公司做的石油钻进设计软件
💻 CPP
📖 第 1 页 / 共 5 页
字号:
			  {
				zqdyl = jkyl;
				zqdsd = 0;
			  }
			  else
			  {
				  // 计算油管多相流压力梯度
				  QL = Rjsjg[0][J];
				  QG = QL * qyb + zrql;
				  QW = QL * Fw;
				  QO = QL * (1 - Fw);
				  PMF=zpjjs.dxl(MMPF,jkyl, Tjkwd, TG, QG, QW, QO, GG, GW, OG, gzsd, ygnj, 0, RR, H2S, CO2, N2, NaCl, 100, 1, 1);	
				  for(i=1;i<=100;i++)
				  {
    				  Gdxlyl[i] =ptidu[i];
				  }
				  // 求注气点深度和注气压力
				  zqdyl = 0;
				  zqdsd = 0;
				  for(i=2;i<=100;i++)
				  {
	  				H1 = Gsd[i - 1];
					H2 = Gsd[i];
					PI1 = Gdxlyl[i - 1];
					PI2 = Gdxlyl[i];
					PO1 = Gzqyl[i - 1];
					PO2 = Gzqyl[i];
					if( PI1 <= PO1 && PI2 >= PO2)
					{
						jslzjd.qlzxjd(H1, H2, PI1, PO1, PI2, PO2);
						zqdyl=jslzjd.Y;
						zqdsd=jslzjd.X;
						break;
					}
				  }
				  if( zqdyl > 0)
				  {
					  zqdyl = int(100 * zqdyl);
					  zqdyl=zqdyl/ 100;
				  }
				  if( zqdsd > 0)
				  {
					  zqdsd = int(100 * zqdsd);
					  zqdsd=zqdsd/ 100;
				  }
				  if( zqdyl == 0)
				  {
					  zqdyl = PMF;
					  zqdsd = gzsd;
				  }
			  }
			  // 求井底流动压力
			  PN = zqdyl;
			  QG = QL * qyb;
			  if( gzsd > zqdsd)
			  {
				T0 = Tjkwd + TG * zqdsd;
				L = gzsd - zqdsd;
				PN1=zpjjs.dxl(MMPF,PN, T0, TG, QG, QW, QO, GG, GW, OG, L, ygnj, 0, RR, H2S, CO2, N2, NaCl, 0, 1, 1);	
				PN = PN1;
			  }
			  if( gzsd < DVW)
			  {
				T0 = Tjkwd + TG * gzsd;
				L = DVW - gzsd;
				PN1=zpjjs.dxl(MMPF,PN, T0, TG, QG, QW, QO, GG, GW, OG, L, DIC, 0, RR, H2S, CO2, N2, NaCl, 0, 1, 1);	
				PN = PN1;
			  }
			  if( PN > Pdcyl + 2)
			  {
				  break;
			  }
			  if( zqdyl > 0 && zqdsd > 0)
			  {
				  gcvt(Rjsjg[0][J],100,Temp);
				  title=Temp;
				  gcvt(PN,100,Temp1);
				  title1=Temp1;
				  title=" "+title+" "+title1+"\n";
				  try
				  {
					f4.WriteString(title);
				  }
				  catch (CFileException exception4)
				  {
					AfxMessageBox("Error reading file");
					return;
				  }		
				  jsjg[1 + ii][J] = PN;
			  }
			  else
			  {
				jsjg[1 + ii][J] = 0;
			  }
			}
		  }
          gcvt(csz[1][ii],100,Temp);
		  title=Temp;
		  title.TrimRight();
		  title.TrimLeft();
		  title="Ptf="+title+"(MPa)"+"\n";
          try
		  {
			f4.WriteString("-1 -1\n");
//			f4.WriteString(" 0             1\n");
			f4.WriteString(cGraphColor[iColorIndex++]);
			iColorIndex %= iGraphColorNum;
            f4.WriteString(title);
		  }
		  catch (CFileException exception4)
		  {
			AfxMessageBox("Error reading file");
			return;
		  }
//		  百分比 = 百分比 + 100 / 计算总数
//		  主窗口.SSPanel1.FloodPercent = Int(百分比 + 0.5)
		}
        try
		{
			f4.WriteString("-10 -10\n");
		}
	    catch (CFileException exception4)
		{
			AfxMessageBox("Error reading file");
			return;
		}
    
	g_iProgress = 15;	// 计算进度
	ENDCOMPUTE;
		//写入计算的数据结果
		title1="\t\t";
//		title1=title1+"    [井口压$0" + "\t" + "力分析]$0"+"\n";
  		title1=title1+" [井口压力分析]$0"+"\n";
//        title="产液量$7"+ "\t" + "流入压力$7" + "\t" + "  在下$13" + "\t" + "列井口压$12" + "\t" + "力下的节$12" + "\t" + "点压力,$12" + "\t" + "MPa$14"+"\n";
          title="产液量$7\t流入压力$7\t 在下列井口压力下的节点压力(MPa)$13\t$12\t$12\t$12\t$14\n";
		try
		{
			f3.WriteString(title1);
            f3.WriteString(title);
		}
	    catch (CFileException exception3)
		{
			AfxMessageBox("Error reading file");
			return;
		}
		A = "(m^3/d)$11\t(MPa)$11";
		for(i=1;i<=5;i++)
		{
		  gcvt(csz[1][i],100,Temp);
		  title=Temp;
		  A = A + "\t" + title;
		}
		A=A+"\n";
        try
		{
            f3.WriteString(A);
		}
	    catch (CFileException exception3)
		{
			AfxMessageBox("Error reading file");
			return;
		}
		for(J=0;J<=Pfxjsds;J++)
		{
		  if( jsjg[0][J] == 0 || jsjg[2][J] + jsjg[3][J] + jsjg[4][J] + jsjg[5][J] + jsjg[6][J] == 0)
		  {
			  break;
		  }
		  for(i=0;i<=6;i++)
		  {
		  	gcvt(jsjg[i][J],100,Temp);
			title=Temp;
			B = title;
			if( i == 0)
			{
				A = B;
			}
			else
			{
				A = A + "\t" + B;
			}
		  }
		  A=A+"\n";
		  try
		  {
			f3.WriteString(A);
		  }
		  catch (CFileException exception3)
		  {
			AfxMessageBox("Error reading file");
			return;
		  }
		}
		A1 = "节点压力(MPa)$13\t$14";
		A2 = "井产水量(m^3/d)$13\t$14";
		for(i=1;i<=5;i++)
		{
		  P = 0;
		  Q = 0;
		  for(J=2;J<=Pfxjsds;J++)
		  {
		  	Q1 = jsjg[0][J - 1];
			Q2 = jsjg[0][J];
			PI1 = jsjg[1][J - 1];
			PI2 = jsjg[1][J];
			PO1 = jsjg[i + 1][J - 1];
			PO2 = jsjg[i + 1][J];
			if( J > 2 && PI2 * PO2 == 0)
			{
				break;
			}
			if( PI1 >= PO1 && PI2 <= PO2 || (PI1 <= PO1 && PI2 >= PO2))
			{
			    if( P > 0 && Q > 0)
				{
					jslzjd.qlzxjd(Q1, Q2, PI1, PO1, PI2, PO2);
					P=jslzjd.Y;
					Q=jslzjd.X;
					break;
				}
				jslzjd.qlzxjd(Q1, Q2, PI1, PO1, PI2, PO2);
				P=jslzjd.Y;
				Q=jslzjd.X;
			}
		  }
		  if( P > 0)
		  {
			  P = int(100 * P);
			  P=P/ 100;
		  }
		  if( Q > 0)
		  {
			  Q = int(100 * Q);
			  Q=Q/ 100;
		  }
		  gcvt(P,100,Temp);
		  title=Temp;
		  A1 = A1 + "\t" + title;
          gcvt(Q,100,Temp);
		  title=Temp;
		  A2 = A2 + "\t" + title;
		}
		A1=A1+"\n";
        A2=A2+"\n";
        try
		{
		    f3.WriteString(A1);
            f3.WriteString(A2);
            f3.WriteString("\n");
		}
	    catch (CFileException exception3)
		{
			AfxMessageBox("Error reading file");
			return;
		}
	  }
  
	  if( Pygccfx == 1)
	  {
		//分析油管尺寸对气举排液量的影响
        try
		{
			title="$$";
			title=title+"气举排水采气油管尺寸分析[" + jsff + "]"+"\n";
			f4.WriteString(title);
            f4.WriteString("节点压力最小值,MPa:\n");
            f4.WriteString("节点压力最大值,MPa:\n");
            f4.WriteString("产水量最小值,m^3/d:\n");
			f4.WriteString("产水量最大值,m^3/d:\n");
            f4.WriteString("Pwf\n");
			f4.WriteString("Ql\n");
			f4.WriteString("Pwf__MPa\n");
            f4.WriteString("Ql__m^3/d\n");
			f4.WriteString(" 1\n");
		}
	    catch (CFileException exception4)
		{
			AfxMessageBox("Error reading file");
			return;
		}
		for(i=0;i<=10;i++)
		{
			for(J=0;J<=Pfxjsds;J++)
			{
               jsjg[i][J] = 0;
			}
		}
	g_iProgress = 20;	// 计算进度
	ENDCOMPUTE;
		//流入关系计算
		if( Ndclrtx == 0)
		{
//			 计算地层流入曲线;
			  Ndclrtx = 1;
			  if( Pdcylfx == 1)
			  {
				  ni = 5;
			  }
			  else
			  {
				  ni = 0;
			  }
			  for(i=0;i<=ni;i++)
			  {
	  			if( i == 0)
				{
					Prswl = Pdcyl;
				}
				else
				{
					Prswl = csz[3][i]; //分析的地层压力值
				}
				if( Prswl <= 0)
				{
					break;
				}
				zpjjs.wlipr(Prswl, PLI, QB, Qomax, Qtmax, Pdcyl, Pb, Fw);
				pliwl=zpjjs.PLIwl;
				qbwl=zpjjs.QBwl;
				qomaxwl=zpjjs.Qomaxwl;
				qtmaxwl=zpjjs.Qtmaxwl;
				pbwl=zpjjs.Pbwl;
				for(J=0;J<=Pfxjsds;J++)
				{
				  PWF=zpjjs.YQPWF(Rjsjg[0][J], pliwl, qbwl, qomaxwl, qtmaxwl, Prswl, pbwl, Fw);
				  if( PWF <= 0)
				  {
					PWF = 0;
					break;
				  }
				  else
				  {
					Rjsjg[i + 1][J] = PWF;
				  }
				}
			  }
		}
        for(J=0;J<=Pfxjsds;J++)
		{
		  if( J > 2 && Rjsjg[1][J] <= 0)
		  {
			  break;
		  }
          gcvt(Rjsjg[0][J],100,Temp);
		  title=Temp;
		  gcvt(Rjsjg[1][J],100,Temp1);
		  title1=Temp1;
		  title=" "+title+" "+title1+"\n";
          try
		  {
			f4.WriteString(title);
		  }
	      catch (CFileException exception4)
		  {
			AfxMessageBox("Error reading file");
			return;
		  }
		  jsjg[0][J] = Rjsjg[0][J];
		  jsjg[1][J] = Rjsjg[1][J];
		}
		gcvt(Pdcyl,100,Temp);
		title=Temp;
		title.TrimRight();
		title.TrimLeft();
		title="IPR[Prs="+title+"(MPa)]"+"\n";
        try
		{
			f4.WriteString("-1 -1\n");
//			f4.WriteString(" 0             1\n");
			f4.WriteString(cGraphColor[iColorIndex++]);
			iColorIndex %= iGraphColorNum;
            f4.WriteString(title);
		}
	    catch (CFileException exception4)
		{
			AfxMessageBox("Error reading file");
			return;
		}
	g_iProgress = 25;	// 计算进度
	ENDCOMPUTE;
		//流出关系计算
		jkyl = Pjkyy;
		qyb = GWR;
		zrql = QIN;
		zryl = PIN;
		for(ii=1;ii<=5;ii++)
		{
		  if( ii == 0)
		  {
			ygnj = DIT;
			gzsd = DVT;
		  }
		  else
		  {
			ygnj = csz[2][ii] / 1000;
			gzsd = DVW;
		  }
		  if( ygnj == 0)
		  {
			  break;
		  }
		  for(J=0;J<=Pfxjsds;J++)
		  {
		  	sfyszqtd = "否";
//			 计算油管流出曲线;
			  if( sfyszqtd != "是")
			  {
				  // 计算注气压力梯度;
				  sfyszqtd = "是";
				  if( ygnj <= 0.0433)
				  {
					ygwj = 0.0603;
				  }
				  else if( ygnj <= 0.0507)
				  {
					ygwj = 0.0603;
				  }
				  else if( ygnj <= 0.062)
				  {
					ygwj = 0.076;
				  }
				  else if( ygnj <= 0.0762)
				  {
					ygwj = 0.0889;
				  }
				  else if( ygnj <= 0.0889)
				  {
					ygwj = 0.1016;
				  }
				  else
				  {
					ygwj = ygnj + 0.014;
				  }
                  dtidu[0]=0;
				  P=qjyljsz.qjyl(zryl, Tjkwd, TG, gzsd, DIC, ygwj, RR, zrql, GG, 0, 1, H2S, N2, CO2, 0, 100, 1, -1);
				  for(i=1;i<=100;i++)
				  {
	    				Gsd[i] = dtidu[i];
						Gzqyl[i] = ptidu[i] - Pgzyc;
				  }
			  }
   		      if( zrql == 0)
			  {
				  zqdyl = jkyl;
				  zqdsd = 0;
			  }
			  else
			  {
				  // 计算油管多相流压力梯度
				  QL = Rjsjg[0][J];
				  QG = QL * qyb + zrql;
				  QW = QL * Fw;
				  QO = QL * (1 - Fw);
				  PMF=zpjjs.dxl(MMPF,jkyl, Tjkwd, TG, QG, QW, QO, GG, GW, OG, gzsd, ygnj, 0, RR, H2S, CO2, N2, NaCl, 100, 1, 1);	
				  for(i=1;i<=100;i++)
				  {
    				  Gdxlyl[i] = ptidu[i];
				  }
				  // 求注气点深度和注气压力
				  zqdyl = 0;
				  zqdsd = 0;
				  for(i=2;i<=100;i++)
				  {
	  				H1 = Gsd[i - 1];
					H2 = Gsd[i];
					PI1 = Gdxlyl[i - 1];
					PI2 = Gdxlyl[i];
					PO1 = Gzqyl[i - 1];
					PO2 = Gzqyl[i];
					if( PI1 <= PO1 && PI2 >= PO2)
					{
						jslzjd.qlzxjd(H1, H2, PI1, PO1, PI2, PO2);
						zqdyl=jslzjd.Y;
						zqdsd=jslzjd.X;
						break;
					}
				  }
				  if( zqdyl > 0)
				  {
					  zqdyl = int(100 * zqdyl);
					  zqdyl=zqdyl/ 100;
				  }
				  if( zqdsd > 0)
				  {
					  zqdsd = int(100 * zqdsd);
					  zqdsd=zqdsd/ 100;
				  }
				  if( zqdyl == 0)
				  {
					  zqdyl = PMF;
					  zqdsd = gzsd;
				  }
			  }
			  // 求井底流动压力
			  PN = zqdyl;
			  QG = QL * qyb;
			  if( gzsd > zqdsd)
			  {
				T0 = Tjkwd + TG * zqdsd;
				L = gzsd - zqdsd;
				PN1=zpjjs.dxl(MMPF,PN, T0, TG, QG, QW, QO, GG, GW, OG, L, ygnj, 0, RR, H2S, CO2, N2, NaCl, 0, 1, 1);	
				PN = PN1;
			  }
			  if( gzsd < DVW)
			  {
				T0 = Tjkwd + TG * gzsd;
				L = DVW - gzsd;
				PN1=zpjjs.dxl(MMPF,PN, T0, TG, QG, QW, QO, GG, GW, OG, L, DIC, 0, RR, H2S, CO2, N2, NaCl, 0, 1, 1);	
				PN = PN1;
			  }
			if( PN > Pdcyl + 1)
			{
				break;
			}
			if( zqdyl > 0 && zqdsd > 0)
			{
		      gcvt(Rjsjg[0][J],100,Temp);
			  title=Temp;
              gcvt(PN,100,Temp1);
			  title1=Temp1;
			  title=" "+title+" "+title1+"\n";
			  try
			  {
				f4.WriteString(title);
			  } 
			  catch (CFileException exception4)
			  {
				AfxMessageBox("Error reading file");
				return;
			  }	  
			  jsjg[1 + ii][J] = PN;
			}
			else
			{
			  jsjg[1 + ii][J] = 0;
			}
		  }
		  try
		  {
				f4.WriteString("-1 -1\n");
//				f4.WriteString(" 0             1\n");
				f4.WriteString(cGraphColor[iColorIndex++]);
				iColorIndex %= iGraphColorNum;
		  } 
		  catch (CFileException exception4)
		  {
			AfxMessageBox("Error reading file");
			return;
		  }
		  if( ii == 0)
		  {
		      try
			  {
				f4.WriteString("实际油管\n");
			  } 
			  catch (CFileException exception4)
			  {
				AfxMessageBox("Error reading file");
				return;
			  }
		  }
		  else
		  {
			  gcvt(csz[2][ii],100,Temp);
			  title=Temp;
			  title="Dit="+title+"(mm)"+"\n";
              try
			  {
				f4.WriteString(title);
			  } 
			  catch (CFileException exception4)
			  {
				AfxMessageBox("Error reading file");
				return;

⌨️ 快捷键说明

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