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

📄 slbdtfx.cpp

📁 这是本人两年前兼职为某个公司做的石油钻进设计软件
💻 CPP
📖 第 1 页 / 共 3 页
字号:
						}
						if( dblL1 > 0)
						{
							//多相流(dblPWF, dblPS, dblTJP, dblTG, dblQG, dblQW, dblQO, dblGG, dblGW, dblOG, dblL1, dblDIT, 0, dblRR, dblH2S, dblCO2, dblN2, dblNaCl, 0, 1, 1, iMMPF)
							dblPWF=zpjjs.dxl(iMMPF,dblPS, dblTJP, dblTG, dblQG, dblQW, dblQO, dblGG, dblGW, dblOG, dblL1, dblDIT, 0, dblRR, dblH2S, dblCO2, dblN2, dblNaCl, 0, 1, 1);
						}
						else
						{
							dblPWF = dblPS;
						}
						if( dblL2 > 0)
						{
							dblT0 = dblTJP + dblTG * dblL1;
							//多相流(dblPcom, dblPWF, dblT0, dblTG, dblQG, dblQW, dblQO, dblGG, dblGW, dblOG, dblL2, dblDIC, 0, dblRR, dblH2S, dblCO2, dblN2, dblNaCl, 0, 1, 1, iMMPF)
							dblPcom=zpjjs.dxl(iMMPF, dblPWF, dblT0, dblTG, dblQG, dblQW, dblQO, dblGG, dblGW, dblOG, dblL2, dblDIC, 0, dblRR, dblH2S, dblCO2, dblN2, dblNaCl, 0, 1, 1);
							dblPWF = dblPcom;
						}
						if( iTemp01 == 2)
						{
							//未来IPR(dblPLI未来, QB未来, Qomax未来, Qtmax未来, 地层压力, Pb未来, 产液指数, QB, Qomax, Qtmax, dblPrs, Pb, dblFW)
							zpjjs.wlipr(dblDCYL,dblCYZS, dblQB, dblQoMax, dblQtMax, dblPrs, dblPB, dblFW);
							dblPLIWL=zpjjs.PLIwl;
							dblQBWL=zpjjs.QBwl;
							dblQoMaxWL=zpjjs.Qomaxwl;
							dblQtMaxWL=zpjjs.Qtmaxwl;
							dblPBWL=zpjjs.Pbwl;
							//由dblPWF求dblQ(dblQS, dblPWF, dblPLI未来, QB未来, Qomax未来, Qtmax未来, 地层压力, Pb未来, dblFW)
							dblQS=qjyljsz.ypwfqq(dblPWF, dblPLIWL, dblQBWL, dblQoMaxWL, dblQtMaxWL, dblDCYL, dblPBWL, dblFW);
						}
						else
						{
							//由dblPWF求dblQ(dblQS, dblPWF, 产液指数, QB, Qomax, Qtmax, 地层压力, Pb, dblFW)
							dblQS=qjyljsz.ypwfqq(dblPWF, dblCYZS, dblQB, dblQoMax, dblQtMax, dblDCYL, dblPB, dblFW);                  
						}
						if( dblQS <= 0)
						{
							dblQS = 0;
						}
						if( dblNDO == 100)
						{
							dblQS = (dblQS + dblQS0) / 2;
							break;
						}
					}
					while(fabs(dblQS0 - dblQS) >= 0.5 && dblQS!=0);
					if( dblPS > 0)
					{
						dblQSC = dblAJ * (1 - dblRa) / dblRa / (pow(((dblGW * dblFW + dblOG * (1 - dblFW)) / (dblPS + 0.1)),0.5) / 3.13 + dblQYB / (dblPS + 0.1) / 157);
					}
					if( iTemp04 > 1)
					{
						if( dblResult[2 * iTemp05][iTemp04 - 1] < dblQS)
						{
							dblQS = dblResult[2 * iTemp05][iTemp04 - 1];
						}
					}
					iK=int(100 * dblQSC);
					dblResult[1][iTemp04] = double(iK) / 100.0;
					iK=int(100 * dblQS);
					dblResult[2 * iTemp05][iTemp04] = double(iK) / 100.0;
				}
				else
				{
					dblResult[2 * iTemp05][iTemp04] = dblResult[2][iTemp04];
				}
				
				//计算流出关系
				if( ((iTemp01 == 2 || iTemp01 == 3) && iTemp05 == 1) || (iTemp01 != 2 && iTemp01 != 3))
				{
					//计算动力液流量Qn
					dblQN = 0;
					dblNDO = 0;
					do
					{
						dblNDO = dblNDO + 1;
						dblQN0 = dblQN;
						if( strDDLY == "水")
						{
							dblQNW = dblQN;
							dblQNO = 0;
							dblNLG = dblGW;
						}
						else
						{
							dblQNW = 0;
							dblQNO = dblQN;
							dblNLG = dblOG;
						}
						if( dblBx == 0)
						{
							dblDOL = dblDIT;//正循环
							dblDIL = 0;
						}
						else
						{
							dblDOL = dblDIC;//反循环
							dblDIL = dblDOT; 
						}
						//多相流(dblPN,地面泵压, T井口, dblTG, 0, dblQNW, dblQNO, dblGG, dblGW, dblOG, 泵挂深度, dblDOL, dblDIL, dblRR, dblH2S, dblCO2, dblN2, dblNaCl, 0, 1, -1, iMMPF)
						dblPN=zpjjs.dxl(iMMPF,dblDMBY,dblTJK, dblTG, 0, dblQNW, dblQNO, dblGG, dblGW, dblOG, dblBGSD, dblDOL, dblDIL, dblRR, dblH2S, dblCO2, dblN2, dblNaCl, 0, 1, -1);
						dblQN = 3.79 * dblAJ * pow(((dblPN - dblPS) / dblNLG / (1 + dblKj)),0.5);
						if( dblNDO == 100)
						{
							dblQN = (dblQN0 + dblQN) / 2;
							break;
						}
					}
					while(fabs(dblQN - dblQN0) >= 0.05);

					g_iProgress += 15;
					if(g_iProgress > 90)
						g_iProgress = 90;

					//吸入效率
					if( dblBx == 0)
					{
						dblDOL = dblDIC;//正循环
						dblDIL = dblDOT;
					}
					else
					{
						dblDOL = dblDIT;//反循环
						dblDIL = 0;    
					}
					dblVf = 1 / (1 + 0.0566 * pow((dblQYB / dblPS),1.2));
					dblM0 = 0.1;
					dblNDO = 0;
					do
					{
						dblNDO = dblNDO + 1;
						dblM = dblM0;
						dblQS = dblQN * dblVf * (dblM + dblM0) / 2;
						if( dblQS < 0)
						{
							dblQS = 0;
						}
						if( strDDLY == "水")
						{
							dblQW = dblQS * dblFW + dblQN;
							dblQO = dblQS * (1 - dblFW);
						}
						else
						{
							dblQW = dblQS * dblFW;
							dblQO = dblQS * (1 - dblFW) + dblQN;
						}
						dblQG = dblQS * dblQYB;
						//计算返出压力Pd
						//多相流(dblPD, 井口压力, T井口, dblTG, dblQG, dblQW, dblQO, dblGG, dblGW, dblOG, 泵挂深度, dblDOL, dblDIL, dblRR, dblH2S, dblCO2, dblN2, dblNaCl, 0, 1, 1, iMMPF)
						dblPD=zpjjs.dxl(iMMPF,dblJKYL, dblTJK, dblTG, dblQG, dblQW, dblQO, dblGG, dblGW, dblOG, dblBGSD, dblDOL, dblDIL, dblRR, dblH2S, dblCO2, dblN2, dblNaCl, 0, 1, 1);
						//确定损失系数
						//射流泵损失系数(dblKj, dblKs, dblKt, dblKd, dblKtd, dblIc, 气水比, dblPS / dblPN, dblRa, D损失系数)
						SHlb.slbssxs(dblQYB, dblPS / dblPN, dblRa, int(dblDSSXS));
						dblKj=SHlb.KJ;
						dblKs=SHlb.KS;
						dblKt=SHlb.KT;
						dblKd=SHlb.KD;
						dblKtd=SHlb.KTD;
						dblIc=SHlb.IC;
						iK=int(10000 * (dblPD - dblPS) / (dblPN - dblPD));
						dblH = double(iK) / 10000.0; //无因次压力比
						//计算无因次流量比
						dblX1 = (1 + dblKtd) * pow(dblRa,2);
						dblX2 = (1 - 2 * dblRa) * pow(dblRa,2) / pow((1 - dblRa),2) - dblX1;
						dblM0 = dblX1 / dblX2 + pow((pow((dblX1 / dblX2),2) - (2 * dblRa - dblX1) / dblX2 + (1 + dblKj) * dblH / dblX2 / (1 + dblH)),0.5);
						if( dblM0 < 0)
						{
							dblM0 = 0;
						}
					}
					while(fabs(dblM0 - dblM) > 0.002 && dblNDO != 100);
					iK=int(100 * dblQS);
					dblResult[2 * iTemp05 + 1][iTemp04] = double(iK) / 100.0;
				}
				else
				{
					dblResult[2 * iTemp05 + 1][iTemp04] = dblResult[3][iTemp04];
				}
		  }
		  gcvt(dblResult[0][iTemp04],95,szTemp);
		  strA = szTemp;
		  for(iTemp05=1;iTemp05<=2 * iFXCount[iTemp01] + 1;iTemp05++)
		  {
			  gcvt(dblResult[iTemp05][iTemp04],95,szTemp);
			  strA = strA + "\t" + szTemp;
		  }
		  strA=strA+"\n";
		  try
		  {
			  stdfRes.WriteString(strA);
		  }
		  catch (CFileException exception3)
		  {
			  AfxMessageBox("Error reading file");
			  return;
		  }
		  if( dblResult[2][iTemp04] + dblResult[4][iTemp04] + dblResult[6][iTemp04] + dblResult[8][iTemp04] + dblResult[10][iTemp04] <= 1)
		  {
			  iYjjsdds = iTemp04;
			  break;
		  }
		  iYjjsdds = iTemp04;
		}


		//AfxMessageBox(strA1);
		for(iTemp05=1;iTemp05<=iFXCount[iTemp01];iTemp05++)
		{
			dblP = 0;
			dblQ = 0;
			for(iTemp04=2;iTemp04<=iDJYLDS;iTemp04++)
			{
				dblQ1 = dblResult[0][iTemp04 - 1];
				dblQ2 = dblResult[0][iTemp04];
				if( ((iTemp01 == 1 || iTemp01 == 6) && iTemp05 == 1) || (iTemp01 == 4 && (iTemp05 == 1 || dblDVW > dblDJP)) || iTemp01 == 2 || iTemp01 == 3 || iTemp01 == 5)
				{
					dblPI1 = dblResult[2 * iTemp05][iTemp04 - 1];
					dblPI2 = dblResult[2 * iTemp05][iTemp04];
				}
				else
				{
					dblPI1 = dblResult[2][iTemp04 - 1];
					dblPI2 = dblResult[2][iTemp04];
				}
				if( ((iTemp01 == 2 || iTemp01 == 3) && iTemp05 == 1) || (iTemp01 != 2 && iTemp01 != 3))
				{
					dblPO1 = dblResult[2 * iTemp05 + 1][iTemp04 - 1];
					dblPO2 = dblResult[2 * iTemp05 + 1][iTemp04];
				}
				else
				{
					dblPO1 = dblResult[3][iTemp04 - 1];
					dblPO2 = dblResult[3][iTemp04];
				}
				if( dblPI1 >= dblPO1 && dblPI2 <= dblPO2)
				{
					//求交点(dblQ, dblP, dblQ1, dblQ2, dblPI1, dblPO1, dblPI2, dblPO2);
					lzxjdjs.qlzxjd(dblQ1, dblQ2, dblPI1, dblPO1, dblPI2, dblPO2);
					dblQ=lzxjdjs.Y;
					dblP=lzxjdjs.X;
					break;
				}
			}
			if( dblP > 0)
			{
				iK=int(100 * dblP);
				dblPY[iTemp05] = double(iK) / 100;
			}
			else
			{
				dblPY[iTemp05] = 0;
			}
			if( dblQ > 0)
			{
				iK=int(10 * dblQ);
				dblQX[iTemp05] = double(iK) / 10.0;
			}
			else
			{
				dblQX[iTemp05] = 0;
			}
		}


		// hss
