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/mTool/mToolPseu/iWxPseuSubComp.h

122 lines
3.1 KiB
C

#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;
};