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++

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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