📄 dxlcglyltd.cpp
字号:
}
}
try
{
f4.WriteString("-10 -10\n");
}
catch (CFileException exception4)
{
AfxMessageBox("Error reading file");
return;
}
for(i=0;i<=4 * NFPS - 1;i++)
{
if( sdtd[i] == 0 && i > 1)
{
break;
}
GTY[i] = GTY[i] +"\n";
try
{
f3.WriteString(GTY[i]);
}
catch (CFileException exception4)
{
AfxMessageBox("Error reading file");
return;
}
}
try
{
// f3.WriteString("8\n");
}
catch (CFileException exception4)
{
AfxMessageBox("Error reading file");
return;
}
g_iProgress = 100; // 计算进度
f3.Close();
f4.Close();
}
double dxlcglyltd::Orkiszewski(double P0,double T0,double TG,double RG,double RW,double RO,double GG,double GW,double OG,double L,double DOL,double DIL,double RR,double H2S,double CO2,double N2,double NaCl,double NP,double CD,double FD)
{
//P起点 [[[[ pqidian
//T起点 [[[[ tqidian
//T梯度 [[[[ ttidu
//Q气 [[[[ qqi
//Q水 [[[[ qshui
//Q油 [[[[ qyou
//G气 [[[[ gqi
//G水 [[[[ gshui
//G油 [[[[ gyou
//L管 [[[[ lguan
//D环管外 [[[[ dhgw
//D环管内 [[[[ dhgn
//RR管 [[[[ rrguan
//N管段 [[[[ nguanduan
//D计算 [[[[ djisuan
//D流动 [[[[ dliudong
//P梯度[1000] [[[[ ptidu[1000]
//D梯度[1000] [[[[ dtidu[1000]
//D管 [[[[ dguan
//A管 [[[[ aguan
//迭代次数 [[[[ ddcs
double pqidian,tqidian,ttidu,qqi,gqi,qshui,gshui,qyou,lguan;
double dhgw,dhgn,rrguan,nguanduan,djisuan,dliudong;
double gyou,dguan,aguan,ddcs,YN2,YCO2,YH2S,YNaCl;
double DLTD,PC,TC,QLT,RPL,RPW,RPO,PP,PPP,PD,P,T,RSO,RSW,PR,TR;
double Z,UG,Pb,UO,STO,BO,UW,STW,BW,QW,QO,QL,QG,QT,WL,WG,WT,VT;
double UL,STL,DL,DG,LB,VD,LS,LM,X,Y,X1,Y1,Pcom;
int TEMP,i,J;
pqidian=0;tqidian=0;ttidu=0;qqi=0;gqi=0;qshui=0;gshui=0;qyou=0;lguan=0;
dhgw=0;dhgn=0;rrguan=0;nguanduan=0;djisuan=0;dliudong=0;
gyou=0;dguan=0;aguan=0;ddcs=0;YN2=0;YCO2=0;YH2S=0;YNaCl=0;
DLTD=0;PC=0;TC=0;QLT=0;RPL=0;RPW=0;RPO=0;PP=0;PPP=0;PD=0;P=0;T=0;RSO=0;RSW=0;PR=0;TR=0;
Z=0;UG=0;Pb=0;UO=0;STO=0;BO=0;UW=0;STW=0;BW=0;QW=0;QO=0;QL=0;QG=0;QT=0;WL=0;WG=0;WT=0;VT=0;
UL=0;STL=0;DL=0;DG=0;LB=0;VD=0;LS=0;LM=0;X=0;Y=0;X1=0;Y1=0;Pcom=0;
TEMP=0;i=0;J=0;
yqsxz csjs;
pqidian = P0; tqidian = T0 - 273.15; ttidu = TG;
qqi = RG; qshui = RW; qyou = RO;
gqi = GG; gshui = GW; gyou = OG;
lguan = L; dhgw = DOL; dhgn = DIL; rrguan = RR;
YN2 = N2; YCO2 = CO2; YH2S = H2S; YNaCl = NaCl;
nguanduan = NP; //流动管分段数
djisuan = CD; //从上往下为1,从下往上为-1。
dliudong = FD; //从上往下为-1,从下往上为1。
if( nguanduan <= 0)
{
ldiv_t lguanshang;
lguanshang=ldiv(long(lguan),500);
if( lguanshang.quot == lguan / 50)
{
nguanduan = lguanshang.quot;
}
else
{
nguanduan = lguanshang.quot + 1;
}
}
else
{
for(i=1;i<=100;i++)
{
ptidu[i] = 0;
dtidu[i] = 0;
}
}
DLTD = lguan / nguanduan;
dguan = dhgw - dhgn;
aguan = 3.14159 / 4 * (pow(dhgw,2) - pow(dhgn,2));
if( rrguan <= 0)
{
rrguan = 0.0008;
}
csjs.trqnjcs(gqi, YH2S, YCO2, 1);//天然气的临界参数
PC=csjs.Pc;
TC=csjs.Tc;
if( qshui + qyou <= 0.5)
{
qshui = 0.25;
qyou = 0.25;
}
if( DLTD > 0)
{
QLT = qyou + qshui;
RPL = qqi / QLT;
RPW = 0;
if( qshui > 0)
{
RPW = qqi / qshui;
}
RPO = 0;
if( qyou > 0)
{
RPO = qqi / qyou;
}
for(J=1;J<=nguanduan;J++)
{
PP = 0;
PPP = PD;
for(ddcs=1;ddcs<=30;ddcs++)
{
PD = 0.618 * PD + 0.382 * PP;
P = pqidian + PD * 0.5 * djisuan;
T = tqidian + ttidu * DLTD * 0.5 * djisuan;
if( RSO + RSW <= RPL && qqi > 0)
{
PR = P / PC;
TR = (T + 273.15) / TC;
Z=csjs.trqpcxs(PR, TR);//天然气偏差因子
UG=csjs.trqnd(PR, TR, YCO2, YH2S, YN2, gqi, T);//天然气的粘度
}
if( qyou > 0)
{
if( qqi > 0)
{
csjs.ypdylhrjqyb(gyou, RPO, gqi, T, P);//油的泡点压力和溶解气油比
Pb=csjs.Pb;
RSO=csjs.RSO;
}
else
{
RSO = 0;
}
UO=csjs.ynd(RSO, P, Pb, T, gyou);//计算油的粘度
STO=csjs.ybmzl(gyou, P, T);//油的表面张力
BO=csjs.ytjxs(RSO, gqi, gyou, T, P, Pb);//油的体积系数
}
if( qshui > 0)
{
if( qqi > 0)
{
RSW=csjs.rjqsb(RPW, P, T, YNaCl);//溶解气水比
}
else
{
RSW = 0;
}
UW=csjs.sdnd(P, T, YNaCl);//水的粘度
STW=csjs.sbmzl(P, T);//水的表面张力
BW=csjs.sdtjxs(P, T, YNaCl, RSW);//水的体积系数
}
if( Z <= 0)
{
Z = 1;
}
if( qqi - RSO * qyou - RSW * qshui < 0)
{
RSO = (qqi - RSW * qshui) / qyou;
}
QW = qshui * BW / 86400;
QO = qyou * BO / 86400;
QL = QW + QO;
QG = 0.0000000039897 * (qqi - RSO * qyou - RSW * qshui) * Z / P * (T + 273.15);
if( QG < 0)
{
QG = 0;
}
QT = QL + QG;
WL = (0.01157 * (qyou * gyou + qshui * gshui) + 0.000013947 * (RSO * qyou + RSW * qshui) * gqi);
WG = 0.000013947 * (qqi - RSO * qyou - RSW * qshui) * gqi;
if( QG == 0)
{
WG = 0;
}
WT = WL + WG;
VT = QT / aguan;
UL = (UO * QO + UW * QW) / QL;
STL = (STO * QO + STW * QW) / QL;
DL = WL / QL;
if( QG > 0)
{
DG = WG / QG;
}
else
{
DG = 0;
}
LB = 1.071 - 0.7277 * pow(VT,2) / dguan;
if( LB < 0.13)
{
LB = 0.13;
}
VD = QG * pow((DL / 9.8 / STL),0.25) / aguan;
if( QG > 0)
{
LS = 50 + 36 * VD * QL / QG;
}
if( QG > 0)
{
LM = 75 + 84 * pow((VD * QL / QG),0.75);
}
if( QG / QT < LB)
{
Orkiszewskipl(aguan, dguan, DG, DL, QG, QL, QT, rrguan, UL);
}
else if( VD < LS)
{
Orkiszewskidsl(aguan, dguan, DL, QL, QT, VT, WT, rrguan, UL, qyou, qshui);
}
else if( VD < LM)
{
Orkiszewskidsl(aguan, dguan, DL, QL, QT, VT, WT, rrguan, UL, qyou, qshui);
X=DA;
Y=FL;
Orkiszewskiwl(aguan, dguan, DG, DL, QG, QL, UG, UL, STL);
X1=DA;
Y1=FL;
DA = (X1 * (LM - VD) + X * (VD - LS)) / (LM - LS);
FL = (Y1 * (LM - VD) + Y * (VD - LS)) / (LM - LS);
}
else
{
Orkiszewskiwl(aguan, dguan, DG, DL, QG, QL, UG, UL, STL);
}
PP = 0.000009807 * (DA + dliudong * FL) * DLTD / (1 - WT * QG * 0.000001 / pow(aguan,2) / P);
if( fabs(PP - PD) < 0.0001)
{
break;
}
}
if( (PP < 0 || PP > DLTD / 100) && PPP > 0 && ddcs > 30)
{
PP = PPP;
}
if( (PD < 0 || PD > DLTD / 100) && PPP > 0 && ddcs > 30)
{
PD = PPP;
}
if( PP < PD)
{
PD = PP;
}
pqidian = pqidian + PD * djisuan;
tqidian = tqidian + ttidu * DLTD * djisuan;
if( pqidian <= 0)
{
pqidian = 0;
}
TEMP=int(1000 * pqidian + 0.5);
ptidu[J] = TEMP/ 1000.0;
dtidu[J] = dtidu[J - 1] + djisuan * DLTD;
if( pqidian == 0)
{
break;
}
}
}
Pcom = pqidian;
return Pcom;
}
void dxlcglyltd::Orkiszewskipl(double aguan,double dguan,double DG,double DL,double QG,double QL,double QT,double rrguan,double UL)//Orkiszewski泡流
{
double Y,RE,FF;
yqsxz csjs;
Y = (1 + QT / 0.244 / aguan - pow((pow((1 + QT / 0.244 / aguan),2) - 4 * QG / 0.244 / aguan),0.5)) / 2;
if( Y > 1)
{
Y = 1;
}
if( Y < 0)
{
Y = 0;
}
DA = (1 - Y) * DL + Y * DG;
RE = 1000 * DL * dguan * QL / aguan / (1 - Y) / UL;
FF=csjs.mczlxs(RE, rrguan);//摩阻系数
FL = FF * DL * pow((QL / aguan / (1 - Y)),2) / 19.6 / dguan;
}
void dxlcglyltd::Orkiszewskidsl(double aguan,double dguan,double DL,double QL,double QT,double VT,double WT,double rrguan,double UL,double qyou,double qshui)//Orkiszewski段塞流
{
double RE,FF,vbb,Y2;
Y2=0;
yqsxz csjs;
RE = 1000 * DL * dguan * VT / UL;
FF=csjs.mczlxs(RE, rrguan);//摩阻系数
for(int i=1;i<=50;i++)
{
if( 1000 * DL * dguan * vbb / UL < 3000)
{
vbb = (1.709 + 0.00002736 * RE) * pow(dguan,0.5);
}
else if( 1000 * DL * dguan * vbb / UL > 8000)
{
vbb = (1.0957 + 0.00002736 * RE) * pow(dguan,0.5);
}
else
{
vbb = (0.7858 + 0.00002736 * RE) * pow(dguan,0.5);
vbb = 0.5 * (vbb + pow((pow(vbb,2) + 0.1202 * UL / DL / pow(dguan,0.5)),0.5));
}
if( fabs(vbb - Y2) / vbb < 0.001)
{
break;
}
vbb = 0.5 * (vbb + Y2);
Y2 = vbb;
}
if( VT > 3.048 && qshui > qyou)
{
Y2 = 0.00756 * log(UL) / pow(dguan,0.799) - 0.3857 * log(dguan) - 0.0704 * log(VT) - 1.2508;
}
else if( VT < 3.048 && qshui > qyou)
{
Y2 = 0.001094 * log(UL) / pow(dguan,1.38) - 0.1859 * log(dguan) + 0.1008 * log(VT) - 0.782;
}
else if( VT <= 3.048 && qshui < qyou)
{
Y2 = 0.0104 * log(UL + 1) / pow(dguan,1.415) + 0.0491 * log(dguan) + 0.0725 * log(VT) - 1.1395;
}
else
{
Y2 = (log(VT) - 1.188) * (0.1188 * log(dguan) + 0.000297 * log(UL + 1) / pow(dguan,1.571) + 0.314);
Y2 = 0.00233 * log(UL + 1) / pow(dguan,1.371) + 0.247 * log(dguan) + 0.455 - Y2;
}
if( Y2 <= -0.2133 * VT)
{
Y2 = -0.2133 * VT;
}
int shejishi=10000;
do
{
FL = FF * DL * pow(VT,2) / 19.6 / dguan * ((QL + vbb * aguan) / (QT + vbb * aguan) + Y2);
DA = (WT + DL * vbb * aguan) / (QT + vbb * aguan) + Y2 * DL;
if( VT < 3.048)
{
break;
}
else
{
if( Y2 >= -vbb * aguan / (QT + vbb * aguan) * (1 - DA / DL) - 0.0001)
{
break;
}
Y2 = -vbb * aguan / (QT + vbb * aguan) * (1 - DA / DL);
}
}
while(shejishi==10000);
}
void dxlcglyltd::Orkiszewskiwl(double aguan,double dguan,double DG,double DL,double QG,double QL,double UG,double UL,double STL)//Orkiszewski雾流
{
double RE,A,X,FF;
yqsxz csjs;
DA = DL * (1 - 1 / (1 + QL / QG)) + DG / (1 + QL / QG);
RE = 1000 * DG * dguan * QG / aguan / UG;
if( 0.000004865 * pow((QG / aguan * UL / STL),2) * DG / DL < 0.005)
{
A = 0.01543 * STL / (DG * pow((QG / aguan),2) * dguan);
}
else
{
X = pow((0.000004865 * pow((QG / aguan * UL / STL),2) * DG / DL),0.302);
A = 0.08078 * STL / DG / pow((QG / aguan),2) / dguan * X;
}
if( A < 0.001)
{
A = 0.001;
}
if( A > 0.5)
{
A = 0.5;
}
FF=csjs.mczlxs(RE, A);//摩阻系数
FL = FF * DG * pow((QG / aguan),2) / 19.6 / dguan;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -