📄 qjyhsj.cpp
字号:
{
YY = pow((KI / (KI - 1) * (pow(ljylb,(2 / KI)) - pow(ljylb,((KI + 1) / KI)))),0.5);
}
fkj[1] = int(100 * pow((XX / YY),0.5));
fkj[1]=fkj[1]/ 100.0;
//选择气举阀、确定油管参数
for(KK=1;KK<=kyqjfgs;KK++)
{
if( fkj[1] < DHOLE[KK] || KK == kyqjfgs)
{
fkj1[1] = fkj[1];
fkj[1] = DHOLE[KK];
ygxyxs[1] = cygxyxs[KK];
break;
}
}
// 主窗口.SSPanel1.FloodPercent = 75
//计算其余阀的参数
ygxy[0] = 0;
jdygxy = 0;
for(J=2;J<=10;J++)
{
ygxy[J - 1] = ygxy[J - 2];
do
{
ygxy[J - 1] = (jdygxy + ygxy[J - 1]) / 2;
//阀的深度和阀处套压
fsd[J] = fsd[J - 1];
do
{
LS = fsd[J];
for(i=1;i<=CSGDZZ;i++)
{
if( dshendu[i] >= LS && dshendu[i - 1] <= LS)
{
fcty[J] = pqtidu[i - 1] + (pqtidu[i] - pqtidu[i - 1]) / (dshendu[i] - dshendu[i - 1]) * (LS - dshendu[i - 1]);
break;
}
}
fsd[J] = fsd[J - 1] + (fcty[J] - ygxy[J - 1] - fczxyy[J - 1]) / GS;
} while(fabs(LS - fsd[J]) >= 1);
fsd[J] = int(fsd[J] + 0.5);
if( dzqd - fsd[J] > 60 && fzs == 0)
{
if( fsd[J] - fsd[J - 1] < 100)
{
fsd[J] = fsd[J - 1] + 100;
for(i=1;i<=CSGDZZ;i++)
{
if( dshendu[i] >= fsd[J] && dshendu[i - 1] <= fsd[J])
{
fcty[J] = pqtidu[i - 1] + (pqtidu[i] - pqtidu[i - 1]) / (dshendu[i] - dshendu[i - 1]) * (fsd[J] - dshendu[i - 1]);
break;
}
}
}
if( fsd[J] > dzqd)
{
fzs = J;
fsd[J] = dzqd;
fcty[J] = pjszqd + pgzyc;
fcwd[J] = int(100 * (tjingkou + TG * fsd[J] - 273.15));
fcwd[J]=fcwd[J]/ 100.0;
fczxyy[J] = int(100 * pjszqd);
fczxyy[J]=fczxyy[J]/ 100.0;
fdkyl[J] = int(100 * (fcty[J] - ygxy[J - 1] - 0.2));
fdkyl[J]=fdkyl[J]/ 100.0;
fzql[J] = int(qzhuru);
for(i=0;i<=CSGDZZ;i++)
{
dfshendu[J][i] = dfshendu[0][i];
pftidu[J][i] = pftidu[0][i];
}
}
else
{
fcty[J] = int(100 * fcty[J]);
fcty[J]=fcty[J]/ 100.0;
//阀处温度
fcwd[J] = int(100 * (tjingkou + TG * fsd[J] - 273.15));
fcwd[J]=fcwd[J]/ 100.0;
//阀最小油管压力
for(i=1;i<=CSGDZZ;i++)
{
if( dimtidu[i] >= fsd[J] && dimtidu[i - 1] <= fsd[J])
{
fczxyy[J] = pimtidu[i - 1] + (pimtidu[i] - pimtidu[i - 1]) / (dimtidu[i] - dimtidu[i - 1]) * (fsd[J] - dimtidu[i - 1]);
break;
}
}
fczxyy[J] = int(100 * fczxyy[J]);
fczxyy[J]=fczxyy[J]/ 100.0;
//阀打开压力
fdkyl[J] = int(100 * (fcty[J] - ygxy[J - 1]));
fdkyl[J]=fdkyl[J]/ 100.0;
//求最小注气量
QO = QL * (1 - Fw);
QW = QL * Fw;
qzhu = fzql[J - 1];
DLTQ = 500;
dtidu[0] = 0;
ptidu[0] = pjingkou;
for(i=1;i<=CSGDZZ;i++)
{
dtidu[i] = 0;
ptidu[i] = 0;
}
scqldx = "";
bcqldx = "";
DLTMIN = 10000;
NN = 0;
do
{
qzhu = qzhu + DLTQ;
//多相流(pzxyy, pjingkou, tjingkou, TG, qzhu, QW, QO, GG, GW, OG, fsd[J], DIT, 0, RR, H2S, CO2, N2, NaCl, CSGDZZ, 1, 1, MMPF);
pzxyy=zpjjs.dxl(MMPF,pjingkou, tjingkou, TG, qzhu, QW, QO, GG, GW, OG, fsd[J], DIT, 0, RR, H2S, CO2, N2, NaCl, CSGDZZ, 1, 1);
if( pzxyy > fdkyl[J])
{
bcqldx = "偏小";
}
else
{
bcqldx = "偏大";
}
if( bcqldx == "偏大" && scqldx == "偏大")
{
DLTQ = -fabs(DLTQ);
}
else if( bcqldx == "偏小" && scqldx == "偏小")
{
DLTQ = fabs(DLTQ);
}
else if( bcqldx == "偏大" && scqldx == "偏小")
{
DLTQ = 0.618 * fabs(DLTQ);
}
else if( bcqldx == "偏小" && scqldx == "偏大")
{
DLTQ = -0.618 * fabs(DLTQ);
}
scqldx = bcqldx;
if( DLTMIN > fabs(pzxyy - fdkyl[J]))
{
DLTMIN = fabs(pzxyy - fdkyl[J]);
}
if( DLTMIN < fabs(pzxyy - fdkyl[J]))
{
NN = NN + 1;
}
if( NN > 50)
{
break;
}
if( fabs(pzxyy - fdkyl[J]) < 0.25 && fabs(DLTQ) > 100)
{
if( DLTQ > 0)
{
DLTQ = 100;
}
else
{
DLTQ = -100;
}
}
else if( fabs(pzxyy - fdkyl[J]) < 0.5 && fabs(DLTQ) > 200)
{
if( DLTQ > 0)
{
DLTQ = 200;
}
else
{
DLTQ = -200;
}
}
else if( fabs(pzxyy - fdkyl[J]) < 2 && fabs(DLTQ) > 300)
{
if( DLTQ > 0)
{
DLTQ = 300;
}
else
{
DLTQ = -300;
}
}
}
while(fabs(pzxyy - fdkyl[J]) >= 0.05);
fzql[J] = int(qzhu);
dfshendu[J][0] = 0;
pftidu[J][0] = pjingkou;
for(i=1;i<=CSGDZZ;i++)
{
dfshendu[J][i] = fsd[J] / CSGDZZ * i;
pftidu[J][i] = ptidu[i];
}
}
}
else
{
fzs = J;
fsd[J] = dzqd;
fcty[J] = pjszqd + pgzyc;
fcwd[J] = int(100 * (tjingkou + TG * fsd[J] - 273.15));
fcwd[J]=fcwd[J]/ 100.0;
fczxyy[J] = int(100 * pjszqd);
fczxyy[J]=fczxyy[J]/ 100.0;
fdkyl[J] = int(100 * (fcty[J] - ygxy[J - 1] - 0.2));
fdkyl[J]=fdkyl[J]/ 100.0;
fzql[J] = int(qzhuru);
for(i=0;i<=CSGDZZ;i++)
{
dfshendu[J][i] = dfshendu[0][i];
pftidu[J][i] = pftidu[0][i];
}
}
//求上只阀的最大油压和油管效应
for(i=1;i<=CSGDZZ;i++)
{
if( fsd[J - 1] <= dfshendu[J][i] && fsd[J - 1] >= dfshendu[J][i - 1])
{
XX = (fsd[J - 1] - dfshendu[J][i - 1]) / (dfshendu[J][i] - dfshendu[J][i - 1]);
fczdyy[J - 1] = pftidu[J][i - 1] + (pftidu[J][i] - pftidu[J][i - 1]) * XX;
break;
}
}
if( fzs == 0)
{
fczdyy[J - 1] = int(100 * fczdyy[J - 1] + 0.5);
fczdyy[J - 1]=fczdyy[J - 1]/ 100.0;
}
else
{
fczdyy[J - 1] = fdkyl[J];
}
if( fczdyy[J - 1] < fczxyy[J - 1])
{
fczdyy[J - 1] = fczxyy[J - 1];
}
A = (fczdyy[J - 1] - fczxyy[J - 1]) * ygxyxs[J - 1];
if( A <= 0)
{
A = 0;
}
jdygxy = ygxy[J - 2] + A;
}
while(fabs(ygxy[J - 1] - jdygxy) >= 0.005);
ygxy[J - 1] = int(100 * ygxy[J - 1]);
ygxy[J - 1]=ygxy[J - 1]/ 100.0;
//校正注气量
fjzzql[J] = int(fzql[J] * 0.0544 * pow((GG * 1.8 * (fcwd[J] + 273.15)),0.5));
//计算阀的孔径
if( fzs > 0)
{
slyl = fcty[J];
}
else
{
slyl = fdkyl[J];
}
ljylb = pow((2 / (1 + KI)),(KI / (KI - 1)));
ylb = fczxyy[J] / slyl;
PR = slyl / PC;
TR = (fcwd[J] + 273.15) / TC;
// 天然气偏差系数(Z, PR, TR);
Z=csjs.trqpcxs(PR, TR);//天然气偏差因子
XX = fjzzql[J] * pow((GG * (fcwd[J] + 273.15) * Z),0.5) / 4066 / slyl;
if( ylb >= ljylb)
{
if( ylb >= 1)
{
ylb = 0.999;
}
YY = pow((KI / (KI - 1) * (pow(ylb,(2 / KI)) - pow(ylb,((KI + 1) / KI)))),0.5);
}
else
{
YY = pow((KI / (KI - 1) * (pow(ljylb,(2 / KI)) - pow(ljylb,((KI + 1) / KI)))),0.5);
}
fkj[J] = int(100 * pow((XX / YY),0.5));
fkj[J]=fkj[J]/ 100.0;
//选择气举阀、确定油管参数
for(KK=1;KK<=kyqjfgs;KK++)
{
if( fkj[J] < DHOLE[KK] || KK == kyqjfgs)
{
fkj1[J] = fkj[J];
fkj[J] = DHOLE[KK];
ygxyxs[J] = cygxyxs[KK];
break;
}
}
if( fkj[J] == 0)
{
fkj[J] = fkj1[J];
}
if( fkj1[J] == 0)
{
fkj1[J] = fkj[J];
}
if( fzs > 0)
{
break;
}
// 主窗口.SSPanel1.FloodPercent = 主窗口.SSPanel1.FloodPercent + 5
// If 主窗口.SSPanel1.FloodPercent > 95 Then 主窗口.SSPanel1.FloodPercent = 95
g_iProgress = 95; // 计算进度
ENDCOMPUTE;
}
for(J=1;J<=fzs;J++)
{
fcdyl[J] = int(100 * (fdkyl[J] + fczxyy[J] * ygxyxs[J]) / (1 + ygxyxs[J]));
fcdyl[J]=fcdyl[J]/ 100.0;
A = 1 / (1 + 0.00215 * (1.8 * fcwd[J] - 48));
fcdyl15[J] = int(100 * A * fcdyl[J]);
fcdyl15[J]=fcdyl15[J]/ 100.0;
A = 1 / (1 + 0.0002048 * (1.8 * fcwd[J] - 48));
fcdyl25[J] = int(100 * A * fcdyl[J]);
fcdyl25[J]=fcdyl25[J]/ 100.0;
fdkyl15[J] = int(100 * fcdyl15[J] * (1 + ygxyxs[J]));
fdkyl15[J]=fdkyl15[J]/ 100.0;
fdkyl25[J] = int(100 * fcdyl25[J] * (1 + ygxyxs[J]));
fdkyl25[J]=fdkyl25[J]/ 100.0;
}
// 主窗口.SSPanel1.FloodPercent = 95
fczdyy[fzs] = fczxyy[fzs];
//写入设计结果
/* fileDialogFilter2 ="Data files (*.RDF)|*.RDF|All files (*.*)|*.*||";
fileDialogExt2 = "RDF";
CFileDialog fileDialog2( FALSE,
fileDialogExt2, NULL,
0, fileDialogFilter2 );
fileDialog2.m_ofn.lpstrTitle="保存计算结果";
if( fileDialog2.DoModal() == IDCANCEL )
{
return;
}*/
CStdioFile f3;
CFileException exception3;
BOOL status1;
templs1 = ((CCVenusApp*)AfxGetApp())->GetMyAppPath();
templs1 += "\\tempfile.txt";
status1 = f3.Open(templs1,CFile::modeCreate|CFile::modeWrite);
if (!status1)
{
char s[100];
sprintf(s, "Error opening file for reading. Code:%d",
exception3.m_cause);
AfxMessageBox(s);
return;
}
try
{
f3.WriteString("\n");
// title1="";
// title="\t"+title1+"$0"+"\t"+"井气举排水$0"+"\t"+"采气优化设$0"+"\t"+"计结果$0"+"\n";
title="\t$$气举排水采气优化设计结果$0\n";
f3.WriteString(title);
f3.WriteString("\n");
}
catch (CFileException exception3)
{
AfxMessageBox("Error reading file");
return;
}
A01 = " 设计参数$13\t$12\t$14";
A02 = " 置阀深度(m)$13\t$12\t$14";
A03 = " 选择阀孔径(mm)$13\t$12\t$14";
A33 = " 计算阀孔径(mm)$13\t$12\t$14";
A04 = " 阀处温度$13(℃)\t$12\t$14";
A05 = " 注气量(10 ^4m^3/d)$13\t$12\t$14";
A06 = " 校正注气量(10 ^4m^3/d)$13\t$12\t$14";
A07 = " 阀处套压(MPa)$13\t$12\t$14";
A08 = " 阀处最小油压(MPa)$13\t$12\t$14";
A09 = " 阀处最大油压(MPa)$13\t$12\t$14";
A10 = " 阀打开压力(MPa)$13\t$12\t$14";
A11 = " 15.6℃阀打开压力(MPa)$13\t$12\t$14";
A12 = " 25.6℃阀打开压力(MPa)$13\t$12\t$14";
A13 = " 阀充氮压力(MPa)$13\t$12\t$14";
A14 = " 15.6℃阀充氮压力(MPa)$13\t$12\t$14";
A15 = " 25.6℃阀充氮压力(MPa)$13\t$12\t$14";
A16 = " 油管效应(MPa)$13\t$12\t$14";
for(i=1;i<=fzs;i++)
{
switch(i)
{
case 1:
DNZF = "一";
break;
case 2:
DNZF = "二";
break;
case 3:
DNZF = "三";
break;
case 4:
DNZF = "四";
break;
case 5:
DNZF = "五";
break;
case 6:
DNZF = "六";
break;
case 7:
DNZF = "七";
break;
case 8:
DNZF = "八";
break;
case 9:
DNZF = "九";
break;
case 10:
DNZF = "十";
break;
default:
gcvt(i,20,Temp);
DNZF = Temp;
DNZF.TrimLeft();
DNZF.TrimRight();
break;
}
A01 = A01 + "\t" + "第" + DNZF + "只阀";
gcvt(fsd[i],100,Temp);
title=Temp;
title=title+" ";
title.Left(10);
A02 = A02 + "\t" +title;
gcvt(fkj[i],100,Temp);
title=Temp;
title=title+" ";
title.Left(10);
A03 = A03 + "\t" + title;
gcvt(fkj1[i],100,Temp);
title=Temp;
title=title+" ";
title.Left(10);
A33 = A33 + "\t" +title;
gcvt(fcwd[i],100,Temp);
title=Temp;
title=title+" ";
title.Left(10);
A04 = A04 + "\t" +title;
gcvt(fzql[i]/10000,100,Temp);
title=Temp;
title=title+" ";
title.Left(10);
A05 = A05 + "\t" +title;
gcvt(fjzzql[i]/10000,100,Temp);
title=Temp;
title=title+" ";
title.Left(10);
A06 = A06 + "\t" +title;
gcvt(fcty[i],100,Temp);
title=Temp;
title=title+" ";
title.Left(10);
A07 = A07 + "\t" +title;
gcvt(fczxyy[i],100,Temp);
title=Temp;
title=title+" ";
title.Left(10);
A08 = A08 + "\t" +title;
gcvt(fczdyy[i],100,Temp);
title=Temp;
title=title+" ";
title.Left(10);
A09 = A09 + "\t" +title;
gcvt(fdkyl[i],100,Temp);
title=Temp;
title=title+" ";
title.Left(10);
A10 = A10 + "\t" +title;
gcvt(fdkyl15[i],100,Temp);
title=Temp;
title=title+" ";
title.Left(10);
A11 = A11 + "\t" +title;
gcvt(fdkyl25[i],100,Temp);
title=Temp;
title=title+" ";
title.Left(10);
A12 = A12 + "\t" +title;
gcvt(fcdyl[i],100,Temp);
title=Temp;
title=title+" ";
title.Left(10);
A13 = A13 + "\t" +title;
gcvt(fcdyl15[i],100,Temp);
title=Temp;
title=title+" ";
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -