|
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
|
|
#include "iAlgPvtBase.h"
|
|
|
|
|
|
|
|
|
|
|
|
class M_PVT_EXPORT gasCritical : public iAlgPvtBase
|
|
|
|
|
|
{
|
|
|
|
|
|
private:
|
|
|
|
|
|
|
|
|
|
|
|
enum PvtAlgMethod
|
|
|
|
|
|
{
|
|
|
|
|
|
PM_Standing = 0,
|
|
|
|
|
|
PM_Carr,
|
|
|
|
|
|
PM_Sutton,
|
|
|
|
|
|
PM_WichertAziz,
|
|
|
|
|
|
PM_HTHP,
|
|
|
|
|
|
PM_CarKobayshiBurrows
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
|
|
|
|
|
|
gasCritical();
|
|
|
|
|
|
|
|
|
|
|
|
// 绑定成员变量
|
|
|
|
|
|
virtual void bindMembers();
|
|
|
|
|
|
|
|
|
|
|
|
// 虚函数,计算函数
|
|
|
|
|
|
virtual bool cal(double& dIn, double& dOut);
|
|
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
|
|
|
|
|
|
// 各自的实现方法
|
|
|
|
|
|
bool standing(double& dTc, double& dPc);
|
|
|
|
|
|
bool carr(double& dTc, double& dPc);
|
|
|
|
|
|
bool sutton(double& dTc, double& dPc, bool bAdjust = true);
|
|
|
|
|
|
bool wichertAziz(double& dTc, double& dPc);
|
|
|
|
|
|
bool HTHP(double& dTc, double& dPc);
|
|
|
|
|
|
bool carKobayshiBurrows(double& dTc, double& dPc);
|
|
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
|
|
|
|
|
|
|
// 内部转换调整的函数
|
|
|
|
|
|
bool adjustByA(double A, double& dTc, double& dPc);
|
|
|
|
|
|
bool convertByWA(double& dTc, double& dPc);
|
|
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
bool adjustPc(double& dPc);
|
|
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
|
|
|
|
|
|
|
double m_dRg; //rg,气体比重,该气体的密度与空气密度之比,无量纲,具体情况具体分析,0.55-0.8
|
|
|
|
|
|
double m_dCO2; //yCO2,天然气中含二氧化碳CO2的摩尔分数,无量纲
|
|
|
|
|
|
double m_dN2; //yN2,天然气中含氮气N2的摩尔分数,无量纲
|
|
|
|
|
|
double m_dH2S; //yH2S,天然气中含硫化氢H2S的摩尔分数,无量纲
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|