📄 qjjjdfx.cpp
字号:
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( Pcyzsfx == 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 = 45; // 计算进度
ENDCOMPUTE;
//流入关系计算
for(i=1;i<=5;i++)
{
if( i == 0)
{
cyzs = PLI;
}
else
{
cyzs = csz[4][i];//分析的产液指数
}
if( cyzs <= 0)
{
break;
}
zpjjs.rjIPR(cyzs, qcscl, pcsyl, Pdcyl, Pb, Fw);
QB=zpjjs.QB;
Qomax=zpjjs.Qomax;
Qtmax=zpjjs.Qtmax;
cyzs=zpjjs.PLIZZZ;
for(J=0;J<=Pfxjsds;J++)
{
PWF=zpjjs.YQPWF(Rjsjg[0][J], cyzs, QB, Qomax, Qtmax, Pdcyl, Pb, Fw);
if( PWF <= 0)
{
PWF = 0;
break;
}
Rjsjg[i + 1][J] = PWF;
jsjg[0][J] = Rjsjg[0][J];
jsjg[1 + i][J] = Rjsjg[1 + i][J];
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;
}
}
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[4][i],100,Temp);
title=Temp;
title.TrimRight();
title.TrimLeft();
title="PLI="+title+"(m^3/d.MPa)"+"\n";
try
{
f4.WriteString(title);
}
catch (CFileException exception4)
{
AfxMessageBox("Error reading file");
return;
}
}
else
{
int tem=int(100 * PLI);
double ttemp=tem/100;
gcvt(ttemp,100,Temp);
title=Temp;
title.TrimRight();
title.TrimLeft();
title="PLI="+title+"(m^3/d.MPa)"+"\n";
try
{
f4.WriteString(title);
}
catch (CFileException exception4)
{
AfxMessageBox("Error reading file");
return;
}
}
}
g_iProgress = 50; // 计算进度
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 > 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][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;
}
g_iProgress = 55; // 计算进度
ENDCOMPUTE;
// 百分比 = 百分比 + 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[4][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)
{
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( Pqyb == 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;
}
}
//流入关系计算
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 = 60; // 计算进度
ENDCOMPUTE;
// 入井动态关系IPR(PLI, QB, Qomax, Qtmax, qcscl, pcsyl, Pdcyl, Pb, Fw);
zpjjs.rjIPR(PLI, qcscl, pcsyl, Pdcyl, Pb, Fw);
QB=zpjjs.QB;
Qomax=zpjjs.Qomax;
Qtmax=zpjjs.Qtmax;
PLI=zpjjs.PLIZZZ;
//流出关系计算
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -