|
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
|
|
#include "iWxPseuSub.h"
|
|
|
|
|
|
#include "mToolPseu_global.h"
|
|
|
|
|
|
|
|
|
|
|
|
class iWxPseudoCSub;
|
|
|
|
|
|
class iWxPseudoCSubSo;
|
|
|
|
|
|
class iWxPseudoCSubInput;
|
|
|
|
|
|
class iWxPseudoCSubPseu;
|
|
|
|
|
|
class iAlgPseuMethodCompInfo;
|
|
|
|
|
|
class M_TOOL_PSEU_EXPORT iWxPseuSubComp : public iWxPseuSub
|
|
|
|
|
|
{
|
|
|
|
|
|
Q_OBJECT
|
|
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
|
|
|
|
|
|
explicit iWxPseuSubComp(QWidget *parent = 0);
|
|
|
|
|
|
~iWxPseuSubComp();
|
|
|
|
|
|
|
|
|
|
|
|
// 初始化
|
|
|
|
|
|
virtual void initUI();
|
|
|
|
|
|
|
|
|
|
|
|
// 传递参数
|
|
|
|
|
|
virtual void setInfos(QString sFluidType, QString sPhaseType, QString sPara);
|
|
|
|
|
|
|
|
|
|
|
|
// 最后一个SubWx
|
|
|
|
|
|
iWxPseudoCSub* getSubWxPseu();
|
|
|
|
|
|
iWxPseudoCSub* getSubWxBy(QString sName);
|
|
|
|
|
|
iWxPseudoCSubInput* getSubWxInputs();
|
|
|
|
|
|
|
|
|
|
|
|
// 初始化算法
|
|
|
|
|
|
virtual void initAlg();
|
|
|
|
|
|
|
|
|
|
|
|
// 算法计算入口
|
|
|
|
|
|
virtual void calAndFreshPseu(bool bCreateIfFirst = true);
|
|
|
|
|
|
|
|
|
|
|
|
// 是否已经正确进行了拟压力计算
|
|
|
|
|
|
virtual bool hasProperPseuRst();
|
|
|
|
|
|
|
|
|
|
|
|
/// @brief 获取 拟压力页面中,拟压力结果表
|
|
|
|
|
|
/// @param vvec,返回数据,长度为4,分别为压力P/拟压力Ps/偏差因子Zg/黏度Miug
|
|
|
|
|
|
/// 压力,单位 Mpa
|
|
|
|
|
|
/// 拟压力,单位 Pa/sec
|
|
|
|
|
|
/// 偏差因子,单位 Pa/sec
|
|
|
|
|
|
/// 黏度,单位 Pa/sec
|
|
|
|
|
|
virtual bool getPseuRstOf(VVecDouble& vvec);
|
|
|
|
|
|
|
|
|
|
|
|
// 当Header发生改变时
|
|
|
|
|
|
virtual void freshOnHeaderChanged();
|
|
|
|
|
|
|
|
|
|
|
|
// 传递参数
|
|
|
|
|
|
//void calAndFreshBy(VecDouble& vecX);
|
|
|
|
|
|
|
|
|
|
|
|
// 最终的计算函数
|
|
|
|
|
|
//bool calPseudoC(VecDouble& vecP, VecDouble& vecPs, QString& sAllExpr, bool bLogging);
|
|
|
|
|
|
|
|
|
|
|
|
// 刷新最终的Sub图表
|
|
|
|
|
|
//bool freshFinalPs(VecDouble& vecP, VecDouble& vecPs, QString sAllExpr);
|
|
|
|
|
|
|
|
|
|
|
|
// 返回数据,触发信息
|
|
|
|
|
|
bool getPseuPseuInfos(VVecDouble& vvec, \
|
|
|
|
|
|
QMap<QString, iAlgPseuMethodCompInfo*>& mapPsInfos, \
|
|
|
|
|
|
QMap<QString, double>& mapOthers);
|
|
|
|
|
|
|
|
|
|
|
|
// 保存
|
|
|
|
|
|
// void saveBkInfos();
|
|
|
|
|
|
|
|
|
|
|
|
// 文件标识
|
|
|
|
|
|
virtual QString getFilePseuTag();
|
|
|
|
|
|
virtual bool savePseu();
|
|
|
|
|
|
|
|
|
|
|
|
virtual void fuzzyLayoutWH(int n, int& szW, int& szH);
|
|
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
|
|
|
|
|
|
|
virtual void initUI_MethodOptions();
|
|
|
|
|
|
|
|
|
|
|
|
// 除了第一个之外,其它Radio隐藏与显示
|
|
|
|
|
|
void showMostRadios(bool bVisible);
|
|
|
|
|
|
|
|
|
|
|
|
// 算法有多少种
|
|
|
|
|
|
virtual void dealwithMethods();
|
|
|
|
|
|
|
|
|
|
|
|
// 算法切换
|
|
|
|
|
|
void refreshByMethod(QString s);
|
|
|
|
|
|
|
|
|
|
|
|
// 准备
|
|
|
|
|
|
void preparePsInfos(QMap<QString, iAlgPseuMethodCompInfo*>& mapInfos, bool bOut);
|
|
|
|
|
|
void prepareOthers();
|
|
|
|
|
|
|
|
|
|
|
|
// 根据名称查找FitAlg
|
|
|
|
|
|
iAlgPseuMethodCompInfo* findAlgFitInfo(QString sName);
|
|
|
|
|
|
|
|
|
|
|
|
void freshSubWxSo(iWxPseudoCSubSo* pSub);
|
|
|
|
|
|
void freshSubWxPseu(iWxPseudoCSubPseu* pSub);
|
|
|
|
|
|
bool fuzzyFitAboutInfos(QMap<QString, iAlgPseuMethodCompInfo*>& map, \
|
|
|
|
|
|
QStringList& listFitNames, \
|
|
|
|
|
|
VecDouble& vecX, int& nSplitIndex);
|
|
|
|
|
|
|
|
|
|
|
|
signals:
|
|
|
|
|
|
|
|
|
|
|
|
private slots:
|
|
|
|
|
|
|
|
|
|
|
|
void slotSubWxChanged(int);
|
|
|
|
|
|
// void slotRefreshPseu();
|
|
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
|
|
|
|
|
|
|
QStackedWidget* m_pStackedWx;
|
|
|
|
|
|
|
|
|
|
|
|
VecDouble m_vecX;
|
|
|
|
|
|
|
|
|
|
|
|
// 临时,对应Input的计算结果数据
|
|
|
|
|
|
VVecDouble* m_pVVecPtrOfPE;
|
|
|
|
|
|
|
|
|
|
|
|
// 保存所有的计算结果
|
|
|
|
|
|
VVecDouble m_vvecResults;
|
|
|
|
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|