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

📄 slb.cpp

📁 这是本人两年前兼职为某个公司做的石油钻进设计软件
💻 CPP
📖 第 1 页 / 共 5 页
字号:
					QB=zpjjs.QB;
					Qomax=zpjjs.Qomax;
					Qtmax=zpjjs.Qtmax;
					cyzs=zpjjs.PLIZZZ;
					QS0 = 0;
					NDO = 0;
					do
					{
						NDO = NDO + 1;
						QS = (QS + QS0) / 2;
						QS0 = QS;
						QW = QS * Fw;
						QO = QS * (1 - Fw);
						QG = QS * qishuibi;
						TJP = tjingkou + TG * bgsd;
						L1 = DVT - bgsd;
						L2 = DVW - DVT;
						if( L1 < 0)
						{
							L2 = L2 - L1;
							L1 = 0;
						}
						if( L1 > 0)
						{
							//多相流(PWF, PS, TJP, TG, QG, QW, QO, GG, GW, OG, L1, DIT, 0, RR, H2S, CO2, N2, NaCl, 0, 1, 1, MMPF)
							PWF=zpjjs.dxl(MMPF,PS, TJP, TG, QG, QW, QO, GG, GW, OG, L1, DIT, 0, RR, H2S, CO2, N2, NaCl, 0, 1, 1);
						}
						else
						{
							PWF = PS;
						}
						if( L2 > 0)
						{
							T0 = TJP + TG * L1;
							//多相流(Pcom, PWF, T0, TG, QG, QW, QO, GG, GW, OG, L2, DIC, 0, RR, H2S, CO2, N2, NaCl, 0, 1, 1, MMPF)
							Pcom=zpjjs.dxl(MMPF, PWF, T0, TG, QG, QW, QO, GG, GW, OG, L2, DIC, 0, RR, H2S, CO2, N2, NaCl, 0, 1, 1);
							PWF = Pcom;
						}
						if( i == 2)
						{
							//未来IPR(PLI未来, QB未来, Qomax未来, Qtmax未来, 地层压力, Pb未来, 产液指数, QB, Qomax, Qtmax, Prs, Pb, Fw)
							zpjjs.wlipr(dcyl,cyzs, QB, Qomax, Qtmax, Prs, Pb, Fw);
							pliwl=zpjjs.PLIwl;
							qbwl=zpjjs.QBwl;
							qomaxwl=zpjjs.Qomaxwl;
							qtmaxwl=zpjjs.Qtmaxwl;
							pbwl=zpjjs.Pbwl;
							//由PWF求Q(QS, PWF, PLI未来, QB未来, Qomax未来, Qtmax未来, 地层压力, Pb未来, Fw)
							QS=qjyljsz.ypwfqq(PWF, pliwl, qbwl, qomaxwl, qtmaxwl, dcyl, pbwl, Fw);
						}
						else
						{
							//由PWF求Q(QS, PWF, 产液指数, QB, Qomax, Qtmax, 地层压力, Pb, Fw)
							QS=qjyljsz.ypwfqq(PWF, cyzs, QB, Qomax, Qtmax, dcyl, Pb, Fw);                  
						}
						if( QS <= 0)
						{
							QS = 0;
						}
						if( NDO == 100)
						{
							QS = (QS + QS0) / 2;
							break;
						}
					}
					while(fabs(QS0 - QS) >= 0.5 && QS!=0);
					if( PS > 0)
					{
						QSC = AJ * (1 - Ra) / Ra / (pow(((GW * Fw + OG * (1 - Fw)) / (PS + 0.1)),0.5) / 3.13 + qishuibi / (PS + 0.1) / 157);
					}
					if( J > 1)
					{
						if( jieguo[2 * K][J - 1] < QS)
						{
							QS = jieguo[2 * K][J - 1];
						}
					}
					k=int(100 * QSC);
					jieguo[1][J] = double(k) / 100.0;
					k=int(100 * QS);
					jieguo[2 * K][J] = double(k) / 100.0;
				}
				else
				{
					jieguo[2 * K][J] = jieguo[2][J];
				}
				
				//计算流出关系
				if( ((i == 2 || i == 3) && K == 1) || (i != 2 && i != 3))
				{
					//计算动力液流量Qn
					QN = 0;
					NDO = 0;
					do
					{
						NDO = NDO + 1;
						QN0 = QN;
						if( ddly == "水")
						{
							QNW = QN;
							QNO = 0;
							NLG = GW;
						}
						else
						{
							QNW = 0;
							QNO = QN;
							NLG = OG;
						}
						if( Bx == 0)
						{
							DOL = DIT;//正循环
							DIL = 0;
						}
						else
						{
							DOL = DIC;//反循环
							DIL = DOT; 
						}
						//多相流(PN,地面泵压, T井口, TG, 0, QNW, QNO, GG, GW, OG, 泵挂深度, DOL, DIL, RR, H2S, CO2, N2, NaCl, 0, 1, -1, MMPF)
						PN=zpjjs.dxl(MMPF,dmby,tjingkou, TG, 0, QNW, QNO, GG, GW, OG, bgsd, DOL, DIL, RR, H2S, CO2, N2, NaCl, 0, 1, -1);
						QN = 3.79 * AJ * pow(((PN - PS) / NLG / (1 + Kj)),0.5);
						if( NDO == 100)
						{
							QN = (QN0 + QN) / 2;
							break;
						}
					}
					while(fabs(QN - QN0) >= 0.05);
					//吸入效率
					if( Bx == 0)
					{
						DOL = DIC;//正循环
						DIL = DOT;
					}
					else
					{
						DOL = DIT;//反循环
						DIL = 0;    
					}
					Vf = 1 / (1 + 0.0566 * pow((qishuibi / PS),1.2));
					M0 = 0.1;
					NDO = 0;
					do
					{
						NDO = NDO + 1;
						M = M0;
						QS = QN * Vf * (M + M0) / 2;
						if( QS < 0)
						{
							QS = 0;
						}
						if( ddly == "水")
						{
							QW = QS * Fw + QN;
							QO = QS * (1 - Fw);
						}
						else
						{
							QW = QS * Fw;
							QO = QS * (1 - Fw) + QN;
						}
						QG = QS * qishuibi;
						//计算返出压力Pd
						//多相流(PD, 井口压力, T井口, TG, QG, QW, QO, GG, GW, OG, 泵挂深度, DOL, DIL, RR, H2S, CO2, N2, NaCl, 0, 1, 1, MMPF)
						PD=zpjjs.dxl(MMPF,jkyl, tjingkou, TG, QG, QW, QO, GG, GW, OG, bgsd, DOL, DIL, RR, H2S, CO2, N2, NaCl, 0, 1, 1);
						//确定损失系数
						//射流泵损失系数(Kj, Ks, Kt, Kd, Ktd, Ic, 气水比, PS / PN, Ra, D损失系数)
						slbssxs(qishuibi, PS / PN, Ra, dssxs);
						Kj=KJ;
						Ks=KS;
						Kt=KT;
						Kd=KD;
						Ktd=KTD;
						Ic=IC;
						k=int(10000 * (PD - PS) / (PN - PD));
						H = double(k) / 10000.0; //无因次压力比
						//计算无因次流量比
						X1 = (1 + Ktd) * pow(Ra,2);
						X2 = (1 - 2 * Ra) * pow(Ra,2) / pow((1 - Ra),2) - X1;
						M0 = X1 / X2 + pow((pow((X1 / X2),2) - (2 * Ra - X1) / X2 + (1 + Kj) * H / X2 / (1 + H)),0.5);
						if( M0 < 0)
						{
							M0 = 0;
						}
					}
					while(fabs(M0 - M) > 0.002 && NDO != 100);
					k=int(100 * QS);
					jieguo[2 * K + 1][J] = double(k) / 100.0;
				}
				else
				{
					jieguo[2 * K + 1][J] = jieguo[3][J];
				}
		  }
		  gcvt(jieguo[0][J],95,temp);
		  A = temp;
		  for(int IJ=1;IJ<=2 * fxcsgs[i] + 1;IJ++)
		  {
			  gcvt(jieguo[IJ][J],95,temp);
			  A = A + "\t" + temp;
		  }
		  A=A+"\n";
		  try
		  {
			  f3.WriteString(A);
		  }
		  catch (CFileException exception3)
		  {
			  AfxMessageBox("Error reading file");
			  return;
		  }
		  if( jieguo[2][J] + jieguo[4][J] + jieguo[6][J] + jieguo[8][J] + jieguo[10][J] <= 1)
		  {
			  yjjsdds = J;
			  break;
		  }
		  yjjsdds = J;
		}
        for(K=1;K<=fxcsgs[i];K++)
		{
			P = 0;
			Q = 0;
			for(J=2;J<=djsylds;J++)
			{
				Q1 = jieguo[0][J - 1];
				Q2 = jieguo[0][J];
				if( ((i == 1 || i == 6) && K == 1) || (i == 4 && (K == 1 || DVW > DJP)) || i == 2 || i == 3 || i == 5)
				{
					PI1 = jieguo[2 * K][J - 1];
					PI2 = jieguo[2 * K][J];
				}
				else
				{
					PI1 = jieguo[2][J - 1];
					PI2 = jieguo[2][J];
				}
				if( ((i == 2 || i == 3) && K == 1) || (i != 2 && i != 3))
				{
					PO1 = jieguo[2 * K + 1][J - 1];
					PO2 = jieguo[2 * K + 1][J];
				}
				else
				{
					PO1 = jieguo[3][J - 1];
					PO2 = jieguo[3][J];
				}
				if( PI1 >= PO1 && PI2 <= PO2)
				{
					//求交点(Q, P, Q1, Q2, PI1, PO1, PI2, PO2);
					lzxjdjs.qlzxjd(Q1, Q2, PI1, PO1, PI2, PO2);
					Q=lzxjdjs.Y;
					P=lzxjdjs.X;
					break;
				}
			}
			if( P > 0)
			{
				k=int(100 * P);
				PY[K] = double(k) / 100;
			}
			else
			{
				PY[K] = 0;
			}
			if( Q > 0)
			{
				k=int(10 * Q);
				QX[K] = double(k) / 10.0;
			}
			else
			{
				QX[K] = 0;
			}
		}
		A1="";
		A1 =A1+ "节点压力(MPa)$13" + "\t" + "$14";
		A2="";
		A2 =A2+ "井产水量(m^3/d)$13" + "\t" + "$14";
		for(IJ=1;IJ<=fxcsgs[i];IJ++)
		{
			gcvt(PY[IJ],95,temp);
			A1 = A1 + "\t" + temp + "$13" + "\t" + "$14";
			gcvt(QX[IJ],95,temp);
			A2 = A2 + "\t" + temp + "$13" + "\t" + "$14";
		}
		A1=A1+"\n";
		try
		{
			f3.WriteString(A1);
		}
		catch (CFileException exception3)
		{
			AfxMessageBox("Error reading file");
			return;
		}
		A2=A2+"\n";
		try
		{
			f3.WriteString(A2);
		}
		catch (CFileException exception3)
		{
			AfxMessageBox("Error reading file");
			return;
		}
		qxmax = 0;
		pymax = 0;
		for(K=1;K<=fxcsgs[i];K++)
		{
			if( ((i == 1 || i == 6) && K == 1) || (i == 4 && (K == 1 || DVW > DJP)) || i == 2 || i == 3 || i == 5)
			{
				for(J=1;J<=yjjsdds;J++)
				{
					gcvt(jieguo[2 * K][J],95,temp);
					title=temp;
					gcvt(jieguo[0][J],95,temp);
					title=" "+title+" "+temp+"\n";
					try
					{
						f4.WriteString(title);
					}
					catch (CFileException exception4)
					{
						AfxMessageBox("Error reading file");
						return;
					}
					if( qxmax <= jieguo[2 * K][J])
					{
						qxmax = jieguo[2 * K][J];
					}
					if( pymax <= jieguo[0][J])
					{
						pymax = jieguo[0][J];
					}
					if( jieguo[2 * K][J] == 0)
					{
						break;
					}
				}
				if( (i == 1 || i == 6) && K == 1)
				{
					try
					{
						f4.WriteString("-1 -1\n");
						//				    f4.WriteString(" 0             1\n");
						f4.WriteString(cGraphColor[iColorIndex++]);
						iColorIndex %= iGraphColorNum;
						f4.WriteString("流入\n");
					}
					catch (CFileException exception4)
					{
						AfxMessageBox("Error reading file");
						return;
					}
				}
				else if( canshu[i][K] > 0)
				{
					gcvt(canshu[i][K],95,temp);
					title=temp;
					title.TrimLeft();
					title1="";
					title1=title1+"流入("+" "+fxcs+" "+title+" "+")"+"\n";
					try
					{
						f4.WriteString("-1 -1\n");
						//				    f4.WriteString(" 0             1\n");
						f4.WriteString(cGraphColor[iColorIndex++]);
						iColorIndex %= iGraphColorNum;
						f4.WriteString(title1);
					}
					catch (CFileException exception4)
					{
						AfxMessageBox("Error reading file");
						return;
					}
				}
			}
			if( ((i == 2 || i == 3) && K == 1) || (i != 2 && i != 3))
			{
				for(J=1;J<=yjjsdds;J++)
				{
					if( jieguo[2 * K + 1][J] > qxmax || jieguo[0][J] > pymax)
					{
						break;
					}
					gcvt(jieguo[2 * K + 1][J],95,temp);
					title=temp;
					gcvt(jieguo[0][J],95,temp);
					title=" "+title+" "+temp+"\n";
					try
					{
						f4.WriteString(title);
					}
					catch (CFileException exception4)
					{
						AfxMessageBox("Error reading file");
						return;
					}
				}
				if( (i == 2 || i == 3) && K == 1)
				{
					try
					{
						f4.WriteString("-1 -1\n");
						//				f4.WriteString(" 0             1\n");
						f4.WriteString(cGraphColor[iColorIndex++]);
						iColorIndex %= iGraphColorNum;
						f4.WriteString("流出\n");
					}
					catch (CFileException exception4)
					{
						AfxMessageBox("Error reading file");
						return;
					}
				}
				else if( canshu[i][K] > 0)
				{
					gcvt(canshu[i][K],95,temp);
					title=temp;
					title.TrimLeft();
					title1="";
					title1=title1+"流出("+" "+fxcs+" "+title+" "+")"+"\n";
					try
					{
						f4.WriteString("-1 -1\n");
						//				f4.WriteString(" 0             1\n");
						f4.WriteString(cGraphColor[iColorIndex++]);
						iColorIndex %= iGraphColorNum;
						f4.WriteString(title1);
					}
					catch (CFileException exception4)
					{
						AfxMessageBox("Error reading file");
						return;
					}			  
				}
			}
		}
		for(J=1;J<=yjjsdds;J++)
		{
			if( jieguo[1][J] > qxmax || jieguo[0][J] > pymax)
			{
				break;
			}
			gcvt(jieguo[1][J],95,temp);
			title=temp;
			gcvt(jieguo[0][J],95,temp);
			title=" "+title+" "+temp+"\n";
			try
			{
				f4.WriteString(title);
			}
			catch (CFileException exception4)
			{
				AfxMessageBox("Error reading file");
				return;
			}
		}
		try
		{
			f4.WriteString("-1 -1\n");
			//			f4.WriteString(" 0             1\n");
			f4.WriteString(cGraphColor[iColorIndex++]);
			iColorIndex %= iGraphColorNum;
			f4.WriteString("气蚀关系\n");
			f4.WriteString("-10 -10\n");
		}
		catch (CFileException exception4)
		{
			AfxMessageBox("Error reading file");
			return;
		}
nonecomp:
		;
	  }
	  try

⌨️ 快捷键说明

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