You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
|
|
#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
|
|
|
|
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|