#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,比如最大水相相对渗透率 };