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

📄 qjjjdfx.cpp

📁 这是本人两年前兼职为某个公司做的石油钻进设计软件
💻 CPP
📖 第 1 页 / 共 5 页
字号:
			  }
		  }
//		  百分比 = 百分比 + 100 / 计算总数
//		  主窗口.SSPanel1.FloodPercent = Int(百分比 + 0.5)
		}
        try
		{
			f4.WriteString("-10 -10\n");
		}  
	    catch (CFileException exception4)
		{
			AfxMessageBox("Error reading file");
			return;
		}
	g_iProgress = 30;	// 计算进度
	ENDCOMPUTE;
		//写入计算的数据结果
		title1="\t\t";
//		title1=title1+"    [油管尺$0" + "\t" + "寸(节点$0" + "\t" + "在井底)$0" + "\t" + "分析]$0"+"\n";
		title1=title1+" [油管尺寸(节点在井底)分析]$0"+"\n";
		title="产水量$7";
//		title=title+ "\t" + "流入压力$7" + "\t" + "    在下$13" + "\t" + "列油管尺$12" + "\t" + "寸下的节$12" + "\t" + "点压力," + "\t" + "MPa$14"+"\n";
  		title=title+ "\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[2][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[1][J] + 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( Pdcylfx == 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;
			}
		}
		Pzdz = Pdcyl;
		for(i=1;i<=5;i++)
		{
		  if( Pzdz < csz[3][i])
		  {
			  Pzdz = csz[3][i];
		  }
		}
	g_iProgress = 35;	// 计算进度
	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(i=1;i<=5;i++)
		{
		  if( i > 0 && csz[3][i] <= 0)
		  {
			  break;
		  }
		  for(J=0;J<=Pfxjsds;J++)
		  {
		  	if( J > 2 && Rjsjg[1 + i][J] <= 0)
			{
				break;
			}
            gcvt(Rjsjg[0][J],100,Temp);
			title=Temp;
			gcvt(Rjsjg[1 + i][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 + i][J] = Rjsjg[1 + i][J];
		  }
          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( i > 0)
		  {
		      gcvt(csz[3][i],100,Temp);
			  title=Temp;
			  title.TrimRight();
			  title.TrimLeft();
			  title="Prs="+title+"(MPa)"+"\n";		  
			  try
			  {
				f4.WriteString(title);
			  }  
			  catch (CFileException exception4)
			  {
				AfxMessageBox("Error reading file");
				return;
			  }	 
		  }
		  else
		  {
			  gcvt(Pdcyl,100,Temp);
			  title=Temp;
			  title.TrimRight();
			  title.TrimLeft();
			  title="Prs="+title+"(MPa)"+"\n";		  
			  try
			  {
				f4.WriteString(title);
			  }  
			  catch (CFileException exception4)
			  {
				AfxMessageBox("Error reading file");
				return;
			  }
		  }
		}
    
	g_iProgress = 40;	// 计算进度
	ENDCOMPUTE;
		//流出关系计算
		jkyl = Pjkyy;
		ygnj = DIT;
		qyb = GWR;
		zrql = QIN;
		zryl = PIN;
		gzsd = DVT;
		sfyszqtd = "否";
		for(J=0;J<=Pfxjsds;J++)
		{
//		   计算油管流出曲线
			  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 > Pzdz + 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][J] = PN;
		  }
		  else
		  {
			jsjg[1][J] = 0;
		  }
		}
        try
		{
			f4.WriteString("-1 -1\n");
//			f4.WriteString(" 0             1\n");
			f4.WriteString(cGraphColor[iColorIndex++]);
			iColorIndex %= iGraphColorNum;
			f4.WriteString("Dit=实际油管\n");
            f4.WriteString("-10\t-10\n");
		}  
	    catch (CFileException exception4)
		{
			AfxMessageBox("Error reading file");
			return;
		}
//		百分比 = 百分比 + 100 / 计算总数
//		主窗口.SSPanel1.FloodPercent = Int(百分比 + 0.5)
		//写入计算的数据jsjg
		title1="\t\t";
//		title1=title1+"[地层压$0" + "\t" + "力分析]$0"+"\n";
  		title1=title1+"  [地层压力分析]$0"+"\n";
        title="产水量$7";
//		title=title + "\t" + "油管压力$7" + "\t" + "    在下$13" + "\t" + "列地层压$12" + "\t" + "力下的节$12" + "\t" + "点压力,$12" + "\t" + "MPa$14"+"\n";
		title=title + "\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[3][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[1][J] + 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);
			B = Temp;
			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)
		  {

⌨️ 快捷键说明

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