//		CString strA1;
		//AfxMessageBox(strA1);
		 strA1 = "";
/*
		if(!strA1.IsEmpty())
			strA1.Empty();
*/
		 
		//strA1 =strA1+"节点压力(MPa)$13\t$14";
		strA1 = "节点压力(MPa)$13\t$14";

		// hss
		//strA2="";
//		CString strA2;
		//strA2 =strA2+ "井产水量(m^3/d)$13\t$14";
		strA2 = "井产水量(m^3/d)$13\t$14";

		for(int iTemp05=1;iTemp05<=iFXCount[iTemp01];iTemp05++)
		{
			gcvt(dblPY[iTemp05],95,szTemp);
			strA1 = strA1 + "\t" + szTemp + "$13\t$14";
			gcvt(dblQX[iTemp05],95,szTemp);
			strA2 = strA2 + "\t" + szTemp + "$13\t$14";
		}
		strA1=strA1+"\n";
		try
		{
			stdfRes.WriteString(strA1);
		}
		catch (CFileException exception3)
		{
			AfxMessageBox("Error reading file");
			return;
		}
		strA2=strA2+"\n";
		try
		{
			stdfRes.WriteString(strA2);
		}
		catch (CFileException exception3)
		{
			AfxMessageBox("Error reading file");
			return;
		}


		dblQXMax = 0;
		dblPYMax = 0;
		for(iTemp05=1;iTemp05<=iFXCount[iTemp01];iTemp05++)
		{
			if( ((iTemp01 == 1 || iTemp01 == 6) && iTemp05 == 1) || (iTemp01 == 4 && (iTemp05 == 1 || dblDVW > dblDJP)) || iTemp01 == 2 || iTemp01 == 3 || iTemp01 == 5)
			{
				for(iTemp04=1;iTemp04<=iYjjsdds;iTemp04++)
				{
					gcvt(dblResult[2 * iTemp05][iTemp04],95,szTemp);
					strTitle=szTemp;
					gcvt(dblResult[0][iTemp04],95,szTemp);
					strTitle=" "+ strTitle + " " + szTemp +" \n";
					try
					{
						stdfGraph.WriteString(strTitle);
					}
					catch (CFileException exception4)
					{
						AfxMessageBox("Error reading file");
						return;
					}
					if( dblQXMax <= dblResult[2 * iTemp05][iTemp04])
					{
						dblQXMax = dblResult[2 * iTemp05][iTemp04];
					}
					if( dblPYMax <= dblResult[0][iTemp04])
					{
						dblPYMax = dblResult[0][iTemp04];
					}
					if( dblResult[2 * iTemp05][iTemp04] == 0)
					{
						break;
					}
				}
				if( (iTemp01 == 1 || iTemp01 == 6) && iTemp05 == 1)
				{
					try
					{
						stdfGraph.WriteString("-1 -1\n");
						//				    stdfGraph.WriteString(" 0             1\n");
						// hss
						//stdfGraph.WriteString(cGraphColor[iColorIndex++]);
						stdfGraph.WriteString(" 32768 1 \n");
						iColorIndex %= iGraphColorNum;
						stdfGraph.WriteString("流入 \n");
					}
					catch (CFileException exception4)
					{
						AfxMessageBox("Error reading file");
						return;
					}
				}
				else if( dblCSZ[iTemp01][iTemp05] > 0)
				{
					gcvt(dblCSZ[iTemp01][iTemp05],95,szTemp);
					strTitle=szTemp;
					strTitle.TrimLeft();
					strTitle1="";
					strTitle1=strTitle1+ "流入(" + " " + strFxcs + " " + strTitle + " " + ")" + " \n";
					try
					{
						stdfGraph.WriteString("-1 -1 \n");
						//				    stdfGraph.WriteString(" 0             1\n");
						// hss
						//stdfGraph.WriteString(cGraphColor[iColorIndex++]);
						stdfGraph.WriteString(" 32768 1 \n");
						iColorIndex %= iGraphColorNum;
						stdfGraph.WriteString(strTitle1);
					}
					catch (CFileException exception4)
					{
						AfxMessageBox("Error reading file");
						return;
					}
				}
			}
			if( ((iTemp01 == 2 || iTemp01 == 3) && iTemp05 == 1) || (iTemp01 != 2 && iTemp01 != 3))
			{
				for(iTemp04=1;iTemp04<=iYjjsdds;iTemp04++)
				{
					if( dblResult[2 * iTemp05 + 1][iTemp04] > dblQXMax || dblResult[0][iTemp04] > dblPYMax)
					{
						break;
					}
					gcvt(dblResult[2 * iTemp05 + 1][iTemp04],95,szTemp);
					strTitle=szTemp;
					gcvt(dblResult[0][iTemp04],95,szTemp);
					strTitle= " " + strTitle + " " + szTemp + " \n";
					try
					{
						stdfGraph.WriteString(strTitle);
					}
					catch (CFileException exception4)
					{
						AfxMessageBox("Error reading file");
						return;
					}
				}
				if( (iTemp01 == 2 || iTemp01 == 3) && iTemp05 == 1)
				{
					try
					{
						stdfGraph.WriteString("-1 -1 \n");
						//				stdfGraph.WriteString(" 0             1\n");
						// hss
						//stdfGraph.WriteString(cGraphColor[iColorIndex++]);
						stdfGraph.WriteString(" 32768 1 \n");
						iColorIndex %= iGraphColorNum;
						stdfGraph.WriteString("流出 \n");
					}
					catch (CFileException exception4)
					{
						AfxMessageBox("Error reading file");
						return;
					}
				}
				else if( dblCSZ[iTemp01][iTemp05] > 0)
				{
					gcvt(dblCSZ[iTemp01][iTemp05],95,szTemp);
					strTitle=szTemp;
					strTitle.TrimLeft();
					strTitle1="";
					strTitle1=strTitle1 + "流出( " + strFxcs + " " + strTitle + " ) \n";
					try
					{
						stdfGraph.WriteString("-1 -1 \n");
						//				stdfGraph.WriteString(" 0             1\n");
						// hss
						// stdfGraph.WriteString(cGraphColor[iColorIndex++]);
						stdfGraph.WriteString(" 32768 1 \n");
						iColorIndex %= iGraphColorNum;
						stdfGraph.WriteString(strTitle1);
					}
					catch (CFileException exception4)
					{
						AfxMessageBox("Error reading file");
						return;
					}			  
				}
			}

		}

		for(iTemp04=1;iTemp04<=iYjjsdds;iTemp04++)
		{
			if( dblResult[1][iTemp04] > dblQXMax || dblResult[0][iTemp04] > dblPYMax)
			{
				break;
			}
			gcvt(dblResult[1][iTemp04],95,szTemp);
			strTitle=szTemp;
			gcvt(dblResult[0][iTemp04],95,szTemp);
			strTitle=" " + strTitle + " " + szTemp + "\n";
			try
			{
				stdfGraph.WriteString(strTitle);
			}
			catch (CFileException exception4)
			{
				AfxMessageBox("Error writing file");
				return;
			}

		}

		try
		{
			stdfGraph.WriteString("-1 -1 \n");
			//			stdfGraph.WriteString(" 0             1\n");
			// hss
			//stdfGraph.WriteString(cGraphColor[iColorIndex++]);
			stdfGraph.WriteString(" 32768 1 \n");
			iColorIndex %= iGraphColorNum;
			stdfGraph.WriteString("气蚀关系 \n");
			stdfGraph.WriteString("-10 -10 \n");
		}
		catch (CFileException exception4)
		{
			AfxMessageBox("Error reading file");
			return;
		}


	}
	

	try
	{
	  stdfRes.WriteString("8\n");
	}
	catch (CFileException exception3)
	{
	  AfxMessageBox("Error writing file");
	  return;
	}


	stdfRes.Close();
	stdfGraph.Close();
	
	g_iProgress = 100;	

	CopyFile(stdfRes.GetFilePath(), ((CCVenusApp*)AfxGetApp())->GetMyAppPath() + _T("\\tempfile.txt"),FALSE);
	CopyFile(stdfGraph.GetFilePath(), ((CCVenusApp*)AfxGetApp())->GetMyAppPath() + _T("\\tempfile.gra"),FALSE);


}

⌨️ 快捷键说明

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