|
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
|
|
#include "iAlgDiffusionKK.h"
|
|
|
|
|
|
|
|
|
|
|
|
// 计算相渗 两相(油水、油气、气水)
|
|
|
|
|
|
class M_DIFFUSION_EXPORT iAlgDiffusionKkTwoPhase : public iAlgDiffusionKK
|
|
|
|
|
|
{
|
|
|
|
|
|
public:
|
|
|
|
|
|
|
|
|
|
|
|
iAlgDiffusionKkTwoPhase();
|
|
|
|
|
|
|
|
|
|
|
|
// 计算函数(调用算法)
|
|
|
|
|
|
virtual bool cal(VecDouble vecX, VecDouble& vecY1, VecDouble& vecY2);
|
|
|
|
|
|
virtual bool cal(double dIn, double& dOut1, double& dOut2);
|
|
|
|
|
|
virtual bool cal(VecDouble vecX, VecDouble& vecY);
|
|
|
|
|
|
virtual bool cal(double dIn, double& dOut);
|
|
|
|
|
|
|
|
|
|
|
|
/// @brief 根据dX/dY(左侧/右侧的第二个点),反算求解指数
|
|
|
|
|
|
/// @param dIndex求解的指数
|
|
|
|
|
|
/// @param dX,dY 点通常指的是鼠标移动后对应的数值点
|
|
|
|
|
|
/// @param bL(左侧还是右侧,左侧为第一个,右侧为第2个)
|
|
|
|
|
|
virtual bool inversCal(double& dIndex, double dX, double dY, bool bL);
|
|
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
|
|
|
|
|
|
|
// 把参数Map解析为成员变量
|
|
|
|
|
|
virtual bool parseParas2Members(QStringList& listTagParas, \
|
|
|
|
|
|
QStringList& listTagModels);
|
|
|
|
|
|
|
|
|
|
|
|
// 算法提供者:北科大 liuwc,20241113
|
|
|
|
|
|
double _calKr1(double dX, KkModelMethod o);
|
|
|
|
|
|
double _calKr2(double dX, KkModelMethod o);
|
|
|
|
|
|
|
|
|
|
|
|
// 算法提供者:北科大 liuwc,20241114
|
|
|
|
|
|
double _inversCalKr1(double dX, double dY, KkModelMethod o);
|
|
|
|
|
|
double _inversCalKr2(double dX, double dY, KkModelMethod o);
|
|
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
|
|
|
|
|
|
|
double m_dS1; //参数:饱和度1,比如束缚水饱和度
|
|
|
|
|
|
double m_dKr1; //参数:相对渗透率1,比如最大油相相对渗透率
|
|
|
|
|
|
double m_dS2; //参数:饱和度2,比如残余油饱和度
|
|
|
|
|
|
double m_dKr2; //参数:相对渗透率2,比如最大水相相对渗透率
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|