#pragma once #include "iAlgPvtBase.h" #include "gasZg.h" // 气体压缩系数 class M_PVT_EXPORT gasCg : public iAlgPvtBase { private: enum PvtAlgMethod { PM_Dranchuk = 0 }; public: gasCg(); // 绑定成员变量 virtual void bindMembers(); // 虚函数,计算函数 virtual bool cal(VecDouble vecIns, VecDouble& vecOuts); public: bool dranchuk(VecDouble vecP, VecDouble& vecCg); private: /// @brief 计算干气压缩系数 Cg /// @param 输入:p - 压力 (MPa) /// @param T - 温度 (℃) /// @param SG - 气体比重 (默认 0.7) /// @out 输出:cg - 压缩系数 (1/MPa) /// 算法提供者,xieh 20260518 double _dranchuk_novel_method(double p, double T, double SG = 0.7); /// @brief Dranchuk 方法计算天然气压缩因子 Z /// @param Pr /// @param Tr /// 算法提供者,xieh 20260518 double _cal_zg_by_dranchuk_directly(double Pr, double Tr); private: double m_dTpr; //tpr,拟对比温度,Tpr=T/Tc,温度与临界温度的比值,无量纲 double m_dT; // rt,油藏温度,°C double m_dTc; //tc,临界温度,不同的组分有不同的临界温度值,°C double m_dRg; //rg,气体比重,该气体的密度与空气密度之比,无量纲,具体情况具体分析,0.55-0.8 };