|
|
#pragma once
|
|
|
|
|
|
#include "iDlgBase.h"
|
|
|
#include "mAlgDefines.h"
|
|
|
#include "mToolDeConv_global.h"
|
|
|
|
|
|
namespace Ui {
|
|
|
class iWxDeConv;
|
|
|
}
|
|
|
|
|
|
class IxPtySource;
|
|
|
class ZxPtyDock;
|
|
|
class ZxRenderItem;
|
|
|
class iCurveDesc;
|
|
|
|
|
|
class ZxTableView;
|
|
|
class ZxTableModel;
|
|
|
|
|
|
class iGuiPlot;
|
|
|
class iGuiPlotPF;
|
|
|
class ZxObjCurvePressure;
|
|
|
class ZxObjCurveFlow;
|
|
|
class ZxObjCurveBase;
|
|
|
class ZxObjBase;
|
|
|
|
|
|
class ZxSegmentInfo;
|
|
|
class iGridRowUtils;
|
|
|
class cmAlgDeConv;
|
|
|
|
|
|
class M_TOOL_DECONV_EXPORT iWxDeConv : public iDlgBase
|
|
|
{
|
|
|
Q_OBJECT
|
|
|
|
|
|
public:
|
|
|
|
|
|
explicit iWxDeConv(QWidget* parent = 0);
|
|
|
~iWxDeConv();
|
|
|
|
|
|
/// @brief 设置数据及流动段信息
|
|
|
/// @param pCurveP 压力史曲线
|
|
|
/// @param pCurveF 流量史曲线
|
|
|
/// @param pSegmentInfo 流动段信息载体
|
|
|
/// @param wft 相态,油气水相(注:此处指的是主相)
|
|
|
void setDvDataInfos(ZxObjCurvePressure* pCurveP, \
|
|
|
ZxObjCurveFlow* pCurveF, \
|
|
|
ZxSegmentInfo* pSegmentInfo, \
|
|
|
WellFluidType wft = WFT_Oil);
|
|
|
|
|
|
/// @brief 设置数据:原始双对数中的压力和压力导数
|
|
|
/// @param pCurveRawSource 双对数图中的实际压力曲线
|
|
|
/// @param pCurveRawDeriv 双对数图中的实际压力导数
|
|
|
void setRawDblCurves(ZxObjBase* pCurveRawSource, \
|
|
|
ZxObjBase* pCurveRawDeriv);
|
|
|
|
|
|
// 初始化
|
|
|
virtual void initUI();
|
|
|
|
|
|
protected:
|
|
|
|
|
|
// 左侧输入参数初始化
|
|
|
virtual void initUI_Inputs();
|
|
|
void initUI_Inputs_Paras(); //更新输入参数(根据当前数据)
|
|
|
|
|
|
// 中间图形部分初始化
|
|
|
virtual void initUI_Chart();
|
|
|
void initUI_Chart_Up();
|
|
|
void initUI_Chart_Down();
|
|
|
|
|
|
//右侧表格部分初始化
|
|
|
virtual void initUI_Outputs();
|
|
|
void initUI_Outputs_Default(ZxTableView* pTableView);
|
|
|
|
|
|
|
|
|
#ifdef QT_DEBUG
|
|
|
// 返回数据
|
|
|
virtual bool getParaValue(QString sPara, double &dValue, QString sUnitDest = "");
|
|
|
#endif
|
|
|
|
|
|
protected:
|
|
|
|
|
|
// virtual void paintEvent(QPaintEvent*);
|
|
|
// virtual void resizeEvent(QResizeEvent*);
|
|
|
|
|
|
// 序列化接口
|
|
|
virtual void onSerialize(ZxSerializer* ser);
|
|
|
virtual void onDeserialize(ZxSerializer* ser);
|
|
|
|
|
|
public:
|
|
|
|
|
|
// 类似clone
|
|
|
virtual void copyFrom(ZxUiBase* p);
|
|
|
|
|
|
public slots:
|
|
|
|
|
|
// 响应左侧GridPty数据的改变,注意:该函数为父类继承过来的函数,不能进行名称更改
|
|
|
virtual void slotParaCtrlValueChanged(QString sPara, QVariant o);
|
|
|
|
|
|
// 属性页
|
|
|
virtual void slotGraphItemPoliciesInstalled(ZxRenderItem*);
|
|
|
|
|
|
// 曲线选择
|
|
|
void slotCurveSelChanged(bool bSelect);
|
|
|
|
|
|
protected:
|
|
|
|
|
|
// 属性绑定
|
|
|
void bindDockPty(IxPtySource* pPtyObj);
|
|
|
|
|
|
// 模拟选择第一条曲线
|
|
|
void simuSelectCurve();
|
|
|
|
|
|
// 曲线选择后触发表个数据刷新
|
|
|
void changeWithCurve(ZxObjCurveBase* pCurve);
|
|
|
|
|
|
// 表头控制(关联)
|
|
|
QStringList getTableTitlesBy(ZxObjCurveBase* pCurve);
|
|
|
|
|
|
protected:
|
|
|
|
|
|
// 算法+刷新
|
|
|
virtual void calAndFreshRsts();
|
|
|
virtual bool calDeconvRsts();
|
|
|
virtual void freshDeconvRsts();
|
|
|
|
|
|
// Plot 相关
|
|
|
void updateSubPlotDbLog(); //双对数(数据:从反褶积结果中获取)
|
|
|
void updateSubPlotDbLog_Raw(); //双对数(数据:原始双对数中的压力和压力导数)
|
|
|
void updateSubPlotPF(); //压力+流量(数据:从原始绑定的压力流量数据曲线中获取)
|
|
|
void updateSubPlotPF_BSPIN(); //BSPIN压力数据(数据:从反褶积结果中获取)
|
|
|
|
|
|
// 内部更新图形接口
|
|
|
void _updateSubPlot(bool bHistPF, \
|
|
|
QVector<iCurveDesc>& vecDescs, \
|
|
|
bool isAdd);
|
|
|
void _changeCurveAttributes(iGuiPlot* pWxPlot);
|
|
|
|
|
|
// false时,只清空曲线不清空点
|
|
|
void clearChart(iGuiPlot* pWxPlot, bool bClearAll = true);
|
|
|
|
|
|
// 结果表
|
|
|
// void updateRstTables();
|
|
|
|
|
|
signals:
|
|
|
|
|
|
void sigDeconvRsts(QMap<QString, VecDouble>&, bool);
|
|
|
|
|
|
private slots:
|
|
|
|
|
|
void on_btnCal_clicked();
|
|
|
void on_cbxAutoCal_clicked();
|
|
|
|
|
|
void on_cbxShowRawDblLogCurves_clicked();
|
|
|
|
|
|
void on_btnOK_clicked();
|
|
|
void on_btnCancel_clicked();
|
|
|
|
|
|
private:
|
|
|
|
|
|
Ui::iWxDeConv *ui;
|
|
|
|
|
|
protected:
|
|
|
|
|
|
// 左侧输入
|
|
|
// 布局(左侧)
|
|
|
iGridRowUtils* m_pGridItemUtils;
|
|
|
QStringList m_listParas; //哪些参数,对应英文标识
|
|
|
|
|
|
// 中间绘图区
|
|
|
iGuiPlot* m_pWxPlot;
|
|
|
iGuiPlotPF* m_pWxPlotPF;
|
|
|
|
|
|
// 右侧属性框
|
|
|
ZxPtyDock* m_pDockPty;
|
|
|
QList<IxPtySource*> m_listProps;
|
|
|
|
|
|
// 调用的算法
|
|
|
cmAlgDeConv* m_pAlg;
|
|
|
|
|
|
// 参数列表(左侧)
|
|
|
QMap<QString, QVariant> m_mapParas;
|
|
|
|
|
|
///////////////////////////////////////////////////
|
|
|
// 数据部分,从外部传入指针,此处不负责序列化
|
|
|
|
|
|
ZxObjCurvePressure* m_pBindCurveP; //压力史曲线
|
|
|
ZxObjCurveFlow* m_pBindCurveF; //流量史曲线
|
|
|
|
|
|
ZxSegmentInfo* m_pSegInfo; //流动段信息载体
|
|
|
WellFluidType m_oWft; //相态,油气水相(注:此处指的是主相)
|
|
|
|
|
|
ZxObjBase* m_pCurveRawSource; //双对数图中的实际压力曲线
|
|
|
ZxObjBase* m_pCurveRawDeriv; //双对数图中的实际压力导数
|
|
|
|
|
|
///////////////////////////////////////////////////
|
|
|
};
|