📄 qjjjdfx.cpp
字号:
{
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 + -