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