📄 shwrjcalfuction.cpp
字号:
}
else
y=0;
if (fabs(wd - 90) <= 0.001)
return(y);
if (wd > 90)
{
wd1 = 90;
y1 = y;
}
else
{
wd2 = 90;
y2 = y;
}
}
if (wd > 80 && wd < 90) //节流前温度在80和90之间
{
y = y1 - (y1 - y2) * (wd1 - wd) / (wd1 - wd2);
return(y);
}
if (wd > 90 && wd < 110) //节流前温度为100
{
if (x >= 1350)
{
if (x <= 1400)
y = -3 * x + 4350;
if (y >= 150 && y <= 300)
; //null
else if (x <= 4000)
y = -0.00023 * pow(x,2) + 1.9254 * x - 1883.82;
else if (x > 4000 && x <= 10000)
y = -0.00003161 * pow(x,2) + 0.4352 * x + 991.045;
}
else
y=0;
if (fabs(wd - 100) <= 0.001)
return(y);
if (wd > 100)
{
wd1 = 100;
y1 = y;
}
else
{
wd2 = 100;
y2 = y;
}
}
if (wd > 90 && wd < 100) //节流前温度在90和100之间
{
y = y1 - (y1 - y2) * (wd1 - wd) / (wd1 - wd2);
return(y);
}
if (wd > 100 && wd < 120) //节流前温度为110
{
if (x >= 1642.8 && x <= 1714.3)
y = 3.4965 * x - 5594.06;
else if (x > 1714.3 && x <= 4600)
y = (-0.000000000055089) * pow(x,4) + 0.0000007273 * pow(x,3) - 0.00366 * pow(x,2) + 8.7713 * x - 7070.84;
else if (x > 4600 && x <= 10000)
y = -0.000021046 * pow(x,2) + 0.2885 * x + 1128.7;
else
y=0;
if (fabs(wd - 110) <= 0.001)
return(y);
if (wd > 110)
{
wd1 = 110;
y1 = y;
}
else
{
wd2 = 110;
y2 = y;
}
}
if (wd > 100 && wd < 110) //节流前温度在100和110之间
{
y = y1 - (y1 - y2) * (wd1 - wd) / (wd1 - wd2);
return(y);
}
if (wd > 110 && wd < 130) //节流前温度为120
{
if (x >= 1892)
{
if (x <= 1892.9)
y = -55.554 * x + 105308;
if (y >= 150 && y <= 200)
; //null
else if (x <= 3714.2)
y = -0.0003 * pow(x,2) + 2.4421 * x - 3249.65;
else if (x > 3714.2 && x <= 6000)
y = -0.000057651 * pow(x,2) + 0.6969 * x - 293.328;
else if (x > 6000 && x <= 10000)
y = -0.000014513 * pow(x,2) + 0.1898 * x + 1196.3;
}
else
y=0;
if (fabs(wd - 120) <= 0.001)
return(y);
if (wd > 120)
{
wd1 = 120;
y1 = y;
}
else
{
wd2 = 120;
y2 = y;
}
}
if (wd > 110 && wd < 120) //节流前温度在110和120之间
{
y = y1 - (y1 - y2) * (wd1 - wd) / (wd1 - wd2);
return(y);
}
if (wd > 120 && wd < 140) //节流前温度为130
{
if (x >= 2200 && x <= 2250)
y = 5 * x - 10837.5;
else if (x > 2250 && x <= 4000)
y = 0.000000025174 * pow(x,3) - 0.0004 * pow(x,2) + 2.4808 * x - 3235.54;
else if (x > 4000 && x <= 10000)
y = -0.0000041667 * pow(x,2) + 0.0000012628 * x + 1766.66;
else
y=0;
if (fabs(wd - 130) <= 0.001)
return(y);
if (wd > 130)
{
wd1 = 130;
y1 = y;
}
else
{
wd2 = 130;
y2 = y;
}
}
if (wd > 120 && wd < 130) //节流前温度在120和130之间
{
y = y1 - (y1 - y2) * (wd1 - wd) / (wd1 - wd2);
return(y);
}
if (wd > 130 && wd < 150) //节流前温度为140
{
if (x >= 2500 && x <= 2600)
y = 2.5 * x - 6100;
else if (x > 2600 && x <= 4000)
y = 0.000000029834 * pow(x,3) - 0.0005 * pow(x,2) + 2.882 * x - 4132.48;
else if (x > 4000 && x <= 10000)
y = -0.000010633 * pow(x,2) + 0.1289 * x + 924.328;
else
y=0;
if (fabs(wd - 140) <= 0.001)
return(y);
if (wd > 140)
{
wd1 = 140;
y1 = y;
}
else
{
wd2 = 140;
y2 = y;
}
}
if (wd > 130 && wd < 140) //节流前温度在130和140之间
{
y = y1 - (y1 - y2) * (wd1 - wd) / (wd1 - wd2);
return(y);
}
if (wd > 140 && wd < 160) //节流前温度为150
{
if (x >= 2850 && x <= 3428.6)
y = -0.0004 * pow(x,2) + 3.2907 * x - 5913.87;
else if (x > 3428.6 && x <= 10000)
y = -0.0000000010526 * pow(x,3) + 0.0000023307 * pow(x,2) + 0.1422 * x + 256.841;
else
y=0;
if (fabs(wd - 150) <= 0.001)
return(y);
if (wd > 150)
{
wd1 = 150;
y1 = y;
}
else
{
wd2 = 150;
y2 = y;
}
}
if (wd > 140 && wd < 150) //节流前温度在140和150之间
{
y = y1 - (y1 - y2) * (wd1 - wd) / (wd1 - wd2);
return(y);
}
if (wd > 150 && wd < 170) //节流前温度为160
{
if (x >= 3428.6 && x <= 4000)
y = 0.7605 * x - 2421.33;
else if (x > 4000 && x <= 10000)
y = -0.000020816 * pow(x,2) + 0.3036 * x - 255.604;
else
y=0;
if (fabs(wd - 160) <= 0.001)
return(y);
if (wd > 160)
{
wd1 = 160;
y1 = y;
}
else
{
wd2 = 160;
y2 = y;
}
}
if (wd > 150 && wd < 160) //节流前温度在150和160之间
{
y = y1 - (y1 - y2) * (wd1 - wd) / (wd1 - wd2);
return(y);
}
if (wd > 160 && wd <= 170) //节流前温度为170
{
if (x >= 5000 && x <= 5800)
y = -0.000375 * pow(x,2) + 4.3625 * x - 12287.5;
else if (x > 5800 && x <= 8000)
y = -0.000055583 * pow(x,2) + 0.7671 * x - 2179.07;
else if (x > 8000 && x <= 8500)
y = -0.4868 * x + 4307.89;
else
y=0;
if (fabs(wd - 170) <= 0.001)
return(y);
wd2 = 170;
y2 = y;
}
if (wd > 160 && wd < 170) //节流前温度在160和170之间
{
y = y1 - (y1 - y2) * (wd1 - wd) / (wd1 - wd2);
return(y);
}
return(y);
}
//图6-20 xdmd为0.7天然气在不形成水化物条件下允许达到的膨胀程度
//x--节流前压力,psia
//y--节流后压力,psia
//wd--节流前温度,oF
double xdmd7(double x, double wd)
{
double y,y1,y2,wd1,wd2;
if (wd >= 40 && wd < 50) //节流前温度为40
{
if (x >= 164.3 && x <= 167.9)
y = 13.3056 * x - 2066.11;
else
y=0;
if (fabs(wd - 40) <= 0.001)
return(y);
wd1 = 170;
y1 = y;
}
if (wd > 40 && wd < 60) //节流前温度为50
{
if (x >= 290)
{
if (x <= 300)
y = -8 * x + 252;
if (y >= 120 && y <= 200)
; //null
else if (x <= 357.1)
y = -0.04656 * pow(x,2) + 32.4718 * x - 5300.92;
else
y=0;
}
if (fabs(wd - 50) <= 0.001)
return(y);
if (wd > 50)
{
wd1 = 50;
y1 = y;
}
else
{
wd2 = 50;
y2 = y;
}
}
if (wd > 40 && wd < 50) //节流前温度在40和50之间
{
y = y1 - (y1 - y2) * (wd1 - wd) / (wd1 - wd2);
return(y);
}
if (wd > 50 && wd < 70) //节流前温度为60
{
if (x >= 420)
{
if (x <= 440)
y = -4 * x + 1880;
if (y >= 120 && y <= 200)
; //null
else if (x <= 650)
y = 3.099 * pow(x,3) - 0.0525 * pow(x,2) + 31.08 * x - 5889.42;
else
y=0;
}
if (fabs(wd - 60) <= 0.001)
return(y);
if (wd > 60)
{
wd1 = 60;
y1 = y;
}
else
{
wd2 = 60;
y2 = y;
}
}
if (wd > 50 && wd < 60) //节流前温度在50和60之间
{
y = y1 - (y1 - y2) * (wd1 - wd) / (wd1 - wd2);
return(y);
}
if (wd > 60 && wd < 80) //节流前温度为70
{
if (x >= 562.5)
{
if (x <= 575)
y = -6.4 * x + 3800;
if (y >= 120 && y <= 200)
; //null
else if (x <= 1450)
y = 0.0000014162 * pow(x,3) - 0.0046 * pow(x,2) + 6.048 * x - 1971.77;
else
y=0;
}
if (fabs(wd - 70) <= 0.001)
return(y);
if (wd > 70)
{
wd1 = 70;
y1 = y;
}
else
{
wd2 = 70;
y2 = y;
}
}
if (wd > 60 && wd < 70) //节流前温度在60和70之间
{
y = y1 - (y1 - y2) * (wd1 - wd) / (wd1 - wd2);
return(y);
}
if (wd > 70 && wd < 90) //节流前温度为80
{
if (x >= 700 && x <= 800)
y = 2.8 * x - 1826.67;
else if (x > 800 && x <= 1300)
y = 1.1792 * x - 563.441;
else if (x > 1300 && x <= 6000)
y = -0.0000000072432 * pow(x,3) - 0.000055342 * pow(x,2) + 1.31041 * x - 599.739;
else if (x > 6000 && x <= 10000)
y = 0.000000019042 * pow(x,3) - 0.00047 * pow(x,2) + 3.4818 * x - 4542.85;
else
y=0;
if (fabs(wd - 80) <= 0.001)
return(y);
if (wd > 80)
{
wd1 = 80;
y1 = y;
}
else
{
wd2 = 80;
y2 = y;
}
}
if (wd > 70 && wd < 80) //节流前温度在70和80之间
{
y = y1 - (y1 - y2) * (wd1 - wd) / (wd1 - wd2);
return(y);
}
if (wd > 80 && wd < 100) //节流前温度为90
{
if (x >= 866.7)
{
if (x <= 900)
y = -2.4024 * x + 2282.16;
if (y >= 120 && y <= 200)
; //null
else if (x <= 5000)
y = 0.0000000035313 * pow(x,3) - 0.0002 * pow(x,2) + 1.6326 * x - 1058.74;
else if (x > 5000 && x <= 10000)
y = 0.00000000092593 * pow(x,3) - 0.000044048 * pow(x,2) + 0.3741 * x + 1835.87;
else
y=0;
}
if (fabs(wd - 90) <= 0.001)
return(y);
if (wd > 90)
{
wd1 = 90;
y1 = y;
}
else
{
wd2 = 90;
y2 = y;
}
}
if (wd > 80 && wd < 90) //节流前温度在80和90之间
{
y = y1 - (y1 - y2) * (wd1 - wd) / (wd1 - wd2);
return(y);
}
if (wd > 90 && wd < 110 ) //节流前温度为100
{
if (x >= 1075)
{
if (x <= 1100)
y = -3.2 * x + 3640;
if (y >= 120 && y <= 200)
; //null
else if (x <= 2000)
y = 0.000000028656 * pow(x,3) - 0.0004 * pow(x,2) + 2.2257 * x - 1686.88;
else if (x > 2000 && x <= 10000)
y = 0.000000001425 * pow(x,3) - 0.000053186 * pow(x,2) + 0.4859 * x + 892.107;
else
y=0;
}
if (fabs(wd - 100) <= 0.001)
return(y);
if (wd > 100)
{
wd1 = 100;
y1 = y;
}
else
{
y2 = y;
wd2 = 100;
}
}
if (wd > 90 && wd < 100 ) //节流前温度在90和100之间
{
y = y1 - (y1 - y2) * (wd1 - wd) / (wd1 - wd2);
return(y);
}
if (wd > 100 && wd < 120) //节流前温度为110
{
if (x >= 1275 && x <= 1300)
y = 7.2 * x - 9060;
else if (x > 1300 && x <= 6000)
y = 0.000000033447 * pow(x,3) - 0.00049 * pow(x,2) + 2.4212 * x - 2036.03;
else if (x > 6000 && x <= 10000)
y = -0.0000066143 * pow(x,2) + 0.0465 * x + 1954.39;
else
y=0;
if (fabs(wd - 110) <= 0.001)
return(y);
if (wd > 110)
{
wd1 = 110;
y1 = y;
}
else
{
wd2 = 110;
y2 = y;
}
}
if (wd > 100 && wd < 110) //节流前温度在100和110之间
{
y = y1 - (y1 - y2) * (wd1 - wd) / (wd1 - wd2);
return(y);
}
if (wd > 110 && wd < 130) //节流前温度为120
{
if (x >= 1425)
{
if (x <= 1500)
y = 0.01867 * pow(x,2) - 55.6666 * x + 41620;
if (y >= 120 && y <= 200)
; //null
else if (x < 6000)
y = 0.0000000327 * pow(x,3) - 0.0005 * pow(x,2) + 2.5126 * x - 2467.01;
else if (x > 6000 && x <= 10000 )
y = -0.0000102 * pow(x,2) + 0.1132 * x + 1460.22;
else
y=0;
}
if (fabs(wd - 120) <= 0.001)
return(y);
if (wd > 120)
{
wd1 = 120;
y1 = y;
}
else
{
wd2 = 120;
y2 = y;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -