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++

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#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)
*计算脱气原油黏度的方法函数是在给定一个温度下,得到一个值,这个值就是脱气原油黏度,界面设计成只输出一个值即可;
*计算含气原油黏度的方法是得到黏度和压力的关系vecIns代表压力、vecOuts代表含气原油黏度正常界面设计即可。
*
*/
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
};