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.
nmWTAI-Platform/Include/mAlg/mAlgPvt/oilViscosity.h

57 lines
1.9 KiB
C

#pragma once
#include "iAlgPvtBase.h"
enum euoMethod
{
// 20240914 暂时隐去咨询bwp
// BeggsAndRobinson_uo_Dead = 0,
BeggsAndRobinson_uo_Live = 0,
// Beal_uo_Dead,
// Glaso_uo_Dead,
// Petrosky_uo_Dead,
Petrosky_uo_Live,
// BergmanAndSutton_uo_Dead,
BergmanAndSutton_uo_Live
};
class M_PVT_EXPORT oilViscosity : public iAlgPvtBase
{
public:
oilViscosity();
// 绑定成员变量
virtual void bindMembers();
// 虚函数,计算函数
virtual bool cal(VecDouble vecIns, VecDouble& vecOuts);
public:
/*油相黏度分脱气原油黏度(dead oil)和含气原油黏度(live oil)
*
*vecInsvecOuts
*
*/
bool BeggsAndRobinson_Dead(double dT, double& dUo);
bool BeggsAndRobinson_Sat(double dP, double& dUo);//中间函数
bool BeggsAndRobinson_Live(VecDouble vecP, VecDouble& vecUo);
bool Beal_Dead(double dT, double& dUo);
bool Glaso_Dead(double dT, double& dUo);
bool Petrosky_Dead(double dT, double& dUo);
bool Petrosky_Sat(double dP, double& dUo);
bool Petrosky_Live(VecDouble vecP, VecDouble& vecUo);
bool BergmanAndSutton_Dead(double dT, double& dUo);
bool BergmanAndSutton_Sat(double dTb, double dP, double& dUo);
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
};