|
|
#pragma once
|
|
|
|
|
|
#include "mAlgDefines.h"
|
|
|
#include "iWxPseuBase.h"
|
|
|
#include "mToolPseu_global.h"
|
|
|
|
|
|
namespace Ui {
|
|
|
class iWxPseuHeader;
|
|
|
}
|
|
|
|
|
|
class M_TOOL_PSEU_EXPORT iWxPseuHeader : public iWxPseuBase
|
|
|
{
|
|
|
Q_OBJECT
|
|
|
|
|
|
public:
|
|
|
|
|
|
explicit iWxPseuHeader(QWidget *parent = 0);
|
|
|
~iWxPseuHeader();
|
|
|
|
|
|
/// @brief 设置Pseu流体相态,其实是枚举类型,只是为了支持数组,暂时用了int
|
|
|
/// @param nMain 大类,常规/特殊/状态方程,其实是:PvtFluidClass opMain
|
|
|
/// @param vecSubs 子类,油/气/水/凝析,其实是:PvtFluidType opSub
|
|
|
//void initPhaseInfos(int nMain, VecInt& vecSubs);
|
|
|
void refreshByPhases(QStringList& listPhases, int n = -1);
|
|
|
|
|
|
// 根据当前是解析还是数值进行简单调整(该函数在initUI之前)
|
|
|
void adjustUI(bool bAnalMode);
|
|
|
|
|
|
// 外传
|
|
|
void setOtherParas(QMap<QString, double>& maps);
|
|
|
|
|
|
// 初始化
|
|
|
virtual void initUI();
|
|
|
|
|
|
// 返回数据
|
|
|
virtual QString getName();
|
|
|
double getTempBase();
|
|
|
double getPressureBase();
|
|
|
double getGorBase();
|
|
|
VecDouble* getPtrOfValueP();
|
|
|
VecDouble* getPtrOfValueT();
|
|
|
|
|
|
//
|
|
|
double getSpecialV(QString s);
|
|
|
QMap<QString, double> getMapComps();
|
|
|
|
|
|
// 文件标识
|
|
|
virtual QString getFilePseuTag();
|
|
|
|
|
|
// 在导航模式下,点击下一步时,先判断本步是否正确
|
|
|
virtual bool checkCurWxInputs();
|
|
|
|
|
|
public:
|
|
|
|
|
|
// 用于参数传递
|
|
|
|
|
|
// 这是从前一个取
|
|
|
QStringList getFuzzyParas(); //哪些参数可以从前一个窗体获取
|
|
|
void setValuesFromPrevWx(QMap<QString, QVariant>& map);//从前一个窗体得到后赋值
|
|
|
|
|
|
// 这是为后一个设置
|
|
|
void getValuesForNextWx(QStringList& listParas, QMap<QString, QVariant>& map);
|
|
|
|
|
|
private:
|
|
|
|
|
|
// 流体参数项
|
|
|
void initFluidParas();
|
|
|
|
|
|
// 默认值填入
|
|
|
void initDefault();
|
|
|
|
|
|
// signal
|
|
|
void buildSignals();
|
|
|
|
|
|
// 填入最大最小的单位
|
|
|
void fillUnitOfRange();
|
|
|
|
|
|
// 刷新
|
|
|
void refresh();
|
|
|
|
|
|
// 计算压力温度点
|
|
|
void calPressAndTemp();
|
|
|
bool _calIncrement(double& d,
|
|
|
double dMax, double dMin);
|
|
|
bool _calVecOfIncrements(VecDouble& vec,
|
|
|
double dIncrement,
|
|
|
double dMax, double dMin);
|
|
|
|
|
|
protected:
|
|
|
|
|
|
virtual void paintEvent(QPaintEvent*);
|
|
|
virtual void resizeEvent(QResizeEvent*);
|
|
|
|
|
|
virtual bool eventFilter(QObject* object, QEvent* event);
|
|
|
|
|
|
virtual void onSerialize(ZxSerializer* ser);
|
|
|
virtual void onDeserialize(ZxSerializer* ser);
|
|
|
|
|
|
private slots:
|
|
|
|
|
|
void slotChangeIncrements();
|
|
|
void slotMaxMinChanged(QString);
|
|
|
void slotMaxMinStrChanged();
|
|
|
|
|
|
void slotCbxUnitMaxMinChanged(const QString s);
|
|
|
virtual void slotParaValueChanged();
|
|
|
|
|
|
void slotCompSubChanged(QMap<QString, double>& map);
|
|
|
|
|
|
void on_btnComposition_clicked();
|
|
|
|
|
|
private:
|
|
|
|
|
|
void onFluidTypeChanged(PvtFluidClass opMain, PvtFluidType opSub);
|
|
|
|
|
|
signals:
|
|
|
|
|
|
//void sigInputRefresh(bool, VVecDouble*);
|
|
|
|
|
|
/// @brief 当Header涉及到的一些参数数据更改时触发,比如压力数据范围改变
|
|
|
void sigHeaderOptionDataChanged();
|
|
|
|
|
|
private:
|
|
|
|
|
|
Ui::iWxPseuHeader *ui;
|
|
|
|
|
|
// 压力数据数组
|
|
|
VecDouble m_vecValueP;
|
|
|
// 温度数据数组,温度是后台计算的。
|
|
|
VecDouble m_vecValueT;
|
|
|
double m_dMaxT; //温度范围,固定:20-400℃ 摄氏度
|
|
|
double m_dMinT;
|
|
|
|
|
|
QString m_sLastUnitMaxMin;
|
|
|
|
|
|
QMap<QString, double> m_mapComps;
|
|
|
|
|
|
// 保存所有的计算结果
|
|
|
//VVecDouble m_vvecResults;
|
|
|
|
|
|
QStringList m_listParas;// 当前流体对应的参数
|
|
|
|
|
|
bool m_bAnalMode; //临时不涉及序列化
|
|
|
};
|