#pragma once #include "Defines.h" #include "iWxPvtSubPhase.h" #include "mToolPvt_global.h" class M_TOOL_PVT_EXPORT iWxPvtPhaseParaCal : public QObject { Q_OBJECT public: explicit iWxPvtPhaseParaCal(QString sFluidType, \ QString sPhaseType); ~iWxPvtPhaseParaCal(); public: // 关联信息 void bindSubHeader(iWxPvtSubHeader* pSubHeader); // 计算入口 void recalPvtBy(iAlgPvtBase* pAlgPvt, QString sPara, \ VecInt& vecChecked, int nRadio, \ bool bUpdatePlotsIfChecked); bool _calPvtBy_Common(QString sMethod, VecDouble& vecXs, VecDouble& vecYs); bool _calPvtBy_Special(QString sMethod, VecDouble& vecXs, VecDouble& vecYs); // 计算涉及到的信息 void dealwithMethods(); int getMethodSubType(QString sMethod); void setMemberValuesOfAlgo(); // 计算特殊点 bool calResultPos(QPointF& pt, QString sMethod); bool calReferPbPos(QPointF& pt, QString sMethod); double _calResultPosY(double dX, QString sMethod); // 返回数据 void getVecX(VecDouble& x); signals: // 对计算载体设置参数 void sigMemberValueNeeded(iAlgPvtBase*& ); // 获取PbRefer点 void sigReferPbNeeded(QPointF& pt); // 计算完成后的结果触发 void sigPvtAlgResult(QString sPara, QString sMethodBase, \ QMap& mapRs, \ QPointF& ptRs, QPointF& ptReferPb, \ bool bUpdatePlotsIfChecked); // 获取表格数据 void sigGetPvtTableData(QString sPara, VVecVariant& vvec); void sigGetPvtConstData(QString sPara, double& d); public: // 一些公共函数接口 static bool checkIfModeT(QString sPara); static bool checkIfPbConsidered(QString sPara, QString sPhaseType); static void getTitleInfos(QString sPara, bool bModeT, \ QString& sTitleX, QString& sTitleY, \ QString& sUnitX, QString& sUnitY); protected: // 当前计算的参数对象,通常英文 QString m_sPara; // PhaseType,相类型 QString m_sPhaseType; // 当前参数对象计算方法相关( QStringList m_listMethodAlls; //所有的计算方法 // SubHeader iWxPvtSubHeader* m_pSubHeader; // 对应的实体类 iAlgPvtBase* m_pAlgPvt; // 是否温度模式 bool m_bModeT; // 临时标识 bool m_bUnableSP; };