#pragma once #include "iAlgPvtBase.h" // 活油:油黏度 class M_PVT_EXPORT oilLiveMiuo : public iAlgPvtBase { private: enum PvtAlgMethod { PM_BeggsAndRobinson = 0, PM_Petrosky, PM_BergmanAndSutton }; public: oilLiveMiuo(); // 绑定成员变量 virtual void bindMembers(); // 虚函数,计算函数 virtual bool cal(VecDouble vecIns, VecDouble& vecOuts); public: /*油相黏度分脱气原油黏度(dead oil)和含气原油黏度(live oil), *计算脱气原油黏度的方法函数是在给定一个温度下,得到一个值,这个值就是脱气原油黏度,界面设计成只输出一个值即可; *计算含气原油黏度的方法是得到黏度和压力的关系,vecIns代表压力、vecOuts代表含气原油黏度,正常界面设计即可。 * */ bool BeggsAndRobinson_Dead(double dT, double& dMiuo); bool BeggsAndRobinson_Sat(double dP, double& dMiuo);//中间函数 bool BeggsAndRobinson_Live(VecDouble vecP, VecDouble& vecUo); bool Beal_Dead(double dT, double& dMiuo); bool Glaso_Dead(double dT, double& dMiuo); bool Petrosky_Dead(double dT, double& dMiuo); bool Petrosky_Sat(double dP, double& dMiuo); bool Petrosky_Live(VecDouble vecP, VecDouble& vecUo); bool BergmanAndSutton_Dead(double dT, double& dMiuo); bool BergmanAndSutton_Sat(double dTb, double dP, double& dMiuo); bool BergmanAndSutton_Live(VecDouble vecP, VecDouble& vecUo); private: double m_dT; //rt,油藏温度,°C double m_dRs; //Rs,溶解度,m3/m3 double m_dTb; //tb,沸点温度,C double m_dRo; //ro,油相比重,该油相的密度与4℃时纯水的密度之比,无量纲,具体情况具体分析,0.8-0.9 };