|
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
|
|
#include "mAlgDefines.h"
|
|
|
|
|
|
#include "iWxPvtBase.h"
|
|
|
|
|
|
#include "mToolPvt_global.h"
|
|
|
|
|
|
|
|
|
|
|
|
namespace Ui {
|
|
|
|
|
|
class iWxPvtSubHeader;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
class M_TOOL_PVT_EXPORT iWxPvtSubHeader : public iWxPvtBase
|
|
|
|
|
|
{
|
|
|
|
|
|
Q_OBJECT
|
|
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
|
|
|
|
|
|
explicit iWxPvtSubHeader(QWidget *parent = 0);
|
|
|
|
|
|
~iWxPvtSubHeader();
|
|
|
|
|
|
|
|
|
|
|
|
/// @brief 设置PVT流体相态,其实是枚举类型,只是为了支持数组,暂时用了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);
|
|
|
|
|
|
|
|
|
|
|
|
// 初始化
|
|
|
|
|
|
virtual void initUI();
|
|
|
|
|
|
|
|
|
|
|
|
void copyFrom(ZxUiBase* p);
|
|
|
|
|
|
|
|
|
|
|
|
// 返回数据
|
|
|
|
|
|
virtual QString getName();
|
|
|
|
|
|
double getTempBase();
|
|
|
|
|
|
double getPressureBase();
|
|
|
|
|
|
double getGorBase();
|
|
|
|
|
|
VecDouble* getPtrOfValueP();
|
|
|
|
|
|
VecDouble* getPtrOfValueT();
|
|
|
|
|
|
|
|
|
|
|
|
// 文件标识
|
|
|
|
|
|
virtual QString getFilePvtTag();
|
|
|
|
|
|
|
|
|
|
|
|
// 在导航模式下,点击下一步时,先判断本步是否正确
|
|
|
|
|
|
virtual bool checkCurWxInputs();
|
|
|
|
|
|
|
|
|
|
|
|
// 返回所有参数,Key为英文ID
|
|
|
|
|
|
virtual bool getAllParaValues(QMap<QString, double>& map, \
|
|
|
|
|
|
bool bOnlyFitted = false, \
|
|
|
|
|
|
bool bClearMap = true);
|
|
|
|
|
|
virtual bool getAllParaValuesUnit(QMap<QString, QString>& map, \
|
|
|
|
|
|
bool bOnlyFitted = false, \
|
|
|
|
|
|
bool bClearMap = true);
|
|
|
|
|
|
virtual bool getParaValue(QString sPara, \
|
|
|
|
|
|
double& dValue, \
|
|
|
|
|
|
QString sUnitDest = "");
|
|
|
|
|
|
public:
|
|
|
|
|
|
|
|
|
|
|
|
// 用于参数传递
|
|
|
|
|
|
|
|
|
|
|
|
// 注意:在pvtMain的序列化过程中,其本身未进行序列化,所以其相关参数暂未涉及
|
|
|
|
|
|
// 故全部放在此处进行维护
|
|
|
|
|
|
QStringList getListPhases();
|
|
|
|
|
|
PvtFluidType getPft();
|
|
|
|
|
|
|
|
|
|
|
|
// 这是从前一个取
|
|
|
|
|
|
QStringList getFuzzyParas(); //哪些参数可以从前一个窗体获取
|
|
|
|
|
|
void setValuesFromPrevWx(QMap<QString, QVariant>& map);//从前一个窗体得到后赋值
|
|
|
|
|
|
|
|
|
|
|
|
// 这是为后一个设置
|
|
|
|
|
|
void getValuesForNextWx(QStringList& listParas, QMap<QString, QVariant>& map);
|
|
|
|
|
|
|
|
|
|
|
|
// 有PvtMain调用
|
|
|
|
|
|
bool freshRstByParaValues(QMap<QString, double>& map, bool bOnlyCt = false);
|
|
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
|
|
|
|
|
|
|
// 流体参数项
|
|
|
|
|
|
void initFluidParas(bool bInit);
|
|
|
|
|
|
void initAdvCtrls();
|
|
|
|
|
|
void freshAdvCtrls();
|
|
|
|
|
|
|
|
|
|
|
|
// 默认值填入
|
|
|
|
|
|
void initDefault();
|
|
|
|
|
|
|
|
|
|
|
|
// signal
|
|
|
|
|
|
void buildSignals();
|
|
|
|
|
|
|
|
|
|
|
|
// 填入最大最小的单位
|
|
|
|
|
|
void fillUnitOfRange();
|
|
|
|
|
|
|
|
|
|
|
|
// 刷新
|
|
|
|
|
|
void refresh();
|
|
|
|
|
|
|
|
|
|
|
|
// 计算压力温度点
|
|
|
|
|
|
void calPressAndTemp(QLineEdit* pSender = nullptr);
|
|
|
|
|
|
bool _calIncrement(double& d, \
|
|
|
|
|
|
double dMax, double dMin, \
|
|
|
|
|
|
bool bModeP);
|
|
|
|
|
|
bool _calVecOfIncrements(VecDouble& vec, \
|
|
|
|
|
|
double dIncrement, \
|
|
|
|
|
|
double& dMax, double dMin, \
|
|
|
|
|
|
int nFixedSize = -1);
|
|
|
|
|
|
|
|
|
|
|
|
// 油气水饱和度系数
|
|
|
|
|
|
void makesureOgwCoefs();
|
|
|
|
|
|
|
|
|
|
|
|
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);
|
|
|
|
|
|
// virtual void onDeserialized();
|
|
|
|
|
|
|
|
|
|
|
|
private slots:
|
|
|
|
|
|
|
|
|
|
|
|
private slots:
|
|
|
|
|
|
|
|
|
|
|
|
void on_cbxByPtCount_clicked();
|
|
|
|
|
|
void slotMaxMinChanged(QString);
|
|
|
|
|
|
// void slotMaxMinStrChanged();
|
|
|
|
|
|
|
|
|
|
|
|
void slotCbxUnitPChanged(const QString s);
|
|
|
|
|
|
void slotCbxUnitTChanged(const QString s);
|
|
|
|
|
|
virtual void slotParaValueChanged();
|
|
|
|
|
|
|
|
|
|
|
|
// 某项参数计算结果数据更改
|
|
|
|
|
|
void slotParaRstDataChanged(QString sPara);
|
|
|
|
|
|
|
|
|
|
|
|
// void slotPvtResultsChanged(QMap<QString,double>& map);
|
|
|
|
|
|
|
|
|
|
|
|
// void slotFluidMainOptionClicked(int nIndex);
|
|
|
|
|
|
|
|
|
|
|
|
// void on_cbxOil_clicked();
|
|
|
|
|
|
// void on_cbxGas_clicked();
|
|
|
|
|
|
// void on_cbxWater_clicked();
|
|
|
|
|
|
// void on_cbxCondense_clicked();
|
|
|
|
|
|
|
|
|
|
|
|
void on_cbxUseAdvanced_clicked();
|
|
|
|
|
|
|
|
|
|
|
|
void on_btnFresh_clicked();
|
|
|
|
|
|
void on_btnDefault_clicked();
|
|
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
|
|
|
|
|
|
|
void onFluidTypeChanged(PvtFluidClass opMain, PvtFluidType opSub);
|
|
|
|
|
|
|
|
|
|
|
|
signals:
|
|
|
|
|
|
|
|
|
|
|
|
/// @brief 当Header涉及到的一些参数数据更改时触发,比如压力数据范围改变
|
|
|
|
|
|
void sigHeaderOptionDataChanged();
|
|
|
|
|
|
|
|
|
|
|
|
/// @brief 当Heade中流体选项发生改变触发
|
|
|
|
|
|
/// @param nMain 大类,常规/特殊/状态方程
|
|
|
|
|
|
/// @param vecSubs 子类,油/气/水/凝析
|
|
|
|
|
|
//void sigHeaderOptionFluidChanged(int nMain, VecInt& vecSubs);
|
|
|
|
|
|
|
|
|
|
|
|
/// @brief 当切换高级选项时,获取数据时,触发
|
|
|
|
|
|
void sigGetAllParaValues(QMap<QString,double>& map);
|
|
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
|
|
|
|
|
|
|
Ui::iWxPvtSubHeader *ui;
|
|
|
|
|
|
|
|
|
|
|
|
// 压力数据数组
|
|
|
|
|
|
VecDouble m_vecValueP;
|
|
|
|
|
|
// 温度数据数组,温度是后台计算的。
|
|
|
|
|
|
VecDouble m_vecValueT;
|
|
|
|
|
|
//double m_dMaxT; //温度范围,固定:20-400℃ 摄氏度
|
|
|
|
|
|
//double m_dMinT;
|
|
|
|
|
|
|
|
|
|
|
|
QString m_sLastUnitP;
|
|
|
|
|
|
QString m_sLastUnitT;
|
|
|
|
|
|
|
|
|
|
|
|
// PvtFluidClass m_oPfc;
|
|
|
|
|
|
|
|
|
|
|
|
QStringList m_listParas;// 当前流体对应的参数
|
|
|
|
|
|
QStringList m_listAllParas;// 全部参数,不涉及序列化,此处只是权宜之计,有待完善 TODO
|
|
|
|
|
|
|
|
|
|
|
|
// 注意:在pvtMain的序列化过程中,其本身未进行序列化,所以其相关参数暂未涉及
|
|
|
|
|
|
// 故全部放在此处进行维护
|
|
|
|
|
|
QStringList m_listPhases;
|
|
|
|
|
|
PvtFluidType m_oPft;
|
|
|
|
|
|
|
|
|
|
|
|
bool m_bAnalMode; //临时不涉及序列化
|
|
|
|
|
|
QMap<QString,double> m_mapDefaultValues; //临时不涉及序列化
|
|
|
|
|
|
};
|