📄 wuxing.cpp
字号:
//---------------------------------------------------------------------------
#pragma hdrstop
#include "WuXing.h"
#include <math.h>
//---------------------------------------------------------------------------
#pragma package(smart_init)
TTWuXingCanShu::TTWuXingCanShu()
{
//TODO: Add your source code here
}
//水的密度
double TTWuXingCanShu::GetShuiMiDu(double T)
{
int i;
double ShuiMiDu;//计算热水密度
double temper_hw[41],//热水温度
rho_hw[41];//热水密度
temper_hw[0]=0.0;rho_hw[0]=999.8;
temper_hw[1]=5.0;rho_hw[1]=1000.0;
temper_hw[2]=10.0;rho_hw[2]=999.7;
temper_hw[3]=15.0;rho_hw[3]=999.1;
temper_hw[4]=20.0;rho_hw[4]=998.2;
temper_hw[5]=25.0;rho_hw[5]=997.0;
temper_hw[6]=30.0;rho_hw[6]=995.7;
temper_hw[7]=40.0;rho_hw[7]=992.2;
temper_hw[8]=50.0;rho_hw[8]=988.0;
temper_hw[9]=60.0;rho_hw[9]=983.2;
temper_hw[10]=70.0;rho_hw[10]=977.8;
temper_hw[11]=80.0;rho_hw[11]=971.8;
temper_hw[12]=90.0;rho_hw[12]=965.3;
temper_hw[13]=100.0;rho_hw[13]=958.4;
temper_hw[14]=110.0;rho_hw[14]=951.0;
temper_hw[15]=120.0;rho_hw[15]=943.1;
temper_hw[16]=130.0;rho_hw[16]=943.8;
temper_hw[17]=140.0;rho_hw[17]=926.1;
temper_hw[18]=150.0;rho_hw[18]=916.9;
temper_hw[19]=160.0;rho_hw[19]=907.5;
temper_hw[20]=170.0;rho_hw[20]=897.5;
temper_hw[21]=180.0;rho_hw[21]=887.1;
temper_hw[22]=190.0;rho_hw[22]=876.6;
temper_hw[23]=200.0;rho_hw[23]=864.8;
temper_hw[24]=210.0;rho_hw[24]=852.8;
temper_hw[25]=220.0;rho_hw[25]=840.3;
temper_hw[26]=230.0;rho_hw[26]=827.3;
temper_hw[27]=240.0;rho_hw[27]=813.6;
temper_hw[28]=250.0;rho_hw[28]=799.0;
temper_hw[29]=260.0;rho_hw[29]=783.8;
temper_hw[30]=270.0;rho_hw[30]=767.7;
temper_hw[31]=280.0;rho_hw[31]=750.5;
temper_hw[32]=290.0;rho_hw[32]=732.2;
temper_hw[33]=300.0;rho_hw[33]=712.4;
temper_hw[34]=310.0;rho_hw[34]=691.0;
temper_hw[35]=320.0;rho_hw[35]=667.4;
temper_hw[36]=330.0;rho_hw[36]=641.0;
temper_hw[37]=340.0;rho_hw[37]=610.8;
temper_hw[38]=350.0;rho_hw[38]=574.7;
temper_hw[39]=360.0;rho_hw[39]=527.9;
temper_hw[40]=370.0;rho_hw[40]=451.5;
for(i=0;i<=40;i=i+1)
{
if(T<=temper_hw[i+1]&&T>=temper_hw[i])
ShuiMiDu=rho_hw[i]+(T-temper_hw[i])*(rho_hw[i]-rho_hw[i+1])/(temper_hw[i]-temper_hw[i+1]);
}
return(ShuiMiDu);
}
//Rs YouMidu(kg/m^3) QiMiDu(kg/m^3) T(摄氏度)
double TTWuXingCanShu::GetB(double Rs, double YouMiDu, double T)
{
double B;
YouMiDu=YouMiDu/1000;
B=5.62*Rs*sqrt(QiXiangDuiMiDu/YouMiDu)+2.25*T+40;
B=0.972+0.000147*pow(B,1.175);
if(B<1.01)
B=1.01;
return B;
}
//Re-雷诺数 RL-体积含液率
double TTWuXingCanShu::GetHL(double Re, double RL)
{
double y1,y2,x;
x=log10(RL)+3;
if(Re<100||Re>2e5)
return -1;
if(Re>=100&&Re<500)
{
y1=1.53077259+0.4562775*x-0.3097665*x*x+0.0718006*x*x*x+0.01101236*x*x*x*x
-0.003875*x*x*x*x*x;
y2=1.15927438+0.5157858*x-0.0104859*x*x-0.1975919*x*x*x+0.10033697*x*x*x*x
-0.01400916*x*x*x*x*x;
y2=y1-(y1-y2)*(log10(Re)-log10(100))/(log10(500)-log10(100));
}
if(Re>=500&&Re<1000)
{
y1=1.15927438+0.5157858*x-0.0104859*x*x-0.1975919*x*x*x+0.10033697*x*x*x*x
-0.01400916*x*x*x*x*x;
y2=0.86228039+0.7941742*x-0.0414958*x*x-0.3076484*x*x*x+0.16093553*x*x*x*x
-0.0230459*x*x*x*x*x;
y2=y1-(y1-y2)*(log10(Re)-log10(500))/(log10(1000)-log10(500));
}
if(Re>=1000&&Re<2500)
{
y1=0.86228039+0.7941742*x-0.0414958*x*x-0.3076484*x*x*x+0.16093553*x*x*x*x
-0.0230459*x*x*x*x*x;
y2=0.61121528+0.8219817*x+0.2450638*x*x-0.591696*x*x*x+0.26550666*x*x*x*x
-0.03627456*x*x*x*x*x;
y2=y1-(y1-y2)*(log10(Re)-log10(1000))/(log10(2500)-log10(1000));
}
if(Re>=2500&&Re<5000)
{
y1=0.61121528+0.8219817*x+0.2450638*x*x-0.591696*x*x*x+0.26550666*x*x*x*x
-0.03627456*x*x*x*x*x;
y2=0.37037426+1.1458724*x-0.1024697*x*x-0.3317119*x*x*x+0.17193205*x*x*x*x
-0.02410223*x*x*x*x*x;
y2=y1-(y1-y2)*(log10(Re)-log10(2500))/(log10(5000)-log10(2500));
}
if(Re>=5000&&Re<10000)
{
y1=0.37037426+1.1458724*x-0.1024697*x*x-0.3317119*x*x*x+0.17193205*x*x*x*x
-0.02410223*x*x*x*x*x;
y2=0.21324017+0.9846183*x+0.4538199*x*x-0.7934965*x*x*x+0.32817872*x*x*x*x
-0.04284162*x*x*x*x*x;
y2=y1-(y1-y2)*(log10(Re)-log10(5000))/(log10(10000)-log10(5000));
}
if(Re>=10000&&Re<25000)
{
y1=0.21324017+0.9846183*x+0.4538199*x*x-0.7934965*x*x*x+0.32817872*x*x*x*x
-0.04284162*x*x*x*x*x;
y2=-0.040313231+0.94664475*x+0.7145845*x*x-0.9824665*x*x*x+0.3845391*x*x*x*x
-0.048779381*x*x*x*x*x;
y2=y1-(y1-y2)*(log10(Re)-log10(10000))/(log10(25000)-log10(10000));
}
if(Re>=25000&&Re<50000)
{
y1=-0.040313231+0.94664475*x+0.7145845*x*x-0.9824665*x*x*x+0.3845391*x*x*x*x
-0.048779381*x*x*x*x*x;
y2=-0.22287976+0.8475579*x+0.7621021*x*x-0.9112905*x*x*x+0.3433659*x*x*x*x
-0.04932038*x*x*x*x*x;
y2=y1-(y1-y2)*(log10(Re)-log10(25000))/(log10(50000)-log10(25000));
}
if(Re>=50000&&Re<100000)
{
y1=-0.22287976+0.8475579*x+0.7621021*x*x-0.9112905*x*x*x+0.3433659*x*x*x*x
-0.04932038*x*x*x*x*x;
y2=-0.3672887+0.437131*x+1.266505*x*x-1.157105*x*x*x+0.4060284*x*x*x*x
-0.04932038*x*x*x*x*x;
y2=y1-(y1-y2)*(log10(Re)-log10(50000))/(log10(100000)-log10(50000));
}
if(Re>=100000&&Re<200000)
{
y1=-0.3672887+0.437131*x+1.266505*x*x-1.157105*x*x*x+0.4060284*x*x*x*x
-0.04932038*x*x*x*x*x;
y2=-1.272218+2.227224*x-0.86396*x*x+0.092496*x*x*x+0.067676*x*x*x*x
-0.0149087*x*x*x*x*x;
y2=y1-(y1-y2)*(log10(Re)-log10(100000))/(log10(200000)-log10(100000));
}
return pow(10,y2-2);
}
double TTWuXingCanShu::GetQiMiDu(double T, double YaLi)
{
double Tr,Pr,Z,QiMiDu;
T+=273.15;
Tr=T/264.87;
Pr=YaLi/(43.960*1e5);
Z=GetZ(Pr,Tr);
if(Z==0)
{
return 0;
}
QiMiDu=QiXiangDuiMiDu*1.205*YaLi*273.15/(101325*T*Z);
return QiMiDu;
}
//QiMiDu (kg/m^3) T(摄氏度)
double TTWuXingCanShu::GetQiNianDu(double QiMiDu, double T)
{
double x,y,c,QiNianDu;
x=3.5+0.29*QiXiangDuiMiDu+548/(T+273.15);
y=2.4-0.2*x;
c=(1.26+0.078*QiXiangDuiMiDu)*pow((T+273.15),1.5)/(116+306*QiXiangDuiMiDu+T+273.15);
QiNianDu=c*1e-6*exp(x*pow(QiMiDu/1000,y));
return QiNianDu;
}
//YouMiDu(kg/m^3) QiMiDu(kg/m^3) GuanXianYaLi(MPa) T-WenDu(摄氏度)
double TTWuXingCanShu::GetRs(double YouMiDu, double GuanXianYaLi, double T)
{
double Rs;
YouMiDu=YouMiDu/1000;
GuanXianYaLi/=1000000;
Rs=pow(10,1.77/YouMiDu-1.64-0.001638*T-0.02912);
Rs=0.178*QiXiangDuiMiDu*pow(8.06*GuanXianYaLi*Rs,1.205);
return Rs;
}
//某温度下原油密度计算
//T(摄氏度) MiDu20(kg/m^3)
double TTWuXingCanShu::GetYouMiDu(double T)
{
double b,MiDu=MiDu20;
if(MiDu<=0.6999)
b=0.000910;
if(MiDu>0.6999&&MiDu<=0.7000)
b=0.000897;
if(MiDu>0.7100&&MiDu<=0.7199)
b=0.000884;
if(MiDu>0.7200&&MiDu<=0.7299)
b=0.000870;
if(MiDu>0.7300&&MiDu<=0.7399)
b=0.000857;
if(MiDu>0.7400&&MiDu<=0.7499)
b=0.000844;
if(MiDu>0.7500&&MiDu<=0.7599)
b=0.000831;
if(MiDu>0.7600&&MiDu<=0.7699)
b=0.000818;
if(MiDu>0.7700&&MiDu<=0.7799)
b=0.000805;
if(MiDu>0.7800&&MiDu<=0.7899)
b=0.000792;
if(MiDu>0.7900&&MiDu<=0.7999)
b=0.000778;
if(MiDu>0.8000&&MiDu<=0.8099)
b=0.000765;
if(MiDu>0.8100&&MiDu<=0.8199)
b=0.000752;
if(MiDu>0.8200&&MiDu<=0.8299)
b=0.000738;
if(MiDu>0.8300&&MiDu<=0.8399)
b=0.000725;
if(MiDu>0.8400&&MiDu<=0.8499)
b=0.000712;
if(MiDu>0.8500&&MiDu<=0.8599)
b=0.000699;
if(MiDu>0.8600&&MiDu<=0.8699)
b=0.000686;
if(MiDu>0.8700&&MiDu<=0.8799)
b=0.000673;
if(MiDu>0.8800&&MiDu<=0.8899)
b=0.000660;
if(MiDu>0.8900&&MiDu<=0.8999)
b=0.000647;
if(MiDu>0.9000&&MiDu<=0.9099)
b=0.000633;
if(MiDu>0.9100&&MiDu<=0.9199)
b=0.000620;
if(MiDu>0.9200&&MiDu<=0.9299)
b=0.000607;
if(MiDu>0.9300&&MiDu<=0.9399)
b=0.000594;
if(MiDu>0.9400&&MiDu<=0.9499)
b=0.000581;
if(MiDu>0.9500&&MiDu<=0.9599)
b=0.000568;
if(MiDu>0.9600&&MiDu<=0.9699)
b=0.000555;
if(MiDu>0.9700&&MiDu<=0.9799)
b=0.000542;
if(MiDu>0.9800&&MiDu<=0.9899)
b=0.000529;
if(MiDu>0.9900)
b=0.000518;
MiDu=MiDu20-b*(T-20);
return MiDu;
}
//某温度下原油粘度计算
//T(摄氏度) NianDu50(kg/m^3)
double TTWuXingCanShu::GetYouNianDu(double T)
{
double a,c;
double NianDu,t1000,t10,tt;
if(NianDu50>=1000)
{
a=0.00252;
c=10;
}
if(NianDu50>=10&&NianDu50<1000)
{
a=0.00144;
c=100;
}
if(NianDu50<10)
{
a=0.00076;
c=1000;
}
NianDu=(1/c)*pow(c*NianDu50,1/(1+a*(T-50)*log10(c*NianDu50)));
if((NianDu50>=1000&&NianDu>=1000)||(NianDu50>=10&&NianDu50<1000&&NianDu>=10&&NianDu<1000)
||(NianDu50<10&&NianDu<10))
return NianDu/1000;
//假设粘度>=1000
a=0.00252;
c=10;
NianDu=(1/c)*pow(c*NianDu50,1/(1+a*(T-50)*log10(c*NianDu50)));
if(NianDu>=1000)
{
return NianDu/1000;
}
else
if(NianDu>=10&&NianDu<1000)
{
t1000=50+99.2*(1-4/(1+log10(NianDu50)));
NianDu=pow(10,5/(1+0.0072*(T-t1000))-2);
return NianDu/1000;
}
else
if(NianDu<10)
{
tt=92.4+50+99.2*(1-4/(1+log10(NianDu50)));
NianDu=pow(10,4/(1+0.00304*(T-tt))-3);
return NianDu/1000;
}
//假设10<=粘度<1000
a=0.00144;
c=100;
NianDu=(1/c)*pow(c*NianDu50,1/(1+a*(T-50)*log10(c*NianDu50)));
if(NianDu>=10&&NianDu<1000)
{
return NianDu/1000;
}
else
if(NianDu<10)
{
t10=50+231*(1-3/(2+log10(NianDu50)));
NianDu=pow(10,4/(1+0.00304*(T-t10)));
return NianDu/1000;
}
return 0;
}
//压缩系数 设计手册(下)529-530
double TTWuXingCanShu::GetZ(double Pr, double Tr)
{
double A=0,B=0,C=0,D=0,Z;
if(Pr<0.2)
{
A=1.6643;
B=-2.2114;
C=-0.3647;
D=1.4385;
Pr=0.2;
}
if(Pr>=0.2&&Pr<=1.2)
{
if(Tr>=1.05&&Tr<=1.2)
{
A=1.6643;
B=-2.2114;
C=-0.3647;
D=1.4385;
}
if(Tr>=1.2&&Tr<=1.4)
{
A=0.5222;
B=-0.8511;
C=-0.0364;
D=1.049;
}
if(Tr>=1.4&&Tr<=2.0)
{
A=0.1391;
B=-0.2988;
C=0.0007;
D=0.9969;
}
if(Tr>=2.0&&Tr<=3.0)
{
A=0.0295;
B=-0.0825;
C=0.0009;
D=0.9967;
}
}
if(Pr>1.2&&Pr<=2.8)
{
if(Tr>=1.05&&Tr<=1.2)
{
A=-1.3570;
B=1.4942;
C=4.6315;
D=-4.7009;
}
if(Tr>=1.2&&Tr<=1.4)
{
A=0.1717;
B=0.3232;
C=0.5869;
D=0.1229;
}
if(Tr>=1.4&&Tr<=2.0)
{
A=0.0984;
B=-0.2053;
C=0.0621;
D=0.8580;
}
if(Tr>=2.0&&Tr<=3.0)
{
A=0.0211;
B=-0.0527;
C=0.0127;
D=0.9549;
}
}
if(Pr>2.8&&Pr<=5.4)
{
if(Tr>=1.05&&Tr<=1.2)
{
A=-0.3278;
B=0.4752;
C=1.8223;
D=-1.9036;
}
if(Tr>=1.2&&Tr<=1.4)
{
A=-0.2521;
B=0.3871;
C=1.6087;
D=-1.6635;
}
if(Tr>=1.4&&Tr<=2.0)
{
A=-0.0284;
B=0.0625;
C=0.4714;
D=-0.0011;
}
if(Tr>=2.0&&Tr<=3.0)
{
A=0.0041;
B=0.0039;
C=0.0607;
D=0.7927;
}
}
if(A!=0)
{
Z=Pr*(A*Tr+B)+C*Tr+D;
return Z;
}
if(Pr>2.8&&Pr<=5.4)
{
if(Tr>=1.05&&Tr<=3.0)
{
Z=Pr*pow(0.711+3.66*Tr,-1.4667)-1.637/(0.319*Tr+0.522)+2.071;
return Z;
}
}
return 0;
}
void TTWuXingCanShu::Initial(double QiXiangDuiMiDu0, double _MiDu20, double _NianDu50)
{
QiXiangDuiMiDu=QiXiangDuiMiDu0;
MiDu20=_MiDu20;
NianDu50=_NianDu50;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -