⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wuxing.cpp

📁 石油公司网管系统优化系统软件源码,很有价值的.
💻 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 + -